- 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_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

View File

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

View File

@ -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 ();
}

View File

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

View File

@ -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");
}

View File

@ -1082,7 +1082,7 @@ void FFontChar2::MakeTexture ()
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/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
{
Spawn:
MS21 A -1
MSS2 A -1
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
}
}