|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T w
Length: 11268 (0x2c04) Types: TextFile Names: »wizard.c.orig«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/General/Umoria/wizard.c.orig«
#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 %f", 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); 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; }