- tweak: Better backstabbing. (#115)
This commit is contained in:
@@ -1,6 +1,5 @@
|
|||||||
using Content.Shared.Damage;
|
using Content.Shared.Damage;
|
||||||
using Content.Shared.Damage.Prototypes;
|
using Content.Shared.Damage.Prototypes;
|
||||||
using Content.Shared.Examine;
|
|
||||||
using Content.Shared.Mobs.Components;
|
using Content.Shared.Mobs.Components;
|
||||||
using Content.Shared.Popups;
|
using Content.Shared.Popups;
|
||||||
using Content.Shared.Weapons.Melee.Events;
|
using Content.Shared.Weapons.Melee.Events;
|
||||||
@@ -34,13 +33,12 @@ public sealed class BackstabSystem : EntitySystem
|
|||||||
!TryComp(target, out TransformComponent? xform))
|
!TryComp(target, out TransformComponent? xform))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var rot1 = _transform.GetWorldRotation(args.User).FlipPositive();
|
var userXform = Transform(args.User);
|
||||||
var rot2 = _transform.GetWorldRotation(xform).FlipPositive();
|
var v1 = (_transform.GetWorldRotation(xform) + MathHelper.PiOver2).ToVec(); // Flipped WorldVec
|
||||||
var tol = ent.Comp.Tolerance;
|
var v2 = _transform.GetWorldPosition(userXform) - _transform.GetWorldPosition(xform);
|
||||||
|
var angle = Vector3.CalculateAngle(new Vector3(v1), new Vector3(v2));
|
||||||
|
|
||||||
if (!MathHelper.CloseTo(rot1, rot2, tol) &&
|
if (angle > ent.Comp.Tolerance.Theta)
|
||||||
!MathHelper.CloseTo(rot1, rot2 + MathHelper.TwoPi, tol) &&
|
|
||||||
!MathHelper.CloseTo(rot1 + MathHelper.TwoPi, rot2, tol))
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var damage = args.BaseDamage.GetTotal() * ent.Comp.DamageMultiplier;
|
var damage = args.BaseDamage.GetTotal() * ent.Comp.DamageMultiplier;
|
||||||
|
|||||||
Reference in New Issue
Block a user