(cd4cc584f) Fixed projectiles not applying status effects on impact if they have no attack defined. Closes #1382
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user