mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-22 20:21:26 +00:00
- Updated thingdef_specials.h for the new thingdef_specials.gperf file.
- Created a new MorphedMonster class that Chicken and Pig now derive from. This class automatically takes care of unmorphing the monster when its time is up. - Made PlayerClass and MonsterClass properties of EggFX. You can override these in a subclass to create new kinds of morpher projectiles. Along with that, MorphWeapon is a new property of PlayerPawn that controls what type of weapon you have available while morphed ("None" means you have no weapons). - Changed morphed monsters to record the time when they want to unmorph, not the time left until they unmorph. This simplifies calling P_UpdateMorhpedMonster() because you don't need to pass it a tic count. - Added an optional second parameter to A_SpawnDebris and an optional fifth parameter to A_SpawnItem that both do the same thing: If you set it to 1, then the spawned actor will be assigned the same translation table as the actor that called the function. - Moved the blood colorization in P_SpawnBlood() ahead of the SetDamage() call so that the blood color will available to the states of the blood actor. - Extended the puke command so that giving it a negative script number will act like ACS_ExecuteAlways and always execute the script. (Ugh. Why did I use's Raven's cheat code to name this command?) SVN r296 (trunk)
This commit is contained in:
parent
c16cff7f47
commit
a6d656b108
17 changed files with 630 additions and 658 deletions
|
@ -1,4 +1,26 @@
|
|||
August 16, 2006
|
||||
- Updated thingdef_specials.h for the new thingdef_specials.gperf file.
|
||||
- Created a new MorphedMonster class that Chicken and Pig now derive from.
|
||||
This class automatically takes care of unmorphing the monster when its
|
||||
time is up.
|
||||
- Made PlayerClass and MonsterClass properties of EggFX. You can override
|
||||
these in a subclass to create new kinds of morpher projectiles. Along with
|
||||
that, MorphWeapon is a new property of PlayerPawn that controls what type
|
||||
of weapon you have available while morphed ("None" means you have no
|
||||
weapons).
|
||||
- Changed morphed monsters to record the time when they want to unmorph, not
|
||||
the time left until they unmorph. This simplifies calling
|
||||
P_UpdateMorhpedMonster() because you don't need to pass it a tic count.
|
||||
- Added an optional second parameter to A_SpawnDebris and an optional
|
||||
fifth parameter to A_SpawnItem that both do the same thing: If you set it
|
||||
to 1, then the spawned actor will be assigned the same translation table
|
||||
as the actor that called the function.
|
||||
- Moved the blood colorization in P_SpawnBlood() ahead of the SetDamage()
|
||||
call so that the blood color will available to the states of the blood
|
||||
actor.
|
||||
- Extended the puke command so that giving it a negative script number will
|
||||
act like ACS_ExecuteAlways and always execute the script. (Ugh. Why did I
|
||||
use's Raven's cheat code to name this command?)
|
||||
- Added action special support to the thingdef expression evaluator. Now you
|
||||
can use them like normal functions, which is probably most useful for
|
||||
ACS_ExecuteWithResult.
|
||||
|
|
|
@ -428,6 +428,11 @@ CCMD (puke)
|
|||
else
|
||||
{
|
||||
int script = atoi (argv[1]);
|
||||
|
||||
if (script == 0)
|
||||
{ // Script 0 is reserved for Strife support. It is not pukable.
|
||||
return;
|
||||
}
|
||||
int arg[3] = { 0, 0, 0 };
|
||||
int argn = MIN (argc - 2, 3), i;
|
||||
|
||||
|
@ -436,8 +441,16 @@ CCMD (puke)
|
|||
arg[i] = atoi (argv[2+i]);
|
||||
}
|
||||
|
||||
Net_WriteByte (DEM_RUNSCRIPT);
|
||||
Net_WriteWord (script);
|
||||
if (script > 0)
|
||||
{
|
||||
Net_WriteByte (DEM_RUNSCRIPT);
|
||||
Net_WriteWord (script);
|
||||
}
|
||||
else
|
||||
{
|
||||
Net_WriteByte (DEM_RUNSCRIPT2);
|
||||
Net_WriteWord (-script);
|
||||
}
|
||||
Net_WriteByte (argn);
|
||||
for (i = 0; i < argn; ++i)
|
||||
{
|
||||
|
|
|
@ -2242,6 +2242,7 @@ void Net_DoCommand (int type, byte **stream, int player)
|
|||
break;
|
||||
|
||||
case DEM_RUNSCRIPT:
|
||||
case DEM_RUNSCRIPT2:
|
||||
{
|
||||
int snum = ReadWord (stream);
|
||||
int argn = ReadByte (stream);
|
||||
|
@ -2252,7 +2253,7 @@ void Net_DoCommand (int type, byte **stream, int player)
|
|||
arg[i] = ReadLong (stream);
|
||||
}
|
||||
P_StartScript (players[player].mo, NULL, snum, level.mapname, false,
|
||||
arg[0], arg[1], arg[2], false, false, true);
|
||||
arg[0], arg[1], arg[2], type == DEM_RUNSCRIPT2, false, true);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -2345,6 +2346,7 @@ void Net_SkipCommand (int type, byte **stream)
|
|||
break;
|
||||
|
||||
case DEM_RUNSCRIPT:
|
||||
case DEM_RUNSCRIPT2:
|
||||
skip = 3 + *(*stream + 2) * 4;
|
||||
break;
|
||||
|
||||
|
|
|
@ -110,6 +110,7 @@ public:
|
|||
fixed_t SideMove1, SideMove2;
|
||||
int ScoreIcon;
|
||||
int SpawnMask;
|
||||
int MorphWeapon; // actually a name
|
||||
|
||||
int GetMaxHealth() const;
|
||||
};
|
||||
|
|
|
@ -138,6 +138,7 @@ enum EDemoCommand
|
|||
DEM_SUMMONFRIEND, // 37 String: Thing to fabricate
|
||||
DEM_SPRAY, // 38 String: The decal to spray
|
||||
DEM_CROUCH, // 39
|
||||
DEM_RUNSCRIPT2 // 40 Same as DEM_RUNSCRIPT, but always executes
|
||||
};
|
||||
|
||||
// The following are implemented by cht_DoCheat in m_cheat.cpp
|
||||
|
|
|
@ -24,9 +24,6 @@ void A_BeakAttackPL1 (AActor *);
|
|||
void A_BeakAttackPL2 (AActor *);
|
||||
|
||||
void A_Feathers (AActor *);
|
||||
void A_ChicLook (AActor *);
|
||||
void A_ChicChase (AActor *);
|
||||
void A_ChicPain (AActor *);
|
||||
void A_ChicAttack (AActor *);
|
||||
|
||||
void P_UpdateBeak (AActor *);
|
||||
|
@ -109,7 +106,6 @@ class AChickenPlayer : public APlayerPawn
|
|||
DECLARE_ACTOR (AChickenPlayer, APlayerPawn)
|
||||
public:
|
||||
void MorphPlayerThink ();
|
||||
void ActivateMorphWeapon ();
|
||||
};
|
||||
|
||||
FState AChickenPlayer::States[] =
|
||||
|
@ -166,6 +162,7 @@ IMPLEMENT_ACTOR (AChickenPlayer, Heretic, -1, 0)
|
|||
PROP_PlayerPawn_ForwardMove2 (FRACUNIT * 2500 / 2048)
|
||||
PROP_PlayerPawn_SideMove1 (FRACUNIT * 2500 / 2048)
|
||||
PROP_PlayerPawn_SideMove2 (FRACUNIT * 2500 / 2048)
|
||||
PROP_PlayerPawn_MorphWeapon ("Beak")
|
||||
|
||||
PROP_PainSound ("chicken/pain")
|
||||
PROP_DeathSound ("chicken/death")
|
||||
|
@ -199,49 +196,26 @@ void AChickenPlayer::MorphPlayerThink ()
|
|||
}
|
||||
}
|
||||
|
||||
void AChickenPlayer::ActivateMorphWeapon ()
|
||||
{
|
||||
player->PendingWeapon = WP_NOCHANGE;
|
||||
player->psprites[ps_weapon].sy = WEAPONTOP;
|
||||
player->ReadyWeapon = player->mo->FindInventory<ABeak> ();
|
||||
if (player->ReadyWeapon == NULL)
|
||||
{
|
||||
player->ReadyWeapon = static_cast<AWeapon *>(player->mo->GiveInventoryType (RUNTIME_CLASS(ABeak)));
|
||||
}
|
||||
if (player->ReadyWeapon != NULL)
|
||||
{
|
||||
P_SetPsprite (player, ps_weapon, player->ReadyWeapon->GetReadyState());
|
||||
}
|
||||
else
|
||||
{
|
||||
P_SetPsprite (player, ps_weapon, NULL);
|
||||
}
|
||||
P_SetPsprite (player, ps_flash, NULL);
|
||||
}
|
||||
|
||||
// Chicken (non-player) -----------------------------------------------------
|
||||
|
||||
class AChicken : public AActor
|
||||
class AChicken : public AMorphedMonster
|
||||
{
|
||||
DECLARE_ACTOR (AChicken, AActor)
|
||||
public:
|
||||
void Destroy ();
|
||||
void Die (AActor *source, AActor *inflictor);
|
||||
DECLARE_ACTOR (AChicken, AMorphedMonster)
|
||||
};
|
||||
|
||||
FState AChicken::States[] =
|
||||
{
|
||||
#define S_CHICKEN_LOOK 0
|
||||
S_NORMAL (CHKN, 'A', 10, A_ChicLook , &States[S_CHICKEN_LOOK+1]),
|
||||
S_NORMAL (CHKN, 'B', 10, A_ChicLook , &States[S_CHICKEN_LOOK+0]),
|
||||
S_NORMAL (CHKN, 'A', 10, A_Look , &States[S_CHICKEN_LOOK+1]),
|
||||
S_NORMAL (CHKN, 'B', 10, A_Look , &States[S_CHICKEN_LOOK+0]),
|
||||
|
||||
#define S_CHICKEN_WALK (S_CHICKEN_LOOK+2)
|
||||
S_NORMAL (CHKN, 'A', 3, A_ChicChase , &States[S_CHICKEN_WALK+1]),
|
||||
S_NORMAL (CHKN, 'B', 3, A_ChicChase , &States[S_CHICKEN_WALK+0]),
|
||||
S_NORMAL (CHKN, 'A', 3, A_Chase , &States[S_CHICKEN_WALK+1]),
|
||||
S_NORMAL (CHKN, 'B', 3, A_Chase , &States[S_CHICKEN_WALK+0]),
|
||||
|
||||
#define S_CHICKEN_PAIN (S_CHICKEN_WALK+2)
|
||||
S_NORMAL (CHKN, 'D', 5, A_Feathers , &States[S_CHICKEN_PAIN+1]),
|
||||
S_NORMAL (CHKN, 'C', 5, A_ChicPain , &States[S_CHICKEN_WALK+0]),
|
||||
S_NORMAL (CHKN, 'C', 5, A_Pain , &States[S_CHICKEN_WALK+0]),
|
||||
|
||||
#define S_CHICKEN_ATK (S_CHICKEN_PAIN+2)
|
||||
S_NORMAL (CHKN, 'A', 8, A_FaceTarget , &States[S_CHICKEN_ATK+1]),
|
||||
|
@ -283,24 +257,6 @@ IMPLEMENT_ACTOR (AChicken, Heretic, -1, 122)
|
|||
PROP_Obituary("$OB_CHICKEN")
|
||||
END_DEFAULTS
|
||||
|
||||
void AChicken::Destroy ()
|
||||
{
|
||||
if (tracer != NULL)
|
||||
{
|
||||
tracer->Destroy ();
|
||||
}
|
||||
Super::Destroy ();
|
||||
}
|
||||
|
||||
void AChicken::Die (AActor *source, AActor *inflictor)
|
||||
{
|
||||
Super::Die (source, inflictor);
|
||||
if (tracer != NULL && (tracer->flags & MF_UNMORPHED))
|
||||
{
|
||||
tracer->Die (source, inflictor);
|
||||
}
|
||||
}
|
||||
|
||||
// Feather ------------------------------------------------------------------
|
||||
|
||||
class AFeather : public AActor
|
||||
|
@ -343,10 +299,6 @@ END_DEFAULTS
|
|||
|
||||
void A_ChicAttack (AActor *actor)
|
||||
{
|
||||
if (P_UpdateMorphedMonster(actor, 18))
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!actor->target)
|
||||
{
|
||||
return;
|
||||
|
@ -359,51 +311,6 @@ void A_ChicAttack (AActor *actor)
|
|||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// PROC A_ChicLook
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
void A_ChicLook (AActor *actor)
|
||||
{
|
||||
if (P_UpdateMorphedMonster (actor, 10))
|
||||
{
|
||||
return;
|
||||
}
|
||||
A_Look (actor);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// PROC A_ChicChase
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
void A_ChicChase (AActor *actor)
|
||||
{
|
||||
if (P_UpdateMorphedMonster (actor, 3))
|
||||
{
|
||||
return;
|
||||
}
|
||||
A_Chase (actor);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// PROC A_ChicPain
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
void A_ChicPain (AActor *actor)
|
||||
{
|
||||
if (P_UpdateMorphedMonster (actor, 10))
|
||||
{
|
||||
return;
|
||||
}
|
||||
S_SoundID (actor, CHAN_BODY, actor->PainSound, 1, ATTN_NORM);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// PROC A_Feathers
|
||||
|
|
|
@ -22,8 +22,6 @@ extern void AdjustPlayerAngle (AActor *);
|
|||
void A_SnoutAttack (AActor *actor);
|
||||
|
||||
void A_PigPain (AActor *);
|
||||
void A_PigLook (AActor *);
|
||||
void A_PigChase (AActor *);
|
||||
void A_PigAttack (AActor *);
|
||||
|
||||
// Snout puff ---------------------------------------------------------------
|
||||
|
@ -91,7 +89,6 @@ class APigPlayer : public APlayerPawn
|
|||
DECLARE_ACTOR (APigPlayer, APlayerPawn)
|
||||
public:
|
||||
void MorphPlayerThink ();
|
||||
void ActivateMorphWeapon ();
|
||||
};
|
||||
|
||||
FState APigPlayer::States[] =
|
||||
|
@ -154,6 +151,7 @@ IMPLEMENT_ACTOR (APigPlayer, Hexen, -1, 0)
|
|||
PROP_PlayerPawn_ForwardMove2 (FRACUNIT * 0x31 / 0x32)
|
||||
PROP_PlayerPawn_SideMove1 (FRACUNIT * 0x17 / 0x18)
|
||||
PROP_PlayerPawn_SideMove2 (FRACUNIT * 0x27 / 0x28)
|
||||
PROP_PlayerPawn_MorphWeapon ("Snout")
|
||||
|
||||
PROP_PainSound ("PigPain")
|
||||
PROP_DeathSound ("PigDeath")
|
||||
|
@ -177,46 +175,23 @@ void APigPlayer::MorphPlayerThink ()
|
|||
}
|
||||
}
|
||||
|
||||
void APigPlayer::ActivateMorphWeapon ()
|
||||
{
|
||||
player->PendingWeapon = WP_NOCHANGE;
|
||||
player->psprites[ps_weapon].sy = WEAPONTOP;
|
||||
player->ReadyWeapon = player->mo->FindInventory<ASnout> ();
|
||||
if (player->ReadyWeapon == NULL)
|
||||
{
|
||||
player->ReadyWeapon = static_cast<AWeapon *>(player->mo->GiveInventoryType (RUNTIME_CLASS(ASnout)));
|
||||
}
|
||||
if (player->ReadyWeapon != NULL)
|
||||
{
|
||||
P_SetPsprite (player, ps_weapon, player->ReadyWeapon->GetReadyState());
|
||||
}
|
||||
else
|
||||
{
|
||||
P_SetPsprite (player, ps_weapon, NULL);
|
||||
}
|
||||
P_SetPsprite (player, ps_flash, NULL);
|
||||
}
|
||||
|
||||
// Pig (non-player) ---------------------------------------------------------
|
||||
|
||||
class APig : public AActor
|
||||
class APig : public AMorphedMonster
|
||||
{
|
||||
DECLARE_ACTOR (APig, AActor)
|
||||
public:
|
||||
void Destroy ();
|
||||
void Die (AActor *source, AActor *inflictor);
|
||||
DECLARE_ACTOR (APig, AMorphedMonster)
|
||||
};
|
||||
|
||||
FState APig::States[] =
|
||||
{
|
||||
#define S_PIG_LOOK1 0
|
||||
S_NORMAL (PIGY, 'B', 10, A_PigLook , &States[S_PIG_LOOK1]),
|
||||
S_NORMAL (PIGY, 'B', 10, A_Look , &States[S_PIG_LOOK1]),
|
||||
|
||||
#define S_PIG_WALK1 (S_PIG_LOOK1+1)
|
||||
S_NORMAL (PIGY, 'A', 3, A_PigChase , &States[S_PIG_WALK1+1]),
|
||||
S_NORMAL (PIGY, 'B', 3, A_PigChase , &States[S_PIG_WALK1+2]),
|
||||
S_NORMAL (PIGY, 'C', 3, A_PigChase , &States[S_PIG_WALK1+3]),
|
||||
S_NORMAL (PIGY, 'D', 3, A_PigChase , &States[S_PIG_WALK1]),
|
||||
S_NORMAL (PIGY, 'A', 3, A_Chase , &States[S_PIG_WALK1+1]),
|
||||
S_NORMAL (PIGY, 'B', 3, A_Chase , &States[S_PIG_WALK1+2]),
|
||||
S_NORMAL (PIGY, 'C', 3, A_Chase , &States[S_PIG_WALK1+3]),
|
||||
S_NORMAL (PIGY, 'D', 3, A_Chase , &States[S_PIG_WALK1]),
|
||||
|
||||
#define S_PIG_PAIN (S_PIG_WALK1+4)
|
||||
S_NORMAL (PIGY, 'D', 4, A_PigPain , &States[S_PIG_WALK1]),
|
||||
|
@ -265,24 +240,6 @@ IMPLEMENT_ACTOR (APig, Hexen, -1, 0)
|
|||
PROP_ActiveSound ("PigActive1")
|
||||
END_DEFAULTS
|
||||
|
||||
void APig::Destroy ()
|
||||
{
|
||||
if (tracer != NULL)
|
||||
{
|
||||
tracer->Destroy ();
|
||||
}
|
||||
Super::Destroy ();
|
||||
}
|
||||
|
||||
void APig::Die (AActor *source, AActor *inflictor)
|
||||
{
|
||||
Super::Die (source, inflictor);
|
||||
if (tracer != NULL && (tracer->flags & MF_UNMORPHED))
|
||||
{
|
||||
tracer->Die (source, inflictor);
|
||||
}
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// A_SnoutAttack
|
||||
|
@ -317,36 +274,6 @@ void A_SnoutAttack (AActor *actor)
|
|||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// PROC A_PigLook
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
void A_PigLook (AActor *actor)
|
||||
{
|
||||
if (P_UpdateMorphedMonster (actor, 10))
|
||||
{
|
||||
return;
|
||||
}
|
||||
A_Look (actor);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// PROC A_PigChase
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
void A_PigChase (AActor *actor)
|
||||
{
|
||||
if (P_UpdateMorphedMonster (actor, 3))
|
||||
{
|
||||
return;
|
||||
}
|
||||
A_Chase(actor);
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// A_PigAttack
|
||||
|
@ -355,10 +282,6 @@ void A_PigChase (AActor *actor)
|
|||
|
||||
void A_PigAttack (AActor *actor)
|
||||
{
|
||||
if (P_UpdateMorphedMonster (actor, 18))
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!actor->target)
|
||||
{
|
||||
return;
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include "s_sound.h"
|
||||
#include "m_random.h"
|
||||
#include "a_sharedglobal.h"
|
||||
#include "ravenshared.h"
|
||||
|
||||
#define MORPHTICS (40*TICRATE)
|
||||
|
||||
|
@ -196,25 +197,26 @@ bool P_UndoPlayerMorph (player_t *player, bool force)
|
|||
|
||||
bool P_MorphMonster (AActor *actor, const PClass *spawntype)
|
||||
{
|
||||
AActor *morphed;
|
||||
AMorphedMonster *morphed;
|
||||
|
||||
if (actor->player ||
|
||||
if (actor->player || spawntype == NULL ||
|
||||
actor->flags3 & MF3_DONTMORPH ||
|
||||
!(actor->flags3 & MF3_ISMONSTER))
|
||||
!(actor->flags3 & MF3_ISMONSTER) ||
|
||||
!spawntype->IsDescendantOf (RUNTIME_CLASS(AMorphedMonster)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
morphed = Spawn (spawntype, actor->x, actor->y, actor->z, NO_REPLACE);
|
||||
morphed = static_cast<AMorphedMonster *>(Spawn (spawntype, actor->x, actor->y, actor->z, NO_REPLACE));
|
||||
DObject::PointerSubstitution (actor, morphed);
|
||||
morphed->tid = actor->tid;
|
||||
morphed->angle = actor->angle;
|
||||
morphed->tracer = actor;
|
||||
morphed->UnmorphedMe = actor;
|
||||
morphed->alpha = actor->alpha;
|
||||
morphed->RenderStyle = actor->RenderStyle;
|
||||
|
||||
morphed->special1 = MORPHTICS + pr_morphmonst();
|
||||
morphed->special2 = actor->flags & ~MF_JUSTHIT;
|
||||
morphed->UnmorphTime = level.time + MORPHTICS + pr_morphmonst();
|
||||
morphed->FlagsSave = actor->flags & ~MF_JUSTHIT;
|
||||
//morphed->special = actor->special;
|
||||
//memcpy (morphed->args, actor->args, sizeof(actor->args));
|
||||
morphed->CopyFriendliness (actor, true);
|
||||
|
@ -222,7 +224,7 @@ bool P_MorphMonster (AActor *actor, const PClass *spawntype)
|
|||
morphed->flags3 |= actor->flags3 & MF3_GHOST;
|
||||
if (actor->renderflags & RF_INVISIBLE)
|
||||
{
|
||||
morphed->special2 |= MF_JUSTHIT;
|
||||
morphed->FlagsSave |= MF_JUSTHIT;
|
||||
}
|
||||
morphed->AddToHash ();
|
||||
actor->RemoveFromHash ();
|
||||
|
@ -242,18 +244,18 @@ bool P_MorphMonster (AActor *actor, const PClass *spawntype)
|
|||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
bool P_UpdateMorphedMonster (AActor *beast, int tics)
|
||||
bool P_UpdateMorphedMonster (AMorphedMonster *beast)
|
||||
{
|
||||
AActor *actor;
|
||||
|
||||
beast->special1 -= tics;
|
||||
if (beast->special1 > 0 ||
|
||||
beast->tracer == NULL ||
|
||||
if (beast->UnmorphTime == 0 ||
|
||||
beast->UnmorphTime > level.time ||
|
||||
beast->UnmorphedMe == NULL ||
|
||||
beast->flags3 & MF3_STAYMORPHED)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
actor = beast->tracer;
|
||||
actor = beast->UnmorphedMe;
|
||||
actor->SetOrigin (beast->x, beast->y, beast->z);
|
||||
actor->flags |= MF_SOLID;
|
||||
beast->flags &= ~MF_SOLID;
|
||||
|
@ -261,18 +263,18 @@ bool P_UpdateMorphedMonster (AActor *beast, int tics)
|
|||
{ // Didn't fit
|
||||
actor->flags &= ~MF_SOLID;
|
||||
beast->flags |= MF_SOLID;
|
||||
beast->special1 = 5*TICRATE; // Next try in 5 seconds
|
||||
beast->UnmorphTime = level.time + 5*TICRATE; // Next try in 5 seconds
|
||||
return false;
|
||||
}
|
||||
actor->angle = beast->angle;
|
||||
actor->target = beast->target;
|
||||
actor->FriendPlayer = beast->FriendPlayer;
|
||||
actor->flags = beast->special2 & ~MF_JUSTHIT;
|
||||
actor->flags = beast->FlagsSave & ~MF_JUSTHIT;
|
||||
actor->flags = (actor->flags & ~(MF_FRIENDLY|MF_SHADOW)) | (beast->flags & (MF_FRIENDLY|MF_SHADOW));
|
||||
actor->flags3 = (actor->flags3 & ~(MF3_NOSIGHTCHECK|MF3_HUNTPLAYERS|MF3_GHOST))
|
||||
| (beast->flags3 & (MF3_NOSIGHTCHECK|MF3_HUNTPLAYERS|MF3_GHOST));
|
||||
actor->flags4 = (actor->flags4 & ~MF4_NOHATEPLAYERS) | (beast->flags4 & MF4_NOHATEPLAYERS);
|
||||
if (!(beast->special2 & MF_JUSTHIT))
|
||||
if (!(beast->FlagsSave & MF_JUSTHIT))
|
||||
actor->renderflags &= ~RF_INVISIBLE;
|
||||
actor->health = actor->GetDefault()->health;
|
||||
actor->momx = beast->momx;
|
||||
|
@ -282,7 +284,7 @@ bool P_UpdateMorphedMonster (AActor *beast, int tics)
|
|||
actor->special = beast->special;
|
||||
memcpy (actor->args, beast->args, sizeof(actor->args));
|
||||
actor->AddToHash ();
|
||||
beast->tracer = NULL;
|
||||
beast->UnmorphedMe = NULL;
|
||||
DObject::PointerSubstitution (beast, actor);
|
||||
beast->Destroy ();
|
||||
Spawn<ATeleportFog> (beast->x, beast->y, beast->z + TELEFOGHEIGHT, ALLOW_REPLACE);
|
||||
|
@ -291,13 +293,6 @@ bool P_UpdateMorphedMonster (AActor *beast, int tics)
|
|||
|
||||
// Egg ----------------------------------------------------------------------
|
||||
|
||||
class AEggFX : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (AEggFX, AActor)
|
||||
public:
|
||||
int DoSpecialDamage (AActor *target, int damage);
|
||||
};
|
||||
|
||||
FState AEggFX::States[] =
|
||||
{
|
||||
#define S_EGGFX 0
|
||||
|
@ -324,21 +319,30 @@ IMPLEMENT_ACTOR (AEggFX, Heretic, -1, 40)
|
|||
|
||||
PROP_SpawnState (S_EGGFX)
|
||||
PROP_DeathState (S_EGGFXI1)
|
||||
|
||||
PROP_EggFX_PlayerClass ("ChickenPlayer")
|
||||
PROP_EggFX_MonsterClass ("Chicken")
|
||||
END_DEFAULTS
|
||||
|
||||
int AEggFX::DoSpecialDamage (AActor *target, int damage)
|
||||
{
|
||||
if (target->player)
|
||||
{
|
||||
P_MorphPlayer (target->player, PClass::FindClass (NAME_ChickenPlayer));
|
||||
P_MorphPlayer (target->player, PClass::FindClass (ENamedName(PlayerClass)));
|
||||
}
|
||||
else
|
||||
{
|
||||
P_MorphMonster (target, PClass::FindClass (NAME_Chicken));
|
||||
P_MorphMonster (target, PClass::FindClass (ENamedName(MonsterClass)));
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
void AEggFX::Serialize (FArchive &arc)
|
||||
{
|
||||
Super::Serialize (arc);
|
||||
arc << PlayerClass << MonsterClass;
|
||||
}
|
||||
|
||||
// Morph Ovum ----------------------------------------------------------------
|
||||
|
||||
class AArtiEgg : public AInventory
|
||||
|
@ -379,11 +383,9 @@ bool AArtiEgg::Use (bool pickup)
|
|||
|
||||
// Pork missile --------------------------------------------------------------
|
||||
|
||||
class APorkFX : public AActor
|
||||
class APorkFX : public AEggFX
|
||||
{
|
||||
DECLARE_ACTOR (APorkFX, AActor)
|
||||
public:
|
||||
int DoSpecialDamage (AActor *target, int damage);
|
||||
DECLARE_ACTOR (APorkFX, AEggFX)
|
||||
};
|
||||
|
||||
FState APorkFX::States[] =
|
||||
|
@ -412,20 +414,10 @@ IMPLEMENT_ACTOR (APorkFX, Hexen, -1, 40)
|
|||
|
||||
PROP_SpawnState (S_EGGFX)
|
||||
PROP_DeathState (S_EGGFXI2)
|
||||
END_DEFAULTS
|
||||
|
||||
int APorkFX::DoSpecialDamage (AActor *target, int damage)
|
||||
{
|
||||
if (target->player)
|
||||
{
|
||||
P_MorphPlayer (target->player, PClass::FindClass (NAME_PigPlayer));
|
||||
}
|
||||
else
|
||||
{
|
||||
P_MorphMonster (target, PClass::FindClass (NAME_Pig));
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
PROP_EggFX_PlayerClass ("PigPlayer")
|
||||
PROP_EggFX_MonsterClass ("Pig")
|
||||
END_DEFAULTS
|
||||
|
||||
// Porkalator ---------------------------------------------------------------
|
||||
|
||||
|
@ -469,3 +461,49 @@ bool AArtiPork::Use (bool pickup)
|
|||
return true;
|
||||
}
|
||||
|
||||
// Morphed Monster (you must subclass this to do something useful) ---------
|
||||
|
||||
IMPLEMENT_POINTY_CLASS (AMorphedMonster)
|
||||
DECLARE_POINTER (UnmorphedMe)
|
||||
END_POINTERS
|
||||
|
||||
BEGIN_STATELESS_DEFAULTS (AMorphedMonster, Any, -1, 0)
|
||||
PROP_Flags (MF_SOLID|MF_SHOOTABLE)
|
||||
PROP_Flags2 (MF2_MCROSS|MF2_WINDTHRUST|MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_PUSHWALL)
|
||||
PROP_Flags3 (MF3_DONTMORPH|MF3_ISMONSTER)
|
||||
END_DEFAULTS
|
||||
|
||||
void AMorphedMonster::Serialize (FArchive &arc)
|
||||
{
|
||||
Super::Serialize (arc);
|
||||
arc << UnmorphedMe << UnmorphTime << FlagsSave;
|
||||
}
|
||||
|
||||
void AMorphedMonster::Destroy ()
|
||||
{
|
||||
if (UnmorphedMe != NULL)
|
||||
{
|
||||
UnmorphedMe->Destroy ();
|
||||
}
|
||||
Super::Destroy ();
|
||||
}
|
||||
|
||||
void AMorphedMonster::Die (AActor *source, AActor *inflictor)
|
||||
{
|
||||
// Dead things don't unmorph
|
||||
source->flags3 |= MF3_STAYMORPHED;
|
||||
Super::Die (source, inflictor);
|
||||
if (UnmorphedMe != NULL && (UnmorphedMe->flags & MF_UNMORPHED))
|
||||
{
|
||||
UnmorphedMe->health = health;
|
||||
UnmorphedMe->Die (source, inflictor);
|
||||
}
|
||||
}
|
||||
|
||||
void AMorphedMonster::Tick ()
|
||||
{
|
||||
if (!P_UpdateMorphedMonster (this))
|
||||
{
|
||||
Super::Tick ();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ bool P_MorphPlayer (player_s *player);
|
|||
bool P_UndoPlayerMorph (player_s *player, bool force);
|
||||
|
||||
bool P_MorphMonster (AActor *actor, const PClass *morphClass);
|
||||
bool P_UpdateMorphedMonster (AActor *actor, int tics);
|
||||
bool P_UpdateMorphedMonster (AActor *actor);
|
||||
|
||||
class AMinotaur : public AActor
|
||||
{
|
||||
|
@ -36,4 +36,29 @@ public:
|
|||
void Serialize (FArchive &arc);
|
||||
};
|
||||
|
||||
class AEggFX : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (AEggFX, AActor)
|
||||
public:
|
||||
int DoSpecialDamage (AActor *target, int damage);
|
||||
void Serialize (FArchive &arc);
|
||||
|
||||
int PlayerClass, MonsterClass; // actually names
|
||||
};
|
||||
|
||||
class AMorphedMonster : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (AMorphedMonster, AActor)
|
||||
HAS_OBJECT_POINTERS
|
||||
public:
|
||||
void Tick ();
|
||||
void Serialize (FArchive &arc);
|
||||
void Die (AActor *source, AActor *inflictor);
|
||||
void Destroy ();
|
||||
|
||||
AActor *UnmorphedMe;
|
||||
int UnmorphTime;
|
||||
DWORD FlagsSave;
|
||||
};
|
||||
|
||||
#endif //__RAVENSHARED_H__
|
||||
|
|
|
@ -245,7 +245,10 @@ enum
|
|||
ADEF_PlayerPawn_DisplayName,
|
||||
ADEF_PlayerPawn_SoundClass,
|
||||
ADEF_PlayerPawn_ScoreIcon,
|
||||
ADEF_LastString = ADEF_PlayerPawn_ScoreIcon,
|
||||
ADEF_PlayerPawn_MorphWeapon,
|
||||
ADEF_EggFX_PlayerClass,
|
||||
ADEF_EggFX_MonsterClass,
|
||||
ADEF_LastString = ADEF_EggFX_MonsterClass,
|
||||
|
||||
// The rest of the properties use their type field (upper 2 bits)
|
||||
ADEF_XScale,
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
#include "w_wad.h"
|
||||
#include "a_strifeglobal.h"
|
||||
#include "thingdef.h"
|
||||
#include "ravenshared.h"
|
||||
|
||||
void FActorInfo::BuildDefaults ()
|
||||
{
|
||||
|
@ -129,6 +130,7 @@ static void ApplyActorDefault (int defnum, const char *datastr, int dataint)
|
|||
ASigil *const sigil = (ASigil *)sgDefaults;
|
||||
AAmmo *const ammo = (AAmmo *)sgDefaults;
|
||||
APlayerPawn *const player = (APlayerPawn *)sgDefaults;
|
||||
AEggFX *const eggfx = (AEggFX *)sgDefaults;
|
||||
|
||||
switch (defnum)
|
||||
{
|
||||
|
@ -325,6 +327,7 @@ static void ApplyActorDefault (int defnum, const char *datastr, int dataint)
|
|||
case ADEF_PlayerPawn_ColorRange: sgClass->Meta.SetMetaInt (APMETA_ColorRange, dataint); break;
|
||||
case ADEF_PlayerPawn_CrouchSprite: player->crouchsprite = GetSpriteIndex(datastr); break;
|
||||
case ADEF_PlayerPawn_SpawnMask: player->SpawnMask = dataint; break;
|
||||
case ADEF_PlayerPawn_MorphWeapon: player->MorphWeapon = FName(datastr); break;
|
||||
|
||||
case ADEF_PlayerPawn_DisplayName:
|
||||
sgClass->Meta.SetMetaString (APMETA_DisplayName, datastr);
|
||||
|
@ -340,6 +343,9 @@ static void ApplyActorDefault (int defnum, const char *datastr, int dataint)
|
|||
}
|
||||
break;
|
||||
|
||||
case ADEF_EggFX_PlayerClass: eggfx->PlayerClass = FName(datastr); break;
|
||||
case ADEF_EggFX_MonsterClass: eggfx->MonsterClass = FName(datastr); break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -215,6 +215,9 @@ public:
|
|||
#define PROP_PlayerPawn_DisplayName(x) ADD_STRING_PROP(ADEF_PlayerPawn_DisplayName,"\25",x)
|
||||
#define PROP_PlayerPawn_SoundClass(x) ADD_STRING_PROP(ADEF_PlayerPawn_SoundClass,"\26",x)
|
||||
#define PROP_PlayerPawn_ScoreIcon(x) ADD_STRING_PROP(ADEF_PlayerPawn_ScoreIcon,"\27",x)
|
||||
#define PROP_PlayerPawn_MorphWeapon(x) ADD_STRING_PROP(ADEF_PlayerPawn_MorphWeapon,"\30",x)
|
||||
#define PROP_EggFX_PlayerClass(x) ADD_STRING_PROP(ADEF_EggFX_PlayerClass,"\31",x)
|
||||
#define PROP_EggFX_MonsterClass(x) ADD_STRING_PROP(ADEF_EggFX_MonsterClass,"\32",x)
|
||||
|
||||
#define PROP_XScale(x) ADD_BYTE_PROP(ADEF_XScale,x)
|
||||
#define PROP_YScale(x) ADD_BYTE_PROP(ADEF_YScale,x)
|
||||
|
|
|
@ -3942,10 +3942,12 @@ void P_SpawnBlood (fixed_t x, fixed_t y, fixed_t z, angle_t dir, int damage, AAc
|
|||
if (th->tics < 1)
|
||||
th->tics = 1;
|
||||
}
|
||||
th->SetDamage (damage);
|
||||
|
||||
// colorize the blood!
|
||||
if (bloodcolor!=0) th->Translation = TRANSLATION(TRANSLATION_Blood, bloodcolor.a);
|
||||
if (bloodcolor != 0)
|
||||
{
|
||||
th->Translation = TRANSLATION(TRANSLATION_Blood, bloodcolor.a);
|
||||
}
|
||||
th->SetDamage (damage);
|
||||
}
|
||||
|
||||
if (cl_bloodtype >= 1)
|
||||
|
|
|
@ -382,6 +382,7 @@ BEGIN_STATELESS_DEFAULTS (APlayerPawn, Any, -1, 0)
|
|||
PROP_PlayerPawn_SideMove2 (FRACUNIT)
|
||||
PROP_PlayerPawn_ColorRange (0, 0)
|
||||
PROP_PlayerPawn_SoundClass ("player")
|
||||
PROP_PlayerPawn_MorphWeapon ("None")
|
||||
END_DEFAULTS
|
||||
|
||||
IMPLEMENT_ABSTRACT_ACTOR (APlayerChunk)
|
||||
|
@ -399,7 +400,8 @@ void APlayerPawn::Serialize (FArchive &arc)
|
|||
<< SideMove2
|
||||
<< ScoreIcon
|
||||
<< InvFirst
|
||||
<< InvSel;
|
||||
<< InvSel
|
||||
<< MorphWeapon;
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
|
@ -911,6 +913,32 @@ void APlayerPawn::MorphPlayerThink ()
|
|||
|
||||
void APlayerPawn::ActivateMorphWeapon ()
|
||||
{
|
||||
const PClass *morphweapon = PClass::FindClass (ENamedName(MorphWeapon));
|
||||
player->PendingWeapon = WP_NOCHANGE;
|
||||
player->psprites[ps_weapon].sy = WEAPONTOP;
|
||||
|
||||
if (morphweapon == NULL || !morphweapon->IsDescendantOf (RUNTIME_CLASS(AWeapon)))
|
||||
{ // No weapon at all while morphed!
|
||||
player->ReadyWeapon = NULL;
|
||||
P_SetPsprite (player, ps_weapon, NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
player->ReadyWeapon = static_cast<AWeapon *>(player->mo->FindInventory (morphweapon));
|
||||
if (player->ReadyWeapon == NULL)
|
||||
{
|
||||
player->ReadyWeapon = static_cast<AWeapon *>(player->mo->GiveInventoryType (morphweapon));
|
||||
}
|
||||
if (player->ReadyWeapon != NULL)
|
||||
{
|
||||
P_SetPsprite (player, ps_weapon, player->ReadyWeapon->GetReadyState());
|
||||
}
|
||||
else
|
||||
{
|
||||
P_SetPsprite (player, ps_weapon, NULL);
|
||||
}
|
||||
}
|
||||
P_SetPsprite (player, ps_flash, NULL);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
|
|
|
@ -67,6 +67,7 @@
|
|||
#include "p_conversation.h"
|
||||
#include "v_text.h"
|
||||
#include "thingdef.h"
|
||||
#include "ravenshared.h"
|
||||
|
||||
|
||||
const PClass *QuestItemClasses[31];
|
||||
|
@ -508,6 +509,19 @@ ACTOR(RadiusThrust)
|
|||
|
||||
#include "d_dehackedactions.h"
|
||||
|
||||
/* What do the parameter letters mean?
|
||||
*
|
||||
* If the letter is uppercase, it is required. Lowercase letters are optional.
|
||||
* i = integer
|
||||
* f = fixed point
|
||||
* s = sound name
|
||||
* m = actor name
|
||||
* t = string
|
||||
* l = jump label
|
||||
* c = color
|
||||
* x = expression
|
||||
* y = expression
|
||||
*/
|
||||
#define FUNC(name, parm) { #name, name, parm },
|
||||
// Declare the code pointer table
|
||||
AFuncDesc AFTable[]=
|
||||
|
@ -664,14 +678,14 @@ AFuncDesc AFTable[]=
|
|||
FUNC(A_JumpIfInventory, "MXL" )
|
||||
FUNC(A_GiveInventory, "Mx" )
|
||||
FUNC(A_TakeInventory, "Mx" )
|
||||
FUNC(A_SpawnItem, "Mxxy" )
|
||||
FUNC(A_SpawnItem, "Mxxyx" )
|
||||
FUNC(A_ThrowGrenade, "Mxxxy" )
|
||||
FUNC(A_SelectWeapon, "M")
|
||||
FUNC(A_Print, "T")
|
||||
FUNC(A_SetTranslucent, "Xx")
|
||||
FUNC(A_FadeIn, "x")
|
||||
FUNC(A_FadeOut, "x")
|
||||
FUNC(A_SpawnDebris, "M")
|
||||
FUNC(A_SpawnDebris, "Mx")
|
||||
FUNC(A_CheckSight, "L")
|
||||
FUNC(A_ExtChase, "XXyx")
|
||||
FUNC(A_DropInventory, "M")
|
||||
|
@ -1710,7 +1724,7 @@ do_stop:
|
|||
break;
|
||||
|
||||
case 'C':
|
||||
case 'c':
|
||||
case 'c': // Color
|
||||
SC_MustGetString ();
|
||||
if (SC_Compare("none"))
|
||||
{
|
||||
|
@ -3620,6 +3634,15 @@ static void PlayerMaxHealth (APlayerPawn *defaults, Baggage &bag)
|
|||
defaults->MaxHealth = sc_Number;
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
//==========================================================================
|
||||
static void PlayerMorphWeapon (APlayerPawn *defaults, Baggage &bag)
|
||||
{
|
||||
SC_MustGetString ();
|
||||
defaults->MorphWeapon = FName(sc_String);
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
//==========================================================================
|
||||
|
@ -3675,6 +3698,24 @@ static void PlayerStartItem (APlayerPawn *defaults, Baggage &bag)
|
|||
bag.DropItemList = di;
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
//==========================================================================
|
||||
static void EggFXMonsterClass (AEggFX *defaults, Baggage &bag)
|
||||
{
|
||||
SC_MustGetString ();
|
||||
defaults->MonsterClass = FName(sc_String);
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
//==========================================================================
|
||||
static void EggFXPlayerClass (AEggFX *defaults, Baggage &bag)
|
||||
{
|
||||
SC_MustGetString ();
|
||||
defaults->PlayerClass = FName(sc_String);
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
//==========================================================================
|
||||
|
@ -3739,6 +3780,8 @@ static const ActorProps props[] =
|
|||
{ "disintegrate", ActorDisintegrateState, RUNTIME_CLASS(AActor) },
|
||||
{ "donthurtshooter", ActorDontHurtShooter, RUNTIME_CLASS(AActor) },
|
||||
{ "dropitem", ActorDropItem, RUNTIME_CLASS(AActor) },
|
||||
{ "eggfx.playerclass", (apf)EggFXPlayerClass, RUNTIME_CLASS(AEggFX) },
|
||||
{ "eggfx.monsterclass", (apf)EggFXMonsterClass, RUNTIME_CLASS(AEggFX) },
|
||||
{ "explosiondamage", ActorExplosionDamage, RUNTIME_CLASS(AActor) },
|
||||
{ "explosionradius", ActorExplosionRadius, RUNTIME_CLASS(AActor) },
|
||||
{ "fastspeed", ActorFastSpeed, RUNTIME_CLASS(AActor) },
|
||||
|
@ -3782,6 +3825,7 @@ static const ActorProps props[] =
|
|||
{ "player.forwardmove", (apf)PlayerForwardMove, RUNTIME_CLASS(APlayerPawn) },
|
||||
{ "player.jumpz", (apf)PlayerJumpZ, RUNTIME_CLASS(APlayerPawn) },
|
||||
{ "player.maxhealth", (apf)PlayerMaxHealth, RUNTIME_CLASS(APlayerPawn) },
|
||||
{ "player.morphweapon", (apf)PlayerMorphWeapon, RUNTIME_CLASS(APlayerPawn) },
|
||||
{ "player.scoreicon", (apf)PlayerScoreIcon, RUNTIME_CLASS(APlayerPawn) },
|
||||
{ "player.sidemove", (apf)PlayerSideMove, RUNTIME_CLASS(APlayerPawn) },
|
||||
{ "player.soundclass", (apf)PlayerSoundClass, RUNTIME_CLASS(APlayerPawn) },
|
||||
|
|
|
@ -1118,13 +1118,14 @@ void A_TakeFromTarget(AActor * self)
|
|||
void A_SpawnItem(AActor * self)
|
||||
{
|
||||
FState * CallingState;
|
||||
int index=CheckIndex(4, &CallingState);
|
||||
int index=CheckIndex(5, &CallingState);
|
||||
if (index<0) return;
|
||||
|
||||
const PClass * missile= PClass::FindClass((ENamedName)StateParameters[index]);
|
||||
fixed_t distance = fixed_t(EvalExpressionF (StateParameters[index+1], self) * FRACUNIT);
|
||||
fixed_t zheight = fixed_t(EvalExpressionF (StateParameters[index+2], self) * FRACUNIT);
|
||||
bool useammo = EvalExpressionN (StateParameters[index+3], self);
|
||||
BOOL transfer_translation = EvalExpressionI (StateParameters[index+4], self);
|
||||
|
||||
if (!missile)
|
||||
{
|
||||
|
@ -1156,6 +1157,11 @@ void A_SpawnItem(AActor * self)
|
|||
{
|
||||
AActor * originator = self;
|
||||
|
||||
if (transfer_translation)
|
||||
{
|
||||
mo->Translation = self->Translation;
|
||||
}
|
||||
|
||||
mo->angle=self->angle;
|
||||
while (originator && isMissile(originator)) originator = originator->target;
|
||||
|
||||
|
@ -1407,9 +1413,11 @@ void A_SpawnDebris(AActor * self)
|
|||
AActor * mo;
|
||||
const PClass * debris;
|
||||
|
||||
int index=CheckIndex(1, NULL);
|
||||
int index=CheckIndex(2, NULL);
|
||||
if (index<0) return;
|
||||
|
||||
BOOL transfer_translation = EvalExpressionI (StateParameters[index+1], self);
|
||||
|
||||
debris = PClass::FindClass((ENamedName)StateParameters[index]);
|
||||
if (debris == NULL) return;
|
||||
|
||||
|
@ -1418,6 +1426,10 @@ void A_SpawnDebris(AActor * self)
|
|||
mo = Spawn(debris, self->x+((pr_spawndebris()-128)<<12),
|
||||
self->y+((pr_spawndebris()-128)<<12),
|
||||
self->z+(pr_spawndebris()*self->height/256), ALLOW_REPLACE);
|
||||
if (mo && transfer_translation)
|
||||
{
|
||||
mo->Translation = self->Translation;
|
||||
}
|
||||
if (mo && i < mo->GetClass()->ActorInfo->NumOwnedStates)
|
||||
{
|
||||
mo->SetState (mo->GetClass()->ActorInfo->OwnedStates + i);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* ANSI-C code produced by gperf version 3.0.1 */
|
||||
/* Command-line: gperf -tE -LANSI-C -Hspecialhash -Nis_special -C --null-strings thingdef_specials.gperf */
|
||||
/* Command-line: gperf -m10000 -tE -LANSI-C -Hspecialhash -Nis_special -C --null-strings thingdef_specials.gperf */
|
||||
/* Computed positions: -k'1,7,9,14,17' */
|
||||
|
||||
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
|
||||
|
@ -31,7 +31,7 @@
|
|||
|
||||
#line 10 "thingdef_specials.gperf"
|
||||
struct ACSspecials { const char *name; unsigned char Special; unsigned char MinArgs; unsigned char MaxArgs; };
|
||||
/* maximum key range = 567, duplicates = 0 */
|
||||
/* maximum key range = 326, duplicates = 0 */
|
||||
|
||||
#ifdef __GNUC__
|
||||
__inline
|
||||
|
@ -45,32 +45,32 @@ specialhash (register const char *str, register unsigned int len)
|
|||
{
|
||||
static const unsigned short asso_values[] =
|
||||
{
|
||||
580, 580, 580, 580, 580, 580, 580, 580, 580, 580,
|
||||
580, 580, 580, 580, 580, 580, 580, 580, 580, 580,
|
||||
580, 580, 580, 580, 580, 580, 580, 580, 580, 580,
|
||||
580, 580, 580, 580, 580, 580, 580, 580, 580, 580,
|
||||
580, 580, 580, 580, 580, 580, 580, 580, 580, 580,
|
||||
580, 580, 580, 580, 580, 580, 580, 580, 580, 580,
|
||||
580, 580, 580, 580, 580, 580, 580, 580, 580, 580,
|
||||
580, 580, 580, 580, 580, 580, 580, 580, 580, 580,
|
||||
580, 580, 580, 580, 580, 580, 580, 580, 580, 580,
|
||||
580, 580, 580, 580, 580, 60, 580, 0, 105, 20,
|
||||
200, 10, 140, 0, 30, 155, 75, 0, 5, 165,
|
||||
85, 70, 65, 580, 0, 5, 5, 65, 30, 10,
|
||||
5, 30, 580, 580, 580, 580, 580, 580, 580, 580,
|
||||
580, 580, 580, 580, 580, 580, 580, 580, 580, 580,
|
||||
580, 580, 580, 580, 580, 580, 580, 580, 580, 580,
|
||||
580, 580, 580, 580, 580, 580, 580, 580, 580, 580,
|
||||
580, 580, 580, 580, 580, 580, 580, 580, 580, 580,
|
||||
580, 580, 580, 580, 580, 580, 580, 580, 580, 580,
|
||||
580, 580, 580, 580, 580, 580, 580, 580, 580, 580,
|
||||
580, 580, 580, 580, 580, 580, 580, 580, 580, 580,
|
||||
580, 580, 580, 580, 580, 580, 580, 580, 580, 580,
|
||||
580, 580, 580, 580, 580, 580, 580, 580, 580, 580,
|
||||
580, 580, 580, 580, 580, 580, 580, 580, 580, 580,
|
||||
580, 580, 580, 580, 580, 580, 580, 580, 580, 580,
|
||||
580, 580, 580, 580, 580, 580, 580, 580, 580, 580,
|
||||
580, 580, 580, 580, 580, 580
|
||||
356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
|
||||
356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
|
||||
356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
|
||||
356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
|
||||
356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
|
||||
356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
|
||||
356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
|
||||
356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
|
||||
356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
|
||||
356, 356, 356, 356, 356, 53, 356, 20, 85, 15,
|
||||
107, 13, 88, 10, 68, 95, 10, 10, 13, 136,
|
||||
72, 84, 44, 356, 10, 11, 12, 28, 53, 69,
|
||||
10, 75, 356, 356, 356, 356, 356, 356, 356, 356,
|
||||
356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
|
||||
356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
|
||||
356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
|
||||
356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
|
||||
356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
|
||||
356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
|
||||
356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
|
||||
356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
|
||||
356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
|
||||
356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
|
||||
356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
|
||||
356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
|
||||
356, 356, 356, 356, 356, 356
|
||||
};
|
||||
register int hval = len;
|
||||
|
||||
|
@ -115,11 +115,11 @@ is_special (register const char *str, register unsigned int len)
|
|||
{
|
||||
enum
|
||||
{
|
||||
TOTAL_KEYWORDS = 166,
|
||||
TOTAL_KEYWORDS = 169,
|
||||
MIN_WORD_LENGTH = 8,
|
||||
MAX_WORD_LENGTH = 29,
|
||||
MIN_HASH_VALUE = 13,
|
||||
MAX_HASH_VALUE = 579
|
||||
MIN_HASH_VALUE = 30,
|
||||
MAX_HASH_VALUE = 355
|
||||
};
|
||||
|
||||
static const struct ACSspecials wordlist[] =
|
||||
|
@ -127,487 +127,429 @@ is_special (register const char *str, register unsigned int len)
|
|||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 76 "thingdef_specials.gperf"
|
||||
{"teleport",70,1},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 93 "thingdef_specials.gperf"
|
||||
{"teleportgroup",77,5},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 88 "thingdef_specials.gperf"
|
||||
{"thing_spawn",135,3,4},
|
||||
#line 49 "thingdef_specials.gperf"
|
||||
{"light_strobe",116,5},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 13 "thingdef_specials.gperf"
|
||||
{"acs_suspend",81,2},
|
||||
{(char*)0},
|
||||
#line 145 "thingdef_specials.gperf"
|
||||
{"thing_setgoal",229,3},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 160 "thingdef_specials.gperf"
|
||||
{"exit_secret",244,1},
|
||||
#line 107 "thingdef_specials.gperf"
|
||||
{"line_alignceiling",183,2},
|
||||
{(char*)0},
|
||||
#line 82 "thingdef_specials.gperf"
|
||||
{"thing_activate",130,1},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 126 "thingdef_specials.gperf"
|
||||
{"generic_lift",203,5},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 93 "thingdef_specials.gperf"
|
||||
{"teleportgroup",77,5},
|
||||
#line 49 "thingdef_specials.gperf"
|
||||
{"light_strobe",116,5},
|
||||
#line 160 "thingdef_specials.gperf"
|
||||
{"exit_secret",244,1},
|
||||
#line 145 "thingdef_specials.gperf"
|
||||
{"thing_setgoal",229,3},
|
||||
{(char*)0},
|
||||
#line 126 "thingdef_specials.gperf"
|
||||
{"generic_lift",203,5},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 88 "thingdef_specials.gperf"
|
||||
{"thing_spawn",135,3,4},
|
||||
#line 13 "thingdef_specials.gperf"
|
||||
{"acs_suspend",81,2},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0},
|
||||
#line 127 "thingdef_specials.gperf"
|
||||
{"generic_stairs",204,5},
|
||||
#line 105 "thingdef_specials.gperf"
|
||||
{"thing_settranslation",180,2},
|
||||
{(char*)0},
|
||||
#line 99 "thingdef_specials.gperf"
|
||||
{"thing_spawnfacing",139,2,4},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 102 "thingdef_specials.gperf"
|
||||
{"thing_hate",177,2,3},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 91 "thingdef_specials.gperf"
|
||||
{"ceiling_waggle",38,5},
|
||||
#line 170 "thingdef_specials.gperf"
|
||||
{"ceiling_lowertofloor",254,2},
|
||||
{(char*)0},
|
||||
#line 168 "thingdef_specials.gperf"
|
||||
{"ceiling_raisetonearest",252,2},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 16 "thingdef_specials.gperf"
|
||||
{"ceiling_crushandraise",42,3},
|
||||
#line 119 "thingdef_specials.gperf"
|
||||
{"ceiling_crushandraisea",196,4},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 128 "thingdef_specials.gperf"
|
||||
{"generic_crusher",205,5},
|
||||
#line 18 "thingdef_specials.gperf"
|
||||
{"ceiling_lowerandcrush",43,3},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 82 "thingdef_specials.gperf"
|
||||
{"thing_activate",130,1},
|
||||
#line 12 "thingdef_specials.gperf"
|
||||
{"acs_execute",80,1,5},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 107 "thingdef_specials.gperf"
|
||||
{"line_alignceiling",183,2},
|
||||
{(char*)0},
|
||||
#line 120 "thingdef_specials.gperf"
|
||||
{"ceiling_crushandraisesilenta",197,4},
|
||||
#line 105 "thingdef_specials.gperf"
|
||||
{"thing_settranslation",180,2},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 168 "thingdef_specials.gperf"
|
||||
{"ceiling_raisetonearest",252,2},
|
||||
#line 170 "thingdef_specials.gperf"
|
||||
{"ceiling_lowertofloor",254,2},
|
||||
{(char*)0},
|
||||
#line 99 "thingdef_specials.gperf"
|
||||
{"thing_spawnfacing",139,2,4},
|
||||
#line 21 "thingdef_specials.gperf"
|
||||
{"ceiling_crushraiseandstay",45,3},
|
||||
#line 118 "thingdef_specials.gperf"
|
||||
{"ceiling_crushraiseandstaya",195,4},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 171 "thingdef_specials.gperf"
|
||||
{"ceiling_crushraiseandstaysila",255,4},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 15 "thingdef_specials.gperf"
|
||||
{"acs_lockedexecute",83,5},
|
||||
#line 135 "thingdef_specials.gperf"
|
||||
{"teleport_line",215,2},
|
||||
#line 77 "thingdef_specials.gperf"
|
||||
{"teleport_nofog",71,1,2},
|
||||
#line 78 "thingdef_specials.gperf"
|
||||
{"teleport_newmap",74,2},
|
||||
#line 79 "thingdef_specials.gperf"
|
||||
{"teleport_endgame",75,0},
|
||||
#line 141 "thingdef_specials.gperf"
|
||||
{"scroll_floor",223,4},
|
||||
#line 171 "thingdef_specials.gperf"
|
||||
{"ceiling_crushraiseandstaysila",255,4},
|
||||
#line 16 "thingdef_specials.gperf"
|
||||
{"ceiling_crushandraise",42,3},
|
||||
#line 119 "thingdef_specials.gperf"
|
||||
{"ceiling_crushandraisea",196,4},
|
||||
#line 15 "thingdef_specials.gperf"
|
||||
{"acs_lockedexecute",83,5},
|
||||
#line 18 "thingdef_specials.gperf"
|
||||
{"ceiling_lowerandcrush",43,3},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 47 "thingdef_specials.gperf"
|
||||
{"light_glow",114,4},
|
||||
#line 12 "thingdef_specials.gperf"
|
||||
{"acs_execute",80,1,5},
|
||||
#line 180 "thingdef_specials.gperf"
|
||||
{"acs_lockedexecutedoor",85,5},
|
||||
#line 120 "thingdef_specials.gperf"
|
||||
{"ceiling_crushandraisesilenta",197,4},
|
||||
#line 77 "thingdef_specials.gperf"
|
||||
{"teleport_nofog",71,1,2},
|
||||
{(char*)0},
|
||||
#line 92 "thingdef_specials.gperf"
|
||||
{"teleportother",76,3},
|
||||
#line 142 "thingdef_specials.gperf"
|
||||
{"scroll_ceiling",224,4},
|
||||
#line 50 "thingdef_specials.gperf"
|
||||
{"light_stop",117,1},
|
||||
#line 134 "thingdef_specials.gperf"
|
||||
{"sector_setdamage",214,3},
|
||||
#line 114 "thingdef_specials.gperf"
|
||||
{"setplayerproperty",191,3},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 108 "thingdef_specials.gperf"
|
||||
{"line_alignfloor",184,2},
|
||||
#line 148 "thingdef_specials.gperf"
|
||||
{"light_strobedoom",232,3},
|
||||
#line 139 "thingdef_specials.gperf"
|
||||
{"sector_setcurrent",220,4},
|
||||
{(char*)0},
|
||||
#line 102 "thingdef_specials.gperf"
|
||||
{"thing_hate",177,2,3},
|
||||
#line 70 "thingdef_specials.gperf"
|
||||
{"radius_quake",120,5},
|
||||
#line 133 "thingdef_specials.gperf"
|
||||
{"sector_setfade",213,4},
|
||||
#line 177 "thingdef_specials.gperf"
|
||||
{"noisealert",173,2},
|
||||
#line 63 "thingdef_specials.gperf"
|
||||
{"polyobj_rotateright",3,3},
|
||||
#line 175 "thingdef_specials.gperf"
|
||||
{"acs_executewithresult",84,1,4},
|
||||
{(char*)0},
|
||||
#line 59 "thingdef_specials.gperf"
|
||||
{"plat_stop",61,1},
|
||||
#line 78 "thingdef_specials.gperf"
|
||||
{"teleport_newmap",74,2},
|
||||
#line 79 "thingdef_specials.gperf"
|
||||
{"teleport_endgame",75,0},
|
||||
#line 17 "thingdef_specials.gperf"
|
||||
{"ceiling_crushstop",44,1},
|
||||
#line 134 "thingdef_specials.gperf"
|
||||
{"sector_setdamage",214,3},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 139 "thingdef_specials.gperf"
|
||||
{"sector_setcurrent",220,4},
|
||||
#line 47 "thingdef_specials.gperf"
|
||||
{"light_glow",114,4},
|
||||
#line 50 "thingdef_specials.gperf"
|
||||
{"light_stop",117,1},
|
||||
#line 92 "thingdef_specials.gperf"
|
||||
{"teleportother",76,3},
|
||||
{(char*)0},
|
||||
#line 91 "thingdef_specials.gperf"
|
||||
{"ceiling_waggle",38,5},
|
||||
#line 112 "thingdef_specials.gperf"
|
||||
{"sector_setceilingscale",188,5},
|
||||
{(char*)0},
|
||||
#line 110 "thingdef_specials.gperf"
|
||||
{"sector_setceilingpanning",186,5},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 143 "thingdef_specials.gperf"
|
||||
{"acs_executealways",226,1,5},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 175 "thingdef_specials.gperf"
|
||||
{"acs_executewithresult",84,1,4},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 45 "thingdef_specials.gperf"
|
||||
{"light_changetovalue",112,2},
|
||||
{(char*)0},
|
||||
#line 169 "thingdef_specials.gperf"
|
||||
{"ceiling_lowertolowest",253,2},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 144 "thingdef_specials.gperf"
|
||||
{"plat_raiseandstaytx0",228,2},
|
||||
{(char*)0},
|
||||
#line 17 "thingdef_specials.gperf"
|
||||
{"ceiling_crushstop",44,1},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 173 "thingdef_specials.gperf"
|
||||
{"clearforcefield",34,1},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 44 "thingdef_specials.gperf"
|
||||
{"light_lowerbyvalue",111,2},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 70 "thingdef_specials.gperf"
|
||||
{"radius_quake",120,5},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 124 "thingdef_specials.gperf"
|
||||
{"generic_ceiling",201,5},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 59 "thingdef_specials.gperf"
|
||||
{"plat_stop",61,1},
|
||||
#line 20 "thingdef_specials.gperf"
|
||||
{"ceiling_raisebyvalue",41,3},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 19 "thingdef_specials.gperf"
|
||||
{"ceiling_lowerbyvalue",40,3},
|
||||
#line 121 "thingdef_specials.gperf"
|
||||
{"ceiling_raisebyvaluetimes8",198,3},
|
||||
#line 136 "thingdef_specials.gperf"
|
||||
{"sector_setgravity",216,3},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 122 "thingdef_specials.gperf"
|
||||
{"ceiling_lowerbyvaluetimes8",199,3},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 132 "thingdef_specials.gperf"
|
||||
{"sector_setcolor",212,4,5},
|
||||
{(char*)0},
|
||||
#line 90 "thingdef_specials.gperf"
|
||||
{"floor_waggle",138,5},
|
||||
#line 109 "thingdef_specials.gperf"
|
||||
{"sector_setrotation",185,3},
|
||||
#line 56 "thingdef_specials.gperf"
|
||||
{"plat_upwaitdownstay",64,3},
|
||||
{(char*)0},
|
||||
#line 89 "thingdef_specials.gperf"
|
||||
{"thing_spawnnofog",137,3,4},
|
||||
#line 111 "thingdef_specials.gperf"
|
||||
{"sector_setfloorpanning",187,5},
|
||||
#line 14 "thingdef_specials.gperf"
|
||||
{"acs_terminate",82,2},
|
||||
#line 63 "thingdef_specials.gperf"
|
||||
{"polyobj_rotateright",3,3},
|
||||
#line 162 "thingdef_specials.gperf"
|
||||
{"elevator_movetofloor",246,2},
|
||||
#line 106 "thingdef_specials.gperf"
|
||||
{"line_mirror",182,0},
|
||||
{(char*)0},
|
||||
#line 123 "thingdef_specials.gperf"
|
||||
{"generic_floor",200,5},
|
||||
#line 140 "thingdef_specials.gperf"
|
||||
{"scroll_texture_both",221,5},
|
||||
{(char*)0},
|
||||
#line 124 "thingdef_specials.gperf"
|
||||
{"generic_ceiling",201,5},
|
||||
#line 178 "thingdef_specials.gperf"
|
||||
{"thing_raise",17,1},
|
||||
#line 106 "thingdef_specials.gperf"
|
||||
{"line_mirror",182,0},
|
||||
#line 80 "thingdef_specials.gperf"
|
||||
{"thrustthing",72,2,4},
|
||||
#line 98 "thingdef_specials.gperf"
|
||||
{"thrustthingz",128,4},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 131 "thingdef_specials.gperf"
|
||||
{"translucentline",208,2,3},
|
||||
#line 94 "thingdef_specials.gperf"
|
||||
{"teleportinsector",78,4,5},
|
||||
#line 87 "thingdef_specials.gperf"
|
||||
{"thing_remove",132,1},
|
||||
{(char*)0},
|
||||
#line 57 "thingdef_specials.gperf"
|
||||
{"plat_upbyvalue",65,4},
|
||||
#line 113 "thingdef_specials.gperf"
|
||||
{"sector_setfloorscale",189,5},
|
||||
#line 97 "thingdef_specials.gperf"
|
||||
{"thing_setspecial",127,5},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 31 "thingdef_specials.gperf"
|
||||
{"floor_lowertolowest",21,2},
|
||||
#line 146 "thingdef_specials.gperf"
|
||||
{"plat_upbyvaluestaytx",230,3},
|
||||
#line 104 "thingdef_specials.gperf"
|
||||
{"changeskill",179,1},
|
||||
{(char*)0},
|
||||
#line 157 "thingdef_specials.gperf"
|
||||
{"floor_lowertolowesttxty",241,2},
|
||||
#line 164 "thingdef_specials.gperf"
|
||||
{"healthing",248,1,2},
|
||||
#line 101 "thingdef_specials.gperf"
|
||||
{"thing_changetid",176,2},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 117 "thingdef_specials.gperf"
|
||||
{"ceiling_raiseinstant",194,3},
|
||||
#line 53 "thingdef_specials.gperf"
|
||||
{"pillar_open",30,4},
|
||||
#line 148 "thingdef_specials.gperf"
|
||||
{"light_strobedoom",232,3},
|
||||
#line 108 "thingdef_specials.gperf"
|
||||
{"line_alignfloor",184,2},
|
||||
{(char*)0},
|
||||
#line 51 "thingdef_specials.gperf"
|
||||
{"pillar_build",29,3},
|
||||
#line 71 "thingdef_specials.gperf"
|
||||
{"sector_changesound",140,2},
|
||||
#line 14 "thingdef_specials.gperf"
|
||||
{"acs_terminate",82,2},
|
||||
{(char*)0},
|
||||
#line 131 "thingdef_specials.gperf"
|
||||
{"translucentline",208,2,3},
|
||||
#line 23 "thingdef_specials.gperf"
|
||||
{"door_close",10,2},
|
||||
#line 173 "thingdef_specials.gperf"
|
||||
{"clearforcefield",34,1},
|
||||
#line 84 "thingdef_specials.gperf"
|
||||
{"thing_destroy",133,1,2},
|
||||
#line 125 "thingdef_specials.gperf"
|
||||
{"generic_door",202,5},
|
||||
#line 94 "thingdef_specials.gperf"
|
||||
{"teleportinsector",78,4,5},
|
||||
#line 97 "thingdef_specials.gperf"
|
||||
{"thing_setspecial",127,5},
|
||||
#line 89 "thingdef_specials.gperf"
|
||||
{"thing_spawnnofog",137,3,4},
|
||||
#line 25 "thingdef_specials.gperf"
|
||||
{"door_raise",12,3},
|
||||
{(char*)0},
|
||||
#line 116 "thingdef_specials.gperf"
|
||||
{"ceiling_lowerinstant",193,3},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 73 "thingdef_specials.gperf"
|
||||
{"stairs_buildup",27,5},
|
||||
#line 96 "thingdef_specials.gperf"
|
||||
{"thing_move",125,2},
|
||||
{(char*)0},
|
||||
#line 53 "thingdef_specials.gperf"
|
||||
{"pillar_open",30,4},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 169 "thingdef_specials.gperf"
|
||||
{"ceiling_lowertolowest",253,2},
|
||||
{(char*)0},
|
||||
#line 101 "thingdef_specials.gperf"
|
||||
{"thing_changetid",176,2},
|
||||
#line 143 "thingdef_specials.gperf"
|
||||
{"acs_executealways",226,1,5},
|
||||
{(char*)0},
|
||||
#line 20 "thingdef_specials.gperf"
|
||||
{"ceiling_raisebyvalue",41,3},
|
||||
{(char*)0},
|
||||
#line 117 "thingdef_specials.gperf"
|
||||
{"ceiling_raiseinstant",194,3},
|
||||
#line 19 "thingdef_specials.gperf"
|
||||
{"ceiling_lowerbyvalue",40,3},
|
||||
#line 45 "thingdef_specials.gperf"
|
||||
{"light_changetovalue",112,2},
|
||||
#line 116 "thingdef_specials.gperf"
|
||||
{"ceiling_lowerinstant",193,3},
|
||||
#line 121 "thingdef_specials.gperf"
|
||||
{"ceiling_raisebyvaluetimes8",198,3},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 122 "thingdef_specials.gperf"
|
||||
{"ceiling_lowerbyvaluetimes8",199,3},
|
||||
#line 87 "thingdef_specials.gperf"
|
||||
{"thing_remove",132,1},
|
||||
{(char*)0},
|
||||
#line 115 "thingdef_specials.gperf"
|
||||
{"ceiling_lowertohighestfloor",192,2},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 25 "thingdef_specials.gperf"
|
||||
{"door_raise",12,3},
|
||||
#line 72 "thingdef_specials.gperf"
|
||||
{"stairs_builddown",26,5},
|
||||
#line 153 "thingdef_specials.gperf"
|
||||
{"changecamera",237,3},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 23 "thingdef_specials.gperf"
|
||||
{"door_close",10,2},
|
||||
#line 83 "thingdef_specials.gperf"
|
||||
{"thing_deactivate",131,1},
|
||||
#line 150 "thingdef_specials.gperf"
|
||||
{"light_maxneighbor",234,1},
|
||||
#line 84 "thingdef_specials.gperf"
|
||||
{"thing_destroy",133,1,2},
|
||||
{(char*)0},
|
||||
#line 74 "thingdef_specials.gperf"
|
||||
{"stairs_builddownsync",31,4},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 125 "thingdef_specials.gperf"
|
||||
{"generic_door",202,5},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 158 "thingdef_specials.gperf"
|
||||
{"floor_lowertohighest",242,3},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0},
|
||||
#line 55 "thingdef_specials.gperf"
|
||||
{"plat_downbyvalue",63,4},
|
||||
{(char*)0},
|
||||
#line 165 "thingdef_specials.gperf"
|
||||
{"door_closewaitopen",249,3},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 83 "thingdef_specials.gperf"
|
||||
{"thing_deactivate",131,1},
|
||||
#line 132 "thingdef_specials.gperf"
|
||||
{"sector_setcolor",212,4,5},
|
||||
{(char*)0},
|
||||
#line 153 "thingdef_specials.gperf"
|
||||
{"changecamera",237,3},
|
||||
#line 90 "thingdef_specials.gperf"
|
||||
{"floor_waggle",138,5},
|
||||
{(char*)0},
|
||||
#line 144 "thingdef_specials.gperf"
|
||||
{"plat_raiseandstaytx0",228,2},
|
||||
#line 164 "thingdef_specials.gperf"
|
||||
{"healthing",248,1,2},
|
||||
#line 62 "thingdef_specials.gperf"
|
||||
{"polyobj_rotateleft",2,3},
|
||||
#line 68 "thingdef_specials.gperf"
|
||||
{"polyobj_or_rotateleft",90,3},
|
||||
#line 69 "thingdef_specials.gperf"
|
||||
{"polyobj_or_rotateright",91,3},
|
||||
#line 163 "thingdef_specials.gperf"
|
||||
{"elevator_lowertonearest",247,2},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 57 "thingdef_specials.gperf"
|
||||
{"plat_upbyvalue",65,4},
|
||||
{(char*)0},
|
||||
#line 72 "thingdef_specials.gperf"
|
||||
{"stairs_builddown",26,5},
|
||||
#line 140 "thingdef_specials.gperf"
|
||||
{"scroll_texture_both",221,5},
|
||||
#line 44 "thingdef_specials.gperf"
|
||||
{"light_lowerbyvalue",111,2},
|
||||
#line 162 "thingdef_specials.gperf"
|
||||
{"elevator_movetofloor",246,2},
|
||||
#line 113 "thingdef_specials.gperf"
|
||||
{"sector_setfloorscale",189,5},
|
||||
{(char*)0},
|
||||
#line 138 "thingdef_specials.gperf"
|
||||
{"sector_setwind",218,4},
|
||||
#line 109 "thingdef_specials.gperf"
|
||||
{"sector_setrotation",185,3},
|
||||
{(char*)0},
|
||||
#line 114 "thingdef_specials.gperf"
|
||||
{"setplayerproperty",191,3},
|
||||
#line 61 "thingdef_specials.gperf"
|
||||
{"polyobj_move",4,4},
|
||||
#line 111 "thingdef_specials.gperf"
|
||||
{"sector_setfloorpanning",187,5},
|
||||
#line 65 "thingdef_specials.gperf"
|
||||
{"polyobj_doorslide",8,5},
|
||||
{(char*)0},
|
||||
#line 67 "thingdef_specials.gperf"
|
||||
{"polyobj_or_move",92,4},
|
||||
#line 74 "thingdef_specials.gperf"
|
||||
{"stairs_builddownsync",31,4},
|
||||
#line 56 "thingdef_specials.gperf"
|
||||
{"plat_upwaitdownstay",64,3},
|
||||
#line 48 "thingdef_specials.gperf"
|
||||
{"light_flicker",115,3},
|
||||
{(char*)0},
|
||||
#line 96 "thingdef_specials.gperf"
|
||||
{"thing_move",125,2},
|
||||
{(char*)0},
|
||||
#line 42 "thingdef_specials.gperf"
|
||||
{"light_forcelightning",109,1},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 67 "thingdef_specials.gperf"
|
||||
{"polyobj_or_move",92,4},
|
||||
#line 159 "thingdef_specials.gperf"
|
||||
{"exit_normal",243,1},
|
||||
{(char*)0},
|
||||
#line 161 "thingdef_specials.gperf"
|
||||
{"elevator_raisetonearest",245,2},
|
||||
{(char*)0},
|
||||
#line 32 "thingdef_specials.gperf"
|
||||
{"floor_lowertonearest",22,2},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 29 "thingdef_specials.gperf"
|
||||
{"floor_lowerinstant",66,3},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 27 "thingdef_specials.gperf"
|
||||
{"floor_lowerbyvalue",20,3},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 174 "thingdef_specials.gperf"
|
||||
{"teleport_zombiechanger",39,2},
|
||||
#line 31 "thingdef_specials.gperf"
|
||||
{"floor_lowertolowest",21,2},
|
||||
#line 146 "thingdef_specials.gperf"
|
||||
{"plat_upbyvaluestaytx",230,3},
|
||||
#line 43 "thingdef_specials.gperf"
|
||||
{"light_raisebyvalue",110,2},
|
||||
#line 28 "thingdef_specials.gperf"
|
||||
{"floor_lowerbyvaluetimes8",36,3},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 137 "thingdef_specials.gperf"
|
||||
{"stairs_buildupdoom",217,5},
|
||||
{(char*)0},
|
||||
#line 22 "thingdef_specials.gperf"
|
||||
{"ceiling_movetovaluetimes8",69,4},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 138 "thingdef_specials.gperf"
|
||||
{"sector_setwind",218,4},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0},
|
||||
#line 52 "thingdef_specials.gperf"
|
||||
{"pillar_buildandcrush",94,4},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 75 "thingdef_specials.gperf"
|
||||
{"stairs_buildupsync",32,4},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 149 "thingdef_specials.gperf"
|
||||
{"light_minneighbor",233,1},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0},
|
||||
#line 62 "thingdef_specials.gperf"
|
||||
{"polyobj_rotateleft",2,3},
|
||||
#line 54 "thingdef_specials.gperf"
|
||||
{"plat_downwaitupstay",62,3},
|
||||
#line 41 "thingdef_specials.gperf"
|
||||
{"floor_crushstop",46,1},
|
||||
#line 85 "thingdef_specials.gperf"
|
||||
{"thing_projectile",134,5},
|
||||
#line 129 "thingdef_specials.gperf"
|
||||
{"plat_downwaitupstaylip",206,4},
|
||||
#line 48 "thingdef_specials.gperf"
|
||||
{"light_flicker",115,3},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 103 "thingdef_specials.gperf"
|
||||
{"thing_projectileaimed",178,4,5},
|
||||
#line 61 "thingdef_specials.gperf"
|
||||
{"polyobj_move",4,4},
|
||||
#line 86 "thingdef_specials.gperf"
|
||||
{"thing_projectilegravity",136,5},
|
||||
#line 58 "thingdef_specials.gperf"
|
||||
{"plat_perpetualraise",60,3},
|
||||
{(char*)0},
|
||||
#line 151 "thingdef_specials.gperf"
|
||||
{"floor_transfertrigger",235,1},
|
||||
#line 130 "thingdef_specials.gperf"
|
||||
{"plat_perpetualraiselip",207,4},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 156 "thingdef_specials.gperf"
|
||||
{"floor_raisebytexture",240,2},
|
||||
#line 176 "thingdef_specials.gperf"
|
||||
{"plat_upnearestwaitdownstay",172,3},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 152 "thingdef_specials.gperf"
|
||||
{"floor_transfernumeric",236,1},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 154 "thingdef_specials.gperf"
|
||||
{"floor_raisetolowestceiling",238,2},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 46 "thingdef_specials.gperf"
|
||||
{"light_fade",113,3},
|
||||
#line 157 "thingdef_specials.gperf"
|
||||
{"floor_lowertolowesttxty",241,2},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 40 "thingdef_specials.gperf"
|
||||
{"floorandceiling_raisebyvalue",96,3},
|
||||
#line 24 "thingdef_specials.gperf"
|
||||
{"door_open",11,2},
|
||||
{(char*)0},
|
||||
#line 167 "thingdef_specials.gperf"
|
||||
{"floorandceiling_lowerraise",251,3},
|
||||
{(char*)0},
|
||||
#line 39 "thingdef_specials.gperf"
|
||||
{"floorandceiling_lowerbyvalue",95,3},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 64 "thingdef_specials.gperf"
|
||||
{"polyobj_doorswing",7,4},
|
||||
#line 30 "thingdef_specials.gperf"
|
||||
{"floor_movetovaluetimes8",68,4},
|
||||
#line 136 "thingdef_specials.gperf"
|
||||
{"sector_setgravity",216,3},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 81 "thingdef_specials.gperf"
|
||||
{"damagething",73,1},
|
||||
#line 65 "thingdef_specials.gperf"
|
||||
{"polyobj_doorslide",8,5},
|
||||
#line 75 "thingdef_specials.gperf"
|
||||
{"stairs_buildupsync",32,4},
|
||||
#line 52 "thingdef_specials.gperf"
|
||||
{"pillar_buildandcrush",94,4},
|
||||
#line 58 "thingdef_specials.gperf"
|
||||
{"plat_perpetualraise",60,3},
|
||||
#line 55 "thingdef_specials.gperf"
|
||||
{"plat_downbyvalue",63,4},
|
||||
#line 41 "thingdef_specials.gperf"
|
||||
{"floor_crushstop",46,1},
|
||||
#line 130 "thingdef_specials.gperf"
|
||||
{"plat_perpetualraiselip",207,4},
|
||||
#line 24 "thingdef_specials.gperf"
|
||||
{"door_open",11,2},
|
||||
#line 71 "thingdef_specials.gperf"
|
||||
{"sector_changesound",140,2},
|
||||
#line 176 "thingdef_specials.gperf"
|
||||
{"plat_upnearestwaitdownstay",172,3},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 37 "thingdef_specials.gperf"
|
||||
{"floor_raisetohighest",24,2},
|
||||
#line 156 "thingdef_specials.gperf"
|
||||
{"floor_raisebytexture",240,2},
|
||||
#line 137 "thingdef_specials.gperf"
|
||||
{"stairs_buildupdoom",217,5},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0},
|
||||
#line 159 "thingdef_specials.gperf"
|
||||
{"exit_normal",243,1},
|
||||
#line 154 "thingdef_specials.gperf"
|
||||
{"floor_raisetolowestceiling",238,2},
|
||||
#line 151 "thingdef_specials.gperf"
|
||||
{"floor_transfertrigger",235,1},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 179 "thingdef_specials.gperf"
|
||||
{"startconversation",18,1,2},
|
||||
{(char*)0},
|
||||
#line 85 "thingdef_specials.gperf"
|
||||
{"thing_projectile",134,5},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 150 "thingdef_specials.gperf"
|
||||
{"light_maxneighbor",234,1},
|
||||
#line 163 "thingdef_specials.gperf"
|
||||
{"elevator_lowertonearest",247,2},
|
||||
{(char*)0},
|
||||
#line 64 "thingdef_specials.gperf"
|
||||
{"polyobj_doorswing",7,4},
|
||||
#line 161 "thingdef_specials.gperf"
|
||||
{"elevator_raisetonearest",245,2},
|
||||
#line 54 "thingdef_specials.gperf"
|
||||
{"plat_downwaitupstay",62,3},
|
||||
#line 174 "thingdef_specials.gperf"
|
||||
{"teleport_zombiechanger",39,2},
|
||||
{(char*)0},
|
||||
#line 129 "thingdef_specials.gperf"
|
||||
{"plat_downwaitupstaylip",206,4},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 95 "thingdef_specials.gperf"
|
||||
{"thing_damage",119,2,3},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 86 "thingdef_specials.gperf"
|
||||
{"thing_projectilegravity",136,5},
|
||||
#line 27 "thingdef_specials.gperf"
|
||||
{"floor_lowerbyvalue",20,3},
|
||||
{(char*)0},
|
||||
#line 29 "thingdef_specials.gperf"
|
||||
{"floor_lowerinstant",66,3},
|
||||
#line 32 "thingdef_specials.gperf"
|
||||
{"floor_lowertonearest",22,2},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 147 "thingdef_specials.gperf"
|
||||
{"plat_toggleceiling",231,1},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 38 "thingdef_specials.gperf"
|
||||
{"floor_raisetonearest",25,2},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 36 "thingdef_specials.gperf"
|
||||
{"floor_raiseinstant",67,3},
|
||||
#line 28 "thingdef_specials.gperf"
|
||||
{"floor_lowerbyvaluetimes8",36,3},
|
||||
#line 103 "thingdef_specials.gperf"
|
||||
{"thing_projectileaimed",178,4,5},
|
||||
{(char*)0},
|
||||
#line 166 "thingdef_specials.gperf"
|
||||
{"floor_donut",250,3},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 22 "thingdef_specials.gperf"
|
||||
{"ceiling_movetovaluetimes8",69,4},
|
||||
{(char*)0},
|
||||
#line 40 "thingdef_specials.gperf"
|
||||
{"floorandceiling_raisebyvalue",96,3},
|
||||
#line 167 "thingdef_specials.gperf"
|
||||
{"floorandceiling_lowerraise",251,3},
|
||||
#line 152 "thingdef_specials.gperf"
|
||||
{"floor_transfernumeric",236,1},
|
||||
#line 39 "thingdef_specials.gperf"
|
||||
{"floorandceiling_lowerbyvalue",95,3},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 34 "thingdef_specials.gperf"
|
||||
{"floor_raisebyvalue",23,3},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0},
|
||||
#line 36 "thingdef_specials.gperf"
|
||||
{"floor_raiseinstant",67,3},
|
||||
#line 38 "thingdef_specials.gperf"
|
||||
{"floor_raisetonearest",25,2},
|
||||
#line 155 "thingdef_specials.gperf"
|
||||
{"floor_raisebyvaluetxty",239,3},
|
||||
{(char*)0},
|
||||
#line 35 "thingdef_specials.gperf"
|
||||
{"floor_raisebyvaluetimes8",35,3},
|
||||
{(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 66 "thingdef_specials.gperf"
|
||||
{"polyobj_or_movetimes8",93,4},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 166 "thingdef_specials.gperf"
|
||||
{"floor_donut",250,3},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 26 "thingdef_specials.gperf"
|
||||
{"door_lockedraise",13,4},
|
||||
{(char*)0},
|
||||
#line 60 "thingdef_specials.gperf"
|
||||
{"polyobj_movetimes8",6,4},
|
||||
{(char*)0},
|
||||
#line 149 "thingdef_specials.gperf"
|
||||
{"light_minneighbor",233,1},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 147 "thingdef_specials.gperf"
|
||||
{"plat_toggleceiling",231,1},
|
||||
{(char*)0}, {(char*)0},
|
||||
#line 158 "thingdef_specials.gperf"
|
||||
{"floor_lowertohighest",242,3},
|
||||
{(char*)0},
|
||||
#line 172 "thingdef_specials.gperf"
|
||||
{"door_animated",14,3},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 30 "thingdef_specials.gperf"
|
||||
{"floor_movetovaluetimes8",68,4},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0},
|
||||
#line 172 "thingdef_specials.gperf"
|
||||
{"door_animated",4,3},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 100 "thingdef_specials.gperf"
|
||||
{"thing_projectileintercept",175,5},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 60 "thingdef_specials.gperf"
|
||||
{"polyobj_movetimes8",6,4},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0}, {(char*)0}, {(char*)0},
|
||||
#line 33 "thingdef_specials.gperf"
|
||||
{"floor_raiseandcrush",28,3}
|
||||
{"floor_raiseandcrush",28,3},
|
||||
{(char*)0},
|
||||
#line 37 "thingdef_specials.gperf"
|
||||
{"floor_raisetohighest",24,2},
|
||||
{(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
|
||||
{(char*)0},
|
||||
#line 100 "thingdef_specials.gperf"
|
||||
{"thing_projectileintercept",175,5}
|
||||
};
|
||||
|
||||
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
|
||||
|
|
Loading…
Reference in a new issue