- 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:
parent
3b2c2efcb1
commit
063c85b157
118 changed files with 2103 additions and 1818 deletions
|
|
@ -153,9 +153,10 @@ void P_DaggerAlert (AActor *target, AActor *emitter)
|
|||
emitter->flags4 |= MF4_INCOMBAT;
|
||||
|
||||
emitter->target = target;
|
||||
if (emitter->PainState != NULL)
|
||||
FState * painstate = emitter->FindState(NAME_Pain);
|
||||
if (painstate != NULL)
|
||||
{
|
||||
emitter->SetState (emitter->PainState);
|
||||
emitter->SetState (painstate);
|
||||
}
|
||||
|
||||
for (looker = sec->thinglist; looker != NULL; looker = looker->snext)
|
||||
|
|
@ -208,7 +209,7 @@ void A_JabDagger (AActor *actor)
|
|||
|
||||
angle = actor->angle + (pr_jabdagger.Random2() << 18);
|
||||
pitch = P_AimLineAttack (actor, angle, 80*FRACUNIT);
|
||||
P_LineAttack (actor, angle, 80*FRACUNIT, pitch, damage, MOD_HIT, RUNTIME_CLASS(AStrifeSpark));
|
||||
P_LineAttack (actor, angle, 80*FRACUNIT, pitch, damage, NAME_Melee, RUNTIME_CLASS(AStrifeSpark));
|
||||
|
||||
// turn to face target
|
||||
if (linetarget)
|
||||
|
|
@ -689,7 +690,7 @@ void P_StrifeGunShot (AActor *mo, bool accurate)
|
|||
angle += pr_sgunshot.Random2() << (20 - mo->player->accuracy * 5 / 100);
|
||||
}
|
||||
|
||||
P_LineAttack (mo, angle, PLAYERMISSILERANGE, bulletpitch, damage, MOD_UNKNOWN, RUNTIME_CLASS(AStrifePuff));
|
||||
P_LineAttack (mo, angle, PLAYERMISSILERANGE, bulletpitch, damage, NAME_None, RUNTIME_CLASS(AStrifePuff));
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
|
|
@ -1025,7 +1026,7 @@ IMPLEMENT_ACTOR (AFlameMissile, Strife, -1, 0)
|
|||
PROP_HeightFixed (11)
|
||||
PROP_Mass (10)
|
||||
PROP_Damage (4)
|
||||
PROP_DamageType (MOD_FIRE)
|
||||
PROP_DamageType (NAME_Fire)
|
||||
PROP_ReactionTime (8)
|
||||
PROP_Flags (MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE)
|
||||
PROP_Flags2 (MF2_NOTELEPORT|MF2_PCROSS|MF2_IMPACT)
|
||||
|
|
@ -1209,7 +1210,7 @@ FState AMaulerPuff::States[] =
|
|||
|
||||
IMPLEMENT_ACTOR (AMaulerPuff, Strife, -1, 0)
|
||||
PROP_SpawnState (0)
|
||||
PROP_DamageType (MOD_DISINTEGRATE)
|
||||
PROP_DamageType (NAME_Disintegrate)
|
||||
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
|
||||
PROP_Flags3 (MF3_PUFFONACTORS)
|
||||
PROP_RenderStyle (STYLE_Add)
|
||||
|
|
@ -1243,7 +1244,7 @@ IMPLEMENT_ACTOR (AMaulerTorpedo, Strife, -1, 0)
|
|||
PROP_RadiusFixed (13)
|
||||
PROP_HeightFixed (8)
|
||||
PROP_Damage (1)
|
||||
PROP_DamageType (MOD_DISINTEGRATE)
|
||||
PROP_DamageType (NAME_Disintegrate)
|
||||
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF|MF_MISSILE)
|
||||
PROP_Flags2 (MF2_NOTELEPORT|MF2_PCROSS|MF2_IMPACT)
|
||||
PROP_Flags4 (MF4_STRIFEDAMAGE)
|
||||
|
|
@ -1274,7 +1275,7 @@ IMPLEMENT_ACTOR (AMaulerTorpedoWave, Strife, -1, 0)
|
|||
PROP_RadiusFixed (13)
|
||||
PROP_HeightFixed (13)
|
||||
PROP_Damage (10)
|
||||
PROP_DamageType (MOD_DISINTEGRATE)
|
||||
PROP_DamageType (NAME_Disintegrate)
|
||||
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF|MF_MISSILE)
|
||||
PROP_Flags2 (MF2_NOTELEPORT|MF2_PCROSS|MF2_IMPACT)
|
||||
PROP_Flags4 (MF4_STRIFEDAMAGE)
|
||||
|
|
@ -1320,7 +1321,7 @@ void A_FireMauler1 (AActor *self)
|
|||
// it should use a different puff. ZDoom's default range is longer
|
||||
// than this, so let's not handicap it by being too faithful to the
|
||||
// original.
|
||||
P_LineAttack (self, angle, PLAYERMISSILERANGE, pitch, damage, MOD_DISINTEGRATE, RUNTIME_CLASS(AMaulerPuff));
|
||||
P_LineAttack (self, angle, PLAYERMISSILERANGE, pitch, damage, NAME_Disintegrate, RUNTIME_CLASS(AMaulerPuff));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1563,7 +1564,7 @@ IMPLEMENT_ACTOR (APhosphorousFire, Strife, -1, 0)
|
|||
PROP_SpawnState (S_BURNINATION)
|
||||
PROP_DeathState (S_BURNDWINDLE)
|
||||
PROP_ReactionTime (120)
|
||||
PROP_DamageType (MOD_FIRE)
|
||||
PROP_DamageType (NAME_Fire)
|
||||
PROP_Flags (MF_NOBLOCKMAP)
|
||||
PROP_Flags2 (MF2_FLOORCLIP|MF2_NOTELEPORT|MF2_NODMGTHRUST)
|
||||
PROP_RenderStyle (STYLE_Add)
|
||||
|
|
@ -1783,8 +1784,8 @@ void A_FireGrenade (AActor *self)
|
|||
return;
|
||||
|
||||
// Make it flash
|
||||
P_SetPsprite (player, ps_flash, weapon->FlashState +
|
||||
(player->psprites[ps_weapon].state - weapon->GetAtkState()));
|
||||
P_SetPsprite (player, ps_flash, weapon->FindState(NAME_Flash) +
|
||||
(player->psprites[ps_weapon].state - weapon->GetAtkState(false)));
|
||||
|
||||
self->z += 32*FRACUNIT;
|
||||
grenade = P_SpawnSubMissile (self, grenadetype, self);
|
||||
|
|
@ -1804,7 +1805,7 @@ void A_FireGrenade (AActor *self)
|
|||
grenade->x += FixedMul (finecosine[an], tworadii);
|
||||
grenade->y += FixedMul (finesine[an], tworadii);
|
||||
|
||||
if (weapon->GetAtkState() == player->psprites[ps_weapon].state)
|
||||
if (weapon->GetAtkState(false) == player->psprites[ps_weapon].state)
|
||||
{
|
||||
an = self->angle - ANGLE_90;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue