Devilution
Diablo devolved - magic behind the 1996 computer game
trigs.cpp
Go to the documentation of this file.
1 #include "all.h"
2 
4 
5 BOOL townwarps[3];
6 BOOL trigflag;
7 int numtrigs;
10 
11 int TownDownList[] = { 716, 715, 719, 720, 721, 723, 724, 725, 726, 727, -1 };
12 int TownWarp1List[] = { 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1181, 1183, 1185, -1 };
13 int L1UpList[] = { 127, 129, 130, 131, 132, 133, 135, 137, 138, 139, 140, -1 };
14 int L1DownList[] = { 106, 107, 108, 109, 110, 112, 114, 115, 118, -1 };
15 int L2UpList[] = { 266, 267, -1 };
16 int L2DownList[] = { 269, 270, 271, 272, -1 };
17 int L2TWarpUpList[] = { 558, 559, -1 };
18 int L3UpList[] = { 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, -1 };
19 int L3DownList[] = { 162, 163, 164, 165, 166, 167, 168, 169, -1 };
20 int L3TWarpUpList[] = { 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, -1 };
21 int L4UpList[] = { 82, 83, 90, -1 };
22 int L4DownList[] = { 120, 130, 131, 132, 133, -1 };
23 int L4TWarpUpList[] = { 421, 422, 429, -1 };
24 int L4PentaList[] = { 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, -1 };
25 
26 #ifndef SPAWN
28 {
29  numtrigs = 0;
30  trigflag = FALSE;
31 }
32 #endif
33 
35 {
36  int i;
37 
38  trigs[0]._tx = 25;
39  trigs[0]._ty = 29;
41 
42  numtrigs = 1;
43 
44 #ifndef SPAWN
45  if (gbMaxPlayers == MAX_PLRS) {
46  for (i = 0; i < sizeof(townwarps) / sizeof(townwarps[0]); i++) {
47  townwarps[i] = TRUE;
48  }
49  trigs[1]._tx = 49;
50  trigs[1]._ty = 21;
52  trigs[1]._tlvl = 5;
53  trigs[2]._tx = 17;
54  trigs[2]._ty = 69;
56  trigs[2]._tlvl = 9;
57  trigs[3]._tx = 41;
58  trigs[3]._ty = 80;
60  trigs[3]._tlvl = 13;
61  numtrigs = 4;
62  } else {
63 #endif
64  for (i = 0; i < MAX_PLRS - 1; i++) {
65  townwarps[i] = FALSE;
66  }
67 #ifndef SPAWN
68  if (plr[myplr].pTownWarps & 1) {
69  trigs[1]._tx = 49;
70  trigs[1]._ty = 21;
72  trigs[1]._tlvl = 5;
73  numtrigs = 2;
74  townwarps[0] = TRUE;
75  }
76  if (plr[myplr].pTownWarps & 2) {
77  townwarps[1] = TRUE;
78  trigs[numtrigs]._tx = 17;
79  trigs[numtrigs]._ty = 69;
81  trigs[numtrigs]._tlvl = 9;
82  numtrigs++;
83  }
84  if (plr[myplr].pTownWarps & 4) {
85  townwarps[2] = TRUE;
86  trigs[numtrigs]._tx = 41;
87  trigs[numtrigs]._ty = 80;
89  trigs[numtrigs]._tlvl = 13;
90  numtrigs++;
91  }
92  }
93 #endif
94 
95  trigflag = FALSE;
96 }
97 
99 {
100  int i, j;
101 
102  numtrigs = 0;
103  for (j = 0; j < MAXDUNY; j++) {
104  for (i = 0; i < MAXDUNX; i++) {
105  if (dPiece[i][j] == 129) {
106  trigs[numtrigs]._tx = i;
107  trigs[numtrigs]._ty = j;
109  numtrigs++;
110  }
111  if (dPiece[i][j] == 115) {
112  trigs[numtrigs]._tx = i;
113  trigs[numtrigs]._ty = j;
115  numtrigs++;
116  }
117  }
118  }
119  trigflag = FALSE;
120 }
121 
122 #ifndef SPAWN
124 {
125  int i, j;
126 
127  numtrigs = 0;
128  for (j = 0; j < MAXDUNY; j++) {
129  for (i = 0; i < MAXDUNX; i++) {
130  if (dPiece[i][j] == 267 && (i != quests[Q_SCHAMB]._qtx || j != quests[Q_SCHAMB]._qty)) {
131  trigs[numtrigs]._tx = i;
132  trigs[numtrigs]._ty = j;
134  numtrigs++;
135  }
136 
137  if (dPiece[i][j] == 559) {
138  trigs[numtrigs]._tx = i;
139  trigs[numtrigs]._ty = j;
141  trigs[numtrigs]._tlvl = 0;
142  numtrigs++;
143  }
144 
145  if (dPiece[i][j] == 271) {
146  trigs[numtrigs]._tx = i;
147  trigs[numtrigs]._ty = j;
149  numtrigs++;
150  }
151  }
152  }
153  trigflag = FALSE;
154 }
155 
157 {
158  int i, j;
159 
160  numtrigs = 0;
161  for (j = 0; j < MAXDUNY; j++) {
162  for (i = 0; i < MAXDUNX; i++) {
163  if (dPiece[i][j] == 171) {
164  trigs[numtrigs]._tx = i;
165  trigs[numtrigs]._ty = j;
167  numtrigs++;
168  }
169 
170  if (dPiece[i][j] == 168) {
171  trigs[numtrigs]._tx = i;
172  trigs[numtrigs]._ty = j;
174  numtrigs++;
175  }
176 
177  if (dPiece[i][j] == 549) {
178  trigs[numtrigs]._tx = i;
179  trigs[numtrigs]._ty = j;
181  numtrigs++;
182  }
183  }
184  }
185  trigflag = FALSE;
186 }
187 
189 {
190  int i, j;
191 
192  numtrigs = 0;
193  for (j = 0; j < MAXDUNY; j++) {
194  for (i = 0; i < MAXDUNX; i++) {
195  if (dPiece[i][j] == 83) {
196  trigs[numtrigs]._tx = i;
197  trigs[numtrigs]._ty = j;
199  numtrigs++;
200  }
201 
202  if (dPiece[i][j] == 422) {
203  trigs[numtrigs]._tx = i;
204  trigs[numtrigs]._ty = j;
206  trigs[numtrigs]._tlvl = 0;
207  numtrigs++;
208  }
209 
210  if (dPiece[i][j] == 120) {
211  trigs[numtrigs]._tx = i;
212  trigs[numtrigs]._ty = j;
214  numtrigs++;
215  }
216  }
217  }
218 
219  for (j = 0; j < MAXDUNY; j++) {
220  for (i = 0; i < MAXDUNX; i++) {
221  if (dPiece[i][j] == 370 && quests[Q_BETRAYER]._qactive == QUEST_DONE) {
222  trigs[numtrigs]._tx = i;
223  trigs[numtrigs]._ty = j;
225  numtrigs++;
226  }
227  }
228  }
229  trigflag = FALSE;
230 }
231 
233 {
234  trigflag = FALSE;
235  numtrigs = 1;
236  trigs[0]._tx = 82;
237  trigs[0]._ty = 42;
239 }
240 
242 {
243  trigflag = FALSE;
244  numtrigs = 1;
245  trigs[0]._tx = 70;
246  trigs[0]._ty = 39;
248 }
249 
251 {
252  trigflag = FALSE;
253  numtrigs = 1;
254  trigs[0]._tx = 30;
255  trigs[0]._ty = 83;
257 }
258 
260 {
261  trigflag = FALSE;
262  numtrigs = 1;
263  trigs[0]._tx = 35;
264  trigs[0]._ty = 32;
266 }
267 #endif
268 
270 {
271  int i, j, k, l;
272 
273  for (i = 0; TownDownList[i] != -1; i++) {
274  if (dPiece[cursmx][cursmy] == TownDownList[i]) {
275  strcpy(infostr, "Down to dungeon");
276  cursmx = 25;
277  cursmy = 29;
278  return TRUE;
279  }
280  }
281 
282  if (townwarps[0]) {
283  for (j = 0; TownWarp1List[j] != -1; j++) {
284  if (dPiece[cursmx][cursmy] == TownWarp1List[j]) {
285  strcpy(infostr, "Down to catacombs");
286  cursmx = 49;
287  cursmy = 21;
288  return TRUE;
289  }
290  }
291  }
292 
293  if (townwarps[1]) {
294  for (k = 1199; k <= 1220; k++) {
295  if (dPiece[cursmx][cursmy] == k) {
296  strcpy(infostr, "Down to caves");
297  cursmx = 17;
298  cursmy = 69;
299  return TRUE;
300  }
301  }
302  }
303 
304  if (townwarps[2]) {
305  for (l = 1240; l <= 1255; l++) {
306  if (dPiece[cursmx][cursmy] == l) {
307  strcpy(infostr, "Down to hell");
308  cursmx = 41;
309  cursmy = 80;
310  return TRUE;
311  }
312  }
313  }
314 
315  return FALSE;
316 }
317 
319 {
320  int i, j;
321 
322  for (i = 0; L1UpList[i] != -1; i++) {
323  if (dPiece[cursmx][cursmy] == L1UpList[i]) {
324  if (currlevel > 1)
325  sprintf(infostr, "Up to level %i", currlevel - 1);
326  else
327  strcpy(infostr, "Up to town");
328  for (j = 0; j < numtrigs; j++) {
329  if (trigs[j]._tmsg == WM_DIABPREVLVL) {
330  cursmx = trigs[j]._tx;
331  cursmy = trigs[j]._ty;
332  return TRUE;
333  }
334  }
335  }
336  }
337 
338  for (i = 0; L1DownList[i] != -1; i++) {
339  if (dPiece[cursmx][cursmy] == L1DownList[i]) {
340  sprintf(infostr, "Down to level %i", currlevel + 1);
341  for (j = 0; j < numtrigs; j++) {
342  if (trigs[j]._tmsg == WM_DIABNEXTLVL) {
343  cursmx = trigs[j]._tx;
344  cursmy = trigs[j]._ty;
345  return TRUE;
346  }
347  }
348  }
349  }
350 
351  return FALSE;
352 }
353 
355 {
356  int i, j, dx, dy;
357 
358  for (i = 0; L2UpList[i] != -1; i++) {
359  if (dPiece[cursmx][cursmy] == L2UpList[i]) {
360  for (j = 0; j < numtrigs; j++) {
361  if (trigs[j]._tmsg == WM_DIABPREVLVL) {
362  dx = abs(trigs[j]._tx - cursmx);
363  dy = abs(trigs[j]._ty - cursmy);
364  if (dx < 4 && dy < 4) {
365  sprintf(infostr, "Up to level %i", currlevel - 1);
366  cursmx = trigs[j]._tx;
367  cursmy = trigs[j]._ty;
368  return TRUE;
369  }
370  }
371  }
372  }
373  }
374 
375  for (i = 0; L2DownList[i] != -1; i++) {
376  if (dPiece[cursmx][cursmy] == L2DownList[i]) {
377  sprintf(infostr, "Down to level %i", currlevel + 1);
378  for (j = 0; j < numtrigs; j++) {
379  if (trigs[j]._tmsg == WM_DIABNEXTLVL) {
380  cursmx = trigs[j]._tx;
381  cursmy = trigs[j]._ty;
382  return TRUE;
383  }
384  }
385  }
386  }
387 
388  if (currlevel == 5) {
389  for (i = 0; L2TWarpUpList[i] != -1; i++) {
390  if (dPiece[cursmx][cursmy] == L2TWarpUpList[i]) {
391  for (j = 0; j < numtrigs; j++) {
392  if (trigs[j]._tmsg == WM_DIABTWARPUP) {
393  dx = abs(trigs[j]._tx - cursmx);
394  dy = abs(trigs[j]._ty - cursmy);
395  if (dx < 4 && dy < 4) {
396  strcpy(infostr, "Up to town");
397  cursmx = trigs[j]._tx;
398  cursmy = trigs[j]._ty;
399  return TRUE;
400  }
401  }
402  }
403  }
404  }
405  }
406 
407  return FALSE;
408 }
409 
411 {
412  int i, j, dx, dy;
413 
414  for (i = 0; L3UpList[i] != -1; ++i) {
415  if (dPiece[cursmx][cursmy] == L3UpList[i]) {
416  sprintf(infostr, "Up to level %i", currlevel - 1);
417  for (j = 0; j < numtrigs; j++) {
418  if (trigs[j]._tmsg == WM_DIABPREVLVL) {
419  cursmx = trigs[j]._tx;
420  cursmy = trigs[j]._ty;
421  return TRUE;
422  }
423  }
424  }
425  }
426 
427  for (i = 0; L3DownList[i] != -1; i++) {
428  if (dPiece[cursmx][cursmy] == L3DownList[i]
429  || dPiece[cursmx + 1][cursmy] == L3DownList[i]
430  || dPiece[cursmx + 2][cursmy] == L3DownList[i]) {
431  sprintf(infostr, "Down to level %i", currlevel + 1);
432  for (j = 0; j < numtrigs; j++) {
433  if (trigs[j]._tmsg == WM_DIABNEXTLVL) {
434  cursmx = trigs[j]._tx;
435  cursmy = trigs[j]._ty;
436  return TRUE;
437  }
438  }
439  }
440  }
441 
442  if (currlevel == 9) {
443  for (i = 0; L3TWarpUpList[i] != -1; i++) {
444  if (dPiece[cursmx][cursmy] == L3TWarpUpList[i]) {
445  for (j = 0; j < numtrigs; j++) {
446  if (trigs[j]._tmsg == WM_DIABTWARPUP) {
447  dx = abs(trigs[j]._tx - cursmx);
448  dy = abs(trigs[j]._ty - cursmy);
449  if (dx < 4 && dy < 4) {
450  strcpy(infostr, "Up to town");
451  cursmx = trigs[j]._tx;
452  cursmy = trigs[j]._ty;
453  return TRUE;
454  }
455  }
456  }
457  }
458  }
459  }
460 
461  return FALSE;
462 }
463 
465 {
466  int i, j, dx, dy;
467 
468  for (i = 0; L4UpList[i] != -1; ++i) {
469  if (dPiece[cursmx][cursmy] == L4UpList[i]) {
470  sprintf(infostr, "Up to level %i", currlevel - 1);
471  for (j = 0; j < numtrigs; j++) {
472  if (trigs[j]._tmsg == WM_DIABPREVLVL) {
473  cursmx = trigs[j]._tx;
474  cursmy = trigs[j]._ty;
475  return TRUE;
476  }
477  }
478  }
479  }
480 
481  for (i = 0; L4DownList[i] != -1; i++) {
482  if (dPiece[cursmx][cursmy] == L4DownList[i]) {
483  sprintf(infostr, "Down to level %i", currlevel + 1);
484  for (j = 0; j < numtrigs; j++) {
485  if (trigs[j]._tmsg == WM_DIABNEXTLVL) {
486  cursmx = trigs[j]._tx;
487  cursmy = trigs[j]._ty;
488  return TRUE;
489  }
490  }
491  }
492  }
493 
494  if (currlevel == 13) {
495  for (i = 0; L4TWarpUpList[i] != -1; i++) {
496  if (dPiece[cursmx][cursmy] == L4TWarpUpList[i]) {
497  for (j = 0; j < numtrigs; j++) {
498  if (trigs[j]._tmsg == WM_DIABTWARPUP) {
499  dx = abs(trigs[j]._tx - cursmx);
500  dy = abs(trigs[j]._ty - cursmy);
501  if (dx < 4 && dy < 4) {
502  strcpy(infostr, "Up to town");
503  cursmx = trigs[j]._tx;
504  cursmy = trigs[j]._ty;
505  return TRUE;
506  }
507  }
508  }
509  }
510  }
511  }
512 
513  if (currlevel == 15) {
514  for (i = 0; L4PentaList[i] != -1; i++) {
515  if (dPiece[cursmx][cursmy] == L4PentaList[i]) {
516  strcpy(infostr, "Down to Diablo");
517  for (j = 0; j < numtrigs; j++) {
518  if (trigs[j]._tmsg == WM_DIABNEXTLVL) {
519  cursmx = trigs[j]._tx;
520  cursmy = trigs[j]._ty;
521  return TRUE;
522  }
523  }
524  }
525  }
526  }
527 
528  return FALSE;
529 }
530 
532 {
533  int i, tx, ty, xx, yy;
534 
535  for (i = 0; i < numtrigs; i++) {
536  tx = trigs[i]._tx;
537  ty = trigs[i]._ty;
538 
539  for (yy = -2; yy <= 2; yy++) {
540  for (xx = -2; xx <= 2; xx++) {
541  dFlags[tx + xx][ty + yy] |= BFLAG_POPULATED;
542  }
543  }
544  }
545 }
546 
548 {
549  int i;
550 
551  for (i = 0; L1UpList[i] != -1; i++) {
552  if (dPiece[cursmx][cursmy] == L1UpList[i]) {
553  sprintf(infostr, "Back to Level %i", quests[Q_SKELKING]._qlevel);
554  cursmx = trigs[0]._tx;
555  cursmy = trigs[0]._ty;
556 
557  return TRUE;
558  }
559  }
560 
561  return FALSE;
562 }
563 
565 {
566  int i;
567 
568  for (i = 0; L2DownList[i] != -1; i++) {
569  if (dPiece[cursmx][cursmy] == L2DownList[i]) {
570  sprintf(infostr, "Back to Level %i", quests[Q_SCHAMB]._qlevel);
571  cursmx = trigs[0]._tx;
572  cursmy = trigs[0]._ty;
573 
574  return TRUE;
575  }
576  }
577 
578  return FALSE;
579 }
580 
582 {
583  int i;
584 
585  for (i = 0; L3DownList[i] != -1; i++) {
586  if (dPiece[cursmx][cursmy] == L3DownList[i]) {
587  sprintf(infostr, "Back to Level %i", quests[Q_PWATER]._qlevel);
588  cursmx = trigs[0]._tx;
589  cursmy = trigs[0]._ty;
590 
591  return TRUE;
592  }
593  }
594 
595  return FALSE;
596 }
597 
599 {
600  trigflag = FALSE;
601 
602  if (!sgbControllerActive && MouseY > PANEL_TOP - 1) {
603  return;
604  }
605 
606  if (!setlevel) {
607  switch (leveltype) {
608  case DTYPE_TOWN:
610  break;
611  case DTYPE_CATHEDRAL:
612  trigflag = ForceL1Trig();
613  break;
614  case DTYPE_CATACOMBS:
615  trigflag = ForceL2Trig();
616  break;
617  case DTYPE_CAVES:
618  trigflag = ForceL3Trig();
619  break;
620  case DTYPE_HELL:
621  trigflag = ForceL4Trig();
622  break;
623  }
624  if (leveltype != DTYPE_TOWN && !trigflag) {
625  trigflag = ForceQuests();
626  }
627  } else {
628  switch (setlvlnum) {
629  case SL_SKELKING:
631  break;
632  case SL_BONECHAMB:
634  break;
635  case SL_POISONWATER:
637  break;
638  }
639  }
640 
641  if (trigflag) {
642  ClearPanel();
643  }
644 }
645 
647 {
648  int x, y, i;
649  BOOL abort;
650  char abortflag;
651 
652  if (plr[myplr]._pmode != PM_STAND)
653  return;
654 
655  for (i = 0; i < numtrigs; i++) {
656  if (plr[myplr].WorldX != trigs[i]._tx || plr[myplr].WorldY != trigs[i]._ty) {
657  continue;
658  }
659 
660  switch (trigs[i]._tmsg) {
661  case WM_DIABNEXTLVL:
662 #ifdef SPAWN
663  if (currlevel >= 2) {
664  NetSendCmdLoc(TRUE, CMD_WALKXY, plr[myplr].WorldX, plr[myplr].WorldY + 1);
667  } else {
668 #endif
670  return;
671  StartNewLvl(myplr, trigs[i]._tmsg, currlevel + 1);
672 #ifdef SPAWN
673  }
674 #endif
675  break;
676  case WM_DIABPREVLVL:
678  return;
679  StartNewLvl(myplr, trigs[i]._tmsg, currlevel - 1);
680  break;
681  case WM_DIABRTNLVL:
682  StartNewLvl(myplr, trigs[i]._tmsg, ReturnLvl);
683  break;
684  case WM_DIABTOWNWARP:
685  if (gbMaxPlayers != 1) {
686  abort = FALSE;
687 
688  if (trigs[i]._tlvl == 5 && plr[myplr]._pLevel < 8) {
689  abort = TRUE;
690  x = plr[myplr].WorldX;
691  y = plr[myplr].WorldY + 1;
692  abortflag = EMSG_REQUIRES_LVL_8;
693  }
694 
695  if (trigs[i]._tlvl == 9 && plr[myplr]._pLevel < 13) {
696  abort = TRUE;
697  x = plr[myplr].WorldX + 1;
698  y = plr[myplr].WorldY;
699  abortflag = EMSG_REQUIRES_LVL_13;
700  }
701 
702  if (trigs[i]._tlvl == 13 && plr[myplr]._pLevel < 17) {
703  abort = TRUE;
704  x = plr[myplr].WorldX;
705  y = plr[myplr].WorldY + 1;
706  abortflag = EMSG_REQUIRES_LVL_17;
707  }
708 
709  if (abort) {
710  if (plr[myplr]._pClass == PC_WARRIOR) {
712 #ifndef SPAWN
713  } else if (plr[myplr]._pClass == PC_ROGUE) {
715  } else if (plr[myplr]._pClass == PC_SORCERER) {
717 #endif
718  }
719 
720  InitDiabloMsg(abortflag);
721  NetSendCmdLoc(TRUE, CMD_WALKXY, x, y);
722  return;
723  }
724  }
725 
726  StartNewLvl(myplr, trigs[i]._tmsg, trigs[i]._tlvl);
727  break;
728  case WM_DIABTWARPUP:
730  StartNewLvl(myplr, trigs[i]._tmsg, 0);
731  break;
732  default:
733  app_fatal("Unknown trigger msg");
734  break;
735  }
736  }
737 }
738 
cursmx
int cursmx
Definition: cursor.cpp:24
quests
QuestStruct quests[MAXQUESTS]
Definition: quests.cpp:8
MouseY
int MouseY
Definition: diablo.cpp:17
currlevel
BYTE currlevel
Definition: gendung.cpp:40
TriggerStruct::_tlvl
int _tlvl
Definition: structs.h:1510
L2TWarpUpList
int L2TWarpUpList[]
Definition: trigs.cpp:17
ForceL4Trig
BOOL ForceL4Trig()
Definition: trigs.cpp:464
L3UpList
int L3UpList[]
Definition: trigs.cpp:18
CheckTrigForce
void CheckTrigForce()
Definition: trigs.cpp:598
MAX_PLRS
#define MAX_PLRS
Definition: defs.h:16
MAXTRIGGERS
#define MAXTRIGGERS
Definition: defs.h:38
DTYPE_CATACOMBS
@ DTYPE_CATACOMBS
Definition: enums.h:1870
PlayerStruct::WorldX
int WorldX
Definition: structs.h:188
MAXDUNX
#define MAXDUNX
Definition: defs.h:25
InitL1Triggers
void InitL1Triggers()
Definition: trigs.cpp:98
InitL4Triggers
void InitL4Triggers()
Definition: trigs.cpp:188
InitPWaterTriggers
void InitPWaterTriggers()
Definition: trigs.cpp:250
trigflag
BOOL trigflag
Definition: trigs.cpp:6
InitSKingTriggers
void InitSKingTriggers()
Definition: trigs.cpp:232
Freeupstairs
void Freeupstairs()
Definition: trigs.cpp:531
WM_DIABPREVLVL
@ WM_DIABPREVLVL
Definition: enums.h:2107
InitL2Triggers
void InitL2Triggers()
Definition: trigs.cpp:123
TriggerStruct
Definition: structs.h:1506
all.h
DropItemBeforeTrig
BOOL DropItemBeforeTrig()
Definition: inv.cpp:2236
L4TWarpUpList
int L4TWarpUpList[]
Definition: trigs.cpp:23
ForceL2Trig
BOOL ForceL2Trig()
Definition: trigs.cpp:354
ForceSChambTrig
BOOL ForceSChambTrig()
Definition: trigs.cpp:564
SL_BONECHAMB
@ SL_BONECHAMB
Definition: enums.h:2541
CheckTriggers
void CheckTriggers()
Definition: trigs.cpp:646
ForceTownTrig
BOOL ForceTownTrig()
Definition: trigs.cpp:269
PS_WARR43
@ PS_WARR43
Definition: enums.h:1067
EMSG_REQUIRES_LVL_8
@ EMSG_REQUIRES_LVL_8
Definition: enums.h:1936
townwarps
DEVILUTION_BEGIN_NAMESPACE BOOL townwarps[3]
Definition: trigs.cpp:5
infostr
char infostr[256]
Definition: control.cpp:52
L4PentaList
int L4PentaList[]
Definition: trigs.cpp:24
L4UpList
int L4UpList[]
Definition: trigs.cpp:21
gbMaxPlayers
BYTE gbMaxPlayers
Specifies the maximum number of players in a game, where 1 represents a single player game and 4 repr...
Definition: multi.cpp:34
Q_PWATER
@ Q_PWATER
Definition: enums.h:2561
TownDownList
int TownDownList[]
Definition: trigs.cpp:11
SL_POISONWATER
@ SL_POISONWATER
Definition: enums.h:2543
MAXDUNY
#define MAXDUNY
Definition: defs.h:26
ClearPanel
void ClearPanel()
Definition: control.cpp:559
CURSOR_FIRSTITEM
@ CURSOR_FIRSTITEM
Definition: enums.h:2078
dPiece
int dPiece[MAXDUNX][MAXDUNY]
Definition: gendung.cpp:26
WM_DIABTOWNWARP
@ WM_DIABTOWNWARP
Definition: enums.h:2111
CMD_WALKXY
@ CMD_WALKXY
Definition: enums.h:2172
TWarpFrom
int TWarpFrom
Definition: trigs.cpp:9
Q_BETRAYER
@ Q_BETRAYER
Definition: enums.h:2563
ForceSKingTrig
BOOL ForceSKingTrig()
Definition: trigs.cpp:547
ForceL3Trig
BOOL ForceL3Trig()
Definition: trigs.cpp:410
app_fatal
void app_fatal(const char *pszFmt,...)
Definition: appfat.cpp:18
InitSChambTriggers
void InitSChambTriggers()
Definition: trigs.cpp:241
PS_WARR18
@ PS_WARR18
Definition: enums.h:1042
DEVILUTION_END_NAMESPACE
#define DEVILUTION_END_NAMESPACE
Definition: types.h:10
SL_SKELKING
@ SL_SKELKING
Definition: enums.h:2540
trigs
TriggerStruct trigs[MAXTRIGGERS]
Definition: trigs.cpp:8
InitL3Triggers
void InitL3Triggers()
Definition: trigs.cpp:156
InitTownTriggers
void InitTownTriggers()
Definition: trigs.cpp:34
EMSG_REQUIRES_LVL_13
@ EMSG_REQUIRES_LVL_13
Definition: enums.h:1937
L1UpList
int L1UpList[]
Definition: trigs.cpp:13
WM_DIABRTNLVL
@ WM_DIABRTNLVL
Definition: enums.h:2108
ForceL1Trig
BOOL ForceL1Trig()
Definition: trigs.cpp:318
PS_ROGUE43
@ PS_ROGUE43
Definition: enums.h:957
QUEST_DONE
@ QUEST_DONE
Definition: enums.h:2570
TriggerStruct::_tmsg
int _tmsg
Definition: structs.h:1509
TriggerStruct::_ty
int _ty
Definition: structs.h:1508
L2UpList
int L2UpList[]
Definition: trigs.cpp:15
L3DownList
int L3DownList[]
Definition: trigs.cpp:19
Q_SCHAMB
@ Q_SCHAMB
Definition: enums.h:2562
L3TWarpUpList
int L3TWarpUpList[]
Definition: trigs.cpp:20
PlaySFX
void PlaySFX(int psfx)
Definition: effects.cpp:1043
setlevel
BOOLEAN setlevel
Definition: gendung.cpp:65
DTYPE_TOWN
@ DTYPE_TOWN
Definition: enums.h:1868
L4DownList
int L4DownList[]
Definition: trigs.cpp:22
DTYPE_HELL
@ DTYPE_HELL
Definition: enums.h:1872
DTYPE_CAVES
@ DTYPE_CAVES
Definition: enums.h:1871
WM_DIABNEXTLVL
@ WM_DIABNEXTLVL
Definition: enums.h:2106
setlvlnum
BYTE setlvlnum
Definition: gendung.cpp:58
DTYPE_CATHEDRAL
@ DTYPE_CATHEDRAL
Definition: enums.h:1869
PS_MAGE43
@ PS_MAGE43
Definition: enums.h:854
myplr
int myplr
Definition: player.cpp:9
Q_SKELKING
@ Q_SKELKING
Definition: enums.h:2560
cursmy
int cursmy
Definition: cursor.cpp:25
PC_WARRIOR
@ PC_WARRIOR
Definition: enums.h:2706
L2DownList
int L2DownList[]
Definition: trigs.cpp:16
L1DownList
int L1DownList[]
Definition: trigs.cpp:14
InitVPTriggers
void InitVPTriggers()
Definition: trigs.cpp:259
StartNewLvl
void StartNewLvl(int pnum, int fom, int lvl)
Definition: player.cpp:1967
PC_ROGUE
@ PC_ROGUE
Definition: enums.h:2707
pcurs
int pcurs
Definition: cursor.cpp:27
InitDiabloMsg
void InitDiabloMsg(char e)
Definition: error.cpp:63
DEVILUTION_BEGIN_NAMESPACE
Definition: sha.cpp:10
sgbControllerActive
bool sgbControllerActive
ForceQuests
BOOL ForceQuests()
Definition: quests.cpp:208
BFLAG_POPULATED
@ BFLAG_POPULATED
Definition: enums.h:1880
PANEL_TOP
#define PANEL_TOP
Definition: defs.h:134
ReturnLvl
int ReturnLvl
Definition: quests.cpp:16
dFlags
char dFlags[MAXDUNX][MAXDUNY]
Definition: gendung.cpp:56
ForcePWaterTrig
BOOL ForcePWaterTrig()
Definition: trigs.cpp:581
TriggerStruct::_tx
int _tx
Definition: structs.h:1507
numtrigs
int numtrigs
Definition: trigs.cpp:7
PlayerStruct::WorldY
int WorldY
Definition: structs.h:189
TownWarp1List
int TownWarp1List[]
Definition: trigs.cpp:12
PM_STAND
@ PM_STAND
Definition: enums.h:2043
NetSendCmdLoc
void NetSendCmdLoc(BOOL bHiPri, BYTE bCmd, BYTE x, BYTE y)
Definition: msg.cpp:640
leveltype
BYTE leveltype
Definition: gendung.cpp:39
WM_DIABTWARPUP
@ WM_DIABTWARPUP
Definition: enums.h:2112
InitNoTriggers
void InitNoTriggers()
Definition: trigs.cpp:27
plr
PlayerStruct plr[MAX_PLRS]
Definition: player.cpp:10
PC_SORCERER
@ PC_SORCERER
Definition: enums.h:2708
EMSG_REQUIRES_LVL_17
@ EMSG_REQUIRES_LVL_17
Definition: enums.h:1938
EMSG_NOT_IN_SHAREWARE
@ EMSG_NOT_IN_SHAREWARE
Definition: enums.h:1900