- 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:
Randy Heit 2006-08-17 00:19:26 +00:00
commit a6d656b108
17 changed files with 601 additions and 629 deletions

View file

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