- Converted A_Puzzleitems.cpp and parts of A_HexenSpecialdecs.cpp to DECORATE and fixed a few broken Hexen items.

SVN r78 (trunk)
This commit is contained in:
Christoph Oelckers 2006-05-04 19:36:12 +00:00
parent 650d07b8c1
commit d06793ad7e
10 changed files with 621 additions and 928 deletions

View file

@ -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_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_fighterboss.cpp a_fighterhammer.cpp a_fighterplayer.cpp a_fighterquietus.cpp \
a_firedemon.cpp a_flechette.cpp a_fog.cpp a_healingradius.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_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_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 \ 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 \ hexen_sbar.cpp a_artiegg.cpp a_artitele.cpp a_minotaur.cpp a_ravenambient.cpp \
a_acolyte.cpp a_alienspectres.cpp \ a_acolyte.cpp a_alienspectres.cpp \
@ -212,6 +212,7 @@ src_paths tools/makewad
${COMPILER} makewad.c ioapi.c zip.c ${COMPILER} makewad.c ioapi.c zip.c
${LINK} tools/makewad/makewad ${LINK} tools/makewad/makewad
LDFLAGS = ''
src_paths tools/xlatcc src_paths tools/xlatcc
${COMPILER} xlat-parse.tab.c gen.c ${COMPILER} xlat-parse.tab.c gen.c
${LINK} tools/xlatcc/xlatcc ${LINK} tools/xlatcc/xlatcc

View file

@ -1,5 +1,6 @@
May 4, 2006 (Changes by Graf Zahl) 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 - 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. 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 - Changed the decal stretcher back to use the specified size parameters as a

View file

@ -2644,6 +2644,9 @@ bool ADehackedPickup::TryPickup (AActor *toucher)
const char *ADehackedPickup::PickupMessage () const char *ADehackedPickup::PickupMessage ()
{ {
const char *message = RealPickup->GetClass()->Meta.GetMetaString (AIMETA_PickupMessage);
if (message != NULL) return message;
return RealPickup->PickupMessage (); return RealPickup->PickupMessage ();
} }

View file

@ -47,115 +47,7 @@ public:
IMPLEMENT_ABSTRACT_ACTOR (ASwitchingDecoration) 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 ------------------------------------------------------------------ // Pottery1 ------------------------------------------------------------------
@ -700,175 +592,6 @@ void A_LeafCheck (AActor *actor)
// Torch base class --------------------------------------------------------- // 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 ------------------------------------------------------------ // Poison Shroom ------------------------------------------------------------
@ -925,62 +648,6 @@ void A_PoisonShroom (AActor *actor)
actor->tics = 128+(pr_shroom()<<1); 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 ------------------------------------------------------------ // Suit of armor ------------------------------------------------------------
@ -1195,118 +862,3 @@ void A_BellReset2 (AActor *actor)
actor->health = 5; 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

View file

@ -7,27 +7,6 @@
#include "s_sound.h" #include "s_sound.h"
#include "c_console.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) IMPLEMENT_STATELESS_ACTOR (APuzzleItem, Any, -1, 0)
PROP_Flags (MF_SPECIAL|MF_NOGRAVITY) PROP_Flags (MF_SPECIAL|MF_NOGRAVITY)
PROP_Inventory_FlagsSet (IF_INVBAR) PROP_Inventory_FlagsSet (IF_INVBAR)
@ -69,455 +48,3 @@ bool APuzzleItem::ShouldStay ()
return !!multiplayer; 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");
}

View file

@ -1082,7 +1082,7 @@ void FFontChar2::MakeTexture ()
I_FatalError ("The font %s is corrupt", name); I_FatalError ("The font %s is corrupt", name);
} }
Spans = CreateSpans (Pixels); if (Spans!=NULL) Spans = CreateSpans (Pixels);
} }
//=========================================================================== //===========================================================================

View file

@ -15,3 +15,10 @@
#include "actors/heretic/hereticdecorations.txt" #include "actors/heretic/hereticdecorations.txt"
#include "actors/hexen/flame.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"

View file

@ -437,7 +437,7 @@ ACTOR ZMossCeiling2 59
States States
{ {
Spawn: Spawn:
MS21 A -1 MSS2 A -1
Stop Stop
} }
} }

View file

@ -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
}
}

View file

@ -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
}
}