(cd4cc584f) Fixed projectiles not applying status effects on impact if they have no attack defined. Closes #1382

This commit is contained in:
Joonas Rikkonen
2019-04-02 12:42:00 +03:00
parent 4009a2f2b7
commit baadd60d8d
@@ -361,32 +361,29 @@ namespace Barotrauma.Items.Components
AttackResult attackResult = new AttackResult(); AttackResult attackResult = new AttackResult();
Character character = null; Character character = null;
if (attack != null) if (target.Body.UserData is Submarine submarine)
{ {
if (target.Body.UserData is Submarine submarine) item.Move(-submarine.Position);
item.Submarine = submarine;
item.body.Submarine = submarine;
return !Hitscan;
}
else if (target.Body.UserData is Limb limb)
{
//severed limbs don't deactivate the projectile (but may still slow it down enough to make it inactive)
if (limb.IsSevered)
{ {
item.Move(-submarine.Position); target.Body.ApplyLinearImpulse(item.body.LinearVelocity * item.body.Mass);
item.Submarine = submarine; return true;
item.body.Submarine = submarine;
return !Hitscan;
} }
else if (target.Body.UserData is Limb limb)
{
//severed limbs don't deactivate the projectile (but may still slow it down enough to make it inactive)
if (limb.IsSevered)
{
target.Body.ApplyLinearImpulse(item.body.LinearVelocity * item.body.Mass);
return true;
}
limb.character.LastDamageSource = item; limb.character.LastDamageSource = item;
attackResult = attack.DoDamageToLimb(User, limb, item.WorldPosition, 1.0f); if (attack != null) { attackResult = attack.DoDamageToLimb(User, limb, item.WorldPosition, 1.0f); }
if (limb.character != null) character = limb.character; if (limb.character != null) { character = limb.character; }
} }
else if (target.Body.UserData is Structure structure) else if (target.Body.UserData is Structure structure)
{ {
attackResult = attack.DoDamage(User, structure, item.WorldPosition, 1.0f); if (attack != null) { attackResult = attack.DoDamage(User, structure, item.WorldPosition, 1.0f); }
}
} }
if (character != null) character.LastDamageSource = item; if (character != null) character.LastDamageSource = item;