diff --git a/Content.Server/Administration/Commands/SetOutfitCommand.cs b/Content.Server/Administration/Commands/SetOutfitCommand.cs index ff4d34705a6..d2f05e46228 100644 --- a/Content.Server/Administration/Commands/SetOutfitCommand.cs +++ b/Content.Server/Administration/Commands/SetOutfitCommand.cs @@ -12,6 +12,7 @@ using Robust.Shared.Console; using Robust.Shared.Player; using Robust.Shared.Prototypes; +using Content.Server.SimpleStation14.Silicon.IPC; // Parkstation - IPCs namespace Content.Server.Administration.Commands { @@ -127,7 +128,7 @@ public static bool SetOutfit(EntityUid target, string gear, IEntityManager entit handsSystem.TryPickup(target, inhandEntity, checkActionBlocker: false, handsComp: handsComponent); } } - + InternalEncryptionKeySpawner.TryInsertEncryptionKey(target, startingGear, entityManager, profile); // Parkstation - IPC return true; } } diff --git a/Content.Server/Bed/BedSystem.cs b/Content.Server/Bed/BedSystem.cs index 2cc8085e725..9a30bc9d6a8 100644 --- a/Content.Server/Bed/BedSystem.cs +++ b/Content.Server/Bed/BedSystem.cs @@ -12,6 +12,7 @@ using Content.Shared.Mobs.Systems; using Content.Shared.Power; using Robust.Shared.Timing; +using Content.Shared.SimpleStation14.Silicon.Components; // Parkstation-IPCs // I shouldn't have to modify this. using Robust.Shared.Utility; namespace Content.Server.Bed @@ -70,7 +71,8 @@ public override void Update(float frameTime) foreach (var healedEntity in strapComponent.BuckledEntities) { - if (_mobStateSystem.IsDead(healedEntity)) + if (_mobStateSystem.IsDead(healedEntity) + || HasComp(healedEntity)) // Parkstation-IPCs // I shouldn't have to modify this. continue; var damage = bedComponent.Damage; diff --git a/Content.Server/Electrocution/ElectrocutionSystem.cs b/Content.Server/Electrocution/ElectrocutionSystem.cs index 67e60c9de46..28d5525e26c 100644 --- a/Content.Server/Electrocution/ElectrocutionSystem.cs +++ b/Content.Server/Electrocution/ElectrocutionSystem.cs @@ -62,7 +62,9 @@ public sealed class ElectrocutionSystem : SharedElectrocutionSystem [ValidatePrototypeId] private const string DamageType = "Shock"; - // Multiply and shift the log scale for shock damage. + // Yes, this is absurdly small for a reason. + public const float ElectrifiedDamagePerWatt = 0.0015f; // Parkstation-IPC // This information is allowed to be public, and was needed in BatteryElectrocuteChargeSystem.cs + private const float RecursiveDamageMultiplier = 0.75f; private const float RecursiveTimeMultiplier = 0.8f; @@ -300,9 +302,9 @@ public override bool TryDoElectrocution( || !DoCommonElectrocution(uid, sourceUid, shockDamage, time, refresh, siemensCoefficient, statusEffects)) return false; - RaiseLocalEvent(uid, new ElectrocutedEvent(uid, sourceUid, siemensCoefficient), true); - return true; - } + RaiseLocalEvent(uid, new ElectrocutedEvent(uid, sourceUid, siemensCoefficient, shockDamage), true); // Parkstation-IPC + return true; + } private bool TryDoElectrocutionPowered( EntityUid uid, @@ -350,7 +352,7 @@ private bool TryDoElectrocutionPowered( electrocutionComponent.Electrocuting = uid; electrocutionComponent.Source = sourceUid; - RaiseLocalEvent(uid, new ElectrocutedEvent(uid, sourceUid, siemensCoefficient), true); + RaiseLocalEvent(uid, new ElectrocutedEvent(uid, sourceUid, siemensCoefficient, shockDamage), true); // Parkstation-IPC return true; } diff --git a/Content.Server/Mobs/DeathgaspComponent.cs b/Content.Server/Mobs/DeathgaspComponent.cs index cb1f02f0d97..770a68aa549 100644 --- a/Content.Server/Mobs/DeathgaspComponent.cs +++ b/Content.Server/Mobs/DeathgaspComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chat.Prototypes; +using Content.Shared.Chat.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Server.Mobs; @@ -13,6 +13,12 @@ public sealed partial class DeathgaspComponent : Component /// /// The emote prototype to use. /// - [DataField("prototype", customTypeSerializer:typeof(PrototypeIdSerializer))] + [DataField(customTypeSerializer:typeof(PrototypeIdSerializer))] public string Prototype = "DefaultDeathgasp"; + + /// + /// Makes sure that the deathgasp is only displayed if the entity went critical before dying - Estacao Pirata + /// + [DataField] + public bool NeedsCritical = true; } diff --git a/Content.Server/Mobs/DeathgaspSystem.cs b/Content.Server/Mobs/DeathgaspSystem.cs index c531784ea69..3a6ace67416 100644 --- a/Content.Server/Mobs/DeathgaspSystem.cs +++ b/Content.Server/Mobs/DeathgaspSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Chat.Systems; +using Content.Server.Chat.Systems; using Content.Server.Speech.Muting; using Content.Shared.Mobs; using Content.Shared.Speech.Muting; @@ -20,9 +20,11 @@ public override void Initialize() private void OnMobStateChanged(EntityUid uid, DeathgaspComponent component, MobStateChangedEvent args) { - // don't deathgasp if they arent going straight from crit to dead - if (args.NewMobState != MobState.Dead || args.OldMobState != MobState.Critical) + // don't deathgasp if they arent going straight from crit to dead - Estacao Pirata + if (component.NeedsCritical && args.OldMobState != MobState.Critical + || args.NewMobState != MobState.Dead) return; + // End of Estacao Pirata code Deathgasp(uid, component); } diff --git a/Content.Server/SimpleStation14/Power/Components/BatteryDrinkerComponent.cs b/Content.Server/SimpleStation14/Power/Components/BatteryDrinkerComponent.cs new file mode 100644 index 00000000000..e80a76ddcc2 --- /dev/null +++ b/Content.Server/SimpleStation14/Power/Components/BatteryDrinkerComponent.cs @@ -0,0 +1,31 @@ +namespace Content.Server.SimpleStation14.Power; + +[RegisterComponent] +public sealed partial class BatteryDrinkerComponent : Component +{ + /// + /// Is this drinker allowed to drink batteries not tagged as ? + /// + [DataField] + public bool DrinkAll; + + /// + /// How long it takes to drink from a battery, in seconds. + /// Is multiplied by the source. + /// + [DataField] + public float DrinkSpeed = 1.5f; + + /// + /// The multiplier for the amount of power to attempt to drink. + /// Default amount is 1000 + /// + [DataField] + public float DrinkMultiplier = 5f; + + /// + /// The multiplier for how long it takes to drink a non-source battery, if is true. + /// + [DataField] + public float DrinkAllMultiplier = 2.5f; +} diff --git a/Content.Server/SimpleStation14/Power/Components/RandomBatteryChargeComponent.cs b/Content.Server/SimpleStation14/Power/Components/RandomBatteryChargeComponent.cs new file mode 100644 index 00000000000..f2ab15460ed --- /dev/null +++ b/Content.Server/SimpleStation14/Power/Components/RandomBatteryChargeComponent.cs @@ -0,0 +1,26 @@ +using System.Numerics; + +namespace Content.Server.SimpleStation14.Power.Components; + +[RegisterComponent] +public sealed partial class RandomBatteryChargeComponent : Component +{ + /// + /// The minimum and maximum max charge the battery can have. + /// + [DataField] + public Vector2 BatteryMaxMinMax = new(0.85f, 1.15f); + + /// + /// The minimum and maximum current charge the battery can have. + /// + [DataField] + public Vector2 BatteryChargeMinMax = new(1f, 1f); + + /// + /// False if the randomized charge of the battery should be a multiple of the preexisting current charge of the battery. + /// True if the randomized charge of the battery should be a multiple of the max charge of the battery post max charge randomization. + /// + [DataField] + public bool BasedOnMaxCharge = true; +} diff --git a/Content.Server/SimpleStation14/Power/Components/SiliconEmitSoundOnDrainedComponent.cs b/Content.Server/SimpleStation14/Power/Components/SiliconEmitSoundOnDrainedComponent.cs new file mode 100644 index 00000000000..7d588e6c9d1 --- /dev/null +++ b/Content.Server/SimpleStation14/Power/Components/SiliconEmitSoundOnDrainedComponent.cs @@ -0,0 +1,28 @@ +using System.ComponentModel.DataAnnotations; +using Robust.Shared.Audio; +using Content.Server.Sound.Components; +using System; + +namespace Content.Server.SimpleStation14.Silicon; + +/// +/// Applies a to a Silicon when its battery is drained, and removes it when it's not. +/// +[RegisterComponent] +public sealed partial class SiliconEmitSoundOnDrainedComponent : Component +{ + [DataField] + public SoundSpecifier Sound = default!; + + [DataField] + public TimeSpan MinInterval = TimeSpan.FromSeconds(8); + + [DataField] + public TimeSpan MaxInterval = TimeSpan.FromSeconds(15); + + [DataField] + public float PlayChance = 1f; + + [DataField] + public string? PopUp; +} diff --git a/Content.Server/SimpleStation14/Power/Systems/BatteryDrinkerSystem.cs b/Content.Server/SimpleStation14/Power/Systems/BatteryDrinkerSystem.cs new file mode 100644 index 00000000000..11277c80783 --- /dev/null +++ b/Content.Server/SimpleStation14/Power/Systems/BatteryDrinkerSystem.cs @@ -0,0 +1,144 @@ +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using Content.Server.Power.Components; +using Content.Shared.Containers.ItemSlots; +using Content.Shared.DoAfter; +using Content.Shared.PowerCell.Components; +using Content.Shared.SimpleStation14.Silicon; +using Content.Shared.Verbs; +using Robust.Shared.Utility; +using Content.Server.SimpleStation14.Silicon.Charge; +using Content.Server.Power.EntitySystems; +using Content.Server.Popups; +using Content.Server.PowerCell; +using Content.Shared.Popups; +using Content.Shared.SimpleStation14.Silicon.Components; +using FastAccessors; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Containers; + +namespace Content.Server.SimpleStation14.Power; + +public sealed class BatteryDrinkerSystem : EntitySystem +{ + [Dependency] private readonly ItemSlotsSystem _slots = default!; + [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly BatterySystem _battery = default!; + [Dependency] private readonly SiliconChargeSystem _silicon = default!; + [Dependency] private readonly PopupSystem _popup = default!; + [Dependency] private readonly PowerCellSystem _powerCell = default!; + [Dependency] private readonly SharedContainerSystem _container = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent>(AddAltVerb); + + SubscribeLocalEvent(OnDoAfter); + } + + private void AddAltVerb(EntityUid uid, BatteryComponent batteryComponent, GetVerbsEvent args) + { + if (!args.CanAccess || !args.CanInteract) + return; + + if (!TryComp(args.User, out var drinkerComp) || + !TestDrinkableBattery(uid, drinkerComp) || + !_silicon.TryGetSiliconBattery(args.User, out var drinkerBattery)) + return; + + AlternativeVerb verb = new() + { + Act = () => DrinkBattery(uid, args.User, drinkerComp), + Text = Loc.GetString("battery-drinker-verb-drink"), + Icon = new SpriteSpecifier.Texture(new ResPath("/Textures/Interface/VerbIcons/smite.svg.192dpi.png")), + }; + + args.Verbs.Add(verb); + } + + private bool TestDrinkableBattery(EntityUid target, BatteryDrinkerComponent drinkerComp) + { + if (!drinkerComp.DrinkAll && !HasComp(target)) + return false; + + return true; + } + + private void DrinkBattery(EntityUid target, EntityUid user, BatteryDrinkerComponent drinkerComp) + { + var doAfterTime = drinkerComp.DrinkSpeed; + + if (TryComp(target, out var sourceComp)) + doAfterTime *= sourceComp.DrinkSpeedMulti; + else + doAfterTime *= drinkerComp.DrinkAllMultiplier; + + var args = new DoAfterArgs(EntityManager, user, doAfterTime, new BatteryDrinkerDoAfterEvent(), user, target) // TODO: Make this doafter loop, once we merge Upstream. + { + BreakOnDamage = true, + BreakOnMove = true, + Broadcast = false, + DistanceThreshold = 1.35f, + RequireCanInteract = true, + CancelDuplicate = false + }; + + _doAfter.TryStartDoAfter(args); + } + + private void OnDoAfter(EntityUid uid, BatteryDrinkerComponent drinkerComp, DoAfterEvent args) + { + if (args.Cancelled || args.Target == null) + return; + + var source = args.Target.Value; + var drinker = uid; + var sourceBattery = Comp(source); + + _silicon.TryGetSiliconBattery(drinker, out var drinkerBatteryComponent); + + if (!TryComp(uid, out PowerCellSlotComponent? batterySlot)) + return; + + var container = _container.GetContainer(uid, batterySlot.CellSlotId); + var drinkerBattery = container.ContainedEntities.First(); + + TryComp(source, out var sourceComp); + + DebugTools.AssertNotNull(drinkerBattery); + + if (drinkerBattery == null) + return; + + var amountToDrink = drinkerComp.DrinkMultiplier * 1000; + + amountToDrink = MathF.Min(amountToDrink, sourceBattery.CurrentCharge); + amountToDrink = MathF.Min(amountToDrink, drinkerBatteryComponent!.MaxCharge - drinkerBatteryComponent.CurrentCharge); + + if (sourceComp != null && sourceComp.MaxAmount > 0) + amountToDrink = MathF.Min(amountToDrink, (float) sourceComp.MaxAmount); + + if (amountToDrink <= 0) + { + _popup.PopupEntity(Loc.GetString("battery-drinker-empty", ("target", source)), drinker, drinker); + return; + } + + if (_battery.TryUseCharge(source, amountToDrink)) + _battery.SetCharge(drinkerBattery, drinkerBatteryComponent.CurrentCharge + amountToDrink, drinkerBatteryComponent); + else + { + _battery.SetCharge(drinkerBattery, sourceBattery.CurrentCharge + drinkerBatteryComponent.CurrentCharge, drinkerBatteryComponent); + _battery.SetCharge(source, 0); + } + + if (sourceComp != null && sourceComp.DrinkSound != null){ + _popup.PopupEntity(Loc.GetString("ipc-recharge-tip"), drinker, drinker, PopupType.SmallCaution); + _audio.PlayPvs(sourceComp.DrinkSound, source); + Spawn("EffectSparks", Transform(source).Coordinates); + } + } +} diff --git a/Content.Server/SimpleStation14/Power/Systems/BatteryElectrocuteChargeSystem.cs b/Content.Server/SimpleStation14/Power/Systems/BatteryElectrocuteChargeSystem.cs new file mode 100644 index 00000000000..86238aab6c9 --- /dev/null +++ b/Content.Server/SimpleStation14/Power/Systems/BatteryElectrocuteChargeSystem.cs @@ -0,0 +1,38 @@ +using Content.Server.Electrocution; +using Content.Server.Popups; +using Content.Server.Power.Components; +using Content.Server.Power.EntitySystems; +using Content.Shared.Electrocution; +using Robust.Shared.Random; +using Robust.Shared.Timing; + +namespace Content.Server.SimpleStation14.Power.Systems; + +public sealed class BatteryElectrocuteChargeSystem : EntitySystem +{ + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly PopupSystem _popup = default!; + [Dependency] private readonly BatterySystem _battery = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnElectrocuted); + } + + private void OnElectrocuted(EntityUid uid, BatteryComponent battery, ElectrocutedEvent args) + { + if (args.ShockDamage == null || args.ShockDamage <= 0) + return; + + var damagePerWatt = ElectrocutionSystem.ElectrifiedDamagePerWatt * 2; + + var damage = args.ShockDamage.Value * args.SiemensCoefficient; + var charge = Math.Min(damage / damagePerWatt, battery.MaxCharge * 0.25f) * _random.NextFloat(0.75f, 1.25f); + + _battery.SetCharge(uid, battery.CurrentCharge + charge); + + _popup.PopupEntity(Loc.GetString("battery-electrocute-charge"), uid, uid); + } +} diff --git a/Content.Server/SimpleStation14/Power/Systems/SiliconEmitSoundOnDrainedSystem.cs b/Content.Server/SimpleStation14/Power/Systems/SiliconEmitSoundOnDrainedSystem.cs new file mode 100644 index 00000000000..cff51dcc359 --- /dev/null +++ b/Content.Server/SimpleStation14/Power/Systems/SiliconEmitSoundOnDrainedSystem.cs @@ -0,0 +1,41 @@ +using Content.Server.SimpleStation14.Silicon.Death; +using Content.Shared.Sound.Components; +using Content.Server.Sound; +using Content.Shared.Mobs; +using Content.Shared.SimpleStation14.Silicon.Systems; + +namespace Content.Server.SimpleStation14.Silicon; + +public sealed class EmitSoundOnCritSystem : EntitySystem +{ + [Dependency] private readonly EmitSoundSystem _emitSound = default!; + public override void Initialize() + { + SubscribeLocalEvent(OnDeath); + SubscribeLocalEvent(OnAlive); + SubscribeLocalEvent(OnStateChange); + } + + private void OnDeath(EntityUid uid, SiliconEmitSoundOnDrainedComponent component, SiliconChargeDeathEvent args) + { + var spamComp = EnsureComp(uid); + + spamComp.MinInterval = component.MinInterval; + spamComp.MaxInterval = component.MaxInterval; + spamComp.PopUp = component.PopUp; + spamComp.Sound = component.Sound; + _emitSound.SetEnabled((uid, spamComp), true); + } + + private void OnAlive(EntityUid uid, SiliconEmitSoundOnDrainedComponent component, SiliconChargeAliveEvent args) + { + RemComp(uid); // This component is bad and I don't feel like making a janky work around because of it. + // If you give something the SiliconEmitSoundOnDrainedComponent, know that it can't have the SpamEmitSoundComponent, and any other systems that play with it will just be broken. + } + + public void OnStateChange(EntityUid uid, SiliconEmitSoundOnDrainedComponent component, MobStateChangedEvent args) + { + if (args.NewMobState == MobState.Dead) + RemComp(uid); + } +} diff --git a/Content.Server/SimpleStation14/Radio/IntrinsicRadioKeySystem.cs b/Content.Server/SimpleStation14/Radio/IntrinsicRadioKeySystem.cs new file mode 100644 index 00000000000..32dad9f0785 --- /dev/null +++ b/Content.Server/SimpleStation14/Radio/IntrinsicRadioKeySystem.cs @@ -0,0 +1,32 @@ +using Content.Server.Radio.Components; +using Content.Shared.Radio; +using Content.Shared.Radio.Components; + +namespace Content.Server.SimpleStation14.Radio; + +public sealed class IntrinsicRadioKeySystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnTransmitterChannelsChanged); + SubscribeLocalEvent(OnReceiverChannelsChanged); + } + + private void OnTransmitterChannelsChanged(EntityUid uid, IntrinsicRadioTransmitterComponent component, EncryptionChannelsChangedEvent args) + { + UpdateChannels(uid, args.Component, ref component.Channels); + } + + private void OnReceiverChannelsChanged(EntityUid uid, ActiveRadioComponent component, EncryptionChannelsChangedEvent args) + { + UpdateChannels(uid, args.Component, ref component.Channels); + } + + private void UpdateChannels(EntityUid _, EncryptionKeyHolderComponent keyHolderComp, ref HashSet channels) + { + channels.Clear(); + channels.UnionWith(keyHolderComp.Channels); + } +} diff --git a/Content.Server/SimpleStation14/Silicon/Charge/Components/BatteryDrinkerSourceComponent.cs b/Content.Server/SimpleStation14/Silicon/Charge/Components/BatteryDrinkerSourceComponent.cs new file mode 100644 index 00000000000..fde34f018a1 --- /dev/null +++ b/Content.Server/SimpleStation14/Silicon/Charge/Components/BatteryDrinkerSourceComponent.cs @@ -0,0 +1,26 @@ +using Robust.Shared.Audio; + +namespace Content.Server.SimpleStation14.Silicon.Charge; + +[RegisterComponent] +public sealed partial class BatteryDrinkerSourceComponent : Component +{ + /// + /// The max amount of power this source can provide in one sip. + /// No limit if null. + /// + [DataField] + public int? MaxAmount = null; + + /// + /// The multiplier for the drink speed. + /// + [DataField] + public float DrinkSpeedMulti = 1f; + + /// + /// The sound to play when the battery gets drunk from. + /// + [DataField] + public SoundSpecifier? DrinkSound = new SoundCollectionSpecifier("sparks"); +} diff --git a/Content.Server/SimpleStation14/Silicon/Charge/Components/SiliconDownOnDeadComponent.cs b/Content.Server/SimpleStation14/Silicon/Charge/Components/SiliconDownOnDeadComponent.cs new file mode 100644 index 00000000000..aa96a2a3cd7 --- /dev/null +++ b/Content.Server/SimpleStation14/Silicon/Charge/Components/SiliconDownOnDeadComponent.cs @@ -0,0 +1,19 @@ +using System.Threading; + +namespace Content.Server.SimpleStation14.Silicon.Death; + +/// +/// Marks a Silicon as becoming incapacitated when they run out of battery charge. +/// +/// +/// Uses the Silicon System's charge states to do so, so make sure they're a battery powered Silicon. +/// +[RegisterComponent] +public sealed partial class SiliconDownOnDeadComponent : Component +{ + /// + /// Is this Silicon currently dead? + /// + [ViewVariables(VVAccess.ReadOnly)] + public bool Dead { get; set; } = false; +} diff --git a/Content.Server/SimpleStation14/Silicon/Charge/Systems/SiliconChargeDeathSystem.cs b/Content.Server/SimpleStation14/Silicon/Charge/Systems/SiliconChargeDeathSystem.cs new file mode 100644 index 00000000000..aa05cbc3bb4 --- /dev/null +++ b/Content.Server/SimpleStation14/Silicon/Charge/Systems/SiliconChargeDeathSystem.cs @@ -0,0 +1,131 @@ +using Content.Server.Power.Components; +using Content.Shared.SimpleStation14.Silicon.Systems; +using Content.Shared.Bed.Sleep; +using Content.Server.Sound.Components; +using Content.Server.SimpleStation14.Silicon.Charge; +using System.Threading; +using Content.Server.Humanoid; +using Content.Shared.Humanoid; +using Content.Shared.Humanoid.Markings; +using Robust.Shared.Utility; +using Timer = Robust.Shared.Timing.Timer; + +namespace Content.Server.SimpleStation14.Silicon.Death; + +public sealed class SiliconDeathSystem : EntitySystem +{ + [Dependency] private readonly SleepingSystem _sleep = default!; + [Dependency] private readonly SiliconChargeSystem _silicon = default!; + [Dependency] private readonly HumanoidAppearanceSystem _humanoidAppearanceSystem = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnSiliconChargeStateUpdate); + } + + private void OnSiliconChargeStateUpdate(EntityUid uid, SiliconDownOnDeadComponent siliconDeadComp, SiliconChargeStateUpdateEvent args) + { + if (!_silicon.TryGetSiliconBattery(uid, out var batteryComp)) + { + SiliconDead(uid, siliconDeadComp, batteryComp, uid); + return; + } + + if (args.ChargePercent == 0 && siliconDeadComp.Dead) + return; + + if (args.ChargePercent == 0 && !siliconDeadComp.Dead) + SiliconDead(uid, siliconDeadComp, batteryComp, uid); + else if (args.ChargePercent != 0 && siliconDeadComp.Dead) + SiliconUnDead(uid, siliconDeadComp, batteryComp, uid); + } + + private void SiliconDead(EntityUid uid, SiliconDownOnDeadComponent siliconDeadComp, BatteryComponent? batteryComp, EntityUid batteryUid) + { + var deadEvent = new SiliconChargeDyingEvent(uid, batteryComp, batteryUid); + RaiseLocalEvent(uid, deadEvent); + + if (deadEvent.Cancelled) + return; + + EntityManager.EnsureComponent(uid); + EntityManager.EnsureComponent(uid); + + if (TryComp(uid, out HumanoidAppearanceComponent? humanoidAppearanceComponent)) + { + var layers = HumanoidVisualLayersExtension.Sublayers(HumanoidVisualLayers.HeadSide); + _humanoidAppearanceSystem.SetLayersVisibility(uid, layers, false, true, humanoidAppearanceComponent); + } + + siliconDeadComp.Dead = true; + + RaiseLocalEvent(uid, new SiliconChargeDeathEvent(uid, batteryComp, batteryUid)); + } + + private void SiliconUnDead(EntityUid uid, SiliconDownOnDeadComponent siliconDeadComp, BatteryComponent? batteryComp, EntityUid batteryUid) + { + RemComp(uid); + _sleep.TryWaking(uid, true); + + siliconDeadComp.Dead = false; + + RaiseLocalEvent(uid, new SiliconChargeAliveEvent(uid, batteryComp, batteryUid)); + } +} + +/// +/// A cancellable event raised when a Silicon is about to go down due to charge. +/// +/// +/// This probably shouldn't be modified unless you intend to fill the Silicon's battery, +/// as otherwise it'll just be triggered again next frame. +/// +public sealed class SiliconChargeDyingEvent : CancellableEntityEventArgs +{ + public EntityUid SiliconUid { get; } + public BatteryComponent? BatteryComp { get; } + public EntityUid BatteryUid { get; } + + public SiliconChargeDyingEvent(EntityUid siliconUid, BatteryComponent? batteryComp, EntityUid batteryUid) + { + SiliconUid = siliconUid; + BatteryComp = batteryComp; + BatteryUid = batteryUid; + } +} + +/// +/// An event raised after a Silicon has gone down due to charge. +/// +public sealed class SiliconChargeDeathEvent : EntityEventArgs +{ + public EntityUid SiliconUid { get; } + public BatteryComponent? BatteryComp { get; } + public EntityUid BatteryUid { get; } + + public SiliconChargeDeathEvent(EntityUid siliconUid, BatteryComponent? batteryComp, EntityUid batteryUid) + { + SiliconUid = siliconUid; + BatteryComp = batteryComp; + BatteryUid = batteryUid; + } +} + +/// +/// An event raised after a Silicon has reawoken due to an increase in charge. +/// +public sealed class SiliconChargeAliveEvent : EntityEventArgs +{ + public EntityUid SiliconUid { get; } + public BatteryComponent? BatteryComp { get; } + public EntityUid BatteryUid { get; } + + public SiliconChargeAliveEvent(EntityUid siliconUid, BatteryComponent? batteryComp, EntityUid batteryUid) + { + SiliconUid = siliconUid; + BatteryComp = batteryComp; + BatteryUid = batteryUid; + } +} diff --git a/Content.Server/SimpleStation14/Silicon/Charge/Systems/SiliconChargeSystem.cs b/Content.Server/SimpleStation14/Silicon/Charge/Systems/SiliconChargeSystem.cs new file mode 100644 index 00000000000..14a32db8eb5 --- /dev/null +++ b/Content.Server/SimpleStation14/Silicon/Charge/Systems/SiliconChargeSystem.cs @@ -0,0 +1,216 @@ +using Robust.Shared.Random; +using Content.Shared.SimpleStation14.Silicon.Components; +using Content.Server.Power.Components; +using Content.Shared.Mobs.Systems; +using Content.Server.Temperature.Components; +using Content.Server.Atmos.Components; +using Content.Server.Atmos.EntitySystems; +using Content.Server.Popups; +using Content.Shared.Popups; +using Content.Shared.SimpleStation14.Silicon.Systems; +using Content.Shared.Movement.Systems; +using Content.Server.Body.Components; +using Content.Server.Power.EntitySystems; +using Robust.Shared.Containers; +using Content.Shared.Mind.Components; +using System.Diagnostics.CodeAnalysis; +using Content.Server.PowerCell; +using Robust.Shared.Timing; +using Robust.Shared.Configuration; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Utility; +using Content.Shared.CCVar; +using Content.Shared.PowerCell.Components; +using Content.Shared.Mind; +using Content.Shared.Alert; +using Content.Server.SimpleStation14.Silicon.Death; + +namespace Content.Server.SimpleStation14.Silicon.Charge; + +public sealed class SiliconChargeSystem : EntitySystem +{ + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly MobStateSystem _mobState = default!; + [Dependency] private readonly FlammableSystem _flammable = default!; + [Dependency] private readonly PopupSystem _popup = default!; + [Dependency] private readonly MovementSpeedModifierSystem _moveMod = default!; + [Dependency] private readonly SharedContainerSystem _container = default!; + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly IConfigurationManager _config = default!; + [Dependency] private readonly PowerCellSystem _powerCell = default!; + [Dependency] private readonly AlertsSystem _alerts = default!; + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnSiliconStartup); + } + + public bool TryGetSiliconBattery(EntityUid silicon, [NotNullWhen(true)] out BatteryComponent? batteryComp) + { + batteryComp = null; + if (!TryComp(silicon, out SiliconComponent? siliconComp)) + return false; + + + // try get a battery directly on the inserted entity + if (TryComp(silicon, out batteryComp) + || _powerCell.TryGetBatteryFromSlot(silicon, out batteryComp)) + return true; + + + //DebugTools.Assert("SiliconComponent does not contain Battery"); + return false; + } + + private void OnSiliconStartup(EntityUid uid, SiliconComponent component, ComponentStartup args) + { + if (!TryComp(uid, out PowerCellSlotComponent? batterySlot)) + return; + + var container = _container.GetContainer(uid, batterySlot.CellSlotId); + + if (component.EntityType.GetType() != typeof(SiliconType)) + DebugTools.Assert("SiliconComponent.EntityType is not a SiliconType enum."); + } + + public override void Update(float frameTime) + { + base.Update(frameTime); + + // For each siliconComp entity with a battery component, drain their charge. + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var silicon, out var siliconComp)) + { + if (!siliconComp.BatteryPowered) + continue; + + // Check if the Silicon is an NPC, and if so, follow the delay as specified in the CVAR. + if (siliconComp.EntityType.Equals(SiliconType.Npc)) + { + var updateTime = _config.GetCVar(CCVars.SiliconNpcUpdateTime); + if (_timing.CurTime - siliconComp.LastDrainTime < TimeSpan.FromSeconds(updateTime)) + continue; + + siliconComp.LastDrainTime = _timing.CurTime; + } + + // If you can't find a battery, set the indicator and skip it. + if (!TryGetSiliconBattery(silicon, out var batteryComp)) + { + UpdateChargeState(silicon, 0, siliconComp); + if (_alerts.IsShowingAlert(silicon, siliconComp.BatteryAlert)) + { + _alerts.ClearAlert(silicon, siliconComp.BatteryAlert); + _alerts.ShowAlert(silicon, siliconComp.NoBatteryAlert); + } + continue; + } + + // If the silicon is dead, skip it. + if (_mobState.IsDead(silicon)) + continue; + + // If the silicon ghosted or is SSD while still being powered, skip it. - DeltaV + if (EntityManager.TryGetComponent(silicon, out var mindContComp) + && EntityManager.TryGetComponent(silicon, out var siliconDeathComp)) + { + if ((mindContComp.HasMind == false || CompOrNull(mindContComp.Mind)?.Session == null) && !siliconDeathComp.Dead) + { + continue; + } + } + + var drainRate = siliconComp.DrainPerSecond; + + // All multipliers will be subtracted by 1, and then added together, and then multiplied by the drain rate. This is then added to the base drain rate. + // This is to stop exponential increases, while still allowing for less-than-one multipliers. + var drainRateFinalAddi = 0f; + + // TODO: Devise a method of adding multis where other systems can alter the drain rate. + // Maybe use something similar to refreshmovespeedmodifiers, where it's stored in the component. + // Maybe it doesn't matter, and stuff should just use static drain? + if (!siliconComp.EntityType.Equals(SiliconType.Npc)) // Don't bother checking heat if it's an NPC. It's a waste of time, and it'd be delayed due to the update time. + drainRateFinalAddi += SiliconHeatEffects(silicon, frameTime) - 1; // This will need to be changed at some point if we allow external batteries, since the heat of the Silicon might not be applicable. + + // Ensures that the drain rate is at least 10% of normal, + // and would allow at least 4 minutes of life with a max charge, to prevent cheese. + drainRate += Math.Clamp(drainRateFinalAddi, drainRate * -0.9f, batteryComp.MaxCharge / 240); + + // Drain the battery. + _powerCell.TryUseCharge(silicon, frameTime * drainRate); + + // Figure out the current state of the Silicon. + var chargePercent = (short) MathF.Round(batteryComp.CurrentCharge / batteryComp.MaxCharge * 10f); + + UpdateChargeState(silicon, chargePercent, siliconComp); + } + } + + /// + /// Checks if anything needs to be updated, and updates it. + /// + public void UpdateChargeState(EntityUid uid, short chargePercent, SiliconComponent component) + { + component.ChargeState = chargePercent; + + RaiseLocalEvent(uid, new SiliconChargeStateUpdateEvent(chargePercent)); + + _moveMod.RefreshMovementSpeedModifiers(uid); + + // If the battery was replaced and the no battery indicator is showing, replace the indicator + if (_alerts.IsShowingAlert(uid, component.NoBatteryAlert) && chargePercent != 0) + { + _alerts.ClearAlert(uid, component.NoBatteryAlert); + _alerts.ShowAlert(uid, component.BatteryAlert, chargePercent); + } + } + + private float SiliconHeatEffects(EntityUid silicon, float frameTime) + { + if (!EntityManager.TryGetComponent(silicon, out var temperComp) + || !EntityManager.TryGetComponent(silicon, out var thermalComp)) + return 0; + + var siliconComp = EntityManager.GetComponent(silicon); + + // If the Silicon is hot, drain the battery faster, if it's cold, drain it slower, capped. + var upperThresh = thermalComp.NormalBodyTemperature + thermalComp.ThermalRegulationTemperatureThreshold; + var upperThreshHalf = thermalComp.NormalBodyTemperature + thermalComp.ThermalRegulationTemperatureThreshold * 0.5f; + + // Check if the silicon is in a hot environment. + if (temperComp.CurrentTemperature > upperThreshHalf) + { + // Divide the current temp by the max comfortable temp capped to 4, then add that to the multiplier. + var hotTempMulti = Math.Min(temperComp.CurrentTemperature / upperThreshHalf, 4); + + // If the silicon is hot enough, it has a chance to catch fire. + + siliconComp.OverheatAccumulator += frameTime; + if (!(siliconComp.OverheatAccumulator >= 5)) + return hotTempMulti; + + siliconComp.OverheatAccumulator -= 5; + + if (!EntityManager.TryGetComponent(silicon, out var flamComp) + || flamComp is { OnFire: true } + || !(temperComp.CurrentTemperature > temperComp.HeatDamageThreshold)) + return hotTempMulti; + + _popup.PopupEntity(Loc.GetString("silicon-overheating"), silicon, silicon, PopupType.MediumCaution); + if (_random.Prob(Math.Clamp(temperComp.CurrentTemperature / (upperThresh * 5), 0.001f, 0.9f))) + { + //MaximumFireStacks and MinimumFireStacks doesn't exists on EE + _flammable.AdjustFireStacks(silicon, Math.Clamp(siliconComp.FireStackMultiplier, -10, 10), flamComp); + _flammable.Ignite(silicon, silicon, flamComp); + } + return hotTempMulti; + } + + // Check if the silicon is in a cold environment. + if (temperComp.CurrentTemperature < thermalComp.NormalBodyTemperature) + return 0.5f + temperComp.CurrentTemperature / thermalComp.NormalBodyTemperature * 0.5f; + + return 0; + } +} diff --git a/Content.Server/SimpleStation14/Silicon/IPC/InternalEncryptionKeySpawner.cs b/Content.Server/SimpleStation14/Silicon/IPC/InternalEncryptionKeySpawner.cs new file mode 100644 index 00000000000..84ff6214709 --- /dev/null +++ b/Content.Server/SimpleStation14/Silicon/IPC/InternalEncryptionKeySpawner.cs @@ -0,0 +1,39 @@ +using Content.Shared.Preferences; +using Content.Shared.Roles; +using Content.Shared.Radio.Components; // Parkstation-IPC +using Content.Shared.Containers; // Parkstation-IPC +using Robust.Shared.Containers; // Parkstation-IPC + + // Pretty much copied from StationSpawningSystem.SpawnStartingGear +namespace Content.Server.SimpleStation14.Silicon.IPC; +public static class InternalEncryptionKeySpawner +{ + public static void TryInsertEncryptionKey(EntityUid target, IEquipmentLoadout startingGear, IEntityManager entityManager, HumanoidCharacterProfile? profile) + { + if (entityManager.TryGetComponent(target, out var keyHolderComp)) + { + var earEquipString = startingGear.GetGear("ears"); + var containerMan = entityManager.System(); + + if (!string.IsNullOrEmpty(earEquipString)) + { + var earEntity = entityManager.SpawnEntity(earEquipString, entityManager.GetComponent(target).Coordinates); + + if (entityManager.TryGetComponent(earEntity, out _) && // I had initially wanted this to spawn the headset, and simply move all the keys over, but the headset didn't seem to have any keys in it when spawned... + entityManager.TryGetComponent(earEntity, out var fillComp) && + fillComp.Containers.TryGetValue(EncryptionKeyHolderComponent.KeyContainerName, out var defaultKeys)) + { + containerMan.CleanContainer(keyHolderComp.KeyContainer); + + foreach (var key in defaultKeys) + { + var keyEntity = entityManager.SpawnEntity(key, entityManager.GetComponent(target).Coordinates); + containerMan.Insert(keyEntity, keyHolderComp.KeyContainer, force: true); + } + } + + entityManager.QueueDeleteEntity(earEntity); + } + } + } +} diff --git a/Content.Server/SimpleStation14/Silicon/Systems/SiliconMiscSystem.cs b/Content.Server/SimpleStation14/Silicon/Systems/SiliconMiscSystem.cs new file mode 100644 index 00000000000..d331d8908e0 --- /dev/null +++ b/Content.Server/SimpleStation14/Silicon/Systems/SiliconMiscSystem.cs @@ -0,0 +1,20 @@ +using Content.Shared.SimpleStation14.Silicon.Components; +using Content.Shared.Bed.Sleep; + +namespace Content.Server.SimpleStation14.Silicon.Misc; + +// This entire thing is fucking stupid and I hate it. +public sealed class SiliconMiscSystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnTryingToSleep); + } + + private void OnTryingToSleep(EntityUid uid, SiliconComponent component, ref TryingToSleepEvent args) + { + args.Cancelled = true; + } +} diff --git a/Content.Server/Station/Systems/StationSpawningSystem.cs b/Content.Server/Station/Systems/StationSpawningSystem.cs index 29bd497a1b6..e169340d471 100644 --- a/Content.Server/Station/Systems/StationSpawningSystem.cs +++ b/Content.Server/Station/Systems/StationSpawningSystem.cs @@ -6,6 +6,7 @@ using Content.Server.Mind.Commands; using Content.Server.PDA; using Content.Server.Shuttles.Systems; +using Content.Server.SimpleStation14.Silicon.IPC; // Parkstation - IPCs using Content.Server.Spawners.EntitySystems; using Content.Server.Spawners.Components; using Content.Server.Station.Components; @@ -182,6 +183,10 @@ public EntityUid SpawnPlayerMob( { var startingGear = _prototypeManager.Index(prototype.StartingGear); EquipStartingGear(entity.Value, startingGear, raiseEvent: false); + // Parkstation - IPC + if (profile != null) + InternalEncryptionKeySpawner.TryInsertEncryptionKey(entity.Value, startingGear, EntityManager, profile); + // End of Parkstation code } var gearEquippedEv = new StartingGearEquippedEvent(entity.Value); diff --git a/Content.Server/_EstacaoPirata/BatteryLocking/BatterySlotRequiresLockComponent.cs b/Content.Server/_EstacaoPirata/BatteryLocking/BatterySlotRequiresLockComponent.cs new file mode 100644 index 00000000000..fce21fd7505 --- /dev/null +++ b/Content.Server/_EstacaoPirata/BatteryLocking/BatterySlotRequiresLockComponent.cs @@ -0,0 +1,8 @@ +namespace Content.Server.SimpleStation14.BatteryLocking; + +[RegisterComponent] +public sealed partial class BatterySlotRequiresLockComponent : Component +{ + [DataField] + public string ItemSlot = string.Empty; +} diff --git a/Content.Server/_EstacaoPirata/BatteryLocking/BatterySlotRequiresLockSystem.cs b/Content.Server/_EstacaoPirata/BatteryLocking/BatterySlotRequiresLockSystem.cs new file mode 100644 index 00000000000..abaeacee128 --- /dev/null +++ b/Content.Server/_EstacaoPirata/BatteryLocking/BatterySlotRequiresLockSystem.cs @@ -0,0 +1,43 @@ +using Content.Shared.Containers.ItemSlots; +using Content.Shared.Lock; +using Content.Shared.Popups; // DeltaV +using Content.Shared.SimpleStation14.Silicon.Components; // DeltaV +using Content.Shared.IdentityManagement; // DeltaV + +namespace Content.Server.SimpleStation14.BatteryLocking; + +public sealed class BatterySlotRequiresLockSystem : EntitySystem + +{ + [Dependency] private readonly ItemSlotsSystem _itemSlotsSystem = default!; + [Dependency] private readonly SharedPopupSystem _popupSystem = default!; // DeltaV + + /// + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(LockToggled); + SubscribeLocalEvent(LockToggleAttempted); // DeltaV + + } + private void LockToggled(EntityUid uid, BatterySlotRequiresLockComponent component, LockToggledEvent args) + { + if (!TryComp(uid, out var lockComp) + || !TryComp(uid, out var itemslots) + || !_itemSlotsSystem.TryGetSlot(uid, component.ItemSlot, out var slot, itemslots)) + return; + + _itemSlotsSystem.SetLock(uid, slot, lockComp.Locked, itemslots); + } + + // DeltaV - Alert IPCs when they are being unlocked + private void LockToggleAttempted(EntityUid uid, BatterySlotRequiresLockComponent component, LockToggleAttemptEvent args) + { + if (args.User == uid + || !TryComp(uid, out var siliconComp)) + return; + + _popupSystem.PopupEntity(Loc.GetString("batteryslotrequireslock-component-alert-owner", ("user", Identity.Entity(args.User, EntityManager))), uid, uid, PopupType.Large); + } + // End of DeltaV Code +} diff --git a/Content.Server/_EstacaoPirata/BlindHealing/BlindHealingComponent.cs b/Content.Server/_EstacaoPirata/BlindHealing/BlindHealingComponent.cs new file mode 100644 index 00000000000..fdd39a1ce86 --- /dev/null +++ b/Content.Server/_EstacaoPirata/BlindHealing/BlindHealingComponent.cs @@ -0,0 +1,28 @@ +using Content.Shared.Damage; +using Content.Shared.Tools; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Server._EstacaoPirata.BlindHealing +{ + [RegisterComponent] + public sealed partial class BlindHealingComponent : Component + { + [DataField] + public int DoAfterDelay = 3; + + /// + /// A multiplier that will be applied to the above if an entity is repairing themselves. + /// + [DataField] + public float SelfHealPenalty = 3f; + + /// + /// Whether or not an entity is allowed to repair itself. + /// + [DataField] + public bool AllowSelfHeal = true; + + [DataField(required: true)] + public List DamageContainers; + } +} diff --git a/Content.Server/_EstacaoPirata/BlindHealing/BlindHealingSystem.cs b/Content.Server/_EstacaoPirata/BlindHealing/BlindHealingSystem.cs new file mode 100644 index 00000000000..32a8a96609b --- /dev/null +++ b/Content.Server/_EstacaoPirata/BlindHealing/BlindHealingSystem.cs @@ -0,0 +1,121 @@ +using Content.Server.Administration.Logs; +using Content.Server.Cargo.Components; +using Content.Server.Stack; +using Content.Shared._EstacaoPirata.BlindHealing; +using Content.Shared.Damage; +using Content.Shared.Database; +using Content.Shared.DoAfter; +using Content.Shared.Eye.Blinding.Components; +using Content.Shared.Eye.Blinding.Systems; +using Content.Shared.Interaction; +using Content.Shared.Interaction.Events; +using Content.Shared.Popups; +using Content.Shared.Stacks; + +namespace Content.Server._EstacaoPirata.BlindHealing +{ + public sealed class BlindHealingSystem : SharedBlindHealingSystem + { + [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly IAdminLogManager _adminLogger= default!; + [Dependency] private readonly BlindableSystem _blindableSystem = default!; + [Dependency] private readonly StackSystem _stackSystem = default!; + [Dependency] private readonly DamageableSystem _damageableSystem = default!; + [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; + + public override void Initialize() + { + SubscribeLocalEvent(OnUse); + SubscribeLocalEvent(OnInteract); + SubscribeLocalEvent(OnHealingFinished); + } + + private void OnHealingFinished(EntityUid uid, BlindHealingComponent component, HealingDoAfterEvent args) + { + Log.Info("event started!"); + + if (args.Cancelled || args.Target == null) + return; + + EntityUid target = (EntityUid) args.Target; + + if(!EntityManager.TryGetComponent(target, out BlindableComponent? blindcomp) + || blindcomp is { EyeDamage: 0 }) + return; + + if(EntityManager.TryGetComponent(uid, out StackComponent? stackComponent)) + { + double price = 1; + if (EntityManager.TryGetComponent(uid, out StackPriceComponent? stackPrice)) + price = stackPrice.Price; + _stackSystem.SetCount(uid, (int) (_stackSystem.GetCount(uid, stackComponent) - price), stackComponent); + + } + + _blindableSystem.AdjustEyeDamage((target, blindcomp), -blindcomp!.EyeDamage); + + _adminLogger.Add(LogType.Healed, $"{ToPrettyString(args.User):user} repaired {ToPrettyString(uid):target}'s vision"); + + var str = Loc.GetString("comp-repairable-repair", + ("target", uid), + ("tool", args.Used!)); + _popup.PopupEntity(str, uid, args.User); + + } + + private bool TryHealBlindness(EntityUid uid, EntityUid user, EntityUid target, float delay) + { + var doAfterEventArgs = + new DoAfterArgs(EntityManager, user, delay, new HealingDoAfterEvent(), uid, target: target, used: uid) + { + NeedHand = true, + BreakOnMove = true, + BreakOnWeightlessMove = false, + }; + + _doAfter.TryStartDoAfter(doAfterEventArgs); + return true; + } + + private void OnInteract(EntityUid uid, BlindHealingComponent component, ref AfterInteractEvent args) + { + + if (args.Handled + || !TryComp(args.User, out DamageableComponent? damageable) + || damageable.DamageContainerID != null + && !component.DamageContainers.Contains(damageable.DamageContainerID) + || !TryComp(args.User, out BlindableComponent? blindcomp) + || blindcomp is { EyeDamage: 0 }) + return; + + float delay = component.DoAfterDelay; + + if (args.User == args.Target) + { + if (!component.AllowSelfHeal) + return; + delay *= component.SelfHealPenalty; + } + + TryHealBlindness(uid, args.User, args.User, delay); + } + + private void OnUse(EntityUid uid, BlindHealingComponent component, ref UseInHandEvent args) + { + if (args.Handled + || !TryComp(args.User, out DamageableComponent? damageable) + || damageable.DamageContainerID != null + && !component.DamageContainers.Contains(damageable.DamageContainerID) + || !TryComp(args.User, out BlindableComponent? blindcomp) + || blindcomp is { EyeDamage: 0 } + || !component.AllowSelfHeal) + return; + + float delay = component.DoAfterDelay; + delay *= component.SelfHealPenalty; + + TryHealBlindness(uid, args.User, args.User, delay); + + } + } +} diff --git a/Content.Server/_EstacaoPirata/DeadStartupButtonSystem/DeadStartupButtonSystem.cs b/Content.Server/_EstacaoPirata/DeadStartupButtonSystem/DeadStartupButtonSystem.cs new file mode 100644 index 00000000000..c8ba8211f76 --- /dev/null +++ b/Content.Server/_EstacaoPirata/DeadStartupButtonSystem/DeadStartupButtonSystem.cs @@ -0,0 +1,84 @@ +using Content.Server.Chat.Systems; +using Content.Server.Lightning; +using Content.Server.Popups; +using Content.Server.PowerCell; +using Content.Server.SimpleStation14.Silicon.Charge; +using Content.Shared._EstacaoPirata.DeadStartupButton; +using Content.Shared.Audio; +using Content.Shared.Damage; +using Content.Shared.Electrocution; +using Content.Shared.Mobs; +using Content.Shared.Mobs.Components; +using Content.Shared.Mobs.Systems; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Random; + +namespace Content.Server._EstacaoPirata.DeadStartupButtonSystem; + +public sealed class DeadStartupButtonSystem : SharedDeadStartupButtonSystem +{ + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly MobStateSystem _mobState = default!; + [Dependency] private readonly MobThresholdSystem _mobThreshold = default!; + [Dependency] private readonly PopupSystem _popup = default!; + [Dependency] private readonly IRobustRandom _robustRandom = default!; + [Dependency] private readonly LightningSystem _lightning = default!; + [Dependency] private readonly SiliconChargeSystem _siliconChargeSystem = default!; + [Dependency] private readonly PowerCellSystem _powerCell = default!; + [Dependency] private readonly ChatSystem _chatSystem = default!; + + /// + public override void Initialize() + { + SubscribeLocalEvent(OnDoAfter); + SubscribeLocalEvent(OnElectrocuted); + SubscribeLocalEvent(OnMobStateChanged); + + } + + private void OnDoAfter(EntityUid uid, DeadStartupButtonComponent comp, OnDoAfterButtonPressedEvent args) + { + if (args.Handled || args.Cancelled + || !TryComp(uid, out MobStateComponent? mobStateComponent) + || !_mobState.IsDead(uid, mobStateComponent) + || !TryComp(uid, out MobThresholdsComponent? mobThresholdsComponent) + || !TryComp(uid, out DamageableComponent? damageable)) + return; + + var criticalThreshold = _mobThreshold.GetThresholdForState(uid, MobState.Critical, mobThresholdsComponent); + + if (damageable.TotalDamage < criticalThreshold) + _mobState.ChangeMobState(uid, MobState.Alive, mobStateComponent); + else + { + _audio.PlayPvs(comp.BuzzSound, uid, AudioHelpers.WithVariation(0.05f, _robustRandom)); + _popup.PopupEntity(Loc.GetString("dead-startup-system-reboot-failed", ("target", MetaData(uid).EntityName)), uid); + Spawn("EffectSparks", Transform(uid).Coordinates); + } + } + + private void OnElectrocuted(EntityUid uid, DeadStartupButtonComponent comp, ElectrocutedEvent args) + { + if (!TryComp(uid, out MobStateComponent? mobStateComponent) + || !_mobState.IsDead(uid, mobStateComponent) + || !_siliconChargeSystem.TryGetSiliconBattery(uid, out var bateria) + || bateria.CurrentCharge <= 0) + return; + + _lightning.ShootRandomLightnings(uid, 2, 4); + _powerCell.TryUseCharge(uid, bateria.CurrentCharge); + + } + + private void OnMobStateChanged(EntityUid uid, DeadStartupButtonComponent comp, MobStateChangedEvent args) + { + + if (args.NewMobState == MobState.Alive) + { + _popup.PopupEntity(Loc.GetString("dead-startup-system-reboot-success", ("target", MetaData(uid).EntityName)), uid); + _audio.PlayPvs(comp.Sound, uid); + } + + } + +} diff --git a/Content.Server/_EstacaoPirata/EmitBuzzWhileDamaged/EmitBuzzWhileDamagedSystem.cs b/Content.Server/_EstacaoPirata/EmitBuzzWhileDamaged/EmitBuzzWhileDamagedSystem.cs new file mode 100644 index 00000000000..76936c5dfca --- /dev/null +++ b/Content.Server/_EstacaoPirata/EmitBuzzWhileDamaged/EmitBuzzWhileDamagedSystem.cs @@ -0,0 +1,60 @@ +using Content.Server.Chat.Systems; +using Content.Shared._EstacaoPirata.EmitBuzzWhileDamaged; +using Content.Shared.Audio; +using Content.Shared.Body.Components; +using Content.Shared.Damage; +using Content.Shared.Mobs; +using Content.Shared.Mobs.Systems; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Random; +using Robust.Shared.Timing; + +namespace Content.Server._EstacaoPirata.EmitBuzzOnCrit; + +/// +/// This handles the buzzing emote and sound of a silicon based race when it is pretty damaged. +/// +public sealed class EmitBuzzWhileDamagedSystem : EntitySystem +{ + [Dependency] private readonly MobStateSystem _mobState = default!; + [Dependency] private readonly MobThresholdSystem _mobThreshold = default!; + [Dependency] private readonly IGameTiming _gameTiming = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly IRobustRandom _robustRandom = default!; + [Dependency] private readonly ChatSystem _chat = default!; + + public override void Update(float frameTime) + { + base.Update(frameTime); + + var query = EntityQueryEnumerator(); + + while (query.MoveNext(out var uid, out var emitBuzzOnCritComponent, out var body)) + { + + if (_mobState.IsDead(uid) + || !_mobThreshold.TryGetThresholdForState(uid, MobState.Critical, out var threshold) + || !TryComp(uid, out DamageableComponent? damageableComponent) + || damageableComponent.TotalDamage < (threshold/2)) + continue; + + + emitBuzzOnCritComponent.AccumulatedFrametime += frameTime; + + if (emitBuzzOnCritComponent.AccumulatedFrametime < emitBuzzOnCritComponent.CycleDelay) + continue; + emitBuzzOnCritComponent.AccumulatedFrametime -= emitBuzzOnCritComponent.CycleDelay; + + + // start buzzing + if (_gameTiming.CurTime >= emitBuzzOnCritComponent.LastBuzzEmoteTime + emitBuzzOnCritComponent.BuzzEmoteCooldown) + { + emitBuzzOnCritComponent.LastBuzzEmoteTime = _gameTiming.CurTime; + _chat.TryEmoteWithChat(uid, emitBuzzOnCritComponent.BuzzEmote, ignoreActionBlocker: true); + Spawn("EffectSparks", Transform(uid).Coordinates); + _audio.PlayPvs(emitBuzzOnCritComponent.Sound, uid, AudioHelpers.WithVariation(0.05f, _robustRandom)); + } + } + } + +} diff --git a/Content.Server/_EstacaoPirata/EncryptionHolderRequiresLock/EncryptionHolderRequiresLockComponent.cs b/Content.Server/_EstacaoPirata/EncryptionHolderRequiresLock/EncryptionHolderRequiresLockComponent.cs new file mode 100644 index 00000000000..033077f1332 --- /dev/null +++ b/Content.Server/_EstacaoPirata/EncryptionHolderRequiresLock/EncryptionHolderRequiresLockComponent.cs @@ -0,0 +1,6 @@ +namespace Content.Server.SimpleStation14.EncryptionHolderRequiresLock; + +[RegisterComponent] +public sealed partial class EncryptionHolderRequiresLockComponent : Component +{ +} diff --git a/Content.Server/_EstacaoPirata/EncryptionHolderRequiresLock/EncryptionHolderRequiresLockSystem.cs b/Content.Server/_EstacaoPirata/EncryptionHolderRequiresLock/EncryptionHolderRequiresLockSystem.cs new file mode 100644 index 00000000000..96a3860e7f4 --- /dev/null +++ b/Content.Server/_EstacaoPirata/EncryptionHolderRequiresLock/EncryptionHolderRequiresLockSystem.cs @@ -0,0 +1,30 @@ +using Content.Shared.Containers.ItemSlots; +using Content.Shared.Lock; +using Content.Shared.Radio.Components; +using Content.Shared.Radio.EntitySystems; + +namespace Content.Server.SimpleStation14.EncryptionHolderRequiresLock; + +public sealed class EncryptionHolderRequiresLockSystem : EntitySystem + +{ + [Dependency] private readonly ItemSlotsSystem _itemSlotsSystem = default!; + [Dependency] private readonly EncryptionKeySystem _encryptionKeySystem = default!; + + /// + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(LockToggled); + + } + private void LockToggled(EntityUid uid, EncryptionHolderRequiresLockComponent component, LockToggledEvent args) + { + if (!TryComp(uid, out var lockComp) + || !TryComp(uid, out var keyHolder)) + return; + + keyHolder.KeysUnlocked = !lockComp.Locked; + _encryptionKeySystem.UpdateChannels(uid, keyHolder); + } +} diff --git a/Content.Server/_EstacaoPirata/WeldingHealable/WeldingHealableComponent.cs b/Content.Server/_EstacaoPirata/WeldingHealable/WeldingHealableComponent.cs new file mode 100644 index 00000000000..f1138cc302d --- /dev/null +++ b/Content.Server/_EstacaoPirata/WeldingHealable/WeldingHealableComponent.cs @@ -0,0 +1,9 @@ +using Content.Shared.Damage; +using Content.Shared.Tools; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Server._EstacaoPirata.WeldingHealable +{ + [RegisterComponent] + public sealed partial class WeldingHealableComponent : Component { } +} diff --git a/Content.Server/_EstacaoPirata/WeldingHealable/WeldingHealableSystem.cs b/Content.Server/_EstacaoPirata/WeldingHealable/WeldingHealableSystem.cs new file mode 100644 index 00000000000..d4f245542a0 --- /dev/null +++ b/Content.Server/_EstacaoPirata/WeldingHealable/WeldingHealableSystem.cs @@ -0,0 +1,120 @@ +using System.Diagnostics; +using Content.Server._EstacaoPirata.WeldingHealing; +using Content.Server.Administration.Logs; +using Content.Server.Stack; +using Content.Shared.Tools.Components; +using Content.Shared._EstacaoPirata.WeldingHealing; +using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; +using Content.Shared.Damage; +using Content.Shared.Database; +using Content.Shared.Eye.Blinding.Components; +using Content.Shared.Eye.Blinding.Systems; +using Content.Shared.FixedPoint; +using Content.Shared.Interaction; +using Content.Shared.Popups; +using Content.Shared.Stacks; +using SharedToolSystem = Content.Shared.Tools.Systems.SharedToolSystem; + +namespace Content.Server._EstacaoPirata.WeldingHealable +{ + public sealed class WeldingHealableSystem : SharedWeldingHealableSystem + { + [Dependency] private readonly SharedToolSystem _toolSystem = default!; + [Dependency] private readonly DamageableSystem _damageableSystem = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly IAdminLogManager _adminLogger= default!; + [Dependency] private readonly SharedSolutionContainerSystem _solutionContainer= default!; + + public override void Initialize() + { + SubscribeLocalEvent(Repair); + SubscribeLocalEvent(OnRepairFinished); + } + + private void OnRepairFinished(EntityUid uid, WeldingHealableComponent healableComponentcomponent, SiliconRepairFinishedEvent args) + { + if (args.Cancelled || args.Used == null + || !EntityManager.TryGetComponent(args.Target, out DamageableComponent? damageable) + || !EntityManager.TryGetComponent(args.Used, out WeldingHealingComponent? component) + || damageable.DamageContainerID != null + && !component.DamageContainers.Contains(damageable.DamageContainerID)) + return; + + var damageChanged = _damageableSystem.TryChangeDamage(uid, component.Damage, true, false, origin: args.User); + + + if (!HasDamage(damageable, component)) + return; + + if (TryComp(args.Used, out WelderComponent? welder) && + TryComp(args.Used, out SolutionContainerManagerComponent? solutionContainer)) + { + if (!_solutionContainer.TryGetSolution(((EntityUid) args.Used, solutionContainer), welder.FuelSolutionName, out var solutionComp, out var solution)) + return; + _solutionContainer.RemoveReagent(solutionComp.Value, welder.FuelReagent, component.FuelCost); + } + + var str = Loc.GetString("comp-repairable-repair", + ("target", uid), + ("tool", args.Used!)); + _popup.PopupEntity(str, uid, args.User); + + + if (args.Used.HasValue) + { + args.Handled = _toolSystem.UseTool(args.Used.Value, args.User, uid, args.Delay, component.QualityNeeded, new SiliconRepairFinishedEvent + { + Delay = args.Delay + }); + } + } + + + + private async void Repair(EntityUid uid, WeldingHealableComponent healableComponent, InteractUsingEvent args) + { + if (args.Handled + || !EntityManager.TryGetComponent(args.Used, out WeldingHealingComponent? component) + || !EntityManager.TryGetComponent(args.Target, out DamageableComponent? damageable) + || damageable.DamageContainerID != null + && !component.DamageContainers.Contains(damageable.DamageContainerID) + || !HasDamage(damageable, component) + || !_toolSystem.HasQuality(args.Used, component.QualityNeeded)) + return; + + float delay = component.DoAfterDelay; + + // Add a penalty to how long it takes if the user is repairing itself + if (args.User == args.Target) + { + if (!component.AllowSelfHeal) + return; + + delay *= component.SelfHealPenalty; + } + + // Run the repairing doafter + args.Handled = _toolSystem.UseTool(args.Used, args.User, args.Target, delay, component.QualityNeeded, new SiliconRepairFinishedEvent + { + Delay = delay, + }); + + } + private bool HasDamage(DamageableComponent component, WeldingHealingComponent healable) + { + var damageableDict = component.Damage.DamageDict; + var healingDict = healable.Damage.DamageDict; + foreach (var type in healingDict) + { + if (damageableDict[type.Key].Value > 0) + { + return true; + } + } + + return false; + } + } +} diff --git a/Content.Server/_EstacaoPirata/WeldingHealing/WeldingHealingComponent.cs b/Content.Server/_EstacaoPirata/WeldingHealing/WeldingHealingComponent.cs new file mode 100644 index 00000000000..9a63a90ceb4 --- /dev/null +++ b/Content.Server/_EstacaoPirata/WeldingHealing/WeldingHealingComponent.cs @@ -0,0 +1,46 @@ +using Content.Shared.Damage; +using Content.Shared.Tools; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Server._EstacaoPirata.WeldingHealing +{ + [RegisterComponent] + public sealed partial class WeldingHealingComponent : Component + { + /// + /// All the damage to change information is stored in this . + /// + /// + /// If this data-field is specified, it will change damage by this amount instead of setting all damage to 0. + /// in order to heal/repair the damage values have to be negative. + /// + + [DataField(required: true)] + public DamageSpecifier Damage; + + [DataField(customTypeSerializer:typeof(PrototypeIdSerializer))] + public string QualityNeeded = "Welding"; + + // The fuel amount needed to repair physical related damage + [ViewVariables(VVAccess.ReadWrite)] [DataField("fuelcost")] + public int FuelCost = 5; + + [DataField] + public int DoAfterDelay = 3; + + /// + /// A multiplier that will be applied to the above if an entity is repairing themselves. + /// + [DataField] + public float SelfHealPenalty = 3f; + + /// + /// Whether or not an entity is allowed to repair itself. + /// + [DataField] + public bool AllowSelfHeal = true; + + [DataField(required: true)] + public List DamageContainers; + } +} diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 67fb831d492..9c68070173e 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -2169,6 +2169,14 @@ public static readonly CVarDef public static readonly CVarDef ReplayAutoRecordTempDir = CVarDef.Create("replay.auto_record_temp_dir", "", CVar.SERVERONLY); + + /// + /// The amount of time between NPC Silicons draining their battery in seconds. - Estacao Pirata + /// + public static readonly CVarDef SiliconNpcUpdateTime = + CVarDef.Create("silicon.npcupdatetime", 1.5f, CVar.SERVERONLY); + + /* * Miscellaneous */ diff --git a/Content.Shared/Electrocution/ElectrocutionEvents.cs b/Content.Shared/Electrocution/ElectrocutionEvents.cs index fe5753c7fb3..8f87f7149b4 100644 --- a/Content.Shared/Electrocution/ElectrocutionEvents.cs +++ b/Content.Shared/Electrocution/ElectrocutionEvents.cs @@ -24,12 +24,14 @@ public sealed class ElectrocutedEvent : EntityEventArgs public readonly EntityUid TargetUid; public readonly EntityUid? SourceUid; public readonly float SiemensCoefficient; + public readonly float? ShockDamage = null; // Parkstation-IPC - public ElectrocutedEvent(EntityUid targetUid, EntityUid? sourceUid, float siemensCoefficient) + public ElectrocutedEvent(EntityUid targetUid, EntityUid? sourceUid, float siemensCoefficient, float shockDamage) // Parkstation-IPC { TargetUid = targetUid; SourceUid = sourceUid; SiemensCoefficient = siemensCoefficient; + ShockDamage = shockDamage; // Parkstation-IPC } } } diff --git a/Content.Shared/Humanoid/NamingSystem.cs b/Content.Shared/Humanoid/NamingSystem.cs index b3f1c69a65d..01d9d815f64 100644 --- a/Content.Shared/Humanoid/NamingSystem.cs +++ b/Content.Shared/Humanoid/NamingSystem.cs @@ -40,6 +40,11 @@ public string GetName(string species, Gender? gender = null) case SpeciesNaming.FirstDashFirst: return Loc.GetString("namepreset-firstdashfirst", ("first1", GetFirstName(speciesProto, gender)), ("first2", GetFirstName(speciesProto, gender))); + // Start of Parkstation - IPC naming + case SpeciesNaming.FirstDashLast: + return Loc.GetString("namepreset-firstdashlast", + ("first", GetFirstName(speciesProto, gender)), ("last", GetLastName(speciesProto))); + // End of Parkstation code case SpeciesNaming.LastFirst: // DeltaV: Rodentia name scheme return Loc.GetString("namepreset-lastfirst", ("last", GetLastName(speciesProto)), ("first", GetFirstName(speciesProto, gender))); diff --git a/Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs b/Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs index 3477655d8c5..1b217ee8285 100644 --- a/Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs +++ b/Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs @@ -131,5 +131,8 @@ public enum SpeciesNaming : byte LastNoFirst, //End of Nyano - Summary: for Oni naming TheFirstofLast, - LastFirst, // DeltaV + //Start of Parkstation - IPC naming + FirstDashLast, + // End of Parkstation code + LastFirst, // DeltaV - Rodentia } diff --git a/Content.Shared/Lock/LockComponent.cs b/Content.Shared/Lock/LockComponent.cs index 070d5801c1c..d5407debd7a 100644 --- a/Content.Shared/Lock/LockComponent.cs +++ b/Content.Shared/Lock/LockComponent.cs @@ -30,7 +30,8 @@ public sealed partial class LockComponent : Component /// /// Whether or not the lock is unlocked by simply clicking. /// - [DataField, AutoNetworkedField] + [DataField("unlockOnClick"), ViewVariables(VVAccess.ReadWrite)] // Estacao Pirata - IPC locking + [AutoNetworkedField] public bool UnlockOnClick = true; /// diff --git a/Content.Shared/Lock/LockSystem.cs b/Content.Shared/Lock/LockSystem.cs index 3349034f32e..6b4d620c19a 100644 --- a/Content.Shared/Lock/LockSystem.cs +++ b/Content.Shared/Lock/LockSystem.cs @@ -62,12 +62,17 @@ private void OnStartup(EntityUid uid, LockComponent lockComp, ComponentStartup a private void OnActivated(EntityUid uid, LockComponent lockComp, ActivateInWorldEvent args) { + if (args.Handled || !args.Complex) + return; // Only attempt an unlock by default on Activate if (lockComp.Locked && lockComp.UnlockOnClick) { + // Estacao Pirata - IPC locking + if (!lockComp.UnlockOnClick) + return; TryUnlock(uid, args.User, lockComp); args.Handled = true; } diff --git a/Content.Shared/Radio/Components/EncryptionKeyHolderComponent.cs b/Content.Shared/Radio/Components/EncryptionKeyHolderComponent.cs index bd49acf9090..6197d4f999c 100644 --- a/Content.Shared/Radio/Components/EncryptionKeyHolderComponent.cs +++ b/Content.Shared/Radio/Components/EncryptionKeyHolderComponent.cs @@ -42,6 +42,15 @@ public sealed partial class EncryptionKeyHolderComponent : Component public Container KeyContainer = default!; public const string KeyContainerName = "key_slots"; + // IPC-Start + /// + /// Whether or not the headset can be examined to see the encryption keys while the keys aren't accessible. + /// + [ViewVariables(VVAccess.ReadWrite)] + [DataField("examineWhileLocked")] + public bool ExamineWhileLocked = true; + // IPC-End + /// /// Combined set of radio channels provided by all contained keys. /// diff --git a/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs b/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs index 7b050273db6..efc745ec759 100644 --- a/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs +++ b/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs @@ -177,6 +177,14 @@ private void OnHolderExamined(EntityUid uid, EncryptionKeyHolderComponent compon if (!args.IsInDetailsRange) return; + // IPC-Start + if (!component.ExamineWhileLocked && !component.KeysUnlocked) + return; + + if (!component.ExamineWhileLocked && TryComp(uid, out var panel) && !panel.Open) + return; + // IPC-End + if (component.KeyContainer.ContainedEntities.Count == 0) { args.PushMarkup(Loc.GetString("encryption-keys-no-keys")); diff --git a/Content.Shared/SimpleStation14/Silicon/BatteryDrinkerEvent.cs b/Content.Shared/SimpleStation14/Silicon/BatteryDrinkerEvent.cs new file mode 100644 index 00000000000..438e6ec5022 --- /dev/null +++ b/Content.Shared/SimpleStation14/Silicon/BatteryDrinkerEvent.cs @@ -0,0 +1,12 @@ +using Content.Shared.DoAfter; +using Robust.Shared.Serialization; + +namespace Content.Shared.SimpleStation14.Silicon; + +[Serializable, NetSerializable] +public sealed partial class BatteryDrinkerDoAfterEvent : SimpleDoAfterEvent +{ + public BatteryDrinkerDoAfterEvent() + { + } +} diff --git a/Content.Shared/SimpleStation14/Silicon/Components/SiliconComponent.cs b/Content.Shared/SimpleStation14/Silicon/Components/SiliconComponent.cs new file mode 100644 index 00000000000..9d9a6e92856 --- /dev/null +++ b/Content.Shared/SimpleStation14/Silicon/Components/SiliconComponent.cs @@ -0,0 +1,108 @@ +using Robust.Shared.GameStates; +using Content.Shared.SimpleStation14.Silicon.Systems; +using Robust.Shared.Serialization.TypeSerializers.Implementations; +using Robust.Shared.Containers; +using Robust.Shared.Prototypes; +using Content.Shared.Alert; + +namespace Content.Shared.SimpleStation14.Silicon.Components; + +/// +/// Component for defining a mob as a robot. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class SiliconComponent : Component +{ + [ViewVariables(VVAccess.ReadOnly)] + public short ChargeState = 10; + + [ViewVariables(VVAccess.ReadOnly)] + public float OverheatAccumulator = 0.0f; + + /// + /// The last time the Silicon was drained. + /// Used for NPC Silicons to avoid over updating. + /// + /// + /// Time between drains can be specified in + /// + /// + public TimeSpan LastDrainTime = TimeSpan.Zero; + + /// + /// The Silicon's battery slot, if it has one. + /// + + /// + /// Is the Silicon currently dead? + /// + public bool Dead = false; + + // BatterySystem took issue with how this was used, so I'm coming back to it at a later date, when more foundational Silicon stuff is implemented. + // /// + // /// The entity to get the battery from. + // /// + // public EntityUid BatteryOverride? = EntityUid.Invalid; + + + /// + /// The type of silicon this is. + /// + /// + /// Any new types of Silicons should be added to the enum. + /// Setting this to Npc will delay charge state updates by LastDrainTime and skip battery heat calculations + /// + [DataField("entityType", customTypeSerializer: typeof(EnumSerializer))] + public Enum EntityType = SiliconType.Npc; + + /// + /// Is this silicon battery powered? + /// + /// + /// If true, should go along with a battery component. One will not be added automatically. + /// + [DataField("batteryPowered"), ViewVariables(VVAccess.ReadWrite)] + public bool BatteryPowered = false; + + /// + /// How much power is drained by this Silicon every second by default. + /// + [DataField("drainPerSecond"), ViewVariables(VVAccess.ReadWrite)] + public float DrainPerSecond = 50f; + + + /// + /// The percentages at which the silicon will enter each state. + /// + /// + /// The Silicon will always be Full at 100%. + /// Setting a value to null will disable that state. + /// Setting Critical to 0 will cause the Silicon to never enter the dead state. + /// + [DataField("chargeThresholdMid"), ViewVariables(VVAccess.ReadWrite)] + public float? ChargeThresholdMid = 0.5f; + + /// + [DataField("chargeThresholdLow"), ViewVariables(VVAccess.ReadWrite)] + public float? ChargeThresholdLow = 0.25f; + + /// + [DataField("chargeThresholdCritical"), ViewVariables(VVAccess.ReadWrite)] + public float? ChargeThresholdCritical = 0.1f; + + [DataField] + public ProtoId BatteryAlert = "BorgBattery"; + + [DataField] + public ProtoId NoBatteryAlert = "BorgBatteryNone"; + + + /// + /// The amount the Silicon will be slowed at each charge state. + /// + [DataField("speedModifierThresholds", required: true)] + public Dictionary SpeedModifierThresholds = default!; + + [DataField("fireStackMultiplier"), ViewVariables(VVAccess.ReadWrite)] + public float FireStackMultiplier = 1f; +} diff --git a/Content.Shared/SimpleStation14/Silicon/Systems/SharedSiliconSystem.cs b/Content.Shared/SimpleStation14/Silicon/Systems/SharedSiliconSystem.cs new file mode 100644 index 00000000000..3fc5c3c60f6 --- /dev/null +++ b/Content.Shared/SimpleStation14/Silicon/Systems/SharedSiliconSystem.cs @@ -0,0 +1,112 @@ +using Content.Shared.SimpleStation14.Silicon.Components; +using Content.Shared.Alert; +using Robust.Shared.Serialization; +using Content.Shared.Movement.Systems; +using Content.Shared.Containers.ItemSlots; +using Content.Shared.PowerCell.Components; + +namespace Content.Shared.SimpleStation14.Silicon.Systems; + + +public sealed class SharedSiliconChargeSystem : EntitySystem +{ + [Dependency] private readonly AlertsSystem _alertsSystem = default!; + [Dependency] protected readonly ItemSlotsSystem ItemSlots = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnSiliconInit); + SubscribeLocalEvent(OnSiliconChargeStateUpdate); + SubscribeLocalEvent(OnRefreshMovespeed); + SubscribeLocalEvent(OnItemSlotInsertAttempt); + SubscribeLocalEvent(OnItemSlotEjectAttempt); + } + + private void OnItemSlotInsertAttempt(EntityUid uid, SiliconComponent component, ref ItemSlotInsertAttemptEvent args) + { + if (args.Cancelled) + return; + + if (!TryComp(uid, out var cellSlotComp)) + return; + + if (!ItemSlots.TryGetSlot(uid, cellSlotComp.CellSlotId, out var cellSlot) || cellSlot != args.Slot) + return; + + if (args.User == uid) + args.Cancelled = true; + } + + private void OnItemSlotEjectAttempt(EntityUid uid, SiliconComponent component, ref ItemSlotEjectAttemptEvent args) + { + if (args.Cancelled) + return; + + if (!TryComp(uid, out var cellSlotComp)) + return; + + if (!ItemSlots.TryGetSlot(uid, cellSlotComp.CellSlotId, out var cellSlot) || cellSlot != args.Slot) + return; + + if (args.User == uid) + args.Cancelled = true; + } + + [ValidatePrototypeId] + public const string ChargeAlertCategory = "BorgBattery"; + + private void OnSiliconInit(EntityUid uid, SiliconComponent component, ComponentInit args) + { + if (component.BatteryPowered) + _alertsSystem.ShowAlert(uid, ChargeAlertCategory, component.ChargeState); + } + + private void OnSiliconChargeStateUpdate(EntityUid uid, SiliconComponent component, SiliconChargeStateUpdateEvent ev) + { + _alertsSystem.ShowAlert(uid, ChargeAlertCategory, (short) ev.ChargePercent); + } + + private void OnRefreshMovespeed(EntityUid uid, SiliconComponent component, RefreshMovementSpeedModifiersEvent args) + { + if (!component.BatteryPowered) + return; + + var speedModThresholds = component.SpeedModifierThresholds; + + var closest = 0f; + + foreach (var state in speedModThresholds) + { + if (component.ChargeState >= state.Key && (float) state.Key > closest) + closest = (float) state.Key; + } + + var speedMod = speedModThresholds[(short) closest]; + + args.ModifySpeed(speedMod, speedMod); + } +} + + +public enum SiliconType +{ + Player, + GhostRole, + Npc, +} + +/// +/// Event raised when a Silicon's charge state needs to be updated. +/// +[Serializable, NetSerializable] +public sealed class SiliconChargeStateUpdateEvent : EntityEventArgs +{ + public short ChargePercent { get; } + + public SiliconChargeStateUpdateEvent(short chargePercent) + { + ChargePercent = chargePercent; + } +} diff --git a/Content.Shared/Station/SharedStationSpawningSystem.cs b/Content.Shared/Station/SharedStationSpawningSystem.cs index 102c967a223..b29c91e8670 100644 --- a/Content.Shared/Station/SharedStationSpawningSystem.cs +++ b/Content.Shared/Station/SharedStationSpawningSystem.cs @@ -125,6 +125,7 @@ public void EquipStartingGear(EntityUid entity, IEquipmentLoadout? startingGear, InventorySystem.TryEquip(entity, equipmentEntity, slot.Name, silent: true, force: true); } } + } if (_handsQuery.TryComp(entity, out var handsComponent)) diff --git a/Content.Shared/_EstacaoPirata/BlindHealing/SharedBlindHealingSystem.cs b/Content.Shared/_EstacaoPirata/BlindHealing/SharedBlindHealingSystem.cs new file mode 100644 index 00000000000..fd3630493c6 --- /dev/null +++ b/Content.Shared/_EstacaoPirata/BlindHealing/SharedBlindHealingSystem.cs @@ -0,0 +1,13 @@ +using Content.Shared.DoAfter; +using Robust.Shared.Serialization; + +namespace Content.Shared._EstacaoPirata.BlindHealing; + +public abstract partial class SharedBlindHealingSystem : EntitySystem +{ + [Serializable, NetSerializable] + protected sealed partial class HealingDoAfterEvent : SimpleDoAfterEvent + { + } +} + diff --git a/Content.Shared/_EstacaoPirata/DeadStartupButton/DeadStartupButtonComponent.cs b/Content.Shared/_EstacaoPirata/DeadStartupButton/DeadStartupButtonComponent.cs new file mode 100644 index 00000000000..40c5457e590 --- /dev/null +++ b/Content.Shared/_EstacaoPirata/DeadStartupButton/DeadStartupButtonComponent.cs @@ -0,0 +1,28 @@ +using Robust.Shared.Audio; + +namespace Content.Shared._EstacaoPirata.DeadStartupButton; + +/// +/// This is used for... +/// +[RegisterComponent] +public sealed partial class DeadStartupButtonComponent : Component +{ + [DataField("verbText")] + public string VerbText = "dead-startup-button-verb"; + + [DataField("sound")] + public SoundSpecifier Sound = new SoundPathSpecifier("/Audio/Effects/Arcade/newgame.ogg"); + + [DataField("buttonSound")] + public SoundSpecifier ButtonSound = new SoundPathSpecifier("/Audio/Machines/button.ogg"); + + [DataField("doAfterInterval"), ViewVariables(VVAccess.ReadWrite)] + public float DoAfterInterval = 1f; + + [DataField("buzzSound")] + public SoundSpecifier BuzzSound = new SoundCollectionSpecifier("buzzes"); + + [DataField("verbPriority"), ViewVariables(VVAccess.ReadWrite)] + public int VerbPriority = 1; +} diff --git a/Content.Shared/_EstacaoPirata/DeadStartupButton/SharedDeadStartupButtonSystem.cs b/Content.Shared/_EstacaoPirata/DeadStartupButton/SharedDeadStartupButtonSystem.cs new file mode 100644 index 00000000000..df4cdce6454 --- /dev/null +++ b/Content.Shared/_EstacaoPirata/DeadStartupButton/SharedDeadStartupButtonSystem.cs @@ -0,0 +1,68 @@ +using Content.Shared.DoAfter; +using Content.Shared.Mobs.Components; +using Content.Shared.Mobs.Systems; +using Content.Shared.Verbs; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Network; +using Robust.Shared.Serialization; +using Robust.Shared.Utility; + +namespace Content.Shared._EstacaoPirata.DeadStartupButton; + +/// +/// This creates a Button that can be activated after an entity, usually a silicon or an IPC, died. +/// This will activate a doAfter and then revive the entity, playing a custom afterward sound. +/// +public partial class SharedDeadStartupButtonSystem : EntitySystem +{ + [Dependency] private readonly MobStateSystem _mobState = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; + [Dependency] private readonly INetManager _net = default!; + + + + + /// + public override void Initialize() + { + SubscribeLocalEvent>(AddTurnOnVerb); + } + + private void AddTurnOnVerb(EntityUid uid, DeadStartupButtonComponent component, GetVerbsEvent args) + { + if (!args.CanAccess || !args.CanInteract || args.Hands == null) + return; + + if (!TryComp(uid, out MobStateComponent? mobStateComponent) || !_mobState.IsDead(uid, mobStateComponent)) + return; + + args.Verbs.Add(new AlternativeVerb() + { + Act = () => TryStartup(args.User, uid, component), + Text = Loc.GetString(component.VerbText), + Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/VerbIcons/Spare/poweronoff.svg.192dpi.png")), + Priority = component.VerbPriority + }); + } + + private void TryStartup(EntityUid user, EntityUid target, DeadStartupButtonComponent comp) + { + if (!_net.IsServer) + return; + _audio.PlayPvs(comp.ButtonSound, target); + var args = new DoAfterArgs(EntityManager, user, comp.DoAfterInterval, new OnDoAfterButtonPressedEvent(), target, target:target) + { + BreakOnDamage = true, + BreakOnMove = true, + }; + _doAfterSystem.TryStartDoAfter(args); + } + + [Serializable, NetSerializable] + public sealed partial class OnDoAfterButtonPressedEvent : SimpleDoAfterEvent + { + } + + +} diff --git a/Content.Shared/_EstacaoPirata/EmitBuzzWhileDamaged/EmitBuzzWhileDamagedComponent.cs b/Content.Shared/_EstacaoPirata/EmitBuzzWhileDamaged/EmitBuzzWhileDamagedComponent.cs new file mode 100644 index 00000000000..32720802687 --- /dev/null +++ b/Content.Shared/_EstacaoPirata/EmitBuzzWhileDamaged/EmitBuzzWhileDamagedComponent.cs @@ -0,0 +1,31 @@ +using System.ComponentModel.DataAnnotations; +using Content.Shared.Chat.Prototypes; +using Robust.Shared.Prototypes; +using Robust.Shared.Audio; + +namespace Content.Shared._EstacaoPirata.EmitBuzzWhileDamaged; + +/// +/// This is used for controlling the cadence of the buzzing emitted by EmitBuzzOnCritSystem. +/// This component is used by mechanical species that can get to critical health. +/// +[RegisterComponent] +public sealed partial class EmitBuzzWhileDamagedComponent : Component +{ + [DataField("BuzzEmoteCooldown")] + public TimeSpan BuzzEmoteCooldown { get; private set; } = TimeSpan.FromSeconds(8); + + [ViewVariables] + public TimeSpan LastBuzzEmoteTime; + + [DataField] + public ProtoId BuzzEmote = "Buzz"; + + [DataField("cycleDelay")] + public float CycleDelay = 2.0f; + + public float AccumulatedFrametime; + + [DataField("sound")] + public SoundSpecifier Sound = new SoundCollectionSpecifier("buzzes"); +} diff --git a/Content.Shared/_EstacaoPirata/SIliconRepairable/SharedWeldingHealableSystem.cs b/Content.Shared/_EstacaoPirata/SIliconRepairable/SharedWeldingHealableSystem.cs new file mode 100644 index 00000000000..4678be365b9 --- /dev/null +++ b/Content.Shared/_EstacaoPirata/SIliconRepairable/SharedWeldingHealableSystem.cs @@ -0,0 +1,14 @@ +using Content.Shared.DoAfter; +using Robust.Shared.Serialization; + +namespace Content.Shared._EstacaoPirata.WeldingHealing; + +public abstract partial class SharedWeldingHealableSystem : EntitySystem +{ + [Serializable, NetSerializable] + protected sealed partial class SiliconRepairFinishedEvent : SimpleDoAfterEvent + { + public float Delay; + } +} + diff --git a/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz1.ogg b/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz1.ogg new file mode 100644 index 00000000000..aa21acee3ca Binary files /dev/null and b/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz1.ogg differ diff --git a/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz2.ogg b/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz2.ogg new file mode 100644 index 00000000000..652d331abc5 Binary files /dev/null and b/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz2.ogg differ diff --git a/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz3.ogg b/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz3.ogg new file mode 100644 index 00000000000..e7721fa6664 Binary files /dev/null and b/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz3.ogg differ diff --git a/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz4.ogg b/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz4.ogg new file mode 100644 index 00000000000..8c400abe858 Binary files /dev/null and b/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz4.ogg differ diff --git a/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz5.ogg b/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz5.ogg new file mode 100644 index 00000000000..b24a684e43e Binary files /dev/null and b/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz5.ogg differ diff --git a/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz6.ogg b/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz6.ogg new file mode 100644 index 00000000000..81b206c6ed6 Binary files /dev/null and b/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz6.ogg differ diff --git a/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz7.ogg b/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz7.ogg new file mode 100644 index 00000000000..f58bfaa2eaa Binary files /dev/null and b/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz7.ogg differ diff --git a/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz8.ogg b/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz8.ogg new file mode 100644 index 00000000000..75ad0c4fee2 Binary files /dev/null and b/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz8.ogg differ diff --git a/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz9.ogg b/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz9.ogg new file mode 100644 index 00000000000..1e3a743f73c Binary files /dev/null and b/Resources/Audio/EstacaoPirata/Effects/Buzzes/buzz9.ogg differ diff --git a/Resources/Audio/EstacaoPirata/Effects/Silicon/startup.ogg b/Resources/Audio/EstacaoPirata/Effects/Silicon/startup.ogg new file mode 100644 index 00000000000..33d90e78454 Binary files /dev/null and b/Resources/Audio/EstacaoPirata/Effects/Silicon/startup.ogg differ diff --git a/Resources/Audio/EstacaoPirata/Voice/IPC/cry_robot_1.ogg b/Resources/Audio/EstacaoPirata/Voice/IPC/cry_robot_1.ogg new file mode 100644 index 00000000000..78a27496a59 Binary files /dev/null and b/Resources/Audio/EstacaoPirata/Voice/IPC/cry_robot_1.ogg differ diff --git a/Resources/Audio/EstacaoPirata/Voice/IPC/robot-laugh_3.ogg b/Resources/Audio/EstacaoPirata/Voice/IPC/robot-laugh_3.ogg new file mode 100644 index 00000000000..331151f6b57 Binary files /dev/null and b/Resources/Audio/EstacaoPirata/Voice/IPC/robot-laugh_3.ogg differ diff --git a/Resources/Audio/EstacaoPirata/Voice/IPC/robot-scream.ogg b/Resources/Audio/EstacaoPirata/Voice/IPC/robot-scream.ogg new file mode 100644 index 00000000000..6420a4009db Binary files /dev/null and b/Resources/Audio/EstacaoPirata/Voice/IPC/robot-scream.ogg differ diff --git a/Resources/Locale/en-US/SimpleStation14/Content/Power/batteries.ftl b/Resources/Locale/en-US/SimpleStation14/Content/Power/batteries.ftl new file mode 100644 index 00000000000..15ebafae77b --- /dev/null +++ b/Resources/Locale/en-US/SimpleStation14/Content/Power/batteries.ftl @@ -0,0 +1 @@ +battery-electrocute-charge = The battery surges with energy! diff --git a/Resources/Locale/en-US/SimpleStation14/Content/Power/silicons.ftl b/Resources/Locale/en-US/SimpleStation14/Content/Power/silicons.ftl new file mode 100644 index 00000000000..f5d24bde072 --- /dev/null +++ b/Resources/Locale/en-US/SimpleStation14/Content/Power/silicons.ftl @@ -0,0 +1,7 @@ +silicon-overheating = You can feel your circuits burn! +silicon-crit = Integrated structure in critical state! +silicon-power-low = Low battery! +ipc-recharge-tip = You charged a litte of your battery. +dead-startup-button-verb = Reboot +dead-startup-system-reboot-success = {$target}'s system was rebooted. +dead-startup-system-reboot-failed = {$target}'s chassis is way too damaged. diff --git a/Resources/Locale/en-US/SimpleStation14/Content/Silicons/siliconChargers.ftl b/Resources/Locale/en-US/SimpleStation14/Content/Silicons/siliconChargers.ftl new file mode 100644 index 00000000000..df6c66346c4 --- /dev/null +++ b/Resources/Locale/en-US/SimpleStation14/Content/Silicons/siliconChargers.ftl @@ -0,0 +1,5 @@ +silicon-charger-overheatwarning = You feel like you're in a microwave! +silicon-charger-chargerate-string = Charge rate +silicon-charger-efficiency-string = Efficiency + +silicon-charger-list-full = {CAPITALIZE(THE($charger))} can only accommodate so many targets! diff --git a/Resources/Locale/en-US/SimpleStation14/Prototypes/Entities/Mobs/Customization/ipcAntenna.ftl b/Resources/Locale/en-US/SimpleStation14/Prototypes/Entities/Mobs/Customization/ipcAntenna.ftl new file mode 100644 index 00000000000..ec3efd9f553 --- /dev/null +++ b/Resources/Locale/en-US/SimpleStation14/Prototypes/Entities/Mobs/Customization/ipcAntenna.ftl @@ -0,0 +1,10 @@ +marking-RobotAntennaTv = Tv +marking-RobotAntennaTesla = Tesla +marking-RobotAntennaLightb = Light (alt) +marking-RobotAntennaLight = Light +marking-RobotAntennaCyberhead = Cyberhead +marking-RobotAntennaSidelights = Sidelights +marking-RobotAntennaAntlers = Antlers +marking-RobotAntennaDroneeyes = Drone Eyes +marking-RobotAntennaCrowned = Crowned +marking-RobotAntennaTowers = Towers diff --git a/Resources/Locale/en-US/SimpleStation14/Prototypes/Entities/Mobs/Customization/ipcScreens.ftl b/Resources/Locale/en-US/SimpleStation14/Prototypes/Entities/Mobs/Customization/ipcScreens.ftl new file mode 100644 index 00000000000..3f53f2d3f93 --- /dev/null +++ b/Resources/Locale/en-US/SimpleStation14/Prototypes/Entities/Mobs/Customization/ipcScreens.ftl @@ -0,0 +1,39 @@ +marking-ScreenStatic = Static +marking-ScreenBlue = Blue +marking-ScreenBreakout = Breakout +marking-ScreenEight = Eight +marking-ScreenGoggles = Goggles +marking-ScreenExclaim = Exclaim +marking-ScreenHeart = Heart +marking-ScreenMonoeye = Cyclops +marking-ScreenNature = Naturalist +marking-ScreenOrange = Orange +marking-ScreenPink = Pink +marking-ScreenQuestion = Question +marking-ScreenShower = Shower +marking-ScreenYellow = Yellow +marking-ScreenScroll = Scroll +marking-ScreenConsole = Console +marking-ScreenRgb = RGB +marking-ScreenGlider = Glider +marking-ScreenRainbowhoriz = Horizontal Rainbow +marking-ScreenBsod = BSOD +marking-ScreenRedtext = Red Text +marking-ScreenSinewave = Sinewave +marking-ScreenSquarewave = Squarewave +marking-ScreenEcgwave = ECG wave +marking-ScreenEyes = Eyes +marking-ScreenEyestall = Tall Eyes +marking-ScreenEyesangry = Angry Eyes +marking-ScreenLoading = Loading... +marking-ScreenWindowsxp = Experience +marking-ScreenTetris = NT Block Game +marking-ScreenTv = Tv +marking-ScreenTextdrop = Textdrop +marking-ScreenStars = Stars +marking-ScreenRainbowdiag = Diagonal Rainbow +marking-ScreenBlank = Dead Pixel +marking-ScreenSmile = Smiley +marking-ScreenFrown = Frowny +marking-ScreenRing = Ring +marking-ScreenL = L diff --git a/Resources/Locale/en-US/SimpleStation14/power/batteryDrinker.ftl b/Resources/Locale/en-US/SimpleStation14/power/batteryDrinker.ftl new file mode 100644 index 00000000000..35c76f8825f --- /dev/null +++ b/Resources/Locale/en-US/SimpleStation14/power/batteryDrinker.ftl @@ -0,0 +1,2 @@ +battery-drinker-verb-drink = Drain +battery-drinker-empty = {CAPATALIZE(THE($target))} is already charged! diff --git a/Resources/Locale/en-US/chat/emotes.ftl b/Resources/Locale/en-US/chat/emotes.ftl index cccb33a1f17..4026b153833 100644 --- a/Resources/Locale/en-US/chat/emotes.ftl +++ b/Resources/Locale/en-US/chat/emotes.ftl @@ -60,3 +60,5 @@ chat-emote-msg-cathisses = hisses! chat-emote-msg-monkeyscreeches = screeches! chat-emote-msg-yawn = yawns. chat-emote-msg-snore = snores. +# Parkstation IPCs +chat-emote-msg-deathgasp-silicon = seizes up and falls limp... diff --git a/Resources/Locale/en-US/deepstation14/silicons/cyberlimbs.ftl b/Resources/Locale/en-US/deepstation14/silicons/cyberlimbs.ftl new file mode 100644 index 00000000000..25837f9d8b8 --- /dev/null +++ b/Resources/Locale/en-US/deepstation14/silicons/cyberlimbs.ftl @@ -0,0 +1,77 @@ +marking-MobIPCHeadDefault = Standard Operational Monitor +marking-MobIPCTorsoDefault = Standard Robotic Chassis +marking-MobIPCTorsoFemaleDefault = Standard Robotic Chassis +marking-MobIPCLArmDefault = Standard Left Robotic Arm +marking-MobIPCLHandDefault = Standard Left Robotic Hand +marking-MobIPCLLegDefault = Standard Left Robotic Leg +marking-MobIPCLFootDefault = Standard Left Robotic Foot +marking-MobIPCRArmDefault = Standard Right Robotic Arm +marking-MobIPCRHandDefault = Standard Right Robotic Hand +marking-MobIPCRLegDefault = Standard Right Robotic Leg +marking-MobIPCRFootDefault = Standard Right Robotic Foot + +marking-CyberLimbsMarkingBishopHead = Operational Monitor from Bishop Cybernetics +marking-CyberLimbsMarkingBishopChest = Robotic Chassis from Bishop Cybernetics +marking-CyberLimbsMarkingBishopLArm = Left Robotic Arm from Bishop Cybernetics +marking-CyberLimbsMarkingBishopLHand = Left Robotic Hand from Bishop Cybernetics +marking-CyberLimbsMarkingBishopLLeg = Left Robotic Leg from Bishop Cybernetics +marking-CyberLimbsMarkingBishopLFoot = Left Robotic Foot from Bishop Cybernetics +marking-CyberLimbsMarkingBishopRArm = Right Robotic Arm from Bishop Cybernetics +marking-CyberLimbsMarkingBishopRHand = Right Robotic Hand from Bishop Cybernetics +marking-CyberLimbsMarkingBishopRLeg = Right Robotic Leg from Bishop Cybernetics +marking-CyberLimbsMarkingBishopRFoot = Right Robotic Foot from Bishop Cybernetics + +marking-CyberLimbsMarkingHesphiastosHead = Operational Monitor from Hesphiastos Industries +marking-CyberLimbsMarkingHesphiastosChest = Robotic Chassis from Hesphiastos Industries +marking-CyberLimbsMarkingHesphiastosLArm = Left Robotic Arm from Hesphiastos Industries +marking-CyberLimbsMarkingHesphiastosLHand = Left Robotic Hand from Hesphiastos Industries +marking-CyberLimbsMarkingHesphiastosLLeg = Left Robotic Leg from Hesphiastos Industries +marking-CyberLimbsMarkingHesphiastosLFoot = Left Robotic Foot from Hesphiastos Industries +marking-CyberLimbsMarkingHesphiastosRArm = Right Robotic Arm from Hesphiastos Industries +marking-CyberLimbsMarkingHesphiastosRHand = Right Robotic Hand from Hesphiastos Industries +marking-CyberLimbsMarkingHesphiastosRLeg = Right Robotic Leg from Hesphiastos Industries +marking-CyberLimbsMarkingHesphiastosRFoot = Right Robotic Foot from Hesphiastos Industries + +marking-CyberLimbsMarkingWardtakahashiHead = Operational Monitor from Ward-Takahashi +marking-CyberLimbsMarkingWardtakahashiChest = Robotic Chassis from Ward-Takahashi +marking-CyberLimbsMarkingWardtakahashiLArm = Left Robotic Arm from Ward-Takahashi +marking-CyberLimbsMarkingWardtakahashiLHand = Left Robotic Hand from Ward-Takahashi +marking-CyberLimbsMarkingWardtakahashiLLeg = Left Robotic Leg from Ward-Takahashi +marking-CyberLimbsMarkingWardtakahashiLFoot = Left Robotic Foot from Ward-Takahashi +marking-CyberLimbsMarkingWardtakahashiRArm = Right Robotic Arm from Ward-Takahashi +marking-CyberLimbsMarkingWardtakahashiRHand = Right Robotic Hand from Ward-Takahashi +marking-CyberLimbsMarkingWardtakahashiRLeg = Right Robotic Leg from Ward-Takahashi +marking-CyberLimbsMarkingWardtakahashiRFoot = Right Robotic Foot from Ward-Takahashi + +marking-CyberLimbsMarkingXionHead = Operational Monitor from Xion Manufacturing Group +marking-CyberLimbsMarkingXionChest = Robotic Chassis from Xion Manufacturing Group +marking-CyberLimbsMarkingXionLArm = Left Robotic Arm from Xion Manufacturing Group +marking-CyberLimbsMarkingXionLHand = Left Robotic Hand from Xion Manufacturing Group +marking-CyberLimbsMarkingXionLLeg = Left Robotic Leg from Xion Manufacturing Group +marking-CyberLimbsMarkingXionLFoot = Left Robotic Foot from Xion Manufacturing Group +marking-CyberLimbsMarkingXionRArm = Right Robotic Arm from Xion Manufacturing Group +marking-CyberLimbsMarkingXionRHand = Right Robotic Hand from Xion Manufacturing Group +marking-CyberLimbsMarkingXionRLeg = Right Robotic Leg from Xion Manufacturing Group +marking-CyberLimbsMarkingXionRFoot = Right Robotic Foot from Xion Manufacturing Group + +marking-CyberLimbsMarkingShellguardHead = Operational Monitor from Shellguard Munitions +marking-CyberLimbsMarkingShellguardChest = Robotic Chassis from Shellguard Munitions +marking-CyberLimbsMarkingShellguardLArm = Left Robotic Arm from Shellguard Munitions +marking-CyberLimbsMarkingShellguardLHand = Left Robotic Hand from Shellguard Munitions +marking-CyberLimbsMarkingShellguardLLeg = Left Robotic Leg from Shellguard Munitions +marking-CyberLimbsMarkingShellguardLFoot = Left Robotic Foot from Shellguard Munitions +marking-CyberLimbsMarkingShellguardRArm = Right Robotic Arm from Shellguard Munitions +marking-CyberLimbsMarkingShellguardRHand = Right Robotic Hand from Shellguard Munitions +marking-CyberLimbsMarkingShellguardRLeg = Right Robotic Leg from Shellguard Munitions +marking-CyberLimbsMarkingShellguardRFoot = Right Robotic Foot from Shellguard Munitions + +marking-CyberLimbsMarkingMorpheusHead = Operational Monitor from Morpheus Cyberkinetics +marking-CyberLimbsMarkingMorpheusChest = Robotic Chassis from Morpheus Cyberkinetics +marking-CyberLimbsMarkingMorpheusLArm = Left Robotic Arm from Morpheus Cyberkinetics +marking-CyberLimbsMarkingMorpheusLHand = Left Robotic Hand from Morpheus Cyberkinetics +marking-CyberLimbsMarkingMorpheusLLeg = Left Robotic Leg from Morpheus Cyberkinetics +marking-CyberLimbsMarkingMorpheusLFoot = Left Robotic Foot from Morpheus Cyberkinetics +marking-CyberLimbsMarkingMorpheusRArm = Right Robotic Arm from Morpheus Cyberkinetics +marking-CyberLimbsMarkingMorpheusRHand = Right Robotic Hand from Morpheus Cyberkinetics +marking-CyberLimbsMarkingMorpheusRLeg = Right Robotic Leg from Morpheus Cyberkinetics +marking-CyberLimbsMarkingMorpheusRFoot = Right Robotic Foot from Morpheus Cyberkinetics \ No newline at end of file diff --git a/Resources/Locale/en-US/deltav/lock/batteryslotrequireslock-component.ftl b/Resources/Locale/en-US/deltav/lock/batteryslotrequireslock-component.ftl new file mode 100644 index 00000000000..0c75b4a920b --- /dev/null +++ b/Resources/Locale/en-US/deltav/lock/batteryslotrequireslock-component.ftl @@ -0,0 +1 @@ +batteryslotrequireslock-component-alert-owner = {$user} is messing with your maintenance panel! \ No newline at end of file diff --git a/Resources/Locale/en-US/deltav/silicons/cyberlimbs/cyberlimbs.ftl b/Resources/Locale/en-US/deltav/silicons/cyberlimbs/cyberlimbs.ftl new file mode 100644 index 00000000000..f6f7e042467 --- /dev/null +++ b/Resources/Locale/en-US/deltav/silicons/cyberlimbs/cyberlimbs.ftl @@ -0,0 +1,24 @@ +marking-CyberLimbsMarkingBishopHeadAlt = Head from Bishop Cybernetics +marking-CyberLimbsMarkingBishopHeadAlt1 = Alternate Head from Bishop Cybernetics + +marking-CyberLimbsMarkingHesphiastosHeadAlt = Head from Hesphiastos Industries + +marking-CyberLimbsMarkingMorpheusHeadAlt = Head from Morpheus Cyberkinetics + +marking-CyberLimbsMarkingShellguardHeadAlt = Head from Shellguard Munitions + +marking-CyberLimbsMarkingWardtakahashiHeadAlt = Head from Ward-Takahashi +marking-CyberLimbsMarkingWardtakahashiHeadAlt1 = Alternate Head from Ward-Takahashi + +marking-CyberLimbsMarkingXionHeadAlt = Head from Xion Manufacturing Group + +marking-CyberLimbsMarkingZenghuHead = Head from Zenghu Pharmaceuticals +marking-CyberLimbsMarkingZenghuChest = Robotic Chassis from Zenghu Pharmaceuticals +marking-CyberLimbsMarkingZenghuRHand = Right Robotic Hand from Zenghu Pharmaceuticals +marking-CyberLimbsMarkingZenghuRArm = Right Robotic Arm from Zenghu Pharmaceuticals +marking-CyberLimbsMarkingZenghuLHand = Left Robotic Hand from Zenghu Pharmaceuticals +marking-CyberLimbsMarkingZenghuLArm = Left Robotic Arm from Zenghu Pharmaceuticals +marking-CyberLimbsMarkingZenghuRLeg = Right Robotic Leg from Zenghu Pharmaceuticals +marking-CyberLimbsMarkingZenghuRFoot = Right Robotic Foot from Zenghu Pharmaceuticals +marking-CyberLimbsMarkingZenghuLLeg = Left Robotic Leg from Zenghu Pharmaceuticals +marking-CyberLimbsMarkingZenghuLFoot = Left Robotic Foot from Zenghu Pharmaceuticals \ No newline at end of file diff --git a/Resources/Locale/en-US/species/namepreset.ftl b/Resources/Locale/en-US/species/namepreset.ftl index 5a42c87b78e..c79f3d91a4b 100644 --- a/Resources/Locale/en-US/species/namepreset.ftl +++ b/Resources/Locale/en-US/species/namepreset.ftl @@ -2,3 +2,5 @@ namepreset-first = {$first} namepreset-firstlast = {$first} {$last} namepreset-firstdashfirst = {$first1}-{$first2} namepreset-thefirstoflast = The {$first} of {$last} +## Parkstation IPC +namepreset-firstdashlast = {$first}-{$last} diff --git a/Resources/Locale/en-US/species/species.ftl b/Resources/Locale/en-US/species/species.ftl index f31b1fa0f00..cdab59f4f64 100644 --- a/Resources/Locale/en-US/species/species.ftl +++ b/Resources/Locale/en-US/species/species.ftl @@ -9,3 +9,4 @@ species-name-arachnid = Arachnid species-name-moth = Moth Person species-name-skeleton = Skeleton species-name-vox = Vox +species-name-ipc = IPC diff --git a/Resources/Prototypes/Chemistry/metabolizer_types.yml b/Resources/Prototypes/Chemistry/metabolizer_types.yml index 3f7bf05b35e..d56b82c47e3 100644 --- a/Resources/Prototypes/Chemistry/metabolizer_types.yml +++ b/Resources/Prototypes/Chemistry/metabolizer_types.yml @@ -43,4 +43,4 @@ - type: metabolizerType id: Arachnid - name: metabolizer-type-arachnid + name: metabolizer-type-arachnid \ No newline at end of file diff --git a/Resources/Prototypes/DeltaV/Entities/Mobs/Customization/cyberlimbs/zenghu.yml b/Resources/Prototypes/DeltaV/Entities/Mobs/Customization/cyberlimbs/zenghu.yml new file mode 100644 index 00000000000..ede35a4011e --- /dev/null +++ b/Resources/Prototypes/DeltaV/Entities/Mobs/Customization/cyberlimbs/zenghu.yml @@ -0,0 +1,115 @@ +- type: marking + id: CyberLimbsMarkingZenghuHead + bodyPart: Head + markingCategory: Head + speciesRestriction: [IPC] + sprites: + - sprite: DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi + state: head-1 + - sprite: DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi + state: head-2 + +- type: marking + id: CyberLimbsMarkingZenghuChest + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [IPC] + sprites: + - sprite: DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi + state: torso-1 + - sprite: DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi + state: torso-2 + +- type: marking + id: CyberLimbsMarkingZenghuLArm + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [IPC] + sprites: + - sprite: DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi + state: l_arm-1 + - sprite: DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi + state: l_arm-2 + +- type: marking + id: CyberLimbsMarkingZenghuLHand + bodyPart: LHand + markingCategory: Arms + speciesRestriction: [IPC] + sprites: + - sprite: DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi + state: l_hand-1 + - sprite: DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi + state: l_hand-2 + +- type: marking + id: CyberLimbsMarkingZenghuLLeg + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [IPC] + sprites: + - sprite: DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi + state: l_leg-1 + - sprite: DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi + state: l_leg-2 + + +- type: marking + id: CyberLimbsMarkingZenghuLFoot + bodyPart: LFoot + markingCategory: Legs + speciesRestriction: [IPC] + sprites: + - sprite: DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi + state: l_foot-1 + - sprite: DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi + state: l_foot-2 + + + +- type: marking + id: CyberLimbsMarkingZenghuRArm + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [IPC] + sprites: + - sprite: DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi + state: r_arm-1 + - sprite: DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi + state: r_arm-2 + + + +- type: marking + id: CyberLimbsMarkingZenghuRHand + bodyPart: RHand + markingCategory: Arms + speciesRestriction: [IPC] + sprites: + - sprite: DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi + state: r_hand-1 + - sprite: DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi + state: r_hand-2 + +- type: marking + id: CyberLimbsMarkingZenghuRLeg + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [IPC] + sprites: + - sprite: DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi + state: r_leg-1 + - sprite: DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi + state: r_leg-2 + + +- type: marking + id: CyberLimbsMarkingZenghuRFoot + bodyPart: RFoot + markingCategory: Legs + speciesRestriction: [IPC] + sprites: + - sprite: DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi + state: r_foot-1 + - sprite: DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi + state: r_foot-2 \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml index 2b923a0528f..7ab802dff9c 100644 --- a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml +++ b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml @@ -200,6 +200,7 @@ tags: - ClownMask - WhitelistChameleon + - IPCMaskWearable # Estacao Pirata - IPCs - type: HideLayerClothing slots: - Snout @@ -260,6 +261,9 @@ sprite: Clothing/Mask/joy.rsi - type: BreathMask - type: IdentityBlocker + - type: Tag + tags: + - IPCMaskWearable # Estacao Pirata - IPCs - type: HideLayerClothing slots: - Snout @@ -280,10 +284,12 @@ tags: - HamsterWearable - WhitelistChameleon + - IPCMaskWearable # Estacao Pirata - IPCs - type: HideLayerClothing slots: - Snout + - type: entity parent: ClothingMaskPullableBase id: ClothingMaskSterile @@ -436,6 +442,7 @@ - type: BreathMask - type: Tag tags: + - IPCMaskWearable # Estacao Pirata - IPCs - HamsterWearable - WhitelistChameleon - type: HideLayerClothing @@ -455,6 +462,9 @@ sprite: Clothing/Mask/fox.rsi - type: BreathMask - type: IdentityBlocker + - type: Tag + tags: + - IPCMaskWearable # Estacao Pirata - IPCs - type: HideLayerClothing slots: - Snout @@ -471,6 +481,9 @@ sprite: Clothing/Mask/bee.rsi - type: BreathMask - type: IdentityBlocker + - type: Tag + tags: + - IPCMaskWearable # Estacao Pirata - IPCs - type: HideLayerClothing slots: - Snout @@ -487,10 +500,14 @@ sprite: Clothing/Mask/bear.rsi - type: BreathMask - type: IdentityBlocker + - type: Tag + tags: + - IPCMaskWearable # Estacao Pirata - IPCs - type: HideLayerClothing slots: - Snout + - type: entity parent: ClothingMaskBase id: ClothingMaskRaven @@ -503,6 +520,9 @@ sprite: Clothing/Mask/raven.rsi - type: BreathMask - type: IdentityBlocker + - type: Tag + tags: + - IPCMaskWearable # Estacao Pirata - IPCs - type: HideLayerClothing slots: - Snout @@ -519,6 +539,9 @@ sprite: Clothing/Mask/jackal.rsi - type: BreathMask - type: IdentityBlocker + - type: Tag + tags: + - IPCMaskWearable # Estacao Pirata - IPCs - type: HideLayerClothing slots: - Snout @@ -535,6 +558,9 @@ sprite: Clothing/Mask/bat.rsi - type: BreathMask - type: IdentityBlocker + - type: Tag + tags: + - IPCMaskWearable # Estacao Pirata - IPCs - type: HideLayerClothing slots: - Snout @@ -554,6 +580,7 @@ - type: Tag tags: - WhitelistChameleon + - IPCMaskWearable # Estacao Pirata - IPCs - type: entity parent: ClothingMaskNeckGaiter @@ -640,3 +667,6 @@ - type: EyeProtection - type: BreathMask - type: IdentityBlocker + - type: Tag + tags: + - IPCMaskWearable # Estacao Pirata - IPCs diff --git a/Resources/Prototypes/Entities/Clothing/Masks/specific.yml b/Resources/Prototypes/Entities/Clothing/Masks/specific.yml index 64a1adcebdf..e0e18d80e62 100644 --- a/Resources/Prototypes/Entities/Clothing/Masks/specific.yml +++ b/Resources/Prototypes/Entities/Clothing/Masks/specific.yml @@ -30,6 +30,9 @@ suffix: Voice Mask, Chameleon components: - type: VoiceMasker + - type: Tag + tags: + - IPCMaskWearable # Estacao Pirata - IPCs - type: HideLayerClothing slots: - Snout diff --git a/Resources/Prototypes/Entities/Objects/Materials/Sheets/glass.yml b/Resources/Prototypes/Entities/Objects/Materials/Sheets/glass.yml index 59d8ed19220..0a957eeb7aa 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/Sheets/glass.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/Sheets/glass.yml @@ -48,6 +48,12 @@ solutions: glass: canReact: false + # Estacao Pirata - IPC Healing + - type: BlindHealing + damageContainers: + - Silicon + - type: StackPrice + price: 2 - type: entity parent: SheetGlassBase diff --git a/Resources/Prototypes/Entities/Objects/Specific/Robotics/mmi.yml b/Resources/Prototypes/Entities/Objects/Specific/Robotics/mmi.yml index 1bee63cfd81..44c043773cc 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Robotics/mmi.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Robotics/mmi.yml @@ -125,3 +125,4 @@ guides: - Cyborgs - Robotics + - type: Organ # Estacao Pirata - IPCs diff --git a/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml b/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml index 7cc57faaa4b..fe8b23c9871 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml @@ -29,6 +29,17 @@ - type: PhysicalComposition materialComposition: Steel: 15 + #Same as Ointment but divided by 5 and 3 because StackPrice needs to be 1 - Estacao Pirata IPCs + #1 Ointment = -50 damage of those types + #1 Cable ~= -50 (-49.8) damage of those types + - type: Healing + delay: 0.6 + damageContainers: + - Silicon + damage: + types: # these are all split across multiple types + Heat: -1.66 + Shock: -1.66 - type: entity id: CableHVStack diff --git a/Resources/Prototypes/Entities/Objects/Tools/welders.yml b/Resources/Prototypes/Entities/Objects/Tools/welders.yml index 197dca00ff8..1bb18099b17 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/welders.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/welders.yml @@ -105,6 +105,15 @@ price: 40 - type: IgnitionSource temperature: 700 + - type: WeldingHealing # Same as Brutepack - Estacao Pirata IPCs + damageContainers: + - Silicon + fuelcost: 5 + damage: + types: + Blunt: -15 + Piercing: -15 + Slash: -15 - type: entity name: industrial welding tool diff --git a/Resources/Prototypes/Entities/Structures/Power/apc.yml b/Resources/Prototypes/Entities/Structures/Power/apc.yml index 7a01d582360..770324b6a26 100644 --- a/Resources/Prototypes/Entities/Structures/Power/apc.yml +++ b/Resources/Prototypes/Entities/Structures/Power/apc.yml @@ -144,6 +144,8 @@ priority: 1 - type: StaticPrice price: 500 + - type: BatteryDrinkerSource # Parkstation IPCs + maxAmount: 10000 # APC under construction - type: entity @@ -210,6 +212,8 @@ - type: Battery maxCharge: 50000 startingCharge: 50000 + - type: BatteryDrinkerSource # Parkstation IPCs + maxAmount: 5000 - type: entity parent: BaseAPC @@ -219,6 +223,8 @@ - type: Battery maxCharge: 100000 startingCharge: 100000 + - type: BatteryDrinkerSource # Parkstation IPCs + maxAmount: 12000 - type: entity parent: BaseAPC @@ -228,6 +234,8 @@ - type: Battery maxCharge: 150000 startingCharge: 150000 + - type: BatteryDrinkerSource # Parkstation IPCs + maxAmount: 18000 - type: entity parent: BaseAPC @@ -237,3 +245,5 @@ - type: Battery maxCharge: 200000 startingCharge: 200000 + - type: BatteryDrinkerSource # Parkstation IPCs # Parkstation IPCs + maxAmount: 26000 diff --git a/Resources/Prototypes/Entities/Structures/Power/chargers.yml b/Resources/Prototypes/Entities/Structures/Power/chargers.yml index e529708abbf..116aa5feaab 100644 --- a/Resources/Prototypes/Entities/Structures/Power/chargers.yml +++ b/Resources/Prototypes/Entities/Structures/Power/chargers.yml @@ -245,6 +245,7 @@ whitelist: components: - BorgChassis + - Silicon # Parkstation IPCs - type: Construction containers: - machine_parts diff --git a/Resources/Prototypes/EstacaoPirata/Entities/Mobs/Customization/cyberlimbs/bishop.yml b/Resources/Prototypes/EstacaoPirata/Entities/Mobs/Customization/cyberlimbs/bishop.yml new file mode 100644 index 00000000000..7989dfb0094 --- /dev/null +++ b/Resources/Prototypes/EstacaoPirata/Entities/Mobs/Customization/cyberlimbs/bishop.yml @@ -0,0 +1,130 @@ +- type: marking + id: CyberLimbsMarkingBishopHead + bodyPart: Head + markingCategory: Head + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_monitor.rsi + state: head + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_monitor.rsi + state: head-2 + +# DeltaV - Implement alt heads +- type: marking + id: CyberLimbsMarkingBishopHeadAlt + bodyPart: Head + markingCategory: Head + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: head + +# DeltaV - Implement alt heads +- type: marking + id: CyberLimbsMarkingBishopHeadAlt1 + bodyPart: Head + markingCategory: Head + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_alt1.rsi + state: head + +- type: marking + id: CyberLimbsMarkingBishopChest + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: torso-primary + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: torso-secondary + +- type: marking + id: CyberLimbsMarkingBishopLArm + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: l_arm-primary + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: l_arm-secondary + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: l_arm-tertiary + +- type: marking + id: CyberLimbsMarkingBishopLHand + bodyPart: LHand + markingCategory: Arms + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: l_hand + +- type: marking + id: CyberLimbsMarkingBishopLLeg + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: l_leg-primary + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: l_leg-secondary + + +- type: marking + id: CyberLimbsMarkingBishopLFoot + bodyPart: LFoot + markingCategory: Legs + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: l_foot + + + +- type: marking + id: CyberLimbsMarkingBishopRArm + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: r_arm-primary + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: r_arm-secondary + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: r_arm-tertiary + + +- type: marking + id: CyberLimbsMarkingBishopRHand + bodyPart: RHand + markingCategory: Arms + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: r_hand + +- type: marking + id: CyberLimbsMarkingBishopRLeg + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: r_leg-primary + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: r_leg-secondary + + +- type: marking + id: CyberLimbsMarkingBishopRFoot + bodyPart: RFoot + markingCategory: Legs + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: r_foot \ No newline at end of file diff --git a/Resources/Prototypes/EstacaoPirata/Entities/Mobs/Customization/cyberlimbs/hesphiastos.yml b/Resources/Prototypes/EstacaoPirata/Entities/Mobs/Customization/cyberlimbs/hesphiastos.yml new file mode 100644 index 00000000000..0ba71127609 --- /dev/null +++ b/Resources/Prototypes/EstacaoPirata/Entities/Mobs/Customization/cyberlimbs/hesphiastos.yml @@ -0,0 +1,129 @@ +- type: marking + id: CyberLimbsMarkingHesphiastosHead + bodyPart: Head + markingCategory: Head + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_monitor.rsi + state: head-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_monitor.rsi + state: head-2 + +# DeltaV +- type: marking + id: CyberLimbsMarkingHesphiastosHeadAlt + bodyPart: Head + markingCategory: Head + speciesRestriction: [IPC] + sprites: + - sprite: DeltaV/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_alt1.rsi + state: head-1 + - sprite: DeltaV/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_alt1.rsi + state: head-2 + - sprite: DeltaV/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_alt1.rsi + state: head-3 + +- type: marking + id: CyberLimbsMarkingHesphiastosChest + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: torso-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: torso-2 + +- type: marking + id: CyberLimbsMarkingHesphiastosLArm + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: l_arm-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: l_arm-2 + +- type: marking + id: CyberLimbsMarkingHesphiastosLHand + bodyPart: LHand + markingCategory: Arms + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: l_hand-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: l_hand-2 + +- type: marking + id: CyberLimbsMarkingHesphiastosLLeg + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: l_leg-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: l_leg-2 + + +- type: marking + id: CyberLimbsMarkingHesphiastosLFoot + bodyPart: LFoot + markingCategory: Legs + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: l_foot-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: l_foot-2 + + + +- type: marking + id: CyberLimbsMarkingHesphiastosRArm + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: r_arm-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: r_arm-2 + + +- type: marking + id: CyberLimbsMarkingHesphiastosRHand + bodyPart: RHand + markingCategory: Arms + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: r_hand-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: r_hand-2 + + +- type: marking + id: CyberLimbsMarkingHesphiastosRLeg + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: r_leg-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: r_leg-2 + + +- type: marking + id: CyberLimbsMarkingHesphiastosRFoot + bodyPart: RFoot + markingCategory: Legs + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: r_foot-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: r_foot-2 \ No newline at end of file diff --git a/Resources/Prototypes/EstacaoPirata/Entities/Mobs/Customization/cyberlimbs/morpheus.yml b/Resources/Prototypes/EstacaoPirata/Entities/Mobs/Customization/cyberlimbs/morpheus.yml new file mode 100644 index 00000000000..e1be7e6cd6d --- /dev/null +++ b/Resources/Prototypes/EstacaoPirata/Entities/Mobs/Customization/cyberlimbs/morpheus.yml @@ -0,0 +1,159 @@ +- type: marking + id: CyberLimbsMarkingMorpheusHead + bodyPart: Head + markingCategory: Head + speciesRestriction: [IPC] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi + state: head + +# DeltaV +- type: marking + id: CyberLimbsMarkingMorpheusHeadAlt + bodyPart: Head + markingCategory: Head + speciesRestriction: [IPC] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_alt1.rsi + state: head + +- type: marking + id: CyberLimbsMarkingMorpheusChest + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [IPC] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi + state: torso + +- type: marking + id: CyberLimbsMarkingMorpheusLArm + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [IPC] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi + state: l_arm + +- type: marking + id: CyberLimbsMarkingMorpheusLHand + bodyPart: LHand + markingCategory: Arms + speciesRestriction: [IPC] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi + state: l_hand + +- type: marking + id: CyberLimbsMarkingMorpheusLLeg + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [IPC] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi + state: l_leg + + +- type: marking + id: CyberLimbsMarkingMorpheusLFoot + bodyPart: LFoot + markingCategory: Legs + speciesRestriction: [IPC] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi + state: l_foot + + + +- type: marking + id: CyberLimbsMarkingMorpheusRArm + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [IPC] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi + state: r_arm + + +- type: marking + id: CyberLimbsMarkingMorpheusRHand + bodyPart: RHand + markingCategory: Arms + speciesRestriction: [IPC] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi + state: r_hand + +- type: marking + id: CyberLimbsMarkingMorpheusRLeg + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [IPC] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi + state: r_leg + + +- type: marking + id: CyberLimbsMarkingMorpheusRFoot + bodyPart: RFoot + markingCategory: Legs + speciesRestriction: [IPC] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi + state: r_foot \ No newline at end of file diff --git a/Resources/Prototypes/EstacaoPirata/Entities/Mobs/Customization/cyberlimbs/shellguard.yml b/Resources/Prototypes/EstacaoPirata/Entities/Mobs/Customization/cyberlimbs/shellguard.yml new file mode 100644 index 00000000000..28d321bfa9c --- /dev/null +++ b/Resources/Prototypes/EstacaoPirata/Entities/Mobs/Customization/cyberlimbs/shellguard.yml @@ -0,0 +1,126 @@ +- type: marking + id: CyberLimbsMarkingShellguardHead + bodyPart: Head + markingCategory: Head + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_monitor.rsi + state: head-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_monitor.rsi + state: head-2 + +# DeltaV +- type: marking + id: CyberLimbsMarkingShellguardHeadAlt + bodyPart: Head + markingCategory: Head + speciesRestriction: [IPC] + sprites: + - sprite: DeltaV/Mobs/Customization/cyberlimbs/shellguard/shellguard_alt1.rsi + state: head-1 + - sprite: DeltaV/Mobs/Customization/cyberlimbs/shellguard/shellguard_alt1.rsi + state: head-2 + +- type: marking + id: CyberLimbsMarkingShellguardChest + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi + state: torso-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi + state: torso-2 + +- type: marking + id: CyberLimbsMarkingShellguardLArm + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi + state: l_arm-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi + state: l_arm-2 + +- type: marking + id: CyberLimbsMarkingShellguardLHand + bodyPart: LHand + markingCategory: Arms + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi + state: l_hand-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi + state: l_hand-2 + +- type: marking + id: CyberLimbsMarkingShellguardLLeg + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi + state: l_leg-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi + state: l_leg-2 + + +- type: marking + id: CyberLimbsMarkingShellguardLFoot + bodyPart: LFoot + markingCategory: Legs + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi + state: l_foot-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi + state: l_foot-2 + + + +- type: marking + id: CyberLimbsMarkingShellguardRArm + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi + state: r_arm-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi + state: r_arm-2 + + +- type: marking + id: CyberLimbsMarkingShellguardRHand + bodyPart: RHand + markingCategory: Arms + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi + state: r_hand-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi + state: r_hand-2 + +- type: marking + id: CyberLimbsMarkingShellguardRLeg + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi + state: r_leg-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi + state: r_leg-2 + + +- type: marking + id: CyberLimbsMarkingShellguardRFoot + bodyPart: RFoot + markingCategory: Legs + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi + state: r_foot-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi + state: r_foot-2 \ No newline at end of file diff --git a/Resources/Prototypes/EstacaoPirata/Entities/Mobs/Customization/cyberlimbs/wardtakahashi.yml b/Resources/Prototypes/EstacaoPirata/Entities/Mobs/Customization/cyberlimbs/wardtakahashi.yml new file mode 100644 index 00000000000..fa37ec2ba43 --- /dev/null +++ b/Resources/Prototypes/EstacaoPirata/Entities/Mobs/Customization/cyberlimbs/wardtakahashi.yml @@ -0,0 +1,114 @@ +- type: marking + id: CyberLimbsMarkingWardtakahashiHead + bodyPart: Head + markingCategory: Head + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_monitor.rsi + state: head + +# DeltaV +- type: marking + id: CyberLimbsMarkingWardtakahashiHeadAlt + bodyPart: Head + markingCategory: Head + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi + state: head + +# DeltaV +- type: marking + id: CyberLimbsMarkingWardtakahashiHeadAlt1 + bodyPart: Head + markingCategory: Head + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_alt1.rsi + state: head + +- type: marking + id: CyberLimbsMarkingWardtakahashiChest + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi + state: torso + +- type: marking + id: CyberLimbsMarkingWardtakahashiLArm + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi + state: l_arm + +- type: marking + id: CyberLimbsMarkingWardtakahashiLHand + bodyPart: LHand + markingCategory: Arms + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi + state: l_hand + +- type: marking + id: CyberLimbsMarkingWardtakahashiLLeg + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi + state: l_leg + + +- type: marking + id: CyberLimbsMarkingWardtakahashiLFoot + bodyPart: LFoot + markingCategory: Legs + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi + state: l_foot + + + +- type: marking + id: CyberLimbsMarkingWardtakahashiRArm + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi + state: r_arm + + +- type: marking + id: CyberLimbsMarkingWardtakahashiRHand + bodyPart: RHand + markingCategory: Arms + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi + state: r_hand + +- type: marking + id: CyberLimbsMarkingWardtakahashiRLeg + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi + state: r_leg + + +- type: marking + id: CyberLimbsMarkingWardtakahashiRFoot + bodyPart: RFoot + markingCategory: Legs + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi + state: r_foot \ No newline at end of file diff --git a/Resources/Prototypes/EstacaoPirata/Entities/Mobs/Customization/cyberlimbs/xion.yml b/Resources/Prototypes/EstacaoPirata/Entities/Mobs/Customization/cyberlimbs/xion.yml new file mode 100644 index 00000000000..0d8b1539b1e --- /dev/null +++ b/Resources/Prototypes/EstacaoPirata/Entities/Mobs/Customization/cyberlimbs/xion.yml @@ -0,0 +1,128 @@ +# DeltaV +- type: marking + id: CyberLimbsMarkingXionHead + bodyPart: Head + markingCategory: Head + speciesRestriction: [IPC] + sprites: + - sprite: DeltaV/Mobs/Customization/cyberlimbs/xion/xion_monitor.rsi + state: head-1 + - sprite: DeltaV/Mobs/Customization/cyberlimbs/xion/xion_monitor.rsi + state: head-2 + +# DeltaV +- type: marking + id: CyberLimbsMarkingXionHeadAlt + bodyPart: Head + markingCategory: Head + speciesRestriction: [IPC] + sprites: + - sprite: DeltaV/Mobs/Customization/cyberlimbs/xion/xion_alt1.rsi + state: head-1 + - sprite: DeltaV/Mobs/Customization/cyberlimbs/xion/xion_alt1.rsi + state: head-2 + +- type: marking + id: CyberLimbsMarkingXionChest + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi + state: torso-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi + state: torso-2 + +- type: marking + id: CyberLimbsMarkingXionLArm + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi + state: l_arm-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi + state: l_arm-2 + +- type: marking + id: CyberLimbsMarkingXionLHand + bodyPart: LHand + markingCategory: Arms + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi + state: l_hand-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi + state: l_hand-2 + +- type: marking + id: CyberLimbsMarkingXionLLeg + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi + state: l_leg-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi + state: l_leg-2 + + +- type: marking + id: CyberLimbsMarkingXionLFoot + bodyPart: LFoot + markingCategory: Legs + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi + state: l_foot-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi + state: l_foot-2 + + + +- type: marking + id: CyberLimbsMarkingXionRArm + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi + state: r_arm-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi + state: r_arm-2 + + + +- type: marking + id: CyberLimbsMarkingXionRHand + bodyPart: RHand + markingCategory: Arms + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi + state: r_hand-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi + state: r_hand-2 + +- type: marking + id: CyberLimbsMarkingXionRLeg + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi + state: r_leg-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi + state: r_leg-2 + + +- type: marking + id: CyberLimbsMarkingXionRFoot + bodyPart: RFoot + markingCategory: Legs + speciesRestriction: [IPC] + sprites: + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi + state: r_foot-1 + - sprite: EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi + state: r_foot-2 \ No newline at end of file diff --git a/Resources/Prototypes/EstacaoPirata/SoundCollections/buzzes.yml b/Resources/Prototypes/EstacaoPirata/SoundCollections/buzzes.yml new file mode 100644 index 00000000000..97b50bca0cb --- /dev/null +++ b/Resources/Prototypes/EstacaoPirata/SoundCollections/buzzes.yml @@ -0,0 +1,12 @@ +- type: soundCollection + id: buzzes + files: + - /Audio/EstacaoPirata/Effects/Buzzes/buzz1.ogg + - /Audio/EstacaoPirata/Effects/Buzzes/buzz2.ogg + - /Audio/EstacaoPirata/Effects/Buzzes/buzz3.ogg + - /Audio/EstacaoPirata/Effects/Buzzes/buzz4.ogg + - /Audio/EstacaoPirata/Effects/Buzzes/buzz5.ogg + - /Audio/EstacaoPirata/Effects/Buzzes/buzz6.ogg + - /Audio/EstacaoPirata/Effects/Buzzes/buzz7.ogg + - /Audio/EstacaoPirata/Effects/Buzzes/buzz8.ogg + - /Audio/EstacaoPirata/Effects/Buzzes/buzz9.ogg diff --git a/Resources/Prototypes/EstacaoPirata/Voice/speech_emote_sounds.yml b/Resources/Prototypes/EstacaoPirata/Voice/speech_emote_sounds.yml new file mode 100644 index 00000000000..9dd714d30c2 --- /dev/null +++ b/Resources/Prototypes/EstacaoPirata/Voice/speech_emote_sounds.yml @@ -0,0 +1,29 @@ +- type: emoteSounds + id: UnisexIPC + params: + variation: 0.125 + sounds: + Buzz: + path: /Audio/Effects/Cargo/buzz_sigh.ogg + Scream: + path: /Audio/EstacaoPirata/Voice/IPC/robot-scream.ogg + Laugh: + path: /Audio/EstacaoPirata/Voice/IPC/robot-laugh_3.ogg + Chitter: + path: /Audio/Voice/Talk/pai.ogg + Squeak: + path: /Audio/Voice/Talk/pai.ogg + CatMeow: + collection: CatMeows + CatHisses: + collection: CatHisses + MonkeyScreeches: + collection: MonkeyScreeches + RobotBeep: + path: /Audio/Effects/Cargo/buzz_two.ogg + Sigh: + path: /Audio/Voice/Talk/pai.ogg + Crying: + path: /Audio/EstacaoPirata/Voice/IPC/cry_robot_1.ogg + Whistle: + path: /Audio/Voice/Talk/pai.ogg diff --git a/Resources/Prototypes/EstacaoPirata/Voice/speech_emotes.yml b/Resources/Prototypes/EstacaoPirata/Voice/speech_emotes.yml new file mode 100644 index 00000000000..941e2b6a2e7 --- /dev/null +++ b/Resources/Prototypes/EstacaoPirata/Voice/speech_emotes.yml @@ -0,0 +1,7 @@ +- type: emote + id: SiliconDeathgasp + name: chat-emote-name-deathgasp + icon: Interface/Emotes/deathgasp.png + chatMessages: ["chat-emote-msg-deathgasp-silicon"] + chatTriggers: + - sdeathgasp \ No newline at end of file diff --git a/Resources/Prototypes/Guidebook/species.yml b/Resources/Prototypes/Guidebook/species.yml index 73e9056c01d..8957960110c 100644 --- a/Resources/Prototypes/Guidebook/species.yml +++ b/Resources/Prototypes/Guidebook/species.yml @@ -16,6 +16,7 @@ - Harpy - Felinid - Oni + - IPCs - Rodentia - type: guideEntry diff --git a/Resources/Prototypes/SimpleStation14/Body/Organs/ipc.yml b/Resources/Prototypes/SimpleStation14/Body/Organs/ipc.yml new file mode 100644 index 00000000000..14f0f9abd29 --- /dev/null +++ b/Resources/Prototypes/SimpleStation14/Body/Organs/ipc.yml @@ -0,0 +1,72 @@ +- type: entity + id: BaseIPCOrgan + parent: BaseItem + abstract: true + components: + - type: Sprite + netsync: false + sprite: SimpleStation14/Mobs/Species/IPC/organs.rsi + - type: Organ + # - type: Food + # - type: Extractable + # grindableSolutionName: organ + - type: SolutionContainerManager + solutions: + organ: + reagents: + - ReagentId: Oil + Quantity: 10 + +- type: entity + id: OrganIPCEyes + parent: BaseIPCOrgan + name: robotic eyes + description: "01001001 00100000 01110011 01100101 01100101 00100000 01111001 01101111 01110101 00100001" + components: + - type: Sprite + layers: + - state: eyeball-l + - state: eyeball-r + - type: Organ + +- type: entity + id: OrganIPCTongue + parent: BaseIPCOrgan + name: vocal modulator + description: "A vocal modulator, used to produce speech." + components: + - type: Sprite + state: tongue + - type: Organ + +- type: entity + id: OrganIPCEars + parent: BaseIPCOrgan + name: "sonic receptors" + description: + components: + - type: Sprite + state: ears + - type: Organ + +- type: entity + id: OrganIPCPump + parent: BaseIPCOrgan + name: micro pump + description: "A micro pump, used to circulate coolant." + components: + - type: Sprite + state: heart-on + - type: Organ + # The heart 'metabolizes' medicines and poisons that aren't filtered out by other organs. + # This is done because these chemicals need to have some effect even if they aren't being filtered out of your body. + # You're technically 'immune to poison' without a heart, but.. uhh, you'll have bigger problems on your hands. + + # This is fine? + # - type: Metabolizer + # maxReagents: 2 + # metabolizerTypes: [Human] + # groups: + # - id: Medicine + # - id: Poison + # - id: Narcotic diff --git a/Resources/Prototypes/SimpleStation14/Body/Parts/ipc.yml b/Resources/Prototypes/SimpleStation14/Body/Parts/ipc.yml new file mode 100644 index 00000000000..2fbfa0a0b94 --- /dev/null +++ b/Resources/Prototypes/SimpleStation14/Body/Parts/ipc.yml @@ -0,0 +1,186 @@ +- type: entity + id: PartIPC + parent: BaseItem + name: "ipc body part" + abstract: true + components: + - type: Damageable + damageContainer: Inorganic + - type: BodyPart + - type: ContainerContainer + containers: + bodypart: !type:Container + ents: [] + - type: StaticPrice + price: 100 + +- type: entity + id: TorsoIPC + name: "ipc torso" + parent: PartIPC + components: + - type: Sprite + netsync: false + sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: "torso_m" + - type: Icon + sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: "torso_m" + - type: BodyPart + partType: Torso + +- type: entity + id: HeadIPC + name: "ipc head" + parent: PartIPC + components: + - type: Sprite + netsync: false + sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: "head_m" + - type: Icon + sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: "head_m" + - type: BodyPart + partType: Head + vital: true + - type: Input + context: "ghost" + - type: MovementSpeedModifier + baseWalkSpeed: 0 + baseSprintSpeed: 0 + - type: InputMover + - type: GhostOnMove + - type: Tag + tags: + - Head + +- type: entity + id: LeftArmIPC + name: "left ipc arm" + parent: PartIPC + components: + - type: Sprite + netsync: false + sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: "l_arm" + - type: Icon + sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: "l_arm" + - type: BodyPart + partType: Arm + symmetry: Left + +- type: entity + id: RightArmIPC + name: "right ipc arm" + parent: PartIPC + components: + - type: Sprite + netsync: false + sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: "r_arm" + - type: Icon + sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: "r_arm" + - type: BodyPart + partType: Arm + symmetry: Right + +- type: entity + id: LeftHandIPC + name: "left ipc hand" + parent: PartIPC + components: + - type: Sprite + netsync: false + sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: "l_hand" + - type: Icon + sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: "l_hand" + - type: BodyPart + partType: Hand + symmetry: Left + +- type: entity + id: RightHandIPC + name: "right ipc hand" + parent: PartIPC + components: + - type: Sprite + netsync: false + sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: "r_hand" + - type: Icon + sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: "r_hand" + - type: BodyPart + partType: Hand + symmetry: Right + +- type: entity + id: LeftLegIPC + name: "left ipc leg" + parent: PartIPC + components: + - type: Sprite + netsync: false + sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: "l_leg" + - type: Icon + sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: "l_leg" + - type: BodyPart + partType: Leg + symmetry: Left + - type: MovementBodyPart + +- type: entity + id: RightLegIPC + name: "right ipc leg" + parent: PartIPC + components: + - type: Sprite + netsync: false + sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: "r_leg" + - type: Icon + sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: "r_leg" + - type: BodyPart + partType: Leg + symmetry: Right + - type: MovementBodyPart + +- type: entity + id: LeftFootIPC + name: "left ipc foot" + parent: PartIPC + components: + - type: Sprite + netsync: false + sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: "l_foot" + - type: Icon + sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: "l_foot" + - type: BodyPart + partType: Foot + symmetry: Left + +- type: entity + id: RightFootIPC + name: "right ipc foot" + parent: PartIPC + components: + - type: Sprite + netsync: false + sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: "r_foot" + - type: Icon + sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: "r_foot" + - type: BodyPart + partType: Foot + symmetry: Right diff --git a/Resources/Prototypes/SimpleStation14/Body/Prototypes/ipc.yml b/Resources/Prototypes/SimpleStation14/Body/Prototypes/ipc.yml new file mode 100644 index 00000000000..8c42c351381 --- /dev/null +++ b/Resources/Prototypes/SimpleStation14/Body/Prototypes/ipc.yml @@ -0,0 +1,45 @@ +- type: body + id: IPC + name: "ipc" + root: torso + slots: + head: + part: HeadIPC + connections: + - torso + organs: + eyes: OrganIPCEyes + torso: + part: TorsoIPC + connections: + - left arm + - right arm + - left leg + - right leg + organs: + brain: PositronicBrain + heart: OrganIPCPump + right arm: + part: RightArmIPC + connections: + - right hand + left arm: + part: LeftArmIPC + connections: + - left hand + right hand: + part: RightHandIPC + left hand: + part: LeftHandIPC + right leg: + part: RightLegIPC + connections: + - right foot + left leg: + part: LeftLegIPC + connections: + - left foot + right foot: + part: RightFootIPC + left foot: + part: LeftFootIPC diff --git a/Resources/Prototypes/SimpleStation14/Damage/modifier_sets.yml b/Resources/Prototypes/SimpleStation14/Damage/modifier_sets.yml new file mode 100644 index 00000000000..500d55549eb --- /dev/null +++ b/Resources/Prototypes/SimpleStation14/Damage/modifier_sets.yml @@ -0,0 +1,18 @@ +- type: damageModifierSet + id: BloodlossIPC + coefficients: + Blunt: 1 + Slash: 0.6 + Piercing: 1.85 + Shock: 0.0 + Cold: 0.0 + Heat: 0 # heat damage doesn't cauterize metal! + Poison: 0.0 + Radiation: 0.0 + Asphyxiation: 0.0 + Bloodloss: 0.0 # no double dipping + Cellular: 0.0 + flatReductions: # Gotta crack a few borgs to get some coolant... + Blunt: 15 + Slash: 15 + Piercing: 15 diff --git a/Resources/Prototypes/SimpleStation14/Datasets/Names/ipc_names.yml b/Resources/Prototypes/SimpleStation14/Datasets/Names/ipc_names.yml new file mode 100644 index 00000000000..76a963dc516 --- /dev/null +++ b/Resources/Prototypes/SimpleStation14/Datasets/Names/ipc_names.yml @@ -0,0 +1,1107 @@ +- type: dataset + id: IpcFirst + values: + - ABEX + - ANCL + - ANTR + - ARMA + - AURA + - BGB + - CBOS + - CDB + - CHOC + - CHRI + - COI + - CRUX + - CYBR + - DRSD + - DUNC + - EBIX + - EXOS + - FIRC + - FIZZ + - FRE + - FXMC + - GIGA + - GOOF + - GRIN + - GUN + - HBL + - HG + - HIU + - HOG + - INC + - JADE + - JJR + - JLLO + - JNLG + - JRD + - JUNO + - KALE + - KANO + - KAZA + - KENT + - KIV + - KOR + - KORA + - KOS + - LUMA + - LUNA + - LYNX + - MET + - MIW + - MNOS + - MRPR + - MSO + - NANO + - NEST + - NEXO + - NOVA + - ORNG + - OSI + - PBU + - PHL + - PKP + - PKR + - PLEX + - PLEXO + - PLIX + - QUES + - QUIN + - QWER + - RIFT + - RR + - RYNO + - RZH + - SINA + - SLI + - STLP + - TKRG + - TRIX + - VERA + - VEXA + - VITA + - VIVE + - VOLT + - WAVE + - WISP + - WJ + - WREN + - XAL + - XENA + - XIS + - XSI + - XYLO + - YAGO + - YPT + - ZACK + - ZARG + - ZEON + - ZOLT + - ZUMA + - ZYLO + - ZYVA + +- type: dataset + id: IpcLast + values: + - 000 + - 001 + - 002 + - 003 + - 004 + - 005 + - 006 + - 007 + - 008 + - 009 + - 010 + - 011 + - 012 + - 013 + - 014 + - 015 + - 016 + - 017 + - 018 + - 019 + - 020 + - 021 + - 022 + - 023 + - 024 + - 025 + - 026 + - 027 + - 028 + - 029 + - 030 + - 031 + - 032 + - 033 + - 034 + - 035 + - 036 + - 037 + - 038 + - 039 + - 040 + - 041 + - 042 + - 043 + - 044 + - 045 + - 046 + - 047 + - 048 + - 049 + - 050 + - 051 + - 052 + - 053 + - 054 + - 055 + - 056 + - 057 + - 058 + - 059 + - 060 + - 061 + - 062 + - 063 + - 064 + - 065 + - 066 + - 067 + - 068 + - 069 + - 070 + - 071 + - 072 + - 073 + - 074 + - 075 + - 076 + - 077 + - 078 + - 079 + - 080 + - 081 + - 082 + - 083 + - 084 + - 085 + - 086 + - 087 + - 088 + - 089 + - 090 + - 091 + - 092 + - 093 + - 094 + - 095 + - 096 + - 097 + - 098 + - 099 + - 100 + - 101 + - 102 + - 103 + - 104 + - 105 + - 106 + - 107 + - 108 + - 109 + - 110 + - 111 + - 112 + - 113 + - 114 + - 115 + - 116 + - 117 + - 118 + - 119 + - 120 + - 121 + - 122 + - 123 + - 124 + - 125 + - 126 + - 127 + - 128 + - 129 + - 130 + - 131 + - 132 + - 133 + - 134 + - 135 + - 136 + - 137 + - 138 + - 139 + - 140 + - 141 + - 142 + - 143 + - 144 + - 145 + - 146 + - 147 + - 148 + - 149 + - 150 + - 151 + - 152 + - 153 + - 154 + - 155 + - 156 + - 157 + - 158 + - 159 + - 160 + - 161 + - 162 + - 163 + - 164 + - 165 + - 166 + - 167 + - 168 + - 169 + - 170 + - 171 + - 172 + - 173 + - 174 + - 175 + - 176 + - 177 + - 178 + - 179 + - 180 + - 181 + - 182 + - 183 + - 184 + - 185 + - 186 + - 187 + - 188 + - 189 + - 190 + - 191 + - 192 + - 193 + - 194 + - 195 + - 196 + - 197 + - 198 + - 199 + - 200 + - 201 + - 202 + - 203 + - 204 + - 205 + - 206 + - 207 + - 208 + - 209 + - 210 + - 211 + - 212 + - 213 + - 214 + - 215 + - 216 + - 217 + - 218 + - 219 + - 220 + - 221 + - 222 + - 223 + - 224 + - 225 + - 226 + - 227 + - 228 + - 229 + - 230 + - 231 + - 232 + - 233 + - 234 + - 235 + - 236 + - 237 + - 238 + - 239 + - 240 + - 241 + - 242 + - 243 + - 244 + - 245 + - 246 + - 247 + - 248 + - 249 + - 250 + - 251 + - 252 + - 253 + - 254 + - 255 + - 256 + - 257 + - 258 + - 259 + - 260 + - 261 + - 262 + - 263 + - 264 + - 265 + - 266 + - 267 + - 268 + - 269 + - 270 + - 271 + - 272 + - 273 + - 274 + - 275 + - 276 + - 277 + - 278 + - 279 + - 280 + - 281 + - 282 + - 283 + - 284 + - 285 + - 286 + - 287 + - 288 + - 289 + - 290 + - 291 + - 292 + - 293 + - 294 + - 295 + - 296 + - 297 + - 298 + - 299 + - 300 + - 301 + - 302 + - 303 + - 304 + - 305 + - 306 + - 307 + - 308 + - 309 + - 310 + - 311 + - 312 + - 313 + - 314 + - 315 + - 316 + - 317 + - 318 + - 319 + - 320 + - 321 + - 322 + - 323 + - 324 + - 325 + - 326 + - 327 + - 328 + - 329 + - 330 + - 331 + - 332 + - 333 + - 334 + - 335 + - 336 + - 337 + - 338 + - 339 + - 340 + - 341 + - 342 + - 343 + - 344 + - 345 + - 346 + - 347 + - 348 + - 349 + - 350 + - 351 + - 352 + - 353 + - 354 + - 355 + - 356 + - 357 + - 358 + - 359 + - 360 + - 361 + - 362 + - 363 + - 364 + - 365 + - 366 + - 367 + - 368 + - 369 + - 370 + - 371 + - 372 + - 373 + - 374 + - 375 + - 376 + - 377 + - 378 + - 379 + - 380 + - 381 + - 382 + - 383 + - 384 + - 385 + - 386 + - 387 + - 388 + - 389 + - 390 + - 391 + - 392 + - 393 + - 394 + - 395 + - 396 + - 397 + - 398 + - 399 + - 400 + - 401 + - 402 + - 403 + - 404 + - 405 + - 406 + - 407 + - 408 + - 409 + - 410 + - 411 + - 412 + - 413 + - 414 + - 415 + - 416 + - 417 + - 418 + - 419 + - 420 + - 421 + - 422 + - 423 + - 424 + - 425 + - 426 + - 427 + - 428 + - 429 + - 430 + - 431 + - 432 + - 433 + - 434 + - 435 + - 436 + - 437 + - 438 + - 439 + - 440 + - 441 + - 442 + - 443 + - 444 + - 445 + - 446 + - 447 + - 448 + - 449 + - 450 + - 451 + - 452 + - 453 + - 454 + - 455 + - 456 + - 457 + - 458 + - 459 + - 460 + - 461 + - 462 + - 463 + - 464 + - 465 + - 466 + - 467 + - 468 + - 469 + - 470 + - 471 + - 472 + - 473 + - 474 + - 475 + - 476 + - 477 + - 478 + - 479 + - 480 + - 481 + - 482 + - 483 + - 484 + - 485 + - 486 + - 487 + - 488 + - 489 + - 490 + - 491 + - 492 + - 493 + - 494 + - 495 + - 496 + - 497 + - 498 + - 499 + - 500 + - 501 + - 502 + - 503 + - 504 + - 505 + - 506 + - 507 + - 508 + - 509 + - 510 + - 511 + - 512 + - 513 + - 514 + - 515 + - 516 + - 517 + - 518 + - 519 + - 520 + - 521 + - 522 + - 523 + - 524 + - 525 + - 526 + - 527 + - 528 + - 529 + - 530 + - 531 + - 532 + - 533 + - 534 + - 535 + - 536 + - 537 + - 538 + - 539 + - 540 + - 541 + - 542 + - 543 + - 544 + - 545 + - 546 + - 547 + - 548 + - 549 + - 550 + - 551 + - 552 + - 553 + - 554 + - 555 + - 556 + - 557 + - 558 + - 559 + - 560 + - 561 + - 562 + - 563 + - 564 + - 565 + - 566 + - 567 + - 568 + - 569 + - 570 + - 571 + - 572 + - 573 + - 574 + - 575 + - 576 + - 577 + - 578 + - 579 + - 580 + - 581 + - 582 + - 583 + - 584 + - 585 + - 586 + - 587 + - 588 + - 589 + - 590 + - 591 + - 592 + - 593 + - 594 + - 595 + - 596 + - 597 + - 598 + - 599 + - 600 + - 601 + - 602 + - 603 + - 604 + - 605 + - 606 + - 607 + - 608 + - 609 + - 610 + - 611 + - 612 + - 613 + - 614 + - 615 + - 616 + - 617 + - 618 + - 619 + - 620 + - 621 + - 622 + - 623 + - 624 + - 625 + - 626 + - 627 + - 628 + - 629 + - 630 + - 631 + - 632 + - 633 + - 634 + - 635 + - 636 + - 637 + - 638 + - 639 + - 640 + - 641 + - 642 + - 643 + - 644 + - 645 + - 646 + - 647 + - 648 + - 649 + - 650 + - 651 + - 652 + - 653 + - 654 + - 655 + - 656 + - 657 + - 658 + - 659 + - 660 + - 661 + - 662 + - 663 + - 664 + - 665 + - 666 + - 667 + - 668 + - 669 + - 670 + - 671 + - 672 + - 673 + - 674 + - 675 + - 676 + - 677 + - 678 + - 679 + - 680 + - 681 + - 682 + - 683 + - 684 + - 685 + - 686 + - 687 + - 688 + - 689 + - 690 + - 691 + - 692 + - 693 + - 694 + - 695 + - 696 + - 697 + - 698 + - 699 + - 700 + - 701 + - 702 + - 703 + - 704 + - 705 + - 706 + - 707 + - 708 + - 709 + - 710 + - 711 + - 712 + - 713 + - 714 + - 715 + - 716 + - 717 + - 718 + - 719 + - 720 + - 721 + - 722 + - 723 + - 724 + - 725 + - 726 + - 727 + - 728 + - 729 + - 730 + - 731 + - 732 + - 733 + - 734 + - 735 + - 736 + - 737 + - 738 + - 739 + - 740 + - 741 + - 742 + - 743 + - 744 + - 745 + - 746 + - 747 + - 748 + - 749 + - 750 + - 751 + - 752 + - 753 + - 754 + - 755 + - 756 + - 757 + - 758 + - 759 + - 760 + - 761 + - 762 + - 763 + - 764 + - 765 + - 766 + - 767 + - 768 + - 769 + - 770 + - 771 + - 772 + - 773 + - 774 + - 775 + - 776 + - 777 + - 778 + - 779 + - 780 + - 781 + - 782 + - 783 + - 784 + - 785 + - 786 + - 787 + - 788 + - 789 + - 790 + - 791 + - 792 + - 793 + - 794 + - 795 + - 796 + - 797 + - 798 + - 799 + - 800 + - 801 + - 802 + - 803 + - 804 + - 805 + - 806 + - 807 + - 808 + - 809 + - 810 + - 811 + - 812 + - 813 + - 814 + - 815 + - 816 + - 817 + - 818 + - 819 + - 820 + - 821 + - 822 + - 823 + - 824 + - 825 + - 826 + - 827 + - 828 + - 829 + - 830 + - 831 + - 832 + - 833 + - 834 + - 835 + - 836 + - 837 + - 838 + - 839 + - 840 + - 841 + - 842 + - 843 + - 844 + - 845 + - 846 + - 847 + - 848 + - 849 + - 850 + - 851 + - 852 + - 853 + - 854 + - 855 + - 856 + - 857 + - 858 + - 859 + - 860 + - 861 + - 862 + - 863 + - 864 + - 865 + - 866 + - 867 + - 868 + - 869 + - 870 + - 871 + - 872 + - 873 + - 874 + - 875 + - 876 + - 877 + - 878 + - 879 + - 880 + - 881 + - 882 + - 883 + - 884 + - 885 + - 886 + - 887 + - 888 + - 889 + - 890 + - 891 + - 892 + - 893 + - 894 + - 895 + - 896 + - 897 + - 898 + - 899 + - 900 + - 901 + - 902 + - 903 + - 904 + - 905 + - 906 + - 907 + - 908 + - 909 + - 910 + - 911 + - 912 + - 913 + - 914 + - 915 + - 916 + - 917 + - 918 + - 919 + - 920 + - 921 + - 922 + - 923 + - 924 + - 925 + - 926 + - 927 + - 928 + - 929 + - 930 + - 931 + - 932 + - 933 + - 934 + - 935 + - 936 + - 937 + - 938 + - 939 + - 940 + - 941 + - 942 + - 943 + - 944 + - 945 + - 946 + - 947 + - 948 + - 949 + - 950 + - 951 + - 952 + - 953 + - 954 + - 955 + - 956 + - 957 + - 958 + - 959 + - 960 + - 961 + - 962 + - 963 + - 964 + - 965 + - 966 + - 967 + - 968 + - 969 + - 970 + - 971 + - 972 + - 973 + - 974 + - 975 + - 976 + - 977 + - 978 + - 979 + - 980 + - 981 + - 982 + - 983 + - 984 + - 985 + - 986 + - 987 + - 988 + - 989 + - 990 + - 991 + - 992 + - 993 + - 994 + - 995 + - 996 + - 997 + - 998 + - 999 diff --git a/Resources/Prototypes/SimpleStation14/Entities/Mobs/Customization/antenna.yml b/Resources/Prototypes/SimpleStation14/Entities/Mobs/Customization/antenna.yml new file mode 100644 index 00000000000..f9aff708852 --- /dev/null +++ b/Resources/Prototypes/SimpleStation14/Entities/Mobs/Customization/antenna.yml @@ -0,0 +1,89 @@ +- type: marking + speciesRestriction: [IPC] + id: RobotAntennaTv + bodyPart: HeadTop + markingCategory: HeadTop + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_antenna.rsi + state: ipc_antenna_tv + +- type: marking + speciesRestriction: [IPC] + id: RobotAntennaTesla + bodyPart: HeadTop + markingCategory: HeadTop + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_antenna.rsi + state: ipc_antenna_tesla + +# - type: marking +# speciesRestriction: [IPC] +# id: RobotAntennaLightb +# bodyPart: HeadTop +# markingCategory: HeadTop +# sprites: +# - sprite: SimpleStation14/Mobs/Customization/ipc_antenna.rsi +# state: ipc_antenna_lightb + +# - type: marking +# speciesRestriction: [IPC] +# id: RobotAntennaLight +# bodyPart: HeadTop +# markingCategory: HeadTop +# sprites: +# - sprite: SimpleStation14/Mobs/Customization/ipc_antenna.rsi +# state: ipc_antenna_light + +- type: marking + speciesRestriction: [IPC] + id: RobotAntennaCyberhead + bodyPart: HeadTop + markingCategory: HeadTop + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_antenna.rsi + state: ipc_antenna_cyberhead + +# - type: marking +# speciesRestriction: [IPC] +# id: RobotAntennaSidelights +# bodyPart: HeadTop +# markingCategory: HeadTop +# sprites: +# - sprite: SimpleStation14/Mobs/Customization/ipc_antenna.rsi +# state: ipc_antenna_sidelights + +- type: marking + speciesRestriction: [IPC] + id: RobotAntennaAntlers + bodyPart: HeadTop + markingCategory: HeadTop + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_antenna.rsi + state: ipc_antenna_antlers + +- type: marking + speciesRestriction: [IPC] + id: RobotAntennaDroneeyes + bodyPart: HeadTop + markingCategory: HeadTop + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_antenna.rsi + state: ipc_antenna_droneeyes + +- type: marking + speciesRestriction: [IPC] + id: RobotAntennaCrowned + bodyPart: HeadTop + markingCategory: HeadTop + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_antenna.rsi + state: ipc_antenna_crowned + +- type: marking + speciesRestriction: [IPC] + id: RobotAntennaTowers + bodyPart: HeadTop + markingCategory: HeadTop + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_antenna.rsi + state: ipc_antenna_towers diff --git a/Resources/Prototypes/SimpleStation14/Entities/Mobs/Customization/screens.yml b/Resources/Prototypes/SimpleStation14/Entities/Mobs/Customization/screens.yml new file mode 100644 index 00000000000..eed944cbd35 --- /dev/null +++ b/Resources/Prototypes/SimpleStation14/Entities/Mobs/Customization/screens.yml @@ -0,0 +1,391 @@ +## CANT SET THESE SCREENS TO "shader: unshaded" +## RobustToolbox/Robust.Shared/Utility/SpriteSpecifier.cs + +- type: marking + speciesRestriction: [IPC] + id: ScreenStatic + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_static + + +- type: marking + speciesRestriction: [IPC] + id: ScreenBlue + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_blue + + +- type: marking + speciesRestriction: [IPC] + id: ScreenBreakout + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_breakout + + +- type: marking + speciesRestriction: [IPC] + id: ScreenEight + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_eight + + +- type: marking + speciesRestriction: [IPC] + id: ScreenGoggles + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_goggles + + +- type: marking + speciesRestriction: [IPC] + id: ScreenExclaim + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_exclaim + + +- type: marking + speciesRestriction: [IPC] + id: ScreenHeart + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_heart + + +- type: marking + speciesRestriction: [IPC] + id: ScreenMonoeye + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_monoeye + + +- type: marking + speciesRestriction: [IPC] + id: ScreenNature + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_nature + + +- type: marking + speciesRestriction: [IPC] + id: ScreenOrange + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_orange + + +- type: marking + speciesRestriction: [IPC] + id: ScreenPink + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_pink + + +- type: marking + speciesRestriction: [IPC] + id: ScreenQuestion + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_question + + +- type: marking + speciesRestriction: [IPC] + id: ScreenShower + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_shower + + +- type: marking + speciesRestriction: [IPC] + id: ScreenYellow + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_yellow + + +- type: marking + speciesRestriction: [IPC] + id: ScreenScroll + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_scroll + + +- type: marking + speciesRestriction: [IPC] + id: ScreenConsole + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_console + + +- type: marking + speciesRestriction: [IPC] + id: ScreenRgb + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_rgb + + +- type: marking + speciesRestriction: [IPC] + id: ScreenGlider + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_glider + + +- type: marking + speciesRestriction: [IPC] + id: ScreenRainbowhoriz + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_rainbowhoriz + + +- type: marking + speciesRestriction: [IPC] + id: ScreenBsod + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_bsod + + +- type: marking + speciesRestriction: [IPC] + id: ScreenRedtext + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_redtext + + +- type: marking + speciesRestriction: [IPC] + id: ScreenSinewave + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_sinewave + + +- type: marking + speciesRestriction: [IPC] + id: ScreenSquarewave + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_squarewave + + +- type: marking + speciesRestriction: [IPC] + id: ScreenEcgwave + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_ecgwave + + +- type: marking + speciesRestriction: [IPC] + id: ScreenEyes + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_eyes + + +- type: marking + speciesRestriction: [IPC] + id: ScreenEyestall + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_eyestall + + +- type: marking + speciesRestriction: [IPC] + id: ScreenEyesangry + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_eyesangry + + +- type: marking + speciesRestriction: [IPC] + id: ScreenLoading + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_loading + + +- type: marking + speciesRestriction: [IPC] + id: ScreenWindowsxp + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_windowsxp + + +- type: marking + speciesRestriction: [IPC] + id: ScreenTetris + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_tetris + + +- type: marking + speciesRestriction: [IPC] + id: ScreenTv + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_tv + + +- type: marking + speciesRestriction: [IPC] + id: ScreenTextdrop + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_textdrop + + +- type: marking + speciesRestriction: [IPC] + id: ScreenStars + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_stars + + +- type: marking + speciesRestriction: [IPC] + id: ScreenRainbowdiag + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_rainbowdiag + + +- type: marking + speciesRestriction: [IPC] + id: ScreenBlank + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_blank + + +- type: marking + speciesRestriction: [IPC] + id: ScreenSmile + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_smile + +- type: marking + speciesRestriction: [IPC] + id: ScreenFrown + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_frown + + +- type: marking + speciesRestriction: [IPC] + id: ScreenRing + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_ring + + +- type: marking + speciesRestriction: [IPC] + id: ScreenL + bodyPart: HeadSide + markingCategory: HeadSide + sprites: + - sprite: SimpleStation14/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_l + diff --git a/Resources/Prototypes/SimpleStation14/Entities/Mobs/Player/ipc.yml b/Resources/Prototypes/SimpleStation14/Entities/Mobs/Player/ipc.yml new file mode 100644 index 00000000000..f317db0084e --- /dev/null +++ b/Resources/Prototypes/SimpleStation14/Entities/Mobs/Player/ipc.yml @@ -0,0 +1,118 @@ +- type: entity + id: MobIPC + parent: PlayerSiliconHumanoidBase + name: Urist McPositronic + description: A positronic brain in a metal body. + components: + - type: PowerCellSlot + cellSlotId: cell_slot + fitsInCharger: true + - type: ItemSlots + slots: + cell_slot: + locked: true + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellMedium + - type: BatterySlotRequiresLock + itemSlot: cell_slot + - type: EncryptionHolderRequiresLock + - type: SiliconEmitSoundOnDrained + sound: "/Audio/Weapons/Guns/EmptyAlarm/smg_empty_alarm.ogg" + minInterval: 15 + maxInterval: 30 + popUp: "silicon-power-low" + - type: Lock + locked: true + lockOnClick: false + unlockOnClick: false + # Por algum motivo esse componente é bem bugado, então o "LockTime" é quem diz o tempo de tudo enquanto o unlock só está servindo como um bool (???) + lockTime: 5 + unlockTime: 5 + - type: InteractionPopup + successChance: 1 + interactSuccessString: hugging-success-generic + interactSuccessSound: /Audio/Effects/thudswoosh.ogg + messagePerceivedByOthers: hugging-success-generic-others + - type: NpcFactionMember + factions: + - NanoTrasen + - type: StandingState + - type: MobState + allowedStates: + - Alive + - Critical + - Dead + - type: MobThresholds + thresholds: + 0: Alive + 119.999: Critical # TO make it almost impossible + 120: Dead + stateAlertDict: + Alive: BorgHealth + Critical: BorgCrit + Dead: BorgDead + - type: TypingIndicator + proto: robot + - type: Destructible + thresholds: + - trigger: + !type:DamageTypeTrigger + damageType: Blunt + damage: 400 + behaviors: + - !type:GibBehavior { } + - type: SlowOnDamage + speedModifierThresholds: + 60: 0.7 + 90: 0.5 + 120: 0.3 + - type: SiliconDownOnDead + - type: Inventory + templateId: ipc + - type: GuideHelp + guides: + - IPCs + - type: Silicon + entityType: enum.SiliconType.Player + batteryPowered: true + drainPerSecond: 1.5 + chargeThresholdMid: 0.80 + chargeThresholdLow: 0.35 + chargeThresholdCritical: 0.10 + speedModifierThresholds: + 4: 1 + 3: 1 + 2: 0.80 + 1: 0.45 + 0: 0.00 + - type: BatteryDrinker + - type: EncryptionKeyHolder + keySlots: 4 + examineWhileLocked: false + keysExtractionMethod: Cutting + keysUnlocked: false + - type: ActiveRadio + - type: IntrinsicRadioReceiver + - type: IntrinsicRadioTransmitter + - type: DeadStartupButton + sound: + path: /Audio/EstacaoPirata/Effects/Silicon/startup.ogg +# Erro de linter +# - type: Wires +# layoutId: IPC + - type: EmitBuzzWhileDamaged + - type: CanHostGuardian + + +- type: entity + save: false + name: Urist McPositronic + parent: MobHumanDummy + id: MobIPCDummy + noSpawn: true + description: A dummy IPC meant to be used in character setup. + components: + - type: HumanoidAppearance + species: IPC + - type: Inventory + templateId: ipc diff --git a/Resources/Prototypes/SimpleStation14/Entities/Mobs/Player/silicon_base.yml b/Resources/Prototypes/SimpleStation14/Entities/Mobs/Player/silicon_base.yml new file mode 100644 index 00000000000..8daa58428c7 --- /dev/null +++ b/Resources/Prototypes/SimpleStation14/Entities/Mobs/Player/silicon_base.yml @@ -0,0 +1,306 @@ +- type: entity + save: false + id: PlayerSiliconHumanoidBase + parent: [BaseMob, MobDamageable, MobCombat, MobAtmosExposed, MobFlammable] + abstract: true + components: + - type: ContentEye + - type: CameraRecoil + - type: Reactive + groups: + Flammable: [Touch] + Extinguish: [Touch] + Acidic: [Touch] + reactions: + - reagents: [Water, SpaceCleaner] + methods: [Touch] + effects: + - !type:WashCreamPieReaction + - type: DamageOnHighSpeedImpact + damage: + types: + Blunt: 10 + soundHit: + path: /Audio/Effects/hit_kick.ogg + - type: Damageable + damageContainer: Silicon + damageModifierSet: IPC + - type: InteractionOutline + - type: MovementSpeedModifier + baseWalkSpeed: 4 + baseSprintSpeed: 3 + - type: ZombieImmune + - type: WeldingHealable + - type: DoAfter + - type: RotationVisuals + horizontalRotation: 90 + - type: Examiner + # - type: Recyclable + # safe: false + # - type: EyeProtection # You'll want this if your robot can't wear glasses, like an IPC. + # protectionTime: 12 + - type: Silicon + entityType: enum.SiliconType.Player + batteryPowered: false # Needs to also have a battery! + chargeThresholdMid: 0.60 + chargeThresholdLow: 0.30 + chargeThresholdCritical: 0 + speedModifierThresholds: + 4: 1 + 3: 1 + 2: 0.80 + 1: 0.45 + 0: 0.00 + + - type: Temperature + heatDamageThreshold: 325 + coldDamageThreshold: 260 + currentTemperature: 310.15 + specificHeat: 42 + coldDamage: + types: + Cold: 0.1 #per second, scales with temperature & other constants + heatDamage: + types: + Heat: 3 #per second, scales with temperature & other constants + atmosTemperatureTransferEfficiency: 0.05 + - type: Deathgasp + prototype: SiliconDeathgasp + needsCritical: false + - type: MobState + allowedStates: + - Alive + - Dead + - type: MobThresholds + thresholds: + 0: Alive + 165: Dead + - type: Destructible + thresholds: + - trigger: !type:DamageTrigger + damage: 500 + behaviors: + - !type:GibBehavior {} + - type: Icon + sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: full + - type: Sprite + noRot: true + drawdepth: Mobs + layers: + - map: ["enum.HumanoidVisualLayers.Chest"] + - map: ["enum.HumanoidVisualLayers.Head"] + - map: ["enum.HumanoidVisualLayers.Snout"] + - map: ["enum.HumanoidVisualLayers.Eyes"] + - map: ["enum.HumanoidVisualLayers.RArm"] + - map: ["enum.HumanoidVisualLayers.LArm"] + - map: ["enum.HumanoidVisualLayers.RLeg"] + - map: ["enum.HumanoidVisualLayers.LLeg"] + - shader: StencilClear + sprite: Mobs/Species/Human/parts.rsi + state: l_leg + - shader: StencilMask + map: ["enum.HumanoidVisualLayers.StencilMask"] + sprite: Mobs/Customization/masking_helpers.rsi + state: female_full + visible: false + - map: ["enum.HumanoidVisualLayers.LFoot"] + - map: ["enum.HumanoidVisualLayers.RFoot"] + - map: ["socks"] + - map: ["underpants"] + - map: ["undershirt"] + - map: ["jumpsuit"] + - map: ["enum.HumanoidVisualLayers.LHand"] + - map: ["enum.HumanoidVisualLayers.RHand"] + - map: ["enum.HumanoidVisualLayers.Handcuffs"] + color: "#ffffff" + sprite: Objects/Misc/handcuffs.rsi + state: body-overlay-2 + visible: false + - map: ["id"] + - map: ["gloves"] + - map: ["shoes"] + - map: ["ears"] + - map: ["outerClothing"] + - map: ["eyes"] + - map: ["belt"] + - map: ["neck"] + - map: ["back"] + - map: ["enum.HumanoidVisualLayers.FacialHair"] + - map: ["enum.HumanoidVisualLayers.Hair"] + - map: ["enum.HumanoidVisualLayers.HeadSide"] + - map: ["enum.HumanoidVisualLayers.HeadTop"] + - map: ["mask"] + - map: ["head"] + - map: ["pocket1"] + - map: ["pocket2"] + - map: ["enum.HumanoidVisualLayers.Tail"] + - map: ["clownedon"] # Dynamically generated + sprite: "Effects/creampie.rsi" + state: "creampie_human" + visible: false + #- type: Bloodstream This is left commented out because it's not necessary for a robot, but you may want it. + # damageBleedModifiers: BloodlossIPC + # bloodReagent: Oil + # bleedReductionAmount: 0 + # bloodMaxVolume: 500 + # chemicalMaxVolume: 0 + # bleedPuddleThreshold: 3 + # bleedRefreshAmount: 0 + # bloodLossThreshold: 0 + # maxBleedAmount: 14 + # bloodlossDamage: + # types: + # Burn: 1.5 + # bloodlossHealDamage: + # types: + # Burn: 0 + - type: Flammable + fireSpread: true + canResistFire: true + damage: + types: + Heat: 0.75 #per second, scales with number of fire 'stacks' + # - type: Barotrauma # Not particularly modifiable. In the future, some response to pressure changes would be nice. + # damage: + # types: + # Blunt: 0.28 #per second, scales with pressure and other constants. + # atmosTemperatureTransferEfficiency: 0.4 + - type: Identity + # soundHit: + # path: /Audio/Effects/metalbreak.ogg + - type: RangedDamageSound + soundGroups: + Brute: + collection: MetalBulletImpact + soundTypes: + Heat: + collection: MetalLaserImpact + - type: Tag + tags: + - CanPilot + - FootstepSound + - DoorBumpOpener + - type: Hands + - type: ComplexInteraction + - type: Inventory + templateId: human + - type: InventorySlots + - type: Appearance + - type: GenericVisualizer + visuals: + enum.CreamPiedVisuals.Creamed: + clownedon: # Not 'creampied' bc I can already see Skyrat complaining about conflicts. + True: { visible: true } + False: { visible: false } + - type: Cuffable + - type: AnimationPlayer + - type: Buckle + - type: CreamPied + - type: Stripping + - type: Strippable + - type: UserInterface + interfaces: + enum.VoiceMaskUIKey.Key: + type: VoiceMaskBoundUserInterface + enum.HumanoidMarkingModifierKey.Key: + type: HumanoidMarkingModifierBoundUserInterface + enum.StrippingUiKey.Key: + type: StrippableBoundUserInterface + - type: Emoting + - type: Grammar + attributes: + proper: true + - type: Climbing + - type: StandingState + - type: MindContainer + showExamineInfo: true + - type: SSDIndicator + - type: CanEscapeInventory + - type: HumanoidAppearance + species: IPC + - type: Body + prototype: IPC + requiredLegs: 2 + - type: Ensnareable + sprite: Objects/Misc/ensnare.rsi + - type: Speech + speechSounds: Pai + - type: Vocal + sounds: + Male: UnisexIPC + Female: UnisexIPC + Unsexed: UnisexIPC + - type: MeleeWeapon + hidden: true + soundHit: + collection: Punch + angle: 30 + animation: WeaponArcFist + attackRate: 1 + damage: + types: + Blunt: 6 # It's tough. + - type: MobPrice + price: 1500 # Kidnapping a living person and selling them for cred is a good move. + deathPenalty: 0.01 # However they really ought to be living and intact, otherwise they're worth 100x less. + - type: Pullable + - type: Puller + + - type: BodyEmotes + soundsId: GeneralBodyEmotes + - type: DamageVisuals + thresholds: [ 10, 20, 30, 50, 70, 100 ] + targetLayers: + - "enum.HumanoidVisualLayers.Chest" + - "enum.HumanoidVisualLayers.Head" + - "enum.HumanoidVisualLayers.LArm" + - "enum.HumanoidVisualLayers.LLeg" + - "enum.HumanoidVisualLayers.RArm" + - "enum.HumanoidVisualLayers.RLeg" + damageOverlayGroups: + Brute: + sprite: Mobs/Effects/brute_damage.rsi + color: "#DD8822" + # Organs + - type: IdExaminable + - type: HealthExaminable + examinableTypes: + - Blunt + - Slash + - Piercing + - Heat + - Shock + - type: StatusEffects + allowed: + - Stun + - KnockedDown + - SlowedDown + - Stutter + - SeeingRainbows + - Electrocution + # - Drunk + - SlurredSpeech + - PressureImmunity + - Muted + # - ForcedSleep + - TemporaryBlindness + - Pacified + # - PsionicsDisabled + # - PsionicallyInsulated + - type: Blindable + - type: FireVisuals + alternateState: Standing + - type: LightningTarget + priority: 1 + lightningExplode: false + + +- type: damageModifierSet + id: IPC + coefficients: + Poison: 0 + Cold: 0.2 + Heat: 2 + Shock: 2.5 + diff --git a/Resources/Prototypes/SimpleStation14/Guidebook/species.yml b/Resources/Prototypes/SimpleStation14/Guidebook/species.yml new file mode 100644 index 00000000000..68b49dc7589 --- /dev/null +++ b/Resources/Prototypes/SimpleStation14/Guidebook/species.yml @@ -0,0 +1,4 @@ +- type: guideEntry + id: IPCs + name: species-name-ipc + text: "/ServerInfo/Guidebook/Mobs/Parkstation/IPCs.xml" \ No newline at end of file diff --git a/Resources/Prototypes/SimpleStation14/InventoryTemplates/ipc_inventory_template.yml b/Resources/Prototypes/SimpleStation14/InventoryTemplates/ipc_inventory_template.yml new file mode 100644 index 00000000000..14a62510f28 --- /dev/null +++ b/Resources/Prototypes/SimpleStation14/InventoryTemplates/ipc_inventory_template.yml @@ -0,0 +1,143 @@ +- type: inventoryTemplate + id: ipc + slots: + - name: shoes + slotTexture: shoes + slotFlags: FEET + stripTime: 3 + uiWindowPos: 1,0 + strippingWindowPos: 1,3 + displayName: Shoes + - name: jumpsuit + slotTexture: uniform + slotFlags: INNERCLOTHING + stripTime: 6 + uiWindowPos: 0,1 + strippingWindowPos: 0,2 + displayName: Jumpsuit + - name: outerClothing + slotTexture: suit + slotFlags: OUTERCLOTHING + stripTime: 6 + uiWindowPos: 1,1 + strippingWindowPos: 1,2 + displayName: Suit + # Underwear + # - name: undershirt + # slotTexture: undershirt + # slotFlags: UNDERSHIRT + # stripTime: 8 + # uiWindowPos: 4,1 + # strippingWindowPos: 3,1 + # displayName: Undershirt + # - name: underpants + # slotTexture: underpants + # slotFlags: UNDERPANTS + # stripTime: 12 + # uiWindowPos: 4,0 + # strippingWindowPos: 3,2 + # displayName: Underpants + # - name: socks + # slotTexture: socks + # slotFlags: SOCKS + # stripTime: 8 + # uiWindowPos: 4,2 + # strippingWindowPos: 3,3 + # displayName: Socks + - name: gloves + slotTexture: gloves + slotFlags: GLOVES + uiWindowPos: 2,1 + strippingWindowPos: 2,0 + displayName: Gloves + - name: neck + slotTexture: neck + slotFlags: NECK + uiWindowPos: 0,2 + strippingWindowPos: 0,1 + displayName: Neck + - name: mask + uiWindowPos: 1,2 + slotTexture: mask + slotFlags: MASK + strippingWindowPos: 1,1 + displayName: Mask + whitelist: + components: + - IdentityBlocker + tags: + - IPCMaskWearable + - name: eyes + slotTexture: glasses + slotFlags: EYES + stripTime: 3 + uiWindowPos: 0,0 + strippingWindowPos: 0,0 + displayName: Eyes + # - name: ears + # slotTexture: ears + # slotFlags: EARS + # stripTime: 3 + # uiWindowPos: 2,0 + # strippingWindowPos: 2,0 + # displayName: Ears + - name: head + slotTexture: head + slotFlags: HEAD + uiWindowPos: 1,3 + strippingWindowPos: 1,0 + displayName: Head + - name: pocket1 + slotTexture: pocket + slotFlags: POCKET + slotGroup: MainHotbar + stripTime: 3 + uiWindowPos: 0,3 + strippingWindowPos: 0,4 + dependsOn: jumpsuit + displayName: Pocket 1 + stripHidden: true + - name: pocket2 + slotTexture: pocket + slotFlags: POCKET + slotGroup: MainHotbar + stripTime: 3 + uiWindowPos: 2,3 + strippingWindowPos: 1,4 + dependsOn: jumpsuit + displayName: Pocket 2 + stripHidden: true + - name: suitstorage + slotTexture: suit_storage + slotFlags: SUITSTORAGE + slotGroup: MainHotbar + stripTime: 3 + uiWindowPos: 2,0 + strippingWindowPos: 2,5 + dependsOn: outerClothing + displayName: Suit Storage + - name: id + slotTexture: id + slotFlags: IDCARD + slotGroup: SecondHotbar + stripTime: 6 + uiWindowPos: 2,1 + strippingWindowPos: 2,4 + dependsOn: jumpsuit + displayName: ID + - name: belt + slotTexture: belt + slotFlags: BELT + slotGroup: SecondHotbar + stripTime: 6 + uiWindowPos: 3,1 + strippingWindowPos: 1,5 + displayName: Belt + - name: back + slotTexture: back + slotFlags: BACK + slotGroup: SecondHotbar + stripTime: 6 + uiWindowPos: 3,0 + strippingWindowPos: 0,5 + displayName: Back diff --git a/Resources/Prototypes/SimpleStation14/Species/ipc.yml b/Resources/Prototypes/SimpleStation14/Species/ipc.yml new file mode 100644 index 00000000000..67a53c34bcf --- /dev/null +++ b/Resources/Prototypes/SimpleStation14/Species/ipc.yml @@ -0,0 +1,238 @@ +- type: species + id: IPC + name: species-name-ipc + roundStart: true + prototype: MobIPC + sprites: MobIPCSprites + markingLimits: MobIPCMarkingLimits + dollPrototype: MobIPCDummy + skinColoration: Hues + minAge: 1 + maxAge: 240 + oldAge: 50 + youngAge: 50 + maleFirstNames: IpcFirst + femaleFirstNames: IpcFirst + lastNames: IpcLast + naming: FirstDashLast + sexes: + - Unsexed + +# The lack of a layer means that +# this person cannot have round-start anything +# applied to that layer. It has to instead +# be defined as a 'custom base layer' +# in either the mob's starting marking prototype, +# or it has to be added in C#. +- type: speciesBaseSprites + id: MobIPCSprites + sprites: + Head: MobIPCHead + HeadTop: MobHumanoidAnyMarking + HeadSide: MobHumanoidAnyMarking + Tail: MobHumanoidAnyMarking + Hair: MobHumanoidMarkingMatchSkin + Chest: MobIPCTorso + LArm: MobIPCLArm + RArm: MobIPCRArm + LHand: MobIPCLHand + RHand: MobIPCRHand + LLeg: MobIPCLLeg + RLeg: MobIPCRLeg + LFoot: MobIPCLFoot + RFoot: MobIPCRFoot + +- type: markingPoints + id: MobIPCMarkingLimits + points: + Head: + points: 1 + required: true + defaultMarkings: [ MobIPCHeadDefault ] + Chest: + points: 1 + required: true + defaultMarkings: [ MobIPCTorsoDefault ] + Legs: + points: 4 + required: true + defaultMarkings: [ MobIPCLLegDefault, MobIPCLFootDefault, MobIPCRLegDefault, MobIPCRFootDefault ] + Arms: + points: 4 + required: true + defaultMarkings: [ MobIPCLArmDefault, MobIPCLHandDefault, MobIPCRArmDefault, MobIPCRHandDefault ] + HeadSide: + points: 1 + required: false + +- type: humanoidBaseSprite + id: MobIPCMarkingFollowSkin + markingsMatchSkin: true + layerAlpha: 0.5 + +- type: humanoidBaseSprite + id: MobIPCScreen + +# Head + +- type: humanoidBaseSprite + id: MobIPCHead + +- type: humanoidBaseSprite + id: MobIPCHeadMale + +- type: humanoidBaseSprite + id: MobIPCHeadFemale + +- type: marking + id: MobIPCHeadDefault + bodyPart: Head + markingCategory: Head + speciesRestriction: [IPC] + sprites: + - sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: head_m + +# Torso + +- type: humanoidBaseSprite + id: MobIPCTorso + +- type: humanoidBaseSprite + id: MobIPCTorsoMale + +- type: humanoidBaseSprite + id: MobIPCTorsoFemale + +- type: marking + id: MobIPCTorsoDefault + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [IPC] + sprites: + - sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: torso_m + +- type: marking + id: MobIPCTorsoFemaleDefault + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [IPC] + sprites: + - sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: torso_f + +# Left Leg + +- type: humanoidBaseSprite + id: MobIPCLLeg + +- type: marking + id: MobIPCLLegDefault + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [IPC] + sprites: + - sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: l_leg + +# Left Arm + +- type: humanoidBaseSprite + id: MobIPCLArm + +- type: marking + id: MobIPCLArmDefault + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [IPC] + sprites: + - sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: l_arm + +#LHand + +- type: humanoidBaseSprite + id: MobIPCLHand + +- type: marking + id: MobIPCLHandDefault + bodyPart: LHand + markingCategory: Arms + speciesRestriction: [IPC] + sprites: + - sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: l_hand + +#LFoot + +- type: humanoidBaseSprite + id: MobIPCLFoot + +- type: marking + id: MobIPCLFootDefault + bodyPart: LFoot + markingCategory: Legs + speciesRestriction: [IPC] + sprites: + - sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: l_foot + +#RLeg + +- type: humanoidBaseSprite + id: MobIPCRLeg + +- type: marking + id: MobIPCRLegDefault + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [IPC] + sprites: + - sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: r_leg + +#RArm + +- type: humanoidBaseSprite + id: MobIPCRArm + +- type: marking + id: MobIPCRArmDefault + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [IPC] + sprites: + - sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: r_arm + +#RHand + +- type: humanoidBaseSprite + id: MobIPCRHand + +- type: marking + id: MobIPCRHandDefault + bodyPart: RHand + markingCategory: Arms + speciesRestriction: [IPC] + sprites: + - sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: r_hand + +#RFoot + +- type: humanoidBaseSprite + id: MobIPCRFoot + +- type: marking + id: MobIPCRFootDefault + bodyPart: RFoot + markingCategory: Legs + speciesRestriction: [IPC] + sprites: + - sprite: SimpleStation14/Mobs/Species/IPC/parts.rsi + state: r_foot + +- type: Tag + id: IPCMaskWearable diff --git a/Resources/ServerInfo/Guidebook/Mobs/Parkstation/IPCs.xml b/Resources/ServerInfo/Guidebook/Mobs/Parkstation/IPCs.xml new file mode 100644 index 00000000000..7aa9b7b7792 --- /dev/null +++ b/Resources/ServerInfo/Guidebook/Mobs/Parkstation/IPCs.xml @@ -0,0 +1,52 @@ + + # I.P.C. + + An IPC (short for Integrated Positronic Chassis) is a type of sentient robot and is considered an [color=yellow]independent individual[/color], meaning [color=red]they are not guided by any laws of robotics[/color]. IPCs cannot be hacked by Emags because they do not have to follow any predefined directives in their system. [color=red]IPCs are silicon-based beings, so doctors do not have the skills to repair them.[/color] + + + + + Like borgs, IPCs have a positronic brain as their processing source. However, unlike them, IPCs can't be assembled. "It's cheaper to create a shell that obeys you than one that doesn't! *wink*" + ## Recharging an IPC + + + + + + IPCs can be recharged in three different ways: + + APC Terminal: IPCs can use APC terminals to recharge. Press [color=yellow]Alt + left click[/color] on a terminal as many times as needed to fully recharge. + + Borg Rechargers: IPCs can use borg rechargers to recharge. Always prioritize the ones outside of the Sci area to avoid headaches. + + Power Cell: IPCs have an internal power cell that serves as their battery. They can simply swap it out by opening the hatch and manually replacing it. + + ## Integrated Radio + + + + + IPCs do [bold]not[/bold] use external radios because they already have one built in. They only need to get an encryption key from a radio. By clicking on an IPC with a [color=yellow]wire cutter[/color], you can remove their keys. + You can find new keys around the station or remove one from a sector radio using a [color=yellow]screwdriver[/color]. + + ## Repairing + + + Welders can be used to repair [color=yellow]Brute[/color] damage. + + + + Cables can be used to repair [color=yellow]Burns[/color]. + + + + Glass Sheets can be used to repair [color=yellow]Blindness[/color]. + + + In the event an IPC dies, after being fully repaired, it should be restarted using the [color=yellow]"Restart"[/color] button (located by right-clicking). + + [color=red]NEVER ELECTROCUTE AN IPC with a defibrillator or in any other way while it is dead, as this will cause the battery to discharge energy rays outward![/color] + + + + diff --git a/Resources/ServerInfo/Guidebook/Mobs/Species.xml b/Resources/ServerInfo/Guidebook/Mobs/Species.xml index 0fc1779b286..6b601cdcb13 100644 --- a/Resources/ServerInfo/Guidebook/Mobs/Species.xml +++ b/Resources/ServerInfo/Guidebook/Mobs/Species.xml @@ -24,5 +24,10 @@ + + # Parkstation specific species + + + diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_alt1.rsi/head-1.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_alt1.rsi/head-1.png new file mode 100644 index 00000000000..51a3c40058f Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_alt1.rsi/head-1.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_alt1.rsi/head-2.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_alt1.rsi/head-2.png new file mode 100644 index 00000000000..17fbf43df08 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_alt1.rsi/head-2.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_alt1.rsi/head-3.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_alt1.rsi/head-3.png new file mode 100644 index 00000000000..e59e1c1d382 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_alt1.rsi/head-3.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_alt1.rsi/meta.json b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_alt1.rsi/meta.json new file mode 100644 index 00000000000..5e35e7226fd --- /dev/null +++ b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_alt1.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "copyright": "Sprites from Paradise Station (https://github.com/ParadiseSS13/Paradise). Edited by Timemaster99", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "head-1", + "directions": 4 + }, + { + "name": "head-2", + "directions": 4 + }, + { + "name": "head-3", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/shellguard/shellguard_alt1.rsi/head-1.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/shellguard/shellguard_alt1.rsi/head-1.png new file mode 100644 index 00000000000..d89df4071be Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/shellguard/shellguard_alt1.rsi/head-1.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/shellguard/shellguard_alt1.rsi/head-2.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/shellguard/shellguard_alt1.rsi/head-2.png new file mode 100644 index 00000000000..1540a6cac40 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/shellguard/shellguard_alt1.rsi/head-2.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/shellguard/shellguard_alt1.rsi/meta.json b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/shellguard/shellguard_alt1.rsi/meta.json new file mode 100644 index 00000000000..576edfc9c56 --- /dev/null +++ b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/shellguard/shellguard_alt1.rsi/meta.json @@ -0,0 +1,19 @@ +{ + "version": 1, + "copyright": "Sprites from Paradise Station (https://github.com/ParadiseSS13/Paradise). Edited by Timemaster99.", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "head-1", + "directions": 4 + }, + { + "name": "head-2", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/xion/xion_alt1.rsi/head-1.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/xion/xion_alt1.rsi/head-1.png new file mode 100644 index 00000000000..fe3943fac0d Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/xion/xion_alt1.rsi/head-1.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/xion/xion_alt1.rsi/head-2.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/xion/xion_alt1.rsi/head-2.png new file mode 100644 index 00000000000..baf6e438f81 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/xion/xion_alt1.rsi/head-2.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/xion/xion_alt1.rsi/meta.json b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/xion/xion_alt1.rsi/meta.json new file mode 100644 index 00000000000..576edfc9c56 --- /dev/null +++ b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/xion/xion_alt1.rsi/meta.json @@ -0,0 +1,19 @@ +{ + "version": 1, + "copyright": "Sprites from Paradise Station (https://github.com/ParadiseSS13/Paradise). Edited by Timemaster99.", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "head-1", + "directions": 4 + }, + { + "name": "head-2", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/xion/xion_monitor.rsi/head-1.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/xion/xion_monitor.rsi/head-1.png new file mode 100644 index 00000000000..e48ad79298c Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/xion/xion_monitor.rsi/head-1.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/xion/xion_monitor.rsi/head-2.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/xion/xion_monitor.rsi/head-2.png new file mode 100644 index 00000000000..bf1903f4bcc Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/xion/xion_monitor.rsi/head-2.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/xion/xion_monitor.rsi/meta.json b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/xion/xion_monitor.rsi/meta.json new file mode 100644 index 00000000000..9d2654d15cb --- /dev/null +++ b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/xion/xion_monitor.rsi/meta.json @@ -0,0 +1,19 @@ +{ + "version": 1, + "copyright": "Sprites originally from Paradise Station (https://github.com/ParadiseSS13/Paradise). Monochromatic version made by: DayOS (https://github.com/Day-OS)", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "head-1", + "directions": 4 + }, + { + "name": "head-2", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/groin.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/groin.png new file mode 100644 index 00000000000..29ae064b0d6 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/groin.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/head-1.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/head-1.png new file mode 100644 index 00000000000..792a57e81d9 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/head-1.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/head-2.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/head-2.png new file mode 100644 index 00000000000..14e7e83c2fd Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/head-2.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/l_arm-1.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/l_arm-1.png new file mode 100644 index 00000000000..93064d56057 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/l_arm-1.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/l_arm-2.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/l_arm-2.png new file mode 100644 index 00000000000..7df87a8915a Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/l_arm-2.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/l_foot-1.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/l_foot-1.png new file mode 100644 index 00000000000..8fb9ec75e2c Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/l_foot-1.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/l_foot-2.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/l_foot-2.png new file mode 100644 index 00000000000..767bd0d4d6d Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/l_foot-2.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/l_hand-1.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/l_hand-1.png new file mode 100644 index 00000000000..d0660f1bc15 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/l_hand-1.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/l_hand-2.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/l_hand-2.png new file mode 100644 index 00000000000..5bb2251d140 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/l_hand-2.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/l_leg-1.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/l_leg-1.png new file mode 100644 index 00000000000..4ce036704ff Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/l_leg-1.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/l_leg-2.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/l_leg-2.png new file mode 100644 index 00000000000..237eb32d6e4 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/l_leg-2.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/meta.json b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/meta.json new file mode 100644 index 00000000000..bf863d580f6 --- /dev/null +++ b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/meta.json @@ -0,0 +1,95 @@ +{ + "version": 1, + "copyright": "Sprites from Paradise Station (https://github.com/ParadiseSS13/Paradise). Monochromatic version by Timemaster99", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "l_foot-1", + "directions": 4 + }, + { + "name": "l_foot-2", + "directions": 4 + }, + { + "name": "r_foot-1", + "directions": 4 + }, + { + "name": "r_foot-2", + "directions": 4 + }, + { + "name": "l_leg-1", + "directions": 4 + }, + { + "name": "l_leg-2", + "directions": 4 + }, + { + "name": "r_leg-1", + "directions": 4 + }, + { + "name": "r_leg-2", + "directions": 4 + }, + { + "name": "groin", + "directions": 4 + }, + { + "name": "torso-1", + "directions": 4 + }, + { + "name": "torso-2", + "directions": 4 + }, + { + "name": "l_arm-1", + "directions": 4 + }, + { + "name": "l_arm-2", + "directions": 4 + }, + { + "name": "r_arm-1", + "directions": 4 + }, + { + "name": "r_arm-2", + "directions": 4 + }, + { + "name": "l_hand-1", + "directions": 4 + }, + { + "name": "l_hand-2", + "directions": 4 + }, + { + "name": "r_hand-1", + "directions": 4 + }, + { + "name": "r_hand-2", + "directions": 4 + }, + { + "name": "head-1", + "directions": 4 + }, + { + "name": "head-2", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/r_arm-1.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/r_arm-1.png new file mode 100644 index 00000000000..6bd612a5d33 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/r_arm-1.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/r_arm-2.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/r_arm-2.png new file mode 100644 index 00000000000..69be000d908 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/r_arm-2.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/r_foot-1.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/r_foot-1.png new file mode 100644 index 00000000000..f3f1b5121d0 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/r_foot-1.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/r_foot-2.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/r_foot-2.png new file mode 100644 index 00000000000..d5a6fb2a71c Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/r_foot-2.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/r_hand-1.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/r_hand-1.png new file mode 100644 index 00000000000..a77c7f00e67 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/r_hand-1.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/r_hand-2.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/r_hand-2.png new file mode 100644 index 00000000000..e8d557eae81 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/r_hand-2.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/r_leg-1.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/r_leg-1.png new file mode 100644 index 00000000000..effbab2037d Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/r_leg-1.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/r_leg-2.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/r_leg-2.png new file mode 100644 index 00000000000..5e22421eb82 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/r_leg-2.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/torso-1.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/torso-1.png new file mode 100644 index 00000000000..0e1480d6986 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/torso-1.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/torso-2.png b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/torso-2.png new file mode 100644 index 00000000000..d6bffee42c2 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Customization/cyberlimbs/zenghu/zenghu_main.rsi/torso-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_alt1.rsi/head.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_alt1.rsi/head.png new file mode 100644 index 00000000000..81c98564b9a Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_alt1.rsi/head.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_alt1.rsi/meta.json b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_alt1.rsi/meta.json new file mode 100644 index 00000000000..9f87381cd87 --- /dev/null +++ b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_alt1.rsi/meta.json @@ -0,0 +1,15 @@ +{ + "version": 1, + "copyright": "Sprites from Paradise Station (https://github.com/ParadiseSS13/Paradise)", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "head", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/head.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/head.png new file mode 100644 index 00000000000..84e49326aba Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/head.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_arm-primary.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_arm-primary.png new file mode 100644 index 00000000000..5d6b133523b Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_arm-primary.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_arm-secondary.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_arm-secondary.png new file mode 100644 index 00000000000..de40773897f Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_arm-secondary.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_arm-tertiary.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_arm-tertiary.png new file mode 100644 index 00000000000..7b83ecf161b Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_arm-tertiary.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_foot.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_foot.png new file mode 100644 index 00000000000..534085a97c3 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_foot.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_hand.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_hand.png new file mode 100644 index 00000000000..771cd025a86 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_hand.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_leg-primary.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_leg-primary.png new file mode 100644 index 00000000000..05f568654e6 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_leg-primary.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_leg-secondary.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_leg-secondary.png new file mode 100644 index 00000000000..a96f9eb3854 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_leg-secondary.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/meta.json b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/meta.json new file mode 100644 index 00000000000..76933f74a52 --- /dev/null +++ b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/meta.json @@ -0,0 +1,79 @@ +{ + "version": 1, + "copyright": "Sprites originally from Paradise Station (https://github.com/ParadiseSS13/Paradise). Monochromatic version made by: DayOS (https://github.com/Day-OS). Head edited by Timemaster99.", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "l_foot", + "directions": 4 + }, + { + "name": "r_foot", + "directions": 4 + }, + { + "name": "l_leg-primary", + "directions": 4 + }, + { + "name": "l_leg-secondary", + "directions": 4 + }, + { + "name": "r_leg-primary", + "directions": 4 + }, + { + "name": "r_leg-secondary", + "directions": 4 + }, + { + "name": "torso-primary", + "directions": 4 + }, + { + "name": "torso-secondary", + "directions": 4 + }, + { + "name": "l_arm-primary", + "directions": 4 + }, + { + "name": "l_arm-secondary", + "directions": 4 + }, + { + "name": "l_arm-tertiary", + "directions": 4 + }, + { + "name": "r_arm-primary", + "directions": 4 + }, + { + "name": "r_arm-secondary", + "directions": 4 + }, + { + "name": "r_arm-tertiary", + "directions": 4 + }, + { + "name": "l_hand", + "directions": 4 + }, + { + "name": "r_hand", + "directions": 4 + }, + { + "name": "head", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_arm-primary.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_arm-primary.png new file mode 100644 index 00000000000..c8087d3fc19 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_arm-primary.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_arm-secondary.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_arm-secondary.png new file mode 100644 index 00000000000..2cf2346bd84 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_arm-secondary.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_arm-tertiary.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_arm-tertiary.png new file mode 100644 index 00000000000..0b5cecfd6c3 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_arm-tertiary.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_foot.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_foot.png new file mode 100644 index 00000000000..a8fbe8635ea Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_foot.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_hand.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_hand.png new file mode 100644 index 00000000000..db11be34056 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_hand.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_leg-primary.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_leg-primary.png new file mode 100644 index 00000000000..d6288eedc3c Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_leg-primary.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_leg-secondary.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_leg-secondary.png new file mode 100644 index 00000000000..7a406c93187 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_leg-secondary.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/torso-primary.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/torso-primary.png new file mode 100644 index 00000000000..08cabfc99dc Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/torso-primary.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/torso-secondary.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/torso-secondary.png new file mode 100644 index 00000000000..4e61c144a95 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/torso-secondary.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_monitor.rsi/head-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_monitor.rsi/head-2.png new file mode 100644 index 00000000000..ca3cb6e9e36 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_monitor.rsi/head-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_monitor.rsi/head.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_monitor.rsi/head.png new file mode 100644 index 00000000000..a175f4dfcec Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_monitor.rsi/head.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_monitor.rsi/meta.json b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_monitor.rsi/meta.json new file mode 100644 index 00000000000..ea5456fea10 --- /dev/null +++ b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/bishop/bishop_monitor.rsi/meta.json @@ -0,0 +1,19 @@ +{ + "version": 1, + "copyright": "Sprites originally from Paradise Station (https://github.com/ParadiseSS13/Paradise). Monochromatic version made by: DayOS (https://github.com/Day-OS)", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "head", + "directions": 4 + }, + { + "name": "head-2", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_arm-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_arm-1.png new file mode 100644 index 00000000000..54ecbe28321 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_arm-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_arm-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_arm-2.png new file mode 100644 index 00000000000..c9a529d9ebb Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_arm-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_foot-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_foot-1.png new file mode 100644 index 00000000000..a4e96f5d745 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_foot-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_foot-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_foot-2.png new file mode 100644 index 00000000000..6be2024018b Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_foot-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_hand-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_hand-1.png new file mode 100644 index 00000000000..87466284b3b Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_hand-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_hand-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_hand-2.png new file mode 100644 index 00000000000..b871a179333 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_hand-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_leg-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_leg-1.png new file mode 100644 index 00000000000..880384f5ee9 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_leg-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_leg-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_leg-2.png new file mode 100644 index 00000000000..90b10eb4be5 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_leg-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/meta.json b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/meta.json new file mode 100644 index 00000000000..9f4ca1ee51f --- /dev/null +++ b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/meta.json @@ -0,0 +1,83 @@ +{ + "version": 1, + "copyright": "Sprites originally from Paradise Station (https://github.com/ParadiseSS13/Paradise). Monochromatic version made by: DayOS (https://github.com/Day-OS)", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "l_foot-1", + "directions": 4 + }, + { + "name": "l_foot-2", + "directions": 4 + }, + { + "name": "r_foot-1", + "directions": 4 + }, + { + "name": "r_foot-2", + "directions": 4 + }, + { + "name": "l_leg-1", + "directions": 4 + }, + { + "name": "l_leg-2", + "directions": 4 + }, + { + "name": "r_leg-1", + "directions": 4 + }, + { + "name": "r_leg-2", + "directions": 4 + }, + { + "name": "torso-1", + "directions": 4 + }, + { + "name": "torso-2", + "directions": 4 + }, + { + "name": "l_arm-1", + "directions": 4 + }, + { + "name": "l_arm-2", + "directions": 4 + }, + { + "name": "r_arm-1", + "directions": 4 + }, + { + "name": "r_arm-2", + "directions": 4 + }, + { + "name": "l_hand-1", + "directions": 4 + }, + { + "name": "l_hand-2", + "directions": 4 + }, + { + "name": "r_hand-1", + "directions": 4 + }, + { + "name": "r_hand-2", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_arm-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_arm-1.png new file mode 100644 index 00000000000..5e770056ed9 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_arm-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_arm-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_arm-2.png new file mode 100644 index 00000000000..56b363d862a Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_arm-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_foot-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_foot-1.png new file mode 100644 index 00000000000..8994994011c Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_foot-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_foot-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_foot-2.png new file mode 100644 index 00000000000..9ca884025fd Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_foot-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_hand-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_hand-1.png new file mode 100644 index 00000000000..13a46c2e092 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_hand-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_hand-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_hand-2.png new file mode 100644 index 00000000000..d203e571fca Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_hand-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_leg-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_leg-1.png new file mode 100644 index 00000000000..bb762db0c49 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_leg-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_leg-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_leg-2.png new file mode 100644 index 00000000000..16f0ee16471 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_leg-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/torso-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/torso-1.png new file mode 100644 index 00000000000..45fb93052e4 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/torso-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/torso-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/torso-2.png new file mode 100644 index 00000000000..a8782ac3b04 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/torso-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_monitor.rsi/head-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_monitor.rsi/head-1.png new file mode 100644 index 00000000000..21e0ccbbcb8 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_monitor.rsi/head-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_monitor.rsi/head-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_monitor.rsi/head-2.png new file mode 100644 index 00000000000..0d351d8822a Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_monitor.rsi/head-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_monitor.rsi/meta.json b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_monitor.rsi/meta.json new file mode 100644 index 00000000000..9d2654d15cb --- /dev/null +++ b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_monitor.rsi/meta.json @@ -0,0 +1,19 @@ +{ + "version": 1, + "copyright": "Sprites originally from Paradise Station (https://github.com/ParadiseSS13/Paradise). Monochromatic version made by: DayOS (https://github.com/Day-OS)", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "head-1", + "directions": 4 + }, + { + "name": "head-2", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_alt1.rsi/head.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_alt1.rsi/head.png new file mode 100644 index 00000000000..bed52ce6714 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_alt1.rsi/head.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_alt1.rsi/meta.json b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_alt1.rsi/meta.json new file mode 100644 index 00000000000..9f87381cd87 --- /dev/null +++ b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_alt1.rsi/meta.json @@ -0,0 +1,15 @@ +{ + "version": 1, + "copyright": "Sprites from Paradise Station (https://github.com/ParadiseSS13/Paradise)", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "head", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/head.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/head.png new file mode 100644 index 00000000000..63a66c5f866 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/head.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/l_arm.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/l_arm.png new file mode 100644 index 00000000000..9813e583feb Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/l_arm.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/l_foot.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/l_foot.png new file mode 100644 index 00000000000..468d4f38989 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/l_foot.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/l_hand.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/l_hand.png new file mode 100644 index 00000000000..05df57f392f Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/l_hand.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/l_leg.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/l_leg.png new file mode 100644 index 00000000000..236edc982e1 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/l_leg.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/meta.json b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/meta.json new file mode 100644 index 00000000000..118c3f613c0 --- /dev/null +++ b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/meta.json @@ -0,0 +1,51 @@ +{ + "version": 1, + "copyright": "Sprites from Paradise Station (https://github.com/ParadiseSS13/Paradise)", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "l_foot", + "directions": 4 + }, + { + "name": "r_foot", + "directions": 4 + }, + { + "name": "l_leg", + "directions": 4 + }, + { + "name": "r_leg", + "directions": 4 + }, + { + "name": "torso", + "directions": 4 + }, + { + "name": "l_arm", + "directions": 4 + }, + { + "name": "r_arm", + "directions": 4 + }, + { + "name": "l_hand", + "directions": 4 + }, + { + "name": "r_hand", + "directions": 4 + }, + { + "name": "head", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/r_arm.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/r_arm.png new file mode 100644 index 00000000000..27ba8e0d263 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/r_arm.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/r_foot.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/r_foot.png new file mode 100644 index 00000000000..e0b3dd55b59 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/r_foot.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/r_hand.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/r_hand.png new file mode 100644 index 00000000000..716f604b4f3 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/r_hand.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/r_leg.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/r_leg.png new file mode 100644 index 00000000000..92a0aa7b475 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/r_leg.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/torso.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/torso.png new file mode 100644 index 00000000000..49afe13d65a Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/morpheus/morpheus_main.rsi/torso.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/l_arm-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/l_arm-1.png new file mode 100644 index 00000000000..f5694178c58 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/l_arm-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/l_arm-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/l_arm-2.png new file mode 100644 index 00000000000..f87f611652a Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/l_arm-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/l_foot-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/l_foot-1.png new file mode 100644 index 00000000000..4ee57febec2 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/l_foot-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/l_foot-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/l_foot-2.png new file mode 100644 index 00000000000..fcdf5bf6504 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/l_foot-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/l_hand-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/l_hand-1.png new file mode 100644 index 00000000000..381573480ff Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/l_hand-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/l_hand-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/l_hand-2.png new file mode 100644 index 00000000000..c502e77a18f Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/l_hand-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/l_leg-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/l_leg-1.png new file mode 100644 index 00000000000..a4bee8acb48 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/l_leg-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/l_leg-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/l_leg-2.png new file mode 100644 index 00000000000..0be292d26c2 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/l_leg-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/meta.json b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/meta.json new file mode 100644 index 00000000000..9f4ca1ee51f --- /dev/null +++ b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/meta.json @@ -0,0 +1,83 @@ +{ + "version": 1, + "copyright": "Sprites originally from Paradise Station (https://github.com/ParadiseSS13/Paradise). Monochromatic version made by: DayOS (https://github.com/Day-OS)", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "l_foot-1", + "directions": 4 + }, + { + "name": "l_foot-2", + "directions": 4 + }, + { + "name": "r_foot-1", + "directions": 4 + }, + { + "name": "r_foot-2", + "directions": 4 + }, + { + "name": "l_leg-1", + "directions": 4 + }, + { + "name": "l_leg-2", + "directions": 4 + }, + { + "name": "r_leg-1", + "directions": 4 + }, + { + "name": "r_leg-2", + "directions": 4 + }, + { + "name": "torso-1", + "directions": 4 + }, + { + "name": "torso-2", + "directions": 4 + }, + { + "name": "l_arm-1", + "directions": 4 + }, + { + "name": "l_arm-2", + "directions": 4 + }, + { + "name": "r_arm-1", + "directions": 4 + }, + { + "name": "r_arm-2", + "directions": 4 + }, + { + "name": "l_hand-1", + "directions": 4 + }, + { + "name": "l_hand-2", + "directions": 4 + }, + { + "name": "r_hand-1", + "directions": 4 + }, + { + "name": "r_hand-2", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/r_arm-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/r_arm-1.png new file mode 100644 index 00000000000..b2a1996652f Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/r_arm-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/r_arm-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/r_arm-2.png new file mode 100644 index 00000000000..a79a0eb6483 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/r_arm-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/r_foot-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/r_foot-1.png new file mode 100644 index 00000000000..da79cffbc9b Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/r_foot-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/r_foot-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/r_foot-2.png new file mode 100644 index 00000000000..90b5deb87c4 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/r_foot-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/r_hand-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/r_hand-1.png new file mode 100644 index 00000000000..9d4084b0ca1 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/r_hand-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/r_hand-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/r_hand-2.png new file mode 100644 index 00000000000..a2cc6b71a67 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/r_hand-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/r_leg-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/r_leg-1.png new file mode 100644 index 00000000000..5d1bc5a60da Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/r_leg-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/r_leg-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/r_leg-2.png new file mode 100644 index 00000000000..b2b85c3213d Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/r_leg-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/torso-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/torso-1.png new file mode 100644 index 00000000000..c757f06420a Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/torso-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/torso-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/torso-2.png new file mode 100644 index 00000000000..cd822361bf4 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_main.rsi/torso-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_monitor.rsi/head-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_monitor.rsi/head-1.png new file mode 100644 index 00000000000..99add5cc504 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_monitor.rsi/head-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_monitor.rsi/head-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_monitor.rsi/head-2.png new file mode 100644 index 00000000000..0d5ffd6c10e Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_monitor.rsi/head-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_monitor.rsi/meta.json b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_monitor.rsi/meta.json new file mode 100644 index 00000000000..9d2654d15cb --- /dev/null +++ b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/shellguard/shellguard_monitor.rsi/meta.json @@ -0,0 +1,19 @@ +{ + "version": 1, + "copyright": "Sprites originally from Paradise Station (https://github.com/ParadiseSS13/Paradise). Monochromatic version made by: DayOS (https://github.com/Day-OS)", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "head-1", + "directions": 4 + }, + { + "name": "head-2", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_alt1.rsi/head.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_alt1.rsi/head.png new file mode 100644 index 00000000000..9fbd2083d1d Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_alt1.rsi/head.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_alt1.rsi/meta.json b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_alt1.rsi/meta.json new file mode 100644 index 00000000000..ef992f309c8 --- /dev/null +++ b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_alt1.rsi/meta.json @@ -0,0 +1,15 @@ +{ + "version": 1, + "copyright": "Sprites from Paradise Station (https://github.com/ParadiseSS13/Paradise). Edited by Timemaster99", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "head", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/head.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/head.png new file mode 100644 index 00000000000..c50698e68ce Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/head.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/l_arm.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/l_arm.png new file mode 100644 index 00000000000..1c5f646e36e Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/l_arm.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/l_foot.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/l_foot.png new file mode 100644 index 00000000000..45d9e8e2460 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/l_foot.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/l_hand.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/l_hand.png new file mode 100644 index 00000000000..062d14745c0 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/l_hand.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/l_leg.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/l_leg.png new file mode 100644 index 00000000000..f120754830b Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/l_leg.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/meta.json b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/meta.json new file mode 100644 index 00000000000..f30906990a5 --- /dev/null +++ b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/meta.json @@ -0,0 +1,51 @@ +{ + "version": 1, + "copyright": "Sprites from Paradise Station (https://github.com/ParadiseSS13/Paradise). Edited by Timemaster99", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "l_foot", + "directions": 4 + }, + { + "name": "r_foot", + "directions": 4 + }, + { + "name": "l_leg", + "directions": 4 + }, + { + "name": "r_leg", + "directions": 4 + }, + { + "name": "torso", + "directions": 4 + }, + { + "name": "l_arm", + "directions": 4 + }, + { + "name": "r_arm", + "directions": 4 + }, + { + "name": "l_hand", + "directions": 4 + }, + { + "name": "r_hand", + "directions": 4 + }, + { + "name": "head", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/r_arm.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/r_arm.png new file mode 100644 index 00000000000..24e15d419ad Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/r_arm.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/r_foot.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/r_foot.png new file mode 100644 index 00000000000..f04c2fd7a64 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/r_foot.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/r_hand.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/r_hand.png new file mode 100644 index 00000000000..287556a83a0 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/r_hand.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/r_leg.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/r_leg.png new file mode 100644 index 00000000000..653101e63af Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/r_leg.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/torso.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/torso.png new file mode 100644 index 00000000000..ad1bd42ca6c Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_main.rsi/torso.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_monitor.rsi/head.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_monitor.rsi/head.png new file mode 100644 index 00000000000..31ef25deb56 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_monitor.rsi/head.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_monitor.rsi/meta.json b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_monitor.rsi/meta.json new file mode 100644 index 00000000000..9f87381cd87 --- /dev/null +++ b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/wardtakahashi/wardtakahashi_monitor.rsi/meta.json @@ -0,0 +1,15 @@ +{ + "version": 1, + "copyright": "Sprites from Paradise Station (https://github.com/ParadiseSS13/Paradise)", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "head", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/l_arm-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/l_arm-1.png new file mode 100644 index 00000000000..48cf08df079 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/l_arm-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/l_arm-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/l_arm-2.png new file mode 100644 index 00000000000..1ef9cc0473f Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/l_arm-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/l_foot-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/l_foot-1.png new file mode 100644 index 00000000000..38b28406ac5 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/l_foot-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/l_foot-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/l_foot-2.png new file mode 100644 index 00000000000..0d745f2d566 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/l_foot-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/l_hand-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/l_hand-1.png new file mode 100644 index 00000000000..72a1d92d83f Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/l_hand-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/l_hand-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/l_hand-2.png new file mode 100644 index 00000000000..d61d58b478a Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/l_hand-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/l_leg-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/l_leg-1.png new file mode 100644 index 00000000000..6e813b8b631 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/l_leg-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/l_leg-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/l_leg-2.png new file mode 100644 index 00000000000..89106d6420b Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/l_leg-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/meta.json b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/meta.json new file mode 100644 index 00000000000..35c1cad74bd --- /dev/null +++ b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/meta.json @@ -0,0 +1,82 @@ +{ + "version": 1, + "copyright": "Sprites originally from Paradise Station (https://github.com/ParadiseSS13/Paradise). Monochromatic version made by: DayOS (https://github.com/Day-OS)", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "l_foot-1", + "directions": 4 + },{ + "name": "l_foot-2", + "directions": 4 + }, + { + "name": "r_foot-1", + "directions": 4 + }, + { + "name": "r_foot-2", + "directions": 4 + }, + { + "name": "l_leg-1", + "directions": 4 + }, + { + "name": "l_leg-2", + "directions": 4 + }, + { + "name": "r_leg-1", + "directions": 4 + }, + { + "name": "r_leg-2", + "directions": 4 + }, + { + "name": "torso-1", + "directions": 4 + }, + { + "name": "torso-2", + "directions": 4 + }, + { + "name": "l_arm-1", + "directions": 4 + }, + { + "name": "l_arm-2", + "directions": 4 + }, + { + "name": "r_arm-1", + "directions": 4 + }, + { + "name": "r_arm-2", + "directions": 4 + }, + { + "name": "l_hand-1", + "directions": 4 + }, + { + "name": "l_hand-2", + "directions": 4 + }, + { + "name": "r_hand-1", + "directions": 4 + }, + { + "name": "r_hand-2", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/r_arm-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/r_arm-1.png new file mode 100644 index 00000000000..0409bb02fe1 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/r_arm-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/r_arm-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/r_arm-2.png new file mode 100644 index 00000000000..061988dbcd4 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/r_arm-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/r_foot-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/r_foot-1.png new file mode 100644 index 00000000000..ef8b2b141aa Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/r_foot-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/r_foot-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/r_foot-2.png new file mode 100644 index 00000000000..74d17c3c734 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/r_foot-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/r_hand-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/r_hand-1.png new file mode 100644 index 00000000000..9d9dfb2848a Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/r_hand-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/r_hand-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/r_hand-2.png new file mode 100644 index 00000000000..9d4e6c3e167 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/r_hand-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/r_leg-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/r_leg-1.png new file mode 100644 index 00000000000..7ef9033cc0f Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/r_leg-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/r_leg-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/r_leg-2.png new file mode 100644 index 00000000000..cb88587d550 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/r_leg-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/torso-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/torso-1.png new file mode 100644 index 00000000000..db42c9a82bf Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/torso-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/torso-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/torso-2.png new file mode 100644 index 00000000000..70271b0c3a2 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_main.rsi/torso-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_monitor.rsi/head-1.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_monitor.rsi/head-1.png new file mode 100644 index 00000000000..a78c1a63302 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_monitor.rsi/head-1.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_monitor.rsi/head-2.png b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_monitor.rsi/head-2.png new file mode 100644 index 00000000000..451ccee4108 Binary files /dev/null and b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_monitor.rsi/head-2.png differ diff --git a/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_monitor.rsi/meta.json b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_monitor.rsi/meta.json new file mode 100644 index 00000000000..9d2654d15cb --- /dev/null +++ b/Resources/Textures/EstacaoPirata/Mobs/Customization/cyberlimbs/xion/xion_monitor.rsi/meta.json @@ -0,0 +1,19 @@ +{ + "version": 1, + "copyright": "Sprites originally from Paradise Station (https://github.com/ParadiseSS13/Paradise). Monochromatic version made by: DayOS (https://github.com/Day-OS)", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "head-1", + "directions": 4 + }, + { + "name": "head-2", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_antlers.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_antlers.png new file mode 100644 index 00000000000..125f9cf913e Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_antlers.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_crowned.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_crowned.png new file mode 100644 index 00000000000..2fd0cdd06d2 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_crowned.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_cyberhead.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_cyberhead.png new file mode 100644 index 00000000000..c3d1111199e Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_cyberhead.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_droneeyes.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_droneeyes.png new file mode 100644 index 00000000000..5b2a67a813a Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_droneeyes.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_light.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_light.png new file mode 100644 index 00000000000..91f5fd25e78 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_light.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_lightb.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_lightb.png new file mode 100644 index 00000000000..bc1133d8d3c Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_lightb.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_sidelights.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_sidelights.png new file mode 100644 index 00000000000..7a1c31e45e4 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_sidelights.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_tesla.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_tesla.png new file mode 100644 index 00000000000..98cb10d3cbc Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_tesla.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_towers.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_towers.png new file mode 100644 index 00000000000..f971130b8e4 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_towers.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_tv.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_tv.png new file mode 100644 index 00000000000..ae53b4762ed Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_tv.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/meta.json b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/meta.json new file mode 100644 index 00000000000..69316d7e57c --- /dev/null +++ b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_antenna.rsi/meta.json @@ -0,0 +1,107 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Yogstation at https://github.com/yogstation13/Yogstation/commit/9c046aa5327c71f9e93e45a34283b3a4aff58bd1", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "ipc_antenna_tv", + "directions": 4 + }, + { + "name": "ipc_antenna_tesla", + "directions": 4, + "delays": [ + [ + 4, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 4, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 4, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 4, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "ipc_antenna_lightb", + "directions": 4, + "delays": [ + [ + 4, + 0.5, + 0.1, + 0.5 + ], + [ + 4, + 0.5, + 0.1, + 0.5 + ], + [ + 4, + 0.5, + 0.1, + 0.5 + ], + [ + 4, + 0.5, + 0.1, + 0.5 + ] + ] + }, + { + "name": "ipc_antenna_light", + "directions": 4 + }, + { + "name": "ipc_antenna_cyberhead", + "directions": 4 + }, + { + "name": "ipc_antenna_sidelights", + "directions": 4 + }, + { + "name": "ipc_antenna_antlers", + "directions": 4 + }, + { + "name": "ipc_antenna_droneeyes", + "directions": 4 + }, + { + "name": "ipc_antenna_crowned", + "directions": 4 + }, + { + "name": "ipc_antenna_towers", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_blank.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_blank.png new file mode 100644 index 00000000000..4361a36c1ed Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_blank.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_blue.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_blue.png new file mode 100644 index 00000000000..f1568848807 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_blue.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_breakout.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_breakout.png new file mode 100644 index 00000000000..54a282bd95c Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_breakout.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_bsod.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_bsod.png new file mode 100644 index 00000000000..7d7a8efb62e Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_bsod.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_console.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_console.png new file mode 100644 index 00000000000..dfed44e10cd Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_console.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_ecgwave.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_ecgwave.png new file mode 100644 index 00000000000..2d2c405734d Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_ecgwave.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_eight.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_eight.png new file mode 100644 index 00000000000..8421ae30bd9 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_eight.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_exclaim.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_exclaim.png new file mode 100644 index 00000000000..e280615e504 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_exclaim.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_eyes.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_eyes.png new file mode 100644 index 00000000000..42ee79361b1 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_eyes.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_eyesangry.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_eyesangry.png new file mode 100644 index 00000000000..8a7e45c7e8f Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_eyesangry.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_eyestall.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_eyestall.png new file mode 100644 index 00000000000..d8c03fa3240 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_eyestall.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_frown.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_frown.png new file mode 100644 index 00000000000..f297c401a10 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_frown.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_glider.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_glider.png new file mode 100644 index 00000000000..afd5349ee6b Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_glider.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_goggles.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_goggles.png new file mode 100644 index 00000000000..422a603cc7c Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_goggles.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_heart.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_heart.png new file mode 100644 index 00000000000..77578d774ed Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_heart.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_l.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_l.png new file mode 100644 index 00000000000..902845f11fc Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_l.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_loading.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_loading.png new file mode 100644 index 00000000000..9a1f705a0d7 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_loading.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_monoeye.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_monoeye.png new file mode 100644 index 00000000000..4e5056528d9 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_monoeye.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_nature.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_nature.png new file mode 100644 index 00000000000..6425fe2b517 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_nature.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_orange.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_orange.png new file mode 100644 index 00000000000..f4c98278e1d Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_orange.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_pink.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_pink.png new file mode 100644 index 00000000000..dc50eb693db Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_pink.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_question.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_question.png new file mode 100644 index 00000000000..f90dcc94abb Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_question.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_rainbowdiag.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_rainbowdiag.png new file mode 100644 index 00000000000..37274191d37 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_rainbowdiag.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_rainbowhoriz.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_rainbowhoriz.png new file mode 100644 index 00000000000..9b6192dd6dc Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_rainbowhoriz.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_redtext.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_redtext.png new file mode 100644 index 00000000000..c180b8e674e Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_redtext.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_rgb.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_rgb.png new file mode 100644 index 00000000000..36f48e75d7a Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_rgb.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_ring.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_ring.png new file mode 100644 index 00000000000..e5454221602 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_ring.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_scroll.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_scroll.png new file mode 100644 index 00000000000..cbf936810a1 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_scroll.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_shower.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_shower.png new file mode 100644 index 00000000000..1546c8dbf13 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_shower.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_sinewave.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_sinewave.png new file mode 100644 index 00000000000..c976f421791 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_sinewave.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_smile.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_smile.png new file mode 100644 index 00000000000..7ecd324e898 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_smile.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_squarewave.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_squarewave.png new file mode 100644 index 00000000000..04211f366e8 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_squarewave.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_stars.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_stars.png new file mode 100644 index 00000000000..8feda85c428 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_stars.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_static.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_static.png new file mode 100644 index 00000000000..08e96db1508 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_static.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_tetris.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_tetris.png new file mode 100644 index 00000000000..d4ea13ea39b Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_tetris.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_textdrop.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_textdrop.png new file mode 100644 index 00000000000..c71ba6d24e9 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_textdrop.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_tv.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_tv.png new file mode 100644 index 00000000000..5b9b25dcd9a Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_tv.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_windowsxp.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_windowsxp.png new file mode 100644 index 00000000000..595ab8444b2 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_windowsxp.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_yellow.png b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_yellow.png new file mode 100644 index 00000000000..bbf4c92cb32 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/ipc_screen_yellow.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/meta.json b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/meta.json new file mode 100644 index 00000000000..b6314cde9c2 --- /dev/null +++ b/Resources/Textures/SimpleStation14/Mobs/Customization/ipc_screens.rsi/meta.json @@ -0,0 +1,1363 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Yogstation at https://github.com/yogstation13/Yogstation/commit/9c046aa5327c71f9e93e45a34283b3a4aff58bd1", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "ipc_screen_static", + "directions": 4, + "delays": [ + [ + 0.15, + 0.15, + 0.15, + 0.15 + ], + [ + 0.15, + 0.15, + 0.15, + 0.15 + ], + [ + 0.15, + 0.15, + 0.15, + 0.15 + ], + [ + 0.15, + 0.15, + 0.15, + 0.15 + ] + ] + }, + { + "name": "ipc_screen_blue", + "directions": 4, + "delays": [ + [ + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4 + ], + [ + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4 + ], + [ + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4 + ], + [ + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4 + ] + ] + }, + { + "name": "ipc_screen_breakout", + "directions": 4, + "delays": [ + [ + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8 + ], + [ + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8 + ], + [ + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8 + ], + [ + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8 + ] + ] + }, + { + "name": "ipc_screen_eight", + "directions": 4, + "delays": [ + [ + 0.8, + 0.8 + ], + [ + 0.8, + 0.8 + ], + [ + 0.8, + 0.8 + ], + [ + 0.8, + 0.8 + ] + ] + }, + { + "name": "ipc_screen_goggles", + "directions": 4, + "delays": [ + [ + 0.2, + 4 + ], + [ + 0.2, + 4 + ], + [ + 0.2, + 4 + ], + [ + 0.2, + 4 + ] + ] + }, + { + "name": "ipc_screen_exclaim", + "directions": 4, + "delays": [ + [ + 0.6, + 0.6 + ], + [ + 0.6, + 0.6 + ], + [ + 0.6, + 0.6 + ], + [ + 0.6, + 0.6 + ] + ] + }, + { + "name": "ipc_screen_heart", + "directions": 4, + "delays": [ + [ + 0.8, + 0.8 + ], + [ + 0.8, + 0.8 + ], + [ + 0.8, + 0.8 + ], + [ + 0.8, + 0.8 + ] + ] + }, + { + "name": "ipc_screen_monoeye", + "directions": 4, + "delays": [ + [ + 4, + 0.1, + 0.1, + 0.1 + ], + [ + 4, + 0.1, + 0.1, + 0.1 + ], + [ + 4, + 0.1, + 0.1, + 0.1 + ], + [ + 4, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "ipc_screen_nature", + "directions": 4, + "delays": [ + [ + 10, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 10, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 10, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 10, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 10, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 10, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 10, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 10, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "ipc_screen_orange", + "directions": 4, + "delays": [ + [ + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8 + ], + [ + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8 + ], + [ + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8 + ], + [ + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8 + ] + ] + }, + { + "name": "ipc_screen_pink", + "directions": 4, + "delays": [ + [ + 0.8, + 0.8 + ], + [ + 0.8, + 0.8 + ], + [ + 0.8, + 0.8 + ], + [ + 0.8, + 0.8 + ] + ] + }, + { + "name": "ipc_screen_question", + "directions": 4, + "delays": [ + [ + 0.8, + 0.8 + ], + [ + 0.8, + 0.8 + ], + [ + 0.8, + 0.8 + ], + [ + 0.8, + 0.8 + ] + ] + }, + { + "name": "ipc_screen_shower", + "directions": 4, + "delays": [ + [ + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8 + ], + [ + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8 + ], + [ + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8 + ], + [ + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8 + ] + ] + }, + { + "name": "ipc_screen_yellow", + "directions": 4, + "delays": [ + [ + 2, + 2 + ], + [ + 2, + 2 + ], + [ + 2, + 2 + ], + [ + 2, + 2 + ] + ] + }, + { + "name": "ipc_screen_scroll", + "directions": 4, + "delays": [ + [ + 0.125, + 0.125, + 0.125, + 0.125, + 0.125 + ], + [ + 0.125, + 0.125, + 0.125, + 0.125, + 0.125 + ], + [ + 0.125, + 0.125, + 0.125, + 0.125, + 0.125 + ], + [ + 0.125, + 0.125, + 0.125, + 0.125, + 0.125 + ] + ] + }, + { + "name": "ipc_screen_console", + "directions": 4, + "delays": [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ] + ] + }, + { + "name": "ipc_screen_rgb", + "directions": 4, + "delays": [ + [ + 2, + 2, + 2 + ], + [ + 2, + 2, + 2 + ], + [ + 2, + 2, + 2 + ], + [ + 2, + 2, + 2 + ] + ] + }, + { + "name": "ipc_screen_glider", + "directions": 4, + "delays": [ + [ + 0.3, + 0.3, + 0.3, + 0.3 + ], + [ + 0.3, + 0.3, + 0.3, + 0.3 + ], + [ + 0.3, + 0.3, + 0.3, + 0.3 + ], + [ + 0.3, + 0.3, + 0.3, + 0.3 + ] + ] + }, + { + "name": "ipc_screen_rainbowhoriz", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "ipc_screen_bsod", + "directions": 4, + "delays": [ + [ + 0.4, + 0.1, + 0.1, + 0.1, + 0.1, + 0.4, + 0.1, + 0.1, + 0.1 + ], + [ + 0.4, + 0.1, + 0.1, + 0.1, + 0.1, + 0.4, + 0.1, + 0.1, + 0.1 + ], + [ + 0.4, + 0.1, + 0.1, + 0.1, + 0.1, + 0.4, + 0.1, + 0.1, + 0.1 + ], + [ + 0.4, + 0.1, + 0.1, + 0.1, + 0.1, + 0.4, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "ipc_screen_redtext", + "directions": 4, + "delays": [ + [ + 0.4, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.4, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.4, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.4, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "ipc_screen_sinewave", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "ipc_screen_squarewave", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "ipc_screen_ecgwave", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "ipc_screen_eyes", + "directions": 4, + "delays": [ + [ + 3, + 0.5 + ], + [ + 3, + 0.5 + ], + [ + 3, + 0.5 + ], + [ + 3, + 0.5 + ] + ] + }, + { + "name": "ipc_screen_eyestall", + "directions": 4, + "delays": [ + [ + 3, + 0.5 + ], + [ + 3, + 0.5 + ], + [ + 3, + 0.5 + ], + [ + 3, + 0.5 + ] + ] + }, + { + "name": "ipc_screen_eyesangry", + "directions": 4, + "delays": [ + [ + 3, + 0.5 + ], + [ + 3, + 0.5 + ], + [ + 3, + 0.5 + ], + [ + 3, + 0.5 + ] + ] + }, + { + "name": "ipc_screen_loading", + "directions": 4, + "delays": [ + [ + 0.2, + 0.1, + 0.2, + 0.1, + 0.2 + ], + [ + 0.2, + 0.1, + 0.2, + 0.1, + 0.2 + ], + [ + 0.2, + 0.1, + 0.2, + 0.1, + 0.2 + ], + [ + 0.2, + 0.1, + 0.2, + 0.1, + 0.2 + ] + ] + }, + { + "name": "ipc_screen_windowsxp", + "directions": 4, + "delays": [ + [ + 0.25, + 0.19, + 0.120000005, + 0.1, + 0.16, + 0.22 + ], + [ + 0.25, + 0.19, + 0.120000005, + 0.1, + 0.16, + 0.22 + ], + [ + 0.25, + 0.19, + 0.120000005, + 0.1, + 0.16, + 0.22 + ], + [ + 0.25, + 0.19, + 0.120000005, + 0.1, + 0.16, + 0.22 + ] + ] + }, + { + "name": "ipc_screen_tetris", + "directions": 4, + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.1, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.1, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.1, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.1, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.1, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.1, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.1, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.1, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + }, + { + "name": "ipc_screen_tv", + "directions": 4, + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.1 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.1 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.1 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.1 + ] + ] + }, + { + "name": "ipc_screen_textdrop", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "ipc_screen_stars", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "ipc_screen_rainbowdiag", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "ipc_screen_blank", + "directions": 4 + }, + { + "name": "ipc_screen_smile", + "directions": 4 + }, + { + "name": "ipc_screen_frown", + "directions": 4 + }, + { + "name": "ipc_screen_ring", + "directions": 4 + }, + { + "name": "ipc_screen_l", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/IPC/organs.rsi/ears.png b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/organs.rsi/ears.png new file mode 100644 index 00000000000..9966cc2ac2d Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/organs.rsi/ears.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/IPC/organs.rsi/eyeball-l.png b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/organs.rsi/eyeball-l.png new file mode 100644 index 00000000000..09b98e316f8 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/organs.rsi/eyeball-l.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/IPC/organs.rsi/eyeball-r.png b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/organs.rsi/eyeball-r.png new file mode 100644 index 00000000000..f1ff37a002f Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/organs.rsi/eyeball-r.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/IPC/organs.rsi/heart-off.png b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/organs.rsi/heart-off.png new file mode 100644 index 00000000000..7dda0d3a8e6 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/organs.rsi/heart-off.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/IPC/organs.rsi/heart-on.png b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/organs.rsi/heart-on.png new file mode 100644 index 00000000000..676a641989a Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/organs.rsi/heart-on.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/IPC/organs.rsi/meta.json b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/organs.rsi/meta.json new file mode 100644 index 00000000000..d6b1b51038e --- /dev/null +++ b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/organs.rsi/meta.json @@ -0,0 +1,47 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Yogstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "heart-off" + }, + { + "name": "heart-on", + "delays": [ + [ + 0.6, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "eyeball-r" + }, + { + "name": "tongue" + }, + { + "name": "eyeball-l" + }, + { + "name": "microcell", + "delays": [ + [ + 0.5, + 0.5 + ] + ] + }, + { + "name": "ears" + } + ] +} diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/IPC/organs.rsi/microcell.png b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/organs.rsi/microcell.png new file mode 100644 index 00000000000..18b692a5a99 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/organs.rsi/microcell.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/IPC/organs.rsi/tongue.png b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/organs.rsi/tongue.png new file mode 100644 index 00000000000..dee2ed3b99f Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/organs.rsi/tongue.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/full.png b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/full.png new file mode 100644 index 00000000000..7faae4a077e Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/full.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/head_f.png b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/head_f.png new file mode 100644 index 00000000000..31d77176c96 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/head_f.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/head_m.png b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/head_m.png new file mode 100644 index 00000000000..53d6069a283 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/head_m.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/l_arm.png b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/l_arm.png new file mode 100644 index 00000000000..4f042bf40e0 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/l_arm.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/l_foot.png b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/l_foot.png new file mode 100644 index 00000000000..bb9bede2180 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/l_foot.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/l_hand.png b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/l_hand.png new file mode 100644 index 00000000000..5b6c2df090c Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/l_hand.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/l_leg.png b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/l_leg.png new file mode 100644 index 00000000000..788f2769d43 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/l_leg.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/meta.json b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/meta.json new file mode 100644 index 00000000000..1463c57a060 --- /dev/null +++ b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/meta.json @@ -0,0 +1,62 @@ +{ + "version": 2, + "license": "CC-BY-SA-3.0", + "copyright": "Original drawn by @robustyanka on Discord, modified by @pspritechologist", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "full" + }, + { + "name": "head_m", + "directions": 4 + }, + { + "name": "head_f", + "directions": 4 + }, + { + "name": "torso_m", + "directions": 4 + }, + { + "name": "torso_f", + "directions": 4 + }, + { + "name": "r_arm", + "directions": 4 + }, + { + "name": "l_arm", + "directions": 4 + }, + { + "name": "r_hand", + "directions": 4 + }, + { + "name": "l_hand", + "directions": 4 + }, + { + "name": "r_leg", + "directions": 4 + }, + { + "name": "l_leg", + "directions": 4 + }, + { + "name": "r_foot", + "directions": 4 + }, + { + "name": "l_foot", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/r_arm.png b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/r_arm.png new file mode 100644 index 00000000000..6c1ff1ec9cf Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/r_arm.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/r_foot.png b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/r_foot.png new file mode 100644 index 00000000000..2389c30aea5 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/r_foot.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/r_hand.png b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/r_hand.png new file mode 100644 index 00000000000..3ec4fab0378 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/r_hand.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/r_leg.png b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/r_leg.png new file mode 100644 index 00000000000..f424b2efbca Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/r_leg.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/torso_f.png b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/torso_f.png new file mode 100644 index 00000000000..b36a2eed8c7 Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/torso_f.png differ diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/torso_m.png b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/torso_m.png new file mode 100644 index 00000000000..df2588b562d Binary files /dev/null and b/Resources/Textures/SimpleStation14/Mobs/Species/IPC/parts.rsi/torso_m.png differ