]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Add ability to add additional friendly and hostile factions in prototypes (#29636)
authorlzk <124214523+lzk228@users.noreply.github.com>
Tue, 2 Jul 2024 13:32:21 +0000 (15:32 +0200)
committerGitHub <noreply@github.com>
Tue, 2 Jul 2024 13:32:21 +0000 (09:32 -0400)
* Make friendly and hostile factions in NpcFactionMemberComponent datafiels

* :trollface:

* :trollface:

Content.Shared/NPC/Components/NpcFactionMemberComponent.cs
Content.Shared/NPC/Systems/NpcFactionSystem.cs

index 91521e98545159f2587a90c9fe3c22cc6119280d..208dfd4681a6367565e05dfdcbef0653b72bb4ed 100644 (file)
@@ -25,4 +25,16 @@ public sealed partial class NpcFactionMemberComponent : Component
     /// </summary>
     [ViewVariables]
     public readonly HashSet<ProtoId<NpcFactionPrototype>> HostileFactions = new();
+
+    /// <summary>
+    /// Used to add friendly factions in prototypes.
+    /// </summary>
+    [DataField, ViewVariables]
+    public HashSet<ProtoId<NpcFactionPrototype>>? AddFriendlyFactions;
+
+    /// <summary>
+    /// Used to add hostile factions in prototypes.
+    /// </summary>
+    [DataField, ViewVariables]
+    public HashSet<ProtoId<NpcFactionPrototype>>? AddHostileFactions;
 }
index ad81f01e1da91ffdb150ae70abce2ac5441913ed..355f5bbb3a9433e82cf9b546adae12e05861e160 100644 (file)
@@ -59,6 +59,15 @@ public sealed partial class NpcFactionSystem : EntitySystem
             ent.Comp.FriendlyFactions.UnionWith(factionData.Friendly);
             ent.Comp.HostileFactions.UnionWith(factionData.Hostile);
         }
+        // Add additional factions if it is written in prototype
+        if (ent.Comp.AddFriendlyFactions != null)
+        {
+            ent.Comp.FriendlyFactions.UnionWith(ent.Comp.AddFriendlyFactions);
+        }
+        if (ent.Comp.AddHostileFactions != null)
+        {
+            ent.Comp.HostileFactions.UnionWith(ent.Comp.AddHostileFactions);
+        }
     }
 
     /// <summary>