|
|
1.1 ! root 1: /* ! 2: * play.c ! 3: * ! 4: * This source herein may be modified and/or distributed by anybody who ! 5: * so desires, with the following restrictions: ! 6: * 1.) No portion of this notice shall be removed. ! 7: * 2.) Credit shall not be taken for the creation of this source. ! 8: * 3.) This code is not to be traded, sold, or used for personal ! 9: * gain or profit. ! 10: * ! 11: */ ! 12: ! 13: #ifndef lint ! 14: static char sccsid[] = "@(#)play.c 5.1 (Berkeley) 11/25/87"; ! 15: #endif /* not lint */ ! 16: ! 17: #include "rogue.h" ! 18: ! 19: boolean interrupted = 0; ! 20: char *unknown_command = "unknown command"; ! 21: ! 22: extern short party_room, bear_trap; ! 23: extern char hit_message[]; ! 24: extern boolean wizard, trap_door; ! 25: ! 26: play_level() ! 27: { ! 28: short ch; ! 29: int count; ! 30: ! 31: for (;;) { ! 32: interrupted = 0; ! 33: if (hit_message[0]) { ! 34: message(hit_message, 1); ! 35: hit_message[0] = 0; ! 36: } ! 37: if (trap_door) { ! 38: trap_door = 0; ! 39: return; ! 40: } ! 41: move(rogue.row, rogue.col); ! 42: refresh(); ! 43: ! 44: ch = rgetchar(); ! 45: CMCH: ! 46: check_message(); ! 47: count = 0; ! 48: CH: ! 49: switch(ch) { ! 50: case '.': ! 51: rest((count > 0) ? count : 1); ! 52: break; ! 53: case 's': ! 54: search(((count > 0) ? count : 1), 0); ! 55: break; ! 56: case 'i': ! 57: inventory(&rogue.pack, ALL_OBJECTS); ! 58: break; ! 59: case 'f': ! 60: fight(0); ! 61: break; ! 62: case 'F': ! 63: fight(1); ! 64: break; ! 65: case 'h': ! 66: case 'j': ! 67: case 'k': ! 68: case 'l': ! 69: case 'y': ! 70: case 'u': ! 71: case 'n': ! 72: case 'b': ! 73: (void) one_move_rogue(ch, 1); ! 74: break; ! 75: case 'H': ! 76: case 'J': ! 77: case 'K': ! 78: case 'L': ! 79: case 'B': ! 80: case 'Y': ! 81: case 'U': ! 82: case 'N': ! 83: case '\010': ! 84: case '\012': ! 85: case '\013': ! 86: case '\014': ! 87: case '\031': ! 88: case '\025': ! 89: case '\016': ! 90: case '\002': ! 91: multiple_move_rogue(ch); ! 92: break; ! 93: case 'e': ! 94: eat(); ! 95: break; ! 96: case 'q': ! 97: quaff(); ! 98: break; ! 99: case 'r': ! 100: read_scroll(); ! 101: break; ! 102: case 'm': ! 103: move_onto(); ! 104: break; ! 105: case ',': ! 106: kick_into_pack(); ! 107: break; ! 108: case 'd': ! 109: drop(); ! 110: break; ! 111: case 'P': ! 112: put_on_ring(); ! 113: break; ! 114: case 'R': ! 115: remove_ring(); ! 116: break; ! 117: case '\020': ! 118: do { ! 119: remessage(count++); ! 120: ch = rgetchar(); ! 121: } while (ch == '\020'); ! 122: goto CMCH; ! 123: break; ! 124: case '\027': ! 125: wizardize(); ! 126: break; ! 127: case '>': ! 128: if (drop_check()) { ! 129: return; ! 130: } ! 131: break; ! 132: case '<': ! 133: if (check_up()) { ! 134: return; ! 135: } ! 136: break; ! 137: case ')': ! 138: case ']': ! 139: inv_armor_weapon(ch == ')'); ! 140: break; ! 141: case '=': ! 142: inv_rings(); ! 143: break; ! 144: case '^': ! 145: id_trap(); ! 146: break; ! 147: case '/': ! 148: id_type(); ! 149: break; ! 150: case '?': ! 151: id_com(); ! 152: break; ! 153: case '!': ! 154: do_shell(); ! 155: break; ! 156: case 'o': ! 157: edit_opts(); ! 158: break; ! 159: case 'I': ! 160: single_inv(0); ! 161: break; ! 162: case 'T': ! 163: take_off(); ! 164: break; ! 165: case 'W': ! 166: wear(); ! 167: break; ! 168: case 'w': ! 169: wield(); ! 170: break; ! 171: case 'c': ! 172: call_it(); ! 173: break; ! 174: case 'z': ! 175: zapp(); ! 176: break; ! 177: case 't': ! 178: throw(); ! 179: break; ! 180: case 'v': ! 181: message("rogue-clone: Version III. (Tim Stoehr was here), tektronix!zeus!tims", 0); ! 182: break; ! 183: case 'Q': ! 184: quit(0); ! 185: case '0': ! 186: case '1': ! 187: case '2': ! 188: case '3': ! 189: case '4': ! 190: case '5': ! 191: case '6': ! 192: case '7': ! 193: case '8': ! 194: case '9': ! 195: move(rogue.row, rogue.col); ! 196: refresh(); ! 197: do { ! 198: if (count < 100) { ! 199: count = (10 * count) + (ch - '0'); ! 200: } ! 201: ch = rgetchar(); ! 202: } while (is_digit(ch)); ! 203: if (ch != CANCEL) { ! 204: goto CH; ! 205: } ! 206: break; ! 207: case ' ': ! 208: break; ! 209: case '\011': ! 210: if (wizard) { ! 211: inventory(&level_objects, ALL_OBJECTS); ! 212: } else { ! 213: message(unknown_command, 0); ! 214: } ! 215: break; ! 216: case '\023': ! 217: if (wizard) { ! 218: draw_magic_map(); ! 219: } else { ! 220: message(unknown_command, 0); ! 221: } ! 222: break; ! 223: case '\024': ! 224: if (wizard) { ! 225: show_traps(); ! 226: } else { ! 227: message(unknown_command, 0); ! 228: } ! 229: break; ! 230: case '\017': ! 231: if (wizard) { ! 232: show_objects(); ! 233: } else { ! 234: message(unknown_command, 0); ! 235: } ! 236: break; ! 237: case '\001': ! 238: show_average_hp(); ! 239: break; ! 240: case '\003': ! 241: if (wizard) { ! 242: c_object_for_wizard(); ! 243: } else { ! 244: message(unknown_command, 0); ! 245: } ! 246: break; ! 247: case '\015': ! 248: if (wizard) { ! 249: show_monsters(); ! 250: } else { ! 251: message(unknown_command, 0); ! 252: } ! 253: break; ! 254: case 'S': ! 255: save_game(); ! 256: break; ! 257: default: ! 258: message(unknown_command, 0); ! 259: break; ! 260: } ! 261: } ! 262: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.