MCPcopy Create free account
hub / github.com/diasurgical/devilution / GetLevelMTypes

Function GetLevelMTypes

Source/monster.cpp:173–276  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

171}
172
173void GetLevelMTypes()
174{
175 int i;
176
177 // this array is merged with skeltypes down below.
178 int typelist[MAXMONSTERS];
179 int skeltypes[NUM_MTYPES];
180
181 int minl; // min level
182 int maxl; // max level
183 char mamask;
184 const int numskeltypes = 19;
185
186 int nt; // number of types
187
188#ifdef SPAWN
189 mamask = 1; // monster availability mask
190#else
191 mamask = 3; // monster availability mask
192#endif
193
194 AddMonsterType(MT_GOLEM, 2);
195 if (currlevel == 16) {
196 AddMonsterType(MT_ADVOCATE, 1);
197 AddMonsterType(MT_RBLACK, 1);
198 AddMonsterType(MT_DIABLO, 2);
199 return;
200 }
201
202 if (!setlevel) {
203 if (QuestStatus(QTYPE_BUTCH))
204 AddMonsterType(MT_CLEAVER, 2);
205 if (QuestStatus(QTYPE_GARB))
206 AddMonsterType(UniqMonst[UMT_GARBUD].mtype, 4);
207 if (QuestStatus(QTYPE_ZHAR))
208 AddMonsterType(UniqMonst[UMT_ZHAR].mtype, 4);
209 if (QuestStatus(QTYPE_BOL))
210 AddMonsterType(UniqMonst[UMT_SNOTSPIL].mtype, 4);
211 if (QuestStatus(QTYPE_VEIL))
212 AddMonsterType(UniqMonst[UMT_LACHDAN].mtype, 4);
213 if (QuestStatus(QTYPE_WARLRD))
214 AddMonsterType(UniqMonst[UMT_WARLORD].mtype, 4);
215
216 if (gbMaxPlayers != 1 && currlevel == quests[QTYPE_KING]._qlevel) {
217
218 AddMonsterType(MT_SKING, 4);
219
220 nt = 0;
221 for (i = MT_WSKELAX; i <= MT_WSKELAX + numskeltypes; i++) {
222 if (IsSkel(i)) {
223 minl = 15 * monsterdata[i].mMinDLvl / 30 + 1;
224 maxl = 15 * monsterdata[i].mMaxDLvl / 30 + 1;
225
226 if (currlevel >= minl && currlevel <= maxl) {
227 if (MonstAvailTbl[i] & mamask) {
228 skeltypes[nt++] = i;
229 }
230 }

Callers 1

LoadGameLevelFunction · 0.85

Calls 4

AddMonsterTypeFunction · 0.85
QuestStatusFunction · 0.85
IsSkelFunction · 0.85
random_Function · 0.85

Tested by

no test coverage detected