RepairTools can do damage to characters by hitting the collider. Closes #299
This commit is contained in:
@@ -336,6 +336,7 @@ namespace Barotrauma
|
|||||||
case "collider":
|
case "collider":
|
||||||
collider.Add(new PhysicsBody(subElement, scale));
|
collider.Add(new PhysicsBody(subElement, scale));
|
||||||
|
|
||||||
|
collider[collider.Count - 1].UserData = character;
|
||||||
collider[collider.Count - 1].FarseerBody.Friction = 0.05f;
|
collider[collider.Count - 1].FarseerBody.Friction = 0.05f;
|
||||||
collider[collider.Count - 1].FarseerBody.Restitution = 0.05f;
|
collider[collider.Count - 1].FarseerBody.Restitution = 0.05f;
|
||||||
collider[collider.Count - 1].FarseerBody.FixedRotation = true;
|
collider[collider.Count - 1].FarseerBody.FixedRotation = true;
|
||||||
@@ -350,8 +351,9 @@ namespace Barotrauma
|
|||||||
|
|
||||||
if (collider[0] == null)
|
if (collider[0] == null)
|
||||||
{
|
{
|
||||||
DebugConsole.ThrowError("No collider configured for \""+character.Name+"\"!");
|
DebugConsole.ThrowError("No collider configured for \"" + character.Name + "\"!");
|
||||||
collider[0] = new PhysicsBody(0.0f, 0.0f, 0.5f, 5.0f);
|
collider[0] = new PhysicsBody(0.0f, 0.0f, 0.5f, 5.0f);
|
||||||
|
collider[0].UserData = character;
|
||||||
collider[0].BodyType = BodyType.Dynamic;
|
collider[0].BodyType = BodyType.Dynamic;
|
||||||
collider[0].CollisionCategories = Physics.CollisionCharacter;
|
collider[0].CollisionCategories = Physics.CollisionCharacter;
|
||||||
collider[0].FarseerBody.AngularDamping = 5.0f;
|
collider[0].FarseerBody.AngularDamping = 5.0f;
|
||||||
|
|||||||
@@ -211,6 +211,7 @@ namespace Barotrauma.Items.Components
|
|||||||
pickedPosition = Submarine.LastPickedPosition;
|
pickedPosition = Submarine.LastPickedPosition;
|
||||||
|
|
||||||
Structure targetStructure;
|
Structure targetStructure;
|
||||||
|
Character targetCharacter;
|
||||||
Limb targetLimb;
|
Limb targetLimb;
|
||||||
Item targetItem;
|
Item targetItem;
|
||||||
if ((targetStructure = (targetBody.UserData as Structure)) != null)
|
if ((targetStructure = (targetBody.UserData as Structure)) != null)
|
||||||
@@ -261,6 +262,19 @@ namespace Barotrauma.Items.Components
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if ((targetCharacter = (targetBody.UserData as Character)) != null)
|
||||||
|
{
|
||||||
|
targetCharacter.AddDamage(CauseOfDeath.Damage, -LimbFixAmount * degreeOfSuccess, user);
|
||||||
|
#if CLIENT
|
||||||
|
Vector2 particlePos = ConvertUnits.ToDisplayUnits(pickedPosition);
|
||||||
|
if (targetCharacter.Submarine != null) particlePos += targetCharacter.Submarine.DrawPosition;
|
||||||
|
foreach (var emitter in ParticleEmitterHitCharacter)
|
||||||
|
{
|
||||||
|
float particleAngle = item.body.Rotation + ((item.body.Dir > 0.0f) ? 0.0f : MathHelper.Pi);
|
||||||
|
emitter.Emit(deltaTime, particlePos, item.CurrentHull, particleAngle + MathHelper.Pi, -particleAngle + MathHelper.Pi);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
else if ((targetLimb = (targetBody.UserData as Limb)) != null)
|
else if ((targetLimb = (targetBody.UserData as Limb)) != null)
|
||||||
{
|
{
|
||||||
targetLimb.character.AddDamage(CauseOfDeath.Damage, -LimbFixAmount * degreeOfSuccess, user);
|
targetLimb.character.AddDamage(CauseOfDeath.Damage, -LimbFixAmount * degreeOfSuccess, user);
|
||||||
|
|||||||
Reference in New Issue
Block a user