1 #ifndef __A_MORPH__ 2 #define __A_MORPH__ 3 4 #define MORPHTICS (40*TICRATE) 5 #define MAXMORPHHEALTH 30 6 7 // Morph style states how morphing affects health and 8 // other effects in the game; only valid for players. 9 // Default should be the old Heretic/HeXen behaviour, 10 // so (int) value of MORPH_OLDEFFECTS *must* be zero. 11 enum 12 { 13 MORPH_OLDEFFECTS = 0x00000000, // Default to old Heretic/HeXen behaviour unless flags given 14 MORPH_ADDSTAMINA = 0x00000001, // Player has a "power" instead of a "curse" (add stamina instead of limiting to health) 15 MORPH_FULLHEALTH = 0x00000002, // Player uses new health semantics (!POWER => MaxHealth of animal, POWER => Normal health behaviour) 16 MORPH_UNDOBYTOMEOFPOWER = 0x00000004, // Player unmorphs upon activating a Tome of Power 17 MORPH_UNDOBYCHAOSDEVICE = 0x00000008, // Player unmorphs upon activating a Chaos Device 18 MORPH_FAILNOTELEFRAG = 0x00000010, // Player stays morphed if unmorph by Tome of Power fails 19 MORPH_FAILNOLAUGH = 0x00000020, // Player doesn't laugh if unmorph by Chaos Device fails 20 MORPH_WHENINVULNERABLE = 0x00000040, // Player can morph when invulnerable but ONLY if doing it to themselves 21 MORPH_LOSEACTUALWEAPON = 0x00000080, // Player loses specified morph weapon only (not "whichever they have when unmorphing") 22 MORPH_NEWTIDBEHAVIOUR = 0x00000100, // Actor TID is by default transferred from the old actor to the new actor 23 MORPH_UNDOBYDEATH = 0x00000200, // Actor unmorphs when killed and (unless MORPH_UNDOBYDEATHSAVES) stays dead 24 MORPH_UNDOBYDEATHFORCED = 0x00000400, // Actor (if unmorphed when killed) forces unmorph (not very useful with UNDOBYDEATHSAVES) 25 MORPH_UNDOBYDEATHSAVES = 0x00000800, // Actor (if unmorphed when killed) regains their health and doesn't die 26 MORPH_UNDOBYTIMEOUT = 0x00001000, // Player unmorphs once countdown expires 27 MORPH_UNDOALWAYS = 0x00002000, // Powerups must always unmorph, no matter what. 28 29 MORPH_STANDARDUNDOING = MORPH_UNDOBYTOMEOFPOWER | MORPH_UNDOBYCHAOSDEVICE | MORPH_UNDOBYTIMEOUT, 30 }; 31 32 struct PClass; 33 class AActor; 34 class player_t; 35 class AMorphedMonster; 36 37 bool P_MorphPlayer (player_t *activator, player_t *player, const PClass *morphclass, int duration = 0, int style = 0, 38 const PClass *enter_flash = NULL, const PClass *exit_flash = NULL); 39 bool P_UndoPlayerMorph (player_t *activator, player_t *player, int unmorphflag = 0, bool force = false); 40 bool P_MorphMonster (AActor *actor, const PClass *morphclass, int duration = 0, int style = 0, 41 const PClass *enter_flash = NULL, const PClass *exit_flash = NULL); 42 bool P_UndoMonsterMorph (AMorphedMonster *beast, bool force = false); 43 bool P_UpdateMorphedMonster (AActor *actor); 44 bool P_MorphedDeath(AActor *actor, AActor **morphed, int *morphedstyle, int *morphedhealth); 45 46 #endif //__A_MORPH__ 47