View Single Post
Old October 20, 2014, 02:36   #4
Derakon
Prophet
 
Derakon's Avatar
 
Join Date: Dec 2009
Posts: 8,469
Derakon is on a distinguished road
Quote:
Originally Posted by Ingwe Ingweron View Post
Ah, but what is the appropriate item level? When a vault is created, isn't the same item generation happening, with good and great flags set to the depth, but with the depth modified at certain locations within the vault? How is make_object() choosing the depth? Are you certain that the depth measurement for ?Acquirement is not taking into account the location just like the vault generation? I've tested it out empirically and I can say that there seems to be a definite difference when standing on an "8" location.
I repeat, you're imagining things. Here's the complete source code for the acquirement function:

Code:
void acquirement(int y1, int x1, int level, int num, bool great)
{
  object_type *i_ptr;
  object_type object_type_body;
  /* Acquirement */
  while (num--)
  {
    /* Get local object */
    i_ptr = &object_type_body;
    /* Wipe the object */
    object_wipe(i_ptr);
    /* Make a good (or great) object (if possible) */
    if (!make_object(cave, i_ptr, level, TRUE, great, TRUE, NULL, 0)) continue;
    i_ptr->origin = ORIGIN_ACQUIRE;
    i_ptr->origin_depth = p_ptr->depth;
    /* Drop the object */
    drop_near(cave, i_ptr, 0, y1, x1, TRUE);
  }
}
And here's the definition for the effects of the Acquirement and *Acquirement* scrolls:

Code:
case EF_ACQUIRE:
{
  acquirement(py, px, p_ptr->depth, 1, TRUE);
  *ident = TRUE;
  return TRUE;
}
case EF_ACQUIRE2:
{
  acquirement(py, px, p_ptr->depth, randint1(2) + 1, TRUE);
  *ident = TRUE;
  return TRUE;
}
Note the use of p_ptr->depth, i.e. the player's current dungeon level, as the only level determinant.
Derakon is offline   Reply With Quote