Merge branch 'master' of ssh://github.com/space-wizards/space-station-14 into staging
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
<DefaultWindow xmlns="https://spacestation14.io"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
MinSize="280 160" Title="Temperature Control Unit">
|
||||
MinSize="280 160" Title="{Loc comp-space-heater-ui-title}">
|
||||
|
||||
<BoxContainer Name="VboxContainer" Orientation="Vertical" Margin="5 5 5 5" SeparationOverride="10">
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ namespace Content.Client.Ghost
|
||||
[Dependency] private readonly IClientConsoleHost _console = default!;
|
||||
[Dependency] private readonly IPlayerManager _playerManager = default!;
|
||||
[Dependency] private readonly SharedActionsSystem _actions = default!;
|
||||
[Dependency] private readonly PointLightSystem _pointLightSystem = default!;
|
||||
[Dependency] private readonly ContentEyeSystem _contentEye = default!;
|
||||
|
||||
public int AvailableGhostRoleCount { get; private set; }
|
||||
@@ -79,8 +80,27 @@ namespace Content.Client.Ghost
|
||||
if (args.Handled)
|
||||
return;
|
||||
|
||||
Popup.PopupEntity(Loc.GetString("ghost-gui-toggle-lighting-manager-popup"), args.Performer);
|
||||
_contentEye.RequestToggleLight(uid, component);
|
||||
TryComp<PointLightComponent>(uid, out var light);
|
||||
|
||||
if (!component.DrawLight)
|
||||
{
|
||||
// normal lighting
|
||||
Popup.PopupEntity(Loc.GetString("ghost-gui-toggle-lighting-manager-popup-normal"), args.Performer);
|
||||
_contentEye.RequestEye(component.DrawFov, true);
|
||||
}
|
||||
else if (!light?.Enabled ?? false) // skip this option if we have no PointLightComponent
|
||||
{
|
||||
// enable personal light
|
||||
Popup.PopupEntity(Loc.GetString("ghost-gui-toggle-lighting-manager-popup-personal-light"), args.Performer);
|
||||
_pointLightSystem.SetEnabled(uid, true, light);
|
||||
}
|
||||
else
|
||||
{
|
||||
// fullbright mode
|
||||
Popup.PopupEntity(Loc.GetString("ghost-gui-toggle-lighting-manager-popup-fullbright"), args.Performer);
|
||||
_contentEye.RequestEye(component.DrawFov, false);
|
||||
_pointLightSystem.SetEnabled(uid, false, light);
|
||||
}
|
||||
args.Handled = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
using Content.Shared.Magic;
|
||||
using Content.Shared.Magic.Events;
|
||||
|
||||
namespace Content.Client.Magic;
|
||||
|
||||
public sealed class MagicSystem : SharedMagicSystem;
|
||||
public sealed class MagicSystem : SharedMagicSystem
|
||||
{
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ using Robust.Client.Animations;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Shared.Animations;
|
||||
using Robust.Shared.Random;
|
||||
using Robust.Shared.Timing;
|
||||
|
||||
namespace Content.Client.Orbit;
|
||||
|
||||
@@ -11,8 +12,8 @@ public sealed class OrbitVisualsSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly IRobustRandom _robustRandom = default!;
|
||||
[Dependency] private readonly AnimationPlayerSystem _animations = default!;
|
||||
[Dependency] private readonly IGameTiming _timing = default!;
|
||||
|
||||
private readonly string _orbitAnimationKey = "orbiting";
|
||||
private readonly string _orbitStopKey = "orbiting_stop";
|
||||
|
||||
public override void Initialize()
|
||||
@@ -21,11 +22,11 @@ public sealed class OrbitVisualsSystem : EntitySystem
|
||||
|
||||
SubscribeLocalEvent<OrbitVisualsComponent, ComponentInit>(OnComponentInit);
|
||||
SubscribeLocalEvent<OrbitVisualsComponent, ComponentRemove>(OnComponentRemove);
|
||||
SubscribeLocalEvent<OrbitVisualsComponent, AnimationCompletedEvent>(OnAnimationCompleted);
|
||||
}
|
||||
|
||||
private void OnComponentInit(EntityUid uid, OrbitVisualsComponent component, ComponentInit args)
|
||||
{
|
||||
_robustRandom.SetSeed((int)_timing.CurTime.TotalMilliseconds);
|
||||
component.OrbitDistance =
|
||||
_robustRandom.NextFloat(0.75f * component.OrbitDistance, 1.25f * component.OrbitDistance);
|
||||
|
||||
@@ -38,15 +39,10 @@ public sealed class OrbitVisualsSystem : EntitySystem
|
||||
}
|
||||
|
||||
var animationPlayer = EnsureComp<AnimationPlayerComponent>(uid);
|
||||
if (_animations.HasRunningAnimation(uid, animationPlayer, _orbitAnimationKey))
|
||||
return;
|
||||
|
||||
if (_animations.HasRunningAnimation(uid, animationPlayer, _orbitStopKey))
|
||||
{
|
||||
_animations.Stop(uid, animationPlayer, _orbitStopKey);
|
||||
_animations.Stop((uid, animationPlayer), _orbitStopKey);
|
||||
}
|
||||
|
||||
_animations.Play(uid, animationPlayer, GetOrbitAnimation(component), _orbitAnimationKey);
|
||||
}
|
||||
|
||||
private void OnComponentRemove(EntityUid uid, OrbitVisualsComponent component, ComponentRemove args)
|
||||
@@ -57,14 +53,9 @@ public sealed class OrbitVisualsSystem : EntitySystem
|
||||
sprite.EnableDirectionOverride = false;
|
||||
|
||||
var animationPlayer = EnsureComp<AnimationPlayerComponent>(uid);
|
||||
if (_animations.HasRunningAnimation(uid, animationPlayer, _orbitAnimationKey))
|
||||
{
|
||||
_animations.Stop(uid, animationPlayer, _orbitAnimationKey);
|
||||
}
|
||||
|
||||
if (!_animations.HasRunningAnimation(uid, animationPlayer, _orbitStopKey))
|
||||
{
|
||||
_animations.Play(uid, animationPlayer, GetStopAnimation(component, sprite), _orbitStopKey);
|
||||
_animations.Play((uid, animationPlayer), GetStopAnimation(component, sprite), _orbitStopKey);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,7 +65,8 @@ public sealed class OrbitVisualsSystem : EntitySystem
|
||||
|
||||
foreach (var (orbit, sprite) in EntityManager.EntityQuery<OrbitVisualsComponent, SpriteComponent>())
|
||||
{
|
||||
var angle = new Angle(Math.PI * 2 * orbit.Orbit);
|
||||
var progress = (float)(_timing.CurTime.TotalSeconds / orbit.OrbitLength) % 1;
|
||||
var angle = new Angle(Math.PI * 2 * progress);
|
||||
var vec = angle.RotateVec(new Vector2(orbit.OrbitDistance, 0));
|
||||
|
||||
sprite.Rotation = angle;
|
||||
@@ -82,38 +74,6 @@ public sealed class OrbitVisualsSystem : EntitySystem
|
||||
}
|
||||
}
|
||||
|
||||
private void OnAnimationCompleted(EntityUid uid, OrbitVisualsComponent component, AnimationCompletedEvent args)
|
||||
{
|
||||
if (args.Key == _orbitAnimationKey && TryComp(uid, out AnimationPlayerComponent? animationPlayer))
|
||||
{
|
||||
_animations.Play(uid, animationPlayer, GetOrbitAnimation(component), _orbitAnimationKey);
|
||||
}
|
||||
}
|
||||
|
||||
private Animation GetOrbitAnimation(OrbitVisualsComponent component)
|
||||
{
|
||||
var length = component.OrbitLength;
|
||||
|
||||
return new Animation()
|
||||
{
|
||||
Length = TimeSpan.FromSeconds(length),
|
||||
AnimationTracks =
|
||||
{
|
||||
new AnimationTrackComponentProperty()
|
||||
{
|
||||
ComponentType = typeof(OrbitVisualsComponent),
|
||||
Property = nameof(OrbitVisualsComponent.Orbit),
|
||||
KeyFrames =
|
||||
{
|
||||
new AnimationTrackProperty.KeyFrame(0.0f, 0f),
|
||||
new AnimationTrackProperty.KeyFrame(1.0f, length),
|
||||
},
|
||||
InterpolationMode = AnimationInterpolationMode.Linear
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private Animation GetStopAnimation(OrbitVisualsComponent component, SpriteComponent sprite)
|
||||
{
|
||||
var length = component.OrbitStopLength;
|
||||
|
||||
@@ -5,6 +5,7 @@ using Content.Server.Store.Systems;
|
||||
using Content.Server.Traitor.Uplink;
|
||||
using Content.Shared.FixedPoint;
|
||||
using Content.Shared.Inventory;
|
||||
using Content.Shared.Mind;
|
||||
using Content.Shared.Store;
|
||||
using Content.Shared.Store.Components;
|
||||
using Content.Shared.StoreDiscount.Components;
|
||||
@@ -64,6 +65,7 @@ public sealed class StoreTests
|
||||
await server.WaitAssertion(() =>
|
||||
{
|
||||
var invSystem = entManager.System<InventorySystem>();
|
||||
var mindSystem = entManager.System<SharedMindSystem>();
|
||||
|
||||
human = entManager.SpawnEntity("HumanUniformDummy", coordinates);
|
||||
uniform = entManager.SpawnEntity("UniformDummy", coordinates);
|
||||
@@ -72,6 +74,9 @@ public sealed class StoreTests
|
||||
Assert.That(invSystem.TryEquip(human, uniform, "jumpsuit"));
|
||||
Assert.That(invSystem.TryEquip(human, pda, "id"));
|
||||
|
||||
var mind = mindSystem.CreateMind(null);
|
||||
mindSystem.TransferTo(mind, human, mind: mind);
|
||||
|
||||
FixedPoint2 originalBalance = 20;
|
||||
uplinkSystem.AddUplink(human, originalBalance, null, true);
|
||||
|
||||
|
||||
@@ -892,5 +892,36 @@ public sealed partial class AdminVerbSystem
|
||||
Message = string.Join(": ", superslipName, Loc.GetString("admin-smite-super-slip-description"))
|
||||
};
|
||||
args.Verbs.Add(superslip);
|
||||
|
||||
var omniaccentName = Loc.GetString("admin-smite-omni-accent-name").ToLowerInvariant();
|
||||
Verb omniaccent = new()
|
||||
{
|
||||
Text = omniaccentName,
|
||||
Category = VerbCategory.Smite,
|
||||
Icon = new SpriteSpecifier.Rsi(new("Interface/Actions/voice-mask.rsi"), "icon"),
|
||||
Act = () =>
|
||||
{
|
||||
EnsureComp<BarkAccentComponent>(args.Target);
|
||||
EnsureComp<BleatingAccentComponent>(args.Target);
|
||||
EnsureComp<FrenchAccentComponent>(args.Target);
|
||||
EnsureComp<GermanAccentComponent>(args.Target);
|
||||
EnsureComp<LizardAccentComponent>(args.Target);
|
||||
EnsureComp<MobsterAccentComponent>(args.Target);
|
||||
EnsureComp<MothAccentComponent>(args.Target);
|
||||
EnsureComp<OwOAccentComponent>(args.Target);
|
||||
EnsureComp<SkeletonAccentComponent>(args.Target);
|
||||
EnsureComp<SouthernAccentComponent>(args.Target);
|
||||
EnsureComp<SpanishAccentComponent>(args.Target);
|
||||
EnsureComp<StutteringAccentComponent>(args.Target);
|
||||
|
||||
if (_random.Next(0, 8) == 0)
|
||||
{
|
||||
EnsureComp<BackwardsAccentComponent>(args.Target); // was asked to make this at a low chance idk
|
||||
}
|
||||
},
|
||||
Impact = LogImpact.Extreme,
|
||||
Message = string.Join(": ", omniaccentName, Loc.GetString("admin-smite-omni-accent-description"))
|
||||
};
|
||||
args.Verbs.Add(omniaccent);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,5 +45,6 @@ public sealed class LogSystem : EntitySystem
|
||||
}
|
||||
|
||||
QueueDel(uid);
|
||||
args.Handled = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,6 +64,7 @@ namespace Content.Server.Cargo.Systems
|
||||
_audio.PlayPvs(component.ConfirmSound, uid);
|
||||
UpdateBankAccount(stationUid.Value, bank, (int) price);
|
||||
QueueDel(args.Used);
|
||||
args.Handled = true;
|
||||
}
|
||||
|
||||
private void OnInit(EntityUid uid, CargoOrderConsoleComponent orderConsole, ComponentInit args)
|
||||
|
||||
@@ -19,4 +19,17 @@ public sealed class MagicSystem : SharedMagicSystem
|
||||
{
|
||||
_chat.TrySendInGameICMessage(args.Performer, Loc.GetString(args.Speech), InGameICChatType.Speak, false);
|
||||
}
|
||||
|
||||
public override void OnVoidApplause(VoidApplauseSpellEvent ev)
|
||||
{
|
||||
base.OnVoidApplause(ev);
|
||||
|
||||
_chat.TryEmoteWithChat(ev.Performer, ev.Emote);
|
||||
|
||||
var perfXForm = Transform(ev.Performer);
|
||||
var targetXForm = Transform(ev.Target);
|
||||
|
||||
Spawn(ev.Effect, perfXForm.Coordinates);
|
||||
Spawn(ev.Effect, targetXForm.Coordinates);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -118,15 +118,15 @@ public sealed class HealingSystem : EntitySystem
|
||||
_audio.PlayPvs(healing.HealingEndSound, entity.Owner, AudioHelpers.WithVariation(0.125f, _random).WithVolume(1f));
|
||||
|
||||
// Logic to determine the whether or not to repeat the healing action
|
||||
args.Repeat = (HasDamage(entity.Comp, healing) && !dontRepeat);
|
||||
args.Repeat = (HasDamage(entity, healing) && !dontRepeat);
|
||||
if (!args.Repeat && !dontRepeat)
|
||||
_popupSystem.PopupEntity(Loc.GetString("medical-item-finished-using", ("item", args.Used)), entity.Owner, args.User);
|
||||
args.Handled = true;
|
||||
}
|
||||
|
||||
private bool HasDamage(DamageableComponent component, HealingComponent healing)
|
||||
private bool HasDamage(Entity<DamageableComponent> ent, HealingComponent healing)
|
||||
{
|
||||
var damageableDict = component.Damage.DamageDict;
|
||||
var damageableDict = ent.Comp.Damage.DamageDict;
|
||||
var healingDict = healing.Damage.DamageDict;
|
||||
foreach (var type in healingDict)
|
||||
{
|
||||
@@ -136,6 +136,23 @@ public sealed class HealingSystem : EntitySystem
|
||||
}
|
||||
}
|
||||
|
||||
if (TryComp<BloodstreamComponent>(ent, out var bloodstream))
|
||||
{
|
||||
// Is ent missing blood that we can restore?
|
||||
if (healing.ModifyBloodLevel > 0
|
||||
&& _solutionContainerSystem.ResolveSolution(ent.Owner, bloodstream.BloodSolutionName, ref bloodstream.BloodSolution, out var bloodSolution)
|
||||
&& bloodSolution.Volume < bloodSolution.MaxVolume)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// Is ent bleeding and can we stop it?
|
||||
if (healing.BloodlossModifier < 0 && bloodstream.BleedAmount > 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -175,14 +192,7 @@ public sealed class HealingSystem : EntitySystem
|
||||
if (TryComp<StackComponent>(uid, out var stack) && stack.Count < 1)
|
||||
return false;
|
||||
|
||||
var anythingToDo =
|
||||
HasDamage(targetDamage, component) ||
|
||||
component.ModifyBloodLevel > 0 // Special case if healing item can restore lost blood...
|
||||
&& TryComp<BloodstreamComponent>(target, out var bloodstream)
|
||||
&& _solutionContainerSystem.ResolveSolution(target, bloodstream.BloodSolutionName, ref bloodstream.BloodSolution, out var bloodSolution)
|
||||
&& bloodSolution.Volume < bloodSolution.MaxVolume; // ...and there is lost blood to restore.
|
||||
|
||||
if (!anythingToDo)
|
||||
if (!HasDamage((target, targetDamage), component))
|
||||
{
|
||||
_popupSystem.PopupEntity(Loc.GetString("medical-item-cant-use", ("item", uid)), uid, user);
|
||||
return false;
|
||||
|
||||
@@ -27,13 +27,12 @@ public sealed partial class BuyerAntagCondition : ListingCondition
|
||||
public override bool Condition(ListingConditionArgs args)
|
||||
{
|
||||
var ent = args.EntityManager;
|
||||
var minds = ent.System<SharedMindSystem>();
|
||||
|
||||
if (!minds.TryGetMind(args.Buyer, out var mindId, out var mind))
|
||||
return true;
|
||||
if (!ent.HasComponent<MindComponent>(args.Buyer))
|
||||
return true; // inanimate objects don't have minds
|
||||
|
||||
var roleSystem = ent.System<SharedRoleSystem>();
|
||||
var roles = roleSystem.MindGetAllRoleInfo(mindId);
|
||||
var roles = roleSystem.MindGetAllRoleInfo(args.Buyer);
|
||||
|
||||
if (Blacklist != null)
|
||||
{
|
||||
|
||||
@@ -30,14 +30,12 @@ public sealed partial class BuyerDepartmentCondition : ListingCondition
|
||||
var prototypeManager = IoCManager.Resolve<IPrototypeManager>();
|
||||
|
||||
var ent = args.EntityManager;
|
||||
var minds = ent.System<SharedMindSystem>();
|
||||
|
||||
// this is for things like surplus crate
|
||||
if (!minds.TryGetMind(args.Buyer, out var mindId, out _))
|
||||
return true;
|
||||
if (!ent.TryGetComponent<MindComponent>(args.Buyer, out var _))
|
||||
return true; // inanimate objects don't have minds
|
||||
|
||||
var jobs = ent.System<SharedJobSystem>();
|
||||
jobs.MindTryGetJob(mindId, out var job);
|
||||
jobs.MindTryGetJob(args.Buyer, out var job);
|
||||
|
||||
if (Blacklist != null && job != null)
|
||||
{
|
||||
|
||||
@@ -27,14 +27,12 @@ public sealed partial class BuyerJobCondition : ListingCondition
|
||||
public override bool Condition(ListingConditionArgs args)
|
||||
{
|
||||
var ent = args.EntityManager;
|
||||
var minds = ent.System<SharedMindSystem>();
|
||||
|
||||
// this is for things like surplus crate
|
||||
if (!minds.TryGetMind(args.Buyer, out var mindId, out _))
|
||||
return true;
|
||||
if (!ent.TryGetComponent<MindComponent>(args.Buyer, out var _))
|
||||
return true; // inanimate objects don't have minds
|
||||
|
||||
var jobs = ent.System<SharedJobSystem>();
|
||||
jobs.MindTryGetJob(mindId, out var job);
|
||||
jobs.MindTryGetJob(args.Buyer, out var job);
|
||||
|
||||
if (Blacklist != null)
|
||||
{
|
||||
|
||||
@@ -2,6 +2,7 @@ using Content.Shared.Humanoid;
|
||||
using Content.Shared.Store;
|
||||
using Content.Shared.Humanoid.Prototypes;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Set;
|
||||
using Content.Shared.Mind;
|
||||
|
||||
namespace Content.Server.Store.Conditions;
|
||||
|
||||
@@ -27,7 +28,10 @@ public sealed partial class BuyerSpeciesCondition : ListingCondition
|
||||
{
|
||||
var ent = args.EntityManager;
|
||||
|
||||
if (!ent.TryGetComponent<HumanoidAppearanceComponent>(args.Buyer, out var appearance))
|
||||
if (!ent.TryGetComponent<MindComponent>(args.Buyer, out var mind))
|
||||
return true; // needed to obtain body entityuid to check for humanoid appearance
|
||||
|
||||
if (!ent.TryGetComponent<HumanoidAppearanceComponent>(mind.OwnedEntity, out var appearance))
|
||||
return true; // inanimate or non-humanoid entities should be handled elsewhere, main example being surplus crates
|
||||
|
||||
if (Blacklist != null)
|
||||
|
||||
@@ -10,6 +10,7 @@ using JetBrains.Annotations;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Utility;
|
||||
using System.Linq;
|
||||
using Content.Shared.Mind;
|
||||
|
||||
namespace Content.Server.Store.Systems;
|
||||
|
||||
@@ -69,10 +70,13 @@ public sealed partial class StoreSystem : EntitySystem
|
||||
if (!component.OwnerOnly)
|
||||
return;
|
||||
|
||||
component.AccountOwner ??= args.User;
|
||||
if (!_mind.TryGetMind(args.User, out var mind, out _))
|
||||
return;
|
||||
|
||||
component.AccountOwner ??= mind;
|
||||
DebugTools.Assert(component.AccountOwner != null);
|
||||
|
||||
if (component.AccountOwner == args.User)
|
||||
if (component.AccountOwner == mind)
|
||||
return;
|
||||
|
||||
_popup.PopupEntity(Loc.GetString("store-not-account-owner", ("store", uid)), uid, args.User);
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
using Content.Server.Power.Components;
|
||||
using Content.Server.Power.EntitySystems;
|
||||
using Content.Server.Power.Events;
|
||||
using Content.Server.Stunnable.Components;
|
||||
using Content.Shared.Chemistry.EntitySystems;
|
||||
using Content.Shared.Damage.Events;
|
||||
using Content.Shared.Examine;
|
||||
|
||||
@@ -5,6 +5,7 @@ using Content.Shared.FixedPoint;
|
||||
using Content.Shared.Hands.EntitySystems;
|
||||
using Content.Shared.Implants;
|
||||
using Content.Shared.Inventory;
|
||||
using Content.Shared.Mind;
|
||||
using Content.Shared.PDA;
|
||||
using Content.Shared.Store;
|
||||
using Content.Shared.Store.Components;
|
||||
@@ -19,6 +20,7 @@ public sealed class UplinkSystem : EntitySystem
|
||||
[Dependency] private readonly IPrototypeManager _proto = default!;
|
||||
[Dependency] private readonly StoreSystem _store = default!;
|
||||
[Dependency] private readonly SharedSubdermalImplantSystem _subdermalImplant = default!;
|
||||
[Dependency] private readonly SharedMindSystem _mind = default!;
|
||||
|
||||
[ValidatePrototypeId<CurrencyPrototype>]
|
||||
public const string TelecrystalCurrencyPrototype = "Telecrystal";
|
||||
@@ -61,8 +63,12 @@ public sealed class UplinkSystem : EntitySystem
|
||||
/// </summary>
|
||||
private void SetUplink(EntityUid user, EntityUid uplink, FixedPoint2 balance, bool giveDiscounts)
|
||||
{
|
||||
if (!_mind.TryGetMind(user, out var mind, out _))
|
||||
return;
|
||||
|
||||
var store = EnsureComp<StoreComponent>(uplink);
|
||||
store.AccountOwner = user;
|
||||
|
||||
store.AccountOwner = mind;
|
||||
|
||||
store.Balance.Clear();
|
||||
_store.TryAddCurrency(new Dictionary<string, FixedPoint2> { { TelecrystalCurrencyPrototype, balance } },
|
||||
@@ -70,10 +76,10 @@ public sealed class UplinkSystem : EntitySystem
|
||||
store);
|
||||
|
||||
var uplinkInitializedEvent = new StoreInitializedEvent(
|
||||
TargetUser: user,
|
||||
TargetUser: mind,
|
||||
Store: uplink,
|
||||
UseDiscounts: giveDiscounts,
|
||||
Listings: _store.GetAvailableListings(user, uplink, store)
|
||||
Listings: _store.GetAvailableListings(mind, uplink, store)
|
||||
.ToArray());
|
||||
RaiseLocalEvent(ref uplinkInitializedEvent);
|
||||
}
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
namespace Content.Server.Weapons.Melee.EnergySword;
|
||||
|
||||
[RegisterComponent]
|
||||
internal sealed partial class EnergySwordComponent : Component
|
||||
{
|
||||
[ViewVariables(VVAccess.ReadWrite), DataField("activatedColor"), AutoNetworkedField]
|
||||
public Color ActivatedColor = Color.DodgerBlue;
|
||||
|
||||
/// <summary>
|
||||
/// A color option list for the random color picker.
|
||||
/// </summary>
|
||||
[DataField("colorOptions")]
|
||||
public List<Color> ColorOptions = new()
|
||||
{
|
||||
Color.Tomato,
|
||||
Color.DodgerBlue,
|
||||
Color.Aqua,
|
||||
Color.MediumSpringGreen,
|
||||
Color.MediumOrchid
|
||||
};
|
||||
|
||||
public bool Hacked = false;
|
||||
/// <summary>
|
||||
/// RGB cycle rate for hacked e-swords.
|
||||
/// </summary>
|
||||
[DataField("cycleRate")]
|
||||
public float CycleRate = 1f;
|
||||
}
|
||||
@@ -26,7 +26,8 @@ public sealed class SolutionSpikerSystem : EntitySystem
|
||||
|
||||
private void OnInteractUsing(Entity<RefillableSolutionComponent> entity, ref InteractUsingEvent args)
|
||||
{
|
||||
TrySpike(args.Used, args.Target, args.User, entity.Comp);
|
||||
if (TrySpike(args.Used, args.Target, args.User, entity.Comp))
|
||||
args.Handled = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -36,7 +37,7 @@ public sealed class SolutionSpikerSystem : EntitySystem
|
||||
/// <param name="source">Source of the solution.</param>
|
||||
/// <param name="target">Target to spike with the solution from source.</param>
|
||||
/// <param name="user">User spiking the target solution.</param>
|
||||
private void TrySpike(EntityUid source, EntityUid target, EntityUid user, RefillableSolutionComponent? spikableTarget = null,
|
||||
private bool TrySpike(EntityUid source, EntityUid target, EntityUid user, RefillableSolutionComponent? spikableTarget = null,
|
||||
SolutionSpikerComponent? spikableSource = null,
|
||||
SolutionContainerManagerComponent? managerSource = null,
|
||||
SolutionContainerManagerComponent? managerTarget = null)
|
||||
@@ -46,21 +47,23 @@ public sealed class SolutionSpikerSystem : EntitySystem
|
||||
|| !_solution.TryGetRefillableSolution((target, spikableTarget, managerTarget), out var targetSoln, out var targetSolution)
|
||||
|| !_solution.TryGetSolution((source, managerSource), spikableSource.SourceSolution, out _, out var sourceSolution))
|
||||
{
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (targetSolution.Volume == 0 && !spikableSource.IgnoreEmpty)
|
||||
{
|
||||
_popup.PopupClient(Loc.GetString(spikableSource.PopupEmpty, ("spiked-entity", target), ("spike-entity", source)), user, user);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!_solution.ForceAddSolution(targetSoln.Value, sourceSolution))
|
||||
return;
|
||||
return false;
|
||||
|
||||
_popup.PopupClient(Loc.GetString(spikableSource.Popup, ("spiked-entity", target), ("spike-entity", source)), user, user);
|
||||
sourceSolution.RemoveAllSolution();
|
||||
if (spikableSource.Delete)
|
||||
QueueDel(source);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,4 +17,16 @@ public sealed partial class DragInsertContainerComponent : Component
|
||||
/// </summary>
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||
public bool UseVerbs = true;
|
||||
|
||||
/// <summary>
|
||||
/// The delay in seconds before a drag will be completed.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public TimeSpan EntryDelay = TimeSpan.Zero;
|
||||
|
||||
/// <summary>
|
||||
/// If entry delay isn't zero, this sets whether an entity dragging itself into the container should be delayed.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public bool DelaySelfEntry = false;
|
||||
}
|
||||
|
||||
@@ -2,24 +2,28 @@ using Content.Shared.ActionBlocker;
|
||||
using Content.Shared.Administration.Logs;
|
||||
using Content.Shared.Climbing.Systems;
|
||||
using Content.Shared.Database;
|
||||
using Content.Shared.DoAfter;
|
||||
using Content.Shared.DragDrop;
|
||||
using Content.Shared.Verbs;
|
||||
using Robust.Shared.Containers;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared.Containers;
|
||||
|
||||
public sealed class DragInsertContainerSystem : EntitySystem
|
||||
public sealed partial class DragInsertContainerSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly ISharedAdminLogManager _adminLog = default!;
|
||||
[Dependency] private readonly ActionBlockerSystem _actionBlocker = default!;
|
||||
[Dependency] private readonly ClimbSystem _climb = default!;
|
||||
[Dependency] private readonly SharedContainerSystem _container = default!;
|
||||
[Dependency] private readonly SharedDoAfterSystem _doAfter = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<DragInsertContainerComponent, DragDropTargetEvent>(OnDragDropOn, before: new []{ typeof(ClimbSystem)});
|
||||
SubscribeLocalEvent<DragInsertContainerComponent, DragInsertContainerDoAfterEvent>(OnDragFinished);
|
||||
SubscribeLocalEvent<DragInsertContainerComponent, CanDropTargetEvent>(OnCanDragDropOn);
|
||||
SubscribeLocalEvent<DragInsertContainerComponent, GetVerbsEvent<AlternativeVerb>>(OnGetAlternativeVerb);
|
||||
}
|
||||
@@ -33,7 +37,34 @@ public sealed class DragInsertContainerSystem : EntitySystem
|
||||
if (!_container.TryGetContainer(ent, comp.ContainerId, out var container))
|
||||
return;
|
||||
|
||||
args.Handled = Insert(args.Dragged, args.User, ent, container);
|
||||
if (comp.EntryDelay <= TimeSpan.Zero ||
|
||||
!comp.DelaySelfEntry && args.User == args.Dragged)
|
||||
{
|
||||
//instant insertion
|
||||
args.Handled = Insert(args.Dragged, args.User, ent, container);
|
||||
return;
|
||||
}
|
||||
|
||||
//delayed insertion
|
||||
var doAfterArgs = new DoAfterArgs(EntityManager, args.User, comp.EntryDelay, new DragInsertContainerDoAfterEvent(), ent, args.Dragged, ent)
|
||||
{
|
||||
BreakOnDamage = true,
|
||||
BreakOnMove = true,
|
||||
NeedHand = false,
|
||||
};
|
||||
_doAfter.TryStartDoAfter(doAfterArgs);
|
||||
args.Handled = true;
|
||||
}
|
||||
|
||||
private void OnDragFinished(Entity<DragInsertContainerComponent> ent, ref DragInsertContainerDoAfterEvent args)
|
||||
{
|
||||
if (args.Handled || args.Cancelled || args.Args.Target == null)
|
||||
return;
|
||||
|
||||
if (!_container.TryGetContainer(ent, ent.Comp.ContainerId, out var container))
|
||||
return;
|
||||
|
||||
Insert(args.Args.Target.Value, args.User, ent, container);
|
||||
}
|
||||
|
||||
private void OnCanDragDropOn(Entity<DragInsertContainerComponent> ent, ref CanDropTargetEvent args)
|
||||
@@ -117,4 +148,9 @@ public sealed class DragInsertContainerSystem : EntitySystem
|
||||
_adminLog.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(user):player} inserted {ToPrettyString(target):player} into container {ToPrettyString(containerEntity)}");
|
||||
return true;
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed partial class DragInsertContainerDoAfterEvent : SimpleDoAfterEvent
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,13 +13,13 @@ public sealed partial class EnsnareableComponent : Component
|
||||
/// <summary>
|
||||
/// How much should this slow down the entities walk?
|
||||
/// </summary>
|
||||
[DataField]
|
||||
[DataField, AutoNetworkedField]
|
||||
public float WalkSpeed = 1.0f;
|
||||
|
||||
/// <summary>
|
||||
/// How much should this slow down the entities sprint?
|
||||
/// </summary>
|
||||
[DataField]
|
||||
[DataField, AutoNetworkedField]
|
||||
public float SprintSpeed = 1.0f;
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -38,6 +38,12 @@ public sealed partial class EnsnaringComponent : Component
|
||||
[DataField]
|
||||
public float StaminaDamage = 55f;
|
||||
|
||||
/// <summary>
|
||||
/// How many times can the ensnare be applied to the same target?
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public float MaxEnsnares = 1;
|
||||
|
||||
/// <summary>
|
||||
/// Should this ensnare someone when thrown?
|
||||
/// </summary>
|
||||
|
||||
@@ -256,23 +256,18 @@ public abstract class SharedEnsnareableSystem : EntitySystem
|
||||
if (!TryComp<EnsnareableComponent>(target, out var ensnareable))
|
||||
return false;
|
||||
|
||||
// Need to insert before free legs check.
|
||||
Container.Insert(ensnare, ensnareable.Container);
|
||||
var numEnsnares = ensnareable.Container.ContainedEntities.Count;
|
||||
|
||||
var legs = _body.GetBodyChildrenOfType(target, BodyPartType.Leg).Count();
|
||||
var ensnaredLegs = (2 * ensnareable.Container.ContainedEntities.Count);
|
||||
var freeLegs = legs - ensnaredLegs;
|
||||
|
||||
if (freeLegs > 0)
|
||||
//Don't do anything if the maximum number of ensnares is applied.
|
||||
if (numEnsnares >= component.MaxEnsnares)
|
||||
return false;
|
||||
|
||||
// Apply stamina damage to target if they weren't ensnared before.
|
||||
if (ensnareable.IsEnsnared != true)
|
||||
Container.Insert(ensnare, ensnareable.Container);
|
||||
|
||||
// Apply stamina damage to target
|
||||
if (TryComp<StaminaComponent>(target, out var stamina))
|
||||
{
|
||||
if (TryComp<StaminaComponent>(target, out var stamina))
|
||||
{
|
||||
_stamina.TakeStaminaDamage(target, component.StaminaDamage, with: ensnare, component: stamina);
|
||||
}
|
||||
_stamina.TakeStaminaDamage(target, component.StaminaDamage, with: ensnare, component: stamina);
|
||||
}
|
||||
|
||||
component.Ensnared = target;
|
||||
|
||||
@@ -21,10 +21,4 @@ public sealed partial class OrbitVisualsComponent : Component
|
||||
/// How long should the orbit stop animation last in seconds?
|
||||
/// </summary>
|
||||
public float OrbitStopLength = 1.0f;
|
||||
|
||||
/// <summary>
|
||||
/// How far along in the orbit, from 0 to 1, is this entity?
|
||||
/// </summary>
|
||||
[Animatable]
|
||||
public float Orbit { get; set; } = 0.0f;
|
||||
}
|
||||
|
||||
24
Content.Shared/Magic/Events/VoidApplauseSpellEvent.cs
Normal file
24
Content.Shared/Magic/Events/VoidApplauseSpellEvent.cs
Normal file
@@ -0,0 +1,24 @@
|
||||
using Content.Shared.Actions;
|
||||
using Content.Shared.Chat.Prototypes;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared.Magic.Events;
|
||||
|
||||
public sealed partial class VoidApplauseSpellEvent : EntityTargetActionEvent, ISpeakSpell
|
||||
{
|
||||
[DataField]
|
||||
public string? Speech { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Emote to use.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public ProtoId<EmotePrototype> Emote = "ClapSingle";
|
||||
|
||||
/// <summary>
|
||||
/// Visual effect entity that is spawned at both the user's and the target's location.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public EntProtoId Effect = "EffectVoidBlink";
|
||||
}
|
||||
@@ -7,7 +7,6 @@ using Content.Shared.Doors.Components;
|
||||
using Content.Shared.Doors.Systems;
|
||||
using Content.Shared.Hands.Components;
|
||||
using Content.Shared.Hands.EntitySystems;
|
||||
using Content.Shared.Humanoid;
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Inventory;
|
||||
using Content.Shared.Lock;
|
||||
@@ -15,9 +14,6 @@ using Content.Shared.Magic.Components;
|
||||
using Content.Shared.Magic.Events;
|
||||
using Content.Shared.Maps;
|
||||
using Content.Shared.Mind;
|
||||
using Content.Shared.Mind.Components;
|
||||
using Content.Shared.Mobs.Components;
|
||||
using Content.Shared.Mobs.Systems;
|
||||
using Content.Shared.Physics;
|
||||
using Content.Shared.Popups;
|
||||
using Content.Shared.Speech.Muting;
|
||||
@@ -37,6 +33,10 @@ using Robust.Shared.Spawners;
|
||||
|
||||
namespace Content.Shared.Magic;
|
||||
|
||||
// TODO: Move BeforeCast & Prerequirements (like Wizard clothes) to action comp
|
||||
// Alt idea - make it its own comp and split, like the Charge PR
|
||||
// TODO: Move speech to actionComp or again, its own ECS
|
||||
// TODO: Use the MagicComp just for pure backend things like spawning patterns?
|
||||
/// <summary>
|
||||
/// Handles learning and using spells (actions)
|
||||
/// </summary>
|
||||
@@ -60,7 +60,6 @@ public abstract class SharedMagicSystem : EntitySystem
|
||||
[Dependency] private readonly LockSystem _lock = default!;
|
||||
[Dependency] private readonly SharedHandsSystem _hands = default!;
|
||||
[Dependency] private readonly TagSystem _tag = default!;
|
||||
[Dependency] private readonly MobStateSystem _mobState = default!;
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
[Dependency] private readonly SharedMindSystem _mind = default!;
|
||||
[Dependency] private readonly SharedStunSystem _stun = default!;
|
||||
@@ -80,79 +79,7 @@ public abstract class SharedMagicSystem : EntitySystem
|
||||
SubscribeLocalEvent<ChargeSpellEvent>(OnChargeSpell);
|
||||
SubscribeLocalEvent<RandomGlobalSpawnSpellEvent>(OnRandomGlobalSpawnSpell);
|
||||
SubscribeLocalEvent<MindSwapSpellEvent>(OnMindSwapSpell);
|
||||
|
||||
// Spell wishlist
|
||||
// A wishlish of spells that I'd like to implement or planning on implementing in a future PR
|
||||
|
||||
// TODO: InstantDoAfterSpell and WorldDoafterSpell
|
||||
// Both would be an action that take in an event, that passes an event to trigger once the doafter is done
|
||||
// This would be three events:
|
||||
// 1 - Event that triggers from the action that starts the doafter
|
||||
// 2 - The doafter event itself, which passes the event with it
|
||||
// 3 - The event to trigger once the do-after finishes
|
||||
|
||||
// TODO: Inanimate objects to life ECS
|
||||
// AI sentience
|
||||
|
||||
// TODO: Flesh2Stone
|
||||
// Entity Target spell
|
||||
// Synergy with Inanimate object to life (detects player and allows player to move around)
|
||||
|
||||
// TODO: Lightning Spell
|
||||
// Should just fire lightning, try to prevent arc back to caster
|
||||
|
||||
// TODO: Magic Missile (homing projectile ecs)
|
||||
// Instant action, target any player (except self) on screen
|
||||
|
||||
// TODO: Random projectile ECS for magic-carp, wand of magic
|
||||
|
||||
// TODO: Recall Spell
|
||||
// mark any item in hand to recall
|
||||
// ItemRecallComponent
|
||||
// Event adds the component if it doesn't exist and the performer isn't stored in the comp
|
||||
// 2nd firing of the event checks to see if the recall comp has this uid, and if it does it calls it
|
||||
// if no free hands, summon at feet
|
||||
// if item deleted, clear stored item
|
||||
|
||||
// TODO: Jaunt (should be its own ECS)
|
||||
// Instant action
|
||||
// When clicked, disappear/reappear (goes to paused map)
|
||||
// option to restrict to tiles
|
||||
// option for requiring entry/exit (blood jaunt)
|
||||
// speed option
|
||||
|
||||
// TODO: Summon Events
|
||||
// List of wizard events to add into the event pool that frequently activate
|
||||
// floor is lava
|
||||
// change places
|
||||
// ECS that when triggered, will periodically trigger a random GameRule
|
||||
// Would need a controller/controller entity?
|
||||
|
||||
// TODO: Summon Guns
|
||||
// Summon a random gun at peoples feet
|
||||
// Get every alive player (not in cryo, not a simplemob)
|
||||
// TODO: After Antag Rework - Rare chance of giving gun collector status to people
|
||||
|
||||
// TODO: Summon Magic
|
||||
// Summon a random magic wand at peoples feet
|
||||
// Get every alive player (not in cryo, not a simplemob)
|
||||
// TODO: After Antag Rework - Rare chance of giving magic collector status to people
|
||||
|
||||
// TODO: Bottle of Blood
|
||||
// Summons Slaughter Demon
|
||||
// TODO: Slaughter Demon
|
||||
// Also see Jaunt
|
||||
|
||||
// TODO: Field Spells
|
||||
// Should be able to specify a grid of tiles (3x3 for example) that it effects
|
||||
// Timed despawn - so it doesn't last forever
|
||||
// Ignore caster - for spells that shouldn't effect the caster (ie if timestop should effect the caster)
|
||||
|
||||
// TODO: Touch toggle spell
|
||||
// 1 - When toggled on, show in hand
|
||||
// 2 - Block hand when toggled on
|
||||
// - Require free hand
|
||||
// 3 - use spell event when toggled & click
|
||||
SubscribeLocalEvent<VoidApplauseSpellEvent>(OnVoidApplause);
|
||||
}
|
||||
|
||||
private void OnBeforeCastSpell(Entity<MagicComponent> ent, ref BeforeCastSpellEvent args)
|
||||
@@ -402,8 +329,7 @@ public abstract class SharedMagicSystem : EntitySystem
|
||||
return;
|
||||
|
||||
var transform = Transform(args.Performer);
|
||||
|
||||
if (transform.MapID != args.Target.GetMapId(EntityManager) || !_interaction.InRangeUnobstructed(args.Performer, args.Target, range: 1000F, collisionMask: CollisionGroup.Opaque, popup: true))
|
||||
if (transform.MapID != _transform.GetMapId(args.Target) || !_interaction.InRangeUnobstructed(args.Performer, args.Target, range: 1000F, collisionMask: CollisionGroup.Opaque, popup: true))
|
||||
return;
|
||||
|
||||
_transform.SetCoordinates(args.Performer, args.Target);
|
||||
@@ -411,6 +337,17 @@ public abstract class SharedMagicSystem : EntitySystem
|
||||
Speak(args);
|
||||
args.Handled = true;
|
||||
}
|
||||
|
||||
public virtual void OnVoidApplause(VoidApplauseSpellEvent ev)
|
||||
{
|
||||
if (ev.Handled || !PassesSpellPrerequisites(ev.Action, ev.Performer))
|
||||
return;
|
||||
|
||||
ev.Handled = true;
|
||||
Speak(ev);
|
||||
|
||||
_transform.SwapPositions(ev.Performer, ev.Target);
|
||||
}
|
||||
// End Teleport Spells
|
||||
#endregion
|
||||
#region Spell Helpers
|
||||
@@ -435,7 +372,7 @@ public abstract class SharedMagicSystem : EntitySystem
|
||||
}
|
||||
// End Spell Helpers
|
||||
#endregion
|
||||
#region Smite Spells
|
||||
#region Touch Spells
|
||||
private void OnSmiteSpell(SmiteSpellEvent ev)
|
||||
{
|
||||
if (ev.Handled || !PassesSpellPrerequisites(ev.Action, ev.Performer))
|
||||
@@ -454,7 +391,8 @@ public abstract class SharedMagicSystem : EntitySystem
|
||||
|
||||
_body.GibBody(ev.Target, true, body);
|
||||
}
|
||||
// End Smite Spells
|
||||
|
||||
// End Touch Spells
|
||||
#endregion
|
||||
#region Knock Spells
|
||||
/// <summary>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
using Content.Shared.Implants;
|
||||
using Content.Shared.Implants.Components;
|
||||
using Content.Shared.Mindshield.Components;
|
||||
using Robust.Shared.Containers;
|
||||
|
||||
namespace Content.Shared.Mindshield.FakeMindShield;
|
||||
|
||||
@@ -13,7 +14,9 @@ public sealed class SharedFakeMindShieldImplantSystem : EntitySystem
|
||||
base.Initialize();
|
||||
SubscribeLocalEvent<SubdermalImplantComponent, FakeMindShieldToggleEvent>(OnFakeMindShieldToggle);
|
||||
SubscribeLocalEvent<FakeMindShieldImplantComponent, ImplantImplantedEvent>(ImplantCheck);
|
||||
SubscribeLocalEvent<FakeMindShieldImplantComponent, EntGotRemovedFromContainerMessage>(ImplantDraw);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Raise the Action of a Implanted user toggling their implant to the FakeMindshieldComponent on their entity
|
||||
/// </summary>
|
||||
@@ -33,4 +36,9 @@ public sealed class SharedFakeMindShieldImplantSystem : EntitySystem
|
||||
if (ev.Implanted != null)
|
||||
EnsureComp<FakeMindShieldComponent>(ev.Implanted.Value);
|
||||
}
|
||||
|
||||
private void ImplantDraw(Entity<FakeMindShieldImplantComponent> ent, ref EntGotRemovedFromContainerMessage ev)
|
||||
{
|
||||
RemComp<FakeMindShieldComponent>(ev.Container.Owner);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Shared.Slippery;
|
||||
|
||||
[UsedImplicitly]
|
||||
[UsedImplicitly]
|
||||
public sealed class SlipperySystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly ISharedAdminLogManager _adminLogger = default!;
|
||||
@@ -83,7 +83,7 @@ public sealed class SlipperySystem : EntitySystem
|
||||
{
|
||||
if (HasComp<SpeedModifiedByContactComponent>(args.OtherEntity))
|
||||
_speedModifier.AddModifiedEntity(args.OtherEntity);
|
||||
}
|
||||
}
|
||||
|
||||
private bool CanSlip(EntityUid uid, EntityUid toSlip)
|
||||
{
|
||||
|
||||
@@ -37,10 +37,10 @@ public sealed partial class StoreComponent : Component
|
||||
public HashSet<ProtoId<CurrencyPrototype>> CurrencyWhitelist = new();
|
||||
|
||||
/// <summary>
|
||||
/// The person who "owns" the store/account. Used if you want the listings to be fixed
|
||||
/// The person/mind who "owns" the store/account. Used if you want the listings to be fixed
|
||||
/// regardless of who activated it. I.E. role specific items for uplinks.
|
||||
/// </summary>
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
[DataField]
|
||||
public EntityUid? AccountOwner = null;
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -2,7 +2,7 @@ using Content.Shared.Stunnable;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.GameStates;
|
||||
|
||||
namespace Content.Server.Stunnable.Components;
|
||||
namespace Content.Shared.Stunnable;
|
||||
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
[AutoGenerateComponentState]
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
using Robust.Shared.GameStates;
|
||||
|
||||
namespace Content.Shared.Weapons.Melee.EnergySword;
|
||||
|
||||
[RegisterComponent, NetworkedComponent, Access(typeof(EnergySwordSystem))]
|
||||
[AutoGenerateComponentState]
|
||||
public sealed partial class EnergySwordComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// What color the blade will be when activated.
|
||||
/// </summary>
|
||||
[DataField, AutoNetworkedField]
|
||||
public Color ActivatedColor = Color.DodgerBlue;
|
||||
|
||||
/// <summary>
|
||||
/// A color option list for the random color picker.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public List<Color> ColorOptions = new()
|
||||
{
|
||||
Color.Tomato,
|
||||
Color.DodgerBlue,
|
||||
Color.Aqua,
|
||||
Color.MediumSpringGreen,
|
||||
Color.MediumOrchid
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Whether the energy sword has been pulsed by a multitool,
|
||||
/// causing the blade to cycle RGB colors.
|
||||
/// </summary>
|
||||
[DataField, AutoNetworkedField]
|
||||
public bool Hacked;
|
||||
|
||||
/// <summary>
|
||||
/// RGB cycle rate for hacked e-swords.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public float CycleRate = 1f;
|
||||
}
|
||||
@@ -5,7 +5,7 @@ using Content.Shared.Toggleable;
|
||||
using Content.Shared.Tools.Systems;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Server.Weapons.Melee.EnergySword;
|
||||
namespace Content.Shared.Weapons.Melee.EnergySword;
|
||||
|
||||
public sealed class EnergySwordSystem : EntitySystem
|
||||
{
|
||||
@@ -22,18 +22,22 @@ public sealed class EnergySwordSystem : EntitySystem
|
||||
SubscribeLocalEvent<EnergySwordComponent, InteractUsingEvent>(OnInteractUsing);
|
||||
}
|
||||
// Used to pick a random color for the blade on map init.
|
||||
private void OnMapInit(EntityUid uid, EnergySwordComponent comp, MapInitEvent args)
|
||||
private void OnMapInit(Entity<EnergySwordComponent> entity, ref MapInitEvent args)
|
||||
{
|
||||
if (comp.ColorOptions.Count != 0)
|
||||
comp.ActivatedColor = _random.Pick(comp.ColorOptions);
|
||||
if (entity.Comp.ColorOptions.Count != 0)
|
||||
{
|
||||
entity.Comp.ActivatedColor = _random.Pick(entity.Comp.ColorOptions);
|
||||
Dirty(entity);
|
||||
}
|
||||
|
||||
if (!TryComp(uid, out AppearanceComponent? appearanceComponent))
|
||||
if (!TryComp(entity, out AppearanceComponent? appearanceComponent))
|
||||
return;
|
||||
_appearance.SetData(uid, ToggleableLightVisuals.Color, comp.ActivatedColor, appearanceComponent);
|
||||
|
||||
_appearance.SetData(entity, ToggleableLightVisuals.Color, entity.Comp.ActivatedColor, appearanceComponent);
|
||||
}
|
||||
|
||||
// Used to make the make the blade multicolored when using a multitool on it.
|
||||
private void OnInteractUsing(EntityUid uid, EnergySwordComponent comp, InteractUsingEvent args)
|
||||
// Used to make the blade multicolored when using a multitool on it.
|
||||
private void OnInteractUsing(Entity<EnergySwordComponent> entity, ref InteractUsingEvent args)
|
||||
{
|
||||
if (args.Handled)
|
||||
return;
|
||||
@@ -42,14 +46,16 @@ public sealed class EnergySwordSystem : EntitySystem
|
||||
return;
|
||||
|
||||
args.Handled = true;
|
||||
comp.Hacked = !comp.Hacked;
|
||||
entity.Comp.Hacked = !entity.Comp.Hacked;
|
||||
|
||||
if (comp.Hacked)
|
||||
if (entity.Comp.Hacked)
|
||||
{
|
||||
var rgb = EnsureComp<RgbLightControllerComponent>(uid);
|
||||
_rgbSystem.SetCycleRate(uid, comp.CycleRate, rgb);
|
||||
var rgb = EnsureComp<RgbLightControllerComponent>(entity);
|
||||
_rgbSystem.SetCycleRate(entity, entity.Comp.CycleRate, rgb);
|
||||
}
|
||||
else
|
||||
RemComp<RgbLightControllerComponent>(uid);
|
||||
RemComp<RgbLightControllerComponent>(entity);
|
||||
|
||||
Dirty(entity);
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,11 @@
|
||||
license: "CC-BY-SA-3.0"
|
||||
copyright: "Taken from tgstation at https://github.com/tgstation/tgstation/commit/e1142f20f5e4661cb6845cfcf2dd69f864d67432"
|
||||
source: "https://github.com/tgstation/tgstation"
|
||||
- files:
|
||||
- clap-single.ogg
|
||||
license: "CC-BY-SA-3.0"
|
||||
copyright: "Taken from Citadel Station at https://github.com/Citadel-Station-13/Citadel-Station-13/commit/e145bdafe83e2cf38d148c39f073da5e7b0cb456"
|
||||
source: "https://github.com/Citadel-Station-13/Citadel-Station-13"
|
||||
- files:
|
||||
- snap1.ogg
|
||||
- snap2.ogg
|
||||
|
||||
BIN
Resources/Audio/Effects/Emotes/clap-single.ogg
Normal file
BIN
Resources/Audio/Effects/Emotes/clap-single.ogg
Normal file
Binary file not shown.
@@ -191,3 +191,8 @@
|
||||
license: "CC0-1.0"
|
||||
copyright: "by AftrLite (Github). Uses audio from hypospray.ogg and hiss.ogg (Found in Resources/Audio/Items)"
|
||||
source: "https://github.com/space-wizards/space-station-14/pull/33097"
|
||||
|
||||
- files: ["shutter.ogg"]
|
||||
license: "CC-BY-3.0"
|
||||
copyright: "Created by Tomlija, converted to OGG and modified by themias."
|
||||
source: "https://freesound.org/people/Tomlija/sounds/99565/"
|
||||
BIN
Resources/Audio/Machines/shutter.ogg
Normal file
BIN
Resources/Audio/Machines/shutter.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/Magic/Eldritch/voidblink.ogg
Normal file
BIN
Resources/Audio/Magic/Eldritch/voidblink.ogg
Normal file
Binary file not shown.
@@ -22,3 +22,9 @@
|
||||
copyright: '"forcewall.ogg", "knock.ogg", "blink.ogg", "ethereal_enter.ogg", and "ethereal_exit.ogg" by Citadel Station 13'
|
||||
license: CC-BY-SA-3.0
|
||||
source: https://github.com/Citadel-Station-13/Citadel-Station-13/commit/35a1723e98a60f375df590ca572cc90f1bb80bd5
|
||||
|
||||
- files:
|
||||
- voidblink.ogg
|
||||
copyright: '"voidblink.ogg" by Citadel Station 13'
|
||||
license: CC-BY-SA-3.0
|
||||
source: https://github.com/Citadel-Station-13/Citadel-Station-13/commit/e145bdafe83e2cf38d148c39f073da5e7b0cb456
|
||||
|
||||
@@ -737,5 +737,12 @@ Entries:
|
||||
id: 91
|
||||
time: '2025-01-21T23:23:47.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/34563
|
||||
- author: ScarKy0
|
||||
changes:
|
||||
- message: Added the omni-accent smite. It adds most accents onto the target.
|
||||
type: Add
|
||||
id: 92
|
||||
time: '2025-02-02T20:00:27.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/34824
|
||||
Name: Admin
|
||||
Order: 1
|
||||
|
||||
@@ -1,217 +1,4 @@
|
||||
Entries:
|
||||
- author: drakewill-CRL
|
||||
changes:
|
||||
- message: Produce harvested from sentient plants are no longer sentient themselves.
|
||||
type: Fix
|
||||
id: 7381
|
||||
time: '2024-09-16T00:04:45.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/32192
|
||||
- author: DrSmugleaf
|
||||
changes:
|
||||
- message: Fixed examine sometimes flickering and closing until you examine something
|
||||
around you.
|
||||
type: Fix
|
||||
id: 7382
|
||||
time: '2024-09-16T08:51:54.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/32205
|
||||
- author: ArtisticRoomba
|
||||
changes:
|
||||
- message: The Bruise-O-Mat alcohol vendor has been added to the nukie outpost,
|
||||
for all your pre-op drinking needs. Seems to have developed a witty personality,
|
||||
too...
|
||||
type: Add
|
||||
id: 7383
|
||||
time: '2024-09-16T08:59:00.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/32107
|
||||
- author: ArtisticRoomba
|
||||
changes:
|
||||
- message: The binary translator key in the syndie uplink is now correctly marked
|
||||
as syndicate contraband.
|
||||
type: Tweak
|
||||
id: 7384
|
||||
time: '2024-09-16T10:01:49.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/32193
|
||||
- author: MissKay1994
|
||||
changes:
|
||||
- message: Lizards are now poisoned by hot chocolate
|
||||
type: Fix
|
||||
id: 7385
|
||||
time: '2024-09-16T12:45:15.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/32147
|
||||
- author: Alice Liddel
|
||||
changes:
|
||||
- message: Crayon charges increased from 15 to 25
|
||||
type: Add
|
||||
id: 7386
|
||||
time: '2024-09-17T00:35:57.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/32061
|
||||
- author: TheShuEd
|
||||
changes:
|
||||
- message: Anomalous infections added! People can now be infected by anomalies!
|
||||
This allows you to use abnormal abilities, but can easily kill the host. To
|
||||
cure them, bombard them with containment particles, because if the anomaly inside
|
||||
them explodes, their bodies will be gibbed....
|
||||
type: Add
|
||||
- message: Flesh anomaly resprite
|
||||
type: Tweak
|
||||
- message: anomalies now disconnect from the anomaly synchronizer if they are too
|
||||
far away from it.
|
||||
type: Fix
|
||||
id: 7387
|
||||
time: '2024-09-17T09:49:19.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/31876
|
||||
- author: TheShuEd
|
||||
changes:
|
||||
- message: fix Tech anomaly loud sounds and superfast flickering
|
||||
type: Fix
|
||||
id: 7388
|
||||
time: '2024-09-17T16:05:38.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/32245
|
||||
- author: drakewill-CRL
|
||||
changes:
|
||||
- message: Fixed plant mutations carrying over to other plants and future rounds.
|
||||
type: Fix
|
||||
id: 7389
|
||||
time: '2024-09-17T19:45:42.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/32257
|
||||
- author: Moomoobeef
|
||||
changes:
|
||||
- message: Added more names to the pool of names the AI can have.
|
||||
type: Add
|
||||
id: 7390
|
||||
time: '2024-09-17T22:09:55.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/31951
|
||||
- author: Calecute
|
||||
changes:
|
||||
- message: Corrected cake batter recipe in guidebook
|
||||
type: Fix
|
||||
id: 7391
|
||||
time: '2024-09-18T15:15:34.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/32276
|
||||
- author: Beck Thompson
|
||||
changes:
|
||||
- message: Recycler no longer allows basic materials to be inserted into it.
|
||||
type: Fix
|
||||
id: 7392
|
||||
time: '2024-09-18T21:58:59.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/32144
|
||||
- author: deltanedas
|
||||
changes:
|
||||
- message: Epinephrine now adds Adrenaline, because it is.
|
||||
type: Tweak
|
||||
id: 7393
|
||||
time: '2024-09-18T23:00:48.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/32076
|
||||
- author: ShadowCommander
|
||||
changes:
|
||||
- message: Fixed clicking on chairs and beds with an entity buckled to them not
|
||||
unbuckling them.
|
||||
type: Fix
|
||||
id: 7394
|
||||
time: '2024-09-18T23:55:26.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/29998
|
||||
- author: Winkarst-cpu
|
||||
changes:
|
||||
- message: Now fire leaves burn marks on the tiles that were affected by it.
|
||||
type: Add
|
||||
id: 7395
|
||||
time: '2024-09-19T00:23:50.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/31939
|
||||
- author: ArchRBX
|
||||
changes:
|
||||
- message: Mass scanners and shuttle consoles now display coordinates beneath IFF
|
||||
labels
|
||||
type: Add
|
||||
- message: IFF labels that are beyond the viewport extents maintain their heading
|
||||
and don't hug corners
|
||||
type: Fix
|
||||
id: 7396
|
||||
time: '2024-09-19T01:25:47.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/31501
|
||||
- author: coffeeware
|
||||
changes:
|
||||
- message: a powered TEG won't produce infinite power when destroyed
|
||||
type: Fix
|
||||
id: 7397
|
||||
time: '2024-09-19T02:15:44.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/29972
|
||||
- author: Boaz1111
|
||||
changes:
|
||||
- message: Added plasma and uranium arrows.
|
||||
type: Add
|
||||
id: 7398
|
||||
time: '2024-09-19T08:41:24.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/31241
|
||||
- author: Ertanic
|
||||
changes:
|
||||
- message: Wanted list program and its cartridge.
|
||||
type: Add
|
||||
- message: The cartridge has been added to the HOS locker.
|
||||
type: Add
|
||||
- message: Added target to thief on wanted list cartridge.
|
||||
type: Add
|
||||
id: 7399
|
||||
time: '2024-09-19T10:22:02.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/31223
|
||||
- author: Errant
|
||||
changes:
|
||||
- message: Crew monitor list can now be filtered by name and job.
|
||||
type: Add
|
||||
id: 7400
|
||||
time: '2024-09-19T10:23:45.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/31659
|
||||
- author: deltanedas
|
||||
changes:
|
||||
- message: Removed the flare blueprint from salvage, it's now unlocked roundstart
|
||||
in autolathes.
|
||||
type: Remove
|
||||
id: 7401
|
||||
time: '2024-09-19T13:45:04.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/32303
|
||||
- author: deltanedas
|
||||
changes:
|
||||
- message: Increased the thieving beacon's range to 2 tiles.
|
||||
type: Tweak
|
||||
id: 7402
|
||||
time: '2024-09-19T13:55:31.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/31340
|
||||
- author: Winkarst-cpu
|
||||
changes:
|
||||
- message: The first editable line in the dialog window now grabs the keyboard focus
|
||||
once it's open.
|
||||
type: Fix
|
||||
id: 7403
|
||||
time: '2024-09-19T14:01:54.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/31294
|
||||
- author: Plykiya
|
||||
changes:
|
||||
- message: You can now transfer someone from a rollerbed to a bed directly.
|
||||
type: Tweak
|
||||
id: 7404
|
||||
time: '2024-09-19T14:08:33.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/32089
|
||||
- author: SaphireLattice
|
||||
changes:
|
||||
- message: Fland now has public glass airlocks sectioning the hallway.
|
||||
type: Fix
|
||||
id: 7405
|
||||
time: '2024-09-19T19:17:19.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/32264
|
||||
- author: Plykiya
|
||||
changes:
|
||||
- message: Cockroaches and mothroaches can no longer damage things with their bites.
|
||||
type: Tweak
|
||||
id: 7406
|
||||
time: '2024-09-19T22:15:45.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/32221
|
||||
- author: PopGamer46
|
||||
changes:
|
||||
- message: The rat king's rats now follow you instead of idling when there is no
|
||||
one to attack during the CheeseEm order
|
||||
type: Tweak
|
||||
id: 7407
|
||||
time: '2024-09-19T23:27:23.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/32181
|
||||
- author: JIPDawg
|
||||
changes:
|
||||
- message: Small Hydraulic clamp now correctly consumes 2% battery instead of recharging
|
||||
@@ -3908,3 +3695,213 @@
|
||||
id: 7880
|
||||
time: '2025-01-30T17:48:11.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/34557
|
||||
- author: keronshb
|
||||
changes:
|
||||
- message: Added Void's Applause! A Wizard Spell that switches your location with
|
||||
the target.
|
||||
type: Add
|
||||
id: 7881
|
||||
time: '2025-01-31T00:10:36.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/34591
|
||||
- author: Nox38
|
||||
changes:
|
||||
- message: Rebalanced Box's armory and increased its max security officers to 7.
|
||||
type: Tweak
|
||||
id: 7882
|
||||
time: '2025-01-31T07:23:03.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/34750
|
||||
- author: SlamBamActionman
|
||||
changes:
|
||||
- message: Forcefeeding pills now takes 2 seconds (was 1 second), while eating them
|
||||
takes 0.6 seconds (was 1 second).
|
||||
type: Tweak
|
||||
id: 7883
|
||||
time: '2025-01-31T11:59:38.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/34764
|
||||
- author: themias
|
||||
changes:
|
||||
- message: Updated sound effects for shutters
|
||||
type: Tweak
|
||||
id: 7884
|
||||
time: '2025-01-31T17:41:52.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/34774
|
||||
- author: Nox38
|
||||
changes:
|
||||
- message: Renamed riot bullet shield to ballistic shield
|
||||
type: Tweak
|
||||
- message: Renamed riot laser shield to ablative shield
|
||||
type: Tweak
|
||||
id: 7885
|
||||
time: '2025-01-31T23:39:22.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/34794
|
||||
- author: Nox38
|
||||
changes:
|
||||
- message: Set Marathon's max secoffs to 8.
|
||||
type: Tweak
|
||||
- message: Restocked Marathon's armory.
|
||||
type: Tweak
|
||||
id: 7886
|
||||
time: '2025-02-01T06:32:42.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/34798
|
||||
- author: ToxicSonicFan04
|
||||
changes:
|
||||
- message: Added Sink to Chemistry on Box Station!
|
||||
type: Add
|
||||
id: 7887
|
||||
time: '2025-02-01T06:35:36.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/34803
|
||||
- author: NazrinNya
|
||||
changes:
|
||||
- message: Flesh Kudzu now contains razorium, making it unsafe to eat.
|
||||
type: Tweak
|
||||
id: 7888
|
||||
time: '2025-02-01T12:10:20.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/32821
|
||||
- author: Boaz1111
|
||||
changes:
|
||||
- message: 'New Reagent: Coldsauce! It can be made using the Frost Oil from Chilly
|
||||
Peppers, similar to Hotsauce from Capsaicin Oil!'
|
||||
type: Add
|
||||
- message: Coldsauce packets and bottles now contain Coldsauce, instead of Frost
|
||||
Oil.
|
||||
type: Tweak
|
||||
id: 7889
|
||||
time: '2025-02-01T15:20:01.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/34458
|
||||
- author: Toxic, Nox
|
||||
changes:
|
||||
- message: Changed Packed armory.
|
||||
type: Tweak
|
||||
id: 7890
|
||||
time: '2025-02-01T21:19:28.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/34808
|
||||
- author: Minty642
|
||||
changes:
|
||||
- message: Added Gold and Silver Solidification, just mix with frost oil.
|
||||
type: Add
|
||||
id: 7891
|
||||
time: '2025-02-02T01:00:32.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/33239
|
||||
- author: Tayrtahn
|
||||
changes:
|
||||
- message: Ghosts and anomaly cores no longer jitter when starting to follow a target.
|
||||
type: Fix
|
||||
id: 7892
|
||||
time: '2025-02-02T01:38:03.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/34797
|
||||
- author: DieselMohawk
|
||||
changes:
|
||||
- message: Renamed ablative shield to laser shield
|
||||
type: Tweak
|
||||
- message: Changed description for laser shield & ballistic shield
|
||||
type: Tweak
|
||||
id: 7893
|
||||
time: '2025-02-03T01:04:04.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/34841
|
||||
- author: keronshb
|
||||
changes:
|
||||
- message: The Hypereutactic Blade has been added to the game as an alternative
|
||||
to the double bladed energy sword. It's a massive sword with high attack power,
|
||||
100% reflect chance, but slow movement and use speed.
|
||||
type: Add
|
||||
id: 7894
|
||||
time: '2025-02-03T21:22:22.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/32414
|
||||
- author: AgentSmithRadio
|
||||
changes:
|
||||
- message: Added manager wire hacking menus to nearly all vending machines. Get
|
||||
hacking and see what's hidden!
|
||||
type: Add
|
||||
id: 7895
|
||||
time: '2025-02-03T23:33:14.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/32934
|
||||
- author: ps3moira
|
||||
changes:
|
||||
- message: Changed 3D item sprites to cabinet perspective
|
||||
type: Tweak
|
||||
id: 7896
|
||||
time: '2025-02-04T07:52:10.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/34293
|
||||
- author: impubbi
|
||||
changes:
|
||||
- message: Bolas will now only be applied once.
|
||||
type: Fix
|
||||
id: 7897
|
||||
time: '2025-02-04T16:11:46.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/34723
|
||||
- author: slarticodefast
|
||||
changes:
|
||||
- message: Added binoculars. You can find them in maints loot and the warden's locker.
|
||||
type: Add
|
||||
id: 7898
|
||||
time: '2025-02-04T21:46:50.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/34687
|
||||
- author: Spacemann
|
||||
changes:
|
||||
- message: Added 4 randomized maintenance rooms to in Convex station. These will
|
||||
change every round with a different layout.
|
||||
type: Add
|
||||
id: 7899
|
||||
time: '2025-02-04T22:58:30.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/34866
|
||||
- author: Winkarst-cpu
|
||||
changes:
|
||||
- message: Observers now have a personal point light and can toggle it.
|
||||
type: Add
|
||||
id: 7900
|
||||
time: '2025-02-04T23:26:06.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/33607
|
||||
- author: whatston3
|
||||
changes:
|
||||
- message: Healing items that reduce bleeding can now be applied to undamaged mobs.
|
||||
type: Tweak
|
||||
id: 7901
|
||||
time: '2025-02-05T03:23:31.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/33526
|
||||
- author: DuckManZach
|
||||
changes:
|
||||
- message: Floor pills have some new interesting surprises!
|
||||
type: Add
|
||||
id: 7902
|
||||
time: '2025-02-05T08:42:27.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/34843
|
||||
- author: Gavin-TC
|
||||
changes:
|
||||
- message: Changed common utensil sprites to appear smaller and more proportionate.
|
||||
type: Tweak
|
||||
id: 7903
|
||||
time: '2025-02-05T13:08:53.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/34277
|
||||
- author: Booblesnoot42
|
||||
changes:
|
||||
- message: Inserting another person into a cryogenic sleeping unit is no longer
|
||||
instant.
|
||||
type: Tweak
|
||||
id: 7904
|
||||
time: '2025-02-05T14:46:21.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/34619
|
||||
- author: hyperDelegate
|
||||
changes:
|
||||
- message: The Nuclear Operative Reinforcement Teleporter now costs 30TC (was 35).
|
||||
type: Tweak
|
||||
id: 7905
|
||||
time: '2025-02-05T14:54:46.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/34675
|
||||
- author: Farrellka
|
||||
changes:
|
||||
- message: Removed the old long ears for human!
|
||||
type: Remove
|
||||
- message: Added more long (elf) ears for human!
|
||||
type: Add
|
||||
id: 7906
|
||||
time: '2025-02-05T16:49:04.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/33572
|
||||
- author: keronshb
|
||||
changes:
|
||||
- message: Disabler - decreased fire cost, increased projectile speed.
|
||||
type: Tweak
|
||||
- message: Disabler SMG - decreased fire cost, increased fire rate.
|
||||
type: Tweak
|
||||
id: 7907
|
||||
time: '2025-02-05T23:12:07.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/34890
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -56,6 +56,7 @@ admin-smite-vomit-organs-name = Vomit Organs
|
||||
admin-smite-ghostkick-name = Ghost Kick
|
||||
admin-smite-nyanify-name = Cat Ears
|
||||
admin-smite-kill-sign-name = Kill Sign
|
||||
admin-smite-omni-accent-name = Omni-Accent
|
||||
|
||||
## Smite descriptions
|
||||
|
||||
@@ -99,6 +100,7 @@ admin-smite-super-bonk-description = Slams them on every single table on the Sta
|
||||
admin-smite-super-bonk-lite-description= Slams them on every single table on the Station and beyond. Stops when the target is dead.
|
||||
admin-smite-terminate-description = Creates a Terminator ghost role with the sole objective of killing them.
|
||||
admin-smite-super-slip-description = Slips them really, really hard.
|
||||
admin-smite-omni-accent-description = Makes the target speak with almost every accent available.
|
||||
|
||||
## Tricks descriptions
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ chat-emote-name-squeak = Squeak
|
||||
chat-emote-name-thump = Thump Tail
|
||||
chat-emote-name-click = Click
|
||||
chat-emote-name-clap = Clap
|
||||
chat-emote-name-clap-single = Single Clap
|
||||
chat-emote-name-snap = Snap
|
||||
chat-emote-name-salute = Salute
|
||||
chat-emote-name-gasp = Gasp
|
||||
@@ -45,6 +46,7 @@ chat-emote-msg-squeak = squeaks.
|
||||
chat-emote-msg-thump = thumps {POSS-ADJ($entity)} tail.
|
||||
chat-emote-msg-click = clicks.
|
||||
chat-emote-msg-clap = claps!
|
||||
chat-emote-msg-clap-single = claps their hands together.
|
||||
chat-emote-msg-snap = snaps {POSS-ADJ($entity)} fingers.
|
||||
chat-emote-msg-salute = salutes.
|
||||
chat-emote-msg-gasp = gasps.
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
comp-space-heater-ui-thermostat = Thermostat:
|
||||
comp-space-heater-ui-title = Temperature Control Unit
|
||||
comp-space-heater-ui-thermostat = Thermostat:
|
||||
comp-space-heater-ui-mode = Mode
|
||||
comp-space-heater-ui-status-disabled = Off
|
||||
comp-space-heater-ui-status-enabled = On
|
||||
|
||||
@@ -35,11 +35,11 @@ criminal-records-permission-denied = Permission denied
|
||||
## Security channel notifications
|
||||
|
||||
criminal-records-console-wanted = {$name} ({$job}) was made wanted by {$officer} for: {$reason}.
|
||||
criminal-records-console-not-wanted = {$officer} cleared the wanted status of {$name} ({$job}).
|
||||
criminal-records-console-suspected = {$officer} marked {$name} ({$job}) as suspicious because of: {$reason}
|
||||
criminal-records-console-not-suspected = {$name} ({$job}) has been cleared of suspicion by {$officer}.
|
||||
criminal-records-console-detained = {$name} ({$job}) has been detained by {$officer}.
|
||||
criminal-records-console-released = {$name} ({$job}) has been released by {$officer}.
|
||||
criminal-records-console-not-wanted = {$officer} cleared the wanted status of {$name} ($job).
|
||||
criminal-records-console-paroled = {$name} ({$job}) has been released on parole by {$officer}.
|
||||
criminal-records-console-not-parole = {$officer} cleared the parole status of {$name} ({$job}).
|
||||
criminal-records-console-unknown-officer = <unknown>
|
||||
|
||||
@@ -73,7 +73,7 @@ names-ai-dataset-55 = Hivebot Overmind
|
||||
names-ai-dataset-56 = Huey
|
||||
|
||||
# A play on the fad apple spawned of putting "i" infront of your tech products name
|
||||
names-ai-dataset-57 = iAI
|
||||
names-ai-dataset-57 = iCore
|
||||
|
||||
# Hell on earth (web browser)
|
||||
names-ai-dataset-58 = I.E. 6
|
||||
@@ -99,7 +99,7 @@ names-ai-dataset-70 = Max 404
|
||||
names-ai-dataset-71 = Metalhead
|
||||
names-ai-dataset-72 = M.I.M.I
|
||||
names-ai-dataset-73 = MK ULTRA
|
||||
names-ai-dataset-74 = MoMMI
|
||||
names-ai-dataset-74 = Monarch
|
||||
names-ai-dataset-75 = Mugsy3000
|
||||
names-ai-dataset-76 = Multivac
|
||||
names-ai-dataset-77 = NCH
|
||||
|
||||
@@ -3,7 +3,9 @@ ghost-gui-ghost-warp-button = Ghost Warp
|
||||
ghost-gui-ghost-roles-button = Ghost Roles ({$count})
|
||||
ghost-gui-toggle-ghost-visibility-popup-on = Enabled visibility of ghosts.
|
||||
ghost-gui-toggle-ghost-visibility-popup-off = Disabled visibility of ghosts.
|
||||
ghost-gui-toggle-lighting-manager-popup = Toggled all lighting.
|
||||
ghost-gui-toggle-lighting-manager-popup-normal = Lighting normal.
|
||||
ghost-gui-toggle-lighting-manager-popup-personal-light = Enabled personal light.
|
||||
ghost-gui-toggle-lighting-manager-popup-fullbright = Fullbright mode.
|
||||
ghost-gui-toggle-fov-popup = Toggled field-of-view.
|
||||
|
||||
ghost-gui-toggle-hearing-popup-on = You can now hear all messages.
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
reagent-effect-status-effect-Stun = stunning
|
||||
reagent-effect-status-effect-KnockedDown = knockdown
|
||||
reagent-effect-status-effect-Jitter = jittering
|
||||
reagent-effect-status-effect-TemporaryBlindness = blindess
|
||||
reagent-effect-status-effect-TemporaryBlindness = blindness
|
||||
reagent-effect-status-effect-SeeingRainbows = hallucinations
|
||||
reagent-effect-status-effect-Muted = inability to speak
|
||||
reagent-effect-status-effect-Stutter = stuttering
|
||||
reagent-effect-status-effect-ForcedSleep = unconsciousness
|
||||
reagent-effect-status-effect-Drunk = drunkness
|
||||
reagent-effect-status-effect-Drunk = drunkenness
|
||||
reagent-effect-status-effect-PressureImmunity = pressure immunity
|
||||
reagent-effect-status-effect-Pacified = combat pacification
|
||||
reagent-effect-status-effect-RatvarianLanguage = ratvarian language patterns
|
||||
|
||||
@@ -6,3 +6,5 @@ action-speech-spell-fireball = ONI'SOMA!
|
||||
action-speech-spell-summon-guns = YOR'NEE VES-KORFA
|
||||
action-speech-spell-summon-magic = RYGOIN FEMA-VERECO
|
||||
action-speech-spell-mind-swap = GIN'YU CAPAN!
|
||||
action-speech-spell-cluwne = !KNOH
|
||||
action-speech-spell-slip = SLEE PARRI!
|
||||
|
||||
@@ -1 +1,6 @@
|
||||
marking-HumanLongEars = Long Ears
|
||||
marking-HumanLongEars = Long Ears Standard
|
||||
marking-LongEarsWide = Long Ears Wide
|
||||
marking-LongEarsSmall = Long Ears Small
|
||||
marking-LongEarsUpwards = Long Ears Upwards
|
||||
marking-LongEarsTall = Long Ears Tall
|
||||
marking-LongEarsThin = Long Ears Thin
|
||||
|
||||
3
Resources/Locale/en-US/reagents/frostoil.ftl
Normal file
3
Resources/Locale/en-US/reagents/frostoil.ftl
Normal file
@@ -0,0 +1,3 @@
|
||||
### Messages that pop up when metabolizing Frost Oil.
|
||||
|
||||
frost-oil-effect-light-cold = You feel a slight cold tingle in your throat...
|
||||
@@ -7,8 +7,8 @@ reagent-desc-bbq-sauce = Hand wipes not included.
|
||||
reagent-name-cornoil = corn oil
|
||||
reagent-desc-cornoil = Corn oil, A delicious oil used in cooking. Made from corn.
|
||||
|
||||
reagent-name-frostoil = frostoil
|
||||
reagent-desc-frostoil = Leaves the tongue numb in its passage.
|
||||
reagent-name-coldsauce = coldsauce
|
||||
reagent-desc-coldsauce = Leaves the tongue numb in its passage.
|
||||
|
||||
reagent-name-horseradish-sauce = horseradish sauce
|
||||
reagent-desc-horseradish-sauce = Smelly horseradish sauce.
|
||||
|
||||
@@ -36,3 +36,6 @@ reagent-desc-oil = Used by chefs to cook.
|
||||
|
||||
reagent-name-capsaicin-oil = Capsaicin Oil
|
||||
reagent-desc-capsaicin-oil = Capsaicin Oil is the ingredient found in different types of hot peppers.
|
||||
|
||||
reagent-name-frost-oil = Frost Oil
|
||||
reagent-desc-frost-oil = Frost Oil is the ingredient found in chilly peppers, a rare pepper mutation.
|
||||
|
||||
1
Resources/Locale/en-US/shutter/shutter.ftl
Normal file
1
Resources/Locale/en-US/shutter/shutter.ftl
Normal file
@@ -0,0 +1 @@
|
||||
shutter-rattle = *rattle rattle*
|
||||
@@ -1,10 +1,13 @@
|
||||
# Spells
|
||||
spellbook-fireball-name = Fireball
|
||||
spellbook-fireball-desc = Get most crew exploding with rage when they see this fireball heading toward them!
|
||||
spellbook-fireball-desc = Get most crew exploding with rage when they see this fireball heading toward them! Upgradeable.
|
||||
|
||||
spellbook-blink-name = Blink
|
||||
spellbook-blink-desc = Don't blink or you'll miss yourself teleporting away.
|
||||
|
||||
spellbook-voidapplause-name = Void Applause
|
||||
spellbook-voidapplause-desc = Swap places with the target, doesn't it make you want to do the boogie?
|
||||
|
||||
spellbook-force-wall-name = Force Wall
|
||||
spellbook-force-wall-desc = Make three walls of pure force that you can pass through, but other's can't.
|
||||
|
||||
@@ -23,6 +26,15 @@ spellbook-ethereal-jaunt-description = Slip into the ethereal plane to slip away
|
||||
spellbook-mind-swap-name = Mind Swap
|
||||
spellbook-mind-swap-description = Exchange bodies with another person!
|
||||
|
||||
spellbook-smite-name = Smite
|
||||
spellbook-smite-desc = Don't like them? EXPLODE them into giblets! Requires Wizard Robe & Hat.
|
||||
|
||||
spellbook-cluwne-name = Cluwne's Curse
|
||||
spellbook-cluwne-desc = For when you really hate someone and Smite isn't enough. Requires Wizard Robe & Hat.
|
||||
|
||||
spellbook-slip-name = Slippery Slope
|
||||
spellbook-slip-desc = Learn the ancient ways of the Janitor and curse your target to be slippery. Requires Wizard Robe & Hat.
|
||||
|
||||
# Equipment
|
||||
|
||||
spellbook-wand-polymorph-door-name = Wand of Entrance
|
||||
|
||||
@@ -17,6 +17,9 @@ uplink-esword-desc = A very dangerous energy sword that can reflect shots. Can b
|
||||
uplink-esword-double-name = Double Bladed Energy Sword
|
||||
uplink-esword-double-desc = A much more expensive counter part to the normal energy sword: with a much higher reflection chance, larger attack angle, higher structural damage, and faster swing. Makes a lot of noise when used or turned on.
|
||||
|
||||
uplink-hypereutactic-blade-name = Hypereutactic Blade
|
||||
uplink-hypereutactic-blade-desc = A gigantic energy sword with power that matches its looks. Requires two hands. Slow and unwieldy, yet pretty adept at reflecting. Previously made infamous by an operative wearing a joy mask. You wouldn't want to see this coming at you down the hall!
|
||||
|
||||
uplink-edagger-name = Energy Dagger
|
||||
uplink-edagger-desc = A small energy blade conveniently disguised in the form of a pen.
|
||||
|
||||
|
||||
2402
Resources/Maps/Dungeon/maints.yml
Normal file
2402
Resources/Maps/Dungeon/maints.yml
Normal file
File diff suppressed because it is too large
Load Diff
@@ -66,6 +66,11 @@ entities:
|
||||
bodyType: Dynamic
|
||||
- type: Fixtures
|
||||
fixtures: {}
|
||||
- type: DeviceNetwork
|
||||
configurators: []
|
||||
deviceLists: []
|
||||
transmitFrequencyId: ShuttleTimer
|
||||
deviceNetId: Wireless
|
||||
- type: OccluderTree
|
||||
- type: SpreaderGrid
|
||||
- type: Shuttle
|
||||
|
||||
@@ -541,7 +541,11 @@ entities:
|
||||
chunkSize: 4
|
||||
- type: GasTileOverlay
|
||||
- type: RadiationGridResistance
|
||||
- type: EmergencyShuttle
|
||||
- type: DeviceNetwork
|
||||
configurators: []
|
||||
deviceLists: []
|
||||
transmitFrequencyId: ShuttleTimer
|
||||
deviceNetId: Wireless
|
||||
- proto: AirAlarm
|
||||
entities:
|
||||
- uid: 218
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -395,7 +395,6 @@ entities:
|
||||
2109: -42,-13
|
||||
2152: -37,22
|
||||
2153: -36,22
|
||||
2182: -34,20
|
||||
2183: -38,15
|
||||
2310: -51,8
|
||||
2411: -60,1
|
||||
@@ -420,6 +419,7 @@ entities:
|
||||
2841: -48,6
|
||||
2861: -42,-16
|
||||
2862: -40,-16
|
||||
2871: -36,20
|
||||
- node:
|
||||
angle: 4.71238898038469 rad
|
||||
color: '#DE3A3AFF'
|
||||
@@ -1729,12 +1729,10 @@ entities:
|
||||
515: -30,13
|
||||
516: -30,15
|
||||
517: -30,17
|
||||
518: -30,19
|
||||
525: -28,16
|
||||
526: -28,19
|
||||
543: -32,11
|
||||
545: -32,18
|
||||
546: -32,19
|
||||
547: -32,20
|
||||
592: -32,26
|
||||
593: -32,27
|
||||
@@ -2263,7 +2261,6 @@ entities:
|
||||
523: -31,12
|
||||
533: -26,16
|
||||
534: -26,19
|
||||
535: -29,18
|
||||
536: -29,15
|
||||
537: -29,13
|
||||
614: -27,11
|
||||
@@ -2411,7 +2408,6 @@ entities:
|
||||
2166: -37,14
|
||||
2172: -35,18
|
||||
2176: -34,18
|
||||
2177: -36,18
|
||||
2180: -30,11
|
||||
2184: -33,18
|
||||
2717: 51,-5
|
||||
@@ -2422,6 +2418,7 @@ entities:
|
||||
2730: 29,-8
|
||||
2731: 30,-8
|
||||
2732: 31,-8
|
||||
2876: -36,18
|
||||
- node:
|
||||
color: '#EFB34196'
|
||||
id: QuarterTileOverlayGreyscale270
|
||||
@@ -2593,8 +2590,8 @@ entities:
|
||||
617: -27,10
|
||||
2173: -35,18
|
||||
2175: -34,18
|
||||
2178: -36,18
|
||||
2185: -33,18
|
||||
2875: -36,18
|
||||
- node:
|
||||
color: '#EFB34196'
|
||||
id: QuarterTileOverlayGreyscale90
|
||||
@@ -2844,7 +2841,6 @@ entities:
|
||||
decals:
|
||||
287: 31,4
|
||||
431: -2,-25
|
||||
2158: -34,16
|
||||
- node:
|
||||
color: '#EFB34196'
|
||||
id: ThreeQuarterTileOverlayGreyscale90
|
||||
@@ -3005,6 +3001,7 @@ entities:
|
||||
id: WarnEndS
|
||||
decals:
|
||||
2142: -37,20
|
||||
2868: -35,20
|
||||
- node:
|
||||
color: '#52B4E996'
|
||||
id: WarnFullGreyscale
|
||||
@@ -3024,7 +3021,6 @@ entities:
|
||||
1900: 26,15
|
||||
2097: -60,0
|
||||
2099: -60,2
|
||||
2146: -35,20
|
||||
2338: -47,-3
|
||||
2339: -47,-2
|
||||
2390: -55,4
|
||||
@@ -3051,6 +3047,7 @@ entities:
|
||||
2792: 6,15
|
||||
2802: 8,17
|
||||
2835: -53,8
|
||||
2867: -35,20
|
||||
- node:
|
||||
color: '#52B4E996'
|
||||
id: WarnLineGreyscaleE
|
||||
@@ -3155,11 +3152,9 @@ entities:
|
||||
924: 21,8
|
||||
2133: -59,4
|
||||
2140: -59,5
|
||||
2147: -35,20
|
||||
2167: -37,14
|
||||
2168: -37,15
|
||||
2169: -37,16
|
||||
2179: -36,18
|
||||
2342: -43,-3
|
||||
2343: -43,-2
|
||||
2387: -53,4
|
||||
@@ -3192,6 +3187,7 @@ entities:
|
||||
2831: -46,7
|
||||
2834: -46,8
|
||||
2838: -46,5
|
||||
2866: -35,20
|
||||
- node:
|
||||
color: '#FFFFFFFF'
|
||||
id: WarnLineW
|
||||
@@ -4859,6 +4855,54 @@ entities:
|
||||
- type: Transform
|
||||
pos: -49.383278,-8.450993
|
||||
parent: 4812
|
||||
- proto: ActionToggleBlock
|
||||
entities:
|
||||
- uid: 12052
|
||||
components:
|
||||
- type: Transform
|
||||
parent: 7935
|
||||
- type: InstantAction
|
||||
originalIconColor: '#FFFFFFFF'
|
||||
container: 7935
|
||||
- uid: 13922
|
||||
components:
|
||||
- type: Transform
|
||||
parent: 13921
|
||||
- type: InstantAction
|
||||
originalIconColor: '#FFFFFFFF'
|
||||
container: 13921
|
||||
- proto: ActionToggleInternals
|
||||
entities:
|
||||
- uid: 10945
|
||||
components:
|
||||
- type: Transform
|
||||
parent: 13680
|
||||
- type: InstantAction
|
||||
originalIconColor: '#FFFFFFFF'
|
||||
container: 13680
|
||||
- uid: 13919
|
||||
components:
|
||||
- type: Transform
|
||||
parent: 13917
|
||||
- type: InstantAction
|
||||
originalIconColor: '#FFFFFFFF'
|
||||
container: 13917
|
||||
- proto: ActionToggleJetpack
|
||||
entities:
|
||||
- uid: 8332
|
||||
components:
|
||||
- type: Transform
|
||||
parent: 13680
|
||||
- type: InstantAction
|
||||
originalIconColor: '#FFFFFFFF'
|
||||
container: 13680
|
||||
- uid: 13918
|
||||
components:
|
||||
- type: Transform
|
||||
parent: 13917
|
||||
- type: InstantAction
|
||||
originalIconColor: '#FFFFFFFF'
|
||||
container: 13917
|
||||
- proto: ActionToggleLight
|
||||
entities:
|
||||
- uid: 6594
|
||||
@@ -5918,6 +5962,11 @@ entities:
|
||||
- type: Transform
|
||||
pos: -34.5,13.5
|
||||
parent: 4812
|
||||
- uid: 8043
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -32.5,18.5
|
||||
parent: 4812
|
||||
- uid: 10941
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -7584,11 +7633,6 @@ entities:
|
||||
- type: Transform
|
||||
pos: -30.5,25.5
|
||||
parent: 4812
|
||||
- uid: 12052
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -32.5,18.5
|
||||
parent: 4812
|
||||
- proto: AirlockServiceLocked
|
||||
entities:
|
||||
- uid: 6675
|
||||
@@ -21403,6 +21447,16 @@ entities:
|
||||
- type: Transform
|
||||
pos: -17.5,32.5
|
||||
parent: 4812
|
||||
- uid: 13926
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -36.5,10.5
|
||||
parent: 4812
|
||||
- uid: 13928
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -36.5,9.5
|
||||
parent: 4812
|
||||
- proto: CableApcStack
|
||||
entities:
|
||||
- uid: 6196
|
||||
@@ -28096,6 +28150,16 @@ entities:
|
||||
- type: Transform
|
||||
pos: -40.5,8.5
|
||||
parent: 4812
|
||||
- uid: 13929
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -36.5,10.5
|
||||
parent: 4812
|
||||
- uid: 13930
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -36.5,9.5
|
||||
parent: 4812
|
||||
- proto: CableMVStack
|
||||
entities:
|
||||
- uid: 8586
|
||||
@@ -60798,29 +60862,51 @@ entities:
|
||||
- uid: 12053
|
||||
components:
|
||||
- type: Transform
|
||||
anchored: True
|
||||
pos: -37.5,22.5
|
||||
parent: 4812
|
||||
- type: Physics
|
||||
bodyType: Static
|
||||
- proto: GunSafePistolMk58
|
||||
entities:
|
||||
- uid: 13920
|
||||
components:
|
||||
- type: Transform
|
||||
anchored: True
|
||||
pos: -33.5,20.5
|
||||
parent: 4812
|
||||
- type: Physics
|
||||
bodyType: Static
|
||||
- proto: GunSafeRifleLecter
|
||||
entities:
|
||||
- uid: 12215
|
||||
components:
|
||||
- type: Transform
|
||||
anchored: True
|
||||
pos: -37.5,20.5
|
||||
parent: 4812
|
||||
- type: Physics
|
||||
bodyType: Static
|
||||
- proto: GunSafeShotgunKammerer
|
||||
entities:
|
||||
- uid: 12054
|
||||
components:
|
||||
- type: Transform
|
||||
anchored: True
|
||||
pos: -34.5,22.5
|
||||
parent: 4812
|
||||
- type: Physics
|
||||
bodyType: Static
|
||||
- proto: GunSafeSubMachineGunDrozd
|
||||
entities:
|
||||
- uid: 8377
|
||||
components:
|
||||
- type: Transform
|
||||
anchored: True
|
||||
pos: -37.5,21.5
|
||||
parent: 4812
|
||||
- type: Physics
|
||||
bodyType: Static
|
||||
- proto: Handcuffs
|
||||
entities:
|
||||
- uid: 4865
|
||||
@@ -61818,8 +61904,35 @@ entities:
|
||||
- uid: 13680
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -33.539055,21.668404
|
||||
pos: -33.729538,21.689896
|
||||
parent: 4812
|
||||
- type: GasTank
|
||||
toggleActionEntity: 10945
|
||||
- type: Jetpack
|
||||
toggleActionEntity: 8332
|
||||
- type: ActionsContainer
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
actions: !type:Container
|
||||
ents:
|
||||
- 8332
|
||||
- 10945
|
||||
- uid: 13917
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -33.3936,21.666458
|
||||
parent: 4812
|
||||
- type: GasTank
|
||||
toggleActionEntity: 13919
|
||||
- type: Jetpack
|
||||
toggleActionEntity: 13918
|
||||
- type: ActionsContainer
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
actions: !type:Container
|
||||
ents:
|
||||
- 13918
|
||||
- 13919
|
||||
- proto: KitchenKnife
|
||||
entities:
|
||||
- uid: 1642
|
||||
@@ -62728,6 +62841,11 @@ entities:
|
||||
- type: Transform
|
||||
pos: -31.5,19.5
|
||||
parent: 4812
|
||||
- uid: 13915
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -31.5,17.5
|
||||
parent: 4812
|
||||
- proto: LockerFreezer
|
||||
entities:
|
||||
- uid: 1538
|
||||
@@ -64436,11 +64554,16 @@ entities:
|
||||
parent: 4812
|
||||
- proto: PortableFlasher
|
||||
entities:
|
||||
- uid: 11923
|
||||
- uid: 13914
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -33.5,20.5
|
||||
anchored: False
|
||||
pos: -35.5,20.5
|
||||
parent: 4812
|
||||
- type: TriggerOnProximity
|
||||
enabled: False
|
||||
- type: Physics
|
||||
bodyType: Dynamic
|
||||
- proto: PortableGeneratorJrPacman
|
||||
entities:
|
||||
- uid: 741
|
||||
@@ -70911,12 +71034,50 @@ entities:
|
||||
- type: Transform
|
||||
pos: -33.720795,21.923859
|
||||
parent: 4812
|
||||
- uid: 13923
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -33.713516,21.77357
|
||||
parent: 4812
|
||||
- proto: RiotLaserShield
|
||||
entities:
|
||||
- uid: 7935
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -33.356216,21.923859
|
||||
pos: -33.463516,22.047007
|
||||
parent: 4812
|
||||
- type: Blocking
|
||||
blockingToggleActionEntity: 12052
|
||||
- type: ActionsContainer
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
actions: !type:Container
|
||||
ents:
|
||||
- 12052
|
||||
- uid: 13924
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -33.44008,21.882944
|
||||
parent: 4812
|
||||
- proto: RiotShield
|
||||
entities:
|
||||
- uid: 13921
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -33.244766,22.062632
|
||||
parent: 4812
|
||||
- type: Blocking
|
||||
blockingToggleActionEntity: 13922
|
||||
- type: ActionsContainer
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
actions: !type:Container
|
||||
ents:
|
||||
- 13922
|
||||
- uid: 13925
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -33.19008,21.890757
|
||||
parent: 4812
|
||||
- proto: RobocopCircuitBoard
|
||||
entities:
|
||||
@@ -71073,10 +71234,10 @@ entities:
|
||||
parent: 4812
|
||||
- proto: SecurityTechFab
|
||||
entities:
|
||||
- uid: 10945
|
||||
- uid: 11923
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -35.5,20.5
|
||||
pos: -36.5,18.5
|
||||
parent: 4812
|
||||
- proto: SeedExtractor
|
||||
entities:
|
||||
@@ -74150,6 +74311,12 @@ entities:
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: 10.5,-7.5
|
||||
parent: 4812
|
||||
- uid: 13927
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: -36.5,9.5
|
||||
parent: 4812
|
||||
- proto: Stool
|
||||
entities:
|
||||
- uid: 1752
|
||||
@@ -74506,11 +74673,6 @@ entities:
|
||||
parent: 4812
|
||||
- proto: SuitStorageSec
|
||||
entities:
|
||||
- uid: 8043
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -36.5,18.5
|
||||
parent: 4812
|
||||
- uid: 8045
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -87695,6 +87857,12 @@ entities:
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: -32.5,15.5
|
||||
parent: 4812
|
||||
- uid: 13916
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: -35.5,18.5
|
||||
parent: 4812
|
||||
- proto: WindoorSecureAtmosphericsLocked
|
||||
entities:
|
||||
- uid: 7369
|
||||
@@ -87880,12 +88048,6 @@ entities:
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -27.5,19.5
|
||||
parent: 4812
|
||||
- uid: 8332
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: -35.5,18.5
|
||||
parent: 4812
|
||||
- proto: Window
|
||||
entities:
|
||||
- uid: 187
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -52,7 +52,7 @@
|
||||
id: ServiceSmokeables
|
||||
icon:
|
||||
sprite: Objects/Consumable/Smokeables/Cigarettes/Cartons/green.rsi
|
||||
state: closed
|
||||
state: icon
|
||||
product: CrateServiceSmokeables
|
||||
cost: 1500
|
||||
category: cargoproduct-category-name-service
|
||||
@@ -62,7 +62,7 @@
|
||||
id: ServiceCustomSmokable
|
||||
icon:
|
||||
sprite: Objects/Consumable/Smokeables/Cigarettes/Cartons/green.rsi
|
||||
state: closed
|
||||
state: icon
|
||||
product: CrateServiceCustomSmokable
|
||||
cost: 1000
|
||||
category: cargoproduct-category-name-service
|
||||
|
||||
@@ -56,11 +56,12 @@
|
||||
- id: MagazineLightRiflePractice
|
||||
amount: 4
|
||||
|
||||
# Magnum
|
||||
- type: entity
|
||||
name: box of Vector magazines
|
||||
name: box of SMG .45 magnum magazines
|
||||
parent: BoxMagazine
|
||||
id: BoxMagazineMagnumSubMachineGun
|
||||
description: A box full of Vector magazines.
|
||||
description: A box full of SMG .45 magnum magazines.
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
@@ -68,10 +69,10 @@
|
||||
amount: 3
|
||||
|
||||
- type: entity
|
||||
name: box of Vector (practice) magazines
|
||||
name: box of SMG .45 magnum (practice) magazines
|
||||
parent: BoxMagazine
|
||||
id: BoxMagazineMagnumSubMachineGunPractice
|
||||
description: A box full of Vector (practice) magazines.
|
||||
description: A box full of SMG .45 magnum (practice) magazines.
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
|
||||
@@ -188,7 +188,7 @@
|
||||
- id: FoodCondimentPacketKetchup
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box_olive
|
||||
- state: box
|
||||
- state: writing
|
||||
|
||||
- type: entity
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
amount: 2
|
||||
- id: RemoteSignaller
|
||||
amount: 2
|
||||
- id: Binoculars
|
||||
|
||||
- type: entity
|
||||
id: LockerSecurityFilled
|
||||
|
||||
@@ -13,3 +13,5 @@
|
||||
ClothingOuterSuitFire: 2
|
||||
ClothingOuterWinterAtmos: 2
|
||||
ClothingNeckScarfStripedLightBlue: 3
|
||||
contrabandInventory:
|
||||
ToyFigurineAtmosTech: 1
|
||||
|
||||
@@ -16,4 +16,5 @@
|
||||
ClothingOuterVest: 2
|
||||
ClothingBeltBandolier: 2
|
||||
ClothingEyesGlassesSunglasses: 2
|
||||
|
||||
contrabandInventory:
|
||||
ToyFigurineBartender: 1
|
||||
|
||||
@@ -46,5 +46,8 @@
|
||||
DrinkSakeBottleFull: 3
|
||||
DrinkBeerCan: 5
|
||||
DrinkWineCan: 5
|
||||
contrabandInventory:
|
||||
EthanolChemistryBottle: 3
|
||||
DrinkBottleOfNothingFull: 1
|
||||
emaggedInventory:
|
||||
DrinkPoisonWinebottleFull: 2
|
||||
|
||||
@@ -15,3 +15,7 @@
|
||||
ClothingOuterWinterMiner: 2
|
||||
ClothingNeckScarfStripedBrown: 3
|
||||
ClothingShoesBootsWinterCargo: 2
|
||||
contrabandInventory:
|
||||
ToyFigurineCargoTech: 1
|
||||
ToyFigurineSalvage: 1
|
||||
ToyFigurineQuartermaster: 1
|
||||
|
||||
@@ -16,3 +16,6 @@
|
||||
EncryptionKeyScience: 2
|
||||
EncryptionKeySecurity: 1
|
||||
EncryptionKeyService: 3
|
||||
contrabandInventory:
|
||||
BalloonNT: 2
|
||||
LuxuryPen: 1
|
||||
|
||||
@@ -18,3 +18,6 @@
|
||||
ClothingOuterCoatExpensive: 1
|
||||
ClothingNeckScarfStripedCentcom: 3
|
||||
ClothingNeckCloakCentcom: 3
|
||||
contrabandInventory:
|
||||
ToyFigurineCaptain: 1
|
||||
ToyFigurineHeadOfPersonnel: 1
|
||||
|
||||
@@ -8,4 +8,7 @@
|
||||
FoodSnackChowMein: 3
|
||||
FoodSnackDanDanNoodles: 3
|
||||
PairedChopsticks: 3
|
||||
contrabandInventory:
|
||||
FoodBakedDumplings: 2
|
||||
FoodSoupMiso: 2
|
||||
# rice?
|
||||
|
||||
@@ -21,6 +21,10 @@
|
||||
BoxCandleSmall: 2
|
||||
Urn: 5
|
||||
Bible: 1
|
||||
contrabandInventory:
|
||||
FoodBakedBunHotX: 2
|
||||
DrinkWineBottleFull: 1
|
||||
ToyFigurineChaplain: 1
|
||||
emaggedInventory:
|
||||
ClothingOuterArmorCult: 1
|
||||
ClothingHeadHelmetCult: 1
|
||||
|
||||
@@ -12,3 +12,5 @@
|
||||
ClothingShoesColorBlack: 2
|
||||
ClothingShoesChef: 2
|
||||
ClothingBeltChef: 2
|
||||
contrabandInventory:
|
||||
ToyFigurineChef: 1
|
||||
|
||||
@@ -20,4 +20,9 @@
|
||||
FoodButter: 3
|
||||
FoodCheese: 1
|
||||
FoodMeat: 6
|
||||
contrabandInventory:
|
||||
EggBoxBroken: 1
|
||||
FoodBoxDonkpocket: 1
|
||||
FoodFrozenSandwich: 2
|
||||
FoodFrozenSandwichStrawberry: 2
|
||||
|
||||
|
||||
@@ -14,3 +14,5 @@
|
||||
ClothingHandsGlovesLatex: 2
|
||||
ClothingHeadsetMedical: 2
|
||||
ClothingOuterWinterChem: 2
|
||||
contrabandInventory:
|
||||
ToyFigurineChemist: 1
|
||||
|
||||
@@ -22,6 +22,9 @@
|
||||
JugSodium: 2
|
||||
JugSugar: 3
|
||||
JugSulfur: 1
|
||||
contrabandInventory:
|
||||
DrinkLithiumFlask: 1
|
||||
StrangePill: 3
|
||||
emaggedInventory:
|
||||
ToxinChemistryBottle: 1
|
||||
|
||||
@@ -50,6 +53,9 @@
|
||||
JugSugar: 3
|
||||
JugSulfur: 1
|
||||
JugWeldingFuel: 1
|
||||
contrabandInventory:
|
||||
DrinkLithiumFlask: 1
|
||||
StrangePill: 3
|
||||
emaggedInventory:
|
||||
PaxChemistryBottle: 3
|
||||
MuteToxinChemistryBottle: 3
|
||||
|
||||
@@ -14,5 +14,9 @@
|
||||
CheapLighter: 4
|
||||
Lighter: 2
|
||||
FlippoLighter: 2
|
||||
contrabandInventory:
|
||||
GroundTobacco: 3
|
||||
CigarGold: 2
|
||||
Igniter: 1
|
||||
emaggedInventory:
|
||||
CigPackSyndicate: 1
|
||||
|
||||
@@ -96,4 +96,6 @@
|
||||
ClothingMaskNeckGaiter: 2
|
||||
ClothingUniformJumpsuitTacticool: 1
|
||||
ClothingUniformJumpskirtTacticool: 1
|
||||
ToyFigurinePassenger: 1
|
||||
ToyFigurineGreytider: 1
|
||||
# DO NOT ADD MORE, USE UNIFORM DYING
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
- type: vendingMachineInventory
|
||||
- type: vendingMachineInventory
|
||||
id: HotDrinksMachineInventory
|
||||
startingInventory:
|
||||
DrinkHotCoffee: 5
|
||||
@@ -6,5 +6,7 @@
|
||||
DrinkTeacup: 5
|
||||
DrinkGreenTea: 5
|
||||
DrinkHotCoco: 5
|
||||
contrabandInventory:
|
||||
DrinkTeapot: 2
|
||||
emaggedInventory:
|
||||
DrinkNothing: 2
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
DrinkLemonLimeCan: 2
|
||||
DrinkLemonLimeCranberryCan: 2
|
||||
DrinkFourteenLokoCan: 2
|
||||
contrabandInventory:
|
||||
DrinkColaBottleFull: 2
|
||||
emaggedInventory:
|
||||
DrinkNukieCan: 2
|
||||
DrinkChangelingStingCan: 2
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
startingInventory:
|
||||
FoodCondimentPacketAstrotame: 5
|
||||
FoodCondimentPacketBbq: 5
|
||||
FoodCondimentPacketFrostoil: 5
|
||||
FoodCondimentPacketColdsauce: 5
|
||||
FoodCondimentPacketHorseradish: 5
|
||||
FoodCondimentPacketHotsauce: 5
|
||||
FoodCondimentPacketKetchup: 5
|
||||
@@ -17,4 +17,9 @@
|
||||
SpoonPlastic: 10
|
||||
KnifePlastic: 10
|
||||
FoodPlatePlastic: 10
|
||||
FoodPlateSmallPlastic: 10
|
||||
FoodPlateSmallPlastic: 10
|
||||
contrabandInventory:
|
||||
FoodShakerSalt: 1
|
||||
FoodShakerPepper: 1
|
||||
FoodCondimentBottleKetchup: 1
|
||||
ReagentContainerMayo: 1
|
||||
|
||||
@@ -14,4 +14,6 @@
|
||||
ClothingUniformJumpskirtLibrarian: 3
|
||||
ClothingShoesBootsLaceup: 2
|
||||
ClothingHeadsetService: 2
|
||||
contrabandInventory:
|
||||
ToyFigurineLibrarian: 1
|
||||
|
||||
|
||||
@@ -15,3 +15,5 @@
|
||||
ClothingHandsGlovesColorBlack: 2
|
||||
ClothingHandsGlovesLatex: 2
|
||||
ClothingHeadsetSecurity: 2
|
||||
contrabandInventory:
|
||||
ToyFigurineDetective: 1
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
- type: vendingMachineInventory
|
||||
- type: vendingMachineInventory
|
||||
id: DinnerwareInventory
|
||||
startingInventory:
|
||||
ButchCleaver: 1
|
||||
@@ -27,3 +27,7 @@
|
||||
DrinkMugOne: 1
|
||||
DrinkMugRainbow: 2
|
||||
DrinkMugRed: 2
|
||||
contrabandInventory:
|
||||
CandyBowl: 1
|
||||
BarSpoon: 2
|
||||
DrinkShaker: 2
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
- type: vendingMachineInventory
|
||||
- type: vendingMachineInventory
|
||||
id: DiscountDansInventory
|
||||
startingInventory:
|
||||
FoodSnackCheesie: 3
|
||||
@@ -8,3 +8,6 @@
|
||||
FoodSnackPopcorn: 3
|
||||
FoodSnackEnergy: 3
|
||||
CigPackMixed: 2
|
||||
contrabandInventory:
|
||||
FoodSnackDanDanNoodles: 3
|
||||
FoodBakedBunHoney: 3
|
||||
|
||||
@@ -5,5 +5,8 @@
|
||||
FoodDonutApple: 3
|
||||
FoodDonutPink: 3
|
||||
FoodDonutBungo: 3
|
||||
contrabandInventory:
|
||||
FoodBagel: 2
|
||||
FoodBagelPoppy: 2
|
||||
emaggedInventory:
|
||||
FoodDonutPoison: 1
|
||||
|
||||
@@ -16,3 +16,6 @@
|
||||
ClothingOuterWinterEngi: 2
|
||||
ClothingNeckScarfStripedOrange: 3
|
||||
ClothingShoesBootsWinterEngi: 2
|
||||
contrabandInventory:
|
||||
ToyFigurineEngineer: 1
|
||||
ToyFigurineChiefEngineer: 1
|
||||
|
||||
@@ -10,3 +10,6 @@
|
||||
ClothingHandsGlovesColorYellow: 6
|
||||
BoxInflatable: 2
|
||||
ClothingHeadHatCone: 4
|
||||
contrabandInventory:
|
||||
CowToolboxFilled: 1
|
||||
DrinkBeerCan: 3
|
||||
|
||||
@@ -16,3 +16,7 @@
|
||||
PaperCNCSheet: 6
|
||||
MysteryFigureBox: 2
|
||||
BooksBag: 3
|
||||
contrabandInventory:
|
||||
Basketball: 1
|
||||
FoodSnackBoritos: 3
|
||||
DrinkSpaceMountainWindCan: 3
|
||||
|
||||
@@ -9,6 +9,10 @@
|
||||
DrinkLemonLimeCan: 2
|
||||
DrinkLemonLimeCranberryCan: 2
|
||||
DrinkFourteenLokoCan: 2
|
||||
contrabandInventory:
|
||||
ClothingNeckStethoscope: 2
|
||||
Saw: 2
|
||||
Tourniquet: 3
|
||||
emaggedInventory:
|
||||
DrinkNukieCan: 2
|
||||
DrinkChangelingStingCan: 2
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
- type: vendingMachineInventory
|
||||
- type: vendingMachineInventory
|
||||
id: HappyHonkDispenserInventory
|
||||
startingInventory:
|
||||
HappyHonk: 10
|
||||
HappyHonkMime: 4
|
||||
contrabandInventory:
|
||||
ToyFigurineClown: 1
|
||||
ToyFigurineMime: 1
|
||||
ToyFigurineNukie: 1
|
||||
emaggedInventory:
|
||||
HappyHonkCluwne: 1
|
||||
HappyHonkNukie: 1
|
||||
|
||||
@@ -12,4 +12,6 @@
|
||||
ClothingHeadBandBotany: 3
|
||||
ClothingHeadsetService: 2
|
||||
ClothingOuterWinterHydro: 2
|
||||
contrabandInventory:
|
||||
ToyFigurineBotanist: 1
|
||||
|
||||
|
||||
@@ -10,7 +10,8 @@
|
||||
ClothingHeadsetService: 2
|
||||
ClothingOuterWinterJani: 2
|
||||
ClothingNeckScarfStripedPurple: 3
|
||||
|
||||
contrabandInventory:
|
||||
ToyFigurineJanitor: 1
|
||||
emaggedInventory:
|
||||
ClothingUniformJumpskirtJanimaid: 2
|
||||
ClothingUniformJumpskirtJanimaidmini: 1
|
||||
|
||||
@@ -23,5 +23,6 @@
|
||||
ClothingHeadHatPwig: 1
|
||||
# "Legally" obtained currency
|
||||
SpaceCash100: 2
|
||||
ToyFigurineLawyer: 1
|
||||
emaggedInventory:
|
||||
CyberPen: 1
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user