Branch data Line data Source code
1 : : /* omega copyright (C) by Laurence Raphael Brothers, 1987,1988,1989 */
2 : : /* movef.c */
3 : : /* the movefunctions switch functions, for player and monster*/
4 : :
5 : : #include "glob.h"
6 : :
7 : :
8 : :
9 : 9 : void p_movefunction(int movef)
10 : : {
11 : : /* loc functs above traps should be activated whether levitating or not */
12 : 9 : drawvision(Player.x,Player.y);
13 : 9 : sign_print(Player.x,Player.y,FALSE);
14 [ - + ]: 9 : if (Player.status[SHADOWFORM])
15 [ # # # # : 0 : switch(movef) { /* player in shadow form is unable to do most things */
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # ]
16 : 0 : case L_CHAOS:l_chaos(); break;
17 : 0 : case L_ABYSS:l_abyss(); break;
18 : 0 : case L_ARENA_EXIT:l_arena_exit(); break;
19 : 0 : case L_ENTER_COURT:l_enter_court(); break;
20 : 0 : case L_ESCALATOR:l_escalator(); break;
21 : 0 : case L_COLLEGE:l_college(); break;
22 : 0 : case L_SORCERORS:l_sorcerors(); break;
23 : 0 : case L_ALTAR:l_altar(); break;
24 : 0 : case L_TACTICAL_EXIT:l_tactical_exit(); break;
25 : 0 : case L_HOUSE_EXIT:l_house_exit(); break;
26 : 0 : case L_HOUSE: l_house(); break;
27 : 0 : case L_HOVEL: l_hovel(); break;
28 : 0 : case L_MANSION: l_mansion(); break;
29 : 0 : case L_COUNTRYSIDE:l_countryside(); break;
30 : 0 : case L_ORACLE:l_oracle(); break;
31 : 0 : case L_TEMPLE_WARNING:l_temple_warning(); break;
32 : 0 : case L_ENTER_CIRCLE:l_enter_circle(); break;
33 : 0 : case L_CIRCLE_LIBRARY:l_circle_library(); break;
34 : 0 : case L_TOME1: l_tome1(); break;
35 : 0 : case L_TOME2: l_tome2(); break;
36 : 0 : case L_ADEPT:l_adept(); break;
37 : 0 : case L_VOICE1:l_voice1();break;
38 : 0 : case L_VOICE2:l_voice2();break;
39 : 0 : case L_VOICE3:l_voice3();break;
40 : 0 : case L_VOID:l_void();break;
41 : 0 : case L_FIRE_STATION:l_fire_station();break;
42 : 0 : case L_EARTH_STATION:l_earth_station();break;
43 : 0 : case L_WATER_STATION:l_water_station();break;
44 : 0 : case L_AIR_STATION:l_air_station();break;
45 : 0 : case L_VOID_STATION:l_void_station();break;
46 : : }
47 [ - + ][ # # ]: 9 : else if ((! Player.status[LEVITATING]) ||
48 [ # # ]: 0 : gamestatusp(MOUNTED) ||
49 [ # # ]: 0 : (Cmd == '@') || /* @ command activates all effects under player */
50 : : (movef < LEVITATION_AVOIDANCE)) {
51 [ + + ]: 9 : if (movef != L_NO_OP) {
52 : 4 : resetgamestatus(FAST_MOVE);
53 : 4 : dataprint();
54 : : }
55 [ + - - - : 9 : switch(movef) {
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - +
- - - - -
- - - + -
- - - - -
- - - - -
- + - - -
- - - - -
- + - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - ]
56 : : /* miscellaneous */
57 : 5 : case L_NO_OP:l_no_op(); break;
58 : 0 : case L_HEDGE:l_hedge(); break;
59 : 0 : case L_WATER:l_water(); break;
60 : 0 : case L_LIFT:l_lift(); break;
61 : 0 : case L_LAVA:l_lava(); break;
62 : 0 : case L_FIRE:l_fire(); break;
63 : 0 : case L_WHIRLWIND:l_whirlwind(); break;
64 : 0 : case L_RUBBLE:l_rubble(); break;
65 : 0 : case L_MAGIC_POOL:l_magic_pool(); break;
66 : 0 : case L_CHAOS:l_chaos(); break;
67 : 0 : case L_ABYSS:l_abyss(); break;
68 : :
69 : 0 : case L_PORTCULLIS_TRAP:l_portcullis_trap(); break;
70 : 0 : case L_RAISE_PORTCULLIS:l_raise_portcullis(); break;
71 : 0 : case L_DROP_EVERY_PORTCULLIS:l_drop_every_portcullis(); break;
72 : 0 : case L_ARENA_EXIT:l_arena_exit(); break;
73 : 0 : case L_TRIFID:l_trifid(); break;
74 : 0 : case L_ENTER_COURT:l_enter_court(); break;
75 : 0 : case L_ESCALATOR:l_escalator(); break;
76 : 0 : case L_THRONE:l_throne(); break;
77 : :
78 : 0 : case L_TRAP_DART:l_trap_dart(); break;
79 : 0 : case L_TRAP_SIREN:l_trap_siren(); break;
80 : 0 : case L_TRAP_PIT:l_trap_pit(); break;
81 : 0 : case L_TRAP_DOOR:l_trap_door(); break;
82 : 0 : case L_TRAP_SNARE:l_trap_snare(); break;
83 : 0 : case L_TRAP_BLADE:l_trap_blade(); break;
84 : 0 : case L_TRAP_FIRE:l_trap_fire(); break;
85 : 0 : case L_TRAP_TELEPORT:l_trap_teleport(); break;
86 : 0 : case L_TRAP_DISINTEGRATE:l_trap_disintegrate(); break;
87 : 0 : case L_TRAP_SLEEP_GAS:l_trap_sleepgas(); break;
88 : 0 : case L_TRAP_MANADRAIN:l_trap_manadrain(); break;
89 : 0 : case L_TRAP_ACID:l_trap_acid(); break;
90 : 0 : case L_TRAP_ABYSS:l_trap_abyss(); break;
91 : :
92 : : /*door functions */
93 : 0 : case L_BANK:l_bank(); break;
94 : 1 : case L_ARMORER:l_armorer(); break;
95 : 0 : case L_CLUB:l_club(); break;
96 : 0 : case L_GYM:l_gym(); break;
97 : 0 : case L_BROTHEL:l_brothel(); break;
98 : 0 : case L_THIEVES_GUILD:l_thieves_guild(); break;
99 : 0 : case L_COLLEGE:l_college(); break;
100 : 0 : case L_HEALER:l_healer(); break;
101 : 0 : case L_STATUE_WAKE:l_statue_wake(); break;
102 : 0 : case L_CASINO:l_casino(); break;
103 : 1 : case L_COMMANDANT:l_commandant(); break;
104 : 0 : case L_DINER:l_diner(); break;
105 : 0 : case L_CRAP:l_crap(); break;
106 : 0 : case L_TAVERN:l_tavern(); break;
107 : 0 : case L_MERC_GUILD:l_merc_guild(); break;
108 : : #ifdef INCLUDE_MONKS
109 : 0 : case L_MONASTERY:l_monastery(); break;
110 : : #endif
111 : 0 : case L_ALCHEMIST:l_alchemist(); break;
112 : 0 : case L_SORCERORS:l_sorcerors(); break;
113 : 0 : case L_CASTLE:l_castle(); break;
114 : 0 : case L_ARENA:l_arena(); break;
115 : 0 : case L_VAULT:l_vault(); break;
116 : 0 : case L_DPW:l_dpw(); break;
117 : 0 : case L_LIBRARY:l_library(); break;
118 : 1 : case L_PAWN_SHOP:l_pawn_shop(); break;
119 : 0 : case L_CONDO:l_condo(); break;
120 : 0 : case L_TOURIST:l_tourist(); break;
121 : 0 : case L_ALTAR:l_altar(); break;
122 : 0 : case L_TACTICAL_EXIT:l_tactical_exit(); break;
123 : 0 : case L_HOUSE_EXIT:l_house_exit(); break;
124 : 0 : case L_SAFE: l_safe(); break;
125 : 0 : case L_HOUSE: l_house(); break;
126 : 0 : case L_HOVEL: l_hovel(); break;
127 : 0 : case L_MANSION: l_mansion(); break;
128 : 1 : case L_COUNTRYSIDE:l_countryside(); break;
129 : 0 : case L_ORACLE:l_oracle(); break;
130 : 0 : case L_ORDER:l_order(); break;
131 : 0 : case L_CARTOGRAPHER:l_cartographer(); break;
132 : :
133 : 0 : case L_TEMPLE_WARNING:l_temple_warning(); break;
134 : 0 : case L_ENTER_CIRCLE:l_enter_circle(); break;
135 : 0 : case L_CIRCLE_LIBRARY:l_circle_library(); break;
136 : 0 : case L_TOME1: l_tome1(); break;
137 : 0 : case L_TOME2: l_tome2(); break;
138 : :
139 : 0 : case L_CHARITY: l_charity(); break;
140 : :
141 : 0 : case L_CHAOSTONE:l_chaostone();break;
142 : 0 : case L_VOIDSTONE:l_voidstone();break;
143 : 0 : case L_BALANCESTONE:l_balancestone();break;
144 : 0 : case L_LAWSTONE:l_lawstone();break;
145 : 0 : case L_SACRIFICESTONE:l_sacrificestone(); break;
146 : 0 : case L_MINDSTONE:l_mindstone(); break;
147 : :
148 : : /* challenge functions */
149 : 0 : case L_ADEPT:l_adept(); break;
150 : 0 : case L_VOICE1:l_voice1();break;
151 : 0 : case L_VOICE2:l_voice2();break;
152 : 0 : case L_VOICE3:l_voice3();break;
153 : 0 : case L_VOID:l_void();break;
154 : 0 : case L_FIRE_STATION:l_fire_station();break;
155 : 0 : case L_EARTH_STATION:l_earth_station();break;
156 : 0 : case L_WATER_STATION:l_water_station();break;
157 : 0 : case L_AIR_STATION:l_air_station();break;
158 : 0 : case L_VOID_STATION:l_void_station();break;
159 : : }
160 : : }
161 : 9 : }
162 : :
163 : :
164 : : /* execute some move function for a monster */
165 : 100 : void m_movefunction(pmt m, int movef)
166 : : {
167 : : /* loc functs above traps should be activated whether levitating or not */
168 [ + - ][ + - ]: 100 : if (! m_statusp(m,FLYING) && ! m_statusp(m, INTANGIBLE))
169 [ + - - - : 100 : switch(movef) {
- - - - -
- - - + -
- - - - -
- ]
170 : :
171 : : /* miscellaneous */
172 : 99 : case L_NO_OP:m_no_op(m); break;
173 : 0 : case L_WATER:m_water(m); break;
174 : 0 : case L_LAVA:m_lava(m); break;
175 : 0 : case L_FIRE:m_fire(m); break;
176 : 0 : case L_MAGIC_POOL:m_water(m); break;
177 : 0 : case L_ABYSS: m_abyss(m); break;
178 : :
179 : 0 : case L_TRAP_DART:m_trap_dart(m); break;
180 : 0 : case L_TRAP_PIT:m_trap_pit(m); break;
181 : 0 : case L_TRAP_DOOR:m_trap_door(m); break;
182 : 0 : case L_TRAP_SNARE:m_trap_snare(m); break;
183 : 0 : case L_TRAP_BLADE:m_trap_blade(m); break;
184 : 0 : case L_TRAP_FIRE:m_trap_fire(m); break;
185 : 1 : case L_TRAP_TELEPORT:m_trap_teleport(m); break;
186 : 0 : case L_TRAP_DISINTEGRATE:m_trap_disintegrate(m); break;
187 : 0 : case L_TRAP_MANADRAIN:m_trap_manadrain(m); break;
188 : 0 : case L_TRAP_SLEEP_GAS:m_trap_sleepgas(m); break;
189 : 0 : case L_TRAP_ACID:m_trap_acid(m); break;
190 : 0 : case L_TRAP_ABYSS:m_trap_abyss(m);break;
191 : :
192 : 0 : case L_ALTAR:m_altar(m); break;
193 : : }
194 : 100 : }
195 : :
196 : : #ifdef MSDOS_SUPPORTED_ANTIQUE
197 : : /* ****Moved here from another file**** */
198 : : /* if signp is true, always print message, otherwise do so only sometimes */
199 : : void sign_print(int x, int y, int signp)
200 : : {
201 : : if ((Level->site[x][y].p_locf >= CITYSITEBASE) &&
202 : : (Level->site[x][y].p_locf < CITYSITEBASE+NUMCITYSITES))
203 : : CitySiteList[Level->site[x][y].p_locf - CITYSITEBASE][0] = TRUE;
204 : : switch(Level->site[x][y].p_locf) {
205 : : case L_CHARITY:
206 : : print1("You notice a sign: The Rampart Orphanage And Hospice For The Needy.");
207 : : break;
208 : : case L_MANSION:
209 : : print1("You notice a sign:");
210 : : print2("This edifice protected by DeathWatch Devices, Ltd.");
211 : : morewait();
212 : : break;
213 : : case L_GRANARY:
214 : : print1("You notice a sign:");
215 : : print2("Public Granary: Entrance Strictly Forbidden.");
216 : : break;
217 : : case L_PORTCULLIS:
218 : : if (Level->site[x][y].locchar == FLOOR)
219 : : print1("You see a groove in the floor and slots above you.");
220 : : break;
221 : : case L_STABLES:
222 : : print1("You notice a sign:");
223 : : print2("Village Stables");
224 : : break;
225 : : case L_COMMONS:
226 : : print1("You notice a sign:");
227 : : print2("Village Commons: No wolves allowed.");
228 : : break;
229 : : case L_MAZE:
230 : : print1("You notice a sign:");
231 : : print2("Hedge maze closed for trifid extermination.");
232 : : break;
233 : : case L_BANK:
234 : : if (signp) {
235 : : print1("You notice a sign:");
236 : : print2("First Bank of Omega: Autoteller Carrel.");
237 : : }
238 : : break;
239 : : case L_TEMPLE:
240 : : print1("You see the ornate portico of the Rampart Pantheon");
241 : : break;
242 : : case L_ARMORER:
243 : : if (signp) {
244 : : print1("You notice a sign:");
245 : : print2("Julie's Armor of Proof and Weapons of Quality");
246 : : }
247 : : break;
248 : : case L_CLUB:
249 : : if (signp) {
250 : : print1("You notice a sign:");
251 : : print2("Rampart Explorers' Club.");
252 : : }
253 : : break;
254 : : case L_GYM:
255 : : if (signp) {
256 : : print1("You notice a sign:");
257 : : print2("The Rampart Gymnasium, (affil. Rampart Coliseum).");
258 : : }
259 : : break;
260 : : case L_HEALER:
261 : : if (signp) {
262 : : print1("You notice a sign:");
263 : : print2("Rampart Healers. Member RMA.");
264 : : }
265 : : break;
266 : : case L_CASINO:
267 : : if (signp) {
268 : : print1("You notice a sign:");
269 : : print2("Rampart Mithril Nugget Casino.");
270 : : }
271 : : break;
272 : : case L_SEWER:
273 : : print1("A sewer entrance. You don't want to go down THERE, do you?");
274 : : break;
275 : : case L_COMMANDANT:
276 : : if (signp) {
277 : : print1("You notice a sign:");
278 : : print2("Commandant Sonder's Rampart-fried Lyzzard partes. Open 24 hrs.");
279 : : }
280 : : break;
281 : : case L_DINER:
282 : : if (signp) {
283 : : print1("You notice a sign:");
284 : : print2("The Rampart Diner. All you can eat, 25Au.");
285 : : }
286 : : break;
287 : : case L_CRAP:
288 : : if (signp) {
289 : : print1("You notice a sign:");
290 : : print2("Les Crapeuleaux. (****)");
291 : : }
292 : : break;
293 : : case L_TAVERN:
294 : : if (signp) {
295 : : print1("You notice a sign:");
296 : : print2("The Centaur and Nymph -- J. Riley, prop.");
297 : : }
298 : : break;
299 : : case L_ALCHEMIST:
300 : : if (signp) {
301 : : print1("You notice a sign:");
302 : : print2("Ambrosias' Potions et cie.");
303 : : }
304 : : break;
305 : : case L_DPW:
306 : : if (signp) {
307 : : print1("You notice a sign:");
308 : : print2("Rampart Department of Public Works.");
309 : : }
310 : : break;
311 : : case L_LIBRARY:
312 : : if (signp) {
313 : : print1("You notice a sign:");
314 : : print2("Rampart Public Library.");
315 : : }
316 : : break;
317 : : case L_CONDO:
318 : : if (signp) {
319 : : print1("You notice a sign:");
320 : : if (gamestatusp(SOLD_CONDO))
321 : : print2("Home Sweet Home");
322 : : else print2("Luxury Condominium For Sale; Inquire Within");
323 : : }
324 : : break;
325 : : case L_PAWN_SHOP:
326 : : if (signp) {
327 : : print1("You notice a sign:");
328 : : print2("Knight's Pawn Shop.");
329 : : }
330 : : break;
331 : : case L_CEMETARY:
332 : : print1("You notice a sign:");
333 : : print2("Rampart City Cemetary. Closed -- Full.");
334 : : break;
335 : : case L_GARDEN:
336 : : print1("You notice a sign:");
337 : : print2("Rampart Botanical Gardens---Do not deface statues.");
338 : : break;
339 : : case L_JAIL:
340 : : print1("You notice a sign:");
341 : : print2("Rampart City Gaol -- always room for more.");
342 : : break;
343 : : #ifdef INCLUDE_MONKS
344 : : case L_MONASTERY:
345 : : print1("You notice a sign:");
346 : : print2("Tholian Monastery. Truthseekers Welcome.");
347 : : break;
348 : : #endif
349 : : case L_ORACLE:
350 : : print1("You notice a sign:");
351 : : print2("The Oracle of the Cyan Flames");
352 : : morewait();
353 : : break;
354 : : case L_PAWN_SHOP:
355 : : if (signp) {
356 : : print1("You notice a sign:");
357 : : print2("Knight's Pawn Shop.");
358 : : }
359 : : break;
360 : : }
361 : : }
362 : : #endif
|