Blindfold removal fix
[slashemextended.git] / src / mondata.c
blob4b06358f92e21f480149df045f0f4f06f11512bb
1 /* SCCS Id: @(#)mondata.c 3.4 2003/06/02 */
2 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
3 /* NetHack may be freely redistributed. See license for details. */
5 #include "hack.h"
6 #include "eshk.h"
7 #include "epri.h"
9 /* These routines provide basic data for any type of monster. */
11 #ifdef OVLB
13 void
14 set_mon_data(mon, ptr, flag)
15 struct monst *mon;
16 struct permonst *ptr;
17 int flag;
19 mon->data = ptr;
21 if (flag == -1) return; /* "don't care" */
23 if (flag == 1)
24 mon->mintrinsics |= (ptr->mresists & MR_TYPEMASK);
25 else
26 mon->mintrinsics = (ptr->mresists & MR_TYPEMASK);
28 return;
31 #endif /* OVLB */
32 #ifdef OVL0
34 struct attack *
35 attacktype_fordmg(ptr, atyp, dtyp)
36 struct permonst *ptr;
37 int atyp, dtyp;
39 struct attack *a;
41 for (a = &ptr->mattk[0]; a < &ptr->mattk[NATTK]; a++)
42 if (a->aatyp == atyp && (dtyp == AD_ANY || a->adtyp == dtyp))
43 return a;
45 return (struct attack *)0;
48 boolean
49 attacktype(ptr, atyp)
50 struct permonst *ptr;
51 int atyp;
53 return attacktype_fordmg(ptr, atyp, AD_ANY) ? TRUE : FALSE;
56 boolean
57 canseemon(mon)
58 struct monst *mon;
60 if (mon_visible(mon)) {
61 if ((mon)->wormno) {
62 if (worm_known(mon)) return TRUE;
63 } else {
64 if (cansee(mon->mx, mon->my) || see_with_infrared(mon)) return TRUE;
68 return FALSE;
71 struct attack *
72 attdmgtype_fromattack(ptr, dtyp, atyp)
73 struct permonst *ptr;
74 int dtyp, atyp;
76 struct attack *a;
78 for (a = &ptr->mattk[0]; a < &ptr->mattk[NATTK]; a++)
79 if (a->adtyp == dtyp && a->aatyp == atyp)
80 return a;
82 return (struct attack *)0;
85 boolean
86 attackdamagetype(ptr, atyp, dtyp)
87 struct permonst *ptr;
88 int atyp, dtyp;
90 return attacktype_fordmg(ptr, atyp, dtyp) ? TRUE : FALSE;
93 /* function to check whether a monster has an actual passive attack; AD_PHYS doesn't count --Amy */
94 boolean
95 haspassive(ptr)
96 struct permonst *ptr;
98 int i;
99 for (i = 0; ; i++) {
100 if(i >= NATTK) return FALSE; /* no passive attacks */
101 if (ptr->mattk[i].aatyp == AT_NONE && ptr->mattk[i].adtyp != AD_PHYS) return TRUE;
105 #endif /* OVL0 */
106 #ifdef OVLB
108 boolean
109 poly_when_stoned(ptr)
110 struct permonst *ptr;
112 return((boolean)(is_golem(ptr) && ptr != &mons[PM_STONE_GOLEM] &&
113 !(mvitals[PM_STONE_GOLEM].mvflags & G_GENOD)));
114 /* allow G_EXTINCT */
117 boolean
118 resists_drli(mon) /* returns TRUE if monster is drain-life resistant */
119 struct monst *mon;
121 struct permonst *ptr = mon->data;
122 struct obj *wep = ((mon == &youmonst) ? 0 : MON_WEP(mon));
124 return (boolean)(is_undead(ptr) || mon->egotype_undead || is_demon(ptr) || is_were(ptr) ||
125 ptr == &mons[PM_DEATH] || is_golem(ptr) ||
126 resists_drain(mon) ||
127 (wep && wep->oartifact && defends(AD_DRLI, wep)));
130 boolean
131 resists_magm(mon) /* TRUE if monster is magic-missile resistant */
132 struct monst *mon;
134 struct permonst *ptr = mon->data;
135 struct obj *o;
137 if (FemtrapActiveMarleen && humanoid(mon->data) && is_female(mon->data) && u.marleenproperties) return TRUE;
139 /* as of 3.2.0: gray dragons, Angels, Oracle, Yeenoghu */
140 if (dmgtype(ptr, AD_MAGM) || dmgtype(ptr, AD_MCRE) || ptr == &mons[PM_BABY_GRAY_DRAGON] || ptr == &mons[PM_YOUNG_GRAY_DRAGON] || ptr == &mons[PM_YOUNG_ADULT_GRAY_DRAGON] || ptr == &mons[PM_DNETHACK_ELDER_PRIEST_TM_] ||
141 dmgtype(ptr, AD_RBRE) || dmgtype(ptr, AD_RNG)) /* Chromatic Dragon */
142 return TRUE;
143 /* check for magic resistance granted by wielded weapon */
144 o = (mon == &youmonst) ? 0 : MON_WEP(mon);
145 if (o && o->oartifact && defends(AD_MAGM, o))
146 return TRUE;
147 /* check for magic resistance granted by worn or carried items */
148 if (mon != &youmonst) {
149 o = mon->minvent;
150 for ( ; o; o = o->nobj)
151 if ((o->owornmask && objects[o->otyp].oc_oprop == ANTIMAGIC) ||
152 (o->oartifact && protects(AD_MAGM, o)))
153 return TRUE;
155 return FALSE;
158 /* TRUE if monster is resistant to light-induced blindness */
159 boolean
160 resists_blnd(mon)
161 struct monst *mon;
163 struct permonst *ptr = mon->data;
164 boolean is_you = (mon == &youmonst);
165 struct obj *o;
167 if (is_you ? (Blind || u.usleep) :
168 (mon->mblinded || !mon->mcansee || !haseyes(ptr) ||
169 /* BUG: temporary sleep sets mfrozen, but since
170 paralysis does too, we can't check it */
171 mon->msleeping))
172 return TRUE;
173 /* yellow light, Archon; !dust vortex, !cobra, !raven */
174 if (dmgtype_fromattack(ptr, AD_BLND, AT_EXPL) ||
175 dmgtype_fromattack(ptr, AD_BLND, AT_GAZE))
176 return TRUE;
177 o = is_you ? 0 : MON_WEP(mon);
178 if (o && o->oartifact && defends(AD_BLND, o))
179 return TRUE;
180 if (!is_you) {
181 o = mon->minvent;
182 for ( ; o; o = o->nobj)
183 if ((o->owornmask && objects[o->otyp].oc_oprop == BLINDED) ||
184 (o->oartifact && protects(AD_BLND, o)))
185 return TRUE;
187 return FALSE;
190 /* TRUE iff monster can be blinded by the given attack */
191 /* Note: may return TRUE when mdef is blind (e.g. new cream-pie attack) */
192 boolean
193 can_blnd(magr, mdef, aatyp, obj)
194 struct monst *magr; /* NULL == no specific aggressor */
195 struct monst *mdef;
196 uchar aatyp;
197 struct obj *obj; /* aatyp == AT_WEAP, AT_SPIT */
199 boolean is_you = (mdef == &youmonst);
200 boolean check_visor = FALSE;
201 struct obj *o;
202 const char *s;
204 /* no eyes protect against all attacks for now */
205 if (!haseyes(mdef->data))
206 return FALSE;
208 switch(aatyp) {
209 case AT_EXPL: case AT_BOOM: case AT_GAZE: case AT_MAGC:
210 case AT_BREA: /* assumed to be lightning */
211 /* light-based attacks may be cancelled or resisted */
212 if (magr && magr->mcan)
213 return FALSE;
214 return !resists_blnd(mdef);
216 case AT_WEAP: case AT_SPIT: case AT_NONE:
217 /* an object is used (thrown/spit/other) */
218 if (obj && (obj->otyp == CREAM_PIE)) {
219 if (is_you && Blindfolded)
220 return FALSE;
221 } else if (obj && (obj->otyp == BLINDING_VENOM)) {
222 /* all ublindf, including LENSES, protect, cream-pies too */
223 if (is_you && (ublindf || u.ucreamed))
224 return FALSE;
225 check_visor = TRUE;
226 } else if (obj && (obj->otyp == POT_BLINDNESS)) {
227 return TRUE; /* no defense */
228 } else
229 return FALSE; /* other objects cannot cause blindness yet */
230 if ((magr == &youmonst) && u.uswallow)
231 return FALSE; /* can't affect eyes while inside monster */
232 break;
234 case AT_ENGL:
235 if (is_you && (Blindfolded || u.usleep || u.ucreamed))
236 return FALSE;
237 if (!is_you && mdef->msleeping)
238 return FALSE;
239 break;
241 case AT_CLAW:
242 /* e.g. raven: all ublindf, including LENSES, protect */
243 if (is_you && ublindf)
244 return FALSE;
245 if ((magr == &youmonst) && u.uswallow)
246 return FALSE; /* can't affect eyes while inside monster */
247 check_visor = TRUE;
248 break;
250 case AT_TUCH: case AT_STNG:
251 /* some physical, blind-inducing attacks can be cancelled */
252 if (magr && magr->mcan)
253 return FALSE;
254 break;
256 default:
257 break;
260 /* check if wearing a visor (only checked if visor might help) */
261 if (check_visor) {
262 o = (mdef == &youmonst) ? invent : mdef->minvent;
263 for ( ; o; o = o->nobj)
264 if ((o->owornmask & W_ARMH) && (itemhasappearance(o, APP_VISORED_HELMET) || itemhasappearance(o, APP_ORANGE_VISORED_HELMET) || itemhasappearance(o, APP_TWISTED_VISOR_HELMET)) )
265 return FALSE;
268 if (RngeTrueSight && (mdef == &youmonst)) return FALSE;
270 return TRUE;
273 #endif /* OVLB */
274 #ifdef OVL0
276 boolean
277 ranged_attk(ptr) /* returns TRUE if monster can attack at range */
278 struct permonst *ptr;
280 register int i, atyp;
281 long atk_mask = (1L << AT_BREA) | (1L << AT_SPIT) | (1L << AT_GAZE) | (1L << AT_BEAM);
283 /* was: (attacktype(ptr, AT_BREA) || attacktype(ptr, AT_WEAP) ||
284 attacktype(ptr, AT_SPIT) || attacktype(ptr, AT_GAZE) ||
285 attacktype(ptr, AT_MAGC));
286 but that's too slow -dlc
288 for(i = 0; i < NATTK; i++) {
289 atyp = ptr->mattk[i].aatyp;
290 if (atyp >= AT_WEAP) return TRUE;
291 if (atyp == AT_HUGS) return TRUE;
292 /* assert(atyp < 32); */
293 if ((atk_mask & (1L << atyp)) != 0L) return TRUE;
296 return FALSE;
299 /* true iff the type of monster pass through iron bars */
300 boolean
301 passes_bars(mptr)
302 struct permonst *mptr;
304 return (boolean) (passes_walls(mptr) || amorphous(mptr) ||
305 is_whirly(mptr) || verysmall(mptr) ||
306 (slithy(mptr) && !bigmonst(mptr)));
309 boolean
310 is_infrastructure_monster(mtmp)
311 struct monst *mtmp;
313 if (!mtmp) return FALSE; /* shouldn't happen */
315 if (mtmp->isshk || mtmp->isgd || mtmp->ispriest) return TRUE;
317 if (mtmp->data == &mons[PM_CROUPIER]) return TRUE;
318 if (mtmp->data == &mons[PM_MASTER_CROUPIER]) return TRUE;
319 if (mtmp->data == &mons[PM_ELITE_CROUPIER]) return TRUE;
320 if (mtmp->data == &mons[PM_EXPERIENCED_CROUPIER]) return TRUE;
321 if (mtmp->data == &mons[PM_EXCEPTIONAL_CROUPIER]) return TRUE;
323 if (mtmp->data == &mons[PM_SHOPKEEPER]) return TRUE;
324 if (mtmp->data == &mons[PM_MASTER_SHOPKEEPER]) return TRUE;
325 if (mtmp->data == &mons[PM_ELITE_SHOPKEEPER]) return TRUE;
326 if (mtmp->data == &mons[PM_EXPERIENCED_SHOPKEEPER]) return TRUE;
327 if (mtmp->data == &mons[PM_EXCEPTIONAL_SHOPKEEPER]) return TRUE;
329 if (mtmp->data == &mons[PM_GUARD]) return TRUE;
330 if (mtmp->data == &mons[PM_MASTER_GUARD]) return TRUE;
331 if (mtmp->data == &mons[PM_ELITE_GUARD]) return TRUE;
332 if (mtmp->data == &mons[PM_EXPERIENCED_GUARD]) return TRUE;
333 if (mtmp->data == &mons[PM_EXCEPTIONAL_GUARD]) return TRUE;
335 if (mtmp->data == &mons[PM_ALIGNED_PRIEST]) return TRUE;
336 if (mtmp->data == &mons[PM_MASTER_PRIEST]) return TRUE;
337 if (mtmp->data == &mons[PM_EXPERIENCED_PRIEST]) return TRUE;
338 if (mtmp->data == &mons[PM_EXCEPTIONAL_PRIEST]) return TRUE;
339 if (mtmp->data == &mons[PM_HIGH_PRIEST]) return TRUE;
340 if (mtmp->data == &mons[PM_ELITE_PRIEST]) return TRUE;
341 if (mtmp->data == &mons[PM_DNETHACK_ELDER_PRIEST_TM_]) return TRUE;
343 return FALSE;
346 #endif /* OVL0 */
347 #ifdef OVL1
349 boolean
350 can_track(ptr) /* returns TRUE if monster can track well */
351 register struct permonst *ptr;
353 if (uwep && uwep->oartifact == ART_EXCALIBUR)
354 return TRUE;
355 else
356 return((boolean)haseyes(ptr));
359 #endif /* OVL1 */
360 #ifdef OVLB
362 boolean
363 sliparm(ptr) /* creature will slide out of armor */
364 register struct permonst *ptr;
366 return((boolean)(is_whirly(ptr) || ptr->msize <= MZ_SMALL ||
367 noncorporeal(ptr)));
370 boolean
371 breakarm(ptr) /* creature will break out of armor */
372 register struct permonst *ptr;
374 return ((bigmonst(ptr) /*|| (ptr->msize > MZ_SMALL && !humanoid(ptr))*/ ||
375 /* special cases of humanoids that cannot wear body armor */
376 ptr == &mons[PM_MARILITH] || ptr == &mons[PM_WINGED_GARGOYLE])
377 && !sliparm(ptr));
379 #endif /* OVLB */
380 #ifdef OVL1
382 boolean
383 sticks(ptr) /* creature sticks other creatures it hits */
384 register struct permonst *ptr;
386 if ((ptr == youmonst.data) && uarmf && uarmf->oartifact == ART_KATRIN_S_PARALYSIS) return 1;
387 /* I guess this can very rarely cause bugs if a monster is the same species as you... --Amy */
389 return((boolean)(dmgtype(ptr,AD_STCK) || dmgtype(ptr,AD_WRAP) ||
390 attacktype(ptr,AT_HUGS)));
393 /* can the monster use wands, hug attacks etc. from infinitely far away? --Amy */
394 boolean
395 elongation_monster(ptr)
396 register struct permonst *ptr;
398 if (ptr == &mons[PM_UNITDEAD_JOKER]) return TRUE;
399 if (ptr == &mons[PM_SHOTGUN_SNIPER]) return TRUE;
400 if (ptr == &mons[PM_ELONGATED_KURWA]) return TRUE;
401 if (ptr == &mons[PM_LONG_DISTANCE_OWLBEAR]) return TRUE;
402 if (ptr == &mons[PM_LONGRANGE_PRICK]) return TRUE;
403 if (ptr == &mons[PM_FLUIDATOR_EGERRE]) return TRUE;
404 if (ptr == &mons[PM_FLUIDATOR_TRAH]) return TRUE;
405 if (ptr == &mons[PM_KOREAN_ENERGY_FIELD]) return TRUE;
407 return FALSE;
410 /* is the monster a minotaur (immune to Elbereth)? --Amy */
411 boolean
412 is_minotaur(ptr)
413 register struct permonst *ptr;
415 if (ptr == &mons[PM_MINOTAUR]) return TRUE;
416 if (ptr == &mons[PM_LOWERCASE_MINOTAUR]) return TRUE;
417 if (ptr == &mons[PM_MINOTAUR_MAGICIAN]) return TRUE;
418 if (ptr == &mons[PM_MINOTAUR_BOXER]) return TRUE;
419 if (ptr == &mons[PM_MINOCHEATER]) return TRUE;
420 if (ptr == &mons[PM_MINOTAUR_BALLERINA]) return TRUE;
421 if (ptr == &mons[PM_MINOTARD]) return TRUE;
422 if (ptr == &mons[PM_MINOTAUR_VORE]) return TRUE;
423 if (ptr == &mons[PM_ERR_AXE_MINOTAUR]) return TRUE;
424 if (ptr == &mons[PM_ROCKTAUR]) return TRUE;
425 if (ptr == &mons[PM_PSEUDO_PETTY_MINOTAUR]) return TRUE;
426 if (ptr == &mons[PM_SPECHOTAUR]) return TRUE;
427 if (ptr == &mons[PM_MINOTAUR_LICH]) return TRUE;
428 if (ptr == &mons[PM_MINOTAUR_MIMIC]) return TRUE;
429 if (ptr == &mons[PM_CHASING_MINOTAUR]) return TRUE;
430 if (ptr == &mons[PM_FAT_MINOTAUR]) return TRUE;
431 if (ptr == &mons[PM_CHEATING_MINOTAUR]) return TRUE;
432 if (ptr == &mons[PM_EVIL_PATCH_MINOTAUR]) return TRUE;
433 if (ptr == &mons[PM_DUMB_MINOTAUR]) return TRUE;
434 if (ptr == &mons[PM_GIGOTAUR]) return TRUE;
435 if (ptr == &mons[PM_MINOTAUR_PRIESTESS]) return TRUE;
436 if (ptr == &mons[PM_MINOTAUR_MATRON]) return TRUE;
437 if (ptr == &mons[PM_ELDER_MINOTAUR]) return TRUE;
438 if (ptr == &mons[PM_PETTY_ELDER_MINOTAUR]) return TRUE;
439 if (ptr == &mons[PM_STEEL_MINOTAUR]) return TRUE;
440 if (ptr == &mons[PM_ANCIENT_MINOTAUR]) return TRUE;
441 if (ptr == &mons[PM_MINOTAUR_GRANDMASTER]) return TRUE;
442 if (ptr == &mons[PM_MINOTAUR_ZOMBIE]) return TRUE;
443 if (ptr == &mons[PM_ASTERIOS]) return TRUE;
444 if (ptr == &mons[PM_CHIHYU]) return TRUE;
445 if (ptr == &mons[PM_MOLOCH]) return TRUE;
446 if (ptr == &mons[PM_TAURUSCROTTA]) return TRUE;
447 if (ptr == &mons[PM_GRIDOTAUR]) return TRUE;
448 if (ptr == &mons[PM_MAULOTAUR]) return TRUE;
449 if (ptr == &mons[PM_XORNITAUR]) return TRUE;
450 if (ptr == &mons[PM_FISHTAUR]) return TRUE;
451 if (ptr == &mons[PM_ROARING_FISHTAUR]) return TRUE;
452 if (ptr == &mons[PM_SAVEUP_MINOTAUR]) return TRUE;
453 if (ptr == &mons[PM_MIMOTAUR]) return TRUE;
454 if (ptr == &mons[PM_MINOTAUR_NPC]) return TRUE;
456 return FALSE;
460 /* is the monster from the arabella room (doesn't drown in water or lava while in such a room)? --Amy */
461 boolean
462 is_arabellamonster(ptr)
463 register struct permonst *ptr;
465 if (ptr->mlet == S_WORM_TAIL) return TRUE;
467 if (ptr == &mons[PM_SUPERCHEST]) return TRUE;
468 if (ptr == &mons[PM_ULTRACHEST]) return TRUE;
469 if (ptr == &mons[PM_TELEPORT_TRAP]) return TRUE;
470 if (ptr == &mons[PM_ULTRAYOUSEE]) return TRUE;
471 if (ptr == &mons[PM_HIGHSCORE_DUMMY]) return TRUE;
472 if (ptr == &mons[PM_DEEP_ROCK]) return TRUE;
473 if (ptr == &mons[PM_SUPERDEEP_TYPE]) return TRUE;
474 if (ptr == &mons[PM_ENEMY_FROM_LEVEL___]) return TRUE;
475 if (ptr == &mons[PM_SUPER_STATUE]) return TRUE;
476 if (ptr == &mons[PM_ELTRA_STATUE]) return TRUE;
477 if (ptr == &mons[PM_CURSED_CALLED_BANDIT]) return TRUE;
478 if (ptr == &mons[PM_HYPER_CAVE_BEAR]) return TRUE;
479 if (ptr == &mons[PM_PERCENTS_____NIX]) return TRUE;
480 if (ptr == &mons[PM_NIX]) return TRUE;
481 if (ptr == &mons[PM_FAKE_CHARACTER]) return TRUE;
482 if (ptr == &mons[PM_CHARACTER_EVP]) return TRUE;
483 if (ptr == &mons[PM_SPACEWARS_FIGHTER]) return TRUE;
484 if (ptr == &mons[PM_UNDEAD_SPACEWARS_FIGHTER]) return TRUE;
485 if (ptr == &mons[PM_CAR_DRIVING_SUPERTHIEF]) return TRUE;
486 if (ptr == &mons[PM_SUPERJEDI]) return TRUE;
487 if (ptr == &mons[PM_DIVISION_THIEF]) return TRUE;
488 if (ptr == &mons[PM_DIVISION_JEDI]) return TRUE;
489 if (ptr == &mons[PM_CRITICALLY_INJURED_THIEF]) return TRUE;
490 if (ptr == &mons[PM_CRITICALLY_INJURED_JEDI]) return TRUE;
491 if (ptr == &mons[PM_HUGE_OGRE_THIEF]) return TRUE;
492 if (ptr == &mons[PM_GUNNHILD_S_GENERAL_STORE]) return TRUE;
493 if (ptr == &mons[PM_SUPERTHIEF]) return TRUE;
494 if (ptr == &mons[PM_DIVISION_FOURTH_BOSS]) return TRUE;
495 if (ptr == &mons[PM_XXXXXXXXXXXXXXXXXXXX]) return TRUE;
496 if (ptr == &mons[PM_DOUBLE_AURORA_BOMBER]) return TRUE;
497 if (ptr == &mons[PM_EVC_UFO]) return TRUE;
498 if (ptr == &mons[PM_SLICK_RUEA]) return TRUE;
499 if (ptr == &mons[PM_SHEER_SPACER]) return TRUE;
500 if (ptr == &mons[PM_DIVISION_FIEND]) return TRUE;
501 if (ptr == &mons[PM_CRITICALLY_INJURED_PERCENTS]) return TRUE;
502 if (ptr == &mons[PM_OGRE_PERCENTS]) return TRUE;
503 if (ptr == &mons[PM____BIT_SUBSYSTEM]) return TRUE;
504 if (ptr == &mons[PM_YOUR_MAP_SHOWS_]) return TRUE;
505 if (ptr == &mons[PM_HEAVILY_INJURED]) return TRUE;
506 if (ptr == &mons[PM_YOU_SEE_]) return TRUE;
507 if (ptr == &mons[PM_CRITICALLY_INJURED]) return TRUE;
508 if (ptr == &mons[PM_IDE_BY__]) return TRUE;
509 if (ptr == &mons[PM_VAILABLE__EXIT_ANYWAY_]) return TRUE;
510 if (ptr == &mons[PM_MAND_PENDING__MAGIC_SPELL___]) return TRUE;
511 if (ptr == &mons[PM_E_PALE_WRAITH_WITH_A_LIGHTNING_STROKE_]) return TRUE;
512 if (ptr == &mons[PM_ARABELLA_SHOE]) return TRUE;
513 if (ptr == &mons[PM_ANASTASIA_SHOE]) return TRUE;
514 if (ptr == &mons[PM_HENRIETTA_SHOE]) return TRUE;
515 if (ptr == &mons[PM_KATRIN_SHOE]) return TRUE;
516 if (ptr == &mons[PM_JANA_SHOE]) return TRUE;
518 return FALSE;
522 /* do ranged weapons pass through this monster every time? --Amy */
523 boolean
524 magicpassesthrough(mtmp)
525 struct monst *mtmp;
527 if (mtmp->data == &mons[PM_ARABELLA_SHOE]) return TRUE;
528 if (mtmp->data == &mons[PM_ANASTASIA_SHOE]) return TRUE;
529 if (mtmp->data == &mons[PM_HENRIETTA_SHOE]) return TRUE;
530 if (mtmp->data == &mons[PM_KATRIN_SHOE]) return TRUE;
531 if (mtmp->data == &mons[PM_JANA_SHOE]) return TRUE;
533 return FALSE;
536 /* can the monster swat projectiles away? --Amy */
537 boolean
538 swatting_monster(ptr)
539 register struct permonst *ptr;
541 if (ptr == &mons[PM_UNATTACKABLE_HUNT_WOLF]) return TRUE;
542 if (ptr == &mons[PM_UNATTACKABLE_RABID_WOLF]) return TRUE;
543 if (ptr == &mons[PM_URWOLF]) return TRUE;
544 if (ptr == &mons[PM_GRRRRR_URWOLF]) return TRUE;
545 if (ptr == &mons[PM_DNETHACK_ELDER_PRIEST_TM_]) return TRUE;
546 if (ptr == &mons[PM_ATHLEANNIE]) return TRUE;
547 if (ptr == &mons[PM_AMMO_TURNER]) return TRUE;
548 if (ptr == &mons[PM_FLUIDATOR_ANDER]) return TRUE;
549 if (ptr == &mons[PM_FART_ATHLETE]) return TRUE;
550 if (ptr == &mons[PM_TOWELBEAR]) return TRUE;
551 if (ptr == &mons[PM_LIGHTSABER_ART_JEDI]) return TRUE;
552 if (ptr == &mons[PM_MR__CONCLUSIO]) return TRUE;
553 if (ptr == &mons[PM_YOUR_GAME_ENDS_NOW]) return TRUE;
554 if (ptr == &mons[PM_ELITE_GENDAME]) return TRUE;
555 if (ptr == &mons[PM_LILAC_FEMMY]) return TRUE;
556 if (ptr == &mons[PM_LOOMING_SVETTE]) return TRUE;
557 if (ptr == &mons[PM_OBSCURING_FLIER]) return TRUE;
559 return FALSE;
562 /* can the monster use ECM? --Amy */
563 boolean
564 ecm_monster(ptr)
565 register struct permonst *ptr;
567 if (ptr == &mons[PM_GREEN]) return TRUE;
568 if (ptr == &mons[PM_JUNK_BOAT]) return TRUE;
569 if (ptr == &mons[PM_LAND_JUNK_BOAT]) return TRUE;
570 if (ptr == &mons[PM_ECM_ARCHER]) return TRUE;
571 if (ptr == &mons[PM_ECM_NERVE_HEAD]) return TRUE;
572 if (ptr == &mons[PM_HYPER_CAVE_BEAR]) return TRUE;
574 return FALSE;
577 /* can the monster still move when you stopped time? --Amy */
578 boolean
579 immune_timestop(ptr)
580 register struct permonst *ptr;
582 if (ptr == &mons[PM_DNETHACK_ELDER_PRIEST_TM_]) return TRUE;
583 if (ptr == &mons[PM_ARIANE__LADY_OF_THE_ELEMENTS]) return TRUE;
584 if (ptr == &mons[PM_TIKSRVZLLAT]) return TRUE;
585 if (ptr == &mons[PM_MIKRAANESIS]) return TRUE;
586 if (ptr == &mons[PM_SVEN]) return TRUE;
587 if (ptr == &mons[PM_GRANDMASTER_SVEN]) return TRUE;
588 if (ptr == &mons[PM_WORLD_PWNZOR]) return TRUE;
589 if (dmgtype(ptr, AD_TIME)) return TRUE;
591 return FALSE;
594 /* number of horns this type of monster has on its head */
596 num_horns(ptr)
597 struct permonst *ptr;
599 switch (monsndx(ptr)) {
600 case PM_LAMB:
601 case PM_KNAPSACK_LAMB:
602 case PM_SHEEP:
603 case PM_THEME_SHEEP:
604 case PM_KNAPSACK_SHEEP:
605 case PM_GOAT:
606 case PM_KNAPSACK_GOAT:
607 case PM_COW:
608 case PM_THEME_COW:
609 case PM_HOLY_COW:
610 case PM_ARMORED_COW:
611 case PM_RABID_COW:
612 case PM_KNAPSACK_COW:
613 case PM_BULL:
614 case PM_RABID_BULL:
615 case PM_KNAPSACK_BULL:
616 case PM_HORNED_DEVIL: /* ? "more than one" */
617 case PM_NASTY_HORNED_DEVIL:
618 case PM_HORNED_REAPER:
619 case PM_MINOTAUR:
620 case PM_ASMODEUS:
621 case PM_BALROG:
622 case PM_BLAROG:
623 case PM_ANCIPITAL:
624 case PM_GIANT_HORNED_TOAD:
625 return 2;
626 case PM_WHITE_UNICORN:
627 case PM_WINGED_WHITE_UNICORN:
628 case PM_WINGED_GRAY_UNICORN:
629 case PM_WINGED_BLACK_UNICORN:
630 case PM_PROTECTED_WHITE_UNICORN:
631 case PM_PROTECTED_GRAY_UNICORN:
632 case PM_PROTECTED_BLACK_UNICORN:
633 case PM_GRAY_UNICORN:
634 case PM_BLACK_UNICORN:
635 case PM_REGULAR_GIRL_SNEAKER:
636 case PM_EXCEPTIONAL_GIRL_SNEAKER:
637 case PM_ELITE_GIRL_SNEAKER:
638 case PM_SMOKY_QUARTZ_UNICORN:
639 case PM_JET_UNICORN:
640 case PM_PEARL_UNICORN:
641 case PM_ICEFLAME_UNICORN:
642 case PM_CURICORN:
643 case PM_JAPICORN:
644 case PM_BLASTICORN:
645 case PM_OFFWHITE_UNICORN:
646 case PM_PALE_GRAY_UNICORN:
647 case PM_BLACKISH_UNICORN:
648 case PM_BUTTICORN:
649 case PM_SQUEAKICORN:
650 case PM_FARTICORN:
651 case PM_PICK_HORN:
652 case PM_DIG_HORN:
653 case PM_PHASE_HORN:
654 case PM_MATURE_UNICORN:
655 case PM_BUBBLY_UNICORN:
656 case PM_REPLICA_UNICORN:
657 case PM_ALIEN_UNICORN:
658 case PM_SLATE_UNICORN:
659 case PM_SELF_FLAGELLATING_UNICORN:
660 case PM_ARCANE_LIGHT_UNICORN:
661 case PM_ARCANE_MEDIUM_UNICORN:
662 case PM_ARCANE_EVIL_UNICORN:
663 case PM_WIPED_UNICORN:
664 case PM_GRAVY_UNICORN:
665 case PM_COLLUDE_UNICORN:
666 case PM_SKY_UNICORN:
667 case PM_PLAYER_UNICORN:
668 case PM_ILLUSION_HORN:
669 case PM_BLOODY_HORN:
670 case PM_DEVIOUS_HORN:
671 case PM_PROSE_UNICORN:
672 case PM_UNICORN_ZOMBIE:
673 case PM_CEMENT_UNICORN:
674 case PM_COCOON_ANTIHERO:
675 case PM_EVIL_SAVIOR:
676 case PM_BADFICINA:
677 case PM_TAR_UNICORN:
678 case PM_SLAU_UNICORN:
679 case PM_LEYM_UNICORN:
680 case PM_STED_UNICORN:
681 case PM_BEGIN_UNICORN:
682 case PM_WEIT_UNICORN:
683 case PM_DORK_UNICORN:
684 case PM_ETHER_UNICORN:
685 case PM_TITAN_UNICORN:
686 case PM_ALLA_UNICORN:
687 case PM_WHITE_UNICORN_FOAL:
688 case PM_GRAY_UNICORN_FOAL:
689 case PM_BLACK_UNICORN_FOAL:
690 case PM_PURE_WHITE_UNICORN:
691 case PM_HANDSOME_GRAY_UNICORN:
692 case PM_PORTER_BLACK_UNICORN:
693 case PM_PURPLE_UNICORN:
694 case PM_LAST_UNICORN:
695 case PM_PINK_UNICORN:
696 case PM_ORANGE_UNICORN:
697 case PM_CYAN_UNICORN:
698 case PM_BROWN_UNICORN:
699 case PM_RED_UNICORN:
700 case PM_YELLOW_UNICORN:
701 case PM_GREEN_UNICORN:
702 case PM_ULTRAVIOLET_UNICORN:
703 case PM_XRAY_UNICORN:
704 case PM_SPOTTED_UNICORN:
705 case PM_LESSER_SPOTTED_UNICORN:
706 case PM_POLECORN:
707 case PM_HUGE_POLECORN:
708 case PM_GOLDEN_UNICORN:
709 case PM_DESATURATED_UNICORN:
710 case PM_DULL_UNICORN:
711 case PM_POWERLESS_UNICORN:
712 case PM_UNICORN_SKELETON:
713 case PM_NIGHTMARE_UNICORN:
714 case PM_UNICORN_OF_AMBER:
715 case PM_RAINBOW_UNICORN:
716 case PM_BIG_PURPLE_UNICORN:
717 case PM_GOOD_BLUE_UNICORN:
718 case PM_FADING_GRAY_UNICORN:
719 case PM_IMPENETRABLE_BLACK_UNICORN:
720 case PM_BIG_WHITE_UNICORN:
721 case PM_BIG_GRAY_UNICORN:
722 case PM_BIG_BLACK_UNICORN:
723 case PM_PETTY_BIG_WHITE_UNICORN:
724 case PM_PETTY_BIG_GRAY_UNICORN:
725 case PM_PETTY_BIG_BLACK_UNICORN:
726 case PM_UNDEAD_UNICORN:
727 case PM_DISGUISED_UNDEAD_UNICORN:
728 case PM_GREAT_WHITE_UNICORN:
729 case PM_GREAT_GRAY_UNICORN:
730 case PM_GREAT_BLACK_UNICORN:
731 case PM_SUPERPOWERED_WHITE_UNICORN:
732 case PM_SUPERPOWERED_GRAY_UNICORN:
733 case PM_SUPERPOWERED_BLACK_UNICORN:
734 case PM_REAR_WHITE_UNICORN:
735 case PM_REAR_GRAY_UNICORN:
736 case PM_REAR_BLACK_UNICORN:
737 case PM_BEHIDE_WHITE_UNICORN:
738 case PM_BEHIDE_GRAY_UNICORN:
739 case PM_BEHIDE_BLACK_UNICORN:
740 case PM_KI_RIN:
741 case PM_BEIGE_UNICORN:
742 case PM_BLACK_MAGICORN:
743 case PM_GRAY_MAGICORN:
744 case PM_WHITE_MAGICORN:
745 case PM_CONCRETE_UNICORN:
746 case PM_ANTHRAZITE_UNICORN:
747 case PM_HORNED_DEMON:
748 case PM_RHYHORN:
749 case PM_BLACKHORN:
750 case PM_RHYDON:
751 case PM_FROST_CHARGER:
752 case PM_RHYPERIOR:
753 case PM_OBSIDIAN_LORD:
754 case PM_HORN_MONSTER:
755 case PM_MUD_RUNNER:
756 case PM_SQUIRRELHORN:
757 case PM_HORN_HORSE:
758 return 1;
759 default:
760 break;
762 return 0;
765 struct attack *
766 dmgtype_fromattack(ptr, dtyp, atyp)
767 struct permonst *ptr;
768 int dtyp, atyp;
770 struct attack *a;
772 for (a = &ptr->mattk[0]; a < &ptr->mattk[NATTK]; a++)
773 if (a->adtyp == dtyp && (atyp == AT_ANY || a->aatyp == atyp))
774 return a;
776 return (struct attack *)0;
779 boolean
780 dmgtype(ptr, dtyp)
781 struct permonst *ptr;
782 int dtyp;
784 return dmgtype_fromattack(ptr, dtyp, AT_ANY) ? TRUE : FALSE;
787 /* returns the maximum damage a defender can do to the attacker via
788 * a passive defense */
790 max_passive_dmg(mdef, magr)
791 register struct monst *mdef, *magr;
793 int i, dmg = 0;
794 uchar adtyp;
796 for(i = 0; i < NATTK; i++)
797 if(mdef->data->mattk[i].aatyp == AT_NONE || mdef->data->mattk[i].aatyp == AT_RATH ||
798 mdef->data->mattk[i].aatyp == AT_BOOM) {
799 adtyp = mdef->data->mattk[i].adtyp;
800 if ((adtyp == AD_ACID && !resists_acid(magr)) ||
801 (adtyp == AD_COLD && !resists_cold(magr)) ||
802 (adtyp == AD_FIRE && !resists_fire(magr)) ||
803 (adtyp == AD_ELEC && !resists_elec(magr)) ||
804 /* prevent pets from killing themselves on those karmic mold's passive attacks --Amy */
805 (adtyp != AD_ACID && adtyp != AD_COLD && adtyp != AD_FIRE && adtyp != AD_ELEC) ) {
806 dmg = mdef->data->mattk[i].damn;
807 if(!dmg) dmg = mdef->data->mlevel+1;
808 dmg *= mdef->data->mattk[i].damd;
810 /* buffer --Amy */
811 dmg += magr->m_lev;
812 } else dmg = 0;
814 return dmg;
816 return 0;
819 #endif /* OVL1 */
820 #ifdef OVL0
823 monsndx(ptr) /* return an index into the mons array */
824 struct permonst *ptr;
826 register int i;
828 if (ptr == &upermonst) return PM_PLAYERMON;
830 i = (int)(ptr - &mons[0]);
832 if ((i < LOW_PM || i >= NUMMONS) && !Race_if(PM_MISSINGNO) && !u.ughmemory ) {
834 if (i == PM_PLAYERMON) {
836 impossible("monsndx() called with -1 ptr; making PM_HUMAN instead");
837 return PM_HUMAN;
841 /* ought to switch this to use `fmt_ptr' */
842 panic("monsndx - could not index monster (%d)",
844 return NON_PM; /* will not get here */
847 return(i);
850 #endif /* OVL0 */
851 #ifdef OVL1
855 name_to_mon(in_str)
856 const char *in_str;
858 /* Be careful. We must check the entire string in case it was
859 * something such as "ettin zombie corpse". The calling routine
860 * doesn't know about the "corpse" until the monster name has
861 * already been taken off the front, so we have to be able to
862 * read the name with extraneous stuff such as "corpse" stuck on
863 * the end.
864 * This causes a problem for names which prefix other names such
865 * as "ettin" on "ettin zombie". In this case we want the _longest_
866 * name which exists.
867 * This also permits plurals created by adding suffixes such as 's'
868 * or 'es'. Other plurals must still be handled explicitly.
870 register int i;
871 register int mntmp = NON_PM;
872 register char *s, *str, *term;
873 char buf[BUFSZ];
874 int len, slen;
876 str = strcpy(buf, in_str);
878 if (!strncmp(str, "a ", 2)) str += 2;
879 else if (!strncmp(str, "an ", 3)) str += 3;
881 slen = strlen(str);
882 term = str + slen;
884 if ((s = strstri(str, "vortices")) != 0)
885 strcpy(s+4, "ex");
886 /* be careful with "ies"; "priest", "zombies" */
887 else if (slen > 3 && !strcmpi(term-3, "ies") &&
888 (slen < 7 || strcmpi(term-7, "zombies")))
889 strcpy(term-3, "y");
890 /* luckily no monster names end in fe or ve with ves plurals */
891 else if (slen > 3 && !strcmpi(term-3, "ves"))
892 strcpy(term-3, "f");
894 slen = strlen(str); /* length possibly needs recomputing */
897 static const struct alt_spl { const char* name; int pm_val; }
898 names[] = {
899 /* Alternate spellings */
900 { "grey dragon", PM_GRAY_DRAGON },
901 { "baby grey dragon", PM_BABY_GRAY_DRAGON },
902 { "grey unicorn", PM_GRAY_UNICORN },
903 { "grey ooze", PM_GRAY_OOZE },
904 { "gray-elf", PM_GREY_ELF },
905 { "mindflayer", PM_MIND_FLAYER },
906 { "master mindflayer", PM_MASTER_MIND_FLAYER },
907 /* Hyphenated names */
908 { "ki rin", PM_KI_RIN },
909 { "uruk hai", PM_URUK_HAI },
910 { "orc captain", PM_ORC_CAPTAIN },
911 { "woodland elf", PM_WOODLAND_ELF },
912 { "green elf", PM_GREEN_ELF },
913 { "grey elf", PM_GREY_ELF },
914 { "gray elf", PM_GREY_ELF },
915 { "elf lord", PM_ELF_LORD },
916 #if 0 /* OBSOLETE */
917 { "high elf", PM_HIGH_ELF },
918 #endif
919 { "olog hai", PM_OLOG_HAI },
920 { "arch lich", PM_ARCH_LICH },
921 /* Some irregular plurals */
922 { "incubi", PM_INCUBUS },
923 { "succubi", PM_SUCCUBUS },
924 { "violet fungi", PM_VIOLET_FUNGUS },
925 { "homunculi", PM_HOMUNCULUS },
926 { "baluchitheria", PM_BALUCHITHERIUM },
927 { "lurkers above", PM_LURKER_ABOVE },
928 { "cavemen", PM_CAVEMAN },
929 { "cavewomen", PM_CAVEWOMAN },
930 #ifndef ZOUTHERN
931 /* { "zruties", PM_ZRUTY },*/
932 #endif
933 { "djinn", PM_DJINNI },
934 { "mumakil", PM_MUMAK },
935 { "erinyes", PM_ERINYS },
936 { "giant lice", PM_GIANT_LOUSE }, /* RJ */
937 /* falsely caught by -ves check above */
938 { "master of thief", PM_MASTER_OF_THIEVES },
939 /* end of list */
940 { 0, 0 }
942 register const struct alt_spl *namep;
944 for (namep = names; namep->name; namep++)
945 if (!strncmpi(str, namep->name, (int)strlen(namep->name)))
946 return namep->pm_val;
949 for (len = 0, i = LOW_PM; i < NUMMONS; i++) {
950 register int m_i_len = strlen(mons[i].mname);
951 if (m_i_len > len && !strncmpi(mons[i].mname, str, m_i_len)) {
952 if (m_i_len == slen) return i; /* exact match */
953 else if (slen > m_i_len &&
954 (str[m_i_len] == ' ' ||
955 !strcmpi(&str[m_i_len], "s") ||
956 !strncmpi(&str[m_i_len], "s ", 2) ||
957 !strcmpi(&str[m_i_len], "'") ||
958 !strncmpi(&str[m_i_len], "' ", 2) ||
959 !strcmpi(&str[m_i_len], "'s") ||
960 !strncmpi(&str[m_i_len], "'s ", 3) ||
961 !strcmpi(&str[m_i_len], "es") ||
962 !strncmpi(&str[m_i_len], "es ", 3))) {
963 mntmp = i;
964 len = m_i_len;
969 if (mntmp == NON_PM) mntmp = title_to_mon(str, (int *)0, (int *)0);
970 return mntmp;
973 #endif /* OVL1 */
974 #ifdef OVL2
976 /* returns 3 values (0=male, 1=female, 2=none) */
978 gender(mtmp)
979 register struct monst *mtmp;
981 if (is_neuter(mtmp->data)) return 2;
982 return mtmp->female;
985 /* Like gender(), but lower animals and such are still "it". */
986 /* This is the one we want to use when printing messages. */
988 pronoun_gender(mtmp)
989 register struct monst *mtmp;
991 if (!mtmp->isshk && (is_neuter(mtmp->data) || !canspotmon(mtmp))) return 2;
992 return (humanoid(mtmp->data) || (mtmp->data->geno & G_UNIQ) ||
993 type_is_pname(mtmp->data)) ? (int)mtmp->female : 2;
996 #endif /* OVL2 */
997 #ifdef OVLB
999 /* used for nearby monsters when you go to another level */
1000 boolean
1001 levl_follower(mtmp)
1002 struct monst *mtmp;
1004 /* monsters with the Amulet--even pets--won't follow across levels */
1005 if (mon_has_amulet(mtmp)) return FALSE;
1007 /* some monsters will follow even while intending to flee from you */
1008 if (mtmp->mtame || mtmp->iswiz || is_fshk(mtmp)) return TRUE;
1010 /* stalking types follow, but won't when fleeing unless you hold
1011 the Amulet */
1012 return (boolean)( ((mtmp->data->mflags2 & M2_STALK) || (!rn2(20) && !is_nonmoving(mtmp->data) && mtmp->data->msound != MS_LEADER) && !mtmp->isshk && !mtmp->ispriest) &&
1013 (!mtmp->mflee || (u.uhave.amulet && !u.freeplaymode))); /* non-stalking monsters occasionally follow too --Amy */
1016 static const int grownups[][2] = {
1017 {PM_MOSQUITO, PM_GIANT_MOSQUITO},
1018 {PM_LITTLE_DOG, PM_DOG}, {PM_DOG, PM_LARGE_DOG},
1019 {PM_LITTLE_GREEN_DOG, PM_GREEN_DOG}, {PM_GREEN_DOG, PM_LARGE_GREEN_DOG},
1020 {PM_FERRET_KIT, PM_FERRET}, {PM_FERRET, PM_LARGE_FERRET},
1021 {PM_HELL_HOUND_PUP, PM_HELL_HOUND},
1022 {PM_ACID_HOUND_PUP, PM_ACID_HOUND},
1023 {PM_SHOCK_HOUND_PUP, PM_SHOCK_HOUND},
1024 {PM_HUSKY, PM_BULLDOG},
1025 {PM_POLICE_DOG, PM_BIG_POLICE_DOG},
1026 {PM_SMALL_LUGGAGE, PM_MEDIUM_LUGGAGE}, {PM_MEDIUM_LUGGAGE, PM_LARGE_LUGGAGE},
1028 {PM_AUTOMATIC_LITTLE_DOG, PM_AUTOMATIC_DOG}, {PM_AUTOMATIC_DOG, PM_AUTOMATIC_LARGE_DOG},
1029 {PM_AUTOMATIC_KITTEN, PM_AUTOMATIC_HOUSECAT}, {PM_AUTOMATIC_HOUSECAT, PM_AUTOMATIC_LARGE_CAT},
1030 {PM_BLACK_KITTEN, PM_BLACK_HOUSECAT}, {PM_BLACK_HOUSECAT, PM_BLACK_LARGE_CAT},
1032 {PM_MINION, PM_FANATIC_MINION},
1033 {PM_TRIAD_SLAVE, PM_FANATIC_TRIAD_SLAVE},
1034 {PM_SLAYER, PM_BERSERK_SLAYER},
1035 {PM_YAKUZA, PM_MOVED_YAKUZA},
1036 {PM_ICE_BOAR, PM_CONSUMED_ICE_BOAR},
1037 {PM_SOUTHSIDE_HOOD, PM_ANGRY_SOUTHSIDE_HOOD},
1038 {PM_FIRE_BOAR, PM_CONSUMED_FIRE_BOAR},
1039 {PM_MAFIA_TYPE, PM_SAVAGE_MAFIA_TYPE},
1040 {PM_HELL_SPAWN, PM_FRENZIED_HELL_SPAWN},
1041 {PM_COLOMBIAN_POTATO, PM_SUICIDE_DWARF},
1042 {PM_ICE_SPAWN, PM_FRENZIED_ICE_SPAWN},
1043 {PM_YARDIE, PM_AMOK_RUNNING_YARDIE},
1044 {PM_GREATER_HELL_SPAWN, PM_INSANE_HELL_SPAWN},
1045 {PM_NINE, PM_INSANE_NINE},
1046 {PM_GREATER_ICE_SPAWN, PM_INSANE_ICE_SPAWN},
1047 {PM_RED_JACK, PM_INSANE_RED_JACK},
1049 {PM_ROCK_MOLE, PM_HUGE_ROCK_MOLE},
1050 {PM_METAL_MOLE, PM_HUGE_METAL_MOLE},
1051 {PM_BATTLEHORSE, PM_FIERCE_BATTLEHORSE},
1052 {PM_WHITE_UNICORN, PM_BIG_WHITE_UNICORN},
1053 {PM_BLACK_UNICORN, PM_BIG_BLACK_UNICORN},
1054 {PM_PURPLE_UNICORN, PM_BIG_PURPLE_UNICORN},
1055 {PM_GRAY_UNICORN, PM_BIG_GRAY_UNICORN},
1056 {PM_PUMA, PM_LARGE_PUMA},
1057 {PM_KITTEN, PM_HOUSECAT}, {PM_HOUSECAT, PM_LARGE_CAT},
1058 {PM_GREEN_KITTEN, PM_GREEN_HOUSECAT}, {PM_GREEN_HOUSECAT, PM_LARGE_GREEN_CAT},
1059 {PM_KOBOLD, PM_LARGE_KOBOLD}, {PM_LARGE_KOBOLD, PM_KOBOLD_LORD},
1060 {PM_GNOME, PM_GNOME_LORD}, {PM_GNOME_LORD, PM_GNOME_WARRIOR},
1061 {PM_DWARF, PM_DWARF_LORD}, {PM_DWARF_LORD, PM_DWARF_KING},
1062 {PM_MIND_FLAYER, PM_MASTER_MIND_FLAYER},
1063 {PM_ORC, PM_ORC_CAPTAIN}, {PM_HILL_ORC, PM_ORC_CAPTAIN},
1064 {PM_MORDOR_ORC, PM_ORC_CAPTAIN}, {PM_URUK_HAI, PM_ORC_CAPTAIN},
1065 {PM_SEWER_RAT, PM_GIANT_RAT},
1066 {PM_YORA_CHICK, PM_YORA_HAWK},
1067 {PM_AOA_DROPLET, PM_AOA},
1068 {PM_SPROW, PM_DRIDER},
1069 {PM_SMART_TRAPPER, PM_TRAPPER_KING},
1070 {PM_RHYHORN, PM_RHYDON}, {PM_RHYDON, PM_RHYPERIOR},
1071 {PM_DUNGEON_FERN_SPROUT, PM_DUNGEON_FERN}, {PM_SWAMP_FERN_SPROUT, PM_SWAMP_FERN},
1072 {PM_BLAZING_FERN_SPROUT, PM_BLAZING_FERN}, {PM_ARCTIC_FERN_SPROUT, PM_ARCTIC_FERN},
1073 {PM_BABY_METROID, PM_METROID}, {PM_METROID, PM_ALPHA_METROID},
1074 {PM_ALPHA_METROID, PM_GAMMA_METROID}, {PM_GAMMA_METROID, PM_ZETA_METROID},
1075 {PM_ZETA_METROID, PM_OMEGA_METROID}, {PM_OMEGA_METROID, PM_METROID_QUEEN},
1076 {PM_MONOTON, PM_DUTON}, {PM_DUTON, PM_TRITON},
1077 {PM_TRITON, PM_QUATON}, {PM_QUATON, PM_QUINON},
1078 {PM_QUINON, PM_HEXON}, {PM_HEXON, PM_HEPTON},
1079 {PM_HEPTON, PM_OCTON}, {PM_OCTON, PM_NONON},
1080 {PM_NONON, PM_DECON}, {PM_DECON, PM_ICOSON},
1081 {PM_MALKUTH_SEPHIRAH, PM_YESOD_SEPHIRAH}, {PM_YESOD_SEPHIRAH, PM_HOD_SEPHIRAH},
1082 {PM_HOD_SEPHIRAH, PM_GEVURAH_SEPHIRAH}, {PM_GEVURAH_SEPHIRAH, PM_CHOKHMAH_SEPHIRAH},
1084 {PM_HARROWBARK_WANDLE, PM_HARROWBARK_BOO},
1085 {PM_HARROWBARK_WALKER, PM_HARROWBARK_FIEND},
1086 {PM_SAEBR_TOOTHED_CAT, PM_SAEBR_TOOTHED_TIGER},
1088 {PM_ONANOCTER__A, PM_ONANOCTER__B},
1089 {PM_ONANOCTER__B, PM_ONANOCTER__C},
1090 {PM_ONANOCTER__C, PM_ONANOCTER__D},
1091 {PM_ONANOCTER__D, PM_ONANOCTER__E},
1092 {PM_ONANOCTER__E, PM_ONANOCTER__F},
1093 {PM_ONANOCTER__F, PM_ONANOCTER__G},
1095 {PM_DISINTEGRATOR, PM_MASTER_DISINTEGRATOR},
1096 {PM_PARALYSATOR_FLY, PM_GREAT_PARALYSATOR_FLY},
1098 {PM_DREAD_WITCH, PM_DIRE_WITCH}, {PM_DIRE_WITCH, PM_TWISTED_SYLPH},
1100 {PM_GIANT_RAT, PM_ENORMOUS_RAT},
1101 {PM_ENORMOUS_RAT, PM_RODENT_OF_UNUSUAL_SIZE},
1102 {PM_CAVE_SPIDER, PM_GIANT_SPIDER},
1103 {PM_OGRE, PM_OGRE_LORD}, {PM_OGRE_LORD, PM_OGRE_KING},
1104 {PM_ELF, PM_ELF_LORD}, {PM_WOODLAND_ELF, PM_ELF_LORD},
1105 {PM_GREEN_ELF, PM_ELF_LORD}, {PM_GREY_ELF, PM_ELF_LORD},
1106 {PM_ELF_LORD, PM_ELVENKING}, {PM_NETHER_LICH, PM_LICH},
1107 {PM_LICH, PM_DEMILICH}, {PM_DEMILICH, PM_MASTER_LICH},
1108 {PM_MASTER_LICH, PM_ARCH_LICH}, {PM_ARCH_LICH, PM_LICHKING},
1110 {PM_ON, PM_DEMION}, {PM_DEMION, PM_MASTER_ON},
1111 {PM_MASTER_ON, PM_ARCHON},
1113 {PM_ZOO_BAT, PM_GAOL_BAT},
1115 {PM_ICHNEUMON_LARVA, PM_GIANT_ICHNEUMON},
1117 {PM_FIERY_DRAKKEN, PM_BIG_FIERY_DRAKKEN}, {PM_BIG_FIERY_DRAKKEN, PM_ENORMOUS_FIERY_DRAKKEN},
1118 {PM_ICY_DRAKKEN, PM_BIG_ICY_DRAKKEN}, {PM_BIG_ICY_DRAKKEN, PM_ENORMOUS_ICY_DRAKKEN},
1120 {PM_TELAMON, PM_SPLIYARYATID}, {PM_SPLIYARYATID, PM_LOADBEARER},
1122 {PM_VAMPIRE, PM_VAMPIRE_LORD}, {PM_VAMPIRE_LORD, PM_VAMPIRE_MAGE},
1123 {PM_BAT, PM_GIANT_BAT},
1124 {PM_CHICKATRICE, PM_COCKATRICE},
1125 {PM_MAGIKARP, PM_GYARADOS},
1126 {PM_GOLDEEN, PM_SEAKING},
1127 {PM_ELF_BOXER, PM_ELF_CHAMPION},
1128 {PM_FUNNY_GIRL, PM_FUNNY_LADY},
1129 {PM_JOYOUS_GIRL, PM_JOYOUS_LADY},
1130 {PM_MAUD_AGENT, PM_DUAM_XNAHT_AGENT},
1131 {PM_DUAM_XNAHT_AGENT, PM_MAUD_BADASS},
1133 {PM_DELUGE_AGENT, PM_FLOOD_SURFER},
1134 {PM_LAVA_LOVER, PM_CRISPY_BURNER},
1135 {PM_TREE_HUGGER, PM_ECOFRIENDLY_RESEARCHER},
1136 {PM_NORTHERNER, PM_COLD_PERSON},
1137 {PM_FORMER_PRISONER, PM_JOBLESS_WARDEN},
1138 {PM_PARANOID_SCHIZO, PM_SUPERSTITIOUS_PERSON},
1139 {PM_ACID_TRIPPER, PM_DRUG_ABUSER},
1140 {PM_SNOWBALL_THROWER, PM_ICE_REGENT},
1141 {PM_FRIGHTENING_CREEP, PM_TEETHLESS_CRONE},
1142 {PM_FIREBREATHER, PM_FLAME_PUNISHER},
1143 {PM_ELECTRO_SHOCKER, PM_TAZER},
1144 {PM_SQUEEZER, PM_JAMCLAMPER},
1145 {PM_FIENDISH_WARLOCK, PM_OCCULT_WARLOCK},
1147 {PM_LOWLY_DRAGON, PM_ADULT_DRAGON}, {PM_SLOW_GROWING_DRAGON, PM_TEENIE_DRAGON},
1148 {PM_TEENIE_DRAGON, PM_YOUNG_DRAGON}, {PM_GROWN_UP_DRAGON, PM_OLD_DRAGON},
1149 {PM_OLD_DRAGON, PM_VENERABLE_DRAGON}, {PM_YOUNG_DRAGON, PM_GROWN_UP_DRAGON},
1151 {PM_MINI_JABBERWOCK, PM_SMALL_JABBERWOCK},
1152 {PM_FALCON, PM_GIANT_FALCON},
1154 {PM_WATER_GIRL, PM_WATER_LADY},
1155 {PM_FIRE_GIRL, PM_FIERY_LADY},
1156 {PM_NATURE_GIRL, PM_NATURE_LADY},
1157 {PM_ICE_GIRL, PM_ICE_LADY},
1158 {PM_FEMALE_GUARD, PM_FEMALE_YEOMAN},
1159 {PM_MENTAL_GIRL, PM_MENTAL_LADY},
1160 {PM_DRUGGED_GIRL, PM_CRACKWHORE},
1161 {PM_SNOW_GIRL, PM_SNOW_QUEEN},
1162 {PM_DEFORMED_GIRL, PM_FEMALE_HULL},
1163 {PM_DRAGON_GIRL, PM_DRAGON_LADY},
1164 {PM_SADISTIC_GIRL, PM_SADISTIC_LADY},
1165 {PM_BDSM_GIRL, PM_BDSM_LADY},
1166 {PM_MAGICAL_GIRL, PM_MAGICAL_LADY},
1168 {PM_TINY_PSEUDODRAGON, PM_PSEUDODRAGON},
1169 {PM_PSEUDODRAGON, PM_RIDING_PSEUDODRAGON},
1170 {PM_RIDING_PSEUDODRAGON, PM_LARGE_PSEUDODRAGON},
1171 {PM_LARGE_PSEUDODRAGON, PM_WINGED_PSEUDODRAGON},
1172 {PM_WINGED_PSEUDODRAGON, PM_HUGE_PSEUDODRAGON},
1173 {PM_HUGE_PSEUDODRAGON, PM_GIGANTIC_PSEUDODRAGON},
1175 {PM_WEE_PSUEDODRAGON, PM_SEMI_WEE_PSUEDODRAGON},
1176 {PM_SEMI_WEE_PSUEDODRAGON, PM_FRIGGIN__HUGE_PSUEDODRAGON},
1178 {PM_REAL_PUNISHER, PM_MASTER_PUNISHER},
1179 {PM_STONER, PM_HEAVY_STONER},
1181 {PM_NIGHTCALF, PM_DOESNIGHTMARE},
1183 {PM_CHUNNELER, PM_ROCK_CHUNNELER}, {PM_ROCK_CHUNNELER, PM_STEEL_CHUNNELER},
1185 {PM_TOMB_SCORPION, PM_GOLDENTAIL_SCORPION},
1186 {PM_ACID_MONSTER, PM_GREAT_ACID_MONSTER},
1187 {PM_RANDOM_MONSTER, PM_GIANT_RANDOM_MONSTER},
1188 {PM_HUNGER_HULK, PM_GLUTTONOUS_HULK},
1189 {PM_DISENCHANTER, PM_BIG_DISENCHANTER},
1191 {PM_BABY_VOLTIGORE, PM_VOLTIGORE},
1192 {PM_MINI_TRIAD, PM_TRIAD}, {PM_TRIAD, PM_TRIAD_CHAMPION},
1194 {PM_HORSEA, PM_SEADRA}, {PM_SEADRA, PM_KINGDRA},
1195 {PM_DEMENTOR, PM_DEMENTOR_LORD},
1196 {PM_DEMENTOR_LORD, PM_DEMENTOR_MASTER},
1197 {PM_CURSED_SPIRIT, PM_DEVILISH_SPIRIT},
1198 {PM_BABY_DOMESTIC_DRAGON, PM_DOMESTIC_DRAGON},
1200 {PM_YOUNG_WHITE_DRAGON, PM_YOUNG_ADULT_WHITE_DRAGON}, {PM_YOUNG_ADULT_WHITE_DRAGON, PM_ADULT_WHITE_DRAGON},
1201 {PM_ADULT_WHITE_DRAGON, PM_OLD_WHITE_DRAGON}, {PM_OLD_WHITE_DRAGON, PM_VERY_OLD_WHITE_DRAGON},
1202 {PM_VERY_OLD_WHITE_DRAGON, PM_ANCIENT_WHITE_DRAGON},
1203 {PM_YOUNG_GREEN_DRAGON, PM_YOUNG_ADULT_GREEN_DRAGON}, {PM_YOUNG_ADULT_GREEN_DRAGON, PM_ADULT_GREEN_DRAGON},
1204 {PM_ADULT_GREEN_DRAGON, PM_OLD_GREEN_DRAGON}, {PM_OLD_GREEN_DRAGON, PM_VERY_OLD_GREEN_DRAGON},
1205 {PM_VERY_OLD_GREEN_DRAGON, PM_ANCIENT_GREEN_DRAGON},
1206 {PM_YOUNG_RED_DRAGON, PM_YOUNG_ADULT_RED_DRAGON}, {PM_YOUNG_ADULT_RED_DRAGON, PM_ADULT_RED_DRAGON},
1207 {PM_ADULT_RED_DRAGON, PM_OLD_RED_DRAGON}, {PM_OLD_RED_DRAGON, PM_VERY_OLD_RED_DRAGON},
1208 {PM_VERY_OLD_RED_DRAGON, PM_ANCIENT_RED_DRAGON},
1209 {PM_YOUNG_BLUE_DRAGON, PM_YOUNG_ADULT_BLUE_DRAGON}, {PM_YOUNG_ADULT_BLUE_DRAGON, PM_ADULT_BLUE_DRAGON},
1210 {PM_ADULT_BLUE_DRAGON, PM_OLD_BLUE_DRAGON}, {PM_OLD_BLUE_DRAGON, PM_VERY_OLD_BLUE_DRAGON},
1211 {PM_VERY_OLD_BLUE_DRAGON, PM_ANCIENT_BLUE_DRAGON},
1212 {PM_YOUNG_DARK_DRAGON, PM_YOUNG_ADULT_DARK_DRAGON}, {PM_YOUNG_ADULT_DARK_DRAGON, PM_ADULT_DARK_DRAGON},
1213 {PM_ADULT_DARK_DRAGON, PM_OLD_DARK_DRAGON}, {PM_OLD_DARK_DRAGON, PM_VERY_OLD_DARK_DRAGON},
1214 {PM_VERY_OLD_DARK_DRAGON, PM_ANCIENT_DARK_DRAGON},
1215 {PM_YOUNG_SILVER_DRAGON, PM_YOUNG_ADULT_SILVER_DRAGON}, {PM_YOUNG_ADULT_SILVER_DRAGON, PM_ADULT_SILVER_DRAGON},
1216 {PM_ADULT_SILVER_DRAGON, PM_OLD_SILVER_DRAGON}, {PM_OLD_SILVER_DRAGON, PM_VERY_OLD_SILVER_DRAGON},
1217 {PM_VERY_OLD_SILVER_DRAGON, PM_ANCIENT_SILVER_DRAGON},
1218 {PM_YOUNG_GRAY_DRAGON, PM_YOUNG_ADULT_GRAY_DRAGON}, {PM_YOUNG_ADULT_GRAY_DRAGON, PM_ADULT_GRAY_DRAGON},
1219 {PM_ADULT_GRAY_DRAGON, PM_OLD_GRAY_DRAGON}, {PM_OLD_GRAY_DRAGON, PM_VERY_OLD_GRAY_DRAGON},
1220 {PM_VERY_OLD_GRAY_DRAGON, PM_ANCIENT_GRAY_DRAGON},
1221 {PM_YOUNG_SHIMMERING_DRAGON, PM_YOUNG_ADULT_SHIMMERING_DRAGON}, {PM_YOUNG_ADULT_SHIMMERING_DRAGON, PM_ADULT_SHIMMERING_DRAGON},
1222 {PM_ADULT_SHIMMERING_DRAGON, PM_OLD_SHIMMERING_DRAGON}, {PM_OLD_SHIMMERING_DRAGON, PM_VERY_OLD_SHIMMERING_DRAGON},
1223 {PM_VERY_OLD_SHIMMERING_DRAGON, PM_ANCIENT_SHIMMERING_DRAGON},
1224 {PM_YOUNG_DEEP_DRAGON, PM_YOUNG_ADULT_DEEP_DRAGON}, {PM_YOUNG_ADULT_DEEP_DRAGON, PM_ADULT_DEEP_DRAGON},
1225 {PM_ADULT_DEEP_DRAGON, PM_OLD_DEEP_DRAGON}, {PM_OLD_DEEP_DRAGON, PM_VERY_OLD_DEEP_DRAGON},
1226 {PM_VERY_OLD_DEEP_DRAGON, PM_ANCIENT_DEEP_DRAGON},
1227 {PM_YOUNG_DEEPSTATE_DRAGON, PM_YOUNG_ADULT_DEEPSTATE_DRAGON}, {PM_YOUNG_ADULT_DEEPSTATE_DRAGON, PM_ADULT_DEEPSTATE_DRAGON},
1228 {PM_ADULT_DEEPSTATE_DRAGON, PM_OLD_DEEPSTATE_DRAGON}, {PM_OLD_DEEPSTATE_DRAGON, PM_VERY_OLD_DEEPSTATE_DRAGON},
1229 {PM_VERY_OLD_DEEPSTATE_DRAGON, PM_ANCIENT_DEEPSTATE_DRAGON},
1230 {PM_YOUNG_ORANGE_DRAGON, PM_YOUNG_ADULT_ORANGE_DRAGON}, {PM_YOUNG_ADULT_ORANGE_DRAGON, PM_ADULT_ORANGE_DRAGON},
1231 {PM_ADULT_ORANGE_DRAGON, PM_OLD_ORANGE_DRAGON}, {PM_OLD_ORANGE_DRAGON, PM_VERY_OLD_ORANGE_DRAGON},
1232 {PM_VERY_OLD_ORANGE_DRAGON, PM_ANCIENT_ORANGE_DRAGON},
1233 {PM_YOUNG_BLACK_DRAGON, PM_YOUNG_ADULT_BLACK_DRAGON}, {PM_YOUNG_ADULT_BLACK_DRAGON, PM_ADULT_BLACK_DRAGON},
1234 {PM_ADULT_BLACK_DRAGON, PM_OLD_BLACK_DRAGON}, {PM_OLD_BLACK_DRAGON, PM_VERY_OLD_BLACK_DRAGON},
1235 {PM_VERY_OLD_BLACK_DRAGON, PM_ANCIENT_BLACK_DRAGON},
1236 {PM_YOUNG_GOLDEN_DRAGON, PM_YOUNG_ADULT_GOLDEN_DRAGON}, {PM_YOUNG_ADULT_GOLDEN_DRAGON, PM_ADULT_GOLDEN_DRAGON},
1237 {PM_ADULT_GOLDEN_DRAGON, PM_OLD_GOLDEN_DRAGON}, {PM_OLD_GOLDEN_DRAGON, PM_VERY_OLD_GOLDEN_DRAGON},
1238 {PM_VERY_OLD_GOLDEN_DRAGON, PM_ANCIENT_GOLDEN_DRAGON},
1239 {PM_YOUNG_STONE_DRAGON, PM_YOUNG_ADULT_STONE_DRAGON}, {PM_YOUNG_ADULT_STONE_DRAGON, PM_ADULT_STONE_DRAGON},
1240 {PM_ADULT_STONE_DRAGON, PM_OLD_STONE_DRAGON}, {PM_OLD_STONE_DRAGON, PM_VERY_OLD_STONE_DRAGON},
1241 {PM_VERY_OLD_STONE_DRAGON, PM_ANCIENT_STONE_DRAGON},
1242 {PM_YOUNG_CYAN_DRAGON, PM_YOUNG_ADULT_CYAN_DRAGON}, {PM_YOUNG_ADULT_CYAN_DRAGON, PM_ADULT_CYAN_DRAGON},
1243 {PM_ADULT_CYAN_DRAGON, PM_OLD_CYAN_DRAGON}, {PM_OLD_CYAN_DRAGON, PM_VERY_OLD_CYAN_DRAGON},
1244 {PM_VERY_OLD_CYAN_DRAGON, PM_ANCIENT_CYAN_DRAGON},
1245 {PM_YOUNG_PSYCHIC_DRAGON, PM_YOUNG_ADULT_PSYCHIC_DRAGON}, {PM_YOUNG_ADULT_PSYCHIC_DRAGON, PM_ADULT_PSYCHIC_DRAGON},
1246 {PM_ADULT_PSYCHIC_DRAGON, PM_OLD_PSYCHIC_DRAGON}, {PM_OLD_PSYCHIC_DRAGON, PM_VERY_OLD_PSYCHIC_DRAGON},
1247 {PM_VERY_OLD_PSYCHIC_DRAGON, PM_ANCIENT_PSYCHIC_DRAGON},
1248 {PM_YOUNG_YELLOW_DRAGON, PM_YOUNG_ADULT_YELLOW_DRAGON}, {PM_YOUNG_ADULT_YELLOW_DRAGON, PM_ADULT_YELLOW_DRAGON},
1249 {PM_ADULT_YELLOW_DRAGON, PM_OLD_YELLOW_DRAGON}, {PM_OLD_YELLOW_DRAGON, PM_VERY_OLD_YELLOW_DRAGON},
1250 {PM_VERY_OLD_YELLOW_DRAGON, PM_ANCIENT_YELLOW_DRAGON},
1251 {PM_YOUNG_MERCURIAL_DRAGON, PM_YOUNG_ADULT_MERCURIAL_DRAGON}, {PM_YOUNG_ADULT_MERCURIAL_DRAGON, PM_ADULT_MERCURIAL_DRAGON},
1252 {PM_ADULT_MERCURIAL_DRAGON, PM_OLD_MERCURIAL_DRAGON}, {PM_OLD_MERCURIAL_DRAGON, PM_VERY_OLD_MERCURIAL_DRAGON},
1253 {PM_VERY_OLD_MERCURIAL_DRAGON, PM_ANCIENT_MERCURIAL_DRAGON},
1254 {PM_YOUNG_RAINBOW_DRAGON, PM_YOUNG_ADULT_RAINBOW_DRAGON}, {PM_YOUNG_ADULT_RAINBOW_DRAGON, PM_ADULT_RAINBOW_DRAGON},
1255 {PM_ADULT_RAINBOW_DRAGON, PM_OLD_RAINBOW_DRAGON}, {PM_OLD_RAINBOW_DRAGON, PM_VERY_OLD_RAINBOW_DRAGON},
1256 {PM_VERY_OLD_RAINBOW_DRAGON, PM_ANCIENT_RAINBOW_DRAGON},
1257 {PM_YOUNG_BLOOD_DRAGON, PM_YOUNG_ADULT_BLOOD_DRAGON}, {PM_YOUNG_ADULT_BLOOD_DRAGON, PM_ADULT_BLOOD_DRAGON},
1258 {PM_ADULT_BLOOD_DRAGON, PM_OLD_BLOOD_DRAGON}, {PM_OLD_BLOOD_DRAGON, PM_VERY_OLD_BLOOD_DRAGON},
1259 {PM_VERY_OLD_BLOOD_DRAGON, PM_ANCIENT_BLOOD_DRAGON},
1260 {PM_YOUNG_PLAIN_DRAGON, PM_YOUNG_ADULT_PLAIN_DRAGON}, {PM_YOUNG_ADULT_PLAIN_DRAGON, PM_ADULT_PLAIN_DRAGON},
1261 {PM_ADULT_PLAIN_DRAGON, PM_OLD_PLAIN_DRAGON}, {PM_OLD_PLAIN_DRAGON, PM_VERY_OLD_PLAIN_DRAGON},
1262 {PM_VERY_OLD_PLAIN_DRAGON, PM_ANCIENT_PLAIN_DRAGON},
1263 {PM_YOUNG_SKY_DRAGON, PM_YOUNG_ADULT_SKY_DRAGON}, {PM_YOUNG_ADULT_SKY_DRAGON, PM_ADULT_SKY_DRAGON},
1264 {PM_ADULT_SKY_DRAGON, PM_OLD_SKY_DRAGON}, {PM_OLD_SKY_DRAGON, PM_VERY_OLD_SKY_DRAGON},
1265 {PM_VERY_OLD_SKY_DRAGON, PM_ANCIENT_SKY_DRAGON},
1266 {PM_YOUNG_WATER_DRAGON, PM_YOUNG_ADULT_WATER_DRAGON}, {PM_YOUNG_ADULT_WATER_DRAGON, PM_ADULT_WATER_DRAGON},
1267 {PM_ADULT_WATER_DRAGON, PM_OLD_WATER_DRAGON}, {PM_OLD_WATER_DRAGON, PM_VERY_OLD_WATER_DRAGON},
1268 {PM_VERY_OLD_WATER_DRAGON, PM_ANCIENT_WATER_DRAGON},
1269 {PM_YOUNG_EVIL_DRAGON, PM_YOUNG_ADULT_EVIL_DRAGON}, {PM_YOUNG_ADULT_EVIL_DRAGON, PM_ADULT_EVIL_DRAGON},
1270 {PM_ADULT_EVIL_DRAGON, PM_OLD_EVIL_DRAGON}, {PM_OLD_EVIL_DRAGON, PM_VERY_OLD_EVIL_DRAGON},
1271 {PM_VERY_OLD_EVIL_DRAGON, PM_ANCIENT_EVIL_DRAGON},
1272 {PM_YOUNG_MAGIC_DRAGON, PM_YOUNG_ADULT_MAGIC_DRAGON}, {PM_YOUNG_ADULT_MAGIC_DRAGON, PM_ADULT_MAGIC_DRAGON},
1273 {PM_ADULT_MAGIC_DRAGON, PM_OLD_MAGIC_DRAGON}, {PM_OLD_MAGIC_DRAGON, PM_VERY_OLD_MAGIC_DRAGON},
1274 {PM_VERY_OLD_MAGIC_DRAGON, PM_ANCIENT_MAGIC_DRAGON},
1275 {PM_YOUNG_FEMINISM_DRAGON, PM_YOUNG_ADULT_FEMINISM_DRAGON}, {PM_YOUNG_ADULT_FEMINISM_DRAGON, PM_ADULT_FEMINISM_DRAGON},
1276 {PM_ADULT_FEMINISM_DRAGON, PM_OLD_FEMINISM_DRAGON}, {PM_OLD_FEMINISM_DRAGON, PM_VERY_OLD_FEMINISM_DRAGON},
1277 {PM_VERY_OLD_FEMINISM_DRAGON, PM_ANCIENT_FEMINISM_DRAGON},
1278 {PM_YOUNG_MAIDRAGON, PM_YOUNG_ADULT_MAIDRAGON}, {PM_YOUNG_ADULT_MAIDRAGON, PM_ADULT_MAIDRAGON},
1279 {PM_ADULT_MAIDRAGON, PM_OLD_MAIDRAGON}, {PM_OLD_MAIDRAGON, PM_VERY_OLD_MAIDRAGON},
1280 {PM_VERY_OLD_MAIDRAGON, PM_ANCIENT_MAIDRAGON},
1281 {PM_YOUNG_NEGATIVE_DRAGON, PM_YOUNG_ADULT_NEGATIVE_DRAGON}, {PM_YOUNG_ADULT_NEGATIVE_DRAGON, PM_ADULT_NEGATIVE_DRAGON},
1282 {PM_ADULT_NEGATIVE_DRAGON, PM_OLD_NEGATIVE_DRAGON}, {PM_OLD_NEGATIVE_DRAGON, PM_VERY_OLD_NEGATIVE_DRAGON},
1283 {PM_VERY_OLD_NEGATIVE_DRAGON, PM_ANCIENT_NEGATIVE_DRAGON},
1284 {PM_YOUNG_HEROIC_DRAGON, PM_YOUNG_ADULT_HEROIC_DRAGON}, {PM_YOUNG_ADULT_HEROIC_DRAGON, PM_ADULT_HEROIC_DRAGON},
1285 {PM_ADULT_HEROIC_DRAGON, PM_OLD_HEROIC_DRAGON}, {PM_OLD_HEROIC_DRAGON, PM_VERY_OLD_HEROIC_DRAGON},
1286 {PM_VERY_OLD_HEROIC_DRAGON, PM_ANCIENT_HEROIC_DRAGON},
1287 {PM_YOUNG_CANCEL_DRAGON, PM_YOUNG_ADULT_CANCEL_DRAGON}, {PM_YOUNG_ADULT_CANCEL_DRAGON, PM_ADULT_CANCEL_DRAGON},
1288 {PM_ADULT_CANCEL_DRAGON, PM_OLD_CANCEL_DRAGON}, {PM_OLD_CANCEL_DRAGON, PM_VERY_OLD_CANCEL_DRAGON},
1289 {PM_VERY_OLD_CANCEL_DRAGON, PM_ANCIENT_CANCEL_DRAGON},
1290 {PM_YOUNG_CORONA_DRAGON, PM_YOUNG_ADULT_CORONA_DRAGON}, {PM_YOUNG_ADULT_CORONA_DRAGON, PM_ADULT_CORONA_DRAGON},
1291 {PM_ADULT_CORONA_DRAGON, PM_OLD_CORONA_DRAGON}, {PM_OLD_CORONA_DRAGON, PM_VERY_OLD_CORONA_DRAGON},
1292 {PM_VERY_OLD_CORONA_DRAGON, PM_ANCIENT_CORONA_DRAGON},
1293 {PM_YOUNG_CONTRO_DRAGON, PM_YOUNG_ADULT_CONTRO_DRAGON}, {PM_YOUNG_ADULT_CONTRO_DRAGON, PM_ADULT_CONTRO_DRAGON},
1294 {PM_ADULT_CONTRO_DRAGON, PM_OLD_CONTRO_DRAGON}, {PM_OLD_CONTRO_DRAGON, PM_VERY_OLD_CONTRO_DRAGON},
1295 {PM_VERY_OLD_CONTRO_DRAGON, PM_ANCIENT_CONTRO_DRAGON},
1296 {PM_YOUNG_MYSTERY_DRAGON, PM_YOUNG_ADULT_MYSTERY_DRAGON}, {PM_YOUNG_ADULT_MYSTERY_DRAGON, PM_ADULT_MYSTERY_DRAGON},
1297 {PM_ADULT_MYSTERY_DRAGON, PM_OLD_MYSTERY_DRAGON}, {PM_OLD_MYSTERY_DRAGON, PM_VERY_OLD_MYSTERY_DRAGON},
1298 {PM_VERY_OLD_MYSTERY_DRAGON, PM_ANCIENT_MYSTERY_DRAGON},
1299 {PM_YOUNG_NOPE_DRAGON, PM_YOUNG_ADULT_NOPE_DRAGON}, {PM_YOUNG_ADULT_NOPE_DRAGON, PM_ADULT_NOPE_DRAGON},
1300 {PM_ADULT_NOPE_DRAGON, PM_OLD_NOPE_DRAGON}, {PM_OLD_NOPE_DRAGON, PM_VERY_OLD_NOPE_DRAGON},
1301 {PM_VERY_OLD_NOPE_DRAGON, PM_ANCIENT_NOPE_DRAGON},
1302 {PM_YOUNG_CRYSTALLINE_DRAGON, PM_YOUNG_ADULT_CRYSTALLINE_DRAGON}, {PM_YOUNG_ADULT_CRYSTALLINE_DRAGON, PM_ADULT_CRYSTALLINE_DRAGON},
1303 {PM_ADULT_CRYSTALLINE_DRAGON, PM_OLD_CRYSTALLINE_DRAGON}, {PM_OLD_CRYSTALLINE_DRAGON, PM_VERY_OLD_CRYSTALLINE_DRAGON},
1304 {PM_VERY_OLD_CRYSTALLINE_DRAGON, PM_ANCIENT_CRYSTALLINE_DRAGON},
1306 {PM_RED_KITE, PM_DRAGONKIN_BROODMASTER},
1307 {PM_ELECTRIC_GEL, PM_CARNIVOROUS_GEL},
1309 {PM_DEATHWALKER_KNIGHT, PM_DEATHWALKER_BATTLEMASTER},
1310 {PM_CONTACT_BEASTLING, PM_CONTACT_BEAST},
1312 {PM_FIRE_NAGA_HATCHLING, PM_FIRE_NAGA},
1313 {PM_COBALT_NAGA_HATCHLING, PM_COBALT_NAGA},
1314 {PM_GRAY_NAGA_HATCHLING, PM_GRAY_NAGA},
1316 {PM_WILD_WOLF, PM_HUNTING_WOLF},
1317 {PM_GAY_NAGA, PM_FAGA},
1318 {PM_HPH_NAGA, PM_MAGA},
1320 {PM_HELLKITTEN, PM_HELLCAT},
1322 {PM_GOOD_LITTLE_DOG, PM_NOT_SLOWING_DOWN_DOG}, {PM_NOT_SLOWING_DOWN_DOG, PM_XTRA_LARGE_DOG},
1323 {PM_POWER_KITTEN, PM_POWERFUL_HOUSECAT}, {PM_POWERFUL_HOUSECAT, PM_LARGE_COMBAT_CAT},
1325 {PM_DIREWOLF_CUB, PM_DIREWOLF},
1326 {PM_DIREWOLF, PM_LARGE_DIREWOLF},
1328 {PM_MYCONID_SCOUT, PM_MYCONID_WARRIOR},
1329 {PM_MYCONID_WARRIOR, PM_MYCONID_REAVER},
1330 {PM_MYCONID_REAVER, PM_MYCONID_ELDER},
1332 {PM_EAGLE, PM_GREAT_EAGLE},
1334 {PM_BORLOTH, PM_MOONBEAST}, {PM_MOONBEAST, PM_SPACE_BORLOTH},
1335 {PM_ENBUG, PM_PROGRAMMING_BUG},
1336 {PM_PROGRAMMING_BUG, PM_SERIOUS_BUG},
1337 {PM_SERIOUS_BUG, PM_MEMORY_CORRUPTION},
1338 {PM_BABY_ROC, PM_ROC},
1339 {PM_CREEPING_VINE, PM_STRUNGLER_VINE},
1341 {PM_ITALIAN_GIRL, PM_ITALIAN_LASS}, {PM_ITALIAN_LASS, PM_ITALIAN_WOMAN},
1342 {PM_ITALIAN_WOMAN, PM_ITALIAN_DAME}, {PM_ITALIAN_DAME, PM_ITALIAN_LADY},
1343 {PM_FEMININE_GIRL, PM_FEMININE_LASS}, {PM_FEMININE_LASS, PM_FEMININE_WOMAN},
1344 {PM_FEMININE_WOMAN, PM_FEMININE_DAME}, {PM_FEMININE_DAME, PM_FEMININE_LADY},
1345 {PM_ELEGANT_GIRL, PM_ELEGANT_LASS}, {PM_ELEGANT_LASS, PM_ELEGANT_WOMAN},
1346 {PM_ELEGANT_WOMAN, PM_ELEGANT_DAME}, {PM_ELEGANT_DAME, PM_ELEGANT_LADY},
1348 {PM_TUNNEL_SPIDER, PM_CARRION_FANG},
1349 {PM_THORNED_STRIDER, PM_THORNED_ELDER},
1350 {PM_WATCHER_GEIST, PM_WATCHER_OVERLORD},
1351 {PM_SHADOW_RECLUSE, PM_TUNNEL_QUEEN},
1352 {PM_DARK_ZEALOT, PM_BLIGHT_QUEEN},
1354 {PM_BABY_TATZELWORM, PM_ADULT_TATZELWORM},
1355 {PM_BABY_AMPHITERE, PM_ADULT_AMPHITERE},
1356 {PM_BABY_DRAKEN, PM_ADULT_DRAKEN},
1357 {PM_BABY_LINDWORM, PM_ADULT_LINDWORM},
1358 {PM_BABY_SARKANY, PM_ADULT_SARKANY},
1359 {PM_BABY_SIRRUSH, PM_ADULT_SIRRUSH},
1360 {PM_BABY_LEVIATHAN, PM_ADULT_LEVIATHAN},
1361 {PM_BABY_WYVERN, PM_ADULT_WYVERN},
1362 {PM_BABY_GLOWING_DRAGON, PM_ADULT_GLOWING_DRAGON},
1363 {PM_BABY_GUIVRE, PM_ADULT_GUIVRE},
1365 {PM_CRYSTAL_DRAKE, PM_GREAT_CRYSTAL_DRAKE},
1367 {PM_ILLITHID_LARVA, PM_NEOTHELID},
1369 {PM_BABY_MULTI_HUED_DRAGON, PM_MULTI_HUED_DRAGON},
1370 {PM_BABY_BRONZE_DRAGON, PM_BRONZE_DRAGON},
1372 {PM_BABY_GRAY_DRAGON, PM_GRAY_DRAGON},
1373 {PM_BABY_MERCURIAL_DRAGON, PM_MERCURIAL_DRAGON},
1374 {PM_BABY_RAINBOW_DRAGON, PM_RAINBOW_DRAGON},
1375 {PM_BABY_BLOOD_DRAGON, PM_BLOOD_DRAGON},
1376 {PM_BABY_PLAIN_DRAGON, PM_PLAIN_DRAGON},
1377 {PM_BABY_SKY_DRAGON, PM_SKY_DRAGON},
1378 {PM_BABY_WATER_DRAGON, PM_WATER_DRAGON},
1379 {PM_BABY_EVIL_DRAGON, PM_EVIL_DRAGON},
1380 {PM_BABY_MAGIC_DRAGON, PM_MAGIC_DRAGON},
1381 {PM_BABY_RED_DRAGON, PM_RED_DRAGON},
1382 {PM_BABY_SILVER_DRAGON, PM_SILVER_DRAGON},
1383 {PM_BABY_DEEP_DRAGON, PM_DEEP_DRAGON},
1384 {PM_BABY_DEEPSTATE_DRAGON, PM_DEEPSTATE_DRAGON},
1385 {PM_BABY_SHIMMERING_DRAGON, PM_SHIMMERING_DRAGON},
1386 {PM_BABY_WHITE_DRAGON, PM_WHITE_DRAGON},
1387 {PM_BABY_ORANGE_DRAGON, PM_ORANGE_DRAGON},
1388 {PM_BABY_BLACK_DRAGON, PM_BLACK_DRAGON},
1389 {PM_BABY_BLUE_DRAGON, PM_BLUE_DRAGON},
1390 {PM_BABY_DARK_DRAGON, PM_DARK_DRAGON},
1391 {PM_BABY_GREEN_DRAGON, PM_GREEN_DRAGON},
1392 {PM_BABY_GOLDEN_DRAGON, PM_GOLDEN_DRAGON},
1393 {PM_BABY_FEMINISM_DRAGON, PM_FEMINISM_DRAGON},
1394 {PM_BABY_MAIDRAGON, PM_MAIDRAGON},
1395 {PM_BABY_CANCEL_DRAGON, PM_CANCEL_DRAGON},
1396 {PM_BABY_NEGATIVE_DRAGON, PM_NEGATIVE_DRAGON},
1397 {PM_BABY_CORONA_DRAGON, PM_CORONA_DRAGON},
1398 {PM_BABY_CONTRO_DRAGON, PM_CONTRO_DRAGON},
1399 {PM_BABY_NOPE_DRAGON, PM_NOPE_DRAGON},
1400 {PM_BABY_CRYSTALLINE_DRAGON, PM_CRYSTALLINE_DRAGON},
1401 {PM_BABY_MYSTERY_DRAGON, PM_MYSTERY_DRAGON},
1402 {PM_BABY_HEROIC_DRAGON, PM_HEROIC_DRAGON},
1403 {PM_BABY_YELLOW_DRAGON, PM_YELLOW_DRAGON},
1404 {PM_BABY_STONE_DRAGON, PM_STONE_DRAGON},
1405 {PM_BABY_CYAN_DRAGON, PM_CYAN_DRAGON},
1406 {PM_BABY_PSYCHIC_DRAGON, PM_PSYCHIC_DRAGON},
1408 {PM_BABY_EMERALD_DRAGON, PM_EMERALD_DRAGON},
1409 {PM_BABY_COPPER_DRAGON, PM_COPPER_DRAGON},
1410 {PM_BABY_DIAMOND_DRAGON, PM_DIAMOND_DRAGON},
1411 {PM_BABY_RUBY_DRAGON, PM_RUBY_DRAGON},
1412 {PM_BABY_AMETHYST_DRAGON, PM_AMETHYST_DRAGON},
1413 {PM_BABY_PURPLE_DRAGON, PM_PURPLE_DRAGON},
1414 {PM_BABY_BRASS_DRAGON, PM_BRASS_DRAGON},
1415 {PM_BABY_PLATINUM_DRAGON, PM_PLATINUM_DRAGON},
1416 {PM_BABY_SAPPHIRE_DRAGON, PM_SAPPHIRE_DRAGON},
1418 {PM_WIMPY_GRAY_DRAGON, PM_GRAY_DRAGOM},
1419 {PM_WIMPY_MERCURIAL_DRAGON, PM_MERCURIAL_DRAGOM},
1420 {PM_WIMPY_RAINBOW_DRAGON, PM_RAINBOW_DRAGOM},
1421 {PM_WIMPY_BLOOD_DRAGON, PM_BLOOD_DRAGOM},
1422 {PM_WIMPY_PLAIN_DRAGON, PM_PLAIN_DRAGOM},
1423 {PM_WIMPY_SKY_DRAGON, PM_SKY_DRAGOM},
1424 {PM_WIMPY_WATER_DRAGON, PM_WATER_DRAGOM},
1425 {PM_WIMPY_EVIL_DRAGON, PM_EVIL_DRAGOM},
1426 {PM_WIMPY_MAGIC_DRAGON, PM_MAGIC_DRAGOM},
1427 {PM_WIMPY_RED_DRAGON, PM_RED_DRAGOM},
1428 {PM_WIMPY_SILVER_DRAGON, PM_SILVER_DRAGOM},
1429 {PM_WIMPY_DEEP_DRAGON, PM_DEEP_DRAGOM},
1430 {PM_WIMPY_SHIMMERING_DRAGON, PM_SHIMMERING_DRAGOM},
1431 {PM_WIMPY_WHITE_DRAGON, PM_WHITE_DRAGOM},
1432 {PM_WIMPY_ORANGE_DRAGON, PM_ORANGE_DRAGOM},
1433 {PM_WIMPY_BLACK_DRAGON, PM_BLACK_DRAGOM},
1434 {PM_WIMPY_BLUE_DRAGON, PM_BLUE_DRAGOM},
1435 {PM_WIMPY_DARK_DRAGON, PM_DARK_DRAGOM},
1436 {PM_WIMPY_GREEN_DRAGON, PM_GREEN_DRAGOM},
1437 {PM_WIMPY_GOLDEN_DRAGON, PM_GOLDEN_DRAGOM},
1438 {PM_WIMPY_FEMINISM_DRAGON, PM_FEMINISM_DRAGOM},
1439 {PM_WIMPY_MAIDRAGON, PM_MAIDRAGOM},
1440 {PM_WIMPY_CANCEL_DRAGON, PM_CANCEL_DRAGOM},
1441 {PM_WIMPY_NEGATIVE_DRAGON, PM_NEGATIVE_DRAGOM},
1442 {PM_WIMPY_CORONA_DRAGON, PM_CORONA_DRAGOM},
1443 {PM_WIMPY_CONTRO_DRAGON, PM_CONTRO_DRAGOM},
1444 {PM_WIMPY_NOPE_DRAGON, PM_NOPE_DRAGOM},
1445 {PM_WIMPY_CRYSTALLINE_DRAGON, PM_CRYSTALLINE_DRAGOM},
1446 {PM_WIMPY_MYSTERY_DRAGON, PM_MYSTERY_DRAGOM},
1447 {PM_WIMPY_HEROIC_DRAGON, PM_HEROIC_DRAGOM},
1448 {PM_WIMPY_YELLOW_DRAGON, PM_YELLOW_DRAGOM},
1449 {PM_WIMPY_STONE_DRAGON, PM_STONE_DRAGOM},
1450 {PM_WIMPY_CYAN_DRAGON, PM_CYAN_DRAGOM},
1451 {PM_WIMPY_PSYCHIC_DRAGON, PM_PSYCHIC_DRAGOM},
1453 {PM_WIMPY_EMERALD_DRAGON, PM_EMERALD_DRAGOM},
1454 {PM_WIMPY_COPPER_DRAGON, PM_COPPER_DRAGOM},
1455 {PM_WIMPY_DIAMOND_DRAGON, PM_DIAMOND_DRAGOM},
1456 {PM_WIMPY_RUBY_DRAGON, PM_RUBY_DRAGOM},
1457 {PM_WIMPY_AMETHYST_DRAGON, PM_AMETHYST_DRAGOM},
1458 {PM_WIMPY_PURPLE_DRAGON, PM_PURPLE_DRAGOM},
1459 {PM_WIMPY_BRASS_DRAGON, PM_BRASS_DRAGOM},
1460 {PM_WIMPY_PLATINUM_DRAGON, PM_PLATINUM_DRAGOM},
1461 {PM_WIMPY_SAPPHIRE_DRAGON, PM_SAPPHIRE_DRAGOM},
1463 {PM_CORONA_NAGA_HATCHLING, PM_CORONA_NAGA},
1464 {PM_BUBBLE_NAGA_HATCHLING, PM_BUBBLE_NAGA},
1465 {PM_ORNATE_NAGA_HATCHLING, PM_ORNATE_NAGA},
1466 {PM_MAGENTA_NAGA_HATCHLING, PM_MAGENTA_NAGA},
1467 {PM_CYAN_NAGA_HATCHLING, PM_CYAN_NAGA},
1468 {PM_PASTEL_NAGA_HATCHLING, PM_PASTEL_NAGA},
1469 {PM_TOME_NAGA_HATCHLING, PM_TOME_NAGA},
1470 {PM_ILLUSION_NAGA_HATCHLING, PM_ILLUSION_NAGA},
1471 {PM_ANTHRAZITE_NAGA_HATCHLING, PM_ANTHRAZITE_NAGA},
1472 {PM_STEAM_NAGA_HATCHLING, PM_STEAM_NAGA},
1473 {PM_LIGHT_NAGA_HATCHLING, PM_LIGHT_NAGA},
1474 {PM_PYRITE_NAGA_HATCHLING, PM_PYRITE_NAGA},
1475 {PM_RIP_NAGA_HATCHLING, PM_RIP_NAGA},
1476 {PM_PERFUMED_NAGA_HATCHLING, PM_PERFUMED_NAGA},
1477 {PM_OCHRE_NAGA_HATCHLING, PM_OCHRE_NAGA},
1478 {PM_VIOLET_NAGA_HATCHLING, PM_VIOLET_NAGA},
1479 {PM_SNOW_NAGA_HATCHLING, PM_SNOW_NAGA},
1480 {PM_DOME_NAGA_HATCHLING, PM_DOME_NAGA},
1481 {PM_POND_NAGA_HATCHLING, PM_POND_NAGA},
1482 {PM_SEA_NAGA_HATCHLING, PM_SEA_NAGA},
1483 {PM_GREY_NAGA_HATCHLING, PM_GREY_NAGA},
1484 {PM_TEAL_NAGA_HATCHLING, PM_TEAL_NAGA},
1485 {PM_YELLOW_NAGA_HATCHLING, PM_YELLOW_NAGA},
1486 {PM_RED_NAGA_HATCHLING, PM_RED_NAGA},
1487 {PM_PINK_NAGA_HATCHLING, PM_PINK_NAGA},
1488 {PM_PURPLE_NAGA_HATCHLING, PM_PURPLE_NAGA},
1489 {PM_SWAMP_NAGA_HATCHLING, PM_SWAMP_NAGA},
1490 {PM_OCEAN_NAGA_HATCHLING, PM_OCEAN_NAGA},
1491 {PM_BROWN_NAGA_HATCHLING, PM_BROWN_NAGA},
1492 {PM_SILVER_NAGA_HATCHLING, PM_SILVER_NAGA},
1493 {PM_NIGHT_NAGA_HATCHLING, PM_NIGHT_NAGA},
1494 {PM_TREE_NAGA_HATCHLING, PM_TREE_NAGA},
1495 {PM_YGGDRASIL_NAGA_HATCHLING, PM_YGGDRASIL_NAGA},
1496 {PM_ADVENTURER_NAGA_HATCHLING, PM_ADVENTURER_NAGA},
1498 {PM_LOTUS_NAGA_HATCHLING, PM_LOTUS_NAGA},
1499 {PM_BIONIC_NAGA_HATCHLING, PM_BIONIC_NAGA},
1500 {PM_ARABESQUE_NAGA_HATCHLING, PM_ARABESQUE_NAGA},
1501 {PM_COPPER_NAGA_HATCHLING, PM_COPPER_NAGA},
1502 {PM_RIVERSIDE_NAGA_HATCHLING, PM_RIVERSIDE_NAGA},
1503 {PM_STORM_NAGA_HATCHLING, PM_STORM_NAGA},
1504 {PM_WISDOM_NAGA_HATCHLING, PM_WISDOM_NAGA},
1506 {PM_NUU_CHUUL, PM_ELDER_CHUUL},
1507 {PM_BABY_CELESTIAL_DRAGON, PM_CELESTIAL_DRAGON},
1509 {PM_GLORKUM, PM_MASTER_GLORKUM}, {PM_MASTER_GLORKUM, PM_ARCHGLORKUM},
1511 {PM_WATER_NAGA_HATCHLING, PM_WATER_NAGA},
1512 {PM_STRIPPER_GIRL, PM_STRIPPER_LADY},
1513 {PM_GRUESOME_NAGA_HATCHLING, PM_GRUESOME_NAGA},
1514 {PM_UNDEAD_NAGA_HATCHLING, PM_UNDEAD_NAGA},
1515 {PM_SIZZLE_NAGA_HATCHLING, PM_SIZZLE_NAGA},
1516 {PM_BLADE_NAGA_HATCHLING, PM_BLADE_NAGA},
1517 {PM_MULTI_HUED_NAGA_HATCHLING, PM_MULTI_HUED_NAGA},
1518 {PM_SPIRIT_NAGA_HATCHLING, PM_SPIRIT_NAGA},
1519 {PM_NOVICE_LIGHT_WALL, PM_APPRENTICE_LIGHT_WALL}, {PM_APPRENTICE_LIGHT_WALL, PM_JOURNEYMAN_LIGHT_WALL},
1520 {PM_JOURNEYMAN_LIGHT_WALL, PM_EXPERT_LIGHT_WALL}, {PM_EXPERT_LIGHT_WALL, PM_MASTER_LIGHT_WALL},
1521 {PM_NOVICE_MEDIUM_WALL, PM_APPRENTICE_MEDIUM_WALL}, {PM_APPRENTICE_MEDIUM_WALL, PM_JOURNEYMAN_MEDIUM_WALL},
1522 {PM_JOURNEYMAN_MEDIUM_WALL, PM_EXPERT_MEDIUM_WALL}, {PM_EXPERT_MEDIUM_WALL, PM_MASTER_MEDIUM_WALL},
1523 {PM_NOVICE_DARK_WALL, PM_APPRENTICE_DARK_WALL}, {PM_APPRENTICE_DARK_WALL, PM_JOURNEYMAN_DARK_WALL},
1524 {PM_JOURNEYMAN_DARK_WALL, PM_EXPERT_DARK_WALL}, {PM_EXPERT_DARK_WALL, PM_MASTER_DARK_WALL},
1525 {PM_FLOOR_GRUE, PM_DARK_GRUE}, {PM_DARK_GRUE, PM_DARKER_GRUE}, {PM_DARKER_GRUE, PM_DARKEST_GRUE},
1526 {PM_ICE_GRUE, PM_FROST_GRUE}, {PM_POISON_GRUE, PM_VENOM_GRUE}, {PM_FIRE_GRUE, PM_LAVA_GRUE},
1527 {PM_LIGHTNING_GRUE, PM_ELECTRIC_GRUE}, {PM_ACID_GRUE, PM_CORROSIVE_GRUE},
1528 {PM_DROWZEE, PM_HYPNO},
1529 {PM_KOFFING, PM_WEEZING},
1530 {PM_MEOWTH, PM_PERSIAN},
1531 {PM_GEODUDE, PM_GRAVELER}, {PM_GRAVELER, PM_GOLEM},
1532 {PM_VOLTORB, PM_ELECTRODE},
1533 {PM_RATTATA, PM_RATICATE}, {PM_HOUNDOUR, PM_HOUNDOOM},
1534 {PM_SPEAROW, PM_FEAROW}, {PM_ONIX, PM_STEELIX},
1535 {PM_EKANS, PM_ARBOK}, {PM_GRIMER, PM_MUK},
1536 {PM_PIKACHU, PM_RAICHU}, {PM_SEEL, PM_DEWGONG},
1537 {PM_CLEFAIRY, PM_CLEFABLE},{PM_PONYTA, PM_RAPIDASH},
1538 {PM_VULPIX, PM_NINETALES}, {PM_GROWLITHE, PM_ARCANINE},
1540 {PM_BABY_GRYPHON, PM_GRYPHON},
1542 {PM_COCKTYPUS, PM_GIANT_COCKTYPUS}, {PM_GIANT_COCKTYPUS, PM_DIRE_COCKTYPUS},
1544 {PM_NIDORAN_MALE, PM_NIDORINO},{PM_NIDORINO, PM_NIDOKING},
1545 {PM_NIDORAN_FEMALE, PM_NIDORINA},{PM_NIDORINA, PM_NIDOQUEEN},
1547 {PM_CATERPIE, PM_METAPOD},{PM_METAPOD, PM_BUTTERFREE},
1548 {PM_WEEDLE, PM_KAKUNA},{PM_KAKUNA, PM_BEEDRILL},
1550 {PM_PIDGEY, PM_PIDGEOTTO},{PM_PIDGEOTTO, PM_PIDGEOT},
1551 {PM_ABRA, PM_KADABRA},{PM_KADABRA, PM_ALAKAZAM},
1553 {PM_POLIWAG, PM_POLIWHIRL},{PM_POLIWHIRL, PM_POLIWRATH},
1555 {PM_BELLSPROUT, PM_WEEPINBELL},{PM_WEEPINBELL, PM_VICTREBELL},
1557 {PM_DRATINI, PM_DRAGONAIR},{PM_DRAGONAIR, PM_DRAGONITE},
1559 {PM_SWEATY_FEET_GIRL, PM_GIRL_WHO_DOESN_T_TAKE_OFF_HER_SOCKS},
1560 {PM_STRING_TANGA_GIRL, PM_GIRL_WHO_USES_HER_UNDERWEAR_AS_A_WEAPON},
1562 {PM_SQUIRTLE, PM_WARTORTLE},{PM_WARTORTLE, PM_BLASTOISE},
1563 {PM_BULBASAUR, PM_IVYSAUR},{PM_IVYSAUR, PM_VENUSAUR},
1564 {PM_ODDISH, PM_GLOOM},{PM_GLOOM, PM_VILEPLUME},
1565 {PM_CHARMANDER, PM_CHARMELEON},{PM_CHARMELEON, PM_CHARIZARD},
1566 {PM_ZUBAT, PM_GOLBAT}, {PM_GOLBAT, PM_CROBAT},
1567 {PM_KRABBY, PM_KINGLER}, {PM_TENTACOOL, PM_TENTACRUEL},
1568 {PM_GREEN_NAGA_HATCHLING, PM_GREEN_NAGA},
1569 {PM_NEXUS_NAGA_HATCHLING, PM_NEXUS_NAGA},
1570 {PM_SLITH_NAGA_HATCHLING, PM_SLITH_NAGA},
1571 {PM_MACH_NAGA_HATCHLING, PM_MACH_NAGA},
1572 {PM_WHITE_NAGA_HATCHLING, PM_WHITE_NAGA},
1573 {PM_DOMESTIC_NAGA_HATCHLING, PM_DOMESTIC_NAGA},
1574 {PM_BLUE_NAGA_HATCHLING, PM_BLUE_NAGA},
1575 {PM_BLACK_NAGA_HATCHLING, PM_BLACK_NAGA},
1576 {PM_WIMPY_NAGA_HATCHLING, PM_WIMPY_NAGA},
1577 {PM_PLAY_NAGA_HATCHLING, PM_PLAY_NAGA},
1578 {PM_DARK_NAGA_HATCHLING, PM_DARK_NAGA},
1579 {PM_GOLDEN_NAGA_HATCHLING, PM_GOLDEN_NAGA},
1580 {PM_GREMLIN, PM_GREMLIN_LEADER}, {PM_GREMLIN_LEADER, PM_GREMLIN_WARLORD},
1581 {PM_GREMLIN_WARLORD, PM_GREMLIN_DEATHSUCKER},
1582 {PM_GUARDIAN_NAGA_HATCHLING, PM_GUARDIAN_NAGA},
1583 {PM_SMALL_MIMIC, PM_LARGE_MIMIC}, {PM_LARGE_MIMIC, PM_GIANT_MIMIC},
1584 {PM_BABY_LONG_WORM, PM_LONG_WORM},
1585 {PM_BABY_PURPLE_WORM, PM_PURPLE_WORM},
1586 {PM_BABY_CROCODILE, PM_CROCODILE},
1587 {PM_EXEGGCUTE, PM_EXEGGUTOR},
1588 {PM_STARYU, PM_STARMIE},
1590 {PM_LESSER_INTRINSIC_EATING_MIMIC, PM_INTRINSIC_EATING_MIMIC},
1591 {PM_INTRINSIC_EATING_MIMIC, PM_MASTER_INTRINSIC_EATING_MIMIC},
1593 {PM_GOLDEN_KNIGHT, PM_GOLDEN_HOLY_KNIGHT},
1595 {PM_SOLDIER, PM_SERGEANT},
1596 {PM_TEUTON_SOLDIER, PM_SERGEANT},
1597 {PM_FRANKISH_SOLDIER, PM_SERGEANT},
1598 {PM_VIDEO_SOLDIER, PM_SERGEANT},
1599 {PM_BRITISH_SOLDIER, PM_SERGEANT},
1600 {PM_AMERICAN_SOLDIER, PM_SERGEANT},
1601 {PM_COPPER_SOLDIER, PM_SERGEANT},
1602 {PM_ARAB_SOLDIER, PM_SERGEANT},
1603 {PM_ASIAN_SOLDIER, PM_SERGEANT},
1604 {PM_MEDIEVAL_SOLDIER, PM_SERGEANT},
1605 {PM_PAD_SOLDIER, PM_SERGEANT},
1606 {PM_GAUCHE_SOLDIER, PM_SERGEANT},
1607 {PM_SEAFARING_SOLDIER, PM_SERGEANT},
1608 {PM_BYZANTINE_SOLDIER, PM_SERGEANT},
1609 {PM_CELTIC_SOLDIER, PM_SERGEANT},
1610 {PM_VANILLA_SOLDIER, PM_SERGEANT},
1611 {PM_VIKING_SOLDIER, PM_SERGEANT},
1612 {PM_SWAMP_SOLDIER, PM_SERGEANT},
1613 {PM_JAVA_SOLDIER, PM_SERGEANT},
1614 {PM_IBERIAN_SOLDIER, PM_SERGEANT},
1615 {PM_ROHIRRIM_SOLDIER, PM_SERGEANT},
1616 {PM_SERGEANT, PM_LIEUTENANT},
1617 {PM_EXTRATERRESTRIAL_SERGEANT, PM_LIEUTENANT},
1618 {PM_MINOAN_SERGEANT, PM_LIEUTENANT},
1619 {PM_HUN_SERGEANT, PM_LIEUTENANT},
1620 {PM_MONGOL_SERGEANT, PM_LIEUTENANT},
1621 {PM_ORANGE_SERGEANT, PM_LIEUTENANT},
1622 {PM_TWOWEAP_SERGEANT, PM_LIEUTENANT},
1623 {PM_PERSIAN_SERGEANT, PM_LIEUTENANT},
1624 {PM_KICKING_NINJA, PM_FOURTH_WALL_BREAKER},
1625 {PM_SOFT_GIRL, PM_SOFT_WOMAN},
1626 {PM_LIEUTENANT, PM_CAPTAIN},
1627 {PM_YAMATO_LIEUTENANT, PM_CAPTAIN},
1628 {PM_CARTHAGE_LIEUTENANT, PM_CAPTAIN},
1629 {PM_ROMAN_LIEUTENANT, PM_CAPTAIN},
1630 {PM_CAPTAIN, PM_GENERAL},
1631 {PM_GOTHIC_CAPTAIN, PM_GENERAL},
1632 {PM_URBAN_CAMO_CAPTAIN, PM_GENERAL},
1633 {PM_WATCHMAN, PM_WATCH_CAPTAIN},
1634 {PM_WATCH_CAPTAIN, PM_WATCH_LIEUTENANT},
1635 {PM_WATCH_LIEUTENANT, PM_WATCH_LEADER},
1636 {PM_ALIGNED_PRIEST, PM_HIGH_PRIEST},
1637 {PM_STUDENT, PM_ARCHEOLOGIST},
1638 {PM_ATTENDANT, PM_HEALER},
1639 {PM_PAGE, PM_KNIGHT},
1640 {PM_ACOLYTE, PM_PRIEST},
1641 {PM_APPRENTICE, PM_WIZARD},
1642 {PM_MANES,PM_LEMURE},
1643 {PM_BARROW_WIGHT,PM_TUNNEL_WIGHT}, {PM_TUNNEL_WIGHT,PM_CASTLE_WIGHT},
1644 {PM_MUMAK_CALF, PM_DND_MUMAK},
1645 {PM_WOLLOH_CHICK, PM_WOLLOH},
1647 {PM_GASTLY, PM_HAUNTER}, {PM_HAUNTER, PM_GENGAR},
1649 {PM_DRAGONBALL_KID, PM_KAMEHAMEHA_FIGHTER},{PM_KAMEHAMEHA_FIGHTER, PM_SUPER_SAIYAN},
1651 {PM_IRRITATING_GIRL, PM_IRRITATING_WOMAN},{PM_IRRITATING_WOMAN, PM_IRRITATING_LADY},
1653 {PM_ELONA_GIRL, PM_ELONA_LADY}, {PM_BEAUTIFUL_GIRL, PM_WONDERFUL_LADY},
1654 {PM_SEXY_CHILD_MODEL, PM_SEXY_MODEL}, {PM_SKATER_GIRL, PM_SKATER_WOMAN},
1656 {PM_INKA_GIRL, PM_INKA_WOMAN}, {PM_INKA_WOMAN, PM_INKA_LADY},
1658 {PM_YENDORIAN_GIRL, PM_YENDORIAN_LASS}, {PM_YENDORIAN_LASS, PM_YENDORIAN_WOMAN},
1659 {PM_YENDORIAN_WOMAN, PM_YENDORIAN_LADY}, {PM_YENDORIAN_LADY, PM_YENDORIAN_GRANNY},
1660 {PM_DESERT_GIRL, PM_DESERT_LASS}, {PM_DESERT_LASS, PM_DESERT_WOMAN},
1661 {PM_DESERT_WOMAN, PM_DESERT_LADY}, {PM_DESERT_LADY, PM_DESERT_GRANNY},
1663 {PM_BABY_SEA_DRAGON, PM_EVIL_SEA_DRAGON},
1665 {PM_PUMPS_GIRL, PM_PUMPS_WOMAN}, {PM_PUMPS_WOMAN, PM_PUMPS_LADY},
1667 {PM_KICKBOXING_GIRL, PM_KICKBOXING_LADY},{PM_ESTRELLA_GIRL, PM_ESTRELLARINA},
1668 {PM_FORSAKEN_GIRL, PM_FORSAKEN_LADY},{PM_SWEET_COQUETTE, PM_EROTICITY_QUEEN},
1669 {PM_LITTLE_GIRL, PM_YOUNG_ADULT_GIRL}, {PM_LITTLE_BOY, PM_YOUNG_ADULT_BOY},
1670 {PM_ASIAN_GIRL, PM_ASIAN_WOMAN}, {PM_ASIAN_WOMAN, PM_ASIAN_LADY},
1671 {PM_TENDER_ASIAN_GIRL, PM_PRETTY_ASIAN_WOMAN}, {PM_PRETTY_ASIAN_WOMAN, PM_SEXY_ASIAN_LADY},
1672 {PM_DARK_GIRL, PM_DARK_WOMAN}, {PM_DARK_WOMAN, PM_DARK_LADY},
1673 {PM_MYSTERIOUS_GIRL, PM_MYSTERIOUS_WOMAN}, {PM_MYSTERIOUS_WOMAN, PM_MYSTERIOUS_LADY},
1674 {PM_REDGUARD_GIRL, PM_REDGUARD_WOMAN}, {PM_REDGUARD_WOMAN, PM_REDGUARD_LADY},
1675 {PM_HISPANIC_GIRL, PM_HISPANIC_WOMAN}, {PM_HISPANIC_WOMAN, PM_HISPANIC_LADY},
1676 {PM_ACTIVISTIC_GIRL, PM_ACTIVISTIC_WOMAN}, {PM_ACTIVISTIC_WOMAN, PM_ACTIVISTIC_LADY},
1677 {PM_ODOROUS_GIRL, PM_ODOROUS_WOMAN}, {PM_ODOROUS_WOMAN, PM_ODOROUS_LADY},
1678 {PM_THIEVING_GIRL, PM_THIEVING_WOMAN}, {PM_THIEVING_WOMAN, PM_THIEVING_LADY},
1679 {PM_CRAPPY_BRAT, PM_SPOILED_PRINCESS}, {PM_SPOILED_PRINCESS, PM_HAUGHTY_BITCH},
1680 {PM_YOUNG_ADULT_GIRL, PM_YOUNG_WOMAN}, {PM_YOUNG_ADULT_BOY, PM_YOUNG_MAN},
1681 {PM_YOUNG_WOMAN, PM_ADULT_LADY}, {PM_YOUNG_MAN, PM_ADULT_GENTLEMAN},
1682 {PM_ADULT_LADY, PM_OLD_GRANNY}, {PM_ADULT_GENTLEMAN, PM_OLD_GRANDPA},
1683 {PM_NINJA_GIRL, PM_TAEKWONDO_GIRL}, {PM_NINJA_BOY, PM_BLACKBELT},
1684 {PM_DANCING_GIRL, PM_DANCING_QUEEN}, {PM_DANCING_GUY, PM_DANCING_KING},
1685 {PM_YOGA_GIRL, PM_TAI_CHI_GIRL}, {PM_SEXY_GIRL, PM_SEXY_LADY},
1686 {PM_NORDIC_GIRL, PM_NORDIC_WOMAN}, {PM_NORDIC_WOMAN, PM_NORDIC_LADY},
1687 {PM_AMAZONAS_GIRL, PM_AMAZONAS_WOMAN}, {PM_AMAZONAS_WOMAN, PM_AMAZONAS_LADY},
1688 {PM_OASIS_GIRL, PM_OASIS_WOMAN}, {PM_OASIS_WOMAN, PM_OASIS_LADY},
1689 {PM_MECH_GIRL, PM_MECH_WOMAN}, {PM_MECH_WOMAN, PM_MECH_LADY},
1690 {PM_SLEEPY_GIRL, PM_SLEEPY_WOMAN}, {PM_SLEEPY_WOMAN, PM_SLEEPY_LADY},
1692 {PM_LESBIAN_GIRL, PM_LESBIAN_WOMAN}, {PM_LESBIAN_WOMAN, PM_LESBIAN_BEAUTY},
1693 {PM_GAY_BOY, PM_GAY_MAN}, {PM_GAY_MAN, PM_GAY_MATE},
1695 {PM_CHINESE_GIRL, PM_SEXY_CHINESE_WOMAN}, {PM_SEXY_CHINESE_WOMAN, PM_CHINESE_LADY},
1696 {PM_JAPANESE_GIRL, PM_JAPANESE_WOMAN}, {PM_JAPANESE_WOMAN, PM_JAPANESE_LADY},
1697 {PM_KOREAN_GIRL, PM_KOREAN_WOMAN}, {PM_KOREAN_WOMAN, PM_KOREAN_LADY},
1698 {PM_VIETNAMESE_GIRL, PM_VIETNAMESE_WOMAN}, {PM_VIETNAMESE_WOMAN, PM_VIETNAMESE_LADY},
1699 {PM_ANIME_GIRL, PM_ANIME_WOMAN}, {PM_ANIME_WOMAN, PM_ANIME_LADY},
1700 {PM_MANGA_GIRL, PM_MANGA_WOMAN}, {PM_MANGA_WOMAN, PM_MANGA_LADY},
1702 {PM_TURKISH_GIRL, PM_TURKISH_WOMAN}, {PM_TURKISH_WOMAN, PM_TURKISH_LADY},
1703 {PM_PERSIAN_GIRL, PM_PERSIAN_WOMAN}, {PM_PERSIAN_WOMAN, PM_PERSIAN_LADY},
1704 {PM_WUHANESE_GIRL, PM_WUHANESE_WOMAN}, {PM_WUHANESE_WOMAN, PM_WUHANESE_LADY},
1706 {PM_FARTING_GIRL, PM_FARTING_WOMAN}, {PM_FARTING_BOY, PM_FARTING_MAN},
1707 {PM_FARTING_WOMAN, PM_FARTING_QUEEN}, {PM_FARTING_MAN, PM_FARTING_KING},
1709 {PM_RETARD_CHILD, PM_RETARD_TEEN}, {PM_RETARD_TEEN, PM_RETARD_ADULT}, {PM_RETARD_ADULT, PM_RETARD_GIT},
1711 {PM_BATTLE_BAT, PM_WARBAT},
1712 {PM_OCTOTHORPE, PM_GIANT_OCTOTHORPE},
1713 {PM_REAL_OCTOTHORPE, PM_REAL_GIANT_OCTOTHORPE},
1715 {PM_MINI_SHADE, PM_SHADE},
1716 {PM_PSUEDOGNOLL, PM_PSUEDOGNOLL_LORD},
1717 {PM_PSUEDOGNOLL_LORD, PM_PSUEDOGNOLL_KING},
1718 {PM_FLIND, PM_FLIND_LORD},
1719 {PM_DRAYCOLICH, PM_ELDER_DRAYCOLICH},
1721 {PM_SCHINDA, PM_EVOLET},
1722 {PM_EVOLET, PM_EVOLTE},
1724 /*{PM_EEVEE, THEEEVEELUTION},*/
1726 {PM_KEYSTONE_KOP, PM_KOP_SERGEANT},
1727 {PM_KOP_SERGEANT, PM_KOP_LIEUTENANT},
1728 {PM_KOP_LIEUTENANT, PM_KOP_KAPTAIN},
1729 {PM_KOP_KAPTAIN, PM_KOP_KOMMISSIONER},
1730 {PM_KOP_KOMMISSIONER, PM_KOP_KCHIEF},
1731 {PM_KOP_KCHIEF, PM_KOP_KATCHER},
1733 {PM_KOP_PIE, PM_PIE_SERGEANT},
1734 {PM_PIE_SERGEANT, PM_PIE_LIEUTENANT},
1735 {PM_PIE_LIEUTENANT, PM_PIE_KAPTAIN},
1736 {PM_PIE_KAPTAIN, PM_PIE_KOMMISSIONER},
1737 {PM_PIE_KOMMISSIONER, PM_PIE_KCHIEF},
1738 {PM_PIE_KCHIEF, PM_PIE_KATCHER},
1740 {PM_KOP_HOSE, PM_HOSE_SERGEANT},
1741 {PM_HOSE_SERGEANT, PM_HOSE_LIEUTENANT},
1742 {PM_HOSE_LIEUTENANT, PM_HOSE_KAPTAIN},
1743 {PM_HOSE_KAPTAIN, PM_HOSE_KOMMISSIONER},
1744 {PM_HOSE_KOMMISSIONER, PM_HOSE_KCHIEF},
1745 {PM_HOSE_KCHIEF, PM_HOSE_KATCHER},
1747 {PM_EQ_KOP, PM_EQ_SERGEANT},
1748 {PM_EQ_SERGEANT, PM_EQ_LIEUTENANT},
1749 {PM_EQ_LIEUTENANT, PM_EQ_KAPTAIN},
1750 {PM_EQ_KAPTAIN, PM_EQ_KOMMISSIONER},
1751 {PM_EQ_KOMMISSIONER, PM_EQ_KCHIEF},
1752 {PM_EQ_KCHIEF, PM_EQ_KATCHER},
1754 {PM_BABY_GLOP_DRAGON, PM_GLOP_DRAGON},
1755 {PM_YOUNG_GLOP_DRAGON, PM_YOUNG_ADULT_GLOP_DRAGON}, {PM_YOUNG_ADULT_GLOP_DRAGON, PM_ADULT_GLOP_DRAGON},
1756 {PM_ADULT_GLOP_DRAGON, PM_OLD_GLOP_DRAGON}, {PM_OLD_GLOP_DRAGON, PM_VERY_OLD_GLOP_DRAGON},
1757 {PM_VERY_OLD_GLOP_DRAGON, PM_ANCIENT_GLOP_DRAGON},
1759 {PM_YOUNG_POISON_DRAGON, PM_YOUNG_ADULT_POISON_DRAGON}, {PM_YOUNG_ADULT_POISON_DRAGON, PM_ADULT_POISON_DRAGON},
1760 {PM_ADULT_POISON_DRAGON, PM_OLD_POISON_DRAGON}, {PM_OLD_POISON_DRAGON, PM_VERY_OLD_POISON_DRAGON},
1761 {PM_VERY_OLD_POISON_DRAGON, PM_ANCIENT_POISON_DRAGON},
1763 {PM_YOUNG_SLEEP_DRAGON, PM_YOUNG_ADULT_SLEEP_DRAGON}, {PM_YOUNG_ADULT_SLEEP_DRAGON, PM_ADULT_SLEEP_DRAGON},
1764 {PM_ADULT_SLEEP_DRAGON, PM_OLD_SLEEP_DRAGON}, {PM_OLD_SLEEP_DRAGON, PM_VERY_OLD_SLEEP_DRAGON},
1765 {PM_VERY_OLD_SLEEP_DRAGON, PM_ANCIENT_SLEEP_DRAGON},
1767 {PM_YOUNG_FLAME_DRAGON, PM_YOUNG_ADULT_FLAME_DRAGON}, {PM_YOUNG_ADULT_FLAME_DRAGON, PM_ADULT_FLAME_DRAGON},
1768 {PM_ADULT_FLAME_DRAGON, PM_OLD_FLAME_DRAGON}, {PM_OLD_FLAME_DRAGON, PM_VERY_OLD_FLAME_DRAGON},
1769 {PM_VERY_OLD_FLAME_DRAGON, PM_ANCIENT_FLAME_DRAGON},
1771 {PM_YOUNG_SPEAR_DRAGON, PM_YOUNG_ADULT_SPEAR_DRAGON}, {PM_YOUNG_ADULT_SPEAR_DRAGON, PM_ADULT_SPEAR_DRAGON},
1772 {PM_ADULT_SPEAR_DRAGON, PM_OLD_SPEAR_DRAGON}, {PM_OLD_SPEAR_DRAGON, PM_VERY_OLD_SPEAR_DRAGON},
1773 {PM_VERY_OLD_SPEAR_DRAGON, PM_ANCIENT_SPEAR_DRAGON},
1775 {PM_YOUNG_MULTICOLOR_DRAGON, PM_YOUNG_ADULT_MULTICOLOR_DRAGON}, {PM_YOUNG_ADULT_MULTICOLOR_DRAGON, PM_ADULT_MULTICOLOR_DRAGON},
1776 {PM_ADULT_MULTICOLOR_DRAGON, PM_OLD_MULTICOLOR_DRAGON}, {PM_OLD_MULTICOLOR_DRAGON, PM_VERY_OLD_MULTICOLOR_DRAGON},
1777 {PM_VERY_OLD_MULTICOLOR_DRAGON, PM_ANCIENT_MULTICOLOR_DRAGON},
1779 {PM_CTHULHICK, PM_CTHULHIME},
1781 {PM_RADIO_KOP, PM_RADIO_SERGEANT},
1782 {PM_RADIO_SERGEANT, PM_RADIO_LIEUTENANT},
1783 {PM_RADIO_LIEUTENANT, PM_RADIO_KAPTAIN},
1784 {PM_RADIO_KAPTAIN, PM_RADIO_KOMMISSIONER},
1785 {PM_RADIO_KOMMISSIONER, PM_RADIO_KCHIEF},
1786 {PM_RADIO_KCHIEF, PM_RADIO_KATCHER},
1788 {PM_MINATOR_KOP, PM_MINATOR_SERGEANT},
1789 {PM_MINATOR_SERGEANT, PM_MINATOR_LIEUTENANT},
1790 {PM_MINATOR_LIEUTENANT, PM_MINATOR_KAPTAIN},
1791 {PM_MINATOR_KAPTAIN, PM_MINATOR_KOMMISSIONER},
1792 {PM_MINATOR_KOMMISSIONER, PM_MINATOR_KCHIEF},
1793 {PM_MINATOR_KCHIEF, PM_MINATOR_KATCHER},
1795 {PM_RNG_KOP, PM_RNG_SERGEANT},
1796 {PM_RNG_SERGEANT, PM_RNG_LIEUTENANT},
1797 {PM_RNG_LIEUTENANT, PM_RNG_KAPTAIN},
1798 {PM_RNG_KAPTAIN, PM_RNG_KOMMISSIONER},
1799 {PM_RNG_KOMMISSIONER, PM_RNG_KCHIEF},
1800 {PM_RNG_KCHIEF, PM_RNG_KATCHER},
1802 {PM_SPECTRAL_KOP, PM_SPECTRAL_SERGEANT},
1803 {PM_SPECTRAL_SERGEANT, PM_SPECTRAL_LIEUTENANT},
1804 {PM_SPECTRAL_LIEUTENANT, PM_SPECTRAL_KAPTAIN},
1805 {PM_SPECTRAL_KAPTAIN, PM_SPECTRAL_KOMMISSIONER},
1806 {PM_SPECTRAL_KOMMISSIONER, PM_SPECTRAL_KCHIEF},
1807 {PM_SPECTRAL_KCHIEF, PM_SPECTRAL_KATCHER},
1809 {PM_VAMPIRE_KOP, PM_VAMPIRE_SERGEANT},
1810 {PM_VAMPIRE_SERGEANT, PM_VAMPIRE_LIEUTENANT},
1811 {PM_VAMPIRE_LIEUTENANT, PM_VAMPIRE_KAPTAIN},
1812 {PM_VAMPIRE_KAPTAIN, PM_VAMPIRE_KOMMISSIONER},
1813 {PM_VAMPIRE_KOMMISSIONER, PM_VAMPIRE_KCHIEF},
1814 {PM_VAMPIRE_KCHIEF, PM_VAMPIRE_KATCHER},
1816 {PM_SUCCUBUS_KOP, PM_SUCCUBUS_SERGEANT},
1817 {PM_SUCCUBUS_SERGEANT, PM_SUCCUBUS_LIEUTENANT},
1818 {PM_SUCCUBUS_LIEUTENANT, PM_SUCCUBUS_KAPTAIN},
1819 {PM_SUCCUBUS_KAPTAIN, PM_SUCCUBUS_KOMMISSIONER},
1820 {PM_SUCCUBUS_KOMMISSIONER, PM_SUCCUBUS_KCHIEF},
1821 {PM_SUCCUBUS_KCHIEF, PM_SUCCUBUS_KATCHER},
1823 {PM_YENDORIAN_KOP, PM_YENDORIAN_SERGEANT},
1824 {PM_YENDORIAN_SERGEANT, PM_YENDORIAN_LIEUTENANT},
1825 {PM_YENDORIAN_LIEUTENANT, PM_YENDORIAN_KAPTAIN},
1826 {PM_YENDORIAN_KAPTAIN, PM_YENDORIAN_KOMMISSIONER},
1827 {PM_YENDORIAN_KOMMISSIONER, PM_YENDORIAN_KCHIEF},
1828 {PM_YENDORIAN_KCHIEF, PM_YENDORIAN_KATCHER},
1830 {PM_OFFICER_JENNY, PM_OFFICER_ALINA},
1831 {PM_OFFICER_ALINA, PM_OFFICER_HANNA},
1832 {PM_OFFICER_HANNA, PM_OFFICER_JULIA},
1833 {PM_OFFICER_JULIA, PM_OFFICER_KATHARINA},
1834 {PM_OFFICER_KATHARINA, PM_OFFICER_ELENA},
1835 {PM_OFFICER_ELENA, PM_OFFICER_NATALIA},
1837 {PM_UNDEAD_KOP, PM_UNDEAD_SERGEANT},
1838 {PM_UNDEAD_SERGEANT, PM_UNDEAD_LIEUTENANT},
1839 {PM_UNDEAD_LIEUTENANT, PM_UNDEAD_KAPTAIN},
1840 {PM_UNDEAD_KAPTAIN, PM_UNDEAD_KOMMISSIONER},
1841 {PM_UNDEAD_KOMMISSIONER, PM_UNDEAD_KCHIEF},
1842 {PM_UNDEAD_KCHIEF, PM_UNDEAD_KATCHER},
1844 {PM_KEYSTONE_POLICEMAN, PM_POLICEMAN_SERGEANT},
1845 {PM_POLICEMAN_SERGEANT, PM_POLICEMAN_LIEUTENANT},
1846 {PM_POLICEMAN_LIEUTENANT, PM_POLICEMAN_KAPTAIN},
1847 {PM_POLICEMAN_KAPTAIN, PM_POLICEMAN_KOMMISSIONER},
1848 {PM_POLICEMAN_KOMMISSIONER, PM_POLICEMAN_KCHIEF},
1849 {PM_POLICEMAN_KCHIEF, PM_POLICEMAN_KATCHER},
1851 {PM_KEYSTONE_OFFICER, PM_OFFICER_SERGEANT},
1852 {PM_OFFICER_SERGEANT, PM_OFFICER_LIEUTENANT},
1853 {PM_OFFICER_LIEUTENANT, PM_OFFICER_KAPTAIN},
1854 {PM_OFFICER_KAPTAIN, PM_OFFICER_KOMMISSIONER},
1855 {PM_OFFICER_KOMMISSIONER, PM_OFFICER_KCHIEF},
1856 {PM_OFFICER_KCHIEF, PM_OFFICER_KATCHER},
1858 {PM_KEYSTONE_WARDER, PM_WARDER_SERGEANT},
1859 {PM_WARDER_SERGEANT, PM_WARDER_LIEUTENANT},
1860 {PM_WARDER_LIEUTENANT, PM_WARDER_KAPTAIN},
1861 {PM_WARDER_KAPTAIN, PM_WARDER_KOMMISSIONER},
1862 {PM_WARDER_KOMMISSIONER, PM_WARDER_KCHIEF},
1863 {PM_WARDER_KCHIEF, PM_WARDER_KATCHER},
1865 {PM_KEYSTONE_INSPECTOR, PM_INSPECTOR_SERGEANT},
1866 {PM_INSPECTOR_SERGEANT, PM_INSPECTOR_LIEUTENANT},
1867 {PM_INSPECTOR_LIEUTENANT, PM_INSPECTOR_KAPTAIN},
1868 {PM_INSPECTOR_KAPTAIN, PM_INSPECTOR_KOMMISSIONER},
1869 {PM_INSPECTOR_KOMMISSIONER, PM_INSPECTOR_KCHIEF},
1870 {PM_INSPECTOR_KCHIEF, PM_INSPECTOR_KATCHER},
1872 {PM_KEYSTONE_DETECTIVE, PM_DETECTIVE_SERGEANT},
1873 {PM_DETECTIVE_SERGEANT, PM_DETECTIVE_LIEUTENANT},
1874 {PM_DETECTIVE_LIEUTENANT, PM_DETECTIVE_KAPTAIN},
1875 {PM_DETECTIVE_KAPTAIN, PM_DETECTIVE_KOMMISSIONER},
1876 {PM_DETECTIVE_KOMMISSIONER, PM_DETECTIVE_KCHIEF},
1877 {PM_DETECTIVE_KCHIEF, PM_DETECTIVE_KATCHER},
1879 {PM_BULLETPROOF_KOP, PM_BULLETPROOF_SERGEANT},
1880 {PM_BULLETPROOF_SERGEANT, PM_BULLETPROOF_LIEUTENANT},
1881 {PM_BULLETPROOF_LIEUTENANT, PM_BULLETPROOF_KAPTAIN},
1882 {PM_BULLETPROOF_KAPTAIN, PM_BULLETPROOF_KOMMISSIONER},
1883 {PM_BULLETPROOF_KOMMISSIONER, PM_BULLETPROOF_KCHIEF},
1884 {PM_BULLETPROOF_KCHIEF, PM_BULLETPROOF_KATCHER},
1886 {PM_SMALL_GOAT_SPAWN, PM_GOAT_SPAWN},
1887 {PM_GOAT_SPAWN, PM_GIANT_GOAT_SPAWN},
1889 {PM_RAM, PM_LARGE_RAM},
1890 {PM_LARGE_RAM, PM_WARRAM},
1892 {PM_BABY_PENGUIN, PM_PENGUIN},
1893 {PM_PENGUIN, PM_EMPEROR_PENGUIN},
1894 {PM_EMPEROR_PENGUIN, PM_TUXEDO_PENGUIN},
1896 {PM_SHOCK_WOLF_CUB, PM_SHOCK_WOLF},
1897 {PM_GREEN_WOLF_CUB, PM_GREEN_WOLF},
1898 {PM_FROZEN_TIGER_CUB, PM_FROZEN_TIGER},
1899 {PM_PANTHER_CUB, PM_PANTHER},
1900 {PM_BABY_CAMEL, PM_GIANT_CAMEL},
1901 {PM_BABY_THUNDERBIRD, PM_THUNDERBIRD},
1902 {PM_BABY_HYDRA, PM_HYDRA},
1904 {PM_BABY_BROOD_WASP, PM_BROOD_WASP},
1906 /* WAC -- added killer coin piles */
1908 {PM_PILE_OF_COPPER_COINS, PM_PILE_OF_SILVER_COINS},
1909 {PM_PILE_OF_SILVER_COINS, PM_PILE_OF_PLATINUM_COINS},
1911 {PM_PILE_OF_KILLER_COINS, PM_LARGE_PILE_OF_KILLER_COINS},
1912 {PM_LARGE_PILE_OF_KILLER_COINS,PM_HUGE_PILE_OF_KILLER_COINS},
1913 /* KMH -- added more sequences */
1914 {PM_DINGO_PUPPY, PM_DINGO}, {PM_DINGO, PM_LARGE_DINGO},
1915 {PM_PONY, PM_HORSE}, {PM_HORSE, PM_WARHORSE},
1916 {PM_GREEN_PONY, PM_GREEN_HORSE}, {PM_GREEN_HORSE, PM_GREEN_WARHORSE},
1917 {PM__CHAN_PONY, PM__CHAN_HORSE}, {PM__CHAN_HORSE, PM__CHAN_WARHORSE},
1918 {PM_LARVA, PM_MAGGOT}, {PM_MAGGOT, PM_DUNG_WORM},
1919 {PM_WINTER_WOLF_CUB, PM_WINTER_WOLF},
1920 {PM_GIANT_TICK, PM_GIANT_FLEA}, {PM_GIANT_FLEA, PM_GIANT_LOUSE}, /* RJ */
1921 /* DS -- growing up, Lethe style */
1922 {PM_DEEP_ONE, PM_DEEPER_ONE}, {PM_DEEPER_ONE, PM_DEEPEST_ONE},
1923 {PM_LAMB, PM_SHEEP},
1924 {PM_SHOGGOTH, PM_GIANT_SHOGGOTH},
1925 {PM_GNOLL, PM_GNOLL_WARRIOR}, {PM_GNOLL_WARRIOR, PM_GNOLL_CHIEFTAIN},
1926 {PM_MIGO_DRONE, PM_MIGO_WARRIOR}, {PM_TSETSE_FLY, PM_TRETRE_FLY},
1927 {PM_GELATINOUS_CUBE, PM_GELATINOUS_DICE}, {PM_COCKATRICE, PM_RUBBER_CHICKEN},
1928 {PM_RUBBER_CHICKEN, PM_TURBO_CHICKEN}, {PM_FLOATING_EYE, PM_SWEEPING_EYE},
1929 {PM_HOBBIT, PM_HOBBIT_LORD}, {PM_HOBBIT_LORD, PM_HOBBIT_KING},
1930 {PM_HOBBIT_THIEF, PM_HOBBIT_BRIGAND_THIEF}, {PM_HOBBIT_BRIGAND_THIEF, PM_HOBBIT_MASTER_THIEF},
1931 {PM_DWARF_THIEF, PM_DWARVEN_BRIGAND_THIEF}, {PM_DWARVEN_BRIGAND_THIEF, PM_DWARVEN_MASTER_THIEF},
1932 {PM_DARK_THIEF, PM_DARKER_THIEF}, {PM_DARKER_THIEF, PM_DARKEST_THIEF},
1933 {PM_BRAIN_EATER, PM_MIND_SUCKER}, {PM_MIND_SUCKER, PM_MIND_FLAYER}, {PM_MINOR_MIND_FLAYER, PM_MIND_FLAYER},
1934 {PM_MASTER_MIND_FLAYER, PM_GRANDMASTER_MIND_FLAYER}, {PM_LEPRECHAUN, PM_MEAN_ROBBER},
1935 {PM_GIANT_TRAPDOOR_SPIDER, PM_BLACK_WIDOW}, {PM_GIANT_SPIDER, PM_GIANT_TRAPDOOR_SPIDER},
1936 {PM_AGGRESSIVE_LICHEN, PM_POISON_LICHEN},
1937 {PM_LICHEN, PM_POISON_LICHEN}, {PM_POISON_LICHEN, PM_ORE_LICHEN},
1938 {PM_ORE_LICHEN, PM_MASTER_LICHEN}, {PM_MASTER_LICHEN, PM_GRANDMASTER_LICHEN},
1940 {PM_STALKING_LICHEN, PM_STALKING_POISON_LICHEN}, {PM_STALKING_POISON_LICHEN, PM_STALKING_ORE_LICHEN},
1941 {PM_STALKING_ORE_LICHEN, PM_STALKING_MASTER_LICHEN}, {PM_STALKING_MASTER_LICHEN, PM_STALKING_GRANDMASTER_LICHEN},
1943 {PM_SPORE_LICHEN, PM_POISON_SPORE_LICHEN}, {PM_POISON_SPORE_LICHEN, PM_ORE_SPORE_LICHEN},
1944 {PM_ORE_SPORE_LICHEN, PM_MASTER_SPORE_LICHEN}, {PM_MASTER_SPORE_LICHEN, PM_GRANDMASTER_SPORE_LICHEN},
1946 {PM_COLONY_LICHEN, PM_POISON_COLONY_LICHEN}, {PM_POISON_COLONY_LICHEN, PM_ORE_COLONY_LICHEN},
1947 {PM_ORE_COLONY_LICHEN, PM_MASTER_COLONY_LICHEN}, {PM_MASTER_COLONY_LICHEN, PM_GRANDMASTER_COLONY_LICHEN},
1949 {PM_HARDCORE_CATERPILLAR, PM_BELINAY},
1950 {PM_PROMISING_ALIEN_LARVA, PM_SALMA},
1951 {PM_WENCHY_HUSSY, PM_ROXY},
1952 {PM_PERFUME_COMPANION, PM_TATJANA},
1954 {PM_PETTY_NOISE_HELPER, PM_KATI},
1955 {PM_NOISE_HELPER, PM_KATI},
1956 {PM_SQUEAKE_PART, PM_MARIKE},
1957 {PM_PETTY_LATEBLUTT, PM_BIRGIT},
1958 {PM_LATEBLUTT, PM_BIRGIT},
1959 {PM_BLUE_ABSENCE_OF_NOISE, PM_YVONNE},
1960 {PM_PETTY_EXCITING_ASS, PM_ANTJE},
1961 {PM_EXCITING_ASS, PM_ANTJE},
1962 {PM_ASIAN_BRIDE, PM_THAI},
1964 {PM_GNOME_THIEF, PM_GNOMISH_BRIGAND_THIEF}, {PM_GNOMISH_BRIGAND_THIEF, PM_GNOMISH_MASTER_THIEF},
1965 {PM_GNOLL_THIEF, PM_GNOLL_ROGUE}, {PM_GNOLL_ROGUE, PM_GNOLL_GANGSTER},
1966 {PM_OGRE_THIEF, PM_OGRE_BRIGAND_THIEF}, {PM_OGRE_BRIGAND_THIEF, PM_OGRE_MASTER_THIEF},
1967 {PM_BAD_EGG, PM_ANIMATED_ROTTEN_EGG},
1968 {PM_STATUE_GARGOYLE, PM_BLOOD_CLAW},
1969 {PM_BLOOD_CLAW, PM_DEATH_WING},
1970 {PM_XORN, PM_GREATER_XORN},
1971 {PM_LESSER_NISHIKIORI, PM_NISHIKIORI},
1972 {PM_PETIT_MIMIC, PM_SMALL_MIMIC},
1973 {PM_KILLER_BEE, PM_HUNTER_BEE},
1974 {PM_SLUG, PM_LORD_SLUG}, {PM_LORD_SLUG, PM_KING_SLUG},
1975 {PM_WEASEL, PM_LARGE_WEASEL},
1976 {PM_LARGE_WEASEL, PM_SILVER_WEASEL},
1977 {PM_SILVER_WEASEL, PM_WHIRLWIND_WEASEL},
1978 {PM_RACOON_DOG, PM_LARGE_RACOON_DOG},
1979 {PM_LARGE_RACOON_DOG, PM_RACOON_DOG_DRUNKER},
1980 {PM_RACOON_DOG_DRUNKER, PM_ELDER_RACOON_DOG},
1981 {PM_ELDER_RACOON_DOG, PM_MYSTIC_RACOON_DOG},
1982 {PM_FOX, PM_LARGE_FOX},
1983 {PM_LARGE_FOX, PM_SILVER_FOX},
1984 {PM_SILVER_FOX, PM_ELDER_FOX},
1985 {PM_ELDER_FOX, PM_MYSTIC_FOX},
1986 {PM_RAGING_ORC, PM_ORC_BERSERKER},
1987 {PM_RAGING_OGRE, PM_OGRE_BERSERKER},
1988 {PM_SMALL_TARANTULA, PM_REALLY_BIG_TARANTULA},
1989 {PM_QUANTUM_MECHANIC, PM_QUANTUM_STATISTICAL_MECHANIC},
1990 {PM_TSUCHINOKO, PM_NODUCHI},
1991 {PM_NORMAL_FROG, PM_LEOPARD_FROG},
1992 {PM_GIANT_TOAD, PM_LORD_TOAD},
1993 {PM_LORD_TOAD, PM_KING_TOAD},
1994 {PM_FROGMAN, PM_FROGMAN_LEADER},
1995 {PM_FROGMAN_LEADER, PM_FROGMAN_CHIEFTAIN},
1996 {PM_CHICK, PM_CHICKEN}, {PM_CHICKEN, PM_LARGE_CHICKEN},
1997 {PM_TURKEY_CHICK, PM_TURKEY},
1998 {PM_COCKATOO_CHICK, PM_COCKATOO},
1999 {PM_PARROT_CHICK, PM_PARROT},
2000 {PM_WOLF_CUB, PM_WOLF},
2001 {PM_LION_CUB, PM_LION},
2002 {PM_HELLCAT, PM_PREDATOR_HELLCAT},
2003 {PM_TASLOI, PM_TASLOI_LOOKOUT},
2004 {PM_TASLOI_LOOKOUT, PM_TASLOI_CHIEF},
2005 {PM_KAPPA, PM_SWAMP_KAPPA},
2006 {PM_GOBLIN_RAIDER, PM_GOBLIN_LEADER},
2007 {PM_CRUDE_ORC, PM_ORC_INFANTRY}, {PM_ORC_INFANTRY, PM_ORC_CAPTAIN},
2008 {PM_MOB_ORC, PM_CROWD_ORC},
2009 {PM_CROWD_ORC, PM_WAR_ORC},
2010 {PM_ISENGARD_ORC, PM_ORC_CAPTAIN},
2011 {PM_ONSEN_PENGUIN, PM_ADELIE_ONSEN_PENGUIN},
2012 {PM_ADELIE_ONSEN_PENGUIN, PM_EMPEROR_ONSEN_PENGUIN},
2013 {PM_LITTLE_PIG, PM_PIG},
2014 {PM_LITTLE_WILD_PIG, PM_WILD_PIG},
2015 {PM_BABY_WILD_BOAR, PM_BOAR},
2016 {PM_BABY_RIVER_HOG, PM_RED_RIVER_HOG},
2017 {PM_SILKY_ANTEATER, PM_ANTEATER},
2018 {PM_ANTEATER, PM_GIANT_ANTEATER},
2019 {PM_CULF, PM_BULL},
2020 {PM_SLIMEBESU, PM_SLIMEBESU_LORD},
2021 {PM_PETIT_PSEUDO_RAT, PM_PSEUDO_RAT},
2022 {PM_PSEUDO_RAT, PM_LARGE_PSEUDO_RAT},
2023 {PM_CENTIPEDE, PM_LARGE_CENTIPEDE},
2024 {PM_LARGE_CENTIPEDE, PM_BIG_CENTIPEDE},
2025 {PM_WHITE_UNICORN_FOAL, PM_WHITE_UNICORN},
2026 {PM_GRAY_UNICORN_FOAL, PM_GRAY_UNICORN},
2027 {PM_BLACK_UNICORN_FOAL, PM_BLACK_UNICORN},
2028 {PM_LEOCENTAUR, PM_LEOCENTAUR_CHIEF},
2029 {PM_LEOCENTAUR_CHIEF, PM_LEOCENTAUR_KING},
2030 {PM_TWO_HEADED_OGRE, PM_THREE_HEADED_OGRE},
2031 {PM_TWO_HEADED_SNAKE, PM_THREE_HEADED_SNAKE},
2032 {PM_TWO_FOOTED_SNAKE, PM_FOUR_FOOTED_SNAKE},
2033 {PM_FOUR_FOOTED_SNAKE, PM_SIX_FOOTED_SNAKE},
2034 {PM_TWO_HEADED_TROLL, PM_THREE_HEADED_TROLL},
2035 {PM_BLACK_BEAR_CUB, PM_BLACK_BEAR},
2036 {PM_WOOD_BEAR_CUB, PM_WOOD_BEAR},
2037 {PM_LESSER_OMOCHI_BEAST, PM_OMOCHI_BEAST},
2038 {PM_TUNDRA_BEAR_CUB, PM_TUNDRA_BEAR},
2039 {PM_ICE_BEAR_CUB, PM_ICE_BEAR},
2040 {PM_LOWER_HULK, PM_UMBER_HULK},
2041 {PM_YUKINKO, PM_YUKIONNA},
2042 {PM_EGGMAN, PM_SOFT_BOILED_EGGMAN},
2043 {PM_SOFT_BOILED_EGGMAN, PM_HARD_BOILED_EGGMAN},
2044 {PM_KOGEPAN, PM_CHARRED_KOGEPAN},
2045 {PM_CHARRED_KOGEPAN, PM_BURNED_OUT_KOGEPAN},
2046 {PM_LITTLE_PISACA, PM_PISACA}, {PM_PISACA, PM_PISACA_LORD},
2048 {NON_PM,NON_PM}
2052 little_to_big(montype)
2053 int montype;
2055 #ifndef AIXPS2_BUG
2056 register int i;
2058 for (i = 0; grownups[i][0] >= LOW_PM; i++)
2059 if(montype == grownups[i][0]) return grownups[i][1];
2061 if (montype == PM_EEVEE) return u.eeveelution;
2062 return montype;
2063 #else
2064 /* AIX PS/2 C-compiler 1.1.1 optimizer does not like the above for loop,
2065 * and causes segmentation faults at runtime. (The problem does not
2066 * occur if -O is not used.)
2067 * lehtonen@cs.Helsinki.FI (Tapio Lehtonen) 28031990
2069 int i;
2070 int monvalue;
2072 monvalue = montype;
2073 for (i = 0; grownups[i][0] >= LOW_PM; i++)
2074 if(montype == grownups[i][0]) monvalue = grownups[i][1];
2076 if (montype == PM_EEVEE) return u.eeveelution;
2077 return monvalue;
2078 #endif
2082 big_to_little(montype)
2083 int montype;
2085 register int i;
2087 for (i = 0; grownups[i][0] >= LOW_PM; i++)
2088 if(montype == grownups[i][1]) return grownups[i][0];
2090 if (montype == u.eeveelution) return PM_EEVEE;
2091 return montype;
2095 * Return the permonst ptr for the race of the monster.
2096 * Returns correct pointer for non-polymorphed and polymorphed
2097 * player. It does not return a pointer to player role character.
2099 const struct permonst *
2100 raceptr(mtmp)
2101 struct monst *mtmp;
2103 if (mtmp == &youmonst && !Upolyd) return(&mons[urace.malenum]);
2104 else return(mtmp->data);
2107 static const char *levitate[4] = { "float", "Float", "wobble", "Wobble" };
2108 static const char *flys[4] = { "fly", "Fly", "flutter", "Flutter" };
2109 static const char *flyl[4] = { "fly", "Fly", "stagger", "Stagger" };
2110 static const char *slither[4] = { "slither", "Slither", "falter", "Falter" };
2111 static const char *ooze[4] = { "ooze", "Ooze", "tremble", "Tremble" };
2112 static const char *immobile[4] = { "wiggle", "Wiggle", "pulsate", "Pulsate" };
2113 static const char *crawl[4] = { "crawl", "Crawl", "falter", "Falter" };
2115 const char *
2116 locomotion(ptr, def)
2117 const struct permonst *ptr;
2118 const char *def;
2120 int capitalize = (*def == highc(*def));
2122 return (
2123 is_floater(ptr) ? levitate[capitalize] :
2124 (is_flyer(ptr) && ptr->msize <= MZ_SMALL) ? flys[capitalize] :
2125 (is_flyer(ptr) && ptr->msize > MZ_SMALL) ? flyl[capitalize] :
2126 slithy(ptr) ? slither[capitalize] :
2127 amorphous(ptr) ? ooze[capitalize] :
2128 !ptr->mmove ? immobile[capitalize] :
2129 nolimbs(ptr) ? crawl[capitalize] :
2135 const char *
2136 stagger(ptr, def)
2137 const struct permonst *ptr;
2138 const char *def;
2140 int capitalize = 2 + (*def == highc(*def));
2142 return (
2143 is_floater(ptr) ? levitate[capitalize] :
2144 (is_flyer(ptr) && ptr->msize <= MZ_SMALL) ? flys[capitalize] :
2145 (is_flyer(ptr) && ptr->msize > MZ_SMALL) ? flyl[capitalize] :
2146 slithy(ptr) ? slither[capitalize] :
2147 amorphous(ptr) ? ooze[capitalize] :
2148 !ptr->mmove ? immobile[capitalize] :
2149 nolimbs(ptr) ? crawl[capitalize] :
2155 /* return a phrase describing the effect of fire attack on a type of monster */
2156 const char *
2157 on_fire(mptr, mattk)
2158 struct permonst *mptr;
2159 struct attack *mattk;
2161 const char *what;
2163 switch (monsndx(mptr)) {
2164 case PM_FLAMING_SPHERE:
2165 case PM_SUMMONED_FLAMING_SPHERE:
2166 case PM_FIRE_VORTEX:
2167 case PM_FIRE_ELEMENTAL:
2168 case PM_SALAMANDER:
2169 what = "already on fire";
2170 break;
2171 case PM_WATER_ELEMENTAL:
2172 case PM_FOG_CLOUD:
2173 case PM_STEAM_VORTEX:
2174 what = "boiling";
2175 break;
2176 case PM_ICE_VORTEX:
2177 case PM_GLASS_GOLEM:
2178 what = "melting";
2179 break;
2180 case PM_STONE_GOLEM:
2181 case PM_CLAY_GOLEM:
2182 case PM_GOLD_GOLEM:
2183 case PM_AIR_ELEMENTAL:
2184 case PM_EARTH_ELEMENTAL:
2185 case PM_DUST_VORTEX:
2186 case PM_ENERGY_VORTEX:
2187 what = "heating up";
2188 break;
2189 default:
2190 what = (mattk->aatyp == AT_HUGS) ? "being roasted" : "on fire";
2191 break;
2193 return what;
2196 #endif /* OVLB */
2198 /*mondata.c*/