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