1 /*
2 This file is part of "Avanor, the Land of Mystery" roguelike game
3 Home page: http://www.avanor.com/
4 Copyright (C) 2000-2003 Vadim Gaidukevich
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 */
20
21 #include "location.h"
22 #include "other_misc.h"
23 #include "xgen.h"
24 #include "unique.h"
25 #include "game.h"
26
XWizardDungeonLocation(LOCATION l_name)27 XWizardDungeonLocation::XWizardDungeonLocation(LOCATION l_name) : XLocation(l_name)
28 {
29 map = new XMap(80, 20);
30 BuildLabirint();
31
32 XPoint pt;
33
34 switch (l_name)
35 {
36 case L_WIZARD_DUNGEON1:
37 strcpy(brief_name, "AD1");
38 strcpy(full_name, "Ahk-Ulan's dungeons level 1");
39 NewWay(L_MAIN, STW_UP);
40 NewWay(L_WIZARD_DUNGEON2, STW_DOWN);
41 Game.Scheduler.Add(new XUniversalGen(this, (CREATURE_CLASS)(CR_UNDEAD | CR_BLOB | CR_INSECT | CR_REPTILE | CR_RAT), CRL_VERY_LOW, 10, 10000));
42 break;
43
44 case L_WIZARD_DUNGEON2:
45 strcpy(brief_name, "AD2");
46 strcpy(full_name, "Ahk-Ulan's dungeons level 2");
47 NewWay(L_WIZARD_DUNGEON1, STW_UP);
48 NewWay(L_WIZARD_DUNGEON3, STW_DOWN);
49 Game.Scheduler.Add(new XUniversalGen(this, (CREATURE_CLASS)(CR_UNDEAD | CR_BLOB | CR_INSECT | CR_REPTILE | CR_RAT), CRL_LOW, 10, 10000));
50 break;
51
52 case L_WIZARD_DUNGEON3:
53 strcpy(brief_name, "AD3");
54 strcpy(full_name, "Ahk-Ulan's dungeons level 3");
55 NewWay(L_WIZARD_DUNGEON2, STW_UP);
56 NewWay(L_WIZARD_DUNGEON4, STW_DOWN);
57 Game.Scheduler.Add(new XUniversalGen(this, (CREATURE_CLASS)(CR_UNDEAD | CR_BLOB | CR_INSECT | CR_REPTILE | CR_RAT ), CRL_LOW, 10, 10000));
58 break;
59
60 case L_WIZARD_DUNGEON4:
61 strcpy(brief_name, "AD4");
62 strcpy(full_name, "Ahk-Ulan's dungeons level 4");
63 NewWay(L_WIZARD_DUNGEON3, STW_UP);
64 NewWay(L_WIZARD_DUNGEON5, STW_DOWN);
65 Game.Scheduler.Add(new XUniversalGen(this, (CREATURE_CLASS)(CR_UNDEAD | CR_BLOB | CR_INSECT | CR_REPTILE | CR_RAT ), CRL_LOW, 10, 10000));
66 break;
67
68 case L_WIZARD_DUNGEON5:
69 strcpy(brief_name, "AD5");
70 strcpy(full_name, "Ahk-Ulan's dungeons level 5");
71 NewWay(L_WIZARD_DUNGEON4, STW_UP);
72 NewWay(L_AHKULAN_CASTLE, STW_DOWN);
73 Game.Scheduler.Add(new XUniversalGen(this, (CREATURE_CLASS)(CR_UNDEAD | CR_BLOB | CR_INSECT | CR_REPTILE | CR_RAT ), CRL_LOW, 10, 10000));
74 break;
75 }
76 }
77
78
XAhkUlanCastleLocation(LOCATION tl)79 XAhkUlanCastleLocation::XAhkUlanCastleLocation(LOCATION tl) : XLocation(tl)
80 {
81 strcpy(brief_name, "AC");
82 strcpy(full_name, "Ahk-Ulan's castle");
83
84 BuildCave();
85
86 PutPalette(0, 0, PAL_AHKULAN_CASTLE, this);
87 NewWay(4, 9, L_WIZARD_DUNGEON5, STW_UP);
88
89 XPoint pt;
90 {
91 XRect gr(39, 8, 40, 9);
92 NewCreature(CN_DEATH_KNIGHT, &gr, GID_AHKULAN_GUARDIAN, AIF_GUARD_AREA)->xai->SetEnemyClass((CREATURE_CLASS)(CR_ALL ^ (CR_HUMAN | CR_HUMANOID)));
93 }
94
95 {
96 XRect gr(39, 10, 40, 11);
97 NewCreature(CN_DEATH_KNIGHT, &gr, GID_AHKULAN_GUARDIAN, AIF_GUARD_AREA)->xai->SetEnemyClass((CREATURE_CLASS)(CR_ALL ^ (CR_HUMAN | CR_HUMANOID)));
98 }
99
100 {
101 XRect gr(47, 8, 48, 9);
102 NewCreature(CN_DEATH_KNIGHT, &gr, GID_AHKULAN_GUARDIAN, AIF_GUARD_AREA)->xai->SetEnemyClass((CREATURE_CLASS)(CR_ALL ^ (CR_HUMAN | CR_HUMANOID)));
103 }
104
105 {
106 XRect gr(48, 8, 49, 9);
107 NewCreature(CN_DEATH_KNIGHT, &gr, GID_AHKULAN_GUARDIAN, AIF_GUARD_AREA)->xai->SetEnemyClass((CREATURE_CLASS)(CR_ALL ^ (CR_HUMAN | CR_HUMANOID)));
108 }
109
110 {
111 XRect gr(49, 8, 50, 9);
112 NewCreature(CN_DEATH_KNIGHT, &gr, GID_AHKULAN_GUARDIAN, AIF_GUARD_AREA)->xai->SetEnemyClass((CREATURE_CLASS)(CR_ALL ^ (CR_HUMAN | CR_HUMANOID)));
113 }
114
115 {
116 XRect gr(47, 10, 48, 11);
117 NewCreature(CN_DEATH_KNIGHT, &gr, GID_AHKULAN_GUARDIAN, AIF_GUARD_AREA)->xai->SetEnemyClass((CREATURE_CLASS)(CR_ALL ^ (CR_HUMAN | CR_HUMANOID)));
118 }
119
120 {
121 XRect gr(48, 10, 49, 11);
122 NewCreature(CN_DEATH_KNIGHT, &gr, GID_AHKULAN_GUARDIAN, AIF_GUARD_AREA)->xai->SetEnemyClass((CREATURE_CLASS)(CR_ALL ^ (CR_HUMAN | CR_HUMANOID)));
123 }
124
125 {
126 XRect gr(49, 10, 50, 11);
127 NewCreature(CN_DEATH_KNIGHT, &gr, GID_AHKULAN_GUARDIAN, AIF_GUARD_AREA)->xai->SetEnemyClass((CREATURE_CLASS)(CR_ALL ^ (CR_HUMAN | CR_HUMANOID)));
128 }
129
130 XRect gr(50, 9, 51, 10);
131 NewCreature(CN_AHKULAN, &gr, GID_AHKULAN_GUARDIAN, AIF_GUARD_AREA)->xai->SetEnemyClass((CREATURE_CLASS)(CR_ALL ^ (CR_HUMAN | CR_HUMANOID)));
132
133 new XAltar(43, 9, D_DEATH, this);
134 }
135
136