From 71266144df578814fd76837edae37591a78266ad Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Wed, 8 May 2024 17:36:35 -0400 Subject: [PATCH] update mimic spawns --- .../Antag/Mimic/MobReplacementRuleComponent.cs | 18 ++++++++++++++++++ .../Antag/MobReplacementRuleSystem.cs | 15 +++++++++------ 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/Content.Server/Antag/Mimic/MobReplacementRuleComponent.cs b/Content.Server/Antag/Mimic/MobReplacementRuleComponent.cs index 6cd777e98d7..cd3147d3761 100644 --- a/Content.Server/Antag/Mimic/MobReplacementRuleComponent.cs +++ b/Content.Server/Antag/Mimic/MobReplacementRuleComponent.cs @@ -24,4 +24,22 @@ public sealed partial class MobReplacementRuleComponent : Component /// [DataField] public float Chance = 0.001f; + + [DataField("doAnnouncement")] + public bool DoAnnouncement = true; + + [DataField("mimicMeleeDamage")] + public float MimicMeleeDamage = 20f; + + [DataField("mimicMoveSpeed")] + public float MimicMoveSpeed = 1f; + + [DataField("mimicAIType")] + public string MimicAIType = "SimpleHostileCompound"; + + [DataField("mimicSmashGlass")] + public bool MimicSmashGlass = true; + + [DataField("vendorModify")] + public bool VendorModify = true; } diff --git a/Content.Server/Antag/MobReplacementRuleSystem.cs b/Content.Server/Antag/MobReplacementRuleSystem.cs index 9a08da9fd65..e1d03ed7d3d 100644 --- a/Content.Server/Antag/MobReplacementRuleSystem.cs +++ b/Content.Server/Antag/MobReplacementRuleSystem.cs @@ -55,6 +55,7 @@ protected override void Started(EntityUid uid, MobReplacementRuleComponent compo || ownerStation != stations[0]) return; + // Make sure that we aren't running this on something that is already a mimic if (HasComp(vendingUid)) continue; @@ -74,7 +75,8 @@ protected override void Started(EntityUid uid, MobReplacementRuleComponent compo var spawnLocation = _random.PickAndTake(spawns); BuildAMimicWorkshop(spawnLocation.Entity, component); - if (k == MathF.MaxMagnitude(component.NumberToReplace, 1)) + if (k == MathF.MaxMagnitude(component.NumberToReplace, 1) + && component.DoAnnouncement) _chatSystem.DispatchStationAnnouncement(stations[0], Loc.GetString("station-event-rampant-intelligence-announcement"), playDefaultSound: true, colorOverride: Color.Red, sender: "Central Command"); @@ -116,7 +118,8 @@ public void BuildAMimicWorkshop(EntityUid uid, MobReplacementRuleComponent compo SetupMimicNPC(uid, component); - if (TryComp(uid, out var vendor)) + if (TryComp(uid, out var vendor) + && component.VendorModify) { SetupMimicVendor(uid, component, vendor); } @@ -137,17 +140,17 @@ private void SetupMimicNPC(EntityUid uid, MobReplacementRuleComponent component) { DamageDict = new() { - { "Blunt", 20 } + { "Blunt", component.MimicMeleeDamage } } }; melee.Damage = dspec; var movementSpeed = EnsureComp(uid); - (movementSpeed.BaseSprintSpeed, movementSpeed.BaseWalkSpeed) = (1, 1); + (movementSpeed.BaseSprintSpeed, movementSpeed.BaseWalkSpeed) = (component.MimicMoveSpeed, component.MimicMoveSpeed); var htn = EnsureComp(uid); - htn.RootTask = new HTNCompoundTask() { Task = "SimpleHostileCompound" }; - htn.Blackboard.SetValue(NPCBlackboard.NavSmash, true); + htn.RootTask = new HTNCompoundTask() { Task = component.MimicAIType }; + htn.Blackboard.SetValue(NPCBlackboard.NavSmash, component.MimicSmashGlass); _npc.WakeNPC(uid, htn); } ///