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