(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

View File

@@ -361,32 +361,29 @@ namespace Barotrauma.Items.Components
AttackResult attackResult = new AttackResult();
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);
item.Submarine = submarine;
item.body.Submarine = submarine;
return !Hitscan;
target.Body.ApplyLinearImpulse(item.body.LinearVelocity * item.body.Mass);
return true;
}
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;
attackResult = attack.DoDamageToLimb(User, limb, item.WorldPosition, 1.0f);
if (limb.character != null) character = limb.character;
}
else if (target.Body.UserData is Structure structure)
{
attackResult = attack.DoDamage(User, structure, item.WorldPosition, 1.0f);
}
limb.character.LastDamageSource = item;
if (attack != null) { attackResult = attack.DoDamageToLimb(User, limb, item.WorldPosition, 1.0f); }
if (limb.character != null) { character = limb.character; }
}
else if (target.Body.UserData is Structure structure)
{
if (attack != null) { attackResult = attack.DoDamage(User, structure, item.WorldPosition, 1.0f); }
}
if (character != null) character.LastDamageSource = item;