diff --git a/Content.Client/ADT/Overlays/Shaders/MonochromacyOverlay.cs b/Content.Client/ADT/Overlays/Shaders/MonochromacyOverlay.cs new file mode 100644 index 00000000000..d4cc8a443bd --- /dev/null +++ b/Content.Client/ADT/Overlays/Shaders/MonochromacyOverlay.cs @@ -0,0 +1,46 @@ +// Simple Station + +using Robust.Client.Graphics; +using Robust.Client.Player; +using Robust.Shared.Enums; +using Robust.Shared.Prototypes; +using Content.Shared.ADT.Traits; +using Matrix3x2 = System.Numerics.Matrix3x2; + +namespace Content.Client.ADT.Overlays +{ + public sealed partial class MonochromacyOverlay : Overlay + { + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly IPlayerManager _playerManager = default!; + [Dependency] IEntityManager _entityManager = default!; + + + public override bool RequestScreenTexture => true; + public override OverlaySpace Space => OverlaySpace.WorldSpace; + private readonly ShaderInstance _greyscaleShader; + + public MonochromacyOverlay() + { + IoCManager.InjectDependencies(this); + _greyscaleShader = _prototypeManager.Index("GreyscaleFullscreen").InstanceUnique(); + } + + protected override void Draw(in OverlayDrawArgs args) + { + if (ScreenTexture == null) return; + if (_playerManager.LocalPlayer?.ControlledEntity is not { Valid: true } player) return; + if (!_entityManager.HasComponent(player)) return; + + _greyscaleShader?.SetParameter("SCREEN_TEXTURE", ScreenTexture); + + + var worldHandle = args.WorldHandle; + var viewport = args.WorldBounds; + worldHandle.SetTransform(Matrix3x2.Identity); + worldHandle.UseShader(_greyscaleShader); + worldHandle.DrawRect(viewport, Color.White); + worldHandle.UseShader(null); + } + } +} diff --git a/Content.Client/ADT/Overlays/Shaders/StaticOverlay.cs b/Content.Client/ADT/Overlays/Shaders/StaticOverlay.cs new file mode 100644 index 00000000000..d95707e810b --- /dev/null +++ b/Content.Client/ADT/Overlays/Shaders/StaticOverlay.cs @@ -0,0 +1,93 @@ +using Content.Shared.ADT.Silicon.Components; +using Content.Shared.ADT.Silicon.Systems; +using Content.Shared.StatusEffect; +using Robust.Client.GameObjects; +using Robust.Client.Graphics; +using Robust.Client.Player; +using Robust.Shared.Enums; +using Robust.Shared.Prototypes; +using Robust.Shared.Timing; + + +namespace Content.Client.ADT.Overlays.Shaders; + +public sealed class StaticOverlay : Overlay +{ + [Dependency] private readonly IEntityManager _entityManager = default!; + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly IPlayerManager _playerManager = default!; + + public override OverlaySpace Space => OverlaySpace.WorldSpace; + public override bool RequestScreenTexture => true; + private readonly ShaderInstance _staticShader; + + private (TimeSpan, TimeSpan)? _time; + private float? _fullTimeLeft; + private float? _curTimeLeft; + + public float MixAmount = 0; + + public StaticOverlay() + { + IoCManager.InjectDependencies(this); + _staticShader = _prototypeManager.Index("SeeingStatic").InstanceUnique(); + } + + protected override void FrameUpdate(FrameEventArgs args) + { + var playerEntity = _playerManager.LocalPlayer?.ControlledEntity; + + if (playerEntity == null) + return; + + if (!_entityManager.TryGetComponent(playerEntity, out var staticComp) + || !_entityManager.TryGetComponent(playerEntity, out var statusComp)) + return; + + var status = _entityManager.EntitySysManager.GetEntitySystem(); + + if (playerEntity == null || statusComp == null) + return; + + if (!status.TryGetTime(playerEntity.Value, SharedSeeingStaticSystem.StaticKey, out var timeTemp, statusComp)) + return; + + if (_time != timeTemp) // Resets the shader if the times change. This should factor in wheather it's a reset, or a increase, but I have a lot of cough syrup in me, so TODO. + { + _time = timeTemp; + _fullTimeLeft = null; + _curTimeLeft = null; + } + + _fullTimeLeft ??= (float) (timeTemp.Value.Item2 - timeTemp.Value.Item1).TotalSeconds; + _curTimeLeft ??= _fullTimeLeft; + + _curTimeLeft -= args.DeltaSeconds; + + MixAmount = Math.Clamp(_curTimeLeft.Value / _fullTimeLeft.Value * staticComp.Multiplier, 0, 1); + } + + protected override bool BeforeDraw(in OverlayDrawArgs args) + { + if (!_entityManager.TryGetComponent(_playerManager.LocalPlayer?.ControlledEntity, out EyeComponent? eyeComp)) + return false; + + if (args.Viewport.Eye != eyeComp.Eye) + return false; + + return MixAmount > 0; + } + + protected override void Draw(in OverlayDrawArgs args) + { + if (ScreenTexture == null) + return; + + var handle = args.WorldHandle; + _staticShader.SetParameter("SCREEN_TEXTURE", ScreenTexture); + _staticShader.SetParameter("mixAmount", MixAmount); + handle.UseShader(_staticShader); + handle.DrawRect(args.WorldBounds, Color.White); + handle.UseShader(null); + } +} diff --git a/Content.Client/ADT/Overlays/Systems/MonochromacySystem.cs b/Content.Client/ADT/Overlays/Systems/MonochromacySystem.cs new file mode 100644 index 00000000000..2b6a57389f9 --- /dev/null +++ b/Content.Client/ADT/Overlays/Systems/MonochromacySystem.cs @@ -0,0 +1,56 @@ +// Simple Station + +using Robust.Client.GameObjects; +using Robust.Client.Graphics; +using Robust.Client.Player; +using Robust.Shared.Network; +using Content.Shared.ADT.Traits; +using Robust.Shared.Player; + +namespace Content.Client.ADT.Overlays; +public sealed class MonochromacySystem : EntitySystem +{ + [Dependency] private readonly IPlayerManager _player = default!; + [Dependency] private readonly IOverlayManager _overlayMan = default!; + [Dependency] private readonly INetManager _net = default!; + [Dependency] private readonly IEntityManager _entityManager = default!; + + private MonochromacyOverlay _overlay = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnMonochromacyStartup); + SubscribeLocalEvent(OnMonochromacyShutdown); + + SubscribeLocalEvent(OnPlayerAttached); + SubscribeLocalEvent(OnPlayerDetached); + + _overlay = new(); + } + + private void OnMonochromacyStartup(EntityUid uid, MonochromacyComponent component, ComponentStartup args) + { + if (_player.LocalPlayer?.ControlledEntity == uid) + _overlayMan.AddOverlay(_overlay); + } + + private void OnMonochromacyShutdown(EntityUid uid, MonochromacyComponent component, ComponentShutdown args) + { + if (_player.LocalPlayer?.ControlledEntity == uid) + { + _overlayMan.RemoveOverlay(_overlay); + } + } + + private void OnPlayerAttached(EntityUid uid, MonochromacyComponent component, PlayerAttachedEvent args) + { + _overlayMan.AddOverlay(_overlay); + } + + private void OnPlayerDetached(EntityUid uid, MonochromacyComponent component, PlayerDetachedEvent args) + { + _overlayMan.RemoveOverlay(_overlay); + } +} diff --git a/Content.Client/ADT/Overlays/Systems/SeeingStaticSystem.cs b/Content.Client/ADT/Overlays/Systems/SeeingStaticSystem.cs new file mode 100644 index 00000000000..b6744f3dff1 --- /dev/null +++ b/Content.Client/ADT/Overlays/Systems/SeeingStaticSystem.cs @@ -0,0 +1,57 @@ +using Content.Client.ADT.Overlays.Shaders; +using Content.Shared.ADT.Silicon.Components; +using Robust.Client.Graphics; +using Robust.Client.Player; +using Robust.Shared.Player; + +namespace Content.Client.ADT.Overlays; + +/// +/// System to handle the SeeingStatic overlay. +/// +public sealed class SeeingStaticSystem : EntitySystem +{ + [Dependency] private readonly IPlayerManager _player = default!; + [Dependency] private readonly IOverlayManager _overlayMan = default!; + + private StaticOverlay _overlay = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnInit); + SubscribeLocalEvent(OnShutdown); + + SubscribeLocalEvent(OnPlayerAttached); + SubscribeLocalEvent(OnPlayerDetached); + + _overlay = new(); + } + + private void OnPlayerAttached(EntityUid uid, SeeingStaticComponent component, LocalPlayerAttachedEvent args) + { + _overlayMan.AddOverlay(_overlay); + } + + private void OnPlayerDetached(EntityUid uid, SeeingStaticComponent component, LocalPlayerDetachedEvent args) + { + _overlay.MixAmount = 0; + _overlayMan.RemoveOverlay(_overlay); + } + + private void OnInit(EntityUid uid, SeeingStaticComponent component, ComponentInit args) + { + if (_player.LocalPlayer?.ControlledEntity == uid) + _overlayMan.AddOverlay(_overlay); + } + + private void OnShutdown(EntityUid uid, SeeingStaticComponent component, ComponentShutdown args) + { + if (_player.LocalPlayer?.ControlledEntity == uid) + { + _overlay.MixAmount = 0; + _overlayMan.RemoveOverlay(_overlay); + } + } +} diff --git a/Content.Server/ADT/Damage/Components/DamageOnTriggerComponent.cs b/Content.Server/ADT/Damage/Components/DamageOnTriggerComponent.cs new file mode 100644 index 00000000000..f5cef74457e --- /dev/null +++ b/Content.Server/ADT/Damage/Components/DamageOnTriggerComponent.cs @@ -0,0 +1,12 @@ +using Content.Shared.Damage; + +namespace Content.Server.Damage.Components; + +[RegisterComponent] +public sealed partial class DamageOnTriggerComponent : Component +{ + [DataField("ignoreResistances")] public bool IgnoreResistances; + + [DataField("damage", required: true)] + public DamageSpecifier Damage = default!; +} diff --git a/Content.Server/ADT/Damage/Systems/DamageOnTriggerSystem.cs b/Content.Server/ADT/Damage/Systems/DamageOnTriggerSystem.cs new file mode 100644 index 00000000000..5f2fd141926 --- /dev/null +++ b/Content.Server/ADT/Damage/Systems/DamageOnTriggerSystem.cs @@ -0,0 +1,26 @@ +// Simple Station + +using Content.Server.Damage.Components; +using Content.Server.Explosion.EntitySystems; +using Content.Shared.Damage; +using Content.Shared.StepTrigger.Systems; + +namespace Content.Server.Damage.Systems +{ + // System for damage that occurs on specific trigger, towards the entity.. + public sealed class DamageOnTriggerSystem : EntitySystem + { + [Dependency] private readonly DamageableSystem _damageableSystem = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(DamageOnTrigger); + } + + private void DamageOnTrigger(EntityUid uid, DamageOnTriggerComponent component, TriggerEvent args) + { + _damageableSystem.TryChangeDamage(uid, component.Damage, component.IgnoreResistances); + } + } +} diff --git a/Content.Server/ADT/Hemophilia/HemophiliaSystem.cs b/Content.Server/ADT/Hemophilia/HemophiliaSystem.cs new file mode 100644 index 00000000000..9092cc66a14 --- /dev/null +++ b/Content.Server/ADT/Hemophilia/HemophiliaSystem.cs @@ -0,0 +1,31 @@ +using Content.Server.Body.Components; +using Content.Shared.ADT.Traits; + +namespace Content.Server.ADT.Hemophilia; + +public sealed partial class HemophiliaSystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnInitHemophilia); + SubscribeLocalEvent(OnShutdown); + + } + + private void OnInitHemophilia(EntityUid uid, HemophiliaComponent component, MapInitEvent args) + { + if (TryComp(uid, out var bldcomp)) + { + bldcomp.BleedReductionAmount *= component.Modifier; + } + } + private void OnShutdown(EntityUid uid, HemophiliaComponent component, ComponentShutdown args) + { + if (TryComp(uid, out var bldcomp)) + { + bldcomp.BleedReductionAmount /= component.Modifier; + } + } +} diff --git a/Content.Server/ADT/Power/Components/BatteryDrinkerComponent.cs b/Content.Server/ADT/Power/Components/BatteryDrinkerComponent.cs new file mode 100644 index 00000000000..3d8e5c0eec7 --- /dev/null +++ b/Content.Server/ADT/Power/Components/BatteryDrinkerComponent.cs @@ -0,0 +1,33 @@ +// Simple Station + +namespace Content.Server.ADT.Power; + +[RegisterComponent] +public sealed partial class BatteryDrinkerComponent : Component +{ + /// + /// Is this drinker allowed to drink batteries not tagged as ? + /// + [DataField("drinkAll"), ViewVariables(VVAccess.ReadWrite)] + public bool DrinkAll = false; + + /// + /// How long it takes to drink from a battery, in seconds. + /// Is multiplied by the source. + /// + [DataField("drinkSpeed"), ViewVariables(VVAccess.ReadWrite)] + public float DrinkSpeed = 1.5f; + + /// + /// The multiplier for the amount of power to attempt to drink. + /// Default amount is 1000 + /// + [DataField("drinkMultiplier"), ViewVariables(VVAccess.ReadWrite)] + public float DrinkMultiplier = 5f; + + /// + /// The multiplier for how long it takes to drink a non-source battery, if is true. + /// + [DataField("drinkAllMultiplier"), ViewVariables(VVAccess.ReadWrite)] + public float DrinkAllMultiplier = 2.5f; +} diff --git a/Content.Server/ADT/Power/Components/SiliconEmitSoundOnDrainedComponent.cs b/Content.Server/ADT/Power/Components/SiliconEmitSoundOnDrainedComponent.cs new file mode 100644 index 00000000000..326d9ff29a2 --- /dev/null +++ b/Content.Server/ADT/Power/Components/SiliconEmitSoundOnDrainedComponent.cs @@ -0,0 +1,26 @@ +// Simple Station + +using System.ComponentModel.DataAnnotations; +using Robust.Shared.Audio; +using Content.Server.Sound.Components; + +namespace Content.Server.ADT.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("sound"), Required] + public SoundSpecifier Sound = default!; + + [DataField("interval")] + public float Interval = 8f; + + [DataField("playChance")] + public float PlayChance = 1f; + + [DataField("popUp")] + public string? PopUp; +} diff --git a/Content.Server/ADT/Power/Systems/BatteryDrinkerSystem.cs b/Content.Server/ADT/Power/Systems/BatteryDrinkerSystem.cs new file mode 100644 index 00000000000..d00cad93cf3 --- /dev/null +++ b/Content.Server/ADT/Power/Systems/BatteryDrinkerSystem.cs @@ -0,0 +1,149 @@ +// Simple Station + +using System.Diagnostics.CodeAnalysis; +using Content.Server.Power.Components; +using Content.Shared.Containers.ItemSlots; +using Content.Shared.DoAfter; +using Content.Shared.PowerCell.Components; +using Content.Shared.ADT.Silicon; +using Content.Shared.Verbs; +using Robust.Shared.Utility; +using Content.Server.ADT.Silicon.Charge; +using Content.Server.Power.EntitySystems; +using Content.Server.Popups; + +namespace Content.Server.ADT.Power; + +public sealed class BatteryDrinkerSystem : EntitySystem +{ + [Dependency] private readonly IEntityManager _entityManager = default!; + [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!; + + 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) || + !TryGetFillableBattery(args.User, out var drinkerBattery, out _)) + 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 bool TryGetFillableBattery(EntityUid uid, [NotNullWhen(true)] out BatteryComponent? battery, [NotNullWhen(true)] out EntityUid batteryUid) + { + if (_silicon.TryGetSiliconBattery(uid, out battery, out batteryUid)) + return true; + + if (TryComp(uid, out battery)) + return true; + + if (TryComp(uid, out var powerCellSlot) && + _slots.TryGetSlot(uid, powerCellSlot.CellSlotId, out var slot) && + slot.Item != null && + TryComp(slot.Item.Value, out battery)) + { + batteryUid = slot.Item.Value; + return true; + } + + return false; + } + + 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) //modern.df + //var args = new DoAfterArgs(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); + + TryGetFillableBattery(drinker, out var drinkerBattery, out var drinkerBatteryUid); + + 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, drinkerBattery.MaxCharge - drinkerBattery.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, sourceBattery)) + _battery.SetCharge(drinkerBatteryUid, drinkerBattery.CurrentCharge + amountToDrink, drinkerBattery); + else + { + _battery.SetCharge(drinker, sourceBattery.CurrentCharge + drinkerBattery.CurrentCharge, drinkerBattery); + _battery.SetCharge(source, 0, sourceBattery); + } + + //if (sourceComp != null && sourceComp.DrinkSound != null) + // _audio.PlayPvs(sourceComp.DrinkSound, source); + } +} diff --git a/Content.Server/ADT/Power/Systems/BatteryElectrocuteChargeSystem.cs b/Content.Server/ADT/Power/Systems/BatteryElectrocuteChargeSystem.cs new file mode 100644 index 00000000000..57b285d8478 --- /dev/null +++ b/Content.Server/ADT/Power/Systems/BatteryElectrocuteChargeSystem.cs @@ -0,0 +1,40 @@ +// Simple Station + +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.ADT.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/ADT/Power/Systems/SiliconEmitSoundOnDrainedSystem.cs b/Content.Server/ADT/Power/Systems/SiliconEmitSoundOnDrainedSystem.cs new file mode 100644 index 00000000000..6be0a089cff --- /dev/null +++ b/Content.Server/ADT/Power/Systems/SiliconEmitSoundOnDrainedSystem.cs @@ -0,0 +1,44 @@ +// Simple Station + +using Content.Server.ADT.Silicon.Death; +using Content.Shared.Sound.Components; +using Content.Shared.Mobs; +using Robust.Shared.Timing; +//using Content.Shared.SimpleStation14.Silicon.Systems; + +namespace Content.Server.ADT.Silicon; + +public sealed class EmitSoundOnCritSystem : EntitySystem +{ + [Dependency] private readonly IGameTiming _gameTiming = 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.Accumulator = 0f; + spamComp.MinInterval = TimeSpan.FromSeconds(component.Interval); + spamComp.MaxInterval = TimeSpan.FromSeconds(component.Interval); + spamComp.PopUp = component.PopUp; + spamComp.Enabled = true; + spamComp.Sound = component.Sound; + } + + 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/ADT/Radio/IntrinsicRadioKeySystem.cs b/Content.Server/ADT/Radio/IntrinsicRadioKeySystem.cs new file mode 100644 index 00000000000..eaaa3610237 --- /dev/null +++ b/Content.Server/ADT/Radio/IntrinsicRadioKeySystem.cs @@ -0,0 +1,34 @@ +// Simple Station + +using Content.Server.Radio.Components; +using Content.Shared.Radio; +using Content.Shared.Radio.Components; + +namespace Content.Server.ADT.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/ADT/Silicon/Charge/Components/BatteryDrinkerSourceComponent.cs b/Content.Server/ADT/Silicon/Charge/Components/BatteryDrinkerSourceComponent.cs new file mode 100644 index 00000000000..9b9234d4913 --- /dev/null +++ b/Content.Server/ADT/Silicon/Charge/Components/BatteryDrinkerSourceComponent.cs @@ -0,0 +1,29 @@ +// Simple Station + +using Robust.Shared.Audio; + +namespace Content.Server.ADT.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("maxAmount"), ViewVariables(VVAccess.ReadWrite)] + public int? MaxAmount = null; + + /// + /// The multiplier for the drink speed. + /// + [DataField("drinkSpeedMulti"), ViewVariables(VVAccess.ReadWrite)] + public float DrinkSpeedMulti = 1f; + + /// + /// The sound to play when the battery gets drunk from. + /// Can be null. + /// + [DataField("drinkSound")] + public SoundSpecifier? DrinkSound = null; +} diff --git a/Content.Server/ADT/Silicon/Charge/Components/SiliconDownOnDeadComponent.cs b/Content.Server/ADT/Silicon/Charge/Components/SiliconDownOnDeadComponent.cs new file mode 100644 index 00000000000..352cbb36ce9 --- /dev/null +++ b/Content.Server/ADT/Silicon/Charge/Components/SiliconDownOnDeadComponent.cs @@ -0,0 +1,36 @@ +// Simple Station + +using System.Threading; + +namespace Content.Server.ADT.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 +{ + /// + /// Cancellation token for the silicon's wake timer. + /// + public CancellationTokenSource? WakeToken { get; set; } + + /// + /// The time it will take for a Silicon to "wake up" after leaving the Dead state, in seconds. + /// + /// + /// If not zero, the Silicon will not actually come back to life until after this much time has passed. + /// This can prevent 'flickering' between the two states. + /// + [ViewVariables(VVAccess.ReadWrite)] + [DataField("deadBuffer")] + public float DeadBuffer { get; set; } = 2.5f; + + /// + /// Is this Silicon currently dead? + /// + public bool Dead { get; set; } = false; +} diff --git a/Content.Server/ADT/Silicon/Charge/Systems/SiliconChargeDeathSystem.cs b/Content.Server/ADT/Silicon/Charge/Systems/SiliconChargeDeathSystem.cs new file mode 100644 index 00000000000..119ff3e96d9 --- /dev/null +++ b/Content.Server/ADT/Silicon/Charge/Systems/SiliconChargeDeathSystem.cs @@ -0,0 +1,140 @@ +// Simple Station + +using Content.Server.Power.Components; +using Content.Shared.ADT.Silicon.Systems; +// using Content.Server.Bed.Sleep; - nixsilvam: ну предположим это не нужно вообще теперь +using Content.Shared.Bed.Sleep; +// using Content.Server.Sound.Components; - nixsilvam: это в целом не используется тут, хз зачем оно было +using Content.Server.ADT.Silicon.Charge; +using System.Threading; +using Timer = Robust.Shared.Timing.Timer; + +namespace Content.Server.ADT.Silicon.Death; + +public sealed class SiliconDeathSystem : EntitySystem +{ + [Dependency] private readonly SleepingSystem _sleep = default!; + [Dependency] private readonly SiliconChargeSystem _silicon = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnSiliconChargeStateUpdate); + } + + private void OnSiliconChargeStateUpdate(EntityUid uid, SiliconDownOnDeadComponent siliconDeadComp, SiliconChargeStateUpdateEvent args) + { + _silicon.TryGetSiliconBattery(uid, out var batteryComp, out var batteryUid); + + if (args.ChargeState == ChargeState.Dead && siliconDeadComp.Dead) + { + siliconDeadComp.WakeToken?.Cancel(); + return; + } + + if (args.ChargeState == ChargeState.Dead && !siliconDeadComp.Dead) + SiliconDead(uid, siliconDeadComp, batteryComp, batteryUid); + else if (args.ChargeState != ChargeState.Dead && siliconDeadComp.Dead) + { + if (siliconDeadComp.DeadBuffer > 0) + { + siliconDeadComp.WakeToken?.Cancel(); // This should never matter, but better safe than loose timers. + + var wakeToken = new CancellationTokenSource(); + siliconDeadComp.WakeToken = wakeToken; + + // If battery is dead, wait the dead buffer time and then wake it up. + Timer.Spawn(TimeSpan.FromSeconds(siliconDeadComp.DeadBuffer), () => + { + if (wakeToken.IsCancellationRequested) + return; + + SiliconUnDead(uid, siliconDeadComp, batteryComp, batteryUid); + }, wakeToken.Token); + } + else + SiliconUnDead(uid, siliconDeadComp, batteryComp, batteryUid); + } + } + + 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); + + siliconDeadComp.Dead = true; + + RaiseLocalEvent(uid, new SiliconChargeDeathEvent(uid, batteryComp, batteryUid)); + } + + private void SiliconUnDead(EntityUid uid, SiliconDownOnDeadComponent siliconDeadComp, BatteryComponent? batteryComp, EntityUid batteryUid) + { + _sleep.TryWaking(uid, true, null); + + 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/ADT/Silicon/Charge/Systems/SiliconChargeSystem.cs b/Content.Server/ADT/Silicon/Charge/Systems/SiliconChargeSystem.cs new file mode 100644 index 00000000000..e607618e0ea --- /dev/null +++ b/Content.Server/ADT/Silicon/Charge/Systems/SiliconChargeSystem.cs @@ -0,0 +1,215 @@ +// Simple Station + +using Robust.Shared.Random; +using Content.Shared.ADT.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.ADT.Silicon.Systems; +using Content.Shared.Movement.Systems; +using Content.Server.Body.Components; +using Content.Server.Power.EntitySystems; +using Robust.Shared.Containers; +using System.Diagnostics.CodeAnalysis; +using Robust.Shared.Timing; +using Content.Shared.ADT.CCVar; +using Robust.Shared.Configuration; +using Robust.Shared.Utility; + +namespace Content.Server.ADT.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 BatterySystem _battery = default!; + [Dependency] private readonly SharedContainerSystem _container = default!; + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly IConfigurationManager _config = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnSiliconStartup); + } + + public bool TryGetSiliconBattery(EntityUid silicon, [NotNullWhen(true)] out BatteryComponent? batteryComp, out EntityUid batteryUid) + { + batteryComp = null; + batteryUid = silicon; + + if (!EntityManager.TryGetComponent(silicon, out SiliconComponent? siliconComp)) + return false; + + /// этот блок по идее можно пропустить ибо у нас визардовские борги + // if (siliconComp.BatteryContainer != null && + // siliconComp.BatteryContainer.ContainedEntities.Count > 0 && + // TryComp(siliconComp.BatteryContainer.ContainedEntities[0], out batteryComp)) + // { + // batteryUid = siliconComp.BatteryContainer.ContainedEntities[0]; + // return true; + // } + + if (TryComp(silicon, out batteryComp)) + return true; + + return false; + } + + private void OnSiliconStartup(EntityUid uid, SiliconComponent component, ComponentStartup args) + { + if (component.BatterySlot == null) + return; + /// этот блок по идее можно пропустить ибо у нас визардовские борги + // var container = _container.GetContainer(uid, component.BatterySlot); + // component.BatteryContainer = container; + + 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(SimpleStationCCVars.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, out var battery)) + { + UpdateChargeState(battery, ChargeState.Invalid, siliconComp); + continue; + } + + // If the silicon is dead, skip it. + if (_mobState.IsDead(silicon)) + 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. + _battery.UseCharge(battery, frameTime * drainRate, batteryComp); + + // Figure out the current state of the Silicon. + var chargePercent = batteryComp.CurrentCharge / batteryComp.MaxCharge; + + var currentState = chargePercent switch + { + var x when x > siliconComp.ChargeThresholdMid => ChargeState.Full, + var x when x > siliconComp.ChargeThresholdLow => ChargeState.Mid, + var x when x > siliconComp.ChargeThresholdCritical => ChargeState.Low, + var x when x > 0 || siliconComp.ChargeThresholdCritical == 0 => ChargeState.Critical, + _ => ChargeState.Dead, + }; + + UpdateChargeState(silicon, currentState, siliconComp); + } + } + + /// + /// Checks if anything needs to be updated, and updates it. + /// + public void UpdateChargeState(EntityUid uid, ChargeState state, SiliconComponent component) + { + if (component.ChargeState == state) + return; + + component.ChargeState = state; + + RaiseLocalEvent(uid, new SiliconChargeStateUpdateEvent(state)); + + _moveMod.RefreshMovementSpeedModifiers(uid); + } + + 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) + { + siliconComp.OverheatAccumulator -= 5; + + if (EntityManager.TryGetComponent(silicon, out var flamComp) && + temperComp.CurrentTemperature > temperComp.HeatDamageThreshold && + !flamComp.OnFire && + _random.Prob(Math.Clamp(temperComp.CurrentTemperature / (upperThresh * 5), 0.001f, 0.9f))) + { + //_flammable.Ignite(silicon, flamComp); // починить Ignite + } + else if ((flamComp == null || !flamComp.OnFire) && + _random.Prob(Math.Clamp(temperComp.CurrentTemperature / upperThresh, 0.001f, 0.75f))) + { + _popup.PopupEntity(Loc.GetString("silicon-overheating"), silicon, silicon, PopupType.SmallCaution); + } + } + + return hotTempMulti; + } + + // Check if the silicon is in a cold environment. + if (temperComp.CurrentTemperature < thermalComp.NormalBodyTemperature) + { + var coldTempMulti = 0.5f + temperComp.CurrentTemperature / thermalComp.NormalBodyTemperature * 0.5f; + + return coldTempMulti; + } + + return 0; + } +} diff --git a/Content.Server/ADT/Silicon/Charge/Systems/SiliconChargerSystem.cs b/Content.Server/ADT/Silicon/Charge/Systems/SiliconChargerSystem.cs new file mode 100644 index 00000000000..c15efebabc5 --- /dev/null +++ b/Content.Server/ADT/Silicon/Charge/Systems/SiliconChargerSystem.cs @@ -0,0 +1,386 @@ +// Simple Station + +using System.Linq; +using Content.Server.Construction; +using Content.Server.Explosion.Components; +using Content.Server.Explosion.EntitySystems; +using Content.Server.Hands.Systems; +using Content.Server.Popups; +using Content.Server.Power.Components; +using Content.Server.Power.EntitySystems; +using Content.Server.Storage.Components; +using Content.Shared.Containers.ItemSlots; +using Content.Shared.Damage; +using Content.Shared.Damage.Prototypes; +using Content.Shared.Hands.Components; +using Content.Shared.Interaction.Components; +using Content.Shared.Inventory; +using Content.Shared.Popups; +using Content.Shared.Power; +using Content.Shared.PowerCell.Components; +using Content.Shared.ADT.Silicon; +using Content.Shared.StepTrigger.Components; +using Content.Shared.Storage.Components; +using Robust.Shared.Physics.Events; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; +using Robust.Shared.Timing; + +namespace Content.Server.ADT.Silicon.Charge; + +public sealed class SiliconChargerSystem : EntitySystem +{ + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly ItemSlotsSystem _itemSlots = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; + [Dependency] private readonly IPrototypeManager _prototypes = default!; + [Dependency] private readonly PopupSystem _popup = default!; + [Dependency] private readonly HandsSystem _hands = default!; + [Dependency] private readonly InventorySystem _inventory = default!; + [Dependency] private readonly ExplosionSystem _explosion = default!; + //[Dependency] private readonly SharedSiliconChargerSystem _sharedCharger = default!; + [Dependency] private readonly BatterySystem _battery = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly SiliconChargeSystem _silicon = default!; + + public override void Initialize() + { + base.Initialize(); + + // SubscribeLocalEvent(OnRefreshParts); + // SubscribeLocalEvent(OnExamineParts); + + SubscribeLocalEvent(OnStartCollide); + SubscribeLocalEvent(OnEndCollide); + + SubscribeLocalEvent(OnChargerShutdown); + + SubscribeLocalEvent(HandleStateOpen); + SubscribeLocalEvent(HandleStateClose); + } + + // TODO: Potentially refactor this so it chaches all found entities upon the storage being closed, or stepped on, etc. + // Perhaps a variable for it? Open chargers like the pad wouldn't update to things picked up, but it seems silly to redo it each frame for closed ones. + private void HandleStateOpen(EntityUid uid, SiliconChargerComponent component, ref StorageAfterOpenEvent _) + { + UpdateState(uid, component); + } + + /// + private void HandleStateClose(EntityUid uid, SiliconChargerComponent component, ref StorageAfterCloseEvent _) + { + UpdateState(uid, component); + } + + public override void Update(float frameTime) + { + base.Update(frameTime); + + #region Entity Storage Chargers + // Check for any chargers with the EntityStorageComponent. + var entityStorageQuery = EntityQueryEnumerator(); + while (entityStorageQuery.MoveNext(out var uid, out var chargerComp, out var entStorage)) + { + var wasActive = chargerComp.Active; + chargerComp.Active = false; + + if (TryComp(uid, out var powerComp) && !powerComp.Powered) + { + if (chargerComp.Active != wasActive) + UpdateState(uid, chargerComp); + + continue; + } + + foreach (var entity in entStorage.Contents.ContainedEntities) + { + chargerComp.Active = true; + + var chargeRate = chargerComp.ChargeMulti * frameTime * 10; + + HandleChargingEntity(entity, chargeRate, chargerComp, uid, frameTime); + + // Heat up the air in the charger. + if (entStorage.Airtight) + { + var curTemp = entStorage.Air.Temperature; + + entStorage.Air.Temperature += curTemp < chargerComp.TargetTemp ? frameTime * chargerComp.ChargeMulti / 100 : 0; + } + } + + if (chargerComp.Active != wasActive) + UpdateState(uid, chargerComp); + } + #endregion Entity Storage Chargers + + #region Step Trigger Chargers + // Check for any chargers with the StepTriggerComponent. + var stepQuery = EntityQueryEnumerator(); + while (stepQuery.MoveNext(out var uid, out var chargerComp, out _)) + { + if (chargerComp.PresentEntities.Count == 0 || + TryComp(uid, out var powerComp) && !powerComp.Powered) + { + if (chargerComp.Active) + { + chargerComp.Active = false; + UpdateState(uid, chargerComp); + } + continue; + } + + if (!chargerComp.Active) + { + chargerComp.Active = true; + UpdateState(uid, chargerComp); + } + + var chargeRate = frameTime * chargerComp.ChargeMulti / chargerComp.PresentEntities.Count; + + foreach (var entity in chargerComp.PresentEntities.ToList()) + { + HandleChargingEntity(entity, chargeRate, chargerComp, uid, frameTime); + } + } + #endregion Step Trigger Chargers + } + + // Cleanup the sound stream when the charger is destroyed. + private void OnChargerShutdown(EntityUid uid, SiliconChargerComponent component, ComponentShutdown args) + { + //component.SoundStream?.Stop(); /// modern.df ipc-locale + } + + /// + /// Handles working out what entities need to have their batteries charged, or be burnt. + /// + private void HandleChargingEntity(EntityUid entity, float chargeRate, SiliconChargerComponent chargerComp, EntityUid chargerUid, float frameTime, bool burn = true) + { + var entitiesToCharge = SearchThroughEntities(entity, burn); + + if (entitiesToCharge.Count == 0) + return; + + chargeRate *= chargerComp.PartsChargeMulti; + + var entitiesToChargeCount = entitiesToCharge.Count; + + foreach (var (entityToCharge, batteryComp) in entitiesToCharge.ToList()) + { + if (batteryComp != null && batteryComp.CurrentCharge >= batteryComp.MaxCharge) + entitiesToChargeCount--; // Remove any full batteries from the count, so they don't impact charge rate. + } + + // Now we charge the entities we found. + chargeRate /= entitiesToChargeCount; + + foreach (var (entityToCharge, batteryComp) in entitiesToCharge.ToList()) + { + if (batteryComp != null) + ChargeBattery(entityToCharge, batteryComp, chargeRate, chargerComp, chargerUid); + else if (TryComp(entityToCharge, out var damageComp)) + BurnEntity(entityToCharge, damageComp, frameTime, chargerComp, chargerUid); + } + } + + private List<(EntityUid, BatteryComponent?)> SearchThroughEntities(EntityUid entity, bool burn = true) + { + var entitiesToCharge = new List<(EntityUid, BatteryComponent?)>(); + + // If the given entity is a silicon, charge their respective battery. + if (_silicon.TryGetSiliconBattery(entity, out var siliconBatteryComp, out var siliconBatteryUid)) + { + entitiesToCharge.Add((siliconBatteryUid, siliconBatteryComp)); + } + + // Or if the given entity has a battery, charge it. + else if (!HasComp(entity) && // Should probably be charged by the entity holding it. Might be too small to be safe. + TryComp(entity, out var batteryComp)) + { + entitiesToCharge.Add((entity, batteryComp)); + } + + // Or if the given entity contains a battery, charge it. + else if (!HasComp(entity) && // Should probably be charged by the entity holding it. Might be too small to be safe. + TryComp(entity, out var cellSlotComp) && + _itemSlots.TryGetSlot(entity, cellSlotComp.CellSlotId, out var slot) && + TryComp(slot.Item, out var cellBattComp)) + { + entitiesToCharge.Add((slot.Item.Value, cellBattComp)); + } + + // Or if the given entity is fleshy, burn the fucker. + else if (burn && + TryComp(entity, out var damageComp) && + damageComp.DamageContainerID == "Biological") + { + entitiesToCharge.Add((entity, null)); + } + + // Now the weird part, we check for any inventories the entities contained may have, and run this function on any entities contained, for a recursive charging effect. + if (TryComp(entity, out var handsComp)) + { + foreach (var heldEntity in _hands.EnumerateHeld(entity, handsComp)) + { + entitiesToCharge.AddRange(SearchThroughEntities(heldEntity)); + } + } + if (TryComp(entity, out var inventoryComp)) + { + if (_inventory.TryGetSlots(entity, out var slots)) + { + foreach (var slot in slots) + { + if (_inventory.TryGetSlotEntity(entity, slot.Name, out var slotItem)) + entitiesToCharge.AddRange(SearchThroughEntities(slotItem.Value)); + } + } + } + /// modern.df ipc-locale + /* + if (TryComp(entity, out var storageComp)) + { + foreach (var containedEntity in storageComp.StoredEntities!) + { + entitiesToCharge.AddRange(SearchThroughEntities(containedEntity)); + } + } + */ + if (TryComp(entity, out var entStorage)) + { + foreach (var containedEntity in entStorage.Contents.ContainedEntities) + { + entitiesToCharge.AddRange(SearchThroughEntities(containedEntity)); + } + } + + return entitiesToCharge; + } + + private void ChargeBattery(EntityUid entity, BatteryComponent batteryComp, float chargeRate, SiliconChargerComponent chargerComp, EntityUid chargerUid) + { + // Do some math so a charger never charges a battery from zero to full in less than the minimum time, just for the effect of it. + if (chargerComp.ChargeMulti * 10 > batteryComp.MaxCharge / chargerComp.MinChargeTime) + chargeRate /= chargerComp.ChargeMulti * 10 / (batteryComp.MaxCharge / chargerComp.MinChargeTime); + + if (batteryComp.CurrentCharge + chargeRate < batteryComp.MaxCharge) + _battery.SetCharge(entity, batteryComp.CurrentCharge + chargeRate, batteryComp); + else + _battery.SetCharge(entity, batteryComp.MaxCharge, batteryComp); + + // If the battery is too small, explode it. + if ((batteryComp.MaxCharge - batteryComp.CurrentCharge) * 1.2 + batteryComp.MaxCharge < chargerComp.MinChargeSize) + { + if (TryComp(entity, out var explosiveComp)) + _explosion.TriggerExplosive(entity, explosiveComp); + else + _explosion.QueueExplosion(entity, "Default", batteryComp.MaxCharge / 50, 1.5f, 200, user: chargerUid); + } + } + + private void BurnEntity(EntityUid entity, DamageableComponent damageComp, float frameTime, SiliconChargerComponent chargerComp, EntityUid chargerUid) + { + var damage = new DamageSpecifier(_prototypes.Index(chargerComp.DamageType), frameTime * chargerComp.ChargeMulti / 100); + var damageDealt = _damageable.TryChangeDamage(entity, damage, false, true, damageComp, chargerUid); + + if (damageDealt != null && chargerComp.WarningTime < _timing.CurTime) + { + var popupBurn = Loc.GetString(chargerComp.OverheatString); + _popup.PopupEntity(popupBurn, entity, entity, PopupType.MediumCaution); + + chargerComp.WarningTime = TimeSpan.FromSeconds(_random.Next(3, 7)) + _timing.CurTime; + } + } + + // private void OnRefreshParts(EntityUid uid, SiliconChargerComponent component, RefreshPartsEvent args) + // { + // var chargeMod = args.PartRatings[component.ChargeSpeedPart]; + // var efficiencyMod = args.PartRatings[component.ChargeEfficiencyPart]; + + // component.PartsChargeMulti = chargeMod * component.UpgradePartsMulti; + // // TODO: Variable power draw, with efficiency. + // } + + // private void OnExamineParts(EntityUid uid, SiliconChargerComponent component, UpgradeExamineEvent args) + // { + // args.AddPercentageUpgrade("silicon-charger-chargerate-string", component.PartsChargeMulti); + // // TODO: Variable power draw, with efficiency. + // } + + #region Charger specific + #region Step Trigger Chargers + // When an entity starts colliding with the charger, add it to the list of entities present on the charger if it has the StepTriggerComponent. + private void OnStartCollide(EntityUid uid, SiliconChargerComponent component, ref StartCollideEvent args) + { + if (!HasComp(uid)) + return; + + var target = args.OtherEntity; + + if (component.PresentEntities.Contains(target)) + return; + + if (component.PresentEntities.Count >= component.MaxEntities) + { + _popup.PopupEntity(Loc.GetString("silicon-charger-list-full", ("charger", args.OurEntity)), target, target); + return; + } + + component.PresentEntities.Add(target); + } + + // When an entity stops colliding with the charger, remove it from the list of entities present on the charger. + private void OnEndCollide(EntityUid uid, SiliconChargerComponent component, ref EndCollideEvent args) + { + if (!HasComp(uid)) + return; + + var target = args.OtherEntity; + + if (component.PresentEntities.Contains(target)) + { + component.PresentEntities.Remove(target); + } + } + #endregion Step Trigger Chargers + #endregion Charger specific + + public void UpdateState(EntityUid uid, SiliconChargerComponent? component = null) + { + if (!Resolve(uid, ref component)) + return; + + if (component.Active) + { + _appearance.SetData(uid, PowerDeviceVisuals.VisualState, SiliconChargerVisualState.Charging); + + // If we're in prediction, return since Client doesn't have the information needed to handle this. + // Didn't seem to matter in practice, but probably for the best. + if (_timing.InPrediction) + return; + + //if (component.SoundLoop != null && component.SoundStream == null) + // component.SoundStream = + // _audio.PlayPvs(component.SoundLoop, uid, AudioParams.Default.WithLoop(true).WithMaxDistance(5)); + } + else + { + var state = SiliconChargerVisualState.Normal; + + if (EntityManager.TryGetComponent(uid, out var storageComp) && storageComp.Open) + state = SiliconChargerVisualState.NormalOpen; + + _appearance.SetData(uid, PowerDeviceVisuals.VisualState, state); + + // If we're in prediction, return since Client doesn't have the information needed to handle this. + // Didn't seem to matter in practice, but probably for the best. + if (_timing.InPrediction) + return; + + //component.SoundStream?.Stop(); + //component.SoundStream = null; + } + } +} diff --git a/Content.Server/ADT/Silicon/Systems/SiliconEmpSystem.cs b/Content.Server/ADT/Silicon/Systems/SiliconEmpSystem.cs new file mode 100644 index 00000000000..9c76895e91b --- /dev/null +++ b/Content.Server/ADT/Silicon/Systems/SiliconEmpSystem.cs @@ -0,0 +1,71 @@ +// Simple Station + +using Content.Server.Emp; +using Content.Server.Speech.Muting; +using Content.Server.Stunnable; +using Content.Shared.CombatMode.Pacification; +using Content.Shared.Eye.Blinding.Components; +using Content.Shared.Eye.Blinding.Systems; +using Content.Shared.ADT.Silicon.Components; +using Content.Shared.ADT.Silicon.Systems; +using Content.Shared.Speech.EntitySystems; +using Content.Shared.Speech.Muting; +using Content.Shared.StatusEffect; +using Robust.Shared.Random; + +namespace Content.Server.ADT.Silicon.Systems; + +public sealed class SiliconEmpSystem : EntitySystem +{ + [Dependency] private readonly StatusEffectsSystem _status = default!; + [Dependency] private readonly StunSystem _stun = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly SharedStutteringSystem _stuttering = default!; + [Dependency] private readonly SharedSlurredSystem _slurredSystem = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnEmpPulse); + } + + private void OnEmpPulse(EntityUid uid, SiliconComponent component, ref EmpPulseEvent args) + { + args.EnergyConsumption *= 0.25f; // EMPs drain a lot of freakin power. + + if (!TryComp(uid, out var statusComp)) + return; + + args.Affected = true; + args.Disabled = true; + + var duration = args.Duration / 1.5; // We divide the duration since EMPs are balanced for structures, not people. + + if (duration.TotalSeconds * 0.25 >= 3) // If the EMP blast is strong enough, we stun them. + // This is mostly to prevent flickering in/out of being stunned. We also cap how long they can be stunned for. + { + _stun.TryParalyze(uid, TimeSpan.FromSeconds(Math.Min(duration.TotalSeconds * 0.25f, 15f)), true, statusComp); + } + + _stun.TrySlowdown(uid, duration, true, _random.NextFloat(0.50f, 0.70f), _random.NextFloat(0.35f, 0.70f), statusComp); + + _status.TryAddStatusEffect(uid, SharedSeeingStaticSystem.StaticKey, duration, true, statusComp); + + if (_random.Prob(0.60f)) + _stuttering.DoStutter(uid, duration * 2, false, statusComp); + else if (_random.Prob(0.80f)) + _slurredSystem.DoSlur(uid, duration * 2, statusComp); + + if (_random.Prob(0.02f)) + _status.TryAddStatusEffect(uid, "Muted", duration * 0.5, true, statusComp); + + if (_random.Prob(0.02f)) + _status.TryAddStatusEffect(uid, TemporaryBlindnessSystem.BlindingStatusEffect, duration * 0.5, true, statusComp); + + if (_random.Prob(0.08f)) + _status.TryAddStatusEffect(uid, "Pacified", duration * 0.5, true, statusComp); + + args.EnergyConsumption = 0; + } +} diff --git a/Content.Server/ADT/Silicon/Systems/SiliconMiscSystem.cs b/Content.Server/ADT/Silicon/Systems/SiliconMiscSystem.cs new file mode 100644 index 00000000000..f4b37888149 --- /dev/null +++ b/Content.Server/ADT/Silicon/Systems/SiliconMiscSystem.cs @@ -0,0 +1,43 @@ +using Content.Shared.ADT.Silicon.Components; +using Content.Shared.Bed.Sleep; +using static Content.Shared.Repairable.SharedRepairableSystem; +using Content.Server.Body.Components; +using Content.Server.Body.Systems; + +namespace Content.Server.ADT.Silicon.Sytstems; + +public sealed class SiliconMiscSystem : EntitySystem +{ + [Dependency] private readonly BloodstreamSystem _blood = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnTryingToSleep); + //SubscribeLocalEvent(OnRepairFinished); + } + + /// + /// Stops Silicons from being capable of sleeping. + /// + /// + /// This is stupid. + /// + private void OnTryingToSleep(EntityUid uid, SiliconComponent component, ref TryingToSleepEvent args) + { + args.Cancelled = true; + } + + /// + /// Ensure Silicons stop bleeding when repaired, if they can bleed. + /// + //private void OnRepairFinished(EntityUid uid, SiliconComponent component, RepairFinishedEvent args) + //{ + // if (TryComp(uid, out var bloodComp)) + // { + // _blood.TryModifyBleedAmount(uid, -bloodComp.BleedAmount, bloodComp); + // } + //} + +} diff --git a/Content.Server/Administration/Commands/SetOutfitCommand.cs b/Content.Server/Administration/Commands/SetOutfitCommand.cs index 15d8d4afb7b..bf3cc79c4ad 100644 --- a/Content.Server/Administration/Commands/SetOutfitCommand.cs +++ b/Content.Server/Administration/Commands/SetOutfitCommand.cs @@ -12,6 +12,9 @@ using Robust.Shared.Console; using Robust.Shared.Player; using Robust.Shared.Prototypes; +using Content.Shared.Radio.Components; // Parkstation-IPC +using Content.Shared.Containers; // Parkstation-IPC +using Robust.Shared.Containers; // Parkstation-IPC namespace Content.Server.Administration.Commands { @@ -127,6 +130,36 @@ public static bool SetOutfit(EntityUid target, string gear, IEntityManager entit } } + // Parkstation-Ipc-Start + // Pretty much copied from StationSpawningSystem.SpawnStartingGear + 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); + //keyHolderComp.KeyContainer.Insert(keyEntity, force: true); + } + } + + entityManager.QueueDeleteEntity(earEntity); + } + } + // Parkstation-Ipc-End + return true; } } diff --git a/Content.Server/Bed/BedSystem.cs b/Content.Server/Bed/BedSystem.cs index a6b61da591f..710b0678a59 100644 --- a/Content.Server/Bed/BedSystem.cs +++ b/Content.Server/Bed/BedSystem.cs @@ -12,6 +12,7 @@ using Content.Shared.Mobs.Systems; using Robust.Shared.Timing; using Robust.Shared.Utility; +using Content.Shared.ADT.Silicon.Components; // Parkstation-IPCs // I shouldn't have to modify this. namespace Content.Server.Bed { @@ -69,7 +70,7 @@ 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/Body/Components/BloodstreamComponent.cs b/Content.Server/Body/Components/BloodstreamComponent.cs index a6d2afab219..2eb356dc0e9 100644 --- a/Content.Server/Body/Components/BloodstreamComponent.cs +++ b/Content.Server/Body/Components/BloodstreamComponent.cs @@ -9,10 +9,11 @@ using Robust.Shared.Audio; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; +using Content.Server.ADT.Hemophilia; namespace Content.Server.Body.Components { - [RegisterComponent, Access(typeof(BloodstreamSystem), typeof(ReactionMixerSystem))] + [RegisterComponent, Access(typeof(BloodstreamSystem), typeof(ReactionMixerSystem), (typeof(HemophiliaSystem)))] // ADT Hemophilia public sealed partial class BloodstreamComponent : Component { public static string DefaultChemicalsSolutionName = "chemicals"; diff --git a/Content.Server/Electrocution/ElectrocutionSystem.cs b/Content.Server/Electrocution/ElectrocutionSystem.cs index 67e60c9de46..921166f826e 100644 --- a/Content.Server/Electrocution/ElectrocutionSystem.cs +++ b/Content.Server/Electrocution/ElectrocutionSystem.cs @@ -62,6 +62,10 @@ public sealed class ElectrocutionSystem : SharedElectrocutionSystem [ValidatePrototypeId] private const string DamageType = "Shock"; + // 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 ElectrifiedScalePerWatt = 1E-6f; + // Multiply and shift the log scale for shock damage. private const float RecursiveDamageMultiplier = 0.75f; private const float RecursiveTimeMultiplier = 0.8f; diff --git a/Content.Server/Emp/EmpSystem.cs b/Content.Server/Emp/EmpSystem.cs index d2ac2caaa96..fa510d6f972 100644 --- a/Content.Server/Emp/EmpSystem.cs +++ b/Content.Server/Emp/EmpSystem.cs @@ -40,11 +40,31 @@ public override void Initialize() /// The duration of the EMP effects. public void EmpPulse(MapCoordinates coordinates, float range, float energyConsumption, float duration) { + /* foreach (var uid in _lookup.GetEntitiesInRange(coordinates, range)) { TryEmpEffects(uid, energyConsumption, duration); } Spawn(EmpPulseEffectPrototype, coordinates); + */ + + ///ADT-Tweak IPC start + foreach (var uid in _lookup.GetEntitiesInRange(coordinates, range)) + { + var ev = new EmpPulseEvent(energyConsumption, false, false, TimeSpan.FromSeconds(duration)); // Parkstation-IPCs + RaiseLocalEvent(uid, ref ev); + if (ev.Affected) + { + Spawn(EmpDisabledEffectPrototype, Transform(uid).Coordinates); + } + if (ev.Disabled) + { + var disabled = EnsureComp(uid); + disabled.DisabledUntil = Timing.CurTime + TimeSpan.FromSeconds(duration); + } + } + Spawn(EmpPulseEffectPrototype, coordinates); + ///ADT-Tweak IPC end } /// @@ -131,13 +151,12 @@ private void OnCameraSetActive(EntityUid uid, EmpDisabledComponent component, re args.Cancelled = true; } - -///ADT ion start + ///ADT ion start private void OnProjectileHit(EntityUid uid, EmpOnCollideComponent component, ref ProjectileHitEvent args) { TryEmpEffects(args.Target, component.EnergyConsumption, component.DisableDuration); } -///ADT ion end + ///ADT ion end } /// @@ -148,7 +167,7 @@ public sealed partial class EmpAttemptEvent : CancellableEntityEventArgs } [ByRefEvent] -public record struct EmpPulseEvent(float EnergyConsumption, bool Affected, bool Disabled, TimeSpan Duration); +public record struct EmpPulseEvent(float EnergyConsumption, bool Affected, bool Disabled, TimeSpan Duration); // Parkstation-IPCs [ByRefEvent] public record struct EmpDisabledRemoved(); diff --git a/Content.Shared/ADT/CCVar/CCVars.cs b/Content.Shared/ADT/CCVar/CCVars.cs new file mode 100644 index 00000000000..02879447e7a --- /dev/null +++ b/Content.Shared/ADT/CCVar/CCVars.cs @@ -0,0 +1,20 @@ +// Simple Station + +using Robust.Shared.Configuration; + +namespace Content.Shared.ADT.CCVar; + +[CVarDefs] +public sealed class SimpleStationCCVars +{ + /* + * Silicons + */ + #region Silicons + /// + /// The amount of time between NPC Silicons draining their battery in seconds. + /// + public static readonly CVarDef SiliconNpcUpdateTime = + CVarDef.Create("silicon.npcupdatetime", 1.5f, CVar.SERVERONLY); + #endregion Silicons +} diff --git a/Content.Shared/ADT/Silicon/BatteryDrinkerEvent.cs b/Content.Shared/ADT/Silicon/BatteryDrinkerEvent.cs new file mode 100644 index 00000000000..8007a8ca60d --- /dev/null +++ b/Content.Shared/ADT/Silicon/BatteryDrinkerEvent.cs @@ -0,0 +1,14 @@ +// Simple station + +using Content.Shared.DoAfter; +using Robust.Shared.Serialization; + +namespace Content.Shared.ADT.Silicon; + +[Serializable, NetSerializable] +public sealed partial class BatteryDrinkerDoAfterEvent : SimpleDoAfterEvent +{ + public BatteryDrinkerDoAfterEvent() + { + } +} diff --git a/Content.Shared/ADT/Silicon/Components/SeeingStaticComponent.cs b/Content.Shared/ADT/Silicon/Components/SeeingStaticComponent.cs new file mode 100644 index 00000000000..ac581ab437b --- /dev/null +++ b/Content.Shared/ADT/Silicon/Components/SeeingStaticComponent.cs @@ -0,0 +1,20 @@ +// Simple station + +using Robust.Shared.GameStates; + +namespace Content.Shared.ADT.Silicon.Components; + +/// +/// Exists for use as a status effect. Adds a tv static shader to the client. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class SeeingStaticComponent : Component +{ + /// + /// The multiplier applied to the effect. + /// Setting this to 0.5 will halve the effect throughout its entire duration, meaning it will never be fully opaque. + /// Setting this to 2 will double the effect throughout its entire duration, meaning it will be fully opaque for twice as long. + /// + [AutoNetworkedField] + public float Multiplier = 1f; +} diff --git a/Content.Shared/ADT/Silicon/Components/SiliconChargerComponent.cs b/Content.Shared/ADT/Silicon/Components/SiliconChargerComponent.cs new file mode 100644 index 00000000000..90a238c4f26 --- /dev/null +++ b/Content.Shared/ADT/Silicon/Components/SiliconChargerComponent.cs @@ -0,0 +1,125 @@ +// Simple station + +using Content.Shared.Storage.Components; +using Content.Shared.StepTrigger.Components; +using Robust.Shared.Audio; + +namespace Content.Shared.ADT.Silicon; + +[RegisterComponent] +public sealed partial class SiliconChargerComponent : Component +{ + /// + /// Is the charger currently active? + /// + public bool Active = false; + + /// + /// The currently playing audio stream. + /// + //public IPlayingAudioStream? SoundStream { get; set; } modern.df ipc. * Moved IPlayingAudioStream onto AudioComponent and entities instead of an abstract stream. + + /// + /// Counter for handing out warnings to burning entities. + /// + public TimeSpan WarningTime = TimeSpan.Zero; + + /// + /// The current parts multiplier. + /// + public float PartsChargeMulti = 1.2f; + + /// + /// The sound to play when the charger is active. + /// + [DataField("soundLoop")] + public SoundSpecifier SoundLoop = new SoundPathSpecifier("/Audio/Machines/microwave_loop.ogg"); + + /// + /// The multiplier for the charge rate. + /// For reference, an IPC drains at 50. + /// + [DataField("chargeMulti"), ViewVariables(VVAccess.ReadWrite)] + public float ChargeMulti = 50f; + + /// + /// The minimum size of a battery to be charged. + /// + /// + /// Charging a battery too small will detonate it, becoming more likely as it fills. + /// + [DataField("minChargeSize"), ViewVariables(VVAccess.ReadWrite)] + public int MinChargeSize = 1000; + + /// + /// The minimum amount of time it will take to charge a battery, in seconds. + /// + /// + /// Note that this is from empty. A battery that is already half full will take half as long as this value to reach full, if it would've been faster from empty. + /// This is for the sake of feeling cooler- It's lame to just charge instantly. + /// + [DataField("minChargeTime"), ViewVariables(VVAccess.ReadWrite)] + public float MinChargeTime = 10f; + + /// + /// The temperature the charger will stop heating up at. + /// + /// + /// Used specifically for chargers with the . + /// + [DataField("targetTemp"), ViewVariables(VVAccess.ReadWrite)] + public float TargetTemp = 373.15f; + + /// + /// The damage type to deal when a Biological entity is burned. + /// + [DataField("damageType")] + public string DamageType = "Shock"; + + /// + /// The modifier to apply to a used parts rating. + /// + /// + /// 0.6 is the default as it provides a nice range where 2 is about normal, and 4 is about two and a half. + /// + [DataField("upgradePartsMulti"), ViewVariables(VVAccess.ReadWrite)] + public float UpgradePartsMulti = 0.6f; + + /// + /// The part to be used for the charge speed. + /// + [DataField("chargeSpeedPart")] + public string ChargeSpeedPart = "Capacitor"; + + /// + /// The part to be used for the charge efficiency. + /// + [DataField("chargeEfficiencyPart")] + public string ChargeEfficiencyPart = "Manipulator"; + + + /// + /// Charger overheat string + /// + [DataField("overheatString")] + public string OverheatString = "silicon-charger-overheatwarning"; + + + /// + /// The list of entities currently stood on a charger. + /// + /// + /// Used specifically for chargers with the . + /// + [ViewVariables(VVAccess.ReadOnly)] + public List PresentEntities = new List(); + + /// + /// The number of entities that can be stood on a charger at once. + /// + /// + /// Used specifically for chargers with the . + /// + [DataField("maxEntities"), ViewVariables(VVAccess.ReadWrite)] + public int MaxEntities = 1; +} diff --git a/Content.Shared/ADT/Silicon/Components/SiliconComponent.cs b/Content.Shared/ADT/Silicon/Components/SiliconComponent.cs new file mode 100644 index 00000000000..4598086c37f --- /dev/null +++ b/Content.Shared/ADT/Silicon/Components/SiliconComponent.cs @@ -0,0 +1,108 @@ +using Robust.Shared.GameStates; +using Content.Shared.ADT.Silicon.Systems; +using Robust.Shared.Serialization.TypeSerializers.Implementations; +using Robust.Shared.Prototypes; +using Content.Shared.Alert; + +namespace Content.Shared.ADT.Silicon.Components; + +/// +/// Component for defining a mob as a robot. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class SiliconComponent : Component +{ + [ViewVariables(VVAccess.ReadOnly)] + public ChargeState ChargeState = ChargeState.Full; + + [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. + /// + /// modern.df а нету его больше + //public IContainer? BatteryContainer = null; + + /// + /// 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. + /// + [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; + + /// + /// Slot this entity's battery is contained in. + /// Leave null if using a battery component. + /// + [DataField("batterySlot")] + public string? BatterySlot = null; + + /// + /// 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.0f; + + + /// + /// The amount the Silicon will be slowed at each charge state. + /// + [DataField("speedModifierThresholds", required: true)] + public Dictionary SpeedModifierThresholds = default!; // было readonly + + public ProtoId Alert = "Charge"; +} diff --git a/Content.Shared/ADT/Silicon/SiliconChargerVisuals.cs b/Content.Shared/ADT/Silicon/SiliconChargerVisuals.cs new file mode 100644 index 00000000000..1d968db60f3 --- /dev/null +++ b/Content.Shared/ADT/Silicon/SiliconChargerVisuals.cs @@ -0,0 +1,19 @@ +// Simple station + +using Robust.Shared.Serialization; + +namespace Content.Shared.ADT.Silicon; + +[Serializable, NetSerializable] +public enum SiliconChargerVisuals +{ + Lights, +} + +[Serializable, NetSerializable] +public enum SiliconChargerVisualState +{ + Normal, + NormalOpen, + Charging +} diff --git a/Content.Shared/ADT/Silicon/Systems/SeeingStaticSystem.cs b/Content.Shared/ADT/Silicon/Systems/SeeingStaticSystem.cs new file mode 100644 index 00000000000..4852fb38986 --- /dev/null +++ b/Content.Shared/ADT/Silicon/Systems/SeeingStaticSystem.cs @@ -0,0 +1,8 @@ +// Simple station + +namespace Content.Shared.ADT.Silicon.Systems; + +public sealed class SharedSeeingStaticSystem : EntitySystem +{ + public const string StaticKey = "SeeingStatic"; +} diff --git a/Content.Shared/ADT/Silicon/Systems/SharedSiliconSystem.cs b/Content.Shared/ADT/Silicon/Systems/SharedSiliconSystem.cs new file mode 100644 index 00000000000..26c384228fc --- /dev/null +++ b/Content.Shared/ADT/Silicon/Systems/SharedSiliconSystem.cs @@ -0,0 +1,98 @@ +// Simple station + +using Content.Shared.ADT.Silicon.Components; +using Content.Shared.Alert; +using Robust.Shared.Serialization; +using Content.Shared.Movement.Systems; + +namespace Content.Shared.ADT.Silicon.Systems; + + +public sealed class SharedSiliconChargeSystem : EntitySystem +{ + [Dependency] private readonly AlertsSystem _alertsSystem = default!; + + // Dictionary of ChargeState to Alert severity. + private static readonly Dictionary ChargeStateAlert = new() + { + {ChargeState.Full, 4}, + {ChargeState.Mid, 3}, + {ChargeState.Low, 2}, + {ChargeState.Critical, 1}, + {ChargeState.Dead, 0}, + {ChargeState.Invalid, -1}, + }; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnSiliconInit); + SubscribeLocalEvent(OnSiliconChargeStateUpdate); + SubscribeLocalEvent(OnRefreshMovespeed); + } + + private void OnSiliconInit(EntityUid uid, SiliconComponent component, ComponentInit args) + { + if (component.BatteryPowered) + _alertsSystem.ShowAlert(uid, component.Alert, (short) component.ChargeState); + } + + private void OnSiliconChargeStateUpdate(EntityUid uid, SiliconComponent component, SiliconChargeStateUpdateEvent ev) + { + _alertsSystem.ShowAlert(uid, component.Alert, (short) ev.ChargeState); + } + + 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[(ChargeState) closest]; + + args.ModifySpeed(speedMod, speedMod); + } +} + + +public enum SiliconType +{ + Player, + GhostRole, + Npc, +} + +public enum ChargeState +{ + Invalid = -1, + Dead, + Critical, + Low, + Mid, + Full, +} + + +/// +/// Event raised when a Silicon's charge state needs to be updated. +/// +[Serializable, NetSerializable] +public sealed class SiliconChargeStateUpdateEvent : EntityEventArgs +{ + public ChargeState ChargeState { get; } + + public SiliconChargeStateUpdateEvent(ChargeState chargeState) + { + ChargeState = chargeState; + } +} diff --git a/Content.Shared/ADT/Traits/Components/MonochromacyComponent.cs b/Content.Shared/ADT/Traits/Components/MonochromacyComponent.cs new file mode 100644 index 00000000000..3d3f71edfd9 --- /dev/null +++ b/Content.Shared/ADT/Traits/Components/MonochromacyComponent.cs @@ -0,0 +1,15 @@ +// Simple Station + +using Robust.Shared.GameStates; + +namespace Content.Shared.ADT.Traits +{ + /// + /// Entity cannot see color. + /// + [RegisterComponent, NetworkedComponent] + public sealed partial class MonochromacyComponent : Component + { + + } +} diff --git a/Content.Shared/ADT/hemophilia/HemophiliaComponent.cs b/Content.Shared/ADT/hemophilia/HemophiliaComponent.cs new file mode 100644 index 00000000000..30ed792e1b1 --- /dev/null +++ b/Content.Shared/ADT/hemophilia/HemophiliaComponent.cs @@ -0,0 +1,10 @@ +namespace Content.Shared.ADT.Traits; + +[RegisterComponent] +public sealed partial class HemophiliaComponent : Component +{ + [DataField] + public float Modifier = 0.3f; + + +} diff --git a/Content.Shared/Electrocution/ElectrocutionEvents.cs b/Content.Shared/Electrocution/ElectrocutionEvents.cs index fe5753c7fb3..403bea6ce1a 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; // Parkstation-IPC - public ElectrocutedEvent(EntityUid targetUid, EntityUid? sourceUid, float siemensCoefficient) + public ElectrocutedEvent(EntityUid targetUid, EntityUid? sourceUid, float siemensCoefficient, float? shockDamage = null) // 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 a563d396398..1cf9487d087 100644 --- a/Content.Shared/Humanoid/NamingSystem.cs +++ b/Content.Shared/Humanoid/NamingSystem.cs @@ -35,11 +35,16 @@ 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 ADT Tweak: Drask naming + // Start ADT Tweak: Drask naming case SpeciesNaming.FirstDashFirstDashFirst: return Loc.GetString("namepreset-firstdashfirstdashfirst", ("first1", GetFirstName(speciesProto, gender)), ("first2", GetFirstName(speciesProto, gender)), ("first3", GetFirstName(speciesProto, gender))); - // End ADT Tweak + // End ADT Tweak + // Parkstation-Ipc-Start + case SpeciesNaming.FirstDashLast: + return Loc.GetString("namepreset-firstdashlast", + ("first", GetFirstName(speciesProto, gender)), ("last", GetLastName(speciesProto))); + // Parkstation-Ipc-End case SpeciesNaming.FirstLast: default: return Loc.GetString("namepreset-firstlast", diff --git a/Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs b/Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs index 1405c4b5a94..c1c9e21015d 100644 --- a/Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs +++ b/Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs @@ -144,4 +144,5 @@ public enum SpeciesNaming : byte FirstDashFirstDashFirst, // ADT End tweak TheFirstofLast, + FirstDashLast, // Parkstation-IPC } diff --git a/Content.Shared/Radio/Components/EncryptionKeyHolderComponent.cs b/Content.Shared/Radio/Components/EncryptionKeyHolderComponent.cs index bd49acf9090..b3f5f16db73 100644 --- a/Content.Shared/Radio/Components/EncryptionKeyHolderComponent.cs +++ b/Content.Shared/Radio/Components/EncryptionKeyHolderComponent.cs @@ -53,4 +53,13 @@ public sealed partial class EncryptionKeyHolderComponent : Component /// [ViewVariables] public string? DefaultChannel; + + // Parkstation-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; + // Parkstation-Ipc-End } diff --git a/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs b/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs index 7b050273db6..2fabe5948e2 100644 --- a/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs +++ b/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs @@ -177,12 +177,27 @@ private void OnHolderExamined(EntityUid uid, EncryptionKeyHolderComponent compon if (!args.IsInDetailsRange) return; + // Parkstation-Ipc-Start + if (!component.ExamineWhileLocked && !component.KeysUnlocked) + return; + + if (!component.ExamineWhileLocked && TryComp(uid, out var panel) && !panel.Open) + return; + // Parkstation-Ipc-End + if (component.KeyContainer.ContainedEntities.Count == 0) { args.PushMarkup(Loc.GetString("encryption-keys-no-keys")); return; } + // хз чо эт, вроде не нужно + // if (component.Channels.Count > 0) + // { + // args.PushMarkup(Loc.GetString("examine-encryption-channels-prefix")); + // AddChannelsExamine(component.Channels, component.DefaultChannel, args, _protoManager, "examine-encryption-channel"); + // } + if (component.Channels.Count > 0) { using (args.PushGroup(nameof(EncryptionKeyComponent))) diff --git a/Content.Shared/Sound/Components/SpamEmitSoundComponent.cs b/Content.Shared/Sound/Components/SpamEmitSoundComponent.cs index 149728a5baa..861c5f95a23 100644 --- a/Content.Shared/Sound/Components/SpamEmitSoundComponent.cs +++ b/Content.Shared/Sound/Components/SpamEmitSoundComponent.cs @@ -39,6 +39,6 @@ public sealed partial class SpamEmitSoundComponent : BaseEmitSoundComponent /// Do not set this directly, use /// [DataField, AutoNetworkedField] - [Access(typeof(SharedEmitSoundSystem))] + // [Access(typeof(SharedEmitSoundSystem))] ADT: IPC (невозможно указать требуемый доступ) public bool Enabled = true; } diff --git a/Resources/Audio/ADT/IPC/attributions.yml b/Resources/Audio/ADT/IPC/attributions.yml new file mode 100644 index 00000000000..dffa3b941ac --- /dev/null +++ b/Resources/Audio/ADT/IPC/attributions.yml @@ -0,0 +1,4 @@ +- files: ["borg_deathsound.ogg", "buzz-sigh.ogg", "buzz-two.ogg", "ping.ogg", "signal.ogg", "synth_no.ogg", "synth_yes.ogg"] + license: "CC0-1.0" + copyright: "Original sound by https://github.com/ss220-space/Paradise" + source: "https://github.com/ss220-space/Paradise" diff --git a/Resources/Audio/ADT/IPC/borg_deathsound.ogg b/Resources/Audio/ADT/IPC/borg_deathsound.ogg new file mode 100644 index 00000000000..06e847165ff Binary files /dev/null and b/Resources/Audio/ADT/IPC/borg_deathsound.ogg differ diff --git a/Resources/Audio/ADT/IPC/buzz-sigh.ogg b/Resources/Audio/ADT/IPC/buzz-sigh.ogg new file mode 100644 index 00000000000..109c196e2c4 Binary files /dev/null and b/Resources/Audio/ADT/IPC/buzz-sigh.ogg differ diff --git a/Resources/Audio/ADT/IPC/buzz-two.ogg b/Resources/Audio/ADT/IPC/buzz-two.ogg new file mode 100644 index 00000000000..3f79e2a0e91 Binary files /dev/null and b/Resources/Audio/ADT/IPC/buzz-two.ogg differ diff --git a/Resources/Audio/ADT/IPC/hyperspace_begin_new.ogg b/Resources/Audio/ADT/IPC/hyperspace_begin_new.ogg new file mode 100644 index 00000000000..ee4e93846cf Binary files /dev/null and b/Resources/Audio/ADT/IPC/hyperspace_begin_new.ogg differ diff --git a/Resources/Audio/ADT/IPC/ping.ogg b/Resources/Audio/ADT/IPC/ping.ogg new file mode 100644 index 00000000000..3516d48d259 Binary files /dev/null and b/Resources/Audio/ADT/IPC/ping.ogg differ diff --git a/Resources/Audio/ADT/IPC/signal.ogg b/Resources/Audio/ADT/IPC/signal.ogg new file mode 100644 index 00000000000..824e1adb94c Binary files /dev/null and b/Resources/Audio/ADT/IPC/signal.ogg differ diff --git a/Resources/Audio/ADT/IPC/synth_no.ogg b/Resources/Audio/ADT/IPC/synth_no.ogg new file mode 100644 index 00000000000..f0d2c3bfb0c Binary files /dev/null and b/Resources/Audio/ADT/IPC/synth_no.ogg differ diff --git a/Resources/Audio/ADT/IPC/synth_scream.ogg b/Resources/Audio/ADT/IPC/synth_scream.ogg new file mode 100644 index 00000000000..78787d3db90 Binary files /dev/null and b/Resources/Audio/ADT/IPC/synth_scream.ogg differ diff --git a/Resources/Audio/ADT/IPC/synth_yes.ogg b/Resources/Audio/ADT/IPC/synth_yes.ogg new file mode 100644 index 00000000000..300cad132ed Binary files /dev/null and b/Resources/Audio/ADT/IPC/synth_yes.ogg differ diff --git a/Resources/Audio/ADT/Moth/attributions.yml b/Resources/Audio/ADT/Moth/attributions.yml new file mode 100644 index 00000000000..9c7727aa51c --- /dev/null +++ b/Resources/Audio/ADT/Moth/attributions.yml @@ -0,0 +1,9 @@ +- files: ["moth_scream.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Taken from https://github.com/tgstation/tgstation/commit/31c19654e0f641166ecd80c672ea05362fd19488" + source: "https://github.com/tgstation/tgstation/commits/master/sound/voice/moth/scream_moth.ogg" + +- files: ["moth_laugh.ogg, moth_chitter.ogg, moth_squeak.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Taken from https://github.com/BeeStation/BeeStation-Hornet/commit/11ba3fa04105c93dd96a63ad4afaef4b20c02d0d" + source: "https://github.com/BeeStation/BeeStation-Hornet/blob/11ba3fa04105c93dd96a63ad4afaef4b20c02d0d/sound/emotes/" \ No newline at end of file diff --git a/Resources/Audio/ADT/Moth/moth_buzz.ogg b/Resources/Audio/ADT/Moth/moth_buzz.ogg new file mode 100644 index 00000000000..5b77d98e565 Binary files /dev/null and b/Resources/Audio/ADT/Moth/moth_buzz.ogg differ diff --git a/Resources/Audio/ADT/Moth/moth_chitter.ogg b/Resources/Audio/ADT/Moth/moth_chitter.ogg new file mode 100644 index 00000000000..b7240a56536 Binary files /dev/null and b/Resources/Audio/ADT/Moth/moth_chitter.ogg differ diff --git a/Resources/Audio/ADT/Moth/moth_laugh.ogg b/Resources/Audio/ADT/Moth/moth_laugh.ogg new file mode 100644 index 00000000000..d3c2865ab64 Binary files /dev/null and b/Resources/Audio/ADT/Moth/moth_laugh.ogg differ diff --git a/Resources/Audio/ADT/Moth/moth_screm.ogg b/Resources/Audio/ADT/Moth/moth_screm.ogg new file mode 100644 index 00000000000..482086fb630 Binary files /dev/null and b/Resources/Audio/ADT/Moth/moth_screm.ogg differ diff --git a/Resources/Audio/ADT/Moth/moth_squeak.ogg b/Resources/Audio/ADT/Moth/moth_squeak.ogg new file mode 100644 index 00000000000..5b77d98e565 Binary files /dev/null and b/Resources/Audio/ADT/Moth/moth_squeak.ogg differ diff --git a/Resources/Locale/en-US/ADT/Entities/Mobs/Customization/ipcAntenna.ftl b/Resources/Locale/en-US/ADT/Entities/Mobs/Customization/ipcAntenna.ftl new file mode 100644 index 00000000000..ec3efd9f553 --- /dev/null +++ b/Resources/Locale/en-US/ADT/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/ADT/Entities/Mobs/Customization/ipcScreens.ftl b/Resources/Locale/en-US/ADT/Entities/Mobs/Customization/ipcScreens.ftl new file mode 100644 index 00000000000..3f53f2d3f93 --- /dev/null +++ b/Resources/Locale/en-US/ADT/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/ADT/traits/disabilities.ftl b/Resources/Locale/en-US/ADT/traits/disabilities.ftl new file mode 100644 index 00000000000..92289cb406e --- /dev/null +++ b/Resources/Locale/en-US/ADT/traits/disabilities.ftl @@ -0,0 +1,2 @@ +trait-hemophilia-name = Hemophilia +trait-hemophilia-desc = Your blood is clotting extremely badly. diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/mobs/player/moth.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/mobs/player/moth.ftl index 21ab09dd517..ecff67f7422 100644 --- a/Resources/Locale/en-US/ss14-ru/prototypes/entities/mobs/player/moth.ftl +++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/mobs/player/moth.ftl @@ -1,2 +1,2 @@ -ent-MobMoth = Urist McFluff - .desc = { ent-BaseMobMoth.desc } +#ent-MobMoth = Urist McFluff +# .desc = { ent-BaseMobMoth.desc } diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/mobs/species/moth.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/mobs/species/moth.ftl index 835d8a2aea3..174979f062f 100644 --- a/Resources/Locale/en-US/ss14-ru/prototypes/entities/mobs/species/moth.ftl +++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/mobs/species/moth.ftl @@ -1,4 +1,4 @@ -ent-BaseMobMoth = Urist McFluff - .desc = { ent-BaseMobSpeciesOrganic.desc } -ent-MobMothDummy = { ent-BaseSpeciesDummy } - .desc = { ent-BaseSpeciesDummy.desc } +#ent-BaseMobMoth = Urist McFluff +# .desc = { ent-BaseMobSpeciesOrganic.desc } +#ent-MobMothDummy = { ent-BaseSpeciesDummy } +# .desc = { ent-BaseSpeciesDummy.desc } diff --git a/Resources/Locale/ru-RU/ADT/Body/Organs/ipc.ftl b/Resources/Locale/ru-RU/ADT/Body/Organs/ipc.ftl new file mode 100644 index 00000000000..555bd803654 --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/Body/Organs/ipc.ftl @@ -0,0 +1,9 @@ +ent-OrganIPCBrain = позитронный мозг КПБ + .desc = Источник такого же количества противоречий и споров, как и существование души. +ent-OrganIPCEyes = модуль зрения КПБ + .desc = 11010000 10101111 100000 11010001 10000010 11010000 10110101 11010000 10110001 11010001 10001111 100000 11010000 10110010 11010000 10111000 11010000 10110110 11010001 10000011 100001 +ent-OrganIPCTongue = модуль речи КПБ + .desc = Модуль КПБ, используемый для их общения. +ent-OrganIPCPump = микронасос КПБ + .desc = Микронасос КПБ, используемый для циркуляции охлаждающей жидкости. +ent-OrganIPCEarts = звуковые рецепторы КПБ diff --git a/Resources/Locale/ru-RU/ADT/Body/Parts/ipc.ftl b/Resources/Locale/ru-RU/ADT/Body/Parts/ipc.ftl new file mode 100644 index 00000000000..a117a4f7697 --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/Body/Parts/ipc.ftl @@ -0,0 +1,10 @@ +ent-HeadIPC = голова КПБ +ent-TorsoIPC = тело КПБ +ent-LeftArmIPC = левая рука КПБ +ent-RightArmIPC = правая рука КПБ +ent-LeftHandIPC = левая кисть КПБ +ent-RightHandIPC = правая кисть КПБ +ent-LeftLegIPC = левая нога КПБ +ent-RightLegIPC = правая нога КПБ +ent-LeftFootIPC = левая ступня КПБ +ent-RightFootIPC = правая ступня КПБ diff --git a/Resources/Locale/ru-RU/ADT/Chat/emotes.ftl b/Resources/Locale/ru-RU/ADT/Chat/emotes.ftl new file mode 100644 index 00000000000..be548184067 --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/Chat/emotes.ftl @@ -0,0 +1,4 @@ +# IPC +chat-emote-name-synth-yes = утвердительно пискнуть +chat-emote-name-synth-no = отрицательно пискнуть +chat-emote-name-sigh-buzz = раздражённо жужжать diff --git a/Resources/Locale/ru-RU/ADT/Entities/Mobs/Customization/Markings/ipc.yml b/Resources/Locale/ru-RU/ADT/Entities/Mobs/Customization/Markings/ipc.yml new file mode 100644 index 00000000000..02c29e712d4 --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/Entities/Mobs/Customization/Markings/ipc.yml @@ -0,0 +1,50 @@ +marking-ScreenStatic = Белый шум +marking-ScreenBlue = Синий +marking-ScreenBreakout = Понг +marking-ScreenEight = Восьмёрка +marking-ScreenGoggles = Защитные очки +marking-ScreenExclaim = Восклицательный знак +marking-ScreenHeart = Сердце +marking-ScreenMonoeye = Циклом +marking-ScreenNature = Натуралист +marking-ScreenOrange = Оранжевый +marking-ScreenPink = Розовый +marking-ScreenQuestion = Вопрос +marking-ScreenShower = Душ +marking-ScreenYellow = Жёлтый +marking-ScreenScroll = Прокрутка +marking-ScreenConsole = Консоль +marking-ScreenRgb = RGB +marking-ScreenGlider = Параплан +marking-ScreenRainbowhoriz = Горизонтальная радуга +marking-ScreenBsod = BSOD +marking-ScreenRedtext = Красный текст +marking-ScreenSinewave = Синусоида +marking-ScreenSquarewave = Квадратная волна +marking-ScreenEcgwave = Кардиограмма +marking-ScreenEyes = Глаза +marking-ScreenEyestall = Высокие глаза +marking-ScreenEyesangry = Злые глаза +marking-ScreenLoading = Загрузка... +marking-ScreenWindowsxp = Многолетний опыт +marking-ScreenTetris = Тетрис +marking-ScreenTv = ТВ +marking-ScreenTextdrop = Текст +marking-ScreenStars = Звёзды +marking-ScreenRainbowdiag = Диоганальная радуга +marking-ScreenBlank = Мёртвый пиксель +marking-ScreenSmile = Улыбка +marking-ScreenFrown = Грусть +marking-ScreenRing = Кольцо +marking-ScreenL = L + +marking-RobotAntennaTv = ТВ +marking-RobotAntennaTesla = Тесла +marking-RobotAntennaLightb = Мигалка (альт.) +marking-RobotAntennaLight = Мигалка +marking-RobotAntennaCyberhead = Кибер +marking-RobotAntennaSidelights = Боковые мигалки +marking-RobotAntennaAntlers = Рога +marking-RobotAntennaDroneeyes = Глаза дрона +marking-RobotAntennaCrowned = Корона +marking-RobotAntennaTowers = Башни diff --git a/Resources/Locale/ru-RU/ADT/Entities/Mobs/Player/ipc.ftl b/Resources/Locale/ru-RU/ADT/Entities/Mobs/Player/ipc.ftl new file mode 100644 index 00000000000..1cd41f8aa3c --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/Entities/Mobs/Player/ipc.ftl @@ -0,0 +1,6 @@ +ent-MobIPC = Урист МакПозитроник + +ent-MobIPCDummy = Урист МакПозитроник + .desc = Манекен позитронного мозга в металлическом теле. + +ipc-board-name = системный блок КПБ diff --git a/Resources/Locale/ru-RU/ADT/Entities/Objects/Misc/identification_cards.ftl b/Resources/Locale/ru-RU/ADT/Entities/Objects/Misc/identification_cards.ftl index 9c149ba9471..4f4bf7cf876 100644 --- a/Resources/Locale/ru-RU/ADT/Entities/Objects/Misc/identification_cards.ftl +++ b/Resources/Locale/ru-RU/ADT/Entities/Objects/Misc/identification_cards.ftl @@ -1,2 +1,5 @@ ent-ADTPathologistIDCard = ID карта патологоанатома - .desc = { ent-IDCardStandard.desc } \ No newline at end of file + .desc = { ent-IDCardStandard.desc } + +ent-ADTRoboticistIDCard = ID карта робототехника + .desc = { ent-IDCardStandard.desc } diff --git a/Resources/Locale/ru-RU/ADT/Entities/Structures/Machines/silicon_chargers.ftl b/Resources/Locale/ru-RU/ADT/Entities/Structures/Machines/silicon_chargers.ftl new file mode 100644 index 00000000000..85b0bb7deb0 --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/Entities/Structures/Machines/silicon_chargers.ftl @@ -0,0 +1,7 @@ +ent-SiliconChargerIndustrial = промышленное зарядное устройство + .desc = Мощная машина для зарядки синнтетиков. Подходит для зарядки КПБ и боргов. Она очень сильно нагревается! + +ent-IndustrialChargerCircuitboard = плата промышленного зарядного устройства + .desc = Машинная печатная плата для промышленного зарядного устройства + +research-technology-ind-charger = Технология зарядки продвинутых синтетиков. diff --git a/Resources/Locale/ru-RU/ADT/Interaction/interaction-popup-component-ipc.ftl b/Resources/Locale/ru-RU/ADT/Interaction/interaction-popup-component-ipc.ftl new file mode 100644 index 00000000000..48986fea2b8 --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/Interaction/interaction-popup-component-ipc.ftl @@ -0,0 +1 @@ +petting-success-ipc = Вы гладите { $target } по его металлической голове. diff --git a/Resources/Locale/ru-RU/ADT/Job/job-description.ftl b/Resources/Locale/ru-RU/ADT/Job/job-description.ftl index 7b705bba266..28828431bbe 100644 --- a/Resources/Locale/ru-RU/ADT/Job/job-description.ftl +++ b/Resources/Locale/ru-RU/ADT/Job/job-description.ftl @@ -1 +1,3 @@ -job-description-ADTPathologist = Осматривайте тела мёртвого экипажа, выявляйте причины их смерти и не забывайте клонировать трупы. \ No newline at end of file +job-description-ADTPathologist = Осматривайте тела мёртвого экипажа, выявляйте причины их смерти и не забывайте клонировать трупы. + +job-description-roboticist = Собирайте боргов, мехов, обслуживайте синтетиков и поражайте (либо пугайте) экипаж своими новейшими разработками. diff --git a/Resources/Locale/ru-RU/ADT/Job/job-names.ftl b/Resources/Locale/ru-RU/ADT/Job/job-names.ftl index d829ac1f4cd..74e8f228d70 100644 --- a/Resources/Locale/ru-RU/ADT/Job/job-names.ftl +++ b/Resources/Locale/ru-RU/ADT/Job/job-names.ftl @@ -1,2 +1,5 @@ job-name-ADTPathologist = Патологоанатом -JobADTPathologist = Патологоанатом \ No newline at end of file +JobADTPathologist = Патологоанатом + +job-name-roboticist = робототехник +JobRoboticist = робототехник diff --git a/Resources/Locale/ru-RU/ADT/Preferences/loadout-groups.ftl b/Resources/Locale/ru-RU/ADT/Preferences/loadout-groups.ftl index 3829b95bf22..79214fbfd1b 100644 --- a/Resources/Locale/ru-RU/ADT/Preferences/loadout-groups.ftl +++ b/Resources/Locale/ru-RU/ADT/Preferences/loadout-groups.ftl @@ -1,8 +1,26 @@ +# Errors + +# Miscellaneous + +# Command ent-MagistratNeck = Галстуки ent-MagistratJumpsuit = Костюмы +# Civilian + +# Cargo + +# Engineering + +# Science +loadout-group-roboticist-jumpsuit = Робототехник, комбинезон +loadout-group-roboticist-outerclothing = Робототехник, верхняя одежда +loadout-group-roboticist-gloves = Робототехник, перчатки +# Security + +# Medical loadout-group-patholog-head = Патологоанатом, голова loadout-group-patholog-jumpsuit = Патологоанатом, комбинезон loadout-group-patholog-outerclothing = Патологоанатом, верхняя одежда loadout-group-patholog-shoes = Патологоанатом, обувь loadout-group-patholog-backpack = Патологоанатом, рюкзак - +# Wildcards diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Body/Parts/moth.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Body/Parts/moth.ftl new file mode 100644 index 00000000000..a7c4b197eee --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/prototypes/Body/Parts/moth.ftl @@ -0,0 +1,22 @@ +ent-PartMoth = часть тела нианы + .desc = { ent-BasePart.desc } +ent-TorsoMoth = торс нианы + .desc = { ent-PartMoth.desc } +ent-HeadMoth = голова нианы + .desc = { ent-PartMoth.desc } +ent-LeftArmMoth = левая рука нианы + .desc = { ent-PartMoth.desc } +ent-RightArmMoth = правая рука нианы + .desc = { ent-PartMoth.desc } +ent-LeftHandMoth = левая кисть нианы + .desc = { ent-PartMoth.desc } +ent-RightHandMoth = правая кисть нианы + .desc = { ent-PartMoth.desc } +ent-LeftLegMoth = левая нога нианы + .desc = { ent-PartMoth.desc } +ent-RightLegMoth = правая нога нианы + .desc = { ent-PartMoth.desc } +ent-LeftFootMoth = левая стопа нианы + .desc = { ent-PartMoth.desc } +ent-RightFootMoth = правая стопа нианы + .desc = { ent-PartMoth.desc } diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Markers/Spawners/jobs.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Markers/Spawners/jobs.ftl index 69090db7208..331c8aebb87 100644 --- a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Markers/Spawners/jobs.ftl +++ b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Markers/Spawners/jobs.ftl @@ -1 +1,5 @@ ent-SpawnPointMagistrat = Точка спавна магистрата + .desc = { ent-SpawnPointJobBase.desc } + +ent-ADTSpawnPointRoboticist = робототехник + .desc = { ent-SpawnPointJobBase.desc } diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Customization/Moth/moth.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Customization/Moth/moth.ftl new file mode 100644 index 00000000000..c5812f4a955 --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Customization/Moth/moth.ftl @@ -0,0 +1,118 @@ +marking-MothAntennasDefault = Антенны (Обычные) +marking-MothAntennasCharred = Антенны (Обугленные) +marking-MothAntennasDbushy = Антенны (Кустистые) +marking-MothAntennasDcurvy = Антенны (Закрученные) +marking-MothAntennasDfan = Антенны (Вентилятор) +marking-MothAntennasDpointy = Антенны (Заостренные) +marking-MothAntennasFeathery = Антенны (Перистые) +marking-MothAntennasFirewatch = Антенны (Файрвотч) +marking-MothAntennasGray = Антенны (Серые) +marking-MothAntennasJungle = Антенны (Джунгли) +marking-MothAntennasMaple = Антенны (Клён) +marking-MothAntennasMoffra = Антенны (Мотра) +marking-MothAntennasOakworm = Антенны (Дубовый червь) +marking-MothAntennasPlasmafire = Антенны (Пожар плазмы) +marking-MothAntennasRoyal = Антенны (Королевские) +marking-MothAntennasStriped = Антенны (Полосатые) +marking-MothAntennasWhitefly = Антенны (Белая муха) +marking-MothAntennasWitchwing = Антенны (Ведьмино крыло) +marking-MothWingsDefault = Крылья (Обычные) +marking-MothWingsCharred = Крылья (Обугленные) +marking-MothWingsDbushy = Крылья (Тёмные и Кустистые) +marking-MothWingsDeathhead = Крылья (Рука Смерти) +marking-MothWingsFan = Крылья (Вентилятор) +marking-MothWingsDfan = Крылья (Тёмные и Вентилятор) +marking-MothWingsFeathery = Крылья (Перистые) +marking-MothWingsFirewatch = Крылья (Файрвотч) +marking-MothWingsGothic = Крылья (Готика) +marking-MothWingsJungle = Крылья (Джунгли) +marking-MothWingsLadybug = Крылья (Божья коровка) +marking-MothWingsMaple = Крылья (Клён) +marking-MothWingsMoffra = Крылья (Мотра) +marking-MothWingsOakworm = Крылья (Дубовый червь) +marking-MothWingsPlasmafire = Крылья (Пожар плазмы) +marking-MothWingsPointy = Крылья (Заостренные) +marking-MothWingsRoyal = Крылья (Королевские) +marking-MothWingsStellar = Крылья (Звёздные) +marking-MothWingsStriped = Крылья (Полосатые) +marking-MothWingsSwirly = Крылья (Завихрение) +marking-MothWingsWhitefly = Крылья (Белая муха) +marking-MothWingsWitchwing = Крылья (Ведьмино крыло) +marking-MothChestCharred = Ниан, Грудь (Обугленные) +marking-MothHeadCharred = Ниан, Голова (Обугленные) +marking-MothLLegCharred = Ниан, Левая нога (Обугленные) +marking-MothRLegCharred = Ниан, Правая нога (Обугленные) +marking-MothLArmCharred = Ниан, Левая рука (Обугленные) +marking-MothRArmCharred = Ниан, Правая рука (Обугленные) +marking-MothChestDeathhead = Ниан, Грудь (Рука Смерти) +marking-MothHeadDeathhead = Ниан, Голова (Рука Смерти) +marking-MothLLegDeathhead = Ниан, Левая нога (Рука Смерти) +marking-MothRLegDeathhead = Ниан, Правая нога (Рука Смерти) +marking-MothLArmDeathhead = Ниан, Левая рука (Рука Смерти) +marking-MothRArmDeathhead = Ниан, Правая рука (Рука Смерти) +marking-MothChestFan = Ниан, Грудь (Вентилятор) +marking-MothHeadFan = Ниан, Голова (Вентилятор) +marking-MothLLegFan = Ниан, Левая нога (Вентилятор) +marking-MothRLegFan = Ниан, Правая нога (Вентилятор) +marking-MothLArmFan = Ниан, Левая рука (Вентилятор) +marking-MothRArmFan = Ниан, Правая рука (Вентилятор) +marking-MothChestFirewatch = Ниан, Грудь (Файрвотч) +marking-MothHeadFirewatch = Ниан, Голова (Файрвотч) +marking-MothLLegFirewatch = Ниан, Левая нога (Файрвотч) +marking-MothRLegFirewatch = Ниан, Правая нога (Файрвотч) +marking-MothLArmFirewatch = Ниан, Левая рука (Файрвотч) +marking-MothRArmFirewatch = Ниан, Правая рука (Файрвотч) +marking-MothChestGothic = Ниан, Грудь (Готика) +marking-MothHeadGothic = Ниан, Голова (Готика) +marking-MothLLegGothic = Ниан, Левая нога (Готика) +marking-MothRLegGothic = Ниан, Правая нога (Готика) +marking-MothLArmGothic = Ниан, Левая рука (Готика) +marking-MothRArmGothic = Ниан, Правая рука (Готика) +marking-MothChestJungle = Ниан, Грудь (Джунгли) +marking-MothHeadJungle = Ниан, Голова (Джунгли) +marking-MothLLegJungle = Ниан, Левая нога (Джунгли) +marking-MothRLegJungle = Ниан, Правая нога (Джунгли) +marking-MothLArmJungle = Ниан, Левая рука (Джунгли) +marking-MothRArmJungle = Ниан, Правая рука (Джунгли) +marking-MothChestMoonfly = Ниан, Грудь (Мунфлай) +marking-MothHeadMoonfly = Ниан, Голова (Мунфлай) +marking-MothLLegMoonfly = Ниан, Левая нога (Мунфлай) +marking-MothRLegMoonfly = Ниан, Правая нога (Мунфлай) +marking-MothLArmMoonfly = Ниан, Левая рука (Мунфлай) +marking-MothRArmMoonfly = Ниан, Правая рука (Мунфлай) +marking-MothChestOakworm = Ниан, Грудь (Дубовый червь) +marking-MothHeadOakworm = Ниан, Голова (Дубовый червь) +marking-MothLLegOakworm = Ниан, Левая нога (Дубовый червь) +marking-MothRLegOakworm = Ниан, Правая нога (Дубовый червь) +marking-MothLArmOakworm = Ниан, Левая рука (Дубовый червь) +marking-MothRArmOakworm = Ниан, Правая рука (Дубовый червь) +marking-MothChestPointy = Ниан, Грудь (Заостренные) +marking-MothHeadPointy = Ниан, Голова (Заостренные) +marking-MothLLegPointy = Ниан, Левая нога (Заостренные) +marking-MothRLegPointy = Ниан, Правая нога (Заостренные) +marking-MothLArmPointy = Ниан, Левая рука (Заостренные) +marking-MothRArmPointy = Ниан, Правая рука (Заостренные) +marking-MothChestRagged = Ниан, Грудь (Потрёпанные) +marking-MothHeadRagged = Ниан, Голова (Потрёпанные) +marking-MothLLegRagged = Ниан, Левая нога (Потрёпанные) +marking-MothRLegRagged = Ниан, Правая нога (Потрёпанные) +marking-MothLArmRagged = Ниан, Левая рука (Потрёпанные) +marking-MothRArmRagged = Ниан, Правая рука (Потрёпанные) +marking-MothChestRoyal = Ниан, Грудь (Королевские) +marking-MothHeadRoyal = Ниан, Голова (Королевские) +marking-MothLLegRoyal = Ниан, Левая нога (Королевские) +marking-MothRLegRoyal = Ниан, Правая нога (Королевские) +marking-MothLArmRoyal = Ниан, Левая рука (Королевские) +marking-MothRArmRoyal = Ниан, Правая рука (Королевские) +marking-MothChestWhitefly = Ниан, Грудь (Белая муха) +marking-MothHeadWhitefly = Ниан, Голова (Белая муха) +marking-MothLLegWhitefly = Ниан, Левая нога (Белая муха) +marking-MothRLegWhitefly = Ниан, Правая нога (Белая муха) +marking-MothLArmWhitefly = Ниан, Левая рука (Белая муха) +marking-MothRArmWhitefly = Ниан, Правая рука (Белая муха) +marking-MothChestWitchwing = Ниан, Грудь (Ведьмино крыло) +marking-MothHeadWitchwing = Ниан, Голова (Ведьмино крыло) +marking-MothLLegWitchwing = Ниан, Левая нога (Ведьмино крыло) +marking-MothRLegWitchwing = Ниан, Правая нога (Ведьмино крыло) +marking-MothLArmWitchwing = Ниан, Левая рука (Ведьмино крыло) +marking-MothRArmWitchwing = Ниан, Правая рука (Ведьмино крыло) diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Species/moth.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Species/moth.ftl new file mode 100644 index 00000000000..8287a7c9fa3 --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Species/moth.ftl @@ -0,0 +1,5 @@ +ent-BaseMobMoth = Урист МакНиан + .desc = { ent-BaseMobSpeciesOrganic.desc } + .suffix = Ниан +ent-MobMothDummy = { ent-BaseMobMoth } + .desc = { ent-BaseMobMoth.desc } diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Device/pda.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Device/pda.ftl index 1167841880c..8e9a814064f 100644 --- a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Device/pda.ftl +++ b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Device/pda.ftl @@ -1,5 +1,8 @@ ent-MagistratPDA = КПК Магистрата .desc = В заметках данного КПК можно найти компромат на каждого из глав. + ent-ADTPathologistPDA = КПК патологоанатома .desc = От него веет прохладой. +ent-ADTRoboticistPDA = КПК робототехника + .desc = Почему это всё ещё не робот?! diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Species/ipc.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Species/ipc.ftl new file mode 100644 index 00000000000..df5ed76b23c --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/prototypes/Species/ipc.ftl @@ -0,0 +1 @@ +species-name-ipc = КПБ diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Species/moth.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Species/moth.ftl new file mode 100644 index 00000000000..bac5483c43e --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/prototypes/Species/moth.ftl @@ -0,0 +1 @@ +species-name-moth = Ниан diff --git a/Resources/Locale/ru-RU/ADT/traits/disabilities.ftl b/Resources/Locale/ru-RU/ADT/traits/disabilities.ftl new file mode 100644 index 00000000000..79eeed1909c --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/traits/disabilities.ftl @@ -0,0 +1,5 @@ +trait-hemophilia-name = Гемофилия +trait-hemophilia-desc = Ваша кровь сворачивается крайне плохо. + +trait-monochromacy-name = Цветовая слепота +trait-monochromacy-description = Ваши глаза получили необратимые повреждения, из-за чего вы видите только в оттенках серого. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/markings/moth.ftl b/Resources/Locale/ru-RU/markings/moth.ftl index a2012d22a40..b146c8acf7d 100644 --- a/Resources/Locale/ru-RU/markings/moth.ftl +++ b/Resources/Locale/ru-RU/markings/moth.ftl @@ -1,248 +1,247 @@ -marking-MothAntennasDefault-default = Антенна -marking-MothAntennasDefault = Антенны (Обычные) -marking-MothAntennasCharred-charred = Антенна -marking-MothAntennasCharred = Антенны (Обугленные) -marking-MothAntennasDbushy-dbushy = Антенна -marking-MothAntennasDbushy = Антенны (Кустистые) -marking-MothAntennasDcurvy-dcurvy = Антенна -marking-MothAntennasDcurvy = Антенны (Закрученные) -marking-MothAntennasDfan-dfan = Антенна -marking-MothAntennasDfan = Антенны (Вентилятор) -marking-MothAntennasDpointy-dpointy = Антенна -marking-MothAntennasDpointy = Антенны (Заострённые) -marking-MothAntennasFeathery-feathery = Антенна -marking-MothAntennasFeathery = Антенны (Перистые) -marking-MothAntennasFirewatch-firewatch = Антенна -marking-MothAntennasFirewatch = Антенны (Файрвотч) -marking-MothAntennasGray-gray = Антенна -marking-MothAntennasGray = Антенны (Серые) -marking-MothAntennasJungle-jungle = Антенна -marking-MothAntennasJungle = Антенны (Джунгли) -marking-MothAntennasMaple-maple = Антенна -marking-MothAntennasMaple = Антенны (Клён) -marking-MothAntennasMoffra-moffra = Антенна -marking-MothAntennasMoffra = Антенны (Мотра) -marking-MothAntennasOakworm-oakworm = Антенна -marking-MothAntennasOakworm = Антенны (Дубовый червь) -marking-MothAntennasPlasmafire-plasmafire = Антенна -marking-MothAntennasPlasmafire = Антенны (Пожар плазмы) -marking-MothAntennasRoyal-royal = Антенна -marking-MothAntennasRoyal = Антенны (Королевские) -marking-MothAntennasStriped-striped = Антенна -marking-MothAntennasStriped = Антенны (Полосатые) -marking-MothAntennasWhitefly-whitefly = Антенна -marking-MothAntennasWhitefly = Антенны (Белая муха) -marking-MothAntennasWitchwing-witchwing = Антенна -marking-MothAntennasWitchwing = Антенны (Ведьмино крыло) -marking-MothAntennasUnderwing-underwing_primary = Основной -marking-MothAntennasUnderwing-underwing_secondary = Вторичный -marking-MothAntennasUnderwing = Антенны (Подкрылье) -marking-MothWingsDefault-default = Крыло -marking-MothWingsDefault = Крылья (Обычные) -marking-MothWingsCharred-charred = Крыло -marking-MothWingsCharred = Крылья (Обугленные) -marking-MothWingsDbushy-dbushy_primary = Основной -marking-MothWingsDbushy-dbushy_secondary = Вторичный -marking-MothWingsDbushy = Крылья (Тёмные и Кустистые) -marking-MothWingsDeathhead-deathhead_primary = Основной -marking-MothWingsDeathhead-deathhead_secondary = Вторичный -marking-MothWingsDeathhead = Крылья (Рука Смерти) -marking-MothWingsFan-fan = Крыло -marking-MothWingsFan = Крылья (Вентилятор) -marking-MothWingsDfan-dfan = Крыло -marking-MothWingsDfan = Крылья (Тёмные и Вентилятор) -marking-MothWingsFeathery-feathery = Крыло -marking-MothWingsFeathery = Крылья (Перистые) -marking-MothWingsFirewatch-firewatch_primary = Основной -marking-MothWingsFirewatch-firewatch_secondary = Вторичный -marking-MothWingsFirewatch = Крылья (Файрвотч) -marking-MothWingsGothic-gothic = Крыло -marking-MothWingsGothic = Крылья (Готика) -marking-MothWingsJungle-jungle = Крыло -marking-MothWingsJungle = Крылья (Джунгли) -marking-MothWingsLadybug-ladybug = Крыло -marking-MothWingsLadybug = Крылья (Божья коровка) -marking-MothWingsMaple-maple = Крыло -marking-MothWingsMaple = Крылья (Клён) -marking-MothWingsMoffra-moffra_primary = Основной -marking-MothWingsMoffra-moffra_secondary = Вторичный -marking-MothWingsMoffra = Крылья (Мотра) -marking-MothWingsOakworm-oakworm = Крыло -marking-MothWingsOakworm = Крылья (Дубовый червь) -marking-MothWingsPlasmafire-plasmafire_primary = Основной -marking-MothWingsPlasmafire-plasmafire_secondary = Вторичный -marking-MothWingsPlasmafire = Крылья (Пожар плазмы) -marking-MothWingsPointy-pointy = Крыло -marking-MothWingsPointy = Крылья (Заострённые) -marking-MothWingsRoyal-royal_primary = Основной -marking-MothWingsRoyal-royal_secondary = Вторичный -marking-MothWingsRoyal = Крылья (Королевские) -marking-MothWingsStellar-stellar = Крыло -marking-MothWingsStellar = Крылья (Звёздные) -marking-MothWingsStriped-striped = Крыло -marking-MothWingsStriped = Крылья (Полосатые) -marking-MothWingsSwirly-swirly = Крыло -marking-MothWingsSwirly = Крылья (Завихрение) -marking-MothWingsWhitefly-whitefly = Крыло -marking-MothWingsWhitefly = Крылья (Белая муха) -marking-MothWingsWitchwing-witchwing = Крыло -marking-MothWingsWitchwing = Крылья (Ведьмино крыло) -marking-MothWingsUnderwing-underwing_primary = Основной -marking-MothWingsUnderwing-underwing_secondary = Вторичный -marking-MothWingsUnderwing = Крылья (Подкрылье) -marking-MothChestCharred-charred_chest = Грудь -marking-MothChestCharred = Ниан, Грудь (Обугленные) -marking-MothHeadCharred-charred_head = Голова -marking-MothHeadCharred = Ниан, Голова (Обугленные) -marking-MothLLegCharred-charred_l_leg = Левая Нога -marking-MothLLegCharred = Ниан, Левая нога (Обугленные) -marking-MothRLegCharred-charred_r_leg = Правая Нога -marking-MothRLegCharred = Ниан, Правая нога (Обугленные) -marking-MothLArmCharred-charred_l_arm = Левая Рука -marking-MothLArmCharred = Ниан, Левая рука (Обугленные) -marking-MothRArmCharred-charred_r_arm = Правая Рука -marking-MothRArmCharred = Ниан, Правая рука (Обугленные) -marking-MothChestDeathhead-deathhead_chest = Грудь -marking-MothChestDeathhead = Ниан, Грудь (Рука Смерти) -marking-MothHeadDeathhead-deathhead_head = Голова -marking-MothHeadDeathhead = Ниан, Голова (Рука Смерти) -marking-MothLLegDeathhead-deathhead_l_leg = Левая Нога -marking-MothLLegDeathhead = Ниан, Левая нога (Рука Смерти) -marking-MothRLegDeathhead-deathhead_r_leg = Правая Нога -marking-MothRLegDeathhead = Ниан, Правая нога (Рука Смерти) -marking-MothLArmDeathhead-deathhead_l_arm = Левая Рука -marking-MothLArmDeathhead = Ниан, Левая рука (Рука Смерти) -marking-MothRArmDeathhead-deathhead_r_arm = Правая Рука -marking-MothRArmDeathhead = Ниан, Правая рука (Рука Смерти) -marking-MothChestFan-fan_chest = Грудь -marking-MothChestFan = Ниан, Грудь (Вентилятор) -marking-MothHeadFan-fan_head = Голова -marking-MothHeadFan = Ниан, Голова (Вентилятор) -marking-MothLLegFan-fan_l_leg = Левая Нога -marking-MothLLegFan = Ниан, Левая нога (Вентилятор) -marking-MothRLegFan-fan_r_leg = Правая Нога -marking-MothRLegFan = Ниан, Правая нога (Вентилятор) -marking-MothLArmFan-fan_l_arm = Левая Рука -marking-MothLArmFan = Ниан, Левая рука (Вентилятор) -marking-MothRArmFan-fan_r_arm = Правая Рука -marking-MothRArmFan = Ниан, Правая рука (Вентилятор) -marking-MothChestFirewatch-firewatch_chest = Грудь -marking-MothChestFirewatch = Ниан, Грудь (Файрвотч) -marking-MothHeadFirewatch-firewatch_head = Голова -marking-MothHeadFirewatch = Ниан, Голова (Файрвотч) -marking-MothLLegFirewatch-firewatch_l_leg = Левая Нога -marking-MothLLegFirewatch = Ниан, Левая нога (Файрвотч) -marking-MothRLegFirewatch-firewatch_r_leg = Правая Нога -marking-MothRLegFirewatch = Ниан, Правая нога (Файрвотч) -marking-MothLArmFirewatch-firewatch_l_arm = Левая Рука -marking-MothLArmFirewatch = Ниан, Левая рука (Файрвотч) -marking-MothRArmFirewatch-firewatch_r_arm = Правая Рука -marking-MothRArmFirewatch = Ниан, Правая рука (Файрвотч) -marking-MothChestGothic-gothic_chest = Грудь -marking-MothChestGothic = Ниан, Грудь (Готика) -marking-MothHeadGothic-gothic_head = Голова -marking-MothHeadGothic = Ниан, Голова (Готика) -marking-MothLLegGothic-gothic_l_leg = Левая Нога -marking-MothLLegGothic = Ниан, Левая нога (Готика) -marking-MothRLegGothic-gothic_r_leg = Правая Нога -marking-MothRLegGothic = Ниан, Правая нога (Готика) -marking-MothLArmGothic-gothic_l_arm = Левая Рука -marking-MothLArmGothic = Ниан, Левая рука (Готика) -marking-MothRArmGothic-gothic_r_arm = Правая Рука -marking-MothRArmGothic = Ниан, Правая рука (Готика) -marking-MothChestJungle-jungle_chest = Грудь -marking-MothChestJungle = Ниан, Грудь (Джунгли) -marking-MothHeadJungle-jungle_head = Голова -marking-MothHeadJungle = Ниан, Голова (Джунгли) -marking-MothLLegJungle-jungle_l_leg = Левая Нога -marking-MothLLegJungle = Ниан, Левая нога (Джунгли) -marking-MothRLegJungle-jungle_r_leg = Правая Нога -marking-MothRLegJungle = Ниан, Правая нога (Джунгли) -marking-MothLArmJungle-jungle_l_arm = Левая Рука -marking-MothLArmJungle = Ниан, Левая рука (Джунгли) -marking-MothRArmJungle-jungle_r_arm = Правая Рука -marking-MothRArmJungle = Ниан, Правая рука (Джунгли) -marking-MothChestMoonfly-moonfly_chest = Грудь -marking-MothChestMoonfly = Ниан, Грудь (Мунфлай) -marking-MothHeadMoonfly-moonfly_head = Голова -marking-MothHeadMoonfly = Ниан, Голова (Мунфлай) -marking-MothLLegMoonfly-moonfly_l_leg = Левая Нога -marking-MothLLegMoonfly = Ниан, Левая нога (Мунфлай) -marking-MothRLegMoonfly-moonfly_r_leg = Правая Нога -marking-MothRLegMoonfly = Ниан, Правая нога (Мунфлай) -marking-MothLArmMoonfly-moonfly_l_arm = Левая Рука -marking-MothLArmMoonfly = Ниан, Левая рука (Мунфлай) -marking-MothRArmMoonfly-moonfly_r_arm = Правая Рука -marking-MothRArmMoonfly = Ниан, Правая рука (Мунфлай) -marking-MothChestOakworm-oakworm_chest = Грудь -marking-MothChestOakworm = Ниан, Грудь (Дубовый червь) -marking-MothHeadOakworm-oakworm_head = Голова -marking-MothHeadOakworm = Ниан, Голова (Дубовый червь) -marking-MothLLegOakworm-oakworm_l_leg = Левая Нога -marking-MothLLegOakworm = Ниан, Левая нога (Дубовый червь) -marking-MothRLegOakworm-oakworm_r_leg = Правая Нога -marking-MothRLegOakworm = Ниан, Правая нога (Дубовый червь) -marking-MothLArmOakworm-oakworm_l_arm = Левая Рука -marking-MothLArmOakworm = Ниан, Левая рука (Дубовый червь) -marking-MothRArmOakworm-oakworm_r_arm = Правая Рука -marking-MothRArmOakworm = Ниан, Правая рука (Дубовый червь) -marking-MothChestPointy-pointy_chest = Грудь -marking-MothChestPointy = Ниан, Грудь (Заострённые) -marking-MothHeadPointy-pointy_head = Голова -marking-MothHeadPointy = Ниан, Голова (Заострённые) -marking-MothLLegPointy-pointy_l_leg = Левая Нога -marking-MothLLegPointy = Ниан, Левая нога (Заострённые) -marking-MothRLegPointy-pointy_r_leg = Правая Нога -marking-MothRLegPointy = Ниан, Правая нога (Заострённые) -marking-MothLArmPointy-pointy_l_arm = Левая Рука -marking-MothLArmPointy = Ниан, Левая рука (Заострённые) -marking-MothRArmPointy-pointy_r_arm = Правая Рука -marking-MothRArmPointy = Ниан, Правая рука (Заострённые) -marking-MothChestRagged-ragged_chest = Грудь -marking-MothChestRagged = Ниан, Грудь (Потрёпанные) -marking-MothHeadRagged-ragged_head = Голова -marking-MothHeadRagged = Ниан, Голова (Потрёпанные) -marking-MothLLegRagged-ragged_l_leg = Левая Нога -marking-MothLLegRagged = Ниан, Левая нога (Потрёпанные) -marking-MothRLegRagged-ragged_r_leg = Правая Нога -marking-MothRLegRagged = Ниан, Правая нога (Потрёпанные) -marking-MothLArmRagged-ragged_l_arm = Левая Рука -marking-MothLArmRagged = Ниан, Левая рука (Потрёпанные) -marking-MothRArmRagged-ragged_r_arm = Правая Рука -marking-MothRArmRagged = Ниан, Правая рука (Потрёпанные) -marking-MothChestRoyal-royal_chest = Грудь -marking-MothChestRoyal = Ниан, Грудь (Королевские) -marking-MothHeadRoyal-royal_head = Голова -marking-MothHeadRoyal = Ниан, Голова (Королевские) -marking-MothLLegRoyal-royal_l_leg = Левая Нога -marking-MothLLegRoyal = Ниан, Левая нога (Королевские) -marking-MothRLegRoyal-royal_r_leg = Правая Нога -marking-MothRLegRoyal = Ниан, Правая нога (Королевские) -marking-MothLArmRoyal-royal_l_arm = Левая Рука -marking-MothLArmRoyal = Ниан, Левая рука (Королевские) -marking-MothRArmRoyal-royal_r_arm = Правая Рука -marking-MothRArmRoyal = Ниан, Правая рука (Королевские) -marking-MothChestWhitefly-whitefly_chest = Грудь -marking-MothChestWhitefly = Ниан, Грудь (Белая муха) -marking-MothHeadWhitefly-whitefly_head = Голова -marking-MothHeadWhitefly = Ниан, Голова (Белая муха) -marking-MothLLegWhitefly-whitefly_l_leg = Левая Нога -marking-MothLLegWhitefly = Ниан, Левая нога (Белая муха) -marking-MothRLegWhitefly-whitefly_r_leg = Правая Нога -marking-MothRLegWhitefly = Ниан, Правая нога (Белая муха) -marking-MothLArmWhitefly-whitefly_l_arm = Левая Рука -marking-MothLArmWhitefly = Ниан, Левая рука (Белая муха) -marking-MothRArmWhitefly-whitefly_r_arm = Правая Рука -marking-MothRArmWhitefly = Ниан, Правая рука (Белая муха) -marking-MothChestWitchwing-witchwing_chest = Грудь -marking-MothChestWitchwing = Ниан, Грудь (Ведьмино крыло) -marking-MothHeadWitchwing-witchwing_head = Голова -marking-MothHeadWitchwing = Ниан, Голова (Ведьмино крыло) -marking-MothLLegWitchwing-witchwing_l_leg = Левая Нога -marking-MothLLegWitchwing = Ниан, Левая нога (Ведьмино крыло) -marking-MothRLegWitchwing-witchwing_r_leg = Правая Нога -marking-MothRLegWitchwing = Ниан, Правая нога (Ведьмино крыло) -marking-MothLArmWitchwing-witchwing_l_arm = Левая Рука -marking-MothLArmWitchwing = Ниан, Левая рука (Ведьмино крыло) -marking-MothRArmWitchwing-witchwing_r_arm = Правая Рука -marking-MothRArmWitchwing = Ниан, Правая рука (Ведьмино крыло) +#marking-MothAntennasDefault-default = Антенна +#marking-MothAntennasDefault = Антенны (Обычные) +#marking-MothAntennasCharred-charred = Антенна +#marking-MothAntennasCharred = Антенны (Обугленные) +#marking-MothAntennasDbushy-dbushy = Антенна +#marking-MothAntennasDbushy = Антенны (Кустистые) +#marking-MothAntennasDcurvy-dcurvy = Антенна +#marking-MothAntennasDcurvy = Антенны (Закрученные) +#marking-MothAntennasDfan-dfan = Антенна +#marking-MothAntennasDfan = Антенны (Вентилятор) +#marking-MothAntennasDpointy-dpointy = Антенна +#marking-MothAntennasDpointy = Антенны (Заострённые) +#marking-MothAntennasFeathery-feathery = Антенна +#marking-MothAntennasFeathery = Антенны (Перистые) +#marking-MothAntennasFirewatch-firewatch = Антенна +#marking-MothAntennasFirewatch = Антенны (Файрвотч) +#marking-MothAntennasGray-gray = Антенна +#marking-MothAntennasGray = Антенны (Серые) +#marking-MothAntennasJungle-jungle = Антенна +#marking-MothAntennasJungle = Антенны (Джунгли) +#marking-MothAntennasMaple-maple = Антенна +#marking-MothAntennasMaple = Антенны (Клён) +#marking-MothAntennasMoffra-moffra = Антенна +#marking-MothAntennasMoffra = Антенны (Мотра) +#marking-MothAntennasOakworm-oakworm = Антенна +#marking-MothAntennasOakworm = Антенны (Дубовый червь) +#marking-MothAntennasPlasmafire-plasmafire = Антенна +#marking-MothAntennasPlasmafire = Антенны (Пожар плазмы) +#marking-MothAntennasRoyal-royal = Антенна +#marking-MothAntennasRoyal = Антенны (Королевские) +#marking-MothAntennasStriped-striped = Антенна +#marking-MothAntennasStriped = Антенны (Полосатые) +#marking-MothAntennasWhitefly-whitefly = Антенна +#marking-MothAntennasWhitefly = Антенны (Белая муха) +#marking-MothAntennasWitchwing-witchwing = Антенна +#marking-MothAntennasWitchwing = Антенны (Ведьмино крыло) +#marking-MothAntennasUnderwing-underwing_primary = Основной +#marking-MothAntennasUnderwing-underwing_secondary = Вторичный +#marking-MothAntennasUnderwing = Антенны (Подкрылье) +#marking-MothWingsDefault-default = Крыло +#marking-MothWingsDefault = Крылья (Обычные) +#marking-MothWingsCharred-charred = Крыло +#marking-MothWingsCharred = Крылья (Обугленные) +#marking-MothWingsDbushy-dbushy_primary = Основной +#marking-MothWingsDbushy-dbushy_secondary = Вторичный +#marking-MothWingsDbushy = Крылья (Тёмные и Кустистые) +#marking-MothWingsDeathhead-deathhead_primary = Основной +#marking-MothWingsDeathhead-deathhead_secondary = Вторичный +#marking-MothWingsDeathhead = Крылья (Рука Смерти) +#marking-MothWingsFan-fan = Крыло +#marking-MothWingsFan = Крылья (Вентилятор) +#marking-MothWingsDfan-dfan = Крыло +#marking-MothWingsDfan = Крылья (Тёмные и Вентилятор) +#marking-MothWingsFeathery-feathery = Крыло +#marking-MothWingsFeathery = Крылья (Перистые) +#marking-MothWingsFirewatch-firewatch_primary = Основной +#marking-MothWingsFirewatch-firewatch_secondary = Вторичный +#marking-MothWingsFirewatch = Крылья (Файрвотч) +#marking-MothWingsGothic-gothic = Крыло +#marking-MothWingsGothic = Крылья (Готика) +#marking-MothWingsJungle-jungle = Крыло +#marking-MothWingsJungle = Крылья (Джунгли) +#marking-MothWingsLadybug-ladybug = Крыло +#marking-MothWingsLadybug = Крылья (Божья коровка) +#marking-MothWingsMaple-maple = Крыло +#marking-MothWingsMaple = Крылья (Клён) +#marking-MothWingsMoffra-moffra_primary = Основной +#marking-MothWingsMoffra-moffra_secondary = Вторичный +#marking-MothWingsMoffra = Крылья (Мотра) +#marking-MothWingsOakworm-oakworm = Крыло +#marking-MothWingsOakworm = Крылья (Дубовый червь) +#marking-MothWingsPlasmafire-plasmafire_primary = Основной +#marking-MothWingsPlasmafire-plasmafire_secondary = Вторичный +#marking-MothWingsPlasmafire = Крылья (Пожар плазмы) +#marking-MothWingsPointy-pointy = Крыло +#marking-MothWingsPointy = Крылья (Заострённые) +#marking-MothWingsRoyal-royal_primary = Основной +#marking-MothWingsRoyal-royal_secondary = Вторичный +#marking-MothWingsRoyal = Крылья (Королевские) +#marking-MothWingsStellar-stellar = Крыло +#marking-MothWingsStellar = Крылья (Звёздные) +#marking-MothWingsStriped-striped = Крыло +#marking-MothWingsStriped = Крылья (Полосатые) +#marking-MothWingsSwirly-swirly = Крыло +#marking-MothWingsSwirly = Крылья (Завихрение) +#marking-MothWingsWhitefly-whitefly = Крыло +#marking-MothWingsWhitefly = Крылья (Белая муха) +#marking-MothWingsWitchwing-witchwing = Крыло +#marking-MothWingsWitchwing = Крылья (Ведьмино крыло) +#marking-MothWingsUnderwing-underwing_primary = Основной +#marking-MothWingsUnderwing-underwing_secondary = Вторичный +#marking-MothWingsUnderwing = Крылья (Подкрылье) +#marking-MothChestCharred-charred_chest = Грудь +#marking-MothChestCharred = Ниан, Грудь (Обугленные) +#marking-MothHeadCharred-charred_head = Голова +#marking-MothHeadCharred = Ниан, Голова (Обугленные) +#marking-MothLLegCharred-charred_l_leg = Левая Нога +#marking-MothLLegCharred = Ниан, Левая нога (Обугленные) +#marking-MothRLegCharred-charred_r_leg = Правая Нога +#marking-MothRLegCharred = Ниан, Правая нога (Обугленные) +#marking-MothLArmCharred-charred_l_arm = Левая Рука +#marking-MothLArmCharred = Ниан, Левая рука (Обугленные) +#marking-MothRArmCharred-charred_r_arm = Правая Рука +#marking-MothRArmCharred = Ниан, Правая рука (Обугленные) +#marking-MothChestDeathhead-deathhead_chest = Грудь +#marking-MothChestDeathhead = Ниан, Грудь (Рука Смерти) +#marking-MothHeadDeathhead-deathhead_head = Голова +#marking-MothHeadDeathhead = Ниан, Голова (Рука Смерти) +#marking-MothLLegDeathhead-deathhead_l_leg = Левая Нога +#marking-MothLLegDeathhead = Ниан, Левая нога (Рука Смерти) +#marking-MothRLegDeathhead-deathhead_r_leg = Правая Нога +#marking-MothRLegDeathhead = Ниан, Правая нога (Рука Смерти) +#marking-MothLArmDeathhead-deathhead_l_arm = Левая Рука +#marking-MothLArmDeathhead = Ниан, Левая рука (Рука Смерти) +#marking-MothRArmDeathhead-deathhead_r_arm = Правая Рука +#marking-MothRArmDeathhead = Ниан, Правая рука (Рука Смерти) +#marking-MothChestFan-fan_chest = Грудь +#marking-MothChestFan = Ниан, Грудь (Вентилятор) +#marking-MothHeadFan-fan_head = Голова +#marking-MothHeadFan = Ниан, Голова (Вентилятор) +#marking-MothLLegFan-fan_l_leg = Левая Нога +#marking-MothLLegFan = Ниан, Левая нога (Вентилятор) +#marking-MothRLegFan-fan_r_leg = Правая Нога +#marking-MothRLegFan = Ниан, Правая нога (Вентилятор) +#marking-MothLArmFan-fan_l_arm = Левая Рука +#marking-MothLArmFan = Ниан, Левая рука (Вентилятор) +#marking-MothRArmFan-fan_r_arm = Правая Рука +#marking-MothRArmFan = Ниан, Правая рука (Вентилятор) +#marking-MothChestFirewatch-firewatch_chest = Грудь +#marking-MothChestFirewatch = Ниан, Грудь (Файрвотч) +#marking-MothHeadFirewatch-firewatch_head = Голова +#marking-MothHeadFirewatch = Ниан, Голова (Файрвотч) +#marking-MothLLegFirewatch-firewatch_l_leg = Левая Нога +#marking-MothLLegFirewatch = Ниан, Левая нога (Файрвотч) +#marking-MothRLegFirewatch-firewatch_r_leg = Правая Нога +#marking-MothRLegFirewatch = Ниан, Правая нога (Файрвотч) +#marking-MothLArmFirewatch-firewatch_l_arm = Левая Рука +#marking-MothLArmFirewatch = Ниан, Левая рука (Файрвотч) +#marking-MothRArmFirewatch-firewatch_r_arm = Правая Рука +#marking-MothRArmFirewatch = Ниан, Правая рука (Файрвотч) +#marking-MothChestGothic-gothic_chest = Грудь +#marking-MothChestGothic = Ниан, Грудь (Готика) +#marking-MothHeadGothic-gothic_head = Голова +#marking-MothHeadGothic = Ниан, Голова (Готика) +#marking-MothLLegGothic-gothic_l_leg = Левая Нога +#marking-MothLLegGothic = Ниан, Левая нога (Готика) +#marking-MothRLegGothic-gothic_r_leg = Правая Нога +#marking-MothRLegGothic = Ниан, Правая нога (Готика) +#marking-MothLArmGothic-gothic_l_arm = Левая Рука +#marking-MothLArmGothic = Ниан, Левая рука (Готика) +#marking-MothRArmGothic-gothic_r_arm = Правая Рука +#marking-MothRArmGothic = Ниан, Правая рука (Готика) +#marking-MothChestJungle-jungle_chest = Грудь +#marking-MothChestJungle = Ниан, Грудь (Джунгли) +#marking-MothHeadJungle-jungle_head = Голова +#marking-MothHeadJungle = Ниан, Голова (Джунгли) +#marking-MothLLegJungle-jungle_l_leg = Левая Нога +#marking-MothLLegJungle = Ниан, Левая нога (Джунгли) +#marking-MothRLegJungle-jungle_r_leg = Правая Нога +#marking-MothRLegJungle = Ниан, Правая нога (Джунгли) +#marking-MothLArmJungle-jungle_l_arm = Левая Рука +#marking-MothLArmJungle = Ниан, Левая рука (Джунгли) +#marking-MothRArmJungle-jungle_r_arm = Правая Рука +#marking-MothRArmJungle = Ниан, Правая рука (Джунгли) +#marking-MothChestMoonfly-moonfly_chest = Грудь +#marking-MothChestMoonfly = Ниан, Грудь (Мунфлай) +#marking-MothHeadMoonfly-moonfly_head = Голова +#marking-MothHeadMoonfly = Ниан, Голова (Мунфлай) +#marking-MothLLegMoonfly-moonfly_l_leg = Левая Нога +#marking-MothLLegMoonfly = Ниан, Левая нога (Мунфлай) +#marking-MothRLegMoonfly-moonfly_r_leg = Правая Нога +#marking-MothRLegMoonfly = Ниан, Правая нога (Мунфлай) +#marking-MothLArmMoonfly-moonfly_l_arm = Левая Рука +#marking-MothLArmMoonfly = Ниан, Левая рука (Мунфлай) +#marking-MothRArmMoonfly-moonfly_r_arm = Правая Рука +#marking-MothRArmMoonfly = Ниан, Правая рука (Мунфлай) +#marking-MothChestOakworm-oakworm_chest = Грудь +#marking-MothChestOakworm = Ниан, Грудь (Дубовый червь) +#marking-MothHeadOakworm-oakworm_head = Голова +#marking-MothHeadOakworm = Ниан, Голова (Дубовый червь) +#marking-MothLLegOakworm-oakworm_l_leg = Левая Нога +#marking-MothLLegOakworm = Ниан, Левая нога (Дубовый червь) +#marking-MothRLegOakworm-oakworm_r_leg = Правая Нога +#marking-MothRLegOakworm = Ниан, Правая нога (Дубовый червь) +#marking-MothLArmOakworm-oakworm_l_arm = Левая Рука +#marking-MothLArmOakworm = Ниан, Левая рука (Дубовый червь) +#marking-MothRArmOakworm-oakworm_r_arm = Правая Рука +#marking-MothRArmOakworm = Ниан, Правая рука (Дубовый червь) +#marking-MothChestPointy-pointy_chest = Грудь +#marking-MothChestPointy = Ниан, Грудь (Заострённые) +#marking-MothHeadPointy = Ниан, Голова (Заострённые) +#marking-MothLLegPointy-pointy_l_leg = Левая Нога +#marking-MothLLegPointy = Ниан, Левая нога (Заострённые) +#marking-MothRLegPointy-pointy_r_leg = Правая Нога +#marking-MothRLegPointy = Ниан, Правая нога (Заострённые) +#marking-MothLArmPointy-pointy_l_arm = Левая Рука +#marking-MothLArmPointy = Ниан, Левая рука (Заострённые) +#marking-MothRArmPointy-pointy_r_arm = Правая Рука +#marking-MothRArmPointy = Ниан, Правая рука (Заострённые) +#marking-MothChestRagged-ragged_chest = Грудь +#marking-MothChestRagged = Ниан, Грудь (Потрёпанные) +#marking-MothHeadRagged-ragged_head = Голова +#marking-MothHeadRagged = Ниан, Голова (Потрёпанные) +#marking-MothLLegRagged-ragged_l_leg = Левая Нога +#marking-MothLLegRagged = Ниан, Левая нога (Потрёпанные) +#marking-MothRLegRagged-ragged_r_leg = Правая Нога +#marking-MothRLegRagged = Ниан, Правая нога (Потрёпанные) +#marking-MothLArmRagged-ragged_l_arm = Левая Рука +#marking-MothLArmRagged = Ниан, Левая рука (Потрёпанные) +#marking-MothRArmRagged-ragged_r_arm = Правая Рука +#marking-MothRArmRagged = Ниан, Правая рука (Потрёпанные) +#marking-MothChestRoyal-royal_chest = Грудь +#marking-MothChestRoyal = Ниан, Грудь (Королевские) +#marking-MothHeadRoyal-royal_head = Голова +#marking-MothHeadRoyal = Ниан, Голова (Королевские) +#marking-MothLLegRoyal-royal_l_leg = Левая Нога +#marking-MothLLegRoyal = Ниан, Левая нога (Королевские) +#marking-MothRLegRoyal-royal_r_leg = Правая Нога +#marking-MothRLegRoyal = Ниан, Правая нога (Королевские) +#marking-MothLArmRoyal-royal_l_arm = Левая Рука +#marking-MothLArmRoyal = Ниан, Левая рука (Королевские) +#marking-MothRArmRoyal-royal_r_arm = Правая Рука +#marking-MothRArmRoyal = Ниан, Правая рука (Королевские) +#marking-MothChestWhitefly-whitefly_chest = Грудь +#marking-MothChestWhitefly = Ниан, Грудь (Белая муха) +#marking-MothHeadWhitefly-whitefly_head = Голова +#marking-MothHeadWhitefly = Ниан, Голова (Белая муха) +#marking-MothLLegWhitefly-whitefly_l_leg = Левая Нога +#marking-MothLLegWhitefly = Ниан, Левая нога (Белая муха) +#marking-MothRLegWhitefly-whitefly_r_leg = Правая Нога +#marking-MothRLegWhitefly = Ниан, Правая нога (Белая муха) +#marking-MothLArmWhitefly-whitefly_l_arm = Левая Рука +#marking-MothLArmWhitefly = Ниан, Левая рука (Белая муха) +#marking-MothRArmWhitefly-whitefly_r_arm = Правая Рука +#marking-MothRArmWhitefly = Ниан, Правая рука (Белая муха) +#marking-MothChestWitchwing-witchwing_chest = Грудь +#marking-MothChestWitchwing = Ниан, Грудь (Ведьмино крыло) +#marking-MothHeadWitchwing-witchwing_head = Голова +#marking-MothHeadWitchwing = Ниан, Голова (Ведьмино крыло) +#marking-MothLLegWitchwing-witchwing_l_leg = Левая Нога +#marking-MothLLegWitchwing = Ниан, Левая нога (Ведьмино крыло) +#marking-MothRLegWitchwing-witchwing_r_leg = Правая Нога +#marking-MothRLegWitchwing = Ниан, Правая нога (Ведьмино крыло) +#marking-MothLArmWitchwing-witchwing_l_arm = Левая Рука +#marking-MothLArmWitchwing = Ниан, Левая рука (Ведьмино крыло) +#marking-MothRArmWitchwing-witchwing_r_arm = Правая Рука +#marking-MothRArmWitchwing = Ниан, Правая рука (Ведьмино крыло) \ No newline at end of file diff --git a/Resources/Locale/ru-RU/species/species.ftl b/Resources/Locale/ru-RU/species/species.ftl index 0f2b10ddf26..7a96db115b8 100644 --- a/Resources/Locale/ru-RU/species/species.ftl +++ b/Resources/Locale/ru-RU/species/species.ftl @@ -6,6 +6,6 @@ species-name-reptilian = Унатх species-name-slime = Слаймолюд species-name-diona = Диона species-name-arachnid = Арахнид -species-name-moth = Ниан +#species-name-moth = Ниан species-name-skeleton = Скелет species-name-vox = Вокс diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/body/parts/moth.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/body/parts/moth.ftl index a7c4b197eee..a9b55a2b1bc 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/body/parts/moth.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/body/parts/moth.ftl @@ -1,22 +1,22 @@ -ent-PartMoth = часть тела нианы - .desc = { ent-BasePart.desc } -ent-TorsoMoth = торс нианы - .desc = { ent-PartMoth.desc } -ent-HeadMoth = голова нианы - .desc = { ent-PartMoth.desc } -ent-LeftArmMoth = левая рука нианы - .desc = { ent-PartMoth.desc } -ent-RightArmMoth = правая рука нианы - .desc = { ent-PartMoth.desc } -ent-LeftHandMoth = левая кисть нианы - .desc = { ent-PartMoth.desc } -ent-RightHandMoth = правая кисть нианы - .desc = { ent-PartMoth.desc } -ent-LeftLegMoth = левая нога нианы - .desc = { ent-PartMoth.desc } -ent-RightLegMoth = правая нога нианы - .desc = { ent-PartMoth.desc } -ent-LeftFootMoth = левая стопа нианы - .desc = { ent-PartMoth.desc } -ent-RightFootMoth = правая стопа нианы - .desc = { ent-PartMoth.desc } +#ent-PartMoth = часть тела нианы +# .desc = { ent-BasePart.desc } +#ent-TorsoMoth = торс нианы +# .desc = { ent-PartMoth.desc } +#ent-HeadMoth = голова нианы +# .desc = { ent-PartMoth.desc } +#ent-LeftArmMoth = левая рука нианы +# .desc = { ent-PartMoth.desc } +#ent-RightArmMoth = правая рука нианы +# .desc = { ent-PartMoth.desc } +#ent-LeftHandMoth = левая кисть нианы +# .desc = { ent-PartMoth.desc } +#ent-RightHandMoth = правая кисть нианы +# .desc = { ent-PartMoth.desc } +#ent-LeftLegMoth = левая нога нианы +# .desc = { ent-PartMoth.desc } +#ent-RightLegMoth = правая нога нианы +# .desc = { ent-PartMoth.desc } +#ent-LeftFootMoth = левая стопа нианы +# .desc = { ent-PartMoth.desc } +#ent-RightFootMoth = правая стопа нианы +# .desc = { ent-PartMoth.desc } \ No newline at end of file diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/player/moth.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/player/moth.ftl index c01dd8a1de0..1d03f099943 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/player/moth.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/player/moth.ftl @@ -1,2 +1,2 @@ -ent-MobMoth = Урист МакФлафф - .desc = { ent-BaseMobMoth.desc } +#ent-MobMoth = Урист МакФлафф +# .desc = { ent-BaseMobMoth.desc } diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/species/moth.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/species/moth.ftl index 91487be12e1..6835b62338b 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/species/moth.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/species/moth.ftl @@ -1,5 +1,5 @@ -ent-BaseMobMoth = Урист МакФлафф - .desc = { ent-BaseMobSpeciesOrganic.desc } - .suffix = Ниан -ent-MobMothDummy = { ent-BaseSpeciesDummy } - .desc = { ent-BaseSpeciesDummy.desc } +# ent-BaseMobMoth = Урист МакФлафф +# .desc = { ent-BaseMobSpeciesOrganic.desc } +# .suffix = Ниан +# ent-MobMothDummy = { ent-BaseSpeciesDummy } +# .desc = { ent-BaseSpeciesDummy.desc } diff --git a/Resources/Prototypes/ADT/Alerts/alerts.yml b/Resources/Prototypes/ADT/Alerts/alerts.yml new file mode 100644 index 00000000000..ae722d86805 --- /dev/null +++ b/Resources/Prototypes/ADT/Alerts/alerts.yml @@ -0,0 +1,21 @@ +# Simple Station + +- type: alert + id: Charge + icons: + - sprite: /Textures/ADT/Interface/Alerts/charge.rsi + state: charge-empty + - sprite: /Textures/ADT/Interface/Alerts/charge.rsi + state: charge0 + - sprite: /Textures/ADT/Interface/Alerts/charge.rsi + state: charge1 + - sprite: /Textures/ADT/Interface/Alerts/charge.rsi + state: charge2 + - sprite: /Textures/ADT/Interface/Alerts/charge.rsi + state: charge3 + - sprite: /Textures/ADT/Interface/Alerts/charge.rsi + state: charge4 + name: alerts-charge-name + description: alerts-charge-desc + minSeverity: -1 + maxSeverity: 4 diff --git a/Resources/Prototypes/ADT/Alerts/fill.txt b/Resources/Prototypes/ADT/Alerts/fill.txt deleted file mode 100644 index b4954caf47d..00000000000 --- a/Resources/Prototypes/ADT/Alerts/fill.txt +++ /dev/null @@ -1 +0,0 @@ -# Данный файл существует по причине того что Githab плохо дружит с пустыми папками, при работе с этой папкой этот файл можно спокойно удалить \ No newline at end of file diff --git a/Resources/Prototypes/ADT/Body/Organs/Drask.yml b/Resources/Prototypes/ADT/Body/Organs/Drask.yml index 53a6c3b0966..1d98e7d0d01 100644 --- a/Resources/Prototypes/ADT/Body/Organs/Drask.yml +++ b/Resources/Prototypes/ADT/Body/Organs/Drask.yml @@ -6,7 +6,7 @@ description: "I see you!" components: - type: Sprite - sprite: ADT/Mobs/Drask/organs.rsi + sprite: ADT/Mobs/Species/Drask/organs.rsi state: eyes - type: entity @@ -17,7 +17,7 @@ description: "Filters oxygen from an atmosphere, which is then sent into the bloodstream to be used as an electron carrier." components: - type: Sprite - sprite: ADT/Mobs/Drask/organs.rsi + sprite: ADT/Mobs/Species/Drask/organs.rsi state: lungs - type: Lung - type: Metabolizer @@ -51,7 +51,7 @@ description: "I feel bad for the heartless bastard who lost this." components: - type: Sprite - sprite: ADT/Mobs/Drask/organs.rsi + sprite: ADT/Mobs/Species/Drask/organs.rsi state: heart_on - type: Metabolizer maxReagents: 2 @@ -69,7 +69,7 @@ description: "Ew innards." components: - type: Sprite - sprite: ADT/Mobs/Drask/organs.rsi + sprite: ADT/Mobs/Species/Drask/organs.rsi state: innards - type: SolutionContainerManager solutions: @@ -95,7 +95,7 @@ name: kidneys components: - type: Sprite - sprite: ADT/Mobs/Drask/organs.rsi + sprite: ADT/Mobs/Species/Drask/organs.rsi state: kidneys - type: Metabolizer maxReagents: 5 diff --git a/Resources/Prototypes/ADT/Body/Organs/ipc.yml b/Resources/Prototypes/ADT/Body/Organs/ipc.yml new file mode 100644 index 00000000000..dfb7ecacf12 --- /dev/null +++ b/Resources/Prototypes/ADT/Body/Organs/ipc.yml @@ -0,0 +1,92 @@ +# Simple Station + +- type: entity + id: BaseIPCOrgan + parent: BaseItem + abstract: true + components: + - type: Sprite + netsync: false + sprite: ADT/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: OrganIPCBrain + parent: BaseIPCOrgan + name: positronic brain + description: "The source of as much controversy as the existence of the soul." + components: + - type: Sprite + state: brain + - type: Organ + - type: Input + context: "ghost" + - type: InputMover + - type: MovementSpeedModifier + baseWalkSpeed: 0 + baseSprintSpeed: 0 + - type: GhostOnMove + - type: Brain + +- 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/ADT/Body/Organs/moth.yml b/Resources/Prototypes/ADT/Body/Organs/moth.yml new file mode 100644 index 00000000000..e2b905fdc92 --- /dev/null +++ b/Resources/Prototypes/ADT/Body/Organs/moth.yml @@ -0,0 +1,41 @@ +- type: entity + id: OrganMothStomach + parent: [OrganAnimalStomach, OrganHumanStomach] + noSpawn: true + components: + - type: Stomach + specialDigestible: + tags: + - ClothMade + - Paper + - Fruit + - Pill + - ADTMothFriendlyFood + - type: SolutionContainerManager + solutions: + stomach: + maxVol: 50 + food: + maxVol: 5 + reagents: + - ReagentId: UncookedAnimalProteins + Quantity: 5 + - type: Metabolizer + maxReagents: 3 + metabolizerTypes: [ Moth ] + removeEmpty: true + groups: + - id: Food + - id: Drink + +- type: entity + id: OrganMothHeart + parent: OrganAnimalHeart + components: + - type: Metabolizer + maxReagents: 2 + metabolizerTypes: [ Moth ] + groups: + - id: Medicine + - id: Poison + - id: Narcotic diff --git a/Resources/Prototypes/ADT/Body/Parts/Drask.yml b/Resources/Prototypes/ADT/Body/Parts/Drask.yml index bceb64a62be..d6c7ef319be 100644 --- a/Resources/Prototypes/ADT/Body/Parts/Drask.yml +++ b/Resources/Prototypes/ADT/Body/Parts/Drask.yml @@ -21,10 +21,10 @@ components: - type: Sprite netsync: false - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: "torso_m" - type: Icon - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: "torso_m" - type: BodyPart partType: Torso @@ -36,10 +36,10 @@ components: - type: Sprite netsync: false - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: "head_m" - type: Icon - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: "head_m" - type: BodyPart partType: Head @@ -62,10 +62,10 @@ components: - type: Sprite netsync: false - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: "l_arm" - type: Icon - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: "l_arm" - type: BodyPart partType: Arm @@ -78,10 +78,10 @@ components: - type: Sprite netsync: false - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: "r_arm" - type: Icon - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: "r_arm" - type: BodyPart partType: Arm @@ -94,10 +94,10 @@ components: - type: Sprite netsync: false - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: "l_hand" - type: Icon - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: "l_hand" - type: BodyPart partType: Hand @@ -110,10 +110,10 @@ components: - type: Sprite netsync: false - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: "r_hand" - type: Icon - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: "r_hand" - type: BodyPart partType: Hand @@ -126,10 +126,10 @@ components: - type: Sprite netsync: false - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: "l_leg" - type: Icon - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: "l_leg" - type: BodyPart partType: Leg @@ -145,10 +145,10 @@ components: - type: Sprite netsync: false - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: "r_leg" - type: Icon - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: "r_leg" - type: BodyPart partType: Leg @@ -164,10 +164,10 @@ components: - type: Sprite netsync: false - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: "l_foot" - type: Icon - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: "l_foot" - type: BodyPart partType: Foot @@ -180,10 +180,10 @@ components: - type: Sprite netsync: false - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: "r_foot" - type: Icon - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: "r_foot" - type: BodyPart partType: Foot diff --git a/Resources/Prototypes/ADT/Body/Parts/demon.yml b/Resources/Prototypes/ADT/Body/Parts/demon.yml index ddc0a23bd84..a9da211bcb8 100644 --- a/Resources/Prototypes/ADT/Body/Parts/demon.yml +++ b/Resources/Prototypes/ADT/Body/Parts/demon.yml @@ -24,10 +24,10 @@ components: - type: Sprite netsync: false - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: "torso_m" - type: Icon - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: "torso_m" - type: BodyPart partType: Torso @@ -39,10 +39,10 @@ components: - type: Sprite netsync: false - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: "head_m" - type: Icon - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: "head_m" - type: BodyPart partType: Head @@ -65,10 +65,10 @@ components: - type: Sprite netsync: false - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: "l_arm" - type: Icon - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: "l_arm" - type: BodyPart partType: Arm @@ -81,10 +81,10 @@ components: - type: Sprite netsync: false - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: "r_arm" - type: Icon - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: "r_arm" - type: BodyPart partType: Arm @@ -97,10 +97,10 @@ components: - type: Sprite netsync: false - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: "l_hand" - type: Icon - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: "l_hand" - type: BodyPart partType: Hand @@ -113,10 +113,10 @@ components: - type: Sprite netsync: false - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: "r_hand" - type: Icon - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: "r_hand" - type: BodyPart partType: Hand @@ -129,10 +129,10 @@ components: - type: Sprite netsync: false - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: "l_leg" - type: Icon - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: "l_leg" - type: BodyPart partType: Leg @@ -148,10 +148,10 @@ components: - type: Sprite netsync: false - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: "r_leg" - type: Icon - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: "r_leg" - type: BodyPart partType: Leg @@ -167,10 +167,10 @@ components: - type: Sprite netsync: false - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: "l_foot" - type: Icon - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: "l_foot" - type: BodyPart partType: Foot @@ -183,10 +183,10 @@ components: - type: Sprite netsync: false - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: "r_foot" - type: Icon - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: "r_foot" - type: BodyPart partType: Foot diff --git a/Resources/Prototypes/ADT/Body/Parts/ipc.yml b/Resources/Prototypes/ADT/Body/Parts/ipc.yml new file mode 100644 index 00000000000..d9832ca4037 --- /dev/null +++ b/Resources/Prototypes/ADT/Body/Parts/ipc.yml @@ -0,0 +1,186 @@ +# Simple Station + +- 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: entity + id: TorsoIPC + name: "ipc torso" + parent: PartIPC + components: + - type: Sprite + netsync: false + sprite: ADT/Mobs/Species/IPC/parts.rsi + state: "torso_m" + - type: Icon + sprite: ADT/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: ADT/Mobs/Species/IPC/parts.rsi + state: "head_m" + - type: Icon + sprite: ADT/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: ADT/Mobs/Species/IPC/parts.rsi + state: "l_arm" + - type: Icon + sprite: ADT/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: ADT/Mobs/Species/IPC/parts.rsi + state: "r_arm" + - type: Icon + sprite: ADT/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: ADT/Mobs/Species/IPC/parts.rsi + state: "l_hand" + - type: Icon + sprite: ADT/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: ADT/Mobs/Species/IPC/parts.rsi + state: "r_hand" + - type: Icon + sprite: ADT/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: ADT/Mobs/Species/IPC/parts.rsi + state: "l_leg" + - type: Icon + sprite: ADT/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: ADT/Mobs/Species/IPC/parts.rsi + state: "r_leg" + - type: Icon + sprite: ADT/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: ADT/Mobs/Species/IPC/parts.rsi + state: "l_foot" + - type: Icon + sprite: ADT/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: ADT/Mobs/Species/IPC/parts.rsi + state: "r_foot" + - type: Icon + sprite: ADT/Mobs/Species/IPC/parts.rsi + state: "r_foot" + - type: BodyPart + partType: Foot + symmetry: Right diff --git a/Resources/Prototypes/ADT/Body/Parts/moth.yml b/Resources/Prototypes/ADT/Body/Parts/moth.yml new file mode 100644 index 00000000000..bb96430383a --- /dev/null +++ b/Resources/Prototypes/ADT/Body/Parts/moth.yml @@ -0,0 +1,120 @@ +# TODO: Add descriptions (many) +# TODO BODY: Part damage +- type: entity + id: PartMoth + parent: [BaseItem, BasePart] + name: "moth body part" + abstract: true + components: + - type: Extractable + juiceSolution: + reagents: + - ReagentId: Fat + Quantity: 3 + - ReagentId: Blood + Quantity: 10 + +- type: entity + id: TorsoMoth + name: "moth torso" + parent: [PartMoth, BaseTorso] + components: + - type: Sprite + sprite: Mobs/Species/Moth/parts.rsi + state: "torso_m" + - type: Extractable + juiceSolution: + reagents: + - ReagentId: Fat + Quantity: 10 + - ReagentId: Blood + Quantity: 20 + + +- type: entity + id: HeadMoth + name: "moth head" + parent: [PartMoth, BaseHead] + components: + - type: Sprite + sprite: Mobs/Species/Moth/parts.rsi + state: "head_m" + - type: Extractable + juiceSolution: + reagents: + - ReagentId: Fat + Quantity: 5 + - ReagentId: Blood + Quantity: 10 + +- type: entity + id: LeftArmMoth + name: "left moth arm" + parent: [PartMoth, BaseLeftArm] + components: + - type: Sprite + sprite: Mobs/Species/Moth/parts.rsi + state: "l_arm" + +- type: entity + id: RightArmMoth + name: "right moth arm" + parent: [PartMoth, BaseRightArm] + components: + - type: Sprite + sprite: Mobs/Species/Moth/parts.rsi + state: "r_arm" + +- type: entity + id: LeftHandMoth + name: "left moth hand" + parent: [PartMoth, BaseLeftHand] + components: + - type: Sprite + sprite: Mobs/Species/Moth/parts.rsi + state: "l_hand" + +- type: entity + id: RightHandMoth + name: "right moth hand" + parent: [PartMoth, BaseRightHand] + components: + - type: Sprite + sprite: Mobs/Species/Moth/parts.rsi + state: "r_hand" + +- type: entity + id: LeftLegMoth + name: "left moth leg" + parent: [PartMoth, BaseLeftLeg] + components: + - type: Sprite + sprite: Mobs/Species/Moth/parts.rsi + state: "l_leg" + +- type: entity + id: RightLegMoth + name: "right moth leg" + parent: [PartMoth, BaseRightLeg] + components: + - type: Sprite + sprite: Mobs/Species/Moth/parts.rsi + state: "r_leg" + +- type: entity + id: LeftFootMoth + name: "left moth foot" + parent: [PartMoth, BaseLeftFoot] + components: + - type: Sprite + sprite: Mobs/Species/Moth/parts.rsi + state: "l_foot" + +- type: entity + id: RightFootMoth + name: "right moth foot" + parent: [PartMoth, BaseRightFoot] + components: + - type: Sprite + sprite: Mobs/Species/Moth/parts.rsi + state: "r_foot" diff --git a/Resources/Prototypes/ADT/Body/Prototypes/fill.txt b/Resources/Prototypes/ADT/Body/Prototypes/fill.txt deleted file mode 100644 index b4954caf47d..00000000000 --- a/Resources/Prototypes/ADT/Body/Prototypes/fill.txt +++ /dev/null @@ -1 +0,0 @@ -# Данный файл существует по причине того что Githab плохо дружит с пустыми папками, при работе с этой папкой этот файл можно спокойно удалить \ No newline at end of file diff --git a/Resources/Prototypes/ADT/Body/Prototypes/ipc.yml b/Resources/Prototypes/ADT/Body/Prototypes/ipc.yml new file mode 100644 index 00000000000..fec44f7c523 --- /dev/null +++ b/Resources/Prototypes/ADT/Body/Prototypes/ipc.yml @@ -0,0 +1,47 @@ +# Simple Station + +- 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: OrganIPCBrain + 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/ADT/Body/Prototypes/moth.yml b/Resources/Prototypes/ADT/Body/Prototypes/moth.yml new file mode 100644 index 00000000000..421432face6 --- /dev/null +++ b/Resources/Prototypes/ADT/Body/Prototypes/moth.yml @@ -0,0 +1,49 @@ +- type: body + id: Moth + name: "Moth" + root: torso + slots: + head: + part: HeadMoth + connections: + - torso + organs: + brain: OrganHumanBrain + eyes: OrganHumanEyes + torso: + part: TorsoMoth + organs: + heart: OrganMothHeart + lungs: OrganHumanLungs + stomach: OrganMothStomach + liver: OrganAnimalLiver + kidneys: OrganHumanKidneys + connections: + - right arm + - left arm + - right leg + - left leg + right arm: + part: RightArmMoth + connections: + - right hand + left arm: + part: LeftArmMoth + connections: + - left hand + right hand: + part: RightHandMoth + left hand: + part: LeftHandMoth + right leg: + part: RightLegMoth + connections: + - right foot + left leg: + part: LeftLegMoth + connections: + - left foot + right foot: + part: RightFootMoth + left foot: + part: LeftFootMoth diff --git a/Resources/Prototypes/ADT/Damage/ADTmodifiers.yml b/Resources/Prototypes/ADT/Damage/ADTmodifiers.yml index 17be8eafaad..841fd6c945a 100644 --- a/Resources/Prototypes/ADT/Damage/ADTmodifiers.yml +++ b/Resources/Prototypes/ADT/Damage/ADTmodifiers.yml @@ -57,6 +57,35 @@ Heat: 2.0 Poison: 1.1 +- 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: 10 + Slash: 10 + Piercing: 10 + +- type: damageModifierSet + id: Moth # Slightly worse at everything but cold + coefficients: + Blunt: 1 + Piercing: 1.15 + Slash: 1.15 + Cold: 0.7 + Heat: 1.5 + Poison: 1.5 + - type: damageModifierSet id: CyborgMetallic coefficients: diff --git a/Resources/Prototypes/ADT/Damage/containers.yml b/Resources/Prototypes/ADT/Damage/containers.yml new file mode 100644 index 00000000000..686fa899f46 --- /dev/null +++ b/Resources/Prototypes/ADT/Damage/containers.yml @@ -0,0 +1,5 @@ +- type: damageContainer + id: ADTSiliconDamageContainer + supportedGroups: + - Brute + - Burn diff --git a/Resources/Prototypes/ADT/Datasets/Names/first_female_moth.yml b/Resources/Prototypes/ADT/Datasets/Names/first_female_moth.yml new file mode 100644 index 00000000000..396897bc0cb --- /dev/null +++ b/Resources/Prototypes/ADT/Datasets/Names/first_female_moth.yml @@ -0,0 +1,46 @@ +- type: dataset + id: first_female_moth + values: + - Защитница + - Техник + - Пилот + - Воительница + - Ткачиха + - Охотница + - Путешественница + - Исследовательница + - Смотритель + - Строительница + - Строитель + - Инженер + - Проводник + - Разведчик + - Архитектор + - Навигатор + - Целительница + - Врач + - Учёный + - Астроном + - Механик + - Помощница + - Рыцарь + - Поэт + - Психолог + - Химик + - Повар + - Музыкант + - Кардиолог + - Скульптор + - Биоинженер + - Наставник + - Космоархитектор + - Физик + - Астробиолог + - Астронавигатор + - Галактический поэт + - Нанотехнолог + - Биометрист + - Робоисследовательца + - Астропсихолог + - Галактический художник + - Космический исследовательца diff --git a/Resources/Prototypes/ADT/Datasets/Names/first_male_moth.yml b/Resources/Prototypes/ADT/Datasets/Names/first_male_moth.yml new file mode 100644 index 00000000000..d105c78a5cb --- /dev/null +++ b/Resources/Prototypes/ADT/Datasets/Names/first_male_moth.yml @@ -0,0 +1,45 @@ +- type: dataset + id: first_male_moth + values: + - Защитник + - Техник + - Пилот + - Воитель + - Ткач + - Охотник + - Путешественник + - Исследователь + - Смотритель + - Строитель + - Инженер + - Проводник + - Разведчик + - Архитектор + - Навигатор + - Целитель + - Врач + - Учёный + - Астроном + - Механик + - Помощник + - Рыцарь + - Поэт + - Психолог + - Химик + - Повар + - Музыкант + - Кардиолог + - Скульптор + - Биоинженер + - Наставник + - Космоархитектор + - Физик + - Астробиолог + - Астронавигатор + - Галактический поэт + - Нанотехнолог + - Биометрист + - Робоисследователь + - Астропсихолог + - Галактический художник + - Космический исследователь diff --git a/Resources/Prototypes/ADT/Datasets/Names/last_moth.yml b/Resources/Prototypes/ADT/Datasets/Names/last_moth.yml new file mode 100644 index 00000000000..b87b41a36d7 --- /dev/null +++ b/Resources/Prototypes/ADT/Datasets/Names/last_moth.yml @@ -0,0 +1,59 @@ +- type: dataset + id: last_moth + values: + - Галактики Андромеда + - Альфа Центавры + - Проксима Центавры + - Туманности Андромеда + - Солнечной Системы + - Планеты Сатурна + - Пояса Астероидов + - Созвездия Журавль + - Великой Туманности + - Галактического Кластера + - Материнской Звезды + - Планеты Марса + - Рассеянной Галактики + - Галактической Суперскопины + - Космической Станции Мир + - Планетарной Сети + - Газовых Гигантов + - Марсианской Пустыни + - Планетарной Экосистемы + - Космического Оркестра + - Планеты Нептун + - Атмосферы Сатурна + - Магелланового Облака + - Космической Станции Аура + - Галактического Затмения + - Созвездия Андромеды + - Корабля "Сиреневый Астероид" + - Небесного Вала + - Газового Гиганта + - Звездного Потока + - Галактической Астрономической Сети + - Солнечных Ветров + - Кластера Андромеды + - Созвездия Кассиопеи + - Галактического Кластера Плеяд + - Планетарной Станции Аура + - Цитадели Байцзуна + - Черной Дыры М87 + - Звездного Кластера Персея + - Созвездия Майя + - Звёздного Кластера Майя + - Созвездия Атлас + - Туманности Плейона + - Созвездия Электра + - Системы Сириус + - Системы Альдебаран + - Системы Альтаир + - Красного Гиганта Бетельгейзе + - Созвездия Сириус + - Системы Регул + - Созвездия Арктур + - Системы Астеропа + - Созвездия Капелла + - Созвездия Меропа + - Галактики Орион + - Червоточины М77 diff --git a/Resources/Prototypes/ADT/Datasets/Names/name_ipc.yml b/Resources/Prototypes/ADT/Datasets/Names/name_ipc.yml new file mode 100644 index 00000000000..d5952a4f797 --- /dev/null +++ b/Resources/Prototypes/ADT/Datasets/Names/name_ipc.yml @@ -0,0 +1,1123 @@ +# Simple Station + +- type: dataset + id: IpcFirst + values: + - АБЕКС + - АБЕЛЬ + - АНД + - АНКЛ + - АНТР + - АРМА + - АУРА + - ВЕКСА + - ВИТА + - ВЕЙВ + - ВОЛТ + - ВЕЙФ + - ВИСП + - ВЖ + - ВП + - ВД + - ЛП + - ИМП + - ВРЕН + - ДРСД + - ДУНК + - ДЖЕЙД + - ДЖИНГЛ + - ЖЖР + - ЖЛЛО + - ЖРД + - ЖУНО + - ЗАК + - ЗАРГ + - ЗЕОН + - ЗОЛТ + - ЗУМА + - ЗУЛО + - ЗЕВА + - ИКСИС + - ЙЕРА + - ЙАГО + - КСИ + - РГБ + - СБОС + - СДБ + - КХОС + - СХРИ + - СОЛ + - КРУКС + - САЙБР + - ЭБИКС + - ЭКСОС + - ФИРК + - ФИЗЗ + - ФРЕ + - ФКСМС + - ГИГА + - ГУФ + - ГРИН + - ГАН + - ХБЛ + - ХГ + - ХИУ + - ХОГ + - ИНС + - КАЙЛ + - КАНО + - КАЗА + - КЕНТ + - КИВ + - КОР + - КОРА + - КОС + - ЛУМА + - ЛУНА + - ЛИНКС + - ЛИТА + - МЕТ + - МИВ + - МИР + - МНОС + - МРПР + - МСО + - НАНО + - НЕСТ + - НЕКСО + - НОВА + - ОРНГ + - ОСИ + - ПБУ + - ПКП + - ПКP + - ПКР + - ПЛЕКС + - ПЛЕКСО + - ПЛИКС + - КУС + - КВИН + - КВЕР + - РИФТ + - РР + - РАЙНО + - РЗХ + - СИНА + - СЛИ + - ОПРС + - КЗ + - СТЛП + - TКРГ + - ТРИКС + - ВЕРА + - КСАЛ + - КСЕНА + - КСАЙЛО + - ЮПТ + - ЯМЛ + - ЯНО + - ЯДРО + +- 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/ADT/Entities/Markers/Spawners/jobs.yml b/Resources/Prototypes/ADT/Entities/Markers/Spawners/jobs.yml index 10d99928089..8b7daec37ea 100644 --- a/Resources/Prototypes/ADT/Entities/Markers/Spawners/jobs.yml +++ b/Resources/Prototypes/ADT/Entities/Markers/Spawners/jobs.yml @@ -44,3 +44,15 @@ layers: - state: green - state: iaa + +- type: entity + id: ADTSpawnPointRoboticist + parent: SpawnPointJobBase + name: roboticist + components: + - type: SpawnPoint + job_id: ADTRoboticist + - type: Sprite + layers: + - state: green + - state: scientist diff --git a/Resources/Prototypes/ADT/Entities/Mobs/Customization/Markings/Drask.yml b/Resources/Prototypes/ADT/Entities/Mobs/Customization/Markings/Drask.yml index 242111d6d68..01c1fbcc99c 100644 --- a/Resources/Prototypes/ADT/Entities/Mobs/Customization/Markings/Drask.yml +++ b/Resources/Prototypes/ADT/Entities/Mobs/Customization/Markings/Drask.yml @@ -17,7 +17,7 @@ !type:SimpleColoring color: "#171717" sprites: - - sprite: ADT/Mobs/Drask/custom.rsi + - sprite: ADT/Mobs/Species/Drask/custom.rsi state: r_arm - type: marking @@ -39,5 +39,5 @@ !type:SimpleColoring color: "#171717" sprites: - - sprite: ADT/Mobs/Drask/custom.rsi + - sprite: ADT/Mobs/Species/Drask/custom.rsi state: l_arm diff --git a/Resources/Prototypes/ADT/Entities/Mobs/Customization/Markings/antenna.yml b/Resources/Prototypes/ADT/Entities/Mobs/Customization/Markings/antenna.yml new file mode 100644 index 00000000000..d114bb4874d --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Mobs/Customization/Markings/antenna.yml @@ -0,0 +1,91 @@ +# Simple Station + +- type: marking + speciesRestriction: [IPC] + id: RobotAntennaTv + bodyPart: Hair + markingCategory: Hair + sprites: + - sprite: ADT/Mobs/Customization/ipc_antenna.rsi + state: ipc_antenna_tv + +- type: marking + speciesRestriction: [IPC] + id: RobotAntennaTesla + bodyPart: Hair + markingCategory: Hair + sprites: + - sprite: ADT/Mobs/Customization/ipc_antenna.rsi + state: ipc_antenna_tesla + +# - type: marking +# speciesRestriction: [IPC] +# id: RobotAntennaLightb +# bodyPart: Hair +# markingCategory: Hair +# sprites: +# - sprite: ADT/Mobs/Customization/ipc_antenna.rsi +# state: ipc_antenna_lightb + +# - type: marking +# speciesRestriction: [IPC] +# id: RobotAntennaLight +# bodyPart: Hair +# markingCategory: Hair +# sprites: +# - sprite: ADT/Mobs/Customization/ipc_antenna.rsi +# state: ipc_antenna_light + +- type: marking + speciesRestriction: [IPC] + id: RobotAntennaCyberhead + bodyPart: Hair + markingCategory: Hair + sprites: + - sprite: ADT/Mobs/Customization/ipc_antenna.rsi + state: ipc_antenna_cyberhead + +# - type: marking +# speciesRestriction: [IPC] +# id: RobotAntennaSidelights +# bodyPart: Hair +# markingCategory: Hair +# sprites: +# - sprite: ADT/Mobs/Customization/ipc_antenna.rsi +# state: ipc_antenna_sidelights + +- type: marking + speciesRestriction: [IPC] + id: RobotAntennaAntlers + bodyPart: Hair + markingCategory: Hair + sprites: + - sprite: ADT/Mobs/Customization/ipc_antenna.rsi + state: ipc_antenna_antlers + +- type: marking + speciesRestriction: [IPC] + id: RobotAntennaDroneeyes + bodyPart: Hair + markingCategory: Hair + sprites: + - sprite: ADT/Mobs/Customization/ipc_antenna.rsi + state: ipc_antenna_droneeyes + +- type: marking + speciesRestriction: [IPC] + id: RobotAntennaCrowned + bodyPart: Hair + markingCategory: Hair + sprites: + - sprite: ADT/Mobs/Customization/ipc_antenna.rsi + state: ipc_antenna_crowned + +- type: marking + speciesRestriction: [IPC] + id: RobotAntennaTowers + bodyPart: Hair + markingCategory: Hair + sprites: + - sprite: ADT/Mobs/Customization/ipc_antenna.rsi + state: ipc_antenna_towers diff --git a/Resources/Prototypes/ADT/Entities/Mobs/Customization/Markings/demon.yml b/Resources/Prototypes/ADT/Entities/Mobs/Customization/Markings/demon.yml index bb197ca124a..8fc7794f510 100644 --- a/Resources/Prototypes/ADT/Entities/Mobs/Customization/Markings/demon.yml +++ b/Resources/Prototypes/ADT/Entities/Mobs/Customization/Markings/demon.yml @@ -4,7 +4,7 @@ markingCategory: Tail speciesRestriction: [DemonSpecies] sprites: - - sprite: ADT/Mobs/Demon/custom.rsi + - sprite: ADT/Mobs/Species/Demon/custom.rsi state: demon_tail - type: marking @@ -13,7 +13,7 @@ markingCategory: Tail speciesRestriction: [DemonSpecies] sprites: - - sprite: ADT/Mobs/Demon/custom.rsi + - sprite: ADT/Mobs/Species/Demon/custom.rsi state: long - type: marking @@ -22,7 +22,7 @@ markingCategory: Tail speciesRestriction: [DemonSpecies] sprites: - - sprite: ADT/Mobs/Demon/custom.rsi + - sprite: ADT/Mobs/Species/Demon/custom.rsi state: up - type: marking @@ -31,7 +31,7 @@ markingCategory: HeadSide speciesRestriction: [DemonSpecies] sprites: - - sprite: ADT/Mobs/Demon/custom.rsi + - sprite: ADT/Mobs/Species/Demon/custom.rsi state: cow_ears - type: marking @@ -40,7 +40,7 @@ markingCategory: HeadSide speciesRestriction: [DemonSpecies] sprites: - - sprite: ADT/Mobs/Demon/custom.rsi + - sprite: ADT/Mobs/Species/Demon/custom.rsi state: demon_ears - type: marking @@ -49,7 +49,7 @@ markingCategory: HeadTop speciesRestriction: [DemonSpecies] sprites: - - sprite: ADT/Mobs/Demon/custom.rsi + - sprite: ADT/Mobs/Species/Demon/custom.rsi state: cow_horns - type: marking @@ -58,7 +58,7 @@ markingCategory: HeadTop speciesRestriction: [DemonSpecies] sprites: - - sprite: ADT/Mobs/Demon/custom.rsi + - sprite: ADT/Mobs/Species/Demon/custom.rsi state: deer_antlers_horns - type: marking @@ -67,7 +67,7 @@ markingCategory: HeadTop speciesRestriction: [DemonSpecies] sprites: - - sprite: ADT/Mobs/Demon/custom.rsi + - sprite: ADT/Mobs/Species/Demon/custom.rsi state: small_horns - type: marking @@ -76,7 +76,7 @@ markingCategory: Chest speciesRestriction: [DemonSpecies] sprites: - - sprite: ADT/Mobs/Demon/custom.rsi + - sprite: ADT/Mobs/Species/Demon/custom.rsi state: cow_spots - type: marking @@ -85,7 +85,7 @@ markingCategory: Chest speciesRestriction: [DemonSpecies] sprites: - - sprite: ADT/Mobs/Demon/custom.rsi + - sprite: ADT/Mobs/Species/Demon/custom.rsi state: guards_stripes - type: marking @@ -94,7 +94,7 @@ markingCategory: Chest speciesRestriction: [DemonSpecies] sprites: - - sprite: ADT/Mobs/Demon/custom.rsi + - sprite: ADT/Mobs/Species/Demon/custom.rsi state: lines_emperos - type: marking @@ -103,7 +103,7 @@ markingCategory: Chest speciesRestriction: [DemonSpecies] sprites: - - sprite: ADT/Mobs/Demon/custom.rsi + - sprite: ADT/Mobs/Species/Demon/custom.rsi state: queen_lines - type: marking @@ -112,7 +112,7 @@ markingCategory: Chest speciesRestriction: [DemonSpecies] sprites: - - sprite: ADT/Mobs/Demon/custom.rsi + - sprite: ADT/Mobs/Species/Demon/custom.rsi state: tree_lines - type: marking @@ -121,7 +121,7 @@ markingCategory: Chest speciesRestriction: [DemonSpecies] sprites: - - sprite: ADT/Mobs/Demon/custom.rsi + - sprite: ADT/Mobs/Species/Demon/custom.rsi state: trinity_spots - type: marking @@ -129,5 +129,5 @@ bodyPart: FacialHair markingCategory: FacialHair sprites: - - sprite: ADT/Mobs/Demon/custom.rsi + - sprite: ADT/Mobs/Species/Demon/custom.rsi state: goatee diff --git a/Resources/Prototypes/ADT/Entities/Mobs/Customization/Markings/moth.yml b/Resources/Prototypes/ADT/Entities/Mobs/Customization/Markings/moth.yml new file mode 100644 index 00000000000..c1d5df24633 --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Mobs/Customization/Markings/moth.yml @@ -0,0 +1,1111 @@ +# Antennas +- type: marking + id: MothAntennasDefault + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_antennas.rsi + state: default + +- type: marking + id: MothAntennasCharred + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_antennas.rsi + state: charred + +- type: marking + id: MothAntennasDbushy + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_antennas.rsi + state: dbushy + +- type: marking + id: MothAntennasDcurvy + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_antennas.rsi + state: dcurvy + +- type: marking + id: MothAntennasDfan + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_antennas.rsi + state: dfan + +- type: marking + id: MothAntennasDpointy + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_antennas.rsi + state: dpointy + +- type: marking + id: MothAntennasFeathery + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_antennas.rsi + state: feathery + +- type: marking + id: MothAntennasFirewatch + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_antennas.rsi + state: firewatch + +- type: marking + id: MothAntennasGray + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_antennas.rsi + state: gray + +- type: marking + id: MothAntennasJungle + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_antennas.rsi + state: jungle + +- type: marking + id: MothAntennasMoffra + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_antennas.rsi + state: moffra + +- type: marking + id: MothAntennasOakworm + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_antennas.rsi + state: oakworm + +- type: marking + id: MothAntennasPlasmafire + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_antennas.rsi + state: plasmafire + +- type: marking + id: MothAntennasMaple + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_antennas.rsi + state: maple + +- type: marking + id: MothAntennasRoyal + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_antennas.rsi + state: royal + +- type: marking + id: MothAntennasStriped + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_antennas.rsi + state: striped + +- type: marking + id: MothAntennasWhitefly + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_antennas.rsi + state: whitefly + +- type: marking + id: MothAntennasWitchwing + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_antennas.rsi + state: witchwing + +- type: marking + id: MothAntennasUnderwing + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_antennas.rsi + state: underwing_primary + - sprite: Mobs/Customization/Moth/moth_antennas.rsi + state: underwing_secondary + +# Wings +- type: marking + id: MothWingsDefault + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: default + +- type: marking + id: MothWingsCharred + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: charred + +- type: marking + id: MothWingsDbushy + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: dbushy_primary + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: dbushy_secondary + +- type: marking + id: MothWingsDeathhead + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: deathhead_primary + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: deathhead_secondary + +- type: marking + id: MothWingsFan + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: fan + +- type: marking + id: MothWingsDfan + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: dfan + +- type: marking + id: MothWingsFeathery + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: feathery + +- type: marking + id: MothWingsFirewatch + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: firewatch_primary + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: firewatch_secondary + +- type: marking + id: MothWingsGothic + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: gothic + +- type: marking + id: MothWingsJungle + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: jungle + +- type: marking + id: MothWingsLadybug + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: ladybug + +- type: marking + id: MothWingsMaple + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: maple + +- type: marking + id: MothWingsMoffra + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: moffra_primary + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: moffra_secondary + +- type: marking + id: MothWingsOakworm + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: oakworm + +- type: marking + id: MothWingsPlasmafire + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: plasmafire_primary + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: plasmafire_secondary + +- type: marking + id: MothWingsPointy + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: pointy + +- type: marking + id: MothWingsRoyal + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: royal_primary + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: royal_secondary + +- type: marking + id: MothWingsStellar + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: stellar + +- type: marking + id: MothWingsStriped + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: striped + +- type: marking + id: MothWingsSwirly + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: swirly + +- type: marking + id: MothWingsWhitefly + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: whitefly + +- type: marking + id: MothWingsWitchwing + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: witchwing + +- type: marking + id: MothWingsUnderwing + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: underwing_primary + - sprite: Mobs/Customization/Moth/moth_wings.rsi + state: underwing_secondary + +# Body markings: +# Charred +- type: marking + id: MothChestCharred + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: charred_chest + +- type: marking + id: MothHeadCharred + bodyPart: Head + markingCategory: Head + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: charred_head + +- type: marking + id: MothLLegCharred + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: charred_l_leg + +- type: marking + id: MothRLegCharred + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: charred_r_leg + +- type: marking + id: MothLArmCharred + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: charred_l_arm + +- type: marking + id: MothRArmCharred + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: charred_r_arm + +# Death's-Head +- type: marking + id: MothChestDeathhead + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: deathhead_chest + +- type: marking + id: MothHeadDeathhead + bodyPart: Head + markingCategory: Head + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: deathhead_head + +- type: marking + id: MothLLegDeathhead + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: deathhead_l_leg + +- type: marking + id: MothRLegDeathhead + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: deathhead_r_leg + +- type: marking + id: MothLArmDeathhead + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: deathhead_l_arm + +- type: marking + id: MothRArmDeathhead + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: deathhead_r_arm + +# Fan +- type: marking + id: MothChestFan + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: fan_chest + +- type: marking + id: MothHeadFan + bodyPart: Head + markingCategory: Head + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: fan_head + +- type: marking + id: MothLLegFan + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: fan_l_leg + +- type: marking + id: MothRLegFan + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: fan_r_leg + +- type: marking + id: MothLArmFan + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: fan_l_arm + +- type: marking + id: MothRArmFan + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: fan_r_arm + +# Firewatch +- type: marking + id: MothChestFirewatch + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: firewatch_chest + +- type: marking + id: MothHeadFirewatch + bodyPart: Head + markingCategory: Head + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: firewatch_head + +- type: marking + id: MothLLegFirewatch + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: firewatch_l_leg + +- type: marking + id: MothRLegFirewatch + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: firewatch_r_leg + +- type: marking + id: MothLArmFirewatch + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: firewatch_l_arm + +- type: marking + id: MothRArmFirewatch + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: firewatch_r_arm + +# Gothic +- type: marking + id: MothChestGothic + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: gothic_chest + +- type: marking + id: MothHeadGothic + bodyPart: Head + markingCategory: Head + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: gothic_head + +- type: marking + id: MothLLegGothic + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: gothic_l_leg + +- type: marking + id: MothRLegGothic + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: gothic_r_leg + +- type: marking + id: MothLArmGothic + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: gothic_l_arm + +- type: marking + id: MothRArmGothic + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: gothic_r_arm + +# Jungle +- type: marking + id: MothChestJungle + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: jungle_chest + +- type: marking + id: MothHeadJungle + bodyPart: Head + markingCategory: Head + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: jungle_head + +- type: marking + id: MothLLegJungle + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: jungle_l_leg + +- type: marking + id: MothRLegJungle + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: jungle_r_leg + +- type: marking + id: MothLArmJungle + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: jungle_l_arm + +- type: marking + id: MothRArmJungle + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: jungle_r_arm + +# Moonfly +- type: marking + id: MothChestMoonfly + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: moonfly_chest + +- type: marking + id: MothHeadMoonfly + bodyPart: Head + markingCategory: Head + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: moonfly_head + +- type: marking + id: MothLLegMoonfly + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: moonfly_l_leg + +- type: marking + id: MothRLegMoonfly + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: moonfly_r_leg + +- type: marking + id: MothLArmMoonfly + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: moonfly_l_arm + +- type: marking + id: MothRArmMoonfly + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: moonfly_r_arm + +# Oak Worm +- type: marking + id: MothChestOakworm + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: oakworm_chest + +- type: marking + id: MothHeadOakworm + bodyPart: Head + markingCategory: Head + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: oakworm_head + +- type: marking + id: MothLLegOakworm + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: oakworm_l_leg + +- type: marking + id: MothRLegOakworm + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: oakworm_r_leg + +- type: marking + id: MothLArmOakworm + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: oakworm_l_arm + +- type: marking + id: MothRArmOakworm + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: oakworm_r_arm + +# Pointy +- type: marking + id: MothChestPointy + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: pointy_chest + +- type: marking + id: MothHeadPointy + bodyPart: Head + markingCategory: Head + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: pointy_head + +- type: marking + id: MothLLegPointy + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: pointy_l_leg + +- type: marking + id: MothRLegPointy + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: pointy_r_leg + +- type: marking + id: MothLArmPointy + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: pointy_l_arm + +- type: marking + id: MothRArmPointy + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: pointy_r_arm + +# Ragged +- type: marking + id: MothChestRagged + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: ragged_chest + +- type: marking + id: MothHeadRagged + bodyPart: Head + markingCategory: Head + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: ragged_head + +- type: marking + id: MothLLegRagged + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: ragged_l_leg + +- type: marking + id: MothRLegRagged + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: ragged_r_leg + +- type: marking + id: MothLArmRagged + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: ragged_l_arm + +- type: marking + id: MothRArmRagged + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: ragged_r_arm + +# Royal +- type: marking + id: MothChestRoyal + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: royal_chest + +- type: marking + id: MothHeadRoyal + bodyPart: Head + markingCategory: Head + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: royal_head + +- type: marking + id: MothLLegRoyal + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: royal_l_leg + +- type: marking + id: MothRLegRoyal + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: royal_r_leg + +- type: marking + id: MothLArmRoyal + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: royal_l_arm + +- type: marking + id: MothRArmRoyal + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: royal_r_arm + +# White Fly +- type: marking + id: MothChestWhitefly + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: whitefly_chest + +- type: marking + id: MothHeadWhitefly + bodyPart: Head + markingCategory: Head + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: whitefly_head + +- type: marking + id: MothLLegWhitefly + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: whitefly_l_leg + +- type: marking + id: MothRLegWhitefly + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: whitefly_r_leg + +- type: marking + id: MothLArmWhitefly + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: whitefly_l_arm + +- type: marking + id: MothRArmWhitefly + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: whitefly_r_arm + +# Witch Wing +- type: marking + id: MothChestWitchwing + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: witchwing_chest + +- type: marking + id: MothHeadWitchwing + bodyPart: Head + markingCategory: Head + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: witchwing_head + +- type: marking + id: MothLLegWitchwing + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: witchwing_l_leg + +- type: marking + id: MothRLegWitchwing + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: witchwing_r_leg + +- type: marking + id: MothLArmWitchwing + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: witchwing_l_arm + +- type: marking + id: MothRArmWitchwing + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/Moth/moth_parts.rsi + state: witchwing_r_arm diff --git a/Resources/Prototypes/ADT/Entities/Mobs/Customization/Markings/screens.yml b/Resources/Prototypes/ADT/Entities/Mobs/Customization/Markings/screens.yml new file mode 100644 index 00000000000..2dfb75f970d --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Mobs/Customization/Markings/screens.yml @@ -0,0 +1,374 @@ +# Simple Station + +- type: marking + speciesRestriction: [IPC] + #sponsorOnly: true # Corvax-Sponsors + id: ScreenStatic + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_static + +- type: marking + speciesRestriction: [IPC] + id: ScreenBlue + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_blue + +- type: marking + speciesRestriction: [IPC] + #sponsorOnly: true # Corvax-Sponsors + id: ScreenBreakout + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_breakout + +- type: marking + speciesRestriction: [IPC] + #sponsorOnly: true # Corvax-Sponsors + id: ScreenEight + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_eight + +- type: marking + speciesRestriction: [IPC] + id: ScreenGoggles + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_goggles + +- type: marking + speciesRestriction: [IPC] + id: ScreenExclaim + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_exclaim + +- type: marking + speciesRestriction: [IPC] + id: ScreenHeart + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_heart + +- type: marking + speciesRestriction: [IPC] + id: ScreenMonoeye + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_monoeye + +- type: marking + speciesRestriction: [IPC] + id: ScreenNature + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_nature + +- type: marking + speciesRestriction: [IPC] + #sponsorOnly: true # Corvax-Sponsors + id: ScreenOrange + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_orange + +- type: marking + speciesRestriction: [IPC] + id: ScreenPink + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_pink + +- type: marking + speciesRestriction: [IPC] + id: ScreenQuestion + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_question + +- type: marking + speciesRestriction: [IPC] + #sponsorOnly: true # Corvax-Sponsors + id: ScreenShower + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_shower + +- type: marking + speciesRestriction: [IPC] + #sponsorOnly: true # Corvax-Sponsors + id: ScreenYellow + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_yellow + +- type: marking + speciesRestriction: [IPC] + #sponsorOnly: true # Corvax-Sponsors + id: ScreenScroll + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_scroll + +- type: marking + speciesRestriction: [IPC] + id: ScreenConsole + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_console + +- type: marking + speciesRestriction: [IPC] + #sponsorOnly: true # Corvax-Sponsors + id: ScreenRgb + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_rgb + +- type: marking + speciesRestriction: [IPC] + #sponsorOnly: true # Corvax-Sponsors + id: ScreenGlider + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_glider + +- type: marking + speciesRestriction: [IPC] + #sponsorOnly: true # Corvax-Sponsors + id: ScreenRainbowhoriz + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_rainbowhoriz + +- type: marking + speciesRestriction: [IPC] + #sponsorOnly: true # Corvax-Sponsors + id: ScreenBsod + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_bsod + +- type: marking + speciesRestriction: [IPC] + #sponsorOnly: true # Corvax-Sponsors + id: ScreenRedtext + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_redtext + +- type: marking + speciesRestriction: [IPC] + #sponsorOnly: true # Corvax-Sponsors + id: ScreenSinewave + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_sinewave + +- type: marking + speciesRestriction: [IPC] + #sponsorOnly: true # Corvax-Sponsors + id: ScreenSquarewave + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_squarewave + +- type: marking + speciesRestriction: [IPC] + #sponsorOnly: true # Corvax-Sponsors + id: ScreenEcgwave + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_ecgwave + +- type: marking + speciesRestriction: [IPC] + id: ScreenEyes + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_eyes + +- type: marking + speciesRestriction: [IPC] + id: ScreenEyestall + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_eyestall + +- type: marking + speciesRestriction: [IPC] + id: ScreenEyesangry + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_eyesangry + +- type: marking + speciesRestriction: [IPC] + #sponsorOnly: true # Corvax-Sponsors + id: ScreenLoading + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_loading + +- type: marking + speciesRestriction: [IPC] + #sponsorOnly: true # Corvax-Sponsors + id: ScreenWindowsxp + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_windowsxp + +- type: marking + speciesRestriction: [IPC] + #sponsorOnly: true # Corvax-Sponsors + id: ScreenTetris + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_tetris + +- type: marking + speciesRestriction: [IPC] + #sponsorOnly: true # Corvax-Sponsors + id: ScreenTv + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_tv + +- type: marking + speciesRestriction: [IPC] + #sponsorOnly: true # Corvax-Sponsors + id: ScreenTextdrop + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_textdrop + +- type: marking + speciesRestriction: [IPC] + #sponsorOnly: true # Corvax-Sponsors + id: ScreenStars + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_stars + +- type: marking + speciesRestriction: [IPC] + #sponsorOnly: true # Corvax-Sponsors + id: ScreenRainbowdiag + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_rainbowdiag + +- type: marking + speciesRestriction: [IPC] + id: ScreenBlank + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_blank + +- type: marking + speciesRestriction: [IPC] + id: ScreenSmile + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_smile + +- type: marking + speciesRestriction: [IPC] + id: ScreenFrown + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_frown + +- type: marking + speciesRestriction: [IPC] + id: ScreenRing + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_ring + +- type: marking + speciesRestriction: [IPC] + id: ScreenL + bodyPart: FacialHair + markingCategory: FacialHair + sprites: + - sprite: ADT/Mobs/Customization/ipc_screens.rsi + state: ipc_screen_l diff --git a/Resources/Prototypes/ADT/Entities/Mobs/Player/ipc.yml b/Resources/Prototypes/ADT/Entities/Mobs/Player/ipc.yml new file mode 100644 index 00000000000..2ec0397e02d --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Mobs/Player/ipc.yml @@ -0,0 +1,146 @@ +# Simple Station + +- type: entity + id: MobIPC + parent: PlayerSiliconHumanoidBase + name: Urist McPositronic + #description: [mob_ipc-desc] + components: + - type: InteractionPopup + interactSuccessString: petting-success-ipc + #interactFailureString: petting-failure-cleanbot + interactSuccessSound: + path: /Audio/Ambience/Objects/periodic_beep.ogg + - type: SiliconEmitSoundOnDrained + sound: "/Audio/Weapons/Guns/EmptyAlarm/smg_empty_alarm.ogg" + interval: 15 + playChance: 1 + popUp: silicon-power-low + - type: MobState + allowedStates: + - Alive + - Critical + - Dead + - type: MobThresholds + thresholds: + 0: Alive + 125: Critical + 180: Dead + stateAlertDict: + Alive: BorgHealth + Critical: BorgCrit + Dead: BorgDead + allowRevives: true # Для воскрешения достаточно починить урон. - ss220. + - type: NpcFactionMember + factions: + - NanoTrasen + - 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: EyeProtection + protectionTime: 12 + - type: Battery + maxCharge: 75000 + startingCharge: 75000 + - type: Silicon + entityType: enum.SiliconType.Player + batteryPowered: true + drainPerSecond: 30 + 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: UnpoweredFlashlight + - type: PointLight + enabled: false + color: "#a8d8ff" + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + radius: 6 + - type: Wires + boardName: "ipc-board-name" + layoutId: IPC + - type: WiresPanel + - type: EncryptionKeyHolder + keySlots: 3 + examineWhileLocked: false + keysExtractionMethod: Cutting + - type: ActiveRadio + - type: IntrinsicRadioReceiver + - type: IntrinsicRadioTransmitter + - type: SSDIndicator +# - type: UnblockableSpeech + # - type: EmotePanel + - type: ContentEye + maxZoom: 1.0,1.0 + - type: LightningTarget + priority: 4 + lightningExplode: false + - type: Vocal + sounds: + Male: UnisexIPC + Female: UnisexIPC + Unsexed: UnisexIPC + - type: TriggerOnMobstateChange + mobState: + - Dead + - type: EmitSoundOnTrigger + sound: + path: /Audio/ADT/IPC/borg_deathsound.ogg + - type: TTS # Corvax-TTS + # Frontier - languages mechanic + - type: LanguageSpeaker + speaks: + - GalacticCommon + - BorgTalk + - RobotTalk + understands: + - GalacticCommon + - BorgTalk + - RobotTalk + - type: Tag + tags: + # - ChangelingBlacklist + # - ShoesRequiredStepTriggerImmune + - CanPilot + - FootstepSound + - DoorBumpOpener + # - type: SizeAttributeWhitelist # Frontier + # tall: true + # tallscale: 1.1 + # short: true + # shortscale: 0.9 + +- 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/ADT/Entities/Mobs/Player/moth.yml b/Resources/Prototypes/ADT/Entities/Mobs/Player/moth.yml new file mode 100644 index 00000000000..ea01677626d --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Mobs/Player/moth.yml @@ -0,0 +1,5 @@ +- type: entity + save: false + name: Urist McFluff + parent: BaseMobMoth + id: MobMoth diff --git a/Resources/Prototypes/ADT/Entities/Mobs/Player/silicon_base.yml b/Resources/Prototypes/ADT/Entities/Mobs/Player/silicon_base.yml new file mode 100644 index 00000000000..9295c7751f9 --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Mobs/Player/silicon_base.yml @@ -0,0 +1,381 @@ +# Simple Station + +- type: entity + save: false + abstract: true + id: ADTPlayerSiliconBase # For player controlled silicons + components: + - type: Reactive + groups: + Acidic: [Touch] + - type: Input + context: "human" + - type: InputMover + - type: ZombieImmune + - type: MobMover + - type: DamageOnHighSpeedImpact + damage: + types: + Blunt: 5 + soundHit: + path: /Audio/Effects/hit_kick.ogg + - type: Clickable + - type: Damageable + damageContainer: Inorganic # Note that for dumb reasons, this essentially makes them a wall. + - type: InteractionOutline + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.35 + density: 185 ### влияет на шанс Disarm. было 50 + mask: + - MobMask + layer: + - MobLayer + - type: MovementSpeedModifier + baseWalkSpeed: 3 + baseSprintSpeed: 4 + - type: Sprite + sprite: ADT/Mobs/Species/IPC/parts.rsi + state: full + noRot: true + drawdepth: Mobs + - type: Physics + bodyType: KinematicController + - type: Body + prototype: Drone + - type: DoAfter + - type: Examiner + # - type: Recyclable + # safe: false + - type: StandingState + - type: Alerts + # - 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: RadiationReceiver + - type: AtmosExposed + - type: Temperature + heatDamageThreshold: 700 + coldDamageThreshold: 0 + currentTemperature: 400 + specificHeat: 24 + coldDamage: + types: + Cold: 0.1 # Per second, scales with temperature & other constants. + heatDamage: + types: + Heat: 0.25 # Per second, scales with temperature & other constants. + atmosTemperatureTransferEfficiency: 0.05 + - type: ThermalRegulator + metabolismHeat: 600 + radiatedHeat: 350 + implicitHeatRegulation: 350 + sweatHeatRegulation: 0 # This might end up being a problem if they can't cool themselves down? + shiveringHeatRegulation: 1200 + normalBodyTemperature: 400 + thermalRegulationTemperatureThreshold: 125 + - type: ComplexInteraction + +- type: entity + parent: ADTPlayerSiliconBase + id: PlayerSiliconHumanoidBase + abstract: true + components: + - type: StatusIcon + - type: MobState + allowedStates: + - Alive + - Dead + - type: MobThresholds + thresholds: + 0: Alive + 165: Dead + - type: Damageable + damageContainer: ADTSiliconDamageContainer # Not a wall. + - type: Stamina + critThreshold: 200 + - type: Destructible + thresholds: + - trigger: !type:DamageTrigger + damage: 500 + behaviors: + - !type:GibBehavior {} + - type: Icon + sprite: ADT/Mobs/Species/IPC/parts.rsi + state: full + - type: MindContainer + showExamineInfo: true + - 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: ["enum.HumanoidVisualLayers.Wings"] + - map: ["clownedon"] # Dynamically generated + sprite: "Effects/creampie.rsi" + state: "creampie_human" + visible: false + - type: Repairable + #fuelcost: 60 + doAfterDelay: 10 # was 18 + damage: + types: + Blunt: -20 + Slash: -20 + Piercing: -20 + #bloodlossModifier: -100 + - type: Bloodstream ### я добавил компонент Bloodstream как заглушку. Он нужен, +# чтобы хилиться с помощью CableStack. Дело в том, что HealingSystem использует проверку на наличие BloodstreamComponent. +# В любом случае Bloodstream здесь является костылём, чтобы не лезть в код. В будущем можно зделать для IPC нормальную bloodstream систему. + damageBleedModifiers: BloodlossIPC + bloodReagent: Water + bleedReductionAmount: 0 + bloodMaxVolume: 0 + chemicalMaxVolume: 0 + bleedPuddleThreshold: 3 + bloodRefreshAmount: 0 + bloodlossThreshold: 0 + maxBleedAmount: 0 + 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. + - type: Temperature + heatDamageThreshold: 320 + coldDamageThreshold: 255 + currentTemperature: 280 + specificHeat: 50 + coldDamage: + types: + Cold: 0.1 #per second, scales with temperature & other constants + heatDamage: + types: + Heat: 0.15 #per second, scales with temperature & other constants + atmosTemperatureTransferEfficiency: 0.4 + - type: ThermalRegulator + metabolismHeat: 1000 # Increase once we have more ways to regulate temperature + radiatedHeat: 800 + implicitHeatRegulation: 600 + sweatHeatRegulation: 0 + shiveringHeatRegulation: 12000 # Overclocking, yo + normalBodyTemperature: 280 + thermalRegulationTemperatureThreshold: 32 + - type: Polymorphable + - type: Identity + - type: MovedByPressure + - type: DamageOnHighSpeedImpact + damage: + types: + Blunt: 5 + soundHit: + path: /Audio/Effects/metal_break1.ogg + - type: LagCompensation + - type: RangedDamageSound + soundGroups: + Brute: + collection: MetalBulletImpact + soundTypes: + Heat: + collection: MetalLaserImpact + - type: Tag + tags: + - CanPilot + - FootstepSound + - DoorBumpOpener + - type: Hands + - type: Inventory + templateId: human + - type: InventorySlots + - type: Appearance + - type: GenericVisualizer + visuals: + enum.CreamPiedVisuals.Creamed: + clownedon: + True: { visible: true } + False: { visible: false } + - type: RotationVisuals + - type: FloatingVisuals + - type: FireVisuals + sprite: Mobs/Effects/onfire.rsi + normalState: Generic_mob_burning + alternateState: Standing + fireStackAlternateState: 3 + - type: CombatMode + canDisarm: true + - type: Climbing + - 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: StandingState + - 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: MaleHuman + Female: FemaleHuman + Unsexed: MaleHuman + - 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: Reactive + groups: + Flammable: [Touch] + Extinguish: [Touch] + Acidic: [Touch, Ingestion] + reactions: + - reagents: [Water, SpaceCleaner] + methods: [Touch] + effects: + - !type:WashCreamPieReaction + - type: BodyEmotes + soundsId: GeneralBodyEmotes + - type: DamageVisuals + thresholds: [20, 50, 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: "#1a1a1a" + Burn: + sprite: Mobs/Effects/burn_damage.rsi + # 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 + - SeeingStatic + - type: Blindable diff --git a/Resources/Prototypes/ADT/Entities/Mobs/Species/Drask.yml b/Resources/Prototypes/ADT/Entities/Mobs/Species/Drask.yml index 72556b70a2d..5b2a6ea42ea 100644 --- a/Resources/Prototypes/ADT/Entities/Mobs/Species/Drask.yml +++ b/Resources/Prototypes/ADT/Entities/Mobs/Species/Drask.yml @@ -12,7 +12,7 @@ Cold: 0.05 Bloodloss: 0.05 - type: Icon - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: full - type: Thirst - type: Perishable diff --git a/Resources/Prototypes/ADT/Entities/Mobs/Species/demon.yml b/Resources/Prototypes/ADT/Entities/Mobs/Species/demon.yml index 6f99d513004..3d5fd467efb 100644 --- a/Resources/Prototypes/ADT/Entities/Mobs/Species/demon.yml +++ b/Resources/Prototypes/ADT/Entities/Mobs/Species/demon.yml @@ -10,7 +10,7 @@ - type: Hunger - type: Thirst - type: Icon - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: full_m - type: Sprite netsync: false diff --git a/Resources/Prototypes/ADT/Entities/Mobs/Species/moth.yml b/Resources/Prototypes/ADT/Entities/Mobs/Species/moth.yml new file mode 100644 index 00000000000..7a9335779fb --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Mobs/Species/moth.yml @@ -0,0 +1,141 @@ +- type: entity + save: false + name: Urist McFluff + parent: BaseMobSpeciesOrganic + id: BaseMobMoth + abstract: true + components: + - type: HumanoidAppearance + species: Moth + - type: Hunger + starvationDamage: + types: + Cold: 0.05 + Bloodloss: 0.05 + - type: Thirst + - type: Icon + sprite: ADT/Mobs/Species/Moth/parts.rsi + state: full + - type: Body + prototype: Moth + requiredLegs: 2 + - type: Damageable + damageContainer: Biological + damageModifierSet: Moth + - type: ZombieAccentOverride + accent: zombieMoth + - type: Speech + speechVerb: Moth + - type: TypingIndicator + proto: moth + - type: Butcherable + butcheringType: Spike + spawned: + - id: FoodMeat + amount: 5 + - type: Bloodstream + bloodReagent: InsectBlood + - type: DamageVisuals + damageOverlayGroups: + Brute: + sprite: Mobs/Effects/brute_damage.rsi + color: "#808A51" + - type: MothAccent + - type: Vocal + sounds: + Male: MaleMoth + Female: FemaleMoth + Unsexed: MaleMoth + - type: MovementSpeedModifier + weightlessAcceleration: 1.5 # Move around more easily in space. + weightlessFriction: 1 + weightlessModifier: 1 + - type: Flammable + damage: + types: + Heat: 4.5 # moths burn more easily + - type: Temperature # Moths hate the heat and thrive in the cold. + heatDamageThreshold: 320 + coldDamageThreshold: 230 + currentTemperature: 310.15 + specificHeat: 46 + coldDamage: + types: + Cold : 0.05 #per second, scales with temperature & other constants + heatDamage: + types: + Heat : 3 #per second, scales with temperature & other constants + - type: Sprite # sprite again because we want different layer ordering + 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 #PJB on stencil clear being on the left leg: "...this is 'fine'" -https://github.com/space-wizards/space-station-14/pull/12217#issuecomment-1291677115 + # its fine, but its still very stupid that it has to be done like this instead of allowing sprites to just directly insert a stencil clear. + # sprite refactor when + state: l_leg + - shader: StencilMask + map: [ "enum.HumanoidVisualLayers.StencilMask" ] + sprite: Mobs/Customization/masking_helpers.rsi + state: unisex_full + visible: false + - map: [ "underwearb" ] #Sirena + - map: [ "underweart" ] #Sirena + - map: [ "enum.HumanoidVisualLayers.LFoot" ] + - map: [ "enum.HumanoidVisualLayers.RFoot" ] + - map: [ "socks" ] #Sirena + - map: [ "jumpsuit" ] + - map: [ "enum.HumanoidVisualLayers.LHand" ] + - map: [ "enum.HumanoidVisualLayers.RHand" ] + #- map: [ "enum.HumanoidVisualLayers.LFoot" ] + #- map: [ "enum.HumanoidVisualLayers.RFoot" ] + - map: [ "enum.HumanoidVisualLayers.Handcuffs" ] + color: "#ffffff" + sprite: Objects/Misc/handcuffs.rsi + state: body-overlay-2 + visible: false + - map: [ "gloves" ] + - map: [ "shoes" ] + - map: [ "ears" ] + - map: [ "outerClothing" ] + - map: [ "eyes" ] + - map: [ "belt" ] + - map: [ "id" ] + - map: [ "enum.HumanoidVisualLayers.Tail" ] #in the utopian future we should probably have a wings enum inserted here so everyhting doesn't break + - 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: [ "clownedon" ] # Dynamically generated + sprite: "Effects/creampie.rsi" + state: "creampie_moth" + visible: false + - type: LanguageSpeaker # Frontier + speaks: + - GalacticCommon + - Nian + understands: + - GalacticCommon + - Nian + +- type: entity + parent: BaseSpeciesDummy + id: MobMothDummy + noSpawn: true + components: + - type: HumanoidAppearance + species: Moth diff --git a/Resources/Prototypes/ADT/Entities/Objects/Device/Circuitboards/siliconchargers.yml b/Resources/Prototypes/ADT/Entities/Objects/Device/Circuitboards/siliconchargers.yml new file mode 100644 index 00000000000..8359e7aaa4a --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Objects/Device/Circuitboards/siliconchargers.yml @@ -0,0 +1,16 @@ +- type: entity + id: IndustrialChargerCircuitboard + parent: BaseMachineCircuitboard + name: industrial charger machine board + description: A machine printed circuit board for an industrial charger + components: + - type: Sprite + state: engineering + - type: MachineBoard + prototype: SiliconChargerIndustrial + stackRequirements: + Plastic: 6 + CableHV: 4 + CableMV: 8 + Capacitor: 8 + Manipulator: 2 diff --git a/Resources/Prototypes/ADT/Entities/Objects/Device/pda.yml b/Resources/Prototypes/ADT/Entities/Objects/Device/pda.yml deleted file mode 100644 index 5b710a24571..00000000000 --- a/Resources/Prototypes/ADT/Entities/Objects/Device/pda.yml +++ /dev/null @@ -1,14 +0,0 @@ -- type: entity - parent: MedicalPDA - id: ADTPathologistPDA - name: pathologist's PDA - description: It breezes chill. - components: - - type: Pda - id: ADTPathologistIDCard - state: pda-pathologist - - type: PdaBorderColor - borderColor: "#d7d7d0" - accentVColor: "#15616b" - - type: Icon - state: pda-pathologist \ No newline at end of file diff --git a/Resources/Prototypes/ADT/Entities/Objects/Devices/pda.yml b/Resources/Prototypes/ADT/Entities/Objects/Devices/pda.yml index 52b435d325e..2660c105ac1 100644 --- a/Resources/Prototypes/ADT/Entities/Objects/Devices/pda.yml +++ b/Resources/Prototypes/ADT/Entities/Objects/Devices/pda.yml @@ -9,3 +9,33 @@ state: pda-lawyer - type: Icon state: pda-lawyer + +- type: entity + parent: BasePDA + id: ADTRoboticistPDA + name: roboticist PDA + description: It's covered with an unknown gooey substance. + components: + - type: Pda + id: ADTRoboticistIDCard + state: pda-roboticist + - type: PdaBorderColor + borderColor: "#171716" + accentVColor: "#d90000" + - type: Icon + state: pda-roboticist + +- type: entity + parent: MedicalPDA + id: ADTPathologistPDA + name: pathologist's PDA + description: It breezes chill. + components: + - type: Pda + id: ADTPathologistIDCard + state: pda-pathologist + - type: PdaBorderColor + borderColor: "#d7d7d0" + accentVColor: "#15616b" + - type: Icon + state: pda-pathologist diff --git a/Resources/Prototypes/ADT/Entities/Objects/Misc/identification_cards.yml b/Resources/Prototypes/ADT/Entities/Objects/Misc/identification_cards.yml index b7928e36d39..83d6930836f 100644 --- a/Resources/Prototypes/ADT/Entities/Objects/Misc/identification_cards.yml +++ b/Resources/Prototypes/ADT/Entities/Objects/Misc/identification_cards.yml @@ -23,3 +23,15 @@ - state: id-pathologist - type: PresetIdCard job: ADTPathologist + +- type: entity + parent: IDCardStandard + id: ADTRoboticistIDCard + name: roboticist ID card + components: + - type: Sprite + layers: + - state: default + - state: idroboticist + - type: PresetIdCard + job: ADTRoboticist diff --git a/Resources/Prototypes/ADT/Entities/Objects/Tools/fill.txt b/Resources/Prototypes/ADT/Entities/Objects/Tools/fill.txt deleted file mode 100644 index b4954caf47d..00000000000 --- a/Resources/Prototypes/ADT/Entities/Objects/Tools/fill.txt +++ /dev/null @@ -1 +0,0 @@ -# Данный файл существует по причине того что Githab плохо дружит с пустыми папками, при работе с этой папкой этот файл можно спокойно удалить \ No newline at end of file diff --git a/Resources/Prototypes/ADT/Entities/Structures/Machines/silicon_chargers.yml b/Resources/Prototypes/ADT/Entities/Structures/Machines/silicon_chargers.yml new file mode 100644 index 00000000000..97f1e8700f9 --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Structures/Machines/silicon_chargers.yml @@ -0,0 +1,86 @@ +- type: entity + id: SiliconChargerIndustrial + parent: BaseMachinePowered + name: industrial charger + description: A heavy duty machine for inductively charging robotic beings. Gets extremely hot! + components: + - type: Sprite + sprite: ADT/Structures/Machines/borgcharger.rsi + noRot: true + layers: + - state: base + - state: closed + map: ["enum.StorageVisualLayers.Door"] + - state: borgcharger_closed_unlit + shader: unshaded + map: ["enum.SiliconChargerVisuals.Lights"] + - state: HV + map: ["HV"] + - state: MV + map: ["MV"] + - state: LV + map: ["LV"] + - type: EntityStorageVisuals + stateDoorOpen: open + stateDoorClosed: closed + - type: GenericVisualizer + visuals: + enum.PowerDeviceVisuals.VisualState: + enum.SiliconChargerVisuals.Lights: + Normal: { state: "borgcharger_closed_unlit" } + NormalOpen: { state: "borgcharger_open_unlit" } + Charging: { state: "borgcharger_active_unlit" } + enum.PowerDeviceVisuals.Powered: + enum.SiliconChargerVisuals.Lights: + True: { visible: true } + False: { visible: false } + - type: Icon + sprite: ADT/Structures/Machines/borgcharger.rsi + state: icon + - type: Physics + bodyType: Static + - type: Fixtures + fixtures: + fix1: + shape: !type:PhysShapeAabb + bounds: "-0.45,-0.5,0.45,0.5" + density: 190 + mask: + - MachineMask + layer: + - MachineLayer + - type: ApcPowerReceiver + powerLoad: 500 + - type: StaticPrice #было DynamicPrice + price: 600 + - type: EntityStorage + maxItemSize: Tiny + - type: Appearance + - type: ContainerContainer + containers: + machine_board: !type:Container + machine_parts: !type:Container + entity_storage: !type:Container + - type: SiliconCharger + chargeMulti: 50 + targetTemp: 390 + - type: Construction + graph: Machine + node: machine + containers: + - machine_board + - machine_parts + - entity_storage + - type: Machine + board: IndustrialChargerCircuitboard + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 350 + behaviors: + - !type:EmptyAllContainersBehaviour + - !type:ChangeConstructionNodeBehavior + node: machineFrame + - !type:DoActsBehavior + acts: ["Destruction"] diff --git a/Resources/Prototypes/ADT/InventoryTemplates/fill.txt b/Resources/Prototypes/ADT/InventoryTemplates/fill.txt deleted file mode 100644 index b4954caf47d..00000000000 --- a/Resources/Prototypes/ADT/InventoryTemplates/fill.txt +++ /dev/null @@ -1 +0,0 @@ -# Данный файл существует по причине того что Githab плохо дружит с пустыми папками, при работе с этой папкой этот файл можно спокойно удалить \ No newline at end of file diff --git a/Resources/Prototypes/ADT/InventoryTemplates/ipc_inventory_template.yml b/Resources/Prototypes/ADT/InventoryTemplates/ipc_inventory_template.yml new file mode 100644 index 00000000000..7172aabdcff --- /dev/null +++ b/Resources/Prototypes/ADT/InventoryTemplates/ipc_inventory_template.yml @@ -0,0 +1,143 @@ +# Simple Station + +- type: inventoryTemplate + id: ipc + slots: + - name: shoes + slotTexture: shoes + slotFlags: FEET + stripTime: 3 + uiWindowPos: 1,0 + strippingWindowPos: 1,2 + displayName: Shoes + - name: jumpsuit + slotTexture: uniform + slotFlags: INNERCLOTHING + stripTime: 6 + uiWindowPos: 1,1 + strippingWindowPos: 1,1 + displayName: Jumpsuit + - name: outerClothing + slotTexture: suit + slotFlags: OUTERCLOTHING + #slotGroup: SecondHotbar + stripTime: 6 + uiWindowPos: 2,0 + strippingWindowPos: 0,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,1 + displayName: Gloves + - name: neck + slotTexture: neck + slotFlags: NECK + uiWindowPos: 0,1 + strippingWindowPos: 0,1 + displayName: Neck + # - name: mask + # slotTexture: mask + # slotFlags: MASK + # uiWindowPos: 1,1 + # strippingWindowPos: 1,1 + # displayName: Mask + # offset: 0.5, 1.5 + # - 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,2 + strippingWindowPos: 1,0 + displayName: Head + offset: 0, 0 + - name: pocket1 + slotTexture: pocket + slotFlags: POCKET + slotGroup: MainHotbar + stripTime: 3 + uiWindowPos: 0,3 + strippingWindowPos: 0,3 + dependsOn: jumpsuit + displayName: Pocket 1 + stripHidden: true + - name: pocket2 + slotTexture: pocket + slotFlags: POCKET + slotGroup: MainHotbar + stripTime: 3 + uiWindowPos: 2,3 + strippingWindowPos: 1,3 + dependsOn: jumpsuit + displayName: Pocket 2 + stripHidden: true + - name: suitstorage + slotTexture: suit_storage + slotFlags: SUITSTORAGE + stripTime: 3 + uiWindowPos: 2,0 + strippingWindowPos: 2,4 + dependsOn: outerClothing + displayName: Suit Storage + slotGroup: MainHotbar + - name: id + slotTexture: id + slotFlags: IDCARD + slotGroup: SecondHotbar + stripTime: 6 + uiWindowPos: 2,1 + strippingWindowPos: 2,3 + dependsOn: jumpsuit + displayName: ID + - name: belt + slotTexture: belt + slotFlags: BELT + slotGroup: SecondHotbar + stripTime: 6 + uiWindowPos: 3,1 + strippingWindowPos: 1,4 + displayName: Belt + - name: back + slotTexture: back + slotFlags: BACK + slotGroup: SecondHotbar + stripTime: 6 + uiWindowPos: 3,0 + strippingWindowPos: 0,4 + displayName: Back diff --git a/Resources/Prototypes/ADT/Languages/fill.txt b/Resources/Prototypes/ADT/Languages/fill.txt deleted file mode 100644 index b4954caf47d..00000000000 --- a/Resources/Prototypes/ADT/Languages/fill.txt +++ /dev/null @@ -1 +0,0 @@ -# Данный файл существует по причине того что Githab плохо дружит с пустыми папками, при работе с этой папкой этот файл можно спокойно удалить \ No newline at end of file diff --git a/Resources/Prototypes/ADT/Loadouts/loadout_groups.yml b/Resources/Prototypes/ADT/Loadouts/loadout_groups.yml index e17e604bf6c..facd4eb165d 100644 --- a/Resources/Prototypes/ADT/Loadouts/loadout_groups.yml +++ b/Resources/Prototypes/ADT/Loadouts/loadout_groups.yml @@ -1,6 +1,7 @@ - type: loadoutGroup id: MagistratJumpsuit name: loadout-group-lawyer-jumpsuit + minLimit: 1 loadouts: - MagistratJumpsuit - LawyerJumpsuit @@ -31,6 +32,7 @@ - type: loadoutGroup id: PathologJumpsuit name: loadout-group-patholog-jumpsuit + minLimit: 1 loadouts: - PathologJumpsuit - PathologJumpskirt @@ -40,7 +42,7 @@ - type: loadoutGroup id: PathologBackpack name: loadout-group-patholog-backpack - minLimit: 0 + minLimit: 1 loadouts: - PathologBackpack - PathologSatchel @@ -61,3 +63,34 @@ loadouts: - BlueShoes - MedicalWinterBoots + +#Science + +- type: loadoutGroup + id: RoboticistJumpsuit + name: loadout-group-roboticist-jumpsuit + minLimit: 1 + loadouts: + - ScientistJumpsuit + - ScientistJumpskirt + - RoboticistJumpsuit + - RoboticistJumpskirt + +- type: loadoutGroup + id: RoboticistOuterClothing + name: loadout-group-roboticist-outerclothing + minLimit: 0 + loadouts: + - RegularLabCoat + - ScienceLabCoat + - ScienceWintercoat + - RoboticistWintercoat + +- type: loadoutGroup + id: RobohandsGloves + name: loadout-group-roboticist-gloves + minLimit: 0 + loadouts: + - LatexGloves + - PurpleGloves + - RobohandsGloves diff --git a/Resources/Prototypes/ADT/Loadouts/role_loadouts.yml b/Resources/Prototypes/ADT/Loadouts/role_loadouts.yml index cd4402dbf11..dd613aacad5 100644 --- a/Resources/Prototypes/ADT/Loadouts/role_loadouts.yml +++ b/Resources/Prototypes/ADT/Loadouts/role_loadouts.yml @@ -27,3 +27,20 @@ - SurvivalMedical - Trinkets - GroupSpeciesBreathToolMedical + +- type: roleLoadout + id: JobADTRoboticist + groups: + - Inventory # Corvax-Loadouts + - GroupTankHarness + - ScientistHead + - ScientistNeck + - RoboticistJumpsuit + - ScientistBackpack + - RoboticistOuterClothing + - RobohandsGloves + - ScientistShoes + - Glasses + - Survival + - Trinkets + - GroupSpeciesBreathTool diff --git a/Resources/Prototypes/ADT/Polymorphs/polymorphs.yml b/Resources/Prototypes/ADT/Polymorphs/polymorphs.yml index f781310f7b7..b3e39b97581 100644 --- a/Resources/Prototypes/ADT/Polymorphs/polymorphs.yml +++ b/Resources/Prototypes/ADT/Polymorphs/polymorphs.yml @@ -7,4 +7,28 @@ transferName: true transferDamage: true revertOnCrit: false - revertOnDeath: true \ No newline at end of file + revertOnDeath: true + +- type: polymorph + id: ADTPMothroach + configuration: + entity: MobMothroach + forced: true + transferName: true + allowRepeatedMorphs: False + inventory: Drop + revertOnCrit: true + revertOnDeath: true + duration: 40 + +- type: polymorph + id: ADTPMothroach2 + configuration: + entity: MobMothroach + forced: true + transferName: true + allowRepeatedMorphs: False + inventory: Drop + revertOnCrit: true + revertOnDeath: true + duration: 120 diff --git a/Resources/Prototypes/ADT/Recipes/Lathes/electronics.yml b/Resources/Prototypes/ADT/Recipes/Lathes/electronics.yml new file mode 100644 index 00000000000..24c34e966ff --- /dev/null +++ b/Resources/Prototypes/ADT/Recipes/Lathes/electronics.yml @@ -0,0 +1,8 @@ +- type: latheRecipe + id: IndustrialChargerCircuitboard + result: IndustrialChargerCircuitboard + completetime: 2 + materials: + Steel: 900 + Plastic: 100 + Gold: 100 diff --git a/Resources/Prototypes/ADT/Recipes/Lathes/fill.txt b/Resources/Prototypes/ADT/Recipes/Lathes/fill.txt deleted file mode 100644 index b4954caf47d..00000000000 --- a/Resources/Prototypes/ADT/Recipes/Lathes/fill.txt +++ /dev/null @@ -1 +0,0 @@ -# Данный файл существует по причине того что Githab плохо дружит с пустыми папками, при работе с этой папкой этот файл можно спокойно удалить \ No newline at end of file diff --git a/Resources/Prototypes/ADT/Roles/Jobs/Science/roboticist.yml b/Resources/Prototypes/ADT/Roles/Jobs/Science/roboticist.yml new file mode 100644 index 00000000000..19d8211f573 --- /dev/null +++ b/Resources/Prototypes/ADT/Roles/Jobs/Science/roboticist.yml @@ -0,0 +1,22 @@ +- type: job + id: ADTRoboticist + name: job-name-roboticist + description: job-description-roboticist + playTimeTracker: JobRoboticist + requirements: + - !type:DepartmentTimeRequirement + department: Science + time: 25200 #7 hrs + startingGear: ADTRoboticistGear + icon: "JobIconRoboticist" + supervisors: job-supervisors-rd + access: + - Research + - Maintenance + +- type: startingGear + id: ADTRoboticistGear + equipment: + ears: ClothingHeadsetRobotics + id: ADTRoboticistPDA + pocket1: BorgTranslatorImplanter diff --git a/Resources/Prototypes/ADT/Roles/play_time_trackers.yml b/Resources/Prototypes/ADT/Roles/play_time_trackers.yml index 4197c525e5c..dc77c0fb415 100644 --- a/Resources/Prototypes/ADT/Roles/play_time_trackers.yml +++ b/Resources/Prototypes/ADT/Roles/play_time_trackers.yml @@ -3,3 +3,6 @@ - type: playTimeTracker id: JobADTPathologist + +- type: playTimeTracker + id: JobRoboticist diff --git a/Resources/Prototypes/ADT/Shaders/shaders.yml b/Resources/Prototypes/ADT/Shaders/shaders.yml new file mode 100644 index 00000000000..060c64503c3 --- /dev/null +++ b/Resources/Prototypes/ADT/Shaders/shaders.yml @@ -0,0 +1,6 @@ +# Simple Station + +- type: shader + id: SeeingStatic + kind: source + path: "/Textures/ADT/Shaders/seeing_static.swsl" diff --git a/Resources/Prototypes/ADT/SoundCollections/emotes.yml b/Resources/Prototypes/ADT/SoundCollections/emotes.yml index a625ac21c8c..f44ddd9944a 100644 --- a/Resources/Prototypes/ADT/SoundCollections/emotes.yml +++ b/Resources/Prototypes/ADT/SoundCollections/emotes.yml @@ -14,6 +14,42 @@ id: DraskTalk files: - /Audio/ADT/Drask/drasktalk.ogg + +# IPC +- type: soundCollection + id: SynthYes + files: + - /Audio/ADT/IPC/synth_yes.ogg + +- type: soundCollection + id: SynthNo + files: + - /Audio/ADT/IPC/synth_no.ogg + +- type: soundCollection + id: Ping + files: + - /Audio/ADT/IPC/ping.ogg + +- type: soundCollection + id: Buzz + files: + - /Audio/ADT/IPC/buzz-sigh.ogg + +- type: soundCollection + id: SighIPC + files: + - /Audio/ADT/IPC/buzz-two.ogg + +- type: soundCollection + id: ScreamIPC + files: + - /Audio/ADT/IPC/synth_scream.ogg + +- type: soundCollection + id: SighBuzz + files: + - /Audio/ADT/IPC/buzz-two.ogg - type: soundCollection id: TajaranHisses @@ -42,4 +78,29 @@ - type: soundCollection id: TajaranPurrs files: - - /Audio/ADT/Felinid/cat_purr1.ogg \ No newline at end of file + - /Audio/ADT/Felinid/cat_purr1.ogg + +- type: soundCollection + id: MothBuzz + files: + - /Audio/ADT/Moth/moth_squeak.ogg + +- type: soundCollection + id: MothScream + files: + - /Audio/ADT/Moth/moth_screm.ogg + +- type: soundCollection + id: MothLaugh + files: + - /Audio/ADT/Moth/moth_laugh.ogg + +- type: soundCollection + id: MothChitter + files: + - /Audio/ADT/Moth/moth_chitter.ogg + +- type: soundCollection + id: MothSqueak + files: + - /Audio/ADT/Moth/moth_squeak.ogg diff --git a/Resources/Prototypes/ADT/Species/demon.yml b/Resources/Prototypes/ADT/Species/demon.yml index 82bbe62c593..a5ff1c3d8f7 100644 --- a/Resources/Prototypes/ADT/Species/demon.yml +++ b/Resources/Prototypes/ADT/Species/demon.yml @@ -69,89 +69,89 @@ - type: humanoidBaseSprite id: MobDemonHead baseSprite: - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: head_m - type: humanoidBaseSprite id: MobDemonHeadMale baseSprite: - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: head_m - type: humanoidBaseSprite id: MobDemonHeadFemale baseSprite: - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: head_f - type: humanoidBaseSprite id: MobDemonTorso baseSprite: - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: torso_m - type: humanoidBaseSprite id: MobDemonTorsoMale baseSprite: - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: torso_m - type: humanoidBaseSprite id: MobDemonTorsoFemale baseSprite: - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: torso_f - type: humanoidBaseSprite id: MobDemonLLeg baseSprite: - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: l_leg - type: humanoidBaseSprite id: MobDemonLHand baseSprite: - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: l_hand - type: humanoidBaseSprite id: MobDemonLArm baseSprite: - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: l_arm - type: humanoidBaseSprite id: MobDemonLFoot baseSprite: - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: l_foot - type: humanoidBaseSprite id: MobDemonRLeg baseSprite: - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: r_leg - type: humanoidBaseSprite id: MobDemonRHand baseSprite: - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: r_hand - type: humanoidBaseSprite id: MobDemonRArm baseSprite: - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: r_arm - type: humanoidBaseSprite id: MobDemonRFoot baseSprite: - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: r_foot - type: humanoidBaseSprite id: MobDemonTail baseSprite: - sprite: ADT/Mobs/Demon/parts.rsi + sprite: ADT/Mobs/Species/Demon/parts.rsi state: tail diff --git a/Resources/Prototypes/ADT/Species/drask.yml b/Resources/Prototypes/ADT/Species/drask.yml index 8c75d513aec..7436e823c58 100644 --- a/Resources/Prototypes/ADT/Species/drask.yml +++ b/Resources/Prototypes/ADT/Species/drask.yml @@ -70,89 +70,89 @@ - type: humanoidBaseSprite id: MobDraskEyes baseSprite: - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: eyes - type: humanoidBaseSprite id: MobDraskHead baseSprite: - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: head_m - type: humanoidBaseSprite id: MobDraskHeadMale baseSprite: - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: head_m - type: humanoidBaseSprite id: MobDraskHeadFemale baseSprite: - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: head_f - type: humanoidBaseSprite id: MobDraskTorso baseSprite: - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: torso_m - type: humanoidBaseSprite id: MobDraskTorsoMale baseSprite: - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: torso_m - type: humanoidBaseSprite id: MobDraskTorsoFemale baseSprite: - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: torso_f - type: humanoidBaseSprite id: MobDraskLLeg baseSprite: - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: l_leg - type: humanoidBaseSprite id: MobDraskLHand baseSprite: - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: l_hand - type: humanoidBaseSprite id: MobDraskLArm baseSprite: - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: l_arm - type: humanoidBaseSprite id: MobDraskLFoot baseSprite: - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: l_foot - type: humanoidBaseSprite id: MobDraskRLeg baseSprite: - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: r_leg - type: humanoidBaseSprite id: MobDraskRHand baseSprite: - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: r_hand - type: humanoidBaseSprite id: MobDraskRArm baseSprite: - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: r_arm - type: humanoidBaseSprite id: MobDraskRFoot baseSprite: - sprite: ADT/Mobs/Drask/parts.rsi + sprite: ADT/Mobs/Species/Drask/parts.rsi state: r_foot diff --git a/Resources/Prototypes/ADT/Species/ipc.yml b/Resources/Prototypes/ADT/Species/ipc.yml new file mode 100644 index 00000000000..a144d4cf946 --- /dev/null +++ b/Resources/Prototypes/ADT/Species/ipc.yml @@ -0,0 +1,150 @@ +# Simple Station + +- type: species + id: IPC + name: species-name-ipc + roundStart: true # закомментировано для теста + prototype: MobIPC + sprites: MobIPCSprites + markingLimits: MobIPCMarkingLimits + dollPrototype: MobIPCDummy + skinColoration: Hues + sponsorOnly: false + minAge: 1 + maxAge: 240 + oldAge: 50 + youngAge: 25 + maleFirstNames: IpcFirst + femaleFirstNames: IpcFirst + maleLastNames: IpcLast # Corvax-LastnameGender + femaleLastNames: IpcLast # Corvax-LastnameGender + 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 + Snout: MobHumanoidAnyMarking + HeadTop: MobHumanoidAnyMarking + HeadSide: MobHumanoidAnyMarking + Tail: MobHumanoidAnyMarking + Hair: MobHumanoidMarkingMatchSkin + FacialHair: MobIPCScreen + Chest: MobIPCTorso + LArm: MobIPCLArm + RArm: MobIPCRArm + LHand: MobIPCLHand + RHand: MobIPCRHand + LLeg: MobIPCLLeg + RLeg: MobIPCRLeg + LFoot: MobIPCLFoot + RFoot: MobIPCRFoot + +- type: markingPoints + id: MobIPCMarkingLimits + onlyWhitelisted: true + points: + Chest: + points: 0 + required: false + Legs: + points: 0 + required: false + Arms: + points: 0 + required: false + +- type: humanoidBaseSprite + id: MobIPCScreen + +- type: humanoidBaseSprite + id: MobIPCHead + baseSprite: + sprite: ADT/Mobs/Species/IPC/parts.rsi + state: head_m + +- type: humanoidBaseSprite + id: MobIPCHeadMale + baseSprite: + sprite: ADT/Mobs/Species/IPC/parts.rsi + state: head_m + +- type: humanoidBaseSprite + id: MobIPCHeadFemale + baseSprite: + sprite: ADT/Mobs/Species/IPC/parts.rsi + state: head_f + +- type: humanoidBaseSprite + id: MobIPCTorso + baseSprite: + sprite: ADT/Mobs/Species/IPC/parts.rsi + state: torso_m + +- type: humanoidBaseSprite + id: MobIPCTorsoMale + baseSprite: + sprite: ADT/Mobs/Species/IPC/parts.rsi + state: torso_m + +- type: humanoidBaseSprite + id: MobIPCTorsoFemale + baseSprite: + sprite: ADT/Mobs/Species/IPC/parts.rsi + state: torso_f + +- type: humanoidBaseSprite + id: MobIPCLLeg + baseSprite: + sprite: ADT/Mobs/Species/IPC/parts.rsi + state: l_leg + +- type: humanoidBaseSprite + id: MobIPCLArm + baseSprite: + sprite: ADT/Mobs/Species/IPC/parts.rsi + state: l_arm + +- type: humanoidBaseSprite + id: MobIPCLHand + baseSprite: + sprite: ADT/Mobs/Species/IPC/parts.rsi + state: l_hand + +- type: humanoidBaseSprite + id: MobIPCLFoot + baseSprite: + sprite: ADT/Mobs/Species/IPC/parts.rsi + state: l_foot + +- type: humanoidBaseSprite + id: MobIPCRLeg + baseSprite: + sprite: ADT/Mobs/Species/IPC/parts.rsi + state: r_leg + +- type: humanoidBaseSprite + id: MobIPCRArm + baseSprite: + sprite: ADT/Mobs/Species/IPC/parts.rsi + state: r_arm + +- type: humanoidBaseSprite + id: MobIPCRHand + baseSprite: + sprite: ADT/Mobs/Species/IPC/parts.rsi + state: r_hand + +- type: humanoidBaseSprite + id: MobIPCRFoot + baseSprite: + sprite: ADT/Mobs/Species/IPC/parts.rsi + state: r_foot diff --git a/Resources/Prototypes/ADT/Species/moth.yml b/Resources/Prototypes/ADT/Species/moth.yml new file mode 100644 index 00000000000..889fc2b9b5f --- /dev/null +++ b/Resources/Prototypes/ADT/Species/moth.yml @@ -0,0 +1,160 @@ +- type: species + id: Moth + name: species-name-moth + roundStart: true + prototype: MobMoth + sprites: MobMothSprites + defaultSkinTone: "#ffda93" + markingLimits: MobMothMarkingLimits + dollPrototype: MobMothDummy + skinColoration: Hues + maleFirstNames: first_male_moth # ADT-name-custom + femaleFirstNames: first_female_moth # ADT-name-custom + maleLastNames: last_moth # ADT-custom + femaleLastNames: last_moth # ADT-custom + +- type: speciesBaseSprites + id: MobMothSprites + sprites: + Head: MobMothHead + Snout: MobHumanoidAnyMarking + Chest: MobMothTorso + HeadTop: MobHumanoidAnyMarking + HeadSide: MobHumanoidAnyMarking + Tail: MobHumanoidAnyMarking + Eyes: MobMothEyes + LArm: MobMothLArm + RArm: MobMothRArm + LHand: MobMothLHand + RHand: MobMothRHand + LLeg: MobMothLLeg + RLeg: MobMothRLeg + LFoot: MobMothLFoot + RFoot: MobMothRFoot + +- type: humanoidBaseSprite + id: MobMothEyes + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: eyes + +- type: markingPoints + id: MobMothMarkingLimits + onlyWhitelisted: true + points: + Hair: + points: 0 + required: false + FacialHair: + points: 0 + required: false + Tail: + points: 1 + required: true + defaultMarkings: [ MothWingsDefault ] + Snout: + points: 1 + required: false + HeadTop: + points: 1 + required: true + defaultMarkings: [ MothAntennasDefault ] + HeadSide: + points: 1 + required: false + Head: + points: 1 + required: false + Chest: + points: 1 + required: false + Legs: + points: 2 + required: false + Arms: + points: 2 + required: false + +- type: humanoidBaseSprite + id: MobMothHead + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: head_m + +- type: humanoidBaseSprite + id: MobMothHeadMale + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: head_m + +- type: humanoidBaseSprite + id: MobMothHeadFemale + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: head_f + +- type: humanoidBaseSprite + id: MobMothTorso + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: torso_m + +- type: humanoidBaseSprite + id: MobMothTorsoMale + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: torso_m + +- type: humanoidBaseSprite + id: MobMothTorsoFemale + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: torso_f + +- type: humanoidBaseSprite + id: MobMothLLeg + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: l_leg + +- type: humanoidBaseSprite + id: MobMothLHand + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: l_hand + +- type: humanoidBaseSprite + id: MobMothLArm + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: l_arm + +- type: humanoidBaseSprite + id: MobMothLFoot + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: l_foot + +- type: humanoidBaseSprite + id: MobMothRLeg + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: r_leg + +- type: humanoidBaseSprite + id: MobMothRHand + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: r_hand + +- type: humanoidBaseSprite + id: MobMothRArm + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: r_arm + +- type: humanoidBaseSprite + id: MobMothRFoot + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: r_foot diff --git a/Resources/Prototypes/ADT/StatusEffects/seeingstatic.yml b/Resources/Prototypes/ADT/StatusEffects/seeingstatic.yml new file mode 100644 index 00000000000..5fb3e737493 --- /dev/null +++ b/Resources/Prototypes/ADT/StatusEffects/seeingstatic.yml @@ -0,0 +1,4 @@ +# Simple Station + +- type: statusEffect + id: SeeingStatic diff --git a/Resources/Prototypes/ADT/Traits/disabilities.yml b/Resources/Prototypes/ADT/Traits/disabilities.yml new file mode 100644 index 00000000000..fc43fc11af1 --- /dev/null +++ b/Resources/Prototypes/ADT/Traits/disabilities.yml @@ -0,0 +1,18 @@ +- type: trait + id: ADTHemophilia + name: trait-hemophilia-name + description: trait-hemophilia-desc + category: Disabilities + components: + - type: Hemophilia + modifier: 0.01 + +# Simple Station + +- type: trait + id: ColorBlindnessMonochrome + name: trait-monochromacy-name + description: trait-monochromacy-description + category: Disabilities + components: + - type: Monochromacy diff --git a/Resources/Prototypes/ADT/Traits/fill.txt b/Resources/Prototypes/ADT/Traits/fill.txt deleted file mode 100644 index b4954caf47d..00000000000 --- a/Resources/Prototypes/ADT/Traits/fill.txt +++ /dev/null @@ -1 +0,0 @@ -# Данный файл существует по причине того что Githab плохо дружит с пустыми папками, при работе с этой папкой этот файл можно спокойно удалить \ No newline at end of file diff --git a/Resources/Prototypes/ADT/Traits/speech.yml b/Resources/Prototypes/ADT/Traits/speech.yml index 28d63e224f3..ec03739e0d4 100644 --- a/Resources/Prototypes/ADT/Traits/speech.yml +++ b/Resources/Prototypes/ADT/Traits/speech.yml @@ -15,3 +15,4 @@ cost: 1 components: - type: DeutschAccent + diff --git a/Resources/Prototypes/ADT/Voice/fill.txt b/Resources/Prototypes/ADT/Voice/fill.txt deleted file mode 100644 index b4954caf47d..00000000000 --- a/Resources/Prototypes/ADT/Voice/fill.txt +++ /dev/null @@ -1 +0,0 @@ -# Данный файл существует по причине того что Githab плохо дружит с пустыми папками, при работе с этой папкой этот файл можно спокойно удалить \ No newline at end of file diff --git a/Resources/Prototypes/ADT/Voice/speech_emote_sounds.yml b/Resources/Prototypes/ADT/Voice/speech_emote_sounds.yml index c91dd6faf33..637802d908a 100644 --- a/Resources/Prototypes/ADT/Voice/speech_emote_sounds.yml +++ b/Resources/Prototypes/ADT/Voice/speech_emote_sounds.yml @@ -66,6 +66,78 @@ Whistle: collection: Whistles +- type: emoteSounds + id: MaleMoth + params: + variation: 0.125 + sounds: + Buzz: + collection: MothBuzz + Scream: + collection: MothScream + Laugh: + collection: MothLaugh + Chitter: + collection: MothChitter + Squeak: + collection: MothSqueak + Weh: + collection: Weh + Sneeze: + collection: MaleSneezes + Cough: + collection: MaleCoughs + MonkeyScreeches: + collection: MonkeyScreeches + Yawn: + collection: MaleYawn + Snore: + collection: Snores + Honk: + collection: BikeHorn + Sigh: + collection: MaleSigh + Crying: + collection: MaleCry + Whistle: + collection: Whistles + +- type: emoteSounds + id: FemaleMoth + params: + variation: 0.125 + sounds: + Buzz: + collection: MothBuzz + Scream: + collection: MothScream + Laugh: + collection: MothLaugh + Chitter: + collection: MothChitter + Squeak: + collection: MothSqueak + Weh: + collection: Weh + Sneeze: + collection: MaleSneezes + Cough: + collection: MaleCoughs + MonkeyScreeches: + collection: MonkeyScreeches + Yawn: + collection: MaleYawn + Snore: + collection: Snores + Honk: + collection: BikeHorn + Sigh: + collection: MaleSigh + Crying: + collection: MaleCry + Whistle: + collection: Whistles + - type: emoteSounds id: ADTMaleTajaran params: @@ -105,11 +177,11 @@ collection: MaleCry Whistle: collection: Whistles - # ADT-Apathy Sounds. + # ADT-Apathy Sounds. Scream-apathy: collection: TajaranMaleScreams Laugh-apathy: - collection: MaleLaugh + collection: MaleLaugh Sigh-apathy: collection: MaleSigh Crying-apathy: @@ -154,13 +226,35 @@ collection: FemaleCry Whistle: collection: Whistles - # ADT-Apathy Sounds. + + # ADT-Apathy Sounds. Scream-apathy: collection: TajaranFemaleScreams Laugh-apathy: - collection: FemaleLaugh + collection: FemaleLaugh Sigh-apathy: collection: FemaleSigh Crying-apathy: collection: FemaleCry - \ No newline at end of file + +- type: emoteSounds + id: UnisexIPC + sounds: + RobotBeep: + collection: RobotBeeps + SynthYes: + path: /Audio/ADT/IPC/synth_yes.ogg + SynthNo: + path: /Audio/ADT/IPC/synth_no.ogg + Ping: + path: /Audio/ADT/IPC/ping.ogg + Buzz: + path: /Audio/ADT/IPC/buzz-sigh.ogg + SighBuzz: + path: /Audio/ADT/IPC/buzz-two.ogg + Sigh: + path: /Audio/ADT/IPC/buzz-two.ogg + Scream: + path: /Audio/ADT/IPC/synth_scream.ogg + params: + variation: 0.125 diff --git a/Resources/Prototypes/ADT/Voice/speech_emotes.yml b/Resources/Prototypes/ADT/Voice/speech_emotes.yml index 6209c09453a..b75b97b3dca 100644 --- a/Resources/Prototypes/ADT/Voice/speech_emotes.yml +++ b/Resources/Prototypes/ADT/Voice/speech_emotes.yml @@ -12,7 +12,7 @@ id: Laugh-apathy name: chat-emote-name-laugh-apathy category: Vocal - chatMessages: [выдавливает из себя смех] + chatMessages: [выдавливает из себя смех] chatTriggers: - выдавливает из себя смех @@ -20,7 +20,7 @@ id: Scream-apathy name: chat-emote-name-scream-apathy category: Vocal - chatMessages: [наигранно кричит!] + chatMessages: [наигранно кричит!] chatTriggers: - наигранно кричит! @@ -28,7 +28,7 @@ id: Sigh-apathy name: chat-emote-name-sigh-apathy category: Vocal - chatMessages: [театрально вздыхает] + chatMessages: [театрально вздыхает] chatTriggers: - театрально вздыхает @@ -36,7 +36,7 @@ id: Crying-apathy name: chat-emote-name-crying-apathy category: Vocal - chatMessages: [фальшиво плачет] + chatMessages: [фальшиво плачет] chatTriggers: - фальшиво плачет @@ -166,4 +166,46 @@ - гав! - рявкает - рявкает. - - рявкает! \ No newline at end of file + - рявкает! + +# IPC +- type: emote + id: SynthYes + name: chat-emote-name-synth-yes + category: Vocal + chatMessages: [утвердительно пищит] + chatTriggers: + - утвердительно пищит + - утвердительно пищит. + - соглашается + - соглашается. + - согласен + - согласен. + - подтверждает + - подтверждает. + +- type: emote + id: SynthNo + name: chat-emote-name-synth-no + category: Vocal + chatMessages: [отрицательно пищит] + chatTriggers: + - отрицательно пищит + - отрицательно пищит. + - отрицает + - отрицает. + - не соглашается + - не соглашается. + - не согласен + - не согласен. + +- type: emote + id: SighBuzz + name: chat-emote-name-sigh-buzz + category: Vocal + chatMessages: [раздражённо жужжит] + chatTriggers: + - раздражённо жужжит + - раздражённо жужжит. + - раздраженно жужжит + - раздраженно жужжит. diff --git a/Resources/Prototypes/ADT/Wires/layouts.yml b/Resources/Prototypes/ADT/Wires/layouts.yml new file mode 100644 index 00000000000..02d3a19e6e6 --- /dev/null +++ b/Resources/Prototypes/ADT/Wires/layouts.yml @@ -0,0 +1,4 @@ +# Simple Station + +- type: wireLayout + id: IPC diff --git a/Resources/Prototypes/ADT/tags.yml b/Resources/Prototypes/ADT/tags.yml new file mode 100644 index 00000000000..c2f4fe3da9d --- /dev/null +++ b/Resources/Prototypes/ADT/tags.yml @@ -0,0 +1,2 @@ +- type: Tag + id: ADTMothFriendlyFood \ No newline at end of file diff --git a/Resources/Prototypes/Body/Organs/moth.yml b/Resources/Prototypes/Body/Organs/moth.yml index aef5576048d..a1deafddbc5 100644 --- a/Resources/Prototypes/Body/Organs/moth.yml +++ b/Resources/Prototypes/Body/Organs/moth.yml @@ -1,26 +1,26 @@ -- type: entity - id: OrganMothStomach - parent: [OrganAnimalStomach, OrganHumanStomach] - noSpawn: true - components: - - type: Stomach - specialDigestible: - tags: - - ClothMade - - Paper - - type: SolutionContainerManager - solutions: - stomach: - maxVol: 50 - food: - maxVol: 5 - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 5 - - type: Metabolizer - maxReagents: 3 - metabolizerTypes: [ Moth ] - removeEmpty: true - groups: - - id: Food - - id: Drink +# - type: entity +# id: OrganMothStomach +# parent: [OrganAnimalStomach, OrganHumanStomach] +# noSpawn: true +# components: +# - type: Stomach +# specialDigestible: +# tags: +# - ClothMade +# - Paper +# - type: SolutionContainerManager +# solutions: +# stomach: +# maxVol: 50 +# food: +# maxVol: 5 +# reagents: +# - ReagentId: UncookedAnimalProteins +# Quantity: 5 +# - type: Metabolizer +# maxReagents: 3 +# metabolizerTypes: [ Moth ] +# removeEmpty: true +# groups: +# - id: Food +# - id: Drink diff --git a/Resources/Prototypes/Body/Parts/moth.yml b/Resources/Prototypes/Body/Parts/moth.yml index bb96430383a..a7fb9d0f84f 100644 --- a/Resources/Prototypes/Body/Parts/moth.yml +++ b/Resources/Prototypes/Body/Parts/moth.yml @@ -1,120 +1,120 @@ -# TODO: Add descriptions (many) -# TODO BODY: Part damage -- type: entity - id: PartMoth - parent: [BaseItem, BasePart] - name: "moth body part" - abstract: true - components: - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 3 - - ReagentId: Blood - Quantity: 10 +# # TODO: Add descriptions (many) +# # TODO BODY: Part damage +# - type: entity +# id: PartMoth +# parent: [BaseItem, BasePart] +# name: "moth body part" +# abstract: true +# components: +# - type: Extractable +# juiceSolution: +# reagents: +# - ReagentId: Fat +# Quantity: 3 +# - ReagentId: Blood +# Quantity: 10 -- type: entity - id: TorsoMoth - name: "moth torso" - parent: [PartMoth, BaseTorso] - components: - - type: Sprite - sprite: Mobs/Species/Moth/parts.rsi - state: "torso_m" - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 10 - - ReagentId: Blood - Quantity: 20 +# - type: entity +# id: TorsoMoth +# name: "moth torso" +# parent: [PartMoth, BaseTorso] +# components: +# - type: Sprite +# sprite: Mobs/Species/Moth/parts.rsi +# state: "torso_m" +# - type: Extractable +# juiceSolution: +# reagents: +# - ReagentId: Fat +# Quantity: 10 +# - ReagentId: Blood +# Quantity: 20 -- type: entity - id: HeadMoth - name: "moth head" - parent: [PartMoth, BaseHead] - components: - - type: Sprite - sprite: Mobs/Species/Moth/parts.rsi - state: "head_m" - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 5 - - ReagentId: Blood - Quantity: 10 +# - type: entity +# id: HeadMoth +# name: "moth head" +# parent: [PartMoth, BaseHead] +# components: +# - type: Sprite +# sprite: Mobs/Species/Moth/parts.rsi +# state: "head_m" +# - type: Extractable +# juiceSolution: +# reagents: +# - ReagentId: Fat +# Quantity: 5 +# - ReagentId: Blood +# Quantity: 10 -- type: entity - id: LeftArmMoth - name: "left moth arm" - parent: [PartMoth, BaseLeftArm] - components: - - type: Sprite - sprite: Mobs/Species/Moth/parts.rsi - state: "l_arm" +# - type: entity +# id: LeftArmMoth +# name: "left moth arm" +# parent: [PartMoth, BaseLeftArm] +# components: +# - type: Sprite +# sprite: Mobs/Species/Moth/parts.rsi +# state: "l_arm" -- type: entity - id: RightArmMoth - name: "right moth arm" - parent: [PartMoth, BaseRightArm] - components: - - type: Sprite - sprite: Mobs/Species/Moth/parts.rsi - state: "r_arm" +# - type: entity +# id: RightArmMoth +# name: "right moth arm" +# parent: [PartMoth, BaseRightArm] +# components: +# - type: Sprite +# sprite: Mobs/Species/Moth/parts.rsi +# state: "r_arm" -- type: entity - id: LeftHandMoth - name: "left moth hand" - parent: [PartMoth, BaseLeftHand] - components: - - type: Sprite - sprite: Mobs/Species/Moth/parts.rsi - state: "l_hand" +# - type: entity +# id: LeftHandMoth +# name: "left moth hand" +# parent: [PartMoth, BaseLeftHand] +# components: +# - type: Sprite +# sprite: Mobs/Species/Moth/parts.rsi +# state: "l_hand" -- type: entity - id: RightHandMoth - name: "right moth hand" - parent: [PartMoth, BaseRightHand] - components: - - type: Sprite - sprite: Mobs/Species/Moth/parts.rsi - state: "r_hand" +# - type: entity +# id: RightHandMoth +# name: "right moth hand" +# parent: [PartMoth, BaseRightHand] +# components: +# - type: Sprite +# sprite: Mobs/Species/Moth/parts.rsi +# state: "r_hand" -- type: entity - id: LeftLegMoth - name: "left moth leg" - parent: [PartMoth, BaseLeftLeg] - components: - - type: Sprite - sprite: Mobs/Species/Moth/parts.rsi - state: "l_leg" +# - type: entity +# id: LeftLegMoth +# name: "left moth leg" +# parent: [PartMoth, BaseLeftLeg] +# components: +# - type: Sprite +# sprite: Mobs/Species/Moth/parts.rsi +# state: "l_leg" -- type: entity - id: RightLegMoth - name: "right moth leg" - parent: [PartMoth, BaseRightLeg] - components: - - type: Sprite - sprite: Mobs/Species/Moth/parts.rsi - state: "r_leg" +# - type: entity +# id: RightLegMoth +# name: "right moth leg" +# parent: [PartMoth, BaseRightLeg] +# components: +# - type: Sprite +# sprite: Mobs/Species/Moth/parts.rsi +# state: "r_leg" -- type: entity - id: LeftFootMoth - name: "left moth foot" - parent: [PartMoth, BaseLeftFoot] - components: - - type: Sprite - sprite: Mobs/Species/Moth/parts.rsi - state: "l_foot" +# - type: entity +# id: LeftFootMoth +# name: "left moth foot" +# parent: [PartMoth, BaseLeftFoot] +# components: +# - type: Sprite +# sprite: Mobs/Species/Moth/parts.rsi +# state: "l_foot" -- type: entity - id: RightFootMoth - name: "right moth foot" - parent: [PartMoth, BaseRightFoot] - components: - - type: Sprite - sprite: Mobs/Species/Moth/parts.rsi - state: "r_foot" +# - type: entity +# id: RightFootMoth +# name: "right moth foot" +# parent: [PartMoth, BaseRightFoot] +# components: +# - type: Sprite +# sprite: Mobs/Species/Moth/parts.rsi +# state: "r_foot" diff --git a/Resources/Prototypes/Body/Prototypes/moth.yml b/Resources/Prototypes/Body/Prototypes/moth.yml index 7ebeda7fefa..977cea2b4a1 100644 --- a/Resources/Prototypes/Body/Prototypes/moth.yml +++ b/Resources/Prototypes/Body/Prototypes/moth.yml @@ -1,49 +1,49 @@ -- type: body - id: Moth - name: "Moth" - root: torso - slots: - head: - part: HeadMoth - connections: - - torso - organs: - brain: OrganHumanBrain - eyes: OrganHumanEyes - torso: - part: TorsoMoth - organs: - heart: OrganAnimalHeart - lungs: OrganHumanLungs - stomach: OrganMothStomach - liver: OrganAnimalLiver - kidneys: OrganHumanKidneys - connections: - - right arm - - left arm - - right leg - - left leg - right arm: - part: RightArmMoth - connections: - - right hand - left arm: - part: LeftArmMoth - connections: - - left hand - right hand: - part: RightHandMoth - left hand: - part: LeftHandMoth - right leg: - part: RightLegMoth - connections: - - right foot - left leg: - part: LeftLegMoth - connections: - - left foot - right foot: - part: RightFootMoth - left foot: - part: LeftFootMoth +# - type: body +# id: Moth +# name: "Moth" +# root: torso +# slots: +# head: +# part: HeadMoth +# connections: +# - torso +# organs: +# brain: OrganHumanBrain +# eyes: OrganHumanEyes +# torso: +# part: TorsoMoth +# organs: +# heart: OrganAnimalHeart +# lungs: OrganHumanLungs +# stomach: OrganMothStomach +# liver: OrganAnimalLiver +# kidneys: OrganHumanKidneys +# connections: +# - right arm +# - left arm +# - right leg +# - left leg +# right arm: +# part: RightArmMoth +# connections: +# - right hand +# left arm: +# part: LeftArmMoth +# connections: +# - left hand +# right hand: +# part: RightHandMoth +# left hand: +# part: LeftHandMoth +# right leg: +# part: RightLegMoth +# connections: +# - right foot +# left leg: +# part: LeftLegMoth +# connections: +# - left foot +# right foot: +# part: RightFootMoth +# left foot: +# part: LeftFootMoth diff --git a/Resources/Prototypes/Damage/modifier_sets.yml b/Resources/Prototypes/Damage/modifier_sets.yml index 02223b6a9fe..b34c77efef0 100644 --- a/Resources/Prototypes/Damage/modifier_sets.yml +++ b/Resources/Prototypes/Damage/modifier_sets.yml @@ -183,12 +183,13 @@ Slash: 0.8 Heat: 1.5 Shock: 1.2 - -- type: damageModifierSet - id: Moth # Slightly worse at everything but cold - coefficients: - Cold: 0.7 - Heat: 1.3 + +## ADT Tweak - ЗАКОММЕНТИЛИ ДЛЯ ADT НИАН +# - type: damageModifierSet +# id: Moth # Slightly worse at everything but cold +# coefficients: +# Cold: 0.7 +# Heat: 1.3 - type: damageModifierSet id: Vox diff --git a/Resources/Prototypes/Datasets/Names/moth_first_female.yml b/Resources/Prototypes/Datasets/Names/moth_first_female.yml index ecdcc95475a..1183ff9ba0d 100644 --- a/Resources/Prototypes/Datasets/Names/moth_first_female.yml +++ b/Resources/Prototypes/Datasets/Names/moth_first_female.yml @@ -1,57 +1,57 @@ -- type: dataset - id: names_moth_first_female - values: - - Атропос # Acherontia atropos - - Бетулария # Biston betularia - - Дафне # Daphnis - - Дафнис - - Эурупта # Eurypteryx - - Эудрайс # Eudryas - - Ирис # Salassa iris - - Лакесис # Acherontia lachesis - - Луна # Actias luna - - Лиманция # Lymantria - - Лимантрия - - Рубикунда # Dryocampa rubicunda, "Rosy Maple" - - Роузи - - Мэппл - - Мима # Mimas - - Нефель # Nephele - - Космосома # Cosmosoma myrodora, "Scarlet-bodied wasp moth" - - Скарлет - - Стикс # Acherontia styx - - Аскалафа - - Долабрия - - Цисания - - Бруматта +# - type: dataset +# id: names_moth_first_female +# values: +# - Атропос # Acherontia atropos +# - Бетулария # Biston betularia +# - Дафне # Daphnis +# - Дафнис +# - Эурупта # Eurypteryx +# - Эудрайс # Eudryas +# - Ирис # Salassa iris +# - Лакесис # Acherontia lachesis +# - Луна # Actias luna +# - Лиманция # Lymantria +# - Лимантрия +# - Рубикунда # Dryocampa rubicunda, "Rosy Maple" +# - Роузи +# - Мэппл +# - Мима # Mimas +# - Нефель # Nephele +# - Космосома # Cosmosoma myrodora, "Scarlet-bodied wasp moth" +# - Скарлет +# - Стикс # Acherontia styx +# - Аскалафа +# - Долабрия +# - Цисания +# - Бруматта - # Other languages - - Авелиана # Galician "moth" (avelaíña) - - Фалена # Italian "winter moth" - - Менодора # Greek "moon gift" - - Моли # Romanian "moth" - - Полилла # Spanish "moth" +# # Other languages +# - Авелиана # Galician "moth" (avelaíña) +# - Фалена # Italian "winter moth" +# - Менодора # Greek "moon gift" +# - Моли # Romanian "moth" +# - Полилла # Spanish "moth" - # Myth and legend - - Атея # Greek mythological figure - - Алфея - - Аврора # Roman goddess of the dawn - - Хель # Greek mythological figure - - Селена # Greek goddess of the moon - - Никс # Greek goddess of the night +# # Myth and legend +# - Атея # Greek mythological figure +# - Алфея +# - Аврора # Roman goddess of the dawn +# - Хель # Greek mythological figure +# - Селена # Greek goddess of the moon +# - Никс # Greek goddess of the night - # Fun names - - Ангел - - Сэнди - - Либерти +# # Fun names +# - Ангел +# - Сэнди +# - Либерти - # Common names, filler - - Беатрикс - - Дейзи - - Элизабет - - Люси - - Руби - - Сара - - Сьенна - - Уиллоу - - Зои +# # Common names, filler +# - Беатрикс +# - Дейзи +# - Элизабет +# - Люси +# - Руби +# - Сара +# - Сьенна +# - Уиллоу +# - Зои diff --git a/Resources/Prototypes/Datasets/Names/moth_first_male.yml b/Resources/Prototypes/Datasets/Names/moth_first_male.yml index 82c9ac64630..7803c49ab7a 100644 --- a/Resources/Prototypes/Datasets/Names/moth_first_male.yml +++ b/Resources/Prototypes/Datasets/Names/moth_first_male.yml @@ -1,49 +1,49 @@ -- type: dataset - id: names_moth_first_male - values: - - Агриус # Agrius - - Атлас # Attacus atlas - - Аттакус # Attacus - - Цезарь # Attacus caesar - - Геркулес # Coscinocera hercules - - Раннох # Itame brunneata, "Rannoch Looper" - - Сократ # Acosmeryx socrates - - Солус # Saturniidae solus +# - type: dataset +# id: names_moth_first_male +# values: +# - Агриус # Agrius +# - Атлас # Attacus atlas +# - Аттакус # Attacus +# - Цезарь # Attacus caesar +# - Геркулес # Coscinocera hercules +# - Раннох # Itame brunneata, "Rannoch Looper" +# - Сократ # Acosmeryx socrates +# - Солус # Saturniidae solus - # Other languages - - Эш # Hebrew עש "moth" - - Азар # Persian "fire" - - Кайзер # German "emperor" descendant of the Latin caesar - - Раджас # Sanskrit "darkness" or "dust" - - Скорос # Greek "clothes moth" +# # Other languages +# - Эш # Hebrew עש "moth" +# - Азар # Persian "fire" +# - Кайзер # German "emperor" descendant of the Latin caesar +# - Раджас # Sanskrit "darkness" or "dust" +# - Скорос # Greek "clothes moth" - # Myth and legend - - Бладуд # legendary king of the Britons who crafted wings and died in his attempt at flight - - Дедал # father of Icarus - - Эребус # Greek primordial deity of darkness - - Икар # the classic - - Джатайу # Hindu figure, similar to Icarus - - Кохо # Japanese reading of 夸父(こほ) - - Куафу # Chinese giant 夸父, similar to Icarus - - Люцифер # more commonly-known fall-from-heaven figure - - Мерлин # Arthurian wizard - - Фаэтон # another Greek figure, similar to Icarus - - Волфорд # rendering of Bladud from the Welsh blaidd "wolf" + iudd "lord" +# # Myth and legend +# - Бладуд # legendary king of the Britons who crafted wings and died in his attempt at flight +# - Дедал # father of Icarus +# - Эребус # Greek primordial deity of darkness +# - Икар # the classic +# - Джатайу # Hindu figure, similar to Icarus +# - Кохо # Japanese reading of 夸父(こほ) +# - Куафу # Chinese giant 夸父, similar to Icarus +# - Люцифер # more commonly-known fall-from-heaven figure +# - Мерлин # Arthurian wizard +# - Фаэтон # another Greek figure, similar to Icarus +# - Волфорд # rendering of Bladud from the Welsh blaidd "wolf" + iudd "lord" - # Fun names - - Эйс - - Альтаир - - Дасти - - Гамбит - - Хоук - - Мотью - - Тимоти +# # Fun names +# - Эйс +# - Альтаир +# - Дасти +# - Гамбит +# - Хоук +# - Мотью +# - Тимоти - # Common names, filler - - Эшер - - Роман - - Исаак - - Самюэл - - Себастиан - - Сайлас - - Саймон +# # Common names, filler +# - Эшер +# - Роман +# - Исаак +# - Самюэл +# - Себастиан +# - Сайлас +# - Саймон diff --git a/Resources/Prototypes/Datasets/Names/moth_last.yml b/Resources/Prototypes/Datasets/Names/moth_last.yml index 4a2f9b3325f..f59eb69e8f4 100644 --- a/Resources/Prototypes/Datasets/Names/moth_last.yml +++ b/Resources/Prototypes/Datasets/Names/moth_last.yml @@ -1,44 +1,44 @@ -- type: dataset - id: names_moth_last - values: - - Одоратта # Ascalapha odorata - - Император # Saturniinae - - Сатурниина - - Плагодис # Plagodis dolabraria - - Темнора # Temnora - - Уста # Usta - - Агриппин # Thysania agrippina - - Оперофтера # Operophtera brumata - - Коциносера - - Брунеатта - - Акосмерикс - - Саттурнид - - Бистон - - Саласс - - Актияс - - Дриокамп - - Майродор - - Аккеронт +# - type: dataset +# id: names_moth_last +# values: +# - Одоратта # Ascalapha odorata +# - Император # Saturniinae +# - Сатурниина +# - Плагодис # Plagodis dolabraria +# - Темнора # Temnora +# - Уста # Usta +# - Агриппин # Thysania agrippina +# - Оперофтера # Operophtera brumata +# - Коциносера +# - Брунеатта +# - Акосмерикс +# - Саттурнид +# - Бистон +# - Саласс +# - Актияс +# - Дриокамп +# - Майродор +# - Аккеронт - # Other languages - - Эпиолос # Ancient Greek "moth" - - Молье # conceivably any Old Norse descendant of mǫlr but probably more Danish than anything. "oe" digraph for ø. - - Накфальтер # literal pseudo-translation of German Nachtfalter +# # Other languages +# - Эпиолос # Ancient Greek "moth" +# - Молье # conceivably any Old Norse descendant of mǫlr but probably more Danish than anything. "oe" digraph for ø. +# - Накфальтер # literal pseudo-translation of German Nachtfalter - # Myth and legend - - Геральд # belief of moths flying at night signalling the reception of a letter - - Леандер # Greek figure associated with Hero, and similar sounding to Oleander hawk-moth - - Мофман # split between being a myth reference and actual possible surname given the actual Goodman, Hoffman, Newman, Coleman, etc. +# # Myth and legend +# - Геральд # belief of moths flying at night signalling the reception of a letter +# - Леандер # Greek figure associated with Hero, and similar sounding to Oleander hawk-moth +# - Мофман # split between being a myth reference and actual possible surname given the actual Goodman, Hoffman, Newman, Coleman, etc. - # Fun names - - Кометрайдер - - Ивентайд - - Файрфлай - - Файрбруш - - Флеймкот - - Лайтвир - - Мунданс - - Найтвиш - - Оулбейн - - Сликтонг - - Спаркдроу +# # Fun names +# - Кометрайдер +# - Ивентайд +# - Файрфлай +# - Файрбруш +# - Флеймкот +# - Лайтвир +# - Мунданс +# - Найтвиш +# - Оулбейн +# - Сликтонг +# - Спаркдроу diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/moth.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/moth.yml index c1d5df24633..977dff2203d 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/moth.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/moth.yml @@ -1,1111 +1,1111 @@ -# Antennas -- type: marking - id: MothAntennasDefault - bodyPart: HeadTop - markingCategory: HeadTop - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_antennas.rsi - state: default - -- type: marking - id: MothAntennasCharred - bodyPart: HeadTop - markingCategory: HeadTop - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_antennas.rsi - state: charred - -- type: marking - id: MothAntennasDbushy - bodyPart: HeadTop - markingCategory: HeadTop - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_antennas.rsi - state: dbushy - -- type: marking - id: MothAntennasDcurvy - bodyPart: HeadTop - markingCategory: HeadTop - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_antennas.rsi - state: dcurvy - -- type: marking - id: MothAntennasDfan - bodyPart: HeadTop - markingCategory: HeadTop - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_antennas.rsi - state: dfan - -- type: marking - id: MothAntennasDpointy - bodyPart: HeadTop - markingCategory: HeadTop - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_antennas.rsi - state: dpointy - -- type: marking - id: MothAntennasFeathery - bodyPart: HeadTop - markingCategory: HeadTop - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_antennas.rsi - state: feathery - -- type: marking - id: MothAntennasFirewatch - bodyPart: HeadTop - markingCategory: HeadTop - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_antennas.rsi - state: firewatch - -- type: marking - id: MothAntennasGray - bodyPart: HeadTop - markingCategory: HeadTop - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_antennas.rsi - state: gray - -- type: marking - id: MothAntennasJungle - bodyPart: HeadTop - markingCategory: HeadTop - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_antennas.rsi - state: jungle - -- type: marking - id: MothAntennasMoffra - bodyPart: HeadTop - markingCategory: HeadTop - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_antennas.rsi - state: moffra - -- type: marking - id: MothAntennasOakworm - bodyPart: HeadTop - markingCategory: HeadTop - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_antennas.rsi - state: oakworm - -- type: marking - id: MothAntennasPlasmafire - bodyPart: HeadTop - markingCategory: HeadTop - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_antennas.rsi - state: plasmafire - -- type: marking - id: MothAntennasMaple - bodyPart: HeadTop - markingCategory: HeadTop - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_antennas.rsi - state: maple - -- type: marking - id: MothAntennasRoyal - bodyPart: HeadTop - markingCategory: HeadTop - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_antennas.rsi - state: royal - -- type: marking - id: MothAntennasStriped - bodyPart: HeadTop - markingCategory: HeadTop - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_antennas.rsi - state: striped - -- type: marking - id: MothAntennasWhitefly - bodyPart: HeadTop - markingCategory: HeadTop - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_antennas.rsi - state: whitefly - -- type: marking - id: MothAntennasWitchwing - bodyPart: HeadTop - markingCategory: HeadTop - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_antennas.rsi - state: witchwing - -- type: marking - id: MothAntennasUnderwing - bodyPart: HeadTop - markingCategory: HeadTop - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_antennas.rsi - state: underwing_primary - - sprite: Mobs/Customization/Moth/moth_antennas.rsi - state: underwing_secondary - -# Wings -- type: marking - id: MothWingsDefault - bodyPart: Tail - markingCategory: Tail - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: default - -- type: marking - id: MothWingsCharred - bodyPart: Tail - markingCategory: Tail - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: charred - -- type: marking - id: MothWingsDbushy - bodyPart: Tail - markingCategory: Tail - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: dbushy_primary - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: dbushy_secondary - -- type: marking - id: MothWingsDeathhead - bodyPart: Tail - markingCategory: Tail - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: deathhead_primary - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: deathhead_secondary - -- type: marking - id: MothWingsFan - bodyPart: Tail - markingCategory: Tail - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: fan - -- type: marking - id: MothWingsDfan - bodyPart: Tail - markingCategory: Tail - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: dfan - -- type: marking - id: MothWingsFeathery - bodyPart: Tail - markingCategory: Tail - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: feathery - -- type: marking - id: MothWingsFirewatch - bodyPart: Tail - markingCategory: Tail - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: firewatch_primary - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: firewatch_secondary - -- type: marking - id: MothWingsGothic - bodyPart: Tail - markingCategory: Tail - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: gothic - -- type: marking - id: MothWingsJungle - bodyPart: Tail - markingCategory: Tail - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: jungle - -- type: marking - id: MothWingsLadybug - bodyPart: Tail - markingCategory: Tail - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: ladybug - -- type: marking - id: MothWingsMaple - bodyPart: Tail - markingCategory: Tail - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: maple - -- type: marking - id: MothWingsMoffra - bodyPart: Tail - markingCategory: Tail - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: moffra_primary - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: moffra_secondary - -- type: marking - id: MothWingsOakworm - bodyPart: Tail - markingCategory: Tail - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: oakworm - -- type: marking - id: MothWingsPlasmafire - bodyPart: Tail - markingCategory: Tail - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: plasmafire_primary - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: plasmafire_secondary - -- type: marking - id: MothWingsPointy - bodyPart: Tail - markingCategory: Tail - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: pointy - -- type: marking - id: MothWingsRoyal - bodyPart: Tail - markingCategory: Tail - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: royal_primary - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: royal_secondary - -- type: marking - id: MothWingsStellar - bodyPart: Tail - markingCategory: Tail - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: stellar - -- type: marking - id: MothWingsStriped - bodyPart: Tail - markingCategory: Tail - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: striped - -- type: marking - id: MothWingsSwirly - bodyPart: Tail - markingCategory: Tail - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: swirly - -- type: marking - id: MothWingsWhitefly - bodyPart: Tail - markingCategory: Tail - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: whitefly - -- type: marking - id: MothWingsWitchwing - bodyPart: Tail - markingCategory: Tail - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: witchwing - -- type: marking - id: MothWingsUnderwing - bodyPart: Tail - markingCategory: Tail - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: underwing_primary - - sprite: Mobs/Customization/Moth/moth_wings.rsi - state: underwing_secondary - -# Body markings: -# Charred -- type: marking - id: MothChestCharred - bodyPart: Chest - markingCategory: Chest - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: charred_chest - -- type: marking - id: MothHeadCharred - bodyPart: Head - markingCategory: Head - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: charred_head - -- type: marking - id: MothLLegCharred - bodyPart: LLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: charred_l_leg - -- type: marking - id: MothRLegCharred - bodyPart: RLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: charred_r_leg - -- type: marking - id: MothLArmCharred - bodyPart: LArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: charred_l_arm - -- type: marking - id: MothRArmCharred - bodyPart: RArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: charred_r_arm - -# Death's-Head -- type: marking - id: MothChestDeathhead - bodyPart: Chest - markingCategory: Chest - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: deathhead_chest - -- type: marking - id: MothHeadDeathhead - bodyPart: Head - markingCategory: Head - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: deathhead_head - -- type: marking - id: MothLLegDeathhead - bodyPart: LLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: deathhead_l_leg - -- type: marking - id: MothRLegDeathhead - bodyPart: RLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: deathhead_r_leg - -- type: marking - id: MothLArmDeathhead - bodyPart: LArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: deathhead_l_arm - -- type: marking - id: MothRArmDeathhead - bodyPart: RArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: deathhead_r_arm - -# Fan -- type: marking - id: MothChestFan - bodyPart: Chest - markingCategory: Chest - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: fan_chest - -- type: marking - id: MothHeadFan - bodyPart: Head - markingCategory: Head - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: fan_head - -- type: marking - id: MothLLegFan - bodyPart: LLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: fan_l_leg - -- type: marking - id: MothRLegFan - bodyPart: RLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: fan_r_leg - -- type: marking - id: MothLArmFan - bodyPart: LArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: fan_l_arm - -- type: marking - id: MothRArmFan - bodyPart: RArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: fan_r_arm - -# Firewatch -- type: marking - id: MothChestFirewatch - bodyPart: Chest - markingCategory: Chest - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: firewatch_chest - -- type: marking - id: MothHeadFirewatch - bodyPart: Head - markingCategory: Head - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: firewatch_head - -- type: marking - id: MothLLegFirewatch - bodyPart: LLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: firewatch_l_leg - -- type: marking - id: MothRLegFirewatch - bodyPart: RLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: firewatch_r_leg - -- type: marking - id: MothLArmFirewatch - bodyPart: LArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: firewatch_l_arm - -- type: marking - id: MothRArmFirewatch - bodyPart: RArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: firewatch_r_arm - -# Gothic -- type: marking - id: MothChestGothic - bodyPart: Chest - markingCategory: Chest - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: gothic_chest - -- type: marking - id: MothHeadGothic - bodyPart: Head - markingCategory: Head - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: gothic_head - -- type: marking - id: MothLLegGothic - bodyPart: LLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: gothic_l_leg - -- type: marking - id: MothRLegGothic - bodyPart: RLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: gothic_r_leg - -- type: marking - id: MothLArmGothic - bodyPart: LArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: gothic_l_arm - -- type: marking - id: MothRArmGothic - bodyPart: RArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: gothic_r_arm - -# Jungle -- type: marking - id: MothChestJungle - bodyPart: Chest - markingCategory: Chest - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: jungle_chest - -- type: marking - id: MothHeadJungle - bodyPart: Head - markingCategory: Head - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: jungle_head - -- type: marking - id: MothLLegJungle - bodyPart: LLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: jungle_l_leg - -- type: marking - id: MothRLegJungle - bodyPart: RLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: jungle_r_leg - -- type: marking - id: MothLArmJungle - bodyPart: LArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: jungle_l_arm - -- type: marking - id: MothRArmJungle - bodyPart: RArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: jungle_r_arm - -# Moonfly -- type: marking - id: MothChestMoonfly - bodyPart: Chest - markingCategory: Chest - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: moonfly_chest - -- type: marking - id: MothHeadMoonfly - bodyPart: Head - markingCategory: Head - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: moonfly_head - -- type: marking - id: MothLLegMoonfly - bodyPart: LLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: moonfly_l_leg - -- type: marking - id: MothRLegMoonfly - bodyPart: RLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: moonfly_r_leg - -- type: marking - id: MothLArmMoonfly - bodyPart: LArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: moonfly_l_arm - -- type: marking - id: MothRArmMoonfly - bodyPart: RArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: moonfly_r_arm - -# Oak Worm -- type: marking - id: MothChestOakworm - bodyPart: Chest - markingCategory: Chest - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: oakworm_chest - -- type: marking - id: MothHeadOakworm - bodyPart: Head - markingCategory: Head - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: oakworm_head - -- type: marking - id: MothLLegOakworm - bodyPart: LLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: oakworm_l_leg - -- type: marking - id: MothRLegOakworm - bodyPart: RLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: oakworm_r_leg - -- type: marking - id: MothLArmOakworm - bodyPart: LArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: oakworm_l_arm - -- type: marking - id: MothRArmOakworm - bodyPart: RArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: oakworm_r_arm - -# Pointy -- type: marking - id: MothChestPointy - bodyPart: Chest - markingCategory: Chest - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: pointy_chest - -- type: marking - id: MothHeadPointy - bodyPart: Head - markingCategory: Head - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: pointy_head - -- type: marking - id: MothLLegPointy - bodyPart: LLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: pointy_l_leg - -- type: marking - id: MothRLegPointy - bodyPart: RLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: pointy_r_leg - -- type: marking - id: MothLArmPointy - bodyPart: LArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: pointy_l_arm - -- type: marking - id: MothRArmPointy - bodyPart: RArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: pointy_r_arm - -# Ragged -- type: marking - id: MothChestRagged - bodyPart: Chest - markingCategory: Chest - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: ragged_chest - -- type: marking - id: MothHeadRagged - bodyPart: Head - markingCategory: Head - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: ragged_head - -- type: marking - id: MothLLegRagged - bodyPart: LLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: ragged_l_leg - -- type: marking - id: MothRLegRagged - bodyPart: RLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: ragged_r_leg - -- type: marking - id: MothLArmRagged - bodyPart: LArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: ragged_l_arm - -- type: marking - id: MothRArmRagged - bodyPart: RArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: ragged_r_arm - -# Royal -- type: marking - id: MothChestRoyal - bodyPart: Chest - markingCategory: Chest - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: royal_chest - -- type: marking - id: MothHeadRoyal - bodyPart: Head - markingCategory: Head - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: royal_head - -- type: marking - id: MothLLegRoyal - bodyPart: LLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: royal_l_leg - -- type: marking - id: MothRLegRoyal - bodyPart: RLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: royal_r_leg - -- type: marking - id: MothLArmRoyal - bodyPart: LArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: royal_l_arm - -- type: marking - id: MothRArmRoyal - bodyPart: RArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: royal_r_arm - -# White Fly -- type: marking - id: MothChestWhitefly - bodyPart: Chest - markingCategory: Chest - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: whitefly_chest - -- type: marking - id: MothHeadWhitefly - bodyPart: Head - markingCategory: Head - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: whitefly_head - -- type: marking - id: MothLLegWhitefly - bodyPart: LLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: whitefly_l_leg - -- type: marking - id: MothRLegWhitefly - bodyPart: RLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: whitefly_r_leg - -- type: marking - id: MothLArmWhitefly - bodyPart: LArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: whitefly_l_arm - -- type: marking - id: MothRArmWhitefly - bodyPart: RArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: whitefly_r_arm - -# Witch Wing -- type: marking - id: MothChestWitchwing - bodyPart: Chest - markingCategory: Chest - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: witchwing_chest - -- type: marking - id: MothHeadWitchwing - bodyPart: Head - markingCategory: Head - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: witchwing_head - -- type: marking - id: MothLLegWitchwing - bodyPart: LLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: witchwing_l_leg - -- type: marking - id: MothRLegWitchwing - bodyPart: RLeg - markingCategory: Legs - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: witchwing_r_leg - -- type: marking - id: MothLArmWitchwing - bodyPart: LArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: witchwing_l_arm - -- type: marking - id: MothRArmWitchwing - bodyPart: RArm - markingCategory: Arms - speciesRestriction: [Moth] - sprites: - - sprite: Mobs/Customization/Moth/moth_parts.rsi - state: witchwing_r_arm +# # Antennas +# - type: marking +# id: MothAntennasDefault +# bodyPart: HeadTop +# markingCategory: HeadTop +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_antennas.rsi +# state: default + +# - type: marking +# id: MothAntennasCharred +# bodyPart: HeadTop +# markingCategory: HeadTop +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_antennas.rsi +# state: charred + +# - type: marking +# id: MothAntennasDbushy +# bodyPart: HeadTop +# markingCategory: HeadTop +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_antennas.rsi +# state: dbushy + +# - type: marking +# id: MothAntennasDcurvy +# bodyPart: HeadTop +# markingCategory: HeadTop +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_antennas.rsi +# state: dcurvy + +# - type: marking +# id: MothAntennasDfan +# bodyPart: HeadTop +# markingCategory: HeadTop +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_antennas.rsi +# state: dfan + +# - type: marking +# id: MothAntennasDpointy +# bodyPart: HeadTop +# markingCategory: HeadTop +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_antennas.rsi +# state: dpointy + +# - type: marking +# id: MothAntennasFeathery +# bodyPart: HeadTop +# markingCategory: HeadTop +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_antennas.rsi +# state: feathery + +# - type: marking +# id: MothAntennasFirewatch +# bodyPart: HeadTop +# markingCategory: HeadTop +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_antennas.rsi +# state: firewatch + +# - type: marking +# id: MothAntennasGray +# bodyPart: HeadTop +# markingCategory: HeadTop +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_antennas.rsi +# state: gray + +# - type: marking +# id: MothAntennasJungle +# bodyPart: HeadTop +# markingCategory: HeadTop +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_antennas.rsi +# state: jungle + +# - type: marking +# id: MothAntennasMoffra +# bodyPart: HeadTop +# markingCategory: HeadTop +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_antennas.rsi +# state: moffra + +# - type: marking +# id: MothAntennasOakworm +# bodyPart: HeadTop +# markingCategory: HeadTop +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_antennas.rsi +# state: oakworm + +# - type: marking +# id: MothAntennasPlasmafire +# bodyPart: HeadTop +# markingCategory: HeadTop +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_antennas.rsi +# state: plasmafire + +# - type: marking +# id: MothAntennasMaple +# bodyPart: HeadTop +# markingCategory: HeadTop +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_antennas.rsi +# state: maple + +# - type: marking +# id: MothAntennasRoyal +# bodyPart: HeadTop +# markingCategory: HeadTop +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_antennas.rsi +# state: royal + +# - type: marking +# id: MothAntennasStriped +# bodyPart: HeadTop +# markingCategory: HeadTop +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_antennas.rsi +# state: striped + +# - type: marking +# id: MothAntennasWhitefly +# bodyPart: HeadTop +# markingCategory: HeadTop +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_antennas.rsi +# state: whitefly + +# - type: marking +# id: MothAntennasWitchwing +# bodyPart: HeadTop +# markingCategory: HeadTop +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_antennas.rsi +# state: witchwing + +# - type: marking +# id: MothAntennasUnderwing +# bodyPart: HeadTop +# markingCategory: HeadTop +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_antennas.rsi +# state: underwing_primary +# - sprite: Mobs/Customization/Moth/moth_antennas.rsi +# state: underwing_secondary + +# # Wings +# - type: marking +# id: MothWingsDefault +# bodyPart: Tail +# markingCategory: Tail +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: default + +# - type: marking +# id: MothWingsCharred +# bodyPart: Tail +# markingCategory: Tail +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: charred + +# - type: marking +# id: MothWingsDbushy +# bodyPart: Tail +# markingCategory: Tail +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: dbushy_primary +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: dbushy_secondary + +# - type: marking +# id: MothWingsDeathhead +# bodyPart: Tail +# markingCategory: Tail +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: deathhead_primary +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: deathhead_secondary + +# - type: marking +# id: MothWingsFan +# bodyPart: Tail +# markingCategory: Tail +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: fan + +# - type: marking +# id: MothWingsDfan +# bodyPart: Tail +# markingCategory: Tail +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: dfan + +# - type: marking +# id: MothWingsFeathery +# bodyPart: Tail +# markingCategory: Tail +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: feathery + +# - type: marking +# id: MothWingsFirewatch +# bodyPart: Tail +# markingCategory: Tail +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: firewatch_primary +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: firewatch_secondary + +# - type: marking +# id: MothWingsGothic +# bodyPart: Tail +# markingCategory: Tail +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: gothic + +# - type: marking +# id: MothWingsJungle +# bodyPart: Tail +# markingCategory: Tail +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: jungle + +# - type: marking +# id: MothWingsLadybug +# bodyPart: Tail +# markingCategory: Tail +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: ladybug + +# - type: marking +# id: MothWingsMaple +# bodyPart: Tail +# markingCategory: Tail +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: maple + +# - type: marking +# id: MothWingsMoffra +# bodyPart: Tail +# markingCategory: Tail +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: moffra_primary +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: moffra_secondary + +# - type: marking +# id: MothWingsOakworm +# bodyPart: Tail +# markingCategory: Tail +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: oakworm + +# - type: marking +# id: MothWingsPlasmafire +# bodyPart: Tail +# markingCategory: Tail +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: plasmafire_primary +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: plasmafire_secondary + +# - type: marking +# id: MothWingsPointy +# bodyPart: Tail +# markingCategory: Tail +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: pointy + +# - type: marking +# id: MothWingsRoyal +# bodyPart: Tail +# markingCategory: Tail +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: royal_primary +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: royal_secondary + +# - type: marking +# id: MothWingsStellar +# bodyPart: Tail +# markingCategory: Tail +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: stellar + +# - type: marking +# id: MothWingsStriped +# bodyPart: Tail +# markingCategory: Tail +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: striped + +# - type: marking +# id: MothWingsSwirly +# bodyPart: Tail +# markingCategory: Tail +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: swirly + +# - type: marking +# id: MothWingsWhitefly +# bodyPart: Tail +# markingCategory: Tail +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: whitefly + +# - type: marking +# id: MothWingsWitchwing +# bodyPart: Tail +# markingCategory: Tail +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: witchwing + +# - type: marking +# id: MothWingsUnderwing +# bodyPart: Tail +# markingCategory: Tail +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: underwing_primary +# - sprite: Mobs/Customization/Moth/moth_wings.rsi +# state: underwing_secondary + +# # Body markings: +# # Charred +# - type: marking +# id: MothChestCharred +# bodyPart: Chest +# markingCategory: Chest +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: charred_chest + +# - type: marking +# id: MothHeadCharred +# bodyPart: Head +# markingCategory: Head +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: charred_head + +# - type: marking +# id: MothLLegCharred +# bodyPart: LLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: charred_l_leg + +# - type: marking +# id: MothRLegCharred +# bodyPart: RLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: charred_r_leg + +# - type: marking +# id: MothLArmCharred +# bodyPart: LArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: charred_l_arm + +# - type: marking +# id: MothRArmCharred +# bodyPart: RArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: charred_r_arm + +# # Death's-Head +# - type: marking +# id: MothChestDeathhead +# bodyPart: Chest +# markingCategory: Chest +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: deathhead_chest + +# - type: marking +# id: MothHeadDeathhead +# bodyPart: Head +# markingCategory: Head +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: deathhead_head + +# - type: marking +# id: MothLLegDeathhead +# bodyPart: LLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: deathhead_l_leg + +# - type: marking +# id: MothRLegDeathhead +# bodyPart: RLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: deathhead_r_leg + +# - type: marking +# id: MothLArmDeathhead +# bodyPart: LArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: deathhead_l_arm + +# - type: marking +# id: MothRArmDeathhead +# bodyPart: RArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: deathhead_r_arm + +# # Fan +# - type: marking +# id: MothChestFan +# bodyPart: Chest +# markingCategory: Chest +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: fan_chest + +# - type: marking +# id: MothHeadFan +# bodyPart: Head +# markingCategory: Head +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: fan_head + +# - type: marking +# id: MothLLegFan +# bodyPart: LLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: fan_l_leg + +# - type: marking +# id: MothRLegFan +# bodyPart: RLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: fan_r_leg + +# - type: marking +# id: MothLArmFan +# bodyPart: LArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: fan_l_arm + +# - type: marking +# id: MothRArmFan +# bodyPart: RArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: fan_r_arm + +# # Firewatch +# - type: marking +# id: MothChestFirewatch +# bodyPart: Chest +# markingCategory: Chest +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: firewatch_chest + +# - type: marking +# id: MothHeadFirewatch +# bodyPart: Head +# markingCategory: Head +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: firewatch_head + +# - type: marking +# id: MothLLegFirewatch +# bodyPart: LLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: firewatch_l_leg + +# - type: marking +# id: MothRLegFirewatch +# bodyPart: RLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: firewatch_r_leg + +# - type: marking +# id: MothLArmFirewatch +# bodyPart: LArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: firewatch_l_arm + +# - type: marking +# id: MothRArmFirewatch +# bodyPart: RArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: firewatch_r_arm + +# # Gothic +# - type: marking +# id: MothChestGothic +# bodyPart: Chest +# markingCategory: Chest +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: gothic_chest + +# - type: marking +# id: MothHeadGothic +# bodyPart: Head +# markingCategory: Head +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: gothic_head + +# - type: marking +# id: MothLLegGothic +# bodyPart: LLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: gothic_l_leg + +# - type: marking +# id: MothRLegGothic +# bodyPart: RLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: gothic_r_leg + +# - type: marking +# id: MothLArmGothic +# bodyPart: LArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: gothic_l_arm + +# - type: marking +# id: MothRArmGothic +# bodyPart: RArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: gothic_r_arm + +# # Jungle +# - type: marking +# id: MothChestJungle +# bodyPart: Chest +# markingCategory: Chest +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: jungle_chest + +# - type: marking +# id: MothHeadJungle +# bodyPart: Head +# markingCategory: Head +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: jungle_head + +# - type: marking +# id: MothLLegJungle +# bodyPart: LLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: jungle_l_leg + +# - type: marking +# id: MothRLegJungle +# bodyPart: RLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: jungle_r_leg + +# - type: marking +# id: MothLArmJungle +# bodyPart: LArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: jungle_l_arm + +# - type: marking +# id: MothRArmJungle +# bodyPart: RArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: jungle_r_arm + +# # Moonfly +# - type: marking +# id: MothChestMoonfly +# bodyPart: Chest +# markingCategory: Chest +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: moonfly_chest + +# - type: marking +# id: MothHeadMoonfly +# bodyPart: Head +# markingCategory: Head +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: moonfly_head + +# - type: marking +# id: MothLLegMoonfly +# bodyPart: LLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: moonfly_l_leg + +# - type: marking +# id: MothRLegMoonfly +# bodyPart: RLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: moonfly_r_leg + +# - type: marking +# id: MothLArmMoonfly +# bodyPart: LArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: moonfly_l_arm + +# - type: marking +# id: MothRArmMoonfly +# bodyPart: RArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: moonfly_r_arm + +# # Oak Worm +# - type: marking +# id: MothChestOakworm +# bodyPart: Chest +# markingCategory: Chest +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: oakworm_chest + +# - type: marking +# id: MothHeadOakworm +# bodyPart: Head +# markingCategory: Head +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: oakworm_head + +# - type: marking +# id: MothLLegOakworm +# bodyPart: LLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: oakworm_l_leg + +# - type: marking +# id: MothRLegOakworm +# bodyPart: RLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: oakworm_r_leg + +# - type: marking +# id: MothLArmOakworm +# bodyPart: LArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: oakworm_l_arm + +# - type: marking +# id: MothRArmOakworm +# bodyPart: RArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: oakworm_r_arm + +# # Pointy +# - type: marking +# id: MothChestPointy +# bodyPart: Chest +# markingCategory: Chest +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: pointy_chest + +# - type: marking +# id: MothHeadPointy +# bodyPart: Head +# markingCategory: Head +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: pointy_head + +# - type: marking +# id: MothLLegPointy +# bodyPart: LLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: pointy_l_leg + +# - type: marking +# id: MothRLegPointy +# bodyPart: RLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: pointy_r_leg + +# - type: marking +# id: MothLArmPointy +# bodyPart: LArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: pointy_l_arm + +# - type: marking +# id: MothRArmPointy +# bodyPart: RArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: pointy_r_arm + +# # Ragged +# - type: marking +# id: MothChestRagged +# bodyPart: Chest +# markingCategory: Chest +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: ragged_chest + +# - type: marking +# id: MothHeadRagged +# bodyPart: Head +# markingCategory: Head +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: ragged_head + +# - type: marking +# id: MothLLegRagged +# bodyPart: LLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: ragged_l_leg + +# - type: marking +# id: MothRLegRagged +# bodyPart: RLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: ragged_r_leg + +# - type: marking +# id: MothLArmRagged +# bodyPart: LArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: ragged_l_arm + +# - type: marking +# id: MothRArmRagged +# bodyPart: RArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: ragged_r_arm + +# # Royal +# - type: marking +# id: MothChestRoyal +# bodyPart: Chest +# markingCategory: Chest +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: royal_chest + +# - type: marking +# id: MothHeadRoyal +# bodyPart: Head +# markingCategory: Head +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: royal_head + +# - type: marking +# id: MothLLegRoyal +# bodyPart: LLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: royal_l_leg + +# - type: marking +# id: MothRLegRoyal +# bodyPart: RLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: royal_r_leg + +# - type: marking +# id: MothLArmRoyal +# bodyPart: LArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: royal_l_arm + +# - type: marking +# id: MothRArmRoyal +# bodyPart: RArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: royal_r_arm + +# # White Fly +# - type: marking +# id: MothChestWhitefly +# bodyPart: Chest +# markingCategory: Chest +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: whitefly_chest + +# - type: marking +# id: MothHeadWhitefly +# bodyPart: Head +# markingCategory: Head +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: whitefly_head + +# - type: marking +# id: MothLLegWhitefly +# bodyPart: LLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: whitefly_l_leg + +# - type: marking +# id: MothRLegWhitefly +# bodyPart: RLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: whitefly_r_leg + +# - type: marking +# id: MothLArmWhitefly +# bodyPart: LArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: whitefly_l_arm + +# - type: marking +# id: MothRArmWhitefly +# bodyPart: RArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: whitefly_r_arm + +# # Witch Wing +# - type: marking +# id: MothChestWitchwing +# bodyPart: Chest +# markingCategory: Chest +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: witchwing_chest + +# - type: marking +# id: MothHeadWitchwing +# bodyPart: Head +# markingCategory: Head +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: witchwing_head + +# - type: marking +# id: MothLLegWitchwing +# bodyPart: LLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: witchwing_l_leg + +# - type: marking +# id: MothRLegWitchwing +# bodyPart: RLeg +# markingCategory: Legs +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: witchwing_r_leg + +# - type: marking +# id: MothLArmWitchwing +# bodyPart: LArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: witchwing_l_arm + +# - type: marking +# id: MothRArmWitchwing +# bodyPart: RArm +# markingCategory: Arms +# speciesRestriction: [Moth] +# sprites: +# - sprite: Mobs/Customization/Moth/moth_parts.rsi +# state: witchwing_r_arm diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index 0650eddb408..c1d53355a44 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -130,6 +130,7 @@ - KnockedDown - SlowedDown - Flashed + - SeeingStatic # ADT IPC (shaders) - type: TypingIndicator proto: robot - type: Speech diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index baf7d7ade0b..29a4a036dbf 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -511,9 +511,11 @@ accent: zombieMoth - type: Vocal sounds: - Male: UnisexMoth - Female: UnisexMoth - Unsexed: UnisexMoth + # Start-ADT Tweak Нианы + Male: MaleMoth + Female: FemaleMoth + Unsexed: MaleMoth + # End-ADT Tweak Нианы wilhelmProbability: 0.001 - type: MobPrice price: 150 diff --git a/Resources/Prototypes/Entities/Mobs/Player/moth.yml b/Resources/Prototypes/Entities/Mobs/Player/moth.yml index ea01677626d..431843d4edc 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/moth.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/moth.yml @@ -1,5 +1,5 @@ -- type: entity - save: false - name: Urist McFluff - parent: BaseMobMoth - id: MobMoth +# - type: entity +# save: false +# name: Urist McFluff +# parent: BaseMobMoth +# id: MobMoth diff --git a/Resources/Prototypes/Entities/Mobs/Species/moth.yml b/Resources/Prototypes/Entities/Mobs/Species/moth.yml index a2730b6d7e9..327ded7cf31 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/moth.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/moth.yml @@ -1,135 +1,136 @@ -- type: entity - save: false - name: Urist McFluff - parent: BaseMobSpeciesOrganic - id: BaseMobMoth - abstract: true - components: - - type: HumanoidAppearance - species: Moth - hideLayersOnEquip: - - HeadTop - - type: Hunger - - type: Thirst - - type: Icon - sprite: Mobs/Species/Moth/parts.rsi - state: full - - type: Body - prototype: Moth - requiredLegs: 2 - - type: Damageable - damageContainer: Biological - damageModifierSet: Moth - - type: ZombieAccentOverride - accent: zombieMoth - - type: Speech - speechVerb: Moth - allowedEmotes: ['Chitter', 'Squeak'] - - type: TypingIndicator - proto: moth - - type: Butcherable - butcheringType: Spike - spawned: - - id: FoodMeat - amount: 5 - - type: Bloodstream - bloodReagent: InsectBlood - - type: DamageVisuals - damageOverlayGroups: - Brute: - sprite: Mobs/Effects/brute_damage.rsi - color: "#808A51" - - type: MothAccent - - type: Vocal - sounds: - Male: UnisexMoth - Female: UnisexMoth - Unsexed: UnisexMoth - - type: MovementSpeedModifier - weightlessAcceleration: 1.5 # Move around more easily in space. - weightlessFriction: 1 - weightlessModifier: 1 - - type: Flammable - damage: - types: - Heat: 4.5 # moths burn more easily - - type: Temperature # Moths hate the heat and thrive in the cold. - heatDamageThreshold: 320 - coldDamageThreshold: 230 - currentTemperature: 310.15 - specificHeat: 46 - coldDamage: - types: - Cold : 0.05 #per second, scales with temperature & other constants - heatDamage: - types: - Heat : 3 #per second, scales with temperature & other constants - - type: Sprite # sprite again because we want different layer ordering - 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 #PJB on stencil clear being on the left leg: "...this is 'fine'" -https://github.com/space-wizards/space-station-14/pull/12217#issuecomment-1291677115 - # its fine, but its still very stupid that it has to be done like this instead of allowing sprites to just directly insert a stencil clear. - # sprite refactor when - state: l_leg - - shader: StencilMask - map: [ "enum.HumanoidVisualLayers.StencilMask" ] - sprite: Mobs/Customization/masking_helpers.rsi - state: unisex_full - visible: false - - map: [ "jumpsuit" ] - - map: [ "enum.HumanoidVisualLayers.LHand" ] - - map: [ "enum.HumanoidVisualLayers.RHand" ] - - map: [ "enum.HumanoidVisualLayers.LFoot" ] - - map: [ "enum.HumanoidVisualLayers.RFoot" ] - - map: [ "enum.HumanoidVisualLayers.Handcuffs" ] - color: "#ffffff" - sprite: Objects/Misc/handcuffs.rsi - state: body-overlay-2 - visible: false - - map: [ "gloves" ] - - map: [ "shoes" ] - - map: [ "ears" ] - - map: [ "outerClothing" ] - - map: [ "eyes" ] - - map: [ "belt" ] - - map: [ "id" ] - - map: [ "enum.HumanoidVisualLayers.Tail" ] #in the utopian future we should probably have a wings enum inserted here so everyhting doesn't break - - 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: [ "clownedon" ] # Dynamically generated - sprite: "Effects/creampie.rsi" - state: "creampie_moth" - visible: false - - type: LanguageSpeaker # Frontier - speaks: - - GalacticCommon - - Nian - understands: - - GalacticCommon - - Nian +## ADT Tweak - ЗАКОММЕНТИЛИ ДЛЯ ADT НИАН +# - type: entity +# save: false +# name: Urist McFluff +# parent: BaseMobSpeciesOrganic +# id: BaseMobMoth +# abstract: true +# components: +# - type: HumanoidAppearance +# species: Moth +# hideLayersOnEquip: +# - HeadTop +# - type: Hunger +# - type: Thirst +# - type: Icon +# sprite: Mobs/Species/Moth/parts.rsi +# state: full +# - type: Body +# prototype: Moth +# requiredLegs: 2 +# - type: Damageable +# damageContainer: Biological +# damageModifierSet: Moth +# - type: ZombieAccentOverride +# accent: zombieMoth +# - type: Speech +# speechVerb: Moth +# allowedEmotes: ['Chitter', 'Squeak'] +# - type: TypingIndicator +# proto: moth +# - type: Butcherable +# butcheringType: Spike +# spawned: +# - id: FoodMeat +# amount: 5 +# - type: Bloodstream +# bloodReagent: InsectBlood +# - type: DamageVisuals +# damageOverlayGroups: +# Brute: +# sprite: Mobs/Effects/brute_damage.rsi +# color: "#808A51" +# - type: MothAccent +# - type: Vocal +# sounds: +# Male: UnisexMoth +# Female: UnisexMoth +# Unsexed: UnisexMoth +# - type: MovementSpeedModifier +# weightlessAcceleration: 1.5 # Move around more easily in space. +# weightlessFriction: 1 +# weightlessModifier: 1 +# - type: Flammable +# damage: +# types: +# Heat: 4.5 # moths burn more easily +# - type: Temperature # Moths hate the heat and thrive in the cold. +# heatDamageThreshold: 320 +# coldDamageThreshold: 230 +# currentTemperature: 310.15 +# specificHeat: 46 +# coldDamage: +# types: +# Cold : 0.05 #per second, scales with temperature & other constants +# heatDamage: +# types: +# Heat : 3 #per second, scales with temperature & other constants +# - type: Sprite # sprite again because we want different layer ordering +# 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 #PJB on stencil clear being on the left leg: "...this is 'fine'" -https://github.com/space-wizards/space-station-14/pull/12217#issuecomment-1291677115 +# # its fine, but its still very stupid that it has to be done like this instead of allowing sprites to just directly insert a stencil clear. +# # sprite refactor when +# state: l_leg +# - shader: StencilMask +# map: [ "enum.HumanoidVisualLayers.StencilMask" ] +# sprite: Mobs/Customization/masking_helpers.rsi +# state: unisex_full +# visible: false +# - map: [ "jumpsuit" ] +# - map: [ "enum.HumanoidVisualLayers.LHand" ] +# - map: [ "enum.HumanoidVisualLayers.RHand" ] +# - map: [ "enum.HumanoidVisualLayers.LFoot" ] +# - map: [ "enum.HumanoidVisualLayers.RFoot" ] +# - map: [ "enum.HumanoidVisualLayers.Handcuffs" ] +# color: "#ffffff" +# sprite: Objects/Misc/handcuffs.rsi +# state: body-overlay-2 +# visible: false +# - map: [ "gloves" ] +# - map: [ "shoes" ] +# - map: [ "ears" ] +# - map: [ "outerClothing" ] +# - map: [ "eyes" ] +# - map: [ "belt" ] +# - map: [ "id" ] +# - map: [ "enum.HumanoidVisualLayers.Tail" ] #in the utopian future we should probably have a wings enum inserted here so everyhting doesn't break +# - 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: [ "clownedon" ] # Dynamically generated +# sprite: "Effects/creampie.rsi" +# state: "creampie_moth" +# visible: false +# - type: LanguageSpeaker # Frontier +# speaks: +# - GalacticCommon +# - Nian +# understands: +# - GalacticCommon +# - Nian -- type: entity - parent: BaseSpeciesDummy - id: MobMothDummy - noSpawn: true - components: - - type: HumanoidAppearance - species: Moth +# - type: entity +# parent: BaseSpeciesDummy +# id: MobMothDummy +# noSpawn: true +# components: +# - type: HumanoidAppearance +# species: Moth diff --git a/Resources/Prototypes/Entities/Objects/Devices/encryption_keys.yml b/Resources/Prototypes/Entities/Objects/Devices/encryption_keys.yml index 4b2907f1ab6..a4afd95feb1 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/encryption_keys.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/encryption_keys.yml @@ -164,6 +164,7 @@ - type: EncryptionKey channels: - Science + - Binary # ADT Tweak Roboticist defaultChannel: Science - type: Sprite layers: diff --git a/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml b/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml index 3f72fa10fad..355ce3c8789 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml @@ -29,6 +29,21 @@ - type: PhysicalComposition materialComposition: Steel: 15 + # ADT Tweak Start: IPC + - type: Healing # cables can be used to heal IPC + damageContainers: + - ADTSiliconDamageContainer + damage: + types: + Heat: -5 + Cold: -5 + Shock: -5 + Caustic: -5 + # healingBeginSound: + # path: "/Audio/Items/Medical/ointment_begin.ogg" + # healingEndSound: + # path: "/Audio/Items/Medical/ointment_end.ogg" + # ADT Tweak End - type: entity id: CableHVStack diff --git a/Resources/Prototypes/Entities/Structures/Power/apc.yml b/Resources/Prototypes/Entities/Structures/Power/apc.yml index 0948cdb4cc4..c53160376df 100644 --- a/Resources/Prototypes/Entities/Structures/Power/apc.yml +++ b/Resources/Prototypes/Entities/Structures/Power/apc.yml @@ -143,6 +143,8 @@ priority: 1 - type: StaticPrice price: 500 + - type: BatteryDrinkerSource # ADT - IPC + maxAmount: 10000 # APC under construction - type: entity diff --git a/Resources/Prototypes/Roles/Jobs/departments.yml b/Resources/Prototypes/Roles/Jobs/departments.yml index 36f44a6bb9a..62e027d9e2d 100644 --- a/Resources/Prototypes/Roles/Jobs/departments.yml +++ b/Resources/Prototypes/Roles/Jobs/departments.yml @@ -91,6 +91,7 @@ - ResearchDirector - Scientist - ResearchAssistant + - ADTRoboticist # ADT-Roles - type: department id: Specific diff --git a/Resources/Prototypes/Species/moth.yml b/Resources/Prototypes/Species/moth.yml index b474f613f84..3a4310872ac 100644 --- a/Resources/Prototypes/Species/moth.yml +++ b/Resources/Prototypes/Species/moth.yml @@ -1,160 +1,161 @@ -- type: species - id: Moth - name: species-name-moth - roundStart: true - prototype: MobMoth - sprites: MobMothSprites - defaultSkinTone: "#ffda93" - markingLimits: MobMothMarkingLimits - dollPrototype: MobMothDummy - skinColoration: Hues - maleFirstNames: names_moth_first_male - femaleFirstNames: names_moth_first_female - maleLastNames: names_moth_last # Corvax-LastnameGender - femaleLastNames: names_moth_last # Corvax-LastnameGender - -- type: speciesBaseSprites - id: MobMothSprites - sprites: - Head: MobMothHead - Snout: MobHumanoidAnyMarking - Chest: MobMothTorso - HeadTop: MobHumanoidAnyMarking - HeadSide: MobHumanoidAnyMarking - Tail: MobHumanoidAnyMarking - Eyes: MobMothEyes - LArm: MobMothLArm - RArm: MobMothRArm - LHand: MobMothLHand - RHand: MobMothRHand - LLeg: MobMothLLeg - RLeg: MobMothRLeg - LFoot: MobMothLFoot - RFoot: MobMothRFoot - -- type: humanoidBaseSprite - id: MobMothEyes - baseSprite: - sprite: Mobs/Species/Moth/parts.rsi - state: eyes - -- type: markingPoints - id: MobMothMarkingLimits - onlyWhitelisted: true - points: - Hair: - points: 0 - required: false - FacialHair: - points: 0 - required: false - Tail: - points: 1 - required: true - defaultMarkings: [ MothWingsDefault ] - Snout: - points: 1 - required: false - HeadTop: - points: 1 - required: true - defaultMarkings: [ MothAntennasDefault ] - HeadSide: - points: 1 - required: false - Head: - points: 1 - required: false - Chest: - points: 1 - required: false - Legs: - points: 2 - required: false - Arms: - points: 2 - required: false - -- type: humanoidBaseSprite - id: MobMothHead - baseSprite: - sprite: Mobs/Species/Moth/parts.rsi - state: head_m - -- type: humanoidBaseSprite - id: MobMothHeadMale - baseSprite: - sprite: Mobs/Species/Moth/parts.rsi - state: head_m - -- type: humanoidBaseSprite - id: MobMothHeadFemale - baseSprite: - sprite: Mobs/Species/Moth/parts.rsi - state: head_f - -- type: humanoidBaseSprite - id: MobMothTorso - baseSprite: - sprite: Mobs/Species/Moth/parts.rsi - state: torso_m - -- type: humanoidBaseSprite - id: MobMothTorsoMale - baseSprite: - sprite: Mobs/Species/Moth/parts.rsi - state: torso_m - -- type: humanoidBaseSprite - id: MobMothTorsoFemale - baseSprite: - sprite: Mobs/Species/Moth/parts.rsi - state: torso_f - -- type: humanoidBaseSprite - id: MobMothLLeg - baseSprite: - sprite: Mobs/Species/Moth/parts.rsi - state: l_leg - -- type: humanoidBaseSprite - id: MobMothLHand - baseSprite: - sprite: Mobs/Species/Moth/parts.rsi - state: l_hand - -- type: humanoidBaseSprite - id: MobMothLArm - baseSprite: - sprite: Mobs/Species/Moth/parts.rsi - state: l_arm - -- type: humanoidBaseSprite - id: MobMothLFoot - baseSprite: - sprite: Mobs/Species/Moth/parts.rsi - state: l_foot - -- type: humanoidBaseSprite - id: MobMothRLeg - baseSprite: - sprite: Mobs/Species/Moth/parts.rsi - state: r_leg - -- type: humanoidBaseSprite - id: MobMothRHand - baseSprite: - sprite: Mobs/Species/Moth/parts.rsi - state: r_hand - -- type: humanoidBaseSprite - id: MobMothRArm - baseSprite: - sprite: Mobs/Species/Moth/parts.rsi - state: r_arm - -- type: humanoidBaseSprite - id: MobMothRFoot - baseSprite: - sprite: Mobs/Species/Moth/parts.rsi - state: r_foot +## ADT Tweak - ЗАКОММЕНТИЛИ ДЛЯ ADT НИАН +# - type: species +# id: Moth +# name: species-name-moth +# roundStart: true +# prototype: MobMoth +# sprites: MobMothSprites +# defaultSkinTone: "#ffda93" +# markingLimits: MobMothMarkingLimits +# dollPrototype: MobMothDummy +# skinColoration: Hues +# maleFirstNames: names_moth_first_male +# femaleFirstNames: names_moth_first_female +# maleLastNames: names_moth_last # Corvax-LastnameGender +# femaleLastNames: names_moth_last # Corvax-LastnameGender + +# - type: speciesBaseSprites +# id: MobMothSprites +# sprites: +# Head: MobMothHead +# Snout: MobHumanoidAnyMarking +# Chest: MobMothTorso +# HeadTop: MobHumanoidAnyMarking +# HeadSide: MobHumanoidAnyMarking +# Tail: MobHumanoidAnyMarking +# Eyes: MobMothEyes +# LArm: MobMothLArm +# RArm: MobMothRArm +# LHand: MobMothLHand +# RHand: MobMothRHand +# LLeg: MobMothLLeg +# RLeg: MobMothRLeg +# LFoot: MobMothLFoot +# RFoot: MobMothRFoot + +# - type: humanoidBaseSprite +# id: MobMothEyes +# baseSprite: +# sprite: Mobs/Species/Moth/parts.rsi +# state: eyes + +# - type: markingPoints +# id: MobMothMarkingLimits +# onlyWhitelisted: true +# points: +# Hair: +# points: 0 +# required: false +# FacialHair: +# points: 0 +# required: false +# Tail: +# points: 1 +# required: true +# defaultMarkings: [ MothWingsDefault ] +# Snout: +# points: 1 +# required: false +# HeadTop: +# points: 1 +# required: true +# defaultMarkings: [ MothAntennasDefault ] +# HeadSide: +# points: 1 +# required: false +# Head: +# points: 1 +# required: false +# Chest: +# points: 1 +# required: false +# Legs: +# points: 2 +# required: false +# Arms: +# points: 2 +# required: false + +# - type: humanoidBaseSprite +# id: MobMothHead +# baseSprite: +# sprite: Mobs/Species/Moth/parts.rsi +# state: head_m + +# - type: humanoidBaseSprite +# id: MobMothHeadMale +# baseSprite: +# sprite: Mobs/Species/Moth/parts.rsi +# state: head_m + +# - type: humanoidBaseSprite +# id: MobMothHeadFemale +# baseSprite: +# sprite: Mobs/Species/Moth/parts.rsi +# state: head_f + +# - type: humanoidBaseSprite +# id: MobMothTorso +# baseSprite: +# sprite: Mobs/Species/Moth/parts.rsi +# state: torso_m + +# - type: humanoidBaseSprite +# id: MobMothTorsoMale +# baseSprite: +# sprite: Mobs/Species/Moth/parts.rsi +# state: torso_m + +# - type: humanoidBaseSprite +# id: MobMothTorsoFemale +# baseSprite: +# sprite: Mobs/Species/Moth/parts.rsi +# state: torso_f + +# - type: humanoidBaseSprite +# id: MobMothLLeg +# baseSprite: +# sprite: Mobs/Species/Moth/parts.rsi +# state: l_leg + +# - type: humanoidBaseSprite +# id: MobMothLHand +# baseSprite: +# sprite: Mobs/Species/Moth/parts.rsi +# state: l_hand + +# - type: humanoidBaseSprite +# id: MobMothLArm +# baseSprite: +# sprite: Mobs/Species/Moth/parts.rsi +# state: l_arm + +# - type: humanoidBaseSprite +# id: MobMothLFoot +# baseSprite: +# sprite: Mobs/Species/Moth/parts.rsi +# state: l_foot + +# - type: humanoidBaseSprite +# id: MobMothRLeg +# baseSprite: +# sprite: Mobs/Species/Moth/parts.rsi +# state: r_leg + +# - type: humanoidBaseSprite +# id: MobMothRHand +# baseSprite: +# sprite: Mobs/Species/Moth/parts.rsi +# state: r_hand + +# - type: humanoidBaseSprite +# id: MobMothRArm +# baseSprite: +# sprite: Mobs/Species/Moth/parts.rsi +# state: r_arm + +# - type: humanoidBaseSprite +# id: MobMothRFoot +# baseSprite: +# sprite: Mobs/Species/Moth/parts.rsi +# state: r_foot diff --git a/Resources/Textures/ADT/Interface/Alerts/charge.rsi/charge-empty.png b/Resources/Textures/ADT/Interface/Alerts/charge.rsi/charge-empty.png new file mode 100644 index 00000000000..69888305555 Binary files /dev/null and b/Resources/Textures/ADT/Interface/Alerts/charge.rsi/charge-empty.png differ diff --git a/Resources/Textures/ADT/Interface/Alerts/charge.rsi/charge0.png b/Resources/Textures/ADT/Interface/Alerts/charge.rsi/charge0.png new file mode 100644 index 00000000000..e0604dae992 Binary files /dev/null and b/Resources/Textures/ADT/Interface/Alerts/charge.rsi/charge0.png differ diff --git a/Resources/Textures/ADT/Interface/Alerts/charge.rsi/charge1.png b/Resources/Textures/ADT/Interface/Alerts/charge.rsi/charge1.png new file mode 100644 index 00000000000..fe810021484 Binary files /dev/null and b/Resources/Textures/ADT/Interface/Alerts/charge.rsi/charge1.png differ diff --git a/Resources/Textures/ADT/Interface/Alerts/charge.rsi/charge2.png b/Resources/Textures/ADT/Interface/Alerts/charge.rsi/charge2.png new file mode 100644 index 00000000000..381741aba48 Binary files /dev/null and b/Resources/Textures/ADT/Interface/Alerts/charge.rsi/charge2.png differ diff --git a/Resources/Textures/ADT/Interface/Alerts/charge.rsi/charge3.png b/Resources/Textures/ADT/Interface/Alerts/charge.rsi/charge3.png new file mode 100644 index 00000000000..467cb413322 Binary files /dev/null and b/Resources/Textures/ADT/Interface/Alerts/charge.rsi/charge3.png differ diff --git a/Resources/Textures/ADT/Interface/Alerts/charge.rsi/charge4.png b/Resources/Textures/ADT/Interface/Alerts/charge.rsi/charge4.png new file mode 100644 index 00000000000..f5ac42a38a5 Binary files /dev/null and b/Resources/Textures/ADT/Interface/Alerts/charge.rsi/charge4.png differ diff --git a/Resources/Textures/ADT/Interface/Alerts/charge.rsi/meta.json b/Resources/Textures/ADT/Interface/Alerts/charge.rsi/meta.json new file mode 100644 index 00000000000..f378fc6831c --- /dev/null +++ b/Resources/Textures/ADT/Interface/Alerts/charge.rsi/meta.json @@ -0,0 +1,35 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Original taken from Yogstation at https://github.com/yogstation13/Yogstation/commit/aaaed39293dd0b9edace6e2fe2017203e7352ef2, resprite by _kote", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "charge0" + }, + { + "name": "charge1", + "delays": [ + [ + 0.5, + 0.5 + ] + ] + }, + { + "name": "charge2" + }, + { + "name": "charge3" + }, + { + "name": "charge4" + }, + { + "name": "charge-empty" + } + ] +} diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_antlers.png b/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_antlers.png new file mode 100644 index 00000000000..125f9cf913e Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_antlers.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_crowned.png b/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_crowned.png new file mode 100644 index 00000000000..2fd0cdd06d2 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_crowned.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_cyberhead.png b/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_cyberhead.png new file mode 100644 index 00000000000..c3d1111199e Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_cyberhead.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_droneeyes.png b/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_droneeyes.png new file mode 100644 index 00000000000..5b2a67a813a Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_droneeyes.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_light.png b/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_light.png new file mode 100644 index 00000000000..91f5fd25e78 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_light.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_lightb.png b/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_lightb.png new file mode 100644 index 00000000000..bc1133d8d3c Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_lightb.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_sidelights.png b/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_sidelights.png new file mode 100644 index 00000000000..7a1c31e45e4 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_sidelights.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_tesla.png b/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_tesla.png new file mode 100644 index 00000000000..98cb10d3cbc Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_tesla.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_towers.png b/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_towers.png new file mode 100644 index 00000000000..f971130b8e4 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_towers.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_tv.png b/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_tv.png new file mode 100644 index 00000000000..ae53b4762ed Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/ipc_antenna_tv.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/meta.json b/Resources/Textures/ADT/Mobs/Customization/ipc_antenna.rsi/meta.json new file mode 100644 index 00000000000..69316d7e57c --- /dev/null +++ b/Resources/Textures/ADT/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/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_blank.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_blank.png new file mode 100644 index 00000000000..4361a36c1ed Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_blank.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_blue.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_blue.png new file mode 100644 index 00000000000..f1568848807 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_blue.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_breakout.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_breakout.png new file mode 100644 index 00000000000..f39f2c643b9 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_breakout.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_bsod.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_bsod.png new file mode 100644 index 00000000000..7d7a8efb62e Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_bsod.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_console.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_console.png new file mode 100644 index 00000000000..dfed44e10cd Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_console.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_ecgwave.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_ecgwave.png new file mode 100644 index 00000000000..2d2c405734d Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_ecgwave.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_eight.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_eight.png new file mode 100644 index 00000000000..80a5e37dd6a Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_eight.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_exclaim.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_exclaim.png new file mode 100644 index 00000000000..e280615e504 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_exclaim.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_eyes.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_eyes.png new file mode 100644 index 00000000000..42ee79361b1 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_eyes.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_eyesangry.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_eyesangry.png new file mode 100644 index 00000000000..8a7e45c7e8f Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_eyesangry.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_eyestall.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_eyestall.png new file mode 100644 index 00000000000..d8c03fa3240 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_eyestall.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_frown.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_frown.png new file mode 100644 index 00000000000..f297c401a10 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_frown.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_glider.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_glider.png new file mode 100644 index 00000000000..afd5349ee6b Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_glider.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_goggles.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_goggles.png new file mode 100644 index 00000000000..422a603cc7c Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_goggles.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_heart.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_heart.png new file mode 100644 index 00000000000..6bfe07e397a Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_heart.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_l.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_l.png new file mode 100644 index 00000000000..902845f11fc Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_l.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_loading.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_loading.png new file mode 100644 index 00000000000..9a1f705a0d7 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_loading.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_monoeye.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_monoeye.png new file mode 100644 index 00000000000..4e5056528d9 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_monoeye.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_nature.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_nature.png new file mode 100644 index 00000000000..6425fe2b517 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_nature.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_orange.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_orange.png new file mode 100644 index 00000000000..f4c98278e1d Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_orange.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_pink.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_pink.png new file mode 100644 index 00000000000..dc50eb693db Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_pink.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_question.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_question.png new file mode 100644 index 00000000000..f90dcc94abb Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_question.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_rainbowdiag.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_rainbowdiag.png new file mode 100644 index 00000000000..37274191d37 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_rainbowdiag.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_rainbowhoriz.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_rainbowhoriz.png new file mode 100644 index 00000000000..9b6192dd6dc Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_rainbowhoriz.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_redtext.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_redtext.png new file mode 100644 index 00000000000..c180b8e674e Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_redtext.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_rgb.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_rgb.png new file mode 100644 index 00000000000..36f48e75d7a Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_rgb.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_ring.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_ring.png new file mode 100644 index 00000000000..e5454221602 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_ring.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_scroll.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_scroll.png new file mode 100644 index 00000000000..cbf936810a1 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_scroll.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_shower.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_shower.png new file mode 100644 index 00000000000..1546c8dbf13 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_shower.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_sinewave.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_sinewave.png new file mode 100644 index 00000000000..c976f421791 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_sinewave.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_smile.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_smile.png new file mode 100644 index 00000000000..7ecd324e898 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_smile.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_squarewave.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_squarewave.png new file mode 100644 index 00000000000..04211f366e8 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_squarewave.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_stars.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_stars.png new file mode 100644 index 00000000000..8feda85c428 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_stars.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_static.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_static.png new file mode 100644 index 00000000000..08e96db1508 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_static.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_tetris.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_tetris.png new file mode 100644 index 00000000000..d4ea13ea39b Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_tetris.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_textdrop.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_textdrop.png new file mode 100644 index 00000000000..c71ba6d24e9 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_textdrop.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_tv.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_tv.png new file mode 100644 index 00000000000..5b9b25dcd9a Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_tv.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_windowsxp.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_windowsxp.png new file mode 100644 index 00000000000..595ab8444b2 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_windowsxp.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_yellow.png b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_yellow.png new file mode 100644 index 00000000000..bbf4c92cb32 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/ipc_screen_yellow.png differ diff --git a/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/meta.json b/Resources/Textures/ADT/Mobs/Customization/ipc_screens.rsi/meta.json new file mode 100644 index 00000000000..b6314cde9c2 --- /dev/null +++ b/Resources/Textures/ADT/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/ADT/Mobs/Demon/custom.rsi/cow_ears.png b/Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/cow_ears.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/custom.rsi/cow_ears.png rename to Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/cow_ears.png diff --git a/Resources/Textures/ADT/Mobs/Demon/custom.rsi/cow_horns.png b/Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/cow_horns.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/custom.rsi/cow_horns.png rename to Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/cow_horns.png diff --git a/Resources/Textures/ADT/Mobs/Demon/custom.rsi/cow_spots.png b/Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/cow_spots.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/custom.rsi/cow_spots.png rename to Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/cow_spots.png diff --git a/Resources/Textures/ADT/Mobs/Demon/custom.rsi/deer_antlers_horns.png b/Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/deer_antlers_horns.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/custom.rsi/deer_antlers_horns.png rename to Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/deer_antlers_horns.png diff --git a/Resources/Textures/ADT/Mobs/Demon/custom.rsi/demon_ears.png b/Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/demon_ears.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/custom.rsi/demon_ears.png rename to Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/demon_ears.png diff --git a/Resources/Textures/ADT/Mobs/Demon/custom.rsi/demon_tail.png b/Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/demon_tail.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/custom.rsi/demon_tail.png rename to Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/demon_tail.png diff --git a/Resources/Textures/ADT/Mobs/Demon/custom.rsi/goatee.png b/Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/goatee.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/custom.rsi/goatee.png rename to Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/goatee.png diff --git a/Resources/Textures/ADT/Mobs/Demon/custom.rsi/guards_stripes.png b/Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/guards_stripes.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/custom.rsi/guards_stripes.png rename to Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/guards_stripes.png diff --git a/Resources/Textures/ADT/Mobs/Demon/custom.rsi/lines_emperos.png b/Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/lines_emperos.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/custom.rsi/lines_emperos.png rename to Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/lines_emperos.png diff --git a/Resources/Textures/ADT/Mobs/Demon/custom.rsi/long.png b/Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/long.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/custom.rsi/long.png rename to Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/long.png diff --git a/Resources/Textures/ADT/Mobs/Demon/custom.rsi/meta.json b/Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/meta.json similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/custom.rsi/meta.json rename to Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/meta.json diff --git a/Resources/Textures/ADT/Mobs/Demon/custom.rsi/queen_lines.png b/Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/queen_lines.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/custom.rsi/queen_lines.png rename to Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/queen_lines.png diff --git a/Resources/Textures/ADT/Mobs/Demon/custom.rsi/small_horns.png b/Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/small_horns.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/custom.rsi/small_horns.png rename to Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/small_horns.png diff --git a/Resources/Textures/ADT/Mobs/Demon/custom.rsi/tree_lines.png b/Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/tree_lines.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/custom.rsi/tree_lines.png rename to Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/tree_lines.png diff --git a/Resources/Textures/ADT/Mobs/Demon/custom.rsi/trinity_spots.png b/Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/trinity_spots.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/custom.rsi/trinity_spots.png rename to Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/trinity_spots.png diff --git a/Resources/Textures/ADT/Mobs/Demon/custom.rsi/up.png b/Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/up.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/custom.rsi/up.png rename to Resources/Textures/ADT/Mobs/Species/Demon/custom.rsi/up.png diff --git a/Resources/Textures/ADT/Mobs/Demon/parts.rsi/full_f.png b/Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/full_f.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/parts.rsi/full_f.png rename to Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/full_f.png diff --git a/Resources/Textures/ADT/Mobs/Demon/parts.rsi/full_m.png b/Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/full_m.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/parts.rsi/full_m.png rename to Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/full_m.png diff --git a/Resources/Textures/ADT/Mobs/Demon/parts.rsi/full_t.png b/Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/full_t.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/parts.rsi/full_t.png rename to Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/full_t.png diff --git a/Resources/Textures/ADT/Mobs/Demon/parts.rsi/head_f.png b/Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/head_f.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/parts.rsi/head_f.png rename to Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/head_f.png diff --git a/Resources/Textures/ADT/Mobs/Demon/parts.rsi/head_m.png b/Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/head_m.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/parts.rsi/head_m.png rename to Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/head_m.png diff --git a/Resources/Textures/ADT/Mobs/Demon/parts.rsi/head_t.png b/Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/head_t.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/parts.rsi/head_t.png rename to Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/head_t.png diff --git a/Resources/Textures/ADT/Mobs/Demon/parts.rsi/l_arm.png b/Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/l_arm.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/parts.rsi/l_arm.png rename to Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/l_arm.png diff --git a/Resources/Textures/ADT/Mobs/Demon/parts.rsi/l_foot.png b/Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/l_foot.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/parts.rsi/l_foot.png rename to Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/l_foot.png diff --git a/Resources/Textures/ADT/Mobs/Demon/parts.rsi/l_hand.png b/Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/l_hand.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/parts.rsi/l_hand.png rename to Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/l_hand.png diff --git a/Resources/Textures/ADT/Mobs/Demon/parts.rsi/l_leg.png b/Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/l_leg.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/parts.rsi/l_leg.png rename to Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/l_leg.png diff --git a/Resources/Textures/ADT/Mobs/Demon/parts.rsi/meta.json b/Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/meta.json similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/parts.rsi/meta.json rename to Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/meta.json diff --git a/Resources/Textures/ADT/Mobs/Demon/parts.rsi/r_arm.png b/Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/r_arm.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/parts.rsi/r_arm.png rename to Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/r_arm.png diff --git a/Resources/Textures/ADT/Mobs/Demon/parts.rsi/r_foot.png b/Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/r_foot.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/parts.rsi/r_foot.png rename to Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/r_foot.png diff --git a/Resources/Textures/ADT/Mobs/Demon/parts.rsi/r_hand.png b/Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/r_hand.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/parts.rsi/r_hand.png rename to Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/r_hand.png diff --git a/Resources/Textures/ADT/Mobs/Demon/parts.rsi/r_leg.png b/Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/r_leg.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/parts.rsi/r_leg.png rename to Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/r_leg.png diff --git a/Resources/Textures/ADT/Mobs/Demon/parts.rsi/tail.png b/Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/tail.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/parts.rsi/tail.png rename to Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/tail.png diff --git a/Resources/Textures/ADT/Mobs/Demon/parts.rsi/torso_f.png b/Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/torso_f.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/parts.rsi/torso_f.png rename to Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/torso_f.png diff --git a/Resources/Textures/ADT/Mobs/Demon/parts.rsi/torso_m.png b/Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/torso_m.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/parts.rsi/torso_m.png rename to Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/torso_m.png diff --git a/Resources/Textures/ADT/Mobs/Demon/parts.rsi/torso_t.png b/Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/torso_t.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Demon/parts.rsi/torso_t.png rename to Resources/Textures/ADT/Mobs/Species/Demon/parts.rsi/torso_t.png diff --git a/Resources/Textures/ADT/Mobs/Drask/custom.rsi/l_arm.png b/Resources/Textures/ADT/Mobs/Species/Drask/custom.rsi/l_arm.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Drask/custom.rsi/l_arm.png rename to Resources/Textures/ADT/Mobs/Species/Drask/custom.rsi/l_arm.png diff --git a/Resources/Textures/ADT/Mobs/Drask/custom.rsi/meta.json b/Resources/Textures/ADT/Mobs/Species/Drask/custom.rsi/meta.json similarity index 100% rename from Resources/Textures/ADT/Mobs/Drask/custom.rsi/meta.json rename to Resources/Textures/ADT/Mobs/Species/Drask/custom.rsi/meta.json diff --git a/Resources/Textures/ADT/Mobs/Drask/custom.rsi/r_arm.png b/Resources/Textures/ADT/Mobs/Species/Drask/custom.rsi/r_arm.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Drask/custom.rsi/r_arm.png rename to Resources/Textures/ADT/Mobs/Species/Drask/custom.rsi/r_arm.png diff --git a/Resources/Textures/ADT/Mobs/Drask/organs.rsi/eyes.png b/Resources/Textures/ADT/Mobs/Species/Drask/organs.rsi/eyes.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Drask/organs.rsi/eyes.png rename to Resources/Textures/ADT/Mobs/Species/Drask/organs.rsi/eyes.png diff --git a/Resources/Textures/ADT/Mobs/Drask/organs.rsi/heart_on.png b/Resources/Textures/ADT/Mobs/Species/Drask/organs.rsi/heart_on.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Drask/organs.rsi/heart_on.png rename to Resources/Textures/ADT/Mobs/Species/Drask/organs.rsi/heart_on.png diff --git a/Resources/Textures/ADT/Mobs/Drask/organs.rsi/innards.png b/Resources/Textures/ADT/Mobs/Species/Drask/organs.rsi/innards.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Drask/organs.rsi/innards.png rename to Resources/Textures/ADT/Mobs/Species/Drask/organs.rsi/innards.png diff --git a/Resources/Textures/ADT/Mobs/Drask/organs.rsi/kidneys.png b/Resources/Textures/ADT/Mobs/Species/Drask/organs.rsi/kidneys.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Drask/organs.rsi/kidneys.png rename to Resources/Textures/ADT/Mobs/Species/Drask/organs.rsi/kidneys.png diff --git a/Resources/Textures/ADT/Mobs/Drask/organs.rsi/lungs.png b/Resources/Textures/ADT/Mobs/Species/Drask/organs.rsi/lungs.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Drask/organs.rsi/lungs.png rename to Resources/Textures/ADT/Mobs/Species/Drask/organs.rsi/lungs.png diff --git a/Resources/Textures/ADT/Mobs/Drask/organs.rsi/meta.json b/Resources/Textures/ADT/Mobs/Species/Drask/organs.rsi/meta.json similarity index 100% rename from Resources/Textures/ADT/Mobs/Drask/organs.rsi/meta.json rename to Resources/Textures/ADT/Mobs/Species/Drask/organs.rsi/meta.json diff --git a/Resources/Textures/ADT/Mobs/Drask/parts.rsi/eyes.png b/Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/eyes.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Drask/parts.rsi/eyes.png rename to Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/eyes.png diff --git a/Resources/Textures/ADT/Mobs/Drask/parts.rsi/full.png b/Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/full.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Drask/parts.rsi/full.png rename to Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/full.png diff --git a/Resources/Textures/ADT/Mobs/Drask/parts.rsi/head_f.png b/Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/head_f.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Drask/parts.rsi/head_f.png rename to Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/head_f.png diff --git a/Resources/Textures/ADT/Mobs/Drask/parts.rsi/head_m.png b/Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/head_m.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Drask/parts.rsi/head_m.png rename to Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/head_m.png diff --git a/Resources/Textures/ADT/Mobs/Drask/parts.rsi/l_arm.png b/Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/l_arm.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Drask/parts.rsi/l_arm.png rename to Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/l_arm.png diff --git a/Resources/Textures/ADT/Mobs/Drask/parts.rsi/l_foot.png b/Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/l_foot.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Drask/parts.rsi/l_foot.png rename to Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/l_foot.png diff --git a/Resources/Textures/ADT/Mobs/Drask/parts.rsi/l_hand.png b/Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/l_hand.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Drask/parts.rsi/l_hand.png rename to Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/l_hand.png diff --git a/Resources/Textures/ADT/Mobs/Drask/parts.rsi/l_leg.png b/Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/l_leg.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Drask/parts.rsi/l_leg.png rename to Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/l_leg.png diff --git a/Resources/Textures/ADT/Mobs/Drask/parts.rsi/meta.json b/Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/meta.json similarity index 100% rename from Resources/Textures/ADT/Mobs/Drask/parts.rsi/meta.json rename to Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/meta.json diff --git a/Resources/Textures/ADT/Mobs/Drask/parts.rsi/r_arm.png b/Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/r_arm.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Drask/parts.rsi/r_arm.png rename to Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/r_arm.png diff --git a/Resources/Textures/ADT/Mobs/Drask/parts.rsi/r_foot.png b/Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/r_foot.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Drask/parts.rsi/r_foot.png rename to Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/r_foot.png diff --git a/Resources/Textures/ADT/Mobs/Drask/parts.rsi/r_hand.png b/Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/r_hand.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Drask/parts.rsi/r_hand.png rename to Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/r_hand.png diff --git a/Resources/Textures/ADT/Mobs/Drask/parts.rsi/r_leg.png b/Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/r_leg.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Drask/parts.rsi/r_leg.png rename to Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/r_leg.png diff --git a/Resources/Textures/ADT/Mobs/Drask/parts.rsi/torso_f.png b/Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/torso_f.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Drask/parts.rsi/torso_f.png rename to Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/torso_f.png diff --git a/Resources/Textures/ADT/Mobs/Drask/parts.rsi/torso_m.png b/Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/torso_m.png similarity index 100% rename from Resources/Textures/ADT/Mobs/Drask/parts.rsi/torso_m.png rename to Resources/Textures/ADT/Mobs/Species/Drask/parts.rsi/torso_m.png diff --git a/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/brain-inhand-left.png b/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/brain-inhand-left.png new file mode 100644 index 00000000000..cf6e4684e9c Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/brain-inhand-left.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/brain-inhand-right.png b/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/brain-inhand-right.png new file mode 100644 index 00000000000..978d4f3c5f1 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/brain-inhand-right.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/brain.png b/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/brain.png new file mode 100644 index 00000000000..f69ff1aa3e4 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/brain.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/ears.png b/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/ears.png new file mode 100644 index 00000000000..9966cc2ac2d Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/ears.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/eyeball-l.png b/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/eyeball-l.png new file mode 100644 index 00000000000..09b98e316f8 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/eyeball-l.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/eyeball-r.png b/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/eyeball-r.png new file mode 100644 index 00000000000..f1ff37a002f Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/eyeball-r.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/heart-off.png b/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/heart-off.png new file mode 100644 index 00000000000..7dda0d3a8e6 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/heart-off.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/heart-on.png b/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/heart-on.png new file mode 100644 index 00000000000..676a641989a Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/heart-on.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/meta.json b/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/meta.json new file mode 100644 index 00000000000..3078ec86feb --- /dev/null +++ b/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/meta.json @@ -0,0 +1,82 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Yogstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "brain-inhand-left", + "directions": 4 + }, + { + "name": "brain-inhand-right", + "directions": 4 + }, + { + "name": "heart-off" + }, + { + "name": "heart-on", + "delays": [ + [ + 0.6, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "brain", + "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 + ] + ] + }, + { + "name": "eyeball-r" + }, + { + "name": "tongue" + }, + { + "name": "eyeball-l" + }, + { + "name": "microcell", + "delays": [ + [ + 0.5, + 0.5 + ] + ] + }, + { + "name": "ears" + } + ] +} diff --git a/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/microcell.png b/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/microcell.png new file mode 100644 index 00000000000..18b692a5a99 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/microcell.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/tongue.png b/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/tongue.png new file mode 100644 index 00000000000..dee2ed3b99f Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/IPC/organs.rsi/tongue.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/full.png b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/full.png new file mode 100644 index 00000000000..7faae4a077e Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/full.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/head_f.png b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/head_f.png new file mode 100644 index 00000000000..31d77176c96 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/head_f.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/head_m.png b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/head_m.png new file mode 100644 index 00000000000..53d6069a283 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/head_m.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/l_arm.png b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/l_arm.png new file mode 100644 index 00000000000..4f042bf40e0 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/l_arm.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/l_foot.png b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/l_foot.png new file mode 100644 index 00000000000..bb9bede2180 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/l_foot.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/l_hand.png b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/l_hand.png new file mode 100644 index 00000000000..5b6c2df090c Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/l_hand.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/l_leg.png b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/l_leg.png new file mode 100644 index 00000000000..788f2769d43 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/l_leg.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/meta.json b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/meta.json new file mode 100644 index 00000000000..1463c57a060 --- /dev/null +++ b/Resources/Textures/ADT/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/ADT/Mobs/Species/IPC/parts.rsi/r_arm.png b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/r_arm.png new file mode 100644 index 00000000000..6c1ff1ec9cf Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/r_arm.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/r_foot.png b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/r_foot.png new file mode 100644 index 00000000000..2389c30aea5 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/r_foot.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/r_hand.png b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/r_hand.png new file mode 100644 index 00000000000..3ec4fab0378 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/r_hand.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/r_leg.png b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/r_leg.png new file mode 100644 index 00000000000..f424b2efbca Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/r_leg.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/torso_f.png b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/torso_f.png new file mode 100644 index 00000000000..b36a2eed8c7 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/torso_f.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/torso_m.png b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/torso_m.png new file mode 100644 index 00000000000..df2588b562d Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/IPC/parts.rsi/torso_m.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/eyes.png b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/eyes.png new file mode 100644 index 00000000000..e35b5717d2f Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/eyes.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/full.png b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/full.png new file mode 100644 index 00000000000..a1f944ad023 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/full.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/head_f.png b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/head_f.png new file mode 100644 index 00000000000..6788ca0c00e Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/head_f.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/head_m.png b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/head_m.png new file mode 100644 index 00000000000..6788ca0c00e Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/head_m.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/icon.png b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/icon.png new file mode 100644 index 00000000000..016d8ba5a76 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/icon.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/l_arm.png b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/l_arm.png new file mode 100644 index 00000000000..0dac6f22cf3 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/l_arm.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/l_foot.png b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/l_foot.png new file mode 100644 index 00000000000..1dfe4f91724 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/l_foot.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/l_hand.png b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/l_hand.png new file mode 100644 index 00000000000..7b90385759f Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/l_hand.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/l_leg.png b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/l_leg.png new file mode 100644 index 00000000000..54efa6db786 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/l_leg.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/meta.json b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/meta.json new file mode 100644 index 00000000000..636f6b545dc --- /dev/null +++ b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/meta.json @@ -0,0 +1,69 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/tgstation/tgstation/commit/1d0eadcb126fc3581eed33490f4be2a88157af58, modified by https://github.com/PixelTheKermit", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "full" + }, + { + "name": "head_f", + "directions": 4 + }, + { + "name": "head_m", + "directions": 4 + }, + { + "name": "l_arm", + "directions": 4 + }, + { + "name": "l_foot", + "directions": 4 + }, + { + "name": "l_hand", + "directions": 4 + }, + { + "name": "l_leg", + "directions": 4 + }, + { + "name": "r_arm", + "directions": 4 + }, + { + "name": "r_foot", + "directions": 4 + }, + { + "name": "r_hand", + "directions": 4 + }, + { + "name": "r_leg", + "directions": 4 + }, + { + "name": "torso_f", + "directions": 4 + }, + { + "name": "torso_m", + "directions": 4 + }, + { + "name": "eyes", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/r_arm.png b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/r_arm.png new file mode 100644 index 00000000000..7ece2c81c72 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/r_arm.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/r_foot.png b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/r_foot.png new file mode 100644 index 00000000000..1071c6bf8b3 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/r_foot.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/r_hand.png b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/r_hand.png new file mode 100644 index 00000000000..1302b00b0ef Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/r_hand.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/r_leg.png b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/r_leg.png new file mode 100644 index 00000000000..6f45ae18950 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/r_leg.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/torso_f.png b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/torso_f.png new file mode 100644 index 00000000000..233dd6d7222 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/torso_f.png differ diff --git a/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/torso_m.png b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/torso_m.png new file mode 100644 index 00000000000..a2722c22730 Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Moth/parts.rsi/torso_m.png differ diff --git a/Resources/Textures/ADT/Shaders/seeing_static.swsl b/Resources/Textures/ADT/Shaders/seeing_static.swsl new file mode 100644 index 00000000000..765cb94f712 --- /dev/null +++ b/Resources/Textures/ADT/Shaders/seeing_static.swsl @@ -0,0 +1,43 @@ +// Credited to PelicanPolice on Shadertoy +// Free for any purpose, commercial or otherwise. +// But do post here so I can see where it got used! +// If using on shadertoy, do link to this project on yours :) + +// A copy of the camera static shader, but takes a screen texture, and an amount to mix by. + +uniform sampler2D SCREEN_TEXTURE; +uniform highp float mixAmount; + +highp float noise(highp vec2 pos, highp float evolve) { + + // Loop the evolution (over a very long period of time). + highp float e = fract((evolve*0.01)); + + // Coordinates + highp float cx = pos.x*e; + highp float cy = sin(pos.y*e * 376.0); // is this close enough to a 60hz interference? :smol: + + highp float v2_2 = cx*2.4/cy*23.0+pow(abs(cy/22.4),3.3); + highp float v2_1 = fract(fract(v2_2)); + highp float v2 = fract(2.0/v2_1); + highp float v3 = fract(cx*evolve/pow(abs(cy),0.050)); + + // Generate a "random" black or white value + return fract(0.1*v2*v3); +} + + +void fragment() { + highp vec4 color = zTextureSpec(SCREEN_TEXTURE, UV); + highp vec2 coords = FRAGCOORD.xy; + + highp vec3 staticAmount; + for (int i = 0; i < 1; i++) + { + // Generate a black to white pixel + staticAmount = vec3(noise(coords,TIME)); + } + + // Output to screen + COLOR = mix(color, vec4(staticAmount, 1.0), mixAmount); +} diff --git a/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/HV.png b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/HV.png new file mode 100644 index 00000000000..c74f8d48d53 Binary files /dev/null and b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/HV.png differ diff --git a/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/LV.png b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/LV.png new file mode 100644 index 00000000000..87b6b7cf25d Binary files /dev/null and b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/LV.png differ diff --git a/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/MV.png b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/MV.png new file mode 100644 index 00000000000..7276d79d380 Binary files /dev/null and b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/MV.png differ diff --git a/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/base.png b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/base.png new file mode 100644 index 00000000000..dcd8ca51df2 Binary files /dev/null and b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/base.png differ diff --git a/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/borgcharger_1.png b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/borgcharger_1.png new file mode 100644 index 00000000000..f254109f0cb Binary files /dev/null and b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/borgcharger_1.png differ diff --git a/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/borgcharger_2.png b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/borgcharger_2.png new file mode 100644 index 00000000000..f602224e5ac Binary files /dev/null and b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/borgcharger_2.png differ diff --git a/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/borgcharger_active_unlit.png b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/borgcharger_active_unlit.png new file mode 100644 index 00000000000..18357d1eb9d Binary files /dev/null and b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/borgcharger_active_unlit.png differ diff --git a/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/borgcharger_closed_unlit.png b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/borgcharger_closed_unlit.png new file mode 100644 index 00000000000..99eec2b9815 Binary files /dev/null and b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/borgcharger_closed_unlit.png differ diff --git a/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/borgcharger_open_unlit.png b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/borgcharger_open_unlit.png new file mode 100644 index 00000000000..9f52b9154ac Binary files /dev/null and b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/borgcharger_open_unlit.png differ diff --git a/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/borgcharger_panel.png b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/borgcharger_panel.png new file mode 100644 index 00000000000..95f7dd49e96 Binary files /dev/null and b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/borgcharger_panel.png differ diff --git a/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/borgcharger_unlit.png b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/borgcharger_unlit.png new file mode 100644 index 00000000000..586fe93f3b3 Binary files /dev/null and b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/borgcharger_unlit.png differ diff --git a/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/closed.png b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/closed.png new file mode 100644 index 00000000000..6f88f12c2e9 Binary files /dev/null and b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/closed.png differ diff --git a/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/icon.png b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/icon.png new file mode 100644 index 00000000000..fbd69e21679 Binary files /dev/null and b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/icon.png differ diff --git a/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/meta.json b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/meta.json new file mode 100644 index 00000000000..cc7e1771aab --- /dev/null +++ b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/meta.json @@ -0,0 +1,61 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Yogstation at commit https://github.com/yogstation13/Yogstation/commit/159e6bf846e911590ab27f15272ec2ebc465c1da", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "HV" + }, + { + "name": "MV" + }, + { + "name": "LV" + }, + { + "name": "base" + }, + { + "name": "open" + }, + { + "name": "closed" + }, + { + "name": "borgcharger_open_unlit" + }, + { + "name": "borgcharger_closed_unlit" + }, + { + "name": "borgcharger_unlit" + }, + { + "name": "borgcharger_active_unlit", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.15 + ] + ] + }, + { + "name": "borgcharger_panel" + }, + { + "name": "borgcharger_1" + }, + { + "name": "borgcharger_2" + } + ] +} diff --git a/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/open.png b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/open.png new file mode 100644 index 00000000000..76a8ae2ad3e Binary files /dev/null and b/Resources/Textures/ADT/Structures/Machines/borgcharger.rsi/open.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/roboticist.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/roboticist.rsi/equipped-INNERCLOTHING.png index af5abf6f0bb..4d5a6f6cb87 100644 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/roboticist.rsi/equipped-INNERCLOTHING.png and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/roboticist.rsi/equipped-INNERCLOTHING.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/roboticist.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/roboticist.rsi/icon.png index 861539fab81..5a6b5851b74 100644 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/roboticist.rsi/icon.png and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/roboticist.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/roboticist.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/roboticist.rsi/inhand-left.png index bacc6c39de6..3faddf27e2b 100644 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/roboticist.rsi/inhand-left.png and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/roboticist.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/roboticist.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/roboticist.rsi/inhand-right.png index d107c18c8da..193be2fcaa8 100644 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/roboticist.rsi/inhand-right.png and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/roboticist.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/roboticist.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/roboticist.rsi/meta.json index bb0a29fbfcd..c3fd459e7a7 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/roboticist.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/roboticist.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Sprite by DreamlyJack, monkey derivative made by brainfood1183 (github)", + "copyright": "Sprite by DreamlyJack, modified by Prazat (discord: prazat911), monkey derivative made by brainfood1183 (github)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/roboticist.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/roboticist.rsi/equipped-INNERCLOTHING.png index f4f4ab93ca6..4d18340f530 100644 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/roboticist.rsi/equipped-INNERCLOTHING.png and b/Resources/Textures/Clothing/Uniforms/Jumpsuit/roboticist.rsi/equipped-INNERCLOTHING.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/roboticist.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/roboticist.rsi/icon.png index ab39a7e17e4..b887556e93b 100644 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/roboticist.rsi/icon.png and b/Resources/Textures/Clothing/Uniforms/Jumpsuit/roboticist.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/roboticist.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/roboticist.rsi/inhand-left.png index d0bd2174369..3faddf27e2b 100644 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/roboticist.rsi/inhand-left.png and b/Resources/Textures/Clothing/Uniforms/Jumpsuit/roboticist.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/roboticist.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/roboticist.rsi/inhand-right.png index a20d35709d5..193be2fcaa8 100644 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/roboticist.rsi/inhand-right.png and b/Resources/Textures/Clothing/Uniforms/Jumpsuit/roboticist.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/roboticist.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/roboticist.rsi/meta.json index bb0a29fbfcd..c3fd459e7a7 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/roboticist.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/roboticist.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Sprite by DreamlyJack, monkey derivative made by brainfood1183 (github)", + "copyright": "Sprite by DreamlyJack, modified by Prazat (discord: prazat911), monkey derivative made by brainfood1183 (github)", "size": { "x": 32, "y": 32