Store ninja objectives in conditions 2 (#20894)

* move spider charge target from role

* shorter field names

* remove ninja role comment

* remove unused systems in SpaceNinjaSystem

* GenericAntagObjectivesAddedEvent

* check if warp point is on same map

* remove unnecessary import

* add missing loc when spider charge has no target

* a

* remove spider charge target requirement comp

* inline SpiderChargeTitle

* allow planting charge without objective

* remove map check

* fix role check when planting

* obj.Target

* Fix merge

---------

Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
This commit is contained in:
Vyacheslav Kovalevsky
2024-01-29 07:06:32 +03:00
committed by GitHub
parent 2a6705818b
commit 7311ce671f
10 changed files with 67 additions and 83 deletions

View File

@@ -1,4 +1,5 @@
using Content.Server.Explosion.EntitySystems;
using Content.Server.GameTicking.Rules.Components;
using Content.Server.Mind;
using Content.Server.Objectives.Components;
using Content.Server.Popups;
@@ -38,7 +39,7 @@ public sealed class SpiderChargeSystem : EntitySystem
var user = args.User;
if (!_mind.TryGetRole<NinjaRoleComponent>(user, out var role))
if (!_mind.TryGetRole<NinjaRoleComponent>(user, out var _))
{
_popup.PopupEntity(Loc.GetString("spider-charge-not-ninja"), user, user);
args.Cancelled = true;
@@ -46,11 +47,11 @@ public sealed class SpiderChargeSystem : EntitySystem
}
// allow planting anywhere if there is no target, which should never happen
if (role.SpiderChargeTarget == null)
if (!_mind.TryGetObjectiveComp<SpiderChargeConditionComponent>(user, out var obj) || obj.Target == null)
return;
// assumes warp point still exists
var targetXform = Transform(role.SpiderChargeTarget.Value);
var targetXform = Transform(obj.Target.Value);
var locXform = Transform(args.Target);
if (locXform.MapID != targetXform.MapID ||
(_transform.GetWorldPosition(locXform) - _transform.GetWorldPosition(targetXform)).LengthSquared() > comp.Range * comp.Range)
@@ -79,6 +80,6 @@ public sealed class SpiderChargeSystem : EntitySystem
return;
// assumes the target was destroyed, that the charge wasn't moved somehow
obj.SpiderChargeDetonated = true;
obj.Detonated = true;
}
}