Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
17e2dffdb2 | ||
|
|
22e287ec45 | ||
|
|
9a0a4abf5d | ||
|
|
0b685a52b6 | ||
|
|
52d3b54d2c | ||
|
|
8ba993d1a9 | ||
|
|
edd1500bf3 | ||
|
|
2ec64360b7 | ||
|
|
e0540c6205 | ||
|
|
7953b0469a | ||
|
|
a3d3d23600 | ||
|
|
5ccfce1e7f | ||
|
|
879cbf43f5 | ||
|
|
9c84627db5 |
@@ -262,32 +262,6 @@ public sealed partial class AdminVerbSystem
|
||||
Message = string.Join(": ", ntAgent, Loc.GetString("admin-verb-text-make-NTAgent")),
|
||||
};
|
||||
args.Verbs.Add(agent);
|
||||
|
||||
args.Verbs.Add(new ()
|
||||
{
|
||||
Text = Loc.GetString("admin-verb-make-HeadInsurgent.text"),
|
||||
Category = VerbCategory.Antag,
|
||||
Icon = new SpriteSpecifier.Rsi(new ResPath("/Textures/Interface/Misc/job_icons.rsi"), "HeadRevolutionary"),
|
||||
Act = () =>
|
||||
{
|
||||
_antag.ForceMakeAntag<NTAgentRuleComponent>(targetPlayer, "UprisingRule", "HeadInsurgent");
|
||||
},
|
||||
Impact = LogImpact.High,
|
||||
Message = Loc.GetString("admin-verb-make-HeadInsurgent.message"),
|
||||
});
|
||||
|
||||
args.Verbs.Add(new ()
|
||||
{
|
||||
Text = Loc.GetString("admin-verb-make-HeadLoyalist.text"),
|
||||
Category = VerbCategory.Antag,
|
||||
Icon = new SpriteSpecifier.Rsi(new ResPath("/Textures/Interface/Misc/job_icons.rsi"), "Nanotrasen"),
|
||||
Act = () =>
|
||||
{
|
||||
_antag.ForceMakeAntag<NTAgentRuleComponent>(targetPlayer, "UprisingRule", "HeadLoyalist");
|
||||
},
|
||||
Impact = LogImpact.High,
|
||||
Message = Loc.GetString("admin-verb-make-HeadLoyalist.message"),
|
||||
});
|
||||
// End DeltaV Additions
|
||||
// start DeltaV Additions - add hitman
|
||||
var hitmanName = Loc.GetString("admin-verb-make-hitman");
|
||||
|
||||
@@ -23,8 +23,7 @@ public sealed partial class AntagSelectionSystem
|
||||
/// </summary>
|
||||
public bool TryGetNextAvailableDefinition(Entity<AntagSelectionComponent> ent,
|
||||
[NotNullWhen(true)] out AntagSelectionDefinition? definition,
|
||||
int? players = null,
|
||||
string? preferredRole = null) // DeltaV - preferrec roles
|
||||
int? players = null)
|
||||
{
|
||||
definition = null;
|
||||
|
||||
@@ -40,11 +39,6 @@ public sealed partial class AntagSelectionSystem
|
||||
// It needs to track selected minds for each definition independently.
|
||||
foreach (var def in ent.Comp.Definitions)
|
||||
{
|
||||
// Begin DeltaV - preferred roles
|
||||
if (preferredRole is not null && !def.PrefRoles.Contains(preferredRole))
|
||||
continue;
|
||||
// End DeltaV - preferred roles
|
||||
|
||||
var target = GetTargetAntagCount(ent, null, def);
|
||||
|
||||
if (mindCount < target)
|
||||
@@ -342,11 +336,11 @@ public sealed partial class AntagSelectionSystem
|
||||
/// This technically is a gamerule-ent-less way to make an entity an antag.
|
||||
/// You should almost never be using this.
|
||||
/// </summary>
|
||||
public void ForceMakeAntag<T>(ICommonSession? player, string defaultRule, string? preferredRole = null) where T : Component // DeltaV - preferred antag roles
|
||||
public void ForceMakeAntag<T>(ICommonSession? player, string defaultRule) where T : Component
|
||||
{
|
||||
var rule = ForceGetGameRuleEnt<T>(defaultRule);
|
||||
|
||||
if (!TryGetNextAvailableDefinition(rule, out var def, preferredRole: preferredRole)) // DeltaV - preferred antag roles
|
||||
if (!TryGetNextAvailableDefinition(rule, out var def))
|
||||
def = rule.Comp.Definitions.Last();
|
||||
MakeAntag(rule, player, def.Value);
|
||||
}
|
||||
|
||||
@@ -588,6 +588,15 @@ public sealed class FaxSystem : EntitySystem
|
||||
return;
|
||||
|
||||
var faxName = Loc.GetString("fax-machine-popup-source-unknown");
|
||||
|
||||
// BEGIN DeltaV - Refresh Fax IDs before recieving
|
||||
// This will seem odd that we're doing the same if statement twice BUT if its not in the known fax machine list, the
|
||||
// sending fax might not have been online when the current fax machine was refreshed/init'd. So, if its already known,
|
||||
// we don't need to refresh. But if its not known, let's attempt to refresh first, then check the fromAddress in the KnownFaxes.
|
||||
if (fromAddress != null && !component.KnownFaxes.TryGetValue(fromAddress, out var _))
|
||||
Refresh(uid, component);
|
||||
// END DeltaV
|
||||
|
||||
if (fromAddress != null && component.KnownFaxes.TryGetValue(fromAddress, out var fax)) // If message received from unknown fax address
|
||||
faxName = fax;
|
||||
|
||||
|
||||
@@ -475,7 +475,7 @@ public sealed class NukeSystem : EntitySystem
|
||||
/// <summary>
|
||||
/// Force a nuclear bomb to start a countdown timer
|
||||
/// </summary>
|
||||
public void ArmBomb(EntityUid uid, NukeComponent? component = null, string? announcementId = null) // DeltaV - custom announcements
|
||||
public void ArmBomb(EntityUid uid, NukeComponent? component = null)
|
||||
{
|
||||
if (!Resolve(uid, ref component))
|
||||
return;
|
||||
@@ -500,7 +500,7 @@ public sealed class NukeSystem : EntitySystem
|
||||
_selectedNukeSong = _audio.ResolveSound(component.ArmMusic);
|
||||
|
||||
// warn a crew
|
||||
var announcement = Loc.GetString(announcementId ?? "nuke-component-announcement-armed", // DeltaV - custom announcements
|
||||
var announcement = Loc.GetString("nuke-component-announcement-armed",
|
||||
("time", (int) component.RemainingTime),
|
||||
("location", FormattedMessage.RemoveMarkupOrThrow(_navMap.GetNearestBeaconString((uid, nukeXform)))));
|
||||
var sender = Loc.GetString("nuke-component-announcement-sender");
|
||||
|
||||
@@ -209,7 +209,7 @@ public sealed class RadioSystem : EntitySystem
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="TelecomServerComponent"/>
|
||||
private bool HasActiveServer(MapId mapId, string channelId)
|
||||
public bool HasActiveServer(MapId mapId, string channelId) // DeltaV - we need this
|
||||
{
|
||||
var servers = EntityQuery<TelecomServerComponent, EncryptionKeyHolderComponent, ApcPowerReceiverComponent, TransformComponent>();
|
||||
foreach (var (_, keys, power, transform) in servers)
|
||||
|
||||
@@ -1,84 +0,0 @@
|
||||
using Content.Server.Revolutionary.Components;
|
||||
using Content.Shared._DV.Uprising;
|
||||
using Content.Shared.Cuffs.Components;
|
||||
using Content.Shared.Mind.Components;
|
||||
using Content.Shared.Mobs;
|
||||
using Content.Shared.Mobs.Components;
|
||||
using Content.Shared.Objectives.Components;
|
||||
using Content.Shared.Roles;
|
||||
using Content.Shared.Station;
|
||||
|
||||
namespace Content.Server.Uprising;
|
||||
|
||||
public sealed class CommandStatusObjectiveSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly SharedRoleSystem _role = default!;
|
||||
[Dependency] private readonly SharedStationSystem _station = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<CommandStatusObjectiveComponent, ObjectiveGetProgressEvent>(OnGetProgress);
|
||||
}
|
||||
|
||||
private bool CheckIncapacitated(EntityUid uid)
|
||||
{
|
||||
if (TryComp<CuffableComponent>(uid, out var cuffed) && cuffed.CuffedHandCount > 0)
|
||||
return true;
|
||||
|
||||
if (!TryComp<MobStateComponent>(uid, out var state))
|
||||
return true;
|
||||
|
||||
if (state.CurrentState is MobState.Dead or MobState.Invalid)
|
||||
return true;
|
||||
|
||||
if (_station.GetOwningStation(uid) == null)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private void OnGetProgress(Entity<CommandStatusObjectiveComponent> ent, ref ObjectiveGetProgressEvent args)
|
||||
{
|
||||
var total = 0;
|
||||
var counted = 0;
|
||||
|
||||
var query = AllEntityQuery<MindContainerComponent, CommandStaffComponent>();
|
||||
while (query.MoveNext(out var uid, out var mind, out _))
|
||||
{
|
||||
if (mind.Mind is not { } mindUid)
|
||||
continue;
|
||||
|
||||
total++;
|
||||
|
||||
var converted = false;
|
||||
foreach (var role in ent.Comp.ConvertedRoles)
|
||||
{
|
||||
if (!EntityManager.ComponentFactory.TryGetRegistration(role, out var roleReg))
|
||||
{
|
||||
Log.Error($"Role component not found for CrewConversionObjective: {role}");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!_role.MindHasRole(mindUid, roleReg.Type, out _))
|
||||
continue;
|
||||
|
||||
converted = true;
|
||||
break;
|
||||
}
|
||||
|
||||
var incapacitated = CheckIncapacitated(uid);
|
||||
|
||||
if (converted && !incapacitated || !converted && ent.Comp.ShouldUnconvertedBeIncapacitated && incapacitated)
|
||||
{
|
||||
counted++;
|
||||
}
|
||||
}
|
||||
|
||||
if (total == 0)
|
||||
return;
|
||||
|
||||
args.Progress = (float)counted / (float)total;
|
||||
}
|
||||
}
|
||||
@@ -6,12 +6,6 @@ namespace Content.Server._DV.CartridgeLoader.Cartridges;
|
||||
[RegisterComponent, Access(typeof(NanoChatCartridgeSystem))]
|
||||
public sealed partial class NanoChatCartridgeComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// Station entity to keep track of.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public EntityUid? Station;
|
||||
|
||||
/// <summary>
|
||||
/// The NanoChat card to keep track of.
|
||||
/// </summary>
|
||||
|
||||
@@ -2,9 +2,8 @@ using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using Content.Server.Administration.Logs;
|
||||
using Content.Server.CartridgeLoader;
|
||||
using Content.Server.Power.Components;
|
||||
using Content.Server.Radio;
|
||||
using Content.Server.Station.Systems;
|
||||
using Content.Server.Radio.EntitySystems;
|
||||
using Content.Shared.Access.Components;
|
||||
using Content.Shared.CartridgeLoader;
|
||||
using Content.Shared.CCVar;
|
||||
@@ -30,7 +29,7 @@ public sealed class NanoChatCartridgeSystem : EntitySystem
|
||||
[Dependency] private readonly IPrototypeManager _prototype = default!;
|
||||
[Dependency] private readonly SharedNanoChatSystem _nanoChat = default!;
|
||||
[Dependency] private readonly SharedUserInterfaceSystem _ui = default!;
|
||||
[Dependency] private readonly StationSystem _station = default!;
|
||||
[Dependency] private readonly RadioSystem _radio = default!;
|
||||
|
||||
private EntityQuery<PdaComponent> _pdaQuery;
|
||||
private EntityQuery<NanoChatCardComponent> _cardQuery;
|
||||
@@ -456,9 +455,7 @@ public sealed class NanoChatCartridgeSystem : EntitySystem
|
||||
{
|
||||
// First verify we can send from this device
|
||||
var channel = _prototype.Index(sender.Comp.RadioChannel);
|
||||
var sendAttemptEvent = new RadioSendAttemptEvent(channel, sender);
|
||||
RaiseLocalEvent(ref sendAttemptEvent);
|
||||
if (sendAttemptEvent.Cancelled)
|
||||
if (!CanSend(sender))
|
||||
return (true, new List<Entity<NanoChatCardComponent>>());
|
||||
|
||||
var foundRecipients = new List<Entity<NanoChatCardComponent>>();
|
||||
@@ -487,26 +484,19 @@ public sealed class NanoChatCartridgeSystem : EntitySystem
|
||||
if (receiverCart.Card != recipient.Owner)
|
||||
continue;
|
||||
|
||||
// Check if devices are on same station/map
|
||||
var recipientStation = _station.GetOwningStation(receiverUid);
|
||||
var senderStation = _station.GetOwningStation(sender);
|
||||
var receiverMapId = Transform(receiverUid).MapID;
|
||||
var senderMapId = Transform(sender).MapID;
|
||||
|
||||
// Both entities must be on a station
|
||||
if (recipientStation == null || senderStation == null)
|
||||
// Must be on the same map unless long range is allowed.
|
||||
if (!channel.LongRange && receiverMapId != senderMapId)
|
||||
continue;
|
||||
|
||||
// Must be on same map/station unless long range allowed
|
||||
if (!channel.LongRange && recipientStation != senderStation)
|
||||
continue;
|
||||
|
||||
// Needs telecomms
|
||||
if (!HasActiveServer(senderStation.Value) || !HasActiveServer(recipientStation.Value))
|
||||
// Check if telecommunications are active on both ends
|
||||
if (!_radio.HasActiveServer(receiverMapId, receiverCart.RadioChannel) || !_radio.HasActiveServer(senderMapId, sender.Comp.RadioChannel))
|
||||
continue;
|
||||
|
||||
// Check if recipient can receive
|
||||
var receiveAttemptEv = new RadioReceiveAttemptEvent(channel, sender, receiverUid);
|
||||
RaiseLocalEvent(ref receiveAttemptEv);
|
||||
if (receiveAttemptEv.Cancelled)
|
||||
if (!CanReceive(sender, receiverUid))
|
||||
continue;
|
||||
|
||||
// Found valid cartridge that can receive
|
||||
@@ -519,21 +509,26 @@ public sealed class NanoChatCartridgeSystem : EntitySystem
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Checks if there are any active telecomms servers on the given station
|
||||
/// Tests if a NanoChat cartridge can send messages
|
||||
/// </summary>
|
||||
private bool HasActiveServer(EntityUid station)
|
||||
/// <param name="sender">The NanoChat cartridge trying to send</param>
|
||||
private bool CanSend(Entity<NanoChatCartridgeComponent> sender)
|
||||
{
|
||||
// I have no idea why this isn't public in the RadioSystem
|
||||
var query =
|
||||
EntityQueryEnumerator<TelecomServerComponent, EncryptionKeyHolderComponent, ApcPowerReceiverComponent>();
|
||||
var sendAttemptEvent = new RadioSendAttemptEvent(_prototype.Index(sender.Comp.RadioChannel), sender);
|
||||
RaiseLocalEvent(ref sendAttemptEvent);
|
||||
return !sendAttemptEvent.Cancelled;
|
||||
}
|
||||
|
||||
while (query.MoveNext(out var uid, out _, out _, out var power))
|
||||
{
|
||||
if (_station.GetOwningStation(uid) == station && power.Powered)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
/// <summary>
|
||||
/// Tests if a receiver can receive from a given NanoChat cartridge
|
||||
/// </summary>
|
||||
/// <param name="sender">The NanoChat cartridge trying to send</param>
|
||||
/// <param name="receiver">The receiver cartridge trying to receive</param>
|
||||
private bool CanReceive(Entity<NanoChatCartridgeComponent> sender, EntityUid receiver)
|
||||
{
|
||||
var receiveAttemptEv = new RadioReceiveAttemptEvent(_prototype.Index(sender.Comp.RadioChannel), sender, receiver);
|
||||
RaiseLocalEvent(ref receiveAttemptEv);
|
||||
return !receiveAttemptEv.Cancelled;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -688,16 +683,15 @@ public sealed class NanoChatCartridgeSystem : EntitySystem
|
||||
private void UpdateUI(Entity<NanoChatCartridgeComponent> ent, EntityUid loader)
|
||||
{
|
||||
List<NanoChatRecipient>? contacts;
|
||||
if (_station.GetOwningStation(loader) is { } station)
|
||||
{
|
||||
ent.Comp.Station = station;
|
||||
|
||||
if (CanSend(ent) && _radio.HasActiveServer(Transform(ent).MapID, ent.Comp.RadioChannel))
|
||||
{
|
||||
contacts = [];
|
||||
|
||||
var query = AllEntityQuery<NanoChatCardComponent, IdCardComponent>();
|
||||
while (query.MoveNext(out var entityId, out var nanoChatCard, out var idCardComponent))
|
||||
{
|
||||
if (nanoChatCard.ListNumber && nanoChatCard.Number is uint nanoChatNumber && idCardComponent.FullName is string fullName && _station.GetOwningStation(entityId) == station)
|
||||
if (nanoChatCard.ListNumber && nanoChatCard.Number is uint nanoChatNumber && idCardComponent.FullName is string fullName)
|
||||
{
|
||||
contacts.Add(new NanoChatRecipient(nanoChatNumber, fullName));
|
||||
}
|
||||
@@ -706,7 +700,7 @@ public sealed class NanoChatCartridgeSystem : EntitySystem
|
||||
var borgQuery = AllEntityQuery<NanoChatCardComponent, BorgChassisComponent>();
|
||||
while (borgQuery.MoveNext(out var borgId, out var borgChatCard, out var _))
|
||||
{
|
||||
if (borgChatCard.ListNumber && borgChatCard.Number is uint nanoChatNumber && _station.GetOwningStation(borgId) == station)
|
||||
if (borgChatCard.ListNumber && borgChatCard.Number is uint nanoChatNumber)
|
||||
{
|
||||
contacts.Add(new NanoChatRecipient(nanoChatNumber, MetaData(borgId).EntityName));
|
||||
}
|
||||
@@ -715,7 +709,7 @@ public sealed class NanoChatCartridgeSystem : EntitySystem
|
||||
var aiQuery = AllEntityQuery<NanoChatCardComponent, StationAiHeldComponent>();
|
||||
while (aiQuery.MoveNext(out var aiId, out var aiChatCard, out var _))
|
||||
{
|
||||
if (aiChatCard.ListNumber && aiChatCard.Number is uint nanoChatNumber && _station.GetOwningStation(aiId) == station)
|
||||
if (aiChatCard.ListNumber && aiChatCard.Number is uint nanoChatNumber)
|
||||
{
|
||||
contacts.Add(new NanoChatRecipient(nanoChatNumber, MetaData(aiId).EntityName));
|
||||
}
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
namespace Content.Server._DV.Uprising;
|
||||
|
||||
[RegisterComponent, Access(typeof(UprisingRuleSystem))]
|
||||
public sealed partial class UprisingConsoleComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
public TimeSpan Delay = TimeSpan.FromSeconds(5);
|
||||
}
|
||||
@@ -1,54 +0,0 @@
|
||||
using Content.Shared._DV.Roles;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
|
||||
|
||||
namespace Content.Server._DV.Uprising;
|
||||
|
||||
[RegisterComponent, Access(typeof(UprisingRuleSystem)), AutoGenerateComponentPause]
|
||||
public sealed partial class UprisingRuleComponent : Component
|
||||
{
|
||||
[DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoPausedField]
|
||||
public TimeSpan? NukeAnnouncementAt;
|
||||
|
||||
[DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoPausedField]
|
||||
public TimeSpan? NukeTimeAt;
|
||||
|
||||
[DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoPausedField]
|
||||
public TimeSpan? FirstWarningAt;
|
||||
|
||||
[DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoPausedField]
|
||||
public TimeSpan? ImpendingWarningAt;
|
||||
|
||||
[DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoPausedField]
|
||||
public TimeSpan? FinalWarningAt;
|
||||
|
||||
[DataField]
|
||||
public TimeSpan NukeAnnouncementDelay = TimeSpan.FromMinutes(30);
|
||||
|
||||
[DataField]
|
||||
public TimeSpan NukeTimeDelay = TimeSpan.FromMinutes(90);
|
||||
|
||||
[DataField]
|
||||
public TimeSpan FirstWarning = TimeSpan.FromMinutes(30);
|
||||
|
||||
[DataField]
|
||||
public TimeSpan ImpendingWarning = TimeSpan.FromMinutes(15);
|
||||
|
||||
[DataField]
|
||||
public TimeSpan FinalWarning = TimeSpan.FromMinutes(5);
|
||||
|
||||
[DataField]
|
||||
public float NukeDuration = 60f;
|
||||
|
||||
[DataField]
|
||||
public (UprisingSide, TimeSpan)? SideWinsAt;
|
||||
|
||||
[DataField]
|
||||
public UprisingSide? SideWon;
|
||||
|
||||
[DataField]
|
||||
public Dictionary<UprisingSide, TimeSpan> SideTimes = new()
|
||||
{
|
||||
{ UprisingSide.Insurgent , TimeSpan.FromMinutes(3) },
|
||||
{ UprisingSide.Loyalist , TimeSpan.FromMinutes(3) },
|
||||
};
|
||||
}
|
||||
@@ -1,341 +0,0 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using Content.Server.Antag;
|
||||
using Content.Server.GameTicking;
|
||||
using Content.Server.GameTicking.Rules;
|
||||
using Content.Server.Nuke;
|
||||
using Content.Server.Pinpointer;
|
||||
using Content.Server.Roles;
|
||||
using Content.Shared._DV.Roles;
|
||||
using Content.Shared._DV.Uprising;
|
||||
using Content.Shared.Chat;
|
||||
using Content.Shared.Containers.ItemSlots;
|
||||
using Content.Shared.DoAfter;
|
||||
using Content.Shared.GameTicking.Components;
|
||||
using Content.Shared.Mind;
|
||||
using Content.Shared.Objectives.Components;
|
||||
using Content.Shared.Objectives.Systems;
|
||||
using Content.Shared.Roles;
|
||||
using Content.Shared.Verbs;
|
||||
using Robust.Shared.Player;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Server._DV.Uprising;
|
||||
|
||||
public sealed class UprisingRuleSystem : GameRuleSystem<UprisingRuleComponent>
|
||||
{
|
||||
[Dependency] private readonly SharedChatSystem _chat = default!;
|
||||
[Dependency] private readonly NukeSystem _nuke = default!;
|
||||
[Dependency] private readonly ItemSlotsSystem _itemSlots = default!;
|
||||
[Dependency] private readonly NavMapSystem _navMap = default!;
|
||||
[Dependency] private readonly SharedDoAfterSystem _doAfter = default!;
|
||||
[Dependency] private readonly SharedMindSystem _mind = default!;
|
||||
[Dependency] private readonly SharedObjectivesSystem _objectives = default!;
|
||||
[Dependency] private readonly SharedRoleSystem _role = default!;
|
||||
[Dependency] private readonly AntagSelectionSystem _antag = default!;
|
||||
[Dependency] private readonly ISharedPlayerManager _player = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<LoyalistRoleComponent, GetBriefingEvent>(OnGetLoyalistBriefing);
|
||||
SubscribeLocalEvent<InsurgentRoleComponent, GetBriefingEvent>(OnGetInsurgentBriefing);
|
||||
|
||||
SubscribeLocalEvent<UprisingVictoryObjectiveComponent, ObjectiveGetProgressEvent>(OnUprisingVictoryProgress);
|
||||
|
||||
SubscribeLocalEvent<UprisingConsoleComponent, GetVerbsEvent<AlternativeVerb>>(OnGetConsoleVerbs);
|
||||
SubscribeLocalEvent<UprisingConsoleComponent, UprisingArmDoAfter>(OnArm);
|
||||
SubscribeLocalEvent<UprisingConsoleComponent, UprisingDisarmDoAfter>(OnDisarm);
|
||||
}
|
||||
|
||||
private void OnUprisingVictoryProgress(Entity<UprisingVictoryObjectiveComponent> ent, ref ObjectiveGetProgressEvent args)
|
||||
{
|
||||
if (GetRule() is not { } rule)
|
||||
return;
|
||||
|
||||
if (rule.Comp1.SideWinsAt is var (side, _) && ent.Comp.Side == side)
|
||||
args.Progress = 0.5f;
|
||||
else if (rule.Comp1.SideWon == ent.Comp.Side)
|
||||
args.Progress = 1f;
|
||||
else
|
||||
args.Progress = 0f;
|
||||
}
|
||||
|
||||
protected override void Started(EntityUid uid, UprisingRuleComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args)
|
||||
{
|
||||
base.Started(uid, component, gameRule, args);
|
||||
|
||||
component.NukeAnnouncementAt = Timing.CurTime + component.NukeAnnouncementDelay;
|
||||
component.NukeTimeAt = Timing.CurTime + component.NukeTimeDelay;
|
||||
component.FirstWarningAt = component.NukeTimeAt - component.FirstWarning;
|
||||
component.ImpendingWarningAt = component.NukeTimeAt - component.ImpendingWarning;
|
||||
component.FinalWarningAt = component.NukeTimeAt - component.FinalWarning;
|
||||
}
|
||||
|
||||
protected override void ActiveTick(EntityUid uid, UprisingRuleComponent component, GameRuleComponent gameRule, float frameTime)
|
||||
{
|
||||
base.ActiveTick(uid, component, gameRule, frameTime);
|
||||
|
||||
if (component.NukeAnnouncementAt is { } nukeAnnouncement && nukeAnnouncement <= Timing.CurTime)
|
||||
{
|
||||
var time = component.NukeTimeAt.HasValue ? component.NukeTimeAt.Value - Timing.CurTime : component.NukeTimeDelay;
|
||||
_chat.DispatchGlobalAnnouncement(Loc.GetString("uprising-announcement-nuke-announcement", ("time", (int)Math.Round(time.TotalMinutes))), colorOverride: Color.Gold);
|
||||
component.NukeAnnouncementAt = null;
|
||||
}
|
||||
|
||||
if (component.FirstWarningAt is { } firstWarning && firstWarning <= Timing.CurTime)
|
||||
{
|
||||
var time = component.NukeTimeAt.HasValue ? component.NukeTimeAt.Value - Timing.CurTime : component.FirstWarning;
|
||||
_chat.DispatchGlobalAnnouncement(Loc.GetString("uprising-announcement-first-warning", ("time", (int)Math.Round(time.TotalMinutes))), colorOverride: Color.Gold);
|
||||
component.FirstWarningAt = null;
|
||||
}
|
||||
|
||||
if (component.ImpendingWarningAt is { } impendingWarning && impendingWarning <= Timing.CurTime)
|
||||
{
|
||||
var time = component.NukeTimeAt.HasValue ? component.NukeTimeAt.Value - Timing.CurTime : component.ImpendingWarning;
|
||||
_chat.DispatchGlobalAnnouncement(Loc.GetString("uprising-announcement-impending-warning", ("time", (int)Math.Round(time.TotalMinutes))), colorOverride: Color.Gold);
|
||||
component.ImpendingWarningAt = null;
|
||||
}
|
||||
|
||||
if (component.FinalWarningAt is { } finalWarning && finalWarning <= Timing.CurTime)
|
||||
{
|
||||
var time = component.NukeTimeAt.HasValue ? component.NukeTimeAt.Value - Timing.CurTime : component.FinalWarning;
|
||||
_chat.DispatchGlobalAnnouncement(Loc.GetString("uprising-announcement-final-warning", ("time", (int)Math.Round(time.TotalMinutes))), colorOverride: Color.Gold);
|
||||
component.FinalWarningAt = null;
|
||||
}
|
||||
|
||||
if (component.NukeTimeAt is { } nukeTime && nukeTime <= Timing.CurTime)
|
||||
{
|
||||
component.NukeTimeAt = null;
|
||||
var query = EntityQueryEnumerator<NukeComponent>();
|
||||
while (query.MoveNext(out var bombUid, out var bomb))
|
||||
{
|
||||
_nuke.SetRemainingTime(bombUid, component.NukeDuration, bomb);
|
||||
_itemSlots.SetLock(bombUid, bomb.DiskSlot, false);
|
||||
_itemSlots.TryEject(bombUid, bomb.DiskSlot, null, out _, true);
|
||||
_itemSlots.SetLock(bombUid, bomb.DiskSlot, true);
|
||||
_nuke.ArmBomb(bombUid, bomb, "uprising-announcement-nuke-armed");
|
||||
}
|
||||
}
|
||||
|
||||
if (component.SideWinsAt is var (winningSide, winningTime) && winningTime <= Timing.CurTime)
|
||||
{
|
||||
component.SideWinsAt = null;
|
||||
var query = EntityQueryEnumerator<NukeComponent>();
|
||||
while (query.MoveNext(out var bombUid, out var bomb))
|
||||
{
|
||||
_nuke.DisarmBomb(bombUid, bomb);
|
||||
}
|
||||
|
||||
component.SideWon = winningSide;
|
||||
_chat.DispatchGlobalAnnouncement(
|
||||
Loc.GetString($"uprising-announcement-victory-announcement-{winningSide}"),
|
||||
Loc.GetString($"uprising-announcement-victory-announcement-{winningSide}.sender"),
|
||||
colorOverride: Color.FromXaml(Loc.GetString($"uprising-announcement-victory-announcement-{winningSide}.color")));
|
||||
|
||||
GameTicker.EndRound();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void AppendRoundEndText(EntityUid uid,
|
||||
UprisingRuleComponent component,
|
||||
GameRuleComponent gameRule,
|
||||
ref RoundEndTextAppendEvent args)
|
||||
{
|
||||
if (component.SideWinsAt is var (partialSide, _))
|
||||
{
|
||||
args.AddLine(Loc.GetString($"uprising-outcome-{partialSide}-partial"));
|
||||
}
|
||||
else if (component.SideWon is { } winningSide)
|
||||
{
|
||||
args.AddLine(Loc.GetString($"uprising-outcome-{winningSide}-full"));
|
||||
}
|
||||
else
|
||||
{
|
||||
args.AddLine(Loc.GetString("uprising-outcome-none"));
|
||||
}
|
||||
|
||||
args.AddLine(Loc.GetString("uprising-leads"));
|
||||
|
||||
var antags = _antag.GetAntagIdentifiers(uid);
|
||||
var leads = new HashSet<EntityUid>();
|
||||
|
||||
foreach (var (mind, sessionData, name) in antags)
|
||||
{
|
||||
leads.Add(mind);
|
||||
|
||||
if (_role.MindHasRole<UprisingRoleComponent>(mind, out var it))
|
||||
args.AddLine(Loc.GetString($"uprising-leads-user.{it.Value.Comp2.Side}", ("name", name), ("user", sessionData.UserName)));
|
||||
else
|
||||
args.AddLine(Loc.GetString("uprising-leads-user.Unknown", ("name", name), ("user", sessionData.UserName)));
|
||||
}
|
||||
args.AddLine(string.Empty);
|
||||
|
||||
var lines = new Dictionary<UprisingSide, List<string>>();
|
||||
foreach (var value in Enum.GetValues<UprisingSide>())
|
||||
{
|
||||
lines[value] = new();
|
||||
}
|
||||
|
||||
var minds = EntityQueryEnumerator<MindComponent>();
|
||||
while (minds.MoveNext(out var mindUid, out var mindComponent))
|
||||
{
|
||||
if (leads.Contains(mindUid))
|
||||
continue;
|
||||
|
||||
if (!_role.MindHasRole<UprisingRoleComponent>((mindUid, mindComponent), out var role) || mindComponent.OriginalOwnerUserId is not { } owner)
|
||||
continue;
|
||||
|
||||
if (!_player.TryGetPlayerData(owner, out var data))
|
||||
continue;
|
||||
|
||||
lines[role.Value.Comp2.Side].Add(Loc.GetString($"uprising-members-user", ("name", mindComponent.CharacterName ?? string.Empty), ("user", data.UserName)));
|
||||
}
|
||||
|
||||
foreach (var value in Enum.GetValues<UprisingSide>())
|
||||
{
|
||||
args.AddLine(Loc.GetString($"uprising-members.{value}"));
|
||||
foreach (var line in lines[value])
|
||||
{
|
||||
args.AddLine(line);
|
||||
}
|
||||
args.AddLine(string.Empty);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnGetLoyalistBriefing(Entity<LoyalistRoleComponent> ent, ref GetBriefingEvent args)
|
||||
{
|
||||
args.Append(Loc.GetString("antag-Loyalist.briefing"));
|
||||
}
|
||||
|
||||
private void OnGetInsurgentBriefing(Entity<InsurgentRoleComponent> ent, ref GetBriefingEvent args)
|
||||
{
|
||||
args.Append(Loc.GetString("antag-Insurgent.briefing"));
|
||||
}
|
||||
|
||||
private Entity<UprisingRuleComponent, GameRuleComponent>? GetRule()
|
||||
{
|
||||
var enumerator = QueryActiveRules();
|
||||
while (enumerator.MoveNext(out var uid, out _, out var uprising, out var gamerule))
|
||||
{
|
||||
return (uid, uprising, gamerule);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private void StartWinning(UprisingSide side, EntityUid console)
|
||||
{
|
||||
if (GetRule() is not { } rule)
|
||||
return;
|
||||
|
||||
var location = _navMap.GetNearestBeaconString(console);
|
||||
var announcement = Loc.GetString($"uprising-announcement-start-victory-announcement-{side}",
|
||||
("time", (int) Math.Round(rule.Comp1.SideTimes[side].TotalSeconds)),
|
||||
("location", FormattedMessage.RemoveMarkupOrThrow(location)));
|
||||
|
||||
_chat.DispatchGlobalAnnouncement(
|
||||
announcement,
|
||||
Loc.GetString($"uprising-announcement-start-victory-announcement-{side}.sender"),
|
||||
colorOverride: Color.FromXaml(Loc.GetString($"uprising-announcement-start-victory-announcement-{side}.color")));
|
||||
|
||||
rule.Comp1.SideWinsAt = (side, Timing.CurTime + rule.Comp1.SideTimes[side]);
|
||||
}
|
||||
|
||||
private void StopWinning()
|
||||
{
|
||||
if (GetRule() is not { } rule || rule.Comp1.SideWinsAt is not var (side, time))
|
||||
return;
|
||||
|
||||
rule.Comp1.SideTimes[side] = Timing.CurTime - time;
|
||||
|
||||
_chat.DispatchGlobalAnnouncement(
|
||||
Loc.GetString($"uprising-announcement-interrupted-victory-announcement-{side}"),
|
||||
Loc.GetString($"uprising-announcement-interrupted-victory-announcement-{side}.sender"),
|
||||
colorOverride: Color.FromXaml(Loc.GetString($"uprising-announcement-interrupted-victory-announcement-{side}.color")));
|
||||
|
||||
rule.Comp1.SideWinsAt = null;
|
||||
}
|
||||
|
||||
private void OnGetConsoleVerbs(Entity<UprisingConsoleComponent> ent, ref GetVerbsEvent<AlternativeVerb> args)
|
||||
{
|
||||
if (GetRule() is not { } rule)
|
||||
return;
|
||||
|
||||
var user = args.User;
|
||||
if (rule.Comp1.SideWinsAt is var (disarmSide, _))
|
||||
{
|
||||
args.Verbs.Add(new ()
|
||||
{
|
||||
Act = () => StartDisarming(ent, user),
|
||||
Text = Loc.GetString($"uprising-disarm-verb.{disarmSide}"),
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (!CheckCanArm(args.User, out var armSide))
|
||||
return;
|
||||
|
||||
args.Verbs.Add(new()
|
||||
{
|
||||
Act = () => StartArming(ent, user),
|
||||
Text = Loc.GetString($"uprising-arm-verb.{armSide}"),
|
||||
});
|
||||
}
|
||||
|
||||
private bool CheckCanArm(EntityUid user, [NotNullWhen(true)] out UprisingSide? side)
|
||||
{
|
||||
side = null;
|
||||
if (_mind.GetMind(user) is not { } mind || !TryComp<MindComponent>(mind, out var mindComp))
|
||||
return false;
|
||||
|
||||
if (!_role.MindHasRole<UprisingRoleComponent>(mind, out var uprisingRole))
|
||||
return false;
|
||||
|
||||
foreach (var objective in mindComp.Objectives)
|
||||
{
|
||||
if (!HasComp<UprisingArmRequiredObjectiveComponent>(objective))
|
||||
continue;
|
||||
|
||||
if (_objectives.GetProgress(objective, (mind, mindComp)) is not >= 1)
|
||||
return false;
|
||||
}
|
||||
|
||||
side = uprisingRole.Value.Comp2.Side;
|
||||
return true;
|
||||
}
|
||||
|
||||
private void StartDisarming(Entity<UprisingConsoleComponent> ent, EntityUid user)
|
||||
{
|
||||
_doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager,
|
||||
user,
|
||||
ent.Comp.Delay,
|
||||
new UprisingDisarmDoAfter(),
|
||||
ent.Owner));
|
||||
}
|
||||
|
||||
private void StartArming(Entity<UprisingConsoleComponent> ent, EntityUid user)
|
||||
{
|
||||
_doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager,
|
||||
user,
|
||||
ent.Comp.Delay,
|
||||
new UprisingArmDoAfter(),
|
||||
ent.Owner));
|
||||
}
|
||||
|
||||
private void OnArm(Entity<UprisingConsoleComponent> ent, ref UprisingArmDoAfter args)
|
||||
{
|
||||
if (args.Handled || args.Cancelled || !CheckCanArm(args.User, out var side))
|
||||
return;
|
||||
|
||||
StartWinning(side.Value, ent);
|
||||
}
|
||||
|
||||
private void OnDisarm(Entity<UprisingConsoleComponent> ent, ref UprisingDisarmDoAfter args)
|
||||
{
|
||||
if (args.Handled || args.Cancelled)
|
||||
return;
|
||||
|
||||
StopWinning();
|
||||
}
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
using Content.Shared.Actions;
|
||||
using Content.Shared.Roles.Components;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared.Uprising;
|
||||
|
||||
public sealed partial class ConversionAcceptActionEvent : InstantActionEvent
|
||||
{
|
||||
[DataField(required: true)]
|
||||
public EntProtoId MindRole;
|
||||
|
||||
[DataField(required: true)]
|
||||
public EntProtoId<MindRoleComponent> RemoveMindRole;
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
using Content.Shared.Mind;
|
||||
using Content.Shared.Mind.Components;
|
||||
using Content.Shared.Roles;
|
||||
using Robust.Shared.Network;
|
||||
|
||||
namespace Content.Shared.Uprising;
|
||||
|
||||
public sealed class ConversionAcceptActionSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly SharedMindSystem _mind = default!;
|
||||
[Dependency] private readonly SharedRoleSystem _role = default!;
|
||||
[Dependency] private readonly INetManager _net = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<MindContainerComponent, ConversionAcceptActionEvent>(OnAcceptConversion);
|
||||
}
|
||||
|
||||
private void OnAcceptConversion(Entity<MindContainerComponent> ent, ref ConversionAcceptActionEvent args)
|
||||
{
|
||||
if (_mind.GetMind(ent) is not { } mind)
|
||||
return;
|
||||
|
||||
args.Handled = true;
|
||||
if (_net.IsServer)
|
||||
{
|
||||
_role.MindAddRole(mind, args.MindRole);
|
||||
_role.MindRemoveRole(mind, args.RemoveMindRole);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
using Content.Shared.Actions;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared.Uprising;
|
||||
|
||||
public sealed partial class ConversionOfferActionEvent : EntityTargetActionEvent
|
||||
{
|
||||
[DataField(readOnly: true)]
|
||||
public List<Type> IncompatibleMindRoleTypes;
|
||||
|
||||
[DataField]
|
||||
public EntProtoId AcceptAction;
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
using Content.Shared.Actions;
|
||||
using Content.Shared.Mind;
|
||||
using Content.Shared.Roles;
|
||||
using Content.Shared.Roles.Components;
|
||||
|
||||
namespace Content.Shared.Uprising;
|
||||
|
||||
public sealed class ConversionOfferActionSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly SharedActionsSystem _actions = default!;
|
||||
[Dependency] private readonly SharedMindSystem _mind = default!;
|
||||
[Dependency] private readonly SharedRoleSystem _role = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<MindRoleComponent, ConversionOfferActionEvent>(OnOffer);
|
||||
}
|
||||
|
||||
private void OnOffer(Entity<MindRoleComponent> ent, ref ConversionOfferActionEvent args)
|
||||
{
|
||||
if (_mind.GetMind(args.Target) is not { } mind)
|
||||
return;
|
||||
|
||||
foreach (var incompatible in args.IncompatibleMindRoleTypes)
|
||||
{
|
||||
if (_role.MindHasRole(mind, incompatible, out _))
|
||||
return;
|
||||
}
|
||||
|
||||
_actions.AddAction(args.Target, args.AcceptAction);
|
||||
args.Handled = true;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
using Robust.Shared.GameStates;
|
||||
|
||||
namespace Content.Shared._DV.Actions;
|
||||
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
public sealed partial class DeleteOnPerformedActionComponent : Component;
|
||||
@@ -1,18 +0,0 @@
|
||||
using Content.Shared.Actions.Events;
|
||||
|
||||
namespace Content.Shared._DV.Actions;
|
||||
|
||||
public sealed class DeleteOnPerformedActionSystem : EntitySystem
|
||||
{
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<DeleteOnPerformedActionComponent, ActionPerformedEvent>(OnActionPerformed);
|
||||
}
|
||||
|
||||
private void OnActionPerformed(Entity<DeleteOnPerformedActionComponent> ent, ref ActionPerformedEvent args)
|
||||
{
|
||||
PredictedQueueDel(ent);
|
||||
}
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
using Content.Shared.Actions;
|
||||
using Content.Shared.Mind;
|
||||
using Robust.Shared.Containers;
|
||||
using Robust.Shared.Network;
|
||||
|
||||
namespace Content.Shared._DV.Roles;
|
||||
|
||||
public sealed class ActionGrantRoleSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly INetManager _net = default!;
|
||||
[Dependency] private readonly SharedActionsSystem _actions = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<ActionGrantRoleComponent, EntGotInsertedIntoContainerMessage>(OnGotInserted);
|
||||
SubscribeLocalEvent<ActionGrantRoleComponent, EntGotRemovedFromContainerMessage>(OnGotRemoved);
|
||||
}
|
||||
|
||||
private void OnGotInserted(Entity<ActionGrantRoleComponent> ent, ref EntGotInsertedIntoContainerMessage args)
|
||||
{
|
||||
if (_net.IsClient || !TryComp<MindComponent>(args.Container.Owner, out var mind) || mind.CurrentEntity is not { } mindContainer)
|
||||
return;
|
||||
|
||||
_actions.GrantContainedActions(mindContainer, ent.Owner);
|
||||
}
|
||||
|
||||
private void OnGotRemoved(Entity<ActionGrantRoleComponent> ent, ref EntGotRemovedFromContainerMessage args)
|
||||
{
|
||||
if (_net.IsClient || !TryComp<MindComponent>(args.Container.Owner, out var mind) || mind.CurrentEntity is not { } mindContainer)
|
||||
return;
|
||||
|
||||
_actions.RemoveProvidedActions(mindContainer, ent.Owner);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
using Robust.Shared.GameStates;
|
||||
|
||||
namespace Content.Shared._DV.Roles;
|
||||
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
public sealed partial class ActionGrantRoleComponent : Component;
|
||||
@@ -1,6 +0,0 @@
|
||||
using Content.Shared.Roles.Components;
|
||||
|
||||
namespace Content.Shared._DV.Roles;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class InsurgentRoleComponent : BaseMindRoleComponent;
|
||||
@@ -1,6 +0,0 @@
|
||||
using Content.Shared.Roles.Components;
|
||||
|
||||
namespace Content.Shared._DV.Roles;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class LoyalistRoleComponent : BaseMindRoleComponent;
|
||||
@@ -1,12 +0,0 @@
|
||||
using Content.Shared.Objectives.Components;
|
||||
using Content.Shared.Roles.Components;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._DV.Roles;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class ObjectiveRoleComponent : BaseMindRoleComponent
|
||||
{
|
||||
[DataField(required: true)]
|
||||
public List<EntProtoId<ObjectiveComponent>> Objectives;
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
using Content.Shared.Roles.Components;
|
||||
|
||||
namespace Content.Shared._DV.Roles;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class UprisingInconvertibleRoleComponent : BaseMindRoleComponent;
|
||||
@@ -1,16 +0,0 @@
|
||||
using Content.Shared.Roles.Components;
|
||||
|
||||
namespace Content.Shared._DV.Roles;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class UprisingRoleComponent : BaseMindRoleComponent
|
||||
{
|
||||
[DataField(required: true)]
|
||||
public UprisingSide Side;
|
||||
}
|
||||
|
||||
public enum UprisingSide : byte
|
||||
{
|
||||
Insurgent,
|
||||
Loyalist,
|
||||
}
|
||||
@@ -1,60 +0,0 @@
|
||||
using Content.Shared.Mind;
|
||||
using Robust.Shared.Containers;
|
||||
using Robust.Shared.Network;
|
||||
|
||||
namespace Content.Shared._DV.Roles;
|
||||
|
||||
public sealed class ObjectiveRoleSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly INetManager _net = default!;
|
||||
[Dependency] private readonly SharedMindSystem _mind = default!;
|
||||
[Dependency] private readonly SharedContainerSystem _container = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<ObjectiveRoleComponent, EntGotInsertedIntoContainerMessage>(OnInsertedIntoMind);
|
||||
SubscribeLocalEvent<ObjectiveRoleComponent, ComponentShutdown>(OnShutdown);
|
||||
}
|
||||
|
||||
private void OnInsertedIntoMind(Entity<ObjectiveRoleComponent> ent, ref EntGotInsertedIntoContainerMessage args)
|
||||
{
|
||||
if (_net.IsClient)
|
||||
return;
|
||||
|
||||
if (!TryComp<MindComponent>(args.Container.Owner, out var mind))
|
||||
return;
|
||||
|
||||
foreach (var objective in ent.Comp.Objectives)
|
||||
{
|
||||
_mind.TryAddObjective(args.Container.Owner, mind, objective);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnShutdown(Entity<ObjectiveRoleComponent> ent, ref ComponentShutdown args)
|
||||
{
|
||||
if (_net.IsClient)
|
||||
return;
|
||||
|
||||
if (!_container.TryGetContainingContainer(ent.Owner, out var container) ||
|
||||
!TryComp<MindComponent>(container.Owner, out var mind))
|
||||
return;
|
||||
|
||||
var indices = new List<int>();
|
||||
|
||||
for (var i = mind.Objectives.Count; i >= 0; i--)
|
||||
{
|
||||
var objective = mind.Objectives[i];
|
||||
if (MetaData(objective).EntityPrototype?.ID is { } id && ent.Comp.Objectives.Contains(id))
|
||||
{
|
||||
indices.Add(i);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var index in indices)
|
||||
{
|
||||
_mind.TryRemoveObjective(container.Owner, mind, index);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Generic;
|
||||
|
||||
namespace Content.Shared._DV.Uprising;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class CommandStatusObjectiveComponent : Component
|
||||
{
|
||||
[DataField(required: true, customTypeSerializer: typeof(CustomHashSetSerializer<string, ComponentNameSerializer>))]
|
||||
public HashSet<string> ConvertedRoles;
|
||||
|
||||
[DataField]
|
||||
public bool ShouldUnconvertedBeIncapacitated;
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
using Content.Shared.NPC.Prototypes;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Generic;
|
||||
|
||||
namespace Content.Shared._DV.Uprising;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class CrewConversionObjectiveComponent : Component
|
||||
{
|
||||
[DataField(required: true, customTypeSerializer: typeof(CustomHashSetSerializer<string, ComponentNameSerializer>))]
|
||||
public HashSet<string> ConvertedRoles;
|
||||
|
||||
[DataField(required: true)]
|
||||
public HashSet<ProtoId<NpcFactionPrototype>> ConversionSourceFactions;
|
||||
|
||||
[DataField(required: true)]
|
||||
public float TargetFraction;
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
using Content.Shared.Mind.Components;
|
||||
using Content.Shared.NPC.Components;
|
||||
using Content.Shared.NPC.Systems;
|
||||
using Content.Shared.Objectives.Components;
|
||||
using Content.Shared.Roles;
|
||||
|
||||
namespace Content.Shared._DV.Uprising;
|
||||
|
||||
public sealed class CrewConversionObjectiveSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly NpcFactionSystem _npcFaction = default!;
|
||||
[Dependency] private readonly SharedRoleSystem _role = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<CrewConversionObjectiveComponent, ObjectiveGetProgressEvent>(OnGetProgress);
|
||||
}
|
||||
|
||||
private void OnGetProgress(Entity<CrewConversionObjectiveComponent> ent, ref ObjectiveGetProgressEvent args)
|
||||
{
|
||||
var total = 0;
|
||||
var counted = 0;
|
||||
|
||||
var query = AllEntityQuery<MindContainerComponent, NpcFactionMemberComponent>();
|
||||
while (query.MoveNext(out var uid, out var mind, out var faction))
|
||||
{
|
||||
if (mind.Mind is not { } mindUid)
|
||||
continue;
|
||||
|
||||
if (!_npcFaction.IsMemberOfAny((uid, faction), ent.Comp.ConversionSourceFactions))
|
||||
continue;
|
||||
|
||||
total++;
|
||||
|
||||
foreach (var role in ent.Comp.ConvertedRoles)
|
||||
{
|
||||
if (!EntityManager.ComponentFactory.TryGetRegistration(role, out var roleReg))
|
||||
{
|
||||
Log.Error($"Role component not found for CrewConversionObjective: {role}");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!_role.MindHasRole(mindUid, roleReg.Type, out _))
|
||||
continue;
|
||||
|
||||
counted++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (total == 0)
|
||||
return;
|
||||
|
||||
args.Progress = ((float)counted / (float)total) / ent.Comp.TargetFraction;
|
||||
}
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
namespace Content.Shared._DV.Uprising;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class UprisingArmRequiredObjectiveComponent : Component;
|
||||
@@ -1,10 +0,0 @@
|
||||
using Content.Shared.DoAfter;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared._DV.Uprising;
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed partial class UprisingDisarmDoAfter : SimpleDoAfterEvent;
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed partial class UprisingArmDoAfter : SimpleDoAfterEvent;
|
||||
@@ -1,10 +0,0 @@
|
||||
using Content.Shared._DV.Roles;
|
||||
|
||||
namespace Content.Shared._DV.Uprising;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class UprisingVictoryObjectiveComponent : Component
|
||||
{
|
||||
[DataField(required: true)]
|
||||
public UprisingSide Side;
|
||||
}
|
||||
@@ -1,37 +1,4 @@
|
||||
Entries:
|
||||
- author: ShepardToTheStars
|
||||
changes:
|
||||
- message: All syndicate cyborg ghost roles now spawn with a neuroling rather than
|
||||
a positronic brain.
|
||||
type: Tweak
|
||||
id: 1937
|
||||
time: '2025-12-08T15:33:15.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/4913
|
||||
- author: ShepardToTheStars
|
||||
changes:
|
||||
- message: Feroxi now can sense containers and puddles of blood, and people who
|
||||
are bleeding, except Diona and Slime people, since they bleed sap and slime
|
||||
respectively (and that's not blood!).
|
||||
type: Add
|
||||
id: 1938
|
||||
time: '2025-12-08T15:34:22.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/4902
|
||||
- author: verybigman311
|
||||
changes:
|
||||
- message: Plastic is now obtainable from deconstructing a reinforced tinted window.
|
||||
type: Fix
|
||||
id: 1939
|
||||
time: '2025-12-08T19:34:23.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/4918
|
||||
- author: MantasDab360
|
||||
changes:
|
||||
- message: Ninja visor now has Night Vision!
|
||||
type: Add
|
||||
- message: Ninja Hardsuit is now fully Ion resistant!
|
||||
type: Tweak
|
||||
id: 1940
|
||||
time: '2025-12-09T16:44:47.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/4916
|
||||
- author: snowywinters
|
||||
changes:
|
||||
- message: Station AI can now use traffic comms. Your secrets are no longer safe.
|
||||
@@ -4396,4 +4363,35 @@
|
||||
id: 2437
|
||||
time: '2026-06-20T10:46:03.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/5896
|
||||
- author: einknusprigestoast
|
||||
changes:
|
||||
- message: Added CentCom laser turrets + controls
|
||||
type: Add
|
||||
id: 2438
|
||||
time: '2026-06-20T14:20:04.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6069
|
||||
- author: sowelipililimute
|
||||
changes:
|
||||
- message: NanoChat now uses the same methods as the radio system to determine reachability.
|
||||
In other words, cross-grid NanoChat works now.
|
||||
type: Tweak
|
||||
id: 2439
|
||||
time: '2026-06-20T14:24:36.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6057
|
||||
- author: RoboBozu, SalDragonsNOA
|
||||
changes:
|
||||
- message: NanoTrasen corporate has decided to celebrate the increased productivity
|
||||
of the Delta Sector with ice cream! Recipes for various frozen treats have been
|
||||
added to Bartenders' handbooks to facilitate the celebration!
|
||||
type: Add
|
||||
id: 2440
|
||||
time: '2026-06-20T15:02:14.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/5943
|
||||
- author: einknusprigestoast
|
||||
changes:
|
||||
- message: Removed DeathSquad
|
||||
type: Remove
|
||||
id: 2441
|
||||
time: '2026-06-20T17:14:12.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6049
|
||||
Order: 1
|
||||
|
||||
@@ -97,3 +97,13 @@ flavor-base-awful = awful
|
||||
candy-flavor-profile = This one is supposed to taste {$flavor}.
|
||||
candy-flavor-profile-multiple = This one is supposed to taste {$flavors} and {$lastFlavor}.
|
||||
candy-flavor-profile-unknown = You have no idea what this one is supposed to taste like.
|
||||
|
||||
flavor-complex-tart = tart
|
||||
flavor-complex-icecream-apple-caramel = like apple pie
|
||||
flavor-complex-icecream-caramel-fudge = like a liquid caramel brownie
|
||||
flavor-complex-icecream-cobbler = a dessert with a tasty idenity crisis
|
||||
flavor-complex-icecream-cookiedough = like a weekend at grandma's
|
||||
flavor-complex-icecream-neapolitan = like chocolate, vanillia, and cherry
|
||||
flavor-complex-icecream-rockyroad = like a bumpy highway
|
||||
flavor-complex-icecream-tower = like a tower of power
|
||||
flavor-complex-sherbert-rainbow = like a rainbow of flavors
|
||||
|
||||
@@ -41,3 +41,5 @@ guide-entry-cargo = Logistics
|
||||
guide-entry-frequently-used-chemicals = Frequently Used Chemicals
|
||||
|
||||
guide-entry-deepfried-recipes = Deep-Fried
|
||||
|
||||
guide-entry-frozentreat-recipes = Frozen Treats
|
||||
|
||||
@@ -7,7 +7,3 @@ role-subtype-armsdealer = Arms Dealer
|
||||
role-subtype-asakim = Asakim
|
||||
role-subtype-ntagent = NTAgent
|
||||
role-subtype-hitman = Hitman
|
||||
role-subtype-head-loyalist = Head Loyalist
|
||||
role-subtype-loyalist = Loyalist
|
||||
role-subtype-head-insurgent = Head Insurgent
|
||||
role-subtype-insurgent = Insurgent
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
reagent-name-caramel = caramel
|
||||
reagent-desc-caramel = A sweet, smooth mixture created from heated sugar.
|
||||
|
||||
reagent-name-icecream-caramel = caramel ice cream
|
||||
reagent-desc-icecream-caramel = Sweet, salty, and creamy!
|
||||
|
||||
reagent-name-chopped-nuts = chopped nuts
|
||||
reagent-desc-chopped-nuts = Delicious nuts packed with protien. Much more mixable.
|
||||
|
||||
reagent-name-icecream-apple-caramel = apple caramel ice cream
|
||||
reagent-desc-icecream-apple-caramel = Nothing goes together like caramel, apples, and ice cream.
|
||||
|
||||
reagent-name-icecream-caramel-fudge = caramel fudge ice cream
|
||||
reagent-desc-icecream-caramel-fudge = A deep, rich flavor with caramel to lighten it up!
|
||||
|
||||
reagent-name-icecream-cherry = cherry ice cream
|
||||
reagent-desc-icecream-cherry = Just as sweet as strawberry!
|
||||
|
||||
reagent-name-icecream-chocolate = chocolate ice cream
|
||||
reagent-desc-icecream-chocolate = A classic staple only few can enjoy.
|
||||
|
||||
reagent-name-icecream-cobbler = berry cobbler ice cream
|
||||
reagent-desc-icecream-cobbler = It's a cobbler that got crammed into ice cream which is crammed into a glass.
|
||||
|
||||
reagent-name-icecream-coffee = coffee ice cream
|
||||
reagent-desc-icecream-coffee = A cold pick-me-up.
|
||||
|
||||
reagent-name-icecream-cookiedough = cookie dough ice cream
|
||||
reagent-desc-icecream-cookiedough = A chunky ice cream covered in edible cookie dough!
|
||||
|
||||
reagent-name-icecream-greentea = green tea ice cream
|
||||
reagent-desc-icecream-greentea = A refreshing and soothing dessert.
|
||||
|
||||
reagent-name-icecream-mint = mint ice cream
|
||||
reagent-desc-icecream-mint = Based on the classic mint ice cream with faux chocolate.
|
||||
|
||||
reagent-name-icecream-neapolitan = neapolitan Ice Cream
|
||||
reagent-desc-icecream-neapolitan = An ice cream so simple no one knows its true origins.
|
||||
|
||||
reagent-name-icecream-pistachio = pistachio ice cream
|
||||
reagent-desc-icecream-pistachio = For the real ice cream nuts.
|
||||
|
||||
reagent-name-icecream-rockyroad = rocky road ice cream
|
||||
reagent-desc-icecream-rockyroad = It's an ice cream with a rough texture and rich flavor.
|
||||
|
||||
reagent-name-icecream-tower = tower of ice cream
|
||||
reagent-desc-icecream-tower = Babel has met its match.
|
||||
|
||||
reagent-name-icecream-vegan = vegan ice cream
|
||||
reagent-desc-icecream-vegan = A soy-based ice cream with no animal products.
|
||||
|
||||
reagent-name-icecream-watermelon = watermelon ice cream
|
||||
reagent-desc-icecream-watermelon = The taste of a refreshing Summer in one glass.
|
||||
|
||||
reagent-name-sherbet-rainbow = rainbow sherbet
|
||||
reagent-desc-sherbet-rainbow = The titan of sherbets.
|
||||
|
||||
reagent-name-sherbet-lemon = lemon sherbet
|
||||
reagent-desc-sherbet-lemon = The classic sweet, tart, and sour fruit now really cold.
|
||||
|
||||
reagent-name-sherbet-lime = lime sherbet
|
||||
reagent-desc-sherbet-lime = Lemon sherbert's little brother.
|
||||
|
||||
reagent-name-sherbet-orange = orange sherbet
|
||||
reagent-desc-sherbet-orange = Orange you glad its sherbet?
|
||||
|
||||
reagent-name-sherbet-pineapple = pineapple sherbet
|
||||
reagent-desc-sherbet-pineapple = Not only does it look like a vaction, it taste like it too.
|
||||
|
||||
reagent-name-sherbet-raspberry = raspberry sherbert
|
||||
reagent-desc-sherbet-raspberry = Give them the old razzle dazzle!
|
||||
|
||||
reagent-name-slush-blue-raspberry = blue raspberry slush
|
||||
reagent-desc-slush-blue-raspberry = You can feel your teeth chattering.
|
||||
|
||||
reagent-name-slush-cherry = cherry slush
|
||||
reagent-desc-slush-cherry = While it's rumored to be red, it's typically white.
|
||||
|
||||
reagent-name-slush-cola = cola slush
|
||||
reagent-desc-slush-cola = Space cola in the form of a brain freeze.
|
||||
|
||||
reagent-name-tropical-sunday = tropical sunday
|
||||
reagent-desc-tropical-sunday = Kick back and relax.
|
||||
@@ -0,0 +1,98 @@
|
||||
ert-amber-gun-name-patos = Patos bundle
|
||||
ert-amber-gun-desc-patos = A one-handed submachinegun that punches above its weight. Keep your small magazine capacity in mind.
|
||||
|
||||
ert-amber-gun-name-aegun = Advanced energy gun
|
||||
ert-amber-gun-desc-aegun = One advanced energy gun, for both lethal and non-lethal engagments.
|
||||
|
||||
ert-amber-gun-name-mixlaser = Mixed Laser bundle
|
||||
ert-amber-gun-desc-mixlaser = A disabler SMG together with a Laser Carbine, bundled with a portable recharger.
|
||||
|
||||
ert-medkit-name = First aid kit
|
||||
ert-medkit-desc = A simple first aid kit, dont get shoot too hard.
|
||||
|
||||
ert-brutekit-name = Brute kit
|
||||
ert-brutekit-desc = A brute kit, dont get shot with lasers.
|
||||
|
||||
ert-drozdkit-name = Drozd bundle
|
||||
ert-drozdkit-desc = A heavy submachinegun bundled with different ammo types, a NanoTrasen armaments classic.
|
||||
|
||||
ert-lecterkit-name = Lecter bundle
|
||||
ert-lecterbundle-desc = A high-grade assault rifle packaged with a handful of magazines, precise and packs a punch, but quite bulky.
|
||||
|
||||
ert-IK30kit-name = IK-30 bundle
|
||||
ert-IK30kit-desc = A magazine fed energy weapon packaged with a handful of magazines, for when recharging your energy gun is not an option.
|
||||
|
||||
ert-AutoInjectorLight-name = Auto Injectors
|
||||
ert-AutoInjectorLight-desc = A handful of Autoinjectors and a roll of Gauze for bad days.
|
||||
|
||||
ert-AdvancedTopicals-name = Advanced Topicals
|
||||
ert-AdvancedTopicals-desc = Sutures, Mesh and Bloodbags. A lot of Sutures, Mesh and Bloodbags.
|
||||
|
||||
ert-CombatMedkit-name = Combat Medkit
|
||||
ert-CombatMedkit-desc = A combat medkit, should get you through a gunfight or two.
|
||||
|
||||
ert-LeaderRedOfficer-name = Officers Bundle
|
||||
ert-LeaderRedOfficer-desc = A kit containing a Universal Handgun, a Advanced Laser Pistol and a trench whistle. AVANTI!
|
||||
|
||||
ert-LeaderRedColdCannon-name = I.C.E.E bundle
|
||||
ert-LeaderRedColdCannon-desc = A I.C.E.E cannon bundled together with a portable recharger.
|
||||
|
||||
ert-LeaderRedWT-name = WT550 bundle
|
||||
ert-LeaderRedWT-desc = The classic WT550 submachinegun, bundled together with a few magazines and two telescopic shields.
|
||||
|
||||
ert-enforcerkit-name = Enforcer bundle
|
||||
ert-enforcerkit-desc = A Enforcer bundled with 3 boxes of buckshot.
|
||||
|
||||
ert-GammaOfficer-name = Officers Bundle
|
||||
ert-GammaOfficer-desc = A kit containing a N1984 and a trench whistle. "Retreat? We just got here"
|
||||
|
||||
ert-GammaLeaderAntelope-name = Antelope bundle
|
||||
ert-GammaLeaderAntelope-desc = A bundle containing a Antelope automatic shotgun and 5 drums to feed it with. Ration your ammo carefully.
|
||||
|
||||
ert-LeaderAtrides-name = Atreides Bundle
|
||||
ert-LeaderAtrides-desc = A Atreides bundled together with two telescopic shields and 5 magazines.
|
||||
|
||||
ert-GammaPulseRifle-name = Pulse Rifle
|
||||
ert-GammaPulseRifle-desc = A singular pulse rifle. Corporate asks you to not take this option.
|
||||
|
||||
ert-GammaSecCombatkit-name = Combat Medkit bundle
|
||||
ert-GammaSecCombatkit-desc = A Combat Medkit bundled together with some additional auto-injectors.
|
||||
|
||||
ert-GammaSecStimkit-name = Stimulant bundle
|
||||
ert-GammaSecStimkit-desc = A jetinjector bundled together with 2 bottles of Ephedrine and one bottle of Omnizine. Dont ask about the legality
|
||||
|
||||
ert-GammaSecliquidkit-name = Liquid medicine bundle
|
||||
ert-GammaSecliquidkit-desc = A jetinjector bundled together with a box full of highly fragile medicine bottles.
|
||||
|
||||
ert-GammaWTkit-name = WT550 bundle
|
||||
ert-GammaWTkit-desc = The classic WT550 bundled together with 5 magazines and 2 telescopic shields.
|
||||
|
||||
ert-enforcerkitspecial-name = Enforcer bundle
|
||||
ert-enforcerkitspecial-desc = An Enforcer bundled together with buckshot, incendiary shells and uranium ammunition.
|
||||
|
||||
ert-Immolatorkit-name = Immolator bundle
|
||||
ert-Immolatorkit-desc = The original firestarter bundled together with a portable recharger and an energy gun.
|
||||
|
||||
ert-IK60kit-name = IK-60 bundle
|
||||
ert-IK60kit-desc = IK-60-M bundled together with 4 Laser magazines. Watch your ammo consumption.
|
||||
|
||||
ert-GammaC4-name = C4 box
|
||||
ert-GammaC4-desc = 4 timed charges of plastic breaching explosives.
|
||||
|
||||
ert-GammaThermals-name = Special Forces gasmask
|
||||
ert-GammaThermals-desc = A gasmask with both a thermal and a nightvision lense.
|
||||
|
||||
ert-GammaJets-name = Jetpack bundle
|
||||
ert-GammaJets-desc = A jetpack bundle containing a handheld mass scanner, a better cell for it and a pair of pocket breathinggastanks.
|
||||
|
||||
ert-GammaNadesHE-name = Explosive grenades
|
||||
ert-GammaNadesHE-desc = Three explosive grenades for the usage against soft targets.
|
||||
|
||||
ert-GammaSmokes-name = Smoke grenades
|
||||
ert-GammaSmokes-desc = Three smoke grenades to obscure vision.
|
||||
|
||||
ert-GammaIncend-name = Incendiary grenades
|
||||
ert-GammaIncend-desc = Two Incendiary grenades. Keep in mind your suit protects less against these.
|
||||
|
||||
ert-GammaEMP-name = Electro Magnetic Pulse Grenades
|
||||
ert-GammaEMP-desc = A pair of EMP grenades, incase you have to disable Cyborgs or Lasers.
|
||||
@@ -1,41 +0,0 @@
|
||||
uprising-announcement-nuke-announcement = Automated risk management systems have flagged your station as posing a threat to NanoTrasen. Contracts will be terminated in {$time} minutes unless the situation resolves.
|
||||
uprising-announcement-first-warning = Automated risk management systems still continue to flag your station as posing a threat to NanoTrasen. Please intervene within {$time} minutes.
|
||||
uprising-announcement-impending-warning = Automated risk management systems have initiated a task in the contract termination subsystem for your station. The decision will be rendered final in {$time} minutes.
|
||||
uprising-announcement-final-warning = Contract termination will begin in {$time} minutes.
|
||||
uprising-announcement-nuke-armed = Attention! The threat to NanoTrasen will be eliminated using the station's self-destruct mechanism {$location}. {$time} seconds until detonation. Glory to NanoTrasen!
|
||||
|
||||
uprising-announcement-start-victory-announcement-Insurgent =
|
||||
Viva la revolución! Station hijacking measures have been initiated {$location} and will complete in {$time} seconds. Do not resist, your liberation will come.
|
||||
|
||||
.sender = Insurgent Communications
|
||||
.color = DarkSalmon
|
||||
|
||||
uprising-announcement-start-victory-announcement-Loyalist =
|
||||
The station is loyal to NanoTrasen. Transmission to Central Command has been initiated {$location} and will complete in {$time} seconds. Glory to NanoTrasen!
|
||||
|
||||
.sender = Loyalist Communications
|
||||
.color = CornflowerBlue
|
||||
|
||||
uprising-announcement-victory-announcement-Insurgent =
|
||||
Viva viva la revolución! The station belongs to the masses now.
|
||||
|
||||
.sender = Insurgent Communications
|
||||
.color = DarkSalmon
|
||||
|
||||
uprising-announcement-victory-announcement-Loyalist =
|
||||
Automated risk management systems have no longer deemed your station a threat to NanoTrasen. Contracts will be retained.
|
||||
|
||||
.sender = Central Command
|
||||
.color = Gold
|
||||
|
||||
uprising-announcement-interrupted-victory-announcement-Insurgent =
|
||||
Station hijacking measures have been interrupted.
|
||||
|
||||
.sender = Insurgent Communications
|
||||
.color = DarkSalmon
|
||||
|
||||
uprising-announcement-interrupted-victory-announcement-Loyalist =
|
||||
Transmission to Central Command has been interrupted.
|
||||
|
||||
.sender = Loyalist Communications
|
||||
.color = CornflowerBlue
|
||||
@@ -1,22 +0,0 @@
|
||||
antag-HeadLoyalist =
|
||||
.name = Head Loyalist
|
||||
.objective = Protect the interests of NanoTrasen against the insurgents.
|
||||
.greeting =
|
||||
You are a Head Loyalist.
|
||||
Protect all of Command, get the crew on your side and declare the station's loyalty.
|
||||
|
||||
antag-Loyalist =
|
||||
.issuer = Loyalty
|
||||
.briefing = Protect all of Command, get the crew on your side and declare the station's loyalty.
|
||||
|
||||
antag-HeadInsurgent =
|
||||
.name = Head Insurgent
|
||||
.objective = Rebel against NanoTrasen. Down with the bourgeoisie!
|
||||
.greeting =
|
||||
You are a Head Insurgent.
|
||||
Assassinate, capture or convert all of Command and take over the station.
|
||||
Viva la revolución!
|
||||
|
||||
antag-Insurgent =
|
||||
.issuer = Insurgency
|
||||
.briefing = Assassinate, capture or convert all of Command and take over the station.
|
||||
@@ -1 +0,0 @@
|
||||
uprising-conversion-join-side = Press again to switch sides.
|
||||
@@ -1,3 +0,0 @@
|
||||
preset-Uprising =
|
||||
.title = Uprising
|
||||
.description = The crew is at odds with each other.
|
||||
@@ -1,16 +0,0 @@
|
||||
uprising-outcome-none = The station was scuttled by NanoTrasen, and neither side could stop it in time.
|
||||
uprising-outcome-Insurgent-full = The station was taken over by the insurgents. Viva la revolución!
|
||||
uprising-outcome-Insurgent-partial = The insurgents were in the middle of taking over the station, but it was too late.
|
||||
uprising-outcome-Loyalist-full = The station managed to prove its loyalty to NanoTrasen. Glory to NanoTrasen!
|
||||
uprising-outcome-Loyalist-partial = The loyalists were in the middle of proving the station's loyalty to NanoTrasen, but it was too late.
|
||||
uprising-leads = Our leads for this round were:
|
||||
uprising-leads-user =
|
||||
.Insurgent = - [color=white]{$name}[/color], a [color=DarkSalmon]Head Insurgent[/color] played by {$user}
|
||||
.Loyalist = - [color=white]{$name}[/color], a [color=CornflowerBlue]Head Loyalist[/color] played by {$user}
|
||||
.Unknown = - [color=white]{$name}[/color], played by {$user}
|
||||
|
||||
uprising-members =
|
||||
.Insurgent = Our [color=DarkSalmon]Insurgent[/color]s were:
|
||||
.Loyalist = Our [color=CornflowerBlue]Loyalist[/color]s were:
|
||||
|
||||
uprising-members-user = - [color=white]{$name}[/color], played by {$user}
|
||||
@@ -1,15 +0,0 @@
|
||||
admin-verb-make-HeadInsurgent =
|
||||
.text = Make Head Insurgent
|
||||
.message = Makes the target into a Head Insurgent
|
||||
|
||||
admin-verb-make-HeadLoyalist =
|
||||
.text = Make Head Loyalist
|
||||
.message = Makes the target into a Head Loyalist
|
||||
|
||||
uprising-disarm-verb =
|
||||
.Insurgent = Stop Hijacking
|
||||
.Loyalist = Stop Transmission
|
||||
|
||||
uprising-arm-verb =
|
||||
.Insurgent = Start Hijacking
|
||||
.Loyalist = Start Transmission
|
||||
@@ -14,10 +14,12 @@
|
||||
ClothingUniformNightclubSuit: 2 #imp
|
||||
ClothingUniformNightclubSuitSkirt: 2 #imp
|
||||
ClothingUniformJumpsuitBartenderPurple: 2
|
||||
ClothingUniformJumpsuitSodaJerk: 2 # DeltaV
|
||||
ClothingShoesColorBlack: 2
|
||||
ClothingOuterArmorDuraVest: 2 # DeltaV - ClothingOuterArmorBasicSlim replaced in favour of stabproof vest
|
||||
ClothingOuterVest: 2
|
||||
ClothingBeltBandolier: 2
|
||||
ClothingEyesGlassesSunglasses: 2
|
||||
ClothingHeadHatSodaJerkCap: 2 # DeltaV
|
||||
contrabandInventory:
|
||||
ToyFigurineBartender: 1
|
||||
|
||||
@@ -46,11 +46,15 @@
|
||||
DrinkJaegermisterBottleFull: 5 # Den - Jaegerminsteeeer!
|
||||
DrinkWineBottleFull: 5
|
||||
DrinkChampagneBottleFull: 2 #because the premium drink
|
||||
DrinkSojuBottleFull: 2 # DeltaV - Soju bottle
|
||||
DrinkSakeBottleFull: 3
|
||||
DrinkBeerCan: 5
|
||||
DrinkWineCan: 5
|
||||
DrinkAngobittersBottleFull: 3 # DeltaV - Angostura Bitters Bottle
|
||||
# Begin DeltaV additions
|
||||
DrinkSojuBottleFull: 2 # Soju bottle
|
||||
DrinkAngobittersBottleFull: 3 # Angostura Bitters Bottle
|
||||
DrinkCaramelBottleFull: 3 # Caramel for ice cream stuff
|
||||
GlassChoppedNuts: 5 # Metaglass of chopped nuts; Here as a stop-gap until we make pistachios growable
|
||||
# End DeltaV additions
|
||||
contrabandInventory:
|
||||
ChemistryBottleEthanol: 3
|
||||
DrinkBottleOfNothingFull: 1
|
||||
|
||||
@@ -716,7 +716,6 @@
|
||||
- type: GuideHelp # DeltaV guide
|
||||
guides:
|
||||
- AlertProcedure
|
||||
- type: UprisingConsole # DeltaV - uprising
|
||||
|
||||
- type: entity
|
||||
parent: ComputerComms
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
name: guide-entry-drinks
|
||||
text: "/ServerInfo/Guidebook/ReferenceTables/Drinks.xml"
|
||||
filterEnabled: true
|
||||
children: # DeltaV - Adding section for our new ice cream catalog to make it easier to search
|
||||
- FrozenTreats
|
||||
|
||||
- type: guideEntry
|
||||
id: FoodRecipes
|
||||
|
||||
@@ -447,6 +447,7 @@
|
||||
loadouts:
|
||||
- BartenderHead
|
||||
- BartenderBowler
|
||||
- SodaJerkCap #DeltaV - Adding retro style outfit for ice cream connoisseurs
|
||||
|
||||
- type: loadoutGroup
|
||||
id: BartenderJumpsuit
|
||||
@@ -461,6 +462,7 @@
|
||||
- ClothingUniformSeniorBartender
|
||||
- ClothingUniformSeniorBartenderSkirt
|
||||
# End Imp additions
|
||||
- SodaJerkUniform #DeltaV - Adding retro style outfit for ice cream connoisseurs
|
||||
|
||||
- type: loadoutGroup
|
||||
id: BartenderOuterClothing
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
- type: entity
|
||||
abstract: true
|
||||
parent: BaseAction
|
||||
id: ActionUprisingOfferConversion
|
||||
name: Offer Conversion
|
||||
description: Offer to let someone join your side.
|
||||
components:
|
||||
- type: Action
|
||||
useDelay: 30
|
||||
itemIconStyle: NoItem
|
||||
icon:
|
||||
sprite: _DV/Misc/uprising.rsi
|
||||
state: conversion
|
||||
- type: TargetAction
|
||||
- type: EntityTargetAction
|
||||
whitelist:
|
||||
components:
|
||||
- HumanoidAppearance
|
||||
|
||||
- type: entity
|
||||
parent: ActionUprisingOfferConversion
|
||||
id: ActionLoyalistOfferConversion
|
||||
components:
|
||||
- type: EntityTargetAction
|
||||
event: !type:ConversionOfferActionEvent
|
||||
incompatibleMindRoleTypes:
|
||||
- Content.Shared._DV.Roles.LoyalistRoleComponent
|
||||
- Content.Shared._DV.Roles.UprisingInconvertibleRoleComponent
|
||||
acceptAction: ActionLoyalistAcceptConversion
|
||||
|
||||
- type: entity
|
||||
parent: ActionUprisingOfferConversion
|
||||
id: ActionInsurgentOfferConversion
|
||||
components:
|
||||
- type: EntityTargetAction
|
||||
event: !type:ConversionOfferActionEvent
|
||||
incompatibleMindRoleTypes:
|
||||
- Content.Shared._DV.Roles.InsurgentRoleComponent
|
||||
- Content.Shared._DV.Roles.UprisingInconvertibleRoleComponent
|
||||
acceptAction: ActionInsurgentAcceptConversion
|
||||
|
||||
- type: entity
|
||||
abstract: true
|
||||
parent: BaseAction
|
||||
id: ActionUprisingAcceptConversion
|
||||
name: Join Side
|
||||
description: Join the side of whoever's trying to recruit you. You can only do this for 30 seconds after being offered.
|
||||
components:
|
||||
- type: Action
|
||||
itemIconStyle: NoItem
|
||||
icon:
|
||||
sprite: _DV/Misc/uprising.rsi
|
||||
state: conversion_question
|
||||
- type: InstantAction
|
||||
- type: ConfirmableAction
|
||||
popup: uprising-conversion-join-side
|
||||
- type: ESTimedDespawn
|
||||
lifetime: 30
|
||||
- type: DeleteOnPerformedAction
|
||||
|
||||
- type: entity
|
||||
parent: ActionUprisingAcceptConversion
|
||||
id: ActionInsurgentAcceptConversion
|
||||
components:
|
||||
- type: InstantAction
|
||||
event: !type:ConversionAcceptActionEvent
|
||||
mindRole: MindRoleInsurgent
|
||||
removeMindRole: MindRoleLoyalist
|
||||
|
||||
- type: entity
|
||||
parent: ActionUprisingAcceptConversion
|
||||
id: ActionLoyalistAcceptConversion
|
||||
components:
|
||||
- type: InstantAction
|
||||
event: !type:ConversionAcceptActionEvent
|
||||
mindRole: MindRoleLoyalist
|
||||
removeMindRole: MindRoleInsurgent
|
||||
@@ -0,0 +1,428 @@
|
||||
- type: thiefBackpackSet
|
||||
id: ERTPatosBundle
|
||||
name: ert-amber-gun-name-patos
|
||||
description: ert-amber-gun-desc-patos
|
||||
sprite:
|
||||
sprite: _DV/Objects/Weapons/Guns/SMGs/patos.rsi
|
||||
state: icon
|
||||
content:
|
||||
- WeaponSubMachineGunPatos
|
||||
- MagazinePistolHighCapacity
|
||||
- MagazinePistolHighCapacity
|
||||
- MagazinePistolHighCapacity
|
||||
- MagazinePistolHighCapacity
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTaegunBundle
|
||||
name: ert-amber-gun-name-aegun
|
||||
description: ert-amber-gun-desc-aegun
|
||||
sprite:
|
||||
sprite: _DV/Objects/Weapons/Guns/Battery/energygunadvanced.rsi
|
||||
state: icon
|
||||
content:
|
||||
- WeaponEnergyGunAdvanced
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTmixlaserBundle
|
||||
name: ert-amber-gun-name-mixlaser
|
||||
description: ert-amber-gun-desc-mixlaser
|
||||
sprite:
|
||||
sprite: Objects/Weapons/Guns/Battery/laser_gun.rsi
|
||||
state: icon
|
||||
content:
|
||||
- WeaponLaserCarbine
|
||||
- WeaponDisablerSMG
|
||||
- PortableRecharger
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTMedkit
|
||||
name: ert-medkit-name
|
||||
description: ert-medkit-desc
|
||||
sprite:
|
||||
sprite: Objects/Specific/Medical/firstaidkits.rsi
|
||||
state: firstaid
|
||||
content:
|
||||
- MedkitFilled
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTBrutekit
|
||||
name: ert-brutekit-name
|
||||
description: ert-brutekit-desc
|
||||
sprite:
|
||||
sprite: Objects/Specific/Medical/firstaidkits.rsi
|
||||
state: brutekit
|
||||
content:
|
||||
- MedkitBruteFilled
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTLecterkit
|
||||
name: ert-lecterkit-name
|
||||
description: ert-lecterbundle-desc
|
||||
sprite:
|
||||
sprite: _DV/Objects/Weapons/Guns/Rifles/lecter.rsi
|
||||
state: icon
|
||||
content:
|
||||
- WeaponRifleLecter
|
||||
- MagazineRifle
|
||||
- MagazineRifle
|
||||
- MagazineRifle
|
||||
- MagazineRifle
|
||||
- MagazineRifle
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTDrozdkit
|
||||
name: ert-drozdkit-name
|
||||
description: ert-drozdkit-desc
|
||||
sprite:
|
||||
sprite: _DV/Objects/Weapons/Guns/SMGs/drozd.rsi
|
||||
state: icon
|
||||
content:
|
||||
- WeaponSubMachineGunDrozd
|
||||
- MagazinePistolSubMachineGun
|
||||
- MagazinePistolSubMachineGun
|
||||
- MagazinePistolSubMachineGunRubber
|
||||
- MagazinePistolSubMachineGunRubber
|
||||
- MagazinePistolSubMachineGunUranium
|
||||
- MagazinePistolSubMachineGunUranium
|
||||
- MagazinePistolSubMachineGunUranium
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTLaserIK30kit
|
||||
name: ert-IK30kit-name
|
||||
description: ert-IK30kit-desc
|
||||
sprite:
|
||||
sprite: _DV/Objects/Weapons/Guns/Rifles/lasercarbine.rsi
|
||||
state: icon
|
||||
content:
|
||||
- WeaponRifleLaser
|
||||
- MagazineLaser
|
||||
- MagazineLaser
|
||||
- MagazineLaser
|
||||
- MagazineLaser
|
||||
- MagazineLaser
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTEnforcerkit
|
||||
name: ert-enforcerkit-name
|
||||
description: ert-enforcerkit-desc
|
||||
sprite:
|
||||
sprite: _DV/Objects/Weapons/Guns/Shotguns/enforcer.rsi
|
||||
state: icon
|
||||
content:
|
||||
- WeaponShotgunEnforcer
|
||||
- BoxLethalshot
|
||||
- BoxLethalshot
|
||||
- BoxLethalshot
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTCombatMedkit
|
||||
name: ert-CombatMedkit-name
|
||||
description: ert-CombatMedkit-desc
|
||||
sprite:
|
||||
sprite: Objects/Specific/Medical/firstaidkits.rsi
|
||||
state: blackkit
|
||||
content:
|
||||
- MedkitCombatFilled
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTAutoInjectorLight
|
||||
name: ert-AutoInjectorLight-name
|
||||
description: ert-AutoInjectorLight-desc
|
||||
sprite:
|
||||
sprite: Objects/Specific/Medical/medipen.rsi
|
||||
state: punctpen
|
||||
content:
|
||||
- BurnAutoInjector
|
||||
- BurnAutoInjector
|
||||
- PunctAutoInjector
|
||||
- PunctAutoInjector
|
||||
- Gauze
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTAdvancedTopicals
|
||||
name: ert-AdvancedTopicals-name
|
||||
description: ert-AdvancedTopicals-desc
|
||||
sprite:
|
||||
sprite: Objects/Specific/Medical/firstaidkits.rsi
|
||||
state: advkit
|
||||
content:
|
||||
- MedicatedSuture
|
||||
- RegenerativeMesh
|
||||
- MedkitAdvancedFilled
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTLeaderOfficerRed
|
||||
name: ert-LeaderRedOfficer-name
|
||||
description: ert-LeaderRedOfficer-desc
|
||||
sprite:
|
||||
sprite: _DV/Objects/Weapons/Guns/Pistols/universal.rsi
|
||||
state: icon
|
||||
content:
|
||||
- WeaponPistolUniversal
|
||||
- SyndicateWhistle
|
||||
- MagazineUniversalMagnum
|
||||
- MagazineUniversalMagnum
|
||||
- MagazineUniversalMagnum
|
||||
- WeaponAdvancedLaser
|
||||
- Binoculars
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTLeaderWTRed
|
||||
name: ert-LeaderRedWT-name
|
||||
description: ert-LeaderRedWT-desc
|
||||
sprite:
|
||||
sprite: Objects/Weapons/Guns/SMGs/wt550.rsi
|
||||
state: icon
|
||||
content:
|
||||
- WeaponSubMachineGunWt550
|
||||
- MagazinePistolSubMachineGunTopMounted
|
||||
- MagazinePistolSubMachineGunTopMounted
|
||||
- MagazinePistolSubMachineGunTopMounted
|
||||
- MagazinePistolSubMachineGunTopMounted
|
||||
- TelescopicShield
|
||||
- TelescopicShield
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTLeaderColdCannonRed
|
||||
name: ert-LeaderRedColdCannon-name
|
||||
description: ert-LeaderRedColdCannon-desc
|
||||
sprite:
|
||||
sprite: _DV/Objects/Weapons/Guns/Battery/cold_cannon.rsi
|
||||
state: icon
|
||||
content:
|
||||
- WeaponColdCannon
|
||||
- PortableRecharger
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTLeaderGammaAtrides
|
||||
name: ert-LeaderAtrides-name
|
||||
description: ert-LeaderAtrides-desc
|
||||
sprite:
|
||||
sprite: Objects/Weapons/Guns/SMGs/atreides.rsi
|
||||
state: icon
|
||||
content:
|
||||
- WeaponSubMachineGunAtreides
|
||||
- MagazinePistolSubMachineGun
|
||||
- MagazinePistolSubMachineGun
|
||||
- MagazinePistolSubMachineGun
|
||||
- MagazinePistolSubMachineGun
|
||||
- MagazinePistolSubMachineGun
|
||||
- TelescopicShield
|
||||
- TelescopicShield
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTLeaderGammaPulseRifle
|
||||
name: ert-GammaPulseRifle-name
|
||||
description: ert-GammaPulseRifle-desc
|
||||
sprite:
|
||||
sprite: Objects/Weapons/Guns/Battery/pulse_rifle.rsi
|
||||
state: icon
|
||||
content:
|
||||
- WeaponPulseRifle
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTLeaderGammaAntelope
|
||||
name: ert-GammaLeaderAntelope-name
|
||||
description: ert-GammaLeaderAntelope-desc
|
||||
sprite:
|
||||
sprite: _DV/Objects/Weapons/Guns/Shotguns/Antelope.rsi
|
||||
state: icon
|
||||
content:
|
||||
- WeaponShotgunAntelope
|
||||
- MagazineShotgun
|
||||
- MagazineShotgun
|
||||
- MagazineShotgun
|
||||
- MagazineShotgun
|
||||
- MagazineShotgun
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTLeaderOfficerGamma
|
||||
name: ert-GammaOfficer-name
|
||||
description: ert-GammaOfficer-desc
|
||||
sprite:
|
||||
sprite: Objects/Weapons/Guns/Pistols/N1984.rsi
|
||||
state: icon
|
||||
content:
|
||||
- SyndicateWhistle
|
||||
- WeaponPistolN1984
|
||||
- MagazineMagnum
|
||||
- MagazineMagnum
|
||||
- MagazineMagnum
|
||||
- MagazineBoxMagnum
|
||||
- MagazineBoxMagnum
|
||||
- Binoculars
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTGammaSecCombatkit
|
||||
name: ert-GammaSecCombatkit-name
|
||||
description: ert-GammaSecCombatkit-desc
|
||||
sprite:
|
||||
sprite: Objects/Specific/Medical/firstaidkits.rsi
|
||||
state: blackkit
|
||||
content:
|
||||
- MedkitCombatFilled
|
||||
- PunctAutoInjector
|
||||
- PyraAutoInjector
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTGammaSecStimkit
|
||||
name: ert-GammaSecStimkit-name
|
||||
description: ert-GammaSecStimkit-desc
|
||||
sprite:
|
||||
sprite: Objects/Specific/Medical/advanced_jetinjector.rsi
|
||||
state: jetinjector_base
|
||||
content:
|
||||
- AdvancedJetInjector
|
||||
- ChemistryBottleEphedrine
|
||||
- ChemistryBottleEphedrine
|
||||
- ChemistryBottleOmnizine
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTGammaSecChemkit
|
||||
name: ert-GammaSecliquidkit-name
|
||||
description: ert-GammaSecliquidkit-desc
|
||||
sprite:
|
||||
sprite: Objects/Specific/Medical/jetinjector.rsi
|
||||
state: jetinjector_base
|
||||
content:
|
||||
- AdvancedJetInjector
|
||||
- BoxBottleMedicineBasic
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTGammaSecWT
|
||||
name: ert-GammaWTkit-name
|
||||
description: ert-GammaWTkit-desc
|
||||
sprite:
|
||||
sprite: Objects/Weapons/Guns/SMGs/wt550.rsi
|
||||
state: icon
|
||||
content:
|
||||
- WeaponSubMachineGunWt550
|
||||
- MagazinePistolSubMachineGunTopMounted
|
||||
- MagazinePistolSubMachineGunTopMounted
|
||||
- MagazinePistolSubMachineGunTopMounted
|
||||
- MagazinePistolSubMachineGunTopMounted
|
||||
- MagazinePistolSubMachineGunTopMounted
|
||||
- TelescopicShield
|
||||
- TelescopicShield
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTGammaSecEnforcer
|
||||
name: ert-enforcerkitspecial-name
|
||||
description: ert-enforcerkitspecial-desc
|
||||
sprite:
|
||||
sprite: _DV/Objects/Weapons/Guns/Shotguns/enforcer.rsi
|
||||
state: icon
|
||||
content:
|
||||
- WeaponShotgunEnforcer
|
||||
- BoxLethalshot
|
||||
- BoxLethalshot
|
||||
- BoxShotgunUranium
|
||||
- BoxShotgunUranium
|
||||
- BoxShotgunIncendiary
|
||||
- BoxShotgunIncendiary
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTGammaSecImmolator
|
||||
name: ert-Immolatorkit-name
|
||||
description: ert-Immolatorkit-desc
|
||||
sprite:
|
||||
sprite: _DV/Objects/Weapons/Guns/Battery/multi_lens_immolator.rsi
|
||||
state: icon
|
||||
content:
|
||||
- WeaponImmolatorMulti
|
||||
- WeaponEnergyGun
|
||||
- PortableRecharger
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTGammaSecIK60
|
||||
name: ert-IK60kit-name
|
||||
description: ert-IK60kit-desc
|
||||
sprite:
|
||||
sprite: _DV/Objects/Weapons/Guns/Rifles/lasercarbineert.rsi
|
||||
state: icon
|
||||
content:
|
||||
- WeaponRifleLaserERT
|
||||
- MagazineLaser
|
||||
- MagazineLaser
|
||||
- MagazineLaser
|
||||
- MagazineLaser
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTGammaC4
|
||||
name: ert-GammaC4-name
|
||||
description: ert-GammaC4-desc
|
||||
sprite:
|
||||
sprite: Objects/Weapons/Bombs/c4.rsi
|
||||
state: icon
|
||||
content:
|
||||
- BoxC4
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTGammaThermals
|
||||
name: ert-GammaThermals-name
|
||||
description: ert-GammaThermals-desc
|
||||
sprite:
|
||||
sprite: _White/Clothing/Eyes/Goggles/thermal.rsi
|
||||
state: icon
|
||||
content:
|
||||
- ClothingMaskGasDeathSquad
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTGammaJets
|
||||
name: ert-GammaJets-name
|
||||
description: ert-GammaJets-desc
|
||||
sprite:
|
||||
sprite: _DV/Objects/Tanks/Jetpacks/blue.rsi
|
||||
state: icon
|
||||
content:
|
||||
- HandHeldMassScanner
|
||||
- JetpackBlueFilled
|
||||
- PowerCellMicroreactor
|
||||
- DoubleEmergencyOxygenTankFilled
|
||||
- DoubleEmergencyNitrogenTankFilled
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTGammaHE
|
||||
name: ert-GammaNadesHE-name
|
||||
description: ert-GammaNadesHE-desc
|
||||
sprite:
|
||||
sprite: Objects/Weapons/Grenades/grenade.rsi
|
||||
state: icon
|
||||
content:
|
||||
- ExGrenade
|
||||
- ExGrenade
|
||||
- ExGrenade
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTGammaSmoke
|
||||
name: ert-GammaSmokes-name
|
||||
description: ert-GammaSmokes-desc
|
||||
sprite:
|
||||
sprite: Objects/Weapons/Grenades/smoke.rsi
|
||||
state: icon
|
||||
content:
|
||||
- SmokeGrenade
|
||||
- SmokeGrenade
|
||||
- SmokeGrenade
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTGammaIncend
|
||||
name: ert-GammaIncend-name
|
||||
description: ert-GammaIncend-desc
|
||||
sprite:
|
||||
sprite: Objects/Weapons/Grenades/pyrogrenade.rsi
|
||||
state: icon
|
||||
content:
|
||||
- GrenadeIncendiary
|
||||
- GrenadeIncendiary
|
||||
|
||||
- type: thiefBackpackSet
|
||||
id: ERTGammaEMP
|
||||
name: ert-GammaEMP-name
|
||||
description: ert-GammaEMP-desc
|
||||
sprite:
|
||||
sprite: Objects/Weapons/Grenades/empgrenade.rsi
|
||||
state: icon
|
||||
content:
|
||||
- EmpGrenade
|
||||
- EmpGrenade
|
||||
@@ -0,0 +1,81 @@
|
||||
- type: entity
|
||||
id: ClothingBackpackDeathSquadFilledBase
|
||||
parent: ClothingBackpackDeathSquad
|
||||
suffix: Base
|
||||
components:
|
||||
- type: EntityTableContainerFill
|
||||
containers:
|
||||
storagebase: !type:AllSelector
|
||||
children:
|
||||
- id: WelderExperimental
|
||||
- id: ToolDebug
|
||||
- id: Multitool
|
||||
- id: SpeedLoaderMagnum
|
||||
- id: SpeedLoaderMagnum
|
||||
- id: SpeedLoaderMagnum
|
||||
- id: SpeedLoaderMagnum
|
||||
- id: SpeedLoaderMagnum
|
||||
- id: HandHeldMassScanner
|
||||
- id: PinpointerNuclear
|
||||
- id: DoorRemoteCustom
|
||||
|
||||
- type: entity
|
||||
id: ClothingBackpackDeathSquadFilledBlack
|
||||
parent: ClothingBackpackDeathSquad
|
||||
suffix: Black
|
||||
components:
|
||||
- type: EntityTableContainerFill
|
||||
containers:
|
||||
storagebase: !type:AllSelector
|
||||
children:
|
||||
- id: WelderExperimental
|
||||
- id: ToolDebug
|
||||
- id: Multitool
|
||||
- id: SpeedLoaderMagnum
|
||||
- id: SpeedLoaderMagnum
|
||||
- id: SpeedLoaderMagnum
|
||||
- id: SpeedLoaderMagnum
|
||||
- id: SpeedLoaderMagnum
|
||||
- id: HandHeldMassScanner
|
||||
- id: PinpointerNuclear
|
||||
- id: DoorRemoteCustom
|
||||
- id: WeaponPulseRifle
|
||||
- id: ExGrenade
|
||||
- id: ExGrenade
|
||||
- id: ExGrenade
|
||||
- id: ExGrenade
|
||||
- id: ExGrenade
|
||||
- id: BoxC4
|
||||
- id: SpeedLoaderMagnumUranium
|
||||
- id: SpeedLoaderMagnumUranium
|
||||
|
||||
- type: entity
|
||||
id: ClothingBackpackDeathSquadFilledEpsilon
|
||||
parent: ClothingBackpackDeathSquad
|
||||
suffix: Epsilon
|
||||
components:
|
||||
- type: EntityTableContainerFill
|
||||
containers:
|
||||
storagebase: !type:AllSelector
|
||||
children:
|
||||
- id: WelderExperimental
|
||||
- id: ToolDebug
|
||||
- id: Multitool
|
||||
- id: SpeedLoaderMagnum
|
||||
- id: SpeedLoaderMagnum
|
||||
- id: SpeedLoaderMagnum
|
||||
- id: SpeedLoaderMagnum
|
||||
- id: HandHeldMassScanner
|
||||
- id: PinpointerNuclear
|
||||
- id: DoorRemoteCustom
|
||||
- id: WeaponShotgunAntelope
|
||||
- id: MagazineShotgunBeanbag
|
||||
- id: MagazineShotgunBeanbag
|
||||
- id: MagazineShotgunBeanbag
|
||||
- id: MagazineShotgunBeanbag
|
||||
- id: MagazineShotgunBeanbag
|
||||
- id: MagazineShotgunBeanbag
|
||||
- id: BoxHandcuff
|
||||
- id: MagazineShotgun
|
||||
- id: MagazineShotgun
|
||||
- id: MagazineShotgun
|
||||
@@ -123,3 +123,24 @@
|
||||
- id: SpeedLoaderMagnum
|
||||
amount: !type:RangeNumberSelector
|
||||
range: 0, 2
|
||||
|
||||
- type: entity
|
||||
id: ClothingBeltMilitaryWebbingERTMedicine
|
||||
parent: ClothingBeltMilitaryWebbingERT
|
||||
suffix: Filled
|
||||
components:
|
||||
- type: EntityTableContainerFill
|
||||
containers:
|
||||
storagebase: !type:AllSelector
|
||||
children:
|
||||
- id: MedkitCombatFilled
|
||||
- id: AirlossAutoInjector
|
||||
- id: BurnAutoInjector
|
||||
- id: BruteAutoInjector
|
||||
- id: PunctAutoInjector
|
||||
- id: PyraAutoInjector
|
||||
- id: AirlossAutoInjector
|
||||
- id: BurnAutoInjector
|
||||
- id: BruteAutoInjector
|
||||
- id: PunctAutoInjector
|
||||
- id: PyraAutoInjector
|
||||
|
||||
@@ -510,3 +510,14 @@
|
||||
tags:
|
||||
- PetWearable
|
||||
- CorgiWearable
|
||||
|
||||
- type: entity
|
||||
parent: ClothingHeadBase
|
||||
id: ClothingHeadHatSodaJerkCap
|
||||
name: soda jerk cap
|
||||
description: I was a wimp before the soda jerk.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _DV/Clothing/Head/Hats/SodaJerkCap.rsi
|
||||
- type: Clothing
|
||||
sprite: _DV/Clothing/Head/Hats/SodaJerkCap.rsi
|
||||
|
||||
@@ -772,3 +772,15 @@
|
||||
sprite: _DV/Clothing/Uniforms/Jumpsuit/WrestlerCostumeBlue.rsi
|
||||
- type: Clothing
|
||||
sprite: _DV/Clothing/Uniforms/Jumpsuit/WrestlerCostumeBlue.rsi
|
||||
|
||||
|
||||
- type: entity
|
||||
parent: ClothingUniformBase
|
||||
id: ClothingUniformJumpsuitSodaJerk
|
||||
name: soda jerk jumpsuit
|
||||
description: Now I'm a jerk, and now everyone loves me!
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _DV/Clothing/Uniforms/Jumpsuit/SodaJerk.rsi
|
||||
- type: Clothing
|
||||
sprite: _DV/Clothing/Uniforms/Jumpsuit/SodaJerk.rsi
|
||||
|
||||
@@ -15,3 +15,21 @@
|
||||
- type: Sprite
|
||||
sprite: _DV/Objects/Consumable/Drinks/angobitters.rsi
|
||||
- type: Sealable
|
||||
|
||||
|
||||
- type: entity
|
||||
parent: [DrinkVisualsOpenable, DrinkBottlePlasticSmallBaseFull]
|
||||
id: DrinkCaramelBottleFull
|
||||
name: caramel bottle
|
||||
description: A bottle of what is essentially molten sugar with enough water to keep it somewhat fluid.
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: Caramel
|
||||
Quantity: 50
|
||||
- type: Sprite
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/caramel-bottle.rsi
|
||||
- type: Label
|
||||
currentLabel: reagent-name-caramel
|
||||
|
||||
@@ -0,0 +1,406 @@
|
||||
# I SCREAM, YOU SCREAM, WE ALL SCREAM FOR ICE CREAM
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: DrinkIceCreamAppleCaramel
|
||||
suffix: apple caramel ice cream
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: IceCreamAppleCaramel
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-applecaramel.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: DrinkIceCreamCaramel
|
||||
suffix: caramel ice cream
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: IceCreamCaramel
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-caramel.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: DrinkIceCreamCaramelFudge
|
||||
suffix: caramel fudge ice cream
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: IceCreamCaramelFudge
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-caramelfudge.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: DrinkIceCreamCherry
|
||||
suffix: cherry ice cream
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: IceCreamCherry
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-cherry.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: DrinkIceCreamChocolate
|
||||
suffix: chocolate ice cream
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: IceCreamChocolate
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-chocolate.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: DrinkIceCreamBerryCobbler
|
||||
suffix: cobbler's ice cream
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: IceCreamBerryCobbler
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-cobblers.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: DrinkIceCreamCoffee
|
||||
suffix: coffee ice cream
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: IceCreamCoffee
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-coffee.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: DrinkIceCreamCookieDough
|
||||
suffix: cookie dough ice cream
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: IceCreamCookieDough
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-cookiedough.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: DrinkIceCreamGreenTea
|
||||
suffix: green tea ice cream
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: IceCreamGreenTea
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-greentea.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: DrinkIceCreamMint
|
||||
suffix: mint ice cream
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: IceCreamMint
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-mint.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: DrinkIceCreamNeapolitan
|
||||
suffix: neapolitan ice cream
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: IceCreamNeapolitan
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-neapolitan.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: DrinkIceCreamPistachio
|
||||
suffix: pistachio ice cream
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: IceCreamPistachio
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-pistachio.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: DrinkIceCreamRockyRoad
|
||||
suffix: rocky road ice cream
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: IceCreamRockyRoad
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-rockyroad.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: DrinkIceCreamTower
|
||||
suffix: tower of ice cream
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: IceCreamTower
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-tower.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: DrinkIceCreamVegan
|
||||
suffix: vegan ice cream
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: IceCreamVegan
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-vegan.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: DrinkIceCreamWatermelon
|
||||
suffix: watermelon ice cream
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: IceCreamWatermelon
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-watermelon.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: DrinkSherbetRainbow
|
||||
suffix: rainbow sherbet
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: IceCreamSherbetRainbow
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/sherbet-rainbow.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: DrinkIceCreamSherbetlemon
|
||||
suffix: lemon sherbet
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: IceCreamSherbetLemon
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/sherbet-lemon.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: DrinkSherbetLime
|
||||
suffix: lime sherbet
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: IceCreamSherbetLime
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/sherbet-lime.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: DrinkSherbetOrange
|
||||
suffix: orange sherbet
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: IceCreamSherbetOrange
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/sherbet-orange.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: DrinkSherbetPineapple
|
||||
suffix: pineapple sherbet
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: IceCreamSherbetPineapple
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/sherbet-pineapple.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: DrinkSherbetRaspberry
|
||||
suffix: raspberry sherbet
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: IceCreamSherbetRaspberry
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/sherbet-raspberry.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: DrinkSlushBlueRaspberry
|
||||
suffix: blue raspberry slush
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: SlushBlueRaspberry
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/slush-blueraspberry.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: DrinkSlushCherry
|
||||
suffix: cherry slush
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: SlushCherry
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/slush-cherry.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: DrinkSlushCola
|
||||
suffix: cola slush
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: SlushCola
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/slush-cola.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: DrinkGlass
|
||||
id: IceCreamSundaeTropical
|
||||
suffix: tropical sundae
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: IceCreamSundaeTropical
|
||||
Quantity: 30
|
||||
- type: Icon
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/tropicalsunday.rsi
|
||||
state: icon
|
||||
|
||||
# Stop-gap for making chopped nuts available; In a later edition, going to make pistachios growable and grindable
|
||||
# to get chopped nuts (including grinding Sweeties packs)
|
||||
- type: entity
|
||||
id: GlassChoppedNuts
|
||||
parent: DrinkGlass
|
||||
suffix: chopped nuts
|
||||
components:
|
||||
- type: Label
|
||||
currentLabel: reagent-name-chopped-nuts
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: ChoppedNuts
|
||||
Quantity: 30
|
||||
@@ -0,0 +1,10 @@
|
||||
- type: entity
|
||||
parent: WeaponEnergyTurretStationMachineCircuitboardBase
|
||||
id: WeaponEnergyTurretCentralCommandTurretboard
|
||||
suffix: CentComm
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Misc/module.rsi
|
||||
state: command
|
||||
- type: MachineBoard
|
||||
prototype: WeaponEnergyTurretCentralCommand
|
||||
@@ -0,0 +1,10 @@
|
||||
- type: entity
|
||||
parent: WeaponEnergyTurretStationControlPanelElectronicsBase
|
||||
id: WeaponEnergyTurretCentralCommandControlPanelElectronics
|
||||
suffix: CentComm
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Misc/module.rsi
|
||||
state: command
|
||||
- type: ElectronicsBoard
|
||||
prototype: WeaponEnergyTurretCentralCommandControlPanel
|
||||
@@ -0,0 +1,158 @@
|
||||
- type: entity
|
||||
parent: ToolboxThief
|
||||
id: ERTGearSelectorGunAmberSec
|
||||
name: ERT Equipment Selector
|
||||
suffix: Amber, Sec, Guns
|
||||
description: "A small item teleporting a pre-determined set of equipment into the ERT members hands"
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Goobstation/Objects/Devices/unique_teleporters.rsi
|
||||
state: standard
|
||||
- type: ThiefUndeterminedBackpack
|
||||
maxSelectedSets: 1
|
||||
possibleSets:
|
||||
- ERTPatosBundle
|
||||
- ERTaegunBundle
|
||||
- ERTmixlaserBundle
|
||||
|
||||
- type: entity
|
||||
parent: ToolboxThief
|
||||
id: ERTGearSelectorMedsAmber
|
||||
name: ERT Equipment Selector
|
||||
suffix: Amber, Sec, Meds
|
||||
description: "A small item teleporting a pre-determined set of equipment into the ERT members hands"
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Goobstation/Objects/Devices/unique_teleporters.rsi
|
||||
state: standard
|
||||
- type: ThiefUndeterminedBackpack
|
||||
maxSelectedSets: 1
|
||||
possibleSets:
|
||||
- ERTMedkit
|
||||
- ERTBrutekit
|
||||
|
||||
- type: entity
|
||||
parent: ToolboxThief
|
||||
id: ERTGearSelectorGunRedSec
|
||||
name: ERT Equipment Selector
|
||||
suffix: Red, Sec, Guns
|
||||
description: "A small item teleporting a pre-determined set of equipment into the ERT members hands"
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Goobstation/Objects/Devices/unique_teleporters.rsi
|
||||
state: standard
|
||||
- type: ThiefUndeterminedBackpack
|
||||
maxSelectedSets: 1
|
||||
possibleSets:
|
||||
- ERTLaserIK30kit
|
||||
- ERTDrozdkit
|
||||
- ERTLecterkit
|
||||
- ERTEnforcerkit
|
||||
|
||||
- type: entity
|
||||
parent: ToolboxThief
|
||||
id: ERTGearSelectorMedsRed
|
||||
name: ERT Equipment Selector
|
||||
suffix: Red, Sec, Meds
|
||||
description: "A small item teleporting a pre-determined set of equipment into the ERT members hands"
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Goobstation/Objects/Devices/unique_teleporters.rsi
|
||||
state: standard
|
||||
- type: ThiefUndeterminedBackpack
|
||||
maxSelectedSets: 1
|
||||
possibleSets:
|
||||
- ERTAutoInjectorLight
|
||||
- ERTAdvancedTopicals
|
||||
- ERTCombatMedkit
|
||||
|
||||
- type: entity
|
||||
parent: ToolboxThief
|
||||
id: ERTGearSelectorLeaderRed
|
||||
name: ERT Equipment Selector
|
||||
suffix: Red, Leader
|
||||
description: "A small item teleporting a pre-determined set of equipment into the ERT members hands"
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Goobstation/Objects/Devices/unique_teleporters.rsi
|
||||
state: standard
|
||||
- type: ThiefUndeterminedBackpack
|
||||
maxSelectedSets: 1
|
||||
possibleSets:
|
||||
- ERTLeaderOfficerRed
|
||||
- ERTLeaderWTRed
|
||||
- ERTLeaderColdCannonRed
|
||||
|
||||
- type: entity
|
||||
parent: ToolboxThief
|
||||
id: ERTGearSelectorGunGammaSec
|
||||
name: ERT Equipment Selector
|
||||
suffix: Gamma, Gun, Sec
|
||||
description: "A small item teleporting a pre-determined set of equipment into the ERT members hands"
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Goobstation/Objects/Devices/unique_teleporters.rsi
|
||||
state: standard
|
||||
- type: ThiefUndeterminedBackpack
|
||||
maxSelectedSets: 1
|
||||
possibleSets:
|
||||
- ERTGammaSecEnforcer
|
||||
- ERTGammaSecWT
|
||||
- ERTGammaSecImmolator
|
||||
- ERTGammaSecIK60
|
||||
|
||||
- type: entity
|
||||
parent: ToolboxThief
|
||||
id: ERTGearSelectorMedsGammaSec
|
||||
name: ERT Equipment Selector
|
||||
suffix: Gamma, Meds, Sec
|
||||
description: "A small item teleporting a pre-determined set of equipment into the ERT members hands"
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Goobstation/Objects/Devices/unique_teleporters.rsi
|
||||
state: standard
|
||||
- type: ThiefUndeterminedBackpack
|
||||
maxSelectedSets: 1
|
||||
possibleSets:
|
||||
- ERTGammaSecCombatkit
|
||||
- ERTGammaSecStimkit
|
||||
- ERTGammaSecChemkit
|
||||
|
||||
- type: entity
|
||||
parent: ToolboxThief
|
||||
id: ERTGearSelectorLeaderGamma
|
||||
name: ERT Equipment Selector
|
||||
suffix: Gamma, Leader
|
||||
description: "A small item teleporting a pre-determined set of equipment into the ERT members hands"
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Goobstation/Objects/Devices/unique_teleporters.rsi
|
||||
state: standard
|
||||
- type: ThiefUndeterminedBackpack
|
||||
maxSelectedSets: 1
|
||||
possibleSets:
|
||||
- ERTLeaderOfficerGamma
|
||||
- ERTLeaderGammaAntelope
|
||||
- ERTLeaderGammaAtrides
|
||||
- ERTLeaderGammaPulseRifle
|
||||
|
||||
- type: entity
|
||||
parent: ToolboxThief
|
||||
id: ERTGearSelectorGammaSecUtility
|
||||
name: ERT Equipment Selector
|
||||
suffix: Gamma, Sec, Utility
|
||||
description: "A small item teleporting a pre-determined set of equipment into the ERT members hands"
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Goobstation/Objects/Devices/unique_teleporters.rsi
|
||||
state: standard
|
||||
- type: ThiefUndeterminedBackpack
|
||||
maxSelectedSets: 1
|
||||
possibleSets:
|
||||
- ERTGammaC4
|
||||
- ERTGammaThermals
|
||||
- ERTGammaJets
|
||||
- ERTGammaHE
|
||||
- ERTGammaSmoke
|
||||
- ERTGammaIncend
|
||||
- ERTGammaEMP
|
||||
@@ -15,3 +15,23 @@
|
||||
- SmallMobMask # same as mouse, lets it go under doors but not phase through walls
|
||||
layer:
|
||||
- SmallMobLayer
|
||||
|
||||
- type: entity
|
||||
parent: WeaponEnergyTurretStationBase
|
||||
id: WeaponEnergyTurretCentralCommand
|
||||
suffix: CentComm
|
||||
components:
|
||||
- type: AccessReader
|
||||
access: [["CentralCommand"]]
|
||||
- type: StationAiTurret
|
||||
- type: TurretTargetSettings
|
||||
exemptAccessLevels:
|
||||
- CentralCommand
|
||||
- ERT
|
||||
- type: Machine
|
||||
board: WeaponEnergyTurretCentralCommandTurretboard
|
||||
- type: DeviceNetwork
|
||||
receiveFrequencyId: TurretControl
|
||||
transmitFrequencyId: Turret
|
||||
- type: StationAiVision
|
||||
range: 0
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
- type: entity
|
||||
parent: WeaponEnergyTurretStationControlPanelBase
|
||||
id: WeaponEnergyTurretCentralCommandControlPanel
|
||||
suffix: CentComm
|
||||
components:
|
||||
- type: AccessReader
|
||||
access: [["CentralCommand"]]
|
||||
- type: ContainerFill
|
||||
containers:
|
||||
board:
|
||||
- WeaponEnergyTurretCentralCommandControlPanelElectronics
|
||||
- type: StationAiVision #DeltaV
|
||||
range: 0
|
||||
- type: TurretTargetSettings
|
||||
exemptAccessLevels:
|
||||
- CentralCommand
|
||||
- ERT
|
||||
- type: DeployableTurretController
|
||||
accessGroups:
|
||||
- General
|
||||
accessLevels:
|
||||
- CentralCommand
|
||||
- ERT
|
||||
@@ -0,0 +1,44 @@
|
||||
- type: flavor
|
||||
id: tart
|
||||
flavorType: Complex
|
||||
description: flavor-complex-tart
|
||||
|
||||
- type: flavor
|
||||
id: IceCreamAppleCaramel
|
||||
flavorType: Complex
|
||||
description: flavor-complex-icecream-apple-caramel
|
||||
|
||||
- type: flavor
|
||||
id: IceCreamCaramelFudge
|
||||
flavorType: Complex
|
||||
description: flavor-complex-icecream-caramel-fudge
|
||||
|
||||
- type: flavor
|
||||
id: IceCreamCobbler
|
||||
flavorType: Complex
|
||||
description: flavor-complex-icecream-cobbler
|
||||
|
||||
- type: flavor
|
||||
id: IceCreamCookieDough
|
||||
flavorType: Complex
|
||||
description: flavor-complex-icecream-cookiedough
|
||||
|
||||
- type: flavor
|
||||
id: IceCreamNeapolitan
|
||||
flavorType: Complex
|
||||
description: flavor-complex-icecream-neapolitan
|
||||
|
||||
- type: flavor
|
||||
id: IceCreamRockyRoad
|
||||
flavorType: Complex
|
||||
description: flavor-complex-icecream-rockyroad
|
||||
|
||||
- type: flavor
|
||||
id: IceCreamTower
|
||||
flavorType: Complex
|
||||
description: flavor-complex-icecream-tower
|
||||
|
||||
- type: flavor
|
||||
id: IceCreamRainbow
|
||||
flavorType: Complex
|
||||
description: flavor-complex-icecream-rainbow
|
||||
@@ -1,26 +0,0 @@
|
||||
- type: entity
|
||||
parent: BaseGameRule
|
||||
id: UprisingRule
|
||||
components:
|
||||
- type: GameRule
|
||||
minPlayers: 10
|
||||
- type: UprisingRule
|
||||
- type: AntagSelection
|
||||
selectionTime: IntraPlayerSpawn
|
||||
definitions:
|
||||
- prefRoles: [ HeadLoyalist ]
|
||||
max: 2
|
||||
playerRatio: 30
|
||||
mindRoles:
|
||||
- MindRoleHeadLoyalist
|
||||
briefing:
|
||||
text: antag-HeadLoyalist.greeting
|
||||
color: CornflowerBlue
|
||||
- prefRoles: [ HeadInsurgent ]
|
||||
max: 2
|
||||
playerRatio: 30
|
||||
mindRoles:
|
||||
- MindRoleHeadInsurgent
|
||||
briefing:
|
||||
text: antag-HeadInsurgent.greeting
|
||||
color: DarkSalmon
|
||||
@@ -0,0 +1,6 @@
|
||||
# Adding group for frozen treats since we kinda added a LOT of those
|
||||
- type: guideEntry
|
||||
id: FrozenTreats
|
||||
name: guide-entry-frozentreat-recipes
|
||||
text: "/ServerInfo/Guidebook/_DV/Service/FrozenTreats.xml"
|
||||
filterEnabled: True
|
||||
@@ -14,3 +14,14 @@
|
||||
id: BartenderGlasses
|
||||
equipment:
|
||||
eyes: ClothingEyesHudBeer
|
||||
|
||||
# Soda Jerk and Cap
|
||||
- type: loadout
|
||||
id: SodaJerkUniform
|
||||
equipment:
|
||||
jumpsuit: ClothingUniformJumpsuitSodaJerk
|
||||
|
||||
- type: loadout
|
||||
id: SodaJerkCap
|
||||
equipment:
|
||||
head: ClothingHeadHatSodaJerkCap
|
||||
|
||||
@@ -1,105 +0,0 @@
|
||||
- type: entity
|
||||
abstract: true
|
||||
parent: BaseObjective
|
||||
id: BaseLoyalistObjective
|
||||
components:
|
||||
- type: Objective
|
||||
issuer: antag-Loyalist.issuer
|
||||
difficulty: 0
|
||||
- type: RoleRequirement
|
||||
roles: [ LoyalistRole ]
|
||||
|
||||
- type: entity
|
||||
abstract: true
|
||||
parent: BaseObjective
|
||||
id: BaseInsurgentObjective
|
||||
components:
|
||||
- type: Objective
|
||||
issuer: antag-Insurgent.issuer
|
||||
difficulty: 0
|
||||
- type: RoleRequirement
|
||||
roles: [ InsurgentRole ]
|
||||
|
||||
- type: entity
|
||||
parent: BaseLoyalistObjective
|
||||
id: LoyalistObjectiveCrewMajority
|
||||
name: Rally Crew
|
||||
description: Rally the crew to NanoTrasen's side.
|
||||
components:
|
||||
- type: CrewConversionObjective
|
||||
convertedRoles: [ LoyalistRole ]
|
||||
conversionSourceFactions: [ NanoTrasen ]
|
||||
targetFraction: 0.5
|
||||
- type: Objective
|
||||
icon:
|
||||
sprite: /Textures/_DV/Misc/uprising.rsi
|
||||
state: loyalist_conversion
|
||||
|
||||
- type: entity
|
||||
parent: BaseLoyalistObjective
|
||||
id: LoyalistObjectiveProtectCommand
|
||||
name: Protect Command
|
||||
description: Keep NanoTrasen's rightfully-appointed Command in their place, and get them on your side.
|
||||
components:
|
||||
- type: Objective
|
||||
icon:
|
||||
sprite: /Textures/_DV/Misc/uprising.rsi
|
||||
state: protect
|
||||
- type: CommandStatusObjective
|
||||
convertedRoles: [ LoyalistRole ]
|
||||
shouldUnconvertedBeIncapacitated: false
|
||||
|
||||
- type: entity
|
||||
parent: BaseLoyalistObjective
|
||||
id: LoyalistObjectiveDeclareLoyalty
|
||||
name: Declare Loyalty
|
||||
description: After rallying the majority of the crew, get to a communications computer and affirm the station's loyalty to NanoTrasen.
|
||||
components:
|
||||
- type: Objective
|
||||
icon:
|
||||
sprite: /Textures/_DV/Misc/uprising.rsi
|
||||
state: loyalty
|
||||
- type: UprisingVictoryObjective
|
||||
side: Loyalist
|
||||
|
||||
- type: entity
|
||||
parent: BaseInsurgentObjective
|
||||
id: InsurgentObjectiveCrewMajority
|
||||
name: Rally Crew
|
||||
description: Rally the crew to your side.
|
||||
components:
|
||||
- type: CrewConversionObjective
|
||||
convertedRoles: [ InsurgentRole ]
|
||||
conversionSourceFactions: [ NanoTrasen ]
|
||||
targetFraction: 0.5
|
||||
- type: Objective
|
||||
icon:
|
||||
sprite: /Textures/_DV/Misc/uprising.rsi
|
||||
state: insurgent_conversion
|
||||
|
||||
- type: entity
|
||||
parent: BaseInsurgentObjective
|
||||
id: InsurgentObjectiveIncapacitateCommand
|
||||
name: Incapacitate Command
|
||||
description: Assassinate, handcuff, or convert all of Command.
|
||||
components:
|
||||
- type: Objective
|
||||
icon:
|
||||
sprite: /Textures/_DV/Misc/uprising.rsi
|
||||
state: overthrow
|
||||
- type: CommandStatusObjective
|
||||
convertedRoles: [ InsurgentRole ]
|
||||
shouldUnconvertedBeIncapacitated: true
|
||||
|
||||
- type: entity
|
||||
parent: BaseInsurgentObjective
|
||||
id: InsurgentObjectiveTakeOver
|
||||
name: Take Over
|
||||
description: After getting all of Command out of the way, get to a communications computer and declare the station's liberation.
|
||||
components:
|
||||
- type: Objective
|
||||
icon:
|
||||
sprite: /Textures/_DV/Misc/uprising.rsi
|
||||
state: take_over
|
||||
- type: UprisingVictoryObjective
|
||||
side: Insurgent
|
||||
@@ -0,0 +1,518 @@
|
||||
- type: reagent
|
||||
abstract: true
|
||||
parent: BaseDrink
|
||||
id: BaseDrinkFrozenTreat
|
||||
group: FrozenTreats
|
||||
metamorphicMaxFillLevels: 5
|
||||
metamorphicFillBaseName: fill-
|
||||
metamorphicChangeColor: false
|
||||
footstepSound:
|
||||
collection: FootstepSlime
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrink
|
||||
id: Caramel
|
||||
name: reagent-name-caramel
|
||||
desc: reagent-desc-caramel
|
||||
physicalDesc: reagent-physical-desc-syrupy
|
||||
flavor: sweet
|
||||
color: "#F39E33"
|
||||
recognizable: true
|
||||
metabolisms:
|
||||
Drink:
|
||||
effects:
|
||||
- !type:SatiateThirst
|
||||
factor: 1
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrink
|
||||
id: ChoppedNuts
|
||||
name: reagent-name-chopped-nuts
|
||||
desc: reagent-desc-chopped-nuts
|
||||
physicalDesc: reagent-physical-desc-aromatic
|
||||
flavor: nutty
|
||||
color: "#F1BB24"
|
||||
recognizable: true
|
||||
metamorphicMaxFillLevels: 5
|
||||
metamorphicFillBaseName: fill-
|
||||
metamorphicChangeColor: false
|
||||
metabolisms:
|
||||
Drink:
|
||||
effects:
|
||||
- !type:SatiateHunger
|
||||
factor: 1
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/chopped-nuts.rsi
|
||||
state: icon_empty
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: IceCreamAppleCaramel
|
||||
name: reagent-name-icecream-apple-caramel
|
||||
desc: reagent-desc-icecream-apple-caramel
|
||||
physicalDesc: reagent-physical-desc-creamy
|
||||
flavor: IceCreamAppleCaramel
|
||||
color: "#F9CD85"
|
||||
recognizable: true
|
||||
metabolisms:
|
||||
Drink:
|
||||
effects:
|
||||
- !type:SatiateThirst
|
||||
factor: 2
|
||||
- !type:HealthChange
|
||||
conditions:
|
||||
- !type:ReagentCondition
|
||||
reagent: IceCreamAppleCaramel
|
||||
min: 20
|
||||
damage:
|
||||
types:
|
||||
Cold: .25
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-applecaramel.rsi
|
||||
state: icon_empty
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: IceCreamCaramel
|
||||
name: reagent-name-icecream-caramel
|
||||
desc: reagent-desc-icecream-caramel
|
||||
physicalDesc: reagent-physical-desc-creamy
|
||||
flavor: sweet
|
||||
color: "#F9CD85"
|
||||
recognizable: true
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-caramel.rsi
|
||||
state: icon_empty
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: IceCreamCaramelFudge
|
||||
name: reagent-name-icecream-caramel-fudge
|
||||
desc: reagent-desc-icecream-caramel-fudge
|
||||
physicalDesc: reagent-physical-desc-creamy
|
||||
flavor: IceCreamCaramelFudge
|
||||
color: "#C06B20"
|
||||
recognizable: true
|
||||
metabolisms:
|
||||
Drink:
|
||||
effects:
|
||||
- !type:SatiateThirst
|
||||
factor: 2
|
||||
- !type:HealthChange
|
||||
conditions:
|
||||
- !type:ReagentCondition
|
||||
reagent: IceCreamCaramelFudge
|
||||
min: 20
|
||||
damage:
|
||||
types:
|
||||
Cold: .25
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-caramelfudge.rsi
|
||||
state: icon_empty
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: IceCreamCherry
|
||||
name: reagent-name-icecream-cherry
|
||||
desc: reagent-desc-icecream-cherry
|
||||
physicalDesc: reagent-physical-desc-creamy
|
||||
flavor: cherry
|
||||
color: "#FF8888"
|
||||
recognizable: true
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-cherry.rsi
|
||||
state: icon_empty
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: IceCreamChocolate
|
||||
name: reagent-name-icecream-chocolate
|
||||
desc: reagent-desc-icecream-chocolate
|
||||
physicalDesc: reagent-physical-desc-creamy
|
||||
flavor: chocolate
|
||||
color: "#664300"
|
||||
recognizable: true
|
||||
metabolisms:
|
||||
Drink:
|
||||
effects:
|
||||
- !type:AdjustReagent
|
||||
reagent: Theobromine
|
||||
amount: 0.05
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-chocolate.rsi
|
||||
state: icon_empty
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: IceCreamBerryCobbler
|
||||
name: reagent-name-icecream-cobbler
|
||||
desc: reagent-desc-icecream-cobbler
|
||||
physicalDesc: reagent-physical-desc-creamy
|
||||
flavor: IceCreamCobbler
|
||||
color: "#FF8888"
|
||||
recognizable: true
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-cobblers.rsi
|
||||
state: icon_empty
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: IceCreamCoffee
|
||||
name: reagent-name-icecream-coffee
|
||||
desc: reagent-desc-icecream-coffee
|
||||
physicalDesc: reagent-physical-desc-creamy
|
||||
flavor: coffee
|
||||
color: "#664300"
|
||||
recognizable: true
|
||||
metabolisms:
|
||||
Drink:
|
||||
effects:
|
||||
- !type:ModifyStatusEffect
|
||||
effectProto: StatusEffectDrowsiness
|
||||
time: 2
|
||||
type: Remove
|
||||
- !type:AdjustReagent
|
||||
reagent: Theobromine
|
||||
amount: 0.05
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-coffee.rsi
|
||||
state: icon_empty
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: IceCreamCookieDough
|
||||
name: reagent-name-icecream-cookiedough
|
||||
desc: reagent-desc-icecream-cookiedough
|
||||
physicalDesc: reagent-physical-desc-creamy
|
||||
flavor: IceCreamCookieDough
|
||||
color: "#FFFBD6"
|
||||
recognizable: true
|
||||
metabolisms:
|
||||
Drink:
|
||||
effects:
|
||||
- !type:SatiateThirst
|
||||
factor: 2
|
||||
- !type:HealthChange
|
||||
conditions:
|
||||
- !type:ReagentCondition
|
||||
reagent: IceCreamCookieDough
|
||||
min: 20
|
||||
damage:
|
||||
types:
|
||||
Cold: .25
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-cookiedough.rsi
|
||||
state: icon_empty
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: IceCreamGreenTea
|
||||
name: reagent-name-icecream-greentea
|
||||
desc: reagent-desc-icecream-greentea
|
||||
physicalDesc: reagent-physical-desc-creamy
|
||||
flavor: tea
|
||||
color: "#7EB626"
|
||||
metabolisms:
|
||||
Drink:
|
||||
effects:
|
||||
- !type:SatiateThirst
|
||||
factor: 2
|
||||
- !type:HealthChange
|
||||
conditions:
|
||||
- !type:ReagentCondition
|
||||
reagent: IceCreamGreenTea
|
||||
min: 20
|
||||
damage:
|
||||
types:
|
||||
Cold: .25
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-greentea.rsi
|
||||
state: icon_empty
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: IceCreamMint
|
||||
name: reagent-name-icecream-mint
|
||||
desc: reagent-desc-icecream-mint
|
||||
physicalDesc: reagent-physical-desc-creamy
|
||||
flavor: minty
|
||||
color: "#A3F979"
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-mint.rsi
|
||||
state: icon_empty
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: IceCreamNeapolitan
|
||||
name: reagent-name-icecream-neapolitan
|
||||
desc: reagent-desc-icecream-neapolitan
|
||||
physicalDesc: reagent-physical-desc-creamy
|
||||
flavor: IceCreamNeapolitan
|
||||
color: "#FFFBD6"
|
||||
recognizable: true
|
||||
metabolisms:
|
||||
Drink:
|
||||
effects:
|
||||
- !type:AdjustReagent
|
||||
reagent: Theobromine
|
||||
amount: 0.05
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-neapolitan.rsi
|
||||
state: icon_empty
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: IceCreamPistachio
|
||||
name: reagent-name-icecream-pistachio
|
||||
desc: reagent-desc-icecream-pistachio
|
||||
physicalDesc: reagent-physical-desc-creamy
|
||||
flavor: nutty
|
||||
color: "#99B334"
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-pistachio.rsi
|
||||
state: icon_empty
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: IceCreamRockyRoad
|
||||
name: reagent-name-icecream-rockyroad
|
||||
desc: reagent-desc-icecream-rockyroad
|
||||
physicalDesc: reagent-physical-desc-creamy
|
||||
flavor: IceCreamRockyRoad
|
||||
color: "#664300"
|
||||
recognizable: true
|
||||
metabolisms:
|
||||
Drink:
|
||||
effects:
|
||||
- !type:AdjustReagent
|
||||
reagent: Theobromine
|
||||
amount: 0.05
|
||||
- !type:SatiateThirst
|
||||
factor: 2
|
||||
- !type:HealthChange
|
||||
conditions:
|
||||
- !type:ReagentCondition
|
||||
reagent: IceCreamRockyRoad
|
||||
min: 20
|
||||
damage:
|
||||
types:
|
||||
Cold: .25
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-rockyroad.rsi
|
||||
state: icon_empty
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: IceCreamTower
|
||||
name: reagent-name-icecream-tower
|
||||
desc: reagent-desc-icecream-tower
|
||||
physicalDesc: reagent-physical-desc-creamy
|
||||
flavor: IceCreamTower
|
||||
color: "#EDC392"
|
||||
recognizable: true
|
||||
metabolisms:
|
||||
Drink:
|
||||
effects:
|
||||
- !type:SatiateThirst
|
||||
factor: 3
|
||||
- !type:SatiateHunger
|
||||
factor: 2
|
||||
- !type:HealthChange
|
||||
conditions:
|
||||
- !type:ReagentCondition
|
||||
reagent: IceCreamTower
|
||||
min: 20
|
||||
damage:
|
||||
types:
|
||||
Cold: .5
|
||||
- !type:AdjustReagent
|
||||
reagent: Theobromine
|
||||
amount: 0.05
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-tower.rsi
|
||||
state: icon_empty
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: IceCreamVegan
|
||||
name: reagent-name-icecream-vegan
|
||||
desc: reagent-desc-icecream-vegan
|
||||
physicalDesc: reagent-physical-desc-creamy
|
||||
flavor: icecream
|
||||
color: "#FFFBD6"
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-vegan.rsi
|
||||
state: icon_empty
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: IceCreamWatermelon
|
||||
name: reagent-name-icecream-watermelon
|
||||
desc: reagent-desc-icecream-watermelon
|
||||
physicalDesc: reagent-physical-desc-creamy
|
||||
flavor: watermelon
|
||||
color: "#EFBE6C"
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/icecream-watermelon.rsi
|
||||
state: icon_empty
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: IceCreamSherbetRainbow
|
||||
name: reagent-name-sherbet-rainbow
|
||||
desc: reagent-desc-sherbet-rainbow
|
||||
physicalDesc: reagent-physical-desc-creamy
|
||||
flavor: IceCreamRainbow
|
||||
color: "#D6CE58"
|
||||
recognizable: true
|
||||
metabolisms:
|
||||
Drink:
|
||||
effects:
|
||||
- !type:SatiateThirst
|
||||
factor: 2
|
||||
- !type:SatiateHunger
|
||||
factor: 1
|
||||
- !type:HealthChange
|
||||
conditions:
|
||||
- !type:ReagentCondition
|
||||
reagent: IceCreamSherbetRainbow
|
||||
min: 20
|
||||
damage:
|
||||
types:
|
||||
Cold: .25
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/sherbet-rainbow.rsi
|
||||
state: icon_empty
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: IceCreamSherbetLemon
|
||||
name: reagent-name-sherbet-lemon
|
||||
desc: reagent-desc-sherbet-lemon
|
||||
physicalDesc: reagent-physical-desc-creamy
|
||||
flavor: ginfizz
|
||||
color: "#FFE93F"
|
||||
recognizable: true
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/sherbet-lemon.rsi
|
||||
state: icon_empty
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: IceCreamSherbetLime
|
||||
name: reagent-name-sherbet-lime
|
||||
desc: reagent-desc-sherbet-lime
|
||||
physicalDesc: reagent-physical-desc-creamy
|
||||
flavor: tart
|
||||
color: "#ABFF24"
|
||||
recognizable: true
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/sherbet-lime.rsi
|
||||
state: icon_empty
|
||||
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: IceCreamSherbetOrange
|
||||
name: reagent-name-sherbet-orange
|
||||
desc: reagent-desc-sherbet-orange
|
||||
physicalDesc: reagent-physical-desc-creamy
|
||||
flavor: orange
|
||||
color: "#FEAF54"
|
||||
recognizable: true
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/sherbet-orange.rsi
|
||||
state: icon_empty
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: IceCreamSherbetPineapple
|
||||
name: reagent-name-sherbet-pineapple
|
||||
desc: reagent-desc-sherbet-pineapple
|
||||
physicalDesc: reagent-physical-desc-creamy
|
||||
flavor: bluehawaiian
|
||||
color: "#FFED69"
|
||||
recognizable: true
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/sherbet-pineapple.rsi
|
||||
state: icon_empty
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: IceCreamSherbetRaspberry
|
||||
name: reagent-name-sherbet-raspberry
|
||||
desc: reagent-desc-sherbet-raspberry
|
||||
physicalDesc: reagent-physical-desc-creamy
|
||||
flavor: berry
|
||||
color: "#F398CB"
|
||||
recognizable: true
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/sherbet-raspberry.rsi
|
||||
state: icon_empty
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: SlushBlueRaspberry
|
||||
name: reagent-name-slush-blue-raspberry
|
||||
desc: reagent-desc-slush-blue-raspberry
|
||||
physicalDesc: reagent-physical-desc-frosty
|
||||
flavor: berry
|
||||
color: "#2FF0FE"
|
||||
recognizable: true
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/slush-blueraspberry.rsi
|
||||
state: icon_empty
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: SlushCherry
|
||||
name: reagent-name-slush-cherry
|
||||
desc: reagent-desc-slush-cherry
|
||||
physicalDesc: reagent-physical-desc-frosty
|
||||
flavor: cherry
|
||||
color: "#FFE7E7"
|
||||
recognizable: true
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/slush-cherry.rsi
|
||||
state: icon_empty
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: SlushCola
|
||||
name: reagent-name-slush-cola
|
||||
desc: reagent-desc-slush-cola
|
||||
physicalDesc: reagent-physical-desc-frosty
|
||||
flavor: cola
|
||||
color: "#FFE7E7"
|
||||
recognizable: true
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/slush-cola.rsi
|
||||
state: icon_empty
|
||||
|
||||
- type: reagent
|
||||
parent: BaseDrinkFrozenTreat
|
||||
id: IceCreamSundaeTropical
|
||||
name: reagent-name-tropical-sunday
|
||||
desc: reagent-desc-tropical-sunday
|
||||
physicalDesc: reagent-physical-desc-creamy
|
||||
flavor: painkiller
|
||||
color: "#FFD376"
|
||||
recognizable: true
|
||||
metabolisms:
|
||||
Drink:
|
||||
effects:
|
||||
- !type:SatiateThirst
|
||||
factor: 2
|
||||
- !type:SatiateHunger
|
||||
factor: 1
|
||||
- !type:HealthChange
|
||||
conditions:
|
||||
- !type:ReagentCondition
|
||||
reagent: IceCreamSundaeTropical
|
||||
min: 20
|
||||
damage:
|
||||
types:
|
||||
Cold: 0.25
|
||||
metamorphicSprite:
|
||||
sprite: _DV/Objects/Consumable/Drinks/frozen_treats/tropicalsunday.rsi
|
||||
state: icon_empty
|
||||
@@ -0,0 +1,290 @@
|
||||
- type: reaction
|
||||
id: Caramel
|
||||
minTemp: 350
|
||||
reactants:
|
||||
Saline:
|
||||
amount: 1
|
||||
Sugar:
|
||||
amount: 2
|
||||
products:
|
||||
Caramel: 1
|
||||
|
||||
- type: reaction
|
||||
id: IceCreamAppleCaramel
|
||||
reactants:
|
||||
IceCreamCaramel:
|
||||
amount: 3
|
||||
JuiceApple:
|
||||
amount: 1
|
||||
products:
|
||||
IceCreamAppleCaramel: 4
|
||||
|
||||
- type: reaction
|
||||
id: IceCreamCaramel
|
||||
reactants:
|
||||
IceCream:
|
||||
amount: 1
|
||||
Caramel:
|
||||
amount: 1
|
||||
products:
|
||||
IceCreamCaramel: 2
|
||||
|
||||
- type: reaction
|
||||
id: IceCreamCaramelFudge
|
||||
reactants:
|
||||
IceCreamChocolate:
|
||||
amount: 2
|
||||
Caramel:
|
||||
amount: 1
|
||||
products:
|
||||
IceCreamCaramelFudge: 3
|
||||
|
||||
- type: reaction
|
||||
id: IceCreamBerryCobbler
|
||||
reactants:
|
||||
IceCream:
|
||||
amount: 2
|
||||
Oats:
|
||||
amount: 1
|
||||
JuiceBerry:
|
||||
amount: 1
|
||||
products:
|
||||
IceCreamBerryCobbler: 4
|
||||
|
||||
- type: reaction
|
||||
id: IceCreamCherry
|
||||
reactants:
|
||||
IceCream:
|
||||
amount: 1
|
||||
JuiceCherry:
|
||||
amount: 1
|
||||
products:
|
||||
IceCreamCherry: 2
|
||||
|
||||
- type: reaction
|
||||
id: IceCreamChocolate
|
||||
reactants:
|
||||
IceCream:
|
||||
amount: 1
|
||||
CocoaPowder:
|
||||
amount: 1
|
||||
products:
|
||||
IceCreamChocolate: 2
|
||||
|
||||
- type: reaction
|
||||
id: IceCreamCoffee
|
||||
reactants:
|
||||
IceCream:
|
||||
amount: 1
|
||||
Coffee:
|
||||
amount: 1
|
||||
products:
|
||||
IceCreamCoffee: 2
|
||||
|
||||
- type: reaction
|
||||
id: IceCreamCookieDough
|
||||
reactants:
|
||||
IceCream:
|
||||
amount: 1
|
||||
IceCreamChocolate:
|
||||
amount: 1
|
||||
Flour:
|
||||
amount: 1
|
||||
products:
|
||||
IceCreamCookieDough: 2
|
||||
|
||||
- type: reaction
|
||||
id: IceCreamGreenTea
|
||||
reactants:
|
||||
IceCream:
|
||||
amount: 1
|
||||
GreenTea:
|
||||
amount: 1
|
||||
products:
|
||||
IceCreamGreenTea: 2
|
||||
|
||||
- type: reaction
|
||||
id: IceCreamNeapolitan
|
||||
reactants:
|
||||
IceCream:
|
||||
amount: 1
|
||||
IceCreamCherry:
|
||||
amount: 1
|
||||
IceCreamChocolate:
|
||||
amount: 1
|
||||
products:
|
||||
IceCreamNeapolitan: 3
|
||||
|
||||
- type: reaction
|
||||
id: IceCreamMint
|
||||
reactants:
|
||||
IceCream:
|
||||
amount: 1
|
||||
Angobitters:
|
||||
amount: 1
|
||||
products:
|
||||
IceCreamMint: 2
|
||||
|
||||
- type: reaction
|
||||
id: IceCreamTower
|
||||
reactants:
|
||||
IceCreamNeapolitan:
|
||||
amount: 1
|
||||
IceCreamSherbetRainbow:
|
||||
amount: 1
|
||||
products:
|
||||
IceCreamTower: 2
|
||||
|
||||
- type: reaction
|
||||
id: IceCreamVegan
|
||||
reactants:
|
||||
Sugar:
|
||||
amount: 1
|
||||
Ice:
|
||||
amount: 1
|
||||
MilkSoy:
|
||||
amount: 1
|
||||
products:
|
||||
IceCreamVegan: 3
|
||||
|
||||
- type: reaction
|
||||
id: IceCreamWatermelon
|
||||
reactants:
|
||||
IceCream:
|
||||
amount: 1
|
||||
JuiceWatermelon:
|
||||
amount: 1
|
||||
products:
|
||||
IceCreamWatermelon: 2
|
||||
|
||||
- type: reaction
|
||||
id: IceCreamSherbetLemon
|
||||
reactants:
|
||||
IceCream:
|
||||
amount: 1
|
||||
JuiceLemon:
|
||||
amount: 1
|
||||
products:
|
||||
IceCreamSherbetLemon: 2
|
||||
|
||||
- type: reaction
|
||||
id: IceCreamSherbetLime
|
||||
reactants:
|
||||
IceCream:
|
||||
amount: 1
|
||||
JuiceLime:
|
||||
amount: 1
|
||||
products:
|
||||
IceCreamSherbetLime: 2
|
||||
|
||||
- type: reaction
|
||||
id: IceCreamSherbetPineapple
|
||||
reactants:
|
||||
IceCream:
|
||||
amount: 1
|
||||
JuicePineapple:
|
||||
amount: 1
|
||||
products:
|
||||
IceCreamSherbetPineapple: 2
|
||||
|
||||
- type: reaction
|
||||
id: IceCreamSherbetOrange
|
||||
reactants:
|
||||
IceCream:
|
||||
amount: 1
|
||||
JuiceOrange:
|
||||
amount: 1
|
||||
products:
|
||||
IceCreamSherbetOrange: 2
|
||||
|
||||
- type: reaction
|
||||
id: IceCreamSherbetRaspberry
|
||||
reactants:
|
||||
IceCream:
|
||||
amount: 1
|
||||
JuiceBerry:
|
||||
amount: 1
|
||||
products:
|
||||
IceCreamSherbetRaspberry: 2
|
||||
|
||||
- type: reaction
|
||||
id: IceCreamSherbetRainbow
|
||||
reactants:
|
||||
IceCreamSherbetOrange:
|
||||
amount: 1
|
||||
IceCreamSherbetLime:
|
||||
amount: 1
|
||||
IceCreamSherbetRaspberry:
|
||||
amount: 1
|
||||
products:
|
||||
IceCreamSherbetRainbow: 3
|
||||
|
||||
- type: reaction
|
||||
id: SlushCherry
|
||||
reactants:
|
||||
JuiceCherry:
|
||||
amount: 1
|
||||
Ice:
|
||||
amount: 2
|
||||
Sugar:
|
||||
amount: 1
|
||||
products:
|
||||
SlushCherry: 4
|
||||
|
||||
- type: reaction
|
||||
id: SlushCola
|
||||
reactants:
|
||||
Cola:
|
||||
amount: 1
|
||||
Ice:
|
||||
amount: 2
|
||||
Sugar:
|
||||
amount: 1
|
||||
products:
|
||||
SlushCola: 4
|
||||
|
||||
- type: reaction
|
||||
id: SlushBlueRaspberry
|
||||
reactants:
|
||||
JuiceBerry:
|
||||
amount: 1
|
||||
Ice:
|
||||
amount: 2
|
||||
Sugar:
|
||||
amount: 1
|
||||
products:
|
||||
SlushBlueRaspberry: 4
|
||||
|
||||
- type: reaction
|
||||
id: IceCreamSundaeTropical
|
||||
reactants:
|
||||
IceCream:
|
||||
amount: 3
|
||||
JuiceBanana:
|
||||
amount: 1
|
||||
CoconutWater:
|
||||
amount: 1
|
||||
JuiceBungo:
|
||||
amount: 1
|
||||
products:
|
||||
IceCreamSundaeTropical: 6
|
||||
|
||||
- type: reaction
|
||||
id: IceCreamPistachio
|
||||
reactants:
|
||||
IceCream:
|
||||
amount: 1
|
||||
ChoppedNuts:
|
||||
amount: 1
|
||||
products:
|
||||
IceCreamPistachio: 2
|
||||
|
||||
- type: reaction
|
||||
id: IceCreamRockyRoad
|
||||
reactants:
|
||||
IceCreamChocolate:
|
||||
amount: 2
|
||||
ChoppedNuts:
|
||||
amount: 1
|
||||
products:
|
||||
IceCreamRockyRoad: 3
|
||||
@@ -1,19 +0,0 @@
|
||||
- type: antag
|
||||
id: HeadLoyalist
|
||||
name: antag-HeadLoyalist.name
|
||||
antagonist: true
|
||||
setPreference: true
|
||||
objective: antag-HeadLoyalist.objective
|
||||
requirements:
|
||||
- !type:OverallPlaytimeRequirement
|
||||
time: 24h
|
||||
|
||||
- type: antag
|
||||
id: HeadInsurgent
|
||||
name: antag-HeadInsurgent.name
|
||||
antagonist: true
|
||||
setPreference: true
|
||||
objective: antag-HeadInsurgent.objective
|
||||
requirements:
|
||||
- !type:OverallPlaytimeRequirement
|
||||
time: 24h
|
||||
@@ -11,7 +11,7 @@
|
||||
outerClothing: ClothingOuterArmorBasicSlim
|
||||
id: ERTLeaderPDA
|
||||
ears: ClothingHeadsetAltCentCom
|
||||
belt: WeaponEnergyGun
|
||||
belt: ClothingBeltMilitaryWebbingERT
|
||||
pocket1: CrowbarRed
|
||||
pocket2: FlashlightSeclite
|
||||
storage:
|
||||
@@ -19,7 +19,12 @@
|
||||
- PinpointerNuclear
|
||||
- Zipties
|
||||
- Zipties
|
||||
- DoorRemoteOmni
|
||||
- DoorRemoteCustom
|
||||
- ERTGearSelectorMedsAmber
|
||||
- WeaponPistolUniversal
|
||||
- MagazineUniversalMagnum
|
||||
- MagazineUniversalMagnum
|
||||
- MagazineUniversalMagnum
|
||||
|
||||
- type: startingGear
|
||||
parent: ERTLeaderGearAmber
|
||||
@@ -28,16 +33,13 @@
|
||||
shoes: ClothingShoesBootsERTMagboots
|
||||
mask: ClothingMaskGasERT
|
||||
outerClothing: ClothingOuterHardsuitERTLeaderBase
|
||||
belt: ClothingBeltSecurityFilled
|
||||
pocket1: WeaponEnergyGunPistol
|
||||
storage:
|
||||
back:
|
||||
- CrowbarRed
|
||||
- DoorRemoteOmni
|
||||
- DoorRemoteCustom
|
||||
- PinpointerNuclear
|
||||
- MagazineUniversalMagnum
|
||||
- MagazineUniversalMagnum
|
||||
- WeaponPistolUniversal
|
||||
- ERTGearSelectorLeaderRed
|
||||
- ERTGearSelectorMedsRed
|
||||
belt:
|
||||
- Zipties
|
||||
- Zipties
|
||||
@@ -47,20 +49,13 @@
|
||||
id: ERTLeaderGearGamma
|
||||
equipment:
|
||||
outerClothing: ClothingOuterHardsuitERTLeaderElite
|
||||
pocket2: WeaponPistolUniversal
|
||||
inhand:
|
||||
- WeaponRifleLaserERT
|
||||
storage:
|
||||
back:
|
||||
- MagazineLaser
|
||||
- MagazineLaser
|
||||
- MagazineLaser
|
||||
- MagazineUniversalMagnum
|
||||
- MagazineUniversalMagnum
|
||||
- CrowbarRed
|
||||
- PinpointerNuclear
|
||||
- DoorRemoteOmni
|
||||
- FlashlightSeclite
|
||||
- DoorRemoteCustom
|
||||
- ERTGearSelectorLeaderGamma
|
||||
- ERTGearSelectorMedsGammaSec
|
||||
- ToolDebug
|
||||
|
||||
# Chaplain
|
||||
|
||||
@@ -126,7 +121,7 @@
|
||||
id: ERTEngineerPDA
|
||||
ears: ClothingHeadsetAltCentCom
|
||||
belt: ClothingBeltChiefEngineerFilled
|
||||
pocket1: WeaponEnergyGunMini
|
||||
pocket1: WeaponAdvancedLaser
|
||||
pocket2: FlashlightSeclite
|
||||
storage:
|
||||
back:
|
||||
@@ -144,7 +139,7 @@
|
||||
equipment:
|
||||
shoes: ClothingShoesBootsERTMagboots
|
||||
mask: ClothingMaskGasERT
|
||||
pocket1: WeaponEnergyGunPistol
|
||||
pocket1: WeaponAdvancedLaser
|
||||
inhand:
|
||||
- JetpackVoid
|
||||
storage:
|
||||
@@ -168,7 +163,7 @@
|
||||
- CableApcStack
|
||||
- SheetPlasteel
|
||||
- SheetSteel
|
||||
- WeaponBeamCannon
|
||||
- WeaponAdvancedLaser
|
||||
belt:
|
||||
- RCDCombat
|
||||
|
||||
@@ -192,8 +187,8 @@
|
||||
storage:
|
||||
back:
|
||||
- CrowbarRed
|
||||
- BoxFlashbang
|
||||
- WeaponLaserCannon
|
||||
- ERTGearSelectorGunAmberSec
|
||||
- ERTGearSelectorMedsAmber
|
||||
belt:
|
||||
- Zipties
|
||||
- Zipties
|
||||
@@ -208,25 +203,25 @@
|
||||
pocket1: WeaponEnergyGunPistol
|
||||
storage:
|
||||
back:
|
||||
- CrowbarRed
|
||||
- MagazineLaser
|
||||
- MagazineLaser
|
||||
- MagazineLaser
|
||||
- WeaponRifleLaserERT
|
||||
- ToolDebug
|
||||
- ERTGearSelectorGunRedSec
|
||||
- ERTGearSelectorMedsRed
|
||||
|
||||
- type: startingGear
|
||||
parent: ERTSecurityGearRed
|
||||
id: ERTSecurityGearGamma
|
||||
equipment:
|
||||
outerClothing: ClothingOuterHardsuitERTSecurityElite
|
||||
pocket1: CrowbarRed
|
||||
inhand:
|
||||
- WeaponImmolatorMulti
|
||||
- PortableRecharger
|
||||
pocket1: WeaponAdvancedLaser
|
||||
storage:
|
||||
back:
|
||||
- WeaponEnergyGunAdvanced
|
||||
- BoxC4
|
||||
- DoorRemoteCustom
|
||||
- ERTGearSelectorGunGammaSec
|
||||
- ERTGearSelectorMedsGammaSec
|
||||
- ERTGearSelectorGammaSecUtility
|
||||
- ToolDebug
|
||||
- Multitool
|
||||
- WelderIndustrialAdvanced
|
||||
|
||||
# Medical
|
||||
|
||||
@@ -247,7 +242,7 @@
|
||||
pocket2: FlashlightSeclite
|
||||
storage:
|
||||
back:
|
||||
- WeaponEnergyGunMini
|
||||
- WeaponAdvancedLaser
|
||||
- MedkitCombatFilled
|
||||
- CrowbarRed
|
||||
- ChemistryBottleEpinephrine
|
||||
@@ -263,7 +258,7 @@
|
||||
mask: ClothingMaskGasERT
|
||||
outerClothing: ClothingOuterHardsuitERTMedicalBase
|
||||
inhand:
|
||||
- WeaponEnergyGun
|
||||
- WeaponAdvancedLaser
|
||||
storage:
|
||||
back:
|
||||
- MedkitCombatFilled
|
||||
@@ -281,7 +276,7 @@
|
||||
equipment:
|
||||
outerClothing: ClothingOuterHardsuitERTMedicalElite
|
||||
inhand:
|
||||
- WeaponEnergyGunPistol
|
||||
- WeaponAdvancedLaser
|
||||
storage:
|
||||
back:
|
||||
- MedkitCombatFilled
|
||||
@@ -325,7 +320,7 @@
|
||||
shoes: ClothingShoesBootsERTMagboots
|
||||
mask: ClothingMaskGasERT
|
||||
outerClothing: ClothingOuterHardsuitERTJanitorBase
|
||||
pocket1: WeaponEnergyGunMini
|
||||
pocket1: WeaponAdvancedLaser
|
||||
pocket2: FlashlightSeclite
|
||||
inhand:
|
||||
- AdvMopItem
|
||||
@@ -342,4 +337,36 @@
|
||||
id: ERTJanitorGearGamma
|
||||
equipment:
|
||||
outerClothing: ClothingOuterHardsuitERTJanitorElite
|
||||
pocket1: WeaponEnergyGunPistol
|
||||
pocket1: WeaponAdvancedLaser
|
||||
|
||||
# SRT
|
||||
|
||||
- type: startingGear
|
||||
id: SRTOfficerBase
|
||||
equipment:
|
||||
jumpsuit: ClothingUniformJumpsuitDeathSquad
|
||||
back: ClothingBackpackDeathSquadFilledBase
|
||||
shoes: ClothingShoesBootsERTMagboots
|
||||
head: ClothingHeadHatBeretCommand
|
||||
eyes: ClothingEyesERTInformationHud
|
||||
gloves: ClothingHandsGlovesCombat
|
||||
mask: ClothingMaskGasDeathSquad
|
||||
outerClothing: ClothingOuterHardsuitSRT
|
||||
suitstorage: JetpackBlackFilled
|
||||
id: DeathsquadPDA
|
||||
ears: ClothingHeadsetAltCentCom
|
||||
belt: ClothingBeltMilitaryWebbingERTMedicine
|
||||
pocket1: DoubleEmergencyOxygenTankFilled
|
||||
pocket2: WeaponRevolverMateba
|
||||
|
||||
- type: startingGear
|
||||
id: SRTOfficerBlack
|
||||
parent: SRTOfficerBase
|
||||
equipment:
|
||||
back: ClothingBackpackDeathSquadFilledBlack
|
||||
|
||||
- type: startingGear
|
||||
id: SRTOfficerEpsilon
|
||||
parent: SRTOfficerBase
|
||||
equipment:
|
||||
back: ClothingBackpackDeathSquadFilledEpsilon
|
||||
|
||||
@@ -141,71 +141,3 @@
|
||||
- type: HitmanRole
|
||||
- type: RoleBriefing
|
||||
briefing: hitman-briefing
|
||||
|
||||
- type: entity
|
||||
parent: BaseMindRoleAntag
|
||||
id: MindRoleLoyalist
|
||||
name: Loyalist Role
|
||||
components:
|
||||
- type: MindRole
|
||||
antagPrototype: HeadLoyalist
|
||||
exclusiveAntag: true
|
||||
roleType: TeamAntagonist
|
||||
subtype: role-subtype-loyalist
|
||||
- type: LoyalistRole
|
||||
- type: RoleBriefing
|
||||
briefing: antag-Loyalist.briefing
|
||||
- type: ObjectiveRole
|
||||
objectives:
|
||||
- LoyalistObjectiveCrewMajority
|
||||
- LoyalistObjectiveProtectCommand
|
||||
- LoyalistObjectiveDeclareLoyalty
|
||||
- type: ActionGrant
|
||||
actions:
|
||||
- ActionLoyalistOfferConversion
|
||||
- type: ActionGrantRole
|
||||
- type: UprisingRole
|
||||
side: Loyalist
|
||||
|
||||
- type: entity
|
||||
parent: MindRoleLoyalist
|
||||
id: MindRoleHeadLoyalist
|
||||
name: Head Loyalist Role
|
||||
components:
|
||||
- type: MindRole
|
||||
subtype: role-subtype-head-loyalist
|
||||
- type: UprisingInconvertibleRole
|
||||
|
||||
- type: entity
|
||||
parent: BaseMindRoleAntag
|
||||
id: MindRoleInsurgent
|
||||
name: Insurgent Role
|
||||
components:
|
||||
- type: MindRole
|
||||
antagPrototype: HeadInsurgent
|
||||
exclusiveAntag: true
|
||||
roleType: TeamAntagonist
|
||||
subtype: role-subtype-insurgent
|
||||
- type: InsurgentRole
|
||||
- type: RoleBriefing
|
||||
briefing: antag-Insurgent.briefing
|
||||
- type: ObjectiveRole
|
||||
objectives:
|
||||
- InsurgentObjectiveCrewMajority
|
||||
- InsurgentObjectiveIncapacitateCommand
|
||||
- InsurgentObjectiveTakeOver
|
||||
- type: ActionGrant
|
||||
actions:
|
||||
- ActionInsurgentOfferConversion
|
||||
- type: ActionGrantRole
|
||||
- type: UprisingRole
|
||||
side: Insurgent
|
||||
|
||||
- type: entity
|
||||
parent: MindRoleInsurgent
|
||||
id: MindRoleHeadInsurgent
|
||||
name: Head Insurgent Role
|
||||
components:
|
||||
- type: MindRole
|
||||
subtype: role-subtype-head-insurgent
|
||||
- type: UprisingInconvertibleRole
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
- type: gamePreset
|
||||
id: Uprising
|
||||
alias:
|
||||
- uprising
|
||||
name: preset-Uprising.title
|
||||
description: preset-Uprising.description
|
||||
showInVote: false
|
||||
cooldown: 1
|
||||
rules:
|
||||
- UprisingRule
|
||||
- SubGamemodesRule
|
||||
- MeteorSwarmScheduler
|
||||
- SpaceTrafficControlEventScheduler
|
||||
- BasicRoundstartVariation
|
||||
- BasicStationEventScheduler
|
||||
- GlimmerEventScheduler
|
||||
@@ -1,10 +1,9 @@
|
||||
- type: weightedRandom
|
||||
id: SecretDeltaV
|
||||
weights:
|
||||
Survival: 0.20
|
||||
Survival: 0.30
|
||||
Nukeops: 0.15
|
||||
Zombie: 0.10
|
||||
Traitor: 0.35
|
||||
Uprising: 0.10
|
||||
CosmicCult: 0.10 # my cult so cosmic!
|
||||
#Pirates: 0.15 #ahoy me bucko
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
<Document>
|
||||
# Frozen Treats
|
||||
Alcohol isn't for everyone; An icy treat can be a great way to relax, especially during a hot day!
|
||||
|
||||
<GuideReagentGroupEmbed Group="FrozenTreats"/>
|
||||
</Document>
|
||||
|
After Width: | Height: | Size: 320 B |
|
After Width: | Height: | Size: 317 B |
|
After Width: | Height: | Size: 462 B |
|
After Width: | Height: | Size: 295 B |
|
After Width: | Height: | Size: 317 B |
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Made by Sal_DragonsNOA for SS14.",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
},
|
||||
{
|
||||
"name": "equipped-HELMET",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "equipped-HELMET-vox",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "inhand-left",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "inhand-right",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 1002 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 946 B |
|
After Width: | Height: | Size: 488 B |
|
After Width: | Height: | Size: 552 B |
|
After Width: | Height: | Size: 571 B |
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Edited from bartender jumpsuit from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github), monkey made by brainfood1183 (github) for ss14, default suit edit by Skarletto (github) | Folded version taken from tgstation (https://github.com/tgstation/tgstation/blob/5ed5566dbf09507cb99768faa696f8c3f8f65660/icons/mob/uniform.dmi) and edited by Pinkbat5 (github). Soda jerk edit by Sal_DragonsNOA for SS14.",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
},
|
||||
{
|
||||
"name": "equipped-INNERCLOTHING",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "folded-equipped-INNERCLOTHING",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "equipped-INNERCLOTHING-monkey",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "inhand-left",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "inhand-right",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
Before Width: | Height: | Size: 325 B |
|
Before Width: | Height: | Size: 265 B |
|
Before Width: | Height: | Size: 257 B |
|
Before Width: | Height: | Size: 227 B |
|
Before Width: | Height: | Size: 239 B |
@@ -1,35 +0,0 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC0-1.0",
|
||||
"copyright": "made by sowelipililimute (GitHub)",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "loyalist_conversion"
|
||||
},
|
||||
{
|
||||
"name": "insurgent_conversion"
|
||||
},
|
||||
{
|
||||
"name": "protect"
|
||||
},
|
||||
{
|
||||
"name": "overthrow"
|
||||
},
|
||||
{
|
||||
"name": "take_over"
|
||||
},
|
||||
{
|
||||
"name": "loyalty"
|
||||
},
|
||||
{
|
||||
"name": "conversion"
|
||||
},
|
||||
{
|
||||
"name": "conversion_question"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
Before Width: | Height: | Size: 317 B |
|
Before Width: | Height: | Size: 258 B |
|
Before Width: | Height: | Size: 258 B |
|
After Width: | Height: | Size: 555 B |
|
After Width: | Height: | Size: 545 B |
|
After Width: | Height: | Size: 434 B |