-+-+-+-+-+-+-+-+ START OF PART 77 -+-+-+-+-+-+-+-+
X    for (j = 0; j < cur_width; j++)
X      if (cave`5Bi`5D`5Bj`5D.fval <= MAX_CAVE_FLOOR)
X`09for (k = i-1; k <= i+1; k++)
X`09  for (l = j-1; l <= j+1; l++)
X`09    `7B
X`09      c_ptr = &cave`5Bk`5D`5Bl`5D;
X`09      c_ptr->pl = flag;
X`09      if (!flag)
X`09`09c_ptr->fm = FALSE;
X`09    `7D
X  prt_map();
X`7D
X
X
X/* Wizard routine for gaining on stats`09`09`09-RAK-`09*/
Xvoid change_character()
X`7B
X  register int tmp_val;
X  register int32 tmp_lval;
X  int8u *a_ptr;
X  vtype tmp_str;
X  register struct misc *m_ptr;
X
X  a_ptr = py.stats.max_stat;
X  prt("(3 - 118) Strength     = ", 0, 0);
X  if (get_string(tmp_str, 0, 25, 3))
X    `7B
X      tmp_val = atoi(tmp_str);
X      if ((tmp_val > 2) && (tmp_val < 119))
X`09`7B
X`09  a_ptr`5BA_STR`5D = tmp_val;
X`09  (void) res_stat(A_STR);
X`09`7D
X    `7D
X  else
X    return;
X
X  prt("(3 - 118) Intelligence = ", 0, 0);
X  if (get_string(tmp_str, 0, 25, 3))
X    `7B
X      tmp_val = atoi(tmp_str);
X      if ((tmp_val > 2) && (tmp_val < 119))
X`09`7B
X`09  a_ptr`5BA_INT`5D = tmp_val;
X`09  (void) res_stat(A_INT);
X`09`7D
X    `7D
X  else
X    return;
X
X  prt("(3 - 118) Wisdom       = ", 0, 0);
X  if (get_string(tmp_str, 0, 25, 3))
X    `7B
X      tmp_val = atoi(tmp_str);
X      if ((tmp_val > 2) && (tmp_val < 119))
X`09`7B
X`09  a_ptr`5BA_WIS`5D = tmp_val;
X`09  (void) res_stat(A_WIS);
X`09`7D
X    `7D
X  else
X    return;
X
X  prt("(3 - 118) Dexterity    = ", 0, 0);
X  if (get_string(tmp_str, 0, 25, 3))
X    `7B
X      tmp_val = atoi(tmp_str);
X      if ((tmp_val > 2) && (tmp_val < 119))
X`09`7B
X`09  a_ptr`5BA_DEX`5D = tmp_val;
X`09  (void) res_stat(A_DEX);
X`09`7D
X    `7D
X  else
X    return;
X
X  prt("(3 - 118) Constitution = ", 0, 0);
X  if (get_string(tmp_str, 0, 25, 3))
X    `7B
X      tmp_val = atoi(tmp_str);
X      if ((tmp_val > 2) && (tmp_val < 119))
X`09`7B
X`09  a_ptr`5BA_CON`5D = tmp_val;
X`09  (void) res_stat(A_CON);
X`09`7D
X    `7D
X  else
X    return;
X
X  prt("(3 - 118) Charisma     = ", 0, 0);
X  if (get_string(tmp_str, 0, 25, 3))
X    `7B
X      tmp_val = atoi(tmp_str);
X      if ((tmp_val > 2) && (tmp_val < 119))
X`09`7B
X`09  a_ptr`5BA_CHR`5D = tmp_val;
X`09  (void) res_stat(A_CHR);
X`09`7D
X    `7D
X  else
X    return;
X
X  m_ptr = &py.misc;
X  prt("(1 - 32767) Hit points = ", 0, 0);
X  if (get_string(tmp_str, 0, 25, 5))
X    `7B
X      tmp_val = atoi(tmp_str);
X      if ((tmp_val > 0) && (tmp_val <= MAX_SHORT))
X`09`7B
X`09  m_ptr->mhp  = tmp_val;
X`09  m_ptr->chp  = tmp_val;
X`09  m_ptr->chp_frac = 0;
X`09  prt_mhp();
X`09  prt_chp();
X`09`7D
X    `7D
X  else
X    return;
X
X  prt("(0 - 32767) Mana       = ", 0, 0);
X  if (get_string(tmp_str, 0, 25, 5))
X    `7B
X      tmp_val = atoi(tmp_str);
X      if ((tmp_val > -1) && (tmp_val <= MAX_SHORT) && (*tmp_str != '\0'))
X`09`7B
X`09  m_ptr->mana  = tmp_val;
X`09  m_ptr->cmana = tmp_val;
X`09  m_ptr->cmana_frac = 0;
X`09  prt_cmana();
X`09`7D
X    `7D
X  else
X    return;
X
X  (void) sprintf(tmp_str, "Current=%ld  Gold = ", m_ptr->au);
X  tmp_val = strlen(tmp_str);
X  prt(tmp_str, 0, 0);
X  if (get_string(tmp_str, 0, tmp_val, 7))
X    `7B
X      tmp_lval = atol(tmp_str);
X      if (tmp_lval > -1 && (*tmp_str != '\0'))
X`09`7B
X`09  m_ptr->au = tmp_lval;
X`09  prt_gold();
X`09`7D
X    `7D
X  else
X    return;
X
X  (void) sprintf(tmp_str, "Current=%d  (0-200) Searching = ", m_ptr->srh);
X  tmp_val = strlen(tmp_str);
X  prt(tmp_str, 0, 0);
X  if (get_string(tmp_str, 0, tmp_val, 3))
X    `7B
X      tmp_val = atoi(tmp_str);
X      if ((tmp_val > -1) && (tmp_val < 201) && (*tmp_str != '\0'))
X`09m_ptr->srh  = tmp_val;
X    `7D
X  else
X    return;
X
X  (void) sprintf(tmp_str, "Current=%d  (-1-18) Stealth = ", m_ptr->stl);
X  tmp_val = strlen(tmp_str);
X  prt(tmp_str, 0, 0);
X  if (get_string(tmp_str, 0, tmp_val, 3))
X    `7B
X      tmp_val = atoi(tmp_str);
X      if ((tmp_val > -2) && (tmp_val < 19) && (*tmp_str != '\0'))
X`09m_ptr->stl  = tmp_val;
X    `7D
X  else
X    return;
X
X  (void) sprintf(tmp_str, "Current=%d  (0-200) Disarming = ", m_ptr->disarm)
V;
X  tmp_val = strlen(tmp_str);
X  prt(tmp_str, 0, 0);
X  if (get_string(tmp_str, 0, tmp_val, 3))
X    `7B
X      tmp_val = atoi(tmp_str);
X      if ((tmp_val > -1) && (tmp_val < 201) && (*tmp_str != '\0'))
X`09m_ptr->disarm = tmp_val;
X    `7D
X  else
X    return;
X
X  (void) sprintf(tmp_str, "Current=%d  (0-100) Save = ", m_ptr->save);
X  tmp_val = strlen(tmp_str);
X  prt(tmp_str, 0, 0);
X  if (get_string(tmp_str, 0, tmp_val, 3))
X    `7B
X      tmp_val = atoi(tmp_str);
X      if ((tmp_val > -1) && (tmp_val < 201) && (*tmp_str != '\0'))
X`09m_ptr->save = tmp_val;
X    `7D
X  else
X    return;
X
X  (void) sprintf(tmp_str, "Current=%d  (0-200) Base to hit = ", m_ptr->bth);
X  tmp_val = strlen(tmp_str);
X  prt(tmp_str, 0, 0);
X  if (get_string(tmp_str, 0, tmp_val, 3))
X    `7B
X      tmp_val = atoi(tmp_str);
X      if ((tmp_val > -1) && (tmp_val < 201) && (*tmp_str != '\0'))
X`09m_ptr->bth  = tmp_val;
X    `7D
X  else
X    return;
X
X  (void) sprintf(tmp_str, "Current=%d  (0-200) Bows/Throwing = ",
X`09`09 m_ptr->bthb);
X  tmp_val = strlen(tmp_str);
X  prt(tmp_str, 0, 0);
X  if (get_string(tmp_str, 0, tmp_val, 3))
X    `7B
X      tmp_val = atoi(tmp_str);
X      if ((tmp_val > -1) && (tmp_val < 201) && (*tmp_str != '\0'))
X`09m_ptr->bthb = tmp_val;
X    `7D
X  else
X    return;
X
X  (void) sprintf(tmp_str, "Current=%d  Weight = ", m_ptr->wt);
X  tmp_val = strlen(tmp_str);
X  prt(tmp_str, 0, 0);
X  if (get_string(tmp_str, 0, tmp_val, 3))
X    `7B
X      tmp_val = atoi(tmp_str);
X      if (tmp_val > -1 && (*tmp_str != '\0'))
X`09m_ptr->wt = tmp_val;
X    `7D
X  else
X    return;
X
X  while(get_com("Alter speed? (+/-)", tmp_str))
X    `7B
X      if (*tmp_str == '+')
X`09change_speed(-1);
X      else if (*tmp_str == '-')
X`09change_speed(1);
X      else
X`09break;
X      prt_speed();
X    `7D
X`7D
X
X
X/* Wizard routine for creating objects`09`09`09-RAK-`09*/
Xvoid wizard_create()
X`7B
X  register int tmp_val;
X  int32 tmp_lval;
X  vtype tmp_str;
X  register inven_type *i_ptr;
X  inven_type forge;
X  register cave_type *c_ptr;
X  char pattern`5B4`5D;
X
X  msg_print("Warning: This routine can cause a fatal error.");
X  i_ptr = &forge;
X  i_ptr->index = OBJ_WIZARD;
X  i_ptr->name2 = 0;
X  inscribe(i_ptr, "wizard item");
X  i_ptr->ident = ID_KNOWN2`7CID_STOREBOUGHT;
X
X  prt("Tval   : ", 0, 0);
X  if (!get_string(tmp_str, 0, 9, 3))
X    return;
X  tmp_val = atoi(tmp_str);
X  i_ptr->tval = tmp_val;
X
X  prt("Tchar  : ", 0, 0);
X  if (!get_string(tmp_str, 0, 9, 1))
X    return;
X  i_ptr->tchar = tmp_str`5B0`5D;
X
X  prt("Subval : ", 0, 0);
X  if (!get_string(tmp_str, 0, 9, 5))
X    return;
X  tmp_val = atoi(tmp_str);
X  i_ptr->subval = tmp_val;
X
X  prt("Weight : ", 0, 0);
X  if (!get_string(tmp_str, 0, 9, 5))
X    return;
X  tmp_val = atoi(tmp_str);
X  i_ptr->weight = tmp_val;
X
X  prt("Number : ", 0, 0);
X  if (!get_string(tmp_str, 0, 9, 5))
X    return;
X  tmp_val = atoi(tmp_str);
X  i_ptr->number = tmp_val;
X
X  prt("Damage (dice): ", 0, 0);
X  if (!get_string(tmp_str, 0, 15, 3))
X    return;
X  tmp_val = atoi(tmp_str);
X  i_ptr->damage`5B0`5D = tmp_val;
X
X  prt("Damage (sides): ", 0, 0);
X  if (!get_string(tmp_str, 0, 16, 3))
X    return;
X  tmp_val = atoi(tmp_str);
X  i_ptr->damage`5B1`5D = tmp_val;
X
X  prt("+To hit: ", 0, 0);
X  if (!get_string(tmp_str, 0, 9, 3))
X    return;
X  tmp_val = atoi(tmp_str);
X  i_ptr->tohit = tmp_val;
X
X  prt("+To dam: ", 0, 0);
X  if (!get_string(tmp_str, 0, 9, 3))
X    return;
X  tmp_val = atoi(tmp_str);
X  i_ptr->todam = tmp_val;
X
X  prt("AC     : ", 0, 0);
X  if (!get_string(tmp_str, 0, 9, 3))
X    return;
X  tmp_val = atoi(tmp_str);
X  i_ptr->ac = tmp_val;
X
X  prt("+To AC : ", 0, 0);
X  if (!get_string(tmp_str, 0, 9, 3))
X    return;
X  tmp_val = atoi(tmp_str);
X  i_ptr->toac = tmp_val;
X
X  prt("P1     : ", 0, 0);
X  if (!get_string(tmp_str, 0, 9, 5))
X    return;
X  tmp_val = atoi(tmp_str);
X  i_ptr->p1 = tmp_val;
X
X  prt("Flags (In HEX): ", 0, 0);
X  if (!get_string(tmp_str, 0, 16, 8))
X    return;
X  /* can't be constant string, this causes problems with the GCC compiler
X     and some scanf routines */
X  (void) strcpy (pattern, "%lx");
X  (void) sscanf(tmp_str, pattern, &tmp_lval);
X  i_ptr->flags = tmp_lval;
X
X  prt("Cost : ", 0, 0);
X  if (!get_string(tmp_str, 0, 9, 8))
X    return;
X  tmp_lval = atol(tmp_str);
X  i_ptr->cost = tmp_lval;
X
X  prt("Level : ", 0, 0);
X  if (!get_string(tmp_str, 0, 10, 3))
X    return;
X  tmp_val = atoi(tmp_str);
X  i_ptr->level = tmp_val;
X
X  if (get_check("Allocate?"))
X    `7B
X      /* delete object first if any, before call popt */
X      c_ptr = &cave`5Bchar_row`5D`5Bchar_col`5D;
X      if (c_ptr->tptr != 0)
X`09(void) delete_object(char_row, char_col);
X
X      tmp_val = popt();
X      t_list`5Btmp_val`5D = forge;
X      c_ptr->tptr = tmp_val;
X      msg_print("Allocated.");
X    `7D
X  else
X    msg_print("Aborted.");
X`7D
$ CALL UNPACK WIZARD.C;1 1496306077
$ v=f$verify(v)
$ EXIT
