diff --git a/default.cbd b/default.cbd index 386f453df5..db340a4a40 100644 --- a/default.cbd +++ b/default.cbd @@ -173,10 +173,10 @@ ${COMPILER} "autostart.cpp a.nas blocks.nas misc.nas tmap.nas tmap2.nas tmap3.na a_clericstaff.cpp a_demons.cpp a_dragon.cpp a_ettin.cpp a_fighteraxe.cpp \ a_fighterboss.cpp a_fighterhammer.cpp a_fighterplayer.cpp a_fighterquietus.cpp \ a_firedemon.cpp a_flechette.cpp a_fog.cpp a_healingradius.cpp \ - a_heresiarch.cpp a_hexenarmor.cpp a_hexendecorations.cpp a_hexenkeys.cpp \ + a_heresiarch.cpp \ a_hexenspecialdecs.cpp a_iceguy.cpp a_korax.cpp a_mageboss.cpp a_magecone.cpp \ a_magelightning.cpp a_mageplayer.cpp a_magestaff.cpp a_magewand.cpp a_mana.cpp \ - a_pig.cpp a_puzzleitems.cpp a_scriptprojectiles.cpp a_serpent.cpp a_speedboots.cpp \ + a_pig.cpp a_puzzleitems.cpp a_scriptprojectiles.cpp a_serpent.cpp \ a_spike.cpp a_summon.cpp a_teleportother.cpp a_weaponpieces.cpp a_wraith.cpp \ hexen_sbar.cpp a_artiegg.cpp a_artitele.cpp a_minotaur.cpp a_ravenambient.cpp \ a_acolyte.cpp a_alienspectres.cpp \ @@ -212,6 +212,7 @@ src_paths tools/makewad ${COMPILER} makewad.c ioapi.c zip.c ${LINK} tools/makewad/makewad +LDFLAGS = '' src_paths tools/xlatcc ${COMPILER} xlat-parse.tab.c gen.c ${LINK} tools/xlatcc/xlatcc diff --git a/docs/rh-log.txt b/docs/rh-log.txt index 4e6d919a78..59c287fb3e 100644 --- a/docs/rh-log.txt +++ b/docs/rh-log.txt @@ -1,5 +1,6 @@ May 4, 2006 (Changes by Graf Zahl) -- Converted A_Hexendecorations.cpp +- Converted A_Puzzleitems.cpp and parts of A_HexenSpecialdecs.cpp to DECORATE. +- Converted A_Hexendecorations.cpp to DECORATE. - Changed the lower decal spawning code to transfer the main decal's color if the lower decal's default color is the same as the main decal's. - Changed the decal stretcher back to use the specified size parameters as a diff --git a/src/d_dehacked.cpp b/src/d_dehacked.cpp index 96e235bdbd..cccdf5d8cb 100644 --- a/src/d_dehacked.cpp +++ b/src/d_dehacked.cpp @@ -2644,6 +2644,9 @@ bool ADehackedPickup::TryPickup (AActor *toucher) const char *ADehackedPickup::PickupMessage () { + const char *message = RealPickup->GetClass()->Meta.GetMetaString (AIMETA_PickupMessage); + if (message != NULL) return message; + return RealPickup->PickupMessage (); } diff --git a/src/g_hexen/a_hexenspecialdecs.cpp b/src/g_hexen/a_hexenspecialdecs.cpp index b0bd013dae..e09561a435 100644 --- a/src/g_hexen/a_hexenspecialdecs.cpp +++ b/src/g_hexen/a_hexenspecialdecs.cpp @@ -47,115 +47,7 @@ public: IMPLEMENT_ABSTRACT_ACTOR (ASwitchingDecoration) -// Winged Statue (no skull) ------------------------------------------------- -class AZWingedStatueNoSkull : public ASwitchingDecoration -{ - DECLARE_ACTOR (AZWingedStatueNoSkull, ASwitchingDecoration) -}; - -FState AZWingedStatueNoSkull::States[] = -{ - S_NORMAL (STWN, 'A', -1, NULL, NULL), - S_NORMAL (STWN, 'B', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AZWingedStatueNoSkull, Hexen, 9011, 0) - PROP_RadiusFixed (10) - PROP_HeightFixed (62) - PROP_Flags (MF_SOLID) - - PROP_SpawnState (0) - PROP_SeeState (1) - PROP_MeleeState (0) -END_DEFAULTS - -// Gem pedestal ------------------------------------------------------------- - -class AZGemPedestal : public ASwitchingDecoration -{ - DECLARE_ACTOR (AZGemPedestal, ASwitchingDecoration) -}; - -FState AZGemPedestal::States[] = -{ - S_NORMAL (GMPD, 'A', -1, NULL, NULL), - S_NORMAL (GMPD, 'B', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AZGemPedestal, Hexen, 9012, 0) - PROP_RadiusFixed (10) - PROP_HeightFixed (40) - PROP_Flags (MF_SOLID) - - PROP_SpawnState (0) - PROP_SeeState (1) - PROP_MeleeState (0) -END_DEFAULTS - -// Tree (destructible) ------------------------------------------------------ - -class ATreeDestructible : public AActor -{ - DECLARE_ACTOR (ATreeDestructible, AActor) -public: - void GetExplodeParms (int &damage, int &distance, bool &hurtSource); - void Die (AActor *source, AActor *inflictor); -}; - -FState ATreeDestructible::States[] = -{ -#define S_ZTREEDESTRUCTIBLE 0 - S_NORMAL (TRDT, 'A', -1, NULL , NULL), - -#define S_ZTREEDES_D (S_ZTREEDESTRUCTIBLE+1) - S_NORMAL (TRDT, 'B', 5, NULL , &States[S_ZTREEDES_D+1]), - S_NORMAL (TRDT, 'C', 5, A_Scream , &States[S_ZTREEDES_D+2]), - S_NORMAL (TRDT, 'D', 5, NULL , &States[S_ZTREEDES_D+3]), - S_NORMAL (TRDT, 'E', 5, NULL , &States[S_ZTREEDES_D+4]), - S_NORMAL (TRDT, 'F', 5, NULL , &States[S_ZTREEDES_D+5]), - S_NORMAL (TRDT, 'G', -1, NULL , NULL), - -#define S_ZTREEDES_X (S_ZTREEDES_D+6) - S_BRIGHT (TRDT, 'H', 5, A_Pain , &States[S_ZTREEDES_X+1]), - S_BRIGHT (TRDT, 'I', 5, NULL , &States[S_ZTREEDES_X+2]), - S_BRIGHT (TRDT, 'J', 5, NULL , &States[S_ZTREEDES_X+3]), - S_BRIGHT (TRDT, 'K', 5, NULL , &States[S_ZTREEDES_X+4]), - S_BRIGHT (TRDT, 'L', 5, NULL , &States[S_ZTREEDES_X+5]), - S_BRIGHT (TRDT, 'M', 5, A_Explode , &States[S_ZTREEDES_X+6]), - S_BRIGHT (TRDT, 'N', 5, NULL , &States[S_ZTREEDES_X+7]), - S_NORMAL (TRDT, 'O', 5, NULL , &States[S_ZTREEDES_X+8]), - S_NORMAL (TRDT, 'P', 5, NULL , &States[S_ZTREEDES_X+9]), - S_NORMAL (TRDT, 'Q', -1, NULL , NULL) -}; - -IMPLEMENT_ACTOR (ATreeDestructible, Hexen, 8062, 0) - PROP_SpawnHealth (70) - PROP_RadiusFixed (15) - PROP_HeightFixed (180) - PROP_MassLong (INT_MAX) - PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD) - PROP_Flags4 (MF4_NOICEDEATH) - - PROP_SpawnState (S_ZTREEDESTRUCTIBLE) - PROP_DeathState (S_ZTREEDES_D) - PROP_BDeathState (S_ZTREEDES_X) - - PROP_PainSound ("TreeExplode") - PROP_DeathSound ("TreeBreak") -END_DEFAULTS - -void ATreeDestructible::GetExplodeParms (int &damage, int &distance, bool &hurtSource) -{ - damage = 10; -} - -void ATreeDestructible::Die (AActor *source, AActor *inflictor) -{ - Super::Die (source, inflictor); - height = 24*FRACUNIT; - flags &= ~MF_CORPSE; -} // Pottery1 ------------------------------------------------------------------ @@ -700,175 +592,6 @@ void A_LeafCheck (AActor *actor) // Torch base class --------------------------------------------------------- -// Twined torch ------------------------------------------------------------- - -class AZTwinedTorch : public ASwitchableDecoration -{ - DECLARE_ACTOR (AZTwinedTorch, ASwitchableDecoration) -public: - void Activate (AActor *activator); -}; - -FState AZTwinedTorch::States[] = -{ -#define S_ZTWINEDTORCH 0 - S_BRIGHT (TWTR, 'A', 4, NULL , &States[S_ZTWINEDTORCH+1]), - S_BRIGHT (TWTR, 'B', 4, NULL , &States[S_ZTWINEDTORCH+2]), - S_BRIGHT (TWTR, 'C', 4, NULL , &States[S_ZTWINEDTORCH+3]), - S_BRIGHT (TWTR, 'D', 4, NULL , &States[S_ZTWINEDTORCH+4]), - S_BRIGHT (TWTR, 'E', 4, NULL , &States[S_ZTWINEDTORCH+5]), - S_BRIGHT (TWTR, 'F', 4, NULL , &States[S_ZTWINEDTORCH+6]), - S_BRIGHT (TWTR, 'G', 4, NULL , &States[S_ZTWINEDTORCH+7]), - S_BRIGHT (TWTR, 'H', 4, NULL , &States[S_ZTWINEDTORCH+0]), - -#define S_ZTWINEDTORCH_UNLIT (S_ZTWINEDTORCH+8) - S_NORMAL (TWTR, 'I', -1, NULL , NULL) -}; - -IMPLEMENT_ACTOR (AZTwinedTorch, Hexen, 116, 0) - PROP_RadiusFixed (10) - PROP_HeightFixed (64) - PROP_Flags (MF_SOLID) - - PROP_SpawnState (S_ZTWINEDTORCH) - PROP_SeeState (S_ZTWINEDTORCH) - PROP_MeleeState (S_ZTWINEDTORCH_UNLIT) -END_DEFAULTS - -void AZTwinedTorch::Activate (AActor *activator) -{ - Super::Activate (activator); - S_Sound (this, CHAN_BODY, "Ignite", 1, ATTN_NORM); -} - -class AZTwinedTorchUnlit : public AZTwinedTorch -{ - DECLARE_STATELESS_ACTOR (AZTwinedTorchUnlit, AZTwinedTorch) -}; - -IMPLEMENT_STATELESS_ACTOR (AZTwinedTorchUnlit, Hexen, 117, 0) - PROP_SpawnState (S_ZTWINEDTORCH_UNLIT) -END_DEFAULTS - -// Wall torch --------------------------------------------------------------- - -class AZWallTorch : public ASwitchableDecoration -{ - DECLARE_ACTOR (AZWallTorch, ASwitchableDecoration) -public: - void Activate (AActor *activator); -}; - -FState AZWallTorch::States[] = -{ -#define S_ZWALLTORCH 0 - S_BRIGHT (WLTR, 'A', 5, NULL , &States[S_ZWALLTORCH+1]), - S_BRIGHT (WLTR, 'B', 5, NULL , &States[S_ZWALLTORCH+2]), - S_BRIGHT (WLTR, 'C', 5, NULL , &States[S_ZWALLTORCH+3]), - S_BRIGHT (WLTR, 'D', 5, NULL , &States[S_ZWALLTORCH+4]), - S_BRIGHT (WLTR, 'E', 5, NULL , &States[S_ZWALLTORCH+5]), - S_BRIGHT (WLTR, 'F', 5, NULL , &States[S_ZWALLTORCH+6]), - S_BRIGHT (WLTR, 'G', 5, NULL , &States[S_ZWALLTORCH+7]), - S_BRIGHT (WLTR, 'H', 5, NULL , &States[S_ZWALLTORCH+0]), - -#define S_ZWALLTORCH_U (S_ZWALLTORCH+8) - S_NORMAL (WLTR, 'I', -1, NULL , NULL) -}; - -IMPLEMENT_ACTOR (AZWallTorch, Hexen, 54, 0) - PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY) - PROP_Flags4 (MF4_FIXMAPTHINGPOS) - - PROP_SpawnState (S_ZWALLTORCH) - PROP_SeeState (S_ZWALLTORCH) - PROP_MeleeState (S_ZWALLTORCH_U) -END_DEFAULTS - -void AZWallTorch::Activate (AActor *activator) -{ - Super::Activate (activator); - S_Sound (this, CHAN_BODY, "Ignite", 1, ATTN_NORM); -} - -class AZWallTorchUnlit : public AZWallTorch -{ - DECLARE_STATELESS_ACTOR (AZWallTorchUnlit, AZWallTorch) -}; - -IMPLEMENT_STATELESS_ACTOR (AZWallTorchUnlit, Hexen, 55, 0) - PROP_SpawnState (S_ZWALLTORCH_U) -END_DEFAULTS - -// Shrub1 ------------------------------------------------------------------- - -class AZShrub1 : public AActor -{ - DECLARE_ACTOR (AZShrub1, AActor) -}; - -FState AZShrub1::States[] = -{ -#define S_ZSHRUB1 0 - S_NORMAL (SHB1, 'A', -1, NULL , NULL), - -#define S_ZSHRUB1_X (S_ZSHRUB1+1) - S_BRIGHT (SHB1, 'B', 7, NULL , &States[S_ZSHRUB1_X+1]), - S_BRIGHT (SHB1, 'C', 6, A_Scream , &States[S_ZSHRUB1_X+2]), - S_BRIGHT (SHB1, 'D', 5, NULL , NULL) -}; - -IMPLEMENT_ACTOR (AZShrub1, Hexen, 8101, 0) - PROP_RadiusFixed (8) - PROP_HeightFixed (24) - PROP_MassLong (FIXED_MAX) - PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD) - PROP_Flags4 (MF4_NOICEDEATH) - - PROP_SpawnState (S_ZSHRUB1) - PROP_BDeathState (S_ZSHRUB1_X) - - PROP_DeathSound ("TreeExplode") -END_DEFAULTS - -// Shrub2 ------------------------------------------------------------------- - -class AZShrub2 : public AActor -{ - DECLARE_ACTOR (AZShrub2, AActor) -public: - void GetExplodeParms (int &damage, int &distance, bool &hurtSrc); -}; - -FState AZShrub2::States[] = -{ -#define S_ZSHRUB2 0 - S_NORMAL (SHB2, 'A', -1, NULL , NULL), - -#define S_ZSHRUB2_X (S_ZSHRUB2+1) - S_BRIGHT (SHB2, 'B', 7, NULL , &States[S_ZSHRUB2_X+1]), - S_BRIGHT (SHB2, 'C', 6, A_Scream , &States[S_ZSHRUB2_X+2]), - S_BRIGHT (SHB2, 'D', 5, A_Explode , &States[S_ZSHRUB2_X+3]), - S_BRIGHT (SHB2, 'E', 5, NULL , NULL) -}; - -IMPLEMENT_ACTOR (AZShrub2, Hexen, 8102, 0) - PROP_RadiusFixed (16) - PROP_HeightFixed (40) - PROP_MassLong (FIXED_MAX) - PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD) - PROP_Flags4 (MF4_NOICEDEATH) - - PROP_SpawnState (S_ZSHRUB2) - PROP_BDeathState (S_ZSHRUB2_X) - - PROP_DeathSound ("TreeExplode") -END_DEFAULTS - -void AZShrub2::GetExplodeParms (int &damage, int &distance, bool &hurtSrc) -{ - damage = 30; - distance = 64; -} // Poison Shroom ------------------------------------------------------------ @@ -925,62 +648,6 @@ void A_PoisonShroom (AActor *actor) actor->tics = 128+(pr_shroom()<<1); } -// Fire Bull ---------------------------------------------------------------- - -class AZFireBull : public ASwitchableDecoration -{ - DECLARE_ACTOR (AZFireBull, ASwitchableDecoration) -public: - void Activate (AActor *activator); -}; - -FState AZFireBull::States[] = -{ -#define S_ZFIREBULL 0 - S_BRIGHT (FBUL, 'A', 4, NULL , &States[S_ZFIREBULL+1]), - S_BRIGHT (FBUL, 'B', 4, NULL , &States[S_ZFIREBULL+2]), - S_BRIGHT (FBUL, 'C', 4, NULL , &States[S_ZFIREBULL+3]), - S_BRIGHT (FBUL, 'D', 4, NULL , &States[S_ZFIREBULL+4]), - S_BRIGHT (FBUL, 'E', 4, NULL , &States[S_ZFIREBULL+5]), - S_BRIGHT (FBUL, 'F', 4, NULL , &States[S_ZFIREBULL+6]), - S_BRIGHT (FBUL, 'G', 4, NULL , &States[S_ZFIREBULL+0]), - -#define S_ZFIREBULL_U (S_ZFIREBULL+7) - S_NORMAL (FBUL, 'H', -1, NULL , NULL), - -#define S_ZFIREBULL_DEATH (S_ZFIREBULL_U+1) - S_BRIGHT (FBUL, 'J', 4, NULL , &States[S_ZFIREBULL_DEATH+1]), - S_BRIGHT (FBUL, 'I', 4, NULL , &States[S_ZFIREBULL_U]), - -#define S_ZFIREBULL_BIRTH (S_ZFIREBULL_DEATH+2) - S_BRIGHT (FBUL, 'I', 4, NULL , &States[S_ZFIREBULL_BIRTH+1]), - S_BRIGHT (FBUL, 'J', 4, NULL , &States[S_ZFIREBULL+0]) -}; - -IMPLEMENT_ACTOR (AZFireBull, Hexen, 8042, 0) - PROP_RadiusFixed (20) - PROP_HeightFixed (80) - PROP_Flags (MF_SOLID) - - PROP_SpawnState (S_ZFIREBULL) - PROP_SeeState (S_ZFIREBULL_BIRTH) - PROP_MeleeState (S_ZFIREBULL_U) -END_DEFAULTS - -void AZFireBull::Activate (AActor *activator) -{ - Super::Activate (activator); - S_Sound (this, CHAN_BODY, "Ignite", 1, ATTN_NORM); -} - -class AZFireBullUnlit : public AZFireBull -{ - DECLARE_STATELESS_ACTOR (AZFireBullUnlit, AZFireBull) -}; - -IMPLEMENT_STATELESS_ACTOR (AZFireBullUnlit, Hexen, 8043, 0) - PROP_SpawnState (S_ZFIREBULL_U) -END_DEFAULTS // Suit of armor ------------------------------------------------------------ @@ -1195,118 +862,3 @@ void A_BellReset2 (AActor *actor) actor->health = 5; } -// "Christmas" Tree --------------------------------------------------------- - -class AZXmasTree : public AActor -{ - DECLARE_ACTOR (AZXmasTree, AActor) -public: - void GetExplodeParms (int &damage, int &dist, bool &dmgSource); -}; - -FState AZXmasTree::States[] = -{ -#define S_ZXMAS_TREE 0 - S_NORMAL (XMAS, 'A', -1, NULL , NULL), - -#define S_ZXMAS_TREE_X (S_ZXMAS_TREE+1) - S_BRIGHT (XMAS, 'B', 6, NULL , &States[S_ZXMAS_TREE_X+1]), - S_BRIGHT (XMAS, 'C', 6, A_Scream , &States[S_ZXMAS_TREE_X+2]), - S_BRIGHT (XMAS, 'D', 5, NULL , &States[S_ZXMAS_TREE_X+3]), - S_BRIGHT (XMAS, 'E', 5, A_Explode , &States[S_ZXMAS_TREE_X+4]), - S_BRIGHT (XMAS, 'F', 5, NULL , &States[S_ZXMAS_TREE_X+5]), - S_BRIGHT (XMAS, 'G', 4, NULL , &States[S_ZXMAS_TREE_X+6]), - S_NORMAL (XMAS, 'H', 5, NULL , &States[S_ZXMAS_TREE_X+7]), - S_NORMAL (XMAS, 'I', 4, A_NoBlocking , &States[S_ZXMAS_TREE_X+8]), - S_NORMAL (XMAS, 'J', 4, NULL , &States[S_ZXMAS_TREE_X+9]), - S_NORMAL (XMAS, 'K', -1, NULL , NULL) -}; - -IMPLEMENT_ACTOR (AZXmasTree, Hexen, 8068, 0) - PROP_SpawnHealth (20) - PROP_RadiusFixed (11) - PROP_HeightFixed (130) - PROP_MassLong (0x7fffffff) - PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD) - PROP_Flags4 (MF4_NOICEDEATH) - - PROP_SpawnState (S_ZXMAS_TREE) - PROP_BDeathState (S_ZXMAS_TREE_X) - - PROP_DeathSound ("TreeExplode") -END_DEFAULTS - -void AZXmasTree::GetExplodeParms (int &damage, int &dist, bool &dmgSource) -{ - damage = 30; - dist = 64; -} - -// Cauldron ----------------------------------------------------------------- - -class AZCauldron : public ASwitchableDecoration -{ - DECLARE_ACTOR (AZCauldron, ASwitchableDecoration) -public: - void Activate (AActor *activator); -}; - -FState AZCauldron::States[] = -{ -#define S_ZCAULDRON 0 - S_BRIGHT (CDRN, 'B', 4, NULL , &States[S_ZCAULDRON+1]), - S_BRIGHT (CDRN, 'C', 4, NULL , &States[S_ZCAULDRON+2]), - S_BRIGHT (CDRN, 'D', 4, NULL , &States[S_ZCAULDRON+3]), - S_BRIGHT (CDRN, 'E', 4, NULL , &States[S_ZCAULDRON+4]), - S_BRIGHT (CDRN, 'F', 4, NULL , &States[S_ZCAULDRON+5]), - S_BRIGHT (CDRN, 'G', 4, NULL , &States[S_ZCAULDRON+6]), - S_BRIGHT (CDRN, 'H', 4, NULL , &States[S_ZCAULDRON+0]), - -#define S_ZCAULDRON_U (S_ZCAULDRON+7) - S_NORMAL (CDRN, 'A', -1, NULL , NULL) -}; - -IMPLEMENT_ACTOR (AZCauldron, Hexen, 8069, 0) - PROP_RadiusFixed (12) - PROP_HeightFixed (26) - PROP_Flags (MF_SOLID) - - PROP_SpawnState (S_ZCAULDRON) - PROP_SeeState (S_ZCAULDRON) - PROP_MeleeState (S_ZCAULDRON_U) -END_DEFAULTS - -void AZCauldron::Activate (AActor *activator) -{ - Super::Activate (activator); - S_Sound (this, CHAN_BODY, "Ignite", 1, ATTN_NORM); -} - -class AZCauldronUnlit : public AZCauldron -{ - DECLARE_STATELESS_ACTOR (AZCauldronUnlit, AZCauldron) -}; - -IMPLEMENT_STATELESS_ACTOR (AZCauldronUnlit, Hexen, 8070, 0) - PROP_SpawnState (S_ZCAULDRON_U) -END_DEFAULTS - -// Water Drip --------------------------------------------------------------- - -class AHWaterDrip : public AActor -{ - DECLARE_ACTOR (AHWaterDrip, AActor) -}; - -FState AHWaterDrip::States[] = -{ - S_NORMAL (HWAT, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AHWaterDrip, Hexen, -1, 95) - PROP_Flags (MF_MISSILE) - PROP_Flags2 (MF2_LOGRAV|MF2_NOTELEPORT) - PROP_Mass (1) - PROP_SpawnState (0) - PROP_DeathSound ("Drip") -END_DEFAULTS diff --git a/src/g_hexen/a_puzzleitems.cpp b/src/g_hexen/a_puzzleitems.cpp index a42313a13d..8ddf39debb 100644 --- a/src/g_hexen/a_puzzleitems.cpp +++ b/src/g_hexen/a_puzzleitems.cpp @@ -7,27 +7,6 @@ #include "s_sound.h" #include "c_console.h" -enum -{ - puzzskull, - puzzgembig, - puzzgemred, - puzzgemgreen1, - puzzgemgreen2, - puzzgemblue1, - puzzgemblue2, - puzzbook1, - puzzbook2, - puzzskull2, - puzzfweapon, - puzzcweapon, - puzzmweapon, - puzzgear1, - puzzgear2, - puzzgear3, - puzzgear4, -}; - IMPLEMENT_STATELESS_ACTOR (APuzzleItem, Any, -1, 0) PROP_Flags (MF_SPECIAL|MF_NOGRAVITY) PROP_Inventory_FlagsSet (IF_INVBAR) @@ -69,455 +48,3 @@ bool APuzzleItem::ShouldStay () return !!multiplayer; } -// Yorick's Skull ----------------------------------------------------------- - -class APuzzSkull : public APuzzleItem -{ - DECLARE_ACTOR (APuzzSkull, APuzzleItem) -public: - const char *PickupMessage (); -}; - -FState APuzzSkull::States[] = -{ - S_NORMAL (ASKU, 'A', -1, NULL , NULL), -}; - -IMPLEMENT_ACTOR (APuzzSkull, Hexen, 9002, 76) - PROP_SpawnState (0) - PROP_PuzzleItem_Number (puzzskull) - PROP_Inventory_Icon ("ARTISKLL") -END_DEFAULTS - -const char *APuzzSkull::PickupMessage () -{ - return GStrings("TXT_ARTIPUZZSKULL"); -} - -// Heart of D'Sparil -------------------------------------------------------- - -class APuzzGemBig : public APuzzleItem -{ - DECLARE_ACTOR (APuzzGemBig, APuzzleItem) -public: - const char *PickupMessage (); -}; - -FState APuzzGemBig::States[] = -{ - S_NORMAL (ABGM, 'A', -1, NULL , NULL), -}; - -IMPLEMENT_ACTOR (APuzzGemBig, Hexen, 9003, 77) - PROP_SpawnState (0) - PROP_PuzzleItem_Number (puzzgembig) - PROP_Inventory_Icon ("ARTIBGEM") -END_DEFAULTS - -const char *APuzzGemBig::PickupMessage () -{ - return GStrings("TXT_ARTIPUZZGEMBIG"); -} - -// Red Gem (Ruby Planet) ---------------------------------------------------- - -class APuzzGemRed : public APuzzleItem -{ - DECLARE_ACTOR (APuzzGemRed, APuzzleItem) -public: - const char *PickupMessage (); -}; - -FState APuzzGemRed::States[] = -{ - S_NORMAL (AGMR, 'A', -1, NULL , NULL), -}; - -IMPLEMENT_ACTOR (APuzzGemRed, Hexen, 9004, 78) - PROP_SpawnState (0) - PROP_PuzzleItem_Number (puzzgemred) - PROP_Inventory_Icon ("ARTIGEMR") -END_DEFAULTS - -const char *APuzzGemRed::PickupMessage () -{ - return GStrings("TXT_ARTIPUZZGEMRED"); -} - -// Green Gem 1 (Emerald Planet) --------------------------------------------- - -class APuzzGemGreen1 : public APuzzleItem -{ - DECLARE_ACTOR (APuzzGemGreen1, APuzzleItem) -public: - const char *PickupMessage (); -}; - -FState APuzzGemGreen1::States[] = -{ - S_NORMAL (AGMG, 'A', -1, NULL , NULL), -}; - -IMPLEMENT_ACTOR (APuzzGemGreen1, Hexen, 9005, 79) - PROP_SpawnState (0) - PROP_PuzzleItem_Number (puzzgemgreen1) - PROP_Inventory_Icon ("ARTIGEMG") -END_DEFAULTS - -const char *APuzzGemGreen1::PickupMessage () -{ - return GStrings("TXT_ARTIPUZZGEMGREEN1"); -} - -// Green Gem 2 (Emerald Planet) --------------------------------------------- - -class APuzzGemGreen2 : public APuzzleItem -{ - DECLARE_ACTOR (APuzzGemGreen2, APuzzleItem) -public: - const char *PickupMessage (); -}; - -FState APuzzGemGreen2::States[] = -{ - S_NORMAL (AGG2, 'A', -1, NULL , NULL), -}; - -IMPLEMENT_ACTOR (APuzzGemGreen2, Hexen, 9009, 80) - PROP_SpawnState (0) - PROP_PuzzleItem_Number (puzzgemgreen2) - PROP_Inventory_Icon ("ARTIGMG2") -END_DEFAULTS - -const char *APuzzGemGreen2::PickupMessage () -{ - return GStrings("TXT_ARTIPUZZGEMGREEN2"); -} - -// Blue Gem 1 (Sapphire Planet) --------------------------------------------- - -class APuzzGemBlue1 : public APuzzleItem -{ - DECLARE_ACTOR (APuzzGemBlue1, APuzzleItem) -public: - const char *PickupMessage (); -}; - -FState APuzzGemBlue1::States[] = -{ - S_NORMAL (AGMB, 'A', -1, NULL , NULL), -}; - -IMPLEMENT_ACTOR (APuzzGemBlue1, Hexen, 9006, 81) - PROP_SpawnState (0) - PROP_PuzzleItem_Number (puzzgemblue1) - PROP_Inventory_Icon ("ARTIGEMB") -END_DEFAULTS - -const char *APuzzGemBlue1::PickupMessage () -{ - return GStrings("TXT_ARTIPUZZGEMBLUE1"); -} - -// Blue Gem 2 (Sapphire Planet) --------------------------------------------- - -class APuzzGemBlue2 : public APuzzleItem -{ - DECLARE_ACTOR (APuzzGemBlue2, APuzzleItem) -public: - const char *PickupMessage (); -}; - -FState APuzzGemBlue2::States[] = -{ - S_NORMAL (AGB2, 'A', -1, NULL , NULL), -}; - -IMPLEMENT_ACTOR (APuzzGemBlue2, Hexen, 9010, 82) - PROP_SpawnState (0) - PROP_PuzzleItem_Number (puzzgemblue2) - PROP_Inventory_Icon ("ARTIGMB2") -END_DEFAULTS - -const char *APuzzGemBlue2::PickupMessage () -{ - return GStrings("TXT_ARTIPUZZGEMBLUE2"); -} - -// Book 1 (Daemon Codex) ---------------------------------------------------- - -class APuzzBook1 : public APuzzleItem -{ - DECLARE_ACTOR (APuzzBook1, APuzzleItem) -public: - const char *PickupMessage (); -}; - -FState APuzzBook1::States[] = -{ - S_NORMAL (ABK1, 'A', -1, NULL , NULL), -}; - -IMPLEMENT_ACTOR (APuzzBook1, Hexen, 9007, 83) - PROP_SpawnState (0) - PROP_PuzzleItem_Number (puzzbook1) - PROP_Inventory_Icon ("ARTIBOK1") -END_DEFAULTS - -const char *APuzzBook1::PickupMessage () -{ - return GStrings("TXT_ARTIPUZZBOOK1"); -} - -// Book 2 (Liber Oscura) ---------------------------------------------------- - -class APuzzBook2 : public APuzzleItem -{ - DECLARE_ACTOR (APuzzBook2, APuzzleItem) -public: - const char *PickupMessage (); -}; - -FState APuzzBook2::States[] = -{ - S_NORMAL (ABK2, 'A', -1, NULL , NULL), -}; - -IMPLEMENT_ACTOR (APuzzBook2, Hexen, 9008, 84) - PROP_SpawnState (0) - PROP_PuzzleItem_Number (puzzbook2) - PROP_Inventory_Icon ("ARTIBOK2") -END_DEFAULTS - -const char *APuzzBook2::PickupMessage () -{ - return GStrings("TXT_ARTIPUZZBOOK2"); -} - -// Flame Mask --------------------------------------------------------------- - -class APuzzFlameMask : public APuzzleItem -{ - DECLARE_ACTOR (APuzzFlameMask, APuzzleItem) -public: - const char *PickupMessage (); -}; - -FState APuzzFlameMask::States[] = -{ - S_NORMAL (ASK2, 'A', -1, NULL , NULL), -}; - -IMPLEMENT_ACTOR (APuzzFlameMask, Hexen, 9014, 0) - PROP_SpawnState (0) - PROP_PuzzleItem_Number (puzzskull2) - PROP_Inventory_Icon ("ARTISKL2") -END_DEFAULTS - -const char *APuzzFlameMask::PickupMessage () -{ - return GStrings("TXT_ARTIPUZZSKULL2"); -} - -// Fighter Weapon (Glaive Seal) --------------------------------------------- - -class APuzzFWeapon : public APuzzleItem -{ - DECLARE_ACTOR (APuzzFWeapon, APuzzleItem) -public: - const char *PickupMessage (); -}; - -FState APuzzFWeapon::States[] = -{ - S_NORMAL (AFWP, 'A', -1, NULL , NULL), -}; - -IMPLEMENT_ACTOR (APuzzFWeapon, Hexen, 9015, 0) - PROP_SpawnState (0) - PROP_PuzzleItem_Number (puzzfweapon) - PROP_Inventory_Icon ("ARTIFWEP") -END_DEFAULTS - -const char *APuzzFWeapon::PickupMessage () -{ - return GStrings("TXT_ARTIPUZZFWEAPON"); -} - -// Cleric Weapon (Holy Relic) ----------------------------------------------- - -class APuzzCWeapon : public APuzzleItem -{ - DECLARE_ACTOR (APuzzCWeapon, APuzzleItem) -public: - const char *PickupMessage (); -}; - -FState APuzzCWeapon::States[] = -{ - S_NORMAL (ACWP, 'A', -1, NULL , NULL), -}; - -IMPLEMENT_ACTOR (APuzzCWeapon, Hexen, 9016, 0) - PROP_SpawnState (0) - PROP_PuzzleItem_Number (puzzcweapon) - PROP_Inventory_Icon ("ARTICWEP") -END_DEFAULTS - -const char *APuzzCWeapon::PickupMessage () -{ - return GStrings("TXT_ARTIPUZZCWEAPON"); -} - -// Mage Weapon (Sigil of the Magus) ----------------------------------------- - -class APuzzMWeapon : public APuzzleItem -{ - DECLARE_ACTOR (APuzzMWeapon, APuzzleItem) -public: - const char *PickupMessage (); -}; - -FState APuzzMWeapon::States[] = -{ - S_NORMAL (AMWP, 'A', -1, NULL , NULL), -}; - -IMPLEMENT_ACTOR (APuzzMWeapon, Hexen, 9017, 0) - PROP_SpawnState (0) - PROP_PuzzleItem_Number (puzzmweapon) - PROP_Inventory_Icon ("ARTIMWEP") -END_DEFAULTS - -const char *APuzzMWeapon::PickupMessage () -{ - return GStrings("TXT_ARTIPUZZMWEAPON"); -} - -// Clock Gear 1 ------------------------------------------------------------- - -class APuzzGear1 : public APuzzleItem -{ - DECLARE_ACTOR (APuzzGear1, APuzzleItem) -public: - const char *PickupMessage (); -}; - -FState APuzzGear1::States[] = -{ - S_BRIGHT (AGER, 'A', 4, NULL , &States[1]), - S_BRIGHT (AGER, 'B', 4, NULL , &States[2]), - S_BRIGHT (AGER, 'C', 4, NULL , &States[3]), - S_BRIGHT (AGER, 'D', 4, NULL , &States[4]), - S_BRIGHT (AGER, 'E', 4, NULL , &States[5]), - S_BRIGHT (AGER, 'F', 4, NULL , &States[6]), - S_BRIGHT (AGER, 'G', 4, NULL , &States[7]), - S_BRIGHT (AGER, 'H', 4, NULL , &States[0]), -}; - -IMPLEMENT_ACTOR (APuzzGear1, Hexen, 9018, 0) - PROP_SpawnState (0) - PROP_PuzzleItem_Number (puzzgear1) - PROP_Inventory_Icon ("ARTIGEAR") -END_DEFAULTS - -const char *APuzzGear1::PickupMessage () -{ - return GStrings("TXT_ARTIPUZZGEAR"); -} - -// Clock Gear 2 ------------------------------------------------------------- - -class APuzzGear2 : public APuzzleItem -{ - DECLARE_ACTOR (APuzzGear2, APuzzleItem) -public: - const char *PickupMessage (); -}; - -FState APuzzGear2::States[] = -{ - S_BRIGHT (AGR2, 'A', 4, NULL , &States[1]), - S_BRIGHT (AGR2, 'B', 4, NULL , &States[2]), - S_BRIGHT (AGR2, 'C', 4, NULL , &States[3]), - S_BRIGHT (AGR2, 'D', 4, NULL , &States[4]), - S_BRIGHT (AGR2, 'E', 4, NULL , &States[5]), - S_BRIGHT (AGR2, 'F', 4, NULL , &States[6]), - S_BRIGHT (AGR2, 'G', 4, NULL , &States[7]), - S_BRIGHT (AGR2, 'H', 4, NULL , &States[0]), -}; - -IMPLEMENT_ACTOR (APuzzGear2, Hexen, 9019, 0) - PROP_SpawnState (0) - PROP_PuzzleItem_Number (puzzgear2) - PROP_Inventory_Icon ("ARTIGER2") -END_DEFAULTS - -const char *APuzzGear2::PickupMessage () -{ - return GStrings("TXT_ARTIPUZZGEAR"); -} - -// Clock Gear 3 ------------------------------------------------------------- - -class APuzzGear3 : public APuzzleItem -{ - DECLARE_ACTOR (APuzzGear3, APuzzleItem) -public: - const char *PickupMessage (); -}; - -FState APuzzGear3::States[] = -{ - S_BRIGHT (AGR3, 'A', 4, NULL , &States[1]), - S_BRIGHT (AGR3, 'B', 4, NULL , &States[2]), - S_BRIGHT (AGR3, 'C', 4, NULL , &States[3]), - S_BRIGHT (AGR3, 'D', 4, NULL , &States[4]), - S_BRIGHT (AGR3, 'E', 4, NULL , &States[5]), - S_BRIGHT (AGR3, 'F', 4, NULL , &States[6]), - S_BRIGHT (AGR3, 'G', 4, NULL , &States[7]), - S_BRIGHT (AGR3, 'H', 4, NULL , &States[0]), -}; - -IMPLEMENT_ACTOR (APuzzGear3, Hexen, 9020, 0) - PROP_SpawnState (0) - PROP_PuzzleItem_Number (puzzgear3) - PROP_Inventory_Icon ("ARTIGER3") -END_DEFAULTS - -const char *APuzzGear3::PickupMessage () -{ - return GStrings("TXT_ARTIPUZZGEAR"); -} - -// Clock Gear 4 ------------------------------------------------------------- - -class APuzzGear4 : public APuzzleItem -{ - DECLARE_ACTOR (APuzzGear4, APuzzleItem) -public: - const char *PickupMessage (); -}; - -FState APuzzGear4::States[] = -{ - S_BRIGHT (AGR4, 'A', 4, NULL , &States[1]), - S_BRIGHT (AGR4, 'B', 4, NULL , &States[2]), - S_BRIGHT (AGR4, 'C', 4, NULL , &States[3]), - S_BRIGHT (AGR4, 'D', 4, NULL , &States[4]), - S_BRIGHT (AGR4, 'E', 4, NULL , &States[5]), - S_BRIGHT (AGR4, 'F', 4, NULL , &States[6]), - S_BRIGHT (AGR4, 'G', 4, NULL , &States[7]), - S_BRIGHT (AGR4, 'H', 4, NULL , &States[0]), -}; - -IMPLEMENT_ACTOR (APuzzGear4, Hexen, 9021, 0) - PROP_SpawnState (0) - PROP_PuzzleItem_Number (puzzgear4) - PROP_Inventory_Icon ("ARTIGER4") -END_DEFAULTS - -const char *APuzzGear4::PickupMessage () -{ - return GStrings("TXT_ARTIPUZZGEAR"); -} diff --git a/src/v_font.cpp b/src/v_font.cpp index b025bed185..eb887aafbb 100644 --- a/src/v_font.cpp +++ b/src/v_font.cpp @@ -1082,7 +1082,7 @@ void FFontChar2::MakeTexture () I_FatalError ("The font %s is corrupt", name); } - Spans = CreateSpans (Pixels); + if (Spans!=NULL) Spans = CreateSpans (Pixels); } //=========================================================================== diff --git a/wadsrc/decorate/decorate.txt b/wadsrc/decorate/decorate.txt index cd71723551..a4b997a2d3 100644 --- a/wadsrc/decorate/decorate.txt +++ b/wadsrc/decorate/decorate.txt @@ -15,3 +15,10 @@ #include "actors/heretic/hereticdecorations.txt" #include "actors/hexen/flame.txt" +#include "actors/hexen/hexenarmor.txt" +#include "actors/hexen/hexendecorations.txt" +#include "actors/hexen/hexenkeys.txt" +#include "actors/hexen/hexenspecialdecs.txt" +#include "actors/hexen/puzzleitems.txt" +#include "actors/hexen/scriptprojectiles.txt" +#include "actors/hexen/speedboots.txt" diff --git a/wadsrc/decorate/hexen/hexendecorations.txt b/wadsrc/decorate/hexen/hexendecorations.txt index 3fe66d98c0..c4755078d0 100644 --- a/wadsrc/decorate/hexen/hexendecorations.txt +++ b/wadsrc/decorate/hexen/hexendecorations.txt @@ -437,7 +437,7 @@ ACTOR ZMossCeiling2 59 States { Spawn: - MS21 A -1 + MSS2 A -1 Stop } } diff --git a/wadsrc/decorate/hexen/hexenspecialdecs.txt b/wadsrc/decorate/hexen/hexenspecialdecs.txt index 2cf8925e9a..b7dd3be61a 100644 --- a/wadsrc/decorate/hexen/hexenspecialdecs.txt +++ b/wadsrc/decorate/hexen/hexenspecialdecs.txt @@ -1 +1,308 @@ -// + +// Winged Statue (no skull) ------------------------------------------------- + +ACTOR ZWingedStatueNoSkull : SwitchingDecoration 9011 +{ + Game Hexen + Radius 10 + Height 62 + +SOLID + States + { + Spawn: + STWN A -1 + Stop + Active: + STWN B -1 + Stop + } +} + + +// Gem pedestal ------------------------------------------------------------- + +ACTOR ZGemPedestal : SwitchingDecoration 9012 +{ + Game Hexen + Radius 10 + Height 40 + +SOLID + States + { + Spawn: + GMPD A -1 + Stop + Active: + GMPD B -1 + Stop + } +} + + +// Tree (destructible) ------------------------------------------------------ + +ACTOR TreeDestructible 8062 +{ + Game Hexen + Health 70 + Radius 15 + Height 180 + DeathHeight 24 + Mass 0x7fffffff + PainSound "TreeExplode" + DeathSound "TreeBreak" + +SOLID +SHOOTABLE +NOBLOOD +NOICEDEATH + States + { + Spawn: + TRDT A -1 + Stop + Death: + TRDT B 5 + TRDT C 5 A_Scream + TRDT DEF 5 + TRDT G -1 + Stop + Burn: + TRDT H 5 Bright A_Pain + TRDT IJKL 5 Bright + TRDT M 5 Bright A_Explode(10, 128) + TRDT N 5 Bright + TRDT OP 5 + TRDT Q -1 + Stop + } +} + + +// Twined torch ------------------------------------------------------------- + +ACTOR ZTwinedTorch : SwitchableDecoration 116 +{ + Game Hexen + Radius 10 + Height 64 + +SOLID + States + { + Active: + TWTR A 0 Bright A_PlaySound("Ignite") + Spawn: + TWTR ABCDEFGH 4 Bright + Loop + Inactive: + TWTR I -1 + Stop + } +} + +ACTOR ZTwinedTorchUnlit : ZTwinedTorch 117 +{ + States + { + Spawn: + TWTR I -1 + Stop + } +} + + +// Wall torch --------------------------------------------------------------- + +ACTOR ZWallTorch : SwitchableDecoration 54 +{ + Game Hexen + +NOBLOCKMAP + +NOGRAVITY + +FIXMAPTHINGPOS + States + { + Active: + WLTR A 0 Bright A_PlaySound("Ignite") + Spawn: + WLTR ABCDEFGH 5 Bright + Loop + Inactive: + WLTR I -1 + Stop + } +} + +ACTOR ZWallTorchUnlit : ZWallTorch 55 +{ + States + { + Spawn: + WLTR I -1 + Stop + } +} + + +// Shrub1 ------------------------------------------------------------------- + +ACTOR ZShrub1 8101 +{ + Game Hexen + Radius 8 + Height 24 + Health 20 + Mass 0x7fffffff + +SOLID +SHOOTABLE +NOBLOOD +NOICEDEATH + DeathSound "TreeExplode" + States + { + Spawn: + SHB1 A -1 + Stop + Burn: + SHB1 B 7 Bright + SHB1 C 6 Bright A_Scream + SHB1 D 5 Bright + Stop + } +} + + +// Shrub2 ------------------------------------------------------------------- + +ACTOR ZShrub2 8102 +{ + Game Hexen + Radius 16 + Height 40 + Health 20 + Mass 0x7fffffff + +SOLID +SHOOTABLE +NOBLOOD +NOICEDEATH + DeathSound "TreeExplode" + States + { + Spawn: + SHB2 A -1 + Stop + Burn: + SHB2 B 7 Bright + SHB2 C 6 Bright A_Scream + SHB2 D 5 Bright A_Explode(30, 64) + SHB2 E 5 Bright + Stop + } +} + + +// Fire Bull ---------------------------------------------------------------- + +ACTOR ZFireBull : SwitchableDecoration 8042 +{ + Game Hexen + Radius 20 + Height 80 + +SOLID + States + { + Active: + FBUL I 4 Bright A_PlaySound("Ignite") + FBUL J 4 Bright + Spawn: + FBUL ABCDEFG 4 Bright + Loop + Inactive: + FBUL JI 4 Bright + FBUL H -1 + Stop + } +} + +ACTOR ZFireBullUnlit : ZFireBull 8043 +{ + States + { + Spawn: + FBUL H -1 + Stop + } +} + + +// "Christmas" Tree --------------------------------------------------------- + +ACTOR ZXmasTree 8068 +{ + Game Hexen + Radius 11 + Height 130 + Health 20 + Mass 0x7fffffff + +SOLID +SHOOTABLE +NOBLOOD +NOICEDEATH + DeathSound "TreeExplode" + States + { + Spawn: + XMAS A -1 + Stop + Burn: + XMAS B 6 Bright + XMAS C 6 Bright A_Scream + XMAS D 5 Bright + XMAS E 5 Bright A_Explode(30, 64) + XMAS F 5 Bright + XMAS G 4 Bright + XMAS H 5 + XMAS I 4 A_NoBlocking + XMAS J 4 + XMAS K -1 + Stop + } +} + +// Cauldron ----------------------------------------------------------------- + +ACTOR ZCauldron : SwitchableDecoration 8069 +{ + Game Hexen + Radius 12 + Height 26 + +SOLID + States + { + Active: + CDRN B 0 Bright A_PlaySound("Ignite") + Spawn: + CDRN BCDEFGH 4 Bright + Loop + Inactive: + CDRN A -1 + Stop + } +} + +ACTOR AZCauldronUnlit : ZCauldron +{ + States + { + Spawn: + CDRN A -1 + Stop + } +} + + +// Water Drip --------------------------------------------------------------- + +ACTOR HWaterDrip +{ + Game Hexen + SpawnID 95 + +MISSILE + +LOWGRAVITY + +NOTELEPORT + Mass 1 + DeathSound "Drip" + States + { + Spawn: + HWAT A -1 + Stop + } +} + diff --git a/wadsrc/decorate/hexen/puzzleitems.txt b/wadsrc/decorate/hexen/puzzleitems.txt index 2cf8925e9a..603d2fe2fb 100644 --- a/wadsrc/decorate/hexen/puzzleitems.txt +++ b/wadsrc/decorate/hexen/puzzleitems.txt @@ -1 +1,296 @@ -// + +// Yorick's Skull ----------------------------------------------------------- + +ACTOR PuzzSkull : PuzzleItem 9002 +{ + Game Hexen + SpawnID 76 + PuzzleItem.Number 0 + Inventory.Icon ARTISKLL + Inventory.PickupMessage "$TXT_ARTIPUZZSKULL" + States + { + Spawn: + ASKU A -1 + Stop + } +} + + +// Heart of D'Sparil -------------------------------------------------------- + +ACTOR PuzzGemBig : PuzzleItem 9003 +{ + Game Hexen + SpawnID 77 + PuzzleItem.Number 1 + Inventory.Icon ARTIBGEM + Inventory.PickupMessage "$TXT_ARTIPUZZGEMBIG" + States + { + Spawn: + ABGM A -1 + Stop + } +} + +// Red Gem (Ruby Planet) ---------------------------------------------------- + +ACTOR PuzzGemRed : PuzzleItem 9004 +{ + Game Hexen + SpawnID 78 + PuzzleItem.Number 2 + Inventory.Icon ARTIGEMR + Inventory.PickupMessage "$TXT_ARTIPUZZGEMRED" + States + { + Spawn: + AGMR A -1 + Stop + } +} + + +// Green Gem 1 (Emerald Planet) --------------------------------------------- + +ACTOR PuzzGemGreen : PuzzleItem 9005 +{ + Game Hexen + SpawnID 79 + PuzzleItem.Number 3 + Inventory.Icon ARTIGEMG + Inventory.PickupMessage "$TXT_ARTIPUZZGEMGREEN1" + States + { + Spawn: + AGMG A -1 + Stop + } +} + + +// Green Gem 2 (Emerald Planet) --------------------------------------------- + +ACTOR PuzzGemGreen2 : PuzzleItem 9009 +{ + Game Hexen + SpawnID 80 + PuzzleItem.Number 4 + Inventory.Icon ARTIGMG2 + Inventory.PickupMessage "$TXT_ARTIPUZZGEMGREEN2" + States + { + Spawn: + AGG2 A -1 + Stop + } +} + + +// Blue Gem 1 (Sapphire Planet) --------------------------------------------- + +ACTOR PuzzGemBlue1 : PuzzleItem 9006 +{ + Game Hexen + SpawnID 81 + PuzzleItem.Number 5 + Inventory.Icon ARTIGEMB + Inventory.PickupMessage "$TXT_ARTIPUZZGEMBLUE1" + States + { + Spawn: + AGMB A -1 + Stop + } +} + + +// Blue Gem 2 (Sapphire Planet) --------------------------------------------- + +ACTOR PuzzGemBlue2 : PuzzleItem 9010 +{ + Game Hexen + SpawnID 82 + PuzzleItem.Number 6 + Inventory.Icon ARTIGMB2 + Inventory.PickupMessage "$TXT_ARTIPUZZGEMBLUE2" + States + { + Spawn: + AGB2 A -1 + Stop + } +} + + +// Book 1 (Daemon Codex) ---------------------------------------------------- + +ACTOR PuzzBook1 : PuzzleItem 9007 +{ + Game Hexen + SpawnID 83 + PuzzleItem.Number 7 + Inventory.Icon ARTIBOK1 + Inventory.PickupMessage "$TXT_ARTIPUZZBOOK1" + States + { + Spawn: + ABK1 A -1 + Stop + } +} + + +// Book 2 (Liber Oscura) ---------------------------------------------------- + +ACTOR PuzzBook2 : PuzzleItem 9008 +{ + Game Hexen + SpawnID 84 + PuzzleItem.Number 8 + Inventory.Icon ARTIBOK2 + Inventory.PickupMessage "$TXT_ARTIPUZZBOOK2" + States + { + Spawn: + ABK2 A -1 + Stop + } +} + + +// Flame Mask --------------------------------------------------------------- + + +ACTOR PuzzFlameMask : PuzzleItem 9014 +{ + Game Hexen + PuzzleItem.Number 9 + Inventory.Icon ARTISKL2 + Inventory.PickupMessage "$TXT_ARTIPUZZSKULL2" + States + { + Spawn: + ASK2 A -1 + Stop + } +} + +// Fighter Weapon (Glaive Seal) --------------------------------------------- + +ACTOR PuzzFWeapon : PuzzleItem 9015 +{ + Game Hexen + PuzzleItem.Number 10 + Inventory.Icon ARTIFWEP + Inventory.PickupMessage "$TXT_ARTIPUZZFWEAPON" + States + { + Spawn: + AFWP A -1 + Stop + } +} + + +// Cleric Weapon (Holy Relic) ----------------------------------------------- + +ACTOR PuzzCWeapon : PuzzleItem 9016 +{ + Game Hexen + PuzzleItem.Number 11 + Inventory.Icon ARTICWEP + Inventory.PickupMessage "$TXT_ARTIPUZZCWEAPON" + States + { + Spawn: + ACWP A -1 + Stop + } +} + + +// Mage Weapon (Sigil of the Magus) ----------------------------------------- + +ACTOR PuzzMWeapon : PuzzleItem 9017 +{ + Game Hexen + PuzzleItem.Number 12 + Inventory.Icon ARTIMWEP + Inventory.PickupMessage "$TXT_ARTIPUZZMWEAPON" + States + { + Spawn: + AMWP A -1 + Stop + } +} + +// Clock Gear 1 ------------------------------------------------------------- + +ACTOR PuzzGear : PuzzleItem 9018 +{ + Game Hexen + PuzzleItem.Number 13 + Inventory.Icon ARTIGEAR + Inventory.PickupMessage "$TXT_ARTIPUZZGEAR" + States + { + Spawn: + AGER ABCDEFGH 4 Bright + Loop + } +} + + +// Clock Gear 2 ------------------------------------------------------------- + +ACTOR PuzzGear2 : PuzzleItem 9019 +{ + Game Hexen + PuzzleItem.Number 14 + Inventory.Icon ARTIGER2 + Inventory.PickupMessage "$TXT_ARTIPUZZGEAR" + States + { + Spawn: + AGR2 ABCDEFGH 4 Bright + Loop + } +} + + +// Clock Gear 3 ------------------------------------------------------------- + +ACTOR PuzzGear3 : PuzzleItem 9020 +{ + Game Hexen + PuzzleItem.Number 15 + Inventory.Icon ARTIGER3 + Inventory.PickupMessage "$TXT_ARTIPUZZGEAR" + States + { + Spawn: + AGR3 ABCDEFGH 4 Bright + Loop + } +} + + +// Clock Gear 4 ------------------------------------------------------------- + +ACTOR PuzzGear4 : PuzzleItem 9021 +{ + Game Hexen + PuzzleItem.Number 16 + Inventory.Icon ARTIGER4 + Inventory.PickupMessage "$TXT_ARTIPUZZGEAR" + States + { + Spawn: + AGR4 ABCDEFGH 4 Bright + Loop + } +} +