- 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 601 additions and 629 deletions
|
|
@ -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) },
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue