From a399c1ec7cdd0f7aa86577d2a813ed04a845edda Mon Sep 17 00:00:00 2001 From: deathride58 Date: Thu, 31 Oct 2024 17:30:58 -0400 Subject: [PATCH 01/28] Fixes tailthump breaking positional audio by making it mono (#33092) --- .../Voice/Reptilian/reptilian_tailthump.ogg | Bin 31956 -> 9215 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Resources/Audio/Voice/Reptilian/reptilian_tailthump.ogg b/Resources/Audio/Voice/Reptilian/reptilian_tailthump.ogg index e4bf25f7b8d1e743e34826b343f33e41e9298e16..fff0a8728a7d7123dc4d9b89f23603f677396a34 100644 GIT binary patch delta 8227 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 Hm4W{O+Q|*_ literal 31956 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 Date: Sat, 2 Nov 2024 17:49:44 +0100 Subject: [PATCH 02/28] Hotfix add debug info to traitor activation (#33119) * Add debug messages to traitor activation * more debug --- Content.Server/Antag/AntagSelectionSystem.cs | 4 +++ .../GameTicking/Rules/TraitorRuleSystem.cs | 31 +++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/Content.Server/Antag/AntagSelectionSystem.cs b/Content.Server/Antag/AntagSelectionSystem.cs index 224629ff2e..610c0ad182 100644 --- a/Content.Server/Antag/AntagSelectionSystem.cs +++ b/Content.Server/Antag/AntagSelectionSystem.cs @@ -55,6 +55,8 @@ public sealed partial class AntagSelectionSystem : GameRuleSystem(OnTakeGhostRole); SubscribeLocalEvent(OnObjectivesTextGetInfo); @@ -360,6 +362,8 @@ public sealed partial class AntagSelectionSystem : GameRuleSystem { base.Initialize(); + Log.Level = LogLevel.Debug; + SubscribeLocalEvent(AfterEntitySelected); SubscribeLocalEvent(OnObjectivesTextPrepend); } @@ -53,6 +55,7 @@ public sealed class TraitorRuleSystem : GameRuleSystem private void AfterEntitySelected(Entity ent, ref AfterAntagEntitySelectedEvent args) { + Log.Debug($"AfterAntagEntitySelected {ToPrettyString(ent)}"); MakeTraitor(args.EntityUid, ent); } @@ -78,14 +81,22 @@ public sealed class TraitorRuleSystem : GameRuleSystem public bool MakeTraitor(EntityUid traitor, TraitorRuleComponent component) { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - start"); + //Grab the mind if it wasn't provided if (!_mindSystem.TryGetMind(traitor, out var mindId, out var mind)) + { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - failed, no Mind found"); return false; + } var briefing = ""; if (component.GiveCodewords) + { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - added codewords flufftext to briefing"); briefing = Loc.GetString("traitor-role-codewords-short", ("codewords", string.Join(", ", component.Codewords))); + } var issuer = _random.Pick(_prototypeManager.Index(component.ObjectiveIssuers).Values); @@ -94,6 +105,7 @@ public sealed class TraitorRuleSystem : GameRuleSystem if (component.GiveUplink) { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Uplink start"); // Calculate the amount of currency on the uplink. var startingBalance = component.StartingBalance; if (_jobs.MindTryGetJob(mindId, out var prototype)) @@ -105,18 +117,27 @@ public sealed class TraitorRuleSystem : GameRuleSystem } // Choose and generate an Uplink, and return the uplink code if applicable + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Uplink request start"); var uplinkParams = RequestUplink(traitor, startingBalance, briefing); code = uplinkParams.Item1; briefing = uplinkParams.Item2; + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Uplink request completed"); } string[]? codewords = null; if (component.GiveCodewords) + { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - set codewords from component"); codewords = component.Codewords; + } if (component.GiveBriefing) + { _antag.SendBriefing(traitor, GenerateBriefing(codewords, code, issuer), null, component.GreetSoundNotification); + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Sent the Briefing"); + } + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Adding TraitorMind"); component.TraitorMinds.Add(mindId); // Assign briefing @@ -126,9 +147,14 @@ public sealed class TraitorRuleSystem : GameRuleSystem _roleSystem.MindHasRole(mindId, out var traitorRole); if (traitorRole is not null) { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Add traitor briefing components"); AddComp(traitorRole.Value.Owner); Comp(traitorRole.Value.Owner).Briefing = briefing; } + else + { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - did not get traitor briefing"); + } // Send codewords to only the traitor client var color = TraitorCodewordColor; // Fall back to a dark red Syndicate color if a prototype is not found @@ -137,9 +163,11 @@ public sealed class TraitorRuleSystem : GameRuleSystem _roleCodewordSystem.SetRoleCodewords(codewordComp, "traitor", component.Codewords.ToList(), color); // Change the faction + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Change faction"); _npcFaction.RemoveFaction(traitor, component.NanoTrasenFaction, false); _npcFaction.AddFaction(traitor, component.SyndicateFaction); + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Finished"); return true; } @@ -148,10 +176,12 @@ public sealed class TraitorRuleSystem : GameRuleSystem var pda = _uplink.FindUplinkTarget(traitor); Note[]? code = null; + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Uplink add"); var uplinked = _uplink.AddUplink(traitor, startingBalance, pda, true); if (pda is not null && uplinked) { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Uplink is PDA"); // Codes are only generated if the uplink is a PDA code = EnsureComp(pda.Value).Code; @@ -163,6 +193,7 @@ public sealed class TraitorRuleSystem : GameRuleSystem } else if (pda is null && uplinked) { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Uplink is implant"); briefing += "\n" + Loc.GetString("traitor-role-uplink-implant-short"); } From 69c0f8773f05e12b78bf45303a0ec99bfeced773 Mon Sep 17 00:00:00 2001 From: cohanna Date: Mon, 4 Nov 2024 03:10:29 -0700 Subject: [PATCH 03/28] we hate powergaming --- .../Recipes/Construction/Graphs/structures/window.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/window.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/window.yml index b9e6eae081..1782c5924b 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/window.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/window.yml @@ -223,11 +223,6 @@ - material: Uranium amount: 2 doAfter: 1 - - to: shuttleWindow - steps: - - material: Plasteel - amount: 2 - doAfter: 3 - node: reinforcedPlasmaWindow entity: ReinforcedPlasmaWindow From 3972a252581aaa6dd6f022eb09b6c2faf903da3c Mon Sep 17 00:00:00 2001 From: Errant <35878406+Errant-4@users.noreply.github.com> Date: Tue, 5 Nov 2024 19:03:14 +0100 Subject: [PATCH 04/28] HOTFIX latejoin traitor activations (#33180) --- Resources/Prototypes/GameRules/roundstart.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/GameRules/roundstart.yml b/Resources/Prototypes/GameRules/roundstart.yml index cec5c9ee09..6ca322d0d5 100644 --- a/Resources/Prototypes/GameRules/roundstart.yml +++ b/Resources/Prototypes/GameRules/roundstart.yml @@ -191,12 +191,17 @@ - type: entity id: TraitorReinforcement - parent: Traitor + parent: BaseTraitorRule components: - type: TraitorRule giveUplink: false giveCodewords: false # It would actually give them a different set of codewords than the regular traitors, anyway giveBriefing: false + - type: AntagSelection + definitions: + - prefRoles: [ Traitor ] + mindRoles: + - MindRoleTraitor - type: entity id: Revolutionary @@ -280,7 +285,6 @@ tableId: CalmPestEventsTable - !type:NestedSelector tableId: SpicyPestEventsTable - - type: entityTable id: SpaceTrafficControlTable From ed865ae973375fa05adf86a24821e93c4edbf7d3 Mon Sep 17 00:00:00 2001 From: Plykiya <58439124+Plykiya@users.noreply.github.com> Date: Wed, 6 Nov 2024 06:19:02 -0800 Subject: [PATCH 05/28] make admeme mouse eternally hungry and thirsty by increasing decay rate (#33153) * make admeme mouse eternally hungry and thirsty by increasing decay rate * no starving slowdown, fix unnecessary declarations * REVERTUS DELETUS --- Resources/Prototypes/Entities/Mobs/NPCs/animals.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index e2dd9ac3f3..2280c3fecb 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -1784,6 +1784,11 @@ # intended for swarms that eat pills so only temporary - type: TimedDespawn lifetime: 60 + - type: Hunger + baseDecayRate: 10 # always hungry + starvingSlowdownModifier: 1 + - type: Thirst + baseDecayRate: 10 # always thirsty - type: entity parent: MobMouse @@ -3381,7 +3386,7 @@ - type: HTN rootTask: task: RuminantCompound - + - type: entity name: diona nymph parent: [SimpleMobBase, StripableInventoryBase] From d58840990901423b8c9717bf90e4a36cb59b0ad5 Mon Sep 17 00:00:00 2001 From: BramvanZijp <56019239+BramvanZijp@users.noreply.github.com> Date: Wed, 6 Nov 2024 15:27:10 +0100 Subject: [PATCH 06/28] Rework the Flare Gun & add a Security Shell Gun. (#32829) * Rework flaregun and add security shell gun * Make flare gun twice as likely to appear in emergency lockers * Security shell gun can now fire lethal shells like the flare gun used to be able to. * Rebalance the sec shell gun material cost to primarily be steel instead of plastic * Define the ShellShotgunLight tag in tags.yml * Leave the no lethal shells for normal flareguns to a different PR. * Move a comment to re-run checks. * Bye bye lethal shells from plastic guns. * Fix weird whitespace issue. * Make the sec shell gun inherit the normal flare gun. * Remove the rack verb and update the sec shell gun description * Remove the ability to fire lethals from flare guns, pending blowing up the gun --------- Co-authored-by: SlamBamActionman --- .../ChamberMagazineAmmoProviderComponent.cs | 6 ++ .../SharedGunSystem.ChamberMagazine.cs | 7 +- .../Prototypes/Catalog/Fills/Lockers/misc.yml | 2 +- .../Guns/Ammunition/Cartridges/shotgun.yml | 20 +++++ .../Objects/Weapons/Guns/flare_gun.yml | 76 +++++++++++++----- .../Prototypes/Recipes/Lathes/security.yml | 9 +++ Resources/Prototypes/tags.yml | 3 + .../flaregun.rsi/{icon.png => base.png} | Bin .../Guns/Shotguns/flaregun.rsi/meta.json | 2 +- .../Shotguns/flaregun_security.rsi/base.png | Bin 0 -> 549 bytes .../flaregun_security.rsi/bolt-open.png | Bin 0 -> 574 bytes .../flaregun_security.rsi/equipped-BELT.png | Bin 0 -> 222 bytes .../equipped-SUITSTORAGE.png | Bin 0 -> 222 bytes .../flaregun_security.rsi/inhand-left.png | Bin 0 -> 419 bytes .../flaregun_security.rsi/inhand-right.png | Bin 0 -> 413 bytes .../Shotguns/flaregun_security.rsi/meta.json | 33 ++++++++ 16 files changed, 134 insertions(+), 24 deletions(-) rename Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun.rsi/{icon.png => base.png} (100%) create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/base.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/bolt-open.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/equipped-BELT.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/equipped-SUITSTORAGE.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/meta.json diff --git a/Content.Shared/Weapons/Ranged/Components/ChamberMagazineAmmoProviderComponent.cs b/Content.Shared/Weapons/Ranged/Components/ChamberMagazineAmmoProviderComponent.cs index 37517c1371..cdcf1a7b31 100644 --- a/Content.Shared/Weapons/Ranged/Components/ChamberMagazineAmmoProviderComponent.cs +++ b/Content.Shared/Weapons/Ranged/Components/ChamberMagazineAmmoProviderComponent.cs @@ -22,6 +22,12 @@ public sealed partial class ChamberMagazineAmmoProviderComponent : MagazineAmmoP [ViewVariables(VVAccess.ReadWrite), DataField("autoCycle"), AutoNetworkedField] public bool AutoCycle = true; + /// + /// Can the gun be racked, which opens and then instantly closes the bolt to cycle a round. + /// + [ViewVariables(VVAccess.ReadWrite), DataField("canRack"), AutoNetworkedField] + public bool CanRack = true; + [ViewVariables(VVAccess.ReadWrite), DataField("soundBoltClosed"), AutoNetworkedField] public SoundSpecifier? BoltClosedSound = new SoundPathSpecifier("/Audio/Weapons/Guns/Bolt/rifle_bolt_closed.ogg"); diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.ChamberMagazine.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.ChamberMagazine.cs index d6f45ba77d..3060e2c1a9 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.ChamberMagazine.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.ChamberMagazine.cs @@ -67,7 +67,10 @@ public abstract partial class SharedGunSystem return; args.Handled = true; - UseChambered(uid, component, args.User); + if (component.CanRack) + UseChambered(uid, component, args.User); + else + ToggleBolt(uid, component, args.User); } /// @@ -75,7 +78,7 @@ public abstract partial class SharedGunSystem /// private void OnChamberActivationVerb(EntityUid uid, ChamberMagazineAmmoProviderComponent component, GetVerbsEvent args) { - if (!args.CanAccess || !args.CanInteract || component.BoltClosed == null) + if (!args.CanAccess || !args.CanInteract || component.BoltClosed == null || !component.CanRack) return; args.Verbs.Add(new ActivationVerb() diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml b/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml index 5e2b6aeb75..4c0a9826de 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml @@ -30,7 +30,7 @@ - id: MedkitOxygenFilled prob: 0.2 - id: WeaponFlareGun - prob: 0.05 + prob: 0.1 - id: BoxMRE prob: 0.1 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml index 47577b0857..dd00440eec 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml @@ -24,6 +24,11 @@ name: shell (.50 beanbag) parent: BaseShellShotgun components: + - type: Tag + tags: + - Cartridge + - ShellShotgun + - ShellShotgunLight - type: Sprite layers: - state: beanbag @@ -52,6 +57,11 @@ name: shell (.50 flare) parent: BaseShellShotgun components: + - type: Tag + tags: + - Cartridge + - ShellShotgun + - ShellShotgunLight - type: Sprite layers: - state: flare @@ -106,6 +116,11 @@ name: shell (.50 tranquilizer) parent: BaseShellShotgun components: + - type: Tag + tags: + - Cartridge + - ShellShotgun + - ShellShotgunLight - type: Sprite layers: - state: tranquilizer @@ -130,6 +145,11 @@ description: A homemade shotgun shell that shoots painful glass shrapnel. The spread is so wide that it couldn't hit the broad side of a barn. parent: BaseShellShotgun components: + - type: Tag + tags: + - Cartridge + - ShellShotgun + - ShellShotgunLight - type: Sprite layers: - state: improvised diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/flare_gun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/flare_gun.yml index 9b046a7aae..b63036c58b 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/flare_gun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/flare_gun.yml @@ -1,17 +1,44 @@ - type: entity name: flare gun - parent: BaseWeaponLauncher + parent: BaseItem id: WeaponFlareGun - description: A compact, single-shot pistol that fires shotgun shells. + description: A compact, single-shot pistol that fires shotgun shells. Comes with a safety feature that prevents the user from fitting lethal shells inside. components: - type: Sprite sprite: Objects/Weapons/Guns/Shotguns/flaregun.rsi layers: - - state: icon + - state: base map: ["enum.GunVisualLayers.Base"] - type: Item size: Small sprite: Objects/Weapons/Guns/Shotguns/flaregun.rsi + - type: ItemSlots + slots: + gun_chamber: + name: Chamber + startingItem: ShellShotgunFlare + priority: 1 + whitelist: + tags: ## TODO: Add a risk of the gun blowing up if using non-light shotgun shells, and then re-enable them. + ## - ShellShotgun + - ShellShotgunLight + - type: ContainerContainer + containers: + gun_chamber: !type:ContainerSlot + - type: ChamberMagazineAmmoProvider + autoCycle: false + boltClosed: true + canRack: false + soundBoltClosed: /Audio/Weapons/Guns/Cock/revolver_cock.ogg + soundBoltOpened: /Audio/Weapons/Guns/Cock/revolver_cock.ogg + soundRack: /Audio/Weapons/Guns/Cock/revolver_cock.ogg + - type: Clothing + sprite: Objects/Weapons/Guns/Shotguns/flaregun.rsi + quickEquip: false + slots: + - Belt + - suitStorage + - type: Appearance - type: Gun fireRate: 8 selectedMode: SemiAuto @@ -19,21 +46,30 @@ - SemiAuto soundGunshot: path: /Audio/Weapons/Guns/Gunshots/flaregun.ogg - - type: BallisticAmmoProvider - whitelist: - tags: - - ShellShotgun - proto: ShellShotgunFlare - capacity: 1 - soundInsert: - path: /Audio/Weapons/Guns/MagIn/shotgun_insert.ogg - - type: ContainerContainer - containers: - ballistic-ammo: !type:Container - ents: [] - - type: Clothing - sprite: Objects/Weapons/Guns/Shotguns/flaregun.rsi - quickEquip: false + + +- type: entity + name: security shell gun + parent: [WeaponFlareGun, BaseSecurityContraband] + id: WeaponFlareGunSecurity + description: A modified flare gun originally designed to be used by security to launch non-lethal shotgun shells, however it can also fire lethal shells without risk. + components: + - type: Sprite + sprite: Objects/Weapons/Guns/Shotguns/flaregun_security.rsi + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - type: Item + size: Small + sprite: Objects/Weapons/Guns/Shotguns/flaregun_security.rsi + - type: ItemSlots slots: - - Belt - - suitStorage + gun_chamber: + name: Chamber + priority: 1 + whitelist: + tags: + - ShellShotgun + - type: Tag + tags: + - Sidearm diff --git a/Resources/Prototypes/Recipes/Lathes/security.yml b/Resources/Prototypes/Recipes/Lathes/security.yml index 29227fb9db..f6f303e5e3 100644 --- a/Resources/Prototypes/Recipes/Lathes/security.yml +++ b/Resources/Prototypes/Recipes/Lathes/security.yml @@ -603,6 +603,15 @@ Plastic: 320 Uranium: 240 +- type: latheRecipe + parent: BaseWeaponRecipe + id: WeaponFlareGunSecurity + result: WeaponFlareGunSecurity + completetime: 6 + materials: + Plastic: 100 + Steel: 400 + - type: latheRecipe parent: BaseWeaponRecipe id: WeaponDisabler diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index 48bce7ddab..be9c90ce93 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -1198,6 +1198,9 @@ - type: Tag id: ShellShotgun +- type: Tag + id: ShellShotgunLight # shotgun shells that are compatible with the flare gun. + - type: Tag id: Shiv diff --git a/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun.rsi/icon.png b/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun.rsi/base.png similarity index 100% rename from Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun.rsi/icon.png rename to Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun.rsi/base.png diff --git a/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun.rsi/meta.json index fc96d8d519..4384076149 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun.rsi/meta.json @@ -8,7 +8,7 @@ }, "states": [ { - "name": "icon" + "name": "base" }, { "name": "bolt-open" diff --git a/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/base.png b/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/base.png new file mode 100644 index 0000000000000000000000000000000000000000..0b39a08c9210d17ce106499ecd3386d7892122c1 GIT binary patch literal 549 zcmV+=0^0qFP)z@;j|==^1poj532;bRa{vGi!TJtP&A~y?Sv$BpD1x9Mq@+c0 zXem;tYwY)WPp)lfE?Nsheh}{Rn)LhLyLT6giHZ4FEUgrMH60sMYBa*K=4gFu``g53 zI{j-y2{jsl3c!Tt)v3^OIaX^lcm%m@R?Wh3T$i;Y82~UL;zi%5r~LzZJwBwpWRhbq zoeqy-tW~S59cc*w#32m9`BaKyxEByJxdh`1T;=nuA}=FT%u5TaG<|(eJDCi}O_2(O z8WZD~0EpwX!{{89c|?}TPCdftr(n?Uri?rXPR}mYY#4MgL~)@q zQA;oMy%bdXkJdYv{-*+A^i=?2lV)fM^z0|WkO934Qhs#)I6l2W^cjE{E(q&J&~Q;c nwNV(^SbElScE`lTj2EIWESu93D}=hn00000NkvXXu0mjfoQURt literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/bolt-open.png b/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/bolt-open.png new file mode 100644 index 0000000000000000000000000000000000000000..65052544c725d7079b4b8e33c10ca7fd2ed5ec2d GIT binary patch literal 574 zcmV-E0>S->P)z@;j|==^1poj532;bRa{vGi!T(P#^TYH4V2u*NWIXlN>EXljVI{sSk6psk@T=Wu9iXea`QAUM$= z8WagZr{ePa@ILZhcix?N1i^ja<^6F#zTfA^DMds?{417L3zk}j#*~@^k;%-_*3QAu z#C9Svv7xaHG#YO_BNHdNoRv zN;loE?f$V1AaV#V#N)ir)@q&xFdrt9R5c80wptDYflF|k%~}}8u^5ZL_Im2dXiy@E z<95ifuBc@BzO&-j)AHAnX!J>CV5T>1hfkPP5Cl%Zsr!Al_G;B01| z%6(_VcSQwOE2Bro>Z9Q?6K#%?} za2U|DAn8Xf!}#lU!*e!`^A5b&6?yZU1HGnavJ}-=8Lwl%pmuQ0rmD$-r*e!`^A5b&6?yZU1HGnavJ}-=8Lwl%pmuQ0rmD$-rE`W?od3IB{-IXVd?91;GR&>9AYgqNS5toYhqf2}Y6?A@!S)f;!umpQcUkhai)n=kh4wX!HVe|o7mr{nY2 z#kUjW8fIOu`upoqU$t%d?|;`cTQ2N5)Sc=6(>d6+?7)xAM}D)H1%2L>$+56%?9LhStGnK_fE@rL>MkyG4&WBs>eIe> z=XsVA!L;6;&B2!$OfLG?sx9cguqW$i@Dq_`j5c4`k2*)>#+eqUunXiLeEImv=b|ZG z50`7pXL+5ve=vppNUQ1j>r(9rsat;rco)3~1>}$TIlmd6znk#NT}VS1WS6I_pUXO@ GgeCy1`Ls>| literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/inhand-right.png b/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..50297902ee82a02c050f424ddb17fa84479c2ce5 GIT binary patch literal 413 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBufiR<}hF1engOR6;V@O5Z+glsG4m-#k|JcpZIxX+rG!d5e zeeH|8^Di7ccv4)WmQh{aO=g#6NWrTB0Uo=CY-`S`_a`=I-&%6(o}>T1`A=sFRQ>!r z>8(67&>9AY2fO#bS$}H&|7)H*^8$YCzPzpS)aNDMH@*sN7khAMzrI*n$u;Ba=7&?f z1NxQ;nQ;|7l;1!7*`mvakJtNG+f5Z(mA^(VDVQ^x^~Xck*P($a+w+C1=Wy+Bc^;Nl zd}Zo{sjEYI*tBE+82pd0*8deeHBe5@w0!;516qpn&rUi4b^wTISR8C#(xZ4RZtH#a zKW%9RzLT#{*wX%u>+J$2lghiMb$ka~ug5Kv4LRWb-KL7OuHvoet@+#^(%)ac-nn;i zgz6DK{p!7pb)4^_nfA8?ta`Y;c00(_H-~4)+sbP0l+XkKwq2>% literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/meta.json new file mode 100644 index 0000000000..04abe1a4e0 --- /dev/null +++ b/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/raw/3f9ebb72931ff884427c3004a594ec61aaaa7041/icons/obj/guns/projectile/flaregun.dmi and edited", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "base" + }, + { + "name": "bolt-open" + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "equipped-BELT", + "directions": 4 + }, + { + "name": "equipped-SUITSTORAGE", + "directions": 4 + } + ] +} From e72d63e8a9417ff66ab192defc20b85981d500dd Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 6 Nov 2024 14:28:17 +0000 Subject: [PATCH 07/28] Automatic changelog update --- Resources/Changelog/Changelog.yml | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index eb0055f8a5..7e34cd8445 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,13 +1,4 @@ Entries: -- author: mirrorcult - changes: - - message: With space law being overhauled, you can now examine items to see their - contraband status, and whether with your current access you'd be accosted by - Security for owning it. This will also clearly show non-stealth syndicate items. - type: Add - id: 7096 - time: '2024-08-12T03:57:50.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/28688 - author: DieselMohawk changes: - message: Resprited Security vest and helmet @@ -3944,3 +3935,19 @@ id: 7595 time: '2024-11-06T13:20:05.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33084 +- author: BramvanZijp + changes: + - message: Flare guns have been reworked to no longer automatically eject shells + after firing, and must now be opened manually to insert or eject shells. A safety + feature has also been added to prevent loading lethal shells into them. + type: Tweak + - message: Flare guns are twice as likely to appear in emergency closets, with the + same rarity as MRE's. + type: Tweak + - message: Added the security shell gun, a modified flare gun which is capable of + handling both nonlethal and lethal shotgun shells. It is able to be crafted + in the security techfab without needing any research. + type: Add + id: 7596 + time: '2024-11-06T14:27:11.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32829 From b15d5a7f27d4e650dc76f735fc38de76628b0610 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Wed, 6 Nov 2024 15:39:16 +0100 Subject: [PATCH 08/28] Changes to "Burst" firemode; Drozd, WT550 and C20-r (#31292) * Initial commit * Change burst fire variable to be a set value rather than a multiplier --- .../Weapons/Ranged/Systems/GunSystem.cs | 2 +- .../Ranged/Systems/GunSystem.AutoFire.cs | 25 +++++++-- .../Weapons/Ranged/Components/GunComponent.cs | 31 ++++++++++ .../Weapons/Ranged/Systems/SharedGunSystem.cs | 56 ++++++++++++++----- .../Objects/Weapons/Guns/SMGs/smgs.yml | 13 ++++- 5 files changed, 104 insertions(+), 23 deletions(-) diff --git a/Content.Client/Weapons/Ranged/Systems/GunSystem.cs b/Content.Client/Weapons/Ranged/Systems/GunSystem.cs index 1af471f28a..710ee7c7cb 100644 --- a/Content.Client/Weapons/Ranged/Systems/GunSystem.cs +++ b/Content.Client/Weapons/Ranged/Systems/GunSystem.cs @@ -157,7 +157,7 @@ public sealed partial class GunSystem : SharedGunSystem var useKey = gun.UseKey ? EngineKeyFunctions.Use : EngineKeyFunctions.UseSecondary; - if (_inputSystem.CmdStates.GetState(useKey) != BoundKeyState.Down) + if (_inputSystem.CmdStates.GetState(useKey) != BoundKeyState.Down && !gun.BurstActivated) { if (gun.ShotCounter != 0) EntityManager.RaisePredictiveEvent(new RequestStopShootEvent { Gun = GetNetEntity(gunUid) }); diff --git a/Content.Server/Weapons/Ranged/Systems/GunSystem.AutoFire.cs b/Content.Server/Weapons/Ranged/Systems/GunSystem.AutoFire.cs index 39cd2486ed..e5439cdb06 100644 --- a/Content.Server/Weapons/Ranged/Systems/GunSystem.AutoFire.cs +++ b/Content.Server/Weapons/Ranged/Systems/GunSystem.AutoFire.cs @@ -1,4 +1,6 @@ +using Content.Shared.Damage; using Content.Shared.Weapons.Ranged.Components; +using Robust.Shared.Map; namespace Content.Server.Weapons.Ranged.Systems; @@ -13,17 +15,28 @@ public sealed partial class GunSystem */ // Automatic firing without stopping if the AutoShootGunComponent component is exist and enabled - var query = EntityQueryEnumerator(); + var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var autoShoot, out var gun)) + while (query.MoveNext(out var uid, out var gun)) { - if (!autoShoot.Enabled) - continue; - if (gun.NextFire > Timing.CurTime) continue; - AttemptShoot(uid, gun); + if (TryComp(uid, out AutoShootGunComponent? autoShoot)) + { + if (!autoShoot.Enabled) + continue; + + AttemptShoot(uid, gun); + } + else if (gun.BurstActivated) + { + var parent = _transform.GetParentUid(uid); + if (HasComp(parent)) + AttemptShoot(parent, uid, gun, gun.ShootCoordinates ?? new EntityCoordinates(uid, gun.DefaultDirection)); + else + AttemptShoot(uid, gun); + } } } } diff --git a/Content.Shared/Weapons/Ranged/Components/GunComponent.cs b/Content.Shared/Weapons/Ranged/Components/GunComponent.cs index b404221abf..98b1d2fe2a 100644 --- a/Content.Shared/Weapons/Ranged/Components/GunComponent.cs +++ b/Content.Shared/Weapons/Ranged/Components/GunComponent.cs @@ -1,3 +1,4 @@ +using System.Numerics; using Content.Shared.Weapons.Ranged.Events; using Content.Shared.Weapons.Ranged.Systems; using Robust.Shared.Audio; @@ -156,6 +157,30 @@ public sealed partial class GunComponent : Component [AutoNetworkedField, ViewVariables(VVAccess.ReadWrite)] public int ShotsPerBurstModified = 3; + /// + /// How long time must pass between burstfire shots. + /// + [DataField, AutoNetworkedField] + public float BurstCooldown = 0.25f; + + /// + /// The fire rate of the weapon in burst fire mode. + /// + [DataField, AutoNetworkedField] + public float BurstFireRate = 8f; + + /// + /// Whether the burst fire mode has been activated. + /// + [AutoNetworkedField, ViewVariables(VVAccess.ReadWrite)] + public bool BurstActivated = false; + + /// + /// The burst fire bullet count. + /// + [AutoNetworkedField, ViewVariables(VVAccess.ReadWrite)] + public int BurstShotsCount = 0; + /// /// Used for tracking semi-auto / burst /// @@ -232,6 +257,12 @@ public sealed partial class GunComponent : Component /// [DataField] public bool ClumsyProof = false; + + /// + /// Firing direction for an item not being held (e.g. shuttle cannons, thrown guns still firing). + /// + [DataField] + public Vector2 DefaultDirection = new Vector2(0, -1); } [Flags] diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs index 794237b145..9bd786bbe0 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs @@ -218,7 +218,7 @@ public abstract partial class SharedGunSystem : EntitySystem /// public void AttemptShoot(EntityUid gunUid, GunComponent gun) { - var coordinates = new EntityCoordinates(gunUid, new Vector2(0, -1)); + var coordinates = new EntityCoordinates(gunUid, gun.DefaultDirection); gun.ShootCoordinates = coordinates; AttemptShoot(gunUid, gunUid, gun); gun.ShotCounter = 0; @@ -258,6 +258,9 @@ public abstract partial class SharedGunSystem : EntitySystem var fireRate = TimeSpan.FromSeconds(1f / gun.FireRateModified); + if (gun.SelectedMode == SelectiveFire.Burst || gun.BurstActivated) + fireRate = TimeSpan.FromSeconds(1f / gun.BurstFireRate); + // First shot // Previously we checked shotcounter but in some cases all the bullets got dumped at once // curTime - fireRate is insufficient because if you time it just right you can get a 3rd shot out slightly quicker. @@ -278,18 +281,24 @@ public abstract partial class SharedGunSystem : EntitySystem // Get how many shots we're actually allowed to make, due to clip size or otherwise. // Don't do this in the loop so we still reset NextFire. - switch (gun.SelectedMode) + if (!gun.BurstActivated) { - case SelectiveFire.SemiAuto: - shots = Math.Min(shots, 1 - gun.ShotCounter); - break; - case SelectiveFire.Burst: - shots = Math.Min(shots, gun.ShotsPerBurstModified - gun.ShotCounter); - break; - case SelectiveFire.FullAuto: - break; - default: - throw new ArgumentOutOfRangeException($"No implemented shooting behavior for {gun.SelectedMode}!"); + switch (gun.SelectedMode) + { + case SelectiveFire.SemiAuto: + shots = Math.Min(shots, 1 - gun.ShotCounter); + break; + case SelectiveFire.Burst: + shots = Math.Min(shots, gun.ShotsPerBurstModified - gun.ShotCounter); + break; + case SelectiveFire.FullAuto: + break; + default: + throw new ArgumentOutOfRangeException($"No implemented shooting behavior for {gun.SelectedMode}!"); + } + } else + { + shots = Math.Min(shots, gun.ShotsPerBurstModified - gun.ShotCounter); } var attemptEv = new AttemptShootEvent(user, null); @@ -301,7 +310,8 @@ public abstract partial class SharedGunSystem : EntitySystem { PopupSystem.PopupClient(attemptEv.Message, gunUid, user); } - + gun.BurstActivated = false; + gun.BurstShotsCount = 0; gun.NextFire = TimeSpan.FromSeconds(Math.Max(lastFire.TotalSeconds + SafetyNextFire, gun.NextFire.TotalSeconds)); return; } @@ -328,6 +338,10 @@ public abstract partial class SharedGunSystem : EntitySystem var emptyGunShotEvent = new OnEmptyGunShotEvent(); RaiseLocalEvent(gunUid, ref emptyGunShotEvent); + gun.BurstActivated = false; + gun.BurstShotsCount = 0; + gun.NextFire += TimeSpan.FromSeconds(gun.BurstCooldown); + // Play empty gun sounds if relevant // If they're firing an existing clip then don't play anything. if (shots > 0) @@ -347,6 +361,22 @@ public abstract partial class SharedGunSystem : EntitySystem return; } + // Handle burstfire + if (gun.SelectedMode == SelectiveFire.Burst) + { + gun.BurstActivated = true; + } + if (gun.BurstActivated) + { + gun.BurstShotsCount += shots; + if (gun.BurstShotsCount >= gun.ShotsPerBurstModified) + { + gun.NextFire += TimeSpan.FromSeconds(gun.BurstCooldown); + gun.BurstActivated = false; + gun.BurstShotsCount = 0; + } + } + // Shoot confirmed - sounds also played here in case it's invalid (e.g. cartridge already spent). Shoot(gunUid, gun, ev.Ammo, fromCoordinates, toCoordinates.Value, out var userImpulse, user, throwItems: attemptEv.ThrowItems); var shotEv = new GunShotEvent(user, ev.Ammo); diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml index a22be1da04..5140a358e1 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml @@ -19,6 +19,7 @@ minAngle: 2 maxAngle: 16 fireRate: 8 + burstFireRate: 8 angleIncrease: 3 angleDecay: 16 selectedMode: FullAuto @@ -27,6 +28,7 @@ - FullAuto soundGunshot: path: /Audio/Weapons/Guns/Gunshots/smg.ogg + defaultDirection: 1, 0 - type: ChamberMagazineAmmoProvider soundRack: path: /Audio/Weapons/Guns/Cock/smg_cock.ogg @@ -140,12 +142,15 @@ - type: Gun minAngle: 21 maxAngle: 32 - fireRate: 6 - selectedMode: FullAuto + fireRate: 12 + burstFireRate: 12 + selectedMode: Burst soundGunshot: path: /Audio/Weapons/Guns/Gunshots/atreides.ogg availableModes: - - FullAuto + - Burst + shotsPerBurst: 3 + burstCooldown: 0.25 - type: ItemSlots slots: gun_magazine: @@ -250,6 +255,8 @@ angleDecay: 6 selectedMode: FullAuto shotsPerBurst: 5 + burstCooldown: 0.2 + burstFireRate: 7 availableModes: - SemiAuto - Burst From 5b0761dab265d80c7ed1dd5934b6e8f97bf642ef Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 6 Nov 2024 14:40:22 +0000 Subject: [PATCH 09/28] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 7e34cd8445..25dd61eb68 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: DieselMohawk - changes: - - message: Resprited Security vest and helmet - type: Tweak - id: 7097 - time: '2024-08-12T06:20:56.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30291 - author: Ubaser changes: - message: Mantles are now available in loadouts, requiring 20 hours of that head @@ -3951,3 +3944,12 @@ id: 7596 time: '2024-11-06T14:27:11.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/32829 +- author: SlamBamActionman + changes: + - message: WT550 and C20-r's "burst" firemodes are now actual bursts. + type: Tweak + - message: Drozd is now a burst-only weapon (DPS remains unchanged!). + type: Tweak + id: 7597 + time: '2024-11-06T14:39:16.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/31292 From 18971f270539a69c54b203a87b40573eacbbabaa Mon Sep 17 00:00:00 2001 From: cohanna Date: Wed, 6 Nov 2024 21:39:02 -0700 Subject: [PATCH 10/28] Reverted #31978 --- .../Entities/Structures/Windows/clockwork.yml | 20 +- .../Entities/Structures/Windows/mining.yml | 4 +- .../Entities/Structures/Windows/plasma.yml | 25 +- .../Structures/Windows/plastitanium.yml | 8 +- .../Structures/Windows/reinforced.yml | 35 ++- .../Entities/Structures/Windows/rplasma.yml | 14 +- .../Entities/Structures/Windows/ruranium.yml | 16 +- .../Entities/Structures/Windows/shuttle.yml | 4 +- .../Entities/Structures/Windows/uranium.yml | 24 +- .../Entities/Structures/Windows/window.yml | 30 +- .../Construction/Graphs/structures/window.yml | 270 ++++++++---------- .../Graphs/structures/window_diagonal.yml | 194 +++++-------- .../Graphs/structures/windowdirectional.yml | 174 ++++------- .../Recipes/Construction/structures.yml | 42 +-- ...ageOverlay_20.png => DamageOverlay_12.png} | Bin ...amageOverlay_5.png => DamageOverlay_4.png} | Bin ...mageOverlay_10.png => DamageOverlay_8.png} | Bin .../Structures/Windows/cracks.rsi/meta.json | 6 +- ...ageOverlay_20.png => DamageOverlay_12.png} | Bin ...amageOverlay_5.png => DamageOverlay_4.png} | Bin ...mageOverlay_10.png => DamageOverlay_8.png} | Bin .../Windows/cracks_diagonal.rsi/meta.json | 6 +- ...ageOverlay_20.png => DamageOverlay_12.png} | Bin ...amageOverlay_5.png => DamageOverlay_4.png} | Bin ...mageOverlay_10.png => DamageOverlay_8.png} | Bin .../Windows/cracks_directional.rsi/meta.json | 6 +- 26 files changed, 335 insertions(+), 543 deletions(-) rename Resources/Textures/Structures/Windows/cracks.rsi/{DamageOverlay_20.png => DamageOverlay_12.png} (100%) rename Resources/Textures/Structures/Windows/cracks.rsi/{DamageOverlay_5.png => DamageOverlay_4.png} (100%) rename Resources/Textures/Structures/Windows/cracks.rsi/{DamageOverlay_10.png => DamageOverlay_8.png} (100%) rename Resources/Textures/Structures/Windows/cracks_diagonal.rsi/{DamageOverlay_20.png => DamageOverlay_12.png} (100%) rename Resources/Textures/Structures/Windows/cracks_diagonal.rsi/{DamageOverlay_5.png => DamageOverlay_4.png} (100%) rename Resources/Textures/Structures/Windows/cracks_diagonal.rsi/{DamageOverlay_10.png => DamageOverlay_8.png} (100%) rename Resources/Textures/Structures/Windows/cracks_directional.rsi/{DamageOverlay_20.png => DamageOverlay_12.png} (100%) rename Resources/Textures/Structures/Windows/cracks_directional.rsi/{DamageOverlay_5.png => DamageOverlay_4.png} (100%) rename Resources/Textures/Structures/Windows/cracks_directional.rsi/{DamageOverlay_10.png => DamageOverlay_8.png} (100%) diff --git a/Resources/Prototypes/Entities/Structures/Windows/clockwork.yml b/Resources/Prototypes/Entities/Structures/Windows/clockwork.yml index 3449d1d11a..992dfcda1c 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/clockwork.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/clockwork.yml @@ -47,8 +47,8 @@ node: clockworkWindow - type: Appearance - type: DamageVisuals - thresholds: [5, 10, 20] - damageDivisor: 3 + thresholds: [4, 8, 12] + damageDivisor: 4 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks.rsi @@ -74,8 +74,8 @@ node: windowClockworkDirectional - type: Appearance - type: DamageVisuals - thresholds: [5, 10, 20] - damageDivisor: 1.5 + thresholds: [4, 8, 12] + damageDivisor: 10 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks_directional.rsi @@ -85,17 +85,7 @@ thresholds: - trigger: !type:DamageTrigger - damage: 75 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - - !type:PlaySoundBehavior - sound: - collection: WindowShatter - - trigger: - !type:DamageTrigger - damage: 37 - behaviors: + damage: 150 - !type:PlaySoundBehavior sound: collection: WindowShatter diff --git a/Resources/Prototypes/Entities/Structures/Windows/mining.yml b/Resources/Prototypes/Entities/Structures/Windows/mining.yml index f0b77e6689..82d11b732b 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/mining.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/mining.yml @@ -43,8 +43,8 @@ base: mwindow - type: Appearance - type: DamageVisuals - thresholds: [5, 10, 20] - damageDivisor: 4 + thresholds: [4, 8, 12] + damageDivisor: 6 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks.rsi diff --git a/Resources/Prototypes/Entities/Structures/Windows/plasma.yml b/Resources/Prototypes/Entities/Structures/Windows/plasma.yml index 58991b9286..66fac515a7 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/plasma.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/plasma.yml @@ -10,12 +10,12 @@ sprite: Structures/Windows/plasma_window.rsi - type: Damageable damageContainer: StructuralInorganic - damageModifierSet: Glass + damageModifierSet: RGlass - type: Destructible thresholds: - trigger: !type:DamageTrigger - damage: 150 + damage: 120 behaviors: - !type:DoActsBehavior acts: [ "Destruction" ] @@ -24,7 +24,7 @@ collection: WindowShatter - trigger: !type:DamageTrigger - damage: 75 + damage: 60 behaviors: - !type:PlaySoundBehavior sound: @@ -43,8 +43,8 @@ node: plasmaWindow - type: Appearance - type: DamageVisuals - thresholds: [5, 10, 20] - damageDivisor: 3 + thresholds: [4, 8, 12] + damageDivisor: 3.333 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks.rsi @@ -74,8 +74,8 @@ node: plasmaWindowDirectional - type: Appearance - type: DamageVisuals - thresholds: [5, 10, 20] - damageDivisor: 1.5 + thresholds: [4, 8, 12] + damageDivisor: 3.333 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks_directional.rsi @@ -83,16 +83,7 @@ thresholds: - trigger: !type:DamageTrigger - damage: 75 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - - !type:PlaySoundBehavior - sound: - collection: WindowShatter - - trigger: - !type:DamageTrigger - damage: 37 + damage: 200 behaviors: - !type:PlaySoundBehavior sound: diff --git a/Resources/Prototypes/Entities/Structures/Windows/plastitanium.yml b/Resources/Prototypes/Entities/Structures/Windows/plastitanium.yml index e7af4b6c67..2134cfe892 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/plastitanium.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/plastitanium.yml @@ -98,8 +98,8 @@ - !type:DoActsBehavior acts: [ "Destruction" ] - type: DamageVisuals - thresholds: [5, 10, 20] - damageDivisor: 20 + thresholds: [4, 8, 12] + damageDivisor: 28 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks.rsi @@ -185,8 +185,8 @@ - !type:DoActsBehavior acts: [ "Destruction" ] - type: DamageVisuals - thresholds: [5, 10, 20] - damageDivisor: 20 + thresholds: [4, 8, 12] + damageDivisor: 28 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks_diagonal.rsi diff --git a/Resources/Prototypes/Entities/Structures/Windows/reinforced.yml b/Resources/Prototypes/Entities/Structures/Windows/reinforced.yml index 9e80d46e64..503d2eec6e 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/reinforced.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/reinforced.yml @@ -50,12 +50,31 @@ node: reinforcedWindow - type: Appearance - type: DamageVisuals - thresholds: [5, 10, 20] - damageDivisor: 3 + thresholds: [4, 8, 12] + damageDivisor: 4 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks.rsi +- type: entity + parent: ReinforcedWindow + id: TintedWindow + name: tinted window + components: + - type: Sprite + drawdepth: WallTops + sprite: Structures/Windows/tinted_window.rsi + - type: Icon + sprite: Structures/Windows/tinted_window.rsi + - type: IconSmooth + base: twindow + - type: Construction + graph: Window + node: tintedWindow + - type: Occluder + - type: StaticPrice + price: 45 + - type: entity id: WindowReinforcedDirectional parent: WindowDirectional @@ -77,8 +96,8 @@ node: windowReinforcedDirectional - type: Appearance - type: DamageVisuals - thresholds: [5, 10, 20] - damageDivisor: 1.5 + thresholds: [4, 8, 12] + damageDivisor: 10 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks_directional.rsi @@ -92,16 +111,16 @@ thresholds: - trigger: !type:DamageTrigger - damage: 75 + damage: 150 #excess damage (nuke?). avoid computational cost of spawning entities. behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - !type:PlaySoundBehavior sound: collection: WindowShatter + - !type:DoActsBehavior + acts: [ "Destruction" ] - trigger: !type:DamageTrigger - damage: 37 + damage: 50 behaviors: - !type:PlaySoundBehavior sound: diff --git a/Resources/Prototypes/Entities/Structures/Windows/rplasma.yml b/Resources/Prototypes/Entities/Structures/Windows/rplasma.yml index 0dfe893a5c..0940ac308a 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/rplasma.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/rplasma.yml @@ -17,7 +17,7 @@ thresholds: - trigger: !type:DamageTrigger - damage: 300 + damage: 200 behaviors: #excess damage, don't spawn entities. - !type:DoActsBehavior acts: [ "Destruction" ] @@ -26,7 +26,7 @@ collection: WindowShatter - trigger: !type:DamageTrigger - damage: 150 + damage: 100 behaviors: - !type:PlaySoundBehavior sound: @@ -48,7 +48,7 @@ node: reinforcedPlasmaWindow - type: Appearance - type: DamageVisuals - thresholds: [5, 10, 20] + thresholds: [4, 8, 12] damageDivisor: 6 trackAllDamage: true damageOverlay: @@ -77,8 +77,8 @@ node: plasmaReinforcedWindowDirectional - type: Appearance - type: DamageVisuals - thresholds: [5, 10, 20] - damageDivisor: 3 + thresholds: [4, 8, 12] + damageDivisor: 36 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks_directional.rsi @@ -88,13 +88,13 @@ thresholds: - trigger: !type:DamageTrigger - damage: 150 + damage: 1000 behaviors: #excess damage, don't spawn entities. - !type:DoActsBehavior acts: [ "Destruction" ] - trigger: !type:DamageTrigger - damage: 75 + damage: 600 behaviors: - !type:PlaySoundBehavior sound: diff --git a/Resources/Prototypes/Entities/Structures/Windows/ruranium.yml b/Resources/Prototypes/Entities/Structures/Windows/ruranium.yml index 2231ab6a49..b9b47c00ea 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/ruranium.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/ruranium.yml @@ -43,7 +43,7 @@ node: reinforcedUraniumWindow - type: Appearance - type: DamageVisuals - thresholds: [5, 10, 20] + thresholds: [4, 8, 12] damageDivisor: 6 trackAllDamage: true damageOverlay: @@ -74,8 +74,8 @@ node: uraniumReinforcedWindowDirectional - type: Appearance - type: DamageVisuals - thresholds: [5, 10, 20] - damageDivisor: 3 + thresholds: [4, 8, 12] + damageDivisor: 3.333 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks_directional.rsi @@ -83,13 +83,7 @@ thresholds: - trigger: !type:DamageTrigger - damage: 150 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - - trigger: - !type:DamageTrigger - damage: 75 + damage: 200 behaviors: - !type:PlaySoundBehavior sound: @@ -99,7 +93,7 @@ ShardGlassUranium: min: 1 max: 2 - PartRodMetal: + PartRodMetal1: min: 1 max: 2 - !type:DoActsBehavior diff --git a/Resources/Prototypes/Entities/Structures/Windows/shuttle.yml b/Resources/Prototypes/Entities/Structures/Windows/shuttle.yml index 659f5b8a20..1b4c96c170 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/shuttle.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/shuttle.yml @@ -46,8 +46,8 @@ node: shuttleWindow - type: Appearance - type: DamageVisuals - thresholds: [5, 10, 20] - damageDivisor: 20 + thresholds: [4, 8, 12] + damageDivisor: 28 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks.rsi diff --git a/Resources/Prototypes/Entities/Structures/Windows/uranium.yml b/Resources/Prototypes/Entities/Structures/Windows/uranium.yml index 514463f1d3..c7b7312a70 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/uranium.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/uranium.yml @@ -11,18 +11,18 @@ state: full - type: Damageable damageContainer: StructuralInorganic - damageModifierSet: Glass + damageModifierSet: RGlass - type: Destructible thresholds: - trigger: !type:DamageTrigger - damage: 150 + damage: 100 behaviors: - !type:DoActsBehavior acts: [ "Destruction" ] - trigger: !type:DamageTrigger - damage: 75 + damage: 60 behaviors: - !type:PlaySoundBehavior sound: @@ -41,8 +41,8 @@ node: uraniumWindow - type: Appearance - type: DamageVisuals - thresholds: [5, 10, 20] - damageDivisor: 3 + thresholds: [4, 8, 12] + damageDivisor: 3.333 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks.rsi @@ -72,8 +72,8 @@ node: uraniumWindowDirectional - type: Appearance - type: DamageVisuals - thresholds: [5, 10, 20] - damageDivisor: 1.5 + thresholds: [4, 8, 12] + damageDivisor: 3.333 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks_directional.rsi @@ -81,13 +81,7 @@ thresholds: - trigger: !type:DamageTrigger - damage: 75 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - - trigger: - !type:DamageTrigger - damage: 37 + damage: 200 behaviors: - !type:PlaySoundBehavior sound: @@ -96,7 +90,7 @@ spawn: ShardGlassUranium: min: 1 - max: 1 + max: 2 - !type:DoActsBehavior acts: [ "Destruction" ] - type: StaticPrice diff --git a/Resources/Prototypes/Entities/Structures/Windows/window.yml b/Resources/Prototypes/Entities/Structures/Windows/window.yml index fdf4c2ccea..56a38f82fc 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/window.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/window.yml @@ -84,8 +84,8 @@ node: window - type: Appearance - type: DamageVisuals - thresholds: [5, 10, 20] - damageDivisor: 2 + thresholds: [4, 8, 12] + damageDivisor: 3.333 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks.rsi @@ -93,25 +93,6 @@ price: 100 - type: BlockWeather -- type: entity - parent: Window - id: TintedWindow - name: tinted window - components: - - type: Sprite - drawdepth: WallTops - sprite: Structures/Windows/tinted_window.rsi - - type: Icon - sprite: Structures/Windows/tinted_window.rsi - - type: IconSmooth - base: twindow - - type: Construction - graph: Window - node: tintedWindow - - type: Occluder - - type: StaticPrice - price: 70 - - type: entity id: WindowRCDResistant parent: Window @@ -177,7 +158,7 @@ thresholds: - trigger: !type:DamageTrigger - damage: 50 #excess damage (nuke?). avoid computational cost of spawning entities. + damage: 150 #excess damage (nuke?). avoid computational cost of spawning entities. behaviors: - !type:DoActsBehavior acts: [ "Destruction" ] @@ -207,7 +188,8 @@ node: windowDirectional - type: Appearance - type: DamageVisuals - thresholds: [5, 10, 20] + thresholds: [4, 8, 12] + damageDivisor: 3.333 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks_directional.rsi @@ -238,8 +220,6 @@ - type: Icon sprite: Structures/Windows/directional.rsi state: frosted_window - - type: StaticPrice - price: 35 - type: entity parent: Window diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/window.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/window.yml index 1782c5924b..37682eb091 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/window.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/window.yml @@ -4,63 +4,61 @@ graph: - node: start edges: - - to: window # 50 hp - steps: - - material: Glass - amount: 2 - doAfter: 2 - - - to: tintedWindow # 50 hp - steps: - - material: Glass - amount: 2 - - material: Plastic - amount: 2 - doAfter: 2 - - - to: plasmaWindow # 75 hp + - to: plasmaWindow steps: - material: PlasmaGlass amount: 2 - doAfter: 3 + doAfter: 2 - - to: uraniumWindow # 75 hp - steps: - - material: UraniumGlass - amount: 2 - doAfter: 3 - - - to: clockworkWindow # 75 hp reinforced damage mod - steps: - - material: ClockworkGlass - amount: 2 - doAfter: 3 - - - to: reinforcedWindow # 75 hp reinforced damage mod + - to: reinforcedWindow steps: - material: ReinforcedGlass amount: 2 - doAfter: 3 + doAfter: 2 - - to: reinforcedPlasmaWindow # 150 hp reinforced damage mod + - to: tintedWindow + steps: + - material: ReinforcedGlass + amount: 2 + doAfter: 2 + + - to: reinforcedPlasmaWindow steps: - material: ReinforcedPlasmaGlass amount: 2 - doAfter: 4 + doAfter: 3 - - to: reinforcedUraniumWindow # 150 hp reinforced damage mod + - to: uraniumWindow + steps: + - material: UraniumGlass + amount: 2 + doAfter: 2 + + - to: reinforcedUraniumWindow steps: - material: ReinforcedUraniumGlass amount: 2 - doAfter: 4 + doAfter: 3 - - to: shuttleWindow # 500 hp reinforced damage mod (wow) + - to: window + steps: + - material: Glass + amount: 2 + doAfter: 3 + + - to: shuttleWindow steps: - material: Plasteel amount: 2 - material: ReinforcedGlass amount: 2 - doAfter: 6 + doAfter: 4 + + - to: clockworkWindow + steps: + - material: ClockworkGlass + amount: 2 + doAfter: 3 - node: window entity: Window @@ -76,120 +74,6 @@ doAfter: 1 - tool: Anchoring doAfter: 2 - - to: tintedWindow - steps: - - material: Plastic - amount: 2 - doAfter: 0.5 - - to: plasmaWindow - steps: - - material: Plasma - amount: 2 - doAfter: 1 - - to: uraniumWindow - steps: - - material: Uranium - amount: 2 - doAfter: 1 - - to: clockworkWindow - steps: - - material: Brass - amount: 2 - doAfter: 2 - - to: reinforcedWindow - steps: - - material: MetalRod - amount: 2 - doAfter: 2 - - - node: tintedWindow - entity: TintedWindow - edges: - - to: start - completed: - - !type:SpawnPrototype - prototype: SheetGlass1 - amount: 2 - - !type:SpawnPrototype - prototype: SheetPlastic1 - amount: 2 - - !type:DeleteEntity {} - steps: - - tool: Screwing - doAfter: 1 - - tool: Anchoring - doAfter: 2 - - - node: plasmaWindow - entity: PlasmaWindow - edges: - - to: start - completed: - - !type:SpawnPrototype - prototype: SheetPGlass1 - amount: 2 - - !type:DeleteEntity {} - steps: - - tool: Screwing - doAfter: 2 - - tool: Prying - doAfter: 3 - - tool: Screwing - doAfter: 2 - - tool: Anchoring - doAfter: 3 - - to: reinforcedPlasmaWindow - steps: - - material: MetalRod - amount: 2 - doAfter: 1 - - - node: uraniumWindow - entity: UraniumWindow - edges: - - to: start - completed: - - !type:SpawnPrototype - prototype: SheetUGlass1 - amount: 2 - - !type:DeleteEntity {} - steps: - - tool: Screwing - doAfter: 2 - - tool: Prying - doAfter: 3 - - tool: Screwing - doAfter: 2 - - tool: Anchoring - doAfter: 3 - - to: reinforcedUraniumWindow - steps: - - material: MetalRod - amount: 2 - doAfter: 1 - - - node: clockworkWindow - entity: ClockworkWindow - edges: - - to: start - completed: - - !type:SpawnPrototype - prototype: SheetClockworkGlass1 - amount: 2 - - !type:DeleteEntity {} - steps: - - tool: Welding - doAfter: 5 - - tool: Screwing - doAfter: 2 - - tool: Prying - doAfter: 3 - - tool: Welding - doAfter: 5 - - tool: Screwing - doAfter: 2 - - tool: Anchoring - doAfter: 3 - node: reinforcedWindow entity: ReinforcedWindow @@ -213,16 +97,44 @@ doAfter: 1 - tool: Anchoring doAfter: 2 - - to: reinforcedPlasmaWindow - steps: - - material: Plasma + + - node: tintedWindow + entity: TintedWindow + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetRGlass1 amount: 2 - doAfter: 1 - - to: reinforcedUraniumWindow + - !type:DeleteEntity {} steps: - - material: Uranium - amount: 2 + - tool: Screwing doAfter: 1 + - tool: Prying + doAfter: 2 + - tool: Screwing + doAfter: 1 + - tool: Anchoring + doAfter: 2 + + - node: plasmaWindow + entity: PlasmaWindow + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetPGlass1 + amount: 2 + - !type:DeleteEntity {} + steps: + - tool: Screwing + doAfter: 2 + - tool: Prying + doAfter: 3 + - tool: Screwing + doAfter: 2 + - tool: Anchoring + doAfter: 3 - node: reinforcedPlasmaWindow entity: ReinforcedPlasmaWindow @@ -247,6 +159,25 @@ - tool: Anchoring doAfter: 3 + - node: uraniumWindow + entity: UraniumWindow + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetUGlass1 + amount: 2 + - !type:DeleteEntity {} + steps: + - tool: Screwing + doAfter: 2 + - tool: Prying + doAfter: 3 + - tool: Screwing + doAfter: 2 + - tool: Anchoring + doAfter: 3 + - node: reinforcedUraniumWindow entity: ReinforcedUraniumWindow edges: @@ -269,6 +200,29 @@ doAfter: 2 - tool: Anchoring doAfter: 3 + + - node: clockworkWindow + entity: ClockworkWindow + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetClockworkGlass1 + amount: 2 + - !type:DeleteEntity {} + steps: + - tool: Welding + doAfter: 5 + - tool: Screwing + doAfter: 2 + - tool: Prying + doAfter: 3 + - tool: Welding + doAfter: 5 + - tool: Screwing + doAfter: 2 + - tool: Anchoring + doAfter: 3 - node: shuttleWindow entity: ShuttleWindow @@ -299,4 +253,4 @@ - tool: Welding doAfter: 4 - tool: Anchoring - doAfter: 1 + doAfter: 1 \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/window_diagonal.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/window_diagonal.yml index 63788ae5ad..1efe1a8eac 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/window_diagonal.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/window_diagonal.yml @@ -4,30 +4,12 @@ graph: - node: start edges: - - to: windowDiagonal - steps: - - material: Glass - amount: 2 - doAfter: 2 - - to: plasmaWindowDiagonal steps: - material: PlasmaGlass amount: 2 doAfter: 2 - - to: uraniumWindowDiagonal - steps: - - material: UraniumGlass - amount: 2 - doAfter: 2 - - - to: clockworkWindowDiagonal - steps: - - material: ClockworkGlass - amount: 2 - doAfter: 3 - - to: reinforcedWindowDiagonal steps: - material: ReinforcedGlass @@ -40,12 +22,30 @@ amount: 2 doAfter: 3 + - to: uraniumWindowDiagonal + steps: + - material: UraniumGlass + amount: 2 + doAfter: 2 + - to: reinforcedUraniumWindowDiagonal steps: - material: ReinforcedUraniumGlass amount: 2 doAfter: 3 + - to: clockworkWindowDiagonal + steps: + - material: ClockworkGlass + amount: 2 + doAfter: 3 + + - to: windowDiagonal + steps: + - material: Glass + amount: 2 + doAfter: 3 + - node: windowDiagonal entity: WindowDiagonal edges: @@ -60,97 +60,6 @@ doAfter: 1 - tool: Anchoring doAfter: 2 - - to: plasmaWindowDiagonal - steps: - - material: Plasma - amount: 2 - doAfter: 1 - - to: uraniumWindowDiagonal - steps: - - material: Uranium - amount: 2 - doAfter: 1 - - to: clockworkWindowDiagonal - steps: - - material: Brass - amount: 2 - doAfter: 2 - - to: reinforcedWindowDiagonal - steps: - - material: MetalRod - amount: 2 - doAfter: 2 - - - node: plasmaWindowDiagonal - entity: PlasmaWindowDiagonal - edges: - - to: start - completed: - - !type:SpawnPrototype - prototype: SheetPGlass1 - amount: 2 - - !type:DeleteEntity {} - steps: - - tool: Screwing - doAfter: 2 - - tool: Prying - doAfter: 3 - - tool: Screwing - doAfter: 2 - - tool: Anchoring - doAfter: 3 - - to: reinforcedPlasmaWindowDiagonal - steps: - - material: MetalRod - amount: 2 - doAfter: 1 - - - node: uraniumWindowDiagonal - entity: UraniumWindowDiagonal - edges: - - to: start - completed: - - !type:SpawnPrototype - prototype: SheetUGlass1 - amount: 2 - - !type:DeleteEntity {} - steps: - - tool: Screwing - doAfter: 2 - - tool: Prying - doAfter: 3 - - tool: Screwing - doAfter: 2 - - tool: Anchoring - doAfter: 3 - - to: reinforcedUraniumWindowDiagonal - steps: - - material: MetalRod - amount: 2 - doAfter: 1 - - - node: clockworkWindowDiagonal - entity: ClockworkWindowDiagonal - edges: - - to: start - completed: - - !type:SpawnPrototype - prototype: SheetClockworkGlass1 - amount: 2 - - !type:DeleteEntity {} - steps: - - tool: Welding - doAfter: 5 - - tool: Screwing - doAfter: 1 - - tool: Prying - doAfter: 2 - - tool: Welding - doAfter: 5 - - tool: Screwing - doAfter: 1 - - tool: Anchoring - doAfter: 2 - node: reinforcedWindowDiagonal entity: ReinforcedWindowDiagonal @@ -174,16 +83,48 @@ doAfter: 1 - tool: Anchoring doAfter: 2 - - to: reinforcedPlasmaWindowDiagonal - steps: - - material: Plasma + + - node: clockworkWindowDiagonal + entity: ClockworkWindowDiagonal + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetClockworkGlass1 amount: 2 - doAfter: 1 - - to: reinforcedUraniumWindowDiagonal + - !type:DeleteEntity {} steps: - - material: Uranium - amount: 2 + - tool: Welding + doAfter: 5 + - tool: Screwing doAfter: 1 + - tool: Prying + doAfter: 2 + - tool: Welding + doAfter: 5 + - tool: Screwing + doAfter: 1 + - tool: Anchoring + doAfter: 2 + + - node: plasmaWindowDiagonal + entity: PlasmaWindowDiagonal + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetPGlass1 + amount: 2 + - !type:DeleteEntity {} + steps: + - tool: Screwing + doAfter: 2 + - tool: Prying + doAfter: 3 + - tool: Screwing + doAfter: 2 + - tool: Anchoring + doAfter: 3 - node: reinforcedPlasmaWindowDiagonal entity: ReinforcedPlasmaWindowDiagonal @@ -208,6 +149,25 @@ - tool: Anchoring doAfter: 3 + - node: uraniumWindowDiagonal + entity: UraniumWindowDiagonal + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetUGlass1 + amount: 2 + - !type:DeleteEntity {} + steps: + - tool: Screwing + doAfter: 2 + - tool: Prying + doAfter: 3 + - tool: Screwing + doAfter: 2 + - tool: Anchoring + doAfter: 3 + - node: reinforcedUraniumWindowDiagonal entity: ReinforcedUraniumWindowDiagonal edges: @@ -229,4 +189,4 @@ - tool: Screwing doAfter: 2 - tool: Anchoring - doAfter: 3 + doAfter: 3 \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/windowdirectional.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/windowdirectional.yml index 7d3ace33c7..dc10ce9ecb 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/windowdirectional.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/windowdirectional.yml @@ -4,55 +4,47 @@ graph: - node: start edges: - - to: windowDirectional # 25 hp + + - to: windowDirectional steps: - material: Glass amount: 1 - doAfter: 1 + doAfter: 2 - - to: windowFrostedDirectional # 25 hp - steps: - - material: Glass - amount: 1 - - material: Plastic - amount: 1 - doAfter: 1 - - - to: plasmaWindowDirectional # 37 hp - steps: - - material: PlasmaGlass - amount: 1 - doAfter: 1.5 - - - to: uraniumWindowDirectional # 37 hp - steps: - - material: UraniumGlass - amount: 1 - doAfter: 1.5 - - - to: windowClockworkDirectional # 37 hp reinforced damage mod - steps: - - material: ClockworkGlass - amount: 1 - doAfter: 1.5 - - - to: windowReinforcedDirectional # 37 hp reinforced damage mod + - to: windowReinforcedDirectional steps: - material: ReinforcedGlass amount: 1 - doAfter: 1.5 + doAfter: 3 - - to: plasmaReinforcedWindowDirectional # 75 hp reinforced damage mod + - to: plasmaWindowDirectional + steps: + - material: PlasmaGlass + amount: 1 + doAfter: 2 + + - to: plasmaReinforcedWindowDirectional steps: - material: ReinforcedPlasmaGlass + amount: 1 + doAfter: 3 + - to: uraniumWindowDirectional + steps: + - material: UraniumGlass amount: 1 doAfter: 2 - - to: uraniumReinforcedWindowDirectional # 75 hp reinforced damage mod + - to: uraniumReinforcedWindowDirectional steps: - material: ReinforcedUraniumGlass amount: 1 - doAfter: 2 + doAfter: 3 + + - to: windowClockworkDirectional + steps: + - material: ClockworkGlass + amount: 1 + doAfter: 3 - node: windowDirectional entity: WindowDirectional @@ -68,45 +60,21 @@ doAfter: 1 - tool: Anchoring doAfter: 2 - - to: windowFrostedDirectional - steps: - - material: Plastic - amount: 1 - doAfter: 0.5 - - to: plasmaWindowDirectional - steps: - - material: Plasma - amount: 1 - doAfter: 0.5 - - to: uraniumWindowDirectional - steps: - - material: Uranium - amount: 1 - doAfter: 0.5 - - to: windowClockworkDirectional - steps: - - material: Brass - amount: 1 - doAfter: 1 - - to: windowReinforcedDirectional - steps: - - material: MetalRod - amount: 1 - doAfter: 1 - - node: windowFrostedDirectional - entity: WindowFrostedDirectional + - node: windowReinforcedDirectional + entity: WindowReinforcedDirectional edges: - to: start completed: - !type:SpawnPrototype - prototype: SheetGlass1 - amount: 1 - - !type:SpawnPrototype - prototype: SheetPlastic1 + prototype: SheetRGlass1 amount: 1 - !type:DeleteEntity {} steps: + - tool: Screwing + doAfter: 1 + - tool: Prying + doAfter: 2 - tool: Screwing doAfter: 1 - tool: Anchoring @@ -130,35 +98,6 @@ doAfter: 2 - tool: Anchoring doAfter: 3 - - to: plasmaReinforcedWindowDirectional - steps: - - material: MetalRod - amount: 1 - doAfter: 0.5 - - - node: uraniumWindowDirectional - entity: UraniumWindowDirectional - edges: - - to: start - completed: - - !type:SpawnPrototype - prototype: SheetUGlass1 - amount: 1 - - !type:DeleteEntity {} - steps: - - tool: Screwing - doAfter: 2 - - tool: Prying - doAfter: 3 - - tool: Screwing - doAfter: 2 - - tool: Anchoring - doAfter: 3 - - to: uraniumReinforcedWindowDirectional - steps: - - material: MetalRod - amount: 1 - doAfter: 0.5 - node: windowClockworkDirectional entity: WindowClockworkDirectional @@ -179,35 +118,6 @@ - tool: Anchoring doAfter: 3 - - node: windowReinforcedDirectional - entity: WindowReinforcedDirectional - edges: - - to: start - completed: - - !type:SpawnPrototype - prototype: SheetRGlass1 - amount: 1 - - !type:DeleteEntity {} - steps: - - tool: Screwing - doAfter: 1 - - tool: Prying - doAfter: 2 - - tool: Screwing - doAfter: 1 - - tool: Anchoring - doAfter: 2 - - to: plasmaReinforcedWindowDirectional - steps: - - material: Plasma - amount: 1 - doAfter: 0.5 - - to: uraniumReinforcedWindowDirectional - steps: - - material: Uranium - amount: 1 - doAfter: 0.5 - - node: plasmaReinforcedWindowDirectional entity: PlasmaReinforcedWindowDirectional edges: @@ -226,6 +136,24 @@ doAfter: 2 - tool: Anchoring doAfter: 3 + - node: uraniumWindowDirectional + entity: UraniumWindowDirectional + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetUGlass1 + amount: 1 + - !type:DeleteEntity {} + steps: + - tool: Screwing + doAfter: 2 + - tool: Prying + doAfter: 3 + - tool: Screwing + doAfter: 2 + - tool: Anchoring + doAfter: 3 - node: uraniumReinforcedWindowDirectional entity: UraniumReinforcedWindowDirectional @@ -244,4 +172,4 @@ - tool: Screwing doAfter: 2 - tool: Anchoring - doAfter: 3 + doAfter: 3 \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Construction/structures.yml b/Resources/Prototypes/Recipes/Construction/structures.yml index 71fdbeedaf..31e1264ab0 100644 --- a/Resources/Prototypes/Recipes/Construction/structures.yml +++ b/Resources/Prototypes/Recipes/Construction/structures.yml @@ -455,7 +455,7 @@ startNode: start targetNode: tintedWindow category: construction-category-structures - description: Not clear, but lasers still pass through. + description: Not clear but tough. canBuildInImpassable: true conditions: - !type:EmptyOrWindowValidInTile @@ -512,7 +512,7 @@ targetNode: plasmaWindow category: construction-category-structures canBuildInImpassable: true - description: Clear, with a purple tint. + description: Clear and even tougher, with a purple tint. conditions: - !type:EmptyOrWindowValidInTile - !type:NoWindowsInTile @@ -531,7 +531,7 @@ targetNode: reinforcedPlasmaWindow category: construction-category-structures canBuildInImpassable: true - description: Clear and even tougher, with a purple tint. + description: Fire resistant and even tougher, with a purple tint. conditions: - !type:EmptyOrWindowValidInTile - !type:NoWindowsInTile @@ -569,7 +569,7 @@ targetNode: plasmaWindowDiagonal category: construction-category-structures canBuildInImpassable: true - description: Clear, with a purple tint. + description: Clear and even tougher, with a purple tint. conditions: - !type:EmptyOrWindowValidInTile - !type:NoWindowsInTile @@ -587,7 +587,7 @@ targetNode: reinforcedPlasmaWindowDiagonal category: construction-category-structures canBuildInImpassable: true - description: Clear and even tougher, with a purple tint. + description: Fire resistant and even tougher, with a purple tint. conditions: - !type:EmptyOrWindowValidInTile - !type:NoWindowsInTile @@ -659,7 +659,7 @@ targetNode: plasmaWindowDirectional category: construction-category-structures canBuildInImpassable: true - description: Clear, with a purple tint. + description: Clear and even tougher, with a purple tint. conditions: - !type:EmptyOrWindowValidInTile - !type:NoWindowsInTile @@ -677,7 +677,7 @@ targetNode: plasmaReinforcedWindowDirectional category: construction-category-structures canBuildInImpassable: true - description: Clear and even tougher, with a purple tint. + description: Fire resistant and even tougher, with a purple tint. conditions: - !type:EmptyOrWindowValidInTile - !type:NoWindowsInTile @@ -695,7 +695,7 @@ targetNode: uraniumWindow category: construction-category-structures canBuildInImpassable: true - description: Clear, with added RadAbsorb to protect you from deadly radiation. + description: Clear and much tougher than regular glass, with added RadAbsorb to protect you from deadly radiation. conditions: - !type:EmptyOrWindowValidInTile - !type:NoWindowsInTile @@ -714,7 +714,7 @@ targetNode: reinforcedUraniumWindow category: construction-category-structures canBuildInImpassable: true - description: Clear and even tougher, with added RadAbsorb to protect you from deadly radiation. + description: Clear and much tougher than regular glass, with added RadAbsorb to protect you from deadly radiation. conditions: - !type:EmptyOrWindowValidInTile - !type:NoWindowsInTile @@ -733,7 +733,7 @@ targetNode: uraniumWindowDiagonal category: construction-category-structures canBuildInImpassable: true - description: Clear, with added RadAbsorb to protect you from deadly radiation. + description: Clear and much tougher than regular glass, with added RadAbsorb to protect you from deadly radiation. conditions: - !type:EmptyOrWindowValidInTile - !type:NoWindowsInTile @@ -751,7 +751,7 @@ targetNode: reinforcedUraniumWindowDiagonal category: construction-category-structures canBuildInImpassable: true - description: Clear and even tougher, with added RadAbsorb to protect you from deadly radiation. + description: Clear and much tougher than regular glass, with added RadAbsorb to protect you from deadly radiation. conditions: - !type:EmptyOrWindowValidInTile - !type:NoWindowsInTile @@ -1456,24 +1456,6 @@ # Same here. - 20kdc - !type:TileNotBlocked -- type: construction - name: emergency light - id: EmergencyLightFixture - graph: LightFixture - startNode: start - targetNode: emergencyLight - category: construction-category-structures - description: An emergency light. - icon: - sprite: Structures/Wallmounts/Lighting/emergency_light.rsi - state: base - objectType: Structure - placementMode: SnapgridCenter - canRotate: true - canBuildInImpassable: false - conditions: - - !type:TileNotBlocked - - type: construction name: ground light post id: LightGroundFixture @@ -1746,4 +1728,4 @@ sprite: Structures/Doors/secret_door.rsi state: closed conditions: - - !type:TileNotBlocked + - !type:TileNotBlocked \ No newline at end of file diff --git a/Resources/Textures/Structures/Windows/cracks.rsi/DamageOverlay_20.png b/Resources/Textures/Structures/Windows/cracks.rsi/DamageOverlay_12.png similarity index 100% rename from Resources/Textures/Structures/Windows/cracks.rsi/DamageOverlay_20.png rename to Resources/Textures/Structures/Windows/cracks.rsi/DamageOverlay_12.png diff --git a/Resources/Textures/Structures/Windows/cracks.rsi/DamageOverlay_5.png b/Resources/Textures/Structures/Windows/cracks.rsi/DamageOverlay_4.png similarity index 100% rename from Resources/Textures/Structures/Windows/cracks.rsi/DamageOverlay_5.png rename to Resources/Textures/Structures/Windows/cracks.rsi/DamageOverlay_4.png diff --git a/Resources/Textures/Structures/Windows/cracks.rsi/DamageOverlay_10.png b/Resources/Textures/Structures/Windows/cracks.rsi/DamageOverlay_8.png similarity index 100% rename from Resources/Textures/Structures/Windows/cracks.rsi/DamageOverlay_10.png rename to Resources/Textures/Structures/Windows/cracks.rsi/DamageOverlay_8.png diff --git a/Resources/Textures/Structures/Windows/cracks.rsi/meta.json b/Resources/Textures/Structures/Windows/cracks.rsi/meta.json index ca012e8fc5..9d0cc9a505 100644 --- a/Resources/Textures/Structures/Windows/cracks.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/cracks.rsi/meta.json @@ -7,8 +7,8 @@ "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at commit e06b82a7f4b2b09216fb28fd384c95a2e1dc50e5", "states": [ - {"name": "DamageOverlay_5", "directions": 1}, - {"name": "DamageOverlay_10", "directions": 1}, - {"name": "DamageOverlay_20", "directions": 1} + {"name": "DamageOverlay_4", "directions": 1}, + {"name": "DamageOverlay_8", "directions": 1}, + {"name": "DamageOverlay_12", "directions": 1} ] } diff --git a/Resources/Textures/Structures/Windows/cracks_diagonal.rsi/DamageOverlay_20.png b/Resources/Textures/Structures/Windows/cracks_diagonal.rsi/DamageOverlay_12.png similarity index 100% rename from Resources/Textures/Structures/Windows/cracks_diagonal.rsi/DamageOverlay_20.png rename to Resources/Textures/Structures/Windows/cracks_diagonal.rsi/DamageOverlay_12.png diff --git a/Resources/Textures/Structures/Windows/cracks_diagonal.rsi/DamageOverlay_5.png b/Resources/Textures/Structures/Windows/cracks_diagonal.rsi/DamageOverlay_4.png similarity index 100% rename from Resources/Textures/Structures/Windows/cracks_diagonal.rsi/DamageOverlay_5.png rename to Resources/Textures/Structures/Windows/cracks_diagonal.rsi/DamageOverlay_4.png diff --git a/Resources/Textures/Structures/Windows/cracks_diagonal.rsi/DamageOverlay_10.png b/Resources/Textures/Structures/Windows/cracks_diagonal.rsi/DamageOverlay_8.png similarity index 100% rename from Resources/Textures/Structures/Windows/cracks_diagonal.rsi/DamageOverlay_10.png rename to Resources/Textures/Structures/Windows/cracks_diagonal.rsi/DamageOverlay_8.png diff --git a/Resources/Textures/Structures/Windows/cracks_diagonal.rsi/meta.json b/Resources/Textures/Structures/Windows/cracks_diagonal.rsi/meta.json index ca012e8fc5..9d0cc9a505 100644 --- a/Resources/Textures/Structures/Windows/cracks_diagonal.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/cracks_diagonal.rsi/meta.json @@ -7,8 +7,8 @@ "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at commit e06b82a7f4b2b09216fb28fd384c95a2e1dc50e5", "states": [ - {"name": "DamageOverlay_5", "directions": 1}, - {"name": "DamageOverlay_10", "directions": 1}, - {"name": "DamageOverlay_20", "directions": 1} + {"name": "DamageOverlay_4", "directions": 1}, + {"name": "DamageOverlay_8", "directions": 1}, + {"name": "DamageOverlay_12", "directions": 1} ] } diff --git a/Resources/Textures/Structures/Windows/cracks_directional.rsi/DamageOverlay_20.png b/Resources/Textures/Structures/Windows/cracks_directional.rsi/DamageOverlay_12.png similarity index 100% rename from Resources/Textures/Structures/Windows/cracks_directional.rsi/DamageOverlay_20.png rename to Resources/Textures/Structures/Windows/cracks_directional.rsi/DamageOverlay_12.png diff --git a/Resources/Textures/Structures/Windows/cracks_directional.rsi/DamageOverlay_5.png b/Resources/Textures/Structures/Windows/cracks_directional.rsi/DamageOverlay_4.png similarity index 100% rename from Resources/Textures/Structures/Windows/cracks_directional.rsi/DamageOverlay_5.png rename to Resources/Textures/Structures/Windows/cracks_directional.rsi/DamageOverlay_4.png diff --git a/Resources/Textures/Structures/Windows/cracks_directional.rsi/DamageOverlay_10.png b/Resources/Textures/Structures/Windows/cracks_directional.rsi/DamageOverlay_8.png similarity index 100% rename from Resources/Textures/Structures/Windows/cracks_directional.rsi/DamageOverlay_10.png rename to Resources/Textures/Structures/Windows/cracks_directional.rsi/DamageOverlay_8.png diff --git a/Resources/Textures/Structures/Windows/cracks_directional.rsi/meta.json b/Resources/Textures/Structures/Windows/cracks_directional.rsi/meta.json index 9555aa5ab3..df077f67d2 100644 --- a/Resources/Textures/Structures/Windows/cracks_directional.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/cracks_directional.rsi/meta.json @@ -8,15 +8,15 @@ "copyright": "Adapted from https://github.com/space-wizards/space-station-14/ at commit f57e8ec6b9b4b72ef56c8146be0bc159ed2691ee, originally added by Zumorica, and modified for directional use by Darkie", "states": [ { - "name": "DamageOverlay_5", + "name": "DamageOverlay_4", "directions": 4 }, { - "name": "DamageOverlay_10", + "name": "DamageOverlay_8", "directions": 4 }, { - "name": "DamageOverlay_20", + "name": "DamageOverlay_12", "directions": 4 } ] From 6c7336b0a8330369f8a96bff752dda570e3ffb59 Mon Sep 17 00:00:00 2001 From: cohanna Date: Wed, 6 Nov 2024 22:01:10 -0700 Subject: [PATCH 11/28] oops reverted too much --- Resources/Prototypes/Entities/Structures/Windows/clockwork.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Structures/Windows/clockwork.yml b/Resources/Prototypes/Entities/Structures/Windows/clockwork.yml index 992dfcda1c..6abeae5760 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/clockwork.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/clockwork.yml @@ -86,6 +86,7 @@ - trigger: !type:DamageTrigger damage: 150 + behaviors: - !type:PlaySoundBehavior sound: collection: WindowShatter @@ -142,4 +143,4 @@ sprite: Structures/Windows/cracks_diagonal.rsi - type: Construction graph: WindowDiagonal - node: clockworkWindowDiagonal + node: clockworkWindowDiagonal \ No newline at end of file From 379fb4cb6aa35d0f2567a6c874e56a2b7b76ea87 Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Thu, 7 Nov 2024 11:25:16 +0100 Subject: [PATCH 12/28] AI can now speak once more. (#33196) Yippee --- Resources/Prototypes/Entities/Mobs/Player/silicon.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index be2b5a44f9..39750b470f 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -69,8 +69,6 @@ canShuttle: false title: comms-console-announcement-title-station-ai color: "#2ed2fd" - - type: Speech - speechVerb: Robotic - type: ShowJobIcons - type: entity @@ -395,6 +393,9 @@ drawFov: false - type: Examiner - type: InputMover + - type: Speech + speechVerb: Robotic + speechSounds: Borg - type: Tag tags: - HideContextMenu From fc0d85b4878a17baea8c31ebef5d6d446db35fa1 Mon Sep 17 00:00:00 2001 From: Spessmann <156740760+Spessmann@users.noreply.github.com> Date: Thu, 7 Nov 2024 14:01:35 -0800 Subject: [PATCH 13/28] Cog update (fixes) (#33202) fixed cog again --- Resources/Maps/cog.yml | 1707 +++++++++++++--------------------------- 1 file changed, 564 insertions(+), 1143 deletions(-) diff --git a/Resources/Maps/cog.yml b/Resources/Maps/cog.yml index 888b4e7e5e..58310e561c 100644 --- a/Resources/Maps/cog.yml +++ b/Resources/Maps/cog.yml @@ -145,15 +145,15 @@ entities: version: 6 -4,-3: ind: -4,-3 - tiles: AAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIAAAAAAAIAAAAAABIAAAAAADIAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIAAAAAAAIAAAAAADIAAAAAACIAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIAAAAAAAIAAAAAAAIAAAAAACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIAAAAAABIAAAAAADIAAAAAACIAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAA + tiles: AAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAADwAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIAAAAAAAIAAAAAABIAAAAAADIAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIAAAAAAAIAAAAAADIAAAAAACIAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIAAAAAAAIAAAAAAAIAAAAAACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIAAAAAABIAAAAAADIAAAAAACIAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAA version: 6 -4,-4: ind: -4,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAADwAAAAAAgQAAAAAAgQAAAAAAgQAAAAAADwAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAADwAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgAAAAAAAgAAAAAAAIQAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgAAAAAAADwAAAAAAgAAAAAAADwAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAACgQAAAAAADwAAAAAAHwAAAAAADwAAAAAADwAAAAAADwAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAYAAAAAACYAAAAAACgQAAAAAAgQAAAAAAIQAAAAAADwAAAAAAgAAAAAAADwAAAAAADwAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAYAAAAAAAgQAAAAAAYAAAAAAAHwAAAAAADwAAAAAAAAAAAAAADwAAAAAADwAAAAAAgAAAAAAADwAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAHwAAAAAAgQAAAAAAYAAAAAABHwAAAAAAHwAAAAACgAAAAAAAgAAAAAAAgAAAAAAAIQAAAAAAgAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAHwAAAAAAHwAAAAAAHwAAAAAKgQAAAAAADwAAAAAAAAAAAAAADwAAAAAADwAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAHwAAAAAADwAAAAAAIQAAAAAADwAAAAAADwAAAAAADwAAAAAAgAAAAAAADwAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAHwAAAAAADwAAAAAAgAAAAAAADwAAAAAAHwAAAAAAgAAAAAAADwAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAHwAAAAAADwAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAAADwAAAAAADwAAAAAADwAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAAADwAAAAAADwAAAAAADwAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAgAAAAAAAgAAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAgQAAAAAAgQAAAAAAAAAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAIQAAAAAADwAAAAAADwAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAA version: 6 -3,-4: ind: -3,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAABAAAAAAAgQAAAAAABAAAAAAABAAAAAAAIgAAAAAAgQAAAAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAABAAAAAAABAAAAAAAgQAAAAAAIgAAAAAAYAAAAAADgQAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAABAAAAAAABAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAADYAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgAAAAAAAgQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAADYAAAAAAAgQAAAAAAgQAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAAAgQAAAAAABAAAAAAAgQAAAAAABAAAAAAABAAAAAAAIgAAAAAAgQAAAAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAADwAAAAAAgQAAAAAAgQAAAAAABAAAAAAABAAAAAAAgQAAAAAAIgAAAAAAYAAAAAADgQAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAADwAAAAAAgQAAAAAABAAAAAAABAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAADYAAAAAADDwAAAAAADwAAAAAADwAAAAAADwAAAAAAAAAAAAAAAAAAAAAADwAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgAAAAAAAgQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAADYAAAAAAAgQAAAAAAgQAAAAAA version: 6 -2,-4: ind: -2,-4 @@ -455,10 +455,6 @@ entities: ind: -5,-2 tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAYAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAADYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAABYAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAADgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 - -5,-4: - ind: -5,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 -3,-5: ind: -3,-5 tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAA @@ -1906,8 +1902,6 @@ entities: 8675: -48,-44 8676: -51,-51 8677: -43,-54 - 8681: -61,-55 - 8682: -63,-56 8850: 62,-4 8851: 62,-1 8913: 48,-6 @@ -2844,14 +2838,6 @@ entities: 8671: -51,-44 8672: -48,-46 8673: -48,-46 - 8683: -62,-56 - 8684: -63,-55 - 8685: -62,-55 - 8686: -61,-56 - 8687: -61,-55 - 8688: -62,-54 - 8689: -63,-53 - 8690: -62,-53 8818: 39,-36 8819: 41,-36 8820: 43,-36 @@ -4151,19 +4137,6 @@ entities: 8612: 57,63 8613: 55,64 8645: -57,-34 - 8691: -63,-56 - 8692: -62,-56 - 8693: -61,-56 - 8694: -62,-55 - 8695: -62,-55 - 8696: -63,-54 - 8697: -63,-54 - 8698: -63,-53 - 8699: -63,-53 - 8700: -61,-54 - 8701: -61,-58 - 8702: -61,-59 - 8703: -61,-57 - node: cleanable: True zIndex: 1 @@ -9775,21 +9748,20 @@ entities: -14,-9: 0: 58620 -16,-12: - 2: 19524 + 2: 19660 -16,-13: - 1: 16592 - 2: 1024 + 1: 17026 -16,-11: 2: 3140 -15,-12: - 2: 61422 + 2: 61438 -15,-11: 2: 3918 + -15,-13: + 1: 4612 + 2: 60608 -15,-10: 0: 24584 - -15,-13: - 2: 59968 - 1: 5284 -14,-11: 2: 257 0: 17612 @@ -9802,48 +9774,36 @@ entities: 2: 273 -13,-13: 0: 61160 - -16,-15: - 1: 16 - 2: 12 - 0: 34944 - -17,-15: - 1: 2048 - 2: 17408 -16,-14: - 0: 28398 - -17,-14: - 0: 128 - 1: 32768 - 2: 68 - -15,-15: - 2: 42689 1: 2048 + -15,-15: + 2: 61440 -15,-14: - 1: 548 - 2: 57472 + 1: 40960 + 2: 2286 -14,-15: - 2: 57360 - 1: 256 + 2: 12288 -14,-14: - 0: 290 - 1: 4096 - 2: 10820 - -13,-15: - 2: 61440 + 2: 12288 + 1: 18432 -13,-14: - 2: 10180 - -12,-15: - 2: 61440 + 1: 640 + -13,-15: + 2: 24576 -12,-14: 0: 65024 - -11,-15: - 2: 61440 + 1: 8 + -12,-15: + 1: 4096 -11,-14: 0: 64256 -11,-16: 2: 58030 -11,-17: 2: 41646 + -11,-15: + 2: 2 + 1: 33920 -10,-16: 2: 58111 -10,-14: @@ -9853,7 +9813,7 @@ entities: -10,-15: 0: 61152 -9,-16: - 2: 2047 + 2: 767 -9,-14: 0: 4084 -9,-17: @@ -11671,8 +11631,6 @@ entities: -6,-17: 2: 1041 0: 14 - -17,-13: - 1: 4 -11,-18: 2: 41696 -10,-18: @@ -14021,11 +13979,6 @@ entities: - type: Transform pos: -17.5,-60.5 parent: 12 - - uid: 31026 - components: - - type: Transform - pos: -60.5,-53.5 - parent: 12 - proto: Airlock entities: - uid: 2309 @@ -16010,29 +15963,6 @@ entities: - type: Transform pos: -21.5,55.5 parent: 12 - - uid: 31049 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -60.5,-56.5 - parent: 12 - - type: DeviceLinkSink - invokeCounter: 1 - - type: DeviceLinkSource - linkedPorts: - 32119: - - DoorStatus: DoorBolt - - uid: 32119 - components: - - type: Transform - pos: -60.5,-58.5 - parent: 12 - - type: DeviceLinkSink - invokeCounter: 1 - - type: DeviceLinkSource - linkedPorts: - 31049: - - DoorStatus: DoorBolt - proto: AirlockHeadOfPersonnelLocked entities: - uid: 18846 @@ -16367,6 +16297,11 @@ entities: rot: -1.5707963267948966 rad pos: 38.5,-20.5 parent: 12 + - uid: 1613 + components: + - type: Transform + pos: -44.5,68.5 + parent: 12 - uid: 2358 components: - type: Transform @@ -16740,18 +16675,6 @@ entities: rot: 3.141592653589793 rad pos: -5.5,8.5 parent: 12 - - uid: 29024 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -44.5,68.5 - parent: 12 - - type: Door - secondsUntilStateChange: -5937.642 - state: Opening - - type: DeviceLinkSource - lastSignals: - DoorStatus: True - uid: 29076 components: - type: Transform @@ -19607,12 +19530,6 @@ entities: rot: 1.5707963267948966 rad pos: 34.5,-12.5 parent: 12 - - uid: 32163 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -63.5,-53.5 - parent: 12 - proto: APCElectronics entities: - uid: 10892 @@ -19737,197 +19654,190 @@ entities: parent: 12 - proto: AsteroidRock entities: - - uid: 10821 + - uid: 4769 components: - type: Transform - pos: -62.5,-49.5 + pos: -58.5,-51.5 parent: 12 - - uid: 31015 + - uid: 4976 components: - type: Transform - pos: -57.5,-54.5 + pos: -52.5,-52.5 parent: 12 - - uid: 31024 - components: - - type: Transform - pos: -62.5,-50.5 - parent: 12 - - uid: 31025 - components: - - type: Transform - pos: -56.5,-51.5 - parent: 12 - - uid: 31027 + - uid: 7157 components: - type: Transform pos: -59.5,-53.5 parent: 12 - - uid: 31031 + - uid: 10819 components: - type: Transform - pos: -59.5,-50.5 + pos: -61.5,-49.5 parent: 12 - - uid: 31032 + - uid: 10823 components: - type: Transform - pos: -60.5,-49.5 + pos: -61.5,-50.5 parent: 12 - - uid: 31033 + - uid: 17288 components: - type: Transform - pos: -62.5,-51.5 + pos: -48.5,-55.5 parent: 12 - - uid: 31035 - components: - - type: Transform - pos: -56.5,-55.5 - parent: 12 - - uid: 31036 - components: - - type: Transform - pos: -55.5,-54.5 - parent: 12 - - uid: 31037 - components: - - type: Transform - pos: -57.5,-56.5 - parent: 12 - - uid: 31039 - components: - - type: Transform - pos: -53.5,-53.5 - parent: 12 - - uid: 31043 - components: - - type: Transform - pos: -58.5,-55.5 - parent: 12 - - uid: 31047 - components: - - type: Transform - pos: -64.5,-55.5 - parent: 12 - - uid: 31055 - components: - - type: Transform - pos: -63.5,-52.5 - parent: 12 - - uid: 31065 - components: - - type: Transform - pos: -55.5,-56.5 - parent: 12 - - uid: 31159 - components: - - type: Transform - pos: -63.5,-51.5 - parent: 12 - - uid: 31160 - components: - - type: Transform - pos: -61.5,-51.5 - parent: 12 - - uid: 32122 - components: - - type: Transform - pos: -65.5,-53.5 - parent: 12 - - uid: 32123 - components: - - type: Transform - pos: -65.5,-52.5 - parent: 12 - - uid: 32124 - components: - - type: Transform - pos: -64.5,-51.5 - parent: 12 - - uid: 32126 - components: - - type: Transform - pos: -63.5,-49.5 - parent: 12 - - uid: 32137 - components: - - type: Transform - pos: -63.5,-57.5 - parent: 12 - - uid: 32139 - components: - - type: Transform - pos: -62.5,-58.5 - parent: 12 - - uid: 32140 - components: - - type: Transform - pos: -63.5,-56.5 - parent: 12 - - uid: 32141 - components: - - type: Transform - pos: -64.5,-56.5 - parent: 12 - - uid: 32168 - components: - - type: Transform - pos: -59.5,-49.5 - parent: 12 - - uid: 32171 - components: - - type: Transform - pos: -58.5,-58.5 - parent: 12 - - uid: 32185 - components: - - type: Transform - pos: -60.5,-48.5 - parent: 12 -- proto: AsteroidRockCoal - entities: - - uid: 31041 - components: - - type: Transform - pos: -55.5,-55.5 - parent: 12 - - uid: 31042 - components: - - type: Transform - pos: -53.5,-52.5 - parent: 12 - - uid: 32138 - components: - - type: Transform - pos: -62.5,-57.5 - parent: 12 -- proto: AsteroidRockQuartz - entities: - - uid: 31111 + - uid: 25452 components: - type: Transform pos: -60.5,-52.5 parent: 12 -- proto: AsteroidRockTin - entities: - - uid: 31022 + - uid: 25568 components: - type: Transform - pos: -56.5,-53.5 + pos: -56.5,-51.5 parent: 12 - - uid: 31107 + - uid: 25682 components: - type: Transform - pos: -64.5,-53.5 + pos: -59.5,-49.5 parent: 12 - - uid: 32125 + - uid: 25738 components: - type: Transform - pos: -64.5,-50.5 + pos: -58.5,-53.5 parent: 12 - - uid: 32182 + - uid: 26291 components: - type: Transform pos: -59.5,-51.5 parent: 12 + - uid: 26305 + components: + - type: Transform + pos: -41.5,-55.5 + parent: 12 + - uid: 26413 + components: + - type: Transform + pos: -41.5,-56.5 + parent: 12 + - uid: 29024 + components: + - type: Transform + pos: -60.5,-51.5 + parent: 12 + - uid: 29978 + components: + - type: Transform + pos: -59.5,-47.5 + parent: 12 + - uid: 30180 + components: + - type: Transform + pos: -60.5,-48.5 + parent: 12 + - uid: 30184 + components: + - type: Transform + pos: -62.5,-50.5 + parent: 12 + - uid: 30271 + components: + - type: Transform + pos: -51.5,-53.5 + parent: 12 + - uid: 30305 + components: + - type: Transform + pos: -50.5,-54.5 + parent: 12 + - uid: 30426 + components: + - type: Transform + pos: -51.5,-54.5 + parent: 12 + - uid: 30533 + components: + - type: Transform + pos: -46.5,-55.5 + parent: 12 + - uid: 30536 + components: + - type: Transform + pos: -49.5,-54.5 + parent: 12 + - uid: 30537 + components: + - type: Transform + pos: -49.5,-53.5 + parent: 12 + - uid: 30538 + components: + - type: Transform + pos: -47.5,-55.5 + parent: 12 + - uid: 31026 + components: + - type: Transform + pos: -50.5,-52.5 + parent: 12 + - uid: 31034 + components: + - type: Transform + pos: -57.5,-52.5 + parent: 12 + - uid: 31036 + components: + - type: Transform + pos: -61.5,-51.5 + parent: 12 + - uid: 31042 + components: + - type: Transform + pos: -60.5,-49.5 + parent: 12 +- proto: AsteroidRockCoal + entities: + - uid: 11027 + components: + - type: Transform + pos: -59.5,-52.5 + parent: 12 + - uid: 30341 + components: + - type: Transform + pos: -40.5,-57.5 + parent: 12 + - uid: 30457 + components: + - type: Transform + pos: -49.5,-55.5 + parent: 12 + - uid: 31038 + components: + - type: Transform + pos: -58.5,-50.5 + parent: 12 +- proto: AsteroidRockTin + entities: + - uid: 10822 + components: + - type: Transform + pos: -51.5,-52.5 + parent: 12 + - uid: 25823 + components: + - type: Transform + pos: -59.5,-50.5 + parent: 12 + - uid: 30342 + components: + - type: Transform + pos: -57.5,-53.5 + parent: 12 + - uid: 31030 + components: + - type: Transform + pos: -45.5,-55.5 + parent: 12 - proto: AtmosDeviceFanDirectional entities: - uid: 193 @@ -20560,6 +20470,11 @@ entities: - type: Transform pos: 85.5,-30.5 parent: 12 + - uid: 17289 + components: + - type: Transform + pos: -50.5,-53.5 + parent: 12 - uid: 26206 components: - type: Transform @@ -20570,6 +20485,41 @@ entities: - type: Transform pos: 55.5,19.5 parent: 12 + - uid: 26304 + components: + - type: Transform + pos: -48.5,-54.5 + parent: 12 + - uid: 26306 + components: + - type: Transform + pos: -52.5,-53.5 + parent: 12 + - uid: 26307 + components: + - type: Transform + pos: -53.5,-52.5 + parent: 12 + - uid: 26610 + components: + - type: Transform + pos: -44.5,-55.5 + parent: 12 + - uid: 26758 + components: + - type: Transform + pos: -40.5,-56.5 + parent: 12 + - uid: 26866 + components: + - type: Transform + pos: -58.5,-52.5 + parent: 12 + - uid: 27910 + components: + - type: Transform + pos: -60.5,-53.5 + parent: 12 - uid: 28746 components: - type: Transform @@ -20590,100 +20540,60 @@ entities: - type: Transform pos: 12.5,6.5 parent: 12 - - uid: 32194 + - uid: 29082 components: - type: Transform - pos: -65.5,-51.5 + pos: -62.5,-49.5 parent: 12 - - uid: 32195 + - uid: 30185 components: - type: Transform - pos: -61.5,-48.5 + pos: -56.5,-52.5 parent: 12 - - uid: 32196 - components: - - type: Transform - pos: -63.5,-50.5 - parent: 12 - - uid: 32197 - components: - - type: Transform - pos: -64.5,-52.5 - parent: 12 - - uid: 32198 + - uid: 30196 components: - type: Transform pos: -60.5,-50.5 parent: 12 - - uid: 32199 - components: - - type: Transform - pos: -61.5,-50.5 - parent: 12 - - uid: 32200 - components: - - type: Transform - pos: -59.5,-48.5 - parent: 12 - - uid: 32201 - components: - - type: Transform - pos: -58.5,-50.5 - parent: 12 - - uid: 32202 - components: - - type: Transform - pos: -57.5,-49.5 - parent: 12 - - uid: 32203 + - uid: 30198 components: - type: Transform pos: -57.5,-51.5 parent: 12 - - uid: 32204 + - uid: 30272 components: - type: Transform - pos: -56.5,-50.5 + pos: -61.5,-48.5 parent: 12 - - uid: 32205 + - uid: 30279 components: - type: Transform - pos: -58.5,-53.5 + pos: -59.5,-48.5 parent: 12 - - uid: 32206 + - uid: 30298 components: - type: Transform - pos: -58.5,-54.5 + pos: -62.5,-51.5 parent: 12 - - uid: 32207 + - uid: 30343 components: - type: Transform - pos: -57.5,-55.5 + pos: -40.5,-58.5 parent: 12 - - uid: 32208 + - uid: 30454 components: - type: Transform - pos: -56.5,-57.5 + pos: -47.5,-56.5 parent: 12 - - uid: 32209 + - uid: 30489 components: - type: Transform - pos: -55.5,-57.5 + pos: -58.5,-49.5 parent: 12 - - uid: 32210 + - uid: 30490 components: - type: Transform - pos: -55.5,-52.5 - parent: 12 - - uid: 32211 - components: - - type: Transform - pos: -63.5,-58.5 - parent: 12 - - uid: 32212 - components: - - type: Transform - pos: -64.5,-57.5 + pos: -41.5,-57.5 parent: 12 - proto: AtmosFixFreezerMarker entities: @@ -20999,11 +20909,6 @@ entities: - type: Transform pos: 2.5,70.5 parent: 12 - - uid: 10819 - components: - - type: Transform - pos: -61.5,-57.5 - parent: 12 - uid: 23721 components: - type: Transform @@ -21030,11 +20935,6 @@ entities: - type: Transform pos: 41.5,-19.5 parent: 12 - - uid: 32187 - components: - - type: Transform - pos: -63.5,-54.5 - parent: 12 - proto: BarSignOfficerBeersky entities: - uid: 14512 @@ -21590,18 +21490,6 @@ entities: - type: Transform pos: -20.5,47.5 parent: 12 -- proto: Bible - entities: - - uid: 13308 - components: - - type: Transform - pos: 56.419914,38.685394 - parent: 12 - - uid: 13322 - components: - - type: Transform - pos: 43.41042,29.810503 - parent: 12 - proto: Biogenerator entities: - uid: 107 @@ -40881,46 +40769,11 @@ entities: - type: Transform pos: 35.5,-32.5 parent: 12 - - uid: 25568 - components: - - type: Transform - pos: -60.5,-55.5 - parent: 12 - - uid: 25581 - components: - - type: Transform - pos: -60.5,-56.5 - parent: 12 - - uid: 25598 - components: - - type: Transform - pos: -60.5,-57.5 - parent: 12 - uid: 25610 components: - type: Transform pos: 50.5,-0.5 parent: 12 - - uid: 25682 - components: - - type: Transform - pos: -60.5,-58.5 - parent: 12 - - uid: 25738 - components: - - type: Transform - pos: -60.5,-59.5 - parent: 12 - - uid: 25822 - components: - - type: Transform - pos: -61.5,-59.5 - parent: 12 - - uid: 25823 - components: - - type: Transform - pos: -59.5,-59.5 - parent: 12 - uid: 26097 components: - type: Transform @@ -41761,6 +41614,11 @@ entities: - type: Transform pos: -28.5,-0.5 parent: 12 + - uid: 27665 + components: + - type: Transform + pos: -50.5,-46.5 + parent: 12 - uid: 27712 components: - type: Transform @@ -44691,31 +44549,6 @@ entities: - type: Transform pos: 49.5,54.5 parent: 12 - - uid: 32128 - components: - - type: Transform - pos: -62.5,-53.5 - parent: 12 - - uid: 32129 - components: - - type: Transform - pos: -61.5,-53.5 - parent: 12 - - uid: 32130 - components: - - type: Transform - pos: -61.5,-54.5 - parent: 12 - - uid: 32131 - components: - - type: Transform - pos: -61.5,-55.5 - parent: 12 - - uid: 32213 - components: - - type: Transform - pos: -63.5,-53.5 - parent: 12 - uid: 32230 components: - type: Transform @@ -44771,12 +44604,6 @@ entities: - type: Transform pos: 43.47266,63.509254 parent: 12 - - uid: 31067 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -50.484467,-46.507282 - parent: 12 - uid: 31288 components: - type: Transform @@ -45185,6 +45012,11 @@ entities: - type: Transform pos: -43.5,-13.5 parent: 12 + - uid: 1764 + components: + - type: Transform + pos: -56.5,-53.5 + parent: 12 - uid: 1835 components: - type: Transform @@ -46070,11 +45902,6 @@ entities: - type: Transform pos: 42.5,-0.5 parent: 12 - - uid: 4976 - components: - - type: Transform - pos: -57.5,-57.5 - parent: 12 - uid: 4994 components: - type: Transform @@ -47670,6 +47497,11 @@ entities: - type: Transform pos: 51.5,-6.5 parent: 12 + - uid: 9631 + components: + - type: Transform + pos: -57.5,-54.5 + parent: 12 - uid: 9636 components: - type: Transform @@ -52575,6 +52407,11 @@ entities: - type: Transform pos: 30.5,14.5 parent: 12 + - uid: 25598 + components: + - type: Transform + pos: -56.5,-54.5 + parent: 12 - uid: 25613 components: - type: Transform @@ -56220,26 +56057,11 @@ entities: - type: Transform pos: -54.5,-50.5 parent: 12 - - uid: 31013 - components: - - type: Transform - pos: -58.5,-52.5 - parent: 12 - uid: 31054 components: - type: Transform pos: 30.5,11.5 parent: 12 - - uid: 31056 - components: - - type: Transform - pos: -57.5,-52.5 - parent: 12 - - uid: 31057 - components: - - type: Transform - pos: -56.5,-54.5 - parent: 12 - uid: 31058 components: - type: Transform @@ -56275,16 +56097,6 @@ entities: - type: Transform pos: -58.5,-43.5 parent: 12 - - uid: 31730 - components: - - type: Transform - pos: -56.5,-56.5 - parent: 12 - - uid: 31731 - components: - - type: Transform - pos: -58.5,-56.5 - parent: 12 - uid: 31775 components: - type: Transform @@ -56410,96 +56222,6 @@ entities: - type: Transform pos: 40.5,-10.5 parent: 12 - - uid: 32152 - components: - - type: Transform - pos: -65.5,-57.5 - parent: 12 - - uid: 32153 - components: - - type: Transform - pos: -65.5,-56.5 - parent: 12 - - uid: 32154 - components: - - type: Transform - pos: -65.5,-55.5 - parent: 12 - - uid: 32155 - components: - - type: Transform - pos: -65.5,-54.5 - parent: 12 - - uid: 32156 - components: - - type: Transform - pos: -64.5,-54.5 - parent: 12 - - uid: 32157 - components: - - type: Transform - pos: -63.5,-54.5 - parent: 12 - - uid: 32158 - components: - - type: Transform - pos: -62.5,-54.5 - parent: 12 - - uid: 32159 - components: - - type: Transform - pos: -62.5,-55.5 - parent: 12 - - uid: 32169 - components: - - type: Transform - pos: -58.5,-56.5 - parent: 12 - - uid: 32170 - components: - - type: Transform - pos: -58.5,-57.5 - parent: 12 - - uid: 32172 - components: - - type: Transform - pos: -57.5,-58.5 - parent: 12 - - uid: 32175 - components: - - type: Transform - pos: -56.5,-58.5 - parent: 12 - - uid: 32176 - components: - - type: Transform - pos: -59.5,-57.5 - parent: 12 - - uid: 32177 - components: - - type: Transform - pos: -60.5,-57.5 - parent: 12 - - uid: 32178 - components: - - type: Transform - pos: -60.5,-56.5 - parent: 12 - - uid: 32179 - components: - - type: Transform - pos: -60.5,-55.5 - parent: 12 - - uid: 32180 - components: - - type: Transform - pos: -61.5,-55.5 - parent: 12 - - uid: 32181 - components: - - type: Transform - pos: -55.5,-58.5 - parent: 12 - proto: CableHVStack entities: - uid: 353 @@ -66935,11 +66657,6 @@ entities: - type: Transform pos: -33.5,-57.5 parent: 12 - - uid: 31023 - components: - - type: Transform - pos: -61.5,-53.5 - parent: 12 - uid: 31295 components: - type: Transform @@ -67120,31 +66837,6 @@ entities: - type: Transform pos: 49.5,54.5 parent: 12 - - uid: 32160 - components: - - type: Transform - pos: -62.5,-55.5 - parent: 12 - - uid: 32161 - components: - - type: Transform - pos: -61.5,-55.5 - parent: 12 - - uid: 32162 - components: - - type: Transform - pos: -61.5,-54.5 - parent: 12 - - uid: 32165 - components: - - type: Transform - pos: -62.5,-53.5 - parent: 12 - - uid: 32166 - components: - - type: Transform - pos: -63.5,-53.5 - parent: 12 - proto: CableMVStack entities: - uid: 5999 @@ -67274,7 +66966,7 @@ entities: - uid: 13090 components: - type: Transform - pos: 56.215126,38.011414 + pos: 56.275406,37.942432 parent: 12 - uid: 13095 components: @@ -67294,7 +66986,7 @@ entities: - uid: 13252 components: - type: Transform - pos: 56.166515,36.49058 + pos: 56.26499,37.33827 parent: 12 - uid: 13254 components: @@ -71868,6 +71560,11 @@ entities: rot: -1.5707963267948966 rad pos: 4.5,31.5 parent: 12 + - uid: 10820 + components: + - type: Transform + pos: -57.5,-47.5 + parent: 12 - uid: 10835 components: - type: Transform @@ -74072,12 +73769,22 @@ entities: - type: Transform pos: -26.5,23.5 parent: 12 + - uid: 25822 + components: + - type: Transform + pos: -55.5,-50.5 + parent: 12 - uid: 26236 components: - type: Transform rot: 3.141592653589793 rad pos: -20.5,59.5 parent: 12 + - uid: 26379 + components: + - type: Transform + pos: -50.5,-46.5 + parent: 12 - uid: 26414 components: - type: Transform @@ -74255,11 +73962,6 @@ entities: - type: Transform pos: -40.5,-52.5 parent: 12 - - uid: 27665 - components: - - type: Transform - pos: -41.5,-52.5 - parent: 12 - uid: 27666 components: - type: Transform @@ -75130,12 +74832,6 @@ entities: rot: 1.5707963267948966 rad pos: -34.5,-66.5 parent: 12 - - uid: 29082 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -34.5,-62.5 - parent: 12 - uid: 29085 components: - type: Transform @@ -75618,6 +75314,11 @@ entities: - type: Transform pos: -43.5,68.5 parent: 12 + - uid: 30301 + components: + - type: Transform + pos: -57.5,-48.5 + parent: 12 - uid: 30473 components: - type: Transform @@ -75928,6 +75629,36 @@ entities: - type: Transform pos: 3.5,-50.5 parent: 12 + - uid: 31024 + components: + - type: Transform + pos: -57.5,-45.5 + parent: 12 + - uid: 31031 + components: + - type: Transform + pos: -57.5,-54.5 + parent: 12 + - uid: 31032 + components: + - type: Transform + pos: -55.5,-49.5 + parent: 12 + - uid: 31035 + components: + - type: Transform + pos: -57.5,-44.5 + parent: 12 + - uid: 31039 + components: + - type: Transform + pos: -55.5,-51.5 + parent: 12 + - uid: 31041 + components: + - type: Transform + pos: -57.5,-43.5 + parent: 12 - uid: 31270 components: - type: Transform @@ -75964,31 +75695,6 @@ entities: rot: 1.5707963267948966 rad pos: 35.5,-15.5 parent: 12 - - uid: 32133 - components: - - type: Transform - pos: -61.5,-55.5 - parent: 12 - - uid: 32134 - components: - - type: Transform - pos: -61.5,-59.5 - parent: 12 - - uid: 32135 - components: - - type: Transform - pos: -60.5,-59.5 - parent: 12 - - uid: 32136 - components: - - type: Transform - pos: -59.5,-59.5 - parent: 12 - - uid: 32174 - components: - - type: Transform - pos: -62.5,-55.5 - parent: 12 - proto: Cautery entities: - uid: 9752 @@ -80052,13 +79758,6 @@ entities: - type: Transform pos: -21.667349,-7.343448 parent: 12 -- proto: ClothingHeadHelmetEVA - entities: - - uid: 32167 - components: - - type: Transform - pos: -61.5426,-52.550335 - parent: 12 - proto: ClothingHeadHelmetRiot entities: - uid: 20866 @@ -80244,7 +79943,8 @@ entities: - uid: 32127 components: - type: Transform - pos: -63.43215,-50.381607 + rot: -6.283185307179586 rad + pos: -60.515457,-50.51032 parent: 12 - proto: ClothingNeckCloakTrans entities: @@ -80479,13 +80179,6 @@ entities: - type: Transform pos: -11.945792,60.527626 parent: 12 -- proto: ClothingOuterHardsuitEVA - entities: - - uid: 32142 - components: - - type: Transform - pos: -62.521767,-52.550335 - parent: 12 - proto: ClothingOuterHoodieBlack entities: - uid: 25982 @@ -95648,13 +95341,6 @@ entities: - type: Transform pos: -33.231888,44.587296 parent: 12 -- proto: DrinkCogChampBase - entities: - - uid: 31114 - components: - - type: Transform - pos: -57.4781,-55.502342 - parent: 12 - proto: DrinkColaCan entities: - uid: 13334 @@ -96047,7 +95733,12 @@ entities: - uid: 13325 components: - type: Transform - pos: 44.5166,29.691267 + pos: 44.358738,29.577848 + parent: 12 + - uid: 26293 + components: + - type: Transform + pos: 44.139988,29.75493 parent: 12 - proto: DrinkTeaGlass entities: @@ -97173,10 +96864,10 @@ entities: parent: 12 - proto: EpinephrineChemistryBottle entities: - - uid: 17614 + - uid: 30546 components: - type: Transform - pos: -52.83247,28.80966 + pos: -52.860172,28.779083 parent: 12 - proto: ExosuitFabricator entities: @@ -102844,11 +102535,6 @@ entities: - type: Transform pos: -34.115353,-56.58399 parent: 12 - - uid: 32189 - components: - - type: Transform - pos: -60.632877,-54.815796 - parent: 12 - proto: FoodFrozenSnowcone entities: - uid: 22491 @@ -102970,6 +102656,13 @@ entities: - type: Transform pos: -30.5,-58.5 parent: 12 +- proto: FoodPizzaUraniumSlice + entities: + - uid: 30340 + components: + - type: Transform + pos: -40.483036,-56.420677 + parent: 12 - proto: FoodPlate entities: - uid: 15048 @@ -103108,11 +102801,6 @@ entities: - type: Transform pos: -29.443712,-54.018364 parent: 12 - - uid: 32191 - components: - - type: Transform - pos: -61.584267,-54.808846 - parent: 12 - proto: FoodPotato entities: - uid: 31464 @@ -103233,11 +102921,6 @@ entities: - type: Transform pos: -28.587122,-59.26843 parent: 12 - - uid: 32192 - components: - - type: Transform - pos: -61.132877,-54.03053 - parent: 12 - proto: Football entities: - uid: 22487 @@ -103311,6 +102994,8 @@ entities: rot: -1.5707963267948966 rad pos: -12.5,-56.5 parent: 12 + - type: AtmosPipeColor + color: '#03FCD3FF' - uid: 18269 components: - type: Transform @@ -103858,6 +103543,8 @@ entities: rot: 3.141592653589793 rad pos: -13.5,-56.5 parent: 12 + - type: AtmosPipeColor + color: '#03FCD3FF' - uid: 2812 components: - type: Transform @@ -106644,6 +106331,8 @@ entities: - type: Transform pos: -11.5,-55.5 parent: 12 + - type: AtmosPipeColor + color: '#03FCD3FF' - uid: 3505 components: - type: Transform @@ -108426,6 +108115,8 @@ entities: rot: -1.5707963267948966 rad pos: -12.5,-55.5 parent: 12 + - type: AtmosPipeColor + color: '#03FCD3FF' - uid: 2814 components: - type: Transform @@ -129868,12 +129559,16 @@ entities: rot: 1.5707963267948966 rad pos: -13.5,-55.5 parent: 12 + - type: AtmosPipeColor + color: '#03FCD3FF' - uid: 2810 components: - type: Transform rot: 3.141592653589793 rad pos: -11.5,-56.5 parent: 12 + - type: AtmosPipeColor + color: '#03FCD3FF' - uid: 2811 components: - type: Transform @@ -133174,7 +132869,7 @@ entities: pos: -10.5,-55.5 parent: 12 - type: AtmosPipeColor - color: '#0055CCFF' + color: '#03FCD3FF' - uid: 4092 components: - type: MetaData @@ -133297,6 +132992,8 @@ entities: targetTemperature: 100 - type: ApcPowerReceiver powerDisabled: False + - type: AtmosPipeColor + color: '#03FCD3FF' - uid: 2960 components: - type: Transform @@ -137325,12 +137022,6 @@ entities: - type: Transform pos: -33.5,-55.5 parent: 12 - - uid: 31113 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -64.5,-54.5 - parent: 12 - uid: 31439 components: - type: Transform @@ -138275,18 +137966,6 @@ entities: - type: Transform pos: 11.5,3.5 parent: 12 - - uid: 1613 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -39.5,63.5 - parent: 12 - - uid: 1764 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -38.5,62.5 - parent: 12 - uid: 1885 components: - type: Transform @@ -141765,6 +141444,11 @@ entities: - type: Transform pos: -54.5,75.5 parent: 12 + - uid: 13322 + components: + - type: Transform + pos: -57.5,-56.5 + parent: 12 - uid: 13991 components: - type: Transform @@ -143096,6 +142780,11 @@ entities: - type: Transform pos: -59.5,35.5 parent: 12 + - uid: 17614 + components: + - type: Transform + pos: -55.5,-56.5 + parent: 12 - uid: 17811 components: - type: Transform @@ -143125,11 +142814,6 @@ entities: rot: 1.5707963267948966 rad pos: -44.5,48.5 parent: 12 - - uid: 18315 - components: - - type: Transform - pos: -61.5,-57.5 - parent: 12 - uid: 18561 components: - type: Transform @@ -143744,12 +143428,6 @@ entities: - type: Transform pos: -26.5,74.5 parent: 12 - - uid: 25452 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -39.5,62.5 - parent: 12 - uid: 25489 components: - type: Transform @@ -144105,76 +143783,16 @@ entities: - type: Transform pos: -22.5,3.5 parent: 12 - - uid: 26291 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -35.5,70.5 - parent: 12 - - uid: 26293 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -33.5,70.5 - parent: 12 - - uid: 26298 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -36.5,70.5 - parent: 12 - uid: 26303 components: - type: Transform pos: -25.5,62.5 parent: 12 - - uid: 26304 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -32.5,70.5 - parent: 12 - - uid: 26305 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -31.5,70.5 - parent: 12 - - uid: 26306 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -37.5,70.5 - parent: 12 - - uid: 26307 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -39.5,69.5 - parent: 12 - uid: 26322 components: - type: Transform pos: -0.5,-31.5 parent: 12 - - uid: 26377 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -39.5,65.5 - parent: 12 - - uid: 26378 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -39.5,66.5 - parent: 12 - - uid: 26379 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -39.5,68.5 - parent: 12 - uid: 26396 components: - type: Transform @@ -144195,12 +143813,6 @@ entities: - type: Transform pos: 24.5,90.5 parent: 12 - - uid: 26413 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -39.5,67.5 - parent: 12 - uid: 26420 components: - type: Transform @@ -144258,12 +143870,6 @@ entities: - type: Transform pos: 14.5,-13.5 parent: 12 - - uid: 26610 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -39.5,70.5 - parent: 12 - uid: 26620 components: - type: Transform @@ -144321,18 +143927,6 @@ entities: - type: Transform pos: 29.5,-29.5 parent: 12 - - uid: 26758 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -38.5,70.5 - parent: 12 - - uid: 26866 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -39.5,64.5 - parent: 12 - uid: 26945 components: - type: Transform @@ -144538,12 +144132,6 @@ entities: rot: 1.5707963267948966 rad pos: -37.5,-70.5 parent: 12 - - uid: 27910 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -34.5,70.5 - parent: 12 - uid: 27915 components: - type: Transform @@ -145100,11 +144688,6 @@ entities: rot: -1.5707963267948966 rad pos: -25.5,-40.5 parent: 12 - - uid: 29978 - components: - - type: Transform - pos: -59.5,-57.5 - parent: 12 - uid: 29998 components: - type: Transform @@ -145720,6 +145303,11 @@ entities: rot: 3.141592653589793 rad pos: -2.5,76.5 parent: 12 + - uid: 30491 + components: + - type: Transform + pos: -49.5,-56.5 + parent: 12 - uid: 30509 components: - type: Transform @@ -145760,6 +145348,16 @@ entities: - type: Transform pos: -28.5,-60.5 parent: 12 + - uid: 30547 + components: + - type: Transform + pos: -39.5,66.5 + parent: 12 + - uid: 30549 + components: + - type: Transform + pos: -38.5,70.5 + parent: 12 - uid: 30555 components: - type: Transform @@ -145790,17 +145388,62 @@ entities: - type: Transform pos: -29.5,-52.5 parent: 12 + - uid: 30572 + components: + - type: Transform + pos: -39.5,67.5 + parent: 12 - uid: 30580 components: - type: Transform rot: 3.141592653589793 rad pos: -27.5,-56.5 parent: 12 + - uid: 30582 + components: + - type: Transform + pos: -35.5,70.5 + parent: 12 - uid: 30584 components: - type: Transform pos: -29.5,-60.5 parent: 12 + - uid: 30834 + components: + - type: Transform + pos: -37.5,70.5 + parent: 12 + - uid: 30875 + components: + - type: Transform + pos: -34.5,70.5 + parent: 12 + - uid: 30965 + components: + - type: Transform + pos: -39.5,70.5 + parent: 12 + - uid: 30966 + components: + - type: Transform + pos: -38.5,62.5 + parent: 12 + - uid: 30967 + components: + - type: Transform + pos: -33.5,70.5 + parent: 12 + - uid: 30968 + components: + - type: Transform + pos: -39.5,69.5 + parent: 12 + - uid: 30969 + components: + - type: Transform + pos: -39.5,65.5 + parent: 12 - uid: 30971 components: - type: Transform @@ -145831,77 +145474,51 @@ entities: - type: Transform pos: -54.5,-46.5 parent: 12 + - uid: 31000 + components: + - type: Transform + pos: -39.5,64.5 + parent: 12 + - uid: 31001 + components: + - type: Transform + pos: -39.5,62.5 + parent: 12 + - uid: 31002 + components: + - type: Transform + pos: -39.5,63.5 + parent: 12 + - uid: 31008 + components: + - type: Transform + pos: -31.5,70.5 + parent: 12 + - uid: 31013 + components: + - type: Transform + pos: -32.5,70.5 + parent: 12 + - uid: 31015 + components: + - type: Transform + pos: -39.5,68.5 + parent: 12 + - uid: 31016 + components: + - type: Transform + pos: -36.5,70.5 + parent: 12 + - uid: 31021 + components: + - type: Transform + pos: -61.5,-46.5 + parent: 12 - uid: 31029 components: - type: Transform pos: -26.5,-58.5 parent: 12 - - uid: 31076 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -40.5,-56.5 - parent: 12 - - uid: 31077 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -41.5,-56.5 - parent: 12 - - uid: 31078 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -42.5,-56.5 - parent: 12 - - uid: 31079 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -43.5,-56.5 - parent: 12 - - uid: 31080 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -44.5,-56.5 - parent: 12 - - uid: 31081 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -45.5,-56.5 - parent: 12 - - uid: 31082 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -46.5,-56.5 - parent: 12 - - uid: 31083 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -50.5,-56.5 - parent: 12 - - uid: 31084 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -51.5,-53.5 - parent: 12 - - uid: 31085 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -61.5,-46.5 - parent: 12 - - uid: 31086 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -61.5,-45.5 - parent: 12 - uid: 31087 components: - type: Transform @@ -145956,16 +145573,6 @@ entities: rot: 3.141592653589793 rad pos: -56.5,-41.5 parent: 12 - - uid: 31101 - components: - - type: Transform - pos: -53.5,-56.5 - parent: 12 - - uid: 31102 - components: - - type: Transform - pos: -49.5,-56.5 - parent: 12 - uid: 31163 components: - type: Transform @@ -146086,11 +145693,6 @@ entities: - type: Transform pos: 41.5,-18.5 parent: 12 - - uid: 32121 - components: - - type: Transform - pos: -63.5,-54.5 - parent: 12 - proto: GrilleBroken entities: - uid: 3719 @@ -146113,6 +145715,11 @@ entities: - type: Transform pos: -1.5,15.5 parent: 12 + - uid: 11397 + components: + - type: Transform + pos: -54.5,-56.5 + parent: 12 - uid: 12027 components: - type: Transform @@ -146123,11 +145730,26 @@ entities: - type: Transform pos: 48.5,-2.5 parent: 12 + - uid: 18315 + components: + - type: Transform + pos: -42.5,-59.5 + parent: 12 + - uid: 23167 + components: + - type: Transform + pos: -56.5,-56.5 + parent: 12 - uid: 28921 components: - type: Transform pos: 32.5,10.5 parent: 12 + - uid: 29064 + components: + - type: Transform + pos: -58.5,-56.5 + parent: 12 - uid: 30492 components: - type: Transform @@ -146153,51 +145775,25 @@ entities: - type: Transform pos: -29.5,-55.5 parent: 12 - - uid: 31096 + - uid: 31022 components: - type: Transform - rot: 3.141592653589793 rad pos: -61.5,-47.5 parent: 12 - - uid: 31097 + - uid: 31023 components: - type: Transform - pos: -61.5,-49.5 + pos: -59.5,-56.5 parent: 12 - - uid: 31098 + - uid: 31028 components: - type: Transform - pos: -54.5,-56.5 + pos: -50.5,-56.5 parent: 12 - - uid: 31099 + - uid: 31033 components: - type: Transform - pos: -53.5,-55.5 - parent: 12 - - uid: 31100 - components: - - type: Transform - pos: -52.5,-56.5 - parent: 12 - - uid: 31103 - components: - - type: Transform - pos: -47.5,-56.5 - parent: 12 - - uid: 31104 - components: - - type: Transform - pos: -51.5,-56.5 - parent: 12 - - uid: 31105 - components: - - type: Transform - pos: -48.5,-56.5 - parent: 12 - - uid: 31106 - components: - - type: Transform - pos: -52.5,-53.5 + pos: -61.5,-45.5 parent: 12 - proto: GrilleDiagonal entities: @@ -149144,11 +148740,6 @@ entities: - type: Transform pos: 53.5,25.5 parent: 12 - - uid: 29064 - components: - - type: Transform - pos: -62.5,-54.5 - parent: 12 - proto: MagazinePistolSubMachineGunTopMounted entities: - uid: 27841 @@ -149752,11 +149343,6 @@ entities: parent: 12 - proto: Mattress entities: - - uid: 29008 - components: - - type: Transform - pos: -61.5,-52.5 - parent: 12 - uid: 29146 components: - type: Transform @@ -150011,7 +149597,7 @@ entities: - uid: 32188 components: - type: Transform - pos: -63.506554,-50.71072 + pos: -50.514328,-53.502277 parent: 12 - proto: Mirror entities: @@ -151530,7 +151116,7 @@ entities: - uid: 13335 components: - type: Transform - pos: 56.52551,36.441574 + pos: 56.98374,36.64035 parent: 12 - uid: 13622 components: @@ -152095,14 +151681,6 @@ entities: rot: -12.566370614359172 rad pos: -11.731569,-12.627775 parent: 12 -- proto: PlushieRatvar - entities: - - uid: 11397 - components: - - type: Transform - rot: -62.83185307179591 rad - pos: -64.51839,-52.561867 - parent: 12 - proto: PlushieSharkBlue entities: - uid: 4060 @@ -152213,14 +151791,6 @@ entities: - type: Transform pos: 3.5,-47.5 parent: 12 - - uid: 32132 - components: - - type: Transform - anchored: True - pos: -61.5,-55.5 - parent: 12 - - type: Physics - bodyType: Static - proto: PortableGeneratorJrPacmanMachineCircuitboard entities: - uid: 5347 @@ -152372,18 +151942,6 @@ entities: - type: Transform pos: -3.5,-64.5 parent: 12 - - uid: 32145 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -59.5,-55.5 - parent: 12 - - uid: 32146 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -59.5,-58.5 - parent: 12 - proto: PosterContrabandAtmosiaDeclarationIndependence entities: - uid: 23 @@ -155084,18 +154642,6 @@ entities: rot: -1.5707963267948966 rad pos: 22.5,65.5 parent: 12 - - uid: 17288 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -49.5,20.5 - parent: 12 - - uid: 17289 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -53.5,20.5 - parent: 12 - uid: 17333 components: - type: Transform @@ -155454,6 +155000,23 @@ entities: rot: -1.5707963267948966 rad pos: -4.5,49.5 parent: 12 + - uid: 26298 + components: + - type: Transform + pos: 45.5,-44.5 + parent: 12 + - uid: 26377 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -55.5,-49.5 + parent: 12 + - uid: 26378 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -23.5,-66.5 + parent: 12 - uid: 26408 components: - type: Transform @@ -155547,6 +155110,18 @@ entities: rot: -1.5707963267948966 rad pos: 22.5,-7.5 parent: 12 + - uid: 28825 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -56.5,47.5 + parent: 12 + - uid: 29008 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 32.5,69.5 + parent: 12 - uid: 29077 components: - type: Transform @@ -155579,6 +155154,11 @@ entities: rot: 3.141592653589793 rad pos: 56.5,60.5 parent: 12 + - uid: 31027 + components: + - type: Transform + pos: -50.5,22.5 + parent: 12 - uid: 31472 components: - type: Transform @@ -156707,6 +156287,12 @@ entities: rot: -1.5707963267948966 rad pos: 33.5,15.5 parent: 12 + - uid: 31025 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -52.5,17.5 + parent: 12 - uid: 31126 components: - type: Transform @@ -156765,12 +156351,6 @@ entities: powerLoad: 60 - type: DamageOnInteract isDamageActive: False - - uid: 32147 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -61.5,-55.5 - parent: 12 - proto: Protolathe entities: - uid: 2321 @@ -157546,6 +157126,11 @@ entities: - type: Transform pos: -17.5,-61.5 parent: 12 + - uid: 31017 + components: + - type: Transform + pos: -53.5,-47.5 + parent: 12 - uid: 31261 components: - type: Transform @@ -157567,11 +157152,6 @@ entities: rot: 1.5707963267948966 rad pos: 55.5,64.5 parent: 12 - - uid: 32173 - components: - - type: Transform - pos: -62.5,-52.5 - parent: 12 - proto: RadioHandheld entities: - uid: 9805 @@ -159761,11 +159341,6 @@ entities: - type: Transform pos: 45.5,62.5 parent: 12 - - uid: 32193 - components: - - type: Transform - pos: -60.5,-57.5 - parent: 12 - proto: RandomVending entities: - uid: 9099 @@ -160024,20 +159599,6 @@ entities: rot: -1.5707963267948966 rad pos: 37.5,14.5 parent: 12 -- proto: ReinforcedGirder - entities: - - uid: 4769 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -54.5,-52.5 - parent: 12 - - uid: 31161 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -55.5,-49.5 - parent: 12 - proto: ReinforcedPlasmaWindow entities: - uid: 501 @@ -165614,16 +165175,6 @@ entities: rot: 3.141592653589793 rad pos: 37.5,-13.5 parent: 12 - - uid: 32117 - components: - - type: Transform - pos: -59.5,-57.5 - parent: 12 - - uid: 32186 - components: - - type: Transform - pos: -63.5,-54.5 - parent: 12 - proto: ReinforcedWindowDiagonal entities: - uid: 19673 @@ -166130,7 +165681,7 @@ entities: - uid: 13323 components: - type: Transform - pos: 44.037434,29.555851 + pos: 43.473324,29.66118 parent: 12 - uid: 23679 components: @@ -166280,6 +165831,11 @@ entities: rot: -43.98229715025713 rad pos: 57.301918,-5.261206 parent: 12 + - uid: 31043 + components: + - type: Transform + pos: 59.707104,12.565823 + parent: 12 - proto: SheetPlastic entities: - uid: 1947 @@ -168709,13 +168265,6 @@ entities: rot: 1.5707963267948966 rad pos: 29.5,49.5 parent: 12 -- proto: SolarAssembly - entities: - - uid: 31075 - components: - - type: Transform - pos: -54.5,-53.5 - parent: 12 - proto: SolarControlComputerCircuitboard entities: - uid: 8834 @@ -169349,12 +168898,6 @@ entities: rot: 1.5707963267948966 rad pos: -28.5,-68.5 parent: 12 - - uid: 10823 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -55.5,-58.5 - parent: 12 - uid: 10953 components: - type: Transform @@ -169959,6 +169502,12 @@ entities: rot: 1.5707963267948966 rad pos: -39.5,-62.5 parent: 12 + - uid: 25581 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -56.5,-52.5 + parent: 12 - uid: 27495 components: - type: Transform @@ -170127,6 +169676,12 @@ entities: rot: 1.5707963267948966 rad pos: -40.5,-62.5 parent: 12 + - uid: 30181 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -56.5,-54.5 + parent: 12 - uid: 31009 components: - type: Transform @@ -170157,32 +169712,11 @@ entities: rot: -1.5707963267948966 rad pos: -58.5,-43.5 parent: 12 - - uid: 31016 + - uid: 31040 components: - type: Transform rot: -1.5707963267948966 rad - pos: -58.5,-52.5 - parent: 12 - - uid: 32148 - components: - - type: Transform - pos: -65.5,-57.5 - parent: 12 - - uid: 32150 - components: - - type: Transform - pos: -65.5,-54.5 - parent: 12 - - uid: 32151 - components: - - type: Transform - pos: -65.5,-56.5 - parent: 12 - - uid: 32183 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -57.5,-58.5 + pos: -56.5,-43.5 parent: 12 - proto: SolarPanelBroken entities: @@ -170191,6 +169725,12 @@ entities: - type: Transform pos: -38.5,-66.5 parent: 12 + - uid: 10821 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -56.5,-53.5 + parent: 12 - uid: 24256 components: - type: Transform @@ -170216,29 +169756,17 @@ entities: - type: Transform pos: -30.5,-68.5 parent: 12 - - uid: 30875 + - uid: 30306 components: - type: Transform rot: -1.5707963267948966 rad - pos: -58.5,-56.5 + pos: -58.5,-44.5 parent: 12 - - uid: 31000 + - uid: 30437 components: - type: Transform rot: -1.5707963267948966 rad - pos: -56.5,-54.5 - parent: 12 - - uid: 31001 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -58.5,-53.5 - parent: 12 - - uid: 31002 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -56.5,-56.5 + pos: -58.5,-54.5 parent: 12 - uid: 31003 components: @@ -170270,22 +169798,11 @@ entities: rot: -1.5707963267948966 rad pos: -58.5,-46.5 parent: 12 - - uid: 31008 + - uid: 31037 components: - type: Transform rot: -1.5707963267948966 rad - pos: -56.5,-43.5 - parent: 12 - - uid: 32149 - components: - - type: Transform - pos: -65.5,-55.5 - parent: 12 - - uid: 32184 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -56.5,-58.5 + pos: -58.5,-52.5 parent: 12 - proto: SolarTracker entities: @@ -170309,10 +169826,12 @@ entities: - type: Transform pos: -25.5,-69.5 parent: 12 - - uid: 31017 +- proto: SolarTrackerElectronics + entities: + - uid: 13308 components: - type: Transform - pos: -61.5,-50.5 + pos: -53.441116,-47.48533 parent: 12 - proto: SolidSecretDoor entities: @@ -171368,11 +170887,6 @@ entities: rot: -12.566370614359172 rad pos: -8.433574,-66.54101 parent: 12 - - uid: 32143 - components: - - type: Transform - pos: -62.424545,-53.537132 - parent: 12 - proto: Spoon entities: - uid: 23545 @@ -172741,11 +172255,6 @@ entities: - type: Transform pos: -36.5,-50.5 parent: 12 - - uid: 32116 - components: - - type: Transform - pos: -62.5,-55.5 - parent: 12 - proto: SuitStorageCaptain entities: - uid: 18757 @@ -173168,17 +172677,6 @@ entities: - SurveillanceCameraEngineering nameSet: True id: Atmos lockers/engi hallway - - uid: 7157 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,17.5 - parent: 12 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraEngineering - nameSet: True - id: TEG West - uid: 9821 components: - type: Transform @@ -173447,17 +172945,6 @@ entities: - SurveillanceCameraEngineering nameSet: True id: Southeast solars 2 - - uid: 28825 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -52.5,-47.5 - parent: 12 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraEngineering - nameSet: True - id: Southwest solars - uid: 31882 components: - type: Transform @@ -179075,7 +178562,7 @@ entities: - uid: 12618 components: - type: Transform - pos: 57.698708,36.671814 + pos: 57.535824,36.64035 parent: 12 - uid: 23411 components: @@ -179351,11 +178838,6 @@ entities: - type: Transform pos: -29.544153,-55.516808 parent: 12 - - uid: 32190 - components: - - type: Transform - pos: -60.494305,-59.53066 - parent: 12 - proto: TrashBananaPeel entities: - uid: 9367 @@ -193563,11 +193045,6 @@ entities: rot: -1.5707963267948966 rad pos: 36.5,22.5 parent: 12 - - uid: 10822 - components: - - type: Transform - pos: -59.5,-58.5 - parent: 12 - uid: 10887 components: - type: Transform @@ -197492,11 +196969,6 @@ entities: - type: Transform pos: -3.5,-48.5 parent: 12 - - uid: 23167 - components: - - type: Transform - pos: -59.5,-55.5 - parent: 12 - uid: 23174 components: - type: Transform @@ -198799,21 +198271,6 @@ entities: rot: 3.141592653589793 rad pos: -27.5,-55.5 parent: 12 - - uid: 31028 - components: - - type: Transform - pos: -63.5,-55.5 - parent: 12 - - uid: 31030 - components: - - type: Transform - pos: -61.5,-56.5 - parent: 12 - - uid: 31050 - components: - - type: Transform - pos: -63.5,-53.5 - parent: 12 - uid: 31180 components: - type: Transform @@ -199070,11 +198527,6 @@ entities: rot: 3.141592653589793 rad pos: -45.5,69.5 parent: 12 - - uid: 9631 - components: - - type: Transform - pos: -60.5,-51.5 - parent: 12 - uid: 9671 components: - type: Transform @@ -199086,16 +198538,6 @@ entities: - type: Transform pos: 46.5,-37.5 parent: 12 - - uid: 10820 - components: - - type: Transform - pos: -59.5,-52.5 - parent: 12 - - uid: 11027 - components: - - type: Transform - pos: -59.5,-56.5 - parent: 12 - uid: 11332 components: - type: Transform @@ -200229,11 +199671,6 @@ entities: - type: Transform pos: -27.5,-58.5 parent: 12 - - uid: 31021 - components: - - type: Transform - pos: -62.5,-56.5 - parent: 12 - uid: 31044 components: - type: Transform @@ -200296,17 +199733,6 @@ entities: rot: 3.141592653589793 rad pos: 4.5,-62.5 parent: 12 - - uid: 32120 - components: - - type: Transform - pos: -61.5,-58.5 - parent: 12 - - uid: 32164 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -59.5,-54.5 - parent: 12 - proto: WallWood entities: - uid: 11826 @@ -202765,11 +202191,6 @@ entities: - type: Transform pos: 41.5,-18.5 parent: 12 - - uid: 32118 - components: - - type: Transform - pos: -61.5,-57.5 - parent: 12 - proto: WindowDirectional entities: - uid: 7837 From 8257dc87decd462575a2dccec240aa1bf5c96512 Mon Sep 17 00:00:00 2001 From: K-Dynamic <20566341+K-Dynamic@users.noreply.github.com> Date: Fri, 8 Nov 2024 10:01:57 +1200 Subject: [PATCH 14/28] Meta map: remove arrivals chair, changed maints shotgun to beanbag rounds (#32981) remove chair + changed maints db to rubber --- Resources/Maps/meta.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/Resources/Maps/meta.yml b/Resources/Maps/meta.yml index 1f210e438a..93a6bc31c4 100644 --- a/Resources/Maps/meta.yml +++ b/Resources/Maps/meta.yml @@ -10880,7 +10880,7 @@ entities: pos: -42.5,29.5 parent: 5350 - type: Door - secondsUntilStateChange: -5745.716 + secondsUntilStateChange: -5834.8745 state: Opening - type: DeviceLinkSink invokeCounter: 2 @@ -56106,11 +56106,6 @@ entities: rot: -1.5707963267948966 rad pos: -73.5,7.5 parent: 5350 - - uid: 6164 - components: - - type: Transform - pos: -71.5,-8.5 - parent: 5350 - uid: 6165 components: - type: Transform From d13765fa5cbfc6cf226f936b2407729b6126a6e2 Mon Sep 17 00:00:00 2001 From: PopGamer46 Date: Thu, 7 Nov 2024 23:02:24 +0100 Subject: [PATCH 15/28] Fixes Lambordeere bolt buttons not being connected (#33065) * fix * oops, used savemap instead of savegrid --- Resources/Maps/Shuttles/ShuttleEvent/lambordeere.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Maps/Shuttles/ShuttleEvent/lambordeere.yml b/Resources/Maps/Shuttles/ShuttleEvent/lambordeere.yml index 56624fcd3b..fcb40acdf4 100644 --- a/Resources/Maps/Shuttles/ShuttleEvent/lambordeere.yml +++ b/Resources/Maps/Shuttles/ShuttleEvent/lambordeere.yml @@ -1206,6 +1206,10 @@ entities: rot: 1.5707963267948966 rad pos: 0.5,5.5 parent: 1 + - type: DeviceLinkSource + linkedPorts: + 50: + - Pressed: DoorBolt - uid: 199 components: - type: MetaData @@ -1214,6 +1218,10 @@ entities: rot: 1.5707963267948966 rad pos: 0.5,2.5 parent: 1 + - type: DeviceLinkSource + linkedPorts: + 82: + - Pressed: DoorBolt - proto: SMESBasic entities: - uid: 65 From 03723afee68483b59bf88d4362bc76cc8c8147c6 Mon Sep 17 00:00:00 2001 From: PJBot Date: Thu, 7 Nov 2024 22:03:35 +0000 Subject: [PATCH 16/28] Automatic changelog update --- Resources/Changelog/Changelog.yml | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 25dd61eb68..34a2d14358 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,15 +1,4 @@ Entries: -- author: Ubaser - changes: - - message: Mantles are now available in loadouts, requiring 20 hours of that head - of department's time. - type: Add - - message: Mantles are no longer spawned in dressers or able to be printed at uniform - lathes. - type: Remove - id: 7098 - time: '2024-08-12T07:14:46.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30929 - author: LeoSantich changes: - message: Updated 'narsie' and 'ratvar' to 'Nar'Sie' and 'Ratvar' in randomly generated @@ -3953,3 +3942,10 @@ id: 7597 time: '2024-11-06T14:39:16.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/31292 +- author: PopGamer46 + changes: + - message: Fixed Lambordeere (botany shuttle) bolt buttons not being connected + type: Fix + id: 7598 + time: '2024-11-07T22:02:25.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33065 From 9ee47b927b59d709dd905dbf27bd056861854e9a Mon Sep 17 00:00:00 2001 From: scrivoy <179060466+scrivoy@users.noreply.github.com> Date: Fri, 8 Nov 2024 00:18:12 +0100 Subject: [PATCH 17/28] Core Station: Telecoms air alarm connection to atmos devices (#33214) link air alarm in coms room --- Resources/Maps/core.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Resources/Maps/core.yml b/Resources/Maps/core.yml index 2198854499..119279ba2d 100644 --- a/Resources/Maps/core.yml +++ b/Resources/Maps/core.yml @@ -12942,6 +12942,10 @@ entities: rot: -1.5707963267948966 rad pos: 30.5,-42.5 parent: 2 + - type: DeviceList + devices: + - 20006 + - 20005 - uid: 8436 components: - type: Transform @@ -95461,6 +95465,11 @@ entities: rot: 1.5707963267948966 rad pos: 26.5,-42.5 parent: 2 + - type: DeviceNetwork + configurators: + - invalid + deviceLists: + - 8434 - type: AtmosPipeColor color: '#0335FCFF' - uid: 20037 @@ -96662,6 +96671,11 @@ entities: rot: 1.5707963267948966 rad pos: 26.5,-45.5 parent: 2 + - type: DeviceNetwork + configurators: + - invalid + deviceLists: + - 8434 - type: AtmosPipeColor color: '#FF1212FF' - uid: 20038 From 6a1d631b14b62f44c4492725bc1a695f6914bb01 Mon Sep 17 00:00:00 2001 From: Emisse <99158783+Emisse@users.noreply.github.com> Date: Thu, 7 Nov 2024 16:23:28 -0700 Subject: [PATCH 18/28] fix invalids core (#33215) fix invalids --- Resources/Maps/core.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Resources/Maps/core.yml b/Resources/Maps/core.yml index 119279ba2d..755badd757 100644 --- a/Resources/Maps/core.yml +++ b/Resources/Maps/core.yml @@ -95466,8 +95466,6 @@ entities: pos: 26.5,-42.5 parent: 2 - type: DeviceNetwork - configurators: - - invalid deviceLists: - 8434 - type: AtmosPipeColor @@ -96672,8 +96670,6 @@ entities: pos: 26.5,-45.5 parent: 2 - type: DeviceNetwork - configurators: - - invalid deviceLists: - 8434 - type: AtmosPipeColor From 261c18f764b9ad750f2ef0227360cbf9f1d83846 Mon Sep 17 00:00:00 2001 From: SolStar <44028047+ewokswagger@users.noreply.github.com> Date: Thu, 7 Nov 2024 19:29:03 -0500 Subject: [PATCH 19/28] Fix research disk crash (#33205) * Fix reserach disk crash * remove extra whitespace * removed args.handled where args are not handled --- Content.Server/Research/Disk/ResearchDiskSystem.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Content.Server/Research/Disk/ResearchDiskSystem.cs b/Content.Server/Research/Disk/ResearchDiskSystem.cs index d32c49ce6f..4d65c19f6e 100644 --- a/Content.Server/Research/Disk/ResearchDiskSystem.cs +++ b/Content.Server/Research/Disk/ResearchDiskSystem.cs @@ -31,6 +31,7 @@ namespace Content.Server.Research.Disk _research.ModifyServerPoints(args.Target.Value, component.Points, server); _popupSystem.PopupEntity(Loc.GetString("research-disk-inserted", ("points", component.Points)), args.Target.Value, args.User); EntityManager.QueueDeleteEntity(uid); + args.Handled = true; } private void OnMapInit(EntityUid uid, ResearchDiskComponent component, MapInitEvent args) From 012855475e38d1a05df6263f356e0d0805aa7237 Mon Sep 17 00:00:00 2001 From: FN <37689533+FireNameFN@users.noreply.github.com> Date: Fri, 8 Nov 2024 09:59:05 +0700 Subject: [PATCH 20/28] Fix cursed mask bug (#33014) * One line fix * Removed redundant using * Allocation improvement --- Content.Server/Clothing/Systems/CursedMaskSystem.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Content.Server/Clothing/Systems/CursedMaskSystem.cs b/Content.Server/Clothing/Systems/CursedMaskSystem.cs index 825e85e2c6..86d4e801a8 100644 --- a/Content.Server/Clothing/Systems/CursedMaskSystem.cs +++ b/Content.Server/Clothing/Systems/CursedMaskSystem.cs @@ -51,7 +51,8 @@ public sealed class CursedMaskSystem : SharedCursedMaskSystem } var npcFaction = EnsureComp(wearer); - ent.Comp.OldFactions = npcFaction.Factions; + ent.Comp.OldFactions.Clear(); + ent.Comp.OldFactions.UnionWith(npcFaction.Factions); _npcFaction.ClearFactions((wearer, npcFaction), false); _npcFaction.AddFaction((wearer, npcFaction), ent.Comp.CursedMaskFaction); From 667daa168f9ae9e6c63dfed4714baa89f24a3bfd Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Fri, 8 Nov 2024 09:38:41 +0000 Subject: [PATCH 21/28] pass Actor to cartridge messages (#33210) * pass Actor to cartridge messages * NonSerialized gaming --------- Co-authored-by: deltanedas <@deltanedas:kde.org> --- Content.Server/CartridgeLoader/CartridgeLoaderSystem.cs | 1 + Content.Shared/CartridgeLoader/CartridgeUiMessage.cs | 3 +++ 2 files changed, 4 insertions(+) diff --git a/Content.Server/CartridgeLoader/CartridgeLoaderSystem.cs b/Content.Server/CartridgeLoader/CartridgeLoaderSystem.cs index 7caec6150e..98df7e2c50 100644 --- a/Content.Server/CartridgeLoader/CartridgeLoaderSystem.cs +++ b/Content.Server/CartridgeLoader/CartridgeLoaderSystem.cs @@ -428,6 +428,7 @@ public sealed class CartridgeLoaderSystem : SharedCartridgeLoaderSystem { var cartridgeEvent = args.MessageEvent; cartridgeEvent.LoaderUid = GetNetEntity(uid); + cartridgeEvent.Actor = args.Actor; RelayEvent(component, cartridgeEvent, true); } diff --git a/Content.Shared/CartridgeLoader/CartridgeUiMessage.cs b/Content.Shared/CartridgeLoader/CartridgeUiMessage.cs index 1155030f93..31ac8bd2d0 100644 --- a/Content.Shared/CartridgeLoader/CartridgeUiMessage.cs +++ b/Content.Shared/CartridgeLoader/CartridgeUiMessage.cs @@ -17,4 +17,7 @@ public sealed class CartridgeUiMessage : BoundUserInterfaceMessage public abstract class CartridgeMessageEvent : EntityEventArgs { public NetEntity LoaderUid; + + [NonSerialized] + public EntityUid Actor; } From 80e148c265dc8602f50e3941dbd94bb396a1f5b5 Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Fri, 8 Nov 2024 11:15:41 +0000 Subject: [PATCH 22/28] cham projector fixes/rewrite (#27111) * cant disguise to thing in a container * copy cigarette visualiser * prevent aghost throwing an error * make disguises die in space * fuck it rewrite it to not use polymorph * fix action troll * oop * add vebr * add access to the components * 2/3 * fix * relay damage from disguise to user * fix integrity * :trollface: * :trollface: * m * kill integrity * fix a bug * review * remove them from component * relay flash effect to the disguise * fix icon being weird * change method since multiple systems cant handle same network event * :trollface: * actually network Disguise real --------- Co-authored-by: deltanedas <@deltanedas:kde.org> --- .../Effects/ColorFlashEffectSystem.cs | 10 + .../Systems/ChameleonProjectorSystem.cs | 30 +++ .../Systems/ChameleonProjectorSystem.cs | 96 +------- .../Components/ChameleonDisguiseComponent.cs | 16 +- .../Components/ChameleonDisguisedComponent.cs | 25 ++ .../Components/ChameleonProjectorComponent.cs | 19 +- .../Systems/SharedChameleonProjectorSystem.cs | 229 ++++++++++++++++-- .../chameleon-projector.ftl | 2 + .../Objects/Devices/chameleon_projector.yml | 24 +- 9 files changed, 311 insertions(+), 140 deletions(-) create mode 100644 Content.Shared/Polymorph/Components/ChameleonDisguisedComponent.cs diff --git a/Content.Client/Effects/ColorFlashEffectSystem.cs b/Content.Client/Effects/ColorFlashEffectSystem.cs index 956c946524..b584aa9ad1 100644 --- a/Content.Client/Effects/ColorFlashEffectSystem.cs +++ b/Content.Client/Effects/ColorFlashEffectSystem.cs @@ -124,6 +124,10 @@ public sealed class ColorFlashEffectSystem : SharedColorFlashEffectSystem continue; } + var targetEv = new GetFlashEffectTargetEvent(ent); + RaiseLocalEvent(ent, ref targetEv); + ent = targetEv.Target; + EnsureComp(ent, out comp); comp.NetSyncEnabled = false; comp.Color = sprite.Color; @@ -132,3 +136,9 @@ public sealed class ColorFlashEffectSystem : SharedColorFlashEffectSystem } } } + +/// +/// Raised on an entity to change the target for a color flash effect. +/// +[ByRefEvent] +public record struct GetFlashEffectTargetEvent(EntityUid Target); diff --git a/Content.Client/Polymorph/Systems/ChameleonProjectorSystem.cs b/Content.Client/Polymorph/Systems/ChameleonProjectorSystem.cs index 5ba4878c6d..8ba09c6617 100644 --- a/Content.Client/Polymorph/Systems/ChameleonProjectorSystem.cs +++ b/Content.Client/Polymorph/Systems/ChameleonProjectorSystem.cs @@ -1,7 +1,10 @@ +using Content.Client.Effects; +using Content.Client.Smoking; using Content.Shared.Chemistry.Components; using Content.Shared.Polymorph.Components; using Content.Shared.Polymorph.Systems; using Robust.Client.GameObjects; +using Robust.Shared.Player; namespace Content.Client.Polymorph.Systems; @@ -10,14 +13,20 @@ public sealed class ChameleonProjectorSystem : SharedChameleonProjectorSystem [Dependency] private readonly SharedAppearanceSystem _appearance = default!; private EntityQuery _appearanceQuery; + private EntityQuery _spriteQuery; public override void Initialize() { base.Initialize(); _appearanceQuery = GetEntityQuery(); + _spriteQuery = GetEntityQuery(); SubscribeLocalEvent(OnHandleState); + + SubscribeLocalEvent(OnStartup); + SubscribeLocalEvent(OnShutdown); + SubscribeLocalEvent(OnGetFlashEffectTargetEvent); } private void OnHandleState(Entity ent, ref AfterAutoHandleStateEvent args) @@ -25,9 +34,30 @@ public sealed class ChameleonProjectorSystem : SharedChameleonProjectorSystem CopyComp(ent); CopyComp(ent); CopyComp(ent); + CopyComp(ent); // reload appearance to hopefully prevent any invisible layers if (_appearanceQuery.TryComp(ent, out var appearance)) _appearance.QueueUpdate(ent, appearance); } + + private void OnStartup(Entity ent, ref ComponentStartup args) + { + if (!_spriteQuery.TryComp(ent, out var sprite)) + return; + + ent.Comp.WasVisible = sprite.Visible; + sprite.Visible = false; + } + + private void OnShutdown(Entity ent, ref ComponentShutdown args) + { + if (_spriteQuery.TryComp(ent, out var sprite)) + sprite.Visible = ent.Comp.WasVisible; + } + + private void OnGetFlashEffectTargetEvent(Entity ent, ref GetFlashEffectTargetEvent args) + { + args.Target = ent.Comp.Disguise; + } } diff --git a/Content.Server/Polymorph/Systems/ChameleonProjectorSystem.cs b/Content.Server/Polymorph/Systems/ChameleonProjectorSystem.cs index 1586973a21..ab12f2764c 100644 --- a/Content.Server/Polymorph/Systems/ChameleonProjectorSystem.cs +++ b/Content.Server/Polymorph/Systems/ChameleonProjectorSystem.cs @@ -1,99 +1,5 @@ -using Content.Server.Polymorph.Components; -using Content.Shared.Actions; -using Content.Shared.Construction.Components; -using Content.Shared.Hands; -using Content.Shared.Mobs; -using Content.Shared.Mobs.Components; -using Content.Shared.Mobs.Systems; -using Content.Shared.Polymorph; -using Content.Shared.Polymorph.Components; using Content.Shared.Polymorph.Systems; -using Content.Shared.StatusIcon.Components; -using Robust.Shared.Physics.Components; namespace Content.Server.Polymorph.Systems; -public sealed class ChameleonProjectorSystem : SharedChameleonProjectorSystem -{ - [Dependency] private readonly MetaDataSystem _meta = default!; - [Dependency] private readonly MobThresholdSystem _mobThreshold = default!; - [Dependency] private readonly PolymorphSystem _polymorph = default!; - [Dependency] private readonly SharedActionsSystem _actions = default!; - [Dependency] private readonly SharedAppearanceSystem _appearance = default!; - [Dependency] private readonly SharedTransformSystem _xform = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnEquippedHand); - SubscribeLocalEvent(OnToggleNoRot); - SubscribeLocalEvent(OnToggleAnchored); - } - - private void OnEquippedHand(Entity ent, ref GotEquippedHandEvent args) - { - if (!TryComp(ent, out var poly)) - return; - - _polymorph.Revert((ent, poly)); - args.Handled = true; - } - - public override void Disguise(ChameleonProjectorComponent proj, EntityUid user, EntityUid entity) - { - if (_polymorph.PolymorphEntity(user, proj.Polymorph) is not {} disguise) - return; - - // make disguise look real (for simple things at least) - var meta = MetaData(entity); - _meta.SetEntityName(disguise, meta.EntityName); - _meta.SetEntityDescription(disguise, meta.EntityDescription); - - var comp = EnsureComp(disguise); - comp.SourceEntity = entity; - comp.SourceProto = Prototype(entity)?.ID; - Dirty(disguise, comp); - - // no sechud trolling - RemComp(disguise); - - _appearance.CopyData(entity, disguise); - - var mass = CompOrNull(entity)?.Mass ?? 0f; - - // let the disguise die when its taken enough damage, which then transfers to the player - // health is proportional to mass, and capped to not be insane - if (TryComp(disguise, out var thresholds)) - { - // if the player is of flesh and blood, cap max health to theirs - // so that when reverting damage scales 1:1 and not round removing - var playerMax = _mobThreshold.GetThresholdForState(user, MobState.Dead).Float(); - var max = playerMax == 0f ? proj.MaxHealth : Math.Max(proj.MaxHealth, playerMax); - - var health = Math.Clamp(mass, proj.MinHealth, proj.MaxHealth); - _mobThreshold.SetMobStateThreshold(disguise, health, MobState.Critical, thresholds); - _mobThreshold.SetMobStateThreshold(disguise, max, MobState.Dead, thresholds); - } - - // add actions for controlling transform aspects - _actions.AddAction(disguise, proj.NoRotAction); - _actions.AddAction(disguise, proj.AnchorAction); - } - - private void OnToggleNoRot(Entity ent, ref DisguiseToggleNoRotEvent args) - { - var xform = Transform(ent); - xform.NoLocalRotation = !xform.NoLocalRotation; - } - - private void OnToggleAnchored(Entity ent, ref DisguiseToggleAnchoredEvent args) - { - var uid = ent.Owner; - var xform = Transform(uid); - if (xform.Anchored) - _xform.Unanchor(uid, xform); - else - _xform.AnchorEntity((uid, xform)); - } -} +public sealed class ChameleonProjectorSystem : SharedChameleonProjectorSystem; diff --git a/Content.Shared/Polymorph/Components/ChameleonDisguiseComponent.cs b/Content.Shared/Polymorph/Components/ChameleonDisguiseComponent.cs index 2b9fba7b39..282106b8f6 100644 --- a/Content.Shared/Polymorph/Components/ChameleonDisguiseComponent.cs +++ b/Content.Shared/Polymorph/Components/ChameleonDisguiseComponent.cs @@ -1,3 +1,4 @@ +using Content.Shared.Polymorph.Systems; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; @@ -7,9 +8,22 @@ namespace Content.Shared.Polymorph.Components; /// Component added to disguise entities. /// Used by client to copy over appearance from the disguise's source entity. /// -[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] +[RegisterComponent, NetworkedComponent, Access(typeof(SharedChameleonProjectorSystem))] +[AutoGenerateComponentState(true)] public sealed partial class ChameleonDisguiseComponent : Component { + /// + /// The user of this disguise. + /// + [DataField] + public EntityUid User; + + /// + /// The projector that created this disguise. + /// + [DataField] + public EntityUid Projector; + /// /// The disguise source entity for copying the sprite. /// diff --git a/Content.Shared/Polymorph/Components/ChameleonDisguisedComponent.cs b/Content.Shared/Polymorph/Components/ChameleonDisguisedComponent.cs new file mode 100644 index 0000000000..cd2e26c420 --- /dev/null +++ b/Content.Shared/Polymorph/Components/ChameleonDisguisedComponent.cs @@ -0,0 +1,25 @@ +using Content.Shared.Polymorph.Systems; +using Robust.Shared.GameStates; + +namespace Content.Shared.Polymorph.Components; + +/// +/// Added to a player when they use a chameleon projector. +/// Handles making them invisible and revealing when damaged enough or switching hands. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(SharedChameleonProjectorSystem))] +[AutoGenerateComponentState] +public sealed partial class ChameleonDisguisedComponent : Component +{ + /// + /// The disguise entity parented to the player. + /// + [DataField, AutoNetworkedField] + public EntityUid Disguise; + + /// + /// For client, whether the user's sprite was previously visible or not. + /// + [DataField] + public bool WasVisible; +} diff --git a/Content.Shared/Polymorph/Components/ChameleonProjectorComponent.cs b/Content.Shared/Polymorph/Components/ChameleonProjectorComponent.cs index 239b5236f2..1b289c54fc 100644 --- a/Content.Shared/Polymorph/Components/ChameleonProjectorComponent.cs +++ b/Content.Shared/Polymorph/Components/ChameleonProjectorComponent.cs @@ -1,4 +1,3 @@ -using Content.Shared.Polymorph; using Content.Shared.Polymorph.Systems; using Content.Shared.Whitelist; using Robust.Shared.Prototypes; @@ -25,22 +24,26 @@ public sealed partial class ChameleonProjectorComponent : Component public EntityWhitelist? Blacklist; /// - /// Polymorph configuration for the disguise entity. + /// Disguise entity to spawn and use. /// [DataField(required: true)] - public PolymorphConfiguration Polymorph = new(); + public EntProtoId DisguiseProto = string.Empty; /// /// Action for disabling your disguise's rotation. /// [DataField] public EntProtoId NoRotAction = "ActionDisguiseNoRot"; + [DataField] + public EntityUid? NoRotActionEntity; /// /// Action for anchoring your disguise in place. /// [DataField] public EntProtoId AnchorAction = "ActionDisguiseAnchor"; + [DataField] + public EntityUid? AnchorActionEntity; /// /// Minimum health to give the disguise. @@ -55,14 +58,8 @@ public sealed partial class ChameleonProjectorComponent : Component public float MaxHealth = 100f; /// - /// Popup shown to the user when they try to disguise as an invalid entity. + /// User currently disguised by this projector, if any /// [DataField] - public LocId InvalidPopup = "chameleon-projector-invalid"; - - /// - /// Popup shown to the user when they disguise as a valid entity. - /// - [DataField] - public LocId SuccessPopup = "chameleon-projector-success"; + public EntityUid? Disguised; } diff --git a/Content.Shared/Polymorph/Systems/SharedChameleonProjectorSystem.cs b/Content.Shared/Polymorph/Systems/SharedChameleonProjectorSystem.cs index 00096b7d40..99737996b0 100644 --- a/Content.Shared/Polymorph/Systems/SharedChameleonProjectorSystem.cs +++ b/Content.Shared/Polymorph/Systems/SharedChameleonProjectorSystem.cs @@ -1,67 +1,264 @@ using Content.Shared.Actions; +using Content.Shared.Coordinates; +using Content.Shared.Damage; +using Content.Shared.Hands; using Content.Shared.Interaction; -using Content.Shared.Polymorph; +using Content.Shared.Item; using Content.Shared.Polymorph.Components; using Content.Shared.Popups; -using Robust.Shared.Serialization.Manager; -using Robust.Shared.Prototypes; -using System.Diagnostics.CodeAnalysis; +using Content.Shared.Storage.Components; +using Content.Shared.Verbs; using Content.Shared.Whitelist; +using Robust.Shared.Containers; +using Robust.Shared.Network; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.Manager; +using System.Diagnostics.CodeAnalysis; namespace Content.Shared.Polymorph.Systems; /// -/// Handles whitelist/blacklist checking. -/// Actual polymorphing and deactivation is done serverside. +/// Handles disguise validation, disguising and revealing. +/// Most appearance copying is done clientside. /// public abstract class SharedChameleonProjectorSystem : EntitySystem { + [Dependency] private readonly DamageableSystem _damageable = default!; + [Dependency] private readonly EntityWhitelistSystem _whitelist = default!; + [Dependency] private readonly INetManager _net = default!; [Dependency] private readonly IPrototypeManager _proto = default!; [Dependency] private readonly ISerializationManager _serMan = default!; + [Dependency] private readonly MetaDataSystem _meta = default!; + [Dependency] private readonly SharedActionsSystem _actions = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly SharedContainerSystem _container = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; - [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; + [Dependency] private readonly SharedTransformSystem _xform = default!; public override void Initialize() { base.Initialize(); + SubscribeLocalEvent(OnDisguiseInteractHand, before: [typeof(SharedItemSystem)]); + SubscribeLocalEvent(OnDisguiseDamaged); + SubscribeLocalEvent(OnDisguiseInsertAttempt); + SubscribeLocalEvent(OnDisguiseShutdown); + SubscribeLocalEvent(OnInteract); + SubscribeLocalEvent>(OnGetVerbs); + SubscribeLocalEvent(OnToggleNoRot); + SubscribeLocalEvent(OnToggleAnchored); + SubscribeLocalEvent(OnDeselected); + SubscribeLocalEvent(OnUnequipped); + SubscribeLocalEvent(OnProjectorShutdown); } + #region Disguise entity + + private void OnDisguiseInteractHand(Entity ent, ref InteractHandEvent args) + { + TryReveal(ent.Comp.User); + args.Handled = true; + } + + private void OnDisguiseDamaged(Entity ent, ref DamageChangedEvent args) + { + // this mirrors damage 1:1 + if (args.DamageDelta is {} damage) + _damageable.TryChangeDamage(ent.Comp.User, damage); + } + + private void OnDisguiseInsertAttempt(Entity ent, ref InsertIntoEntityStorageAttemptEvent args) + { + // stay parented to the user, not the storage + args.Cancelled = true; + } + + private void OnDisguiseShutdown(Entity ent, ref ComponentShutdown args) + { + _actions.RemoveProvidedActions(ent.Comp.User, ent.Comp.Projector); + } + + #endregion + + #region Projector + private void OnInteract(Entity ent, ref AfterInteractEvent args) { - if (!args.CanReach || args.Target is not {} target) + if (args.Handled || !args.CanReach || args.Target is not {} target) + return; + + args.Handled = true; + TryDisguise(ent, args.User, target); + } + + private void OnGetVerbs(Entity ent, ref GetVerbsEvent args) + { + if (!args.CanAccess) return; var user = args.User; - args.Handled = true; + var target = args.Target; + args.Verbs.Add(new UtilityVerb() + { + Act = () => + { + TryDisguise(ent, user, target); + }, + Text = Loc.GetString("chameleon-projector-set-disguise") + }); + } + + public bool TryDisguise(Entity ent, EntityUid user, EntityUid target) + { + if (_container.IsEntityInContainer(target)) + { + _popup.PopupClient(Loc.GetString("chameleon-projector-inside-container"), target, user); + return false; + } if (IsInvalid(ent.Comp, target)) { - _popup.PopupClient(Loc.GetString(ent.Comp.InvalidPopup), target, user); - return; + _popup.PopupClient(Loc.GetString("chameleon-projector-invalid"), target, user); + return false; } - _popup.PopupClient(Loc.GetString(ent.Comp.SuccessPopup), target, user); - Disguise(ent.Comp, user, target); + _popup.PopupClient(Loc.GetString("chameleon-projector-success"), target, user); + Disguise(ent, user, target); + return true; } + private void OnToggleNoRot(Entity ent, ref DisguiseToggleNoRotEvent args) + { + if (ent.Comp.Disguised is not {} uid) + return; + + var xform = Transform(uid); + _xform.SetLocalRotationNoLerp(uid, 0, xform); + xform.NoLocalRotation = !xform.NoLocalRotation; + args.Handled = true; + } + + private void OnToggleAnchored(Entity ent, ref DisguiseToggleAnchoredEvent args) + { + if (ent.Comp.Disguised is not {} uid) + return; + + var xform = Transform(uid); + if (xform.Anchored) + _xform.Unanchor(uid, xform); + else + _xform.AnchorEntity((uid, xform)); + + args.Handled = true; + } + + private void OnDeselected(Entity ent, ref HandDeselectedEvent args) + { + RevealProjector(ent); + } + + private void OnUnequipped(Entity ent, ref GotUnequippedHandEvent args) + { + RevealProjector(ent); + } + + private void OnProjectorShutdown(Entity ent, ref ComponentShutdown args) + { + RevealProjector(ent); + } + + #endregion + + #region API + /// /// Returns true if an entity cannot be used as a disguise. /// public bool IsInvalid(ChameleonProjectorComponent comp, EntityUid target) { - return _whitelistSystem.IsWhitelistFail(comp.Whitelist, target) - || _whitelistSystem.IsBlacklistPass(comp.Blacklist, target); + return _whitelist.IsWhitelistFail(comp.Whitelist, target) + || _whitelist.IsBlacklistPass(comp.Blacklist, target); } /// /// On server, polymorphs the user into an entity and sets up the disguise. /// - public virtual void Disguise(ChameleonProjectorComponent comp, EntityUid user, EntityUid entity) + public void Disguise(Entity ent, EntityUid user, EntityUid entity) { + var proj = ent.Comp; + + // no spawning prediction sorry + if (_net.IsClient) + return; + + // reveal first to allow quick switching + TryReveal(user); + + // add actions for controlling transform aspects + _actions.AddAction(user, ref proj.NoRotActionEntity, proj.NoRotAction, container: ent); + _actions.AddAction(user, ref proj.AnchorActionEntity, proj.AnchorAction, container: ent); + + proj.Disguised = user; + + var disguise = SpawnAttachedTo(proj.DisguiseProto, user.ToCoordinates()); + + var disguised = AddComp(user); + disguised.Disguise = disguise; + Dirty(user, disguised); + + // make disguise look real (for simple things at least) + var meta = MetaData(entity); + _meta.SetEntityName(disguise, meta.EntityName); + _meta.SetEntityDescription(disguise, meta.EntityDescription); + + var comp = EnsureComp(disguise); + comp.User = user; + comp.Projector = ent; + comp.SourceEntity = entity; + comp.SourceProto = Prototype(entity)?.ID; + Dirty(disguise, comp); + + // item disguises can be picked up to be revealed, also makes sure their examine size is correct + CopyComp((disguise, comp)); + + _appearance.CopyData(entity, disguise); } + /// + /// Removes the disguise, if the user is disguised. + /// + public bool TryReveal(Entity ent) + { + if (!Resolve(ent, ref ent.Comp, false)) + return false; + + if (TryComp(ent.Comp.Disguise, out var disguise) + && TryComp(disguise.Projector, out var proj)) + { + proj.Disguised = null; + } + + var xform = Transform(ent); + xform.NoLocalRotation = false; + _xform.Unanchor(ent, xform); + + Del(ent.Comp.Disguise); + RemComp(ent); + return true; + } + + /// + /// Reveal a projector's user, if any. + /// + public void RevealProjector(Entity ent) + { + if (ent.Comp.Disguised is {} user) + TryReveal(user); + } + + #endregion + /// /// Copy a component from the source entity/prototype to the disguise entity. /// diff --git a/Resources/Locale/en-US/chameleon-projector/chameleon-projector.ftl b/Resources/Locale/en-US/chameleon-projector/chameleon-projector.ftl index 8a79516077..b525c9da1a 100644 --- a/Resources/Locale/en-US/chameleon-projector/chameleon-projector.ftl +++ b/Resources/Locale/en-US/chameleon-projector/chameleon-projector.ftl @@ -1,2 +1,4 @@ +chameleon-projector-inside-container = There's no room to scan that! chameleon-projector-invalid = You can't disguise as that! chameleon-projector-success = Projected new disguise. +chameleon-projector-set-disguise = Set Disguise diff --git a/Resources/Prototypes/Entities/Objects/Devices/chameleon_projector.yml b/Resources/Prototypes/Entities/Objects/Devices/chameleon_projector.yml index f07ae63569..b6819a18b9 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/chameleon_projector.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/chameleon_projector.yml @@ -17,15 +17,12 @@ blacklist: components: - ChameleonDisguise # no becoming kleiner - - InsideEntityStorage # no clark kent going in phone booth and becoming superman - MindContainer # no - Pda # PDAs currently make you invisible /!\ - polymorph: - entity: ChameleonDisguise + disguiseProto: ChameleonDisguise - type: entity categories: [ HideSpawnMenu ] - parent: BaseMob id: ChameleonDisguise name: Urist McKleiner components: @@ -33,20 +30,11 @@ - type: Sprite sprite: /Textures/Mobs/Species/Human/parts.rsi state: full - # so people can attempt to pick it up - - type: Item - # so it can take damage - # projector system sets health to be proportional to mass + - type: Transform + noRot: true # players rotation and anchor is used instead + - type: InteractionOutline + - type: Clickable - type: Damageable - - type: MobState - - type: MobThresholds - thresholds: - 0: Alive - 1: Critical - 200: Dead - - type: MovementSpeedModifier - baseWalkSpeed: 1 # precise movement for the perfect spot - baseSprintSpeed: 5 # the jig is up - type: ChameleonDisguise # actions @@ -57,6 +45,7 @@ components: - type: InstantAction icon: Interface/VerbIcons/refresh.svg.192dpi.png + itemIconStyle: BigAction event: !type:DisguiseToggleNoRotEvent - type: entity @@ -68,4 +57,5 @@ icon: sprite: Objects/Tools/wrench.rsi state: icon + itemIconStyle: BigAction event: !type:DisguiseToggleAnchoredEvent From 84338686a3aeeb6b4e12a11c3b3e5b1420ed2f25 Mon Sep 17 00:00:00 2001 From: Jezithyr Date: Fri, 8 Nov 2024 03:46:22 -0800 Subject: [PATCH 23/28] Stable Merge (#33218) --- Content.Server/Antag/AntagSelectionSystem.cs | 4 +++ .../GameTicking/Rules/TraitorRuleSystem.cs | 31 +++++++++++++++++++ .../Thief/Systems/ThiefBeaconSystem.cs | 1 - Resources/Prototypes/GameRules/roundstart.yml | 8 +++-- 4 files changed, 41 insertions(+), 3 deletions(-) diff --git a/Content.Server/Antag/AntagSelectionSystem.cs b/Content.Server/Antag/AntagSelectionSystem.cs index 224629ff2e..610c0ad182 100644 --- a/Content.Server/Antag/AntagSelectionSystem.cs +++ b/Content.Server/Antag/AntagSelectionSystem.cs @@ -55,6 +55,8 @@ public sealed partial class AntagSelectionSystem : GameRuleSystem(OnTakeGhostRole); SubscribeLocalEvent(OnObjectivesTextGetInfo); @@ -360,6 +362,8 @@ public sealed partial class AntagSelectionSystem : GameRuleSystem { base.Initialize(); + Log.Level = LogLevel.Debug; + SubscribeLocalEvent(AfterEntitySelected); SubscribeLocalEvent(OnObjectivesTextPrepend); } @@ -53,6 +55,7 @@ public sealed class TraitorRuleSystem : GameRuleSystem private void AfterEntitySelected(Entity ent, ref AfterAntagEntitySelectedEvent args) { + Log.Debug($"AfterAntagEntitySelected {ToPrettyString(ent)}"); MakeTraitor(args.EntityUid, ent); } @@ -78,14 +81,22 @@ public sealed class TraitorRuleSystem : GameRuleSystem public bool MakeTraitor(EntityUid traitor, TraitorRuleComponent component) { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - start"); + //Grab the mind if it wasn't provided if (!_mindSystem.TryGetMind(traitor, out var mindId, out var mind)) + { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - failed, no Mind found"); return false; + } var briefing = ""; if (component.GiveCodewords) + { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - added codewords flufftext to briefing"); briefing = Loc.GetString("traitor-role-codewords-short", ("codewords", string.Join(", ", component.Codewords))); + } var issuer = _random.Pick(_prototypeManager.Index(component.ObjectiveIssuers).Values); @@ -94,6 +105,7 @@ public sealed class TraitorRuleSystem : GameRuleSystem if (component.GiveUplink) { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Uplink start"); // Calculate the amount of currency on the uplink. var startingBalance = component.StartingBalance; if (_jobs.MindTryGetJob(mindId, out var prototype)) @@ -105,18 +117,27 @@ public sealed class TraitorRuleSystem : GameRuleSystem } // Choose and generate an Uplink, and return the uplink code if applicable + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Uplink request start"); var uplinkParams = RequestUplink(traitor, startingBalance, briefing); code = uplinkParams.Item1; briefing = uplinkParams.Item2; + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Uplink request completed"); } string[]? codewords = null; if (component.GiveCodewords) + { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - set codewords from component"); codewords = component.Codewords; + } if (component.GiveBriefing) + { _antag.SendBriefing(traitor, GenerateBriefing(codewords, code, issuer), null, component.GreetSoundNotification); + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Sent the Briefing"); + } + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Adding TraitorMind"); component.TraitorMinds.Add(mindId); // Assign briefing @@ -126,9 +147,14 @@ public sealed class TraitorRuleSystem : GameRuleSystem _roleSystem.MindHasRole(mindId, out var traitorRole); if (traitorRole is not null) { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Add traitor briefing components"); AddComp(traitorRole.Value.Owner); Comp(traitorRole.Value.Owner).Briefing = briefing; } + else + { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - did not get traitor briefing"); + } // Send codewords to only the traitor client var color = TraitorCodewordColor; // Fall back to a dark red Syndicate color if a prototype is not found @@ -137,9 +163,11 @@ public sealed class TraitorRuleSystem : GameRuleSystem _roleCodewordSystem.SetRoleCodewords(codewordComp, "traitor", component.Codewords.ToList(), color); // Change the faction + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Change faction"); _npcFaction.RemoveFaction(traitor, component.NanoTrasenFaction, false); _npcFaction.AddFaction(traitor, component.SyndicateFaction); + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Finished"); return true; } @@ -148,10 +176,12 @@ public sealed class TraitorRuleSystem : GameRuleSystem var pda = _uplink.FindUplinkTarget(traitor); Note[]? code = null; + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Uplink add"); var uplinked = _uplink.AddUplink(traitor, startingBalance, pda, true); if (pda is not null && uplinked) { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Uplink is PDA"); // Codes are only generated if the uplink is a PDA code = EnsureComp(pda.Value).Code; @@ -163,6 +193,7 @@ public sealed class TraitorRuleSystem : GameRuleSystem } else if (pda is null && uplinked) { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Uplink is implant"); briefing += "\n" + Loc.GetString("traitor-role-uplink-implant-short"); } diff --git a/Content.Server/Thief/Systems/ThiefBeaconSystem.cs b/Content.Server/Thief/Systems/ThiefBeaconSystem.cs index de1c3d2e6d..4c65ba5c44 100644 --- a/Content.Server/Thief/Systems/ThiefBeaconSystem.cs +++ b/Content.Server/Thief/Systems/ThiefBeaconSystem.cs @@ -20,7 +20,6 @@ public sealed class ThiefBeaconSystem : EntitySystem [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly MindSystem _mind = default!; [Dependency] private readonly SharedRoleSystem _roles = default!; - public override void Initialize() { base.Initialize(); diff --git a/Resources/Prototypes/GameRules/roundstart.yml b/Resources/Prototypes/GameRules/roundstart.yml index cec5c9ee09..6ca322d0d5 100644 --- a/Resources/Prototypes/GameRules/roundstart.yml +++ b/Resources/Prototypes/GameRules/roundstart.yml @@ -191,12 +191,17 @@ - type: entity id: TraitorReinforcement - parent: Traitor + parent: BaseTraitorRule components: - type: TraitorRule giveUplink: false giveCodewords: false # It would actually give them a different set of codewords than the regular traitors, anyway giveBriefing: false + - type: AntagSelection + definitions: + - prefRoles: [ Traitor ] + mindRoles: + - MindRoleTraitor - type: entity id: Revolutionary @@ -280,7 +285,6 @@ tableId: CalmPestEventsTable - !type:NestedSelector tableId: SpicyPestEventsTable - - type: entityTable id: SpaceTrafficControlTable From 197d9e68dcc3419ce45844ad64b95fecff680271 Mon Sep 17 00:00:00 2001 From: BramvanZijp <56019239+BramvanZijp@users.noreply.github.com> Date: Mon, 11 Nov 2024 04:22:03 +0100 Subject: [PATCH 24/28] HOTFIX: Fix Security Shell Gun being uncraftable. (#33247) * Sec Shell Gun Craftability Hotfix * Capital Fix --- Resources/Prototypes/Entities/Structures/Machines/lathe.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index b27f2cc1b9..020566ad1a 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -768,6 +768,7 @@ - TargetHuman - TargetSyndicate - WeaponDisablerPractice + - WeaponFlareGunSecurity - WeaponLaserCarbinePractice - Zipties dynamicRecipes: From e9f6a02f18959577f8f56c6ba511749cb34d0ce0 Mon Sep 17 00:00:00 2001 From: cohanna Date: Tue, 12 Nov 2024 19:05:56 -0700 Subject: [PATCH 25/28] un-reverted fixes --- .../Entities/Structures/Windows/clockwork.yml | 19 ++++++--- .../Entities/Structures/Windows/mining.yml | 6 +-- .../Entities/Structures/Windows/plasma.yml | 29 ++++++++------ .../Structures/Windows/plastitanium.yml | 10 ++--- .../Structures/Windows/reinforced.yml | 37 +++++------------- .../Entities/Structures/Windows/rplasma.yml | 18 ++++----- .../Entities/Structures/Windows/ruranium.yml | 20 ++++++---- .../Entities/Structures/Windows/shuttle.yml | 6 +-- .../Entities/Structures/Windows/uranium.yml | 28 +++++++------ .../Entities/Structures/Windows/window.yml | 32 ++++++++++++--- ...mageOverlay_8.png => DamageOverlay_10.png} | Bin ...ageOverlay_12.png => DamageOverlay_20.png} | Bin ...amageOverlay_4.png => DamageOverlay_5.png} | Bin .../Structures/Windows/cracks.rsi/meta.json | 6 +-- ...mageOverlay_8.png => DamageOverlay_10.png} | Bin ...ageOverlay_12.png => DamageOverlay_20.png} | Bin ...amageOverlay_4.png => DamageOverlay_5.png} | Bin .../Windows/cracks_diagonal.rsi/meta.json | 6 +-- ...mageOverlay_8.png => DamageOverlay_10.png} | Bin ...ageOverlay_12.png => DamageOverlay_20.png} | Bin ...amageOverlay_4.png => DamageOverlay_5.png} | Bin .../Windows/cracks_directional.rsi/meta.json | 6 +-- 22 files changed, 123 insertions(+), 100 deletions(-) rename Resources/Textures/Structures/Windows/cracks.rsi/{DamageOverlay_8.png => DamageOverlay_10.png} (100%) rename Resources/Textures/Structures/Windows/cracks.rsi/{DamageOverlay_12.png => DamageOverlay_20.png} (100%) rename Resources/Textures/Structures/Windows/cracks.rsi/{DamageOverlay_4.png => DamageOverlay_5.png} (100%) rename Resources/Textures/Structures/Windows/cracks_diagonal.rsi/{DamageOverlay_8.png => DamageOverlay_10.png} (100%) rename Resources/Textures/Structures/Windows/cracks_diagonal.rsi/{DamageOverlay_12.png => DamageOverlay_20.png} (100%) rename Resources/Textures/Structures/Windows/cracks_diagonal.rsi/{DamageOverlay_4.png => DamageOverlay_5.png} (100%) rename Resources/Textures/Structures/Windows/cracks_directional.rsi/{DamageOverlay_8.png => DamageOverlay_10.png} (100%) rename Resources/Textures/Structures/Windows/cracks_directional.rsi/{DamageOverlay_12.png => DamageOverlay_20.png} (100%) rename Resources/Textures/Structures/Windows/cracks_directional.rsi/{DamageOverlay_4.png => DamageOverlay_5.png} (100%) diff --git a/Resources/Prototypes/Entities/Structures/Windows/clockwork.yml b/Resources/Prototypes/Entities/Structures/Windows/clockwork.yml index 6abeae5760..8421b6b4dc 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/clockwork.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/clockwork.yml @@ -47,8 +47,8 @@ node: clockworkWindow - type: Appearance - type: DamageVisuals - thresholds: [4, 8, 12] - damageDivisor: 4 + thresholds: [5, 10, 20] + damageDivisor: 3 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks.rsi @@ -74,8 +74,8 @@ node: windowClockworkDirectional - type: Appearance - type: DamageVisuals - thresholds: [4, 8, 12] - damageDivisor: 10 + thresholds: [5, 10, 20] + damageDivisor: 1.5 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks_directional.rsi @@ -85,7 +85,16 @@ thresholds: - trigger: !type:DamageTrigger - damage: 150 + damage: 75 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:PlaySoundBehavior + sound: + collection: WindowShatter + - trigger: + !type:DamageTrigger + damage: 37 behaviors: - !type:PlaySoundBehavior sound: diff --git a/Resources/Prototypes/Entities/Structures/Windows/mining.yml b/Resources/Prototypes/Entities/Structures/Windows/mining.yml index 82d11b732b..9d05fbb5e2 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/mining.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/mining.yml @@ -43,8 +43,8 @@ base: mwindow - type: Appearance - type: DamageVisuals - thresholds: [4, 8, 12] - damageDivisor: 6 + thresholds: [5, 10, 20] + damageDivisor: 4 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks.rsi @@ -91,4 +91,4 @@ - East - type: DamageVisuals damageOverlay: - sprite: Structures/Windows/cracks_diagonal.rsi + sprite: Structures/Windows/cracks_diagonal.rsi \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Windows/plasma.yml b/Resources/Prototypes/Entities/Structures/Windows/plasma.yml index 66fac515a7..bdeb37c6bb 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/plasma.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/plasma.yml @@ -10,12 +10,12 @@ sprite: Structures/Windows/plasma_window.rsi - type: Damageable damageContainer: StructuralInorganic - damageModifierSet: RGlass + damageModifierSet: Glass - type: Destructible thresholds: - trigger: !type:DamageTrigger - damage: 120 + damage: 150 behaviors: - !type:DoActsBehavior acts: [ "Destruction" ] @@ -24,7 +24,7 @@ collection: WindowShatter - trigger: !type:DamageTrigger - damage: 60 + damage: 75 behaviors: - !type:PlaySoundBehavior sound: @@ -43,8 +43,8 @@ node: plasmaWindow - type: Appearance - type: DamageVisuals - thresholds: [4, 8, 12] - damageDivisor: 3.333 + thresholds: [5, 10, 20] + damageDivisor: 3 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks.rsi @@ -74,8 +74,8 @@ node: plasmaWindowDirectional - type: Appearance - type: DamageVisuals - thresholds: [4, 8, 12] - damageDivisor: 3.333 + thresholds: [5, 10, 20] + damageDivisor: 1.5 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks_directional.rsi @@ -83,7 +83,16 @@ thresholds: - trigger: !type:DamageTrigger - damage: 200 + damage: 75 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:PlaySoundBehavior + sound: + collection: WindowShatter + - trigger: + !type:DamageTrigger + damage: 37 behaviors: - !type:PlaySoundBehavior sound: @@ -97,8 +106,6 @@ acts: [ "Destruction" ] - type: StaticPrice price: 50 - - type: RadiationBlocker - resistance: 1 - type: entity parent: PlasmaWindow @@ -143,4 +150,4 @@ sprite: Structures/Windows/cracks_diagonal.rsi - type: Construction graph: WindowDiagonal - node: plasmaWindowDiagonal + node: plasmaWindowDiagonal \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Windows/plastitanium.yml b/Resources/Prototypes/Entities/Structures/Windows/plastitanium.yml index 2134cfe892..c50bc6e030 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/plastitanium.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/plastitanium.yml @@ -98,8 +98,8 @@ - !type:DoActsBehavior acts: [ "Destruction" ] - type: DamageVisuals - thresholds: [4, 8, 12] - damageDivisor: 28 + thresholds: [5, 10, 20] + damageDivisor: 20 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks.rsi @@ -185,8 +185,8 @@ - !type:DoActsBehavior acts: [ "Destruction" ] - type: DamageVisuals - thresholds: [4, 8, 12] - damageDivisor: 28 + thresholds: [5, 10, 20] + damageDivisor: 20 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks_diagonal.rsi @@ -195,4 +195,4 @@ doAfterDelay: 3 - type: Damageable damageContainer: StructuralInorganic - damageModifierSet: RGlass + damageModifierSet: RGlass \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Windows/reinforced.yml b/Resources/Prototypes/Entities/Structures/Windows/reinforced.yml index 503d2eec6e..238b71e3fd 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/reinforced.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/reinforced.yml @@ -50,31 +50,12 @@ node: reinforcedWindow - type: Appearance - type: DamageVisuals - thresholds: [4, 8, 12] - damageDivisor: 4 + thresholds: [5, 10, 20] + damageDivisor: 3 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks.rsi -- type: entity - parent: ReinforcedWindow - id: TintedWindow - name: tinted window - components: - - type: Sprite - drawdepth: WallTops - sprite: Structures/Windows/tinted_window.rsi - - type: Icon - sprite: Structures/Windows/tinted_window.rsi - - type: IconSmooth - base: twindow - - type: Construction - graph: Window - node: tintedWindow - - type: Occluder - - type: StaticPrice - price: 45 - - type: entity id: WindowReinforcedDirectional parent: WindowDirectional @@ -96,8 +77,8 @@ node: windowReinforcedDirectional - type: Appearance - type: DamageVisuals - thresholds: [4, 8, 12] - damageDivisor: 10 + thresholds: [5, 10, 20] + damageDivisor: 1.5 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks_directional.rsi @@ -111,16 +92,16 @@ thresholds: - trigger: !type:DamageTrigger - damage: 150 #excess damage (nuke?). avoid computational cost of spawning entities. + damage: 75 behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] - !type:PlaySoundBehavior sound: collection: WindowShatter - - !type:DoActsBehavior - acts: [ "Destruction" ] - trigger: !type:DamageTrigger - damage: 50 + damage: 37 behaviors: - !type:PlaySoundBehavior sound: @@ -178,4 +159,4 @@ sprite: Structures/Windows/cracks_diagonal.rsi - type: Construction graph: WindowDiagonal - node: reinforcedWindowDiagonal + node: reinforcedWindowDiagonal \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Windows/rplasma.yml b/Resources/Prototypes/Entities/Structures/Windows/rplasma.yml index 0940ac308a..2ea710e6e7 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/rplasma.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/rplasma.yml @@ -17,7 +17,7 @@ thresholds: - trigger: !type:DamageTrigger - damage: 200 + damage: 300 behaviors: #excess damage, don't spawn entities. - !type:DoActsBehavior acts: [ "Destruction" ] @@ -26,7 +26,7 @@ collection: WindowShatter - trigger: !type:DamageTrigger - damage: 100 + damage: 150 behaviors: - !type:PlaySoundBehavior sound: @@ -48,7 +48,7 @@ node: reinforcedPlasmaWindow - type: Appearance - type: DamageVisuals - thresholds: [4, 8, 12] + thresholds: [5, 10, 20] damageDivisor: 6 trackAllDamage: true damageOverlay: @@ -77,24 +77,22 @@ node: plasmaReinforcedWindowDirectional - type: Appearance - type: DamageVisuals - thresholds: [4, 8, 12] - damageDivisor: 36 + thresholds: [5, 10, 20] + damageDivisor: 3 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks_directional.rsi - - type: RadiationBlocker - resistance: 2 - type: Destructible thresholds: - trigger: !type:DamageTrigger - damage: 1000 + damage: 150 behaviors: #excess damage, don't spawn entities. - !type:DoActsBehavior acts: [ "Destruction" ] - trigger: !type:DamageTrigger - damage: 600 + damage: 75 behaviors: - !type:PlaySoundBehavior sound: @@ -155,4 +153,4 @@ sprite: Structures/Windows/cracks_diagonal.rsi - type: Construction graph: WindowDiagonal - node: reinforcedPlasmaWindowDiagonal + node: reinforcedPlasmaWindowDiagonal \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Windows/ruranium.yml b/Resources/Prototypes/Entities/Structures/Windows/ruranium.yml index b9b47c00ea..fe40b21ba2 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/ruranium.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/ruranium.yml @@ -43,7 +43,7 @@ node: reinforcedUraniumWindow - type: Appearance - type: DamageVisuals - thresholds: [4, 8, 12] + thresholds: [5, 10, 20] damageDivisor: 6 trackAllDamage: true damageOverlay: @@ -74,8 +74,8 @@ node: uraniumReinforcedWindowDirectional - type: Appearance - type: DamageVisuals - thresholds: [4, 8, 12] - damageDivisor: 3.333 + thresholds: [5, 10, 20] + damageDivisor: 3 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks_directional.rsi @@ -83,7 +83,13 @@ thresholds: - trigger: !type:DamageTrigger - damage: 200 + damage: 150 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 75 behaviors: - !type:PlaySoundBehavior sound: @@ -93,15 +99,13 @@ ShardGlassUranium: min: 1 max: 2 - PartRodMetal1: + PartRodMetal: min: 1 max: 2 - !type:DoActsBehavior acts: [ "Destruction" ] - type: StaticPrice price: 110 - - type: RadiationBlocker - resistance: 2.5 - type: entity parent: ReinforcedUraniumWindow @@ -146,4 +150,4 @@ sprite: Structures/Windows/cracks_diagonal.rsi - type: Construction graph: WindowDiagonal - node: reinforcedUraniumWindowDiagonal + node: reinforcedUraniumWindowDiagonal \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Windows/shuttle.yml b/Resources/Prototypes/Entities/Structures/Windows/shuttle.yml index 1b4c96c170..f70b684abd 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/shuttle.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/shuttle.yml @@ -46,8 +46,8 @@ node: shuttleWindow - type: Appearance - type: DamageVisuals - thresholds: [4, 8, 12] - damageDivisor: 28 + thresholds: [5, 10, 20] + damageDivisor: 20 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks.rsi @@ -94,4 +94,4 @@ - East - type: DamageVisuals damageOverlay: - sprite: Structures/Windows/cracks_diagonal.rsi + sprite: Structures/Windows/cracks_diagonal.rsi \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Windows/uranium.yml b/Resources/Prototypes/Entities/Structures/Windows/uranium.yml index c7b7312a70..25ad1b876e 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/uranium.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/uranium.yml @@ -11,18 +11,18 @@ state: full - type: Damageable damageContainer: StructuralInorganic - damageModifierSet: RGlass + damageModifierSet: Glass - type: Destructible thresholds: - trigger: !type:DamageTrigger - damage: 100 + damage: 150 behaviors: - !type:DoActsBehavior acts: [ "Destruction" ] - trigger: !type:DamageTrigger - damage: 60 + damage: 75 behaviors: - !type:PlaySoundBehavior sound: @@ -41,8 +41,8 @@ node: uraniumWindow - type: Appearance - type: DamageVisuals - thresholds: [4, 8, 12] - damageDivisor: 3.333 + thresholds: [5, 10, 20] + damageDivisor: 3 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks.rsi @@ -72,8 +72,8 @@ node: uraniumWindowDirectional - type: Appearance - type: DamageVisuals - thresholds: [4, 8, 12] - damageDivisor: 3.333 + thresholds: [5, 10, 20] + damageDivisor: 1.5 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks_directional.rsi @@ -81,7 +81,13 @@ thresholds: - trigger: !type:DamageTrigger - damage: 200 + damage: 75 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 37 behaviors: - !type:PlaySoundBehavior sound: @@ -90,13 +96,11 @@ spawn: ShardGlassUranium: min: 1 - max: 2 + max: 1 - !type:DoActsBehavior acts: [ "Destruction" ] - type: StaticPrice price: 100 - - type: RadiationBlocker - resistance: 1.5 - type: entity parent: UraniumWindow @@ -141,4 +145,4 @@ sprite: Structures/Windows/cracks_diagonal.rsi - type: Construction graph: WindowDiagonal - node: uraniumWindowDiagonal + node: uraniumWindowDiagonal \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Windows/window.yml b/Resources/Prototypes/Entities/Structures/Windows/window.yml index 56a38f82fc..5b6530a9e5 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/window.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/window.yml @@ -84,8 +84,8 @@ node: window - type: Appearance - type: DamageVisuals - thresholds: [4, 8, 12] - damageDivisor: 3.333 + thresholds: [5, 10, 20] + damageDivisor: 2 trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks.rsi @@ -93,6 +93,25 @@ price: 100 - type: BlockWeather +- type: entity + parent: Window + id: TintedWindow + name: tinted window + components: + - type: Sprite + drawdepth: WallTops + sprite: Structures/Windows/tinted_window.rsi + - type: Icon + sprite: Structures/Windows/tinted_window.rsi + - type: IconSmooth + base: twindow + - type: Construction + graph: Window + node: tintedWindow + - type: Occluder + - type: StaticPrice + price: 70 + - type: entity id: WindowRCDResistant parent: Window @@ -158,7 +177,7 @@ thresholds: - trigger: !type:DamageTrigger - damage: 150 #excess damage (nuke?). avoid computational cost of spawning entities. + damage: 50 #excess damage (nuke?). avoid computational cost of spawning entities. behaviors: - !type:DoActsBehavior acts: [ "Destruction" ] @@ -188,8 +207,7 @@ node: windowDirectional - type: Appearance - type: DamageVisuals - thresholds: [4, 8, 12] - damageDivisor: 3.333 + thresholds: [5, 10, 20] trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks_directional.rsi @@ -220,6 +238,8 @@ - type: Icon sprite: Structures/Windows/directional.rsi state: frosted_window + - type: StaticPrice + price: 35 - type: entity parent: Window @@ -264,4 +284,4 @@ sprite: Structures/Windows/cracks_diagonal.rsi - type: Construction graph: WindowDiagonal - node: windowDiagonal + node: windowDiagonal \ No newline at end of file diff --git a/Resources/Textures/Structures/Windows/cracks.rsi/DamageOverlay_8.png b/Resources/Textures/Structures/Windows/cracks.rsi/DamageOverlay_10.png similarity index 100% rename from Resources/Textures/Structures/Windows/cracks.rsi/DamageOverlay_8.png rename to Resources/Textures/Structures/Windows/cracks.rsi/DamageOverlay_10.png diff --git a/Resources/Textures/Structures/Windows/cracks.rsi/DamageOverlay_12.png b/Resources/Textures/Structures/Windows/cracks.rsi/DamageOverlay_20.png similarity index 100% rename from Resources/Textures/Structures/Windows/cracks.rsi/DamageOverlay_12.png rename to Resources/Textures/Structures/Windows/cracks.rsi/DamageOverlay_20.png diff --git a/Resources/Textures/Structures/Windows/cracks.rsi/DamageOverlay_4.png b/Resources/Textures/Structures/Windows/cracks.rsi/DamageOverlay_5.png similarity index 100% rename from Resources/Textures/Structures/Windows/cracks.rsi/DamageOverlay_4.png rename to Resources/Textures/Structures/Windows/cracks.rsi/DamageOverlay_5.png diff --git a/Resources/Textures/Structures/Windows/cracks.rsi/meta.json b/Resources/Textures/Structures/Windows/cracks.rsi/meta.json index 9d0cc9a505..ca012e8fc5 100644 --- a/Resources/Textures/Structures/Windows/cracks.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/cracks.rsi/meta.json @@ -7,8 +7,8 @@ "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at commit e06b82a7f4b2b09216fb28fd384c95a2e1dc50e5", "states": [ - {"name": "DamageOverlay_4", "directions": 1}, - {"name": "DamageOverlay_8", "directions": 1}, - {"name": "DamageOverlay_12", "directions": 1} + {"name": "DamageOverlay_5", "directions": 1}, + {"name": "DamageOverlay_10", "directions": 1}, + {"name": "DamageOverlay_20", "directions": 1} ] } diff --git a/Resources/Textures/Structures/Windows/cracks_diagonal.rsi/DamageOverlay_8.png b/Resources/Textures/Structures/Windows/cracks_diagonal.rsi/DamageOverlay_10.png similarity index 100% rename from Resources/Textures/Structures/Windows/cracks_diagonal.rsi/DamageOverlay_8.png rename to Resources/Textures/Structures/Windows/cracks_diagonal.rsi/DamageOverlay_10.png diff --git a/Resources/Textures/Structures/Windows/cracks_diagonal.rsi/DamageOverlay_12.png b/Resources/Textures/Structures/Windows/cracks_diagonal.rsi/DamageOverlay_20.png similarity index 100% rename from Resources/Textures/Structures/Windows/cracks_diagonal.rsi/DamageOverlay_12.png rename to Resources/Textures/Structures/Windows/cracks_diagonal.rsi/DamageOverlay_20.png diff --git a/Resources/Textures/Structures/Windows/cracks_diagonal.rsi/DamageOverlay_4.png b/Resources/Textures/Structures/Windows/cracks_diagonal.rsi/DamageOverlay_5.png similarity index 100% rename from Resources/Textures/Structures/Windows/cracks_diagonal.rsi/DamageOverlay_4.png rename to Resources/Textures/Structures/Windows/cracks_diagonal.rsi/DamageOverlay_5.png diff --git a/Resources/Textures/Structures/Windows/cracks_diagonal.rsi/meta.json b/Resources/Textures/Structures/Windows/cracks_diagonal.rsi/meta.json index 9d0cc9a505..ca012e8fc5 100644 --- a/Resources/Textures/Structures/Windows/cracks_diagonal.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/cracks_diagonal.rsi/meta.json @@ -7,8 +7,8 @@ "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at commit e06b82a7f4b2b09216fb28fd384c95a2e1dc50e5", "states": [ - {"name": "DamageOverlay_4", "directions": 1}, - {"name": "DamageOverlay_8", "directions": 1}, - {"name": "DamageOverlay_12", "directions": 1} + {"name": "DamageOverlay_5", "directions": 1}, + {"name": "DamageOverlay_10", "directions": 1}, + {"name": "DamageOverlay_20", "directions": 1} ] } diff --git a/Resources/Textures/Structures/Windows/cracks_directional.rsi/DamageOverlay_8.png b/Resources/Textures/Structures/Windows/cracks_directional.rsi/DamageOverlay_10.png similarity index 100% rename from Resources/Textures/Structures/Windows/cracks_directional.rsi/DamageOverlay_8.png rename to Resources/Textures/Structures/Windows/cracks_directional.rsi/DamageOverlay_10.png diff --git a/Resources/Textures/Structures/Windows/cracks_directional.rsi/DamageOverlay_12.png b/Resources/Textures/Structures/Windows/cracks_directional.rsi/DamageOverlay_20.png similarity index 100% rename from Resources/Textures/Structures/Windows/cracks_directional.rsi/DamageOverlay_12.png rename to Resources/Textures/Structures/Windows/cracks_directional.rsi/DamageOverlay_20.png diff --git a/Resources/Textures/Structures/Windows/cracks_directional.rsi/DamageOverlay_4.png b/Resources/Textures/Structures/Windows/cracks_directional.rsi/DamageOverlay_5.png similarity index 100% rename from Resources/Textures/Structures/Windows/cracks_directional.rsi/DamageOverlay_4.png rename to Resources/Textures/Structures/Windows/cracks_directional.rsi/DamageOverlay_5.png diff --git a/Resources/Textures/Structures/Windows/cracks_directional.rsi/meta.json b/Resources/Textures/Structures/Windows/cracks_directional.rsi/meta.json index df077f67d2..9555aa5ab3 100644 --- a/Resources/Textures/Structures/Windows/cracks_directional.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/cracks_directional.rsi/meta.json @@ -8,15 +8,15 @@ "copyright": "Adapted from https://github.com/space-wizards/space-station-14/ at commit f57e8ec6b9b4b72ef56c8146be0bc159ed2691ee, originally added by Zumorica, and modified for directional use by Darkie", "states": [ { - "name": "DamageOverlay_4", + "name": "DamageOverlay_5", "directions": 4 }, { - "name": "DamageOverlay_8", + "name": "DamageOverlay_10", "directions": 4 }, { - "name": "DamageOverlay_12", + "name": "DamageOverlay_20", "directions": 4 } ] From 21074bd98d3844dd8f6ae18f9f423752304fa7bd Mon Sep 17 00:00:00 2001 From: cohanna Date: Tue, 12 Nov 2024 19:14:28 -0700 Subject: [PATCH 26/28] oops --- .../Entities/Structures/Windows/plasma.yml | 2 + .../Entities/Structures/Windows/rplasma.yml | 2 + .../Entities/Structures/Windows/ruranium.yml | 2 + .../Entities/Structures/Windows/uranium.yml | 2 + .../Recipes/Construction/structures.yml | 40 ++++++++++++++----- 5 files changed, 37 insertions(+), 11 deletions(-) diff --git a/Resources/Prototypes/Entities/Structures/Windows/plasma.yml b/Resources/Prototypes/Entities/Structures/Windows/plasma.yml index bdeb37c6bb..8758e1075e 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/plasma.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/plasma.yml @@ -106,6 +106,8 @@ acts: [ "Destruction" ] - type: StaticPrice price: 50 + - type: RadiationBlocker + resistance: 1 - type: entity parent: PlasmaWindow diff --git a/Resources/Prototypes/Entities/Structures/Windows/rplasma.yml b/Resources/Prototypes/Entities/Structures/Windows/rplasma.yml index 2ea710e6e7..2ad0eb8410 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/rplasma.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/rplasma.yml @@ -82,6 +82,8 @@ trackAllDamage: true damageOverlay: sprite: Structures/Windows/cracks_directional.rsi + - type: RadiationBlocker + resistance: 2 - type: Destructible thresholds: - trigger: diff --git a/Resources/Prototypes/Entities/Structures/Windows/ruranium.yml b/Resources/Prototypes/Entities/Structures/Windows/ruranium.yml index fe40b21ba2..daae6a4726 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/ruranium.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/ruranium.yml @@ -106,6 +106,8 @@ acts: [ "Destruction" ] - type: StaticPrice price: 110 + - type: RadiationBlocker + resistance: 2.5 - type: entity parent: ReinforcedUraniumWindow diff --git a/Resources/Prototypes/Entities/Structures/Windows/uranium.yml b/Resources/Prototypes/Entities/Structures/Windows/uranium.yml index 25ad1b876e..db93228009 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/uranium.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/uranium.yml @@ -101,6 +101,8 @@ acts: [ "Destruction" ] - type: StaticPrice price: 100 + - type: RadiationBlocker + resistance: 1.5 - type: entity parent: UraniumWindow diff --git a/Resources/Prototypes/Recipes/Construction/structures.yml b/Resources/Prototypes/Recipes/Construction/structures.yml index 31e1264ab0..44a7134597 100644 --- a/Resources/Prototypes/Recipes/Construction/structures.yml +++ b/Resources/Prototypes/Recipes/Construction/structures.yml @@ -455,7 +455,7 @@ startNode: start targetNode: tintedWindow category: construction-category-structures - description: Not clear but tough. + description: Not clear, but lasers still pass through. canBuildInImpassable: true conditions: - !type:EmptyOrWindowValidInTile @@ -512,7 +512,7 @@ targetNode: plasmaWindow category: construction-category-structures canBuildInImpassable: true - description: Clear and even tougher, with a purple tint. + description: Clear, with a purple tint. conditions: - !type:EmptyOrWindowValidInTile - !type:NoWindowsInTile @@ -531,7 +531,7 @@ targetNode: reinforcedPlasmaWindow category: construction-category-structures canBuildInImpassable: true - description: Fire resistant and even tougher, with a purple tint. + description: Clear and even tougher, with a purple tint. conditions: - !type:EmptyOrWindowValidInTile - !type:NoWindowsInTile @@ -569,7 +569,7 @@ targetNode: plasmaWindowDiagonal category: construction-category-structures canBuildInImpassable: true - description: Clear and even tougher, with a purple tint. + description: Clear, with a purple tint. conditions: - !type:EmptyOrWindowValidInTile - !type:NoWindowsInTile @@ -587,7 +587,7 @@ targetNode: reinforcedPlasmaWindowDiagonal category: construction-category-structures canBuildInImpassable: true - description: Fire resistant and even tougher, with a purple tint. + description: Clear and even tougher, with a purple tint. conditions: - !type:EmptyOrWindowValidInTile - !type:NoWindowsInTile @@ -659,7 +659,7 @@ targetNode: plasmaWindowDirectional category: construction-category-structures canBuildInImpassable: true - description: Clear and even tougher, with a purple tint. + description: Clear, with a purple tint. conditions: - !type:EmptyOrWindowValidInTile - !type:NoWindowsInTile @@ -677,7 +677,7 @@ targetNode: plasmaReinforcedWindowDirectional category: construction-category-structures canBuildInImpassable: true - description: Fire resistant and even tougher, with a purple tint. + description: Clear and even tougher, with a purple tint. conditions: - !type:EmptyOrWindowValidInTile - !type:NoWindowsInTile @@ -695,7 +695,7 @@ targetNode: uraniumWindow category: construction-category-structures canBuildInImpassable: true - description: Clear and much tougher than regular glass, with added RadAbsorb to protect you from deadly radiation. + description: Clear, with added RadAbsorb to protect you from deadly radiation. conditions: - !type:EmptyOrWindowValidInTile - !type:NoWindowsInTile @@ -714,7 +714,7 @@ targetNode: reinforcedUraniumWindow category: construction-category-structures canBuildInImpassable: true - description: Clear and much tougher than regular glass, with added RadAbsorb to protect you from deadly radiation. + description: Clear and even tougher, with added RadAbsorb to protect you from deadly radiation. conditions: - !type:EmptyOrWindowValidInTile - !type:NoWindowsInTile @@ -733,7 +733,7 @@ targetNode: uraniumWindowDiagonal category: construction-category-structures canBuildInImpassable: true - description: Clear and much tougher than regular glass, with added RadAbsorb to protect you from deadly radiation. + description: Clear, with added RadAbsorb to protect you from deadly radiation. conditions: - !type:EmptyOrWindowValidInTile - !type:NoWindowsInTile @@ -751,7 +751,7 @@ targetNode: reinforcedUraniumWindowDiagonal category: construction-category-structures canBuildInImpassable: true - description: Clear and much tougher than regular glass, with added RadAbsorb to protect you from deadly radiation. + description: Clear and even tougher, with added RadAbsorb to protect you from deadly radiation. conditions: - !type:EmptyOrWindowValidInTile - !type:NoWindowsInTile @@ -1456,6 +1456,24 @@ # Same here. - 20kdc - !type:TileNotBlocked +- type: construction + name: emergency light + id: EmergencyLightFixture + graph: LightFixture + startNode: start + targetNode: emergencyLight + category: construction-category-structures + description: An emergency light. + icon: + sprite: Structures/Wallmounts/Lighting/emergency_light.rsi + state: base + objectType: Structure + placementMode: SnapgridCenter + canRotate: true + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + - type: construction name: ground light post id: LightGroundFixture From 530a741b7bfbc151bf94b45401085208dc037b76 Mon Sep 17 00:00:00 2001 From: Repo <47093363+Titian3@users.noreply.github.com> Date: Fri, 15 Nov 2024 15:54:20 +1300 Subject: [PATCH 27/28] Rule amendment - Remove role abandonment aHelp requirement. (#33287) * Role abandonment aHelp requirement. * disable roundstart chat message --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml | 1 - Resources/Prototypes/Roles/Jobs/Command/captain.yml | 1 - Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml | 1 - Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml | 1 - .../Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml | 1 - Resources/Prototypes/Roles/Jobs/Science/research_director.yml | 1 - Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml | 1 - Resources/Prototypes/Roles/Jobs/Security/warden.yml | 1 - .../ServerRules/RoleplayRules/RuleR12RoleAbandonment.xml | 2 +- 9 files changed, 1 insertion(+), 9 deletions(-) diff --git a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml index ee1c2c5949..740afded64 100644 --- a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml +++ b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml @@ -18,7 +18,6 @@ weight: 10 startingGear: QuartermasterGear icon: "JobIconQuarterMaster" - requireAdminNotify: true supervisors: job-supervisors-captain canBeAntag: false access: diff --git a/Resources/Prototypes/Roles/Jobs/Command/captain.yml b/Resources/Prototypes/Roles/Jobs/Command/captain.yml index 79634aa5d9..a22d334c94 100644 --- a/Resources/Prototypes/Roles/Jobs/Command/captain.yml +++ b/Resources/Prototypes/Roles/Jobs/Command/captain.yml @@ -19,7 +19,6 @@ weight: 20 startingGear: CaptainGear icon: "JobIconCaptain" - requireAdminNotify: true joinNotifyCrew: true supervisors: job-supervisors-centcom canBeAntag: false diff --git a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml index d5521f767f..f457cfbc49 100644 --- a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml +++ b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml @@ -19,7 +19,6 @@ weight: 20 startingGear: HoPGear icon: "JobIconHeadOfPersonnel" - requireAdminNotify: true supervisors: job-supervisors-captain canBeAntag: false access: diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml index 0ee0b6736c..9bac538551 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml @@ -18,7 +18,6 @@ weight: 10 startingGear: ChiefEngineerGear icon: "JobIconChiefEngineer" - requireAdminNotify: true supervisors: job-supervisors-captain canBeAntag: false access: diff --git a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml index 2587113415..83b16d427b 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml @@ -20,7 +20,6 @@ weight: 10 startingGear: CMOGear icon: "JobIconChiefMedicalOfficer" - requireAdminNotify: true supervisors: job-supervisors-captain canBeAntag: false access: diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml index b54ba54b1a..7d6db3e0be 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml @@ -12,7 +12,6 @@ weight: 10 startingGear: ResearchDirectorGear icon: "JobIconResearchDirector" - requireAdminNotify: true supervisors: job-supervisors-captain canBeAntag: false access: diff --git a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml index 044df7f69e..e22eccb7da 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml @@ -18,7 +18,6 @@ weight: 10 startingGear: HoSGear icon: "JobIconHeadOfSecurity" - requireAdminNotify: true supervisors: job-supervisors-captain canBeAntag: false access: diff --git a/Resources/Prototypes/Roles/Jobs/Security/warden.yml b/Resources/Prototypes/Roles/Jobs/Security/warden.yml index 7ec820d27b..6d79d74804 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/warden.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/warden.yml @@ -9,7 +9,6 @@ time: 36000 #10 hrs startingGear: WardenGear icon: "JobIconWarden" - requireAdminNotify: true supervisors: job-supervisors-hos canBeAntag: false access: diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR12RoleAbandonment.xml b/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR12RoleAbandonment.xml index 3821816128..1ddf73cc77 100644 --- a/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR12RoleAbandonment.xml +++ b/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR12RoleAbandonment.xml @@ -2,7 +2,7 @@ # Roleplay Rule 12 - Do not abandon your role Do not join the round as a role that you don't intend to play. Do not enable antagonist roles that you don't intend to play. Abandoning a role includes not completing tasks that the role is expected to do, in addition to things like leaving the game. Members of command should almost all stay on the station until the emergency shuttle arrives. Enforcement of this rule is more strict for command and antagonist roles, and less strict for less important roles like passengers. - Violations of this rule typically result in temporary or indefinite role bans. We understand that you may need to leave round early or unexpectedly. If you are in an important role (which is relayed to you in chat upon receiving your role), you should notify command members or an admin via ahelp so that they know you are leaving. Space Station 14 is a game. Do not endanger the safety of yourself or others, and do not neglect important things to avoid leaving a round early, even if you have to leave immediately without notifying anyone. Role bans for disconnecting are typically only applied if there is a pattern, and are almost always temporary. + Violations of this rule typically result in temporary or indefinite role bans. We understand that you may need to leave round early or unexpectedly. If you are in an important role (which is relayed to you in chat upon receiving your role), you should notify command members so that they know you are leaving and attempt to cryosleep if possible. Space Station 14 is a game. Do not endanger the safety of yourself or others, and do not neglect important things to avoid leaving a round early, even if you have to leave immediately without notifying anyone. Role bans for disconnecting are typically only applied if there is a pattern, and are almost always temporary. "Antag rolling" refers to a player abandoning their role if they do not get an antagonist role. From 895648aa2c753181c261a6bed8461730f4248ec8 Mon Sep 17 00:00:00 2001 From: nikthechampiongr <32041239+nikthechampiongr@users.noreply.github.com> Date: Tue, 19 Nov 2024 14:13:02 +0200 Subject: [PATCH 28/28] Increase softcap back to 80 (#33400) --- Resources/ConfigPresets/WizardsDen/wizardsDen.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/ConfigPresets/WizardsDen/wizardsDen.toml b/Resources/ConfigPresets/WizardsDen/wizardsDen.toml index 2b059ca40e..28bab5d4c7 100644 --- a/Resources/ConfigPresets/WizardsDen/wizardsDen.toml +++ b/Resources/ConfigPresets/WizardsDen/wizardsDen.toml @@ -4,7 +4,7 @@ [game] desc = "Official English Space Station 14 servers. Vanilla, roleplay ruleset." lobbyenabled = true -soft_max_players = 70 +soft_max_players = 80 panic_bunker.enabled = true panic_bunker.disable_with_admins = true panic_bunker.enable_without_admins = true