- fixed:P_DamageMobj just set an ice corpse's velocity to 0 to make it shatter.
But that's insufficient because it doesn't factor in any subsequent velocity change that happens between the damaging and the next call to A_FreezeDeathChunks. - fixed: The TimeFreezer did not freeze other players' controls in a multiplayer game. - fixed: DECORATE's 'gravity' property incorrectly messed around with the NOGRAVITY flag. - fixed: Hitscan attacks didn't check the puff's replacement for damage types. SVN r2026 (trunk)
This commit is contained in:
parent
ba106c28c4
commit
fdec06ff9b
14 changed files with 62 additions and 23 deletions
|
|
@ -3325,9 +3325,16 @@ AActor *P_LineAttack (AActor *t1, angle_t angle, fixed_t distance,
|
|||
t1->player->ReadyWeapon != NULL &&
|
||||
(t1->player->ReadyWeapon->flags2 & MF2_THRUGHOST));
|
||||
|
||||
// Need to check defaults of replacement here
|
||||
// We need to check the defaults of the replacement here
|
||||
AActor *puffDefaults = GetDefaultByType(pufftype->ActorInfo->GetReplacement()->Class);
|
||||
|
||||
// if the puff uses a non-standard damage type this will override default and melee damage type.
|
||||
// All other explicitly passed damage types (currenty only MDK) will be preserved.
|
||||
if ((damageType == NAME_None || damageType == NAME_Melee) && puffDefaults->DamageType != NAME_None)
|
||||
{
|
||||
damageType = puffDefaults->DamageType;
|
||||
}
|
||||
|
||||
int tflags;
|
||||
if (puffDefaults != NULL && puffDefaults->flags6 & MF6_NOTRIGGER) tflags = TRACE_NoSky;
|
||||
else tflags = TRACE_NoSky|TRACE_Impact;
|
||||
|
|
@ -3417,14 +3424,14 @@ AActor *P_LineAttack (AActor *t1, angle_t angle, fixed_t distance,
|
|||
hitz = shootz + FixedMul (vz, trace.Distance);
|
||||
|
||||
// Spawn bullet puffs or blood spots, depending on target type.
|
||||
AActor *puffDefaults = GetDefaultByType (pufftype);
|
||||
if ((puffDefaults->flags3 & MF3_PUFFONACTORS) ||
|
||||
(trace.Actor->flags & MF_NOBLOOD) ||
|
||||
(trace.Actor->flags2 & (MF2_INVULNERABLE|MF2_DORMANT)))
|
||||
{
|
||||
// We must pass the unreplaced puff type here
|
||||
puff = P_SpawnPuff (t1, pufftype, hitx, hity, hitz, angle - ANG180, 2, flags|PF_HITTHING);
|
||||
}
|
||||
if (!(GetDefaultByType(pufftype)->flags3&MF3_BLOODLESSIMPACT))
|
||||
if (!(puffDefaults->flags3&MF3_BLOODLESSIMPACT))
|
||||
{
|
||||
if (!bloodsplatter && !axeBlood &&
|
||||
!(trace.Actor->flags & MF_NOBLOOD) &&
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue