Mega Antag Refactor (#25786)
* Mega Antag Refactor * last minute delta save * more workshopping * more shit * ok tested this for once * okkkkk sure * generic delays for starting rules * well darn * nukies partially * ouagh * ballin' faded and smonkin wed * obliterated the diff * Spread my arms and soak up congratulations * I've got plenty of love, but nothing to show for it * but there’s too much sunlight Shining on my laptop monitor, so I Can’t see anything with any amount of clarity * ok this junk * OOK! * fubar * most of sloth's review * oh boy * eek * hell yea! * ASDFJASDJFvsakcvjkzjnhhhyh
This commit is contained in:
@@ -1,27 +1,16 @@
|
||||
using Content.Server.Maps;
|
||||
using Content.Server.RoundEnd;
|
||||
using Content.Server.StationEvents.Events;
|
||||
using Content.Shared.Dataset;
|
||||
using Content.Shared.NPC.Prototypes;
|
||||
using Content.Shared.Roles;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
|
||||
|
||||
namespace Content.Server.GameTicking.Rules.Components;
|
||||
|
||||
[RegisterComponent, Access(typeof(NukeopsRuleSystem), typeof(LoneOpsSpawnRule))]
|
||||
[RegisterComponent, Access(typeof(NukeopsRuleSystem))]
|
||||
public sealed partial class NukeopsRuleComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// This INCLUDES the operatives. So a value of 3 is satisfied by 2 players & 1 operative
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public int PlayersPerOperative = 10;
|
||||
|
||||
[DataField]
|
||||
public int MaxOps = 5;
|
||||
|
||||
/// <summary>
|
||||
/// What will happen if all of the nuclear operatives will die. Used by LoneOpsSpawn event.
|
||||
/// </summary>
|
||||
@@ -52,12 +41,6 @@ public sealed partial class NukeopsRuleComponent : Component
|
||||
[DataField]
|
||||
public TimeSpan EvacShuttleTime = TimeSpan.FromMinutes(3);
|
||||
|
||||
/// <summary>
|
||||
/// Whether or not to spawn the nuclear operative outpost. Used by LoneOpsSpawn event.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public bool SpawnOutpost = true;
|
||||
|
||||
/// <summary>
|
||||
/// Whether or not nukie left their outpost
|
||||
/// </summary>
|
||||
@@ -80,7 +63,7 @@ public sealed partial class NukeopsRuleComponent : Component
|
||||
/// This amount of TC will be given to each nukie
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public int WarTCAmountPerNukie = 40;
|
||||
public int WarTcAmountPerNukie = 40;
|
||||
|
||||
/// <summary>
|
||||
/// Delay between war declaration and nuke ops arrival on station map. Gives crew time to prepare
|
||||
@@ -94,50 +77,23 @@ public sealed partial class NukeopsRuleComponent : Component
|
||||
[DataField]
|
||||
public int WarDeclarationMinOps = 4;
|
||||
|
||||
[DataField]
|
||||
public EntProtoId SpawnPointProto = "SpawnPointNukies";
|
||||
|
||||
[DataField]
|
||||
public EntProtoId GhostSpawnPointProto = "SpawnPointGhostNukeOperative";
|
||||
|
||||
[DataField]
|
||||
public string OperationName = "Test Operation";
|
||||
|
||||
[DataField]
|
||||
public ProtoId<GameMapPrototype> OutpostMapPrototype = "NukieOutpost";
|
||||
|
||||
[DataField]
|
||||
public WinType WinType = WinType.Neutral;
|
||||
|
||||
[DataField]
|
||||
public List<WinCondition> WinConditions = new ();
|
||||
|
||||
// TODO full game save
|
||||
// TODO: use components, don't just cache entity UIDs
|
||||
// There have been (and probably still are) bugs where these refer to deleted entities from old rounds.
|
||||
// Whenever this gets fixed, update NukiesTest.
|
||||
public EntityUid? NukieOutpost;
|
||||
public EntityUid? NukieShuttle;
|
||||
[DataField]
|
||||
public EntityUid? TargetStation;
|
||||
public MapId? NukiePlanet;
|
||||
|
||||
[DataField]
|
||||
public ProtoId<NpcFactionPrototype> Faction = "Syndicate";
|
||||
|
||||
/// <summary>
|
||||
/// Data to be used in <see cref="OnMindAdded"/> for an operative once the Mind has been added.
|
||||
/// Path to antagonist alert sound.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public Dictionary<EntityUid, string> OperativeMindPendingData = new();
|
||||
|
||||
[DataField(required: true)]
|
||||
public ProtoId<NpcFactionPrototype> Faction;
|
||||
|
||||
[DataField]
|
||||
public NukeopSpawnPreset CommanderSpawnDetails = new() { AntagRoleProto = "NukeopsCommander", GearProto = "SyndicateCommanderGearFull", NamePrefix = "nukeops-role-commander", NameList = "SyndicateNamesElite" };
|
||||
|
||||
[DataField]
|
||||
public NukeopSpawnPreset AgentSpawnDetails = new() { AntagRoleProto = "NukeopsMedic", GearProto = "SyndicateOperativeMedicFull", NamePrefix = "nukeops-role-agent", NameList = "SyndicateNamesNormal" };
|
||||
|
||||
[DataField]
|
||||
public NukeopSpawnPreset OperativeSpawnDetails = new();
|
||||
public SoundSpecifier GreetSoundNotification = new SoundPathSpecifier("/Audio/Ambience/Antag/nukeops_start.ogg");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user