DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T w

⟦a21cb9f81⟧ TextFile

    Length: 11396 (0x2c84)
    Types: TextFile
    Names: »wizard.c«

Derivation

└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
    └─⟦this⟧ »EUUGD18/General/Umoria/wizard.c« 

TextFile

#include <stdio.h>

#include "constants.h"
#include "config.h"
#include "types.h"
#include "externs.h"

#ifdef USG
#include <string.h>
#else
#include <strings.h>
#endif

#ifdef sun   /* correct SUN stupidity in the stdio.h file */
char *sprintf();
#endif


/* Print Moria credits					-RAK-	*/
game_version()
{
  vtype tmp_str;

  clear_screen(0, 0);
  (void) sprintf(tmp_str, "               Moria Version %.2lf", CUR_VERSION);
  put_buffer(tmp_str, 0, 0);
  put_buffer("Version 0.1  : 03/25/83", 1, 0);
  put_buffer("Version 1.0  : 05/01/84", 2, 0);
  put_buffer("Version 2.0  : 07/10/84", 3, 0);
  put_buffer("Version 3.0  : 11/20/84", 4, 0);
  put_buffer("Version 4.0  : 01/20/85", 5, 0);
  put_buffer("Modules :", 7, 0);
  put_buffer("     V1.0  Dungeon Generator      - RAK", 8, 0);
  put_buffer("           Character Generator    - RAK & JWT", 9, 0);
  put_buffer("           Moria Module           - RAK", 10, 0);
  put_buffer("           Miscellaneous          - RAK & JWT", 11, 0);
  put_buffer("     V2.0  Town Level & Misc      - RAK", 12, 0);
  put_buffer("     V3.0  Internal Help & Misc   - RAK", 13, 0);
  put_buffer("     V4.0  Source Release Version - RAK", 14, 0);
  put_buffer("Robert Alan Koeneke               Jimmey Wayne Todd Jr.", 16, 0);
 put_buffer("Student/University of Oklahoma    Student/University of Oklahoma",
	    17, 0);
  put_buffer("119 Crystal Bend                  1912 Tiffany Dr.", 18, 0);
  put_buffer("Norman, OK 73069                  Norman, OK  73071", 19, 0);
  put_buffer("(405)-321-2925                    (405) 360-6792", 20, 0);
  pause_line(23);
  clear_screen(0, 0);
  put_buffer("UNIX MORIA Port by James E. Wilson", 2, 0);
  put_buffer("                   wilson@ernie.Berkeley.EDU", 3, 0);
  put_buffer("                   ucbvax!ucbernie!wilson", 4, 0);
  put_buffer("This version is based on the VMS version 4.8", 6, 0);
  put_buffer("but is no longer identical to the original VMS program.", 7, 0);
  put_buffer("Please use care when referring to this program.", 8, 0);
  put_buffer("Please call it 'umoria' or 'UNIX MORIA' or something", 9, 0);
  put_buffer("similar to avoid confusion.", 10, 0);
  (void) sprintf(tmp_str, "Moria Version %.2lf, patch level %d", CUR_VERSION,
		 PATCH_LEVEL);
  put_buffer(tmp_str, 12, 0);
  pause_line(23);
  draw_cave();
}


/* Light up the dungeon					-RAK-	*/
wizard_light()
{
  register cave_type *c_ptr;
  register int k, l, i, j;
  int flag;

  if (cave[char_row][char_col].pl)
    flag = FALSE;
  else
    flag = TRUE;
  for (i = 0; i < cur_height; i++)
    for (j = 0; j < cur_width; j++)
      if (set_floor(cave[i][j].fval))
	for (k = i-1; k <= i+1; k++)
	  for (l = j-1; l <= j+1; l++)
	    {
	      c_ptr = &cave[k][l];
	      c_ptr->pl = flag;
	      if (!flag)
		c_ptr->fm = FALSE;
	    }
  prt_map();
}


/* Wizard routine for gaining on stats			-RAK-	*/
change_character()
{
  int tmp_val;
  vtype tmp_str;
  register struct stats *s_ptr;
  register struct misc *m_ptr;

  s_ptr = &py.stats;
  prt("(3 - 118) Strength     == ", 0, 0);
  (void) get_string(tmp_str, 0, 25, 10);
  tmp_val = -999;
  (void) sscanf(tmp_str, "%d", &tmp_val);
  if ((tmp_val > 2) && (tmp_val < 119))
    {
      s_ptr->str  = tmp_val;
      s_ptr->cstr = tmp_val;
      prt_strength();
    }
  prt("(3 - 118) Intelligence == ", 0, 0);
  (void) get_string(tmp_str, 0, 25, 10);
  tmp_val = -999;
  (void) sscanf(tmp_str, "%d", &tmp_val);
  if ((tmp_val > 2) && (tmp_val < 119))
    {
      s_ptr->intel  = tmp_val;
      s_ptr->cint = tmp_val;
      prt_intelligence();
    }
  prt("(3 - 118) Wisdom       == ", 0, 0);
  (void) get_string(tmp_str, 0, 25, 10);
  tmp_val = -999;
  (void) sscanf(tmp_str, "%d", &tmp_val);
  if ((tmp_val > 2) && (tmp_val < 119))
    {
      s_ptr->wis  = tmp_val;
      s_ptr->cwis = tmp_val;
      prt_wisdom();
    }
  prt("(3 - 118) Dexterity    == ", 0, 0);
  (void) get_string(tmp_str, 0, 25, 10);
  tmp_val = -999;
  (void) sscanf(tmp_str, "%d", &tmp_val);
  if ((tmp_val > 2) && (tmp_val < 119))
    {
      s_ptr->dex  = tmp_val;
      s_ptr->cdex = tmp_val;
      prt_dexterity();
    }
  prt("(3 - 118) Constitution == ", 0, 0);
  (void) get_string(tmp_str, 0, 25, 10);
  tmp_val = -999;
  (void) sscanf(tmp_str, "%d", &tmp_val);
  if ((tmp_val > 2) && (tmp_val < 119))
    {
      s_ptr->con  = tmp_val;
      s_ptr->ccon = tmp_val;
      prt_constitution();
    }
  prt("(3 - 118) Charisma     == ", 0, 0);
  (void) get_string(tmp_str, 0, 25, 10);
  tmp_val = -999;
  (void) sscanf(tmp_str, "%d", &tmp_val);
  if ((tmp_val > 2) && (tmp_val < 119))
    {
      s_ptr->chr  = tmp_val;
      s_ptr->cchr = tmp_val;
      prt_charisma();
    }

  m_ptr = &py.misc;
  prt("(1 - 32767) Hit points == ", 0, 0);
  (void) get_string(tmp_str, 0, 25, 10);
  tmp_val = -1;
  (void) sscanf(tmp_str, "%d", &tmp_val);
  if ((tmp_val > 0) && (tmp_val < 32768))
    {
      m_ptr->mhp  = tmp_val;
      m_ptr->chp  = (double)tmp_val;
      prt_mhp();
      prt_chp();
    }
  prt("(0 - 32767) Mana       == ", 0, 0);
  (void) get_string(tmp_str, 0, 25, 10);
  tmp_val = -999;
  (void) sscanf(tmp_str, "%d", &tmp_val);
  if ((tmp_val > -1) && (tmp_val < 32768))
    {
      m_ptr->mana  = tmp_val;
      m_ptr->cmana = (double)tmp_val;
      prt_cmana();
    }
  (void) sprintf(tmp_str, "Current==%d  (0-200) Searching == ", m_ptr->srh);
  tmp_val = strlen(tmp_str);
  prt(tmp_str, 0, 0);
  (void) get_string(tmp_str, 0, tmp_val, 10);
  tmp_val = -999;
  (void) sscanf(tmp_str, "%d", &tmp_val);
  if ((tmp_val > -1) && (tmp_val < 201))
    m_ptr->srh  = tmp_val;
  (void) sprintf(tmp_str, "Current==%d  (0-10) Stealth == ", m_ptr->stl);
  tmp_val = strlen(tmp_str);
  prt(tmp_str, 0, 0);
  (void) get_string(tmp_str, 0, tmp_val, 10);
  tmp_val = -999;
  (void) sscanf(tmp_str, "%d", &tmp_val);
  if ((tmp_val > -1) && (tmp_val < 11))
    m_ptr->stl  = tmp_val;
  (void) sprintf(tmp_str, "Current==%d  (0-200) Disarming == ", m_ptr->disarm);
  tmp_val = strlen(tmp_str);
  prt(tmp_str, 0, 0);
  (void) get_string(tmp_str, 0, tmp_val, 10);
  tmp_val = -999;
  (void) sscanf(tmp_str, "%d", &tmp_val);
  if ((tmp_val > -1) && (tmp_val < 201))
    m_ptr->disarm = tmp_val;
  (void) sprintf(tmp_str, "Current==%d  (0-100) Save == ", m_ptr->save);
  tmp_val = strlen(tmp_str);
  prt(tmp_str, 0, 0);
  (void) get_string(tmp_str, 0, tmp_val, 10);
  tmp_val = -999;
  (void) sscanf(tmp_str, "%d", &tmp_val);
  if ((tmp_val > -1) && (tmp_val < 201))
    m_ptr->save = tmp_val;
  (void) sprintf(tmp_str, "Current==%d  (0-200) Base to hit == ", m_ptr->bth);
  tmp_val = strlen(tmp_str);
  prt(tmp_str, 0, 0);
  (void) get_string(tmp_str, 0, tmp_val, 10);
  tmp_val = -999;
  (void) sscanf(tmp_str, "%d", &tmp_val);
  if ((tmp_val > -1) && (tmp_val < 201))
    m_ptr->bth  = tmp_val;
  (void) sprintf(tmp_str, "Current==%d  (0-200) Bows/Throwing == ",
		 m_ptr->bthb);
  tmp_val = strlen(tmp_str);
  prt(tmp_str, 0, 0);
  (void) get_string(tmp_str, 0, tmp_val, 10);
  tmp_val = -999;
  (void) sscanf(tmp_str, "%d", &tmp_val);
  if ((tmp_val > -1) && (tmp_val < 201))
    m_ptr->bthb = tmp_val;
  (void) sprintf(tmp_str, "Current==%d  Gold == ", m_ptr->au);
  tmp_val = strlen(tmp_str);
  prt(tmp_str, 0, 0);
  (void) get_string(tmp_str, 0, tmp_val, 10);
  tmp_val = -999;
  (void) sscanf(tmp_str, "%d", &tmp_val);
  if (tmp_val > -1)
    {
      m_ptr->au = tmp_val;
      prt_gold();
    }

  erase_line(MSG_LINE, 0);
  py_bonuses(blank_treasure, 0);
}


/* Wizard routine for creating objects			-RAK-	*/
wizard_create()
{
  int tmp_val;
  vtype tmp_str;
  register int flag;
  register treasure_type *i_ptr;
  register cave_type *c_ptr;
  char command;

  msg_print("Warning: This routine can cause fatal error.");
  /* make sure player sees the message */
  msg_print(" ");
  msg_flag = FALSE;
  i_ptr = &inventory[INVEN_MAX];
  prt("Name   : ", 0, 0);
  if (get_string(tmp_str, 0, 9, 80))
    (void) strcpy(i_ptr->name, tmp_str);
  else
    (void) strcpy(i_ptr->name, "& Wizard Object!");
  do
    {
      prt("Tval   : ", 0, 0);
      (void) get_string(tmp_str, 0, 9, 10);
      tmp_val = 0;
      (void) sscanf(tmp_str, "%d", &tmp_val);
      flag = TRUE;
      switch(tmp_val)
	{
	case 1: case 13: case 15 :	i_ptr->tchar = '~'; break;
	case 2: 	i_ptr->tchar = '&'; break;
	case 10:	i_ptr->tchar = '{'; break;
	case 11:	i_ptr->tchar = '{'; break;
	case 12:	i_ptr->tchar = '{'; break;
	case 20:	i_ptr->tchar = '}'; break;
	case 21:	i_ptr->tchar = '/'; break;
	case 22:	i_ptr->tchar = '\\'; break;
	case 23:	i_ptr->tchar = '|'; break;
	case 25:	i_ptr->tchar = '\\'; break;
	case 30:	i_ptr->tchar = ']'; break;
	case 31:	i_ptr->tchar = ']'; break;
	case 32:	i_ptr->tchar = '('; break;
	case 33:	i_ptr->tchar = ']'; break;
	case 34:	i_ptr->tchar = ')'; break;
	case 35:	i_ptr->tchar = '['; break;
	case 36:	i_ptr->tchar = '('; break;
	case 40:	i_ptr->tchar = '\''; break;
	case 45:	i_ptr->tchar = '='; break;
	case 55:	i_ptr->tchar = '_'; break;
	case 60:	i_ptr->tchar = '-'; break;
	case 65:	i_ptr->tchar = '-'; break;
	case 70: case 71:	i_ptr->tchar = '?'; break;
	case 75: case 76: case 77:	i_ptr->tchar = '!'; break;
	case 80:	i_ptr->tchar = ','; break;
	case 90:	i_ptr->tchar = '?'; break;
	case 91:	i_ptr->tchar = '?'; break;
	default:	flag = FALSE; break;
	}
    }
  while (!flag);
  i_ptr->tval = tmp_val;
  prt("Subval : ", 0, 0);
  (void) get_string(tmp_str, 0, 9, 10);
  tmp_val = 1;
  (void) sscanf(tmp_str, "%d", &tmp_val);
  i_ptr->subval = tmp_val;
  prt("Weight : ", 0, 0);
  (void) get_string(tmp_str, 0, 9, 10);
  tmp_val = 1;
  (void) sscanf(tmp_str, "%d", &tmp_val);
  i_ptr->weight = tmp_val;
  prt("Number : ", 0, 0);
  (void) get_string(tmp_str, 0, 9, 10);
  tmp_val = 1;
  (void) sscanf(tmp_str, "%d", &tmp_val);
  i_ptr->number = tmp_val;
  prt("Damage : ", 0, 0);
  (void) get_string(tmp_str, 0, 9, 5);
  (void) strcpy(i_ptr->damage, tmp_str);
  prt("+To hit: ", 0, 0);
  (void) get_string(tmp_str, 0, 9, 10);
  tmp_val = 0;
  (void) sscanf(tmp_str, "%d", &tmp_val);
  i_ptr->tohit = tmp_val;
  prt("+To dam: ", 0, 0);
  (void) get_string(tmp_str, 0, 9, 10);
  tmp_val = 0;
  (void) sscanf(tmp_str, "%d", &tmp_val);
  i_ptr->todam = tmp_val;
  prt("AC     : ", 0, 0);
  (void) get_string(tmp_str, 0, 9, 10);
  tmp_val = 0;
  (void) sscanf(tmp_str, "%d", &tmp_val);
  i_ptr->ac = tmp_val;
  prt("+To AC : ", 0, 0);
  (void) get_string(tmp_str, 0, 9, 10);
  tmp_val = 0;
  (void) sscanf(tmp_str, "%d", &tmp_val);
  i_ptr->toac = tmp_val;
  prt("P1     : ", 0, 0);
  (void) get_string(tmp_str, 0, 9, 10);
  tmp_val = 0;
  (void) sscanf(tmp_str, "%d", &tmp_val);
  i_ptr->p1 = tmp_val;
  prt("Flags (In HEX): ", 0, 0);
  i_ptr->flags = get_hex_value(0, 16, 8);
  prt("Cost : ", 0, 0);
  (void) get_string(tmp_str, 0, 9, 10);
  tmp_val = 0;
  (void) sscanf(tmp_str, "%d", &tmp_val);
  i_ptr->cost = tmp_val;

  prt("Level : ", 0, 0);
  (void) get_string(tmp_str, 0, 10, 10);
  tmp_val = 0;
  (void) sscanf(tmp_str, "%d", &tmp_val);
  i_ptr->level = tmp_val;

  if (get_com("Allocate? (Y/N)", &command))
    switch(command)
      {
      case 'y': case 'Y':
	popt(&tmp_val);
	t_list[tmp_val] = inventory[INVEN_MAX];
	c_ptr = &cave[char_row][char_col];
	if (c_ptr->tptr != 0)
	  (void) delete_object(char_row, char_col);
	c_ptr->tptr = tmp_val;
	msg_print("Allocated...");
	break;
      default:
	msg_print("Aborted...");
	break;
      }
  inventory[INVEN_MAX] = blank_treasure;
}