diff --git a/Content.Client/Materials/UI/MaterialStorageControl.xaml.cs b/Content.Client/Materials/UI/MaterialStorageControl.xaml.cs index 3ef247d529..8c67505532 100644 --- a/Content.Client/Materials/UI/MaterialStorageControl.xaml.cs +++ b/Content.Client/Materials/UI/MaterialStorageControl.xaml.cs @@ -1,4 +1,5 @@ using System.Linq; +using Content.Shared._White.ShitSilo; using Content.Shared.Materials; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; @@ -43,8 +44,16 @@ public sealed partial class MaterialStorageControl : BoxContainer return; } + var gridStorage = _entityManager.TryGetComponent(_owner, out var transformComponent) && + _entityManager.HasComponent(_owner) && + _entityManager.TryGetComponent(transformComponent.GridUid, + out var materialStorageComponent) ? materialStorageComponent : null; + + materialStorage = gridStorage ?? materialStorage; + var canEject = materialStorage.CanEjectStoredMaterials; var mats = materialStorage.Storage.Select(pair => (pair.Key.Id, pair.Value)).ToDictionary(); + if (_currentMaterials.Equals(mats)) return; diff --git a/Content.Client/_White/Overlays/NightVisionOverlay.cs b/Content.Client/_White/Overlays/NightVisionOverlay.cs index 6f616c061c..ffc98c1294 100644 --- a/Content.Client/_White/Overlays/NightVisionOverlay.cs +++ b/Content.Client/_White/Overlays/NightVisionOverlay.cs @@ -31,19 +31,32 @@ namespace Content.Client._White.Overlays var handle = args.WorldHandle; - if (!_entityManager.TryGetComponent(_playerManager.LocalSession?.AttachedEntity, - out var component)) + Color? color = null; + + if (_entityManager.TryGetComponent(_playerManager.LocalSession?.AttachedEntity, + out var component) && component.IsActive) { - return; + _shader.SetParameter("tint", component.Tint); + _shader.SetParameter("luminance_threshold", component.Strength); + _shader.SetParameter("noise_amount", component.Noise); + color = component.Color; + } + else if (_entityManager.TryGetComponent( + _playerManager.LocalSession?.AttachedEntity, out var tempNvComp)) + { + _shader.SetParameter("tint", tempNvComp.Tint); + _shader.SetParameter("luminance_threshold", tempNvComp.Strength); + _shader.SetParameter("noise_amount", tempNvComp.Noise); + color = tempNvComp.Color; } + if (color == null) + return; + _shader.SetParameter("SCREEN_TEXTURE", ScreenTexture); - _shader.SetParameter("tint", component.Tint); - _shader.SetParameter("luminance_threshold", component.Strength); - _shader.SetParameter("noise_amount", component.Noise); handle.UseShader(_shader); - handle.DrawRect(args.WorldBounds, component.Color); + handle.DrawRect(args.WorldBounds, color.Value); handle.UseShader(null); } } diff --git a/Content.Client/_White/Overlays/NightVisionSystem.cs b/Content.Client/_White/Overlays/NightVisionSystem.cs index 4da1d57626..00934c5765 100644 --- a/Content.Client/_White/Overlays/NightVisionSystem.cs +++ b/Content.Client/_White/Overlays/NightVisionSystem.cs @@ -23,23 +23,56 @@ public sealed class NightVisionSystem : SharedNightVisionSystem SubscribeLocalEvent(OnPlayerDetached); SubscribeLocalEvent(OnRestart); + SubscribeLocalEvent(OnTempInit); + SubscribeLocalEvent(OnTempRemove); + SubscribeLocalEvent(OnTempPlayerAttached); + SubscribeLocalEvent(OnTempPlayerDetached); + _overlay = new NightVisionOverlay(); } + private void OnTempPlayerAttached(Entity ent, ref PlayerAttachedEvent args) + { + UpdateNightVision(args.Player, true); + } + + private void OnTempPlayerDetached(Entity ent, ref PlayerDetachedEvent args) + { + UpdateNightVision(args.Player, false); + } + + private void OnTempRemove(Entity ent, ref ComponentRemove args) + { + if (TryComp(ent, out NightVisionComponent? nightVision) && nightVision.IsActive) + return; + + UpdateNightVision(ent, false); + } + + private void OnTempInit(Entity ent, ref ComponentInit args) + { + UpdateNightVision(ent, true); + } + private void OnPlayerAttached(EntityUid uid, NightVisionComponent component, PlayerAttachedEvent args) { - if (_player.LocalSession != args.Player) + if (!component.IsActive && HasComp(args.Entity)) return; - UpdateNightVision(component.IsActive); + UpdateNightVision(args.Player, component.IsActive); } private void OnPlayerDetached(EntityUid uid, NightVisionComponent component, PlayerDetachedEvent args) { - if (_player.LocalSession != args.Player) + UpdateNightVision(args.Player, false); + } + + private void UpdateNightVision(ICommonSession player, bool active) + { + if (_player.LocalSession != player) return; - UpdateNightVision(false); + UpdateNightVision(active); } protected override void UpdateNightVision(EntityUid uid, bool active) diff --git a/Content.Server/Atmos/EntitySystems/BarotraumaSystem.cs b/Content.Server/Atmos/EntitySystems/BarotraumaSystem.cs index 252d29811c..544a84f755 100644 --- a/Content.Server/Atmos/EntitySystems/BarotraumaSystem.cs +++ b/Content.Server/Atmos/EntitySystems/BarotraumaSystem.cs @@ -9,6 +9,7 @@ using Content.Shared.FixedPoint; using Content.Shared.Inventory; using Content.Shared.Inventory.Events; using Content.Shared._White.Mood; +using Content.Shared.Changeling; using Robust.Shared.Containers; namespace Content.Server.Atmos.EntitySystems @@ -234,6 +235,12 @@ namespace Content.Server.Atmos.EntitySystems if (pressure > Atmospherics.WarningLowPressure) goto default; + if (TryComp(uid, out VoidAdaptationComponent? voidAdaptation)) // WD + { + voidAdaptation.ChemMultiplier = 0.75f; + goto default; + } + // Deal damage and ignore resistances. Resistance to pressure damage should be done via pressure protection gear. _damageableSystem.TryChangeDamage(uid, barotrauma.Damage * Atmospherics.LowPressureDamage, true, false); diff --git a/Content.Server/Body/Systems/RespiratorSystem.cs b/Content.Server/Body/Systems/RespiratorSystem.cs index 7b7cb580a1..17b547f1d7 100644 --- a/Content.Server/Body/Systems/RespiratorSystem.cs +++ b/Content.Server/Body/Systems/RespiratorSystem.cs @@ -22,7 +22,8 @@ using Content.Shared.Mobs.Components; // WD using Content.Shared.Mobs.Systems; using Content.Shared.Popups; // WD using Content.Shared._White.CPR.Events; -using Content.Shared._White.Mood; // WD +using Content.Shared._White.Mood; +using Content.Shared.Changeling; // WD using JetBrains.Annotations; using Robust.Server.Audio; // WD using Robust.Shared.Audio; // WD @@ -97,6 +98,14 @@ public sealed class RespiratorSystem : EntitySystem if (respirator.Saturation < respirator.SuffocationThreshold) { + if (TryComp(uid, out VoidAdaptationComponent? voidAdaptation)) + { + voidAdaptation.ChemMultiplier = 0.75f; + StopSuffocation(uid, respirator); + respirator.SuffocationCycles = 0; + continue; + } + if (_gameTiming.CurTime >= respirator.LastGaspPopupTime + respirator.GaspPopupCooldown) { respirator.LastGaspPopupTime = _gameTiming.CurTime; diff --git a/Content.Server/Changeling/ChangelingRuleSystem.cs b/Content.Server/Changeling/ChangelingRuleSystem.cs index 04b85cc92a..32a68b8da2 100644 --- a/Content.Server/Changeling/ChangelingRuleSystem.cs +++ b/Content.Server/Changeling/ChangelingRuleSystem.cs @@ -40,7 +40,7 @@ public sealed class ChangelingRuleSystem : GameRuleSystem(OnAdrenalineSacs); SubscribeLocalEvent(OnFleshMend); SubscribeLocalEvent(OnBiodegrade); + SubscribeLocalEvent(OnEyesight); + SubscribeLocalEvent(OnDissonantShriek); SubscribeLocalEvent(OnArmBlade); SubscribeLocalEvent(OnShield); @@ -109,6 +118,9 @@ public sealed partial class ChangelingSystem SubscribeLocalEvent(OnLesserFormDoAfter); SubscribeLocalEvent(OnTransformUiMessage); + + SubscribeLocalEvent(OnEyesightPurchased); + SubscribeLocalEvent(OnVoidAdaptationPurchased); } #region Data @@ -259,7 +271,8 @@ public sealed partial class ChangelingSystem new RegenerateDoAfterEvent(), args.Performer, args.Performer, args.Performer) { - RequireCanInteract = false + RequireCanInteract = false, + Hidden = true }); component.IsRegenerating = true; @@ -267,7 +280,7 @@ public sealed partial class ChangelingSystem private void OnLesserForm(EntityUid uid, ChangelingComponent component, LesserFormActionEvent args) { - if (_mobStateSystem.IsDead(uid) || component.IsRegenerating) + if (!_mobStateSystem.IsAlive(uid)) { _popup.PopupEntity(Loc.GetString("changeling-popup-cant-perform"), uid, uid); return; @@ -282,7 +295,8 @@ public sealed partial class ChangelingSystem _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, args.Performer, component.LesserFormDelay, new LesserFormDoAfterEvent(), args.Performer, args.Performer) { - BreakOnUserMove = true + BreakOnUserMove = true, + RequireCanInteract = false }); } @@ -490,7 +504,7 @@ public sealed partial class ChangelingSystem if (!TakeChemicals(uid, component, 20)) return; - _solutionContainer.TryAddReagent(injectable.Value, "Omnizine", 25); + _solutionContainer.TryAddReagent(injectable.Value, "Ichor", 10); if (TryComp(uid, out BloodstreamComponent? bloodstream)) { _blood.TryModifyBleedAmount(uid, -bloodstream.BleedAmount, bloodstream); @@ -501,7 +515,7 @@ public sealed partial class ChangelingSystem private void OnBiodegrade(EntityUid uid, ChangelingComponent component, BiodegradeActionEvent args) { - if (_mobStateSystem.IsDead(uid)) + if (!_mobStateSystem.IsAlive(uid)) return; if (!TryComp(uid, out CuffableComponent? cuffs) || cuffs.Container.ContainedEntities.Count < 1) @@ -512,7 +526,7 @@ public sealed partial class ChangelingSystem var lastAddedCuffs = cuffs.LastAddedCuffs; - _cuffable.Uncuff(uid, lastAddedCuffs, lastAddedCuffs); + _cuffable.Uncuff(uid, null, lastAddedCuffs); Del(lastAddedCuffs); @@ -523,14 +537,14 @@ public sealed partial class ChangelingSystem private void OnArmBlade(EntityUid uid, ChangelingComponent component, ArmbladeActionEvent args) { - SpawnOrDeleteItem(uid, "ArmBlade"); + SpawnOrDeleteItem(uid, component, "ArmBlade", 20); args.Handled = true; } private void OnShield(EntityUid uid, ChangelingComponent component, OrganicShieldActionEvent args) { - SpawnOrDeleteItem(uid, "OrganicShield"); + SpawnOrDeleteItem(uid, component, "OrganicShield", 20); args.Handled = true; } @@ -538,43 +552,83 @@ public sealed partial class ChangelingSystem private void OnArmor(EntityUid uid, ChangelingComponent component, ChitinousArmorActionEvent args) { const string outerName = "outerClothing"; - const string protoName = "ClothingOuterChangeling"; + const string headName = "head"; + const string armorName = "ClothingOuterChangeling"; + const string helmetName = "ClothingHeadHelmetLing"; - if (!_inventorySystem.TryGetSlotEntity(uid, outerName, out var outerEnt)) + _inventorySystem.TryUnequip(uid, outerName, out var outer, true, true); + _inventorySystem.TryUnequip(uid, headName, out var helmet, true, true); + + if (TryComp(outer, out MetaDataComponent? metaData) && metaData.EntityPrototype is {ID: armorName}) { - _inventorySystem.SpawnItemInSlot(uid, outerName, protoName, silent: true); + args.Handled = true; return; } - if (!TryComp(outerEnt, out var meta)) + if (!TakeChemicals(uid, component, 20)) { - _inventorySystem.SpawnItemInSlot(uid, outerName, protoName, silent: true); + if (outer != null) + _inventorySystem.TryEquip(uid, outer.Value, outerName, true, true); + + if (helmet != null) + _inventorySystem.TryEquip(uid, helmet.Value, headName, true, true); + return; } - if (meta.EntityPrototype == null) - { - _inventorySystem.SpawnItemInSlot(uid, outerName, protoName, silent: true); - return; - } - - if (meta.EntityPrototype.ID == protoName) - { - _inventorySystem.TryUnequip(uid, outerName, out var removedItem, force: true); - QueueDel(removedItem); - return; - } - - _inventorySystem.TryUnequip(uid, outerName, out _); - - _inventorySystem.SpawnItemInSlot(uid, outerName, protoName, silent: true); + _inventorySystem.SpawnItemInSlot(uid, outerName, armorName, true, true); + _inventorySystem.SpawnItemInSlot(uid, headName, helmetName, true, true); args.Handled = true; } private void OnTentacleArm(EntityUid uid, ChangelingComponent component, TentacleArmActionEvent args) { - SpawnOrDeleteItem(uid, "TentacleArmGun"); + SpawnOrDeleteItem(uid, component, "TentacleArmGun", 10); + + args.Handled = true; + } + + private void OnEyesightPurchased(Entity ent, ref AugmentedEyesightPurchasedEvent args) + { + EnsureComp(ent); + EnsureComp(ent); + } + + private void OnVoidAdaptationPurchased(Entity ent, ref VoidAdaptationPurchasedEvent args) + { + EnsureComp(ent); + } + + private void OnEyesight(Entity ent, ref AugmentedEyesightActionEvent args) + { + if (!_mobStateSystem.IsAlive(ent)) + return; + + args.Handled = true; + + if (HasComp(ent)) + { + RemComp(ent); + EnsureComp(ent); + EnsureComp(ent); + return; + } + + EnsureComp(ent); + RemComp(ent); + RemComp(ent); + } + + private void OnDissonantShriek(Entity ent, ref DissonantShriekActionEvent args) + { + if (!_mobStateSystem.IsAlive(ent)) + return; + + if (!TakeChemicals(ent, ent.Comp, 20)) + return; + + _empSystem.EmpPulse(_transform.GetMapCoordinates(ent), 5, 100000, 10f); args.Handled = true; } @@ -612,6 +666,20 @@ public sealed partial class ChangelingSystem component.AbsorbedCount++; + _chemicalsSystem.AddChemicals(uid, component, 50); + + if (_container.TryGetContainer(uid, ImplanterComponent.ImplantSlotId, out var implantContainer)) + { + foreach (var implant in implantContainer.ContainedEntities) + { + if (!TryComp(implant, out var store) || store.Preset != "StorePresetChangeling") + continue; + + store.Refunds = true; + store.RefundAllowed = true; + } + } + if (TryComp(uid, out SharedPullerComponent? puller) && puller.Pulling is { } pulled && TryComp(pulled, out SharedPullableComponent? pullable)) { @@ -653,6 +721,7 @@ public sealed partial class ChangelingSystem { if (args.Handled || args.Cancelled || args.Target == null) { + component.IsRegenerating = false; return; } @@ -664,7 +733,10 @@ public sealed partial class ChangelingSystem } if (!TakeChemicals(uid, component, 15)) + { + component.IsRegenerating = false; return; + } _rejuvenate.PerformRejuvenate(args.Target.Value); @@ -682,14 +754,14 @@ public sealed partial class ChangelingSystem if (args.Handled || args.Cancelled) return; + if (!TakeChemicals(uid, component, 5)) + return; + var polymorphEntity = _polymorph.PolymorphEntity(args.User, "MonkeyChangeling"); if (polymorphEntity == null) return; - if (!TakeChemicals(uid, component, 5)) - return; - var toAdd = new ChangelingComponent { HiveName = component.HiveName, @@ -701,6 +773,8 @@ public sealed partial class ChangelingSystem EntityManager.AddComponent(polymorphEntity.Value, toAdd); + TransferComponents(uid, polymorphEntity.Value); + _implantSystem.TransferImplants(uid, polymorphEntity.Value); _actionContainerSystem.TransferAllActionsFiltered(uid, polymorphEntity.Value, polymorphEntity.Value); _action.GrantContainedActions(polymorphEntity.Value, polymorphEntity.Value); @@ -830,12 +904,6 @@ public sealed partial class ChangelingSystem _identity.QueueIdentityUpdate(polymorphEntity.Value); - if (HasComp(target)) - EnsureComp(polymorphEntity.Value); - - if (HasComp(target)) - EnsureComp(polymorphEntity.Value); - if (TryComp(target, out ChangelingComponent? lingComp)) { var toAdd = new ChangelingComponent @@ -850,18 +918,7 @@ public sealed partial class ChangelingSystem _chemicalsSystem.UpdateAlert(polymorphEntity.Value, toAdd); } - if (TryComp(target, out NpcFactionMemberComponent? factionMember)) - { - _faction.ClearFactions(polymorphEntity.Value); - foreach (var faction in factionMember.Factions) - { - _faction.AddFaction(polymorphEntity.Value, faction); - } - } - - _nukeOps.TransferRole(target, polymorphEntity.Value); - - _cult.TransferRole(target, polymorphEntity.Value); + TransferComponents(target, polymorphEntity.Value); _implantSystem.TransferImplants(target, polymorphEntity.Value); _actionContainerSystem.TransferAllActionsFiltered(target, polymorphEntity.Value, polymorphEntity.Value); @@ -870,6 +927,50 @@ public sealed partial class ChangelingSystem return polymorphEntity; } + private void TransferComponents(EntityUid from, EntityUid to) + { + if (HasComp(from)) + EnsureComp(to); + + if (HasComp(from)) + EnsureComp(to); + + if (HasComp(from)) + EnsureComp(to); + + if (HasComp(from)) + EnsureComp(to); + + if (HasComp(from)) + EnsureComp(to); + + if (TryComp(from, out TemporaryNightVisionComponent? nvComp)) + { + var toAdd = new TemporaryNightVisionComponent + { + Color = nvComp.Color, + Tint = nvComp.Tint, + Strength = nvComp.Strength, + Noise = nvComp.Noise + }; + + EntityManager.AddComponent(to, toAdd); + } + + if (TryComp(from, out NpcFactionMemberComponent? factionMember)) + { + _faction.ClearFactions(to); + foreach (var faction in factionMember.Factions) + { + _faction.AddFaction(to, faction); + } + } + + _nukeOps.TransferRole(from, to); + + _cult.TransferRole(from, to); + } + private void TransferDna(EntityUid target, string dna) { if (!TryComp(target, out var dnaComponent)) @@ -932,7 +1033,7 @@ public sealed partial class ChangelingSystem Dirty(target, targetHumanoid); } - private void SpawnOrDeleteItem(EntityUid target, string prototypeName) + private void SpawnOrDeleteItem(EntityUid target, ChangelingComponent component, string prototypeName, int chemicals) { foreach (var eHand in _handsSystem.EnumerateHands(target)) { @@ -952,6 +1053,9 @@ public sealed partial class ChangelingSystem return; } + if (!TakeChemicals(target, component, chemicals)) + return; + var item = Spawn(prototypeName, Transform(target).Coordinates); if (!_handsSystem.TryPickup(target, item, hand, animate: false)) diff --git a/Content.Server/Changeling/ChangelingSystem.Shop.cs b/Content.Server/Changeling/ChangelingSystem.Shop.cs index b0b6eb789f..d24e908dd0 100644 --- a/Content.Server/Changeling/ChangelingSystem.Shop.cs +++ b/Content.Server/Changeling/ChangelingSystem.Shop.cs @@ -1,9 +1,10 @@ -using Content.Server.Store.Components; -using Content.Server.Store.Systems; +using Content.Server.Flash.Components; +using Content.Server.Store.Components; +using Content.Shared._White.Overlays; using Content.Shared.Changeling; +using Content.Shared.Eye.Blinding.Components; using Content.Shared.Implants.Components; -using Robust.Server.GameStates; -using Robust.Server.Placement; +using Content.Shared.Inventory; namespace Content.Server.Changeling; @@ -11,7 +12,35 @@ public sealed partial class ChangelingSystem { private void InitializeShop() { - SubscribeLocalEvent(OnShop); + SubscribeLocalEvent(OnShop); + SubscribeLocalEvent(OnChangelingRefund); + SubscribeLocalEvent>(OnRefund); + } + + private void OnRefund(Entity ent, + ref InventoryRelayedEvent args) + { + QueueDel(ent); + } + + private void OnChangelingRefund(Entity ent, ref ChangelingRefundEvent args) + { + RemComp(ent); + RemComp(ent); + RemComp(ent); + RemComp(ent); + + foreach (var hand in _handsSystem.EnumerateHands(ent)) + { + if (hand.HeldEntity != null && HasComp(hand.HeldEntity.Value)) + QueueDel(hand.HeldEntity.Value); + } + + if (!TryComp(args.Store, out StoreComponent? storeComponent)) + return; + + storeComponent.Refunds = false; + _storeSystem.DisableRefund(args.Store, storeComponent); } private void OnShop(EntityUid uid, SubdermalImplantComponent component, ChangelingShopActionEvent args) diff --git a/Content.Server/Lathe/LatheSystem.cs b/Content.Server/Lathe/LatheSystem.cs index 621c583a55..89ec193bcb 100644 --- a/Content.Server/Lathe/LatheSystem.cs +++ b/Content.Server/Lathe/LatheSystem.cs @@ -8,6 +8,7 @@ using Content.Server.Materials; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Server.Stack; +using Content.Shared._White.ShitSilo; using Content.Shared.UserInterface; using Content.Shared.Database; using Content.Shared.Emag.Components; @@ -164,7 +165,15 @@ namespace Content.Server.Lathe ? (int) (-amount * component.MaterialUseMultiplier) : -amount; - _materialStorage.TryChangeMaterialAmount(uid, mat, adjustedAmount); + var gridUid = HasComp(uid) && + TryComp(uid, out var transformComponent) ? transformComponent.GridUid : null; + + var gridStorage = + gridUid.HasValue && + TryComp(gridUid.Value, out var materialStorageComponent) ? materialStorageComponent : null; + + _materialStorage.TryChangeMaterialAmount(uid, mat, adjustedAmount, gridUid: gridUid, gridStorage: gridStorage); + } component.Queue.Add(recipe); diff --git a/Content.Server/Materials/MaterialStorageSystem.cs b/Content.Server/Materials/MaterialStorageSystem.cs index 25e409fd01..48f9aa661c 100644 --- a/Content.Server/Materials/MaterialStorageSystem.cs +++ b/Content.Server/Materials/MaterialStorageSystem.cs @@ -5,6 +5,7 @@ using Content.Shared.Popups; using Content.Shared.Stacks; using Content.Server.Power.Components; using Content.Server.Stack; +using Content.Shared._White.ShitSilo; using Content.Shared.ActionBlocker; using Content.Shared.Construction; using Content.Shared.Database; @@ -78,7 +79,18 @@ public sealed class MaterialStorageSystem : SharedMaterialStorageSystem volume = sheetsToExtract * volumePerSheet; } - if (volume <= 0 || !TryChangeMaterialAmount(uid, msg.Material, -volume)) + var gridUid = HasComp(uid) && + TryComp(uid, out var transformComponent) + ? transformComponent.GridUid + : null; + + var gridStorage = gridUid.HasValue && + TryComp(gridUid, out var materialStorageComponent) + ? materialStorageComponent + : null; + + + if (volume <= 0 || !TryChangeMaterialAmount(uid, msg.Material, -volume, gridUid: gridUid, gridStorage: gridStorage)) return; var mats = SpawnMultipleFromMaterial(volume, material, Transform(uid).Coordinates, out _); diff --git a/Content.Server/Speech/EntitySystems/VocalSystem.cs b/Content.Server/Speech/EntitySystems/VocalSystem.cs index 47a3e9936b..217a568d07 100644 --- a/Content.Server/Speech/EntitySystems/VocalSystem.cs +++ b/Content.Server/Speech/EntitySystems/VocalSystem.cs @@ -19,11 +19,16 @@ public sealed class VocalSystem : EntitySystem public override void Initialize() { base.Initialize(); - + SubscribeLocalEvent(OnMapInit); SubscribeLocalEvent(OnSexChanged); SubscribeLocalEvent(OnEmote); } + private void OnMapInit(EntityUid uid, VocalComponent component, MapInitEvent args) + { + LoadSounds(uid, component); + } + private void OnSexChanged(EntityUid uid, VocalComponent component, SexChangedEvent args) { LoadSounds(uid, component); diff --git a/Content.Server/Store/Systems/StoreSystem.Ui.cs b/Content.Server/Store/Systems/StoreSystem.Ui.cs index f05ae7874a..baaf258f93 100644 --- a/Content.Server/Store/Systems/StoreSystem.Ui.cs +++ b/Content.Server/Store/Systems/StoreSystem.Ui.cs @@ -5,6 +5,7 @@ using Content.Server.PDA.Ringer; using Content.Server.Stack; using Content.Server.Store.Components; using Content.Shared.Actions; +using Content.Shared.Changeling; using Content.Shared.Database; using Content.Shared.FixedPoint; using Content.Shared.Hands.EntitySystems; @@ -364,6 +365,7 @@ public sealed partial class StoreSystem // Reset store back to its original state RefreshAllListings(component); component.BalanceSpent = new(); + RaiseLocalEvent(buyer, new ChangelingRefundEvent {Store = uid}); // WD UpdateUserInterface(buyer, uid, component); } diff --git a/Content.Server/Temperature/Systems/TemperatureSystem.cs b/Content.Server/Temperature/Systems/TemperatureSystem.cs index fed90a4aec..e5f918d71c 100644 --- a/Content.Server/Temperature/Systems/TemperatureSystem.cs +++ b/Content.Server/Temperature/Systems/TemperatureSystem.cs @@ -6,6 +6,7 @@ using Content.Server.Body.Components; using Content.Server.Temperature.Components; using Content.Shared.Alert; using Content.Shared.Atmos; +using Content.Shared.Changeling; using Content.Shared.Damage; using Content.Shared.Database; using Content.Shared.Inventory; @@ -279,6 +280,19 @@ public sealed class TemperatureSystem : EntitySystem } else if (temperature.CurrentTemperature <= coldDamageThreshold) { + if (TryComp(uid, out VoidAdaptationComponent? voidAdaptation)) // WD + { + if (temperature.TakingDamage) + { + _adminLogger.Add(LogType.Temperature, + $"{ToPrettyString(uid):entity} stopped taking temperature damage"); + temperature.TakingDamage = false; + } + + voidAdaptation.ChemMultiplier = 0.75f; + return; + } + if (!temperature.TakingDamage) { _adminLogger.Add(LogType.Temperature, $"{ToPrettyString(uid):entity} started taking low temperature damage"); diff --git a/Content.Server/_White/ChangeTemperatureOnCollide/LowTemperatureSlowdownSystem.cs b/Content.Server/_White/ChangeTemperatureOnCollide/LowTemperatureSlowdownSystem.cs index 9c5fc8dada..da4f986857 100644 --- a/Content.Server/_White/ChangeTemperatureOnCollide/LowTemperatureSlowdownSystem.cs +++ b/Content.Server/_White/ChangeTemperatureOnCollide/LowTemperatureSlowdownSystem.cs @@ -1,5 +1,6 @@ using Content.Server.Temperature.Components; using Content.Server.Temperature.Systems; +using Content.Shared.Changeling; using Content.Shared.Movement.Components; using Content.Shared.Movement.Systems; @@ -20,7 +21,9 @@ public sealed class LowTemperatureSlowdownSystem : EntitySystem private void OnMoveSpeedRefresh(EntityUid uid, TemperatureComponent component, RefreshMovementSpeedModifiersEvent args) { - var modifier = !component.Slowdown ? 1f : GetSpeedModifier(component.CurrentTemperature); + var modifier = HasComp(uid) || !component.Slowdown + ? 1f + : GetSpeedModifier(component.CurrentTemperature); args.ModifySpeed(modifier, modifier); } diff --git a/Content.Server/_White/Lighting/PointLightBatteryComponent.cs b/Content.Server/_White/Lighting/PointLightBatteryComponent.cs new file mode 100644 index 0000000000..7ad8c5c84c --- /dev/null +++ b/Content.Server/_White/Lighting/PointLightBatteryComponent.cs @@ -0,0 +1,8 @@ +namespace Content.Server._White.Lighting; + +[RegisterComponent] +public sealed partial class PointLightBatteryComponent : Component +{ + [DataField, ViewVariables(VVAccess.ReadWrite)] + public bool RequireBattery = true; +} diff --git a/Content.Server/_White/Lighting/PointLightBatterySystem.cs b/Content.Server/_White/Lighting/PointLightBatterySystem.cs new file mode 100644 index 0000000000..95a41c28c6 --- /dev/null +++ b/Content.Server/_White/Lighting/PointLightBatterySystem.cs @@ -0,0 +1,30 @@ +using Content.Shared.Lightning; +using Content.Shared.PowerCell; +using Content.Shared.PowerCell.Components; + +namespace Content.Server._White.Lighting; + +public sealed class PointLightBatterySystem : SharedLightningSystem +{ + [Dependency] private readonly SharedPointLightSystem _pointLightSystem = default!; + [Dependency] private readonly SharedPowerCellSystem _cell = default!; + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnBatteryLoose); + } + + private void OnBatteryLoose(EntityUid uid, PointLightBatteryComponent component, PowerCellChangedEvent args) + { + if (!component.RequireBattery) + return; + + if (!_pointLightSystem.TryGetLight(uid, out var pointLightComponent)) + return; + + var isBatteryCharged = _cell.HasDrawCharge(uid); + _pointLightSystem.SetEnabled(uid, isBatteryCharged && !args.Ejected, pointLightComponent); + + RaiseLocalEvent(uid, new PointLightToggleEvent(isBatteryCharged && !args.Ejected), true); + } +} diff --git a/Content.Shared/Changeling/ChangelingComponent.cs b/Content.Shared/Changeling/ChangelingComponent.cs index 9b6a1c5ba9..68171218cb 100644 --- a/Content.Shared/Changeling/ChangelingComponent.cs +++ b/Content.Shared/Changeling/ChangelingComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Humanoid; +using Content.Shared.Humanoid; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; @@ -9,7 +9,7 @@ namespace Content.Shared.Changeling; public sealed partial class ChangelingComponent : Component { [DataField("chemRegenRate")] - public int ChemicalRegenRate = 2; + public int ChemicalRegenRate = 4; [DataField("chemicalCap")] public int ChemicalCapacity = 75; @@ -24,7 +24,7 @@ public sealed partial class ChangelingComponent : Component public float Accumulator; [ViewVariables(VVAccess.ReadOnly)] - public float UpdateDelay = 6f; + public float UpdateDelay = 4f; [ViewVariables(VVAccess.ReadOnly)] public bool IsRegenerating; @@ -48,13 +48,13 @@ public sealed partial class ChangelingComponent : Component public float AbsorbDnaDelay = 10f; [ViewVariables(VVAccess.ReadWrite), DataField("TransformDelay")] - public float TransformDelay = 2f; + public float TransformDelay; [ViewVariables(VVAccess.ReadWrite), DataField("RegenerateDelay")] public float RegenerateDelay = 60f; [ViewVariables(VVAccess.ReadWrite), DataField("LesserFormDelay")] - public float LesserFormDelay = 5f; + public float LesserFormDelay; public bool IsInited; } diff --git a/Content.Shared/Changeling/ChemicalsSystem.cs b/Content.Shared/Changeling/ChemicalsSystem.cs index 304892d81b..761cb75b58 100644 --- a/Content.Shared/Changeling/ChemicalsSystem.cs +++ b/Content.Shared/Changeling/ChemicalsSystem.cs @@ -1,4 +1,5 @@ -using Content.Shared.Alert; +using Content.Shared.Alert; +using Content.Shared.Inventory; using Content.Shared.Mobs.Systems; using Robust.Shared.Network; @@ -10,24 +11,38 @@ public sealed class ChemicalsSystem : EntitySystem [Dependency] private readonly AlertsSystem _alertsSystem = default!; [Dependency] private readonly INetManager _net = default!; + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent>( + OnChemRegenModify); + SubscribeLocalEvent(OnVoidAdaptationChemRegenModify); + } + + private void OnVoidAdaptationChemRegenModify(Entity ent, ref ChemRegenModifyEvent args) + { + args.Multiplier *= ent.Comp.ChemMultiplier; + ent.Comp.ChemMultiplier = 1f; + } + + private void OnChemRegenModify(Entity ent, + ref InventoryRelayedEvent args) + { + args.Args.Multiplier *= ent.Comp.Multiplier; + } + public bool AddChemicals(EntityUid uid, ChangelingComponent component, int quantity) { + var capacity = component.ChemicalCapacity; if (_mobStateSystem.IsDead(uid)) + capacity /= 2; + + if (component.ChemicalsBalance >= capacity) return false; - var toAdd = quantity; + component.ChemicalsBalance = Math.Min(component.ChemicalsBalance + quantity, capacity); - if (component.ChemicalsBalance == component.ChemicalCapacity) - return false; - - if (component.ChemicalsBalance + toAdd > component.ChemicalCapacity) - { - var overflow = component.ChemicalsBalance + toAdd - component.ChemicalCapacity; - toAdd -= overflow; - component.ChemicalsBalance += toAdd; - } - - component.ChemicalsBalance += toAdd; Dirty(uid, component); UpdateAlert(uid, component); @@ -69,11 +84,11 @@ public sealed class ChemicalsSystem : EntitySystem if(component.Accumulator < component.UpdateDelay) continue; - if (component.IsRegenerating) - continue; - component.Accumulator = 0; - AddChemicals(uid, component, component.ChemicalRegenRate); + var ev = new ChemRegenModifyEvent(); + RaiseLocalEvent(uid, ev); + var chemicals = (int) MathF.Round(component.ChemicalRegenRate * ev.Multiplier); + AddChemicals(uid, component, chemicals); } } diff --git a/Content.Shared/Changeling/ClothingModifyChemicalRegenComponent.cs b/Content.Shared/Changeling/ClothingModifyChemicalRegenComponent.cs new file mode 100644 index 0000000000..41e2a013a0 --- /dev/null +++ b/Content.Shared/Changeling/ClothingModifyChemicalRegenComponent.cs @@ -0,0 +1,8 @@ +namespace Content.Shared.Changeling; + +[RegisterComponent] +public sealed partial class ClothingModifyChemicalRegenComponent : Component +{ + [DataField, ViewVariables(VVAccess.ReadWrite)] + public float Multiplier = 0.75f; +} diff --git a/Content.Shared/Changeling/DeleteOnChangelingRefundComponent.cs b/Content.Shared/Changeling/DeleteOnChangelingRefundComponent.cs new file mode 100644 index 0000000000..a1c86fcf23 --- /dev/null +++ b/Content.Shared/Changeling/DeleteOnChangelingRefundComponent.cs @@ -0,0 +1,6 @@ +namespace Content.Shared.Changeling; + +[RegisterComponent] +public sealed partial class DeleteOnChangelingRefundComponent : Component +{ +} diff --git a/Content.Shared/Changeling/SharedChangeling.cs b/Content.Shared/Changeling/SharedChangeling.cs index 6ddd5ea630..0c01f1c7a3 100644 --- a/Content.Shared/Changeling/SharedChangeling.cs +++ b/Content.Shared/Changeling/SharedChangeling.cs @@ -1,5 +1,6 @@ -using Content.Shared.Actions; +using Content.Shared.Actions; using Content.Shared.DoAfter; +using Content.Shared.Inventory; using Robust.Shared.Serialization; namespace Content.Shared.Changeling; @@ -97,3 +98,34 @@ public sealed partial class BiodegradeActionEvent : InstantActionEvent { } +public sealed partial class AugmentedEyesightActionEvent : InstantActionEvent +{ +} + +[Serializable, NetSerializable] +public sealed class AugmentedEyesightPurchasedEvent : EntityEventArgs +{ +} + +public sealed partial class DissonantShriekActionEvent : InstantActionEvent +{ +} + +[Serializable, NetSerializable] +public sealed class VoidAdaptationPurchasedEvent : EntityEventArgs +{ +} + +public sealed class ChemRegenModifyEvent : EntityEventArgs, IInventoryRelayEvent +{ + public SlotFlags TargetSlots => ~SlotFlags.POCKET; + + public float Multiplier = 1f; +} + +public sealed class ChangelingRefundEvent : EntityEventArgs, IInventoryRelayEvent +{ + public SlotFlags TargetSlots => SlotFlags.All; + + public EntityUid Store; +} diff --git a/Content.Shared/Changeling/VoidAdaptationComponent.cs b/Content.Shared/Changeling/VoidAdaptationComponent.cs new file mode 100644 index 0000000000..def52a4c22 --- /dev/null +++ b/Content.Shared/Changeling/VoidAdaptationComponent.cs @@ -0,0 +1,7 @@ +namespace Content.Shared.Changeling; + +[RegisterComponent] +public sealed partial class VoidAdaptationComponent : Component +{ + public float ChemMultiplier = 1f; +} diff --git a/Content.Shared/Inventory/InventorySystem.Relay.cs b/Content.Shared/Inventory/InventorySystem.Relay.cs index bb5413bfb2..4c70107a7b 100644 --- a/Content.Shared/Inventory/InventorySystem.Relay.cs +++ b/Content.Shared/Inventory/InventorySystem.Relay.cs @@ -1,4 +1,5 @@ using Content.Shared._White.StaminaProtection; +using Content.Shared.Changeling; using Content.Shared.Chemistry; using Content.Shared.Damage; using Content.Shared.Electrocution; @@ -29,6 +30,8 @@ public partial class InventorySystem SubscribeLocalEvent(RelayInventoryEvent); SubscribeLocalEvent(RelayInventoryEvent); // WD SubscribeLocalEvent(RelayInventoryEvent); // WD + SubscribeLocalEvent(RelayInventoryEvent); // WD + SubscribeLocalEvent(RelayInventoryEvent); // WD SubscribeLocalEvent(RelayInventoryEvent); // by-ref events diff --git a/Content.Shared/Lathe/SharedLatheSystem.cs b/Content.Shared/Lathe/SharedLatheSystem.cs index b41a91f9c3..71b16a9991 100644 --- a/Content.Shared/Lathe/SharedLatheSystem.cs +++ b/Content.Shared/Lathe/SharedLatheSystem.cs @@ -1,4 +1,5 @@ using System.Diagnostics.CodeAnalysis; +using Content.Shared._White.ShitSilo; using Content.Shared.Emag.Systems; using Content.Shared.Materials; using Content.Shared.Research.Prototypes; @@ -44,9 +45,21 @@ public abstract class SharedLatheSystem : EntitySystem { var adjustedAmount = AdjustMaterial(needed, recipe.ApplyMaterialDiscount, component.MaterialUseMultiplier); - if (_materialStorage.GetMaterialAmount(uid, material) < adjustedAmount * amount) + var gridUid = + HasComp(uid) && + TryComp(uid, out var transformComponent) + ? transformComponent.GridUid + : null; + + var gridStorage = gridUid.HasValue && + TryComp(gridUid, out var materialStorageComponent) + ? materialStorageComponent + : null; + + if (_materialStorage.GetMaterialAmount(uid, material, gridUid: gridUid, gridStorage: gridStorage) < adjustedAmount * amount) return false; } + return true; } diff --git a/Content.Shared/Materials/MaterialStorageComponent.cs b/Content.Shared/Materials/MaterialStorageComponent.cs index 7d8dd5c749..e92f46918a 100644 --- a/Content.Shared/Materials/MaterialStorageComponent.cs +++ b/Content.Shared/Materials/MaterialStorageComponent.cs @@ -7,7 +7,6 @@ using Robust.Shared.Serialization; namespace Content.Shared.Materials; [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] -[Access(typeof(SharedMaterialStorageSystem))] public sealed partial class MaterialStorageComponent : Component { [DataField, AutoNetworkedField] diff --git a/Content.Shared/Materials/SharedMaterialStorageSystem.cs b/Content.Shared/Materials/SharedMaterialStorageSystem.cs index 9f7c87df3c..e8977a55b8 100644 --- a/Content.Shared/Materials/SharedMaterialStorageSystem.cs +++ b/Content.Shared/Materials/SharedMaterialStorageSystem.cs @@ -1,6 +1,8 @@ using System.Linq; +using Content.Shared._White.ShitSilo; using Content.Shared.Interaction; using Content.Shared.Interaction.Components; +using Content.Shared.Lathe; using Content.Shared.Stacks; using JetBrains.Annotations; using Robust.Shared.Prototypes; @@ -77,10 +79,19 @@ public abstract class SharedMaterialStorageSystem : EntitySystem /// /// /// The volume of the material - public int GetMaterialAmount(EntityUid uid, string material, MaterialStorageComponent? component = null) + public int GetMaterialAmount(EntityUid uid, string material, MaterialStorageComponent? component = null, EntityUid? gridUid = null, MaterialStorageComponent? gridStorage = null) { + if (gridUid.HasValue && gridStorage != null) + { + if (!Resolve(gridUid.Value, ref gridStorage)) + return 0; //you have nothing + + return gridStorage.Storage.GetValueOrDefault(material, 0); + } + if (!Resolve(uid, ref component)) return 0; //you have nothing + return component.Storage.GetValueOrDefault(material, 0); } @@ -104,10 +115,19 @@ public abstract class SharedMaterialStorageSystem : EntitySystem /// /// /// If the specified volume will fit - public bool CanTakeVolume(EntityUid uid, int volume, MaterialStorageComponent? component = null) + public bool CanTakeVolume(EntityUid uid, int volume, MaterialStorageComponent? component = null, EntityUid? gridUid = null, MaterialStorageComponent? gridStorage = null) { + if (gridUid.HasValue && gridStorage != null) + { + if (!Resolve(gridUid.Value, ref gridStorage)) + return false; + + return gridStorage.StorageLimit == null || GetTotalMaterialAmount(gridUid.Value, gridStorage) + volume <= gridStorage.StorageLimit; + } + if (!Resolve(uid, ref component)) - return false; + return false; + return component.StorageLimit == null || GetTotalMaterialAmount(uid, component) + volume <= component.StorageLimit; } @@ -119,18 +139,21 @@ public abstract class SharedMaterialStorageSystem : EntitySystem /// /// /// If the amount can be changed - public bool CanChangeMaterialAmount(EntityUid uid, string materialId, int volume, MaterialStorageComponent? component = null) + public bool CanChangeMaterialAmount(EntityUid uid, string materialId, int volume, MaterialStorageComponent? component, EntityUid? gridUid = null, MaterialStorageComponent? gridStorage = null) { if (!Resolve(uid, ref component)) return false; - if (!CanTakeVolume(uid, volume, component)) + if (!CanTakeVolume(uid, volume, component, gridUid:gridUid, gridStorage:gridStorage)) return false; if (component.MaterialWhiteList != null && !component.MaterialWhiteList.Contains(materialId)) return false; - var amount = component.Storage.GetValueOrDefault(materialId); + var amount = gridStorage != null + ? gridStorage.Storage.GetValueOrDefault(materialId) + : component.Storage.GetValueOrDefault(materialId); + return amount + volume >= 0; } @@ -164,21 +187,37 @@ public abstract class SharedMaterialStorageSystem : EntitySystem /// /// /// If it was successful - public bool TryChangeMaterialAmount(EntityUid uid, string materialId, int volume, MaterialStorageComponent? component = null, bool dirty = true) + public bool TryChangeMaterialAmount(EntityUid uid, string materialId, int volume, MaterialStorageComponent? component = null, bool dirty = true, EntityUid? gridUid = null, MaterialStorageComponent? gridStorage = null) { if (!Resolve(uid, ref component)) return false; - if (!CanChangeMaterialAmount(uid, materialId, volume, component)) + + if (!CanChangeMaterialAmount(uid, materialId, volume, component, gridUid:gridUid, gridStorage:gridStorage)) return false; - component.Storage.TryAdd(materialId, 0); - component.Storage[materialId] += volume; + + var rightStorage = gridStorage ?? component; + + rightStorage.Storage.TryAdd(materialId, 0); + rightStorage.Storage[materialId] += volume; var ev = new MaterialAmountChangedEvent(); RaiseLocalEvent(uid, ref ev); if (dirty) Dirty(uid, component); + + // ShitSilo + if (!gridUid.HasValue || gridStorage == null) + return true; // Early return if conditions aren't met + + var eventGrid = new MaterialAmountChangedEvent(); + RaiseLocalEvent(gridUid.Value, ref eventGrid); + + if (dirty) + Dirty(gridUid.Value, gridStorage); + return true; + } /// @@ -248,6 +287,7 @@ public abstract class SharedMaterialStorageSystem : EntitySystem if (storage.Whitelist?.IsValid(toInsert) == false) return false; + if (HasComp(toInsert)) return false; @@ -255,21 +295,34 @@ public abstract class SharedMaterialStorageSystem : EntitySystem var multiplier = TryComp(toInsert, out var stackComponent) ? stackComponent.Count : 1; var totalVolume = 0; + + var gridUid = HasComp(receiver) && + TryComp(receiver, out var transformComponent) + ? transformComponent.GridUid + : null; + + var gridStorage = gridUid.HasValue && TryComp(gridUid, + out var materialStorageComponent) + ? materialStorageComponent + : null; + + foreach (var (mat, vol) in composition.MaterialComposition) { - if (!CanChangeMaterialAmount(receiver, mat, vol * multiplier, storage)) + if (!CanChangeMaterialAmount(receiver, mat, vol * multiplier, storage, gridUid:gridUid, gridStorage:gridStorage)) return false; totalVolume += vol * multiplier; } - if (!CanTakeVolume(receiver, totalVolume, storage)) + if (!CanTakeVolume(receiver, totalVolume, storage, gridUid:gridUid, gridStorage: gridStorage)) return false; foreach (var (mat, vol) in composition.MaterialComposition) { - TryChangeMaterialAmount(receiver, mat, vol * multiplier, storage); + TryChangeMaterialAmount(receiver, mat, vol * multiplier, gridUid:gridUid, gridStorage:gridStorage); } + var insertingComp = EnsureComp(receiver); insertingComp.EndTime = _timing.CurTime + storage.InsertionTime; if (!storage.IgnoreColor) diff --git a/Content.Shared/PowerCell/SharedPowerCellSystem.cs b/Content.Shared/PowerCell/SharedPowerCellSystem.cs index 508bfc85f0..dbf5baf42a 100644 --- a/Content.Shared/PowerCell/SharedPowerCellSystem.cs +++ b/Content.Shared/PowerCell/SharedPowerCellSystem.cs @@ -19,6 +19,7 @@ public abstract class SharedPowerCellSystem : EntitySystem SubscribeLocalEvent(OnCellInserted); SubscribeLocalEvent(OnCellRemoved); SubscribeLocalEvent(OnCellInsertAttempt); + SubscribeLocalEvent(OnPowerChanged); } private void OnRejuvenate(EntityUid uid, PowerCellSlotComponent component, RejuvenateEvent args) @@ -30,6 +31,16 @@ public abstract class SharedPowerCellSystem : EntitySystem RaiseLocalEvent(itemSlot.Item.Value, args); } + private void OnPowerChanged(EntityUid uid, PowerCellSlotComponent component, PowerCellChangedEvent _) + { + if (!component.Initialized) + return; + + var charged = HasDrawCharge(uid); + + _appearance.SetData(uid, PowerCellSlotVisuals.Enabled, charged); + } + private void OnCellInsertAttempt(EntityUid uid, PowerCellSlotComponent component, ContainerIsInsertingAttemptEvent args) { if (!component.Initialized) @@ -51,14 +62,18 @@ public abstract class SharedPowerCellSystem : EntitySystem if (args.Container.ID != component.CellSlotId) return; - _appearance.SetData(uid, PowerCellSlotVisuals.Enabled, true); - RaiseLocalEvent(uid, new PowerCellChangedEvent(false), false); + + var charged = HasDrawCharge(uid); + + _appearance.SetData(uid, PowerCellSlotVisuals.Enabled, charged); + RaiseLocalEvent(uid, new PowerCellChangedEvent(false)); } protected virtual void OnCellRemoved(EntityUid uid, PowerCellSlotComponent component, EntRemovedFromContainerMessage args) { if (args.Container.ID != component.CellSlotId) return; + _appearance.SetData(uid, PowerCellSlotVisuals.Enabled, false); RaiseLocalEvent(uid, new PowerCellChangedEvent(true), false); } diff --git a/Content.Shared/Store/ListingPrototype.cs b/Content.Shared/Store/ListingPrototype.cs index b05f7914a4..e9b7bb82fd 100644 --- a/Content.Shared/Store/ListingPrototype.cs +++ b/Content.Shared/Store/ListingPrototype.cs @@ -132,7 +132,6 @@ public partial class ListingData : IEquatable, ICloneable Description != listing.Description || ProductEntity != listing.ProductEntity || ProductAction != listing.ProductAction || - ProductEvent != listing.ProductEvent || RestockTime != listing.RestockTime) return false; diff --git a/Content.Shared/_Miracle/Systems/SharedNightVisionSystem.cs b/Content.Shared/_Miracle/Systems/SharedNightVisionSystem.cs index 2354f17dd9..b414de944d 100644 --- a/Content.Shared/_Miracle/Systems/SharedNightVisionSystem.cs +++ b/Content.Shared/_Miracle/Systems/SharedNightVisionSystem.cs @@ -23,12 +23,20 @@ public abstract class SharedNightVisionSystem : EntitySystem private void OnRemove(EntityUid uid, NightVisionComponent component, ComponentRemove args) { _actions.RemoveAction(uid, component.ToggleActionEntity); + + if (HasComp(uid)) + return; + UpdateNightVision(uid, false); } private void OnInit(EntityUid uid, NightVisionComponent component, ComponentInit args) { _actions.AddAction(uid, ref component.ToggleActionEntity, component.ToggleAction); + + if (!component.IsActive && HasComp(uid)) + return; + UpdateNightVision(uid, component.IsActive); } @@ -41,8 +49,12 @@ public abstract class SharedNightVisionSystem : EntitySystem component.IsActive = !component.IsActive; _audio.PlayPredicted(component.ToggleSound, uid, uid); - UpdateNightVision(uid, component.IsActive); args.Handled = true; + + if (!component.IsActive && HasComp(uid)) + return; + + UpdateNightVision(uid, component.IsActive); } } diff --git a/Content.Shared/_White/Overlays/TemporaryNightVisionComponent.cs b/Content.Shared/_White/Overlays/TemporaryNightVisionComponent.cs new file mode 100644 index 0000000000..cc4d4aba22 --- /dev/null +++ b/Content.Shared/_White/Overlays/TemporaryNightVisionComponent.cs @@ -0,0 +1,19 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._White.Overlays; + +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class TemporaryNightVisionComponent : Component +{ + [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public Vector3 Tint = new(0.3f, 0.3f, 0.3f); + + [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public float Strength = 2f; + + [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public float Noise = 0.5f; + + [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public Color Color = Color.FromHex("#FB9898"); +} diff --git a/Content.Shared/_White/ShitSilo/BluespaceSiloComponent.cs b/Content.Shared/_White/ShitSilo/BluespaceSiloComponent.cs new file mode 100644 index 0000000000..6d7f3446f8 --- /dev/null +++ b/Content.Shared/_White/ShitSilo/BluespaceSiloComponent.cs @@ -0,0 +1,9 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._White.ShitSilo; + +[RegisterComponent, NetworkedComponent] +public sealed partial class BluespaceSiloComponent : Component +{ + +} diff --git a/Resources/Audio/Lobby/itachi.ogg b/Resources/Audio/Lobby/itachi.ogg new file mode 100644 index 0000000000..74733274d3 Binary files /dev/null and b/Resources/Audio/Lobby/itachi.ogg differ diff --git a/Resources/Changelog/ChangelogWhite.yml b/Resources/Changelog/ChangelogWhite.yml index 273d2af537..0ecc7074e6 100644 --- a/Resources/Changelog/ChangelogWhite.yml +++ b/Resources/Changelog/ChangelogWhite.yml @@ -2171,3 +2171,232 @@ id: 188 time: '2024-03-10T23:07:37.0000000+00:00' url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/146 +- author: ThereDrD + changes: + - message: "\u0421\u0442\u0435\u043D\u044B \u0431\u043E\u043B\u044C\u0448\u0435\ + \ \u043D\u0435 \u043B\u0438\u043F\u043D\u0443\u0442 \u043A \u0448\u043B\u044E\ + \u0437\u0430\u043C" + type: Fix + id: 189 + time: '2024-03-12T04:43:38.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/185 +- author: ThereDrD + changes: + - message: "\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u044B \u0440\u0430\u0437\ + \u043D\u043E\u0446\u0432\u0435\u0442\u043D\u044B\u0435 \u043A\u0440\u0435\u0441\ + \u043B\u0430." + type: Add + id: 190 + time: '2024-03-12T21:53:07.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/190 +- author: ThereDrD + changes: + - message: "\u0420\u0436\u0430\u0432\u044B\u0435 \u0441\u0442\u0435\u043D\u044B\ + \ \u0442\u0435\u043F\u0435\u0440\u044C \u0441\u043E\u0447\u0435\u0442\u0430\u044E\ + \u0442\u0441\u044F \u0441 \u043E\u0441\u0442\u0430\u043B\u044C\u043D\u044B\u043C\ + \u0438." + type: Fix + id: 191 + time: '2024-03-12T22:00:24.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/191 +- author: Aviu + changes: + - message: "\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u043E 3 \u043D\u043E\ + \u0432\u044B\u0445 \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\ + \u0438 \u0433\u0435\u043D\u043E\u043A\u0440\u0430\u0434\u0430." + type: Add + - message: "\u0422\u0435\u043F\u0435\u0440\u044C \u0445\u0438\u0442\u0438\u043D\u043E\ + \u0432\u0430\u044F \u0431\u0440\u043E\u043D\u044F \u0432\u043A\u043B\u044E\u0447\ + \u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044F \u0448\u043B\u0435\u043C." + type: Add + - message: "\u0422\u0435\u043F\u0435\u0440\u044C \u0445\u0438\u0442\u0438\u043D\u043E\ + \u0432\u0430\u044F \u0431\u0440\u043E\u043D\u044F \u0443\u043C\u0435\u043D\u044C\ + \u0448\u0430\u0435\u0442 \u0440\u0435\u0433\u0435\u043D\u0435\u0440\u0430\u0446\ + \u0438\u044E \u0445\u0438\u043C\u0438\u043A\u0430\u0442\u043E\u0432 \u043D\u0430\ + \ 25%." + type: Add + - message: "\u0422\u0435\u043F\u0435\u0440\u044C \u0433\u0435\u043D\u043E\u043A\u0440\ + \u0430\u0434 \u043C\u043E\u0436\u0435\u0442 \u0441\u0434\u0435\u043B\u0430\u0442\ + \u044C \u0432\u043E\u0437\u0432\u0440\u0430\u0442 \u043E\u0447\u043A\u043E\u0432\ + \ \u0437\u0430 \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u0438\ + \ \u043F\u043E\u0441\u043B\u0435 \u043F\u043E\u0433\u043B\u043E\u0449\u0435\u043D\ + \u0438\u044F." + type: Add + - message: "\u0422\u0435\u043F\u0435\u0440\u044C \u043F\u043E\u0433\u043B\u043E\u0449\ + \u0435\u043D\u0438\u0435 \u0432\u043E\u0441\u0441\u0442\u0430\u043D\u0430\u0432\ + \u043B\u0438\u0432\u0430\u0435\u0442 \u0445\u0438\u043C\u0438\u043A\u0430\u0442\ + \u044B." + type: Tweak + - message: "\u0423\u0441\u043A\u043E\u0440\u0435\u043D\u0430 \u0440\u0435\u0433\u0435\ + \u043D\u0435\u0440\u0430\u0446\u0438\u044F \u0445\u0438\u043C\u0438\u043A\u0430\ + \u0442\u043E\u0432 \u0443 \u0433\u0435\u043D\u043E\u043A\u0440\u0430\u0434\u0430\ + ." + type: Tweak + - message: "\u0422\u0435\u043F\u0435\u0440\u044C \u0440\u0443\u043A\u0430-\u043A\ + \u043B\u0438\u043D\u043E\u043A, \u0440\u0443\u043A\u0430-\u0449\u0443\u043F\u0430\ + \u043B\u044C\u0446\u0435, \u0449\u0438\u0442 \u0438 \u0431\u0440\u043E\u043D\ + \u044F \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u0443\u044E\u0442\u0441\u044F\ + \ \u0437\u0430 \u0445\u0438\u043C\u0438\u043A\u0430\u0442\u044B." + type: Tweak + - message: "\u0423\u043C\u0435\u043D\u044C\u0448\u0435\u043D\u0430 \u0437\u0430\u0434\ + \u0435\u0440\u0436\u043A\u0430 \u0443 \u0432\u0441\u0435\u0445 \u0441\u043F\u043E\ + \u0441\u043E\u0431\u043D\u043E\u0441\u0442\u0435\u0439 \u0433\u0435\u043D\u043E\ + \u043A\u0440\u0430\u0434\u0430 \u0434\u043E 1 \u0441\u0435\u043A\u0443\u043D\ + \u0434\u044B." + type: Tweak + - message: "\u0422\u0440\u0430\u043D\u0441\u0444\u043E\u0440\u043C\u0430\u0446\u0438\ + \u044F \u0432 \u0433\u0443\u043C\u0430\u043D\u043E\u0438\u0434\u0430 \u0438\ + \ \u0432 \u043E\u0431\u0435\u0437\u044C\u044F\u043D\u0443 \u0442\u0435\u043F\ + \u0435\u0440\u044C \u043F\u0440\u043E\u0438\u0441\u0445\u043E\u0434\u0438\u0442\ + \ \u043C\u0433\u043D\u043E\u0432\u0435\u043D\u043D\u043E." + type: Tweak + - message: "\u0422\u0435\u043F\u0435\u0440\u044C \u0444\u043E\u0440\u043C\u0430\ + \ \u043E\u0431\u0435\u0437\u044C\u044F\u043D\u044B \u0430\u043A\u0442\u0438\u0432\ + \u0438\u0440\u0443\u0435\u0442\u0441\u044F \u0432 \u043D\u0430\u0440\u0443\u0447\ + \u043D\u0438\u043A\u0430\u0445." + type: Tweak + - message: "\u0412 \u0444\u043E\u0440\u043C\u0435 \u043E\u0431\u0435\u0437\u044C\ + \u044F\u043D\u044B \u043C\u043E\u0436\u043D\u043E \u0438\u0441\u043F\u043E\u043B\ + \u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0436\u0430\u043B\u0430 \u0438 \u0432\ + \u0445\u043E\u0434\u0438\u0442\u044C \u0432 \u0441\u0442\u0430\u0437\u0438\u0441\ + ." + type: Tweak + - message: "\u0414\u0443\u0430\u0444\u0442\u0435\u0440 \u0441\u0442\u0430\u0437\u0438\ + \u0441\u0430 \u0442\u0435\u043F\u0435\u0440\u044C \u0432\u0438\u0434\u0435\u043D\ + \ \u0442\u043E\u043B\u044C\u043A\u043E \u0433\u0435\u043D\u043E\u043A\u0440\u0430\ + \u0434\u0443." + type: Tweak + - message: "\u0412\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\ + \u0438\u0435 \u0442\u043A\u0430\u043D\u0435\u0439 \u0442\u0435\u043F\u0435\u0440\ + \u044C \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u0431\u044B\u0441\u0442\ + \u0440\u0435\u0435." + type: Tweak + - message: "\u0422\u0435\u043F\u0435\u0440\u044C \u0445\u0438\u043C\u0438\u043A\u0430\ + \u0442\u044B \u0440\u0435\u0433\u0435\u043D\u0435\u0440\u0438\u0440\u0443\u044E\ + \u0442\u0441\u044F \u0434\u0430\u0436\u0435 \u0432\u043E \u0432\u0440\u0435\u043C\ + \u044F \u0441\u043C\u0435\u0440\u0442\u0438, \u043D\u043E \u0442\u043E\u043B\ + \u044C\u043A\u043E \u0434\u043E \u043F\u043E\u043B\u043E\u0432\u0438\u043D\u044B\ + ." + type: Tweak + id: 192 + time: '2024-03-13T16:19:30.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/183 +- author: Aviu + changes: + - message: "\u0423 \u0442\u0435\u0440\u043C\u0438\u043D\u0430\u0442\u043E\u0440\u043E\ + \u0432 \u0442\u0435\u043F\u0435\u0440\u044C \u043E\u0431\u044B\u0447\u043D\u044B\ + \u0435 \u0440\u0435\u0437\u0438\u0441\u0442\u044B \u0432 \u043F\u0435\u0440\u0432\ + \u043E\u0439 \u0444\u043E\u0440\u043C\u0435, \u0432\u043E \u0432\u0442\u043E\ + \u0440\u043E\u0439 20% \u043E\u0442 \u0442\u0443\u043F\u043E\u0433\u043E \u0438\ + \ 70% \u043E\u0442 \u0440\u0443\u0431\u044F\u0449\u0435\u0433\u043E, \u043F\u0440\ + \u043E\u043D\u0438\u043A\u0430\u044E\u0449\u0435\u0433\u043E \u0438 \u0442\u0435\ + \u043F\u043B\u043E\u0432\u043E\u0433\u043E." + type: Tweak + id: 193 + time: '2024-03-13T16:19:52.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/186 +- author: ThereDrD + changes: + - message: "\u0412\u0441\u0435 \u043F\u0440\u043E\u0442\u043E\u043B\u0430\u0442\u044B\ + \ \u043D\u0430 \u0441\u0442\u0430\u043D\u0446\u0438\u0438 \u043F\u043E\u043B\ + \u0443\u0447\u0438\u043B\u0438 \u043E\u0431\u0449\u0435\u0435 \u0445\u0440\u0430\ + \u043D\u0438\u043B\u0438\u0449\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043E\ + \u0432." + type: Add + id: 194 + time: '2024-03-13T16:59:05.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/184 +- author: CaypenNow + changes: + - message: "\u0422\u0435\u043F\u0435\u0440\u044C \u044D\u043D\u0435\u0440\u0433\u0435\ + \u0442\u0438\u0447\u0435\u0441\u043A\u0430\u044F \u0432\u0438\u043D\u0442\u043E\ + \u0432\u043A\u0430 \u0437\u0430\u0440\u044F\u0436\u0430\u0435\u0442\u0441\u044F\ + \ \u0432 \u0442\u0443\u0440\u0431\u043E \u0437\u0430\u0440\u044F\u0434\u043D\ + \u0438\u043A\u0435." + type: Fix + - message: "\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0442\ + \u0435\u043C\u043F\u0435\u0440\u0430\u0442\u0443\u0440\u0430 \u0443\u043B\u0443\ + \u0447\u0448\u0435\u043D\u043D\u043E\u0433\u043E (hellfire) \u043E\u0445\u043B\ + \u0430\u0434\u0438\u0442\u0435\u043B\u044F \u043F\u043E\u043D\u0438\u0436\u0435\ + \u043D\u0430 \u0441 23.15K => 19.15K." + type: Tweak + - message: "\u041D\u043E\u0432\u044B\u0435 \u043F\u0435\u0440\u0435\u0432\u043E\u0434\ + \u044B \u043F\u0440\u0435\u0434\u043C\u0435\u0442\u043E\u0432." + type: Fix + id: 195 + time: '2024-03-14T14:00:42.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/197 +- author: ThereDrD + changes: + - message: "\u0417\u0430\u0449\u0438\u0449\u0435\u043D\u043D\u044B\u0439 \u0448\u043B\ + \u044E\u0437 \u043E\u0442\u043B\u0438\u043F \u043E\u0442 \u0441\u0442\u0435\u043D" + type: Fix + id: 196 + time: '2024-03-14T16:55:40.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/198 +- author: ThereDrD + changes: + - message: "\u041F\u043E\u0444\u0438\u043A\u0448\u0435\u043D\u044B \u043D\u0435\u043A\ + \u0440\u0430\u0441\u0438\u0432\u044B\u0435 \u043F\u0435\u0440\u0435\u0445\u043E\ + \u0434\u044B \u043C\u0435\u0436\u0434\u0443 \u0441\u043F\u0440\u0430\u0439\u0442\ + \u0430\u043C\u0438 \u0443 \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0445\ + \ \u0442\u0435\u043A\u0441\u0442\u0443\u0440." + type: Fix + id: 197 + time: '2024-03-14T18:24:27.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/199 +- author: ThereDrD + changes: + - message: "\u041E\u0431\u0449\u0435\u0435 \u0445\u0440\u0430\u043D\u0438\u043B\u0438\ + \u0449\u0435 \u0442\u0435\u043F\u0435\u0440\u044C \u0440\u0430\u0431\u043E\u0442\ + \u0430\u0435\u0442 \u0442\u043E\u043B\u044C\u043A\u043E \u0441 \u043F\u0440\u043E\ + \u0442\u043E\u043B\u0430\u0442\u0430\u043C\u0438, \u0430\u0432\u0442\u043E\u043B\ + \u0430\u0442\u0430\u043C\u0438 \u0438 \u043F\u0440\u0438\u043D\u0442\u0435\u0440\ + \u0430\u043C\u0438 \u0441\u0445\u0435\u043C. \u041E\u0441\u0442\u0430\u043B\u044C\ + \u043D\u043E\u0435 \u0434\u0435\u0440\u0436\u0438\u0442 \u0440\u0435\u0441\u0443\ + \u0440\u0441\u044B \u043B\u043E\u043A\u0430\u043B\u044C\u043D\u043E" + type: Fix + id: 198 + time: '2024-03-16T15:31:06.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/211 +- author: ThereDrD + changes: + - message: "\u0410\u043D\u0430\u043B\u0438\u0437\u0430\u0442\u043E\u0440 \u0437\u0434\ + \u043E\u0440\u043E\u0432\u044C\u044F \u0442\u0435\u043F\u0435\u0440\u044C \u0432\ + \u044B\u0433\u043B\u044F\u0434\u0438\u0442 \u0430\u0434\u0435\u043A\u0432\u0430\ + \u0442\u043D\u043E \u0432 \u0442\u0435\u043C\u043D\u043E\u0442\u0435" + type: Fix + - message: "\u0410\u043D\u0430\u043B\u0438\u0437\u0430\u0442\u043E\u0440 \u0437\u0434\ + \u043E\u0440\u043E\u0432\u044C\u044F \u043C\u0435\u043D\u044F\u0435\u0442 \u0441\ + \u043F\u0440\u0430\u0439\u0442 \u043D\u0430 \u0432\u044B\u043A\u043B\u044E\u0447\ + \u0435\u043D\u043D\u044B\u0439 \u043F\u043E\u0441\u043B\u0435 \u043F\u043E\u0442\ + \u0435\u0440\u0438 \u0437\u0430\u0440\u044F\u0434\u0430." + type: Fix + - message: "\u0410\u043D\u0430\u043B\u0438\u0437\u0430\u0442\u043E\u0440 \u0437\u0434\ + \u043E\u0440\u043E\u0432\u044C\u044F \u0442\u0435\u043F\u0435\u0440\u044C \u043D\ + \u0435\u043C\u043D\u043E\u0433\u043E \u0441\u0432\u0435\u0442\u0438\u0442\u0441\ + \u044F \u0432 \u0442\u0435\u043C\u043D\u043E\u0442\u0435" + type: Add + id: 199 + time: '2024-03-16T15:30:57.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/200 +- author: CaypenNow + changes: + - message: "\u041F\u0435\u0440\u0435\u0432\u043E\u0434\u044B" + type: Fix + - message: "\u0417\u0438\u043F \u043F\u0430\u043A\u0435\u0442\u044B \u0434\u043B\ + \u044F \u0434\u0435\u0442\u0435\u043A\u0442\u0438\u0432\u0430" + type: Add + id: 200 + time: '2024-03-16T15:55:14.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/212 +- author: CaypenNow + changes: + - message: "\u0417\u0432\u0443\u043A\u0438 \u044D\u043C\u043E\u0446\u0438\u0439\ + \ \u0434\u043B\u044F \u043C\u0443\u0436\u0441\u043A\u0438\u0445 \u043F\u0435\ + \u0440\u0441\u043E\u043D\u0430\u0436\u0435\u0439 \u0432\u043E\u0437\u0432\u0440\ + \u0430\u0449\u0435\u043D\u044B." + type: Fix + id: 201 + time: '2024-03-17T01:25:45.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/214 diff --git a/Resources/Locale/ru-RU/_white/fluff/doxxxom.ftl b/Resources/Locale/ru-RU/_white/fluff/doxxxom.ftl new file mode 100644 index 0000000000..ebf9dc578f --- /dev/null +++ b/Resources/Locale/ru-RU/_white/fluff/doxxxom.ftl @@ -0,0 +1,7 @@ +marking-DoxxxomHair = Запутанные волосы + +marking-DoxxxomHorns = Змеиные рожки +marking-DoxxxomHorns-m_frills_hornsdouble_ADJ = Основной + +marking-DoxxxomTail = Змеиный хвост +marking-DoxxxomTail-m_tail_lizard_wagging_smooth_BEHIND = Основной diff --git a/Resources/Locale/ru-RU/_white/object/colored-armchairs.ftl b/Resources/Locale/ru-RU/_white/object/colored-armchairs.ftl new file mode 100644 index 0000000000..32e6c654e0 --- /dev/null +++ b/Resources/Locale/ru-RU/_white/object/colored-armchairs.ftl @@ -0,0 +1,35 @@ +ent-ComfyChairBlack = черное { ent-ComfyChair } + .desc = { ent-ComfyChair.desc } Это черное. + .suffix = черный + +ent-ComfyChairBrown = коричневое { ent-ComfyChair } + .desc = { ent-ComfyChair.desc } Это коричневое. + .suffix = коричневый + +ent-ComfyChairCommand = командное { ent-ComfyChair } + .desc = { ent-ComfyChair.desc } Это темно-синее. + .suffix = командный + +ent-ComfyChairSecurity = охранное { ent-ComfyChair } + .desc = { ent-ComfyChair.desc } Это красное. + .suffix = Служба Безопасности + +ent-ComfyChairMedical = медицинское { ent-ComfyChair } + .desc = { ent-ComfyChair.desc } Это голубое. + .suffix = медицинский + +ent-ComfyChairEngineering = инженерное { ent-ComfyChair } + .desc = { ent-ComfyChair.desc } Это оранжевое. + .suffix = инженерный + +ent-ComfyChairScience = научное { ent-ComfyChair } + .desc = { ent-ComfyChair.desc } Это фиолетовое. + .suffix = научный + +ent-ComfyChairCargo = грузовое { ent-ComfyChair } + .desc = { ent-ComfyChair.desc } Это светло-коричневое. + .suffix = карго + +ent-ComfyChairService = сервисное { ent-ComfyChair } + .desc = { ent-ComfyChair.desc } Это зеленое. + .suffix = сервис diff --git a/Resources/Locale/ru-RU/administration/bwoink.ftl b/Resources/Locale/ru-RU/administration/bwoink.ftl index 17d13c5f88..92bddfeda8 100644 --- a/Resources/Locale/ru-RU/administration/bwoink.ftl +++ b/Resources/Locale/ru-RU/administration/bwoink.ftl @@ -2,3 +2,8 @@ bwoink-user-title = Сообщение от администратора bwoink-system-starmute-message-no-other-users = *Система: Никто не доступен для получения вашего сообщения. Попробуйте обратиться к администраторам игры в Discord. bwoink-system-messages-being-relayed-to-discord = Ваши сообщения передаются администраторам через Discord. bwoink-system-starmute-message-no-other-users-webhook = *Система: Ваше сообщение было передано администраторам в Discord. + +bwoink-system-typing-indicator = {$players} {$count -> +[one] печатает +*[other] печатают +}... diff --git a/Resources/Locale/ru-RU/chat/managers/chat-manager.ftl b/Resources/Locale/ru-RU/chat/managers/chat-manager.ftl index a8b8d7ea46..ca119bae8f 100644 --- a/Resources/Locale/ru-RU/chat/managers/chat-manager.ftl +++ b/Resources/Locale/ru-RU/chat/managers/chat-manager.ftl @@ -26,7 +26,7 @@ chat-manager-entity-say-wrap-message = [BubbleHeader][bold][Name]{$entityName}[/ chat-manager-entity-say-bold-wrap-message = [BubbleHeader][bold][Name]{$entityName}[/Name][/bold][/BubbleHeader] {$verb}, [font={$fontType} size={$fontSize}]"[BubbleContent][bold]{$message}[/bold][/BubbleContent]"[/font] chat-manager-entity-whisper-wrap-message = [font size=11][italic][BubbleHeader]{$entityName}[/BubbleHeader] шепчет,"[BubbleContent]{$message}[/BubbleContent]"[/italic][/font] -chat-manager-entity-whisper-unknown-wrap-message = [font size=11][italic][BubbleHeader]Someone[/BubbleHeader] шепчет, "[BubbleContent]{$message}[/BubbleContent]"[/italic][/font] +chat-manager-entity-whisper-unknown-wrap-message = [font size=11][italic][BubbleHeader]Некто[/BubbleHeader] шепчет, "[BubbleContent]{$message}[/BubbleContent]"[/italic][/font] chat-manager-entity-me-wrap-message = { $entityName } { $message } diff --git a/Resources/Locale/ru-RU/items/components/item-component.ftl b/Resources/Locale/ru-RU/items/components/item-component.ftl index 1e59ec7869..7f644392c1 100644 --- a/Resources/Locale/ru-RU/items/components/item-component.ftl +++ b/Resources/Locale/ru-RU/items/components/item-component.ftl @@ -6,7 +6,7 @@ pick-up-verb-get-data-text = Подобрать pick-up-verb-get-data-text-inventory = Взять в руку -item-component-on-examine-size = Это {INDEFINITE($size)} [bold]{$size}[/bold] предмет. +item-component-on-examine-size = Это [bold]{$size}[/bold] предмет. item-component-size-Tiny = крошечный item-component-size-Small = маленький diff --git a/Resources/Locale/ru-RU/locales-new/autotranslate-55.ftl b/Resources/Locale/ru-RU/locales-new/autotranslate-55.ftl new file mode 100644 index 0000000000..c12b54c166 --- /dev/null +++ b/Resources/Locale/ru-RU/locales-new/autotranslate-55.ftl @@ -0,0 +1,26 @@ +ent-BaseWhistle = свисток + .desc = Кто-то явно забыл выключить чайник! +ent-TearGasGrenade = граната со слезоточивым газом + .desc = Сжигает ваши глаза. +ent-SmokeGrenade = дымовая граната + .desc = Выпускает дым, способный продолжительное время держаться в воздухе. +ent-EmpGrenade = ЭМИ граната + .desc = При активации издает электро-магнитный импульс, способный отключить АПЦ и разрядить электроприборы. +ent-ModularGrenade = модульная граната + .desc = Самодельная граната. Необходим триггер для активации. +ent-WhiteholeGrenade = граната белой дыры + .desc = После активации отталкивает все, что к ней приближается. +ent-SupermatterGrenade = граната суперматерии + .desc = Имитирует взрыв суперматерии, притягивает к себе. Через некоторое время взрывается. +ent-SyndieMiniBomb = минибомба синдиката + .desc = Взрывчатка, изготовленная синдикатом. Создает мощный взрыв после активации. +ent-GrenadeFlashBang = светошумовая граната + .desc = При активации ослепляет. Не забудьте надеть очки! +ent-ExGrenade = граната + .desc = Создает небольшой, но разрушительный взрыв. +ent-TurboItemRecharger = турбо зарядник + .desc = Может заряжать батарейки и оружие с повышенной скоростью. +ent-GasThermoMachineHellfireFreezer = улучшенный охладитель + .desc = Улучшенная версия охладителя. Помимо газа в трубе, охлаждает окружающую его среду. Адски холодно! +ent-GasThermoMachineHellfireHeater = улучшенный нагреватель + .desc = Улучшенная версия нагревателя. Помимо газа в трубе, нагревает окружающую его среду. Адски жарко! diff --git a/Resources/Locale/ru-RU/locales-new/autotranslate-56.ftl b/Resources/Locale/ru-RU/locales-new/autotranslate-56.ftl new file mode 100644 index 0000000000..a4d7b42611 --- /dev/null +++ b/Resources/Locale/ru-RU/locales-new/autotranslate-56.ftl @@ -0,0 +1,10 @@ +ent-SmartFridge = умный ходольник + .desc = Хранит продукты холодными и свежими. +ent-TrainingBomb = тренировочная бомба + .desc = Бомба для оттачивания навыков сапера. Не содержит взрывчатку. +ent-Dresser = комод + .desc = Может хранить в себе вещи, идеально подходит для нижнего белья. +ent-ZipLock = зип пакет + .desc = Предназначен для хранения улик. +ent-BoxZipLocks = коробка зип пакетов + .desc = Заполнена зип пакетами. Обрадуйте детектива! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/markings/cat.ftl b/Resources/Locale/ru-RU/markings/cat.ftl index a88cc475bb..83f4c77ca6 100644 --- a/Resources/Locale/ru-RU/markings/cat.ftl +++ b/Resources/Locale/ru-RU/markings/cat.ftl @@ -40,6 +40,9 @@ marking-SomeTailHZZ = Лисий хвост 3 marking-SomeTailHZZ-tail = Хвост marking-SomeTailHZZ-tail_tip = Кончик +marking-SomeTailPoebat = Пиздатый хвост +marking-SomeTailPoebat-ebaniyhvost = Хвост + marking-knifeCappyEars1 = Ушки Аксолотля marking-knifeCappyTail1 = Хвост Аксолотля marking-knifeCappyTail2 = Хвост Аксолотля diff --git a/Resources/Locale/ru-RU/white/changeling/changeling-entities.ftl b/Resources/Locale/ru-RU/white/changeling/changeling-entities.ftl index 22ef824925..4d155a6359 100644 --- a/Resources/Locale/ru-RU/white/changeling/changeling-entities.ftl +++ b/Resources/Locale/ru-RU/white/changeling/changeling-entities.ftl @@ -1,9 +1,18 @@ -changeling-ability-fleshmend = Восстановление тканей +changeling-ability-fleshmend = Восстановление тканей changeling-ability-fleshmend-desc = Быстро вылечить большую часть повреждений changeling-ability-biodegrade = Биоразложение changeling-ability-biodegrade-desc = Растворяет наручники и прочие сдерживающие элементы. +changeling-ability-eyesight = Аугментация зрения +changeling-ability-eyesight-desc = Развивает переключаемое ночное зрение. Когда способность неактивна, защищает вас от флешек и яркого света, например от сварки. + +changeling-ability-dissonant-shriek = Диссонирующий вопль +changeling-ability-dissonant-shriek-desc = Испускает заряд ЭМИ, который нарушает работу всего оборудования вокруг. + +changeling-ability-void-adaptation = Пустотная адаптация +changeling-ability-void-adaptation-desc = Наделяет пассивной способностью, позволяющей сопротивляться холоду, низкому давлению и потребности в кислороде. При использовании замедляет регенерацию химикатов на 25%. + changeling-ability-adrenaline-sacks = Мешки с адреналином changeling-ability-adrenaline-sacks-desc = Дает кратковременный прилив адреналина в крови. diff --git a/Resources/Maps/Test/dev_map.yml b/Resources/Maps/Test/dev_map.yml index f00d7049a5..1ec9085beb 100644 --- a/Resources/Maps/Test/dev_map.yml +++ b/Resources/Maps/Test/dev_map.yml @@ -376,6 +376,7 @@ entities: - type: GasTileOverlay - type: BecomesStation id: Dev + - type: MaterialStorage - type: SpreaderGrid - type: GridPathfinding - type: NavMap diff --git a/Resources/Maps/Test/empty.yml b/Resources/Maps/Test/empty.yml index 830926268e..1cb2172b4a 100644 --- a/Resources/Maps/Test/empty.yml +++ b/Resources/Maps/Test/empty.yml @@ -29,6 +29,7 @@ entities: fixtures: {} - type: BecomesStation id: Empty + - type: MaterialStorage - type: OccluderTree - type: Shuttle - type: GridPathfinding diff --git a/Resources/Maps/Test/test_teg.yml b/Resources/Maps/Test/test_teg.yml index 4a101265bb..48477283b9 100644 --- a/Resources/Maps/Test/test_teg.yml +++ b/Resources/Maps/Test/test_teg.yml @@ -241,6 +241,7 @@ entities: - type: RadiationGridResistance - type: BecomesStation id: TEG + - type: MaterialStorage - proto: AirAlarm entities: - uid: 436 diff --git a/Resources/Maps/atlas.yml b/Resources/Maps/atlas.yml index 68996e61c2..ab804d93cc 100644 --- a/Resources/Maps/atlas.yml +++ b/Resources/Maps/atlas.yml @@ -2546,6 +2546,7 @@ entities: chunkSize: 4 - type: BecomesStation id: Atlas + - type: MaterialStorage - type: OccluderTree - type: SpreaderGrid - type: Shuttle diff --git a/Resources/Maps/bagel.yml b/Resources/Maps/bagel.yml index d27a3cbe43..b483e97dd2 100644 --- a/Resources/Maps/bagel.yml +++ b/Resources/Maps/bagel.yml @@ -459,6 +459,7 @@ entities: fixtures: {} - type: BecomesStation id: Bagel + - type: MaterialStorage - type: Gravity gravityShakeSound: !type:SoundPathSpecifier path: /Audio/Effects/alert.ogg diff --git a/Resources/Maps/box.yml b/Resources/Maps/box.yml index c0d0278c35..9f04f3c1ca 100644 --- a/Resources/Maps/box.yml +++ b/Resources/Maps/box.yml @@ -489,6 +489,7 @@ entities: fixtures: {} - type: BecomesStation id: Boxstation + - type: MaterialStorage - type: Gravity gravityShakeSound: !type:SoundPathSpecifier path: /Audio/Effects/alert.ogg diff --git a/Resources/Maps/centcomm.yml b/Resources/Maps/centcomm.yml index b64158f08b..12a8d33bcc 100644 --- a/Resources/Maps/centcomm.yml +++ b/Resources/Maps/centcomm.yml @@ -162,6 +162,7 @@ entities: fixtures: {} - type: BecomesStation id: centcomm + - type: MaterialStorage - type: Gravity gravityShakeSound: !type:SoundPathSpecifier path: /Audio/Effects/alert.ogg diff --git a/Resources/Maps/cluster.yml b/Resources/Maps/cluster.yml index 14d64ee35e..7c1c125441 100644 --- a/Resources/Maps/cluster.yml +++ b/Resources/Maps/cluster.yml @@ -4423,6 +4423,7 @@ entities: - type: RadiationGridResistance - type: BecomesStation id: Cluster + - type: MaterialStorage - type: SpreaderGrid - type: GridPathfinding - uid: 12281 diff --git a/Resources/Maps/core.yml b/Resources/Maps/core.yml index 4bfbaece03..49f9368d4f 100644 --- a/Resources/Maps/core.yml +++ b/Resources/Maps/core.yml @@ -10938,6 +10938,7 @@ entities: - type: RadiationGridResistance - type: BecomesStation id: Core + - type: MaterialStorage - uid: 17546 components: - type: MetaData @@ -100931,11 +100932,11 @@ entities: After several simulations where Superconducting Magnetic Energy Storage units were drained from the main system from [italic]a variety[/italic] of user errors and other shenanigans, it has been determined that the Singularity should be put on its own power loop, disconnected from the main station. The upsides of this include but are not limited to: - [bold]1.[/bold] Limited external forces from the containments power. + [bold]1.[/bold] Limited external forces from the containments power. - [bold]2.[/bold] An "early warning" system, if you see JUST the PA room run out of power, you know there is an issue. + [bold]2.[/bold] An "early warning" system, if you see JUST the PA room run out of power, you know there is an issue. - [bold]3.[/bold] Due to being on its own small loop, its much easier to spot faults in the system. + [bold]3.[/bold] Due to being on its own small loop, its much easier to spot faults in the system. [italic]While we have listed the upsides we also acknowledge the downside,[/italic] for it being on its own loop you will need an external force if the system "runs out of juice". Our recommendation for this is simply attaching a generator to said SMES and letting it get to full charge before continuing operations but as said from another of our technicians... "just attach it to the main grid for like, a hot moment, and kickstart the thing!" diff --git a/Resources/Maps/europa.yml b/Resources/Maps/europa.yml index e0cb676c39..4350cc21b6 100644 --- a/Resources/Maps/europa.yml +++ b/Resources/Maps/europa.yml @@ -11429,6 +11429,7 @@ entities: - type: LoadedMap - type: BecomesStation id: Europa + - type: MaterialStorage - proto: AccordionInstrument entities: - uid: 2598 diff --git a/Resources/Maps/fland.yml b/Resources/Maps/fland.yml index 7322efa508..5bce8acaf2 100644 --- a/Resources/Maps/fland.yml +++ b/Resources/Maps/fland.yml @@ -596,6 +596,7 @@ entities: fixtures: {} - type: BecomesStation id: Fland + - type: MaterialStorage - type: OccluderTree - type: Shuttle - type: Gravity diff --git a/Resources/Maps/marathon.yml b/Resources/Maps/marathon.yml index bed5dd26f6..0d910d53a7 100644 --- a/Resources/Maps/marathon.yml +++ b/Resources/Maps/marathon.yml @@ -7741,6 +7741,7 @@ entities: chunkSize: 4 - type: BecomesStation id: Marathon + - type: MaterialStorage - type: OccluderTree - type: Shuttle - type: RadiationGridResistance diff --git a/Resources/Maps/meta.yml b/Resources/Maps/meta.yml index 10fa94ffb0..416b8112b3 100644 --- a/Resources/Maps/meta.yml +++ b/Resources/Maps/meta.yml @@ -8197,6 +8197,7 @@ entities: chunkSize: 4 - type: BecomesStation id: Meta + - type: MaterialStorage - type: OccluderTree - type: Shuttle - type: GasTileOverlay diff --git a/Resources/Maps/omega.yml b/Resources/Maps/omega.yml index 8bb990566e..3ee8f0da7d 100644 --- a/Resources/Maps/omega.yml +++ b/Resources/Maps/omega.yml @@ -4186,6 +4186,7 @@ entities: chunkSize: 4 - type: BecomesStation id: Omega + - type: MaterialStorage - type: OccluderTree - type: Shuttle - type: RadiationGridResistance diff --git a/Resources/Maps/origin.yml b/Resources/Maps/origin.yml index 5817fe5a16..325a29a96c 100644 --- a/Resources/Maps/origin.yml +++ b/Resources/Maps/origin.yml @@ -10484,6 +10484,7 @@ entities: chunkSize: 4 - type: BecomesStation id: Origin + - type: MaterialStorage - type: OccluderTree - type: Shuttle - type: RadiationGridResistance diff --git a/Resources/Maps/packed.yml b/Resources/Maps/packed.yml index 00969fa062..b1b542ec91 100644 --- a/Resources/Maps/packed.yml +++ b/Resources/Maps/packed.yml @@ -278,6 +278,7 @@ entities: fixtures: {} - type: BecomesStation id: Packed + - type: MaterialStorage - type: Gravity gravityShakeSound: !type:SoundPathSpecifier path: /Audio/Effects/alert.ogg diff --git a/Resources/Maps/reach.yml b/Resources/Maps/reach.yml index a4d369582b..b9c875579a 100644 --- a/Resources/Maps/reach.yml +++ b/Resources/Maps/reach.yml @@ -95,6 +95,7 @@ entities: fixtures: {} - type: BecomesStation id: Reach + - type: MaterialStorage - type: OccluderTree - type: Shuttle - type: GridPathfinding diff --git a/Resources/Maps/saltern.yml b/Resources/Maps/saltern.yml index 49fc8a3dfc..64c0d8cefd 100644 --- a/Resources/Maps/saltern.yml +++ b/Resources/Maps/saltern.yml @@ -236,6 +236,7 @@ entities: fixtures: {} - type: BecomesStation id: Saltern + - type: MaterialStorage - type: GridAtmosphere version: 2 data: diff --git a/Resources/Maps/train.yml b/Resources/Maps/train.yml index fb6e8ddc4a..f8ddea0e99 100644 --- a/Resources/Maps/train.yml +++ b/Resources/Maps/train.yml @@ -5373,6 +5373,7 @@ entities: - type: FTLDestination - type: BecomesStation id: Train + - type: MaterialStorage - proto: AccordionInstrument entities: - uid: 12393 diff --git a/Resources/Prototypes/Actions/changeling.yml b/Resources/Prototypes/Actions/changeling.yml index 77df3acc27..4786036641 100644 --- a/Resources/Prototypes/Actions/changeling.yml +++ b/Resources/Prototypes/Actions/changeling.yml @@ -21,7 +21,7 @@ icon: White/Actions/changeling.rsi/absorb.png event: !type:AbsorbDnaActionEvent canTargetSelf: false - useDelay: 10 + useDelay: 1 - type: LesserFormRestricted - type: entity @@ -34,7 +34,7 @@ itemIconStyle: NoItem icon: White/Actions/changeling.rsi/transform.png event: !type:TransformActionEvent - useDelay: 30 + useDelay: 1 - type: entity id: ActionChangelingRegenerate @@ -47,8 +47,7 @@ icon: White/Actions/changeling.rsi/reviving_stasis.png event: !type:RegenerateActionEvent checkCanInteract: false - useDelay: 120 - - type: LesserFormRestricted + useDelay: 1 - type: entity id: ActionChangelingLesserForm @@ -60,7 +59,8 @@ itemIconStyle: NoItem icon: White/Actions/changeling.rsi/lesser_form.png event: !type:LesserFormActionEvent - useDelay: 90 + useDelay: 1 + checkCanInteract: false - type: LesserFormRestricted - type: entity @@ -74,8 +74,7 @@ icon: White/Actions/changeling.rsi/sting_extract.png event: !type:ExtractionStingActionEvent canTargetSelf: false - useDelay: 40 - - type: LesserFormRestricted + useDelay: 1 - type: entity id: ActionTransformSting @@ -88,8 +87,7 @@ icon: White/Actions/changeling.rsi/sting_transform.png event: !type:TransformStingActionEvent canTargetSelf: false - useDelay: 120 - - type: LesserFormRestricted + useDelay: 1 - type: entity id: ActionBlindSting @@ -102,8 +100,7 @@ icon: White/Actions/changeling.rsi/sting_blind.png event: !type:BlindStingActionEvent canTargetSelf: false - useDelay: 30 - - type: LesserFormRestricted + useDelay: 1 - type: entity id: ActionMuteSting @@ -116,8 +113,7 @@ icon: White/Actions/changeling.rsi/sting_mute.png event: !type:MuteStingActionEvent canTargetSelf: false - useDelay: 30 - - type: LesserFormRestricted + useDelay: 1 - type: entity id: ActionHallucinationSting @@ -130,8 +126,7 @@ icon: White/Actions/changeling.rsi/sting_hallucination.png event: !type:HallucinationStingActionEvent canTargetSelf: false - useDelay: 30 - - type: LesserFormRestricted + useDelay: 1 - type: entity id: ActionCryoSting @@ -144,8 +139,7 @@ icon: White/Actions/changeling.rsi/sting_cryo.png event: !type:CryoStingActionEvent canTargetSelf: false - useDelay: 30 - - type: LesserFormRestricted + useDelay: 1 - type: entity id: ActionAdrenalineSacs @@ -157,7 +151,7 @@ itemIconStyle: NoItem icon: White/Actions/changeling.rsi/adrenaline_sacs.png event: !type:AdrenalineSacsActionEvent - useDelay: 60 + useDelay: 1 - type: LesserFormRestricted - type: entity @@ -170,7 +164,7 @@ itemIconStyle: NoItem icon: White/Actions/changeling.rsi/fleshmend.png event: !type:FleshmendActionEvent - useDelay: 60 + useDelay: 1 - type: LesserFormRestricted - type: entity @@ -183,7 +177,7 @@ itemIconStyle: NoItem icon: White/Actions/changeling.rsi/arm_blade.png event: !type:ArmbladeActionEvent - useDelay: 10 + useDelay: 1 - type: LesserFormRestricted - type: entity @@ -196,7 +190,7 @@ itemIconStyle: NoItem icon: White/Actions/changeling.rsi/shield.png event: !type:OrganicShieldActionEvent - useDelay: 10 + useDelay: 1 - type: LesserFormRestricted - type: entity @@ -209,7 +203,7 @@ itemIconStyle: NoItem icon: White/Actions/changeling.rsi/armor.png event: !type:ChitinousArmorActionEvent - useDelay: 10 + useDelay: 1 - type: LesserFormRestricted - type: entity @@ -222,7 +216,7 @@ itemIconStyle: NoItem icon: White/Actions/changeling.rsi/tentacle_arm.png event: !type:TentacleArmActionEvent - useDelay: 10 + useDelay: 1 - type: LesserFormRestricted - type: entity @@ -236,4 +230,30 @@ checkCanInteract: false icon: White/Actions/changeling.rsi/biodegrade.png event: !type:BiodegradeActionEvent - useDelay: 120 + useDelay: 1 + +- type: entity + id: ActionAugmentedEyesight + name: changeling-ability-eyesight + description: changeling-ability-eyesight-desc + noSpawn: true + components: + - type: InstantAction + itemIconStyle: NoItem + checkCanInteract: false + icon: White/Actions/changeling.rsi/augmented_eyesight.png + event: !type:AugmentedEyesightActionEvent + +- type: entity + id: ActionDissonantShriek + name: changeling-ability-dissonant-shriek + description: changeling-ability-dissonant-shriek-desc + noSpawn: true + components: + - type: InstantAction + itemIconStyle: NoItem + checkCanInteract: false + icon: White/Actions/changeling.rsi/dissonant_shriek.png + event: !type:DissonantShriekActionEvent + useDelay: 1 + - type: LesserFormRestricted diff --git a/Resources/Prototypes/Catalog/Fills/Boxes/security.yml b/Resources/Prototypes/Catalog/Fills/Boxes/security.yml index 553df26d79..36de9f5d3d 100644 --- a/Resources/Prototypes/Catalog/Fills/Boxes/security.yml +++ b/Resources/Prototypes/Catalog/Fills/Boxes/security.yml @@ -80,21 +80,4 @@ - type: Sprite layers: - state: box_security - - state: forensic - -#White - -- type: entity - name: body camera box - parent: BoxCardboard - id: BoxBodyCamera - description: A box full of body cameras. - components: - - type: StorageFill - contents: - - id: SurveillanceBodyCamera - amount: 3 - - type: Sprite - layers: - - state: box_security - - state: bodycam + - state: forensic \ No newline at end of file diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/security.yml b/Resources/Prototypes/Catalog/Fills/Lockers/security.yml index 90eecb2b57..5fea75ab0e 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/security.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/security.yml @@ -138,6 +138,7 @@ - id: BoxBodyCamera - id: VoiceRecorder - id: ClothingEyesGlassesSecurity + - id: BoxZipLocks - type: entity id: ClosetBombFilled diff --git a/Resources/Prototypes/Catalog/changeling_catalog.yml b/Resources/Prototypes/Catalog/changeling_catalog.yml index 7d8bbcaff9..4536dd403e 100644 --- a/Resources/Prototypes/Catalog/changeling_catalog.yml +++ b/Resources/Prototypes/Catalog/changeling_catalog.yml @@ -64,6 +64,20 @@ - !type:ListingLimitedStockCondition stock: 1 +- type: listing + id: ChangelingVoidAdaptation + name: changeling-ability-void-adaptation + description: changeling-ability-void-adaptation-desc + icon: { sprite: /Textures/White/Actions/changeling.rsi, state: organic_suit } + productEvent: !type:VoidAdaptationPurchasedEvent + cost: + ChangelingPoint: 2 + categories: + - ChangelingAbilities + conditions: + - !type:ListingLimitedStockCondition + stock: 1 + # Stings - type: listing id: ChangelingExtractionString @@ -182,3 +196,30 @@ conditions: - !type:ListingLimitedStockCondition stock: 1 + +- type: listing + id: ChangelingAugmentedEyesight + name: changeling-ability-eyesight + description: changeling-ability-eyesight-desc + productAction: ActionAugmentedEyesight + productEvent: !type:AugmentedEyesightPurchasedEvent + cost: + ChangelingPoint: 2 + categories: + - ChangelingBoosters + conditions: + - !type:ListingLimitedStockCondition + stock: 1 + +- type: listing + id: ChangelingDissonantShriek + name: changeling-ability-dissonant-shriek + description: changeling-ability-dissonant-shriek-desc + productAction: ActionDissonantShriek + cost: + ChangelingPoint: 1 + categories: + - ChangelingBoosters + conditions: + - !type:ListingLimitedStockCondition + stock: 1 diff --git a/Resources/Prototypes/Damage/modifier_sets.yml b/Resources/Prototypes/Damage/modifier_sets.yml index e850785863..a70270252d 100644 --- a/Resources/Prototypes/Damage/modifier_sets.yml +++ b/Resources/Prototypes/Damage/modifier_sets.yml @@ -313,15 +313,13 @@ - type: damageModifierSet id: CyberneticFlesh coefficients: - Blunt: 0.2 - Slash: 0.2 - Piercing: 0.1 - # fire and lasers burn it good + Blunt: 1.0 + Slash: 1.0 + Piercing: 1.0 Heat: 1.0 - # zap - Shock: 1.5 - Cold: 0.25 - Caustic: 0.25 + Shock: 1.0 + Cold: 1.0 + Caustic: 1.0 # doesnt have organs to poison Poison: 0.0 Cellular: 0.0 @@ -331,18 +329,13 @@ id: Cybernetic coefficients: # bonk - Blunt: 1.0 - # alloy too hard to cut or shoot - Slash: 0.0 - Piercing: 0.0 - # no burning anymore - Heat: 0.0 + Blunt: 0.8 + Slash: 0.3 + Piercing: 0.3 + Heat: 0.3 # zap zap Shock: 2.5 Cold: 0.0 Caustic: 0.0 Poison: 0.0 Cellular: 0.0 - flatReductions: - # can't punch the endoskeleton to death - Blunt: 5 diff --git a/Resources/Prototypes/Entities/Clothing/Head/helmets.yml b/Resources/Prototypes/Entities/Clothing/Head/helmets.yml index e38cb3af71..4dc929b3b6 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/helmets.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/helmets.yml @@ -288,10 +288,13 @@ - type: Armor #admeme item so it should be fine being overpowered while helmets are still intentionally kneecapped. modifiers: coefficients: - Blunt: 0.5 - Slash: 0.5 - Piercing: 0.5 - Heat: 0.9 + Blunt: 0.8 + Slash: 0.8 + Piercing: 0.85 + Heat: 0.8 + - type: Unremoveable + deleteOnDrop: true + - type: DeleteOnChangelingRefund #ERT HELMETS #ERT Leader Helmet diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml index a826bd5586..5793210b3a 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml @@ -171,8 +171,11 @@ Heat: 0.5 - type: ExplosionResistance damageCoefficient: 0.9 + - type: GroupExamine - type: Unremoveable deleteOnDrop: true + - type: ClothingModifyChemicalRegen + - type: DeleteOnChangelingRefund - type: entity parent: ClothingOuterArmorHeavy diff --git a/Resources/Prototypes/Entities/Effects/chemistry_effects.yml b/Resources/Prototypes/Entities/Effects/chemistry_effects.yml index a8e28a1ef7..fe9175e2d9 100644 --- a/Resources/Prototypes/Entities/Effects/chemistry_effects.yml +++ b/Resources/Prototypes/Entities/Effects/chemistry_effects.yml @@ -68,9 +68,6 @@ - map: [ "enum.EdgeLayer.West" ] state: foam-west - type: SmoothEdge - - type: IconSmooth - key: walls - mode: NoSprite - type: FoamVisuals animationTime: 0.6 animationState: foam-dissolve @@ -148,9 +145,6 @@ - type: Occluder - type: Appearance - type: SmoothEdge - - type: IconSmooth - key: walls - mode: NoSprite - type: Transform anchored: true - type: Airtight diff --git a/Resources/Prototypes/Entities/Objects/Shields/shields.yml b/Resources/Prototypes/Entities/Objects/Shields/shields.yml index aef48e42d6..47b4084ca7 100644 --- a/Resources/Prototypes/Entities/Objects/Shields/shields.yml +++ b/Resources/Prototypes/Entities/Objects/Shields/shields.yml @@ -143,6 +143,7 @@ Piercing: 1.5 - type: Unremoveable deleteOnDrop: true + - type: DeleteOnChangelingRefund - type: Destructible thresholds: - trigger: diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/healthanalyzer.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/healthanalyzer.yml index 64bd04569b..288099f9f1 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/healthanalyzer.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/healthanalyzer.yml @@ -8,11 +8,12 @@ sprite: Objects/Specific/Medical/healthanalyzer.rsi state: icon layers: - - state: icon - - state: analyzer - shader: unshaded + - map: [ "analyzerLayerBody" ] + state: icon visible: true - map: [ "enum.PowerDeviceVisualLayers.Powered" ] + - map: [ "analyzerLayerScreen" ] + state: powered + visible: false - type: Item storedRotation: -90 - type: ActivatableUI @@ -33,8 +34,8 @@ visuals: enum.PowerCellSlotVisuals.Enabled: enum.PowerDeviceVisualLayers.Powered: - True: { visible: true } - False: { visible: false } + True: { state: powered, visible: true, shader: unshaded } + False: { state: powered, visible: false } - type: GuideHelp guides: - Medical Doctor @@ -46,7 +47,14 @@ components: - type: PowerCellDraw drawRate: 1.2 #Calculated for 5 minutes on a small cell + - type: PowerCellSlot + cellSlotId: cell_slot - type: ActivatableUIRequiresPowerCell + - type: PointLightBattery + - type: PointLight + radius: 1.2 + energy: 0.5 + color: "#7FB6C0" - type: entity id: HandheldHealthAnalyzerEmpty diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml index d93be773f7..9970bec869 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml @@ -298,6 +298,7 @@ volume: -10 - type: Unremoveable deleteOnDrop: true + - type: DeleteOnChangelingRefund # Admeme diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml index 19f74b4e81..99cbebea07 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml @@ -28,3 +28,4 @@ - type: Unremoveable deleteOnDrop: true - type: ToolForcePowered + - type: DeleteOnChangelingRefund diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml index 4acdc122fe..70a8c85e92 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml @@ -350,7 +350,7 @@ parent: GrenadeBase id: SmokeGrenade name: smoke grenade - description: A tactical grenade that releases a large, long-lasting cloud of smoke when used. + description: A tactical grenade that releases a large, long-lasting cloud of smoke when used. components: - type: Sprite sprite: Objects/Weapons/Grenades/smoke.rsi diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml index a185d45353..034d5fdcfa 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml @@ -131,9 +131,6 @@ - board - type: PlacementReplacement key: walls - - type: IconSmooth - key: walls - mode: NoSprite - type: PaintableAirlock group: Standard department: Civilian diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/highsec.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/highsec.yml index d799558df7..49a6d24938 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/highsec.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/highsec.yml @@ -1,12 +1,11 @@ - type: entity id: HighSecDoor - parent: BaseStructure + parent: Airlock name: high security door description: Keeps the bad out and keeps the good in. placement: mode: SnapgridCenter components: - - type: InteractionOutline - type: Sprite sprite: Structures/Doors/Airlocks/highsec/highsec.rsi layers: @@ -25,25 +24,6 @@ shader: unshaded - state: panel_open map: ["enum.WiresVisualLayers.MaintenancePanel"] - - type: AnimationPlayer - - type: Physics - - type: Fixtures - fixtures: - fix1: - shape: - !type:PhysShapeAabb - bounds: "-0.49,-0.49,0.49,0.49" # don't want this colliding with walls or they won't close - density: 100 - mask: - - FullTileMask - layer: - - WallLayer - - type: ContainerFill - containers: - board: [ DoorElectronics ] - - type: ContainerContainer - containers: - board: !type:Container - type: Door crushDamage: types: @@ -56,35 +36,15 @@ path: /Audio/Machines/airlock_deny.ogg - type: Weldable time: 10 - - type: Airlock - - type: NavMapDoor - - type: DoorBolt - - type: AccessReader - - type: Appearance - - type: WiresVisuals - type: ApcPowerReceiver powerLoad: 20 - - type: ExtensionCableReceiver - - type: Electrified - enabled: false - usesApcPower: true - - type: WiresPanel - type: WiresPanelSecurity securityLevel: maxSecurity - type: Wires boardName: wires-board-name-highsec layoutId: HighSec alwaysRandomize: true - - type: UserInterface - interfaces: - - key: enum.WiresUiKey.Key - type: WiresBoundUserInterface - - type: Airtight - fixVacuum: true - type: Occluder - - type: Damageable - damageContainer: StructuralInorganic - damageModifierSet: StrongMetallic - type: Destructible thresholds: - trigger: @@ -93,9 +53,6 @@ behaviors: - !type:DoActsBehavior acts: ["Destruction"] - - type: IconSmooth - key: walls - mode: NoSprite - type: Construction graph: Airlock node: highSecDoor diff --git a/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml b/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml index 84f8edfd14..dfe4f39ece 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml @@ -52,9 +52,6 @@ behaviors: - !type:DoActsBehavior acts: ["Destruction"] - - type: IconSmooth - key: walls - mode: NoSprite - type: Occluder - type: ReflectAspectMark diff --git a/Resources/Prototypes/Entities/Structures/Doors/Shutter/shutters.yml b/Resources/Prototypes/Entities/Structures/Doors/Shutter/shutters.yml index 83521e902d..ac5becdc38 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Shutter/shutters.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Shutter/shutters.yml @@ -75,9 +75,6 @@ behaviors: - !type:DoActsBehavior acts: ["Destruction"] - - type: IconSmooth - key: walls - mode: NoSprite - type: DoorSignalControl - type: DeviceNetwork deviceNetId: Wireless diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 515a40e236..7d4858eca9 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -18,6 +18,7 @@ layer: - MachineLayer - type: Lathe + - type: BluespaceSilo - type: MaterialStorage - type: Destructible thresholds: @@ -225,6 +226,7 @@ - MagazineGrenadeEmpty - GrenadeEMP - GrenadeFlash + - type: BluespaceSilo - type: entity id: AutolatheHyperConvection @@ -237,6 +239,7 @@ - type: Lathe materialUseMultiplier: 0.5 timeMultiplier: 1.5 + - type: BluespaceSilo - type: LatheHeatProducing - type: Machine board: AutolatheHyperConvectionMachineCircuitboard @@ -349,6 +352,7 @@ - WeaponAdvancedLaser - WeaponLaserCannon - WeaponXrayCannon + - type: BluespaceSilo - type: entity id: ProtolatheHyperConvection @@ -361,6 +365,7 @@ - type: Lathe materialUseMultiplier: 0.5 timeMultiplier: 1.5 + - type: BluespaceSilo - type: LatheHeatProducing - type: Machine board: ProtolatheHyperConvectionMachineCircuitboard @@ -476,6 +481,7 @@ - ArtifactCrusherMachineCircuitboard - TelecomServerCircuitboard - MassMediaCircuitboard + - type: BluespaceSilo - type: MaterialStorage whitelist: tags: @@ -588,6 +594,7 @@ - HamtrLLeg - HamtrRLeg - VimHarness + - type: BluespaceSilo - type: MaterialStorage whitelist: tags: @@ -640,6 +647,7 @@ - AbominationCube - SpaceCarpCube - SpaceTickCube + - type: BluespaceSilo - type: entity id: SecurityTechFab @@ -770,6 +778,7 @@ - Sheet - RawMaterial - Ingot + - type: BluespaceSilo - type: entity id: AmmoTechFab @@ -816,11 +825,12 @@ - MagazineBoxMagnumAP - MagazineBoxAntiMateriel - MagazineBoxCaselessRifle + - type: BluespaceSilo - type: MaterialStorage whitelist: tags: - Sheet - + - - type: entity id: MedicalTechFab parent: BaseLathe @@ -889,6 +899,7 @@ - SyringeBluespace - SyringeCryostasis - ClothingEyesHudMedical + - type: BluespaceSilo - type: Machine board: MedicalTechFabCircuitboard - type: StealTarget @@ -1073,6 +1084,7 @@ - ClothingOuterWinterCentcom - ClothingOuterWinterSyndie - ClothingOuterWinterSyndieCap + - type: BluespaceSilo - type: MaterialStorage whitelist: tags: @@ -1119,6 +1131,7 @@ - IngotGold30 - IngotSilver30 - MaterialBananium10 + - type: BluespaceSilo - type: entity parent: OreProcessor @@ -1147,6 +1160,7 @@ - IngotGold30 - IngotSilver30 - MaterialBananium10 + - type: BluespaceSilo - type: entity parent: BaseLathe @@ -1178,3 +1192,4 @@ staticRecipes: - MaterialSheetMeat - SheetPaper + - type: BluespaceSilo diff --git a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml index 694b8d8219..6880860a6f 100644 --- a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml +++ b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml @@ -387,7 +387,7 @@ - type: Sprite sprite: Structures/Piping/Atmospherics/hellfirethermomachine.rsi - type: GasThermoMachine - minTemperature: 23.15 + minTemperature: 19.15 heatCapacity: 40000 energyLeakPercentage: 0.15 - type: Machine diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/ame.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/ame.yml index 78fdaae01a..023d2f129a 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/ame.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/ame.yml @@ -9,7 +9,7 @@ - type: InteractionOutline - type: Sprite snapCardinals: true - sprite: Structures/Power/Generation/ame.rsi + sprite: White/Structures/Power/Generation/ame.rsi state: control layers: - state: control @@ -82,7 +82,7 @@ - type: PowerMonitoringDevice group: Generator loadNode: input - sprite: Structures/Power/Generation/ame.rsi + sprite: White/Structures/Power/Generation/ame.rsi state: static - type: PowerSupplier supplyRate: 0 @@ -121,7 +121,7 @@ - type: InteractionOutline - type: Sprite drawdepth: Walls - sprite: Structures/Power/Generation/ame.rsi + sprite: White/Structures/Power/Generation/ame.rsi state: shield_0 layers: - state: shield_0 diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/solar.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/solar.yml index 5a28c4962c..069ea4d827 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/solar.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/solar.yml @@ -27,7 +27,7 @@ layer: - MidImpassable, LowImpassable, BulletImpassable - type: Sprite - sprite: Structures/Power/Generation/solar_panel.rsi + sprite: White/Structures/Power/Generation/solar_panel.rsi state: normal - type: NodeContainer examinable: true @@ -38,7 +38,7 @@ - type: PowerMonitoringDevice group: Generator loadNode: output - sprite: Structures/Power/Generation/solar_panel.rsi + sprite: White/Structures/Power/Generation/solar_panel.rsi state: static collectionName: SolarPanel - type: Anchorable @@ -135,7 +135,7 @@ layer: - MachineLayer - type: Sprite - sprite: Structures/Power/Generation/solar_panel.rsi + sprite: White/Structures/Power/Generation/solar_panel.rsi state: solar_assembly - type: Transform anchored: true @@ -180,7 +180,7 @@ layer: - MachineLayer - type: Sprite - sprite: Structures/Power/Generation/solar_panel.rsi + sprite: White/Structures/Power/Generation/solar_panel.rsi state: solar_tracker - type: Transform anchored: true diff --git a/Resources/Prototypes/Entities/Structures/Power/chargers.yml b/Resources/Prototypes/Entities/Structures/Power/chargers.yml index ae11598153..217be21cd6 100644 --- a/Resources/Prototypes/Entities/Structures/Power/chargers.yml +++ b/Resources/Prototypes/Entities/Structures/Power/chargers.yml @@ -188,6 +188,7 @@ - HitscanBatteryAmmoProvider - ProjectileBatteryAmmoProvider - Stunbaton + - TwoModeEnergyAmmoProvider - PowerCell blacklist: tags: diff --git a/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml b/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml index aa5f1421c7..ca5eda6792 100644 --- a/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml +++ b/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml @@ -11,9 +11,6 @@ components: - type: PlacementReplacement key: walls - - type: IconSmooth - key: walls - mode: NoSprite - type: SmoothEdge - type: Sprite sprite: Structures/Walls/rock.rsi @@ -191,7 +188,7 @@ - map: [ "enum.EdgeLayer.West" ] state: rock_asteroid_west - state: rock_silver - + - type: entity id: AsteroidRockSilverCrab parent: AsteroidRockSilver @@ -223,7 +220,7 @@ - map: [ "enum.EdgeLayer.West" ] state: rock_asteroid_west - state: rock_tin - + - type: entity id: AsteroidRockTinCrab parent: AsteroidRockTin @@ -326,9 +323,6 @@ suffix: Low Ore Yield description: A rocky asteroid. components: - - type: IconSmooth - key: walls - mode: NoSprite - type: SmoothEdge - type: Sprite sprite: Structures/Walls/rock.rsi @@ -393,9 +387,6 @@ - FullTileMask layer: - WallLayer - - type: IconSmooth - key: walls - mode: NoSprite - type: SmoothEdge - type: Sprite sprite: Structures/Walls/rock.rsi diff --git a/Resources/Prototypes/Entities/Structures/Walls/walls.yml b/Resources/Prototypes/Entities/Structures/Walls/walls.yml index 6c5fcb5202..2bf601c75e 100644 --- a/Resources/Prototypes/Entities/Structures/Walls/walls.yml +++ b/Resources/Prototypes/Entities/Structures/Walls/walls.yml @@ -78,7 +78,6 @@ max: 1 - !type:DoActsBehavior acts: [ "Destruction" ] - - type: IconSmooth key: walls base: brick diff --git a/Resources/Prototypes/Entities/Structures/plastic_flaps.yml b/Resources/Prototypes/Entities/Structures/plastic_flaps.yml index 8c53daf3b6..1d3efbdaef 100644 --- a/Resources/Prototypes/Entities/Structures/plastic_flaps.yml +++ b/Resources/Prototypes/Entities/Structures/plastic_flaps.yml @@ -37,9 +37,6 @@ behaviors: - !type:DoActsBehavior acts: ["Destruction"] - - type: IconSmooth - key: walls - mode: NoSprite - type: Construction graph: PlasticFlapsGraph node: plasticFlaps diff --git a/Resources/Prototypes/Reagents/biological.yml b/Resources/Prototypes/Reagents/biological.yml index 978ec717f9..574a36fa0f 100644 --- a/Resources/Prototypes/Reagents/biological.yml +++ b/Resources/Prototypes/Reagents/biological.yml @@ -137,10 +137,6 @@ color: "#f4692e" recognizable: true metabolisms: - Drink: - effects: - - !type:SatiateThirst - factor: 1.5 # Dragon doesn't require airloss healing, so omnizine is still best for humans. Medicine: effects: diff --git a/Resources/Prototypes/SoundCollections/lobby.yml b/Resources/Prototypes/SoundCollections/lobby.yml index f83003f686..2036af166f 100644 --- a/Resources/Prototypes/SoundCollections/lobby.yml +++ b/Resources/Prototypes/SoundCollections/lobby.yml @@ -8,6 +8,7 @@ - /Audio/Lobby/lasers_rip_apart_the_bulkhead.ogg - /Audio/Lobby/every_light_is_blinking_at_once.ogg - /Audio/Lobby/atomicamnesiammx.ogg + - /Audio/Lobby/itachi.ogg # - /Audio/Lobby/absconditus.ogg # - /Audio/Lobby/space_asshole.ogg # - /Audio/Lobby/endless_space.ogg diff --git a/Resources/Prototypes/White/Catalog/Fills/Boxes/security.yml b/Resources/Prototypes/White/Catalog/Fills/Boxes/security.yml new file mode 100644 index 0000000000..1db1ff7a53 --- /dev/null +++ b/Resources/Prototypes/White/Catalog/Fills/Boxes/security.yml @@ -0,0 +1,31 @@ +- type: entity + name: body camera box + parent: BoxCardboard + id: BoxBodyCamera + description: A box full of body cameras. + components: + - type: StorageFill + contents: + - id: SurveillanceBodyCamera + amount: 3 + - type: Sprite + layers: + - state: box_security + - state: bodycam + +- type: entity + name: zip lock box + parent: BoxCardboard + id: BoxZipLocks + description: A box full of zip locks. + components: + - type: Storage + maxItemSize: Normal + - type: StorageFill + contents: + - id: ZipLock + amount: 4 + - type: Sprite + layers: + - state: box_security + - state: ziplock \ No newline at end of file diff --git a/Resources/Prototypes/White/Entities/Objects/Misc/ziplock.yml b/Resources/Prototypes/White/Entities/Objects/Misc/ziplock.yml new file mode 100644 index 0000000000..0e342f5094 --- /dev/null +++ b/Resources/Prototypes/White/Entities/Objects/Misc/ziplock.yml @@ -0,0 +1,25 @@ +- type: entity + id: ZipBase + parent: BaseStorageItem + abstract: true + components: + - type: Item + size: Small + - type: Storage + maxItemSize: Small + grid: + - 0,0,2,2 + +- type: entity + name: zip lock + parent: ZipBase + id: ZipLock + description: Designed for storing evidence. + components: + - type: Item + sprite: White/Objects/Storage/ziplocks.rsi + shape: + - 0,0,1,0 + - type: Sprite + sprite: White/Objects/Storage/ziplocks.rsi + state: icon diff --git a/Resources/Prototypes/White/Entities/Structures/Machines/doc_printer.yml b/Resources/Prototypes/White/Entities/Structures/Machines/doc_printer.yml index 16c2174118..5559938e08 100644 --- a/Resources/Prototypes/White/Entities/Structures/Machines/doc_printer.yml +++ b/Resources/Prototypes/White/Entities/Structures/Machines/doc_printer.yml @@ -20,6 +20,7 @@ layer: - TabletopMachineLayer - type: Lathe + - type: BluespaceSilo - type: MaterialStorage - type: ActivatableUI key: enum.LatheUiKey.Key diff --git a/Resources/Prototypes/White/Fluff/fluff.yml b/Resources/Prototypes/White/Fluff/fluff.yml index d5f5cce506..de65a83e43 100644 --- a/Resources/Prototypes/White/Fluff/fluff.yml +++ b/Resources/Prototypes/White/Fluff/fluff.yml @@ -1084,7 +1084,7 @@ parent: ClothingOuterStorageBase id: G13ClothingOuterCoat name: гламурное белое пальто - description: В таком только на показ мод. + description: Да в таких только звезды ходят! suffix: fluff components: - type: Sprite @@ -1096,7 +1096,7 @@ parent: ClothingEyesBase id: G13ClothingEyesEyepatch name: белая повязка на глаз - description: Даже когда ты пират, нужно выглядеть гламурно. + description: Настолько белая, что заменяет глаз. components: - type: Sprite sprite: White/Fluff/g13/eyepatch.rsi @@ -1107,7 +1107,7 @@ parent: ClothingUniformBase id: G13ClothingUniformSuit name: стильный белый адвокатский костюм - description: -Моего клиента на смертную казнь! -Но я же просто украл пирожок... + description: Протестую! Адвокат слишком красив! components: - type: Sprite sprite: White/Fluff/g13/jumpsuit.rsi @@ -1206,3 +1206,64 @@ - type: EmitSoundOnUse sound: path: /Audio/White/Fluff/Joulerk/activate.ogg + +#Ritoka +- type: entity + parent: ClothingOuterStorageBase + id: ClothingOuterCloakRitoka + name: Плащ Затворник + description: От этого плаща исходит зловещая энергия. При одном только взгляде на него вам хочется закрыться в шкафчике и плакать. На нём имеется ярлык "Ritoka вернётся". + suffix: fluff + components: + - type: Sprite + sprite: White/Fluff/Ritoka/cloak.rsi + - type: Clothing + sprite: White/Fluff/Ritoka/cloak.rsi + - type: ToggleableClothing + clothingPrototype: ClothingHeadHoodRitoka + - type: ContainerContainer + containers: + toggleable-clothing: !type:ContainerSlot + - type: PointLight + radius: 2 + energy: 2 + color: "#99e550" + +- type: entity + parent: ClothingHeadBase + id: ClothingHeadHoodRitoka + noSpawn: true + name: капюшон + components: + - type: Sprite + sprite: White/Fluff/Ritoka/hood.rsi + - type: Clothing + sprite: White/Fluff/Ritoka/hood.rsi + +# DoxXxoM +- type: marking + id: DoxxxomHorns + bodyPart: HeadTop + markingCategory: HeadTop + sponsorOnly: true + sprites: + - sprite: White/Fluff/DoxXxoM/horns.rsi + state: m_frills_hornsdouble_ADJ + +- type: marking + id: DoxxxomTail + bodyPart: Tail + markingCategory: Tail + sponsorOnly: true + sprites: + - sprite: White/Fluff/DoxXxoM/tail.rsi + state: m_tail_lizard_wagging_smooth_BEHIND + +- type: marking + id: DoxxxomHair + bodyPart: Hair + markingCategory: Hair + sponsorOnly: true + sprites: + - sprite: White/Fluff/DoxXxoM/hair.rsi + state: hair_allthefuzz diff --git a/Resources/Prototypes/White/Fluff/serbwo.yml b/Resources/Prototypes/White/Fluff/serbwo.yml index f29a836e74..4b991bccbd 100644 --- a/Resources/Prototypes/White/Fluff/serbwo.yml +++ b/Resources/Prototypes/White/Fluff/serbwo.yml @@ -218,7 +218,6 @@ id: ScuffLoadoutSW entity: ClothingOuterScufSuitFluff sponsorOnly: true - whitelistJobs: [ Detective ] - type: loadout id: CapLoadoutSO diff --git a/Resources/Prototypes/White/Fluff/sponsor.yml b/Resources/Prototypes/White/Fluff/sponsor.yml index 715cc8f081..98f46470da 100644 --- a/Resources/Prototypes/White/Fluff/sponsor.yml +++ b/Resources/Prototypes/White/Fluff/sponsor.yml @@ -467,3 +467,9 @@ id: JoulerkPlushie entity: PlushieLerkFluff sponsorOnly: true + +# Ritoka +- type: loadout + id: RitokaCloak + entity: ClothingOuterCloakRitoka + sponsorOnly: true diff --git a/Resources/Prototypes/White/Mobs/Customization/Markings/2shonka-parts.yml b/Resources/Prototypes/White/Mobs/Customization/Markings/2shonka-parts.yml index 0dd756dad2..cac1608f8d 100644 --- a/Resources/Prototypes/White/Mobs/Customization/Markings/2shonka-parts.yml +++ b/Resources/Prototypes/White/Mobs/Customization/Markings/2shonka-parts.yml @@ -39,3 +39,12 @@ state: tail - sprite: White/Mobs/Customization/vtergot_fox_parts.rsi state: tail_tip + +- type: marking + id: SomeTailPoebat + bodyPart: Tail + markingCategory: Tail + sponsorOnly: true + sprites: + - sprite: White/Mobs/Customization/nigga.rsi + state: ebaniyhvost diff --git a/Resources/Prototypes/_White/AnimatedLobbyScreens/lobbyScreens.yml b/Resources/Prototypes/_White/AnimatedLobbyScreens/lobbyScreens.yml index f94ef1af9d..c00fdf2667 100644 --- a/Resources/Prototypes/_White/AnimatedLobbyScreens/lobbyScreens.yml +++ b/Resources/Prototypes/_White/AnimatedLobbyScreens/lobbyScreens.yml @@ -1,3 +1,15 @@ +- type: animatedLobbyScreen + id: FourthLobbyScreen + path: Ohio/Lobby/backgrounds/papich.rsi + +- type: animatedLobbyScreen + id: MilkywayLobbyScreen + path: Ohio/Lobby/backgrounds/4.rsi + +- type: animatedLobbyScreen + id: SusLobbyScreen + path: Ohio/Lobby/backgrounds/syndicate.rsi + - type: animatedLobbyScreen id: CyberLobbyScreen path: Ohio/Lobby/backgrounds/cyber.rsi @@ -6,10 +18,6 @@ id: DoorLobbyScreen path: Ohio/Lobby/backgrounds/door.rsi -#- type: animatedLobbyScreen -# id: FourthLobbyScreen -# path: Ohio/Lobby/backgrounds/4.rsi - #- type: animatedLobbyScreen # id: NativeLobbyScreen # path: Ohio/Lobby/backgrounds/native.rsi diff --git a/Resources/Prototypes/_White/Object/colored_armchairs.yml b/Resources/Prototypes/_White/Object/colored_armchairs.yml new file mode 100644 index 0000000000..a4b6ab12d4 --- /dev/null +++ b/Resources/Prototypes/_White/Object/colored_armchairs.yml @@ -0,0 +1,82 @@ +# black - #808080 +# brown - #AE6716 +# command - #4B709C +# security - #DE3A3A +# medical - #52B4E9 +# engineering - #FFA647 +# science - #F98AFF +# cargo - #D69949 +# service - #9FED58 + +- type: entity + id: ComfyChairBlack + suffix: Black + parent: ComfyChair + components: + - type: Sprite + color: "#808080" + +- type: entity + id: ComfyChairBrown + suffix: Brown + parent: ComfyChair + components: + - type: Sprite + color: "#AE6716" + +- type: entity + id: ComfyChairCommand + suffix: Command + parent: ComfyChair + components: + - type: Sprite + color: "#4B709C" + +- type: entity + id: ComfyChairSecurity + suffix: Security + parent: ComfyChair + components: + - type: Sprite + color: "#DE3A3A" + +- type: entity + id: ComfyChairMedical + suffix: Medical + parent: ComfyChair + components: + - type: Sprite + color: "#52B4E9" + +- type: entity + id: ComfyChairEngineering + suffix: Engineering + parent: ComfyChair + components: + - type: Sprite + color: "#FFA647" + +- type: entity + id: ComfyChairScience + suffix: Science + parent: ComfyChair + components: + - type: Sprite + color: "#F98AFF" + +- type: entity + id: ComfyChairCargo + suffix: Cargo + parent: ComfyChair + components: + - type: Sprite + color: "#D69949" + +- type: entity + id: ComfyChairService + suffix: Service + parent: ComfyChair + components: + - type: Sprite + color: "#9FED58" + diff --git a/Resources/Textures/Objects/Power/AME/ame_jar.rsi/inhand-left.png b/Resources/Textures/Objects/Power/AME/ame_jar.rsi/inhand-left.png index 49b4913605..506bf19a06 100644 Binary files a/Resources/Textures/Objects/Power/AME/ame_jar.rsi/inhand-left.png and b/Resources/Textures/Objects/Power/AME/ame_jar.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Power/AME/ame_jar.rsi/inhand-right.png b/Resources/Textures/Objects/Power/AME/ame_jar.rsi/inhand-right.png index be9f3f1182..65c30b728a 100644 Binary files a/Resources/Textures/Objects/Power/AME/ame_jar.rsi/inhand-right.png and b/Resources/Textures/Objects/Power/AME/ame_jar.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Power/AME/ame_jar.rsi/jar.png b/Resources/Textures/Objects/Power/AME/ame_jar.rsi/jar.png index ede7ec4094..5fdc2412fa 100644 Binary files a/Resources/Textures/Objects/Power/AME/ame_jar.rsi/jar.png and b/Resources/Textures/Objects/Power/AME/ame_jar.rsi/jar.png differ diff --git a/Resources/Textures/Objects/Power/AME/ame_jar.rsi/meta.json b/Resources/Textures/Objects/Power/AME/ame_jar.rsi/meta.json index b036496687..66f33fbc69 100644 --- a/Resources/Textures/Objects/Power/AME/ame_jar.rsi/meta.json +++ b/Resources/Textures/Objects/Power/AME/ame_jar.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from vgstation at https://github.com/vgstation-coders/vgstation13/commit/1b7952787c06c21ef1623e494dcfe7cb1f46e041", + "copyright": "FrostyDev", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Objects/Specific/Medical/healthanalyzer.rsi/analyzer.png b/Resources/Textures/Objects/Specific/Medical/healthanalyzer.rsi/analyzer.png deleted file mode 100644 index 3fbab3f112..0000000000 Binary files a/Resources/Textures/Objects/Specific/Medical/healthanalyzer.rsi/analyzer.png and /dev/null differ diff --git a/Resources/Textures/Objects/Specific/Medical/healthanalyzer.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/healthanalyzer.rsi/meta.json index af66c180db..fbc9eac793 100644 --- a/Resources/Textures/Objects/Specific/Medical/healthanalyzer.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Medical/healthanalyzer.rsi/meta.json @@ -8,7 +8,7 @@ "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f07f847706d85b7cfa4b398e5175732212b69a63", "states": [ { - "name": "analyzer", + "name": "powered", "delays": [ [ 0.1, diff --git a/Resources/Textures/Objects/Specific/Medical/healthanalyzer.rsi/powered.png b/Resources/Textures/Objects/Specific/Medical/healthanalyzer.rsi/powered.png new file mode 100644 index 0000000000..19bb0da12d Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/healthanalyzer.rsi/powered.png differ diff --git a/Resources/Textures/Objects/Storage/boxes.rsi/meta.json b/Resources/Textures/Objects/Storage/boxes.rsi/meta.json index 562299b7d5..b3a4c00d3b 100644 --- a/Resources/Textures/Objects/Storage/boxes.rsi/meta.json +++ b/Resources/Textures/Objects/Storage/boxes.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/cc65477c04f7403ca8a457bd5bae69a01abadbf0, encryptokey was taken from Baystation12 at https://github.com/infinitystation/Baystation12/blob/073f678cdce92edb8fcd55f9ffc9f0523bf31506/icons/obj/radio.dmi and modified by lapatison. boxwidetoy, shelltoy, swab, flare, inflatable, trashbag, magazine, holo and forensic created by potato1234x (github) for ss14 based on toys.rsi, mouth_swab.rsi, flare.rsi, inflatable_wall.rsi, trashbag.rsi, caseless_pistol_mag.rsi, guardians.rsi and bureaucracy.rsi respectively, candle and darts created by TheShuEd for ss14, vials was drawn by Ubaser, evidence_markers by moomoobeef.", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/cc65477c04f7403ca8a457bd5bae69a01abadbf0, encryptokey was taken from Baystation12 at https://github.com/infinitystation/Baystation12/blob/073f678cdce92edb8fcd55f9ffc9f0523bf31506/icons/obj/radio.dmi and modified by lapatison. boxwidetoy, shelltoy, swab, flare, inflatable, trashbag, magazine, holo and forensic created by potato1234x (github) for ss14 based on toys.rsi, mouth_swab.rsi, flare.rsi, inflatable_wall.rsi, trashbag.rsi, caseless_pistol_mag.rsi, guardians.rsi and bureaucracy.rsi respectively, candle and darts created by TheShuEd for ss14, vials was drawn by Ubaser, evidence_markers by moomoobeef, ziplock by CaypenNow.", "size": { "x": 32, "y": 32 @@ -211,6 +211,9 @@ }, { "name": "bodycam" + }, + { + "name": "ziplock" } ] } diff --git a/Resources/Textures/Objects/Storage/boxes.rsi/ziplock.png b/Resources/Textures/Objects/Storage/boxes.rsi/ziplock.png new file mode 100644 index 0000000000..e30b1632ee Binary files /dev/null and b/Resources/Textures/Objects/Storage/boxes.rsi/ziplock.png differ diff --git a/Resources/Textures/Ohio/Lobby/backgrounds/papich.rsi/1.png b/Resources/Textures/Ohio/Lobby/backgrounds/papich.rsi/1.png new file mode 100644 index 0000000000..0296727bb7 Binary files /dev/null and b/Resources/Textures/Ohio/Lobby/backgrounds/papich.rsi/1.png differ diff --git a/Resources/Textures/Ohio/Lobby/backgrounds/papich.rsi/meta.json b/Resources/Textures/Ohio/Lobby/backgrounds/papich.rsi/meta.json new file mode 100644 index 0000000000..c756a4bc71 --- /dev/null +++ b/Resources/Textures/Ohio/Lobby/backgrounds/papich.rsi/meta.json @@ -0,0 +1,98 @@ +{ + "version": 1, + "license": null, + "copyright": null, + "size": { + "x": 498, + "y": 280 + }, + "states": [ + { + "name": "1", + "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, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Ohio/Lobby/backgrounds/syndicate.rsi/1.png b/Resources/Textures/Ohio/Lobby/backgrounds/syndicate.rsi/1.png new file mode 100644 index 0000000000..2a339c5d7c Binary files /dev/null and b/Resources/Textures/Ohio/Lobby/backgrounds/syndicate.rsi/1.png differ diff --git a/Resources/Textures/Ohio/Lobby/backgrounds/syndicate.rsi/meta.json b/Resources/Textures/Ohio/Lobby/backgrounds/syndicate.rsi/meta.json new file mode 100644 index 0000000000..225291e7e6 --- /dev/null +++ b/Resources/Textures/Ohio/Lobby/backgrounds/syndicate.rsi/meta.json @@ -0,0 +1,349 @@ +{ + "version": 1, + "license": null, + "copyright": null, + "size": { + "x": 374, + "y": 211 + }, + "states": [ + { + "name": "1", + "delays": [ + [ + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.1, + 0.04, + 0.06, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.1, + 0.03, + 0.07, + 0.07, + 0.13, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.06, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.06, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.06, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.07, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.1, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.06, + 0.04, + 0.03, + 0.03, + 0.07, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.13, + 0.04, + 0.03, + 0.03, + 0.04, + 0.03, + 0.03 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Walls/solid_rust.rsi/full.png b/Resources/Textures/Structures/Walls/solid_rust.rsi/full.png index bac03f82f1..26d0d7971f 100644 Binary files a/Resources/Textures/Structures/Walls/solid_rust.rsi/full.png and b/Resources/Textures/Structures/Walls/solid_rust.rsi/full.png differ diff --git a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_construct-0.png b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_construct-0.png index 3af1774039..19200aaca0 100644 Binary files a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_construct-0.png and b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_construct-0.png differ diff --git a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_construct-1.png b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_construct-1.png index 57f9a29657..27ce52b1c6 100644 Binary files a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_construct-1.png and b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_construct-1.png differ diff --git a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_construct-2.png b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_construct-2.png index 122fb41398..b75834cfa0 100644 Binary files a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_construct-2.png and b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_construct-2.png differ diff --git a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_construct-3.png b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_construct-3.png index 2e7be27dd0..dd4c9e9ac3 100644 Binary files a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_construct-3.png and b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_construct-3.png differ diff --git a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_construct-4.png b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_construct-4.png index 48a07386ad..3d02e0ca28 100644 Binary files a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_construct-4.png and b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_construct-4.png differ diff --git a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_construct-5.png b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_construct-5.png index 0969ca3ecd..1f0edcf86b 100644 Binary files a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_construct-5.png and b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_construct-5.png differ diff --git a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over0.png b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over0.png index 89314482b3..f82137acc2 100644 Binary files a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over0.png and b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over0.png differ diff --git a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over1.png b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over1.png index 79fb38bd6a..66ad1db058 100644 Binary files a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over1.png and b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over1.png differ diff --git a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over2.png b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over2.png index 89314482b3..f82137acc2 100644 Binary files a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over2.png and b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over2.png differ diff --git a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over3.png b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over3.png index 79fb38bd6a..66ad1db058 100644 Binary files a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over3.png and b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over3.png differ diff --git a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over4.png b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over4.png index 3fd3d1f3a2..ad489f8e06 100644 Binary files a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over4.png and b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over4.png differ diff --git a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over5.png b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over5.png index a9d7e71737..6dcf50aa02 100644 Binary files a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over5.png and b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over5.png differ diff --git a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over6.png b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over6.png index 3fd3d1f3a2..ad489f8e06 100644 Binary files a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over6.png and b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over6.png differ diff --git a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over7.png b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over7.png index 970ef1f1f5..593f745dd9 100644 Binary files a/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over7.png and b/Resources/Textures/Structures/Walls/solid_rust.rsi/reinf_over7.png differ diff --git a/Resources/Textures/Structures/Walls/solid_rust.rsi/rgeneric.png b/Resources/Textures/Structures/Walls/solid_rust.rsi/rgeneric.png index 02a1c5c63b..53e76c03a6 100644 Binary files a/Resources/Textures/Structures/Walls/solid_rust.rsi/rgeneric.png and b/Resources/Textures/Structures/Walls/solid_rust.rsi/rgeneric.png differ diff --git a/Resources/Textures/Structures/Walls/solid_rust.rsi/solid0.png b/Resources/Textures/Structures/Walls/solid_rust.rsi/solid0.png index b6720ad5a3..b6f86f7f78 100644 Binary files a/Resources/Textures/Structures/Walls/solid_rust.rsi/solid0.png and b/Resources/Textures/Structures/Walls/solid_rust.rsi/solid0.png differ diff --git a/Resources/Textures/Structures/Walls/solid_rust.rsi/solid1.png b/Resources/Textures/Structures/Walls/solid_rust.rsi/solid1.png index 9d1da43e6f..bc3162a30d 100644 Binary files a/Resources/Textures/Structures/Walls/solid_rust.rsi/solid1.png and b/Resources/Textures/Structures/Walls/solid_rust.rsi/solid1.png differ diff --git a/Resources/Textures/Structures/Walls/solid_rust.rsi/solid2.png b/Resources/Textures/Structures/Walls/solid_rust.rsi/solid2.png index b6720ad5a3..b6f86f7f78 100644 Binary files a/Resources/Textures/Structures/Walls/solid_rust.rsi/solid2.png and b/Resources/Textures/Structures/Walls/solid_rust.rsi/solid2.png differ diff --git a/Resources/Textures/Structures/Walls/solid_rust.rsi/solid3.png b/Resources/Textures/Structures/Walls/solid_rust.rsi/solid3.png index 9d1da43e6f..bc3162a30d 100644 Binary files a/Resources/Textures/Structures/Walls/solid_rust.rsi/solid3.png and b/Resources/Textures/Structures/Walls/solid_rust.rsi/solid3.png differ diff --git a/Resources/Textures/Structures/Walls/solid_rust.rsi/solid4.png b/Resources/Textures/Structures/Walls/solid_rust.rsi/solid4.png index f31f3a6bc9..35fd2ad1a7 100644 Binary files a/Resources/Textures/Structures/Walls/solid_rust.rsi/solid4.png and b/Resources/Textures/Structures/Walls/solid_rust.rsi/solid4.png differ diff --git a/Resources/Textures/Structures/Walls/solid_rust.rsi/solid5.png b/Resources/Textures/Structures/Walls/solid_rust.rsi/solid5.png index 7c18f9c11a..a7324792c9 100644 Binary files a/Resources/Textures/Structures/Walls/solid_rust.rsi/solid5.png and b/Resources/Textures/Structures/Walls/solid_rust.rsi/solid5.png differ diff --git a/Resources/Textures/Structures/Walls/solid_rust.rsi/solid6.png b/Resources/Textures/Structures/Walls/solid_rust.rsi/solid6.png index 8737894cbf..35fd2ad1a7 100644 Binary files a/Resources/Textures/Structures/Walls/solid_rust.rsi/solid6.png and b/Resources/Textures/Structures/Walls/solid_rust.rsi/solid6.png differ diff --git a/Resources/Textures/Structures/Walls/solid_rust.rsi/solid7.png b/Resources/Textures/Structures/Walls/solid_rust.rsi/solid7.png index 15f74bcaee..89fc2ab547 100644 Binary files a/Resources/Textures/Structures/Walls/solid_rust.rsi/solid7.png and b/Resources/Textures/Structures/Walls/solid_rust.rsi/solid7.png differ diff --git a/Resources/Textures/White/Actions/changeling.rsi/augmented_eyesight.png b/Resources/Textures/White/Actions/changeling.rsi/augmented_eyesight.png new file mode 100644 index 0000000000..e7f166ddac Binary files /dev/null and b/Resources/Textures/White/Actions/changeling.rsi/augmented_eyesight.png differ diff --git a/Resources/Textures/White/Actions/changeling.rsi/dissonant_shriek.png b/Resources/Textures/White/Actions/changeling.rsi/dissonant_shriek.png new file mode 100644 index 0000000000..eef3cf0983 Binary files /dev/null and b/Resources/Textures/White/Actions/changeling.rsi/dissonant_shriek.png differ diff --git a/Resources/Textures/White/Actions/changeling.rsi/meta.json b/Resources/Textures/White/Actions/changeling.rsi/meta.json index bbb9992932..31d5234cb0 100644 --- a/Resources/Textures/White/Actions/changeling.rsi/meta.json +++ b/Resources/Textures/White/Actions/changeling.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "By SS14 White Dream", @@ -22,6 +22,15 @@ { "name": "biodegrade" }, + { + "name": "augmented_eyesight" + }, + { + "name": "dissonant_shriek" + }, + { + "name": "organic_suit" + }, { "name": "fleshmend" }, diff --git a/Resources/Textures/White/Actions/changeling.rsi/organic_suit.png b/Resources/Textures/White/Actions/changeling.rsi/organic_suit.png new file mode 100644 index 0000000000..4a257a170e Binary files /dev/null and b/Resources/Textures/White/Actions/changeling.rsi/organic_suit.png differ diff --git a/Resources/Textures/White/Fluff/DoxXxoM/hair.rsi/hair_allthefuzz.png b/Resources/Textures/White/Fluff/DoxXxoM/hair.rsi/hair_allthefuzz.png new file mode 100644 index 0000000000..997b069d7e Binary files /dev/null and b/Resources/Textures/White/Fluff/DoxXxoM/hair.rsi/hair_allthefuzz.png differ diff --git a/Resources/Textures/White/Fluff/DoxXxoM/hair.rsi/meta.json b/Resources/Textures/White/Fluff/DoxXxoM/hair.rsi/meta.json new file mode 100644 index 0000000000..f1d49dabcb --- /dev/null +++ b/Resources/Textures/White/Fluff/DoxXxoM/hair.rsi/meta.json @@ -0,0 +1,15 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "FrostyDev", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "hair_allthefuzz", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/White/Fluff/DoxXxoM/horns.rsi/m_frills_hornsdouble_ADJ.png b/Resources/Textures/White/Fluff/DoxXxoM/horns.rsi/m_frills_hornsdouble_ADJ.png new file mode 100644 index 0000000000..b55a79e8f6 Binary files /dev/null and b/Resources/Textures/White/Fluff/DoxXxoM/horns.rsi/m_frills_hornsdouble_ADJ.png differ diff --git a/Resources/Textures/White/Fluff/DoxXxoM/horns.rsi/meta.json b/Resources/Textures/White/Fluff/DoxXxoM/horns.rsi/meta.json new file mode 100644 index 0000000000..91e8f347d4 --- /dev/null +++ b/Resources/Textures/White/Fluff/DoxXxoM/horns.rsi/meta.json @@ -0,0 +1,15 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "FrostyDev", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "m_frills_hornsdouble_ADJ", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/White/Fluff/DoxXxoM/tail.rsi/m_tail_lizard_wagging_smooth_BEHIND.png b/Resources/Textures/White/Fluff/DoxXxoM/tail.rsi/m_tail_lizard_wagging_smooth_BEHIND.png new file mode 100644 index 0000000000..749812789f Binary files /dev/null and b/Resources/Textures/White/Fluff/DoxXxoM/tail.rsi/m_tail_lizard_wagging_smooth_BEHIND.png differ diff --git a/Resources/Textures/White/Fluff/DoxXxoM/tail.rsi/meta.json b/Resources/Textures/White/Fluff/DoxXxoM/tail.rsi/meta.json new file mode 100644 index 0000000000..ace83cc869 --- /dev/null +++ b/Resources/Textures/White/Fluff/DoxXxoM/tail.rsi/meta.json @@ -0,0 +1,61 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "FrostyDev", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "m_tail_lizard_wagging_smooth_BEHIND", + "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 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/White/Fluff/Ritoka/cloak.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/White/Fluff/Ritoka/cloak.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 0000000000..a644969394 Binary files /dev/null and b/Resources/Textures/White/Fluff/Ritoka/cloak.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/White/Fluff/Ritoka/cloak.rsi/icon.png b/Resources/Textures/White/Fluff/Ritoka/cloak.rsi/icon.png new file mode 100644 index 0000000000..10a99cfa75 Binary files /dev/null and b/Resources/Textures/White/Fluff/Ritoka/cloak.rsi/icon.png differ diff --git a/Resources/Textures/White/Fluff/Ritoka/cloak.rsi/meta.json b/Resources/Textures/White/Fluff/Ritoka/cloak.rsi/meta.json new file mode 100644 index 0000000000..3a52bfde9e --- /dev/null +++ b/Resources/Textures/White/Fluff/Ritoka/cloak.rsi/meta.json @@ -0,0 +1,84 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Ritoka", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "equipped-OUTERCLOTHING", + "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": "icon" + } + ] +} diff --git a/Resources/Textures/White/Fluff/Ritoka/hood.rsi/equipped-HELMET.png b/Resources/Textures/White/Fluff/Ritoka/hood.rsi/equipped-HELMET.png new file mode 100644 index 0000000000..5c77f65e2a Binary files /dev/null and b/Resources/Textures/White/Fluff/Ritoka/hood.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/White/Fluff/Ritoka/hood.rsi/icon.png b/Resources/Textures/White/Fluff/Ritoka/hood.rsi/icon.png new file mode 100644 index 0000000000..8744eec3b7 Binary files /dev/null and b/Resources/Textures/White/Fluff/Ritoka/hood.rsi/icon.png differ diff --git a/Resources/Textures/White/Fluff/Ritoka/hood.rsi/meta.json b/Resources/Textures/White/Fluff/Ritoka/hood.rsi/meta.json new file mode 100644 index 0000000000..b56c8b3960 --- /dev/null +++ b/Resources/Textures/White/Fluff/Ritoka/hood.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Ritoka", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-HELMET", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/White/Mobs/Customization/nigga.rsi/ebaniyhvost.png b/Resources/Textures/White/Mobs/Customization/nigga.rsi/ebaniyhvost.png new file mode 100644 index 0000000000..f0aa6d5bc4 Binary files /dev/null and b/Resources/Textures/White/Mobs/Customization/nigga.rsi/ebaniyhvost.png differ diff --git a/Resources/Textures/White/Mobs/Customization/nigga.rsi/meta.json b/Resources/Textures/White/Mobs/Customization/nigga.rsi/meta.json new file mode 100644 index 0000000000..5d5d8f3a36 --- /dev/null +++ b/Resources/Textures/White/Mobs/Customization/nigga.rsi/meta.json @@ -0,0 +1,57 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "dddddddddasdasdasdasdasd", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "ebaniyhvost", + "directions": 4, + "delays": [ + [ + 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.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + } + ] +} diff --git a/Resources/Textures/White/Objects/Storage/ziplocks.rsi/icon.png b/Resources/Textures/White/Objects/Storage/ziplocks.rsi/icon.png new file mode 100644 index 0000000000..4a44e3888e Binary files /dev/null and b/Resources/Textures/White/Objects/Storage/ziplocks.rsi/icon.png differ diff --git a/Resources/Textures/White/Objects/Storage/ziplocks.rsi/meta.json b/Resources/Textures/White/Objects/Storage/ziplocks.rsi/meta.json new file mode 100644 index 0000000000..d5d388118a --- /dev/null +++ b/Resources/Textures/White/Objects/Storage/ziplocks.rsi/meta.json @@ -0,0 +1,14 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Maked by CaypenNow", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + } + ] +} diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/control.png b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/control.png new file mode 100644 index 0000000000..2c1b6ff57c Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/control.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/control_critical.png b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/control_critical.png new file mode 100644 index 0000000000..f7c9b3e3c2 Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/control_critical.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/control_fuck.png b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/control_fuck.png new file mode 100644 index 0000000000..388c6478d6 Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/control_fuck.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/control_on.png b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/control_on.png new file mode 100644 index 0000000000..0a991ff963 Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/control_on.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/control_warning.png b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/control_warning.png new file mode 100644 index 0000000000..7f64302cdc Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/control_warning.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/core.png b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/core.png new file mode 100644 index 0000000000..6110c84a84 Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/core.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/core_strong.png b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/core_strong.png new file mode 100644 index 0000000000..19707a8ad5 Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/core_strong.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/core_weak.png b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/core_weak.png new file mode 100644 index 0000000000..748de3ea91 Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/core_weak.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/meta.json b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/meta.json new file mode 100644 index 0000000000..391b7447f3 --- /dev/null +++ b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/meta.json @@ -0,0 +1,217 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "FrostyDev", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "shield_0" + }, + { + "name": "shield_1" + }, + { + "name": "shield_10" + }, + { + "name": "shield_11" + }, + { + "name": "shield_12" + }, + { + "name": "shield_13" + }, + { + "name": "shield_14" + }, + { + "name": "shield_15" + }, + { + "name": "shield_2" + }, + { + "name": "shield_3" + }, + { + "name": "shield_4" + }, + { + "name": "shield_5" + }, + { + "name": "shield_6" + }, + { + "name": "shield_7" + }, + { + "name": "shield_8" + }, + { + "name": "core" + }, + { + "name": "shield_9" + }, + { + "name": "core_weak", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "core_strong", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "control" + }, + { + "name": "static" + }, + { + "name": "control_warning", + "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 + ] + ] + }, + { + "name": "control_critical", + "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 + ] + ] + }, + { + "name": "control_fuck", + "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 + ] + ] + }, + { + "name": "control_on", + "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 + ] + ] + } + ] +} diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_0.png b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_0.png new file mode 100644 index 0000000000..a8fe6d1de2 Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_0.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_1.png b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_1.png new file mode 100644 index 0000000000..3807a41c11 Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_1.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_10.png b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_10.png new file mode 100644 index 0000000000..ee900bb3a6 Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_10.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_11.png b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_11.png new file mode 100644 index 0000000000..d3ef87f444 Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_11.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_12.png b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_12.png new file mode 100644 index 0000000000..ce52c96d9b Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_12.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_13.png b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_13.png new file mode 100644 index 0000000000..f37b7c2e62 Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_13.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_14.png b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_14.png new file mode 100644 index 0000000000..1016aabb5f Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_14.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_15.png b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_15.png new file mode 100644 index 0000000000..a8fe6d1de2 Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_15.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_2.png b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_2.png new file mode 100644 index 0000000000..53bcf694c3 Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_2.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_3.png b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_3.png new file mode 100644 index 0000000000..4ac1325e8a Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_3.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_4.png b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_4.png new file mode 100644 index 0000000000..1c07f92236 Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_4.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_5.png b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_5.png new file mode 100644 index 0000000000..45014483b6 Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_5.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_6.png b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_6.png new file mode 100644 index 0000000000..b56519ec71 Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_6.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_7.png b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_7.png new file mode 100644 index 0000000000..1c2b41eced Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_7.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_8.png b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_8.png new file mode 100644 index 0000000000..00bef3f896 Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_8.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_9.png b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_9.png new file mode 100644 index 0000000000..3009e25964 Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/shield_9.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/ame.rsi/static.png b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/static.png new file mode 100644 index 0000000000..2c1b6ff57c Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/ame.rsi/static.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/solar_panel.rsi/broken.png b/Resources/Textures/White/Structures/Power/Generation/solar_panel.rsi/broken.png new file mode 100644 index 0000000000..a12fca0425 Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/solar_panel.rsi/broken.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/solar_panel.rsi/meta.json b/Resources/Textures/White/Structures/Power/Generation/solar_panel.rsi/meta.json new file mode 100644 index 0000000000..c76db66048 --- /dev/null +++ b/Resources/Textures/White/Structures/Power/Generation/solar_panel.rsi/meta.json @@ -0,0 +1,30 @@ +{ + "version":1, + "license":"CC-BY-SA-3.0", + "copyright":"FrostyDev", + "size":{"x":32,"y":32}, + "states": + [ + { + "name": "normal", + "select": [], + "flags": {}, + "directions": 8 + }, + { + "name": "broken", + "select": [], + "flags": {}, + "directions": 1 + }, + { + "name": "static" + }, + { + "name": "solar_assembly" + }, + { + "name": "solar_tracker" + } + ] +} diff --git a/Resources/Textures/White/Structures/Power/Generation/solar_panel.rsi/normal.png b/Resources/Textures/White/Structures/Power/Generation/solar_panel.rsi/normal.png new file mode 100644 index 0000000000..21026d8d78 Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/solar_panel.rsi/normal.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/solar_panel.rsi/solar_assembly.png b/Resources/Textures/White/Structures/Power/Generation/solar_panel.rsi/solar_assembly.png new file mode 100644 index 0000000000..adb7bb3ff6 Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/solar_panel.rsi/solar_assembly.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/solar_panel.rsi/solar_tracker.png b/Resources/Textures/White/Structures/Power/Generation/solar_panel.rsi/solar_tracker.png new file mode 100644 index 0000000000..c977194da2 Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/solar_panel.rsi/solar_tracker.png differ diff --git a/Resources/Textures/White/Structures/Power/Generation/solar_panel.rsi/static.png b/Resources/Textures/White/Structures/Power/Generation/solar_panel.rsi/static.png new file mode 100644 index 0000000000..1bdecf5e91 Binary files /dev/null and b/Resources/Textures/White/Structures/Power/Generation/solar_panel.rsi/static.png differ diff --git a/Tools/actions_changelogs_since_last_run.py b/Tools/actions_changelogs_since_last_run.py index 6521b6946d..e2f98311e8 100755 --- a/Tools/actions_changelogs_since_last_run.py +++ b/Tools/actions_changelogs_since_last_run.py @@ -103,7 +103,7 @@ def diff_changelog(old: dict[str, Any], cur: dict[str, Any]) -> Iterable[Changel Find all new entries not present in the previous publish. """ old_entry_ids = {e["id"] for e in old["Entries"]} - return (e for e in cur["Entries"] if e["id"] not in old_entry_ids) + return (e for e in cur["п»їEntries"] if e["id"] not in old_entry_ids) def get_discord_body(content: str):