- Fixed: The global WeaponSection string was never freed. It has been replaced

with an FString now.
- Fixed: The music strings in the default level info were never freed and
  caused memory leaks when used repeatedly.
- Fixed: The intermusic string in the level info was never freed.
- Fixed: The default fire obituary should only be printed if the damage
  came from the environment. If it comes from a monster the monster specific
  obituary should be used instead.
- Added custom damage types from the floating point test release.
- Changed Pain Elemental's massacre check. Now A_PainDie checks for the damage 
  type and doesn't spawn anything if it is NAME_Massacre. A_PainDie can also 
  be used by other actors so a more generalized approach is needed than hard
  coding it into the Pain Elemental.
- Converted a few of Doom's monsters to DECORATE because I couldn't test the
  first version of the custom state code with the corpses inheriting from them.
- Added custom states from last year's floating point test release and fixed
  some bugs I found in that code. Unfortunately it wasn't all salvageable
  and it was easier to recreate some parts from scratch.



SVN r368 (trunk)
This commit is contained in:
Christoph Oelckers 2006-10-31 14:53:21 +00:00
commit 063c85b157
118 changed files with 2103 additions and 1818 deletions

View file

@ -76,7 +76,7 @@ IMPLEMENT_ACTOR (ASnout, Hexen, -1, 0)
PROP_Weapon_DownState (S_SNOUTDOWN)
PROP_Weapon_ReadyState (S_SNOUTREADY)
PROP_Weapon_AtkState (S_SNOUTATK)
PROP_Weapon_HoldAtkState (S_SNOUTATK)
PROP_Weapon_FlashState (S_SNOUTATK+1) // Not really - but it will do until this gets exported from the EXE
PROP_Weapon_Kickback (150)
PROP_Weapon_YAdjust (10)
END_DEFAULTS
@ -164,7 +164,10 @@ void APigPlayer::MorphPlayerThink ()
}
if(!(momx | momy) && pr_pigplayerthink() < 64)
{ // Snout sniff
P_SetPspriteNF (player, ps_weapon, ((ASnout*)GetDefaultByType(RUNTIME_CLASS(ASnout)))->AtkState + 1);
if (player->ReadyWeapon != NULL)
{
P_SetPspriteNF(player, ps_weapon, player->ReadyWeapon->FindState(NAME_Flash));
}
S_Sound (this, CHAN_VOICE, "PigActive1", 1, ATTN_NORM); // snort
return;
}
@ -261,7 +264,7 @@ void A_SnoutAttack (AActor *actor)
angle = player->mo->angle;
slope = P_AimLineAttack(player->mo, angle, MELEERANGE);
PuffSpawned = NULL;
P_LineAttack(player->mo, angle, MELEERANGE, slope, damage, MOD_HIT, RUNTIME_CLASS(ASnoutPuff));
P_LineAttack(player->mo, angle, MELEERANGE, slope, damage, NAME_Melee, RUNTIME_CLASS(ASnoutPuff));
S_Sound(player->mo, CHAN_VOICE, "PigActive", 1, ATTN_NORM);
if(linetarget)
{
@ -287,7 +290,7 @@ void A_PigAttack (AActor *actor)
}
if (actor->CheckMeleeRange ())
{
P_DamageMobj(actor->target, actor, actor, 2+(pr_pigattack()&1), MOD_HIT);
P_DamageMobj(actor->target, actor, actor, 2+(pr_pigattack()&1), NAME_Melee);
S_Sound(actor, CHAN_WEAPON, "PigAttack", 1, ATTN_NORM);
}
}