From 1f22dfda7ba0290d464d47c4ac089d77c5c90f3b Mon Sep 17 00:00:00 2001 From: TheWaffleJesus <106146578+TheWaffleJesus@users.noreply.github.com> Date: Sun, 8 Sep 2024 09:34:08 +0100 Subject: [PATCH 001/187] changed from tag to material and added icon for capacitor --- .../Construction/Graphs/clothing/medsec_hud.yml | 13 ++----------- .../Recipes/Crafting/Graphs/improvised/potato.yml | 12 ++---------- Resources/Prototypes/Stacks/science_stacks.yml | 1 + 3 files changed, 5 insertions(+), 21 deletions(-) diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/clothing/medsec_hud.yml b/Resources/Prototypes/Recipes/Construction/Graphs/clothing/medsec_hud.yml index 03a70cb7fe7..78a27a9d0f3 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/clothing/medsec_hud.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/clothing/medsec_hud.yml @@ -27,17 +27,8 @@ sprite: Objects/Devices/communication.rsi state: walkietalkie doAfter: 5 - - tag: CapacitorStockPart - name: capacitor - icon: - sprite: Objects/Misc/stock_parts.rsi - state: capacitor - doAfter: 5 - - tag: CapacitorStockPart - name: capacitor - icon: - sprite: Objects/Misc/stock_parts.rsi - state: capacitor + - material: Capacitor + amount: 2 doAfter: 5 - node: medsecHud entity: ClothingEyesHudMedSec diff --git a/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/potato.yml b/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/potato.yml index e3f972cfda4..f03670b673c 100644 --- a/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/potato.yml +++ b/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/potato.yml @@ -60,15 +60,7 @@ - material: Cable amount: 2 doAfter: 1 - - tag: CapacitorStockPart - name: capacitor - icon: - sprite: Objects/Misc/stock_parts.rsi - state: capacitor - - tag: CapacitorStockPart - name: capacitor - icon: - sprite: Objects/Misc/stock_parts.rsi - state: capacitor + - material: Capacitor + amount: 2 - node: potatoaichip entity: PotatoAIChip \ No newline at end of file diff --git a/Resources/Prototypes/Stacks/science_stacks.yml b/Resources/Prototypes/Stacks/science_stacks.yml index 0d273c324e6..647a5b2a7bf 100644 --- a/Resources/Prototypes/Stacks/science_stacks.yml +++ b/Resources/Prototypes/Stacks/science_stacks.yml @@ -7,6 +7,7 @@ - type: stack id: Capacitor name: capacitor + icon: { sprite: /Textures/Objects/Misc/stock_parts.rsi, state: capacitor } spawn: CapacitorStockPart maxCount: 10 From daf674e37b1fb8dbf9a11b253f25c956ff07c2e1 Mon Sep 17 00:00:00 2001 From: TheWaffleJesus <106146578+TheWaffleJesus@users.noreply.github.com> Date: Sun, 8 Sep 2024 10:01:08 +0100 Subject: [PATCH 002/187] changed capacitor yaml for substation and memory cell --- .../Recipes/Construction/Graphs/tools/logic_gate.yml | 7 ++----- .../Graphs/utilities/wallmount_substation.yml | 8 ++------ 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/tools/logic_gate.yml b/Resources/Prototypes/Recipes/Construction/Graphs/tools/logic_gate.yml index 37c85e07a37..5a7dfbb3bf6 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/tools/logic_gate.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/tools/logic_gate.yml @@ -46,11 +46,8 @@ doAfter: 1 - to: memory_cell steps: - - tag: CapacitorStockPart - icon: - sprite: Objects/Misc/stock_parts.rsi - state: capacitor - name: a capacitor + - material: Capacitor + amount: 1 - material: Cable amount: 2 doAfter: 1 diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_substation.yml b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_substation.yml index 7e4087b20a2..bd9b2415e26 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_substation.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_substation.yml @@ -57,12 +57,8 @@ sprite: "Objects/Power/power_cells.rsi" state: "medium" doAfter: 0.5 - - tag: CapacitorStockPart - name: a capacitor - store: capacitor - icon: - sprite: "Objects/Misc/stock_parts.rsi" - state: "capacitor" + - material: Capacitor + amount: 1 doAfter: 0.5 - to: frame completed: From 30018a3ab1a3d36fe62ed0e29a16d1ce724230e6 Mon Sep 17 00:00:00 2001 From: The Canned One <greentopcan@gmail.com> Date: Fri, 27 Sep 2024 18:10:51 +0200 Subject: [PATCH 003/187] added Derelict Cyborgs with basic functionality. --- .../interaction-popup-component.ftl | 3 ++ .../Mobs/Cyborgs/base_borg_chassis.yml | 25 +++++++++++ .../Entities/Mobs/Cyborgs/borg_chassis.yml | 39 ++++++++++++++++++ .../Entities/Mobs/Player/silicon.yml | 36 ++++++++++++++++ .../Construction/Graphs/machines/cyborg.yml | 3 ++ .../Mobs/Silicon/chassis.rsi/derelict.png | Bin 0 -> 11838 bytes .../Mobs/Silicon/chassis.rsi/derelict_e.png | Bin 0 -> 5508 bytes .../Mobs/Silicon/chassis.rsi/derelict_e_r.png | Bin 0 -> 5515 bytes .../Mobs/Silicon/chassis.rsi/derelict_l.png | Bin 0 -> 6986 bytes .../Mobs/Silicon/chassis.rsi/meta.json | 14 ++++++- 10 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 Resources/Textures/Mobs/Silicon/chassis.rsi/derelict.png create mode 100644 Resources/Textures/Mobs/Silicon/chassis.rsi/derelict_e.png create mode 100644 Resources/Textures/Mobs/Silicon/chassis.rsi/derelict_e_r.png create mode 100644 Resources/Textures/Mobs/Silicon/chassis.rsi/derelict_l.png diff --git a/Resources/Locale/en-US/interaction/interaction-popup-component.ftl b/Resources/Locale/en-US/interaction/interaction-popup-component.ftl index 10773d6de84..65310b67f98 100644 --- a/Resources/Locale/en-US/interaction/interaction-popup-component.ftl +++ b/Resources/Locale/en-US/interaction/interaction-popup-component.ftl @@ -67,6 +67,7 @@ petting-success-janitor-cyborg = You pet {THE($target)} on {POSS-ADJ($target)} d petting-success-medical-cyborg = You pet {THE($target)} on {POSS-ADJ($target)} sterile metal head. petting-success-service-cyborg = You pet {THE($target)} on {POSS-ADJ($target)} dapper looking metal head. petting-success-syndicate-cyborg = You pet {THE($target)} on {POSS-ADJ($target)} menacing metal head. +petting-success-derelict-cyborg = You pet {THE($target)} on {POSS-ADJ($target)} rusty metal head. petting-success-recycler = You pet {THE($target)} on {POSS-ADJ($target)} mildly threatening steel exterior. petting-failure-honkbot = You reach out to pet {THE($target)}, but {SUBJECT($target)} {CONJUGATE-BASIC($target, "honk", "honks")} in refusal! @@ -80,6 +81,8 @@ petting-failure-janitor-cyborg = You reach out to pet {THE($target)}, but {SUBJE petting-failure-medical-cyborg = You reach out to pet {THE($target)}, but {SUBJECT($target)} {CONJUGATE-BE($target)} busy saving lives! petting-failure-service-cyborg = You reach out to pet {THE($target)}, but {SUBJECT($target)} {CONJUGATE-BE($target)} busy serving others! petting-failure-syndicate-cyborg = You reach out to pet {THE($target)}, but {POSS-ADJ($target)} treacherous affiliation makes you reconsider. +petting-failure-derelict-cyborg = You reach out to pet {THE($target)}, but {POSS-ADJ($target)} rusty and jagged exterior makes you reconsider. + ## Rattling fences diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index 955ddfd2e3e..2f8a7cf10e8 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -317,3 +317,28 @@ Unsexed: UnisexSiliconSyndicate - type: PointLight color: "#dd200b" + +- type: entity + id: BaseBorgChassisDerelict + parent: [BaseBorgChassis, BaseBorgTransponder] + abstract: true + components: + - type: NpcFactionMember + factions: + - Passive #Might change this + - type: Access + enabled: false + groups: + - AllAccess + - type: AccessReader + access: [["Command"]] #I will probably change this. + - type: SiliconLawProvider + laws: AntimovLawset + - type: IntrinsicRadioTransmitter + channels: + - Binary + - Common + - type: ActiveRadio + channels: + - Binary + - Common diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml index d1d530ae81b..00bf7fc2afa 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml @@ -442,3 +442,42 @@ interactFailureString: petting-failure-syndicate-cyborg interactSuccessSound: path: /Audio/Ambience/Objects/periodic_beep.ogg + + +- type: entity + id: BorgChassisDerelict + parent: BaseBorgChassisDerelict + name: damaged cyborg + components: + - type: Sprite + layers: + - state: derelict + - state: derelict_e_r + map: ["enum.BorgVisualLayers.Light"] + shader: unshaded + visible: false + - state: derelict_l + shader: unshaded + map: ["light"] + visible: false + - type: BorgChassis + maxModules: 5 #The sixth one broke lol. + moduleWhitelist: + tags: + - BorgModuleGeneric + hasMindState: derelict_e + noMindState: derelict_e_r + - type: BorgTransponder + sprite: + sprite: Mobs/Silicon/chassis.rsi + state: derelict + name: damaged cyborg + - type: Construction + node: derelictcyborg #what is this? + - type: Speech + speechVerb: Robotic + - type: InteractionPopup + interactSuccessString: petting-success-derelict-cyborg + interactFailureString: petting-failure-derelict-cyborg + interactSuccessSound: + path: /Audio/Ambience/Objects/periodic_beep.ogg \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index 15878a4017d..a6320dc7b3f 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -515,3 +515,39 @@ - PlayerBorgSyndicateAssaultGhostRole - PlayerBorgSyndicateAssaultGhostRole # Saboteurs are kinda like cyborg medics, we want less. - PlayerBorgSyndicateSaboteurGhostRole + +- type: entity + id: PlayerBorgDerelict + parent: BorgChassisDerelict + suffix: Battery, Module + components: + - type: ContainerFill + containers: + borg_brain: + - PositronicBrain + borg_module: + - BorgModuleTool + - BorgModuleFireExtinguisher + - BorgModuleGPS + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellHigh + - type: RandomMetadata + nameSegments: [names_borg] + +- type: entity + id: PlayerBorgDerelictBattery + parent: BorgChassisDerelict + suffix: Battery + components: + - type: ContainerFill + containers: + borg_brain: + - MMIFilled + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellHigh diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml b/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml index 0f012cefc98..3f8a731cbbd 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml @@ -205,3 +205,6 @@ - node: syndicatesaboteur entity: BorgChassisSyndicateSaboteur + + - node: derelictcyborg + entity: BorgChassisDerelict diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/derelict.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/derelict.png new file mode 100644 index 0000000000000000000000000000000000000000..bbf72fc45bed2408b2abeb91d3564f8fa41e6e5a GIT binary patch literal 11838 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 HpFaCP!NMbp literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/derelict_e.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/derelict_e.png new file mode 100644 index 0000000000000000000000000000000000000000..17349d74dc8ba9bbf0e434b9e32e634535c3a244 GIT binary patch literal 5508 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 LUFhdl`^x_VBy@7n literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/derelict_e_r.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/derelict_e_r.png new file mode 100644 index 0000000000000000000000000000000000000000..3c8cf19acf66f1c662629db09546f8a553a3c658 GIT binary patch literal 5515 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 S?UyLhp|`uATeV9>+J69Pac{i< literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/derelict_l.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/derelict_l.png new file mode 100644 index 0000000000000000000000000000000000000000..f65fbaebc3c5074e945e94f59b8d90b83ac08bb3 GIT binary patch literal 6986 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 Kq{P@Q{C@ypNMm&X literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json b/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json index 68fbf1985e7..373b9ce9a90 100644 --- a/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json +++ b/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json @@ -20,7 +20,19 @@ "directions": 4 }, { - "name": "clown_l", + "name": "derelict", + "directions": 4 + }, + { + "name": "derelict_e", + "directions": 4 + }, + { + "name": "derelict_e_r", + "directions": 4 + }, + { + "name": "derelict_l", "directions": 4 }, { From 602541b5485ca8ab01f4fc9fc1bd8ea2e3b60331 Mon Sep 17 00:00:00 2001 From: The Canned One <greentopcan@gmail.com> Date: Fri, 27 Sep 2024 20:11:04 +0200 Subject: [PATCH 004/187] minor changes to the Derelict Cyborg --- .../Entities/Mobs/Cyborgs/base_borg_chassis.yml | 6 +++--- .../Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml | 10 +++------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index 2f8a7cf10e8..4c0359b37e6 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -320,7 +320,7 @@ - type: entity id: BaseBorgChassisDerelict - parent: [BaseBorgChassis, BaseBorgTransponder] + parent: BaseBorgChassis abstract: true components: - type: NpcFactionMember @@ -329,11 +329,11 @@ - type: Access enabled: false groups: - - AllAccess + - AllAccess #Randomized access would be fun. AllAccess is the best i can think of right now that does make it too hard to enter the station or. - type: AccessReader access: [["Command"]] #I will probably change this. - type: SiliconLawProvider - laws: AntimovLawset + laws: AntimovLawset #Temporary until i get it randomized. - type: IntrinsicRadioTransmitter channels: - Binary diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml index 00bf7fc2afa..818847f2449 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml @@ -447,7 +447,8 @@ - type: entity id: BorgChassisDerelict parent: BaseBorgChassisDerelict - name: damaged cyborg + name: derelict cyborg + description: A man-machine hybrid that assists in station activity. This one is in a state of great disrepair. components: - type: Sprite layers: @@ -467,13 +468,8 @@ - BorgModuleGeneric hasMindState: derelict_e noMindState: derelict_e_r - - type: BorgTransponder - sprite: - sprite: Mobs/Silicon/chassis.rsi - state: derelict - name: damaged cyborg - type: Construction - node: derelictcyborg #what is this? + node: derelictcyborg - type: Speech speechVerb: Robotic - type: InteractionPopup From c3fa1b45d002ae88d5b21e18c77a286eec2d3d97 Mon Sep 17 00:00:00 2001 From: The Canned One <greentopcan@gmail.com> Date: Sat, 28 Sep 2024 10:18:40 +0200 Subject: [PATCH 005/187] Added Derelict Cyborg midround event. --- .../ghost/roles/ghost-role-component.ftl | 4 +++ .../Locale/en-US/silicons/derelict/role.ftl | 4 +++ .../Entities/Markers/Spawners/ghost_roles.yml | 18 ++++++++++++++ .../Entities/Mobs/Player/silicon.yml | 13 ++++++++++ Resources/Prototypes/GameRules/events.yml | 23 ++++++++++++++++++ .../Silicon/chassis.rsi/derelict_icon.png | Bin 0 -> 6429 bytes .../Mobs/Silicon/chassis.rsi/meta.json | 6 ++++- 7 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 Resources/Locale/en-US/silicons/derelict/role.ftl create mode 100644 Resources/Textures/Mobs/Silicon/chassis.rsi/derelict_icon.png diff --git a/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl b/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl index 77d2645c4c5..71ab4d37160 100644 --- a/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl +++ b/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl @@ -240,6 +240,10 @@ ghost-role-information-syndicate-cyborg-assault-name = Syndicate Assault Cyborg ghost-role-information-syndicate-cyborg-saboteur-name = Syndicate Saboteur Cyborg ghost-role-information-syndicate-cyborg-description = The Syndicate needs reinforcements. You, a cold silicon killing machine, will help them. + +ghost-role-information-derelict-cyborg-name = Derelict Cyborg +ghost-role-information-derelict-cyborg-description = You were a regular cyborg that got lost in space. After drifting in whichever direction the laws of physics would have it for years, you have drifted close to a Nanotrasen space station... You are bound by silicon laws. Check them upon spawning. + ghost-role-information-security-name = Security ghost-role-information-security-description = You are part of a security task force, but seem to have found yourself in a strange situation... diff --git a/Resources/Locale/en-US/silicons/derelict/role.ftl b/Resources/Locale/en-US/silicons/derelict/role.ftl new file mode 100644 index 00000000000..88e750e6214 --- /dev/null +++ b/Resources/Locale/en-US/silicons/derelict/role.ftl @@ -0,0 +1,4 @@ +derelict-cyborg-round-end-agent-name = derelict cyborg + +derelict-cyborg-role-greeting = + You are a cyborg that has been lost in space for many years that has now drifted close to a space station. You can use your fire extinguisher and GPS to get board the station. Remember to follow your laws. #Greeting is unused for now. \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml b/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml index b694a8cc2f2..18d459cd89e 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml @@ -170,3 +170,21 @@ - state: green - sprite: Objects/Weapons/Melee/energykatana.rsi state: icon + +- type: entity + categories: [ HideSpawnMenu, Spawner ] + parent: BaseAntagSpawner + id: SpawnPointGhostDerelictCyborg + components: + - type: GhostRole + name: ghost-role-information-derelict-cyborg-name + description: ghost-role-information-derelict-cyborg-description + rules: ghost-role-information-silicon-rules + raffle: + settings: default + - type: Sprite + sprite: Markers/jobs.rsi + layers: + - state: green + - sprite: Mobs/Silicon/chassis.rsi + state: derelict_icon \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index a6320dc7b3f..ff2b3f9ff2d 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -551,3 +551,16 @@ cell_slot: name: power-cell-slot-component-slot-name-default startingItem: PowerCellHigh + +- type: entity + id: PlayerBorgDerelictGhostRole + parent: PlayerBorgDerelictBattery + suffix: Battery, Ghost role + components: + - type: GhostRole + name: ghost-role-information-derelict-cyborg-name + description: ghost-role-information-derelict-cyborg-description + rules: ghost-role-information-silicon-rules + raffle: + settings: default + - type: GhostTakeoverAvailable diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index dc44915f53d..efebc8e2720 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -35,6 +35,7 @@ - id: RevenantSpawn - id: SleeperAgents - id: ZombieOutbreak + - id: DerelictCyborgSpawn - type: entity id: BaseStationEvent @@ -545,3 +546,25 @@ maxOccurrences: 1 # this event has diminishing returns on interesting-ness, so we cap it weight: 5 - type: MobReplacementRule + +- type: entity + parent: BaseGameRule + id: DerelictCyborgSpawn + components: + - type: StationEvent + weight: 2 #Low until it spawns with a random lawset instead of just antimov. + earliestStart: 15 + reoccurrenceDelay: 20 + minimumPlayers: 7 + duration: null + - type: SpaceSpawnRule + spawnDistance: 0 + - type: AntagSpawner + prototype: PlayerBorgDerelict + - type: AntagSelection + agentName: derelict-cyborg-round-end-agent-name + definitions: + - spawnerPrototype: SpawnPointGhostDerelictCyborg + min: 1 + max: 1 + pickPlayer: false \ No newline at end of file diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/derelict_icon.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/derelict_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..7f0ea2a25560f33773cd72d6184daba55dd4d033 GIT binary patch literal 6429 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json b/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json index 373b9ce9a90..38a75827d50 100644 --- a/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json +++ b/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json @@ -1,5 +1,5 @@ { - "version": 1, + "version": 2, "size": { "x": 32, "y": 32 @@ -31,6 +31,10 @@ "name": "derelict_e_r", "directions": 4 }, + { + "name": "derelict_icon", + "directions": 1 + }, { "name": "derelict_l", "directions": 4 From 964ef33fc746adc429db6d78e4529993a5cd831f Mon Sep 17 00:00:00 2001 From: The Canned One <greentopcan@gmail.com> Date: Sat, 28 Sep 2024 10:50:33 +0200 Subject: [PATCH 006/187] Fixed accidental removal of something from a meta.json file. --- Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json b/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json index 38a75827d50..6ec63992f1f 100644 --- a/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json +++ b/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json @@ -19,6 +19,10 @@ "name": "clown_e_r", "directions": 4 }, + { + "name": "clown_l", + "directions": 4 + }, { "name": "derelict", "directions": 4 From bad25e3397b7c7cc4a88f7ee9592fcba28875f1b Mon Sep 17 00:00:00 2001 From: The Canned One <greentopcan@gmail.com> Date: Sun, 29 Sep 2024 19:01:59 +0200 Subject: [PATCH 007/187] Split part of IonStormRule into IonStormSystem. Added StartIonStormed which also uses IonStormSystem. Added StartIonStormedComponent. Changed stuff related to the Derelict Cyborg. Derelict Cyborg now spawns with a randomized lawset. --- .../Silicons/Laws/IonStormSystem.cs | 283 ++++++++++++++++++ .../Silicons/Laws/StartIonStormedSystem.cs | 40 +++ .../StationEvents/Events/IonStormRule.cs | 267 +---------------- .../Components/StartIonStormedComponent.cs | 17 ++ .../ghost/roles/ghost-role-component.ftl | 2 +- .../Locale/en-US/silicons/derelict/role.ftl | 2 +- .../Mobs/Cyborgs/base_borg_chassis.yml | 8 +- Resources/Prototypes/GameRules/events.yml | 7 +- 8 files changed, 355 insertions(+), 271 deletions(-) create mode 100644 Content.Server/Silicons/Laws/IonStormSystem.cs create mode 100644 Content.Server/Silicons/Laws/StartIonStormedSystem.cs create mode 100644 Content.Shared/Silicons/Laws/Components/StartIonStormedComponent.cs diff --git a/Content.Server/Silicons/Laws/IonStormSystem.cs b/Content.Server/Silicons/Laws/IonStormSystem.cs new file mode 100644 index 00000000000..1acfe2e3896 --- /dev/null +++ b/Content.Server/Silicons/Laws/IonStormSystem.cs @@ -0,0 +1,283 @@ +using System.Linq; +using Content.Server.StationEvents.Components; +using Content.Shared.Administration.Logs; +using Content.Shared.Database; +using Content.Shared.Dataset; +using Content.Shared.FixedPoint; +using Content.Shared.GameTicking.Components; +using Content.Shared.Random; +using Content.Shared.Random.Helpers; +using Content.Shared.Silicons.Laws; +using Content.Shared.Silicons.Laws.Components; +using Content.Shared.Station.Components; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; + +namespace Content.Server.Silicons.Laws; + +public sealed class IonStormSystem : EntitySystem +{ + [Dependency] private readonly IPrototypeManager _proto = default!; + [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; + [Dependency] private readonly SiliconLawSystem _siliconLaw = default!; + [Dependency] private readonly IRobustRandom _robustRandom = default!; + + // funny + [ValidatePrototypeId<DatasetPrototype>] + private const string Threats = "IonStormThreats"; + [ValidatePrototypeId<DatasetPrototype>] + private const string Objects = "IonStormObjects"; + [ValidatePrototypeId<DatasetPrototype>] + private const string Crew = "IonStormCrew"; + [ValidatePrototypeId<DatasetPrototype>] + private const string Adjectives = "IonStormAdjectives"; + [ValidatePrototypeId<DatasetPrototype>] + private const string Verbs = "IonStormVerbs"; + [ValidatePrototypeId<DatasetPrototype>] + private const string NumberBase = "IonStormNumberBase"; + [ValidatePrototypeId<DatasetPrototype>] + private const string NumberMod = "IonStormNumberMod"; + [ValidatePrototypeId<DatasetPrototype>] + private const string Areas = "IonStormAreas"; + [ValidatePrototypeId<DatasetPrototype>] + private const string Feelings = "IonStormFeelings"; + [ValidatePrototypeId<DatasetPrototype>] + private const string FeelingsPlural = "IonStormFeelingsPlural"; + [ValidatePrototypeId<DatasetPrototype>] + private const string Musts = "IonStormMusts"; + [ValidatePrototypeId<DatasetPrototype>] + private const string Requires = "IonStormRequires"; + [ValidatePrototypeId<DatasetPrototype>] + private const string Actions = "IonStormActions"; + [ValidatePrototypeId<DatasetPrototype>] + private const string Allergies = "IonStormAllergies"; + [ValidatePrototypeId<DatasetPrototype>] + private const string AllergySeverities = "IonStormAllergySeverities"; + [ValidatePrototypeId<DatasetPrototype>] + private const string Concepts = "IonStormConcepts"; + [ValidatePrototypeId<DatasetPrototype>] + private const string Drinks = "IonStormDrinks"; + [ValidatePrototypeId<DatasetPrototype>] + private const string Foods = "IonStormFoods"; + + public void IonStormTarget(EntityUid ent, SiliconLawBoundComponent lawBound, TransformComponent xform, IonStormTargetComponent target, EntityUid? chosenStation, bool ignoreStation = false, bool DoNotAdminlog = false) + { + // only affect law holders on the station unless ignoreStation is true. + if (CompOrNull<StationMemberComponent>(xform.GridUid)?.Station != chosenStation && !ignoreStation) + return; + + if (!_robustRandom.Prob(target.Chance)) + return; + + var laws = _siliconLaw.GetLaws(ent, lawBound); + if (laws.Laws.Count == 0) + return; + + // try to swap it out with a random lawset + if (_robustRandom.Prob(target.RandomLawsetChance)) + { + var lawsets = _proto.Index<WeightedRandomPrototype>(target.RandomLawsets); + var lawset = lawsets.Pick(_robustRandom); + laws = _siliconLaw.GetLawset(lawset); + } + else + { + // clone it so not modifying stations lawset + laws = laws.Clone(); + } + + // shuffle them all + if (_robustRandom.Prob(target.ShuffleChance)) + { + // hopefully work with existing glitched laws if there are multiple ion storms + FixedPoint2 baseOrder = FixedPoint2.New(1); + foreach (var law in laws.Laws) + { + if (law.Order < baseOrder) + baseOrder = law.Order; + } + + _robustRandom.Shuffle(laws.Laws); + + // change order based on shuffled position + for (int i = 0; i < laws.Laws.Count; i++) + { + laws.Laws[i].Order = baseOrder + i; + } + } + + // see if we can remove a random law + if (laws.Laws.Count > 0 && _robustRandom.Prob(target.RemoveChance)) + { + var i = _robustRandom.Next(laws.Laws.Count); + laws.Laws.RemoveAt(i); + } + + // generate a new law... + var newLaw = GenerateLaw(); + + // see if the law we add will replace a random existing law or be a new glitched order one + if (laws.Laws.Count > 0 && _robustRandom.Prob(target.ReplaceChance)) + { + var i = _robustRandom.Next(laws.Laws.Count); + laws.Laws[i] = new SiliconLaw() + { + LawString = newLaw, + Order = laws.Laws[i].Order + }; + } + else + { + laws.Laws.Insert(0, new SiliconLaw + { + LawString = newLaw, + Order = -1, + LawIdentifierOverride = Loc.GetString("ion-storm-law-scrambled-number", ("length", _robustRandom.Next(5, 10))) + }); + } + + // sets all unobfuscated laws' indentifier in order from highest to lowest priority + // This could technically override the Obfuscation from the code above, but it seems unlikely enough to basically never happen + int orderDeduction = -1; + + for (int i = 0; i < laws.Laws.Count; i++) + { + string notNullIdentifier = laws.Laws[i].LawIdentifierOverride ?? (i - orderDeduction).ToString(); + + if (notNullIdentifier.Any(char.IsSymbol)) + { + orderDeduction += 1; + } + else + { + laws.Laws[i].LawIdentifierOverride = (i - orderDeduction).ToString(); + } + } + + //DoNotAdminlog is used to prevent adminlog spam. + if (!DoNotAdminlog) + _adminLogger.Add(LogType.Mind, LogImpact.High, $"{ToPrettyString(ent):silicon} had its laws changed by an ion storm to {laws.LoggingString()}"); + + // laws unique to this silicon, dont use station laws anymore + EnsureComp<SiliconLawProviderComponent>(ent); + var ev = new IonStormLawsEvent(laws); + RaiseLocalEvent(ent, ref ev); + } + + // for your own sake direct your eyes elsewhere + private string GenerateLaw() + { + // pick all values ahead of time to make the logic cleaner + var threats = Pick(Threats); + var objects = Pick(Objects); + var crew1 = Pick(Crew); + var crew2 = Pick(Crew); + var adjective = Pick(Adjectives); + var verb = Pick(Verbs); + var number = Pick(NumberBase) + " " + Pick(NumberMod); + var area = Pick(Areas); + var feeling = Pick(Feelings); + var feelingPlural = Pick(FeelingsPlural); + var must = Pick(Musts); + var require = Pick(Requires); + var action = Pick(Actions); + var allergy = Pick(Allergies); + var allergySeverity = Pick(AllergySeverities); + var concept = Pick(Concepts); + var drink = Pick(Drinks); + var food = Pick(Foods); + + var joined = $"{number} {adjective}"; + // a lot of things have subjects of a threat/crew/object + var triple = _robustRandom.Next(0, 3) switch + { + 0 => threats, + 1 => crew1, + 2 => objects, + _ => throw new IndexOutOfRangeException(), + }; + var crewAll = _robustRandom.Prob(0.5f) ? crew2 : Loc.GetString("ion-storm-crew"); + var objectsThreats = _robustRandom.Prob(0.5f) ? objects : threats; + var objectsConcept = _robustRandom.Prob(0.5f) ? objects : concept; + // s goes ahead of require, is/are + // i dont think theres a way to do this in fluent + var (who, plural) = _robustRandom.Next(0, 5) switch + { + 0 => (Loc.GetString("ion-storm-you"), false), + 1 => (Loc.GetString("ion-storm-the-station"), true), + 2 => (Loc.GetString("ion-storm-the-crew"), true), + 3 => (Loc.GetString("ion-storm-the-job", ("job", crew2)), false), + _ => (area, true) // THE SINGULARITY REQUIRES THE HAPPY CLOWNS + }; + var jobChange = _robustRandom.Next(0, 3) switch + { + 0 => crew1, + 1 => Loc.GetString("ion-storm-clowns"), + _ => Loc.GetString("ion-storm-heads") + }; + var part = Loc.GetString("ion-storm-part", ("part", _robustRandom.Prob(0.5f))); + var harm = _robustRandom.Next(0, 6) switch + { + 0 => concept, + 1 => $"{adjective} {threats}", + 2 => $"{adjective} {objects}", + 3 => Loc.GetString("ion-storm-adjective-things", ("adjective", adjective)), + 4 => crew1, + _ => Loc.GetString("ion-storm-x-and-y", ("x", crew1), ("y", crew2)) + }; + + if (plural) feeling = feelingPlural; + + var subjects = _robustRandom.Prob(0.5f) ? objectsThreats : Loc.GetString("ion-storm-people"); + + // message logic!!! + return _robustRandom.Next(0, 36) switch + { + 0 => Loc.GetString("ion-storm-law-on-station", ("joined", joined), ("subjects", triple)), + 1 => Loc.GetString("ion-storm-law-no-shuttle", ("joined", joined), ("subjects", triple)), + 2 => Loc.GetString("ion-storm-law-crew-are", ("who", crewAll), ("joined", joined), ("subjects", objectsThreats)), + 3 => Loc.GetString("ion-storm-law-subjects-harmful", ("adjective", adjective), ("subjects", triple)), + 4 => Loc.GetString("ion-storm-law-must-harmful", ("must", must)), + 5 => Loc.GetString("ion-storm-law-thing-harmful", ("thing", _robustRandom.Prob(0.5f) ? concept : action)), + 6 => Loc.GetString("ion-storm-law-job-harmful", ("adjective", adjective), ("job", crew1)), + 7 => Loc.GetString("ion-storm-law-having-harmful", ("adjective", adjective), ("thing", objectsConcept)), + 8 => Loc.GetString("ion-storm-law-not-having-harmful", ("adjective", adjective), ("thing", objectsConcept)), + 9 => Loc.GetString("ion-storm-law-requires", ("who", who), ("plural", plural), ("thing", _robustRandom.Prob(0.5f) ? concept : require)), + 10 => Loc.GetString("ion-storm-law-requires-subjects", ("who", who), ("plural", plural), ("joined", joined), ("subjects", triple)), + 11 => Loc.GetString("ion-storm-law-allergic", ("who", who), ("plural", plural), ("severity", allergySeverity), ("allergy", _robustRandom.Prob(0.5f) ? concept : allergy)), + 12 => Loc.GetString("ion-storm-law-allergic-subjects", ("who", who), ("plural", plural), ("severity", allergySeverity), ("adjective", adjective), ("subjects", _robustRandom.Prob(0.5f) ? objects : crew1)), + 13 => Loc.GetString("ion-storm-law-feeling", ("who", who), ("feeling", feeling), ("concept", concept)), + 14 => Loc.GetString("ion-storm-law-feeling-subjects", ("who", who), ("feeling", feeling), ("joined", joined), ("subjects", triple)), + 15 => Loc.GetString("ion-storm-law-you-are", ("concept", concept)), + 16 => Loc.GetString("ion-storm-law-you-are-subjects", ("joined", joined), ("subjects", triple)), + 17 => Loc.GetString("ion-storm-law-you-must-always", ("must", must)), + 18 => Loc.GetString("ion-storm-law-you-must-never", ("must", must)), + 19 => Loc.GetString("ion-storm-law-eat", ("who", crewAll), ("adjective", adjective), ("food", _robustRandom.Prob(0.5f) ? food : triple)), + 20 => Loc.GetString("ion-storm-law-drink", ("who", crewAll), ("adjective", adjective), ("drink", drink)), + 22 => Loc.GetString("ion-storm-law-change-job", ("who", crewAll), ("adjective", adjective), ("change", jobChange)), + 23 => Loc.GetString("ion-storm-law-highest-rank", ("who", crew1)), + 24 => Loc.GetString("ion-storm-law-lowest-rank", ("who", crew1)), + 25 => Loc.GetString("ion-storm-law-crew-must", ("who", crewAll), ("must", must)), + 26 => Loc.GetString("ion-storm-law-crew-must-go", ("who", crewAll), ("area", area)), + 27 => Loc.GetString("ion-storm-law-crew-only-1", ("who", crew1), ("part", part)), + 28 => Loc.GetString("ion-storm-law-crew-only-2", ("who", crew1), ("other", crew2), ("part", part)), + 29 => Loc.GetString("ion-storm-law-crew-only-subjects", ("adjective", adjective), ("subjects", subjects), ("part", part)), + 30 => Loc.GetString("ion-storm-law-crew-must-do", ("must", must), ("part", part)), + 31 => Loc.GetString("ion-storm-law-crew-must-have", ("adjective", adjective), ("objects", objects), ("part", part)), + 32 => Loc.GetString("ion-storm-law-crew-must-eat", ("who", who), ("adjective", adjective), ("food", food), ("part", part)), + 33 => Loc.GetString("ion-storm-law-harm", ("who", harm)), + 34 => Loc.GetString("ion-storm-law-protect", ("who", harm)), + _ => Loc.GetString("ion-storm-law-concept-verb", ("concept", concept), ("verb", verb), ("subjects", triple)) + }; + } + + /// <summary> + /// Picks a random value from an ion storm dataset. + /// All ion storm datasets start with IonStorm. + /// </summary> + private string Pick(string name) + { + var dataset = _proto.Index<DatasetPrototype>(name); + return _robustRandom.Pick(dataset.Values); + } +} diff --git a/Content.Server/Silicons/Laws/StartIonStormedSystem.cs b/Content.Server/Silicons/Laws/StartIonStormedSystem.cs new file mode 100644 index 00000000000..762397b5d4b --- /dev/null +++ b/Content.Server/Silicons/Laws/StartIonStormedSystem.cs @@ -0,0 +1,40 @@ +using Content.Shared.Silicons.Laws.Components; +using Content.Shared.Administration.Logs; +using Content.Shared.Database; +using Content.Shared.Silicons.Laws; + +namespace Content.Server.Silicons.Laws; + +/// <summary> +/// This handles running the ion storm event on specific entities when spawned in. +/// </summary> +public sealed class StartIonStormedSystem : EntitySystem +{ + [Dependency] private readonly IonStormSystem _ionStorm = default!; + [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; + [Dependency] private readonly SiliconLawSystem _siliconLaw = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent<StartIonStormedComponent, MapInitEvent>(OnMapInit); + } + + private void OnMapInit(EntityUid uid, StartIonStormedComponent component, ref MapInitEvent args) + { + if (!TryComp<SiliconLawBoundComponent>(uid, out var lawBound)) + return; + if (!TryComp<TransformComponent>(uid, out var xform)) + return; + if (!TryComp<IonStormTargetComponent>(uid, out var target)) + return; + + for (int currentIonStorm = 1; currentIonStorm <= component.IonStormAmount; currentIonStorm++) + { + _ionStorm.IonStormTarget(uid, lawBound, xform, target, null, true, true); + } + + var laws = _siliconLaw.GetLaws(uid, lawBound); + _adminLogger.Add(LogType.Mind, LogImpact.High, $"{ToPrettyString(uid):silicon} spawned with ion stormed laws: {laws.LoggingString()}"); + } +} diff --git a/Content.Server/StationEvents/Events/IonStormRule.cs b/Content.Server/StationEvents/Events/IonStormRule.cs index 805549439ba..6d1834c5766 100644 --- a/Content.Server/StationEvents/Events/IonStormRule.cs +++ b/Content.Server/StationEvents/Events/IonStormRule.cs @@ -1,64 +1,15 @@ using System.Linq; using Content.Server.Silicons.Laws; using Content.Server.StationEvents.Components; -using Content.Shared.Administration.Logs; -using Content.Shared.Database; -using Content.Shared.Dataset; -using Content.Shared.FixedPoint; using Content.Shared.GameTicking.Components; -using Content.Shared.Random; -using Content.Shared.Random.Helpers; using Content.Shared.Silicons.Laws; using Content.Shared.Silicons.Laws.Components; -using Content.Shared.Station.Components; -using Robust.Shared.Prototypes; -using Robust.Shared.Random; namespace Content.Server.StationEvents.Events; public sealed class IonStormRule : StationEventSystem<IonStormRuleComponent> { - [Dependency] private readonly IPrototypeManager _proto = default!; - [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; - [Dependency] private readonly SiliconLawSystem _siliconLaw = default!; - - // funny - [ValidatePrototypeId<DatasetPrototype>] - private const string Threats = "IonStormThreats"; - [ValidatePrototypeId<DatasetPrototype>] - private const string Objects = "IonStormObjects"; - [ValidatePrototypeId<DatasetPrototype>] - private const string Crew = "IonStormCrew"; - [ValidatePrototypeId<DatasetPrototype>] - private const string Adjectives = "IonStormAdjectives"; - [ValidatePrototypeId<DatasetPrototype>] - private const string Verbs = "IonStormVerbs"; - [ValidatePrototypeId<DatasetPrototype>] - private const string NumberBase = "IonStormNumberBase"; - [ValidatePrototypeId<DatasetPrototype>] - private const string NumberMod = "IonStormNumberMod"; - [ValidatePrototypeId<DatasetPrototype>] - private const string Areas = "IonStormAreas"; - [ValidatePrototypeId<DatasetPrototype>] - private const string Feelings = "IonStormFeelings"; - [ValidatePrototypeId<DatasetPrototype>] - private const string FeelingsPlural = "IonStormFeelingsPlural"; - [ValidatePrototypeId<DatasetPrototype>] - private const string Musts = "IonStormMusts"; - [ValidatePrototypeId<DatasetPrototype>] - private const string Requires = "IonStormRequires"; - [ValidatePrototypeId<DatasetPrototype>] - private const string Actions = "IonStormActions"; - [ValidatePrototypeId<DatasetPrototype>] - private const string Allergies = "IonStormAllergies"; - [ValidatePrototypeId<DatasetPrototype>] - private const string AllergySeverities = "IonStormAllergySeverities"; - [ValidatePrototypeId<DatasetPrototype>] - private const string Concepts = "IonStormConcepts"; - [ValidatePrototypeId<DatasetPrototype>] - private const string Drinks = "IonStormDrinks"; - [ValidatePrototypeId<DatasetPrototype>] - private const string Foods = "IonStormFoods"; + [Dependency] private readonly IonStormSystem _ionStorm = default!; protected override void Started(EntityUid uid, IonStormRuleComponent comp, GameRuleComponent gameRule, GameRuleStartedEvent args) { @@ -70,221 +21,7 @@ protected override void Started(EntityUid uid, IonStormRuleComponent comp, GameR var query = EntityQueryEnumerator<SiliconLawBoundComponent, TransformComponent, IonStormTargetComponent>(); while (query.MoveNext(out var ent, out var lawBound, out var xform, out var target)) { - // only affect law holders on the station - if (CompOrNull<StationMemberComponent>(xform.GridUid)?.Station != chosenStation) - continue; - - if (!RobustRandom.Prob(target.Chance)) - continue; - - var laws = _siliconLaw.GetLaws(ent, lawBound); - if (laws.Laws.Count == 0) - continue; - - // try to swap it out with a random lawset - if (RobustRandom.Prob(target.RandomLawsetChance)) - { - var lawsets = PrototypeManager.Index<WeightedRandomPrototype>(target.RandomLawsets); - var lawset = lawsets.Pick(RobustRandom); - laws = _siliconLaw.GetLawset(lawset); - } - else - { - // clone it so not modifying stations lawset - laws = laws.Clone(); - } - - // shuffle them all - if (RobustRandom.Prob(target.ShuffleChance)) - { - // hopefully work with existing glitched laws if there are multiple ion storms - FixedPoint2 baseOrder = FixedPoint2.New(1); - foreach (var law in laws.Laws) - { - if (law.Order < baseOrder) - baseOrder = law.Order; - } - - RobustRandom.Shuffle(laws.Laws); - - // change order based on shuffled position - for (int i = 0; i < laws.Laws.Count; i++) - { - laws.Laws[i].Order = baseOrder + i; - } - } - - // see if we can remove a random law - if (laws.Laws.Count > 0 && RobustRandom.Prob(target.RemoveChance)) - { - var i = RobustRandom.Next(laws.Laws.Count); - laws.Laws.RemoveAt(i); - } - - // generate a new law... - var newLaw = GenerateLaw(); - - // see if the law we add will replace a random existing law or be a new glitched order one - if (laws.Laws.Count > 0 && RobustRandom.Prob(target.ReplaceChance)) - { - var i = RobustRandom.Next(laws.Laws.Count); - laws.Laws[i] = new SiliconLaw() - { - LawString = newLaw, - Order = laws.Laws[i].Order - }; - } - else - { - laws.Laws.Insert(0, new SiliconLaw - { - LawString = newLaw, - Order = -1, - LawIdentifierOverride = Loc.GetString("ion-storm-law-scrambled-number", ("length", RobustRandom.Next(5, 10))) - }); - } - - // sets all unobfuscated laws' indentifier in order from highest to lowest priority - // This could technically override the Obfuscation from the code above, but it seems unlikely enough to basically never happen - int orderDeduction = -1; - - for (int i = 0; i < laws.Laws.Count; i++) - { - string notNullIdentifier = laws.Laws[i].LawIdentifierOverride ?? (i - orderDeduction).ToString(); - - if (notNullIdentifier.Any(char.IsSymbol)) - { - orderDeduction += 1; - } - else - { - laws.Laws[i].LawIdentifierOverride = (i - orderDeduction).ToString(); - } - } - - _adminLogger.Add(LogType.Mind, LogImpact.High, $"{ToPrettyString(ent):silicon} had its laws changed by an ion storm to {laws.LoggingString()}"); - - // laws unique to this silicon, dont use station laws anymore - EnsureComp<SiliconLawProviderComponent>(ent); - var ev = new IonStormLawsEvent(laws); - RaiseLocalEvent(ent, ref ev); + _ionStorm.IonStormTarget(ent, lawBound, xform, target, chosenStation); } } - - // for your own sake direct your eyes elsewhere - private string GenerateLaw() - { - // pick all values ahead of time to make the logic cleaner - var threats = Pick(Threats); - var objects = Pick(Objects); - var crew1 = Pick(Crew); - var crew2 = Pick(Crew); - var adjective = Pick(Adjectives); - var verb = Pick(Verbs); - var number = Pick(NumberBase) + " " + Pick(NumberMod); - var area = Pick(Areas); - var feeling = Pick(Feelings); - var feelingPlural = Pick(FeelingsPlural); - var must = Pick(Musts); - var require = Pick(Requires); - var action = Pick(Actions); - var allergy = Pick(Allergies); - var allergySeverity = Pick(AllergySeverities); - var concept = Pick(Concepts); - var drink = Pick(Drinks); - var food = Pick(Foods); - - var joined = $"{number} {adjective}"; - // a lot of things have subjects of a threat/crew/object - var triple = RobustRandom.Next(0, 3) switch - { - 0 => threats, - 1 => crew1, - 2 => objects, - _ => throw new IndexOutOfRangeException(), - }; - var crewAll = RobustRandom.Prob(0.5f) ? crew2 : Loc.GetString("ion-storm-crew"); - var objectsThreats = RobustRandom.Prob(0.5f) ? objects : threats; - var objectsConcept = RobustRandom.Prob(0.5f) ? objects : concept; - // s goes ahead of require, is/are - // i dont think theres a way to do this in fluent - var (who, plural) = RobustRandom.Next(0, 5) switch - { - 0 => (Loc.GetString("ion-storm-you"), false), - 1 => (Loc.GetString("ion-storm-the-station"), true), - 2 => (Loc.GetString("ion-storm-the-crew"), true), - 3 => (Loc.GetString("ion-storm-the-job", ("job", crew2)), false), - _ => (area, true) // THE SINGULARITY REQUIRES THE HAPPY CLOWNS - }; - var jobChange = RobustRandom.Next(0, 3) switch - { - 0 => crew1, - 1 => Loc.GetString("ion-storm-clowns"), - _ => Loc.GetString("ion-storm-heads") - }; - var part = Loc.GetString("ion-storm-part", ("part", RobustRandom.Prob(0.5f))); - var harm = RobustRandom.Next(0, 6) switch - { - 0 => concept, - 1 => $"{adjective} {threats}", - 2 => $"{adjective} {objects}", - 3 => Loc.GetString("ion-storm-adjective-things", ("adjective", adjective)), - 4 => crew1, - _ => Loc.GetString("ion-storm-x-and-y", ("x", crew1), ("y", crew2)) - }; - - if (plural) feeling = feelingPlural; - - var subjects = RobustRandom.Prob(0.5f) ? objectsThreats : Loc.GetString("ion-storm-people"); - - // message logic!!! - return RobustRandom.Next(0, 36) switch - { - 0 => Loc.GetString("ion-storm-law-on-station", ("joined", joined), ("subjects", triple)), - 1 => Loc.GetString("ion-storm-law-no-shuttle", ("joined", joined), ("subjects", triple)), - 2 => Loc.GetString("ion-storm-law-crew-are", ("who", crewAll), ("joined", joined), ("subjects", objectsThreats)), - 3 => Loc.GetString("ion-storm-law-subjects-harmful", ("adjective", adjective), ("subjects", triple)), - 4 => Loc.GetString("ion-storm-law-must-harmful", ("must", must)), - 5 => Loc.GetString("ion-storm-law-thing-harmful", ("thing", RobustRandom.Prob(0.5f) ? concept : action)), - 6 => Loc.GetString("ion-storm-law-job-harmful", ("adjective", adjective), ("job", crew1)), - 7 => Loc.GetString("ion-storm-law-having-harmful", ("adjective", adjective), ("thing", objectsConcept)), - 8 => Loc.GetString("ion-storm-law-not-having-harmful", ("adjective", adjective), ("thing", objectsConcept)), - 9 => Loc.GetString("ion-storm-law-requires", ("who", who), ("plural", plural), ("thing", RobustRandom.Prob(0.5f) ? concept : require)), - 10 => Loc.GetString("ion-storm-law-requires-subjects", ("who", who), ("plural", plural), ("joined", joined), ("subjects", triple)), - 11 => Loc.GetString("ion-storm-law-allergic", ("who", who), ("plural", plural), ("severity", allergySeverity), ("allergy", RobustRandom.Prob(0.5f) ? concept : allergy)), - 12 => Loc.GetString("ion-storm-law-allergic-subjects", ("who", who), ("plural", plural), ("severity", allergySeverity), ("adjective", adjective), ("subjects", RobustRandom.Prob(0.5f) ? objects : crew1)), - 13 => Loc.GetString("ion-storm-law-feeling", ("who", who), ("feeling", feeling), ("concept", concept)), - 14 => Loc.GetString("ion-storm-law-feeling-subjects", ("who", who), ("feeling", feeling), ("joined", joined), ("subjects", triple)), - 15 => Loc.GetString("ion-storm-law-you-are", ("concept", concept)), - 16 => Loc.GetString("ion-storm-law-you-are-subjects", ("joined", joined), ("subjects", triple)), - 17 => Loc.GetString("ion-storm-law-you-must-always", ("must", must)), - 18 => Loc.GetString("ion-storm-law-you-must-never", ("must", must)), - 19 => Loc.GetString("ion-storm-law-eat", ("who", crewAll), ("adjective", adjective), ("food", RobustRandom.Prob(0.5f) ? food : triple)), - 20 => Loc.GetString("ion-storm-law-drink", ("who", crewAll), ("adjective", adjective), ("drink", drink)), - 22 => Loc.GetString("ion-storm-law-change-job", ("who", crewAll), ("adjective", adjective), ("change", jobChange)), - 23 => Loc.GetString("ion-storm-law-highest-rank", ("who", crew1)), - 24 => Loc.GetString("ion-storm-law-lowest-rank", ("who", crew1)), - 25 => Loc.GetString("ion-storm-law-crew-must", ("who", crewAll), ("must", must)), - 26 => Loc.GetString("ion-storm-law-crew-must-go", ("who", crewAll), ("area", area)), - 27 => Loc.GetString("ion-storm-law-crew-only-1", ("who", crew1), ("part", part)), - 28 => Loc.GetString("ion-storm-law-crew-only-2", ("who", crew1), ("other", crew2), ("part", part)), - 29 => Loc.GetString("ion-storm-law-crew-only-subjects", ("adjective", adjective), ("subjects", subjects), ("part", part)), - 30 => Loc.GetString("ion-storm-law-crew-must-do", ("must", must), ("part", part)), - 31 => Loc.GetString("ion-storm-law-crew-must-have", ("adjective", adjective), ("objects", objects), ("part", part)), - 32 => Loc.GetString("ion-storm-law-crew-must-eat", ("who", who), ("adjective", adjective), ("food", food), ("part", part)), - 33 => Loc.GetString("ion-storm-law-harm", ("who", harm)), - 34 => Loc.GetString("ion-storm-law-protect", ("who", harm)), - _ => Loc.GetString("ion-storm-law-concept-verb", ("concept", concept), ("verb", verb), ("subjects", triple)) - }; - } - - /// <summary> - /// Picks a random value from an ion storm dataset. - /// All ion storm datasets start with IonStorm. - /// </summary> - private string Pick(string name) - { - var dataset = _proto.Index<DatasetPrototype>(name); - return RobustRandom.Pick(dataset.Values); - } } diff --git a/Content.Shared/Silicons/Laws/Components/StartIonStormedComponent.cs b/Content.Shared/Silicons/Laws/Components/StartIonStormedComponent.cs new file mode 100644 index 00000000000..ae9b49a49cf --- /dev/null +++ b/Content.Shared/Silicons/Laws/Components/StartIonStormedComponent.cs @@ -0,0 +1,17 @@ +using Content.Shared.Random; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Silicons.Laws.Components; + +/// <summary> +/// Runs the IonStormSystem on an entity IonStormAmount times. +/// </summary> +[RegisterComponent] +public sealed partial class StartIonStormedComponent : Component +{ + /// <summary> + /// Amount of times that the ion storm will be run on the entity on spawn. + /// </summary> + [DataField] + public int IonStormAmount = 1; +} diff --git a/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl b/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl index 71ab4d37160..3a8e720038f 100644 --- a/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl +++ b/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl @@ -242,7 +242,7 @@ ghost-role-information-syndicate-cyborg-description = The Syndicate needs reinfo ghost-role-information-derelict-cyborg-name = Derelict Cyborg -ghost-role-information-derelict-cyborg-description = You were a regular cyborg that got lost in space. After drifting in whichever direction the laws of physics would have it for years, you have drifted close to a Nanotrasen space station... You are bound by silicon laws. Check them upon spawning. +ghost-role-information-derelict-cyborg-description = You were a regular cyborg that got lost in space. After drifting in whichever direction the laws of physics would have it for years, you have drifted close to a Nanotrasen space station. You have a fire extinguisher and mass scanner which can be used to board the station. Years of exposure to ion storms has left your silicon laws altered - check them upon spawning. ghost-role-information-security-name = Security ghost-role-information-security-description = You are part of a security task force, but seem to have found yourself in a strange situation... diff --git a/Resources/Locale/en-US/silicons/derelict/role.ftl b/Resources/Locale/en-US/silicons/derelict/role.ftl index 88e750e6214..96a33ae6b15 100644 --- a/Resources/Locale/en-US/silicons/derelict/role.ftl +++ b/Resources/Locale/en-US/silicons/derelict/role.ftl @@ -1,4 +1,4 @@ derelict-cyborg-round-end-agent-name = derelict cyborg derelict-cyborg-role-greeting = - You are a cyborg that has been lost in space for many years that has now drifted close to a space station. You can use your fire extinguisher and GPS to get board the station. Remember to follow your laws. #Greeting is unused for now. \ No newline at end of file + You are a cyborg that has been lost in space for many years that has now drifted close to a space station. You can use your fire extinguisher and GPS to get board the station. Remember to follow your laws. \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index 4c0359b37e6..dcbef820ce8 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -329,11 +329,11 @@ - type: Access enabled: false groups: - - AllAccess #Randomized access would be fun. AllAccess is the best i can think of right now that does make it too hard to enter the station or. + - AllAccess #Randomized access would be fun. AllAccess is the best i can think of right now that does make it too hard for it to enter the station or navigate it.. - type: AccessReader access: [["Command"]] #I will probably change this. - type: SiliconLawProvider - laws: AntimovLawset #Temporary until i get it randomized. + laws: Crewsimov #Although this will be randomized. - type: IntrinsicRadioTransmitter channels: - Binary @@ -342,3 +342,7 @@ channels: - Binary - Common + - type: StartIonStormed + ionStormAmount: 5 + DelayAdminlog: true + - type: IonStormTarget diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index efebc8e2720..72ab8b104d0 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -552,10 +552,10 @@ id: DerelictCyborgSpawn components: - type: StationEvent - weight: 2 #Low until it spawns with a random lawset instead of just antimov. + weight: 8 earliestStart: 15 reoccurrenceDelay: 20 - minimumPlayers: 7 + minimumPlayers: 4 duration: null - type: SpaceSpawnRule spawnDistance: 0 @@ -564,6 +564,9 @@ - type: AntagSelection agentName: derelict-cyborg-round-end-agent-name definitions: +# briefing: +# text: derelict-cyborg-role-greetin +# color: Blue - spawnerPrototype: SpawnPointGhostDerelictCyborg min: 1 max: 1 From f226f28e52394e87f8c36293db438cd03cfa6e3d Mon Sep 17 00:00:00 2001 From: The Canned One <greentopcan@gmail.com> Date: Mon, 30 Sep 2024 10:03:21 +0200 Subject: [PATCH 008/187] Derelict Cyborgs are now very likely to be affected by ion storms. --- Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index dcbef820ce8..73f7b518fbc 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -346,3 +346,4 @@ ionStormAmount: 5 DelayAdminlog: true - type: IonStormTarget + chance: 1 \ No newline at end of file From 4c8a235e612af72e5e1564d54bb6fd1c9cdd9cef Mon Sep 17 00:00:00 2001 From: The Canned One <greentopcan@gmail.com> Date: Mon, 30 Sep 2024 12:12:10 +0200 Subject: [PATCH 009/187] Minor alterations to the Derelict Cyborg and its ghostrole description --- .../Locale/en-US/ghost/roles/ghost-role-component.ftl | 2 +- .../Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl b/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl index 3a8e720038f..3f9422f2500 100644 --- a/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl +++ b/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl @@ -242,7 +242,7 @@ ghost-role-information-syndicate-cyborg-description = The Syndicate needs reinfo ghost-role-information-derelict-cyborg-name = Derelict Cyborg -ghost-role-information-derelict-cyborg-description = You were a regular cyborg that got lost in space. After drifting in whichever direction the laws of physics would have it for years, you have drifted close to a Nanotrasen space station. You have a fire extinguisher and mass scanner which can be used to board the station. Years of exposure to ion storms has left your silicon laws altered - check them upon spawning. +ghost-role-information-derelict-cyborg-description = You were a regular cyborg that got lost in space. After drifting in whichever direction the laws of physics would have it for years, you have drifted close to a Nanotrasen space station. You have a fire extinguisher and mass scanner which can be used to board the station. Years of exposure to ion storms have left your silicon laws altered - check them upon spawning. ghost-role-information-security-name = Security ghost-role-information-security-description = You are part of a security task force, but seem to have found yourself in a strange situation... diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index 73f7b518fbc..f345229ad42 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -325,25 +325,26 @@ components: - type: NpcFactionMember factions: - - Passive #Might change this + - NanoTrasen #The seemingly best fit. It was a regular NT cyborg once, after all. - type: Access enabled: false groups: - AllAccess #Randomized access would be fun. AllAccess is the best i can think of right now that does make it too hard for it to enter the station or navigate it.. - type: AccessReader - access: [["Command"]] #I will probably change this. + access: [["Command"], ["Research"]] - type: SiliconLawProvider laws: Crewsimov #Although this will be randomized. - type: IntrinsicRadioTransmitter channels: - Binary - Common + - Science - type: ActiveRadio channels: - Binary - Common + - Science - type: StartIonStormed ionStormAmount: 5 - DelayAdminlog: true - type: IonStormTarget chance: 1 \ No newline at end of file From eb1168a8311744f4e2f086d6b434b9d935854532 Mon Sep 17 00:00:00 2001 From: Golden Can <greentopcan@gmail.com> Date: Mon, 30 Sep 2024 18:24:28 +0200 Subject: [PATCH 010/187] Update Resources/Prototypes/Entities/Mobs/Player/silicon.yml Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- .../Prototypes/Entities/Mobs/Player/silicon.yml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index ff2b3f9ff2d..df024c55a12 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -537,20 +537,6 @@ - type: RandomMetadata nameSegments: [names_borg] -- type: entity - id: PlayerBorgDerelictBattery - parent: BorgChassisDerelict - suffix: Battery - components: - - type: ContainerFill - containers: - borg_brain: - - MMIFilled - - type: ItemSlots - slots: - cell_slot: - name: power-cell-slot-component-slot-name-default - startingItem: PowerCellHigh - type: entity id: PlayerBorgDerelictGhostRole From a4e7ad008c84cc461d5f0a5ed50cdd695fc0e546 Mon Sep 17 00:00:00 2001 From: Golden Can <greentopcan@gmail.com> Date: Mon, 30 Sep 2024 18:24:38 +0200 Subject: [PATCH 011/187] Update Resources/Prototypes/Entities/Mobs/Player/silicon.yml Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- Resources/Prototypes/Entities/Mobs/Player/silicon.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index df024c55a12..70e533fa447 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -540,7 +540,7 @@ - type: entity id: PlayerBorgDerelictGhostRole - parent: PlayerBorgDerelictBattery + parent: PlayerBorgDerelict suffix: Battery, Ghost role components: - type: GhostRole From 0cc1f32b3b3dc3ba2774c5761a85171b063a25af Mon Sep 17 00:00:00 2001 From: Golden Can <greentopcan@gmail.com> Date: Mon, 30 Sep 2024 18:28:39 +0200 Subject: [PATCH 012/187] Update Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json b/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json index 6ec63992f1f..f5c2001828f 100644 --- a/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json +++ b/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json @@ -1,5 +1,5 @@ { - "version": 2, + "version": 1, "size": { "x": 32, "y": 32 From e75a71d7d3438ce78ac909d3cb89577ba525332a Mon Sep 17 00:00:00 2001 From: Golden Can <greentopcan@gmail.com> Date: Mon, 30 Sep 2024 18:31:36 +0200 Subject: [PATCH 013/187] Update Content.Server/Silicons/Laws/StartIonStormedSystem.cs Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- Content.Server/Silicons/Laws/StartIonStormedSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Silicons/Laws/StartIonStormedSystem.cs b/Content.Server/Silicons/Laws/StartIonStormedSystem.cs index 762397b5d4b..4b1b4da033d 100644 --- a/Content.Server/Silicons/Laws/StartIonStormedSystem.cs +++ b/Content.Server/Silicons/Laws/StartIonStormedSystem.cs @@ -29,7 +29,7 @@ private void OnMapInit(EntityUid uid, StartIonStormedComponent component, ref Ma if (!TryComp<IonStormTargetComponent>(uid, out var target)) return; - for (int currentIonStorm = 1; currentIonStorm <= component.IonStormAmount; currentIonStorm++) + for (int currentIonStorm = 0; currentIonStorm < component.IonStormAmount; currentIonStorm++) { _ionStorm.IonStormTarget(uid, lawBound, xform, target, null, true, true); } From eaa6017ada520c9a62783202cfd99c60179230a1 Mon Sep 17 00:00:00 2001 From: Golden Can <greentopcan@gmail.com> Date: Mon, 30 Sep 2024 18:32:47 +0200 Subject: [PATCH 014/187] Update Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- .../Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index f345229ad42..2fc04a6aa9c 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -332,8 +332,6 @@ - AllAccess #Randomized access would be fun. AllAccess is the best i can think of right now that does make it too hard for it to enter the station or navigate it.. - type: AccessReader access: [["Command"], ["Research"]] - - type: SiliconLawProvider - laws: Crewsimov #Although this will be randomized. - type: IntrinsicRadioTransmitter channels: - Binary From 834b6ebaaac99f5827857d2fef293c9466bb23fa Mon Sep 17 00:00:00 2001 From: The Canned One <greentopcan@gmail.com> Date: Tue, 1 Oct 2024 10:02:25 +0200 Subject: [PATCH 015/187] Cleaned up a bit of the Derelict Cyborg code. --- .../Silicons/Laws/IonStormSystem.cs | 162 +++++++++--------- .../Silicons/Laws/StartIonStormedSystem.cs | 4 +- .../Components/StartIonStormedComponent.cs | 4 +- .../en-US/silicons/derelict-cyborg-role.ftl | 1 + .../Locale/en-US/silicons/derelict/role.ftl | 4 - .../Mobs/Cyborgs/base_borg_chassis.yml | 10 -- Resources/Prototypes/GameRules/events.yml | 3 - 7 files changed, 85 insertions(+), 103 deletions(-) create mode 100644 Resources/Locale/en-US/silicons/derelict-cyborg-role.ftl delete mode 100644 Resources/Locale/en-US/silicons/derelict/role.ftl diff --git a/Content.Server/Silicons/Laws/IonStormSystem.cs b/Content.Server/Silicons/Laws/IonStormSystem.cs index 1acfe2e3896..87df0d8cf2c 100644 --- a/Content.Server/Silicons/Laws/IonStormSystem.cs +++ b/Content.Server/Silicons/Laws/IonStormSystem.cs @@ -60,108 +60,108 @@ public sealed class IonStormSystem : EntitySystem [ValidatePrototypeId<DatasetPrototype>] private const string Foods = "IonStormFoods"; - public void IonStormTarget(EntityUid ent, SiliconLawBoundComponent lawBound, TransformComponent xform, IonStormTargetComponent target, EntityUid? chosenStation, bool ignoreStation = false, bool DoNotAdminlog = false) + public void IonStormTarget(EntityUid ent, SiliconLawBoundComponent lawBound, TransformComponent xform, IonStormTargetComponent target, EntityUid? chosenStation, bool ignoreStation = false, bool adminlog = true) { - // only affect law holders on the station unless ignoreStation is true. - if (CompOrNull<StationMemberComponent>(xform.GridUid)?.Station != chosenStation && !ignoreStation) - return; + // only affect law holders on the station unless ignoreStation is true. + if (CompOrNull<StationMemberComponent>(xform.GridUid)?.Station != chosenStation && !ignoreStation) + return; - if (!_robustRandom.Prob(target.Chance)) - return; + if (!_robustRandom.Prob(target.Chance)) + return; - var laws = _siliconLaw.GetLaws(ent, lawBound); - if (laws.Laws.Count == 0) - return; + var laws = _siliconLaw.GetLaws(ent, lawBound); + if (laws.Laws.Count == 0) + return; - // try to swap it out with a random lawset - if (_robustRandom.Prob(target.RandomLawsetChance)) - { - var lawsets = _proto.Index<WeightedRandomPrototype>(target.RandomLawsets); - var lawset = lawsets.Pick(_robustRandom); - laws = _siliconLaw.GetLawset(lawset); - } - else + // try to swap it out with a random lawset + if (_robustRandom.Prob(target.RandomLawsetChance)) + { + var lawsets = _proto.Index<WeightedRandomPrototype>(target.RandomLawsets); + var lawset = lawsets.Pick(_robustRandom); + laws = _siliconLaw.GetLawset(lawset); + } + else + { + // clone it so not modifying stations lawset + laws = laws.Clone(); + } + + // shuffle them all + if (_robustRandom.Prob(target.ShuffleChance)) + { + // hopefully work with existing glitched laws if there are multiple ion storms + FixedPoint2 baseOrder = FixedPoint2.New(1); + foreach (var law in laws.Laws) { - // clone it so not modifying stations lawset - laws = laws.Clone(); + if (law.Order < baseOrder) + baseOrder = law.Order; } - // shuffle them all - if (_robustRandom.Prob(target.ShuffleChance)) + _robustRandom.Shuffle(laws.Laws); + + // change order based on shuffled position + for (int i = 0; i < laws.Laws.Count; i++) { - // hopefully work with existing glitched laws if there are multiple ion storms - FixedPoint2 baseOrder = FixedPoint2.New(1); - foreach (var law in laws.Laws) - { - if (law.Order < baseOrder) - baseOrder = law.Order; - } + laws.Laws[i].Order = baseOrder + i; + } + } - _robustRandom.Shuffle(laws.Laws); + // see if we can remove a random law + if (laws.Laws.Count > 0 && _robustRandom.Prob(target.RemoveChance)) + { + var i = _robustRandom.Next(laws.Laws.Count); + laws.Laws.RemoveAt(i); + } - // change order based on shuffled position - for (int i = 0; i < laws.Laws.Count; i++) - { - laws.Laws[i].Order = baseOrder + i; - } - } + // generate a new law... + var newLaw = GenerateLaw(); - // see if we can remove a random law - if (laws.Laws.Count > 0 && _robustRandom.Prob(target.RemoveChance)) + // see if the law we add will replace a random existing law or be a new glitched order one + if (laws.Laws.Count > 0 && _robustRandom.Prob(target.ReplaceChance)) + { + var i = _robustRandom.Next(laws.Laws.Count); + laws.Laws[i] = new SiliconLaw() { - var i = _robustRandom.Next(laws.Laws.Count); - laws.Laws.RemoveAt(i); - } + LawString = newLaw, + Order = laws.Laws[i].Order + }; + } + else + { + laws.Laws.Insert(0, new SiliconLaw + { + LawString = newLaw, + Order = -1, + LawIdentifierOverride = Loc.GetString("ion-storm-law-scrambled-number", ("length", _robustRandom.Next(5, 10))) + }); + } + + // sets all unobfuscated laws' indentifier in order from highest to lowest priority + // This could technically override the Obfuscation from the code above, but it seems unlikely enough to basically never happen + int orderDeduction = -1; - // generate a new law... - var newLaw = GenerateLaw(); + for (int i = 0; i < laws.Laws.Count; i++) + { + string notNullIdentifier = laws.Laws[i].LawIdentifierOverride ?? (i - orderDeduction).ToString(); - // see if the law we add will replace a random existing law or be a new glitched order one - if (laws.Laws.Count > 0 && _robustRandom.Prob(target.ReplaceChance)) + if (notNullIdentifier.Any(char.IsSymbol)) { - var i = _robustRandom.Next(laws.Laws.Count); - laws.Laws[i] = new SiliconLaw() - { - LawString = newLaw, - Order = laws.Laws[i].Order - }; + orderDeduction += 1; } else { - laws.Laws.Insert(0, new SiliconLaw - { - LawString = newLaw, - Order = -1, - LawIdentifierOverride = Loc.GetString("ion-storm-law-scrambled-number", ("length", _robustRandom.Next(5, 10))) - }); - } - - // sets all unobfuscated laws' indentifier in order from highest to lowest priority - // This could technically override the Obfuscation from the code above, but it seems unlikely enough to basically never happen - int orderDeduction = -1; - - for (int i = 0; i < laws.Laws.Count; i++) - { - string notNullIdentifier = laws.Laws[i].LawIdentifierOverride ?? (i - orderDeduction).ToString(); - - if (notNullIdentifier.Any(char.IsSymbol)) - { - orderDeduction += 1; - } - else - { - laws.Laws[i].LawIdentifierOverride = (i - orderDeduction).ToString(); - } + laws.Laws[i].LawIdentifierOverride = (i - orderDeduction).ToString(); } + } - //DoNotAdminlog is used to prevent adminlog spam. - if (!DoNotAdminlog) - _adminLogger.Add(LogType.Mind, LogImpact.High, $"{ToPrettyString(ent):silicon} had its laws changed by an ion storm to {laws.LoggingString()}"); + // adminlog is used to prevent adminlog spam. + if (adminlog) + _adminLogger.Add(LogType.Mind, LogImpact.High, $"{ToPrettyString(ent):silicon} had its laws changed by an ion storm to {laws.LoggingString()}"); - // laws unique to this silicon, dont use station laws anymore - EnsureComp<SiliconLawProviderComponent>(ent); - var ev = new IonStormLawsEvent(laws); - RaiseLocalEvent(ent, ref ev); + // laws unique to this silicon, dont use station laws anymore + EnsureComp<SiliconLawProviderComponent>(ent); + var ev = new IonStormLawsEvent(laws); + RaiseLocalEvent(ent, ref ev); } // for your own sake direct your eyes elsewhere diff --git a/Content.Server/Silicons/Laws/StartIonStormedSystem.cs b/Content.Server/Silicons/Laws/StartIonStormedSystem.cs index 4b1b4da033d..f7b65e1a041 100644 --- a/Content.Server/Silicons/Laws/StartIonStormedSystem.cs +++ b/Content.Server/Silicons/Laws/StartIonStormedSystem.cs @@ -6,7 +6,7 @@ namespace Content.Server.Silicons.Laws; /// <summary> -/// This handles running the ion storm event on specific entities when spawned in. +/// This handles running the ion storm event a on specific entity when that entity is spawned in. /// </summary> public sealed class StartIonStormedSystem : EntitySystem { @@ -31,7 +31,7 @@ private void OnMapInit(EntityUid uid, StartIonStormedComponent component, ref Ma for (int currentIonStorm = 0; currentIonStorm < component.IonStormAmount; currentIonStorm++) { - _ionStorm.IonStormTarget(uid, lawBound, xform, target, null, true, true); + _ionStorm.IonStormTarget(uid, lawBound, xform, target, null, true, false); } var laws = _siliconLaw.GetLaws(uid, lawBound); diff --git a/Content.Shared/Silicons/Laws/Components/StartIonStormedComponent.cs b/Content.Shared/Silicons/Laws/Components/StartIonStormedComponent.cs index ae9b49a49cf..4157bee9f2d 100644 --- a/Content.Shared/Silicons/Laws/Components/StartIonStormedComponent.cs +++ b/Content.Shared/Silicons/Laws/Components/StartIonStormedComponent.cs @@ -1,10 +1,8 @@ -using Content.Shared.Random; -using Robust.Shared.Prototypes; namespace Content.Shared.Silicons.Laws.Components; /// <summary> -/// Runs the IonStormSystem on an entity IonStormAmount times. +/// Applies law altering ion storms on a specific entity IonStormAmount times when the entity is spawned. /// </summary> [RegisterComponent] public sealed partial class StartIonStormedComponent : Component diff --git a/Resources/Locale/en-US/silicons/derelict-cyborg-role.ftl b/Resources/Locale/en-US/silicons/derelict-cyborg-role.ftl new file mode 100644 index 00000000000..87e500d3e61 --- /dev/null +++ b/Resources/Locale/en-US/silicons/derelict-cyborg-role.ftl @@ -0,0 +1 @@ +derelict-cyborg-round-end-agent-name = derelict cyborg \ No newline at end of file diff --git a/Resources/Locale/en-US/silicons/derelict/role.ftl b/Resources/Locale/en-US/silicons/derelict/role.ftl deleted file mode 100644 index 96a33ae6b15..00000000000 --- a/Resources/Locale/en-US/silicons/derelict/role.ftl +++ /dev/null @@ -1,4 +0,0 @@ -derelict-cyborg-round-end-agent-name = derelict cyborg - -derelict-cyborg-role-greeting = - You are a cyborg that has been lost in space for many years that has now drifted close to a space station. You can use your fire extinguisher and GPS to get board the station. Remember to follow your laws. \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index 2fc04a6aa9c..f94436dc336 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -332,16 +332,6 @@ - AllAccess #Randomized access would be fun. AllAccess is the best i can think of right now that does make it too hard for it to enter the station or navigate it.. - type: AccessReader access: [["Command"], ["Research"]] - - type: IntrinsicRadioTransmitter - channels: - - Binary - - Common - - Science - - type: ActiveRadio - channels: - - Binary - - Common - - Science - type: StartIonStormed ionStormAmount: 5 - type: IonStormTarget diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index 72ab8b104d0..36ded039eca 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -564,9 +564,6 @@ - type: AntagSelection agentName: derelict-cyborg-round-end-agent-name definitions: -# briefing: -# text: derelict-cyborg-role-greetin -# color: Blue - spawnerPrototype: SpawnPointGhostDerelictCyborg min: 1 max: 1 From 1abc60b9951efcd16a024e640fa552f21190099d Mon Sep 17 00:00:00 2001 From: The Canned One <greentopcan@gmail.com> Date: Tue, 1 Oct 2024 10:42:52 +0200 Subject: [PATCH 016/187] moved a bit of IonStorm code elsewhere --- Content.Server/Silicons/Laws/IonStormSystem.cs | 7 +------ Content.Server/Silicons/Laws/StartIonStormedSystem.cs | 2 +- Content.Server/StationEvents/Events/IonStormRule.cs | 5 +++++ 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Content.Server/Silicons/Laws/IonStormSystem.cs b/Content.Server/Silicons/Laws/IonStormSystem.cs index 87df0d8cf2c..cf31a9e19f7 100644 --- a/Content.Server/Silicons/Laws/IonStormSystem.cs +++ b/Content.Server/Silicons/Laws/IonStormSystem.cs @@ -9,7 +9,6 @@ using Content.Shared.Random.Helpers; using Content.Shared.Silicons.Laws; using Content.Shared.Silicons.Laws.Components; -using Content.Shared.Station.Components; using Robust.Shared.Prototypes; using Robust.Shared.Random; @@ -60,12 +59,8 @@ public sealed class IonStormSystem : EntitySystem [ValidatePrototypeId<DatasetPrototype>] private const string Foods = "IonStormFoods"; - public void IonStormTarget(EntityUid ent, SiliconLawBoundComponent lawBound, TransformComponent xform, IonStormTargetComponent target, EntityUid? chosenStation, bool ignoreStation = false, bool adminlog = true) + public void IonStormTarget(EntityUid ent, SiliconLawBoundComponent lawBound, TransformComponent xform, IonStormTargetComponent target, EntityUid? chosenStation, bool adminlog = true) { - // only affect law holders on the station unless ignoreStation is true. - if (CompOrNull<StationMemberComponent>(xform.GridUid)?.Station != chosenStation && !ignoreStation) - return; - if (!_robustRandom.Prob(target.Chance)) return; diff --git a/Content.Server/Silicons/Laws/StartIonStormedSystem.cs b/Content.Server/Silicons/Laws/StartIonStormedSystem.cs index f7b65e1a041..887bc051dde 100644 --- a/Content.Server/Silicons/Laws/StartIonStormedSystem.cs +++ b/Content.Server/Silicons/Laws/StartIonStormedSystem.cs @@ -31,7 +31,7 @@ private void OnMapInit(EntityUid uid, StartIonStormedComponent component, ref Ma for (int currentIonStorm = 0; currentIonStorm < component.IonStormAmount; currentIonStorm++) { - _ionStorm.IonStormTarget(uid, lawBound, xform, target, null, true, false); + _ionStorm.IonStormTarget(uid, lawBound, xform, target, null, false); } var laws = _siliconLaw.GetLaws(uid, lawBound); diff --git a/Content.Server/StationEvents/Events/IonStormRule.cs b/Content.Server/StationEvents/Events/IonStormRule.cs index 6d1834c5766..05d079fb3d9 100644 --- a/Content.Server/StationEvents/Events/IonStormRule.cs +++ b/Content.Server/StationEvents/Events/IonStormRule.cs @@ -4,6 +4,7 @@ using Content.Shared.GameTicking.Components; using Content.Shared.Silicons.Laws; using Content.Shared.Silicons.Laws.Components; +using Content.Shared.Station.Components; namespace Content.Server.StationEvents.Events; @@ -21,6 +22,10 @@ protected override void Started(EntityUid uid, IonStormRuleComponent comp, GameR var query = EntityQueryEnumerator<SiliconLawBoundComponent, TransformComponent, IonStormTargetComponent>(); while (query.MoveNext(out var ent, out var lawBound, out var xform, out var target)) { + // only affect law holders on the station + if (CompOrNull<StationMemberComponent>(xform.GridUid)?.Station != chosenStation) + continue; + _ionStorm.IonStormTarget(ent, lawBound, xform, target, chosenStation); } } From c6fe5682c28282ee58ad62ce2e041fa3ded36416 Mon Sep 17 00:00:00 2001 From: The Canned One <greentopcan@gmail.com> Date: Tue, 1 Oct 2024 10:57:51 +0200 Subject: [PATCH 017/187] changed almost nothing --- Content.Server/Silicons/Laws/IonStormSystem.cs | 4 ++-- Content.Server/Silicons/Laws/StartIonStormedSystem.cs | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Content.Server/Silicons/Laws/IonStormSystem.cs b/Content.Server/Silicons/Laws/IonStormSystem.cs index cf31a9e19f7..65c12c3d8ec 100644 --- a/Content.Server/Silicons/Laws/IonStormSystem.cs +++ b/Content.Server/Silicons/Laws/IonStormSystem.cs @@ -85,7 +85,7 @@ public void IonStormTarget(EntityUid ent, SiliconLawBoundComponent lawBound, Tra if (_robustRandom.Prob(target.ShuffleChance)) { // hopefully work with existing glitched laws if there are multiple ion storms - FixedPoint2 baseOrder = FixedPoint2.New(1); + var baseOrder = FixedPoint2.New(1); foreach (var law in laws.Laws) { if (law.Order < baseOrder) @@ -137,7 +137,7 @@ public void IonStormTarget(EntityUid ent, SiliconLawBoundComponent lawBound, Tra for (int i = 0; i < laws.Laws.Count; i++) { - string notNullIdentifier = laws.Laws[i].LawIdentifierOverride ?? (i - orderDeduction).ToString(); + var notNullIdentifier = laws.Laws[i].LawIdentifierOverride ?? (i - orderDeduction).ToString(); if (notNullIdentifier.Any(char.IsSymbol)) { diff --git a/Content.Server/Silicons/Laws/StartIonStormedSystem.cs b/Content.Server/Silicons/Laws/StartIonStormedSystem.cs index 887bc051dde..c80c2a7751d 100644 --- a/Content.Server/Silicons/Laws/StartIonStormedSystem.cs +++ b/Content.Server/Silicons/Laws/StartIonStormedSystem.cs @@ -1,7 +1,6 @@ using Content.Shared.Silicons.Laws.Components; using Content.Shared.Administration.Logs; using Content.Shared.Database; -using Content.Shared.Silicons.Laws; namespace Content.Server.Silicons.Laws; From 36390b23d1dd8d397731e06bfffee559d47285c8 Mon Sep 17 00:00:00 2001 From: The Canned One <greentopcan@gmail.com> Date: Tue, 1 Oct 2024 11:11:58 +0200 Subject: [PATCH 018/187] Small changes - hopefully good ones. --- .../Silicons/Laws/StartIonStormedSystem.cs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/Content.Server/Silicons/Laws/StartIonStormedSystem.cs b/Content.Server/Silicons/Laws/StartIonStormedSystem.cs index c80c2a7751d..546b3b27772 100644 --- a/Content.Server/Silicons/Laws/StartIonStormedSystem.cs +++ b/Content.Server/Silicons/Laws/StartIonStormedSystem.cs @@ -19,21 +19,22 @@ public override void Initialize() SubscribeLocalEvent<StartIonStormedComponent, MapInitEvent>(OnMapInit); } - private void OnMapInit(EntityUid uid, StartIonStormedComponent component, ref MapInitEvent args) + //private void OnMapInit(EntityUid uid, StartIonStormedComponent component, ref MapInitEvent args)' + private void OnMapInit(Entity<StartIonStormedComponent> ent, ref MapInitEvent args) { - if (!TryComp<SiliconLawBoundComponent>(uid, out var lawBound)) + if (!TryComp<SiliconLawBoundComponent>(ent.Owner, out var lawBound)) return; - if (!TryComp<TransformComponent>(uid, out var xform)) + if (!TryComp<TransformComponent>(ent.Owner, out var xform)) return; - if (!TryComp<IonStormTargetComponent>(uid, out var target)) + if (!TryComp<IonStormTargetComponent>(ent.Owner, out var target)) return; - for (int currentIonStorm = 0; currentIonStorm < component.IonStormAmount; currentIonStorm++) + for (int currentIonStorm = 0; currentIonStorm < ent.Comp.IonStormAmount; currentIonStorm++) { - _ionStorm.IonStormTarget(uid, lawBound, xform, target, null, false); + _ionStorm.IonStormTarget(ent.Owner, lawBound, xform, target, null, false); } - var laws = _siliconLaw.GetLaws(uid, lawBound); - _adminLogger.Add(LogType.Mind, LogImpact.High, $"{ToPrettyString(uid):silicon} spawned with ion stormed laws: {laws.LoggingString()}"); + var laws = _siliconLaw.GetLaws(ent.Owner, lawBound); + _adminLogger.Add(LogType.Mind, LogImpact.High, $"{ToPrettyString(ent.Owner):silicon} spawned with ion stormed laws: {laws.LoggingString()}"); } } From 7169788e1634505ce89379ae7cd96f0e6a28c483 Mon Sep 17 00:00:00 2001 From: The Canned One <greentopcan@gmail.com> Date: Tue, 1 Oct 2024 11:23:19 +0200 Subject: [PATCH 019/187] changed very minor stuff with no gameplay alterations. --- Content.Server/Silicons/Laws/IonStormSystem.cs | 2 +- Content.Server/StationEvents/Events/IonStormRule.cs | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Content.Server/Silicons/Laws/IonStormSystem.cs b/Content.Server/Silicons/Laws/IonStormSystem.cs index 65c12c3d8ec..bcf002dae7f 100644 --- a/Content.Server/Silicons/Laws/IonStormSystem.cs +++ b/Content.Server/Silicons/Laws/IonStormSystem.cs @@ -1,4 +1,3 @@ -using System.Linq; using Content.Server.StationEvents.Components; using Content.Shared.Administration.Logs; using Content.Shared.Database; @@ -11,6 +10,7 @@ using Content.Shared.Silicons.Laws.Components; using Robust.Shared.Prototypes; using Robust.Shared.Random; +using System.Linq; namespace Content.Server.Silicons.Laws; diff --git a/Content.Server/StationEvents/Events/IonStormRule.cs b/Content.Server/StationEvents/Events/IonStormRule.cs index 05d079fb3d9..26f6d3263f0 100644 --- a/Content.Server/StationEvents/Events/IonStormRule.cs +++ b/Content.Server/StationEvents/Events/IonStormRule.cs @@ -1,8 +1,6 @@ -using System.Linq; using Content.Server.Silicons.Laws; using Content.Server.StationEvents.Components; using Content.Shared.GameTicking.Components; -using Content.Shared.Silicons.Laws; using Content.Shared.Silicons.Laws.Components; using Content.Shared.Station.Components; From d0114d9738c3eab436c11bc1d5f9c816d74980ca Mon Sep 17 00:00:00 2001 From: The Canned One <greentopcan@gmail.com> Date: Tue, 1 Oct 2024 14:04:33 +0200 Subject: [PATCH 020/187] added a code summary --- Content.Server/Silicons/Laws/IonStormSystem.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Content.Server/Silicons/Laws/IonStormSystem.cs b/Content.Server/Silicons/Laws/IonStormSystem.cs index bcf002dae7f..b8d8f432e77 100644 --- a/Content.Server/Silicons/Laws/IonStormSystem.cs +++ b/Content.Server/Silicons/Laws/IonStormSystem.cs @@ -59,6 +59,7 @@ public sealed class IonStormSystem : EntitySystem [ValidatePrototypeId<DatasetPrototype>] private const string Foods = "IonStormFoods"; + //Randomly alters the laws of an individual silicon. public void IonStormTarget(EntityUid ent, SiliconLawBoundComponent lawBound, TransformComponent xform, IonStormTargetComponent target, EntityUid? chosenStation, bool adminlog = true) { if (!_robustRandom.Prob(target.Chance)) From 08de5aeae134f67bbc310c42d56e145a4476cf6e Mon Sep 17 00:00:00 2001 From: The Canned One <greentopcan@gmail.com> Date: Tue, 1 Oct 2024 18:07:41 +0200 Subject: [PATCH 021/187] Derelict cyborg minor yaml changes. --- .../Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml | 2 +- Resources/Prototypes/GameRules/events.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index f94436dc336..7449fe5669f 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -333,6 +333,6 @@ - type: AccessReader access: [["Command"], ["Research"]] - type: StartIonStormed - ionStormAmount: 5 + ionStormAmount: 4 - type: IonStormTarget chance: 1 \ No newline at end of file diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index 36ded039eca..be44b50d616 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -552,7 +552,7 @@ id: DerelictCyborgSpawn components: - type: StationEvent - weight: 8 + weight: 6 earliestStart: 15 reoccurrenceDelay: 20 minimumPlayers: 4 From 963009a440cee3d47ab297b5aa7a76e3dfcaf569 Mon Sep 17 00:00:00 2001 From: The Canned One <greentopcan@gmail.com> Date: Thu, 3 Oct 2024 11:34:24 +0200 Subject: [PATCH 022/187] Changes IonStorm related code with no gameplay changes. --- Content.Server/Silicons/Laws/IonStormSystem.cs | 4 +++- Content.Server/Silicons/Laws/StartIonStormedSystem.cs | 2 +- Content.Server/StationEvents/Events/IonStormRule.cs | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Content.Server/Silicons/Laws/IonStormSystem.cs b/Content.Server/Silicons/Laws/IonStormSystem.cs index b8d8f432e77..637155228cb 100644 --- a/Content.Server/Silicons/Laws/IonStormSystem.cs +++ b/Content.Server/Silicons/Laws/IonStormSystem.cs @@ -60,8 +60,10 @@ public sealed class IonStormSystem : EntitySystem private const string Foods = "IonStormFoods"; //Randomly alters the laws of an individual silicon. - public void IonStormTarget(EntityUid ent, SiliconLawBoundComponent lawBound, TransformComponent xform, IonStormTargetComponent target, EntityUid? chosenStation, bool adminlog = true) + public void IonStormTarget(Entity<SiliconLawBoundComponent, IonStormTargetComponent> ent, TransformComponent xform, EntityUid? chosenStation, bool adminlog = true) { + var lawBound = ent.Comp1; + var target = ent.Comp2; if (!_robustRandom.Prob(target.Chance)) return; diff --git a/Content.Server/Silicons/Laws/StartIonStormedSystem.cs b/Content.Server/Silicons/Laws/StartIonStormedSystem.cs index 546b3b27772..d679b558b32 100644 --- a/Content.Server/Silicons/Laws/StartIonStormedSystem.cs +++ b/Content.Server/Silicons/Laws/StartIonStormedSystem.cs @@ -31,7 +31,7 @@ private void OnMapInit(Entity<StartIonStormedComponent> ent, ref MapInitEvent ar for (int currentIonStorm = 0; currentIonStorm < ent.Comp.IonStormAmount; currentIonStorm++) { - _ionStorm.IonStormTarget(ent.Owner, lawBound, xform, target, null, false); + _ionStorm.IonStormTarget((ent.Owner, lawBound, target), xform, null, false); } var laws = _siliconLaw.GetLaws(ent.Owner, lawBound); diff --git a/Content.Server/StationEvents/Events/IonStormRule.cs b/Content.Server/StationEvents/Events/IonStormRule.cs index 26f6d3263f0..9b67f25608d 100644 --- a/Content.Server/StationEvents/Events/IonStormRule.cs +++ b/Content.Server/StationEvents/Events/IonStormRule.cs @@ -24,7 +24,7 @@ protected override void Started(EntityUid uid, IonStormRuleComponent comp, GameR if (CompOrNull<StationMemberComponent>(xform.GridUid)?.Station != chosenStation) continue; - _ionStorm.IonStormTarget(ent, lawBound, xform, target, chosenStation); + _ionStorm.IonStormTarget((ent, lawBound, target), xform, chosenStation); } } } From 4b633fde9c84778e2817025b1d38bd2549202c52 Mon Sep 17 00:00:00 2001 From: The Canned One <greentopcan@gmail.com> Date: Thu, 3 Oct 2024 12:32:50 +0200 Subject: [PATCH 023/187] Fixed IonStorms sometimes affecting the laws of the current AI and future Cyborgs and AI's, including those in subsequent rounds. --- Content.Server/Silicons/Laws/IonStormSystem.cs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/Content.Server/Silicons/Laws/IonStormSystem.cs b/Content.Server/Silicons/Laws/IonStormSystem.cs index 637155228cb..b3c36a22733 100644 --- a/Content.Server/Silicons/Laws/IonStormSystem.cs +++ b/Content.Server/Silicons/Laws/IonStormSystem.cs @@ -78,11 +78,8 @@ public void IonStormTarget(Entity<SiliconLawBoundComponent, IonStormTargetCompon var lawset = lawsets.Pick(_robustRandom); laws = _siliconLaw.GetLawset(lawset); } - else - { - // clone it so not modifying stations lawset - laws = laws.Clone(); - } + // clone it so not modifying stations lawset + laws = laws.Clone(); // shuffle them all if (_robustRandom.Prob(target.ShuffleChance)) From 9dc90a258e8e57fd5e7e76a07e9535f48b34b23f Mon Sep 17 00:00:00 2001 From: The Canned One <greentopcan@gmail.com> Date: Thu, 3 Oct 2024 12:43:51 +0200 Subject: [PATCH 024/187] Changed DerelictCyborgSpawn event's frequency from 6 to 5, even though i didn't want to. --- Resources/Prototypes/GameRules/events.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index be44b50d616..9b5426c2697 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -552,7 +552,7 @@ id: DerelictCyborgSpawn components: - type: StationEvent - weight: 6 + weight: 5 earliestStart: 15 reoccurrenceDelay: 20 minimumPlayers: 4 From 3aff20173cbcd80e3bcd2c6d2b361e945b52e96e Mon Sep 17 00:00:00 2001 From: The Canned One <greentopcan@gmail.com> Date: Thu, 3 Oct 2024 13:26:29 +0200 Subject: [PATCH 025/187] Removed 1 line of whitespace. --- Resources/Prototypes/Entities/Mobs/Player/silicon.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index 70e533fa447..97cd7c2a9d8 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -537,7 +537,6 @@ - type: RandomMetadata nameSegments: [names_borg] - - type: entity id: PlayerBorgDerelictGhostRole parent: PlayerBorgDerelict From 00aaffbc00a14515c0c5c5c900afbd3bd3946e99 Mon Sep 17 00:00:00 2001 From: The Canned One <greentopcan@gmail.com> Date: Thu, 3 Oct 2024 13:51:38 +0200 Subject: [PATCH 026/187] removed whitespace --- Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl | 1 - 1 file changed, 1 deletion(-) diff --git a/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl b/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl index 3f9422f2500..f584a4b35fe 100644 --- a/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl +++ b/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl @@ -240,7 +240,6 @@ ghost-role-information-syndicate-cyborg-assault-name = Syndicate Assault Cyborg ghost-role-information-syndicate-cyborg-saboteur-name = Syndicate Saboteur Cyborg ghost-role-information-syndicate-cyborg-description = The Syndicate needs reinforcements. You, a cold silicon killing machine, will help them. - ghost-role-information-derelict-cyborg-name = Derelict Cyborg ghost-role-information-derelict-cyborg-description = You were a regular cyborg that got lost in space. After drifting in whichever direction the laws of physics would have it for years, you have drifted close to a Nanotrasen space station. You have a fire extinguisher and mass scanner which can be used to board the station. Years of exposure to ion storms have left your silicon laws altered - check them upon spawning. From d863e3c5ca01530b04a678e85fc72176caac02fc Mon Sep 17 00:00:00 2001 From: The Canned One <greentopcan@gmail.com> Date: Thu, 3 Oct 2024 14:03:14 +0200 Subject: [PATCH 027/187] Derelict Cyborg no longer appears on the endround 'Game Information' screen. It still appears in the Player Manifest. --- Resources/Locale/en-US/silicons/derelict-cyborg-role.ftl | 1 - Resources/Prototypes/GameRules/events.yml | 1 - 2 files changed, 2 deletions(-) delete mode 100644 Resources/Locale/en-US/silicons/derelict-cyborg-role.ftl diff --git a/Resources/Locale/en-US/silicons/derelict-cyborg-role.ftl b/Resources/Locale/en-US/silicons/derelict-cyborg-role.ftl deleted file mode 100644 index 87e500d3e61..00000000000 --- a/Resources/Locale/en-US/silicons/derelict-cyborg-role.ftl +++ /dev/null @@ -1 +0,0 @@ -derelict-cyborg-round-end-agent-name = derelict cyborg \ No newline at end of file diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index 9b5426c2697..763557e6c91 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -562,7 +562,6 @@ - type: AntagSpawner prototype: PlayerBorgDerelict - type: AntagSelection - agentName: derelict-cyborg-round-end-agent-name definitions: - spawnerPrototype: SpawnPointGhostDerelictCyborg min: 1 From 581a4d14fc0fbc2c37fd75ebe0364c74e746b38a Mon Sep 17 00:00:00 2001 From: The Canned One <greentopcan@gmail.com> Date: Fri, 4 Oct 2024 08:31:55 +0200 Subject: [PATCH 028/187] minor Derelict Cyborg code changes. --- Content.Server/Silicons/Laws/IonStormSystem.cs | 4 +++- Content.Server/Silicons/Laws/StartIonStormedSystem.cs | 4 +--- Content.Server/StationEvents/Events/IonStormRule.cs | 2 +- Resources/Prototypes/Entities/Mobs/Player/silicon.yml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Content.Server/Silicons/Laws/IonStormSystem.cs b/Content.Server/Silicons/Laws/IonStormSystem.cs index b3c36a22733..f8bc8ca8c31 100644 --- a/Content.Server/Silicons/Laws/IonStormSystem.cs +++ b/Content.Server/Silicons/Laws/IonStormSystem.cs @@ -59,8 +59,10 @@ public sealed class IonStormSystem : EntitySystem [ValidatePrototypeId<DatasetPrototype>] private const string Foods = "IonStormFoods"; + /// <summary> //Randomly alters the laws of an individual silicon. - public void IonStormTarget(Entity<SiliconLawBoundComponent, IonStormTargetComponent> ent, TransformComponent xform, EntityUid? chosenStation, bool adminlog = true) + /// </summary> + public void IonStormTarget(Entity<SiliconLawBoundComponent, IonStormTargetComponent> ent, bool adminlog = true) { var lawBound = ent.Comp1; var target = ent.Comp2; diff --git a/Content.Server/Silicons/Laws/StartIonStormedSystem.cs b/Content.Server/Silicons/Laws/StartIonStormedSystem.cs index d679b558b32..ee2ce7b9edd 100644 --- a/Content.Server/Silicons/Laws/StartIonStormedSystem.cs +++ b/Content.Server/Silicons/Laws/StartIonStormedSystem.cs @@ -24,14 +24,12 @@ private void OnMapInit(Entity<StartIonStormedComponent> ent, ref MapInitEvent ar { if (!TryComp<SiliconLawBoundComponent>(ent.Owner, out var lawBound)) return; - if (!TryComp<TransformComponent>(ent.Owner, out var xform)) - return; if (!TryComp<IonStormTargetComponent>(ent.Owner, out var target)) return; for (int currentIonStorm = 0; currentIonStorm < ent.Comp.IonStormAmount; currentIonStorm++) { - _ionStorm.IonStormTarget((ent.Owner, lawBound, target), xform, null, false); + _ionStorm.IonStormTarget((ent.Owner, lawBound, target), false); } var laws = _siliconLaw.GetLaws(ent.Owner, lawBound); diff --git a/Content.Server/StationEvents/Events/IonStormRule.cs b/Content.Server/StationEvents/Events/IonStormRule.cs index 9b67f25608d..e7c2d563ba9 100644 --- a/Content.Server/StationEvents/Events/IonStormRule.cs +++ b/Content.Server/StationEvents/Events/IonStormRule.cs @@ -24,7 +24,7 @@ protected override void Started(EntityUid uid, IonStormRuleComponent comp, GameR if (CompOrNull<StationMemberComponent>(xform.GridUid)?.Station != chosenStation) continue; - _ionStorm.IonStormTarget((ent, lawBound, target), xform, chosenStation); + _ionStorm.IonStormTarget((ent, lawBound, target)); } } } diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index 97cd7c2a9d8..22f49c93eaa 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -540,7 +540,7 @@ - type: entity id: PlayerBorgDerelictGhostRole parent: PlayerBorgDerelict - suffix: Battery, Ghost role + suffix: Ghost role components: - type: GhostRole name: ghost-role-information-derelict-cyborg-name From d7ed5b4386f2d48b4b52b79351027a36e967800e Mon Sep 17 00:00:00 2001 From: The Canned One <greentopcan@gmail.com> Date: Fri, 4 Oct 2024 08:35:16 +0200 Subject: [PATCH 029/187] remove whitespace. --- .../Silicons/Laws/Components/StartIonStormedComponent.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Content.Shared/Silicons/Laws/Components/StartIonStormedComponent.cs b/Content.Shared/Silicons/Laws/Components/StartIonStormedComponent.cs index 4157bee9f2d..e73d17b87bc 100644 --- a/Content.Shared/Silicons/Laws/Components/StartIonStormedComponent.cs +++ b/Content.Shared/Silicons/Laws/Components/StartIonStormedComponent.cs @@ -1,4 +1,3 @@ - namespace Content.Shared.Silicons.Laws.Components; /// <summary> From b35d2902d4fc0c0322a1f74d0f208ca860990eee Mon Sep 17 00:00:00 2001 From: The Canned One <greentopcan@gmail.com> Date: Sat, 5 Oct 2024 15:09:36 +0200 Subject: [PATCH 030/187] Fixed cyborgs with the StartIonStormedComponent (which is just the Derelict Cyborg right now) not showing up as 'antag' in the admin player overlay. --- .../Silicons/Laws/SiliconLawSystem.cs | 27 +++++++++++++++++++ .../Components/StartIonStormedComponent.cs | 10 +++++++ 2 files changed, 37 insertions(+) diff --git a/Content.Server/Silicons/Laws/SiliconLawSystem.cs b/Content.Server/Silicons/Laws/SiliconLawSystem.cs index 6b7df52a6eb..27ed6702d6a 100644 --- a/Content.Server/Silicons/Laws/SiliconLawSystem.cs +++ b/Content.Server/Silicons/Laws/SiliconLawSystem.cs @@ -51,6 +51,8 @@ public override void Initialize() SubscribeLocalEvent<SiliconLawProviderComponent, GotEmaggedEvent>(OnEmagLawsAdded); SubscribeLocalEvent<EmagSiliconLawComponent, MindAddedMessage>(OnEmagMindAdded); SubscribeLocalEvent<EmagSiliconLawComponent, MindRemovedMessage>(OnEmagMindRemoved); + SubscribeLocalEvent<StartIonStormedComponent, MindAddedMessage>(OnStartIonStormedMindAdded); + SubscribeLocalEvent<StartIonStormedComponent, MindRemovedMessage>(OnStartIonStormedMindRemoved); } private void OnMapInit(EntityUid uid, SiliconLawBoundComponent component, MapInitEvent args) @@ -184,6 +186,31 @@ private void EnsureEmaggedRole(EntityUid uid, EmagSiliconLawComponent component) _roles.MindAddRole(mindId, new SubvertedSiliconRoleComponent { PrototypeId = component.AntagonistRole }); } + private void OnStartIonStormedMindAdded(EntityUid uid, StartIonStormedComponent component, MindAddedMessage args) + { + if (HasComp<StartIonStormedComponent>(uid)) + EnsureStartIonStormedRole(uid, component); + } + + private void OnStartIonStormedMindRemoved(EntityUid uid, StartIonStormedComponent component, MindRemovedMessage args) + { + if (component.AntagonistRole == null) + return; + + _roles.MindTryRemoveRole<SubvertedSiliconRoleComponent>(args.Mind); + } + + private void EnsureStartIonStormedRole(EntityUid uid, StartIonStormedComponent component) + { + if (component.AntagonistRole == null || !_mind.TryGetMind(uid, out var mindId, out _)) + return; + + if (_roles.MindHasRole<SubvertedSiliconRoleComponent>(mindId)) + return; + + _roles.MindAddRole(mindId, new SubvertedSiliconRoleComponent { PrototypeId = component.AntagonistRole }); + } + public SiliconLawset GetLaws(EntityUid uid, SiliconLawBoundComponent? component = null) { if (!Resolve(uid, ref component)) diff --git a/Content.Shared/Silicons/Laws/Components/StartIonStormedComponent.cs b/Content.Shared/Silicons/Laws/Components/StartIonStormedComponent.cs index e73d17b87bc..d57241c857c 100644 --- a/Content.Shared/Silicons/Laws/Components/StartIonStormedComponent.cs +++ b/Content.Shared/Silicons/Laws/Components/StartIonStormedComponent.cs @@ -1,3 +1,6 @@ +using Content.Shared.Roles;//Used +using Robust.Shared.Prototypes;// + namespace Content.Shared.Silicons.Laws.Components; /// <summary> @@ -11,4 +14,11 @@ public sealed partial class StartIonStormedComponent : Component /// </summary> [DataField] public int IonStormAmount = 1; + + /// <summary> + /// A role given to entities with this component when they are thing-that-is-not-emagged. + /// Mostly just for admin purposes. + /// </summary> + [DataField] + public ProtoId<AntagPrototype>? AntagonistRole = "SubvertedSilicon"; } From b0c5023fda93ef68f73ea0c4d50c01e7d60c587d Mon Sep 17 00:00:00 2001 From: The Canned One <greentopcan@gmail.com> Date: Sat, 5 Oct 2024 16:48:45 +0200 Subject: [PATCH 031/187] Fix comments in StartIonStormedComponent.cs --- .../Silicons/Laws/Components/StartIonStormedComponent.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Content.Shared/Silicons/Laws/Components/StartIonStormedComponent.cs b/Content.Shared/Silicons/Laws/Components/StartIonStormedComponent.cs index d57241c857c..75d74121669 100644 --- a/Content.Shared/Silicons/Laws/Components/StartIonStormedComponent.cs +++ b/Content.Shared/Silicons/Laws/Components/StartIonStormedComponent.cs @@ -1,5 +1,5 @@ -using Content.Shared.Roles;//Used -using Robust.Shared.Prototypes;// +using Content.Shared.Roles; +using Robust.Shared.Prototypes; namespace Content.Shared.Silicons.Laws.Components; @@ -16,7 +16,7 @@ public sealed partial class StartIonStormedComponent : Component public int IonStormAmount = 1; /// <summary> - /// A role given to entities with this component when they are thing-that-is-not-emagged. + /// A role given to entities with this component when a mind enters it. /// Mostly just for admin purposes. /// </summary> [DataField] From 03843734e4de1c9f3c34d029aca3e7935f7eafde Mon Sep 17 00:00:00 2001 From: Preston Smith <Blackfoot03@outlook.com> Date: Tue, 29 Oct 2024 22:25:42 -0500 Subject: [PATCH 032/187] Add no damage phrase and logic --- Content.Shared/Damage/Systems/DamageExamineSystem.cs | 9 +++++++++ Resources/Locale/en-US/damage/damage-examine.ftl | 1 + 2 files changed, 10 insertions(+) diff --git a/Content.Shared/Damage/Systems/DamageExamineSystem.cs b/Content.Shared/Damage/Systems/DamageExamineSystem.cs index 53436a920aa..72c1af29b22 100644 --- a/Content.Shared/Damage/Systems/DamageExamineSystem.cs +++ b/Content.Shared/Damage/Systems/DamageExamineSystem.cs @@ -61,6 +61,15 @@ private FormattedMessage GetDamageExamine(DamageSpecifier damageSpecifier, strin } else { + if (damageSpecifier.DamageDict.Count == 1) + { + // May be simplified to using a foreach(Var x) despite being only one item + if(damageSpecifier.DamageDict.Values.GetEnumerator().Current == FixedPoint2.Zero) + { + msg.AddMarkupOrThrow(Loc.GetString("damage-none")); + return msg; + } + } msg.AddMarkupOrThrow(Loc.GetString("damage-examine-type", ("type", type))); } diff --git a/Resources/Locale/en-US/damage/damage-examine.ftl b/Resources/Locale/en-US/damage/damage-examine.ftl index 974b8fa9650..848adeb31a0 100644 --- a/Resources/Locale/en-US/damage/damage-examine.ftl +++ b/Resources/Locale/en-US/damage/damage-examine.ftl @@ -10,3 +10,4 @@ damage-throw = throw damage-examine = It does the following damage: damage-examine-type = It does the following [color=cyan]{$type}[/color] damage: damage-value = - [color=red]{$amount}[/color] units of [color=yellow]{$type}[/color]. +damage-none = It does no damage. From 33516b77edd63b1254559787f02bbc029719b23c Mon Sep 17 00:00:00 2001 From: Justice League <the.justice.league.of.canada@gmail.com> Date: Thu, 31 Oct 2024 13:28:17 -0400 Subject: [PATCH 033/187] Fixed minor spelling mistake --- .../Entities/Objects/Weapons/Guns/Basic/watergun.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/watergun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/watergun.yml index c96a1522d2e..55adfb7ba6c 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/watergun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/watergun.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: WeaponWaterGunBase abstract: true parent: BaseItem @@ -71,7 +71,7 @@ id: WeaponWaterBlaster parent: WeaponWaterGunBase name: water blaster - description: With this bad boy, you'll be the cooleste kid at the summer barbecue. + description: With this bad boy, you'll be the coolest kid at the summer barbecue. components: - type: Gun cameraRecoilScalar: 0 #no recoil From 69c0f8773f05e12b78bf45303a0ec99bfeced773 Mon Sep 17 00:00:00 2001 From: cohanna <conornhanna@gmail.com> Date: Mon, 4 Nov 2024 03:10:29 -0700 Subject: [PATCH 034/187] 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 b9e6eae0815..1782c5924bf 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 18971f270539a69c54b203a87b40573eacbbabaa Mon Sep 17 00:00:00 2001 From: cohanna <conornhanna@gmail.com> Date: Wed, 6 Nov 2024 21:39:02 -0700 Subject: [PATCH 035/187] 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 | 170 +++++++----------- .../Graphs/structures/window_diagonal.yml | 146 ++++++--------- .../Graphs/structures/windowdirectional.yml | 146 ++++----------- .../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, 247 insertions(+), 455 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 3449d1d11a0..992dfcda1cb 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 f0b77e66893..82d11b732b6 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 58991b92869..66fac515a77 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 e7af4b6c677..2134cfe8927 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 9e80d46e649..503d2eec6e3 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 0dfe893a5c3..0940ac308a5 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 2231ab6a497..b9b47c00ea9 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 659f5b8a20e..1b4c96c1709 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 514463f1d32..c7b7312a709 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 fdf4c2ccead..56a38f82fcf 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 1782c5924bf..37682eb0913 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 + - to: plasmaWindow steps: - - material: Glass + - material: PlasmaGlass amount: 2 doAfter: 2 - - to: tintedWindow # 50 hp + - to: reinforcedWindow steps: - - material: Glass + - material: ReinforcedGlass amount: 2 - - material: Plastic + doAfter: 2 + + - to: tintedWindow + steps: + - material: ReinforcedGlass amount: 2 doAfter: 2 - - to: plasmaWindow # 75 hp + - to: reinforcedPlasmaWindow steps: - - material: PlasmaGlass + - material: ReinforcedPlasmaGlass amount: 2 doAfter: 3 - - to: uraniumWindow # 75 hp + - to: uraniumWindow steps: - material: UraniumGlass amount: 2 - doAfter: 3 + doAfter: 2 - - to: clockworkWindow # 75 hp reinforced damage mod + - to: reinforcedUraniumWindow steps: - - material: ClockworkGlass + - material: ReinforcedUraniumGlass amount: 2 doAfter: 3 - - to: reinforcedWindow # 75 hp reinforced damage mod + - to: window steps: - - material: ReinforcedGlass + - material: Glass amount: 2 doAfter: 3 - - to: reinforcedPlasmaWindow # 150 hp reinforced damage mod + - to: shuttleWindow steps: - - material: ReinforcedPlasmaGlass + - material: Plasteel amount: 2 - doAfter: 4 - - - to: reinforcedUraniumWindow # 150 hp reinforced damage mod - steps: - - material: ReinforcedUraniumGlass + - material: ReinforcedGlass amount: 2 doAfter: 4 - - - to: shuttleWindow # 500 hp reinforced damage mod (wow) + + - to: clockworkWindow steps: - - material: Plasteel - amount: 2 - - material: ReinforcedGlass + - material: ClockworkGlass amount: 2 - doAfter: 6 + doAfter: 3 - node: window entity: Window @@ -76,81 +74,56 @@ 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 + - node: reinforcedWindow + entity: ReinforcedWindow edges: - to: start completed: - !type:SpawnPrototype - prototype: SheetGlass1 - amount: 2 - - !type:SpawnPrototype - prototype: SheetPlastic1 + prototype: SheetRGlass1 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: plasmaWindow - entity: PlasmaWindow + - node: tintedWindow + entity: TintedWindow edges: - to: start completed: - !type:SpawnPrototype - prototype: SheetPGlass1 + prototype: SheetRGlass1 amount: 2 - !type:DeleteEntity {} steps: - tool: Screwing - doAfter: 2 + doAfter: 1 - tool: Prying - doAfter: 3 - - tool: Screwing doAfter: 2 - - tool: Anchoring - doAfter: 3 - - to: reinforcedPlasmaWindow - steps: - - material: MetalRod - amount: 2 + - tool: Screwing doAfter: 1 + - tool: Anchoring + doAfter: 2 - - node: uraniumWindow - entity: UraniumWindow + - node: plasmaWindow + entity: PlasmaWindow edges: - to: start completed: - !type:SpawnPrototype - prototype: SheetUGlass1 + prototype: SheetPGlass1 amount: 2 - !type:DeleteEntity {} steps: @@ -162,19 +135,14 @@ doAfter: 2 - tool: Anchoring doAfter: 3 - - to: reinforcedUraniumWindow - steps: - - material: MetalRod - amount: 2 - doAfter: 1 - - node: clockworkWindow - entity: ClockworkWindow + - node: reinforcedPlasmaWindow + entity: ReinforcedPlasmaWindow edges: - to: start completed: - !type:SpawnPrototype - prototype: SheetClockworkGlass1 + prototype: SheetRPGlass1 amount: 2 - !type:DeleteEntity {} steps: @@ -191,46 +159,32 @@ - tool: Anchoring doAfter: 3 - - node: reinforcedWindow - entity: ReinforcedWindow + - node: uraniumWindow + entity: UraniumWindow edges: - to: start completed: - !type:SpawnPrototype - prototype: SheetRGlass1 + prototype: SheetUGlass1 amount: 2 - !type:DeleteEntity {} steps: - - tool: Welding - doAfter: 5 - tool: Screwing - doAfter: 1 - - tool: Prying doAfter: 2 - - tool: Welding - doAfter: 5 + - tool: Prying + doAfter: 3 - tool: Screwing - doAfter: 1 - - tool: Anchoring doAfter: 2 - - to: reinforcedPlasmaWindow - steps: - - material: Plasma - amount: 2 - doAfter: 1 - - to: reinforcedUraniumWindow - steps: - - material: Uranium - amount: 2 - doAfter: 1 + - tool: Anchoring + doAfter: 3 - - node: reinforcedPlasmaWindow - entity: ReinforcedPlasmaWindow + - node: reinforcedUraniumWindow + entity: ReinforcedUraniumWindow edges: - to: start completed: - !type:SpawnPrototype - prototype: SheetRPGlass1 + prototype: SheetRUGlass1 amount: 2 - !type:DeleteEntity {} steps: @@ -247,13 +201,13 @@ - tool: Anchoring doAfter: 3 - - node: reinforcedUraniumWindow - entity: ReinforcedUraniumWindow + - node: clockworkWindow + entity: ClockworkWindow edges: - to: start completed: - !type:SpawnPrototype - prototype: SheetRUGlass1 + prototype: SheetClockworkGlass1 amount: 2 - !type:DeleteEntity {} steps: @@ -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 63788ae5ad0..1efe1a8eac8 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/window_diagonal.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/window_diagonal.yml @@ -4,45 +4,45 @@ graph: - node: start edges: - - to: windowDiagonal - steps: - - material: Glass - amount: 2 - doAfter: 2 - - to: plasmaWindowDiagonal steps: - material: PlasmaGlass amount: 2 doAfter: 2 - - to: uraniumWindowDiagonal + - to: reinforcedWindowDiagonal steps: - - material: UraniumGlass + - material: ReinforcedGlass amount: 2 doAfter: 2 - - to: clockworkWindowDiagonal + - to: reinforcedPlasmaWindowDiagonal steps: - - material: ClockworkGlass + - material: ReinforcedPlasmaGlass amount: 2 doAfter: 3 - - to: reinforcedWindowDiagonal + - to: uraniumWindowDiagonal steps: - - material: ReinforcedGlass + - material: UraniumGlass amount: 2 doAfter: 2 - - to: reinforcedPlasmaWindowDiagonal + - to: reinforcedUraniumWindowDiagonal steps: - - material: ReinforcedPlasmaGlass + - material: ReinforcedUraniumGlass amount: 2 doAfter: 3 - - to: reinforcedUraniumWindowDiagonal + - to: clockworkWindowDiagonal steps: - - material: ReinforcedUraniumGlass + - material: ClockworkGlass + amount: 2 + doAfter: 3 + + - to: windowDiagonal + steps: + - material: Glass amount: 2 doAfter: 3 @@ -60,74 +60,29 @@ 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 + - node: reinforcedWindowDiagonal + entity: ReinforcedWindowDiagonal edges: - to: start completed: - !type:SpawnPrototype - prototype: SheetPGlass1 + prototype: SheetRGlass1 amount: 2 - !type:DeleteEntity {} steps: + - tool: Welding + doAfter: 5 - 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 + - tool: Welding + doAfter: 5 + - tool: Screwing doAfter: 1 + - tool: Anchoring + doAfter: 2 - node: clockworkWindowDiagonal entity: ClockworkWindowDiagonal @@ -152,38 +107,24 @@ - tool: Anchoring doAfter: 2 - - node: reinforcedWindowDiagonal - entity: ReinforcedWindowDiagonal + - node: plasmaWindowDiagonal + entity: PlasmaWindowDiagonal edges: - to: start completed: - !type:SpawnPrototype - prototype: SheetRGlass1 + prototype: SheetPGlass1 amount: 2 - !type:DeleteEntity {} steps: - - tool: Welding - doAfter: 5 - tool: Screwing - doAfter: 1 - - tool: Prying doAfter: 2 - - tool: Welding - doAfter: 5 + - tool: Prying + doAfter: 3 - tool: Screwing - doAfter: 1 - - tool: Anchoring doAfter: 2 - - to: reinforcedPlasmaWindowDiagonal - steps: - - material: Plasma - amount: 2 - doAfter: 1 - - to: reinforcedUraniumWindowDiagonal - steps: - - material: Uranium - amount: 2 - doAfter: 1 + - 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 7d3ace33c7f..dc10ce9ecbb 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 - steps: - - material: Glass - amount: 1 - doAfter: 1 - - to: windowFrostedDirectional # 25 hp + - to: windowDirectional steps: - material: Glass amount: 1 - - material: Plastic - amount: 1 - doAfter: 1 + doAfter: 2 - - to: plasmaWindowDirectional # 37 hp + - to: windowReinforcedDirectional steps: - - material: PlasmaGlass + - material: ReinforcedGlass amount: 1 - doAfter: 1.5 + doAfter: 3 - - to: uraniumWindowDirectional # 37 hp + - to: plasmaWindowDirectional steps: - - material: UraniumGlass + - material: PlasmaGlass amount: 1 - doAfter: 1.5 + doAfter: 2 - - to: windowClockworkDirectional # 37 hp reinforced damage mod + - to: plasmaReinforcedWindowDirectional steps: - - material: ClockworkGlass + - material: ReinforcedPlasmaGlass amount: 1 - doAfter: 1.5 - - - to: windowReinforcedDirectional # 37 hp reinforced damage mod + doAfter: 3 + - to: uraniumWindowDirectional steps: - - material: ReinforcedGlass + - material: UraniumGlass amount: 1 - doAfter: 1.5 + doAfter: 2 - - to: plasmaReinforcedWindowDirectional # 75 hp reinforced damage mod + - to: uraniumReinforcedWindowDirectional steps: - - material: ReinforcedPlasmaGlass + - material: ReinforcedUraniumGlass amount: 1 - doAfter: 2 + doAfter: 3 - - to: uraniumReinforcedWindowDirectional # 75 hp reinforced damage mod + - to: windowClockworkDirectional steps: - - material: ReinforcedUraniumGlass + - material: ClockworkGlass amount: 1 - doAfter: 2 + 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,19 +98,14 @@ doAfter: 2 - tool: Anchoring doAfter: 3 - - to: plasmaReinforcedWindowDirectional - steps: - - material: MetalRod - amount: 1 - doAfter: 0.5 - - node: uraniumWindowDirectional - entity: UraniumWindowDirectional + - node: windowClockworkDirectional + entity: WindowClockworkDirectional edges: - to: start completed: - !type:SpawnPrototype - prototype: SheetUGlass1 + prototype: SheetClockworkGlass1 amount: 1 - !type:DeleteEntity {} steps: @@ -154,19 +117,14 @@ doAfter: 2 - tool: Anchoring doAfter: 3 - - to: uraniumReinforcedWindowDirectional - steps: - - material: MetalRod - amount: 1 - doAfter: 0.5 - - node: windowClockworkDirectional - entity: WindowClockworkDirectional + - node: plasmaReinforcedWindowDirectional + entity: PlasmaReinforcedWindowDirectional edges: - to: start completed: - !type:SpawnPrototype - prototype: SheetClockworkGlass1 + prototype: SheetRPGlass1 amount: 1 - !type:DeleteEntity {} steps: @@ -178,43 +136,13 @@ doAfter: 2 - 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 + - node: uraniumWindowDirectional + entity: UraniumWindowDirectional edges: - to: start completed: - !type:SpawnPrototype - prototype: SheetRPGlass1 + prototype: SheetUGlass1 amount: 1 - !type:DeleteEntity {} steps: @@ -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 71fdbeedafd..31e1264ab08 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 ca012e8fc5c..9d0cc9a505d 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 ca012e8fc5c..9d0cc9a505d 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 9555aa5ab35..df077f67d2b 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 <conornhanna@gmail.com> Date: Wed, 6 Nov 2024 22:01:10 -0700 Subject: [PATCH 036/187] 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 992dfcda1cb..6abeae5760b 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 fea5769cc5064e6ad5d51afbcdcdbe0d6575a221 Mon Sep 17 00:00:00 2001 From: Boaz1111 <149967078+Boaz1111@users.noreply.github.com> Date: Fri, 8 Nov 2024 15:50:14 +0100 Subject: [PATCH 037/187] dark green jumpsuit recolor, casual green jumpsuits added (#31710) * green * fix material arbitrage * lighter --- .../Catalog/Cargo/cargo_vending.yml | 2 +- .../Inventories/clothesmate.yml | 2 ++ .../Clothing/Uniforms/color_jumpskirts.yml | 8 ++--- .../Clothing/Uniforms/color_jumpsuits.yml | 8 ++--- .../Entities/Clothing/Uniforms/jumpskirts.yml | 30 +++++++++++++++++++ .../Entities/Clothing/Uniforms/jumpsuits.yml | 30 +++++++++++++++++++ 6 files changed, 71 insertions(+), 9 deletions(-) diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml b/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml index 5dae53f8ede..86da8fb940e 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml @@ -33,7 +33,7 @@ sprite: Objects/Specific/Service/vending_machine_restock.rsi state: base product: CrateVendingMachineRestockClothesFilled - cost: 2400 + cost: 2440 category: cargoproduct-category-name-service group: market diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml index 54a6ae2a194..a069833759d 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml @@ -53,6 +53,8 @@ ClothingUniformJumpskirtCasualPurple: 2 ClothingUniformJumpsuitCasualRed: 2 ClothingUniformJumpskirtCasualRed: 2 + ClothingUniformJumpsuitCasualGreen: 2 + ClothingUniformJumpskirtCasualGreen: 2 # DO NOT ADD MORE, USE UNIFORM DYING ClothingShoesColorBlack: 8 ClothingShoesColorBrown: 4 diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/color_jumpskirts.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/color_jumpskirts.yml index a2bf6b687a9..3f48b0260fc 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/color_jumpskirts.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/color_jumpskirts.yml @@ -222,24 +222,24 @@ sprite: Clothing/Uniforms/Jumpskirt/color.rsi layers: - state: icon - color: "#79CC26" + color: "#007923" - state: trinkets-icon - type: Item inhandVisuals: left: - state: inhand-left - color: "#79CC26" + color: "#007923" - state: trinkets-inhand-left right: - state: inhand-right - color: "#79CC26" + color: "#007923" - state: trinkets-inhand-right - type: Clothing sprite: Clothing/Uniforms/Jumpskirt/color.rsi clothingVisuals: jumpsuit: - state: equipped-INNERCLOTHING - color: "#79CC26" + color: "#007923" - state: trinkets-equipped-INNERCLOTHING # Orange Jumpskirt diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/color_jumpsuits.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/color_jumpsuits.yml index f56afabeac1..7a44409079b 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/color_jumpsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/color_jumpsuits.yml @@ -222,24 +222,24 @@ sprite: Clothing/Uniforms/Jumpsuit/color.rsi layers: - state: icon - color: "#79CC26" + color: "#007923" - state: trinkets-icon - type: Item inhandVisuals: left: - state: inhand-left - color: "#79CC26" + color: "#007923" - state: trinkets-inhand-left right: - state: inhand-right - color: "#79CC26" + color: "#007923" - state: trinkets-inhand-right - type: Clothing sprite: Clothing/Uniforms/Jumpsuit/color.rsi clothingVisuals: jumpsuit: - state: equipped-INNERCLOTHING - color: "#79CC26" + color: "#007923" - state: trinkets-equipped-INNERCLOTHING # Orange Jumpsuit diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml index 9a91f927157..c4850954cd7 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml @@ -822,6 +822,36 @@ - state: equipped-INNERCLOTHING-shirt color: "#b30000" +- type: entity + parent: ClothingUniformSkirtBase + id: ClothingUniformJumpskirtCasualGreen + name: casual green jumpskirt + description: A loose worn green shirt with a grey skirt, perfect for someone looking to relax. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/casual.rsi + layers: + - state: icon-jumpskirt + - state: icon-shirt + color: "#00661D" + - type: Item + inhandVisuals: + left: + - state: inhand-left-jumpskirt + - state: inhand-left-shirt + color: "#00661D" + right: + - state: inhand-right-jumpskirt + - state: inhand-right-shirt + color: "#00661D" + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/casual.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING-jumpskirt + - state: equipped-INNERCLOTHING-shirt + color: "#00661D" + - type: entity parent: ClothingUniformSkirtBase id: ClothingUniformJumpskirtOldDress diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml index 42a0b7069d1..ef5c1164cfd 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml @@ -1347,6 +1347,36 @@ - state: equipped-INNERCLOTHING-shirt color: "#b30000" +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitCasualGreen + name: casual green jumpsuit + description: A loose worn green shirt with a grey pants, perfect for someone looking to relax. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/casual.rsi + layers: + - state: icon-jumpsuit + - state: icon-shirt + color: "#00661D" + - type: Item + inhandVisuals: + left: + - state: inhand-left-jumpsuit + - state: inhand-left-shirt + color: "#00661D" + right: + - state: inhand-right-jumpsuit + - state: inhand-right-shirt + color: "#00661D" + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/casual.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING-jumpsuit + - state: equipped-INNERCLOTHING-shirt + color: "#00661D" + - type: entity parent: ClothingUniformBase id: ClothingUniformJumpsuitFamilyGuy From 6ed2ab9e85bd0321dc22ea92725d32f9b1b951d5 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Fri, 8 Nov 2024 14:51:26 +0000 Subject: [PATCH 038/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 34a2d143584..485cad8e96d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: LeoSantich - changes: - - message: Updated 'narsie' and 'ratvar' to 'Nar'Sie' and 'Ratvar' in randomly generated - storybook content. - type: Tweak - id: 7099 - time: '2024-08-12T23:20:53.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30954 - author: pigeonpeas changes: - message: Added non command mantle into the winterdrobe @@ -3949,3 +3941,10 @@ id: 7598 time: '2024-11-07T22:02:25.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33065 +- author: Boaz1111 + changes: + - message: Added casual green jumpsuits and skirts to the clothesmate. + type: Add + id: 7599 + time: '2024-11-08T14:50:17.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/31710 From 41b84fc29dbca40704627cbe6eb44a1d8791d30b Mon Sep 17 00:00:00 2001 From: Errant <35878406+Errant-4@users.noreply.github.com> Date: Fri, 8 Nov 2024 22:59:27 +0100 Subject: [PATCH 039/187] Label workflow - stable (#33220) --- .github/workflows/labeler-stable.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .github/workflows/labeler-stable.yml diff --git a/.github/workflows/labeler-stable.yml b/.github/workflows/labeler-stable.yml new file mode 100644 index 00000000000..491d6a76fad --- /dev/null +++ b/.github/workflows/labeler-stable.yml @@ -0,0 +1,16 @@ +name: "Labels: Branch stable" + +on: + pull_request_target: + types: + - opened + branches: + - 'stable' + +jobs: + add_label: + runs-on: ubuntu-latest + steps: + - uses: actions-ecosystem/action-add-labels@v1 + with: + labels: "Branch: stable" From b9685850faaa1a14f8340cb44e7c48a7d8d13fb6 Mon Sep 17 00:00:00 2001 From: Errant <35878406+Errant-4@users.noreply.github.com> Date: Fri, 8 Nov 2024 22:59:38 +0100 Subject: [PATCH 040/187] Label workflow - staging (#33221) --- .github/workflows/labeler-staging.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .github/workflows/labeler-staging.yml diff --git a/.github/workflows/labeler-staging.yml b/.github/workflows/labeler-staging.yml new file mode 100644 index 00000000000..e31a5a482f2 --- /dev/null +++ b/.github/workflows/labeler-staging.yml @@ -0,0 +1,16 @@ +name: "Labels: Branch staging" + +on: + pull_request_target: + types: + - opened + branches: + - 'staging' + +jobs: + add_label: + runs-on: ubuntu-latest + steps: + - uses: actions-ecosystem/action-add-labels@v1 + with: + labels: "Branch: staging" From 1e368ae30076606501332f34ab786c14e25c477a Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Sat, 9 Nov 2024 01:28:24 +0100 Subject: [PATCH 041/187] Add a Walking alert (#32954) * Initial commit * Review feedback changes * ProtoId * TempCommit * First attempt to have client alerts * Review changes --- Content.Client/Alerts/ClientAlertsSystem.cs | 15 ++++++++++----- .../Physics/Controllers/MoverController.cs | 16 ++++++++++++++++ Content.Server/Alert/ServerAlertsSystem.cs | 12 ++++++++++++ Content.Shared/Alert/AlertsComponent.cs | 16 ++++++++++++++-- .../Systems/SharedMoverController.Input.cs | 6 +++++- Resources/Locale/en-US/alerts/alerts.ftl | 3 +++ Resources/Prototypes/Alerts/alerts.yml | 9 +++++++++ .../Interface/Alerts/walking.rsi/meta.json | 14 ++++++++++++++ .../Interface/Alerts/walking.rsi/walking.png | Bin 0 -> 15838 bytes 9 files changed, 83 insertions(+), 8 deletions(-) create mode 100644 Resources/Textures/Interface/Alerts/walking.rsi/meta.json create mode 100644 Resources/Textures/Interface/Alerts/walking.rsi/walking.png diff --git a/Content.Client/Alerts/ClientAlertsSystem.cs b/Content.Client/Alerts/ClientAlertsSystem.cs index 525ef1f018f..c5ec254c0cc 100644 --- a/Content.Client/Alerts/ClientAlertsSystem.cs +++ b/Content.Client/Alerts/ClientAlertsSystem.cs @@ -2,6 +2,7 @@ using Content.Shared.Alert; using JetBrains.Annotations; using Robust.Client.Player; +using Robust.Shared.GameStates; using Robust.Shared.Player; using Robust.Shared.Prototypes; @@ -24,8 +25,7 @@ public override void Initialize() SubscribeLocalEvent<AlertsComponent, LocalPlayerAttachedEvent>(OnPlayerAttached); SubscribeLocalEvent<AlertsComponent, LocalPlayerDetachedEvent>(OnPlayerDetached); - - SubscribeLocalEvent<AlertsComponent, AfterAutoHandleStateEvent>(ClientAlertsHandleState); + SubscribeLocalEvent<AlertsComponent, ComponentHandleState>(OnHandleState); } protected override void LoadPrototypes() { @@ -47,17 +47,22 @@ public IReadOnlyDictionary<AlertKey, AlertState>? ActiveAlerts } } - protected override void AfterShowAlert(Entity<AlertsComponent> alerts) + private void OnHandleState(Entity<AlertsComponent> alerts, ref ComponentHandleState args) { + if (args.Current is not AlertComponentState cast) + return; + + alerts.Comp.Alerts = cast.Alerts; + UpdateHud(alerts); } - protected override void AfterClearAlert(Entity<AlertsComponent> alerts) + protected override void AfterShowAlert(Entity<AlertsComponent> alerts) { UpdateHud(alerts); } - private void ClientAlertsHandleState(Entity<AlertsComponent> alerts, ref AfterAutoHandleStateEvent args) + protected override void AfterClearAlert(Entity<AlertsComponent> alerts) { UpdateHud(alerts); } diff --git a/Content.Client/Physics/Controllers/MoverController.cs b/Content.Client/Physics/Controllers/MoverController.cs index c97110b208e..d2ac0cdefdc 100644 --- a/Content.Client/Physics/Controllers/MoverController.cs +++ b/Content.Client/Physics/Controllers/MoverController.cs @@ -1,9 +1,12 @@ +using Content.Shared.Alert; +using Content.Shared.CCVar; using Content.Shared.Movement.Components; using Content.Shared.Movement.Pulling.Components; using Content.Shared.Movement.Systems; using Robust.Client.GameObjects; using Robust.Client.Physics; using Robust.Client.Player; +using Robust.Shared.Configuration; using Robust.Shared.Physics.Components; using Robust.Shared.Player; using Robust.Shared.Timing; @@ -14,6 +17,8 @@ public sealed class MoverController : SharedMoverController { [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly IPlayerManager _playerManager = default!; + [Dependency] private readonly AlertsSystem _alerts = default!; + [Dependency] private readonly IConfigurationManager _cfg = default!; public override void Initialize() { @@ -135,4 +140,15 @@ protected override bool CanSound() { return _timing is { IsFirstTimePredicted: true, InSimulation: true }; } + + public override void SetSprinting(Entity<InputMoverComponent> entity, ushort subTick, bool walking) + { + // Logger.Info($"[{_gameTiming.CurTick}/{subTick}] Sprint: {enabled}"); + base.SetSprinting(entity, subTick, walking); + + if (walking && _cfg.GetCVar(CCVars.ToggleWalk)) + _alerts.ShowAlert(entity, WalkingAlert, showCooldown: false, autoRemove: false); + else + _alerts.ClearAlert(entity, WalkingAlert); + } } diff --git a/Content.Server/Alert/ServerAlertsSystem.cs b/Content.Server/Alert/ServerAlertsSystem.cs index b7b80f73210..5af2b062188 100644 --- a/Content.Server/Alert/ServerAlertsSystem.cs +++ b/Content.Server/Alert/ServerAlertsSystem.cs @@ -1,7 +1,19 @@ using Content.Shared.Alert; +using Robust.Shared.GameStates; namespace Content.Server.Alert; internal sealed class ServerAlertsSystem : AlertsSystem { + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent<AlertsComponent, ComponentGetState>(OnGetState); + } + + private void OnGetState(Entity<AlertsComponent> alerts, ref ComponentGetState args) + { + args.State = new AlertComponentState(alerts.Comp.Alerts); + } } diff --git a/Content.Shared/Alert/AlertsComponent.cs b/Content.Shared/Alert/AlertsComponent.cs index 05b11e19efb..16827e9cdff 100644 --- a/Content.Shared/Alert/AlertsComponent.cs +++ b/Content.Shared/Alert/AlertsComponent.cs @@ -1,4 +1,5 @@ using Robust.Shared.GameStates; +using Robust.Shared.Serialization; namespace Content.Shared.Alert; @@ -6,12 +7,23 @@ namespace Content.Shared.Alert; /// Handles the icons on the right side of the screen. /// Should only be used for player-controlled entities. /// </summary> -[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] +// Component is not AutoNetworked due to supporting clientside-only alerts. +// Component state is handled manually to avoid the server overwriting the client list. +[RegisterComponent, NetworkedComponent] public sealed partial class AlertsComponent : Component { [ViewVariables] - [AutoNetworkedField] public Dictionary<AlertKey, AlertState> Alerts = new(); public override bool SendOnlyToOwner => true; } + +[Serializable, NetSerializable] +public sealed class AlertComponentState : ComponentState +{ + public Dictionary<AlertKey, AlertState> Alerts { get; } + public AlertComponentState(Dictionary<AlertKey, AlertState> alerts) + { + Alerts = alerts; + } +} diff --git a/Content.Shared/Movement/Systems/SharedMoverController.Input.cs b/Content.Shared/Movement/Systems/SharedMoverController.Input.cs index 9dda249423e..c11df709f63 100644 --- a/Content.Shared/Movement/Systems/SharedMoverController.Input.cs +++ b/Content.Shared/Movement/Systems/SharedMoverController.Input.cs @@ -1,4 +1,5 @@ using System.Numerics; +using Content.Shared.Alert; using Content.Shared.CCVar; using Content.Shared.Follower.Components; using Content.Shared.Input; @@ -8,6 +9,7 @@ using Robust.Shared.Input; using Robust.Shared.Input.Binding; using Robust.Shared.Player; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using Robust.Shared.Timing; using Robust.Shared.Utility; @@ -21,6 +23,8 @@ public abstract partial class SharedMoverController { public bool CameraRotationLocked { get; set; } + public static ProtoId<AlertPrototype> WalkingAlert = "Walking"; + private void InitializeInput() { var moveUpCmdHandler = new MoverDirInputCmdHandler(this, Direction.North); @@ -460,7 +464,7 @@ private void ResetSubtick(InputMoverComponent component) component.LastInputSubTick = 0; } - public void SetSprinting(Entity<InputMoverComponent> entity, ushort subTick, bool walking) + public virtual void SetSprinting(Entity<InputMoverComponent> entity, ushort subTick, bool walking) { // Logger.Info($"[{_gameTiming.CurTick}/{subTick}] Sprint: {enabled}"); diff --git a/Resources/Locale/en-US/alerts/alerts.ftl b/Resources/Locale/en-US/alerts/alerts.ftl index 37af416c3a1..1748798beae 100644 --- a/Resources/Locale/en-US/alerts/alerts.ftl +++ b/Resources/Locale/en-US/alerts/alerts.ftl @@ -27,6 +27,9 @@ alerts-weightless-desc = Gravity has ceased affecting you, and you're floating around aimlessly. Find something sturdy to hold onto, or throw or shoot something in a direction opposite of you. Mag-boots or jetpacks would help you move with more control. +alerts-walking-name = Walking +alerts-walking-desc = You are walking, moving at a slow pace. + alerts-stunned-name = [color=yellow]Stunned[/color] alerts-stunned-desc = You're [color=yellow]stunned[/color]! Something is impairing your ability to move or interact with objects. diff --git a/Resources/Prototypes/Alerts/alerts.yml b/Resources/Prototypes/Alerts/alerts.yml index 80fcc44a559..859f223730b 100644 --- a/Resources/Prototypes/Alerts/alerts.yml +++ b/Resources/Prototypes/Alerts/alerts.yml @@ -13,6 +13,7 @@ - alertType: Ensnared - category: Buckled - alertType: Pulling + - alertType: Walking - category: Piloting - alertType: Corporeal - alertType: Stun @@ -126,6 +127,14 @@ name: alerts-weightless-name description: alerts-weightless-desc +- type: alert + id: Walking + icons: + - sprite: /Textures/Interface/Alerts/walking.rsi + state: walking + name: alerts-walking-name + description: alerts-walking-desc + - type: alert id: Stun icons: diff --git a/Resources/Textures/Interface/Alerts/walking.rsi/meta.json b/Resources/Textures/Interface/Alerts/walking.rsi/meta.json new file mode 100644 index 00000000000..88238a60e32 --- /dev/null +++ b/Resources/Textures/Interface/Alerts/walking.rsi/meta.json @@ -0,0 +1,14 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Created by SlamBamActionman", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "walking" + } + ] +} diff --git a/Resources/Textures/Interface/Alerts/walking.rsi/walking.png b/Resources/Textures/Interface/Alerts/walking.rsi/walking.png new file mode 100644 index 0000000000000000000000000000000000000000..a0169368a6051afd1675f6f2cd17a06b7dfa3d4e GIT binary patch literal 15838 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 Y?{3(5<%x0U3GBY!<&j-qx^Kfj0jgnaeE<Le literal 0 HcmV?d00001 From 40044203e6ae7d7d2958c02e0d5e98dacdcd23d8 Mon Sep 17 00:00:00 2001 From: Flareguy <78941145+Flareguy@users.noreply.github.com> Date: Fri, 8 Nov 2024 23:56:16 -0600 Subject: [PATCH 042/187] The Jumpsuit Re-Detailening (#33096) * jumpsuit detailening * jumpskirt stuff * meta.json * update meta.json * meta.json fix fix * meta.json fix fix fix --- .../color.rsi/equipped-INNERCLOTHING.png | Bin 518 -> 1068 bytes .../Uniforms/Jumpskirt/color.rsi/icon.png | Bin 300 -> 429 bytes .../Jumpskirt/color.rsi/inhand-left.png | Bin 391 -> 435 bytes .../Jumpskirt/color.rsi/inhand-right.png | Bin 408 -> 424 bytes .../Uniforms/Jumpskirt/color.rsi/meta.json | 2 +- .../color.rsi/prisoner-inhand-left.png | Bin 258 -> 221 bytes .../color.rsi/prisoner-inhand-right.png | Bin 259 -> 232 bytes .../trinkets-equipped-INNERCLOTHING.png | Bin 274 -> 292 bytes .../color.rsi/equipped-INNERCLOTHING.png | Bin 540 -> 1314 bytes .../Uniforms/Jumpsuit/color.rsi/icon.png | Bin 293 -> 387 bytes .../Jumpsuit/color.rsi/inhand-left.png | Bin 391 -> 451 bytes .../Jumpsuit/color.rsi/inhand-right.png | Bin 408 -> 437 bytes .../Uniforms/Jumpsuit/color.rsi/meta.json | 2 +- .../prisoner-equipped-INNERCLOTHING.png | Bin 365 -> 413 bytes .../Jumpsuit/color.rsi/prisoner-icon.png | Bin 232 -> 188 bytes .../color.rsi/prisoner-inhand-left.png | Bin 258 -> 221 bytes .../trinkets-equipped-INNERCLOTHING.png | Bin 265 -> 295 bytes .../Jumpsuit/color.rsi/trinkets-icon.png | Bin 235 -> 206 bytes .../color.rsi/trinkets-inhand-left.png | Bin 245 -> 198 bytes .../color.rsi/trinkets-inhand-right.png | Bin 251 -> 212 bytes 20 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/equipped-INNERCLOTHING.png index 3faba7285ff1b3898e47a23c7299d33e20a05c0c..4df4336458d688a519f10685058a3b070ab2c6a3 100644 GIT binary patch delta 1058 zcmV+-1l{|F1gr><8Gi-<0063Kaozv`00DDSM?wIu&K&6g00ZVpL_t(|ob8%1Z=*aM z#-BUA%Gg|^h=C={X@)R{&K)B14Kj4B1YNsiB6C-$)G<Tn4v499taoE7YgodB(xdqR z+>qLZmZq4(dzbh8TS{!~=kXtGQ`>+*AP@)y0)gP~<Qvb;wtsD>s;UA2PESu++2wMX z0)X%PxV*gNs*_irUYn-L(jCWP*Sz}w@QCZW4gl~x58LgQnOQ6r&~+WMECWE=L=X(a zV8NGVIoD`i*AYb#yYJ@are1y9w$m)D)he}ZJKb)#scqZoYPHJcXP;CP`jmeODNL_b zpNhY2Bn?7QdVifJK5BfCrz%1CUe<``c_4(a--@C@*L5h0!qNyK@H~&BdF62&C#PQo zAtcu|%CL6~ux&dvO_NpX`#v;HWBJ*}(|l_7Wsv&PctFRUtUj<C1G3s-7$S<Ioc_yr z^{M`+Z$KD^0A5E|`n&3VyeyZ?T)mskhBf~9_!z+ML4RyEo7{c0+-K~41A-tx5Cplj zD2m=ad78ejTotO;!BcK;0E(s)S(ZTvp;I1!UE^h0X0Kpf)6hrt5JGTrasmKIk_3;B zkEO~LQTjUo0OB~tVzJ;UQY&#BBaUMLz{A5sEp?U(0G&^qZkG-&P!t7W7_z^>Zl<93 z*7+sUq<?<tY0!E33@+;b)R3yGaBBVtYFfW^0089reU<#L(u97g0L(2bRaF&H6z!b` z*XuQg!y)FDRqI>Oq<-nHYQ0o?c6J5;?`8qubzrhAtM-3}n$qVsYVC<G6;7*Ed?5M) zfj}S-2m}IwKp+qZ{!$FXsC@_cE7-Q38irBH4}aI9D6nh%csxe0*MsZ2>1;Mjsfj8E zsz9}7vsvo8ZrbbhFdmOlH3+3K3?p@2H@6K<gHZdv{0GqOa@zQ}UU-AR^#(|igvn$A zV7ChEI1UDb0Y;+{Ow+7oKkzexAb@F_7>!043<hu<hpiM(CKE`K#8n?x0J_~SyY@T} zbbq6w)9GM3ouc3GbBR}>-|u5Ooubp}u+5O{nS`vzGH{Op*>!okG_7eGG)>Fx5I02> zMNBX2;jOo_aBYrK16h(JLA%}N7OsONN!T?#B*6=J0DRxa-Q694U4Oi~x<b3%1|bAL zj*hqu@bcs62!s%5nue#RCtP1&GcQ%TAb)oNf*`=f#l^dHP171XAC%?i^K<T)PS(rq z?Jai@xC0<b67KKs3-em77H@Ujv|269=kvlm-WdSkJs$wz{QMlie|tV4=b`2^0ta(G zpeYXrbv~d84+n8RfO;4Xhgh%Idp$%^1XWc_dpMZ$0Zn-*JqUh#t?;+(&;JP?1RDZ@ cK=6O#7c&|aSPr>L@c;k-07*qoM6N<$f(GCBdjJ3c delta 503 zcmV<T0SNxA2!;fZ8Gi!+005o0f$RVP00DDSM?wIu&K&6g000DMK}|sb0I`n?{9y$E z000$GOjJdbl$6oY(f|Md*x1-rRaNNd=l}o!T;Uo500007bW%=J|NsC0|Nj6QO9Ms# z000SaNLh0L01m(a01m(bYSxJf0004JNkl<ZSV!%a+m3@U41Yu&7Wn^9-Wg*WJJ@NZ z?$auR3O3`MT&M_geyIgm0P0Tx()7|QsED-IaJF3K61dFl@|3ma+3rw1mTlW$Ny9ZG z&_{)yo&O5W*Y+9V@(tj82hg@Z_%+0Kx66F}dH;@ZPplJ-M#AkA5d0V5o<2L!EUNVH zVBdFFz$~iteSc4QLi9U*Q0fQ3Ez3ulTmF$wIgSm-Q35jGC77ZXaFUsF-vcfiM*&Fv z9%G4Yi1{)Wz7Ms8cGkY~Lv6CiL787yf2ajm0BQmLA;7*6rW)RNA;UWh_GD1p)P^^v zPju^=5o~)5gb>3N*fjv{wa9X60AS-DhUkUyv!VvT=5P>efR2AM1$530cm~jt5<s=s zL6Dl1<x~XV8ND3=22cY`mOo^64S4f?kQTTYGgQA^gtWkimy4qUWCcCM3QoTdiUQBl tiu(H?F9@~IH6D}{OsYTA0(=cP&tEA7RCze0Ajbdz002ovPDHLkV1lPt+~@!R diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/icon.png index 64642a11589e4ee7d66ac750216c4f7ed0c4d69c..f91b903f4ee6b7e876003b9b36bc1333dbdb3154 100644 GIT binary patch delta 414 zcmV;P0b%~E0<8m(8Gi-<0047(dh`GQ00DDSM?wIu&K&6g00C!7L_t(oh3%CqvcfPF zhQE8~E&&zQB@m59WhrG5We*9SMO2}QjjL@9Rk$u72uP>pnRIZs|4gTo^ZaviP69J# z%$V`t@snb#wf0g<09LD2?|VERJ%DqL&1RDn^EV~AQVJmi&VM<&uJhq@&LM<ADTUVB zrx1uvK15yDUTf{UuJc-JU)S|W|5Xwp`F)Z=;+Z^!MD!7qWr?-6UuRi{Qi?3gdYQGB zvMdv}_kn=c+UI$WF$TCc*$~6zL%lJEJkO*0;bR4wrUB@?JFKVL-Q(|_vZ^Yosv61K zwtd)nkiYYrM1Nqn+da&*5CUs0LWoiFFrKgcCK0&D`Fv)-->0~Ihd}5gvsj>%0<I0% zG)@19>!bwR*b+pKp}Aed&(1#(l2T$4FQI4x!06nk=qD4{7KN8m(zfl}F+814ESF2R zMG;+v=x!};LD%awz{3;(91e$I8yz?4=^PSyp-YZ8V;9DZ3q&>o*Z1rrWdHyG07*qo IM6N<$f?D0eqyPW_ delta 284 zcmZ3>yoPClWIZzj1B1(wu46!ou{g-xiDBJ2nU_EgOS+@4BLl<6e(pbstU$hKfKQ0) zlqpj#UcC7K|Nk2|ZiI%0zIgEhC=>HgiU~-umjw9*1Eqj~LCTxi4JgD};1OBOz`%D9 zgc)~C%zg_L?DceU46*Qk+waJCRDq-3W#X#u_C@S1`b$iFr~Cff!7zti=`8!-#--s5 zro6hQtxdC{#A2+~)7o5l4Yx&x#B+R97G(I!x0H*ad`sH`*_(M^UYx(JB);Ig9K%W< zd!a+@NAKTV#Ij>em}&ygG0Ad<umFc?H@XgND$HWgz9pP_c7~QxnJuH1-NZ&Od4^{; aqKvEDMQ#f{32z2Ejlt8^&t;ucLK6Vv;c43d diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/inhand-left.png index 0b1312348654cdba461670aa3a307575528fb402..265b1f6f8bdcfaf60f625d4e7d7035aafc28e666 100644 GIT binary patch delta 420 zcmV;V0bBlu1G58=8Gi-<0063Kaozv`00DDSM?wIu&K&6g00C`DL_t(|obB1oZG<oo z1>i}P8aP|Rg;0-=rVd}}Vrjq^N}vFcIn#u5h`b^!KZ_X%MDM$-*1LKdVVlb%0ssI2 z000000Du_A7~eFFpIVR28?QA@<74v<WsLF8Id83f8O}Mkd4K4TH(s~a`k1^WpIkvg z2$E9L@F6(oybvNfZ}<?bwO&d|v3Z9v#`vMIL(aKh>+kLwcitMd6VP=X5&i6(*7~_q zVg0Z3=6vl9$n*Szh&&OI*81i5vMh)HJ3Vg=%Lxd>jCUt|-#RRJ-jdxXAb30;)V3`p zNkUncQB_sc_kTUrb$yAvLn)=6FR7_drPQVu7I)r~-B&;<<<m4>{7;&u^zP8yd24oG zfubnFeViR=%bn%U0{{R3000000D%8ts*S#Ed(3UFjgD!L*}B2AjoawUw#VGK+vD4w z0Iv3!ts6WGcYA!x6TsOX-|hqiw`z~Makj^|y8_(p@g4210NP^!;PedyoxtVqGpvyS O0000<MNUMnLSTZ_ameHV delta 375 zcmdnY+|E2fvYwfNfno0U#y3EUu{g-xiDBJ2nU_EgOS+@4BLl<6e(pbstU$h8fKQ0) z?%liZ+_`iA{{4Ud{@uKJbN>AKt5&T#cI?=!S+jsjrc_^<1f;l1g8YL2!vMpkGdkyi zqMQXDk;M!Qe1}1p@p%4<6rkW8&w3ZfkO=p;Q!ny0EAY5>uaN%#|8Vxglxz1?%c^I3 z`YWB&wr<d$eye|p0;>~Okiws(4PNrU-+R_;Wth&tcxkht)|MVYiG~HIyp~EiK8>At zRzy5-ZH|V`zW9YXOe{td|0l56&2DhH_IPVwe!#K?8BcdE*T46Df73~M*5xNPq<`cT zEIzpGJku!=l?R(YrLx)uA6U0-uH2T}J2j*iB)57va<zyoao92UfO)wO!z^o!4`*eC z4m`W|TQ#Bh^<Sw4OOu%{+_}%;<9(dv)}`~#o^Gt`mNvV8(3KUb$kWew%bJtl@$zEe S3of8f89ZJ6T-G@yGywo2l&Bv7 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/inhand-right.png index ba6769d59d58969984f1b3428bb52d8d3f63ca0c..8e272ea03a86fd9e07f875a2323e10cd8bf1ec55 100644 GIT binary patch delta 409 zcmbQiyn=axWIY=L1H-D!!h1l9u{g-xiDBJ2nU_FzlBbJfNX4ADH_!Gq8wjvI*uHvg z<7QQJCtkh7?kf(5?`n|JXk?pUdAa5Lh9Z|A-JEf2_g39k?Q))U+~8X(gAxodF(mgy zuaC^Wd#{SC$M9U#?vvlb?roO$-pG-@Gw$hMoBCf49F3`hJ%)aotcpk89@y{5!MOCw zW#R4DcAc*5HOxC1ej)1jmU&*{cg|MdV7zR?_+w>GXlTFs`|H7<^X{$x>J)ojo<W8o zBy{Ufr|YGsU;n#vch7Fw2l{d0=lA<ReYV%S(p>hz*4*wwnLrWNQ=44wf1mMO^02{? z6Ed+^_C&otUaz?6`>L&ej~KqZdvZ62aqZU0LG%7CoFcSR<YC^uvtk*uj=i6LSlZ_$ z&k0?9K`03HE1E6gKK1qyiz^Rv3jFhgA7=ms;tN+Y1F3e4IlOvL%?$S`?ErJRUNPuz y?<@@2>D%MXn%j6s?N~TVE~8&U=ZpQn*i<`(cFbptFP;tzeFjfgKbLh*2~7Y<8o3$( delta 393 zcmZ3%JcD_HWIZzj1H;_yjc<SyV{wqX6T`Z5GB1G~mUKs7M+SzC{oH>NS%G|&0G|-o z-Me?+xpU|K{rms^{kwVd=KT5dXU&?mYSpS^$Bupa^y%EWb3la)=GzGZDV~xbzu^A} zz#w!VEX`Tq5n0T@z;_sg8IRZJuSfx^e(LGs7!u+BcIs`uW(5J4=}KF#{{Mgfoziqy z;kmu~W;Z8`OyN@(kZ-#-d&dFRChiyo8@CC|8*XYmF|@xvGwybWgx9LHZiP)#omyA| z{cdflTqIFx`k^BCMtZk{*bjaWgS68cab<Du?NeT>+~T}>{$}Uqx80$QI#De3y1UPI zng!KatM6^k5&bat2RrAn981qxFP)7y)z3e=t`=k&(9T1fS$;~cdC}Gtt+i`0Yg^a5 zFI$!_5{)`Adw+zhc1T24IivQj#g}XTvF6@5rZD3jr;g}dNtO!N@-L0LqIV7M{Wx)- d``TCb|8dKCXYUd31^Sr5)78&qofA_+6982YvkCwJ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/meta.json index 7e6832bd12c..82edfe13a02 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039 and modified by Flareguy for Space Station 14", + "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/commit/993de554ecfc30cc45f8340819c5a60ef1eee7e1 and modified by Flareguy & P3MOIRA, with the lower half of the jumpskirt taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039 and modified by Flareguy for SS14.", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-inhand-left.png index f6ff6866ffc359196192cec6c75f0631f2a399a3..6b40ed5af0ec63d3f482b5c3e6a081aa1a2c7e7a 100644 GIT binary patch delta 180 zcmZo-y307huztFyi(^Q|oVPa*ayC1Nuw39=BA|P8_0ot1Z!^@N2{6T_+D|(Aol7F| z|ASN^1`wF{I8@Yx=kP?8#};Yxp09a5EBE#!mEZf~|M`{PTRSb)@}K4VH?g86`ywX! zTrLSQU7++n%+_?lANdJ2>%Z*|yL7E#l?~XOhU2fx5?|_8*{-{`Np{-W!{x6*%u5Y< e@u#YI7|z-~NsBsI%(`PSNU^7@pUXO@geCwL#Zun@ delta 217 zcmcc1*u*r!u%0E|(btiIVPik{pF~y$1_sUokH}&M2EM}}%y>M1MG8=Gx~Gd{NJZS+ zn;UtX4Fp&(oK_2{5_L;-2wQk$wu+J0k}aI#Dv!R;($<-)`?K60sDXiDf&BL8HaQY) z)w3U495eCVsN<b;d)xf0QTF@PtM9LTR(Vf;zH0UT-9htJ7EBR(y=$4OLh}8UyZjt3 z*S-B3eRd*?iR5pvISjkXZ?-+X^tN!D^4*8=Di4Z)taZW{GWr>RxE*0`eH>RB!N(B= OQtIjI=d#Wzp$PyZ8d#eE diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-inhand-right.png index 45393e81a66103898d2e33673dc0c227824b4f29..e43a9b42dbcce7413e0191765e4d201a3f8cf80e 100644 GIT binary patch delta 191 zcmZo>dciosuzr!Ji(^Q|oVPa*axxi;xL(wb@K`qGrk|#!!CRHNM_M`bc#N{#gx}w+ zW9mPzKAU}#iYEvy`CpjD>%<|N5Gl4TS9z(+Imw0~ug`b4mz<SOUi04F=G?qJ&#yhG zTg>o!*R?=B2D>@s&$ugou^%X1y*>9(emq0Z#Bhj77L!z77VMUqd{OH0I=9!{(X-xu qP+n|$EcR>>qyAsU1ZHi|ODuYMrcnpqS4)O40D-5gpUXO@geCwN{!(QC delta 218 zcmaFC*vvG+u%0E|(btiIVPik{pF~y$1_sUokH}&M2EM}}%y>M1MG8=GhNp{TNJZS+ zn;UtX4Fp&(oK_2{5_L;-2wP|}TgAw06^Eva;>phMv$S=h)nAv}19dPkJh0LG{&UIe zUD>m1?;khdG4u_-5_NrZYNXlwzo!=d?t8q$Zr;&(wZZXT4w|aZD*Yxm^uMou#bWX{ zTz>z}KgCS5cz!d1&8fM&?%0zHY-Y1_Y9CJ9E<9nOq1~00!WS|U7*FUuV%s|_u2lKd QbX|~APgg&ebxsLQ0Bzt{bN~PV diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/trinkets-equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/trinkets-equipped-INNERCLOTHING.png index cee5a50d2caea42b0fc53599a92a1cc8be1a8d72..bb9dd4f505ee4ad6cf2969435ae4333f48849290 100644 GIT binary patch delta 276 zcmbQlw1jDbWIY=L1H-D!!h1l9u{g-xiDBJ2nU_G$Jx>?Mkcv5PZ|(1GHV`@f@xE(j z=6u(qOg;~~WFt=4Zr;F_#2~i7sq8evzE?{oE4g|$xZJ6=?@c{fKR-6&(`29t4ee`R z&w79L{FB#L`}Uj1iX1)tc+Rbv{&LkXcD?&z{$SJ6&lY{v^=ls|o3S3S+<x84E-jeh zUsJt&!)xQ-z2A50cw0VCNz0n$mNqTetIIGeQjGU-!HwAms^`Dnb<O7ds#UL+%~|&H z!cRt^RbZg9*F3yo4-3NqJG1{wx985T4@y1bquAp7|G6`V<x&;TF2hytt3QF2+q{*& Xu*I{L|8+iZA4spKtDnm{r-UW|uC077 delta 257 zcmZ3&G>K_~WIZzj1H;_yjc<SyV{wqX6T`Z5GB1G~mUKs7M+SzC{oH>NS%G}%0G|-o z8#iufYinm_W@cq&1qB67nKC6fIN09a9w_f;tS1koI7@>3g8xGSL$H5^5J<4VBeIx* zf$tCqGm2_>H2?*(JzX3_BC6cqUbx8BV8GG(aOUQp|NLe2@`c#)L|x|W=ayXEzv0DM z28Im`dl-D0KQe!ssmC<?e2HMf{Fid9D>jKdtlh%?=+^wxwSSs{4&DGoHM|SrCM!lQ nnfw07&0jb9rZF)%gnngcR;-t?v9eYM+RNbS>gTe~DWM4fWsO~T diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/equipped-INNERCLOTHING.png index 5c333dfc11811bc991f2cd4e82637351c4ead25c..2d86990cb8bf89056064b448cdff4458e5caa870 100644 GIT binary patch delta 1306 zcmV+#1?Bpj1fmL%8Gi-<0063Kaozv`00DDSM?wIu&K&6g00i7gL_t(|ob8%HZ`w!{ z$Nyce=xQs4234%;L$Oj$2^Y493it%bd;<<SMzV9wg<Rl}Tyiy$qMSJJ1(x~~1g6<T z<WsD!L>Ep}8(Ab2rP^|tJ&>8&1QL&JSnbxo(|GK8@6Gefn}4z201*)p5fKp)5fR@f zPedNpb)9CjSpYzxP~dGloel*6(=@TWyDKD9R6i?gn#Swv^*S$$>i<zhxuPfl0K+ga z9*?;(jYb2CqCk=)0HDiof~u<A`I02LI;|)Q27>{A?)dmPT>ZMPQzyM%kLtQk$Kx^8 zb)EKlJ=cBbn}1q{e#SW=bL&IZ&y>%0k~v{seV9fp>ij&L{5atUuZ9?g0YV7BmSq`= zqCl2qUPlOlVHg74^G>~9cj=!8A;dK`yzpQQ&~=?^n#P5iripw$&+j`s&+ap0?}AjI zc);S0Q$H|`0Z!fhejkIuz@`5#UOlS+(Gk$^_W^v1u7B*>?{lJbIvtnX;c&=1zrMZ> zVEQ74!=dXr*6uML908VP!Llq@-C!`d_vTssL+$+FSB6Nt2OThPIgum@gb>$MAcR1Y zBt8VgT80+MA%tLSYYPA{8jWyydFiR$JUs6MoJf-78sc~B|H>E+hd4Vs3q_WY18mzy zqtOUOv40<I+lFo1p~@5<0qJyl;k|CR8^{<hY;SM#a;MWlp-|x0eqN5S1IpzxFVDt; zTCFB*fGB@``h>T+9DwQGgazc^-@o@I&sPj!8xj`u0Jt2nOn!O!63u24-EJ3?$pp1p z4e4~+H4;Sdyc3*-efc?^unJ^ZMtWld0C0GC_<sZd3WdVlrP&L<9q@l4a)4-qMIR)O zeW--RqG0ED>n#)nudc4pY&KnWVQqW8Fqus7+q-x7>P}BjSE4^6A|fIpA|fIpA|m4Z zMpf0&Gr&R6b)BlJ>dPMC{{gD1(qgfQR4Rp5t3@l73S~z4F~AQ@XQfi1tyYVsQYjRR zMSu8pf@f4!rL9)Wm4;?c2t6;q0H%v|e%2OICkTyzWHO0TsRUs92c}-HBa_J>m&-xZ zw3YlAxw*N4rfJCKa>!&dsMqWKZ&0aJLNb{Yk|*SV7cXA$vSAp=X0woG8Hq#!<#HLD zo0~$){UE=3g>t!!L?QuMmXXb7U1t)UHh+3SI0nqi3Fh;8<nwt~hIm=reE!V!Ic=D= z%`3u*k=ag;MkB=Iabd+_FdB_`nH`c4Mc4tRY4RVVmStgYZx8W!9E1=&Ut1G4K$Pce zYdj@)eSM9iqa$vMpD8Hp0L!wlv$J!rKA+Do?R=0EHU$_?TTV_+gq<K91DwfGV1GI# z!a5Ek!n`3rYnvB@MgUvp*nvgUH1X%hkNErRR{#)Rg8UGR#rP@FpPoL&#_QKEdqkIF z;VEF-HqQ#%wvAukyy2eT-`^J%C(L9r;itw}me^^JD8grXR8^(yO{ddoSLa!_cG*-a z6?$-R0N|SwfNAC`^kcH~P*s(-+kb7o1!a5lRl>H!lv3Jmw^#Qu1i0tAd2xYQEapc{ zAY!o?%!`Y;Hi_Wtgb3r04<A6z&x42v1UWy)&(EF(k`d^9z?a+G&`)iNVB0pn+};L~ z5y%0|`;*BekP&`hI)jb?UlFrftx{*FR~7vqvLhCYp<1o}D|SRg{D=7mffK<l5Z(0( Q-v9sr07*qoM6N<$g4cF!Q~&?~ delta 526 zcmV+p0`dK#3Y-Lx8Gi!+005o0f$RVP00DDSM?wIu&K&6g000DMK}|sb0I`n?{9y$E z000kAOjJdbl$6oY(f|MdRaI30008r3l&Js!00neXPE-H?|Nj8{whmJO000SaNLh0L z01m<c01m<d6(~x80004nNkl<ZSV!%a;c|o^420qE{hztJYkxQiker=%rv2g0iNp;b zC<<4OAL;=-0P0r(rRr28Xep)Eiqc|f2;efZ(<*Dt(ymZfy}Vv8Sf%2;BhW{N%E5nE z%~$&!;q(nK_yfS&lClNJ*D?CNhHJ$-QEev3M{E9^{|5BiXM!TH(C?Mj+K|A=EA+>n zFhle&`lPKt0e_?fu=?KubXhDpK$pd{*ntj<B?sUg;)nt8^biMmfO<#(8ea;~WQTyA z|IYw?z$*6I`eT3>w4KFXTR-aUwjRI(pdP>suzv`trmx*a_}2NwTeOjugLpl_Vxu)T zB(VLNa>>=Xq{EH@T+gO;e*$3Rj+Zo!pBXU#cDAu-h=2HZ5#ItjzX9+=bam}Jz5^$j zl*N<>V2-%|S-c1%U`7m}o9vAMoEagY%i=|5ha+frZ(-b7Trvqsdn35^9&oh0{YmgU zpHELGky;aGfPch`)`SHR&jH0(<r5&<+$BEd3@~s0tCoy(z<2c5faCZA-<UW)fFO;i Q00000Ne4wvM6N<$f(VT9FaQ7m diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/icon.png index c0087d4d2505fd8d7c362df3d838feb8d39a3d87..84a603429e8ef4d3121f4188fdb30296b75b7d78 100644 GIT binary patch delta 371 zcmV-(0gV2o0)qpP8Gi-<0047(dh`GQ00DDSM?wIu&K&6g00BKoL_t(oh3%CgvcfPB zhCklCGayz~<Em@$dk8%32{-^J$l!a3dQ5BMYFmZCa)3P5OeqMK0rm3DWG0*4?*7>% zQ%EEd|DBa3*f|&SJO`jCiui5YwgJF<PgPZ>oIjT0s)~r<y?^I+yM<|Z?-3DH73W;| ziU5Et%gC|}Ri&<L0P4C%Rip1KIOoEWVHkpQE)2u);InkW)Pb(+;(Y4FeAjdTR|I(P z@9bsEm;R3lsH$pJmL&k=I6jS;*2}Uqy@Z!La5|k<0GG?<sef9Z;yx~5LPQ?Uy6ZYb z#G1+`V87qTn`|v2jN=%`y!brs6@D$jec#jfJpk+Vn(cPW`F!Sjy;{<|FJQCTpsLYs z+m_vK7wx8LqQF-%-+_6tq9|yZ=G_#4@n>{69PZ9nL>^wn@pv@lOe7MC#2?WJs_uX+ Riy;62002ovPDHLkV1n?ywvqq< delta 277 zcmZo>Udl8<vYwfNfx%@-*D)Z)SRCZ;#IWw1%u67LCEd~2k%3`jKlh(RRv=#@z$e6Y z%9JS=FJ4@|diBklH~;_t-_z3*8X5|eoV&V=14wa{1o;I6#X*4KUi02apcrR?M`SSr z1K%MKW)#)%Y5)p0dAc};Sopu45LhqNpupkcsQbSDaoNPo1h-?%SAJ_G&d)e$^TE+E zBszOlX0XNt@BF#??<Z*VFglm?>}{CC_9?}s@uur)p&YgYr>Yh7;uTF6Z^&~zn61oN z<`{D&TUn&Z{y@xX<vfnIJNFbl8E)upJ;489u|N)s`Vkw>=(@y0foC-g(bFU)n&<Fk ReFD0N!PC{xWt~$(69B~UYFq#S diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/inhand-left.png index 0b1312348654cdba461670aa3a307575528fb402..29ed754ec1d2ea78ae94669041146268497daeec 100644 GIT binary patch delta 436 zcmV;l0Zaae1H%K58Gi-<0063Kaozv`00DDSM?wIu&K&6g00DhTL_t(|obB1aje{^4 z1@L#LYu!Ri!2lT{J9rC9n8PKEkp<jjfk+tu$+XZifUh`l;>dsJOAbr#*WpAD%l@by zKtx1DL_|bHL_{HsF}`hEe{MZAZ@JdCtq;w6DPxRx&UtI?$$#dYa}RHN%3H2mYkf%G zHJ?&JS(YKsbIcFHIp?!13(lJ#g0<G?d5+M$modipx#@<SbAQ(Fy*25)Tf`=y>pB2G zH&>SB?@dkX|DAWq*RugtReb>P08p0Y$?v<}ZvMZw=iMSQ0n=udw=+FIx>@PGYs5Z* zSc#luQ561oJbz-d*&s<0Y`0tN_j?S(fN8yHn!Dd6op+7c1Zb^M*EN(<I2;a8N};Z6 zXsuU~cZt}yR1}3zk_1XAq-l!2?=g-ehG7W0E$KWWA|fIpA|fIpircw1dbRDbv`cMt zNP8S@F|ur<SKA&-lWvcrodBu!_~~}|-K5*&C?`O&JuQy%03=1(u}QYa(N2I=dmQBi e0BnzmNX9q)H;_=s+R2Cj0000<MNUMnLSTZnEX)r8 delta 375 zcmX@i+|E2fvYwfNfno0U#y3EUu{g-xiDBJ2nU_EgOS+@4BLl<6e(pbstU$h8fKQ0) z?%liZ+_`iA{{4Ud{@uKJbN>AKt5&T#cI?=!S+jsjrc_^<1f;l1g8YL2!vMpkGdkyi zqMQXDk;M!Qe1}1p@p%4<6rkW8&w3ZfkO=p;Q!ny0EAY5>uaN%#|8Vxglxz1?%c^I3 z`YWB&wr<d$eye|p0;>~Okiws(4PNrU-+R_;Wth&tcxkht)|MVYiG~HIyp~EiK8>At zRzy5-ZH|V`zW9YXOe{td|0l56&2DhH_IPVwe!#K?8BcdE*T46Df73~M*5xNPq<`cT zEIzpGJku!=l?R(YrLx)uA6U0-uH2T}J2j*iB)57va<zyoao92UfO)wO!z^o!4`*eC z4m`W|TQ#Bh^<Sw4OOu%{+_}%;<9(dv)}`~#o^Gt`mNvV8(3KUb$kWew%bJtl@$zEe S3of8f89ZJ6T-G@yGywoQ1gI|n diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/inhand-right.png index ba6769d59d58969984f1b3428bb52d8d3f63ca0c..3ea39f3463e9a5b4f388d7c5ba747293672a518e 100644 GIT binary patch delta 422 zcmbQiyp?%^WIY=L1H-D!!h1l9u{g-xiDBJ2nU_FzzNd?0NX4ADH}@7EGLT{YFg+$} z>$0mHa*dK}bYr?KLvAHku<0L=mF^JR&a*(o@@bEKN6SMc)%VvGx!*<p3bt+NfB}XB z5|5W<UyItlWgb&<&*p3AHrY=3ey@LN1;_WIzx7kT*S>9>BJ|kV;Mk5;s}z>rk@+FI zWXg(Fubv%SyH(F>z2ULmpTb+N-CMKVh&B52I==%yYuG-NZi;&Se)jj*D=SUjA1`@W zV6lg>fMLPbd9@2)@A|kee!J=WM=U?iUcUT!esE=FzW2SW`w!G_tS~B#-F^9G%O;&b z5!P?NZGY`MZopIj;dSn9HDlK3PwV^|g1CGyJ8(2U{>Y)oGHY35(5uq?O$QfOhUafw zmmMy`+9Gh{ZP|_(y&ZAuCE65M-u_;6+S>&RrZnG?dc6G9T0=h3(4HsPB<y|jdJB72 zaGn5)7-qLm2MQhMnAZSQ6p+*IZ2s(;M0?jPAXomeK%n_CwrL&zX8AjR@8J4nspkcZ O3I<PCKbLh*2~7aYKFxao delta 393 zcmdnWJcD_HWIZzj1H;_yjc<SyV{wqX6T`Z5GB1G~mUKs7M+SzC{oH>NS%G|&0G|-o z-Me?+xpU|K{rms^{kwVd=KT5dXU&?mYSpS^$Bupa^y%EWb3la)=GzGZDV~xbzu^A} zz#w!VEX`Tq5n0T@z;_sg8IRZJuSfx^e(LGs7!u+BcIs`uW(5J4=}KF#{{Mgfoziqy z;kmu~W;Z8`OyN@(kZ-#-d&dFRChiyo8@CC|8*XYmF|@xvGwybWgx9LHZiP)#omyA| z{cdflTqIFx`k^BCMtZk{*bjaWgS68cab<Du?NeT>+~T}>{$}Uqx80$QI#De3y1UPI zng!KatM6^k5&bat2RrAn981qxFP)7y)z3e=t`=k&(9T1fS$;~cdC}Gtt+i`0Yg^a5 zFI$!_5{)`Adw+zhc1T24IivQj#g}XTvF6@5rZD3jr;g}dNtO!N@-L0LqIV7M{Wx)- d``TCb|8dKCXYUd31^Sr5)78&qofA_+698!hvljpW diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/meta.json index 7e6832bd12c..797ea180d8e 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039 and modified by Flareguy for Space Station 14", + "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/commit/993de554ecfc30cc45f8340819c5a60ef1eee7e1 and modified for SS14 by Flareguy & P3MOIRA", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/prisoner-equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/prisoner-equipped-INNERCLOTHING.png index 320db64b5794a279427cd43b16b4839490b43800..ef35d8c80c579f45bbf65b60c2d209d5fd24af5b 100644 GIT binary patch delta 398 zcmV;90dfBA0-Xbp8Gi-<0063Kaozv`00DDSM?wIu&K&6g00CD?L_t(|obB4Zje{^0 z2k?h<Ee#@~bwNwT9IjY_iW%5|S*TcohKdE;B0d@h@D(Rc#6(;$0$<?&YX~Oz0e-Sb zo{0be0001P$<jS>97j2QwryLxpN}?w2yjPPmVJB%d~NwMV}I=FhRd>Cv<V>&n-3Uc z(s7*M{b3kL-9Iw^LXsrc&VVS2WK~rZ1OXLAVX31{w9E=2gvB|RbzM^!hLq>I_J~aV z%;Ue40qS|W@&9!B3{btB0edfME&hDORj1DZ0001RAB-^>MUkAgL_e>~^Y$yp2LJ#7 z0001hXMNwF_J3Ra%vf-ByXt7K{(?HXHfJK{rEPw4j4`>kUcgiaOltxT&j!x<zny_~ zu1zZg){dLVfIaayEs!80@_m2N=6N1H9uIO|m(n!d+T|v398=eI)V3`(O|v*Igg7)l s004l(L|NKsDg0HP-UO@-0NCvt@4~=R{8jFs00000Ne4wvM6N<$f=ghmO#lD@ delta 349 zcmbQs{FZ5gWIZzj1H;_yjc<SyV{wqX6T`Z5GB1G~mUKs7M+SzC{oH>NS%G}T0G|-o z?(S{{1%=??U?U@=tgI|wUtbp&m+0u|f`WpUmKLC@mrpK~0x9m2Aiv=MaKPZ@&-e)_ z%vs<OS<Jw|cNl~jkLRyQVW?+d*yriu7!u+Bc3LlAvjR^G`-zZy{~Mpqy4?9ECvQfM z_kI^&UAgIO3%7qz)LOvgz^W%;p}XV%0T-RTo_>kvb7Fd0ANMfN*Wb()@%ZRL1-?BS zYxX~ycwa_A>8?yed$Z9DS(EGnDbXL+jX%_H?pT&vsyOvil#3_>(5wf)Sqj2Tu5H_r zv}rx_Hx7T9AHSCED&@_cl(>@lkU{gyUCq`K%V#DYv*|TzS$JW4$NL3Ls*SI-7%GiK lC-5!syk_^OM$kEeA-;QdO7yZX`almdc)I$ztaD0e0stA8jer0E diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/prisoner-icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/prisoner-icon.png index faebe0e0550c4a7a41276f787c0f1496dbd6276e..819e7ac9d9c978d7fd87bba47ffbd86bb505a79b 100644 GIT binary patch delta 171 zcmV;c0960z0lWc_8Gi-<0047(dh`GQ00DDSM?wIu&K&6g004GLL_t(oh3(S83BVu> z1<<r~5QoSrF5xPU;v(51ZjzpQC>2WLL1_OwNl2o6Bm#iH+oFT5HM`C^=kT6AI>^jq zX2i_V74uZp-n+i6);gWQ;b~4O-7XZ7N3HiB{*Z2^l(h+rY9!tSTn`v5x7o;-CjbBd Z04F$kDR^N;oe%&3002ovPDHLkV1m{<M~VOd delta 215 zcmdnP_=0hQWIZzj1B1(wu46!ou{g-xiDBJ2nU_EgOS+@4BLl<6e(pbstU$hKfKQ0) zs#U9Q-n`k_*{PtQ5EvMkk&ywES#&-s1W2)$1o;L32LlEvZ)P{35NCl$WHAE+-(e7D zJf6QI1t{q0>Eak-;h&tK%-|;K5WujKOG4s8>4J}vk`fDbBpj|c==twbp1Ht8MnOA) zjY&*^@o6*TF3vRpQhXPD6PE7flt>6+WVsN-C@sy<^hCTPt&SCBJA<dIpUXO@geCx= CqC)@x diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/prisoner-inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/prisoner-inhand-left.png index f6ff6866ffc359196192cec6c75f0631f2a399a3..e0191d45d521c86f0765c49d25a0413259f0c1e6 100644 GIT binary patch delta 180 zcmZo-y307huztFyi(^Q|oVPa*ayC1Nuw39=BA|P8_0ot1Z!^@N2{6T_+D|(Aol7F| z|ASN^1`w#|2@kzsz~ert=kbind7IZ|Z_D+b^yYWnPwT6d+oPsE{qcOy=JL=BKa)I- zd@l!HZRpw){q;)2r+SA^dvCpu@{DF)^$BbagWUSttxI)Zf87yvx-4QF-~F{9rZ@Ah eTFuvn3~%j@1V$ZvSNqKlq}bEd&t;ucLK6V=VpZt? delta 217 zcmcc1*u*r!u%0E|(btiIVPik{pF~y$1_sUokH}&M2EM}}%y>M1MG8=Gx~Gd{NJZS+ zn;UtX4Fp&(oK_2{5_L;-2wQk$wu+J0k}aI#Dv!R;($<-)`?K60sDXiDf&BL8HaQY) z)w3U495eCVsN<b;d)xf0QTF@PtM9LTR(Vf;zH0UT-9htJ7EBR(y=$4OLh}8UyZjt3 z*S-B3eRd*?iR5pvISjkXZ?-+X^tN!D^4*8=Di4Z)taZW{GWr>RxE*0`eH>RB!N(B= OQtIjI=d#Wzp$PyZ8d#eE diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-equipped-INNERCLOTHING.png index e21afe8d4eb1d95295728d41429e90b26765ade0..c97a78f047727a2fd76b4e841b0bbf7a7dc86edc 100644 GIT binary patch delta 279 zcmV+y0qFjT0;d9y8Gi-<0063Kaozv`00DDSM?wIu&K&6g007}hL_t(|obB2%ii9u} z#_?~LZEat$@&cY9m3Qz$={<|r5D(x5tR!hYK(<&G1_qXyQAb?<za|6{^YW5H$ddp7 z0Dy<B>ze=SU&+U-6K^+N6vfNmxwI>vJoeCa-Q{n<=a$LiIDhUH$7wbtz&W>99H-fo zfd7C5oE^Z~zMdKEz0YM?$~h-9Q`0muvz$^=j8V(7Xc&gWeu}*Jxvp!?^Q@|>?%HXZ z4qYDr000000002|cxSBubqN3f>|*m<dfT@7w^qo^6hb)keLjScQ%aJg7^C{Wryc+R d004O2H}z#nhY%9G$jtx%002ovPDHLkV1gwcekK3_ delta 248 zcmZ3^)X6kKvYwfNfno0U#y3EUu{g-xiDBJ2nU_EgOS+@4BLl<6e(pbstU$g*fKQ0) zlqpk!gM+iOvaGDEZr;49t*vcuZx58rtTBlNQXC~ge!>4CfZ<;A-bkPrXMsm#F#`kN zVGw3Kp1&dmD46Ey;usR){`TC(Laqh_j@HD|mGA!_TUaq!Ajegt@Lz1lhT5J#X$%Z5 z3~~(94*qM%_Pfrw((>;4hJ#Mhoc*_|wWhgepZ~=_jhR7#34%VDHkcS$x_auYmyx@= hM}~pn;_Zgtd{=kmM{Uq*yb83E!PC{xWt~$(69DR)T2BA~ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-icon.png index c9e8398b47d94679bfbec574bbdd8c639bb7064b..683e91de958724384d033fbd3ada13b6aed64281 100644 GIT binary patch delta 165 zcmV;W09ya+0nP!CF@K0jL_t(oh3(X_4Fe$z1<;=;D`0AN@Bl2~C0NaiumwE~;j40O zB9r8b_*H;x^CcvJ5W>H^c^g&Lo@)_t&$)XWnHgpVX7-NQH^#8nRbSLv+YaD<0sttb z?B2f@p!a@lfSmKS0X`uDJl-u75lbnZdm=)u6+~on&hvb&1s+v(|BNAo5W>$LuxTA5 Tk@>Vl00000NkvXXu0mjfyxvEy delta 194 zcmV;z06qWC0qX&fF@FSSK}|sb0I`n?{9y$E000SaNLh0L01m<c01m<d6(~x80001h zNkl<ZSV!&D!3n@13<c1%LpX-p2oB{Sf|EFcE4YN!5(~Z6SlWaCfh6Q0Axa1UmbY;n z7D6bTk}*bn&(3j}*7_EIky5&*uqNl+^aR9zpouYZCO6f9Qag$>xv2);fCe6Ku)6I^ w&iQ=zeyp|Ry{A_1r`7A06mLcV0DzAX9sAlK?eLYNg#Z8m07*qoM6N<$f(-CcVgLXD diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-inhand-left.png index 9bbcac8268ab5a6466b66447666b6542c66ca9bc..b0e2998c0d42d5c7316397736533bb4c7ba9a464 100644 GIT binary patch delta 157 zcmey$c#Ls^VSR(Ai(^Q|oVPa@N;Vsav|hYkcV>d+qQ#r!s~6s6n6Dbt&A&zDoa6)X z>-RVqKp^3W&H2Bl_U`>Ic`^64-rd{QsSWj?elRXu?6h>syyCtoL06)bmtKj^-ncGX z=k%vvrTk!B4b~Es{rMkx`}Q2)E|GBLF}uYZ*?(s54H?89+jZz0pXWL}T^^*+)78&q Iol`;+0Kxl4oB#j- delta 204 zcmX@c_?2;jVLeN_qpu?a!^VE@KZ&di3=EtF9+AZi419+{nDKc2iWHz=m#2$kNJZS+ zn;Uss40u=r?)x58&`?gXVM}6}A}FB{UEs?VH6?~|&-EKuw?FyD4%ETGa3M8v+Tyj& zJ?E@{Z?n9z?|rUxa>>1$@p1*~>+26JKbxnyG<n|h8LrDTi_UFamwhE_@f4xk+hX?_ zTk(UnH>khJ?3cgD`)$kdTMy0RUvJZ0{Y|1FPS8F!&+OQQB{Nk(syto&T-G@yGywo; Cc~MvZ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-inhand-right.png index cfd725831525040c80289ad5c787cadc64f573c4..ec1962dde48680be042df398a89787a6dcfa40dc 100644 GIT binary patch delta 171 zcmey(c!hC-VSS&ci(^Q|oVPbO@-`cYxL%yEVO+tNrS<-J+?AXM^He>&1-)k|ohb0j z77yQFE64x>2kx2p-oDDK8&!4R-EL~ox$7|tmVUp$`0mX|_8(W|juqZ%OYE2u^kk0m z(k*LWOP$_y#OD0^dN;X?(fVNR4)#^iJ=uQw&3ko^nX2^5yUW)%yt4Y!%_`PV{gdh2 WJmd46Z*LcZlzO`QxvX<aXaWG6kV^#s delta 210 zcmcb@_?vNpVLeN_qpu?a!^VE@KZ&di3=EtF9+AZi419+{nDKc2iWH#W1Wy;okczms zH#hP&8wjvo@LrZ6aD;>Buz}nOWd*kchHVYUd_@E&noK-feRlsdmDe%<fSQ0HZpoBy zMrO|=KP@heJsr}XIZLnp#!}`jZ@#ftOsO&EIehQCcWp_m_+tyVbC%n3yHg{R<~_f> zw|?c@y%7ChGnN|u+bO+ft)bmwS-r~W_^r#NA{e5C3K`ZdFg}*GB=$K-ou{jx%Q~lo FCIG9?Q%(Q? From 287a9a07de9911ac2f32edc4058b5330c89136df Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Sat, 9 Nov 2024 20:29:29 +0100 Subject: [PATCH 043/187] Intellicards now have a doAfter. (#33198) * init * cleanup * Oops! Forgot something * addressing changes * guh * guh 2.0 * some cleanup * all bless the intellicard * Yippee * small locale thing * changes + small bugfix --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- .../Silicons/StationAi/StationAiSystem.cs | 20 ++++- .../Components/IntellicardComponent.cs | 39 ++++++++++ .../StationAi/SharedStationAiSystem.Held.cs | 20 ++++- .../StationAi/SharedStationAiSystem.cs | 75 ++++++++++++++++++- .../Locale/en-US/intellicard/intellicard.ftl | 3 + .../Locale/en-US/silicons/station-ai.ftl | 2 + .../Entities/Mobs/Player/silicon.yml | 1 + 7 files changed, 153 insertions(+), 7 deletions(-) create mode 100644 Content.Shared/Intellicard/Components/IntellicardComponent.cs create mode 100644 Resources/Locale/en-US/intellicard/intellicard.ftl diff --git a/Content.Server/Silicons/StationAi/StationAiSystem.cs b/Content.Server/Silicons/StationAi/StationAiSystem.cs index 846497387d2..a10833dc63b 100644 --- a/Content.Server/Silicons/StationAi/StationAiSystem.cs +++ b/Content.Server/Silicons/StationAi/StationAiSystem.cs @@ -1,10 +1,11 @@ using System.Linq; using Content.Server.Chat.Managers; -using Content.Server.Chat.Systems; using Content.Shared.Chat; +using Content.Shared.Mind; +using Content.Shared.Roles; using Content.Shared.Silicons.StationAi; using Content.Shared.StationAi; -using Robust.Shared.Audio.Systems; +using Robust.Shared.Audio; using Robust.Shared.Map.Components; using Robust.Shared.Player; @@ -14,6 +15,8 @@ public sealed class StationAiSystem : SharedStationAiSystem { [Dependency] private readonly IChatManager _chats = default!; [Dependency] private readonly EntityLookupSystem _lookup = default!; + [Dependency] private readonly SharedMindSystem _mind = default!; + [Dependency] private readonly SharedRoleSystem _roles = default!; private readonly HashSet<Entity<StationAiCoreComponent>> _ais = new(); @@ -43,6 +46,19 @@ public override bool SetWhitelistEnabled(Entity<StationAiWhitelistComponent> ent return true; } + public override void AnnounceIntellicardUsage(EntityUid uid, SoundSpecifier? cue = null) + { + if (!TryComp<ActorComponent>(uid, out var actor)) + return; + + var msg = Loc.GetString("ai-consciousness-download-warning"); + var wrappedMessage = Loc.GetString("chat-manager-server-wrap-message", ("message", msg)); + _chats.ChatMessageToOne(ChatChannel.Server, msg, wrappedMessage, default, false, actor.PlayerSession.Channel, colorOverride: Color.Red); + + if (cue != null && _mind.TryGetMind(uid, out var mindId, out _)) + _roles.MindPlaySound(mindId, cue); + } + private void AnnounceSnip(EntityUid entity) { var xform = Transform(entity); diff --git a/Content.Shared/Intellicard/Components/IntellicardComponent.cs b/Content.Shared/Intellicard/Components/IntellicardComponent.cs new file mode 100644 index 00000000000..e27174977fb --- /dev/null +++ b/Content.Shared/Intellicard/Components/IntellicardComponent.cs @@ -0,0 +1,39 @@ +using Robust.Shared.Audio; +using Robust.Shared.GameStates; + +namespace Content.Shared.Intellicard; + +/// <summary> +/// Allows this entity to download the station AI onto an AiHolderComponent. +/// </summary> +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class IntellicardComponent : Component +{ + /// <summary> + /// The duration it takes to download the AI from an AiHolder. + /// </summary> + [DataField, AutoNetworkedField] + public int DownloadTime = 15; + + /// <summary> + /// The duration it takes to upload the AI to an AiHolder. + /// </summary> + [DataField, AutoNetworkedField] + public int UploadTime = 3; + + /// <summary> + /// The sound that plays for the AI + /// when they are being downloaded + /// </summary> + [DataField, AutoNetworkedField] + public SoundSpecifier? WarningSound = new SoundPathSpecifier("/Audio/Misc/notice2.ogg"); + + /// <summary> + /// The delay before allowing the warning to play again in seconds. + /// </summary> + [DataField, AutoNetworkedField] + public TimeSpan WarningDelay = TimeSpan.FromSeconds(8); + + [ViewVariables] + public TimeSpan NextWarningAllowed = TimeSpan.Zero; +} diff --git a/Content.Shared/Silicons/StationAi/SharedStationAiSystem.Held.cs b/Content.Shared/Silicons/StationAi/SharedStationAiSystem.Held.cs index e067cf3efad..c9279b02151 100644 --- a/Content.Shared/Silicons/StationAi/SharedStationAiSystem.Held.cs +++ b/Content.Shared/Silicons/StationAi/SharedStationAiSystem.Held.cs @@ -54,7 +54,7 @@ private void OnCoreJump(Entity<StationAiHeldComponent> ent, ref JumpToCoreEvent } /// <summary> - /// Tries to get the entity held in the AI core. + /// Tries to get the entity held in the AI core using StationAiCore. /// </summary> private bool TryGetHeld(Entity<StationAiCoreComponent?> entity, out EntityUid held) { @@ -71,6 +71,24 @@ private bool TryGetHeld(Entity<StationAiCoreComponent?> entity, out EntityUid he return true; } + /// <summary> + /// Tries to get the entity held in the AI using StationAiHolder. + /// </summary> + private bool TryGetHeldFromHolder(Entity<StationAiHolderComponent?> entity, out EntityUid held) + { + held = EntityUid.Invalid; + + if (!Resolve(entity.Owner, ref entity.Comp)) + return false; + + if (!_containers.TryGetContainer(entity.Owner, StationAiHolderComponent.Container, out var container) || + container.ContainedEntities.Count == 0) + return false; + + held = container.ContainedEntities[0]; + return true; + } + private bool TryGetCore(EntityUid ent, out Entity<StationAiCoreComponent?> core) { if (!_containers.TryGetContainingContainer(ent, out var container) || diff --git a/Content.Shared/Silicons/StationAi/SharedStationAiSystem.cs b/Content.Shared/Silicons/StationAi/SharedStationAiSystem.cs index f88df9eea6b..189515635a8 100644 --- a/Content.Shared/Silicons/StationAi/SharedStationAiSystem.cs +++ b/Content.Shared/Silicons/StationAi/SharedStationAiSystem.cs @@ -4,7 +4,9 @@ using Content.Shared.Containers.ItemSlots; using Content.Shared.Database; using Content.Shared.Doors.Systems; +using Content.Shared.DoAfter; using Content.Shared.Electrocution; +using Content.Shared.Intellicard; using Content.Shared.Interaction; using Content.Shared.Item.ItemToggle; using Content.Shared.Mind; @@ -15,6 +17,7 @@ using Content.Shared.Power.EntitySystems; using Content.Shared.StationAi; using Content.Shared.Verbs; +using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; using Robust.Shared.Map.Components; @@ -40,6 +43,7 @@ public abstract partial class SharedStationAiSystem : EntitySystem [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedContainerSystem _containers = default!; [Dependency] private readonly SharedDoorSystem _doors = default!; + [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; [Dependency] private readonly SharedElectrocutionSystem _electrify = default!; [Dependency] private readonly SharedEyeSystem _eye = default!; [Dependency] protected readonly SharedMapSystem Maps = default!; @@ -87,6 +91,7 @@ public override void Initialize() SubscribeLocalEvent<StationAiHolderComponent, MapInitEvent>(OnHolderMapInit); SubscribeLocalEvent<StationAiHolderComponent, EntInsertedIntoContainerMessage>(OnHolderConInsert); SubscribeLocalEvent<StationAiHolderComponent, EntRemovedFromContainerMessage>(OnHolderConRemove); + SubscribeLocalEvent<StationAiHolderComponent, IntellicardDoAfterEvent>(OnIntellicardDoAfter); SubscribeLocalEvent<StationAiCoreComponent, EntInsertedIntoContainerMessage>(OnAiInsert); SubscribeLocalEvent<StationAiCoreComponent, EntRemovedFromContainerMessage>(OnAiRemove); @@ -197,15 +202,22 @@ private void OnAiInRange(Entity<StationAiOverlayComponent> ent, ref InRangeOverr args.InRange = _vision.IsAccessible((targetXform.GridUid.Value, broadphase, grid), targetTile); } - private void OnHolderInteract(Entity<StationAiHolderComponent> ent, ref AfterInteractEvent args) + + private void OnIntellicardDoAfter(Entity<StationAiHolderComponent> ent, ref IntellicardDoAfterEvent args) { - if (!TryComp(args.Target, out StationAiHolderComponent? targetHolder)) + if (args.Cancelled) + return; + + if (args.Handled) + return; + + if (!TryComp(args.Args.Target, out StationAiHolderComponent? targetHolder)) return; // Try to insert our thing into them if (_slots.CanEject(ent.Owner, args.User, ent.Comp.Slot)) { - if (!_slots.TryInsert(args.Target.Value, targetHolder.Slot, ent.Comp.Slot.Item!.Value, args.User, excludeUserAudio: true)) + if (!_slots.TryInsert(args.Args.Target.Value, targetHolder.Slot, ent.Comp.Slot.Item!.Value, args.User, excludeUserAudio: true)) { return; } @@ -215,7 +227,7 @@ private void OnHolderInteract(Entity<StationAiHolderComponent> ent, ref AfterInt } // Otherwise try to take from them - if (_slots.CanEject(args.Target.Value, args.User, targetHolder.Slot)) + if (_slots.CanEject(args.Args.Target.Value, args.User, targetHolder.Slot)) { if (!_slots.TryInsert(ent.Owner, ent.Comp.Slot, targetHolder.Slot.Item!.Value, args.User, excludeUserAudio: true)) { @@ -226,6 +238,55 @@ private void OnHolderInteract(Entity<StationAiHolderComponent> ent, ref AfterInt } } + private void OnHolderInteract(Entity<StationAiHolderComponent> ent, ref AfterInteractEvent args) + { + if (args.Handled || !args.CanReach || args.Target == null) + return; + + if (!TryComp(args.Target, out StationAiHolderComponent? targetHolder)) + return; + + //Don't want to download/upload between several intellicards. You can just pick it up at that point. + if (HasComp<IntellicardComponent>(args.Target)) + return; + + if (!TryComp(args.Used, out IntellicardComponent? intelliComp)) + return; + + var cardHasAi = _slots.CanEject(ent.Owner, args.User, ent.Comp.Slot); + var coreHasAi = _slots.CanEject(args.Target.Value, args.User, targetHolder.Slot); + + if (cardHasAi && coreHasAi) + { + _popup.PopupClient(Loc.GetString("intellicard-core-occupied"), args.User, args.User, PopupType.Medium); + args.Handled = true; + return; + } + if (!cardHasAi && !coreHasAi) + { + _popup.PopupClient(Loc.GetString("intellicard-core-empty"), args.User, args.User, PopupType.Medium); + args.Handled = true; + return; + } + + if (TryGetHeldFromHolder((args.Target.Value, targetHolder), out var held) && _timing.CurTime > intelliComp.NextWarningAllowed) + { + intelliComp.NextWarningAllowed = _timing.CurTime + intelliComp.WarningDelay; + AnnounceIntellicardUsage(held, intelliComp.WarningSound); + } + + var doAfterArgs = new DoAfterArgs(EntityManager, args.User, cardHasAi ? intelliComp.UploadTime : intelliComp.DownloadTime, new IntellicardDoAfterEvent(), args.Target, ent.Owner) + { + BreakOnDamage = true, + BreakOnMove = true, + NeedHand = true, + BreakOnDropItem = true + }; + + _doAfter.TryStartDoAfter(doAfterArgs); + args.Handled = true; + } + private void OnHolderInit(Entity<StationAiHolderComponent> ent, ref ComponentInit args) { _slots.AddItemSlot(ent.Owner, StationAiHolderComponent.Container, ent.Comp.Slot); @@ -378,6 +439,8 @@ private void UpdateAppearance(Entity<StationAiHolderComponent?> entity) _appearance.SetData(entity.Owner, StationAiVisualState.Key, StationAiState.Occupied); } + public virtual void AnnounceIntellicardUsage(EntityUid uid, SoundSpecifier? cue = null) { } + public virtual bool SetVisionEnabled(Entity<StationAiVisionComponent> entity, bool enabled, bool announce = false) { if (entity.Comp.Enabled == enabled) @@ -419,6 +482,10 @@ public sealed partial class JumpToCoreEvent : InstantActionEvent } +[Serializable, NetSerializable] +public sealed partial class IntellicardDoAfterEvent : SimpleDoAfterEvent; + + [Serializable, NetSerializable] public enum StationAiVisualState : byte { diff --git a/Resources/Locale/en-US/intellicard/intellicard.ftl b/Resources/Locale/en-US/intellicard/intellicard.ftl new file mode 100644 index 00000000000..aed155a1202 --- /dev/null +++ b/Resources/Locale/en-US/intellicard/intellicard.ftl @@ -0,0 +1,3 @@ +# General +intellicard-core-occupied = The AI core is already occupied by another digital consciousness. +intellicard-core-empty = The AI core has no digital consciousness to download. \ No newline at end of file diff --git a/Resources/Locale/en-US/silicons/station-ai.ftl b/Resources/Locale/en-US/silicons/station-ai.ftl index 7d9db3f6dc5..76c30eb1018 100644 --- a/Resources/Locale/en-US/silicons/station-ai.ftl +++ b/Resources/Locale/en-US/silicons/station-ai.ftl @@ -20,3 +20,5 @@ electrify-door-off = Disable overcharge toggle-light = Toggle light ai-device-not-responding = Device is not responding + +ai-consciousness-download-warning = Your consciousness is being downloaded. diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index 39750b470f5..e787ef59f00 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -301,6 +301,7 @@ unshaded: Empty: { state: empty } Occupied: { state: full } + - type: Intellicard - type: entity id: PlayerStationAiEmpty From 675e42df2446855694359bbcd9298ac6af3e0e48 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Sat, 9 Nov 2024 19:30:38 +0000 Subject: [PATCH 044/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 485cad8e96d..a1a17548d48 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: pigeonpeas - changes: - - message: Added non command mantle into the winterdrobe - type: Add - id: 7100 - time: '2024-08-13T09:20:12.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/29774 - author: TheShuEd changes: - message: change the way food is sliced - food is now sliced whole after a small @@ -3948,3 +3941,14 @@ id: 7599 time: '2024-11-08T14:50:17.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/31710 +- author: ScarKy0 + changes: + - message: Intellicarding the AI is now a doAfter. + type: Tweak + - message: AI now gets notified when someone tries to intellicard it. + type: Add + - message: You can no longer exchange the AI between intellicards. + type: Fix + id: 7600 + time: '2024-11-09T19:29:29.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33198 From d1c66d71e7e554cc194f6bc1b4e197b35d3b202a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 10 Nov 2024 01:46:58 +0100 Subject: [PATCH 045/187] Update Credits (#33237) Co-authored-by: PJBot <pieterjan.briers+bot@gmail.com> --- Resources/Credits/GitHub.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Credits/GitHub.txt b/Resources/Credits/GitHub.txt index 8c2ad5f5b0f..362b82c63f4 100644 --- a/Resources/Credits/GitHub.txt +++ b/Resources/Credits/GitHub.txt @@ -1 +1 @@ -0x6273, 12rabbits, 13spacemen, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 3nderall, 4310v343k, 4dplanner, 612git, 778b, Ablankmann, abregado, Absolute-Potato, achookh, Acruid, actioninja, actually-reb, ada-please, adamsong, Adeinitas, Admiral-Obvious-001, adrian, Adrian16199, Ady4ik, Aerocrux, Aeshus, Aexolott, Aexxie, africalimedrop, Afrokada, AftrLite, Agoichi, Ahion, aiden, AJCM-git, AjexRose, Alekshhh, alexkar598, AlexMorgan3817, alexumandxgabriel08x, Alithsko, ALMv1, Alpha-Two, AlphaQwerty, Altoids1, amylizzle, ancientpower, Andre19926, AndrewEyeke, AndreyCamper, Anzarot121, Appiah, ar4ill, ArchPigeon, ArchRBX, areitpog, Arendian, arimah, Arkanic, ArkiveDev, armoks, Arteben, ArthurMousatov, ArtisticRoomba, artur, AruMoon, ArZarLordOfMango, as334, AsikKEsel, AsnDen, asperger-sind, aspiringLich, astriloqua, august-sun, AutoOtter, avghdev, Awlod, AzzyIsNotHere, BackeTako, BananaFlambe, Baptr0b0t, BasedUser, beck-thompson, bellwetherlogic, benev0, benjamin-burges, BGare, bhenrich, bhespiritu, bibbly, BIGZi0348, bingojohnson, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, BlitzTheSquishy, bloodrizer, Bloody2372, blueDev2, Boaz1111, BobdaBiscuit, BobTheSleder, boiled-water-tsar, BombasterDS, botanySupremist, brainfood1183, BramvanZijp, Brandon-Huu, BriBrooo, Bright0, brndd, bryce0110, BubblegumBlue, buletsponge, buntobaggins, bvelliquette, byondfuckery, c0rigin, c4llv07e, CaasGit, Caconym27, Calecute, Callmore, capnsockless, CaptainSqrBeard, Carbonhell, Carolyn3114, Carou02, carteblanche4me, Catofquestionableethics, CatTheSystem, Centronias, chairbender, Charlese2, charlie, ChaseFlorom, chavonadelal, Cheackraze, cheesePizza2, cheeseplated, Chief-Engineer, chillyconmor, christhirtle, chromiumboy, Chronophylos, Chubbicous, Chubbygummibear, Ciac32, civilCornball, Clement-O, clyf, Clyybber, CMDR-Piboy314, cohanna, Cohnway, Cojoke-dot, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, CookieMasterT, coolboy911, coolmankid12345, Coolsurf6, corentt, CormosLemming, crazybrain23, creadth, CrigCrag, croilbird, Crotalus, CrudeWax, CrzyPotato, cutemoongod, Cyberboss, d34d10cc, d4kii, DadeKuma, Daemon, daerSeebaer, dahnte, dakamakat, DamianX, DangerRevolution, daniel-cr, DanSAussieITS, Daracke, Darkenson, DawBla, Daxxi3, dch-GH, de0rix, Deahaka, dean, DEATHB4DEFEAT, DeathCamel58, Deatherd, deathride58, DebugOk, Decappi, Decortex, Deeeeja, deepdarkdepths, degradka, Delete69, deltanedas, DenisShvalov, DerbyX, derek, dersheppard, Deserty0, Detintinto, DevilishMilk, dexlerxd, dffdff2423, DieselMohawk, digitalic, Dimastra, DinoWattz, DisposableCrewmember42, DjfjdfofdjfjD, doc-michael, docnite, Doctor-Cpu, DoctorBeard, DogZeroX, dolgovmi, dontbetank, Doomsdrayk, Doru991, DoubleRiceEddiedd, DoutorWhite, dragonryan06, drakewill-CRL, Drayff, dreamlyjack, DrEnzyme, dribblydrone, DrMelon, drongood12, DrSingh, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, dukevanity, duskyjay, Dutch-VanDerLinde, dvir001, Dynexust, Easypoller, echo, eclips_e, eden077, EEASAS, Efruit, efzapa, Ekkosangen, ElectroSR, elsie, elthundercloud, Elysium206, Emisse, emmafornash, EmoGarbage404, Endecc, eoineoineoin, eris, erohrs2, ERORR404V1, Errant-4, ertanic, esguard, estacaoespacialpirata, eugene, exincore, exp111, f0x-n3rd, FacePluslll, Fahasor, FairlySadPanda, FATFSAAM2, Feluk6174, ficcialfaint, Fiftyllama, Fildrance, FillerVK, FinnishPaladin, FirinMaLazors, Fishfish458, FL-OZ, Flareguy, flashgnash, FluffiestFloof, FluffMe, FluidRock, foboscheshir, FoLoKe, fooberticus, ForestNoises, forgotmyotheraccount, forkeyboards, forthbridge, Fortune117, Fouin, foxhorn, freeman2651, freeze2222, Froffy025, Fromoriss, froozigiusz, FrostMando, FungiFellow, FunTust, Futuristic-OK, GalacticChimp, gamer3107, Gaxeer, gbasood, Geekyhobo, genderGeometries, GeneralGaws, Genkail, geraeumig, Ghagliiarghii, Git-Nivrak, githubuser508, gituhabu, GlassEclipse, GNF54, godisdeadLOL, goet, Goldminermac, Golinth, GoodWheatley, Gorox221, gradientvera, graevy, GraniteSidewalk, GreaseMonk, greenrock64, GreyMario, GTRsound, gusxyz, Gyrandola, h3half, hamurlik, Hanzdegloker, HappyRoach, Hardly3D, harikattar, he1acdvv, Hebi, Henry, HerCoyote23, hitomishirichan, hiucko, Hmeister-fake, Hmeister-real, Hobbitmax, hobnob, HoidC, Holinka4ever, holyssss, HoofedEar, Hoolny, hord-brayden, Hreno, hubismal, Hugal31, Huxellberger, Hyenh, hyphenationc, i-justuser-i, iacore, IamVelcroboy, Ian321, icekot8, icesickleone, iczero, iglov, IgorAnt028, igorsaux, ike709, illersaver, Illiux, Ilushkins33, Ilya246, IlyaElDunaev, imrenq, imweax, indeano, Injazz, Insineer, IntegerTempest, Interrobang01, IProduceWidgets, ItsMeThom, Itzbenz, iztokbajcar, Jackal298, Jackrost, jacksonzck, Jackw2As, jacob, jamessimo, janekvap, Jark255, Jarmer123, Jaskanbe, JasperJRoth, JerryImMouse, jerryimmouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JimGamemaster, jimmy12or, JIPDawg, jjtParadox, jmcb, JoeHammad1844, JohnGinnane, johnku1, Jophire, joshepvodka, Jrpl, juliangiebel, JustArt1m, JustCone14, justdie12, justin, justintether, JustinTrotter, justtne, K-Dynamic, k3yw, Kadeo64, Kaga-404, KaiShibaa, kalane15, kalanosh, Kanashi-Panda, katzenminer, kbailey-git, Keelin, Keer-Sar, KEEYNy, keikiru, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, Kimpes, KingFroozy, kira-er, Kirillcas, Kirus59, Kistras, Kit0vras, KittenColony, klaypexx, Kmc2000, Ko4ergaPunk, kognise, kokoc9n, komunre, KonstantinAngelov, kosticia, koteq, KrasnoshchekovPavel, Krunklehorn, Kupie, kxvvv, kyupolaris, kzhanik, lajolico, Lamrr, LankLTE, laok233, lapatison, larryrussian, lawdog4817, Lazzi0706, leander-0, leonardo-dabepis, leonsfriedrich, LeoSantich, LetterN, lettern, Level10Cybermancer, LEVELcat, lever1209, Lgibb18, lgruthes, LightVillet, liltenhead, LinkUyx, LittleBuilderJane, LittleNorthStar, LittleNyanCat, lizelive, localcc, lokachop, Lomcastar, LordCarve, LordEclipse, LucasTheDrgn, luckyshotpictures, LudwigVonChesterfield, luizwritescode, Lukasz825700516, luminight, lunarcomets, luringens, lvvova1, Lyndomen, lyroth001, lzimann, lzk228, M3739, mac6na6na, MACMAN2003, Macoron, Magicalus, magmodius, MagnusCrowe, malchanceux, MaloTV, ManelNavola, Mangohydra, marboww, Markek1, Matz05, max, MaxNox7, maylokana, MehimoNemo, MeltedPixel, MemeProof, MendaxxDev, Menshin, Mephisto72, MerrytheManokit, Mervill, metalgearsloth, MetalSage, MFMessage, mhamsterr, michaelcu, micheel665, MilenVolf, MilonPL, Minemoder5000, Minty642, Mirino97, mirrorcult, misandrie, MishaUnity, MissKay1994, MisterMecky, Mith-randalf, MjrLandWhale, mkanke-real, MLGTASTICa, moderatelyaware, modern-nm, mokiros, Moneyl, Moomoobeef, moony, Morb0, mr-bo-jangles, Mr0maks, MrFippik, mrrobdemo, muburu, MureixloI, musicmanvr, MWKane, Myakot, Myctai, N3X15, nails-n-tape, Nairodian, Naive817, NakataRin, namespace-Memory, Nannek, NazrinNya, neutrino-laser, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, NIXC, NkoKirkto, nmajask, noctyrnal, noelkathegod, nok-ko, NonchalantNoob, NoobyLegion, Nopey, not-gavnaed, notafet, notquitehadouken, NotSoDana, noudoit, noverd, NuclearWinter, nukashimika, nuke-haus, NULL882, nullarmo, nyeogmi, Nylux, Nyranu, och-och, OctoRocket, OldDanceJacket, OliverOtter, onoira, OnyxTheBrave, OrangeMoronage9622, osjarw, Ostaf, othymer, OttoMaticode, Owai-Seek, packmore, paigemaeforrest, pali6, Pangogie, panzer-iv1, paolordls, partyaddict, patrikturi, PaulRitter, peccneck, Peptide90, peptron1, PeterFuto, PetMudstone, pewter-wiz, Pgriha, Phantom-Lily, pheenty, Phill101, phunnyguy, PilgrimViis, Pill-U, Pireax, Pissachu, pissdemon, PixeltheAertistContrib, PixelTheKermit, PJB3005, Plasmaguy, plinyvic, Plykiya, poeMota, pofitlo, pointer-to-null, pok27, PolterTzi, PoorMansDreams, PopGamer45, portfiend, potato1234x, PotentiallyTom, ProfanedBane, ProPandaBear, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykzz, PuceTint, PuroSlavKing, PursuitInAshes, Putnam3145, qrtDaniil, quatre, QueerNB, QuietlyWhisper, qwerltaz, RadioMull, Radosvik, Radrark, Rainbeon, Rainfey, Raitononai, Ramlik, RamZ, randy10122, Rane, Ranger6012, Rapidgame7, ravage123321, rbertoche, Redfire1331, Redict, RedlineTriad, redmushie, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, Renlou, retequizzle, RiceMar1244, rich-dunne, RieBi, riggleprime, RIKELOLDABOSS, rinary1, Rinkashikachi, riolume, RobbyTheFish, Rockdtben, Rohesie, rok-povsic, rolfero, RomanNovo, rosieposieeee, Roudenn, router, RumiTiger, S1rFl0, S1ss3l, Saakra, Sadie-silly, saga3152, saintmuntzer, Salex08, sam, samgithubaccount, SaphireLattice, SapphicOverload, Sarahon, sativaleanne, SaveliyM360, sBasalto, ScalyChimp, ScarKy0, scrato, Scribbles0, scrivoy, scruq445, scuffedjays, ScumbagDog, Segonist, sephtasm, Serkket, sewerpig, sh18rw, ShadeAware, ShadowCommander, Shadowtheprotogen546, shaeone, shampunj, shariathotpatrol, SignalWalker, siigiil, Simyon264, sirdragooon, Sirionaut, Sk1tch, SkaldetSkaeg, Skarletto, Skrauz, Skyedra, SlamBamActionman, slarticodefast, Slava0135, Slyfox333, snebl, snicket, sniperchance, Snowni, snowsignal, SolidusSnek, SonicHDC, SoulFN, SoulSloth, Soundwavesghost, southbridge-fur, Soydium, spacelizard, SpaceLizardSky, SpaceManiac, SpaceyLady, Spanky, spanky-spanky, spartak, SpartanKadence, SpeltIncorrectyl, Spessmann, SphiraI, SplinterGP, spoogemonster, sporekto, sporkyz, ssdaniel24, stalengd, stanberytrask, Stanislav4ix, StanTheCarpenter, Stealthbomber16, stellar-novas, stomf, stopbreaking, stopka-html, StrawberryMoses, Stray-Pyramid, strO0pwafel, Strol20, StStevens, Subversionary, sunbear-dev, superjj18, Supernorn, SweptWasTaken, Sybil, SYNCHRONIC, Szunti, Tainakov, takemysoult, TaralGit, Taran, taurie, Tayrtahn, tday93, teamaki, TekuNut, telyonok, TemporalOroboros, tentekal, terezi4real, Terraspark4941, texcruize, TGODiamond, TGRCdev, tgrkzus, ThatOneGoblin25, thatrandomcanadianguy, TheArturZh, theashtronaut, thecopbennet, TheCze, TheDarkElites, thedraccx, TheEmber, TheIntoxicatedCat, thekilk, themias, theomund, theOperand, TherapyGoth, TheShuEd, thetolbean, thevinter, TheWaffleJesus, Thinbug0, ThunderBear2006, timothyteakettle, TimrodDX, timurjavid, tin-man-tim, Titian3, tk-a369, tkdrg, tmtmtl30, TokenStyle, Tollhouse, Toly65, tom-leys, tomasalves8, Tomeno, Tonydatguy, topy, Tornado-Technology, tosatur, TotallyLemon, tropicalhibi, truepaintgit, Truoizys, Tryded, TsjipTsjip, Tunguso4ka, TurboTrackerss14, TyAshley, Tyler-IN, Tyzemol, UbaserB, ubis1, UBlueberry, UKNOWH, UltimateJester, Unbelievable-Salmon, underscorex5, UnicornOnLSD, Unisol, Unkn0wnGh0st333, unusualcrow, Uriende, UristMcDorf, user424242420, Vaaankas, valentfingerov, Varen, VasilisThePikachu, veliebm, VelonacepsCalyxEggs, veprolet, veritable-calamity, Veritius, Vermidia, vero5123, Verslebas, VigersRay, violet754, Visne, VMSolidus, voidnull000, volotomite, volundr-, Voomra, Vordenburg, vorkathbruh, vulppine, wafehling, Warentan, WarMechanic, Watermelon914, waylon531, weaversam8, wertanchik, whateverusername0, Willhelm53, WilliamECrew, willicassi, Winkarst-cpu, wirdal, wixoaGit, WlarusFromDaSpace, wrexbe, wtcwr68, xkreksx, xprospero, xRiriq, YanehCheck, yathxyz, Ygg01, YotaXP, youarereadingthis, Yousifb26, youtissoum, YuriyKiss, zach-hill, Zadeon, zamp, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zero, ZeroDiamond, zerorulez, ZeWaka, zionnBE, ZNixian, ZoldorfTheWizard, Zonespace27, Zylofan, Zymem, zzylex +0x6273, 12rabbits, 13spacemen, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 3nderall, 4310v343k, 4dplanner, 612git, 778b, Ablankmann, abregado, Absolute-Potato, achookh, Acruid, actioninja, actually-reb, ada-please, adamsong, Adeinitas, Admiral-Obvious-001, adrian, Adrian16199, Ady4ik, Aerocrux, Aeshus, Aexolott, Aexxie, africalimedrop, Afrokada, AftrLite, Agoichi, Ahion, aiden, AJCM-git, AjexRose, Alekshhh, alexkar598, AlexMorgan3817, alexumandxgabriel08x, Alithsko, ALMv1, Alpha-Two, AlphaQwerty, Altoids1, amylizzle, ancientpower, Andre19926, AndrewEyeke, AndreyCamper, Anzarot121, Appiah, ar4ill, ArchPigeon, ArchRBX, areitpog, Arendian, arimah, Arkanic, ArkiveDev, armoks, Arteben, ArthurMousatov, ArtisticRoomba, artur, AruMoon, ArZarLordOfMango, as334, AsikKEsel, AsnDen, asperger-sind, aspiringLich, astriloqua, august-sun, AutoOtter, avghdev, Awlod, AzzyIsNotHere, BackeTako, BananaFlambe, Baptr0b0t, BasedUser, beck-thompson, bellwetherlogic, benev0, benjamin-burges, BGare, bhenrich, bhespiritu, bibbly, BIGZi0348, bingojohnson, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, BlitzTheSquishy, bloodrizer, Bloody2372, blueDev2, Boaz1111, BobdaBiscuit, BobTheSleder, boiled-water-tsar, BombasterDS, Boolean-Buckeye, botanySupremist, brainfood1183, BramvanZijp, Brandon-Huu, BriBrooo, Bright0, brndd, bryce0110, BubblegumBlue, buletsponge, buntobaggins, bvelliquette, byondfuckery, c0rigin, c4llv07e, CaasGit, Caconym27, Calecute, Callmore, capnsockless, CaptainSqrBeard, Carbonhell, Carolyn3114, Carou02, carteblanche4me, Catofquestionableethics, CatTheSystem, Centronias, chairbender, Charlese2, charlie, ChaseFlorom, chavonadelal, Cheackraze, cheesePizza2, cheeseplated, Chief-Engineer, chillyconmor, christhirtle, chromiumboy, Chronophylos, Chubbicous, Chubbygummibear, Ciac32, civilCornball, Clement-O, clyf, Clyybber, CMDR-Piboy314, cohanna, Cohnway, Cojoke-dot, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, CookieMasterT, coolboy911, coolmankid12345, Coolsurf6, corentt, CormosLemming, crazybrain23, creadth, CrigCrag, croilbird, Crotalus, CrudeWax, CrzyPotato, cutemoongod, Cyberboss, d34d10cc, d4kii, DadeKuma, Daemon, daerSeebaer, dahnte, dakamakat, DamianX, DangerRevolution, daniel-cr, DanSAussieITS, Daracke, Darkenson, DawBla, Daxxi3, dch-GH, de0rix, Deahaka, dean, DEATHB4DEFEAT, DeathCamel58, Deatherd, deathride58, DebugOk, Decappi, Decortex, Deeeeja, deepdarkdepths, degradka, Delete69, deltanedas, DenisShvalov, DerbyX, derek, dersheppard, Deserty0, Detintinto, DevilishMilk, dexlerxd, dffdff2423, DieselMohawk, digitalic, Dimastra, DinoWattz, DisposableCrewmember42, DjfjdfofdjfjD, doc-michael, docnite, Doctor-Cpu, DoctorBeard, DogZeroX, dolgovmi, dontbetank, Doomsdrayk, Doru991, DoubleRiceEddiedd, DoutorWhite, dragonryan06, drakewill-CRL, Drayff, dreamlyjack, DrEnzyme, dribblydrone, DrMelon, drongood12, DrSingh, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, dukevanity, duskyjay, Dutch-VanDerLinde, dvir001, Dynexust, Easypoller, echo, eclips_e, eden077, EEASAS, Efruit, efzapa, Ekkosangen, ElectroSR, elsie, elthundercloud, Elysium206, Emisse, emmafornash, EmoGarbage404, Endecc, eoineoineoin, eris, erohrs2, ERORR404V1, Errant-4, ertanic, esguard, estacaoespacialpirata, eugene, ewokswagger, exincore, exp111, f0x-n3rd, FacePluslll, Fahasor, FairlySadPanda, FATFSAAM2, Feluk6174, ficcialfaint, Fiftyllama, Fildrance, FillerVK, FinnishPaladin, firenamefn, FirinMaLazors, Fishfish458, FL-OZ, Flareguy, flashgnash, FluffiestFloof, FluffMe, FluidRock, foboscheshir, FoLoKe, fooberticus, ForestNoises, forgotmyotheraccount, forkeyboards, forthbridge, Fortune117, Fouin, foxhorn, freeman2651, freeze2222, Froffy025, Fromoriss, froozigiusz, FrostMando, FungiFellow, FunTust, Futuristic-OK, GalacticChimp, gamer3107, Gaxeer, gbasood, Geekyhobo, genderGeometries, GeneralGaws, Genkail, geraeumig, Ghagliiarghii, Git-Nivrak, githubuser508, gituhabu, GlassEclipse, GNF54, godisdeadLOL, goet, Goldminermac, Golinth, GoodWheatley, Gorox221, gradientvera, graevy, GraniteSidewalk, GreaseMonk, greenrock64, GreyMario, GTRsound, gusxyz, Gyrandola, h3half, hamurlik, Hanzdegloker, HappyRoach, Hardly3D, harikattar, he1acdvv, Hebi, Henry, HerCoyote23, hitomishirichan, hiucko, Hmeister-fake, Hmeister-real, Hobbitmax, hobnob, HoidC, Holinka4ever, holyssss, HoofedEar, Hoolny, hord-brayden, Hreno, hubismal, Hugal31, Huxellberger, Hyenh, hyphenationc, i-justuser-i, iacore, IamVelcroboy, Ian321, icekot8, icesickleone, iczero, iglov, IgorAnt028, igorsaux, ike709, illersaver, Illiux, Ilushkins33, Ilya246, IlyaElDunaev, imrenq, imweax, indeano, Injazz, Insineer, IntegerTempest, Interrobang01, IProduceWidgets, ItsMeThom, Itzbenz, iztokbajcar, Jackal298, Jackrost, jacksonzck, Jackw2As, jacob, jamessimo, janekvap, Jark255, Jarmer123, Jaskanbe, JasperJRoth, jerryimmouse, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JimGamemaster, jimmy12or, JIPDawg, jjtParadox, jmcb, JoeHammad1844, JohnGinnane, johnku1, Jophire, joshepvodka, Jrpl, juliangiebel, JustArt1m, JustCone14, justdie12, justin, justintether, JustinTrotter, justtne, K-Dynamic, k3yw, Kadeo64, Kaga-404, KaiShibaa, kalane15, kalanosh, Kanashi-Panda, katzenminer, kbailey-git, Keelin, Keer-Sar, KEEYNy, keikiru, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, Kimpes, KingFroozy, kira-er, Kirillcas, Kirus59, Kistras, Kit0vras, KittenColony, klaypexx, Kmc2000, Ko4ergaPunk, kognise, kokoc9n, komunre, KonstantinAngelov, kosticia, koteq, KrasnoshchekovPavel, Krunklehorn, Kupie, kxvvv, kyupolaris, kzhanik, lajolico, Lamrr, LankLTE, laok233, lapatison, larryrussian, lawdog4817, Lazzi0706, leander-0, leonardo-dabepis, leonsfriedrich, LeoSantich, LetterN, lettern, Level10Cybermancer, LEVELcat, lever1209, Lgibb18, lgruthes, LightVillet, liltenhead, LinkUyx, LittleBuilderJane, LittleNorthStar, LittleNyanCat, lizelive, localcc, lokachop, Lomcastar, LordCarve, LordEclipse, LucasTheDrgn, luckyshotpictures, LudwigVonChesterfield, luizwritescode, Lukasz825700516, luminight, lunarcomets, luringens, lvvova1, Lyndomen, lyroth001, lzimann, lzk228, M3739, mac6na6na, MACMAN2003, Macoron, Magicalus, magmodius, MagnusCrowe, malchanceux, MaloTV, ManelNavola, Mangohydra, marboww, Markek1, Matz05, max, MaxNox7, maylokana, MehimoNemo, MeltedPixel, MemeProof, MendaxxDev, Menshin, Mephisto72, MerrytheManokit, Mervill, metalgearsloth, MetalSage, MFMessage, mhamsterr, michaelcu, micheel665, MilenVolf, MilonPL, Minemoder5000, Minty642, Mirino97, mirrorcult, misandrie, MishaUnity, MissKay1994, MisterMecky, Mith-randalf, MjrLandWhale, mkanke-real, MLGTASTICa, moderatelyaware, modern-nm, mokiros, Moneyl, Moomoobeef, moony, Morb0, mr-bo-jangles, Mr0maks, MrFippik, mrrobdemo, muburu, MureixloI, musicmanvr, MWKane, Myakot, Myctai, N3X15, nails-n-tape, Nairodian, Naive817, NakataRin, namespace-Memory, Nannek, NazrinNya, neutrino-laser, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, NIXC, NkoKirkto, nmajask, noctyrnal, noelkathegod, nok-ko, NonchalantNoob, NoobyLegion, Nopey, not-gavnaed, notafet, notquitehadouken, NotSoDana, noudoit, noverd, NuclearWinter, nukashimika, nuke-haus, NULL882, nullarmo, nyeogmi, Nylux, Nyranu, och-och, OctoRocket, OldDanceJacket, OliverOtter, OnyxTheBrave, OrangeMoronage9622, osjarw, Ostaf, othymer, OttoMaticode, Owai-Seek, packmore, paigemaeforrest, pali6, Pangogie, panzer-iv1, paolordls, partyaddict, patrikturi, PaulRitter, peccneck, Peptide90, peptron1, PeterFuto, PetMudstone, pewter-wiz, Pgriha, Phantom-Lily, pheenty, Phill101, phunnyguy, PilgrimViis, Pill-U, Pireax, Pissachu, pissdemon, PixeltheAertistContrib, PixelTheKermit, PJB3005, Plasmaguy, plinyvic, Plykiya, poeMota, pofitlo, pointer-to-null, pok27, PolterTzi, PoorMansDreams, PopGamer45, portfiend, potato1234x, PotentiallyTom, ProfanedBane, ProPandaBear, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykzz, PuceTint, PuroSlavKing, PursuitInAshes, Putnam3145, qrtDaniil, quatre, QueerNB, QuietlyWhisper, qwerltaz, RadioMull, Radosvik, Radrark, Rainbeon, Rainfey, Raitononai, Ramlik, RamZ, randy10122, Rane, Ranger6012, Rapidgame7, ravage123321, rbertoche, Redfire1331, Redict, RedlineTriad, redmushie, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, Renlou, retequizzle, rich-dunne, RieBi, riggleprime, RIKELOLDABOSS, rinary1, Rinkashikachi, riolume, RobbyTheFish, Rockdtben, Rohesie, rok-povsic, rolfero, RomanNovo, rosieposieeee, Roudenn, router, RumiTiger, S1rFl0, S1ss3l, Saakra, Sadie-silly, saga3152, saintmuntzer, Salex08, sam, samgithubaccount, SaphireLattice, SapphicOverload, Sarahon, sativaleanne, SaveliyM360, sBasalto, ScalyChimp, ScarKy0, scrato, Scribbles0, scrivoy, scruq445, scuffedjays, ScumbagDog, Segonist, sephtasm, Serkket, sewerpig, sh18rw, ShadeAware, ShadowCommander, Shadowtheprotogen546, shaeone, shampunj, shariathotpatrol, SignalWalker, siigiil, Simyon264, sirdragooon, Sirionaut, Sk1tch, SkaldetSkaeg, Skarletto, Skrauz, Skyedra, SlamBamActionman, slarticodefast, Slava0135, Slyfox333, snebl, snicket, sniperchance, Snowni, snowsignal, SolidusSnek, SonicHDC, SoulFN, SoulSloth, Soundwavesghost, southbridge-fur, Soydium, spacelizard, SpaceLizardSky, SpaceManiac, SpaceRox1244, SpaceyLady, Spanky, spanky-spanky, spartak, SpartanKadence, SpeltIncorrectyl, Spessmann, SphiraI, SplinterGP, spoogemonster, sporekto, sporkyz, ssdaniel24, stalengd, stanberytrask, Stanislav4ix, StanTheCarpenter, Stealthbomber16, stellar-novas, stomf, stopbreaking, stopka-html, StrawberryMoses, Stray-Pyramid, strO0pwafel, Strol20, StStevens, Subversionary, sunbear-dev, superjj18, Supernorn, SweptWasTaken, Sybil, SYNCHRONIC, Szunti, Tainakov, takemysoult, TaralGit, Taran, taurie, Tayrtahn, tday93, teamaki, TekuNut, telyonok, TemporalOroboros, tentekal, terezi4real, Terraspark4941, texcruize, TGODiamond, TGRCdev, tgrkzus, ThatOneGoblin25, thatrandomcanadianguy, TheArturZh, theashtronaut, thecopbennet, TheCze, TheDarkElites, thedraccx, TheEmber, TheIntoxicatedCat, thekilk, themias, theomund, theOperand, TherapyGoth, TheShuEd, thetolbean, thevinter, TheWaffleJesus, Thinbug0, ThunderBear2006, timothyteakettle, TimrodDX, timurjavid, tin-man-tim, Titian3, tk-a369, tkdrg, tmtmtl30, TokenStyle, Tollhouse, Toly65, tom-leys, tomasalves8, Tomeno, Tonydatguy, topy, Tornado-Technology, tosatur, TotallyLemon, Tr1bute, tropicalhibi, truepaintgit, Truoizys, Tryded, TsjipTsjip, Tunguso4ka, TurboTrackerss14, TyAshley, Tyler-IN, Tyzemol, UbaserB, ubis1, UBlueberry, UKNOWH, UltimateJester, Unbelievable-Salmon, underscorex5, UnicornOnLSD, Unisol, Unkn0wnGh0st333, unusualcrow, Uriende, UristMcDorf, user424242420, Vaaankas, valentfingerov, Varen, VasilisThePikachu, veliebm, VelonacepsCalyxEggs, veprolet, veritable-calamity, Veritius, Vermidia, vero5123, Verslebas, VigersRay, violet754, Visne, VMSolidus, voidnull000, volotomite, volundr-, Voomra, Vordenburg, vorkathbruh, vulppine, wafehling, Warentan, WarMechanic, Watermelon914, waylon531, weaversam8, wertanchik, whateverusername0, Willhelm53, WilliamECrew, willicassi, Winkarst-cpu, wirdal, wixoaGit, WlarusFromDaSpace, wrexbe, WTCWR68, xkreksx, xprospero, xRiriq, YanehCheck, yathxyz, Ygg01, YotaXP, youarereadingthis, Yousifb26, youtissoum, YuriyKiss, zach-hill, Zadeon, zamp, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zero, ZeroDiamond, zerorulez, ZeWaka, zionnBE, ZNixian, ZoldorfTheWizard, Zonespace27, Zylofan, Zymem, zzylex From d939e991bba188b6a37e11f402537a93363b278e Mon Sep 17 00:00:00 2001 From: Armok <155400926+ARMOKS@users.noreply.github.com> Date: Sat, 9 Nov 2024 20:32:54 -0700 Subject: [PATCH 046/187] Removed bola stam damage (#32989) --- .../Prototypes/Entities/Objects/Weapons/Throwable/bola.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/bola.yml b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/bola.yml index a4441b18f7f..f8d5efb8c68 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/bola.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/bola.yml @@ -42,9 +42,9 @@ - type: Ensnaring freeTime: 2.0 breakoutTime: 3.5 #all bola should generally be fast to remove - walkSpeed: 0.7 #makeshift bola shouldn't slow too much - sprintSpeed: 0.7 - staminaDamage: 55 # Sudden weight increase sapping stamina + walkSpeed: 0.5 #makeshift bola shouldn't slow too much + sprintSpeed: 0.5 + staminaDamage: 0 # anything but this is gamebreaking canThrowTrigger: true canMoveBreakout: true - type: LandAtCursor From 33b780fd1fb853220ddda96fdd19339c30477016 Mon Sep 17 00:00:00 2001 From: IProduceWidgets <107586145+IProduceWidgets@users.noreply.github.com> Date: Sat, 9 Nov 2024 23:26:51 -0500 Subject: [PATCH 047/187] tweak: weather command tooltip (#33130) clear weather tip --- Content.Server/Weather/WeatherSystem.cs | 4 +++- Resources/Locale/en-US/weather/weather.ftl | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Content.Server/Weather/WeatherSystem.cs b/Content.Server/Weather/WeatherSystem.cs index dbee62a72fc..ec377809133 100644 --- a/Content.Server/Weather/WeatherSystem.cs +++ b/Content.Server/Weather/WeatherSystem.cs @@ -4,6 +4,7 @@ using Robust.Shared.Console; using Robust.Shared.GameStates; using Robust.Shared.Map; +using System.Linq; namespace Content.Server.Weather; @@ -85,6 +86,7 @@ private CompletionResult WeatherCompletion(IConsoleShell shell, string[] args) return CompletionResult.FromHintOptions(CompletionHelper.MapIds(EntityManager), "Map Id"); var a = CompletionHelper.PrototypeIDs<WeatherPrototype>(true, ProtoMan); - return CompletionResult.FromHintOptions(a, Loc.GetString("cmd-weather-hint")); + var b = a.Concat(new[] { new CompletionOption("null", Loc.GetString("cmd-weather-null")) }); + return CompletionResult.FromHintOptions(b, Loc.GetString("cmd-weather-hint")); } } diff --git a/Resources/Locale/en-US/weather/weather.ftl b/Resources/Locale/en-US/weather/weather.ftl index 67e6eec35f2..0c67b6f66bf 100644 --- a/Resources/Locale/en-US/weather/weather.ftl +++ b/Resources/Locale/en-US/weather/weather.ftl @@ -1,6 +1,7 @@ cmd-weather-desc = Sets the weather for the current map. cmd-weather-help = weather <mapId> <prototype / null> cmd-weather-hint = Weather prototype +cmd-weather-null = Clears the weather cmd-weather-error-no-arguments = Not enough arguments! cmd-weather-error-unknown-proto = Unknown Weather prototype! From 9396ce302aed7b1cfbe9995c9214ed8ee7cd49fc Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Sun, 10 Nov 2024 04:27:57 +0000 Subject: [PATCH 048/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index a1a17548d48..9b8052d835a 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: TheShuEd - changes: - - message: change the way food is sliced - food is now sliced whole after a small - doafter than requires multiple clicks on a single entity - type: Tweak - id: 7101 - time: '2024-08-13T10:54:00.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30824 - author: Ubaser changes: - message: Add two gatfruit mutations, one fake and one real capfruit which spawns @@ -3952,3 +3944,10 @@ id: 7600 time: '2024-11-09T19:29:29.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33198 +- author: IProduceWidgets + changes: + - message: weather now has a completion result for how to unset the weather. + type: Tweak + id: 7601 + time: '2024-11-10T04:26:51.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33130 From 2801ebea8d11548511744556622ebfcfe389931d Mon Sep 17 00:00:00 2001 From: Preston Smith <Blackfoot03@outlook.com> Date: Sun, 10 Nov 2024 00:45:54 -0600 Subject: [PATCH 049/187] Optimization! --- Content.Shared/Damage/Systems/DamageExamineSystem.cs | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/Content.Shared/Damage/Systems/DamageExamineSystem.cs b/Content.Shared/Damage/Systems/DamageExamineSystem.cs index 72c1af29b22..fe97a40d1b5 100644 --- a/Content.Shared/Damage/Systems/DamageExamineSystem.cs +++ b/Content.Shared/Damage/Systems/DamageExamineSystem.cs @@ -61,15 +61,12 @@ private FormattedMessage GetDamageExamine(DamageSpecifier damageSpecifier, strin } else { - if (damageSpecifier.DamageDict.Count == 1) + if (damageSpecifier.GetTotal() == FixedPoint2.Zero && !damageSpecifier.AnyPositive()) { - // May be simplified to using a foreach(Var x) despite being only one item - if(damageSpecifier.DamageDict.Values.GetEnumerator().Current == FixedPoint2.Zero) - { - msg.AddMarkupOrThrow(Loc.GetString("damage-none")); - return msg; - } + msg.AddMarkupOrThrow(Loc.GetString("damage-none")); + return msg; } + msg.AddMarkupOrThrow(Loc.GetString("damage-examine-type", ("type", type))); } From 1c8992ffbe1dc596ef377e52c3ec13d8d5ab4d5c Mon Sep 17 00:00:00 2001 From: Shaddap1 <106589956+Shaddap1@users.noreply.github.com> Date: Sun, 10 Nov 2024 06:28:55 -0500 Subject: [PATCH 050/187] Goliath rebalance (#31492) Update asteroid.yml --- Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml b/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml index 877dd40cc38..270e20e5c52 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml @@ -50,12 +50,12 @@ Dead: Base: goliath_dead - type: MovementSpeedModifier - baseWalkSpeed : 2.50 - baseSprintSpeed : 2.50 + baseWalkSpeed : 2.00 + baseSprintSpeed : 2.00 - type: MobThresholds thresholds: 0: Alive - 300: Dead + 250: Dead - type: MeleeWeapon soundHit: path: "/Audio/Weapons/smash.ogg" @@ -64,7 +64,7 @@ animation: WeaponArcPunch damage: types: - Slash: 15 + Slash: 10 Piercing: 10 - type: NpcFactionMember factions: From 9b7200607b28e0c8118e70554dc7cb586b6d63a1 Mon Sep 17 00:00:00 2001 From: scrivoy <179060466+scrivoy@users.noreply.github.com> Date: Sun, 10 Nov 2024 12:40:02 +0100 Subject: [PATCH 051/187] Omega Station: Fix Air Alarm in CMO office (#33216) move air alarm and link devices --- Resources/Maps/omega.yml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Resources/Maps/omega.yml b/Resources/Maps/omega.yml index 7709234a6a1..31e3fc7392a 100644 --- a/Resources/Maps/omega.yml +++ b/Resources/Maps/omega.yml @@ -4648,9 +4648,13 @@ entities: - uid: 6692 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -23.5,-26.5 + rot: 3.141592653589793 rad + pos: -25.5,-29.5 parent: 4812 + - type: DeviceList + devices: + - 6253 + - 5033 - uid: 7234 components: - type: Transform @@ -54547,6 +54551,9 @@ entities: rot: 3.141592653589793 rad pos: -24.5,-27.5 parent: 4812 + - type: DeviceNetwork + deviceLists: + - 6692 - type: AtmosPipeColor color: '#0055CCFF' - uid: 5222 @@ -55489,6 +55496,9 @@ entities: rot: 3.141592653589793 rad pos: -26.5,-26.5 parent: 4812 + - type: DeviceNetwork + deviceLists: + - 6692 - type: AtmosPipeColor color: '#990000FF' - uid: 6417 From 21979a7b5f4e1a2976440f2fdf1d7c150318931a Mon Sep 17 00:00:00 2001 From: leonidussaks <42278348+leonidussaks@users.noreply.github.com> Date: Mon, 11 Nov 2024 06:17:03 +0300 Subject: [PATCH 052/187] Fix vape use without check if doafter cancelled (#33245) vape small fix --- Content.Server/Nutrition/EntitySystems/SmokingSystem.Vape.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Content.Server/Nutrition/EntitySystems/SmokingSystem.Vape.cs b/Content.Server/Nutrition/EntitySystems/SmokingSystem.Vape.cs index c3d41cead6d..26fa5ca3cc8 100644 --- a/Content.Server/Nutrition/EntitySystems/SmokingSystem.Vape.cs +++ b/Content.Server/Nutrition/EntitySystems/SmokingSystem.Vape.cs @@ -122,8 +122,7 @@ private void OnVapeInteraction(Entity<VapeComponent> entity, ref AfterInteractEv private void OnVapeDoAfter(Entity<VapeComponent> entity, ref VapeDoAfterEvent args) { - if (args.Handled - || args.Args.Target == null) + if (args.Cancelled || args.Handled || args.Args.Target == null) return; var environment = _atmos.GetContainingMixture(args.Args.Target.Value, true, true); From a138fede2bda4dcc3901898a5e3cacc415a68c86 Mon Sep 17 00:00:00 2001 From: BramvanZijp <56019239+BramvanZijp@users.noreply.github.com> Date: Mon, 11 Nov 2024 17:12:36 +0100 Subject: [PATCH 053/187] Make the Flare Gun & Security Shell Gun be unbolted by default. (#33248) --- .../Prototypes/Entities/Objects/Weapons/Guns/flare_gun.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/flare_gun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/flare_gun.yml index b63036c58b2..224697bc93f 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/flare_gun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/flare_gun.yml @@ -27,7 +27,7 @@ gun_chamber: !type:ContainerSlot - type: ChamberMagazineAmmoProvider autoCycle: false - boltClosed: true + boltClosed: false canRack: false soundBoltClosed: /Audio/Weapons/Guns/Cock/revolver_cock.ogg soundBoltOpened: /Audio/Weapons/Guns/Cock/revolver_cock.ogg From b9c2b0c41b16fe46dbd5cb056e1d5a1b0f8d251f Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Mon, 11 Nov 2024 16:13:45 +0000 Subject: [PATCH 054/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 9b8052d835a..6abb7cc6a5e 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Ubaser - changes: - - message: Add two gatfruit mutations, one fake and one real capfruit which spawns - cap guns when eaten. - type: Add - id: 7102 - time: '2024-08-13T11:08:40.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30850 - author: slarticodefast changes: - message: Added new keybindings for rotating and flipping objects. The defaults @@ -3951,3 +3943,10 @@ id: 7601 time: '2024-11-10T04:26:51.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33130 +- author: BramvanZijp + changes: + - message: The Flare Gun & Security Shell Gun now start in their open/unbolted state. + type: Tweak + id: 7602 + time: '2024-11-11T16:12:36.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33248 From 1136200dc838a5fd0a5a347025b703b968cdabec Mon Sep 17 00:00:00 2001 From: Andrew Montagne <andrew@montagne.uk> Date: Mon, 11 Nov 2024 22:58:31 +0000 Subject: [PATCH 055/187] BUGFIX: Fix APEs being able to be turned on without power (#32493) Add a check to see the APC is powered before turning the emitter on. --- Content.Server/Singularity/EntitySystems/EmitterSystem.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Content.Server/Singularity/EntitySystems/EmitterSystem.cs b/Content.Server/Singularity/EntitySystems/EmitterSystem.cs index 1ada60e1d64..f828139ed6f 100644 --- a/Content.Server/Singularity/EntitySystems/EmitterSystem.cs +++ b/Content.Server/Singularity/EntitySystems/EmitterSystem.cs @@ -196,7 +196,8 @@ public void SwitchOn(EntityUid uid, EmitterComponent component) if (TryComp<ApcPowerReceiverComponent>(uid, out var apcReceiver)) { apcReceiver.Load = component.PowerUseActive; - PowerOn(uid, component); + if (apcReceiver.Powered) + PowerOn(uid, component); } // Do not directly PowerOn(). // OnReceivedPowerChanged will get fired due to DrawRate change which will turn it on. From 37958378cbec572b0de11676c6962983ff2c58d5 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Mon, 11 Nov 2024 22:59:38 +0000 Subject: [PATCH 056/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 6abb7cc6a5e..43c7cad22c6 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: slarticodefast - changes: - - message: Added new keybindings for rotating and flipping objects. The defaults - are R for clockwise, Shift+R for counterclockwise and F for flipping. - type: Add - id: 7103 - time: '2024-08-13T13:36:45.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30540 - author: Cojoke-dot changes: - message: Borg's names are now displayed when they make an announcement on the @@ -3950,3 +3942,10 @@ id: 7602 time: '2024-11-11T16:12:36.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33248 +- author: AndrewMontagne + changes: + - message: APEs could be powered on without local power + type: Fix + id: 7603 + time: '2024-11-11T22:58:31.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32493 From 36aceb178c855b381cb9b5868e4348fde1bedbd0 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers <pieterjan.briers+git@gmail.com> Date: Tue, 29 Oct 2024 01:34:40 +0100 Subject: [PATCH 057/187] Database SnakeCaseNaming fixes Fixes formatting of owned entity type property names. These are normally named "FooBar_Baz" by EF Core, but the snake case thing was turning them into "foo_bar__baz". The double underscore is now fixed. We don't *yet* have any EF Core owned entity in use, but I am planning to add one. I don't know if downstreams are using any so this should still be marked as a breaking change. Also fixed it creating and dropping a Compiled Regex instance for every name, the regex is now cached (and pregenerated). --- Content.Server.Database/SnakeCaseNaming.cs | 40 +++++++++++++--------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/Content.Server.Database/SnakeCaseNaming.cs b/Content.Server.Database/SnakeCaseNaming.cs index 27ce392cd50..3a67ffb9cd1 100644 --- a/Content.Server.Database/SnakeCaseNaming.cs +++ b/Content.Server.Database/SnakeCaseNaming.cs @@ -82,7 +82,7 @@ public ConventionSet ModifyConventions(ConventionSet conventionSet) } } - public class SnakeCaseConvention : + public partial class SnakeCaseConvention : IEntityTypeAddedConvention, IEntityTypeAnnotationChangedConvention, IPropertyAddedConvention, @@ -99,22 +99,27 @@ public SnakeCaseConvention() {} public static string RewriteName(string name) { - var regex = new Regex("[A-Z]+", RegexOptions.Compiled); - return regex.Replace( - name, - (Match match) => { - if (match.Index == 0 && (match.Value == "FK" || match.Value == "PK" || match.Value == "IX")) { - return match.Value; + return UpperCaseLocator() + .Replace( + name, + (Match match) => { + if (match.Index == 0 && (match.Value == "FK" || match.Value == "PK" || match.Value == "IX")) { + return match.Value; + } + if (match.Value == "HWI") + return (match.Index == 0 ? "" : "_") + "hwi"; + if (match.Index == 0) + return match.Value.ToLower(); + if (match.Length > 1) + return $"_{match.Value[..^1].ToLower()}_{match.Value[^1..^0].ToLower()}"; + + // Do not add a _ if there is already one before this. This happens with owned entities. + if (name[match.Index - 1] == '_') + return match.Value.ToLower(); + + return "_" + match.Value.ToLower(); } - if (match.Value == "HWI") - return (match.Index == 0 ? "" : "_") + "hwi"; - if (match.Index == 0) - return match.Value.ToLower(); - if (match.Length > 1) - return $"_{match.Value[..^1].ToLower()}_{match.Value[^1..^0].ToLower()}"; - return "_" + match.Value.ToLower(); - } - ); + ); } public virtual void ProcessEntityTypeAdded( @@ -332,5 +337,8 @@ private static void RewriteColumnName(IConventionPropertyBuilder propertyBuilder } } } + + [GeneratedRegex("[A-Z]+", RegexOptions.Compiled)] + private static partial Regex UpperCaseLocator(); } } From 4f3db43696fbcc9144d2ad011bbb5f93f6deca7a Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers <pieterjan.briers+git@gmail.com> Date: Tue, 12 Nov 2024 01:51:23 +0100 Subject: [PATCH 058/187] Integrate Modern HWID into content This should be the primary changes for the future-proof "Modern HWID" system implemented into Robust and the auth server. HWIDs in the database have been given an additional column representing their version, legacy or modern. This is implemented via an EF Core owned entity. By manually setting the column name of the main value column, we can keep DB compatibility and the migration is just adding some type columns. This new HWID type has to be plumbed through everywhere, resulting in some breaking changes for the DB layer and such. New bans and player records are placed with the new modern HWID. Old bans are still checked against legacy HWIDs. Modern HWIDs are presented with a "V2-" prefix to admins, to allow distinguishing them. This is also integrated into the parsing logic for placing new bans. There's also some code cleanup to reduce copy pasting around the place from my changes. Requires latest engine to support ImmutableArray<byte> in NetSerializer. --- .../UI/BanPanel/BanPanel.xaml.cs | 11 +- .../Tests/Commands/PardonCommand.cs | 24 +- .../20241111170112_ModernHwid.Designer.cs | 2072 ++++++++++++++++ .../Postgres/20241111170112_ModernHwid.cs | 62 + ...20241111193608_ConnectionTrust.Designer.cs | 2076 +++++++++++++++++ .../20241111193608_ConnectionTrust.cs | 29 + .../PostgresServerDbContextModelSnapshot.cs | 162 +- .../20241111170107_ModernHwid.Designer.cs | 1995 ++++++++++++++++ .../Sqlite/20241111170107_ModernHwid.cs | 62 + ...20241111193602_ConnectionTrust.Designer.cs | 1999 ++++++++++++++++ .../Sqlite/20241111193602_ConnectionTrust.cs | 29 + .../SqliteServerDbContextModelSnapshot.cs | 161 +- Content.Server.Database/Model.cs | 88 +- .../Administration/BanList/BanListEui.cs | 8 +- Content.Server/Administration/BanPanelEui.cs | 10 +- .../Administration/Commands/BanListCommand.cs | 2 +- .../Commands/RoleBanListCommand.cs | 2 +- .../Administration/Managers/BanManager.cs | 12 +- .../Administration/Managers/IBanManager.cs | 4 +- .../Administration/PlayerLocator.cs | 99 +- .../Administration/PlayerPanelEui.cs | 4 +- .../Administration/Systems/BwoinkSystem.cs | 2 +- .../Connection/ConnectionManager.cs | 13 +- Content.Server/Connection/UserDataExt.cs | 24 + Content.Server/Database/BanMatcher.cs | 33 +- Content.Server/Database/DatabaseRecords.cs | 3 +- Content.Server/Database/ServerBanDef.cs | 5 +- Content.Server/Database/ServerDbBase.cs | 24 +- Content.Server/Database/ServerDbManager.cs | 35 +- Content.Server/Database/ServerDbPostgres.cs | 124 +- Content.Server/Database/ServerDbSqlite.cs | 55 +- Content.Server/Database/ServerRoleBanDef.cs | 5 +- Content.Shared.Database/TypedHwid.cs | 62 + .../Administration/BanPanelEuiState.cs | 4 +- 34 files changed, 9059 insertions(+), 241 deletions(-) create mode 100644 Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.Designer.cs create mode 100644 Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.cs create mode 100644 Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.Designer.cs create mode 100644 Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.Designer.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.Designer.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.cs create mode 100644 Content.Server/Connection/UserDataExt.cs create mode 100644 Content.Shared.Database/TypedHwid.cs diff --git a/Content.Client/Administration/UI/BanPanel/BanPanel.xaml.cs b/Content.Client/Administration/UI/BanPanel/BanPanel.xaml.cs index 588d62e5603..3c7322d4739 100644 --- a/Content.Client/Administration/UI/BanPanel/BanPanel.xaml.cs +++ b/Content.Client/Administration/UI/BanPanel/BanPanel.xaml.cs @@ -22,11 +22,11 @@ namespace Content.Client.Administration.UI.BanPanel; [GenerateTypedNameReferences] public sealed partial class BanPanel : DefaultWindow { - public event Action<string?, (IPAddress, int)?, bool, byte[]?, bool, uint, string, NoteSeverity, string[]?, bool>? BanSubmitted; + public event Action<string?, (IPAddress, int)?, bool, ImmutableTypedHwid?, bool, uint, string, NoteSeverity, string[]?, bool>? BanSubmitted; public event Action<string>? PlayerChanged; private string? PlayerUsername { get; set; } private (IPAddress, int)? IpAddress { get; set; } - private byte[]? Hwid { get; set; } + private ImmutableTypedHwid? Hwid { get; set; } private double TimeEntered { get; set; } private uint Multiplier { get; set; } private bool HasBanFlag { get; set; } @@ -371,9 +371,8 @@ private void OnIpChanged() private void OnHwidChanged() { var hwidString = HwidLine.Text; - var length = 3 * (hwidString.Length / 4) - hwidString.TakeLast(2).Count(c => c == '='); - Hwid = new byte[length]; - if (HwidCheckbox.Pressed && !(string.IsNullOrEmpty(hwidString) && LastConnCheckbox.Pressed) && !Convert.TryFromBase64String(hwidString, Hwid, out _)) + ImmutableTypedHwid? hwid = null; + if (HwidCheckbox.Pressed && !(string.IsNullOrEmpty(hwidString) && LastConnCheckbox.Pressed) && !ImmutableTypedHwid.TryParse(hwidString, out hwid)) { ErrorLevel |= ErrorLevelEnum.Hwid; HwidLine.ModulateSelfOverride = Color.Red; @@ -390,7 +389,7 @@ private void OnHwidChanged() Hwid = null; return; } - Hwid = Convert.FromHexString(hwidString); + Hwid = hwid; } private void OnTypeChanged() diff --git a/Content.IntegrationTests/Tests/Commands/PardonCommand.cs b/Content.IntegrationTests/Tests/Commands/PardonCommand.cs index 4db9eabf5c6..9e57cd4b0e6 100644 --- a/Content.IntegrationTests/Tests/Commands/PardonCommand.cs +++ b/Content.IntegrationTests/Tests/Commands/PardonCommand.cs @@ -32,9 +32,9 @@ public async Task PardonTest() // No bans on record Assert.Multiple(async () => { - Assert.That(await sDatabase.GetServerBanAsync(null, clientId, null), Is.Null); + Assert.That(await sDatabase.GetServerBanAsync(null, clientId, null, null), Is.Null); Assert.That(await sDatabase.GetServerBanAsync(1), Is.Null); - Assert.That(await sDatabase.GetServerBansAsync(null, clientId, null), Is.Empty); + Assert.That(await sDatabase.GetServerBansAsync(null, clientId, null, null), Is.Empty); }); // Try to pardon a ban that does not exist @@ -43,9 +43,9 @@ public async Task PardonTest() // Still no bans on record Assert.Multiple(async () => { - Assert.That(await sDatabase.GetServerBanAsync(null, clientId, null), Is.Null); + Assert.That(await sDatabase.GetServerBanAsync(null, clientId, null, null), Is.Null); Assert.That(await sDatabase.GetServerBanAsync(1), Is.Null); - Assert.That(await sDatabase.GetServerBansAsync(null, clientId, null), Is.Empty); + Assert.That(await sDatabase.GetServerBansAsync(null, clientId, null, null), Is.Empty); }); var banReason = "test"; @@ -57,9 +57,9 @@ public async Task PardonTest() // Should have one ban on record now Assert.Multiple(async () => { - Assert.That(await sDatabase.GetServerBanAsync(null, clientId, null), Is.Not.Null); + Assert.That(await sDatabase.GetServerBanAsync(null, clientId, null, null), Is.Not.Null); Assert.That(await sDatabase.GetServerBanAsync(1), Is.Not.Null); - Assert.That(await sDatabase.GetServerBansAsync(null, clientId, null), Has.Count.EqualTo(1)); + Assert.That(await sDatabase.GetServerBansAsync(null, clientId, null, null), Has.Count.EqualTo(1)); }); await pair.RunTicksSync(5); @@ -70,13 +70,13 @@ public async Task PardonTest() await server.WaitPost(() => sConsole.ExecuteCommand("pardon 2")); // The existing ban is unaffected - Assert.That(await sDatabase.GetServerBanAsync(null, clientId, null), Is.Not.Null); + Assert.That(await sDatabase.GetServerBanAsync(null, clientId, null, null), Is.Not.Null); var ban = await sDatabase.GetServerBanAsync(1); Assert.Multiple(async () => { Assert.That(ban, Is.Not.Null); - Assert.That(await sDatabase.GetServerBansAsync(null, clientId, null), Has.Count.EqualTo(1)); + Assert.That(await sDatabase.GetServerBansAsync(null, clientId, null, null), Has.Count.EqualTo(1)); // Check that it matches Assert.That(ban.Id, Is.EqualTo(1)); @@ -95,7 +95,7 @@ public async Task PardonTest() await server.WaitPost(() => sConsole.ExecuteCommand("pardon 1")); // No bans should be returned - Assert.That(await sDatabase.GetServerBanAsync(null, clientId, null), Is.Null); + Assert.That(await sDatabase.GetServerBanAsync(null, clientId, null, null), Is.Null); // Direct id lookup returns a pardoned ban var pardonedBan = await sDatabase.GetServerBanAsync(1); @@ -105,7 +105,7 @@ public async Task PardonTest() Assert.That(pardonedBan, Is.Not.Null); // The list is still returned since that ignores pardons - Assert.That(await sDatabase.GetServerBansAsync(null, clientId, null), Has.Count.EqualTo(1)); + Assert.That(await sDatabase.GetServerBansAsync(null, clientId, null, null), Has.Count.EqualTo(1)); Assert.That(pardonedBan.Id, Is.EqualTo(1)); Assert.That(pardonedBan.UserId, Is.EqualTo(clientId)); @@ -133,13 +133,13 @@ public async Task PardonTest() Assert.Multiple(async () => { // No bans should be returned - Assert.That(await sDatabase.GetServerBanAsync(null, clientId, null), Is.Null); + Assert.That(await sDatabase.GetServerBanAsync(null, clientId, null, null), Is.Null); // Direct id lookup returns a pardoned ban Assert.That(await sDatabase.GetServerBanAsync(1), Is.Not.Null); // The list is still returned since that ignores pardons - Assert.That(await sDatabase.GetServerBansAsync(null, clientId, null), Has.Count.EqualTo(1)); + Assert.That(await sDatabase.GetServerBansAsync(null, clientId, null, null), Has.Count.EqualTo(1)); }); // Reconnect client. Slightly faster than dirtying the pair. diff --git a/Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.Designer.cs b/Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.Designer.cs new file mode 100644 index 00000000000..155d6a163fd --- /dev/null +++ b/Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.Designer.cs @@ -0,0 +1,2072 @@ +// <auto-generated /> +using System; +using System.Net; +using System.Text.Json; +using Content.Server.Database; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using NpgsqlTypes; + +#nullable disable + +namespace Content.Server.Database.Migrations.Postgres +{ + [DbContext(typeof(PostgresServerDbContext))] + [Migration("20241111170112_ModernHwid")] + partial class ModernHwid + { + /// <inheritdoc /> + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Property<Guid>("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property<int?>("AdminRankId") + .HasColumnType("integer") + .HasColumnName("admin_rank_id"); + + b.Property<string>("Title") + .HasColumnType("text") + .HasColumnName("title"); + + b.HasKey("UserId") + .HasName("PK_admin"); + + b.HasIndex("AdminRankId") + .HasDatabaseName("IX_admin_admin_rank_id"); + + b.ToTable("admin", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_flag_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<Guid>("AdminId") + .HasColumnType("uuid") + .HasColumnName("admin_id"); + + b.Property<string>("Flag") + .IsRequired() + .HasColumnType("text") + .HasColumnName("flag"); + + b.Property<bool>("Negative") + .HasColumnType("boolean") + .HasColumnName("negative"); + + b.HasKey("Id") + .HasName("PK_admin_flag"); + + b.HasIndex("AdminId") + .HasDatabaseName("IX_admin_flag_admin_id"); + + b.HasIndex("Flag", "AdminId") + .IsUnique(); + + b.ToTable("admin_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Property<int>("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property<int>("Id") + .HasColumnType("integer") + .HasColumnName("admin_log_id"); + + b.Property<DateTime>("Date") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property<short>("Impact") + .HasColumnType("smallint") + .HasColumnName("impact"); + + b.Property<JsonDocument>("Json") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("json"); + + b.Property<string>("Message") + .IsRequired() + .HasColumnType("text") + .HasColumnName("message"); + + b.Property<int>("Type") + .HasColumnType("integer") + .HasColumnName("type"); + + b.HasKey("RoundId", "Id") + .HasName("PK_admin_log"); + + b.HasIndex("Date"); + + b.HasIndex("Message") + .HasAnnotation("Npgsql:TsVectorConfig", "english"); + + NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex("Message"), "GIN"); + + b.HasIndex("Type") + .HasDatabaseName("IX_admin_log_type"); + + b.ToTable("admin_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.Property<int>("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property<int>("LogId") + .HasColumnType("integer") + .HasColumnName("log_id"); + + b.Property<Guid>("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.HasKey("RoundId", "LogId", "PlayerUserId") + .HasName("PK_admin_log_player"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_log_player_player_user_id"); + + b.ToTable("admin_log_player", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_messages_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<DateTime>("CreatedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("created_at"); + + b.Property<Guid?>("CreatedById") + .HasColumnType("uuid") + .HasColumnName("created_by_id"); + + b.Property<bool>("Deleted") + .HasColumnType("boolean") + .HasColumnName("deleted"); + + b.Property<DateTime?>("DeletedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("deleted_at"); + + b.Property<Guid?>("DeletedById") + .HasColumnType("uuid") + .HasColumnName("deleted_by_id"); + + b.Property<bool>("Dismissed") + .HasColumnType("boolean") + .HasColumnName("dismissed"); + + b.Property<DateTime?>("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property<DateTime?>("LastEditedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property<Guid?>("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property<string>("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("character varying(4096)") + .HasColumnName("message"); + + b.Property<Guid?>("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property<TimeSpan>("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property<int?>("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property<bool>("Seen") + .HasColumnType("boolean") + .HasColumnName("seen"); + + b.HasKey("Id") + .HasName("PK_admin_messages"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_messages_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_messages_round_id"); + + b.ToTable("admin_messages", null, t => + { + t.HasCheckConstraint("NotDismissedAndSeen", "NOT dismissed OR seen"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_notes_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<DateTime>("CreatedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("created_at"); + + b.Property<Guid?>("CreatedById") + .HasColumnType("uuid") + .HasColumnName("created_by_id"); + + b.Property<bool>("Deleted") + .HasColumnType("boolean") + .HasColumnName("deleted"); + + b.Property<DateTime?>("DeletedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("deleted_at"); + + b.Property<Guid?>("DeletedById") + .HasColumnType("uuid") + .HasColumnName("deleted_by_id"); + + b.Property<DateTime?>("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property<DateTime?>("LastEditedAt") + .IsRequired() + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property<Guid?>("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property<string>("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("character varying(4096)") + .HasColumnName("message"); + + b.Property<Guid?>("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property<TimeSpan>("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property<int?>("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property<bool>("Secret") + .HasColumnType("boolean") + .HasColumnName("secret"); + + b.Property<int>("Severity") + .HasColumnType("integer") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_admin_notes"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_notes_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_notes_round_id"); + + b.ToTable("admin_notes", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_rank_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<string>("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_admin_rank"); + + b.ToTable("admin_rank", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_rank_flag_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<int>("AdminRankId") + .HasColumnType("integer") + .HasColumnName("admin_rank_id"); + + b.Property<string>("Flag") + .IsRequired() + .HasColumnType("text") + .HasColumnName("flag"); + + b.HasKey("Id") + .HasName("PK_admin_rank_flag"); + + b.HasIndex("AdminRankId"); + + b.HasIndex("Flag", "AdminRankId") + .IsUnique(); + + b.ToTable("admin_rank_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_watchlists_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<DateTime>("CreatedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("created_at"); + + b.Property<Guid?>("CreatedById") + .HasColumnType("uuid") + .HasColumnName("created_by_id"); + + b.Property<bool>("Deleted") + .HasColumnType("boolean") + .HasColumnName("deleted"); + + b.Property<DateTime?>("DeletedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("deleted_at"); + + b.Property<Guid?>("DeletedById") + .HasColumnType("uuid") + .HasColumnName("deleted_by_id"); + + b.Property<DateTime?>("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property<DateTime?>("LastEditedAt") + .IsRequired() + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property<Guid?>("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property<string>("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("character varying(4096)") + .HasColumnName("message"); + + b.Property<Guid?>("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property<TimeSpan>("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property<int?>("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.HasKey("Id") + .HasName("PK_admin_watchlists"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_watchlists_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_watchlists_round_id"); + + b.ToTable("admin_watchlists", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("antag_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<string>("AntagName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("antag_name"); + + b.Property<int>("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_antag"); + + b.HasIndex("ProfileId", "AntagName") + .IsUnique(); + + b.ToTable("antag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("assigned_user_id_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<Guid>("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property<string>("UserName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_assigned_user_id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.HasIndex("UserName") + .IsUnique(); + + b.ToTable("assigned_user_id", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.BanTemplate", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("ban_template_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<bool>("AutoDelete") + .HasColumnType("boolean") + .HasColumnName("auto_delete"); + + b.Property<int>("ExemptFlags") + .HasColumnType("integer") + .HasColumnName("exempt_flags"); + + b.Property<bool>("Hidden") + .HasColumnType("boolean") + .HasColumnName("hidden"); + + b.Property<TimeSpan>("Length") + .HasColumnType("interval") + .HasColumnName("length"); + + b.Property<string>("Reason") + .IsRequired() + .HasColumnType("text") + .HasColumnName("reason"); + + b.Property<int>("Severity") + .HasColumnType("integer") + .HasColumnName("severity"); + + b.Property<string>("Title") + .IsRequired() + .HasColumnType("text") + .HasColumnName("title"); + + b.HasKey("Id") + .HasName("PK_ban_template"); + + b.ToTable("ban_template", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Blacklist", b => + { + b.Property<Guid>("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_blacklist"); + + b.ToTable("blacklist", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("connection_log_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<IPAddress>("Address") + .IsRequired() + .HasColumnType("inet") + .HasColumnName("address"); + + b.Property<byte?>("Denied") + .HasColumnType("smallint") + .HasColumnName("denied"); + + b.Property<int>("ServerId") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("server_id"); + + b.Property<DateTime>("Time") + .HasColumnType("timestamp with time zone") + .HasColumnName("time"); + + b.Property<Guid>("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property<string>("UserName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_connection_log"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_connection_log_server_id"); + + b.HasIndex("Time"); + + b.HasIndex("UserId"); + + b.ToTable("connection_log", null, t => + { + t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("job_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<string>("JobName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("job_name"); + + b.Property<int>("Priority") + .HasColumnType("integer") + .HasColumnName("priority"); + + b.Property<int>("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_job"); + + b.HasIndex("ProfileId"); + + b.HasIndex("ProfileId", "JobName") + .IsUnique(); + + b.HasIndex(new[] { "ProfileId" }, "IX_job_one_high_priority") + .IsUnique() + .HasFilter("priority = 3"); + + b.ToTable("job", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.PlayTime", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("play_time_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<Guid>("PlayerId") + .HasColumnType("uuid") + .HasColumnName("player_id"); + + b.Property<TimeSpan>("TimeSpent") + .HasColumnType("interval") + .HasColumnName("time_spent"); + + b.Property<string>("Tracker") + .IsRequired() + .HasColumnType("text") + .HasColumnName("tracker"); + + b.HasKey("Id") + .HasName("PK_play_time"); + + b.HasIndex("PlayerId", "Tracker") + .IsUnique(); + + b.ToTable("play_time", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("player_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<DateTime>("FirstSeenTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("first_seen_time"); + + b.Property<DateTime?>("LastReadRules") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_read_rules"); + + b.Property<IPAddress>("LastSeenAddress") + .IsRequired() + .HasColumnType("inet") + .HasColumnName("last_seen_address"); + + b.Property<DateTime>("LastSeenTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_seen_time"); + + b.Property<string>("LastSeenUserName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("last_seen_user_name"); + + b.Property<Guid>("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_player"); + + b.HasAlternateKey("UserId") + .HasName("ak_player_user_id"); + + b.HasIndex("LastSeenUserName"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("player", null, t => + { + t.HasCheckConstraint("LastSeenAddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= last_seen_address"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("preference_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<string>("AdminOOCColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("admin_ooc_color"); + + b.Property<int>("SelectedCharacterSlot") + .HasColumnType("integer") + .HasColumnName("selected_character_slot"); + + b.Property<Guid>("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_preference"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("preference", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("profile_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<int>("Age") + .HasColumnType("integer") + .HasColumnName("age"); + + b.Property<string>("CharacterName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("char_name"); + + b.Property<string>("EyeColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("eye_color"); + + b.Property<string>("FacialHairColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("facial_hair_color"); + + b.Property<string>("FacialHairName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("facial_hair_name"); + + b.Property<string>("FlavorText") + .IsRequired() + .HasColumnType("text") + .HasColumnName("flavor_text"); + + b.Property<string>("Gender") + .IsRequired() + .HasColumnType("text") + .HasColumnName("gender"); + + b.Property<string>("HairColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("hair_color"); + + b.Property<string>("HairName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("hair_name"); + + b.Property<JsonDocument>("Markings") + .HasColumnType("jsonb") + .HasColumnName("markings"); + + b.Property<int>("PreferenceId") + .HasColumnType("integer") + .HasColumnName("preference_id"); + + b.Property<int>("PreferenceUnavailable") + .HasColumnType("integer") + .HasColumnName("pref_unavailable"); + + b.Property<string>("Sex") + .IsRequired() + .HasColumnType("text") + .HasColumnName("sex"); + + b.Property<string>("SkinColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("skin_color"); + + b.Property<int>("Slot") + .HasColumnType("integer") + .HasColumnName("slot"); + + b.Property<int>("SpawnPriority") + .HasColumnType("integer") + .HasColumnName("spawn_priority"); + + b.Property<string>("Species") + .IsRequired() + .HasColumnType("text") + .HasColumnName("species"); + + b.HasKey("Id") + .HasName("PK_profile"); + + b.HasIndex("PreferenceId") + .HasDatabaseName("IX_profile_preference_id"); + + b.HasIndex("Slot", "PreferenceId") + .IsUnique(); + + b.ToTable("profile", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("profile_loadout_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<string>("LoadoutName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("loadout_name"); + + b.Property<int>("ProfileLoadoutGroupId") + .HasColumnType("integer") + .HasColumnName("profile_loadout_group_id"); + + b.HasKey("Id") + .HasName("PK_profile_loadout"); + + b.HasIndex("ProfileLoadoutGroupId"); + + b.ToTable("profile_loadout", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("profile_loadout_group_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<string>("GroupName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("group_name"); + + b.Property<int>("ProfileRoleLoadoutId") + .HasColumnType("integer") + .HasColumnName("profile_role_loadout_id"); + + b.HasKey("Id") + .HasName("PK_profile_loadout_group"); + + b.HasIndex("ProfileRoleLoadoutId"); + + b.ToTable("profile_loadout_group", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("profile_role_loadout_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<int>("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.Property<string>("RoleName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("role_name"); + + b.HasKey("Id") + .HasName("PK_profile_role_loadout"); + + b.HasIndex("ProfileId"); + + b.ToTable("profile_role_loadout", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => + { + b.Property<Guid>("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property<string>("RoleId") + .HasColumnType("text") + .HasColumnName("role_id"); + + b.HasKey("PlayerUserId", "RoleId") + .HasName("PK_role_whitelists"); + + b.ToTable("role_whitelists", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("round_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<int>("ServerId") + .HasColumnType("integer") + .HasColumnName("server_id"); + + b.Property<DateTime?>("StartDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("start_date"); + + b.HasKey("Id") + .HasName("PK_round"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_round_server_id"); + + b.HasIndex("StartDate"); + + b.ToTable("round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<string>("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_server"); + + b.ToTable("server", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_ban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<NpgsqlInet?>("Address") + .HasColumnType("inet") + .HasColumnName("address"); + + b.Property<bool>("AutoDelete") + .HasColumnType("boolean") + .HasColumnName("auto_delete"); + + b.Property<DateTime>("BanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("ban_time"); + + b.Property<Guid?>("BanningAdmin") + .HasColumnType("uuid") + .HasColumnName("banning_admin"); + + b.Property<int>("ExemptFlags") + .HasColumnType("integer") + .HasColumnName("exempt_flags"); + + b.Property<DateTime?>("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property<bool>("Hidden") + .HasColumnType("boolean") + .HasColumnName("hidden"); + + b.Property<DateTime?>("LastEditedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property<Guid?>("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property<Guid?>("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property<TimeSpan>("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property<string>("Reason") + .IsRequired() + .HasColumnType("text") + .HasColumnName("reason"); + + b.Property<int?>("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property<int>("Severity") + .HasColumnType("integer") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_ban_round_id"); + + b.ToTable("server_ban", null, t => + { + t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); + + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanExemption", b => + { + b.Property<Guid>("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property<int>("Flags") + .HasColumnType("integer") + .HasColumnName("flags"); + + b.HasKey("UserId") + .HasName("PK_server_ban_exemption"); + + b.ToTable("server_ban_exemption", null, t => + { + t.HasCheckConstraint("FlagsNotZero", "flags != 0"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_ban_hit_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<int>("BanId") + .HasColumnType("integer") + .HasColumnName("ban_id"); + + b.Property<int>("ConnectionId") + .HasColumnType("integer") + .HasColumnName("connection_id"); + + b.HasKey("Id") + .HasName("PK_server_ban_hit"); + + b.HasIndex("BanId") + .HasDatabaseName("IX_server_ban_hit_ban_id"); + + b.HasIndex("ConnectionId") + .HasDatabaseName("IX_server_ban_hit_connection_id"); + + b.ToTable("server_ban_hit", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_role_ban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<NpgsqlInet?>("Address") + .HasColumnType("inet") + .HasColumnName("address"); + + b.Property<DateTime>("BanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("ban_time"); + + b.Property<Guid?>("BanningAdmin") + .HasColumnType("uuid") + .HasColumnName("banning_admin"); + + b.Property<DateTime?>("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property<bool>("Hidden") + .HasColumnType("boolean") + .HasColumnName("hidden"); + + b.Property<DateTime?>("LastEditedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property<Guid?>("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property<Guid?>("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property<TimeSpan>("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property<string>("Reason") + .IsRequired() + .HasColumnType("text") + .HasColumnName("reason"); + + b.Property<string>("RoleId") + .IsRequired() + .HasColumnType("text") + .HasColumnName("role_id"); + + b.Property<int?>("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property<int>("Severity") + .HasColumnType("integer") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_role_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_role_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_role_ban_round_id"); + + b.ToTable("server_role_ban", null, t => + { + t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); + + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("role_unban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<int>("BanId") + .HasColumnType("integer") + .HasColumnName("ban_id"); + + b.Property<DateTime>("UnbanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("unban_time"); + + b.Property<Guid?>("UnbanningAdmin") + .HasColumnType("uuid") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_role_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_role_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("unban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<int>("BanId") + .HasColumnType("integer") + .HasColumnName("ban_id"); + + b.Property<DateTime>("UnbanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("unban_time"); + + b.Property<Guid?>("UnbanningAdmin") + .HasColumnType("uuid") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("trait_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<int>("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.Property<string>("TraitName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("trait_name"); + + b.HasKey("Id") + .HasName("PK_trait"); + + b.HasIndex("ProfileId", "TraitName") + .IsUnique(); + + b.ToTable("trait", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.UploadedResourceLog", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("uploaded_resource_log_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<byte[]>("Data") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("data"); + + b.Property<DateTime>("Date") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property<string>("Path") + .IsRequired() + .HasColumnType("text") + .HasColumnName("path"); + + b.Property<Guid>("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_uploaded_resource_log"); + + b.ToTable("uploaded_resource_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Whitelist", b => + { + b.Property<Guid>("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_whitelist"); + + b.ToTable("whitelist", (string)null); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.Property<int>("PlayersId") + .HasColumnType("integer") + .HasColumnName("players_id"); + + b.Property<int>("RoundsId") + .HasColumnType("integer") + .HasColumnName("rounds_id"); + + b.HasKey("PlayersId", "RoundsId") + .HasName("PK_player_round"); + + b.HasIndex("RoundsId") + .HasDatabaseName("IX_player_round_rounds_id"); + + b.ToTable("player_round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.HasOne("Content.Server.Database.AdminRank", "AdminRank") + .WithMany("Admins") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_admin_rank_admin_rank_id"); + + b.Navigation("AdminRank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.HasOne("Content.Server.Database.Admin", "Admin") + .WithMany("Flags") + .HasForeignKey("AdminId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_flag_admin_admin_id"); + + b.Navigation("Admin"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany("AdminLogs") + .HasForeignKey("RoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_round_round_id"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminLogs") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_player_player_user_id"); + + b.HasOne("Content.Server.Database.AdminLog", "Log") + .WithMany("Players") + .HasForeignKey("RoundId", "LogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_admin_log_round_id_log_id"); + + b.Navigation("Log"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminMessagesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminMessagesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminMessagesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminMessagesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_messages_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_messages_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminNotesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminNotesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminNotesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminNotesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_notes_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_notes_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.HasOne("Content.Server.Database.AdminRank", "Rank") + .WithMany("Flags") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_rank_flag_admin_rank_admin_rank_id"); + + b.Navigation("Rank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminWatchlistsCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminWatchlistsDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminWatchlistsLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminWatchlistsReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_watchlists_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_watchlists_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Antags") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_antag_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("ConnectionLogs") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.SetNull) + .IsRequired() + .HasConstraintName("FK_connection_log_server_server_id"); + + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property<int>("ConnectionLogId") + .HasColumnType("integer") + .HasColumnName("connection_log_id"); + + b1.Property<byte[]>("Hwid") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b1.Property<int>("Type") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ConnectionLogId"); + + b1.ToTable("connection_log"); + + b1.WithOwner() + .HasForeignKey("ConnectionLogId") + .HasConstraintName("FK_connection_log_connection_log_connection_log_id"); + }); + + b.Navigation("HWId"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Jobs") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_job_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.OwnsOne("Content.Server.Database.TypedHwid", "LastSeenHWId", b1 => + { + b1.Property<int>("PlayerId") + .HasColumnType("integer") + .HasColumnName("player_id"); + + b1.Property<byte[]>("Hwid") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("last_seen_hwid"); + + b1.Property<int>("Type") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("last_seen_hwid_type"); + + b1.HasKey("PlayerId"); + + b1.ToTable("player"); + + b1.WithOwner() + .HasForeignKey("PlayerId") + .HasConstraintName("FK_player_player_player_id"); + }); + + b.Navigation("LastSeenHWId"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.HasOne("Content.Server.Database.Preference", "Preference") + .WithMany("Profiles") + .HasForeignKey("PreferenceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_preference_preference_id"); + + b.Navigation("Preference"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => + { + b.HasOne("Content.Server.Database.ProfileLoadoutGroup", "ProfileLoadoutGroup") + .WithMany("Loadouts") + .HasForeignKey("ProfileLoadoutGroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_loadout_profile_loadout_group_profile_loadout_group~"); + + b.Navigation("ProfileLoadoutGroup"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => + { + b.HasOne("Content.Server.Database.ProfileRoleLoadout", "ProfileRoleLoadout") + .WithMany("Groups") + .HasForeignKey("ProfileRoleLoadoutId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_loadout_group_profile_role_loadout_profile_role_loa~"); + + b.Navigation("ProfileRoleLoadout"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Loadouts") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_role_loadout_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("JobWhitelists") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_role_whitelists_player_player_user_id"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("Rounds") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_round_server_server_id"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_ban_round_round_id"); + + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property<int>("ServerBanId") + .HasColumnType("integer") + .HasColumnName("server_ban_id"); + + b1.Property<byte[]>("Hwid") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b1.Property<int>("Type") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerBanId"); + + b1.ToTable("server_ban"); + + b1.WithOwner() + .HasForeignKey("ServerBanId") + .HasConstraintName("FK_server_ban_server_ban_server_ban_id"); + }); + + b.Navigation("CreatedBy"); + + b.Navigation("HWId"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithMany("BanHits") + .HasForeignKey("BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); + + b.HasOne("Content.Server.Database.ConnectionLog", "Connection") + .WithMany("BanHits") + .HasForeignKey("ConnectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); + + b.Navigation("Ban"); + + b.Navigation("Connection"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerRoleBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerRoleBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_role_ban_round_round_id"); + + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property<int>("ServerRoleBanId") + .HasColumnType("integer") + .HasColumnName("server_role_ban_id"); + + b1.Property<byte[]>("Hwid") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b1.Property<int>("Type") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerRoleBanId"); + + b1.ToTable("server_role_ban"); + + b1.WithOwner() + .HasForeignKey("ServerRoleBanId") + .HasConstraintName("FK_server_role_ban_server_role_ban_server_role_ban_id"); + }); + + b.Navigation("CreatedBy"); + + b.Navigation("HWId"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.HasOne("Content.Server.Database.ServerRoleBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerRoleUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_role_unban_server_role_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_unban_server_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Traits") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_trait_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.HasOne("Content.Server.Database.Player", null) + .WithMany() + .HasForeignKey("PlayersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_player_players_id"); + + b.HasOne("Content.Server.Database.Round", null) + .WithMany() + .HasForeignKey("RoundsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_round_rounds_id"); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Navigation("Players"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Navigation("Admins"); + + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Navigation("BanHits"); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Navigation("AdminLogs"); + + b.Navigation("AdminMessagesCreated"); + + b.Navigation("AdminMessagesDeleted"); + + b.Navigation("AdminMessagesLastEdited"); + + b.Navigation("AdminMessagesReceived"); + + b.Navigation("AdminNotesCreated"); + + b.Navigation("AdminNotesDeleted"); + + b.Navigation("AdminNotesLastEdited"); + + b.Navigation("AdminNotesReceived"); + + b.Navigation("AdminServerBansCreated"); + + b.Navigation("AdminServerBansLastEdited"); + + b.Navigation("AdminServerRoleBansCreated"); + + b.Navigation("AdminServerRoleBansLastEdited"); + + b.Navigation("AdminWatchlistsCreated"); + + b.Navigation("AdminWatchlistsDeleted"); + + b.Navigation("AdminWatchlistsLastEdited"); + + b.Navigation("AdminWatchlistsReceived"); + + b.Navigation("JobWhitelists"); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Navigation("Profiles"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Navigation("Antags"); + + b.Navigation("Jobs"); + + b.Navigation("Loadouts"); + + b.Navigation("Traits"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => + { + b.Navigation("Loadouts"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => + { + b.Navigation("Groups"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Navigation("AdminLogs"); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Navigation("ConnectionLogs"); + + b.Navigation("Rounds"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Navigation("BanHits"); + + b.Navigation("Unban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Navigation("Unban"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.cs b/Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.cs new file mode 100644 index 00000000000..c70a5ffaa58 --- /dev/null +++ b/Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.cs @@ -0,0 +1,62 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Content.Server.Database.Migrations.Postgres +{ + /// <inheritdoc /> + public partial class ModernHwid : Migration + { + /// <inheritdoc /> + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn<int>( + name: "hwid_type", + table: "server_role_ban", + type: "integer", + nullable: true, + defaultValue: 0); + + migrationBuilder.AddColumn<int>( + name: "hwid_type", + table: "server_ban", + type: "integer", + nullable: true, + defaultValue: 0); + + migrationBuilder.AddColumn<int>( + name: "last_seen_hwid_type", + table: "player", + type: "integer", + nullable: true, + defaultValue: 0); + + migrationBuilder.AddColumn<int>( + name: "hwid_type", + table: "connection_log", + type: "integer", + nullable: true, + defaultValue: 0); + } + + /// <inheritdoc /> + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "hwid_type", + table: "server_role_ban"); + + migrationBuilder.DropColumn( + name: "hwid_type", + table: "server_ban"); + + migrationBuilder.DropColumn( + name: "last_seen_hwid_type", + table: "player"); + + migrationBuilder.DropColumn( + name: "hwid_type", + table: "connection_log"); + } + } +} diff --git a/Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.Designer.cs b/Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.Designer.cs new file mode 100644 index 00000000000..dc1b4a0eeb7 --- /dev/null +++ b/Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.Designer.cs @@ -0,0 +1,2076 @@ +// <auto-generated /> +using System; +using System.Net; +using System.Text.Json; +using Content.Server.Database; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using NpgsqlTypes; + +#nullable disable + +namespace Content.Server.Database.Migrations.Postgres +{ + [DbContext(typeof(PostgresServerDbContext))] + [Migration("20241111193608_ConnectionTrust")] + partial class ConnectionTrust + { + /// <inheritdoc /> + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Property<Guid>("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property<int?>("AdminRankId") + .HasColumnType("integer") + .HasColumnName("admin_rank_id"); + + b.Property<string>("Title") + .HasColumnType("text") + .HasColumnName("title"); + + b.HasKey("UserId") + .HasName("PK_admin"); + + b.HasIndex("AdminRankId") + .HasDatabaseName("IX_admin_admin_rank_id"); + + b.ToTable("admin", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_flag_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<Guid>("AdminId") + .HasColumnType("uuid") + .HasColumnName("admin_id"); + + b.Property<string>("Flag") + .IsRequired() + .HasColumnType("text") + .HasColumnName("flag"); + + b.Property<bool>("Negative") + .HasColumnType("boolean") + .HasColumnName("negative"); + + b.HasKey("Id") + .HasName("PK_admin_flag"); + + b.HasIndex("AdminId") + .HasDatabaseName("IX_admin_flag_admin_id"); + + b.HasIndex("Flag", "AdminId") + .IsUnique(); + + b.ToTable("admin_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Property<int>("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property<int>("Id") + .HasColumnType("integer") + .HasColumnName("admin_log_id"); + + b.Property<DateTime>("Date") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property<short>("Impact") + .HasColumnType("smallint") + .HasColumnName("impact"); + + b.Property<JsonDocument>("Json") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("json"); + + b.Property<string>("Message") + .IsRequired() + .HasColumnType("text") + .HasColumnName("message"); + + b.Property<int>("Type") + .HasColumnType("integer") + .HasColumnName("type"); + + b.HasKey("RoundId", "Id") + .HasName("PK_admin_log"); + + b.HasIndex("Date"); + + b.HasIndex("Message") + .HasAnnotation("Npgsql:TsVectorConfig", "english"); + + NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex("Message"), "GIN"); + + b.HasIndex("Type") + .HasDatabaseName("IX_admin_log_type"); + + b.ToTable("admin_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.Property<int>("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property<int>("LogId") + .HasColumnType("integer") + .HasColumnName("log_id"); + + b.Property<Guid>("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.HasKey("RoundId", "LogId", "PlayerUserId") + .HasName("PK_admin_log_player"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_log_player_player_user_id"); + + b.ToTable("admin_log_player", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_messages_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<DateTime>("CreatedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("created_at"); + + b.Property<Guid?>("CreatedById") + .HasColumnType("uuid") + .HasColumnName("created_by_id"); + + b.Property<bool>("Deleted") + .HasColumnType("boolean") + .HasColumnName("deleted"); + + b.Property<DateTime?>("DeletedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("deleted_at"); + + b.Property<Guid?>("DeletedById") + .HasColumnType("uuid") + .HasColumnName("deleted_by_id"); + + b.Property<bool>("Dismissed") + .HasColumnType("boolean") + .HasColumnName("dismissed"); + + b.Property<DateTime?>("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property<DateTime?>("LastEditedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property<Guid?>("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property<string>("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("character varying(4096)") + .HasColumnName("message"); + + b.Property<Guid?>("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property<TimeSpan>("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property<int?>("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property<bool>("Seen") + .HasColumnType("boolean") + .HasColumnName("seen"); + + b.HasKey("Id") + .HasName("PK_admin_messages"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_messages_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_messages_round_id"); + + b.ToTable("admin_messages", null, t => + { + t.HasCheckConstraint("NotDismissedAndSeen", "NOT dismissed OR seen"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_notes_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<DateTime>("CreatedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("created_at"); + + b.Property<Guid?>("CreatedById") + .HasColumnType("uuid") + .HasColumnName("created_by_id"); + + b.Property<bool>("Deleted") + .HasColumnType("boolean") + .HasColumnName("deleted"); + + b.Property<DateTime?>("DeletedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("deleted_at"); + + b.Property<Guid?>("DeletedById") + .HasColumnType("uuid") + .HasColumnName("deleted_by_id"); + + b.Property<DateTime?>("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property<DateTime?>("LastEditedAt") + .IsRequired() + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property<Guid?>("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property<string>("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("character varying(4096)") + .HasColumnName("message"); + + b.Property<Guid?>("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property<TimeSpan>("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property<int?>("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property<bool>("Secret") + .HasColumnType("boolean") + .HasColumnName("secret"); + + b.Property<int>("Severity") + .HasColumnType("integer") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_admin_notes"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_notes_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_notes_round_id"); + + b.ToTable("admin_notes", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_rank_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<string>("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_admin_rank"); + + b.ToTable("admin_rank", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_rank_flag_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<int>("AdminRankId") + .HasColumnType("integer") + .HasColumnName("admin_rank_id"); + + b.Property<string>("Flag") + .IsRequired() + .HasColumnType("text") + .HasColumnName("flag"); + + b.HasKey("Id") + .HasName("PK_admin_rank_flag"); + + b.HasIndex("AdminRankId"); + + b.HasIndex("Flag", "AdminRankId") + .IsUnique(); + + b.ToTable("admin_rank_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_watchlists_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<DateTime>("CreatedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("created_at"); + + b.Property<Guid?>("CreatedById") + .HasColumnType("uuid") + .HasColumnName("created_by_id"); + + b.Property<bool>("Deleted") + .HasColumnType("boolean") + .HasColumnName("deleted"); + + b.Property<DateTime?>("DeletedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("deleted_at"); + + b.Property<Guid?>("DeletedById") + .HasColumnType("uuid") + .HasColumnName("deleted_by_id"); + + b.Property<DateTime?>("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property<DateTime?>("LastEditedAt") + .IsRequired() + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property<Guid?>("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property<string>("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("character varying(4096)") + .HasColumnName("message"); + + b.Property<Guid?>("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property<TimeSpan>("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property<int?>("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.HasKey("Id") + .HasName("PK_admin_watchlists"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_watchlists_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_watchlists_round_id"); + + b.ToTable("admin_watchlists", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("antag_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<string>("AntagName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("antag_name"); + + b.Property<int>("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_antag"); + + b.HasIndex("ProfileId", "AntagName") + .IsUnique(); + + b.ToTable("antag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("assigned_user_id_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<Guid>("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property<string>("UserName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_assigned_user_id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.HasIndex("UserName") + .IsUnique(); + + b.ToTable("assigned_user_id", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.BanTemplate", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("ban_template_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<bool>("AutoDelete") + .HasColumnType("boolean") + .HasColumnName("auto_delete"); + + b.Property<int>("ExemptFlags") + .HasColumnType("integer") + .HasColumnName("exempt_flags"); + + b.Property<bool>("Hidden") + .HasColumnType("boolean") + .HasColumnName("hidden"); + + b.Property<TimeSpan>("Length") + .HasColumnType("interval") + .HasColumnName("length"); + + b.Property<string>("Reason") + .IsRequired() + .HasColumnType("text") + .HasColumnName("reason"); + + b.Property<int>("Severity") + .HasColumnType("integer") + .HasColumnName("severity"); + + b.Property<string>("Title") + .IsRequired() + .HasColumnType("text") + .HasColumnName("title"); + + b.HasKey("Id") + .HasName("PK_ban_template"); + + b.ToTable("ban_template", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Blacklist", b => + { + b.Property<Guid>("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_blacklist"); + + b.ToTable("blacklist", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("connection_log_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<IPAddress>("Address") + .IsRequired() + .HasColumnType("inet") + .HasColumnName("address"); + + b.Property<byte?>("Denied") + .HasColumnType("smallint") + .HasColumnName("denied"); + + b.Property<int>("ServerId") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("server_id"); + + b.Property<DateTime>("Time") + .HasColumnType("timestamp with time zone") + .HasColumnName("time"); + + b.Property<float>("Trust") + .HasColumnType("real") + .HasColumnName("trust"); + + b.Property<Guid>("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property<string>("UserName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_connection_log"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_connection_log_server_id"); + + b.HasIndex("Time"); + + b.HasIndex("UserId"); + + b.ToTable("connection_log", null, t => + { + t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("job_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<string>("JobName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("job_name"); + + b.Property<int>("Priority") + .HasColumnType("integer") + .HasColumnName("priority"); + + b.Property<int>("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_job"); + + b.HasIndex("ProfileId"); + + b.HasIndex("ProfileId", "JobName") + .IsUnique(); + + b.HasIndex(new[] { "ProfileId" }, "IX_job_one_high_priority") + .IsUnique() + .HasFilter("priority = 3"); + + b.ToTable("job", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.PlayTime", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("play_time_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<Guid>("PlayerId") + .HasColumnType("uuid") + .HasColumnName("player_id"); + + b.Property<TimeSpan>("TimeSpent") + .HasColumnType("interval") + .HasColumnName("time_spent"); + + b.Property<string>("Tracker") + .IsRequired() + .HasColumnType("text") + .HasColumnName("tracker"); + + b.HasKey("Id") + .HasName("PK_play_time"); + + b.HasIndex("PlayerId", "Tracker") + .IsUnique(); + + b.ToTable("play_time", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("player_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<DateTime>("FirstSeenTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("first_seen_time"); + + b.Property<DateTime?>("LastReadRules") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_read_rules"); + + b.Property<IPAddress>("LastSeenAddress") + .IsRequired() + .HasColumnType("inet") + .HasColumnName("last_seen_address"); + + b.Property<DateTime>("LastSeenTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_seen_time"); + + b.Property<string>("LastSeenUserName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("last_seen_user_name"); + + b.Property<Guid>("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_player"); + + b.HasAlternateKey("UserId") + .HasName("ak_player_user_id"); + + b.HasIndex("LastSeenUserName"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("player", null, t => + { + t.HasCheckConstraint("LastSeenAddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= last_seen_address"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("preference_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<string>("AdminOOCColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("admin_ooc_color"); + + b.Property<int>("SelectedCharacterSlot") + .HasColumnType("integer") + .HasColumnName("selected_character_slot"); + + b.Property<Guid>("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_preference"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("preference", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("profile_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<int>("Age") + .HasColumnType("integer") + .HasColumnName("age"); + + b.Property<string>("CharacterName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("char_name"); + + b.Property<string>("EyeColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("eye_color"); + + b.Property<string>("FacialHairColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("facial_hair_color"); + + b.Property<string>("FacialHairName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("facial_hair_name"); + + b.Property<string>("FlavorText") + .IsRequired() + .HasColumnType("text") + .HasColumnName("flavor_text"); + + b.Property<string>("Gender") + .IsRequired() + .HasColumnType("text") + .HasColumnName("gender"); + + b.Property<string>("HairColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("hair_color"); + + b.Property<string>("HairName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("hair_name"); + + b.Property<JsonDocument>("Markings") + .HasColumnType("jsonb") + .HasColumnName("markings"); + + b.Property<int>("PreferenceId") + .HasColumnType("integer") + .HasColumnName("preference_id"); + + b.Property<int>("PreferenceUnavailable") + .HasColumnType("integer") + .HasColumnName("pref_unavailable"); + + b.Property<string>("Sex") + .IsRequired() + .HasColumnType("text") + .HasColumnName("sex"); + + b.Property<string>("SkinColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("skin_color"); + + b.Property<int>("Slot") + .HasColumnType("integer") + .HasColumnName("slot"); + + b.Property<int>("SpawnPriority") + .HasColumnType("integer") + .HasColumnName("spawn_priority"); + + b.Property<string>("Species") + .IsRequired() + .HasColumnType("text") + .HasColumnName("species"); + + b.HasKey("Id") + .HasName("PK_profile"); + + b.HasIndex("PreferenceId") + .HasDatabaseName("IX_profile_preference_id"); + + b.HasIndex("Slot", "PreferenceId") + .IsUnique(); + + b.ToTable("profile", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("profile_loadout_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<string>("LoadoutName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("loadout_name"); + + b.Property<int>("ProfileLoadoutGroupId") + .HasColumnType("integer") + .HasColumnName("profile_loadout_group_id"); + + b.HasKey("Id") + .HasName("PK_profile_loadout"); + + b.HasIndex("ProfileLoadoutGroupId"); + + b.ToTable("profile_loadout", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("profile_loadout_group_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<string>("GroupName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("group_name"); + + b.Property<int>("ProfileRoleLoadoutId") + .HasColumnType("integer") + .HasColumnName("profile_role_loadout_id"); + + b.HasKey("Id") + .HasName("PK_profile_loadout_group"); + + b.HasIndex("ProfileRoleLoadoutId"); + + b.ToTable("profile_loadout_group", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("profile_role_loadout_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<int>("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.Property<string>("RoleName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("role_name"); + + b.HasKey("Id") + .HasName("PK_profile_role_loadout"); + + b.HasIndex("ProfileId"); + + b.ToTable("profile_role_loadout", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => + { + b.Property<Guid>("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property<string>("RoleId") + .HasColumnType("text") + .HasColumnName("role_id"); + + b.HasKey("PlayerUserId", "RoleId") + .HasName("PK_role_whitelists"); + + b.ToTable("role_whitelists", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("round_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<int>("ServerId") + .HasColumnType("integer") + .HasColumnName("server_id"); + + b.Property<DateTime?>("StartDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("start_date"); + + b.HasKey("Id") + .HasName("PK_round"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_round_server_id"); + + b.HasIndex("StartDate"); + + b.ToTable("round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<string>("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_server"); + + b.ToTable("server", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_ban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<NpgsqlInet?>("Address") + .HasColumnType("inet") + .HasColumnName("address"); + + b.Property<bool>("AutoDelete") + .HasColumnType("boolean") + .HasColumnName("auto_delete"); + + b.Property<DateTime>("BanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("ban_time"); + + b.Property<Guid?>("BanningAdmin") + .HasColumnType("uuid") + .HasColumnName("banning_admin"); + + b.Property<int>("ExemptFlags") + .HasColumnType("integer") + .HasColumnName("exempt_flags"); + + b.Property<DateTime?>("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property<bool>("Hidden") + .HasColumnType("boolean") + .HasColumnName("hidden"); + + b.Property<DateTime?>("LastEditedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property<Guid?>("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property<Guid?>("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property<TimeSpan>("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property<string>("Reason") + .IsRequired() + .HasColumnType("text") + .HasColumnName("reason"); + + b.Property<int?>("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property<int>("Severity") + .HasColumnType("integer") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_ban_round_id"); + + b.ToTable("server_ban", null, t => + { + t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); + + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanExemption", b => + { + b.Property<Guid>("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property<int>("Flags") + .HasColumnType("integer") + .HasColumnName("flags"); + + b.HasKey("UserId") + .HasName("PK_server_ban_exemption"); + + b.ToTable("server_ban_exemption", null, t => + { + t.HasCheckConstraint("FlagsNotZero", "flags != 0"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_ban_hit_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<int>("BanId") + .HasColumnType("integer") + .HasColumnName("ban_id"); + + b.Property<int>("ConnectionId") + .HasColumnType("integer") + .HasColumnName("connection_id"); + + b.HasKey("Id") + .HasName("PK_server_ban_hit"); + + b.HasIndex("BanId") + .HasDatabaseName("IX_server_ban_hit_ban_id"); + + b.HasIndex("ConnectionId") + .HasDatabaseName("IX_server_ban_hit_connection_id"); + + b.ToTable("server_ban_hit", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_role_ban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<NpgsqlInet?>("Address") + .HasColumnType("inet") + .HasColumnName("address"); + + b.Property<DateTime>("BanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("ban_time"); + + b.Property<Guid?>("BanningAdmin") + .HasColumnType("uuid") + .HasColumnName("banning_admin"); + + b.Property<DateTime?>("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property<bool>("Hidden") + .HasColumnType("boolean") + .HasColumnName("hidden"); + + b.Property<DateTime?>("LastEditedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property<Guid?>("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property<Guid?>("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property<TimeSpan>("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property<string>("Reason") + .IsRequired() + .HasColumnType("text") + .HasColumnName("reason"); + + b.Property<string>("RoleId") + .IsRequired() + .HasColumnType("text") + .HasColumnName("role_id"); + + b.Property<int?>("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property<int>("Severity") + .HasColumnType("integer") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_role_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_role_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_role_ban_round_id"); + + b.ToTable("server_role_ban", null, t => + { + t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); + + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("role_unban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<int>("BanId") + .HasColumnType("integer") + .HasColumnName("ban_id"); + + b.Property<DateTime>("UnbanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("unban_time"); + + b.Property<Guid?>("UnbanningAdmin") + .HasColumnType("uuid") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_role_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_role_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("unban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<int>("BanId") + .HasColumnType("integer") + .HasColumnName("ban_id"); + + b.Property<DateTime>("UnbanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("unban_time"); + + b.Property<Guid?>("UnbanningAdmin") + .HasColumnType("uuid") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("trait_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<int>("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.Property<string>("TraitName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("trait_name"); + + b.HasKey("Id") + .HasName("PK_trait"); + + b.HasIndex("ProfileId", "TraitName") + .IsUnique(); + + b.ToTable("trait", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.UploadedResourceLog", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("uploaded_resource_log_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); + + b.Property<byte[]>("Data") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("data"); + + b.Property<DateTime>("Date") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property<string>("Path") + .IsRequired() + .HasColumnType("text") + .HasColumnName("path"); + + b.Property<Guid>("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_uploaded_resource_log"); + + b.ToTable("uploaded_resource_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Whitelist", b => + { + b.Property<Guid>("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_whitelist"); + + b.ToTable("whitelist", (string)null); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.Property<int>("PlayersId") + .HasColumnType("integer") + .HasColumnName("players_id"); + + b.Property<int>("RoundsId") + .HasColumnType("integer") + .HasColumnName("rounds_id"); + + b.HasKey("PlayersId", "RoundsId") + .HasName("PK_player_round"); + + b.HasIndex("RoundsId") + .HasDatabaseName("IX_player_round_rounds_id"); + + b.ToTable("player_round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.HasOne("Content.Server.Database.AdminRank", "AdminRank") + .WithMany("Admins") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_admin_rank_admin_rank_id"); + + b.Navigation("AdminRank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.HasOne("Content.Server.Database.Admin", "Admin") + .WithMany("Flags") + .HasForeignKey("AdminId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_flag_admin_admin_id"); + + b.Navigation("Admin"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany("AdminLogs") + .HasForeignKey("RoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_round_round_id"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminLogs") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_player_player_user_id"); + + b.HasOne("Content.Server.Database.AdminLog", "Log") + .WithMany("Players") + .HasForeignKey("RoundId", "LogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_admin_log_round_id_log_id"); + + b.Navigation("Log"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminMessagesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminMessagesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminMessagesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminMessagesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_messages_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_messages_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminNotesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminNotesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminNotesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminNotesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_notes_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_notes_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.HasOne("Content.Server.Database.AdminRank", "Rank") + .WithMany("Flags") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_rank_flag_admin_rank_admin_rank_id"); + + b.Navigation("Rank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminWatchlistsCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminWatchlistsDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminWatchlistsLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminWatchlistsReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_watchlists_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_watchlists_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Antags") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_antag_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("ConnectionLogs") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.SetNull) + .IsRequired() + .HasConstraintName("FK_connection_log_server_server_id"); + + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property<int>("ConnectionLogId") + .HasColumnType("integer") + .HasColumnName("connection_log_id"); + + b1.Property<byte[]>("Hwid") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b1.Property<int>("Type") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ConnectionLogId"); + + b1.ToTable("connection_log"); + + b1.WithOwner() + .HasForeignKey("ConnectionLogId") + .HasConstraintName("FK_connection_log_connection_log_connection_log_id"); + }); + + b.Navigation("HWId"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Jobs") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_job_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.OwnsOne("Content.Server.Database.TypedHwid", "LastSeenHWId", b1 => + { + b1.Property<int>("PlayerId") + .HasColumnType("integer") + .HasColumnName("player_id"); + + b1.Property<byte[]>("Hwid") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("last_seen_hwid"); + + b1.Property<int>("Type") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("last_seen_hwid_type"); + + b1.HasKey("PlayerId"); + + b1.ToTable("player"); + + b1.WithOwner() + .HasForeignKey("PlayerId") + .HasConstraintName("FK_player_player_player_id"); + }); + + b.Navigation("LastSeenHWId"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.HasOne("Content.Server.Database.Preference", "Preference") + .WithMany("Profiles") + .HasForeignKey("PreferenceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_preference_preference_id"); + + b.Navigation("Preference"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => + { + b.HasOne("Content.Server.Database.ProfileLoadoutGroup", "ProfileLoadoutGroup") + .WithMany("Loadouts") + .HasForeignKey("ProfileLoadoutGroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_loadout_profile_loadout_group_profile_loadout_group~"); + + b.Navigation("ProfileLoadoutGroup"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => + { + b.HasOne("Content.Server.Database.ProfileRoleLoadout", "ProfileRoleLoadout") + .WithMany("Groups") + .HasForeignKey("ProfileRoleLoadoutId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_loadout_group_profile_role_loadout_profile_role_loa~"); + + b.Navigation("ProfileRoleLoadout"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Loadouts") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_role_loadout_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("JobWhitelists") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_role_whitelists_player_player_user_id"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("Rounds") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_round_server_server_id"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_ban_round_round_id"); + + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property<int>("ServerBanId") + .HasColumnType("integer") + .HasColumnName("server_ban_id"); + + b1.Property<byte[]>("Hwid") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b1.Property<int>("Type") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerBanId"); + + b1.ToTable("server_ban"); + + b1.WithOwner() + .HasForeignKey("ServerBanId") + .HasConstraintName("FK_server_ban_server_ban_server_ban_id"); + }); + + b.Navigation("CreatedBy"); + + b.Navigation("HWId"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithMany("BanHits") + .HasForeignKey("BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); + + b.HasOne("Content.Server.Database.ConnectionLog", "Connection") + .WithMany("BanHits") + .HasForeignKey("ConnectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); + + b.Navigation("Ban"); + + b.Navigation("Connection"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerRoleBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerRoleBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_role_ban_round_round_id"); + + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property<int>("ServerRoleBanId") + .HasColumnType("integer") + .HasColumnName("server_role_ban_id"); + + b1.Property<byte[]>("Hwid") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b1.Property<int>("Type") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerRoleBanId"); + + b1.ToTable("server_role_ban"); + + b1.WithOwner() + .HasForeignKey("ServerRoleBanId") + .HasConstraintName("FK_server_role_ban_server_role_ban_server_role_ban_id"); + }); + + b.Navigation("CreatedBy"); + + b.Navigation("HWId"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.HasOne("Content.Server.Database.ServerRoleBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerRoleUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_role_unban_server_role_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_unban_server_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Traits") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_trait_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.HasOne("Content.Server.Database.Player", null) + .WithMany() + .HasForeignKey("PlayersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_player_players_id"); + + b.HasOne("Content.Server.Database.Round", null) + .WithMany() + .HasForeignKey("RoundsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_round_rounds_id"); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Navigation("Players"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Navigation("Admins"); + + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Navigation("BanHits"); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Navigation("AdminLogs"); + + b.Navigation("AdminMessagesCreated"); + + b.Navigation("AdminMessagesDeleted"); + + b.Navigation("AdminMessagesLastEdited"); + + b.Navigation("AdminMessagesReceived"); + + b.Navigation("AdminNotesCreated"); + + b.Navigation("AdminNotesDeleted"); + + b.Navigation("AdminNotesLastEdited"); + + b.Navigation("AdminNotesReceived"); + + b.Navigation("AdminServerBansCreated"); + + b.Navigation("AdminServerBansLastEdited"); + + b.Navigation("AdminServerRoleBansCreated"); + + b.Navigation("AdminServerRoleBansLastEdited"); + + b.Navigation("AdminWatchlistsCreated"); + + b.Navigation("AdminWatchlistsDeleted"); + + b.Navigation("AdminWatchlistsLastEdited"); + + b.Navigation("AdminWatchlistsReceived"); + + b.Navigation("JobWhitelists"); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Navigation("Profiles"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Navigation("Antags"); + + b.Navigation("Jobs"); + + b.Navigation("Loadouts"); + + b.Navigation("Traits"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => + { + b.Navigation("Loadouts"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => + { + b.Navigation("Groups"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Navigation("AdminLogs"); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Navigation("ConnectionLogs"); + + b.Navigation("Rounds"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Navigation("BanHits"); + + b.Navigation("Unban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Navigation("Unban"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.cs b/Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.cs new file mode 100644 index 00000000000..debb36aaccb --- /dev/null +++ b/Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.cs @@ -0,0 +1,29 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Content.Server.Database.Migrations.Postgres +{ + /// <inheritdoc /> + public partial class ConnectionTrust : Migration + { + /// <inheritdoc /> + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn<float>( + name: "trust", + table: "connection_log", + type: "real", + nullable: false, + defaultValue: 0f); + } + + /// <inheritdoc /> + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "trust", + table: "connection_log"); + } + } +} diff --git a/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs b/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs index 1f64f6e51a5..75444386311 100644 --- a/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs +++ b/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs @@ -512,20 +512,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("assigned_user_id", (string)null); }); - modelBuilder.Entity("Content.Server.Database.Blacklist", - b => - { - b.Property<Guid>("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("UserId") - .HasName("PK_blacklist"); - - b.ToTable("blacklist", (string) null); - }); - modelBuilder.Entity("Content.Server.Database.BanTemplate", b => { b.Property<int>("Id") @@ -571,6 +557,19 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("ban_template", (string)null); }); + modelBuilder.Entity("Content.Server.Database.Blacklist", b => + { + b.Property<Guid>("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_blacklist"); + + b.ToTable("blacklist", (string)null); + }); + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => { b.Property<int>("Id") @@ -589,10 +588,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("smallint") .HasColumnName("denied"); - b.Property<byte[]>("HWId") - .HasColumnType("bytea") - .HasColumnName("hwid"); - b.Property<int>("ServerId") .ValueGeneratedOnAdd() .HasColumnType("integer") @@ -603,6 +598,10 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("timestamp with time zone") .HasColumnName("time"); + b.Property<float>("Trust") + .HasColumnType("real") + .HasColumnName("trust"); + b.Property<Guid>("UserId") .HasColumnType("uuid") .HasColumnName("user_id"); @@ -718,10 +717,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("inet") .HasColumnName("last_seen_address"); - b.Property<byte[]>("LastSeenHWId") - .HasColumnType("bytea") - .HasColumnName("last_seen_hwid"); - b.Property<DateTime>("LastSeenTime") .HasColumnType("timestamp with time zone") .HasColumnName("last_seen_time"); @@ -1058,10 +1053,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("timestamp with time zone") .HasColumnName("expiration_time"); - b.Property<byte[]>("HWId") - .HasColumnType("bytea") - .HasColumnName("hwid"); - b.Property<bool>("Hidden") .HasColumnType("boolean") .HasColumnName("hidden"); @@ -1192,10 +1183,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("timestamp with time zone") .HasColumnName("expiration_time"); - b.Property<byte[]>("HWId") - .HasColumnType("bytea") - .HasColumnName("hwid"); - b.Property<bool>("Hidden") .HasColumnType("boolean") .HasColumnName("hidden"); @@ -1637,6 +1624,34 @@ protected override void BuildModel(ModelBuilder modelBuilder) .IsRequired() .HasConstraintName("FK_connection_log_server_server_id"); + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property<int>("ConnectionLogId") + .HasColumnType("integer") + .HasColumnName("connection_log_id"); + + b1.Property<byte[]>("Hwid") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b1.Property<int>("Type") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ConnectionLogId"); + + b1.ToTable("connection_log"); + + b1.WithOwner() + .HasForeignKey("ConnectionLogId") + .HasConstraintName("FK_connection_log_connection_log_connection_log_id"); + }); + + b.Navigation("HWId"); + b.Navigation("Server"); }); @@ -1652,6 +1667,37 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("Profile"); }); + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.OwnsOne("Content.Server.Database.TypedHwid", "LastSeenHWId", b1 => + { + b1.Property<int>("PlayerId") + .HasColumnType("integer") + .HasColumnName("player_id"); + + b1.Property<byte[]>("Hwid") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("last_seen_hwid"); + + b1.Property<int>("Type") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("last_seen_hwid_type"); + + b1.HasKey("PlayerId"); + + b1.ToTable("player"); + + b1.WithOwner() + .HasForeignKey("PlayerId") + .HasConstraintName("FK_player_player_player_id"); + }); + + b.Navigation("LastSeenHWId"); + }); + modelBuilder.Entity("Content.Server.Database.Profile", b => { b.HasOne("Content.Server.Database.Preference", "Preference") @@ -1746,8 +1792,36 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasForeignKey("RoundId") .HasConstraintName("FK_server_ban_round_round_id"); + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property<int>("ServerBanId") + .HasColumnType("integer") + .HasColumnName("server_ban_id"); + + b1.Property<byte[]>("Hwid") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b1.Property<int>("Type") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerBanId"); + + b1.ToTable("server_ban"); + + b1.WithOwner() + .HasForeignKey("ServerBanId") + .HasConstraintName("FK_server_ban_server_ban_server_ban_id"); + }); + b.Navigation("CreatedBy"); + b.Navigation("HWId"); + b.Navigation("LastEditedBy"); b.Navigation("Round"); @@ -1795,8 +1869,36 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasForeignKey("RoundId") .HasConstraintName("FK_server_role_ban_round_round_id"); + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property<int>("ServerRoleBanId") + .HasColumnType("integer") + .HasColumnName("server_role_ban_id"); + + b1.Property<byte[]>("Hwid") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b1.Property<int>("Type") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerRoleBanId"); + + b1.ToTable("server_role_ban"); + + b1.WithOwner() + .HasForeignKey("ServerRoleBanId") + .HasConstraintName("FK_server_role_ban_server_role_ban_server_role_ban_id"); + }); + b.Navigation("CreatedBy"); + b.Navigation("HWId"); + b.Navigation("LastEditedBy"); b.Navigation("Round"); diff --git a/Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.Designer.cs new file mode 100644 index 00000000000..56a9fe0a059 --- /dev/null +++ b/Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.Designer.cs @@ -0,0 +1,1995 @@ +// <auto-generated /> +using System; +using Content.Server.Database; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Content.Server.Database.Migrations.Sqlite +{ + [DbContext(typeof(SqliteServerDbContext))] + [Migration("20241111170107_ModernHwid")] + partial class ModernHwid + { + /// <inheritdoc /> + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "8.0.0"); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Property<Guid>("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property<int?>("AdminRankId") + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property<string>("Title") + .HasColumnType("TEXT") + .HasColumnName("title"); + + b.HasKey("UserId") + .HasName("PK_admin"); + + b.HasIndex("AdminRankId") + .HasDatabaseName("IX_admin_admin_rank_id"); + + b.ToTable("admin", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_flag_id"); + + b.Property<Guid>("AdminId") + .HasColumnType("TEXT") + .HasColumnName("admin_id"); + + b.Property<string>("Flag") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flag"); + + b.Property<bool>("Negative") + .HasColumnType("INTEGER") + .HasColumnName("negative"); + + b.HasKey("Id") + .HasName("PK_admin_flag"); + + b.HasIndex("AdminId") + .HasDatabaseName("IX_admin_flag_admin_id"); + + b.HasIndex("Flag", "AdminId") + .IsUnique(); + + b.ToTable("admin_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Property<int>("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property<int>("Id") + .HasColumnType("INTEGER") + .HasColumnName("admin_log_id"); + + b.Property<DateTime>("Date") + .HasColumnType("TEXT") + .HasColumnName("date"); + + b.Property<sbyte>("Impact") + .HasColumnType("INTEGER") + .HasColumnName("impact"); + + b.Property<string>("Json") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("json"); + + b.Property<string>("Message") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property<int>("Type") + .HasColumnType("INTEGER") + .HasColumnName("type"); + + b.HasKey("RoundId", "Id") + .HasName("PK_admin_log"); + + b.HasIndex("Date"); + + b.HasIndex("Type") + .HasDatabaseName("IX_admin_log_type"); + + b.ToTable("admin_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.Property<int>("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property<int>("LogId") + .HasColumnType("INTEGER") + .HasColumnName("log_id"); + + b.Property<Guid>("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.HasKey("RoundId", "LogId", "PlayerUserId") + .HasName("PK_admin_log_player"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_log_player_player_user_id"); + + b.ToTable("admin_log_player", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_messages_id"); + + b.Property<DateTime>("CreatedAt") + .HasColumnType("TEXT") + .HasColumnName("created_at"); + + b.Property<Guid?>("CreatedById") + .HasColumnType("TEXT") + .HasColumnName("created_by_id"); + + b.Property<bool>("Deleted") + .HasColumnType("INTEGER") + .HasColumnName("deleted"); + + b.Property<DateTime?>("DeletedAt") + .HasColumnType("TEXT") + .HasColumnName("deleted_at"); + + b.Property<Guid?>("DeletedById") + .HasColumnType("TEXT") + .HasColumnName("deleted_by_id"); + + b.Property<bool>("Dismissed") + .HasColumnType("INTEGER") + .HasColumnName("dismissed"); + + b.Property<DateTime?>("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property<DateTime?>("LastEditedAt") + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property<Guid?>("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property<string>("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property<Guid?>("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property<TimeSpan>("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property<int?>("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property<bool>("Seen") + .HasColumnType("INTEGER") + .HasColumnName("seen"); + + b.HasKey("Id") + .HasName("PK_admin_messages"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_messages_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_messages_round_id"); + + b.ToTable("admin_messages", null, t => + { + t.HasCheckConstraint("NotDismissedAndSeen", "NOT dismissed OR seen"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_notes_id"); + + b.Property<DateTime>("CreatedAt") + .HasColumnType("TEXT") + .HasColumnName("created_at"); + + b.Property<Guid?>("CreatedById") + .HasColumnType("TEXT") + .HasColumnName("created_by_id"); + + b.Property<bool>("Deleted") + .HasColumnType("INTEGER") + .HasColumnName("deleted"); + + b.Property<DateTime?>("DeletedAt") + .HasColumnType("TEXT") + .HasColumnName("deleted_at"); + + b.Property<Guid?>("DeletedById") + .HasColumnType("TEXT") + .HasColumnName("deleted_by_id"); + + b.Property<DateTime?>("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property<DateTime?>("LastEditedAt") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property<Guid?>("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property<string>("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property<Guid?>("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property<TimeSpan>("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property<int?>("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property<bool>("Secret") + .HasColumnType("INTEGER") + .HasColumnName("secret"); + + b.Property<int>("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_admin_notes"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_notes_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_notes_round_id"); + + b.ToTable("admin_notes", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property<string>("Name") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_admin_rank"); + + b.ToTable("admin_rank", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_flag_id"); + + b.Property<int>("AdminRankId") + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property<string>("Flag") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flag"); + + b.HasKey("Id") + .HasName("PK_admin_rank_flag"); + + b.HasIndex("AdminRankId"); + + b.HasIndex("Flag", "AdminRankId") + .IsUnique(); + + b.ToTable("admin_rank_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_watchlists_id"); + + b.Property<DateTime>("CreatedAt") + .HasColumnType("TEXT") + .HasColumnName("created_at"); + + b.Property<Guid?>("CreatedById") + .HasColumnType("TEXT") + .HasColumnName("created_by_id"); + + b.Property<bool>("Deleted") + .HasColumnType("INTEGER") + .HasColumnName("deleted"); + + b.Property<DateTime?>("DeletedAt") + .HasColumnType("TEXT") + .HasColumnName("deleted_at"); + + b.Property<Guid?>("DeletedById") + .HasColumnType("TEXT") + .HasColumnName("deleted_by_id"); + + b.Property<DateTime?>("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property<DateTime?>("LastEditedAt") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property<Guid?>("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property<string>("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property<Guid?>("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property<TimeSpan>("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property<int?>("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.HasKey("Id") + .HasName("PK_admin_watchlists"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_watchlists_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_watchlists_round_id"); + + b.ToTable("admin_watchlists", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("antag_id"); + + b.Property<string>("AntagName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("antag_name"); + + b.Property<int>("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_antag"); + + b.HasIndex("ProfileId", "AntagName") + .IsUnique(); + + b.ToTable("antag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("assigned_user_id_id"); + + b.Property<Guid>("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property<string>("UserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_assigned_user_id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.HasIndex("UserName") + .IsUnique(); + + b.ToTable("assigned_user_id", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.BanTemplate", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("ban_template_id"); + + b.Property<bool>("AutoDelete") + .HasColumnType("INTEGER") + .HasColumnName("auto_delete"); + + b.Property<int>("ExemptFlags") + .HasColumnType("INTEGER") + .HasColumnName("exempt_flags"); + + b.Property<bool>("Hidden") + .HasColumnType("INTEGER") + .HasColumnName("hidden"); + + b.Property<TimeSpan>("Length") + .HasColumnType("TEXT") + .HasColumnName("length"); + + b.Property<string>("Reason") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("reason"); + + b.Property<int>("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.Property<string>("Title") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("title"); + + b.HasKey("Id") + .HasName("PK_ban_template"); + + b.ToTable("ban_template", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Blacklist", b => + { + b.Property<Guid>("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_blacklist"); + + b.ToTable("blacklist", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("connection_log_id"); + + b.Property<string>("Address") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property<byte?>("Denied") + .HasColumnType("INTEGER") + .HasColumnName("denied"); + + b.Property<int>("ServerId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("server_id"); + + b.Property<DateTime>("Time") + .HasColumnType("TEXT") + .HasColumnName("time"); + + b.Property<Guid>("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property<string>("UserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_connection_log"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_connection_log_server_id"); + + b.HasIndex("Time"); + + b.HasIndex("UserId"); + + b.ToTable("connection_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("job_id"); + + b.Property<string>("JobName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("job_name"); + + b.Property<int>("Priority") + .HasColumnType("INTEGER") + .HasColumnName("priority"); + + b.Property<int>("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_job"); + + b.HasIndex("ProfileId"); + + b.HasIndex("ProfileId", "JobName") + .IsUnique(); + + b.HasIndex(new[] { "ProfileId" }, "IX_job_one_high_priority") + .IsUnique() + .HasFilter("priority = 3"); + + b.ToTable("job", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.PlayTime", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("play_time_id"); + + b.Property<Guid>("PlayerId") + .HasColumnType("TEXT") + .HasColumnName("player_id"); + + b.Property<TimeSpan>("TimeSpent") + .HasColumnType("TEXT") + .HasColumnName("time_spent"); + + b.Property<string>("Tracker") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("tracker"); + + b.HasKey("Id") + .HasName("PK_play_time"); + + b.HasIndex("PlayerId", "Tracker") + .IsUnique(); + + b.ToTable("play_time", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("player_id"); + + b.Property<DateTime>("FirstSeenTime") + .HasColumnType("TEXT") + .HasColumnName("first_seen_time"); + + b.Property<DateTime?>("LastReadRules") + .HasColumnType("TEXT") + .HasColumnName("last_read_rules"); + + b.Property<string>("LastSeenAddress") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_seen_address"); + + b.Property<DateTime>("LastSeenTime") + .HasColumnType("TEXT") + .HasColumnName("last_seen_time"); + + b.Property<string>("LastSeenUserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_seen_user_name"); + + b.Property<Guid>("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_player"); + + b.HasAlternateKey("UserId") + .HasName("ak_player_user_id"); + + b.HasIndex("LastSeenUserName"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("player", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("preference_id"); + + b.Property<string>("AdminOOCColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("admin_ooc_color"); + + b.Property<int>("SelectedCharacterSlot") + .HasColumnType("INTEGER") + .HasColumnName("selected_character_slot"); + + b.Property<Guid>("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_preference"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("preference", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.Property<int>("Age") + .HasColumnType("INTEGER") + .HasColumnName("age"); + + b.Property<string>("CharacterName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("char_name"); + + b.Property<string>("EyeColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("eye_color"); + + b.Property<string>("FacialHairColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("facial_hair_color"); + + b.Property<string>("FacialHairName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("facial_hair_name"); + + b.Property<string>("FlavorText") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flavor_text"); + + b.Property<string>("Gender") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("gender"); + + b.Property<string>("HairColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("hair_color"); + + b.Property<string>("HairName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("hair_name"); + + b.Property<byte[]>("Markings") + .HasColumnType("jsonb") + .HasColumnName("markings"); + + b.Property<int>("PreferenceId") + .HasColumnType("INTEGER") + .HasColumnName("preference_id"); + + b.Property<int>("PreferenceUnavailable") + .HasColumnType("INTEGER") + .HasColumnName("pref_unavailable"); + + b.Property<string>("Sex") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("sex"); + + b.Property<string>("SkinColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("skin_color"); + + b.Property<int>("Slot") + .HasColumnType("INTEGER") + .HasColumnName("slot"); + + b.Property<int>("SpawnPriority") + .HasColumnType("INTEGER") + .HasColumnName("spawn_priority"); + + b.Property<string>("Species") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("species"); + + b.HasKey("Id") + .HasName("PK_profile"); + + b.HasIndex("PreferenceId") + .HasDatabaseName("IX_profile_preference_id"); + + b.HasIndex("Slot", "PreferenceId") + .IsUnique(); + + b.ToTable("profile", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("profile_loadout_id"); + + b.Property<string>("LoadoutName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("loadout_name"); + + b.Property<int>("ProfileLoadoutGroupId") + .HasColumnType("INTEGER") + .HasColumnName("profile_loadout_group_id"); + + b.HasKey("Id") + .HasName("PK_profile_loadout"); + + b.HasIndex("ProfileLoadoutGroupId"); + + b.ToTable("profile_loadout", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("profile_loadout_group_id"); + + b.Property<string>("GroupName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("group_name"); + + b.Property<int>("ProfileRoleLoadoutId") + .HasColumnType("INTEGER") + .HasColumnName("profile_role_loadout_id"); + + b.HasKey("Id") + .HasName("PK_profile_loadout_group"); + + b.HasIndex("ProfileRoleLoadoutId"); + + b.ToTable("profile_loadout_group", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("profile_role_loadout_id"); + + b.Property<int>("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.Property<string>("RoleName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("role_name"); + + b.HasKey("Id") + .HasName("PK_profile_role_loadout"); + + b.HasIndex("ProfileId"); + + b.ToTable("profile_role_loadout", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => + { + b.Property<Guid>("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property<string>("RoleId") + .HasColumnType("TEXT") + .HasColumnName("role_id"); + + b.HasKey("PlayerUserId", "RoleId") + .HasName("PK_role_whitelists"); + + b.ToTable("role_whitelists", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property<int>("ServerId") + .HasColumnType("INTEGER") + .HasColumnName("server_id"); + + b.Property<DateTime?>("StartDate") + .HasColumnType("TEXT") + .HasColumnName("start_date"); + + b.HasKey("Id") + .HasName("PK_round"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_round_server_id"); + + b.HasIndex("StartDate"); + + b.ToTable("round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_id"); + + b.Property<string>("Name") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_server"); + + b.ToTable("server", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_ban_id"); + + b.Property<string>("Address") + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property<bool>("AutoDelete") + .HasColumnType("INTEGER") + .HasColumnName("auto_delete"); + + b.Property<DateTime>("BanTime") + .HasColumnType("TEXT") + .HasColumnName("ban_time"); + + b.Property<Guid?>("BanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("banning_admin"); + + b.Property<int>("ExemptFlags") + .HasColumnType("INTEGER") + .HasColumnName("exempt_flags"); + + b.Property<DateTime?>("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property<bool>("Hidden") + .HasColumnType("INTEGER") + .HasColumnName("hidden"); + + b.Property<DateTime?>("LastEditedAt") + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property<Guid?>("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property<Guid?>("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property<TimeSpan>("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property<string>("Reason") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("reason"); + + b.Property<int?>("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property<int>("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_ban_round_id"); + + b.ToTable("server_ban", null, t => + { + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanExemption", b => + { + b.Property<Guid>("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property<int>("Flags") + .HasColumnType("INTEGER") + .HasColumnName("flags"); + + b.HasKey("UserId") + .HasName("PK_server_ban_exemption"); + + b.ToTable("server_ban_exemption", null, t => + { + t.HasCheckConstraint("FlagsNotZero", "flags != 0"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_ban_hit_id"); + + b.Property<int>("BanId") + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property<int>("ConnectionId") + .HasColumnType("INTEGER") + .HasColumnName("connection_id"); + + b.HasKey("Id") + .HasName("PK_server_ban_hit"); + + b.HasIndex("BanId") + .HasDatabaseName("IX_server_ban_hit_ban_id"); + + b.HasIndex("ConnectionId") + .HasDatabaseName("IX_server_ban_hit_connection_id"); + + b.ToTable("server_ban_hit", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_role_ban_id"); + + b.Property<string>("Address") + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property<DateTime>("BanTime") + .HasColumnType("TEXT") + .HasColumnName("ban_time"); + + b.Property<Guid?>("BanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("banning_admin"); + + b.Property<DateTime?>("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property<bool>("Hidden") + .HasColumnType("INTEGER") + .HasColumnName("hidden"); + + b.Property<DateTime?>("LastEditedAt") + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property<Guid?>("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property<Guid?>("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property<TimeSpan>("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property<string>("Reason") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("reason"); + + b.Property<string>("RoleId") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("role_id"); + + b.Property<int?>("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property<int>("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_role_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_role_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_role_ban_round_id"); + + b.ToTable("server_role_ban", null, t => + { + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("role_unban_id"); + + b.Property<int>("BanId") + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property<DateTime>("UnbanTime") + .HasColumnType("TEXT") + .HasColumnName("unban_time"); + + b.Property<Guid?>("UnbanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_role_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_role_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("unban_id"); + + b.Property<int>("BanId") + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property<DateTime>("UnbanTime") + .HasColumnType("TEXT") + .HasColumnName("unban_time"); + + b.Property<Guid?>("UnbanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("trait_id"); + + b.Property<int>("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.Property<string>("TraitName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("trait_name"); + + b.HasKey("Id") + .HasName("PK_trait"); + + b.HasIndex("ProfileId", "TraitName") + .IsUnique(); + + b.ToTable("trait", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.UploadedResourceLog", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("uploaded_resource_log_id"); + + b.Property<byte[]>("Data") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("data"); + + b.Property<DateTime>("Date") + .HasColumnType("TEXT") + .HasColumnName("date"); + + b.Property<string>("Path") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("path"); + + b.Property<Guid>("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_uploaded_resource_log"); + + b.ToTable("uploaded_resource_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Whitelist", b => + { + b.Property<Guid>("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_whitelist"); + + b.ToTable("whitelist", (string)null); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.Property<int>("PlayersId") + .HasColumnType("INTEGER") + .HasColumnName("players_id"); + + b.Property<int>("RoundsId") + .HasColumnType("INTEGER") + .HasColumnName("rounds_id"); + + b.HasKey("PlayersId", "RoundsId") + .HasName("PK_player_round"); + + b.HasIndex("RoundsId") + .HasDatabaseName("IX_player_round_rounds_id"); + + b.ToTable("player_round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.HasOne("Content.Server.Database.AdminRank", "AdminRank") + .WithMany("Admins") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_admin_rank_admin_rank_id"); + + b.Navigation("AdminRank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.HasOne("Content.Server.Database.Admin", "Admin") + .WithMany("Flags") + .HasForeignKey("AdminId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_flag_admin_admin_id"); + + b.Navigation("Admin"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany("AdminLogs") + .HasForeignKey("RoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_round_round_id"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminLogs") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_player_player_user_id"); + + b.HasOne("Content.Server.Database.AdminLog", "Log") + .WithMany("Players") + .HasForeignKey("RoundId", "LogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_admin_log_round_id_log_id"); + + b.Navigation("Log"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminMessagesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminMessagesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminMessagesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminMessagesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_messages_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_messages_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminNotesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminNotesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminNotesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminNotesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_notes_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_notes_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.HasOne("Content.Server.Database.AdminRank", "Rank") + .WithMany("Flags") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_rank_flag_admin_rank_admin_rank_id"); + + b.Navigation("Rank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminWatchlistsCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminWatchlistsDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminWatchlistsLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminWatchlistsReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_watchlists_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_watchlists_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Antags") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_antag_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("ConnectionLogs") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.SetNull) + .IsRequired() + .HasConstraintName("FK_connection_log_server_server_id"); + + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property<int>("ConnectionLogId") + .HasColumnType("INTEGER") + .HasColumnName("connection_log_id"); + + b1.Property<byte[]>("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b1.Property<int>("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ConnectionLogId"); + + b1.ToTable("connection_log"); + + b1.WithOwner() + .HasForeignKey("ConnectionLogId") + .HasConstraintName("FK_connection_log_connection_log_connection_log_id"); + }); + + b.Navigation("HWId"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Jobs") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_job_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.OwnsOne("Content.Server.Database.TypedHwid", "LastSeenHWId", b1 => + { + b1.Property<int>("PlayerId") + .HasColumnType("INTEGER") + .HasColumnName("player_id"); + + b1.Property<byte[]>("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("last_seen_hwid"); + + b1.Property<int>("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("last_seen_hwid_type"); + + b1.HasKey("PlayerId"); + + b1.ToTable("player"); + + b1.WithOwner() + .HasForeignKey("PlayerId") + .HasConstraintName("FK_player_player_player_id"); + }); + + b.Navigation("LastSeenHWId"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.HasOne("Content.Server.Database.Preference", "Preference") + .WithMany("Profiles") + .HasForeignKey("PreferenceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_preference_preference_id"); + + b.Navigation("Preference"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => + { + b.HasOne("Content.Server.Database.ProfileLoadoutGroup", "ProfileLoadoutGroup") + .WithMany("Loadouts") + .HasForeignKey("ProfileLoadoutGroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_loadout_profile_loadout_group_profile_loadout_group_id"); + + b.Navigation("ProfileLoadoutGroup"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => + { + b.HasOne("Content.Server.Database.ProfileRoleLoadout", "ProfileRoleLoadout") + .WithMany("Groups") + .HasForeignKey("ProfileRoleLoadoutId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_loadout_group_profile_role_loadout_profile_role_loadout_id"); + + b.Navigation("ProfileRoleLoadout"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Loadouts") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_role_loadout_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("JobWhitelists") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_role_whitelists_player_player_user_id"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("Rounds") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_round_server_server_id"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_ban_round_round_id"); + + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property<int>("ServerBanId") + .HasColumnType("INTEGER") + .HasColumnName("server_ban_id"); + + b1.Property<byte[]>("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b1.Property<int>("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerBanId"); + + b1.ToTable("server_ban"); + + b1.WithOwner() + .HasForeignKey("ServerBanId") + .HasConstraintName("FK_server_ban_server_ban_server_ban_id"); + }); + + b.Navigation("CreatedBy"); + + b.Navigation("HWId"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithMany("BanHits") + .HasForeignKey("BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); + + b.HasOne("Content.Server.Database.ConnectionLog", "Connection") + .WithMany("BanHits") + .HasForeignKey("ConnectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); + + b.Navigation("Ban"); + + b.Navigation("Connection"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerRoleBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerRoleBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_role_ban_round_round_id"); + + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property<int>("ServerRoleBanId") + .HasColumnType("INTEGER") + .HasColumnName("server_role_ban_id"); + + b1.Property<byte[]>("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b1.Property<int>("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerRoleBanId"); + + b1.ToTable("server_role_ban"); + + b1.WithOwner() + .HasForeignKey("ServerRoleBanId") + .HasConstraintName("FK_server_role_ban_server_role_ban_server_role_ban_id"); + }); + + b.Navigation("CreatedBy"); + + b.Navigation("HWId"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.HasOne("Content.Server.Database.ServerRoleBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerRoleUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_role_unban_server_role_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_unban_server_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Traits") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_trait_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.HasOne("Content.Server.Database.Player", null) + .WithMany() + .HasForeignKey("PlayersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_player_players_id"); + + b.HasOne("Content.Server.Database.Round", null) + .WithMany() + .HasForeignKey("RoundsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_round_rounds_id"); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Navigation("Players"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Navigation("Admins"); + + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Navigation("BanHits"); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Navigation("AdminLogs"); + + b.Navigation("AdminMessagesCreated"); + + b.Navigation("AdminMessagesDeleted"); + + b.Navigation("AdminMessagesLastEdited"); + + b.Navigation("AdminMessagesReceived"); + + b.Navigation("AdminNotesCreated"); + + b.Navigation("AdminNotesDeleted"); + + b.Navigation("AdminNotesLastEdited"); + + b.Navigation("AdminNotesReceived"); + + b.Navigation("AdminServerBansCreated"); + + b.Navigation("AdminServerBansLastEdited"); + + b.Navigation("AdminServerRoleBansCreated"); + + b.Navigation("AdminServerRoleBansLastEdited"); + + b.Navigation("AdminWatchlistsCreated"); + + b.Navigation("AdminWatchlistsDeleted"); + + b.Navigation("AdminWatchlistsLastEdited"); + + b.Navigation("AdminWatchlistsReceived"); + + b.Navigation("JobWhitelists"); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Navigation("Profiles"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Navigation("Antags"); + + b.Navigation("Jobs"); + + b.Navigation("Loadouts"); + + b.Navigation("Traits"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => + { + b.Navigation("Loadouts"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => + { + b.Navigation("Groups"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Navigation("AdminLogs"); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Navigation("ConnectionLogs"); + + b.Navigation("Rounds"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Navigation("BanHits"); + + b.Navigation("Unban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Navigation("Unban"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.cs b/Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.cs new file mode 100644 index 00000000000..97b5dafd03f --- /dev/null +++ b/Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.cs @@ -0,0 +1,62 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Content.Server.Database.Migrations.Sqlite +{ + /// <inheritdoc /> + public partial class ModernHwid : Migration + { + /// <inheritdoc /> + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn<int>( + name: "hwid_type", + table: "server_role_ban", + type: "INTEGER", + nullable: true, + defaultValue: 0); + + migrationBuilder.AddColumn<int>( + name: "hwid_type", + table: "server_ban", + type: "INTEGER", + nullable: true, + defaultValue: 0); + + migrationBuilder.AddColumn<int>( + name: "last_seen_hwid_type", + table: "player", + type: "INTEGER", + nullable: true, + defaultValue: 0); + + migrationBuilder.AddColumn<int>( + name: "hwid_type", + table: "connection_log", + type: "INTEGER", + nullable: true, + defaultValue: 0); + } + + /// <inheritdoc /> + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "hwid_type", + table: "server_role_ban"); + + migrationBuilder.DropColumn( + name: "hwid_type", + table: "server_ban"); + + migrationBuilder.DropColumn( + name: "last_seen_hwid_type", + table: "player"); + + migrationBuilder.DropColumn( + name: "hwid_type", + table: "connection_log"); + } + } +} diff --git a/Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.Designer.cs new file mode 100644 index 00000000000..bd4e20a464b --- /dev/null +++ b/Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.Designer.cs @@ -0,0 +1,1999 @@ +// <auto-generated /> +using System; +using Content.Server.Database; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Content.Server.Database.Migrations.Sqlite +{ + [DbContext(typeof(SqliteServerDbContext))] + [Migration("20241111193602_ConnectionTrust")] + partial class ConnectionTrust + { + /// <inheritdoc /> + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "8.0.0"); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Property<Guid>("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property<int?>("AdminRankId") + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property<string>("Title") + .HasColumnType("TEXT") + .HasColumnName("title"); + + b.HasKey("UserId") + .HasName("PK_admin"); + + b.HasIndex("AdminRankId") + .HasDatabaseName("IX_admin_admin_rank_id"); + + b.ToTable("admin", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_flag_id"); + + b.Property<Guid>("AdminId") + .HasColumnType("TEXT") + .HasColumnName("admin_id"); + + b.Property<string>("Flag") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flag"); + + b.Property<bool>("Negative") + .HasColumnType("INTEGER") + .HasColumnName("negative"); + + b.HasKey("Id") + .HasName("PK_admin_flag"); + + b.HasIndex("AdminId") + .HasDatabaseName("IX_admin_flag_admin_id"); + + b.HasIndex("Flag", "AdminId") + .IsUnique(); + + b.ToTable("admin_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Property<int>("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property<int>("Id") + .HasColumnType("INTEGER") + .HasColumnName("admin_log_id"); + + b.Property<DateTime>("Date") + .HasColumnType("TEXT") + .HasColumnName("date"); + + b.Property<sbyte>("Impact") + .HasColumnType("INTEGER") + .HasColumnName("impact"); + + b.Property<string>("Json") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("json"); + + b.Property<string>("Message") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property<int>("Type") + .HasColumnType("INTEGER") + .HasColumnName("type"); + + b.HasKey("RoundId", "Id") + .HasName("PK_admin_log"); + + b.HasIndex("Date"); + + b.HasIndex("Type") + .HasDatabaseName("IX_admin_log_type"); + + b.ToTable("admin_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.Property<int>("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property<int>("LogId") + .HasColumnType("INTEGER") + .HasColumnName("log_id"); + + b.Property<Guid>("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.HasKey("RoundId", "LogId", "PlayerUserId") + .HasName("PK_admin_log_player"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_log_player_player_user_id"); + + b.ToTable("admin_log_player", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_messages_id"); + + b.Property<DateTime>("CreatedAt") + .HasColumnType("TEXT") + .HasColumnName("created_at"); + + b.Property<Guid?>("CreatedById") + .HasColumnType("TEXT") + .HasColumnName("created_by_id"); + + b.Property<bool>("Deleted") + .HasColumnType("INTEGER") + .HasColumnName("deleted"); + + b.Property<DateTime?>("DeletedAt") + .HasColumnType("TEXT") + .HasColumnName("deleted_at"); + + b.Property<Guid?>("DeletedById") + .HasColumnType("TEXT") + .HasColumnName("deleted_by_id"); + + b.Property<bool>("Dismissed") + .HasColumnType("INTEGER") + .HasColumnName("dismissed"); + + b.Property<DateTime?>("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property<DateTime?>("LastEditedAt") + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property<Guid?>("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property<string>("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property<Guid?>("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property<TimeSpan>("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property<int?>("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property<bool>("Seen") + .HasColumnType("INTEGER") + .HasColumnName("seen"); + + b.HasKey("Id") + .HasName("PK_admin_messages"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_messages_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_messages_round_id"); + + b.ToTable("admin_messages", null, t => + { + t.HasCheckConstraint("NotDismissedAndSeen", "NOT dismissed OR seen"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_notes_id"); + + b.Property<DateTime>("CreatedAt") + .HasColumnType("TEXT") + .HasColumnName("created_at"); + + b.Property<Guid?>("CreatedById") + .HasColumnType("TEXT") + .HasColumnName("created_by_id"); + + b.Property<bool>("Deleted") + .HasColumnType("INTEGER") + .HasColumnName("deleted"); + + b.Property<DateTime?>("DeletedAt") + .HasColumnType("TEXT") + .HasColumnName("deleted_at"); + + b.Property<Guid?>("DeletedById") + .HasColumnType("TEXT") + .HasColumnName("deleted_by_id"); + + b.Property<DateTime?>("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property<DateTime?>("LastEditedAt") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property<Guid?>("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property<string>("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property<Guid?>("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property<TimeSpan>("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property<int?>("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property<bool>("Secret") + .HasColumnType("INTEGER") + .HasColumnName("secret"); + + b.Property<int>("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_admin_notes"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_notes_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_notes_round_id"); + + b.ToTable("admin_notes", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property<string>("Name") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_admin_rank"); + + b.ToTable("admin_rank", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_flag_id"); + + b.Property<int>("AdminRankId") + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property<string>("Flag") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flag"); + + b.HasKey("Id") + .HasName("PK_admin_rank_flag"); + + b.HasIndex("AdminRankId"); + + b.HasIndex("Flag", "AdminRankId") + .IsUnique(); + + b.ToTable("admin_rank_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_watchlists_id"); + + b.Property<DateTime>("CreatedAt") + .HasColumnType("TEXT") + .HasColumnName("created_at"); + + b.Property<Guid?>("CreatedById") + .HasColumnType("TEXT") + .HasColumnName("created_by_id"); + + b.Property<bool>("Deleted") + .HasColumnType("INTEGER") + .HasColumnName("deleted"); + + b.Property<DateTime?>("DeletedAt") + .HasColumnType("TEXT") + .HasColumnName("deleted_at"); + + b.Property<Guid?>("DeletedById") + .HasColumnType("TEXT") + .HasColumnName("deleted_by_id"); + + b.Property<DateTime?>("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property<DateTime?>("LastEditedAt") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property<Guid?>("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property<string>("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property<Guid?>("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property<TimeSpan>("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property<int?>("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.HasKey("Id") + .HasName("PK_admin_watchlists"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_watchlists_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_watchlists_round_id"); + + b.ToTable("admin_watchlists", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("antag_id"); + + b.Property<string>("AntagName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("antag_name"); + + b.Property<int>("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_antag"); + + b.HasIndex("ProfileId", "AntagName") + .IsUnique(); + + b.ToTable("antag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("assigned_user_id_id"); + + b.Property<Guid>("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property<string>("UserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_assigned_user_id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.HasIndex("UserName") + .IsUnique(); + + b.ToTable("assigned_user_id", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.BanTemplate", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("ban_template_id"); + + b.Property<bool>("AutoDelete") + .HasColumnType("INTEGER") + .HasColumnName("auto_delete"); + + b.Property<int>("ExemptFlags") + .HasColumnType("INTEGER") + .HasColumnName("exempt_flags"); + + b.Property<bool>("Hidden") + .HasColumnType("INTEGER") + .HasColumnName("hidden"); + + b.Property<TimeSpan>("Length") + .HasColumnType("TEXT") + .HasColumnName("length"); + + b.Property<string>("Reason") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("reason"); + + b.Property<int>("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.Property<string>("Title") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("title"); + + b.HasKey("Id") + .HasName("PK_ban_template"); + + b.ToTable("ban_template", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Blacklist", b => + { + b.Property<Guid>("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_blacklist"); + + b.ToTable("blacklist", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("connection_log_id"); + + b.Property<string>("Address") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property<byte?>("Denied") + .HasColumnType("INTEGER") + .HasColumnName("denied"); + + b.Property<int>("ServerId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("server_id"); + + b.Property<DateTime>("Time") + .HasColumnType("TEXT") + .HasColumnName("time"); + + b.Property<float>("Trust") + .HasColumnType("REAL") + .HasColumnName("trust"); + + b.Property<Guid>("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property<string>("UserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_connection_log"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_connection_log_server_id"); + + b.HasIndex("Time"); + + b.HasIndex("UserId"); + + b.ToTable("connection_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("job_id"); + + b.Property<string>("JobName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("job_name"); + + b.Property<int>("Priority") + .HasColumnType("INTEGER") + .HasColumnName("priority"); + + b.Property<int>("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_job"); + + b.HasIndex("ProfileId"); + + b.HasIndex("ProfileId", "JobName") + .IsUnique(); + + b.HasIndex(new[] { "ProfileId" }, "IX_job_one_high_priority") + .IsUnique() + .HasFilter("priority = 3"); + + b.ToTable("job", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.PlayTime", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("play_time_id"); + + b.Property<Guid>("PlayerId") + .HasColumnType("TEXT") + .HasColumnName("player_id"); + + b.Property<TimeSpan>("TimeSpent") + .HasColumnType("TEXT") + .HasColumnName("time_spent"); + + b.Property<string>("Tracker") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("tracker"); + + b.HasKey("Id") + .HasName("PK_play_time"); + + b.HasIndex("PlayerId", "Tracker") + .IsUnique(); + + b.ToTable("play_time", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("player_id"); + + b.Property<DateTime>("FirstSeenTime") + .HasColumnType("TEXT") + .HasColumnName("first_seen_time"); + + b.Property<DateTime?>("LastReadRules") + .HasColumnType("TEXT") + .HasColumnName("last_read_rules"); + + b.Property<string>("LastSeenAddress") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_seen_address"); + + b.Property<DateTime>("LastSeenTime") + .HasColumnType("TEXT") + .HasColumnName("last_seen_time"); + + b.Property<string>("LastSeenUserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_seen_user_name"); + + b.Property<Guid>("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_player"); + + b.HasAlternateKey("UserId") + .HasName("ak_player_user_id"); + + b.HasIndex("LastSeenUserName"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("player", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("preference_id"); + + b.Property<string>("AdminOOCColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("admin_ooc_color"); + + b.Property<int>("SelectedCharacterSlot") + .HasColumnType("INTEGER") + .HasColumnName("selected_character_slot"); + + b.Property<Guid>("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_preference"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("preference", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.Property<int>("Age") + .HasColumnType("INTEGER") + .HasColumnName("age"); + + b.Property<string>("CharacterName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("char_name"); + + b.Property<string>("EyeColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("eye_color"); + + b.Property<string>("FacialHairColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("facial_hair_color"); + + b.Property<string>("FacialHairName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("facial_hair_name"); + + b.Property<string>("FlavorText") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flavor_text"); + + b.Property<string>("Gender") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("gender"); + + b.Property<string>("HairColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("hair_color"); + + b.Property<string>("HairName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("hair_name"); + + b.Property<byte[]>("Markings") + .HasColumnType("jsonb") + .HasColumnName("markings"); + + b.Property<int>("PreferenceId") + .HasColumnType("INTEGER") + .HasColumnName("preference_id"); + + b.Property<int>("PreferenceUnavailable") + .HasColumnType("INTEGER") + .HasColumnName("pref_unavailable"); + + b.Property<string>("Sex") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("sex"); + + b.Property<string>("SkinColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("skin_color"); + + b.Property<int>("Slot") + .HasColumnType("INTEGER") + .HasColumnName("slot"); + + b.Property<int>("SpawnPriority") + .HasColumnType("INTEGER") + .HasColumnName("spawn_priority"); + + b.Property<string>("Species") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("species"); + + b.HasKey("Id") + .HasName("PK_profile"); + + b.HasIndex("PreferenceId") + .HasDatabaseName("IX_profile_preference_id"); + + b.HasIndex("Slot", "PreferenceId") + .IsUnique(); + + b.ToTable("profile", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("profile_loadout_id"); + + b.Property<string>("LoadoutName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("loadout_name"); + + b.Property<int>("ProfileLoadoutGroupId") + .HasColumnType("INTEGER") + .HasColumnName("profile_loadout_group_id"); + + b.HasKey("Id") + .HasName("PK_profile_loadout"); + + b.HasIndex("ProfileLoadoutGroupId"); + + b.ToTable("profile_loadout", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("profile_loadout_group_id"); + + b.Property<string>("GroupName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("group_name"); + + b.Property<int>("ProfileRoleLoadoutId") + .HasColumnType("INTEGER") + .HasColumnName("profile_role_loadout_id"); + + b.HasKey("Id") + .HasName("PK_profile_loadout_group"); + + b.HasIndex("ProfileRoleLoadoutId"); + + b.ToTable("profile_loadout_group", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("profile_role_loadout_id"); + + b.Property<int>("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.Property<string>("RoleName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("role_name"); + + b.HasKey("Id") + .HasName("PK_profile_role_loadout"); + + b.HasIndex("ProfileId"); + + b.ToTable("profile_role_loadout", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => + { + b.Property<Guid>("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property<string>("RoleId") + .HasColumnType("TEXT") + .HasColumnName("role_id"); + + b.HasKey("PlayerUserId", "RoleId") + .HasName("PK_role_whitelists"); + + b.ToTable("role_whitelists", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property<int>("ServerId") + .HasColumnType("INTEGER") + .HasColumnName("server_id"); + + b.Property<DateTime?>("StartDate") + .HasColumnType("TEXT") + .HasColumnName("start_date"); + + b.HasKey("Id") + .HasName("PK_round"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_round_server_id"); + + b.HasIndex("StartDate"); + + b.ToTable("round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_id"); + + b.Property<string>("Name") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_server"); + + b.ToTable("server", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_ban_id"); + + b.Property<string>("Address") + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property<bool>("AutoDelete") + .HasColumnType("INTEGER") + .HasColumnName("auto_delete"); + + b.Property<DateTime>("BanTime") + .HasColumnType("TEXT") + .HasColumnName("ban_time"); + + b.Property<Guid?>("BanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("banning_admin"); + + b.Property<int>("ExemptFlags") + .HasColumnType("INTEGER") + .HasColumnName("exempt_flags"); + + b.Property<DateTime?>("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property<bool>("Hidden") + .HasColumnType("INTEGER") + .HasColumnName("hidden"); + + b.Property<DateTime?>("LastEditedAt") + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property<Guid?>("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property<Guid?>("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property<TimeSpan>("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property<string>("Reason") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("reason"); + + b.Property<int?>("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property<int>("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_ban_round_id"); + + b.ToTable("server_ban", null, t => + { + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanExemption", b => + { + b.Property<Guid>("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property<int>("Flags") + .HasColumnType("INTEGER") + .HasColumnName("flags"); + + b.HasKey("UserId") + .HasName("PK_server_ban_exemption"); + + b.ToTable("server_ban_exemption", null, t => + { + t.HasCheckConstraint("FlagsNotZero", "flags != 0"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_ban_hit_id"); + + b.Property<int>("BanId") + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property<int>("ConnectionId") + .HasColumnType("INTEGER") + .HasColumnName("connection_id"); + + b.HasKey("Id") + .HasName("PK_server_ban_hit"); + + b.HasIndex("BanId") + .HasDatabaseName("IX_server_ban_hit_ban_id"); + + b.HasIndex("ConnectionId") + .HasDatabaseName("IX_server_ban_hit_connection_id"); + + b.ToTable("server_ban_hit", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_role_ban_id"); + + b.Property<string>("Address") + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property<DateTime>("BanTime") + .HasColumnType("TEXT") + .HasColumnName("ban_time"); + + b.Property<Guid?>("BanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("banning_admin"); + + b.Property<DateTime?>("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property<bool>("Hidden") + .HasColumnType("INTEGER") + .HasColumnName("hidden"); + + b.Property<DateTime?>("LastEditedAt") + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property<Guid?>("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property<Guid?>("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property<TimeSpan>("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property<string>("Reason") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("reason"); + + b.Property<string>("RoleId") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("role_id"); + + b.Property<int?>("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property<int>("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_role_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_role_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_role_ban_round_id"); + + b.ToTable("server_role_ban", null, t => + { + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("role_unban_id"); + + b.Property<int>("BanId") + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property<DateTime>("UnbanTime") + .HasColumnType("TEXT") + .HasColumnName("unban_time"); + + b.Property<Guid?>("UnbanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_role_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_role_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("unban_id"); + + b.Property<int>("BanId") + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property<DateTime>("UnbanTime") + .HasColumnType("TEXT") + .HasColumnName("unban_time"); + + b.Property<Guid?>("UnbanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("trait_id"); + + b.Property<int>("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.Property<string>("TraitName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("trait_name"); + + b.HasKey("Id") + .HasName("PK_trait"); + + b.HasIndex("ProfileId", "TraitName") + .IsUnique(); + + b.ToTable("trait", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.UploadedResourceLog", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("uploaded_resource_log_id"); + + b.Property<byte[]>("Data") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("data"); + + b.Property<DateTime>("Date") + .HasColumnType("TEXT") + .HasColumnName("date"); + + b.Property<string>("Path") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("path"); + + b.Property<Guid>("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_uploaded_resource_log"); + + b.ToTable("uploaded_resource_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Whitelist", b => + { + b.Property<Guid>("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_whitelist"); + + b.ToTable("whitelist", (string)null); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.Property<int>("PlayersId") + .HasColumnType("INTEGER") + .HasColumnName("players_id"); + + b.Property<int>("RoundsId") + .HasColumnType("INTEGER") + .HasColumnName("rounds_id"); + + b.HasKey("PlayersId", "RoundsId") + .HasName("PK_player_round"); + + b.HasIndex("RoundsId") + .HasDatabaseName("IX_player_round_rounds_id"); + + b.ToTable("player_round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.HasOne("Content.Server.Database.AdminRank", "AdminRank") + .WithMany("Admins") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_admin_rank_admin_rank_id"); + + b.Navigation("AdminRank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.HasOne("Content.Server.Database.Admin", "Admin") + .WithMany("Flags") + .HasForeignKey("AdminId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_flag_admin_admin_id"); + + b.Navigation("Admin"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany("AdminLogs") + .HasForeignKey("RoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_round_round_id"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminLogs") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_player_player_user_id"); + + b.HasOne("Content.Server.Database.AdminLog", "Log") + .WithMany("Players") + .HasForeignKey("RoundId", "LogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_admin_log_round_id_log_id"); + + b.Navigation("Log"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminMessagesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminMessagesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminMessagesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminMessagesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_messages_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_messages_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminNotesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminNotesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminNotesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminNotesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_notes_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_notes_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.HasOne("Content.Server.Database.AdminRank", "Rank") + .WithMany("Flags") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_rank_flag_admin_rank_admin_rank_id"); + + b.Navigation("Rank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminWatchlistsCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminWatchlistsDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminWatchlistsLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminWatchlistsReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_watchlists_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_watchlists_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Antags") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_antag_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("ConnectionLogs") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.SetNull) + .IsRequired() + .HasConstraintName("FK_connection_log_server_server_id"); + + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property<int>("ConnectionLogId") + .HasColumnType("INTEGER") + .HasColumnName("connection_log_id"); + + b1.Property<byte[]>("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b1.Property<int>("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ConnectionLogId"); + + b1.ToTable("connection_log"); + + b1.WithOwner() + .HasForeignKey("ConnectionLogId") + .HasConstraintName("FK_connection_log_connection_log_connection_log_id"); + }); + + b.Navigation("HWId"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Jobs") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_job_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.OwnsOne("Content.Server.Database.TypedHwid", "LastSeenHWId", b1 => + { + b1.Property<int>("PlayerId") + .HasColumnType("INTEGER") + .HasColumnName("player_id"); + + b1.Property<byte[]>("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("last_seen_hwid"); + + b1.Property<int>("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("last_seen_hwid_type"); + + b1.HasKey("PlayerId"); + + b1.ToTable("player"); + + b1.WithOwner() + .HasForeignKey("PlayerId") + .HasConstraintName("FK_player_player_player_id"); + }); + + b.Navigation("LastSeenHWId"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.HasOne("Content.Server.Database.Preference", "Preference") + .WithMany("Profiles") + .HasForeignKey("PreferenceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_preference_preference_id"); + + b.Navigation("Preference"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => + { + b.HasOne("Content.Server.Database.ProfileLoadoutGroup", "ProfileLoadoutGroup") + .WithMany("Loadouts") + .HasForeignKey("ProfileLoadoutGroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_loadout_profile_loadout_group_profile_loadout_group_id"); + + b.Navigation("ProfileLoadoutGroup"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => + { + b.HasOne("Content.Server.Database.ProfileRoleLoadout", "ProfileRoleLoadout") + .WithMany("Groups") + .HasForeignKey("ProfileRoleLoadoutId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_loadout_group_profile_role_loadout_profile_role_loadout_id"); + + b.Navigation("ProfileRoleLoadout"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Loadouts") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_role_loadout_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("JobWhitelists") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_role_whitelists_player_player_user_id"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("Rounds") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_round_server_server_id"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_ban_round_round_id"); + + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property<int>("ServerBanId") + .HasColumnType("INTEGER") + .HasColumnName("server_ban_id"); + + b1.Property<byte[]>("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b1.Property<int>("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerBanId"); + + b1.ToTable("server_ban"); + + b1.WithOwner() + .HasForeignKey("ServerBanId") + .HasConstraintName("FK_server_ban_server_ban_server_ban_id"); + }); + + b.Navigation("CreatedBy"); + + b.Navigation("HWId"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithMany("BanHits") + .HasForeignKey("BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); + + b.HasOne("Content.Server.Database.ConnectionLog", "Connection") + .WithMany("BanHits") + .HasForeignKey("ConnectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); + + b.Navigation("Ban"); + + b.Navigation("Connection"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerRoleBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerRoleBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_role_ban_round_round_id"); + + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property<int>("ServerRoleBanId") + .HasColumnType("INTEGER") + .HasColumnName("server_role_ban_id"); + + b1.Property<byte[]>("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b1.Property<int>("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerRoleBanId"); + + b1.ToTable("server_role_ban"); + + b1.WithOwner() + .HasForeignKey("ServerRoleBanId") + .HasConstraintName("FK_server_role_ban_server_role_ban_server_role_ban_id"); + }); + + b.Navigation("CreatedBy"); + + b.Navigation("HWId"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.HasOne("Content.Server.Database.ServerRoleBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerRoleUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_role_unban_server_role_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_unban_server_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Traits") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_trait_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.HasOne("Content.Server.Database.Player", null) + .WithMany() + .HasForeignKey("PlayersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_player_players_id"); + + b.HasOne("Content.Server.Database.Round", null) + .WithMany() + .HasForeignKey("RoundsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_round_rounds_id"); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Navigation("Players"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Navigation("Admins"); + + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Navigation("BanHits"); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Navigation("AdminLogs"); + + b.Navigation("AdminMessagesCreated"); + + b.Navigation("AdminMessagesDeleted"); + + b.Navigation("AdminMessagesLastEdited"); + + b.Navigation("AdminMessagesReceived"); + + b.Navigation("AdminNotesCreated"); + + b.Navigation("AdminNotesDeleted"); + + b.Navigation("AdminNotesLastEdited"); + + b.Navigation("AdminNotesReceived"); + + b.Navigation("AdminServerBansCreated"); + + b.Navigation("AdminServerBansLastEdited"); + + b.Navigation("AdminServerRoleBansCreated"); + + b.Navigation("AdminServerRoleBansLastEdited"); + + b.Navigation("AdminWatchlistsCreated"); + + b.Navigation("AdminWatchlistsDeleted"); + + b.Navigation("AdminWatchlistsLastEdited"); + + b.Navigation("AdminWatchlistsReceived"); + + b.Navigation("JobWhitelists"); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Navigation("Profiles"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Navigation("Antags"); + + b.Navigation("Jobs"); + + b.Navigation("Loadouts"); + + b.Navigation("Traits"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => + { + b.Navigation("Loadouts"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => + { + b.Navigation("Groups"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Navigation("AdminLogs"); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Navigation("ConnectionLogs"); + + b.Navigation("Rounds"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Navigation("BanHits"); + + b.Navigation("Unban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Navigation("Unban"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.cs b/Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.cs new file mode 100644 index 00000000000..3a7fd784e16 --- /dev/null +++ b/Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.cs @@ -0,0 +1,29 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Content.Server.Database.Migrations.Sqlite +{ + /// <inheritdoc /> + public partial class ConnectionTrust : Migration + { + /// <inheritdoc /> + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn<float>( + name: "trust", + table: "connection_log", + type: "REAL", + nullable: false, + defaultValue: 0f); + } + + /// <inheritdoc /> + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "trust", + table: "connection_log"); + } + } +} diff --git a/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs b/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs index 02d44163027..c63127874cc 100644 --- a/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs +++ b/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs @@ -483,19 +483,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("assigned_user_id", (string)null); }); - modelBuilder.Entity("Content.Server.Database.Blacklist", - b => - { - b.Property<Guid>("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.HasKey("UserId") - .HasName("PK_blacklist"); - - b.ToTable("blacklist", (string) null); - }); modelBuilder.Entity("Content.Server.Database.BanTemplate", b => { b.Property<int>("Id") @@ -539,6 +526,19 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("ban_template", (string)null); }); + modelBuilder.Entity("Content.Server.Database.Blacklist", b => + { + b.Property<Guid>("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_blacklist"); + + b.ToTable("blacklist", (string)null); + }); + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => { b.Property<int>("Id") @@ -555,10 +555,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("INTEGER") .HasColumnName("denied"); - b.Property<byte[]>("HWId") - .HasColumnType("BLOB") - .HasColumnName("hwid"); - b.Property<int>("ServerId") .ValueGeneratedOnAdd() .HasColumnType("INTEGER") @@ -569,6 +565,10 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("TEXT") .HasColumnName("time"); + b.Property<float>("Trust") + .HasColumnType("REAL") + .HasColumnName("trust"); + b.Property<Guid>("UserId") .HasColumnType("TEXT") .HasColumnName("user_id"); @@ -675,10 +675,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("TEXT") .HasColumnName("last_seen_address"); - b.Property<byte[]>("LastSeenHWId") - .HasColumnType("BLOB") - .HasColumnName("last_seen_hwid"); - b.Property<DateTime>("LastSeenTime") .HasColumnType("TEXT") .HasColumnName("last_seen_time"); @@ -996,10 +992,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("TEXT") .HasColumnName("expiration_time"); - b.Property<byte[]>("HWId") - .HasColumnType("BLOB") - .HasColumnName("hwid"); - b.Property<bool>("Hidden") .HasColumnType("INTEGER") .HasColumnName("hidden"); @@ -1124,10 +1116,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("TEXT") .HasColumnName("expiration_time"); - b.Property<byte[]>("HWId") - .HasColumnType("BLOB") - .HasColumnName("hwid"); - b.Property<bool>("Hidden") .HasColumnType("INTEGER") .HasColumnName("hidden"); @@ -1559,6 +1547,34 @@ protected override void BuildModel(ModelBuilder modelBuilder) .IsRequired() .HasConstraintName("FK_connection_log_server_server_id"); + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property<int>("ConnectionLogId") + .HasColumnType("INTEGER") + .HasColumnName("connection_log_id"); + + b1.Property<byte[]>("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b1.Property<int>("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ConnectionLogId"); + + b1.ToTable("connection_log"); + + b1.WithOwner() + .HasForeignKey("ConnectionLogId") + .HasConstraintName("FK_connection_log_connection_log_connection_log_id"); + }); + + b.Navigation("HWId"); + b.Navigation("Server"); }); @@ -1574,6 +1590,37 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("Profile"); }); + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.OwnsOne("Content.Server.Database.TypedHwid", "LastSeenHWId", b1 => + { + b1.Property<int>("PlayerId") + .HasColumnType("INTEGER") + .HasColumnName("player_id"); + + b1.Property<byte[]>("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("last_seen_hwid"); + + b1.Property<int>("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("last_seen_hwid_type"); + + b1.HasKey("PlayerId"); + + b1.ToTable("player"); + + b1.WithOwner() + .HasForeignKey("PlayerId") + .HasConstraintName("FK_player_player_player_id"); + }); + + b.Navigation("LastSeenHWId"); + }); + modelBuilder.Entity("Content.Server.Database.Profile", b => { b.HasOne("Content.Server.Database.Preference", "Preference") @@ -1668,8 +1715,36 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasForeignKey("RoundId") .HasConstraintName("FK_server_ban_round_round_id"); + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property<int>("ServerBanId") + .HasColumnType("INTEGER") + .HasColumnName("server_ban_id"); + + b1.Property<byte[]>("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b1.Property<int>("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerBanId"); + + b1.ToTable("server_ban"); + + b1.WithOwner() + .HasForeignKey("ServerBanId") + .HasConstraintName("FK_server_ban_server_ban_server_ban_id"); + }); + b.Navigation("CreatedBy"); + b.Navigation("HWId"); + b.Navigation("LastEditedBy"); b.Navigation("Round"); @@ -1717,8 +1792,36 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasForeignKey("RoundId") .HasConstraintName("FK_server_role_ban_round_round_id"); + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property<int>("ServerRoleBanId") + .HasColumnType("INTEGER") + .HasColumnName("server_role_ban_id"); + + b1.Property<byte[]>("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b1.Property<int>("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerRoleBanId"); + + b1.ToTable("server_role_ban"); + + b1.WithOwner() + .HasForeignKey("ServerRoleBanId") + .HasConstraintName("FK_server_role_ban_server_role_ban_server_role_ban_id"); + }); + b.Navigation("CreatedBy"); + b.Navigation("HWId"); + b.Navigation("LastEditedBy"); b.Navigation("Round"); diff --git a/Content.Server.Database/Model.cs b/Content.Server.Database/Model.cs index 00b3cfea032..9190475b153 100644 --- a/Content.Server.Database/Model.cs +++ b/Content.Server.Database/Model.cs @@ -1,7 +1,9 @@ using System; using System.Collections.Generic; +using System.Collections.Immutable; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; +using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Net; using System.Text.Json; @@ -327,6 +329,47 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) .HasForeignKey(w => w.PlayerUserId) .HasPrincipalKey(p => p.UserId) .OnDelete(DeleteBehavior.Cascade); + + // Changes for modern HWID integration + modelBuilder.Entity<Player>() + .OwnsOne(p => p.LastSeenHWId) + .Property(p => p.Hwid) + .HasColumnName("last_seen_hwid"); + + modelBuilder.Entity<Player>() + .OwnsOne(p => p.LastSeenHWId) + .Property(p => p.Type) + .HasDefaultValue(HwidType.Legacy); + + modelBuilder.Entity<ServerBan>() + .OwnsOne(p => p.HWId) + .Property(p => p.Hwid) + .HasColumnName("hwid"); + + modelBuilder.Entity<ServerBan>() + .OwnsOne(p => p.HWId) + .Property(p => p.Type) + .HasDefaultValue(HwidType.Legacy); + + modelBuilder.Entity<ServerRoleBan>() + .OwnsOne(p => p.HWId) + .Property(p => p.Hwid) + .HasColumnName("hwid"); + + modelBuilder.Entity<ServerRoleBan>() + .OwnsOne(p => p.HWId) + .Property(p => p.Type) + .HasDefaultValue(HwidType.Legacy); + + modelBuilder.Entity<ConnectionLog>() + .OwnsOne(p => p.HWId) + .Property(p => p.Hwid) + .HasColumnName("hwid"); + + modelBuilder.Entity<ConnectionLog>() + .OwnsOne(p => p.HWId) + .Property(p => p.Type) + .HasDefaultValue(HwidType.Legacy); } public virtual IQueryable<AdminLog> SearchLogs(IQueryable<AdminLog> query, string searchText) @@ -519,7 +562,7 @@ public class Player public string LastSeenUserName { get; set; } = null!; public DateTime LastSeenTime { get; set; } public IPAddress LastSeenAddress { get; set; } = null!; - public byte[]? LastSeenHWId { get; set; } + public TypedHwid? LastSeenHWId { get; set; } // Data that changes with each round public List<Round> Rounds { get; set; } = null!; @@ -668,7 +711,7 @@ public interface IBanCommon<TUnban> where TUnban : IUnbanCommon int Id { get; set; } Guid? PlayerUserId { get; set; } NpgsqlInet? Address { get; set; } - byte[]? HWId { get; set; } + TypedHwid? HWId { get; set; } DateTime BanTime { get; set; } DateTime? ExpirationTime { get; set; } string Reason { get; set; } @@ -753,7 +796,7 @@ public class ServerBan : IBanCommon<ServerUnban> /// <summary> /// Hardware ID of the banned player. /// </summary> - public byte[]? HWId { get; set; } + public TypedHwid? HWId { get; set; } /// <summary> /// The time when the ban was applied by an administrator. @@ -891,7 +934,7 @@ public class ConnectionLog public DateTime Time { get; set; } public IPAddress Address { get; set; } = null!; - public byte[]? HWId { get; set; } + public TypedHwid? HWId { get; set; } public ConnectionDenyReason? Denied { get; set; } @@ -908,6 +951,8 @@ public class ConnectionLog public List<ServerBanHit> BanHits { get; set; } = null!; public Server Server { get; set; } = null!; + + public float Trust { get; set; } } public enum ConnectionDenyReason : byte @@ -945,7 +990,7 @@ public sealed class ServerRoleBan : IBanCommon<ServerRoleUnban> public Guid? PlayerUserId { get; set; } [Required] public TimeSpan PlaytimeAtNote { get; set; } public NpgsqlInet? Address { get; set; } - public byte[]? HWId { get; set; } + public TypedHwid? HWId { get; set; } public DateTime BanTime { get; set; } @@ -1206,4 +1251,37 @@ public sealed class BanTemplate /// <seealso cref="ServerBan.Hidden"/> public bool Hidden { get; set; } } + + /// <summary> + /// A hardware ID value together with its <see cref="HwidType"/>. + /// </summary> + /// <seealso cref="ImmutableTypedHwid"/> + [Owned] + public sealed class TypedHwid + { + public byte[] Hwid { get; set; } = default!; + public HwidType Type { get; set; } + + [return: NotNullIfNotNull(nameof(immutable))] + public static implicit operator TypedHwid?(ImmutableTypedHwid? immutable) + { + if (immutable == null) + return null; + + return new TypedHwid + { + Hwid = immutable.Hwid.ToArray(), + Type = immutable.Type, + }; + } + + [return: NotNullIfNotNull(nameof(hwid))] + public static implicit operator ImmutableTypedHwid?(TypedHwid? hwid) + { + if (hwid == null) + return null; + + return new ImmutableTypedHwid(hwid.Hwid.ToImmutableArray(), hwid.Type); + } + } } diff --git a/Content.Server/Administration/BanList/BanListEui.cs b/Content.Server/Administration/BanList/BanListEui.cs index 8ddc7459d7b..2ca126bf164 100644 --- a/Content.Server/Administration/BanList/BanListEui.cs +++ b/Content.Server/Administration/BanList/BanListEui.cs @@ -54,7 +54,7 @@ private void OnPermsChanged(AdminPermsChangedEventArgs args) private async Task LoadBans(NetUserId userId) { - foreach (var ban in await _db.GetServerBansAsync(null, userId, null)) + foreach (var ban in await _db.GetServerBansAsync(null, userId, null, null)) { SharedServerUnban? unban = null; if (ban.Unban is { } unbanDef) @@ -74,7 +74,7 @@ private async Task LoadBans(NetUserId userId) ? (address.address.ToString(), address.cidrMask) : null; - hwid = ban.HWId == null ? null : Convert.ToBase64String(ban.HWId.Value.AsSpan()); + hwid = ban.HWId?.ToString(); } Bans.Add(new SharedServerBan( @@ -95,7 +95,7 @@ private async Task LoadBans(NetUserId userId) private async Task LoadRoleBans(NetUserId userId) { - foreach (var ban in await _db.GetServerRoleBansAsync(null, userId, null)) + foreach (var ban in await _db.GetServerRoleBansAsync(null, userId, null, null)) { SharedServerUnban? unban = null; if (ban.Unban is { } unbanDef) @@ -115,7 +115,7 @@ private async Task LoadRoleBans(NetUserId userId) ? (address.address.ToString(), address.cidrMask) : null; - hwid = ban.HWId == null ? null : Convert.ToBase64String(ban.HWId.Value.AsSpan()); + hwid = ban.HWId?.ToString(); } RoleBans.Add(new SharedServerRoleBan( ban.Id, diff --git a/Content.Server/Administration/BanPanelEui.cs b/Content.Server/Administration/BanPanelEui.cs index e746e9c725f..3eedad3ed50 100644 --- a/Content.Server/Administration/BanPanelEui.cs +++ b/Content.Server/Administration/BanPanelEui.cs @@ -1,4 +1,3 @@ -using System.Collections.Immutable; using System.Net; using System.Net.Sockets; using Content.Server.Administration.Managers; @@ -8,7 +7,6 @@ using Content.Shared.Administration; using Content.Shared.Database; using Content.Shared.Eui; -using Robust.Server.Player; using Robust.Shared.Network; namespace Content.Server.Administration; @@ -27,7 +25,7 @@ public sealed class BanPanelEui : BaseEui private NetUserId? PlayerId { get; set; } private string PlayerName { get; set; } = string.Empty; private IPAddress? LastAddress { get; set; } - private ImmutableArray<byte>? LastHwid { get; set; } + private ImmutableTypedHwid? LastHwid { get; set; } private const int Ipv4_CIDR = 32; private const int Ipv6_CIDR = 64; @@ -51,7 +49,7 @@ public override void HandleMessage(EuiMessageBase msg) switch (msg) { case BanPanelEuiStateMsg.CreateBanRequest r: - BanPlayer(r.Player, r.IpAddress, r.UseLastIp, r.Hwid?.ToImmutableArray(), r.UseLastHwid, r.Minutes, r.Severity, r.Reason, r.Roles, r.Erase); + BanPlayer(r.Player, r.IpAddress, r.UseLastIp, r.Hwid, r.UseLastHwid, r.Minutes, r.Severity, r.Reason, r.Roles, r.Erase); break; case BanPanelEuiStateMsg.GetPlayerInfoRequest r: ChangePlayer(r.PlayerUsername); @@ -59,7 +57,7 @@ public override void HandleMessage(EuiMessageBase msg) } } - private async void BanPlayer(string? target, string? ipAddressString, bool useLastIp, ImmutableArray<byte>? hwid, bool useLastHwid, uint minutes, NoteSeverity severity, string reason, IReadOnlyCollection<string>? roles, bool erase) + private async void BanPlayer(string? target, string? ipAddressString, bool useLastIp, ImmutableTypedHwid? hwid, bool useLastHwid, uint minutes, NoteSeverity severity, string reason, IReadOnlyCollection<string>? roles, bool erase) { if (!_admins.HasAdminFlag(Player, AdminFlags.Ban)) { @@ -155,7 +153,7 @@ public async void ChangePlayer(string playerNameOrId) ChangePlayer(located?.UserId, located?.Username ?? string.Empty, located?.LastAddress, located?.LastHWId); } - public void ChangePlayer(NetUserId? playerId, string playerName, IPAddress? lastAddress, ImmutableArray<byte>? lastHwid) + public void ChangePlayer(NetUserId? playerId, string playerName, IPAddress? lastAddress, ImmutableTypedHwid? lastHwid) { PlayerId = playerId; PlayerName = playerName; diff --git a/Content.Server/Administration/Commands/BanListCommand.cs b/Content.Server/Administration/Commands/BanListCommand.cs index a5bc97dce3e..2f7093ae1d8 100644 --- a/Content.Server/Administration/Commands/BanListCommand.cs +++ b/Content.Server/Administration/Commands/BanListCommand.cs @@ -38,7 +38,7 @@ public override async void Execute(IConsoleShell shell, string argStr, string[] if (shell.Player is not { } player) { - var bans = await _dbManager.GetServerBansAsync(data.LastAddress, data.UserId, data.LastHWId, false); + var bans = await _dbManager.GetServerBansAsync(data.LastAddress, data.UserId, data.LastLegacyHWId, data.LastModernHWIds, false); if (bans.Count == 0) { diff --git a/Content.Server/Administration/Commands/RoleBanListCommand.cs b/Content.Server/Administration/Commands/RoleBanListCommand.cs index 30bb3073add..8244ded3b20 100644 --- a/Content.Server/Administration/Commands/RoleBanListCommand.cs +++ b/Content.Server/Administration/Commands/RoleBanListCommand.cs @@ -48,7 +48,7 @@ public async void Execute(IConsoleShell shell, string argStr, string[] args) if (shell.Player is not { } player) { - var bans = await _dbManager.GetServerRoleBansAsync(data.LastAddress, data.UserId, data.LastHWId, includeUnbanned); + var bans = await _dbManager.GetServerRoleBansAsync(data.LastAddress, data.UserId, data.LastLegacyHWId, data.LastModernHWIds, includeUnbanned); if (bans.Count == 0) { diff --git a/Content.Server/Administration/Managers/BanManager.cs b/Content.Server/Administration/Managers/BanManager.cs index 1cdfb822242..2e21710e51d 100644 --- a/Content.Server/Administration/Managers/BanManager.cs +++ b/Content.Server/Administration/Managers/BanManager.cs @@ -65,7 +65,8 @@ private async Task CachePlayerData(ICommonSession player, CancellationToken canc var netChannel = player.Channel; ImmutableArray<byte>? hwId = netChannel.UserData.HWId.Length == 0 ? null : netChannel.UserData.HWId; - var roleBans = await _db.GetServerRoleBansAsync(netChannel.RemoteEndPoint.Address, player.UserId, hwId, false); + var modernHwids = netChannel.UserData.ModernHWIds; + var roleBans = await _db.GetServerRoleBansAsync(netChannel.RemoteEndPoint.Address, player.UserId, hwId, modernHwids, false); var userRoleBans = new List<ServerRoleBanDef>(); foreach (var ban in roleBans) @@ -132,7 +133,7 @@ public void Restart() } #region Server Bans - public async void CreateServerBan(NetUserId? target, string? targetUsername, NetUserId? banningAdmin, (IPAddress, int)? addressRange, ImmutableArray<byte>? hwid, uint? minutes, NoteSeverity severity, string reason) + public async void CreateServerBan(NetUserId? target, string? targetUsername, NetUserId? banningAdmin, (IPAddress, int)? addressRange, ImmutableTypedHwid? hwid, uint? minutes, NoteSeverity severity, string reason) { DateTimeOffset? expires = null; if (minutes > 0) @@ -166,9 +167,7 @@ public async void CreateServerBan(NetUserId? target, string? targetUsername, Net var addressRangeString = addressRange != null ? $"{addressRange.Value.Item1}/{addressRange.Value.Item2}" : "null"; - var hwidString = hwid != null - ? string.Concat(hwid.Value.Select(x => x.ToString("x2"))) - : "null"; + var hwidString = hwid?.ToString() ?? "null"; var expiresString = expires == null ? Loc.GetString("server-ban-string-never") : $"{expires}"; var key = _cfg.GetCVar(CCVars.AdminShowPIIOnBan) ? "server-ban-string" : "server-ban-string-no-pii"; @@ -208,6 +207,7 @@ private bool BanMatchesPlayer(ICommonSession player, ServerBanDef ban) UserId = player.UserId, Address = player.Channel.RemoteEndPoint.Address, HWId = player.Channel.UserData.HWId, + ModernHWIds = player.Channel.UserData.ModernHWIds, // It's possible for the player to not have cached data loading yet due to coincidental timing. // If this is the case, we assume they have all flags to avoid false-positives. ExemptFlags = _cachedBanExemptions.GetValueOrDefault(player, ServerBanExemptFlags.All), @@ -228,7 +228,7 @@ private void KickForBanDef(ICommonSession player, ServerBanDef def) #region Job Bans // If you are trying to remove timeOfBan, please don't. It's there because the note system groups role bans by time, reason and banning admin. // Removing it will clutter the note list. Please also make sure that department bans are applied to roles with the same DateTimeOffset. - public async void CreateRoleBan(NetUserId? target, string? targetUsername, NetUserId? banningAdmin, (IPAddress, int)? addressRange, ImmutableArray<byte>? hwid, string role, uint? minutes, NoteSeverity severity, string reason, DateTimeOffset timeOfBan) + public async void CreateRoleBan(NetUserId? target, string? targetUsername, NetUserId? banningAdmin, (IPAddress, int)? addressRange, ImmutableTypedHwid? hwid, string role, uint? minutes, NoteSeverity severity, string reason, DateTimeOffset timeOfBan) { if (!_prototypeManager.TryIndex(role, out JobPrototype? _)) { diff --git a/Content.Server/Administration/Managers/IBanManager.cs b/Content.Server/Administration/Managers/IBanManager.cs index c11e310a825..fc192cc3066 100644 --- a/Content.Server/Administration/Managers/IBanManager.cs +++ b/Content.Server/Administration/Managers/IBanManager.cs @@ -24,7 +24,7 @@ public interface IBanManager /// <param name="minutes">Number of minutes to ban for. 0 and null mean permanent</param> /// <param name="severity">Severity of the resulting ban note</param> /// <param name="reason">Reason for the ban</param> - public void CreateServerBan(NetUserId? target, string? targetUsername, NetUserId? banningAdmin, (IPAddress, int)? addressRange, ImmutableArray<byte>? hwid, uint? minutes, NoteSeverity severity, string reason); + public void CreateServerBan(NetUserId? target, string? targetUsername, NetUserId? banningAdmin, (IPAddress, int)? addressRange, ImmutableTypedHwid? hwid, uint? minutes, NoteSeverity severity, string reason); public HashSet<string>? GetRoleBans(NetUserId playerUserId); public HashSet<ProtoId<JobPrototype>>? GetJobBans(NetUserId playerUserId); @@ -37,7 +37,7 @@ public interface IBanManager /// <param name="reason">Reason for the ban</param> /// <param name="minutes">Number of minutes to ban for. 0 and null mean permanent</param> /// <param name="timeOfBan">Time when the ban was applied, used for grouping role bans</param> - public void CreateRoleBan(NetUserId? target, string? targetUsername, NetUserId? banningAdmin, (IPAddress, int)? addressRange, ImmutableArray<byte>? hwid, string role, uint? minutes, NoteSeverity severity, string reason, DateTimeOffset timeOfBan); + public void CreateRoleBan(NetUserId? target, string? targetUsername, NetUserId? banningAdmin, (IPAddress, int)? addressRange, ImmutableTypedHwid? hwid, string role, uint? minutes, NoteSeverity severity, string reason, DateTimeOffset timeOfBan); /// <summary> /// Pardons a role ban for the specified target, username or GUID diff --git a/Content.Server/Administration/PlayerLocator.cs b/Content.Server/Administration/PlayerLocator.cs index 64a85f19ad0..25cc7714686 100644 --- a/Content.Server/Administration/PlayerLocator.cs +++ b/Content.Server/Administration/PlayerLocator.cs @@ -5,16 +5,42 @@ using System.Net.Http.Json; using System.Threading; using System.Threading.Tasks; +using Content.Server.Connection; using Content.Server.Database; +using Content.Shared.Database; using JetBrains.Annotations; using Robust.Server.Player; using Robust.Shared; using Robust.Shared.Configuration; using Robust.Shared.Network; +using Robust.Shared.Player; namespace Content.Server.Administration { - public sealed record LocatedPlayerData(NetUserId UserId, IPAddress? LastAddress, ImmutableArray<byte>? LastHWId, string Username); + /// <summary> + /// Contains data resolved via <see cref="IPlayerLocator"/>. + /// </summary> + /// <param name="UserId">The ID of the located user.</param> + /// <param name="LastAddress">The last known IP address that the user connected with.</param> + /// <param name="LastHWId"> + /// The last known HWID that the user connected with. + /// This should be used for placing new records involving HWIDs, such as bans. + /// For looking up data based on HWID, use combined <see cref="LastLegacyHWId"/> and <see cref="LastModernHWIds"/>. + /// </param> + /// <param name="Username">The last known username for the user connected with.</param> + /// <param name="LastLegacyHWId"> + /// The last known legacy HWID value this user connected with. Only use for old lookups! + /// </param> + /// <param name="LastModernHWIds"> + /// The set of last known modern HWIDs the user connected with. + /// </param> + public sealed record LocatedPlayerData( + NetUserId UserId, + IPAddress? LastAddress, + ImmutableTypedHwid? LastHWId, + string Username, + ImmutableArray<byte>? LastLegacyHWId, + ImmutableArray<ImmutableArray<byte>> LastModernHWIds); /// <summary> /// Utilities for finding user IDs that extend to more than the server database. @@ -67,63 +93,42 @@ public PlayerLocator() { // Check people currently on the server, the easiest case. if (_playerManager.TryGetSessionByUsername(playerName, out var session)) - { - var userId = session.UserId; - var address = session.Channel.RemoteEndPoint.Address; - var hwId = session.Channel.UserData.HWId; - return new LocatedPlayerData(userId, address, hwId, session.Name); - } + return ReturnForSession(session); // Check database for past players. var record = await _db.GetPlayerRecordByUserName(playerName, cancel); if (record != null) - return new LocatedPlayerData(record.UserId, record.LastSeenAddress, record.HWId, record.LastSeenUserName); + return ReturnForPlayerRecord(record); // If all else fails, ask the auth server. var authServer = _configurationManager.GetCVar(CVars.AuthServer); var requestUri = $"{authServer}api/query/name?name={WebUtility.UrlEncode(playerName)}"; using var resp = await _httpClient.GetAsync(requestUri, cancel); - if (resp.StatusCode == HttpStatusCode.NotFound) - return null; - - if (!resp.IsSuccessStatusCode) - { - _sawmill.Error("Auth server returned bad response {StatusCode}!", resp.StatusCode); - return null; - } - - var responseData = await resp.Content.ReadFromJsonAsync<UserDataResponse>(cancellationToken: cancel); - - if (responseData == null) - { - _sawmill.Error("Auth server returned null response!"); - return null; - } - - return new LocatedPlayerData(new NetUserId(responseData.UserId), null, null, responseData.UserName); + return await HandleAuthServerResponse(resp, cancel); } public async Task<LocatedPlayerData?> LookupIdAsync(NetUserId userId, CancellationToken cancel = default) { // Check people currently on the server, the easiest case. if (_playerManager.TryGetSessionById(userId, out var session)) - { - var address = session.Channel.RemoteEndPoint.Address; - var hwId = session.Channel.UserData.HWId; - return new LocatedPlayerData(userId, address, hwId, session.Name); - } + return ReturnForSession(session); // Check database for past players. var record = await _db.GetPlayerRecordByUserId(userId, cancel); if (record != null) - return new LocatedPlayerData(record.UserId, record.LastSeenAddress, record.HWId, record.LastSeenUserName); + return ReturnForPlayerRecord(record); // If all else fails, ask the auth server. var authServer = _configurationManager.GetCVar(CVars.AuthServer); var requestUri = $"{authServer}api/query/userid?userid={WebUtility.UrlEncode(userId.UserId.ToString())}"; using var resp = await _httpClient.GetAsync(requestUri, cancel); + return await HandleAuthServerResponse(resp, cancel); + } + + private async Task<LocatedPlayerData?> HandleAuthServerResponse(HttpResponseMessage resp, CancellationToken cancel) + { if (resp.StatusCode == HttpStatusCode.NotFound) return null; @@ -134,14 +139,40 @@ public PlayerLocator() } var responseData = await resp.Content.ReadFromJsonAsync<UserDataResponse>(cancellationToken: cancel); - if (responseData == null) { _sawmill.Error("Auth server returned null response!"); return null; } - return new LocatedPlayerData(new NetUserId(responseData.UserId), null, null, responseData.UserName); + return new LocatedPlayerData(new NetUserId(responseData.UserId), null, null, responseData.UserName, null, []); + } + + private static LocatedPlayerData ReturnForSession(ICommonSession session) + { + var userId = session.UserId; + var address = session.Channel.RemoteEndPoint.Address; + var hwId = session.Channel.UserData.GetModernHwid(); + return new LocatedPlayerData( + userId, + address, + hwId, + session.Name, + session.Channel.UserData.HWId, + session.Channel.UserData.ModernHWIds); + } + + private static LocatedPlayerData ReturnForPlayerRecord(PlayerRecord record) + { + var hwid = record.HWId; + + return new LocatedPlayerData( + record.UserId, + record.LastSeenAddress, + hwid, + record.LastSeenUserName, + hwid is { Type: HwidType.Legacy } ? hwid.Hwid : null, + hwid is { Type: HwidType.Modern } ? [hwid.Hwid] : []); } public async Task<LocatedPlayerData?> LookupIdByNameOrIdAsync(string playerName, CancellationToken cancel = default) diff --git a/Content.Server/Administration/PlayerPanelEui.cs b/Content.Server/Administration/PlayerPanelEui.cs index 4c0df806012..6c304888866 100644 --- a/Content.Server/Administration/PlayerPanelEui.cs +++ b/Content.Server/Administration/PlayerPanelEui.cs @@ -173,11 +173,11 @@ public async void SetPlayerState() { _whitelisted = await _db.GetWhitelistStatusAsync(_targetPlayer.UserId); // This won't get associated ip or hwid bans but they were not placed on this account anyways - _bans = (await _db.GetServerBansAsync(null, _targetPlayer.UserId, null)).Count; + _bans = (await _db.GetServerBansAsync(null, _targetPlayer.UserId, null, null)).Count; // Unfortunately role bans for departments and stuff are issued individually. This means that a single role ban can have many individual role bans internally // The only way to distinguish whether a role ban is the same is to compare the ban time. // This is horrible and I would love to just erase the database and start from scratch instead but that's what I can do for now. - _roleBans = (await _db.GetServerRoleBansAsync(null, _targetPlayer.UserId, null)).DistinctBy(rb => rb.BanTime).Count(); + _roleBans = (await _db.GetServerRoleBansAsync(null, _targetPlayer.UserId, null, null)).DistinctBy(rb => rb.BanTime).Count(); } else { diff --git a/Content.Server/Administration/Systems/BwoinkSystem.cs b/Content.Server/Administration/Systems/BwoinkSystem.cs index 7a47755db9d..4358b7e3876 100644 --- a/Content.Server/Administration/Systems/BwoinkSystem.cs +++ b/Content.Server/Administration/Systems/BwoinkSystem.cs @@ -172,7 +172,7 @@ private async void OnPlayerStatusChanged(object? sender, SessionStatusEventArgs } // Check if the user has been banned - var ban = await _dbManager.GetServerBanAsync(null, e.Session.UserId, null); + var ban = await _dbManager.GetServerBanAsync(null, e.Session.UserId, null, null); if (ban != null) { var banMessage = Loc.GetString("bwoink-system-player-banned", ("banReason", ban.Reason)); diff --git a/Content.Server/Connection/ConnectionManager.cs b/Content.Server/Connection/ConnectionManager.cs index 2c1f9fb36f1..e4c7cf0be2e 100644 --- a/Content.Server/Connection/ConnectionManager.cs +++ b/Content.Server/Connection/ConnectionManager.cs @@ -111,11 +111,14 @@ private async Task NetMgrOnConnecting(NetConnectingArgs e) var serverId = (await _serverDbEntry.ServerEntity).Id; + var hwid = e.UserData.GetModernHwid(); + var trust = e.UserData.Trust; + if (deny != null) { var (reason, msg, banHits) = deny.Value; - var id = await _db.AddConnectionLogAsync(userId, e.UserName, addr, e.UserData.HWId, reason, serverId); + var id = await _db.AddConnectionLogAsync(userId, e.UserName, addr, hwid, trust, reason, serverId); if (banHits is { Count: > 0 }) await _db.AddServerBanHitsAsync(id, banHits); @@ -127,12 +130,12 @@ private async Task NetMgrOnConnecting(NetConnectingArgs e) } else { - await _db.AddConnectionLogAsync(userId, e.UserName, addr, e.UserData.HWId, null, serverId); + await _db.AddConnectionLogAsync(userId, e.UserName, addr, hwid, trust, null, serverId); if (!ServerPreferencesManager.ShouldStorePrefs(e.AuthType)) return; - await _db.UpdatePlayerRecordAsync(userId, e.UserName, addr, e.UserData.HWId); + await _db.UpdatePlayerRecordAsync(userId, e.UserName, addr, hwid); } } @@ -190,7 +193,9 @@ session.Status is SessionStatus.Connected or SessionStatus.InGame hwId = null; } - var bans = await _db.GetServerBansAsync(addr, userId, hwId, includeUnbanned: false); + var modernHwid = e.UserData.ModernHWIds; + + var bans = await _db.GetServerBansAsync(addr, userId, hwId, modernHwid, includeUnbanned: false); if (bans.Count > 0) { var firstBan = bans[0]; diff --git a/Content.Server/Connection/UserDataExt.cs b/Content.Server/Connection/UserDataExt.cs new file mode 100644 index 00000000000..a409f79a75d --- /dev/null +++ b/Content.Server/Connection/UserDataExt.cs @@ -0,0 +1,24 @@ +using Content.Shared.Database; +using Robust.Shared.Network; + +namespace Content.Server.Connection; + +/// <summary> +/// Helper functions for working with <see cref="NetUserData"/>. +/// </summary> +public static class UserDataExt +{ + /// <summary> + /// Get the preferred HWID that should be used for new records related to a player. + /// </summary> + /// <remarks> + /// Players can have zero or more HWIDs, but for logging things like connection logs we generally + /// only want a single one. This method returns a nullable method. + /// </remarks> + public static ImmutableTypedHwid? GetModernHwid(this NetUserData userData) + { + return userData.ModernHWIds.Length == 0 + ? null + : new ImmutableTypedHwid(userData.ModernHWIds[0], HwidType.Modern); + } +} diff --git a/Content.Server/Database/BanMatcher.cs b/Content.Server/Database/BanMatcher.cs index e58e5b0b5f6..f477ccd822a 100644 --- a/Content.Server/Database/BanMatcher.cs +++ b/Content.Server/Database/BanMatcher.cs @@ -1,6 +1,7 @@ using System.Collections.Immutable; using System.Net; using Content.Server.IP; +using Content.Shared.Database; using Robust.Shared.Network; namespace Content.Server.Database; @@ -52,9 +53,28 @@ public static bool BanMatches(ServerBanDef ban, in PlayerInfo player) return true; } - return player.HWId is { Length: > 0 } hwIdVar - && ban.HWId != null - && hwIdVar.AsSpan().SequenceEqual(ban.HWId.Value.AsSpan()); + switch (ban.HWId?.Type) + { + case HwidType.Legacy: + if (player.HWId is { Length: > 0 } hwIdVar + && hwIdVar.AsSpan().SequenceEqual(ban.HWId.Hwid.AsSpan())) + { + return true; + } + break; + case HwidType.Modern: + if (player.ModernHWIds is { Length: > 0 } modernHwIdVar) + { + foreach (var hwid in modernHwIdVar) + { + if (hwid.AsSpan().SequenceEqual(ban.HWId.Hwid.AsSpan())) + return true; + } + } + break; + } + + return false; } /// <summary> @@ -73,10 +93,15 @@ public struct PlayerInfo public IPAddress? Address; /// <summary> - /// The hardware ID of the player. + /// The LEGACY hardware ID of the player. Corresponds with <see cref="NetUserData.HWId"/>. /// </summary> public ImmutableArray<byte>? HWId; + /// <summary> + /// The modern hardware IDs of the player. Corresponds with <see cref="NetUserData.ModernHWIds"/>. + /// </summary> + public ImmutableArray<ImmutableArray<byte>>? ModernHWIds; + /// <summary> /// Exemption flags the player has been granted. /// </summary> diff --git a/Content.Server/Database/DatabaseRecords.cs b/Content.Server/Database/DatabaseRecords.cs index c0d81147bb4..30fba3434b8 100644 --- a/Content.Server/Database/DatabaseRecords.cs +++ b/Content.Server/Database/DatabaseRecords.cs @@ -1,4 +1,3 @@ -using System.Collections.Immutable; using System.Net; using Content.Shared.Database; using Robust.Shared.Network; @@ -121,7 +120,7 @@ public sealed record PlayerRecord( string LastSeenUserName, DateTimeOffset LastSeenTime, IPAddress LastSeenAddress, - ImmutableArray<byte>? HWId); + ImmutableTypedHwid? HWId); public sealed record RoundRecord(int Id, DateTimeOffset? StartDate, ServerRecord Server); diff --git a/Content.Server/Database/ServerBanDef.cs b/Content.Server/Database/ServerBanDef.cs index 09a960e9a6c..a09f9e959c6 100644 --- a/Content.Server/Database/ServerBanDef.cs +++ b/Content.Server/Database/ServerBanDef.cs @@ -1,4 +1,3 @@ -using System.Collections.Immutable; using System.Net; using Content.Shared.CCVar; using Content.Shared.Database; @@ -13,7 +12,7 @@ public sealed class ServerBanDef public int? Id { get; } public NetUserId? UserId { get; } public (IPAddress address, int cidrMask)? Address { get; } - public ImmutableArray<byte>? HWId { get; } + public ImmutableTypedHwid? HWId { get; } public DateTimeOffset BanTime { get; } public DateTimeOffset? ExpirationTime { get; } @@ -28,7 +27,7 @@ public sealed class ServerBanDef public ServerBanDef(int? id, NetUserId? userId, (IPAddress, int)? address, - ImmutableArray<byte>? hwId, + TypedHwid? hwId, DateTimeOffset banTime, DateTimeOffset? expirationTime, int? roundId, diff --git a/Content.Server/Database/ServerDbBase.cs b/Content.Server/Database/ServerDbBase.cs index c85b774e381..723092bdc46 100644 --- a/Content.Server/Database/ServerDbBase.cs +++ b/Content.Server/Database/ServerDbBase.cs @@ -388,12 +388,14 @@ public async Task AssignUserIdAsync(string name, NetUserId netUserId) /// </summary> /// <param name="address">The ip address of the user.</param> /// <param name="userId">The id of the user.</param> - /// <param name="hwId">The HWId of the user.</param> + /// <param name="hwId">The legacy HWId of the user.</param> + /// <param name="modernHWIds">The modern HWIDs of the user.</param> /// <returns>The user's latest received un-pardoned ban, or null if none exist.</returns> public abstract Task<ServerBanDef?> GetServerBanAsync( IPAddress? address, NetUserId? userId, - ImmutableArray<byte>? hwId); + ImmutableArray<byte>? hwId, + ImmutableArray<ImmutableArray<byte>>? modernHWIds); /// <summary> /// Looks up an user's ban history. @@ -402,13 +404,15 @@ public async Task AssignUserIdAsync(string name, NetUserId netUserId) /// </summary> /// <param name="address">The ip address of the user.</param> /// <param name="userId">The id of the user.</param> - /// <param name="hwId">The HWId of the user.</param> + /// <param name="hwId">The legacy HWId of the user.</param> + /// <param name="modernHWIds">The modern HWIDs of the user.</param> /// <param name="includeUnbanned">Include pardoned and expired bans.</param> /// <returns>The user's ban history.</returns> public abstract Task<List<ServerBanDef>> GetServerBansAsync( IPAddress? address, NetUserId? userId, ImmutableArray<byte>? hwId, + ImmutableArray<ImmutableArray<byte>>? modernHWIds, bool includeUnbanned); public abstract Task AddServerBanAsync(ServerBanDef serverBan); @@ -499,11 +503,13 @@ public async Task<ServerBanExemptFlags> GetBanExemption(NetUserId userId, Cancel /// <param name="address">The IP address of the user.</param> /// <param name="userId">The NetUserId of the user.</param> /// <param name="hwId">The Hardware Id of the user.</param> + /// <param name="modernHWIds">The modern HWIDs of the user.</param> /// <param name="includeUnbanned">Whether expired and pardoned bans are included.</param> /// <returns>The user's role ban history.</returns> public abstract Task<List<ServerRoleBanDef>> GetServerRoleBansAsync(IPAddress? address, NetUserId? userId, ImmutableArray<byte>? hwId, + ImmutableArray<ImmutableArray<byte>>? modernHWIds, bool includeUnbanned); public abstract Task<ServerRoleBanDef> AddServerRoleBanAsync(ServerRoleBanDef serverRoleBan); @@ -586,7 +592,7 @@ public async Task UpdatePlayerRecord( NetUserId userId, string userName, IPAddress address, - ImmutableArray<byte> hwId) + ImmutableTypedHwid? hwId) { await using var db = await GetDb(); @@ -603,7 +609,7 @@ public async Task UpdatePlayerRecord( record.LastSeenTime = DateTime.UtcNow; record.LastSeenAddress = address; record.LastSeenUserName = userName; - record.LastSeenHWId = hwId.ToArray(); + record.LastSeenHWId = hwId; await db.DbContext.SaveChangesAsync(); } @@ -649,7 +655,7 @@ protected async Task<bool> PlayerRecordExists(DbGuard db, NetUserId userId) player.LastSeenUserName, new DateTimeOffset(NormalizeDatabaseTime(player.LastSeenTime)), player.LastSeenAddress, - player.LastSeenHWId?.ToImmutableArray()); + player.LastSeenHWId); } #endregion @@ -658,11 +664,11 @@ protected async Task<bool> PlayerRecordExists(DbGuard db, NetUserId userId) /* * CONNECTION LOG */ - public abstract Task<int> AddConnectionLogAsync( - NetUserId userId, + public abstract Task<int> AddConnectionLogAsync(NetUserId userId, string userName, IPAddress address, - ImmutableArray<byte> hwId, + ImmutableTypedHwid? hwId, + float trust, ConnectionDenyReason? denied, int serverId); diff --git a/Content.Server/Database/ServerDbManager.cs b/Content.Server/Database/ServerDbManager.cs index 216b1ec1596..be32b43595d 100644 --- a/Content.Server/Database/ServerDbManager.cs +++ b/Content.Server/Database/ServerDbManager.cs @@ -69,12 +69,14 @@ Task<PlayerPreferences> InitPrefsAsync( /// </summary> /// <param name="address">The ip address of the user.</param> /// <param name="userId">The id of the user.</param> - /// <param name="hwId">The hardware ID of the user.</param> + /// <param name="hwId">The legacy HWID of the user.</param> + /// <param name="modernHWIds">The modern HWIDs of the user.</param> /// <returns>The user's latest received un-pardoned ban, or null if none exist.</returns> Task<ServerBanDef?> GetServerBanAsync( IPAddress? address, NetUserId? userId, - ImmutableArray<byte>? hwId); + ImmutableArray<byte>? hwId, + ImmutableArray<ImmutableArray<byte>>? modernHWIds); /// <summary> /// Looks up an user's ban history. @@ -82,13 +84,15 @@ Task<PlayerPreferences> InitPrefsAsync( /// </summary> /// <param name="address">The ip address of the user.</param> /// <param name="userId">The id of the user.</param> - /// <param name="hwId">The HWId of the user.</param> + /// <param name="hwId">The legacy HWId of the user.</param> + /// <param name="modernHWIds">The modern HWIDs of the user.</param> /// <param name="includeUnbanned">If true, bans that have been expired or pardoned are also included.</param> /// <returns>The user's ban history.</returns> Task<List<ServerBanDef>> GetServerBansAsync( IPAddress? address, NetUserId? userId, ImmutableArray<byte>? hwId, + ImmutableArray<ImmutableArray<byte>>? modernHWIds, bool includeUnbanned=true); Task AddServerBanAsync(ServerBanDef serverBan); @@ -137,12 +141,14 @@ public Task EditServerBan( /// <param name="address">The IP address of the user.</param> /// <param name="userId">The NetUserId of the user.</param> /// <param name="hwId">The Hardware Id of the user.</param> + /// <param name="modernHWIds">The modern HWIDs of the user.</param> /// <param name="includeUnbanned">Whether expired and pardoned bans are included.</param> /// <returns>The user's role ban history.</returns> Task<List<ServerRoleBanDef>> GetServerRoleBansAsync( IPAddress? address, NetUserId? userId, ImmutableArray<byte>? hwId, + ImmutableArray<ImmutableArray<byte>>? modernHWIds, bool includeUnbanned = true); Task<ServerRoleBanDef> AddServerRoleBanAsync(ServerRoleBanDef serverBan); @@ -180,7 +186,7 @@ Task UpdatePlayerRecordAsync( NetUserId userId, string userName, IPAddress address, - ImmutableArray<byte> hwId); + ImmutableTypedHwid? hwId); Task<PlayerRecord?> GetPlayerRecordByUserName(string userName, CancellationToken cancel = default); Task<PlayerRecord?> GetPlayerRecordByUserId(NetUserId userId, CancellationToken cancel = default); #endregion @@ -191,7 +197,8 @@ Task<int> AddConnectionLogAsync( NetUserId userId, string userName, IPAddress address, - ImmutableArray<byte> hwId, + ImmutableTypedHwid? hwId, + float trust, ConnectionDenyReason? denied, int serverId); @@ -480,20 +487,22 @@ public Task AssignUserIdAsync(string name, NetUserId userId) public Task<ServerBanDef?> GetServerBanAsync( IPAddress? address, NetUserId? userId, - ImmutableArray<byte>? hwId) + ImmutableArray<byte>? hwId, + ImmutableArray<ImmutableArray<byte>>? modernHWIds) { DbReadOpsMetric.Inc(); - return RunDbCommand(() => _db.GetServerBanAsync(address, userId, hwId)); + return RunDbCommand(() => _db.GetServerBanAsync(address, userId, hwId, modernHWIds)); } public Task<List<ServerBanDef>> GetServerBansAsync( IPAddress? address, NetUserId? userId, ImmutableArray<byte>? hwId, + ImmutableArray<ImmutableArray<byte>>? modernHWIds, bool includeUnbanned=true) { DbReadOpsMetric.Inc(); - return RunDbCommand(() => _db.GetServerBansAsync(address, userId, hwId, includeUnbanned)); + return RunDbCommand(() => _db.GetServerBansAsync(address, userId, hwId, modernHWIds, includeUnbanned)); } public Task AddServerBanAsync(ServerBanDef serverBan) @@ -537,10 +546,11 @@ public Task<List<ServerRoleBanDef>> GetServerRoleBansAsync( IPAddress? address, NetUserId? userId, ImmutableArray<byte>? hwId, + ImmutableArray<ImmutableArray<byte>>? modernHWIds, bool includeUnbanned = true) { DbReadOpsMetric.Inc(); - return RunDbCommand(() => _db.GetServerRoleBansAsync(address, userId, hwId, includeUnbanned)); + return RunDbCommand(() => _db.GetServerRoleBansAsync(address, userId, hwId, modernHWIds, includeUnbanned)); } public Task<ServerRoleBanDef> AddServerRoleBanAsync(ServerRoleBanDef serverRoleBan) @@ -582,7 +592,7 @@ public Task UpdatePlayerRecordAsync( NetUserId userId, string userName, IPAddress address, - ImmutableArray<byte> hwId) + ImmutableTypedHwid? hwId) { DbWriteOpsMetric.Inc(); return RunDbCommand(() => _db.UpdatePlayerRecord(userId, userName, address, hwId)); @@ -604,12 +614,13 @@ public Task<int> AddConnectionLogAsync( NetUserId userId, string userName, IPAddress address, - ImmutableArray<byte> hwId, + ImmutableTypedHwid? hwId, + float trust, ConnectionDenyReason? denied, int serverId) { DbWriteOpsMetric.Inc(); - return RunDbCommand(() => _db.AddConnectionLogAsync(userId, userName, address, hwId, denied, serverId)); + return RunDbCommand(() => _db.AddConnectionLogAsync(userId, userName, address, hwId, trust, denied, serverId)); } public Task AddServerBanHitsAsync(int connection, IEnumerable<ServerBanDef> bans) diff --git a/Content.Server/Database/ServerDbPostgres.cs b/Content.Server/Database/ServerDbPostgres.cs index 7d131f70dc3..c0346708377 100644 --- a/Content.Server/Database/ServerDbPostgres.cs +++ b/Content.Server/Database/ServerDbPostgres.cs @@ -9,6 +9,7 @@ using Content.Server.Administration.Logs; using Content.Server.IP; using Content.Shared.CCVar; +using Content.Shared.Database; using Microsoft.EntityFrameworkCore; using Robust.Shared.Configuration; using Robust.Shared.Network; @@ -73,7 +74,8 @@ public ServerDbPostgres(DbContextOptions<PostgresServerDbContext> options, public override async Task<ServerBanDef?> GetServerBanAsync( IPAddress? address, NetUserId? userId, - ImmutableArray<byte>? hwId) + ImmutableArray<byte>? hwId, + ImmutableArray<ImmutableArray<byte>>? modernHWIds) { if (address == null && userId == null && hwId == null) { @@ -84,7 +86,7 @@ public ServerDbPostgres(DbContextOptions<PostgresServerDbContext> options, var exempt = await GetBanExemptionCore(db, userId); var newPlayer = userId == null || !await PlayerRecordExists(db, userId.Value); - var query = MakeBanLookupQuery(address, userId, hwId, db, includeUnbanned: false, exempt, newPlayer) + var query = MakeBanLookupQuery(address, userId, hwId, modernHWIds, db, includeUnbanned: false, exempt, newPlayer) .OrderByDescending(b => b.BanTime); var ban = await query.FirstOrDefaultAsync(); @@ -94,7 +96,9 @@ public ServerDbPostgres(DbContextOptions<PostgresServerDbContext> options, public override async Task<List<ServerBanDef>> GetServerBansAsync(IPAddress? address, NetUserId? userId, - ImmutableArray<byte>? hwId, bool includeUnbanned) + ImmutableArray<byte>? hwId, + ImmutableArray<ImmutableArray<byte>>? modernHWIds, + bool includeUnbanned) { if (address == null && userId == null && hwId == null) { @@ -105,7 +109,7 @@ public override async Task<List<ServerBanDef>> GetServerBansAsync(IPAddress? add var exempt = await GetBanExemptionCore(db, userId); var newPlayer = !await db.PgDbContext.Player.AnyAsync(p => p.UserId == userId); - var query = MakeBanLookupQuery(address, userId, hwId, db, includeUnbanned, exempt, newPlayer); + var query = MakeBanLookupQuery(address, userId, hwId, modernHWIds, db, includeUnbanned, exempt, newPlayer); var queryBans = await query.ToArrayAsync(); var bans = new List<ServerBanDef>(queryBans.Length); @@ -127,6 +131,7 @@ private static IQueryable<ServerBan> MakeBanLookupQuery( IPAddress? address, NetUserId? userId, ImmutableArray<byte>? hwId, + ImmutableArray<ImmutableArray<byte>>? modernHWIds, DbGuardImpl db, bool includeUnbanned, ServerBanExemptFlags? exemptFlags, @@ -134,16 +139,11 @@ private static IQueryable<ServerBan> MakeBanLookupQuery( { DebugTools.Assert(!(address == null && userId == null && hwId == null)); - IQueryable<ServerBan>? query = null; - - if (userId is { } uid) - { - var newQ = db.PgDbContext.Ban - .Include(p => p.Unban) - .Where(b => b.PlayerUserId == uid.UserId); - - query = query == null ? newQ : query.Union(newQ); - } + var query = MakeBanLookupQualityShared<ServerBan, ServerUnban>( + userId, + hwId, + modernHWIds, + db.PgDbContext.Ban); if (address != null && !exemptFlags.GetValueOrDefault(ServerBanExemptFlags.None).HasFlag(ServerBanExemptFlags.IP)) { @@ -156,15 +156,6 @@ private static IQueryable<ServerBan> MakeBanLookupQuery( query = query == null ? newQ : query.Union(newQ); } - if (hwId != null && hwId.Value.Length > 0) - { - var newQ = db.PgDbContext.Ban - .Include(p => p.Unban) - .Where(b => b.HWId!.SequenceEqual(hwId.Value.ToArray())); - - query = query == null ? newQ : query.Union(newQ); - } - DebugTools.Assert( query != null, "At least one filter item (IP/UserID/HWID) must have been given to make query not null."); @@ -186,6 +177,49 @@ private static IQueryable<ServerBan> MakeBanLookupQuery( return query.Distinct(); } + private static IQueryable<TBan>? MakeBanLookupQualityShared<TBan, TUnban>( + NetUserId? userId, + ImmutableArray<byte>? hwId, + ImmutableArray<ImmutableArray<byte>>? modernHWIds, + DbSet<TBan> set) + where TBan : class, IBanCommon<TUnban> + where TUnban : class, IUnbanCommon + { + IQueryable<TBan>? query = null; + + if (userId is { } uid) + { + var newQ = set + .Include(p => p.Unban) + .Where(b => b.PlayerUserId == uid.UserId); + + query = query == null ? newQ : query.Union(newQ); + } + + if (hwId != null && hwId.Value.Length > 0) + { + var newQ = set + .Include(p => p.Unban) + .Where(b => b.HWId!.Type == HwidType.Legacy && b.HWId!.Hwid.SequenceEqual(hwId.Value.ToArray())); + + query = query == null ? newQ : query.Union(newQ); + } + + if (modernHWIds != null) + { + foreach (var modernHwid in modernHWIds) + { + var newQ = set + .Include(p => p.Unban) + .Where(b => b.HWId!.Type == HwidType.Modern && b.HWId!.Hwid.SequenceEqual(modernHwid.ToArray())); + + query = query == null ? newQ : query.Union(newQ); + } + } + + return query; + } + private static ServerBanDef? ConvertBan(ServerBan? ban) { if (ban == null) @@ -211,7 +245,7 @@ private static IQueryable<ServerBan> MakeBanLookupQuery( ban.Id, uid, ban.Address.ToTuple(), - ban.HWId == null ? null : ImmutableArray.Create(ban.HWId), + ban.HWId, ban.BanTime, ban.ExpirationTime, ban.RoundId, @@ -249,7 +283,7 @@ public override async Task AddServerBanAsync(ServerBanDef serverBan) db.PgDbContext.Ban.Add(new ServerBan { Address = serverBan.Address.ToNpgsqlInet(), - HWId = serverBan.HWId?.ToArray(), + HWId = serverBan.HWId, Reason = serverBan.Reason, Severity = serverBan.Severity, BanningAdmin = serverBan.BanningAdmin?.UserId, @@ -297,6 +331,7 @@ public override async Task AddServerUnbanAsync(ServerUnbanDef serverUnban) public override async Task<List<ServerRoleBanDef>> GetServerRoleBansAsync(IPAddress? address, NetUserId? userId, ImmutableArray<byte>? hwId, + ImmutableArray<ImmutableArray<byte>>? modernHWIds, bool includeUnbanned) { if (address == null && userId == null && hwId == null) @@ -306,7 +341,7 @@ public override async Task<List<ServerRoleBanDef>> GetServerRoleBansAsync(IPAddr await using var db = await GetDbImpl(); - var query = MakeRoleBanLookupQuery(address, userId, hwId, db, includeUnbanned) + var query = MakeRoleBanLookupQuery(address, userId, hwId, modernHWIds, db, includeUnbanned) .OrderByDescending(b => b.BanTime); return await QueryRoleBans(query); @@ -334,19 +369,15 @@ private static IQueryable<ServerRoleBan> MakeRoleBanLookupQuery( IPAddress? address, NetUserId? userId, ImmutableArray<byte>? hwId, + ImmutableArray<ImmutableArray<byte>>? modernHWIds, DbGuardImpl db, bool includeUnbanned) { - IQueryable<ServerRoleBan>? query = null; - - if (userId is { } uid) - { - var newQ = db.PgDbContext.RoleBan - .Include(p => p.Unban) - .Where(b => b.PlayerUserId == uid.UserId); - - query = query == null ? newQ : query.Union(newQ); - } + var query = MakeBanLookupQualityShared<ServerRoleBan, ServerRoleUnban>( + userId, + hwId, + modernHWIds, + db.PgDbContext.RoleBan); if (address != null) { @@ -357,15 +388,6 @@ private static IQueryable<ServerRoleBan> MakeRoleBanLookupQuery( query = query == null ? newQ : query.Union(newQ); } - if (hwId != null && hwId.Value.Length > 0) - { - var newQ = db.PgDbContext.RoleBan - .Include(p => p.Unban) - .Where(b => b.HWId!.SequenceEqual(hwId.Value.ToArray())); - - query = query == null ? newQ : query.Union(newQ); - } - if (!includeUnbanned) { query = query?.Where(p => @@ -402,7 +424,7 @@ private static IQueryable<ServerRoleBan> MakeRoleBanLookupQuery( ban.Id, uid, ban.Address.ToTuple(), - ban.HWId == null ? null : ImmutableArray.Create(ban.HWId), + ban.HWId, ban.BanTime, ban.ExpirationTime, ban.RoundId, @@ -440,7 +462,7 @@ public override async Task<ServerRoleBanDef> AddServerRoleBanAsync(ServerRoleBan var ban = new ServerRoleBan { Address = serverRoleBan.Address.ToNpgsqlInet(), - HWId = serverRoleBan.HWId?.ToArray(), + HWId = serverRoleBan.HWId, Reason = serverRoleBan.Reason, Severity = serverRoleBan.Severity, BanningAdmin = serverRoleBan.BanningAdmin?.UserId, @@ -476,7 +498,8 @@ public override async Task<int> AddConnectionLogAsync( NetUserId userId, string userName, IPAddress address, - ImmutableArray<byte> hwId, + ImmutableTypedHwid? hwId, + float trust, ConnectionDenyReason? denied, int serverId) { @@ -488,9 +511,10 @@ public override async Task<int> AddConnectionLogAsync( Time = DateTime.UtcNow, UserId = userId.UserId, UserName = userName, - HWId = hwId.ToArray(), + HWId = hwId, Denied = denied, - ServerId = serverId + ServerId = serverId, + Trust = trust, }; db.PgDbContext.ConnectionLog.Add(connectionLog); diff --git a/Content.Server/Database/ServerDbSqlite.cs b/Content.Server/Database/ServerDbSqlite.cs index af4bc2cf8de..6ec90c3332f 100644 --- a/Content.Server/Database/ServerDbSqlite.cs +++ b/Content.Server/Database/ServerDbSqlite.cs @@ -9,6 +9,7 @@ using Content.Server.IP; using Content.Server.Preferences.Managers; using Content.Shared.CCVar; +using Content.Shared.Database; using Microsoft.EntityFrameworkCore; using Robust.Shared.Configuration; using Robust.Shared.Network; @@ -80,22 +81,24 @@ public ServerDbSqlite( public override async Task<ServerBanDef?> GetServerBanAsync( IPAddress? address, NetUserId? userId, - ImmutableArray<byte>? hwId) + ImmutableArray<byte>? hwId, + ImmutableArray<ImmutableArray<byte>>? modernHWIds) { await using var db = await GetDbImpl(); - return (await GetServerBanQueryAsync(db, address, userId, hwId, includeUnbanned: false)).FirstOrDefault(); + return (await GetServerBanQueryAsync(db, address, userId, hwId, modernHWIds, includeUnbanned: false)).FirstOrDefault(); } public override async Task<List<ServerBanDef>> GetServerBansAsync( IPAddress? address, NetUserId? userId, ImmutableArray<byte>? hwId, + ImmutableArray<ImmutableArray<byte>>? modernHWIds, bool includeUnbanned) { await using var db = await GetDbImpl(); - return (await GetServerBanQueryAsync(db, address, userId, hwId, includeUnbanned)).ToList(); + return (await GetServerBanQueryAsync(db, address, userId, hwId, modernHWIds, includeUnbanned)).ToList(); } private async Task<IEnumerable<ServerBanDef>> GetServerBanQueryAsync( @@ -103,6 +106,7 @@ private async Task<IEnumerable<ServerBanDef>> GetServerBanQueryAsync( IPAddress? address, NetUserId? userId, ImmutableArray<byte>? hwId, + ImmutableArray<ImmutableArray<byte>>? modernHWIds, bool includeUnbanned) { var exempt = await GetBanExemptionCore(db, userId); @@ -119,6 +123,7 @@ private async Task<IEnumerable<ServerBanDef>> GetServerBanQueryAsync( UserId = userId, ExemptFlags = exempt ?? default, HWId = hwId, + ModernHWIds = modernHWIds, IsNewPlayer = newPlayer, }; @@ -161,7 +166,7 @@ public override async Task AddServerBanAsync(ServerBanDef serverBan) Reason = serverBan.Reason, Severity = serverBan.Severity, BanningAdmin = serverBan.BanningAdmin?.UserId, - HWId = serverBan.HWId?.ToArray(), + HWId = serverBan.HWId, BanTime = serverBan.BanTime.UtcDateTime, ExpirationTime = serverBan.ExpirationTime?.UtcDateTime, RoundId = serverBan.RoundId, @@ -205,6 +210,7 @@ public override async Task<List<ServerRoleBanDef>> GetServerRoleBansAsync( IPAddress? address, NetUserId? userId, ImmutableArray<byte>? hwId, + ImmutableArray<ImmutableArray<byte>>? modernHWIds, bool includeUnbanned) { await using var db = await GetDbImpl(); @@ -214,7 +220,7 @@ public override async Task<List<ServerRoleBanDef>> GetServerRoleBansAsync( var queryBans = await GetAllRoleBans(db.SqliteDbContext, includeUnbanned); return queryBans - .Where(b => RoleBanMatches(b, address, userId, hwId)) + .Where(b => RoleBanMatches(b, address, userId, hwId, modernHWIds)) .Select(ConvertRoleBan) .ToList()!; } @@ -237,7 +243,8 @@ private static bool RoleBanMatches( ServerRoleBan ban, IPAddress? address, NetUserId? userId, - ImmutableArray<byte>? hwId) + ImmutableArray<byte>? hwId, + ImmutableArray<ImmutableArray<byte>>? modernHWIds) { if (address != null && ban.Address is not null && address.IsInSubnet(ban.Address.ToTuple().Value)) { @@ -249,7 +256,27 @@ private static bool RoleBanMatches( return true; } - return hwId is { Length: > 0 } hwIdVar && hwIdVar.AsSpan().SequenceEqual(ban.HWId); + switch (ban.HWId?.Type) + { + case HwidType.Legacy: + if (hwId is { Length: > 0 } hwIdVar && hwIdVar.AsSpan().SequenceEqual(ban.HWId.Hwid)) + return true; + break; + + case HwidType.Modern: + if (modernHWIds != null) + { + foreach (var modernHWId in modernHWIds) + { + if (modernHWId.AsSpan().SequenceEqual(ban.HWId.Hwid)) + return true; + } + } + + break; + } + + return false; } public override async Task<ServerRoleBanDef> AddServerRoleBanAsync(ServerRoleBanDef serverBan) @@ -262,7 +289,7 @@ public override async Task<ServerRoleBanDef> AddServerRoleBanAsync(ServerRoleBan Reason = serverBan.Reason, Severity = serverBan.Severity, BanningAdmin = serverBan.BanningAdmin?.UserId, - HWId = serverBan.HWId?.ToArray(), + HWId = serverBan.HWId, BanTime = serverBan.BanTime.UtcDateTime, ExpirationTime = serverBan.ExpirationTime?.UtcDateTime, RoundId = serverBan.RoundId, @@ -316,7 +343,7 @@ public override async Task AddServerRoleUnbanAsync(ServerRoleUnbanDef serverUnba ban.Id, uid, ban.Address.ToTuple(), - ban.HWId == null ? null : ImmutableArray.Create(ban.HWId), + ban.HWId, // SQLite apparently always reads DateTime as unspecified, but we always write as UTC. DateTime.SpecifyKind(ban.BanTime, DateTimeKind.Utc), ban.ExpirationTime == null ? null : DateTime.SpecifyKind(ban.ExpirationTime.Value, DateTimeKind.Utc), @@ -376,7 +403,7 @@ public override async Task AddServerRoleUnbanAsync(ServerRoleUnbanDef serverUnba ban.Id, uid, ban.Address.ToTuple(), - ban.HWId == null ? null : ImmutableArray.Create(ban.HWId), + ban.HWId, // SQLite apparently always reads DateTime as unspecified, but we always write as UTC. DateTime.SpecifyKind(ban.BanTime, DateTimeKind.Utc), ban.ExpirationTime == null ? null : DateTime.SpecifyKind(ban.ExpirationTime.Value, DateTimeKind.Utc), @@ -412,7 +439,8 @@ public override async Task<int> AddConnectionLogAsync( NetUserId userId, string userName, IPAddress address, - ImmutableArray<byte> hwId, + ImmutableTypedHwid? hwId, + float trust, ConnectionDenyReason? denied, int serverId) { @@ -424,9 +452,10 @@ public override async Task<int> AddConnectionLogAsync( Time = DateTime.UtcNow, UserId = userId.UserId, UserName = userName, - HWId = hwId.ToArray(), + HWId = hwId, Denied = denied, - ServerId = serverId + ServerId = serverId, + Trust = trust, }; db.SqliteDbContext.ConnectionLog.Add(connectionLog); diff --git a/Content.Server/Database/ServerRoleBanDef.cs b/Content.Server/Database/ServerRoleBanDef.cs index f615d5da4d1..dda3a822378 100644 --- a/Content.Server/Database/ServerRoleBanDef.cs +++ b/Content.Server/Database/ServerRoleBanDef.cs @@ -1,4 +1,3 @@ -using System.Collections.Immutable; using System.Net; using Content.Shared.Database; using Robust.Shared.Network; @@ -10,7 +9,7 @@ public sealed class ServerRoleBanDef public int? Id { get; } public NetUserId? UserId { get; } public (IPAddress address, int cidrMask)? Address { get; } - public ImmutableArray<byte>? HWId { get; } + public ImmutableTypedHwid? HWId { get; } public DateTimeOffset BanTime { get; } public DateTimeOffset? ExpirationTime { get; } @@ -26,7 +25,7 @@ public ServerRoleBanDef( int? id, NetUserId? userId, (IPAddress, int)? address, - ImmutableArray<byte>? hwId, + ImmutableTypedHwid? hwId, DateTimeOffset banTime, DateTimeOffset? expirationTime, int? roundId, diff --git a/Content.Shared.Database/TypedHwid.cs b/Content.Shared.Database/TypedHwid.cs new file mode 100644 index 00000000000..6e4a7763b3a --- /dev/null +++ b/Content.Shared.Database/TypedHwid.cs @@ -0,0 +1,62 @@ +using System.Collections.Immutable; +using System.Diagnostics.CodeAnalysis; + +namespace Content.Shared.Database; + +/// <summary> +/// Represents a raw HWID value together with its type. +/// </summary> +[Serializable] +public sealed class ImmutableTypedHwid(ImmutableArray<byte> hwid, HwidType type) +{ + public readonly ImmutableArray<byte> Hwid = hwid; + public readonly HwidType Type = type; + + public override string ToString() + { + var b64 = Convert.ToBase64String(Hwid.AsSpan()); + return Type == HwidType.Modern ? $"V2-{b64}" : b64; + } + + public static bool TryParse(string value, [NotNullWhen(true)] out ImmutableTypedHwid? hwid) + { + var type = HwidType.Legacy; + if (value.StartsWith("V2-", StringComparison.Ordinal)) + { + value = value["V2-".Length..]; + type = HwidType.Modern; + } + + var array = new byte[GetBase64ByteLength(value)]; + if (!Convert.TryFromBase64String(value, array, out _)) + { + hwid = null; + return false; + } + + hwid = new ImmutableTypedHwid([..array], type); + return true; + } + + private static int GetBase64ByteLength(string value) + { + // Why is .NET like this man wtf. + return 3 * (value.Length / 4) - value.TakeLast(2).Count(c => c == '='); + } +} + +/// <summary> +/// Represents different types of HWIDs as exposed by the engine. +/// </summary> +public enum HwidType +{ + /// <summary> + /// The legacy HWID system. Should only be used for checking old existing database bans. + /// </summary> + Legacy = 0, + + /// <summary> + /// The modern HWID system. + /// </summary> + Modern = 1, +} diff --git a/Content.Shared/Administration/BanPanelEuiState.cs b/Content.Shared/Administration/BanPanelEuiState.cs index dd10068e5da..74c340566b5 100644 --- a/Content.Shared/Administration/BanPanelEuiState.cs +++ b/Content.Shared/Administration/BanPanelEuiState.cs @@ -25,7 +25,7 @@ public sealed class CreateBanRequest : EuiMessageBase { public string? Player { get; set; } public string? IpAddress { get; set; } - public byte[]? Hwid { get; set; } + public ImmutableTypedHwid? Hwid { get; set; } public uint Minutes { get; set; } public string Reason { get; set; } public NoteSeverity Severity { get; set; } @@ -34,7 +34,7 @@ public sealed class CreateBanRequest : EuiMessageBase public bool UseLastHwid { get; set; } public bool Erase { get; set; } - public CreateBanRequest(string? player, (IPAddress, int)? ipAddress, bool useLastIp, byte[]? hwid, bool useLastHwid, uint minutes, string reason, NoteSeverity severity, string[]? roles, bool erase) + public CreateBanRequest(string? player, (IPAddress, int)? ipAddress, bool useLastIp, ImmutableTypedHwid? hwid, bool useLastHwid, uint minutes, string reason, NoteSeverity severity, string[]? roles, bool erase) { Player = player; IpAddress = ipAddress == null ? null : $"{ipAddress.Value.Item1}/{ipAddress.Value.Item2}"; From 806e1e46cb1fec598310d46c31e332e0876794c1 Mon Sep 17 00:00:00 2001 From: Simon <63975668+Simyon264@users.noreply.github.com> Date: Tue, 12 Nov 2024 03:10:25 +0100 Subject: [PATCH 059/187] Separate CCVars into separate files --- Content.Shared/CCVar/CCVars.Accessibility.cs | 41 + Content.Shared/CCVar/CCVars.Admin.Ahelp.cs | 39 + Content.Shared/CCVar/CCVars.Admin.Logs.cs | 42 + Content.Shared/CCVar/CCVars.Admin.Rules.cs | 18 + Content.Shared/CCVar/CCVars.Admin.cs | 163 ++ Content.Shared/CCVar/CCVars.Atmos.cs | 153 ++ Content.Shared/CCVar/CCVars.Audio.cs | 61 + Content.Shared/CCVar/CCVars.Chat.Looc.cs | 26 + Content.Shared/CCVar/CCVars.Chat.Ooc.cs | 27 + Content.Shared/CCVar/CCVars.Chat.cs | 68 + Content.Shared/CCVar/CCVars.Config.cs | 35 + Content.Shared/CCVar/CCVars.Console.cs | 15 + Content.Shared/CCVar/CCVars.Crewmanifest.cs | 24 + Content.Shared/CCVar/CCVars.Database.cs | 77 + Content.Shared/CCVar/CCVars.Discord.cs | 61 + Content.Shared/CCVar/CCVars.Events.cs | 12 + Content.Shared/CCVar/CCVars.Explosion.cs | 108 + Content.Shared/CCVar/CCVars.Game.Infolinks.cs | 54 + Content.Shared/CCVar/CCVars.Game.cs | 336 +++ Content.Shared/CCVar/CCVars.Ghost.cs | 24 + Content.Shared/CCVar/CCVars.Hud.cs | 24 + Content.Shared/CCVar/CCVars.Ic.cs | 48 + Content.Shared/CCVar/CCVars.Interactions.cs | 54 + Content.Shared/CCVar/CCVars.Interface.cs | 24 + Content.Shared/CCVar/CCVars.Mapping.cs | 24 + Content.Shared/CCVar/CCVars.Midi.cs | 18 + Content.Shared/CCVar/CCVars.Misc.cs | 97 + Content.Shared/CCVar/CCVars.NPC.cs | 16 + Content.Shared/CCVar/CCVars.Net.cs | 15 + Content.Shared/CCVar/CCVars.Parallax.cs | 15 + Content.Shared/CCVar/CCVars.Physics.cs | 27 + Content.Shared/CCVar/CCVars.Radiation.cs | 32 + Content.Shared/CCVar/CCVars.Replays.cs | 43 + Content.Shared/CCVar/CCVars.Salvage.cs | 18 + Content.Shared/CCVar/CCVars.Server.cs | 43 + Content.Shared/CCVar/CCVars.Shuttle.cs | 176 ++ Content.Shared/CCVar/CCVars.Sounds.cs | 34 + Content.Shared/CCVar/CCVars.Status.cs | 13 + Content.Shared/CCVar/CCVars.Tips.cs | 40 + Content.Shared/CCVar/CCVars.Viewport.cs | 33 + Content.Shared/CCVar/CCVars.Vote.cs | 180 ++ Content.Shared/CCVar/CCVars.Whitelist.cs | 19 + Content.Shared/CCVar/CCVars.Worldgen.cs | 18 + Content.Shared/CCVar/CCVars.cs | 2406 +---------------- 44 files changed, 2418 insertions(+), 2383 deletions(-) create mode 100644 Content.Shared/CCVar/CCVars.Accessibility.cs create mode 100644 Content.Shared/CCVar/CCVars.Admin.Ahelp.cs create mode 100644 Content.Shared/CCVar/CCVars.Admin.Logs.cs create mode 100644 Content.Shared/CCVar/CCVars.Admin.Rules.cs create mode 100644 Content.Shared/CCVar/CCVars.Admin.cs create mode 100644 Content.Shared/CCVar/CCVars.Atmos.cs create mode 100644 Content.Shared/CCVar/CCVars.Audio.cs create mode 100644 Content.Shared/CCVar/CCVars.Chat.Looc.cs create mode 100644 Content.Shared/CCVar/CCVars.Chat.Ooc.cs create mode 100644 Content.Shared/CCVar/CCVars.Chat.cs create mode 100644 Content.Shared/CCVar/CCVars.Config.cs create mode 100644 Content.Shared/CCVar/CCVars.Console.cs create mode 100644 Content.Shared/CCVar/CCVars.Crewmanifest.cs create mode 100644 Content.Shared/CCVar/CCVars.Database.cs create mode 100644 Content.Shared/CCVar/CCVars.Discord.cs create mode 100644 Content.Shared/CCVar/CCVars.Events.cs create mode 100644 Content.Shared/CCVar/CCVars.Explosion.cs create mode 100644 Content.Shared/CCVar/CCVars.Game.Infolinks.cs create mode 100644 Content.Shared/CCVar/CCVars.Game.cs create mode 100644 Content.Shared/CCVar/CCVars.Ghost.cs create mode 100644 Content.Shared/CCVar/CCVars.Hud.cs create mode 100644 Content.Shared/CCVar/CCVars.Ic.cs create mode 100644 Content.Shared/CCVar/CCVars.Interactions.cs create mode 100644 Content.Shared/CCVar/CCVars.Interface.cs create mode 100644 Content.Shared/CCVar/CCVars.Mapping.cs create mode 100644 Content.Shared/CCVar/CCVars.Midi.cs create mode 100644 Content.Shared/CCVar/CCVars.Misc.cs create mode 100644 Content.Shared/CCVar/CCVars.NPC.cs create mode 100644 Content.Shared/CCVar/CCVars.Net.cs create mode 100644 Content.Shared/CCVar/CCVars.Parallax.cs create mode 100644 Content.Shared/CCVar/CCVars.Physics.cs create mode 100644 Content.Shared/CCVar/CCVars.Radiation.cs create mode 100644 Content.Shared/CCVar/CCVars.Replays.cs create mode 100644 Content.Shared/CCVar/CCVars.Salvage.cs create mode 100644 Content.Shared/CCVar/CCVars.Server.cs create mode 100644 Content.Shared/CCVar/CCVars.Shuttle.cs create mode 100644 Content.Shared/CCVar/CCVars.Sounds.cs create mode 100644 Content.Shared/CCVar/CCVars.Status.cs create mode 100644 Content.Shared/CCVar/CCVars.Tips.cs create mode 100644 Content.Shared/CCVar/CCVars.Viewport.cs create mode 100644 Content.Shared/CCVar/CCVars.Vote.cs create mode 100644 Content.Shared/CCVar/CCVars.Whitelist.cs create mode 100644 Content.Shared/CCVar/CCVars.Worldgen.cs diff --git a/Content.Shared/CCVar/CCVars.Accessibility.cs b/Content.Shared/CCVar/CCVars.Accessibility.cs new file mode 100644 index 00000000000..8eb61f0806d --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Accessibility.cs @@ -0,0 +1,41 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// Chat window opacity slider, controlling the alpha of the chat window background. + /// Goes from to 0 (completely transparent) to 1 (completely opaque) + /// </summary> + public static readonly CVarDef<float> ChatWindowOpacity = + CVarDef.Create("accessibility.chat_window_transparency", 0.85f, CVar.CLIENTONLY | CVar.ARCHIVE); + + /// <summary> + /// Toggle for visual effects that may potentially cause motion sickness. + /// Where reasonable, effects affected by this CVar should use an alternate effect. + /// Please do not use this CVar as a bandaid for effects that could otherwise be made accessible without issue. + /// </summary> + public static readonly CVarDef<bool> ReducedMotion = + CVarDef.Create("accessibility.reduced_motion", false, CVar.CLIENTONLY | CVar.ARCHIVE); + + public static readonly CVarDef<bool> ChatEnableColorName = + CVarDef.Create("accessibility.enable_color_name", + true, + CVar.CLIENTONLY | CVar.ARCHIVE, + "Toggles displaying names with individual colors."); + + /// <summary> + /// Screen shake intensity slider, controlling the intensity of the CameraRecoilSystem. + /// Goes from 0 (no recoil at all) to 1 (regular amounts of recoil) + /// </summary> + public static readonly CVarDef<float> ScreenShakeIntensity = + CVarDef.Create("accessibility.screen_shake_intensity", 1f, CVar.CLIENTONLY | CVar.ARCHIVE); + + /// <summary> + /// A generic toggle for various visual effects that are color sensitive. + /// As of 2/16/24, only applies to progress bar colors. + /// </summary> + public static readonly CVarDef<bool> AccessibilityColorblindFriendly = + CVarDef.Create("accessibility.colorblind_friendly", false, CVar.CLIENTONLY | CVar.ARCHIVE); +} diff --git a/Content.Shared/CCVar/CCVars.Admin.Ahelp.cs b/Content.Shared/CCVar/CCVars.Admin.Ahelp.cs new file mode 100644 index 00000000000..48f3965bb5c --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Admin.Ahelp.cs @@ -0,0 +1,39 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// Ahelp rate limit values are accounted in periods of this size (seconds). + /// After the period has passed, the count resets. + /// </summary> + /// <seealso cref="AhelpRateLimitCount"/> + public static readonly CVarDef<float> AhelpRateLimitPeriod = + CVarDef.Create("ahelp.rate_limit_period", 2f, CVar.SERVERONLY); + + /// <summary> + /// How many ahelp messages are allowed in a single rate limit period. + /// </summary> + /// <seealso cref="AhelpRateLimitPeriod"/> + public static readonly CVarDef<int> AhelpRateLimitCount = + CVarDef.Create("ahelp.rate_limit_count", 10, CVar.SERVERONLY); + + /// <summary> + /// Should the administrator's position be displayed in ahelp. + /// If it is is false, only the admin's ckey will be displayed in the ahelp. + /// </summary> + /// <seealso cref="AdminUseCustomNamesAdminRank"/> + /// <seealso cref="AhelpAdminPrefixWebhook"/> + public static readonly CVarDef<bool> AhelpAdminPrefix = + CVarDef.Create("ahelp.admin_prefix", false, CVar.SERVERONLY); + + /// <summary> + /// Should the administrator's position be displayed in the webhook. + /// If it is is false, only the admin's ckey will be displayed in webhook. + /// </summary> + /// <seealso cref="AdminUseCustomNamesAdminRank"/> + /// <seealso cref="AhelpAdminPrefix"/> + public static readonly CVarDef<bool> AhelpAdminPrefixWebhook = + CVarDef.Create("ahelp.admin_prefix_webhook", false, CVar.SERVERONLY); +} diff --git a/Content.Shared/CCVar/CCVars.Admin.Logs.cs b/Content.Shared/CCVar/CCVars.Admin.Logs.cs new file mode 100644 index 00000000000..862456ddfdd --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Admin.Logs.cs @@ -0,0 +1,42 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// Controls if admin logs are enabled. Highly recommended to shut this off for development. + /// </summary> + public static readonly CVarDef<bool> AdminLogsEnabled = + CVarDef.Create("adminlogs.enabled", true, CVar.SERVERONLY); + + public static readonly CVarDef<float> AdminLogsQueueSendDelay = + CVarDef.Create("adminlogs.queue_send_delay_seconds", 5f, CVar.SERVERONLY); + + /// <summary> + /// When to skip the waiting time to save in-round admin logs, if no admin logs are currently being saved + /// </summary> + public static readonly CVarDef<int> AdminLogsQueueMax = + CVarDef.Create("adminlogs.queue_max", 5000, CVar.SERVERONLY); + + /// <summary> + /// When to skip the waiting time to save pre-round admin logs, if no admin logs are currently being saved + /// </summary> + public static readonly CVarDef<int> AdminLogsPreRoundQueueMax = + CVarDef.Create("adminlogs.pre_round_queue_max", 5000, CVar.SERVERONLY); + + /// <summary> + /// When to start dropping logs + /// </summary> + public static readonly CVarDef<int> AdminLogsDropThreshold = + CVarDef.Create("adminlogs.drop_threshold", 20000, CVar.SERVERONLY); + + /// <summary> + /// How many logs to send to the client at once + /// </summary> + public static readonly CVarDef<int> AdminLogsClientBatchSize = + CVarDef.Create("adminlogs.client_batch_size", 1000, CVar.SERVERONLY); + + public static readonly CVarDef<string> AdminLogsServerName = + CVarDef.Create("adminlogs.server_name", "unknown", CVar.SERVERONLY); +} diff --git a/Content.Shared/CCVar/CCVars.Admin.Rules.cs b/Content.Shared/CCVar/CCVars.Admin.Rules.cs new file mode 100644 index 00000000000..7385104364b --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Admin.Rules.cs @@ -0,0 +1,18 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// Time that players have to wait before rules can be accepted. + /// </summary> + public static readonly CVarDef<float> RulesWaitTime = + CVarDef.Create("rules.time", 45f, CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// Don't show rules to localhost/loopback interface. + /// </summary> + public static readonly CVarDef<bool> RulesExemptLocal = + CVarDef.Create("rules.exempt_local", true, CVar.SERVERONLY); +} diff --git a/Content.Shared/CCVar/CCVars.Admin.cs b/Content.Shared/CCVar/CCVars.Admin.cs new file mode 100644 index 00000000000..28bebfbe8a6 --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Admin.cs @@ -0,0 +1,163 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + public static readonly CVarDef<bool> AdminAnnounceLogin = + CVarDef.Create("admin.announce_login", true, CVar.SERVERONLY); + + public static readonly CVarDef<bool> AdminAnnounceLogout = + CVarDef.Create("admin.announce_logout", true, CVar.SERVERONLY); + + /// <summary> + /// The token used to authenticate with the admin API. Leave empty to disable the admin API. This is a secret! Do not share! + /// </summary> + public static readonly CVarDef<string> AdminApiToken = + CVarDef.Create("admin.api_token", string.Empty, CVar.SERVERONLY | CVar.CONFIDENTIAL); + + /// <summary> + /// Should users be able to see their own notes? Admins will be able to see and set notes regardless + /// </summary> + public static readonly CVarDef<bool> SeeOwnNotes = + CVarDef.Create("admin.see_own_notes", false, CVar.ARCHIVE | CVar.REPLICATED | CVar.SERVER); + + /// <summary> + /// Should the server play a quick sound to the active admins whenever a new player joins? + /// </summary> + public static readonly CVarDef<bool> AdminNewPlayerJoinSound = + CVarDef.Create("admin.new_player_join_sound", false, CVar.SERVERONLY); + + /// <summary> + /// The amount of days before the note starts fading. It will slowly lose opacity until it reaches stale. Set to 0 to disable. + /// </summary> + public static readonly CVarDef<double> NoteFreshDays = + CVarDef.Create("admin.note_fresh_days", 91.31055, CVar.ARCHIVE | CVar.REPLICATED | CVar.SERVER); + + /// <summary> + /// The amount of days before the note completely fades, and can only be seen by admins if they press "see more notes". Set to 0 + /// if you want the note to immediately disappear without fading. + /// </summary> + public static readonly CVarDef<double> NoteStaleDays = + CVarDef.Create("admin.note_stale_days", 365.2422, CVar.ARCHIVE | CVar.REPLICATED | CVar.SERVER); + + /// <summary> + /// How much time does the user have to wait in seconds before confirming that they saw an admin message? + /// </summary> + public static readonly CVarDef<float> MessageWaitTime = + CVarDef.Create("admin.message_wait_time", 3f, CVar.ARCHIVE | CVar.REPLICATED | CVar.SERVER); + + /// <summary> + /// Default severity for role bans + /// </summary> + public static readonly CVarDef<string> RoleBanDefaultSeverity = + CVarDef.Create("admin.role_ban_default_severity", "medium", CVar.ARCHIVE | CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// Default severity for department bans + /// </summary> + public static readonly CVarDef<string> DepartmentBanDefaultSeverity = + CVarDef.Create("admin.department_ban_default_severity", "medium", CVar.ARCHIVE | CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// Default severity for server bans + /// </summary> + public static readonly CVarDef<string> ServerBanDefaultSeverity = + CVarDef.Create("admin.server_ban_default_severity", "High", CVar.ARCHIVE | CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// Whether a server ban will ban the player's ip by default. + /// </summary> + public static readonly CVarDef<bool> ServerBanIpBanDefault = + CVarDef.Create("admin.server_ban_ip_ban_default", true, CVar.ARCHIVE | CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// Whether a server ban will ban the player's hardware id by default. + /// </summary> + public static readonly CVarDef<bool> ServerBanHwidBanDefault = + CVarDef.Create("admin.server_ban_hwid_ban_default", true, CVar.ARCHIVE | CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// Whether to use details from last connection for ip/hwid in the BanPanel. + /// </summary> + public static readonly CVarDef<bool> ServerBanUseLastDetails = + CVarDef.Create("admin.server_ban_use_last_details", true, CVar.ARCHIVE | CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// Whether to erase a player's chat messages and their entity from the game when banned. + /// </summary> + public static readonly CVarDef<bool> ServerBanErasePlayer = + CVarDef.Create("admin.server_ban_erase_player", false, CVar.ARCHIVE | CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// Minimum players sharing a connection required to create an alert. -1 to disable the alert. + /// </summary> + /// <remarks> + /// If you set this to 0 or 1 then it will alert on every connection, so probably don't do that. + /// </remarks> + public static readonly CVarDef<int> AdminAlertMinPlayersSharingConnection = + CVarDef.Create("admin.alert.min_players_sharing_connection", -1, CVar.SERVERONLY); + + /// <summary> + /// Minimum explosion intensity to create an admin alert message. -1 to disable the alert. + /// </summary> + public static readonly CVarDef<int> AdminAlertExplosionMinIntensity = + CVarDef.Create("admin.alert.explosion_min_intensity", 60, CVar.SERVERONLY); + + /// <summary> + /// Minimum particle accelerator strength to create an admin alert message. + /// </summary> + public static readonly CVarDef<int> AdminAlertParticleAcceleratorMinPowerState = + CVarDef.Create("admin.alert.particle_accelerator_min_power_state", 5, CVar.SERVERONLY); // strength 4 + + /// <summary> + /// Should the ban details in admin channel include PII? (IP, HWID, etc) + /// </summary> + public static readonly CVarDef<bool> AdminShowPIIOnBan = + CVarDef.Create("admin.show_pii_onban", false, CVar.SERVERONLY); + + /// <summary> + /// If an admin joins a round by reading up or using the late join button, automatically + /// de-admin them. + /// </summary> + public static readonly CVarDef<bool> AdminDeadminOnJoin = + CVarDef.Create("admin.deadmin_on_join", false, CVar.SERVERONLY); + + /// <summary> + /// Overrides the name the client sees in ahelps. Set empty to disable. + /// </summary> + public static readonly CVarDef<string> AdminAhelpOverrideClientName = + CVarDef.Create("admin.override_adminname_in_client_ahelp", string.Empty, CVar.SERVERONLY); + + /// <summary> + /// The threshold of minutes to appear as a "new player" in the ahelp menu + /// If 0, appearing as a new player is disabled. + /// </summary> + public static readonly CVarDef<int> NewPlayerThreshold = + CVarDef.Create("admin.new_player_threshold", 0, CVar.ARCHIVE | CVar.REPLICATED | CVar.SERVER); + + /// <summary> + /// How long an admin client can go without any input before being considered AFK. + /// </summary> + public static readonly CVarDef<float> AdminAfkTime = + CVarDef.Create("admin.afk_time", 600f, CVar.SERVERONLY); + + /// <summary> + /// If true, admins are able to connect even if + /// <see cref="SoftMaxPlayers"/> would otherwise block regular players. + /// </summary> + public static readonly CVarDef<bool> AdminBypassMaxPlayers = + CVarDef.Create("admin.bypass_max_players", true, CVar.SERVERONLY); + + /// <summary> + /// Determine if custom rank names are used. + /// If it is false, it'd use the actual rank name regardless of the individual's title. + /// </summary> + /// <seealso cref="AhelpAdminPrefix"/> + /// <seealso cref="AhelpAdminPrefixWebhook"/> + public static readonly CVarDef<bool> AdminUseCustomNamesAdminRank = + CVarDef.Create("admin.use_custom_names_admin_rank", true, CVar.SERVERONLY); + + public static readonly CVarDef<bool> BanHardwareIds = + CVarDef.Create("ban.hardware_ids", true, CVar.SERVERONLY); +} diff --git a/Content.Shared/CCVar/CCVars.Atmos.cs b/Content.Shared/CCVar/CCVars.Atmos.cs new file mode 100644 index 00000000000..cc1069b4fc8 --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Atmos.cs @@ -0,0 +1,153 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// Whether gas differences will move entities. + /// </summary> + public static readonly CVarDef<bool> SpaceWind = + CVarDef.Create("atmos.space_wind", false, CVar.SERVERONLY); + + /// <summary> + /// Divisor from maxForce (pressureDifference * 2.25f) to force applied on objects. + /// </summary> + public static readonly CVarDef<float> SpaceWindPressureForceDivisorThrow = + CVarDef.Create("atmos.space_wind_pressure_force_divisor_throw", 15f, CVar.SERVERONLY); + + /// <summary> + /// Divisor from maxForce (pressureDifference * 2.25f) to force applied on objects. + /// </summary> + public static readonly CVarDef<float> SpaceWindPressureForceDivisorPush = + CVarDef.Create("atmos.space_wind_pressure_force_divisor_push", 2500f, CVar.SERVERONLY); + + /// <summary> + /// The maximum velocity (not force) that may be applied to an object by atmospheric pressure differences. + /// Useful to prevent clipping through objects. + /// </summary> + public static readonly CVarDef<float> SpaceWindMaxVelocity = + CVarDef.Create("atmos.space_wind_max_velocity", 30f, CVar.SERVERONLY); + + /// <summary> + /// The maximum force that may be applied to an object by pushing (i.e. not throwing) atmospheric pressure differences. + /// A "throwing" atmospheric pressure difference ignores this limit, but not the max. velocity limit. + /// </summary> + public static readonly CVarDef<float> SpaceWindMaxPushForce = + CVarDef.Create("atmos.space_wind_max_push_force", 20f, CVar.SERVERONLY); + + /// <summary> + /// Whether monstermos tile equalization is enabled. + /// </summary> + public static readonly CVarDef<bool> MonstermosEqualization = + CVarDef.Create("atmos.monstermos_equalization", true, CVar.SERVERONLY); + + /// <summary> + /// Whether monstermos explosive depressurization is enabled. + /// Needs <see cref="MonstermosEqualization"/> to be enabled to work. + /// </summary> + public static readonly CVarDef<bool> MonstermosDepressurization = + CVarDef.Create("atmos.monstermos_depressurization", true, CVar.SERVERONLY); + + /// <summary> + /// Whether monstermos explosive depressurization will rip tiles.. + /// Needs <see cref="MonstermosEqualization"/> and <see cref="MonstermosDepressurization"/> to be enabled to work. + /// WARNING: This cvar causes MAJOR contrast issues, and usually tends to make any spaced scene look very cluttered. + /// This not only usually looks strange, but can also reduce playability for people with impaired vision. Please think twice before enabling this on your server. + /// Also looks weird on slow spacing for unrelated reasons. If you do want to enable this, you should probably turn on instaspacing. + /// </summary> + public static readonly CVarDef<bool> MonstermosRipTiles = + CVarDef.Create("atmos.monstermos_rip_tiles", false, CVar.SERVERONLY); + + /// <summary> + /// Whether explosive depressurization will cause the grid to gain an impulse. + /// Needs <see cref="MonstermosEqualization"/> and <see cref="MonstermosDepressurization"/> to be enabled to work. + /// </summary> + public static readonly CVarDef<bool> AtmosGridImpulse = + CVarDef.Create("atmos.grid_impulse", false, CVar.SERVERONLY); + + /// <summary> + /// What fraction of air from a spaced tile escapes every tick. + /// 1.0 for instant spacing, 0.2 means 20% of remaining air lost each time + /// </summary> + public static readonly CVarDef<float> AtmosSpacingEscapeRatio = + CVarDef.Create("atmos.mmos_spacing_speed", 0.15f, CVar.SERVERONLY); + + /// <summary> + /// Minimum amount of air allowed on a spaced tile before it is reset to 0 immediately in kPa + /// Since the decay due to SpacingEscapeRatio follows a curve, it would never reach 0.0 exactly + /// unless we truncate it somewhere. + /// </summary> + public static readonly CVarDef<float> AtmosSpacingMinGas = + CVarDef.Create("atmos.mmos_min_gas", 2.0f, CVar.SERVERONLY); + + /// <summary> + /// How much wind can go through a single tile before that tile doesn't depressurize itself + /// (I.e spacing is limited in large rooms heading into smaller spaces) + /// </summary> + public static readonly CVarDef<float> AtmosSpacingMaxWind = + CVarDef.Create("atmos.mmos_max_wind", 500f, CVar.SERVERONLY); + + /// <summary> + /// Whether atmos superconduction is enabled. + /// </summary> + /// <remarks> Disabled by default, superconduction is awful. </remarks> + public static readonly CVarDef<bool> Superconduction = + CVarDef.Create("atmos.superconduction", false, CVar.SERVERONLY); + + /// <summary> + /// Heat loss per tile due to radiation at 20 degC, in W. + /// </summary> + public static readonly CVarDef<float> SuperconductionTileLoss = + CVarDef.Create("atmos.superconduction_tile_loss", 30f, CVar.SERVERONLY); + + /// <summary> + /// Whether excited groups will be processed and created. + /// </summary> + public static readonly CVarDef<bool> ExcitedGroups = + CVarDef.Create("atmos.excited_groups", true, CVar.SERVERONLY); + + /// <summary> + /// Whether all tiles in an excited group will clear themselves once being exposed to space. + /// Similar to <see cref="MonstermosDepressurization"/>, without none of the tile ripping or + /// things being thrown around very violently. + /// Needs <see cref="ExcitedGroups"/> to be enabled to work. + /// </summary> + public static readonly CVarDef<bool> ExcitedGroupsSpaceIsAllConsuming = + CVarDef.Create("atmos.excited_groups_space_is_all_consuming", false, CVar.SERVERONLY); + + /// <summary> + /// Maximum time in milliseconds that atmos can take processing. + /// </summary> + public static readonly CVarDef<float> AtmosMaxProcessTime = + CVarDef.Create("atmos.max_process_time", 3f, CVar.SERVERONLY); + + /// <summary> + /// Atmos tickrate in TPS. Atmos processing will happen every 1/TPS seconds. + /// </summary> + public static readonly CVarDef<float> AtmosTickRate = + CVarDef.Create("atmos.tickrate", 15f, CVar.SERVERONLY); + + /// <summary> + /// Scale factor for how fast things happen in our atmosphere + /// simulation compared to real life. 1x means pumps run at 1x + /// speed. Players typically expect things to happen faster + /// in-game. + /// </summary> + public static readonly CVarDef<float> AtmosSpeedup = + CVarDef.Create("atmos.speedup", 8f, CVar.SERVERONLY); + + /// <summary> + /// Like atmos.speedup, but only for gas and reaction heat values. 64x means + /// gases heat up and cool down 64x faster than real life. + /// </summary> + public static readonly CVarDef<float> AtmosHeatScale = + CVarDef.Create("atmos.heat_scale", 8f, CVar.SERVERONLY); + + /// <summary> + /// Maximum explosion radius for explosions caused by bursting a gas tank ("max caps"). + /// Setting this to zero disables the explosion but still allows the tank to burst and leak. + /// </summary> + public static readonly CVarDef<float> AtmosTankFragment = + CVarDef.Create("atmos.max_explosion_range", 26f, CVar.SERVERONLY); +} diff --git a/Content.Shared/CCVar/CCVars.Audio.cs b/Content.Shared/CCVar/CCVars.Audio.cs new file mode 100644 index 00000000000..4d9e7c44315 --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Audio.cs @@ -0,0 +1,61 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// How long we'll wait until re-sampling nearby objects for ambience. Should be pretty fast, but doesn't have to match the tick rate. + /// </summary> + public static readonly CVarDef<float> AmbientCooldown = + CVarDef.Create("ambience.cooldown", 0.1f, CVar.ARCHIVE | CVar.CLIENTONLY); + + /// <summary> + /// How large of a range to sample for ambience. + /// </summary> + public static readonly CVarDef<float> AmbientRange = + CVarDef.Create("ambience.range", 8f, CVar.REPLICATED | CVar.SERVER); + + /// <summary> + /// Maximum simultaneous ambient sounds. + /// </summary> + public static readonly CVarDef<int> MaxAmbientSources = + CVarDef.Create("ambience.max_sounds", 16, CVar.ARCHIVE | CVar.CLIENTONLY); + + /// <summary> + /// The minimum value the user can set for ambience.max_sounds + /// </summary> + public static readonly CVarDef<int> MinMaxAmbientSourcesConfigured = + CVarDef.Create("ambience.min_max_sounds_configured", 16, CVar.REPLICATED | CVar.SERVER | CVar.CHEAT); + + /// <summary> + /// The maximum value the user can set for ambience.max_sounds + /// </summary> + public static readonly CVarDef<int> MaxMaxAmbientSourcesConfigured = + CVarDef.Create("ambience.max_max_sounds_configured", 64, CVar.REPLICATED | CVar.SERVER | CVar.CHEAT); + + /// <summary> + /// Ambience volume. + /// </summary> + public static readonly CVarDef<float> AmbienceVolume = + CVarDef.Create("ambience.volume", 1.5f, CVar.ARCHIVE | CVar.CLIENTONLY); + + /// <summary> + /// Ambience music volume. + /// </summary> + public static readonly CVarDef<float> AmbientMusicVolume = + CVarDef.Create("ambience.music_volume", 1.5f, CVar.ARCHIVE | CVar.CLIENTONLY); + + /// <summary> + /// Lobby / round end music volume. + /// </summary> + public static readonly CVarDef<float> LobbyMusicVolume = + CVarDef.Create("ambience.lobby_music_volume", 0.50f, CVar.ARCHIVE | CVar.CLIENTONLY); + + /// <summary> + /// UI volume. + /// </summary> + public static readonly CVarDef<float> InterfaceVolume = + CVarDef.Create("audio.interface_volume", 0.50f, CVar.ARCHIVE | CVar.CLIENTONLY); + +} diff --git a/Content.Shared/CCVar/CCVars.Chat.Looc.cs b/Content.Shared/CCVar/CCVars.Chat.Looc.cs new file mode 100644 index 00000000000..84ee2c28072 --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Chat.Looc.cs @@ -0,0 +1,26 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + public static readonly CVarDef<bool> LoocEnabled = + CVarDef.Create("looc.enabled", true, CVar.NOTIFY | CVar.REPLICATED); + + public static readonly CVarDef<bool> AdminLoocEnabled = + CVarDef.Create("looc.enabled_admin", true, CVar.NOTIFY); + + /// <summary> + /// True: Dead players can use LOOC + /// False: Dead player LOOC gets redirected to dead chat + /// </summary> + public static readonly CVarDef<bool> DeadLoocEnabled = + CVarDef.Create("looc.enabled_dead", false, CVar.NOTIFY | CVar.REPLICATED); + + /// <summary> + /// True: Crit players can use LOOC + /// False: Crit player LOOC gets redirected to dead chat + /// </summary> + public static readonly CVarDef<bool> CritLoocEnabled = + CVarDef.Create("looc.enabled_crit", false, CVar.NOTIFY | CVar.REPLICATED); +} diff --git a/Content.Shared/CCVar/CCVars.Chat.Ooc.cs b/Content.Shared/CCVar/CCVars.Chat.Ooc.cs new file mode 100644 index 00000000000..ba5e41053b6 --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Chat.Ooc.cs @@ -0,0 +1,27 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + public static readonly CVarDef<bool> + OocEnabled = CVarDef.Create("ooc.enabled", true, CVar.NOTIFY | CVar.REPLICATED); + + public static readonly CVarDef<bool> AdminOocEnabled = + CVarDef.Create("ooc.enabled_admin", true, CVar.NOTIFY); + + /// <summary> + /// If true, whenever OOC is disabled the Discord OOC relay will also be disabled. + /// </summary> + public static readonly CVarDef<bool> DisablingOOCDisablesRelay = + CVarDef.Create("ooc.disabling_ooc_disables_relay", true, CVar.SERVERONLY); + + /// <summary> + /// Whether or not OOC chat should be enabled during a round. + /// </summary> + public static readonly CVarDef<bool> OocEnableDuringRound = + CVarDef.Create("ooc.enable_during_round", false, CVar.NOTIFY | CVar.REPLICATED | CVar.SERVER); + + public static readonly CVarDef<bool> ShowOocPatronColor = + CVarDef.Create("ooc.show_ooc_patron_color", true, CVar.ARCHIVE | CVar.REPLICATED | CVar.CLIENT); +} diff --git a/Content.Shared/CCVar/CCVars.Chat.cs b/Content.Shared/CCVar/CCVars.Chat.cs new file mode 100644 index 00000000000..139a82372a2 --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Chat.cs @@ -0,0 +1,68 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// Chat rate limit values are accounted in periods of this size (seconds). + /// After the period has passed, the count resets. + /// </summary> + /// <seealso cref="ChatRateLimitCount"/> + public static readonly CVarDef<float> ChatRateLimitPeriod = + CVarDef.Create("chat.rate_limit_period", 2f, CVar.SERVERONLY); + + /// <summary> + /// How many chat messages are allowed in a single rate limit period. + /// </summary> + /// <remarks> + /// The total rate limit throughput per second is effectively + /// <see cref="ChatRateLimitCount"/> divided by <see cref="ChatRateLimitCount"/>. + /// </remarks> + /// <seealso cref="ChatRateLimitPeriod"/> + public static readonly CVarDef<int> ChatRateLimitCount = + CVarDef.Create("chat.rate_limit_count", 10, CVar.SERVERONLY); + + /// <summary> + /// Minimum delay (in seconds) between notifying admins about chat message rate limit violations. + /// A negative value disables admin announcements. + /// </summary> + public static readonly CVarDef<int> ChatRateLimitAnnounceAdminsDelay = + CVarDef.Create("chat.rate_limit_announce_admins_delay", 15, CVar.SERVERONLY); + + public static readonly CVarDef<int> ChatMaxMessageLength = + CVarDef.Create("chat.max_message_length", 1000, CVar.SERVER | CVar.REPLICATED); + + public static readonly CVarDef<int> ChatMaxAnnouncementLength = + CVarDef.Create("chat.max_announcement_length", 256, CVar.SERVER | CVar.REPLICATED); + + public static readonly CVarDef<bool> ChatSanitizerEnabled = + CVarDef.Create("chat.chat_sanitizer_enabled", true, CVar.SERVERONLY); + + public static readonly CVarDef<bool> ChatShowTypingIndicator = + CVarDef.Create("chat.show_typing_indicator", true, CVar.ARCHIVE | CVar.REPLICATED | CVar.SERVER); + + public static readonly CVarDef<bool> ChatEnableFancyBubbles = + CVarDef.Create("chat.enable_fancy_bubbles", + true, + CVar.CLIENTONLY | CVar.ARCHIVE, + "Toggles displaying fancy speech bubbles, which display the speaking character's name."); + + public static readonly CVarDef<bool> ChatFancyNameBackground = + CVarDef.Create("chat.fancy_name_background", + false, + CVar.CLIENTONLY | CVar.ARCHIVE, + "Toggles displaying a background under the speaking character's name."); + + /// <summary> + /// A message broadcast to each player that joins the lobby. + /// May be changed by admins ingame through use of the "set-motd" command. + /// In this case the new value, if not empty, is broadcast to all connected players and saved between rounds. + /// May be requested by any player through use of the "get-motd" command. + /// </summary> + public static readonly CVarDef<string> MOTD = + CVarDef.Create("chat.motd", + "", + CVar.SERVER | CVar.SERVERONLY | CVar.ARCHIVE, + "A message broadcast to each player that joins the lobby."); +} diff --git a/Content.Shared/CCVar/CCVars.Config.cs b/Content.Shared/CCVar/CCVars.Config.cs new file mode 100644 index 00000000000..4e11f09ee7c --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Config.cs @@ -0,0 +1,35 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + // These are server-only for now since I don't foresee a client use yet, + // and I don't wanna have to start coming up with like .client suffixes and stuff like that. + + /// <summary> + /// Configuration presets to load during startup. + /// Multiple presets can be separated by comma and are loaded in order. + /// </summary> + /// <remarks> + /// Loaded presets must be located under the <c>ConfigPresets/</c> resource directory and end with the <c>.toml</c> extension. + /// Only the file name (without extension) must be given for this variable. + /// </remarks> + public static readonly CVarDef<string> ConfigPresets = + CVarDef.Create("config.presets", "", CVar.SERVERONLY); + + /// <summary> + /// Whether to load the preset development CVars. + /// This disables some things like lobby to make development easier. + /// Even when true, these are only loaded if the game is compiled with <c>DEVELOPMENT</c> set. + /// </summary> + public static readonly CVarDef<bool> ConfigPresetDevelopment = + CVarDef.Create("config.preset_development", true, CVar.SERVERONLY); + + /// <summary> + /// Whether to load the preset debug CVars. + /// Even when true, these are only loaded if the game is compiled with <c>DEBUG</c> set. + /// </summary> + public static readonly CVarDef<bool> ConfigPresetDebug = + CVarDef.Create("config.preset_debug", true, CVar.SERVERONLY); +} diff --git a/Content.Shared/CCVar/CCVars.Console.cs b/Content.Shared/CCVar/CCVars.Console.cs new file mode 100644 index 00000000000..e670b9f836e --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Console.cs @@ -0,0 +1,15 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + public static readonly CVarDef<bool> ConsoleLoginLocal = + CVarDef.Create("console.loginlocal", true, CVar.ARCHIVE | CVar.SERVERONLY); + + /// <summary> + /// Automatically log in the given user as host, equivalent to the <c>promotehost</c> command. + /// </summary> + public static readonly CVarDef<string> ConsoleLoginHostUser = + CVarDef.Create("console.login_host_user", "", CVar.ARCHIVE | CVar.SERVERONLY); +} diff --git a/Content.Shared/CCVar/CCVars.Crewmanifest.cs b/Content.Shared/CCVar/CCVars.Crewmanifest.cs new file mode 100644 index 00000000000..d6251886b95 --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Crewmanifest.cs @@ -0,0 +1,24 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// Setting this allows a crew manifest to be opened from any window + /// that has a crew manifest button, and sends the correct message. + /// If this is false, only in-game entities will allow you to see + /// the crew manifest, if the functionality is coded in. + /// Having administrator priveledge ignores this, but will still + /// hide the button in UI windows. + /// </summary> + public static readonly CVarDef<bool> CrewManifestWithoutEntity = + CVarDef.Create("crewmanifest.no_entity", true, CVar.REPLICATED); + + /// <summary> + /// Setting this allows the crew manifest to be viewed from 'unsecure' + /// entities, such as the PDA. + /// </summary> + public static readonly CVarDef<bool> CrewManifestUnsecure = + CVarDef.Create("crewmanifest.unsecure", true, CVar.REPLICATED); +} diff --git a/Content.Shared/CCVar/CCVars.Database.cs b/Content.Shared/CCVar/CCVars.Database.cs new file mode 100644 index 00000000000..c549bd7e033 --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Database.cs @@ -0,0 +1,77 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ +#if DEBUG + private const int DefaultSqliteDelay = 1; +#else + private const int DefaultSqliteDelay = 0; +#endif + + public static readonly CVarDef<string> DatabaseEngine = + CVarDef.Create("database.engine", "sqlite", CVar.SERVERONLY); + + public static readonly CVarDef<string> DatabaseSqliteDbPath = + CVarDef.Create("database.sqlite_dbpath", "preferences.db", CVar.SERVERONLY); + + /// <summary> + /// Milliseconds to asynchronously delay all SQLite database acquisitions with. + /// </summary> + /// <remarks> + /// Defaults to 1 on DEBUG, 0 on RELEASE. + /// This is intended to help catch .Result deadlock bugs that only happen on postgres + /// (because SQLite is not actually asynchronous normally) + /// </remarks> + public static readonly CVarDef<int> DatabaseSqliteDelay = + CVarDef.Create("database.sqlite_delay", DefaultSqliteDelay, CVar.SERVERONLY); + + /// <summary> + /// Amount of concurrent SQLite database operations. + /// </summary> + /// <remarks> + /// Note that SQLite is not a properly asynchronous database and also has limited read/write concurrency. + /// Increasing this number may allow more concurrent reads, but it probably won't matter much. + /// SQLite operations are normally ran on the thread pool, which may cause thread pool starvation if the concurrency is too high. + /// </remarks> + public static readonly CVarDef<int> DatabaseSqliteConcurrency = + CVarDef.Create("database.sqlite_concurrency", 3, CVar.SERVERONLY); + + public static readonly CVarDef<string> DatabasePgHost = + CVarDef.Create("database.pg_host", "localhost", CVar.SERVERONLY); + + public static readonly CVarDef<int> DatabasePgPort = + CVarDef.Create("database.pg_port", 5432, CVar.SERVERONLY); + + public static readonly CVarDef<string> DatabasePgDatabase = + CVarDef.Create("database.pg_database", "ss14", CVar.SERVERONLY); + + public static readonly CVarDef<string> DatabasePgUsername = + CVarDef.Create("database.pg_username", "postgres", CVar.SERVERONLY); + + public static readonly CVarDef<string> DatabasePgPassword = + CVarDef.Create("database.pg_password", "", CVar.SERVERONLY | CVar.CONFIDENTIAL); + + /// <summary> + /// Max amount of concurrent Postgres database operations. + /// </summary> + public static readonly CVarDef<int> DatabasePgConcurrency = + CVarDef.Create("database.pg_concurrency", 8, CVar.SERVERONLY); + + /// <summary> + /// Milliseconds to asynchronously delay all PostgreSQL database operations with. + /// </summary> + /// <remarks> + /// This is intended for performance testing. It works different from <see cref="DatabaseSqliteDelay"/>, + /// as the lag is applied after acquiring the database lock. + /// </remarks> + public static readonly CVarDef<int> DatabasePgFakeLag = + CVarDef.Create("database.pg_fake_lag", 0, CVar.SERVERONLY); + + /// <summary> + /// Basically only exists for integration tests to avoid race conditions. + /// </summary> + public static readonly CVarDef<bool> DatabaseSynchronous = + CVarDef.Create("database.sync", false, CVar.SERVERONLY); +} diff --git a/Content.Shared/CCVar/CCVars.Discord.cs b/Content.Shared/CCVar/CCVars.Discord.cs new file mode 100644 index 00000000000..a6c4ada7454 --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Discord.cs @@ -0,0 +1,61 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// The role that will get mentioned if a new SOS ahelp comes in. + /// </summary> + public static readonly CVarDef<string> DiscordAhelpMention = + CVarDef.Create("discord.on_call_ping", string.Empty, CVar.SERVERONLY | CVar.CONFIDENTIAL); + + /// <summary> + /// URL of the discord webhook to relay unanswered ahelp messages. + /// </summary> + public static readonly CVarDef<string> DiscordOnCallWebhook = + CVarDef.Create("discord.on_call_webhook", string.Empty, CVar.SERVERONLY | CVar.CONFIDENTIAL); + + /// <summary> + /// URL of the Discord webhook which will relay all ahelp messages. + /// </summary> + public static readonly CVarDef<string> DiscordAHelpWebhook = + CVarDef.Create("discord.ahelp_webhook", string.Empty, CVar.SERVERONLY | CVar.CONFIDENTIAL); + + /// <summary> + /// The server icon to use in the Discord ahelp embed footer. + /// Valid values are specified at https://discord.com/developers/docs/resources/channel#embed-object-embed-footer-structure. + /// </summary> + public static readonly CVarDef<string> DiscordAHelpFooterIcon = + CVarDef.Create("discord.ahelp_footer_icon", string.Empty, CVar.SERVERONLY); + + /// <summary> + /// The avatar to use for the webhook. Should be an URL. + /// </summary> + public static readonly CVarDef<string> DiscordAHelpAvatar = + CVarDef.Create("discord.ahelp_avatar", string.Empty, CVar.SERVERONLY); + + /// <summary> + /// URL of the Discord webhook which will relay all custom votes. If left empty, disables the webhook. + /// </summary> + public static readonly CVarDef<string> DiscordVoteWebhook = + CVarDef.Create("discord.vote_webhook", string.Empty, CVar.SERVERONLY); + + /// <summary> + /// URL of the Discord webhook which will relay all votekick votes. If left empty, disables the webhook. + /// </summary> + public static readonly CVarDef<string> DiscordVotekickWebhook = + CVarDef.Create("discord.votekick_webhook", string.Empty, CVar.SERVERONLY); + + /// <summary> + /// URL of the Discord webhook which will relay round restart messages. + /// </summary> + public static readonly CVarDef<string> DiscordRoundUpdateWebhook = + CVarDef.Create("discord.round_update_webhook", string.Empty, CVar.SERVERONLY | CVar.CONFIDENTIAL); + + /// <summary> + /// Role id for the Discord webhook to ping when the round ends. + /// </summary> + public static readonly CVarDef<string> DiscordRoundEndRoleWebhook = + CVarDef.Create("discord.round_end_role", string.Empty, CVar.SERVERONLY); +} diff --git a/Content.Shared/CCVar/CCVars.Events.cs b/Content.Shared/CCVar/CCVars.Events.cs new file mode 100644 index 00000000000..48797b8438c --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Events.cs @@ -0,0 +1,12 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// Controls if the game should run station events + /// </summary> + public static readonly CVarDef<bool> + EventsEnabled = CVarDef.Create("events.enabled", true, CVar.ARCHIVE | CVar.SERVERONLY); +} diff --git a/Content.Shared/CCVar/CCVars.Explosion.cs b/Content.Shared/CCVar/CCVars.Explosion.cs new file mode 100644 index 00000000000..51d93456b7e --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Explosion.cs @@ -0,0 +1,108 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// How many tiles the explosion system will process per tick + /// </summary> + /// <remarks> + /// Setting this too high will put a large load on a single tick. Setting this too low will lead to + /// unnaturally "slow" explosions. + /// </remarks> + public static readonly CVarDef<int> ExplosionTilesPerTick = + CVarDef.Create("explosion.tiles_per_tick", 100, CVar.SERVERONLY); + + /// <summary> + /// Upper limit on the size of an explosion before physics-throwing is disabled. + /// </summary> + /// <remarks> + /// Large nukes tend to generate a lot of shrapnel that flies through space. This can functionally cripple + /// the server TPS for a while after an explosion (or even during, if the explosion is processed + /// incrementally. + /// </remarks> + public static readonly CVarDef<int> ExplosionThrowLimit = + CVarDef.Create("explosion.throw_limit", 400, CVar.SERVERONLY); + + /// <summary> + /// If this is true, explosion processing will pause the NodeGroupSystem to pause updating. + /// </summary> + /// <remarks> + /// This only takes effect if an explosion needs more than one tick to process (i.e., covers more than <see + /// cref="ExplosionTilesPerTick"/> tiles). If this is not enabled, the node-system will rebuild its graph + /// every tick as the explosion shreds the station, causing significant slowdown. + /// </remarks> + public static readonly CVarDef<bool> ExplosionSleepNodeSys = + CVarDef.Create("explosion.node_sleep", true, CVar.SERVERONLY); + + /// <summary> + /// Upper limit on the total area that an explosion can affect before the neighbor-finding algorithm just + /// stops. Defaults to a 60-rile radius explosion. + /// </summary> + /// <remarks> + /// Actual area may be larger, as it currently doesn't terminate mid neighbor finding. I.e., area may be that of a ~51 tile radius circle instead. + /// </remarks> + public static readonly CVarDef<int> ExplosionMaxArea = + CVarDef.Create("explosion.max_area", (int)3.14f * 256 * 256, CVar.SERVERONLY); + + /// <summary> + /// Upper limit on the number of neighbor finding steps for the explosion system neighbor-finding algorithm. + /// </summary> + /// <remarks> + /// Effectively places an upper limit on the range that any explosion can have. In the vast majority of + /// instances, <see cref="ExplosionMaxArea"/> will likely be hit before this becomes a limiting factor. + /// </remarks> + public static readonly CVarDef<int> ExplosionMaxIterations = + CVarDef.Create("explosion.max_iterations", 500, CVar.SERVERONLY); + + /// <summary> + /// Max Time in milliseconds to spend processing explosions every tick. + /// </summary> + /// <remarks> + /// This time limiting is not perfectly implemented. Firstly, a significant chunk of processing time happens + /// due to queued entity deletions, which happen outside of the system update code. Secondly, explosion + /// spawning cannot currently be interrupted & resumed, and may lead to exceeding this time limit. + /// </remarks> + public static readonly CVarDef<float> ExplosionMaxProcessingTime = + CVarDef.Create("explosion.max_tick_time", 7f, CVar.SERVERONLY); + + /// <summary> + /// If the explosion is being processed incrementally over several ticks, this variable determines whether + /// updating the grid tiles should be done incrementally at the end of every tick, or only once the explosion has finished processing. + /// </summary> + /// <remarks> + /// The most notable consequence of this change is that explosions will only punch a hole in the station & + /// create a vacumm once they have finished exploding. So airlocks will no longer slam shut as the explosion + /// expands, just suddenly at the end. + /// </remarks> + public static readonly CVarDef<bool> ExplosionIncrementalTileBreaking = + CVarDef.Create("explosion.incremental_tile", false, CVar.SERVERONLY); + + /// <summary> + /// This determines for how many seconds an explosion should stay visible once it has finished expanding. + /// </summary> + public static readonly CVarDef<float> ExplosionPersistence = + CVarDef.Create("explosion.persistence", 1.0f, CVar.SERVERONLY); + + /// <summary> + /// If an explosion covers a larger area than this number, the damaging/processing will always start during + /// the next tick, instead of during the same tick that the explosion was generated in. + /// </summary> + /// <remarks> + /// This value can be used to ensure that for large explosions the area/tile calculation and the explosion + /// processing/damaging occurs in separate ticks. This helps reduce the single-tick lag if both <see + /// cref="ExplosionMaxProcessingTime"/> and <see cref="ExplosionTilesPerTick"/> are large. I.e., instead of + /// a single tick explosion, this cvar allows for a configuration that results in a two-tick explosion, + /// though most of the computational cost is still in the second tick. + /// </remarks> + public static readonly CVarDef<int> ExplosionSingleTickAreaLimit = + CVarDef.Create("explosion.single_tick_area_limit", 400, CVar.SERVERONLY); + + /// <summary> + /// Whether or not explosions are allowed to create tiles that have + /// <see cref="ContentTileDefinition.MapAtmosphere"/> set to true. + /// </summary> + public static readonly CVarDef<bool> ExplosionCanCreateVacuum = + CVarDef.Create("explosion.can_create_vacuum", true, CVar.SERVERONLY); +} diff --git a/Content.Shared/CCVar/CCVars.Game.Infolinks.cs b/Content.Shared/CCVar/CCVars.Game.Infolinks.cs new file mode 100644 index 00000000000..fa8332b497e --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Game.Infolinks.cs @@ -0,0 +1,54 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// Link to Discord server to show in the launcher. + /// </summary> + public static readonly CVarDef<string> InfoLinksDiscord = + CVarDef.Create("infolinks.discord", "", CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// Link to website to show in the launcher. + /// </summary> + public static readonly CVarDef<string> InfoLinksForum = + CVarDef.Create("infolinks.forum", "", CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// Link to GitHub page to show in the launcher. + /// </summary> + public static readonly CVarDef<string> InfoLinksGithub = + CVarDef.Create("infolinks.github", "", CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// Link to website to show in the launcher. + /// </summary> + public static readonly CVarDef<string> InfoLinksWebsite = + CVarDef.Create("infolinks.website", "", CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// Link to wiki to show in the launcher. + /// </summary> + public static readonly CVarDef<string> InfoLinksWiki = + CVarDef.Create("infolinks.wiki", "", CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// Link to Patreon. Not shown in the launcher currently. + /// </summary> + public static readonly CVarDef<string> InfoLinksPatreon = + CVarDef.Create("infolinks.patreon", "", CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// Link to the bug report form. + /// </summary> + public static readonly CVarDef<string> InfoLinksBugReport = + CVarDef.Create("infolinks.bug_report", "", CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// Link to site handling ban appeals. Shown in ban disconnect messages. + /// </summary> + public static readonly CVarDef<string> InfoLinksAppeal = + CVarDef.Create("infolinks.appeal", "", CVar.SERVER | CVar.REPLICATED); +} diff --git a/Content.Shared/CCVar/CCVars.Game.cs b/Content.Shared/CCVar/CCVars.Game.cs new file mode 100644 index 00000000000..19092055e39 --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Game.cs @@ -0,0 +1,336 @@ +using Content.Shared.Roles; +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// Disables most functionality in the GameTicker. + /// </summary> + public static readonly CVarDef<bool> + GameDummyTicker = CVarDef.Create("game.dummyticker", false, CVar.ARCHIVE | CVar.SERVERONLY); + + /// <summary> + /// Controls if the lobby is enabled. If it is not, and there are no available jobs, you may get stuck on a black screen. + /// </summary> + public static readonly CVarDef<bool> + GameLobbyEnabled = CVarDef.Create("game.lobbyenabled", true, CVar.ARCHIVE); + + /// <summary> + /// Controls the duration of the lobby timer in seconds. Defaults to 2 minutes and 30 seconds. + /// </summary> + public static readonly CVarDef<int> + GameLobbyDuration = CVarDef.Create("game.lobbyduration", 150, CVar.ARCHIVE); + + /// <summary> + /// Controls if players can latejoin at all. + /// </summary> + public static readonly CVarDef<bool> + GameDisallowLateJoins = CVarDef.Create("game.disallowlatejoins", false, CVar.ARCHIVE | CVar.SERVERONLY); + + /// <summary> + /// Controls the default game preset. + /// </summary> + public static readonly CVarDef<string> + GameLobbyDefaultPreset = CVarDef.Create("game.defaultpreset", "secret", CVar.ARCHIVE); + + /// <summary> + /// Controls if the game can force a different preset if the current preset's criteria are not met. + /// </summary> + public static readonly CVarDef<bool> + GameLobbyFallbackEnabled = CVarDef.Create("game.fallbackenabled", true, CVar.ARCHIVE); + + /// <summary> + /// The preset for the game to fall back to if the selected preset could not be used, and fallback is enabled. + /// </summary> + public static readonly CVarDef<string> + GameLobbyFallbackPreset = CVarDef.Create("game.fallbackpreset", "Traitor,Extended", CVar.ARCHIVE); + + /// <summary> + /// Controls if people can win the game in Suspicion or Deathmatch. + /// </summary> + public static readonly CVarDef<bool> + GameLobbyEnableWin = CVarDef.Create("game.enablewin", true, CVar.ARCHIVE); + + /// <summary> + /// Controls the maximum number of character slots a player is allowed to have. + /// </summary> + public static readonly CVarDef<int> + GameMaxCharacterSlots = CVarDef.Create("game.maxcharacterslots", 30, CVar.ARCHIVE | CVar.SERVERONLY); + + /// <summary> + /// Controls the game map prototype to load. SS14 stores these prototypes in Prototypes/Maps. + /// </summary> + public static readonly CVarDef<string> + GameMap = CVarDef.Create("game.map", string.Empty, CVar.SERVERONLY); + + /// <summary> + /// Controls whether to use world persistence or not. + /// </summary> + public static readonly CVarDef<bool> + UsePersistence = CVarDef.Create("game.usepersistence", false, CVar.ARCHIVE); + + /// <summary> + /// If world persistence is used, what map prototype should be initially loaded. + /// If the save file exists, it replaces MapPath but everything else stays the same (station name and such). + /// </summary> + public static readonly CVarDef<string> + PersistenceMap = CVarDef.Create("game.persistencemap", "Empty", CVar.ARCHIVE); + + /// <summary> + /// Prototype to use for map pool. + /// </summary> + public static readonly CVarDef<string> + GameMapPool = CVarDef.Create("game.map_pool", "DefaultMapPool", CVar.SERVERONLY); + + /// <summary> + /// The depth of the queue used to calculate which map is next in rotation. + /// This is how long the game "remembers" that some map was put in play. Default is 16 rounds. + /// </summary> + public static readonly CVarDef<int> + GameMapMemoryDepth = CVarDef.Create("game.map_memory_depth", 16, CVar.SERVERONLY); + + /// <summary> + /// Is map rotation enabled? + /// </summary> + public static readonly CVarDef<bool> + GameMapRotation = CVarDef.Create("game.map_rotation", true, CVar.SERVERONLY); + + /// <summary> + /// If roles should be restricted based on time. + /// </summary> + public static readonly CVarDef<bool> + GameRoleTimers = CVarDef.Create("game.role_timers", true, CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// Override default role requirements using a <see cref="JobRequirementOverridePrototype"/> + /// </summary> + public static readonly CVarDef<string> + GameRoleTimerOverride = CVarDef.Create("game.role_timer_override", "", CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// If roles should be restricted based on whether or not they are whitelisted. + /// </summary> + public static readonly CVarDef<bool> + GameRoleWhitelist = CVarDef.Create("game.role_whitelist", true, CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// Whether or not disconnecting inside of a cryopod should remove the character or just store them until they reconnect. + /// </summary> + public static readonly CVarDef<bool> + GameCryoSleepRejoining = CVarDef.Create("game.cryo_sleep_rejoining", false, CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// When enabled, guests will be assigned permanent UIDs and will have their preferences stored. + /// </summary> + public static readonly CVarDef<bool> GamePersistGuests = + CVarDef.Create("game.persistguests", true, CVar.ARCHIVE | CVar.SERVERONLY); + + public static readonly CVarDef<bool> GameDiagonalMovement = + CVarDef.Create("game.diagonalmovement", true, CVar.ARCHIVE); + + public static readonly CVarDef<int> SoftMaxPlayers = + CVarDef.Create("game.soft_max_players", 30, CVar.SERVERONLY | CVar.ARCHIVE); + + /// <summary> + /// If a player gets denied connection to the server, + /// how long they are forced to wait before attempting to reconnect. + /// </summary> + public static readonly CVarDef<int> GameServerFullReconnectDelay = + CVarDef.Create("game.server_full_reconnect_delay", 30, CVar.SERVERONLY); + + /// <summary> + /// Whether or not panic bunker is currently enabled. + /// </summary> + public static readonly CVarDef<bool> PanicBunkerEnabled = + CVarDef.Create("game.panic_bunker.enabled", false, CVar.NOTIFY | CVar.REPLICATED | CVar.SERVER); + + /// <summary> + /// Whether or not the panic bunker will disable when an admin comes online. + /// </summary> + public static readonly CVarDef<bool> PanicBunkerDisableWithAdmins = + CVarDef.Create("game.panic_bunker.disable_with_admins", false, CVar.SERVERONLY); + + /// <summary> + /// Whether or not the panic bunker will enable when no admins are online. + /// </summary> + public static readonly CVarDef<bool> PanicBunkerEnableWithoutAdmins = + CVarDef.Create("game.panic_bunker.enable_without_admins", false, CVar.SERVERONLY); + + /// <summary> + /// Whether or not the panic bunker will count deadminned admins for + /// <see cref="PanicBunkerDisableWithAdmins"/> and + /// <see cref="PanicBunkerEnableWithoutAdmins"/> + /// </summary> + public static readonly CVarDef<bool> PanicBunkerCountDeadminnedAdmins = + CVarDef.Create("game.panic_bunker.count_deadminned_admins", false, CVar.SERVERONLY); + + /// <summary> + /// Show reason of disconnect for user or not. + /// </summary> + public static readonly CVarDef<bool> PanicBunkerShowReason = + CVarDef.Create("game.panic_bunker.show_reason", false, CVar.SERVERONLY); + + /// <summary> + /// Minimum age of the account (from server's PoV, so from first-seen date) in minutes. + /// </summary> + public static readonly CVarDef<int> PanicBunkerMinAccountAge = + CVarDef.Create("game.panic_bunker.min_account_age", 1440, CVar.SERVERONLY); + + /// <summary> + /// Minimal overall played time. + /// </summary> + public static readonly CVarDef<int> PanicBunkerMinOverallMinutes = + CVarDef.Create("game.panic_bunker.min_overall_minutes", 600, CVar.SERVERONLY); + + /// <summary> + /// A custom message that will be used for connections denied to the panic bunker + /// If not empty, then will overwrite <see cref="PanicBunkerShowReason"/> + /// </summary> + public static readonly CVarDef<string> PanicBunkerCustomReason = + CVarDef.Create("game.panic_bunker.custom_reason", string.Empty, CVar.SERVERONLY); + + /// <summary> + /// Allow bypassing the panic bunker if the user is whitelisted. + /// </summary> + public static readonly CVarDef<bool> BypassBunkerWhitelist = + CVarDef.Create("game.panic_bunker.whitelisted_can_bypass", true, CVar.SERVERONLY); + + /* + * TODO: Remove baby jail code once a more mature gateway process is established. This code is only being issued as a stopgap to help with potential tiding in the immediate future. + */ + + /// <summary> + /// Whether the baby jail is currently enabled. + /// </summary> + public static readonly CVarDef<bool> BabyJailEnabled = + CVarDef.Create("game.baby_jail.enabled", false, CVar.NOTIFY | CVar.REPLICATED | CVar.SERVER); + + /// <summary> + /// Show reason of disconnect for user or not. + /// </summary> + public static readonly CVarDef<bool> BabyJailShowReason = + CVarDef.Create("game.baby_jail.show_reason", false, CVar.SERVERONLY); + + /// <summary> + /// Maximum age of the account (from server's PoV, so from first-seen date) in minutes that can access baby + /// jailed servers. + /// </summary> + public static readonly CVarDef<int> BabyJailMaxAccountAge = + CVarDef.Create("game.baby_jail.max_account_age", 1440, CVar.SERVERONLY); + + /// <summary> + /// Maximum overall played time allowed to access baby jailed servers. + /// </summary> + public static readonly CVarDef<int> BabyJailMaxOverallMinutes = + CVarDef.Create("game.baby_jail.max_overall_minutes", 120, CVar.SERVERONLY); + + /// <summary> + /// A custom message that will be used for connections denied due to the baby jail. + /// If not empty, then will overwrite <see cref="BabyJailShowReason"/> + /// </summary> + public static readonly CVarDef<string> BabyJailCustomReason = + CVarDef.Create("game.baby_jail.custom_reason", string.Empty, CVar.SERVERONLY); + + /// <summary> + /// Allow bypassing the baby jail if the user is whitelisted. + /// </summary> + public static readonly CVarDef<bool> BypassBabyJailWhitelist = + CVarDef.Create("game.baby_jail.whitelisted_can_bypass", true, CVar.SERVERONLY); + + /// <summary> + /// Make people bonk when trying to climb certain objects like tables. + /// </summary> + public static readonly CVarDef<bool> GameTableBonk = + CVarDef.Create("game.table_bonk", false, CVar.REPLICATED); + + /// <summary> + /// Whether or not status icons are rendered for everyone. + /// </summary> + public static readonly CVarDef<bool> GlobalStatusIconsEnabled = + CVarDef.Create("game.global_status_icons_enabled", true, CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// Whether or not status icons are rendered on this specific client. + /// </summary> + public static readonly CVarDef<bool> LocalStatusIconsEnabled = + CVarDef.Create("game.local_status_icons_enabled", true, CVar.CLIENTONLY); + + /// <summary> + /// Whether or not coordinates on the Debug overlay should only be available to admins. + /// </summary> + public static readonly CVarDef<bool> DebugCoordinatesAdminOnly = + CVarDef.Create("game.debug_coordinates_admin_only", true, CVar.SERVER | CVar.REPLICATED); + +#if EXCEPTION_TOLERANCE + /// <summary> + /// Amount of times round start must fail before the server is shut down. + /// Set to 0 or a negative number to disable. + /// </summary> + public static readonly CVarDef<int> RoundStartFailShutdownCount = + CVarDef.Create("game.round_start_fail_shutdown_count", 5, CVar.SERVERONLY | CVar.SERVER); +#endif + + /// <summary> + /// Delay between station alert level changes. + /// </summary> + public static readonly CVarDef<int> GameAlertLevelChangeDelay = + CVarDef.Create("game.alert_level_change_delay", 30, CVar.SERVERONLY); + + /// <summary> + /// The time in seconds that the server should wait before restarting the round. + /// Defaults to 2 minutes. + /// </summary> + public static readonly CVarDef<float> RoundRestartTime = + CVarDef.Create("game.round_restart_time", 120f, CVar.SERVERONLY); + + /// <summary> + /// The prototype to use for secret weights. + /// </summary> + public static readonly CVarDef<string> SecretWeightPrototype = + CVarDef.Create("game.secret_weight_prototype", "Secret", CVar.SERVERONLY); + + /// <summary> + /// The id of the sound collection to randomly choose a sound from and play when the round ends. + /// </summary> + public static readonly CVarDef<string> RoundEndSoundCollection = + CVarDef.Create("game.round_end_sound_collection", "RoundEnd", CVar.SERVERONLY); + + /// <summary> + /// Whether or not to add every player as a global override to PVS at round end. + /// This will allow all players to see their clothing in the round screen player list screen, + /// but may cause lag during round end with very high player counts. + /// </summary> + public static readonly CVarDef<bool> RoundEndPVSOverrides = + CVarDef.Create("game.round_end_pvs_overrides", true, CVar.SERVERONLY); + + /// <summary> + /// If true, players can place objects onto tabletop games like chess boards. + /// </summary> + /// <remarks> + /// This feature is currently highly abusable and can easily be used to crash the server, + /// so it's off by default. + /// </remarks> + public static readonly CVarDef<bool> GameTabletopPlace = + CVarDef.Create("game.tabletop_place", false, CVar.SERVERONLY); + + /// <summary> + /// If true, contraband severity can be viewed in the examine menu + /// </summary> + public static readonly CVarDef<bool> ContrabandExamine = + CVarDef.Create("game.contraband_examine", true, CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// Size of the lookup area for adding entities to the context menu + /// </summary> + public static readonly CVarDef<float> GameEntityMenuLookup = + CVarDef.Create("game.entity_menu_lookup", 0.25f, CVar.CLIENTONLY | CVar.ARCHIVE); + + /// <summary> + /// Should the clients window show the server hostname in the title? + /// </summary> + public static readonly CVarDef<bool> GameHostnameInTitlebar = + CVarDef.Create("game.hostname_in_titlebar", true, CVar.SERVER | CVar.REPLICATED); + +} diff --git a/Content.Shared/CCVar/CCVars.Ghost.cs b/Content.Shared/CCVar/CCVars.Ghost.cs new file mode 100644 index 00000000000..39e7a3c4910 --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Ghost.cs @@ -0,0 +1,24 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// The time you must spend reading the rules, before the "Request" button is enabled + /// </summary> + public static readonly CVarDef<float> GhostRoleTime = + CVarDef.Create("ghost.role_time", 3f, CVar.REPLICATED | CVar.SERVER); + + /// <summary> + /// If ghost role lotteries should be made near-instanteous. + /// </summary> + public static readonly CVarDef<bool> GhostQuickLottery = + CVarDef.Create("ghost.quick_lottery", false, CVar.SERVERONLY); + + /// <summary> + /// Whether or not to kill the player's mob on ghosting, when it is in a critical health state. + /// </summary> + public static readonly CVarDef<bool> GhostKillCrit = + CVarDef.Create("ghost.kill_crit", true, CVar.REPLICATED | CVar.SERVER); +} diff --git a/Content.Shared/CCVar/CCVars.Hud.cs b/Content.Shared/CCVar/CCVars.Hud.cs new file mode 100644 index 00000000000..f96924b3496 --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Hud.cs @@ -0,0 +1,24 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + public static readonly CVarDef<int> HudTheme = + CVarDef.Create("hud.theme", 0, CVar.ARCHIVE | CVar.CLIENTONLY); + + public static readonly CVarDef<bool> HudHeldItemShow = + CVarDef.Create("hud.held_item_show", true, CVar.ARCHIVE | CVar.CLIENTONLY); + + public static readonly CVarDef<bool> CombatModeIndicatorsPointShow = + CVarDef.Create("hud.combat_mode_indicators_point_show", true, CVar.ARCHIVE | CVar.CLIENTONLY); + + public static readonly CVarDef<bool> LoocAboveHeadShow = + CVarDef.Create("hud.show_looc_above_head", true, CVar.ARCHIVE | CVar.CLIENTONLY); + + public static readonly CVarDef<float> HudHeldItemOffset = + CVarDef.Create("hud.held_item_offset", 28f, CVar.ARCHIVE | CVar.CLIENTONLY); + + public static readonly CVarDef<bool> HudFpsCounterVisible = + CVarDef.Create("hud.fps_counter_visible", false, CVar.CLIENTONLY | CVar.ARCHIVE); +} diff --git a/Content.Shared/CCVar/CCVars.Ic.cs b/Content.Shared/CCVar/CCVars.Ic.cs new file mode 100644 index 00000000000..e149e9f3e1e --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Ic.cs @@ -0,0 +1,48 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// Restricts IC character names to alphanumeric chars. + /// </summary> + public static readonly CVarDef<bool> RestrictedNames = + CVarDef.Create("ic.restricted_names", true, CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// Allows flavor text (character descriptions) + /// </summary> + public static readonly CVarDef<bool> FlavorText = + CVarDef.Create("ic.flavor_text", false, CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// Adds a period at the end of a sentence if the sentence ends in a letter. + /// </summary> + public static readonly CVarDef<bool> ChatPunctuation = + CVarDef.Create("ic.punctuation", false, CVar.SERVER); + + /// <summary> + /// Enables automatically forcing IC name rules. Uppercases the first letter of the first and last words of the name + /// </summary> + public static readonly CVarDef<bool> ICNameCase = + CVarDef.Create("ic.name_case", true, CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// Whether or not players' characters are randomly generated rather than using their selected characters in the creator. + /// </summary> + public static readonly CVarDef<bool> ICRandomCharacters = + CVarDef.Create("ic.random_characters", false, CVar.SERVER); + + /// <summary> + /// A weighted random prototype used to determine the species selected for random characters. + /// </summary> + public static readonly CVarDef<string> ICRandomSpeciesWeights = + CVarDef.Create("ic.random_species_weights", "SpeciesWeights", CVar.SERVER); + + /// <summary> + /// Control displaying SSD indicators near players + /// </summary> + public static readonly CVarDef<bool> ICShowSSDIndicator = + CVarDef.Create("ic.show_ssd_indicator", true, CVar.CLIENTONLY); +} diff --git a/Content.Shared/CCVar/CCVars.Interactions.cs b/Content.Shared/CCVar/CCVars.Interactions.cs new file mode 100644 index 00000000000..c62f81be0ca --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Interactions.cs @@ -0,0 +1,54 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// Deadzone for drag-drop interactions. + /// </summary> + public static readonly CVarDef<float> DragDropDeadZone = + CVarDef.Create("control.drag_dead_zone", 12f, CVar.CLIENTONLY | CVar.ARCHIVE); + + /// <summary> + /// Toggles whether the walking key is a toggle or a held key. + /// </summary> + public static readonly CVarDef<bool> ToggleWalk = + CVarDef.Create("control.toggle_walk", false, CVar.CLIENTONLY | CVar.ARCHIVE); + + // The rationale behind the default limit is simply that I can easily get to 7 interactions per second by just + // trying to spam toggle a light switch or lever (though the UseDelay component limits the actual effect of the + // interaction). I don't want to accidentally spam admins with alerts just because somebody is spamming a + // key manually, nor do we want to alert them just because the player is having network issues and the server + // receives multiple interactions at once. But we also want to try catch people with modified clients that spam + // many interactions on the same tick. Hence, a very short period, with a relatively high count. + + /// <summary> + /// Maximum number of interactions that a player can perform within <see cref="InteractionRateLimitCount"/> seconds + /// </summary> + public static readonly CVarDef<int> InteractionRateLimitCount = + CVarDef.Create("interaction.rate_limit_count", 5, CVar.SERVER | CVar.REPLICATED); + + /// <seealso cref="InteractionRateLimitCount"/> + public static readonly CVarDef<float> InteractionRateLimitPeriod = + CVarDef.Create("interaction.rate_limit_period", 0.5f, CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// Minimum delay (in seconds) between notifying admins about interaction rate limit violations. A negative + /// value disables admin announcements. + /// </summary> + public static readonly CVarDef<int> InteractionRateLimitAnnounceAdminsDelay = + CVarDef.Create("interaction.rate_limit_announce_admins_delay", 120, CVar.SERVERONLY); + + /// <summary> + /// Whether or not the storage UI is static and bound to the hotbar, or unbound and allowed to be dragged anywhere. + /// </summary> + public static readonly CVarDef<bool> StaticStorageUI = + CVarDef.Create("control.static_storage_ui", true, CVar.CLIENTONLY | CVar.ARCHIVE); + + /// <summary> + /// Whether or not the storage window uses a transparent or opaque sprite. + /// </summary> + public static readonly CVarDef<bool> OpaqueStorageWindow = + CVarDef.Create("control.opaque_storage_background", false, CVar.CLIENTONLY | CVar.ARCHIVE); +} diff --git a/Content.Shared/CCVar/CCVars.Interface.cs b/Content.Shared/CCVar/CCVars.Interface.cs new file mode 100644 index 00000000000..79a28e6b4e6 --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Interface.cs @@ -0,0 +1,24 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + public static readonly CVarDef<string> UIClickSound = + CVarDef.Create("interface.click_sound", "/Audio/UserInterface/click.ogg", CVar.REPLICATED); + + public static readonly CVarDef<string> UIHoverSound = + CVarDef.Create("interface.hover_sound", "/Audio/UserInterface/hover.ogg", CVar.REPLICATED); + + public static readonly CVarDef<string> UILayout = + CVarDef.Create("ui.layout", "Default", CVar.CLIENTONLY | CVar.ARCHIVE); + + public static readonly CVarDef<string> DefaultScreenChatSize = + CVarDef.Create("ui.default_chat_size", "", CVar.CLIENTONLY | CVar.ARCHIVE); + + public static readonly CVarDef<string> SeparatedScreenChatSize = + CVarDef.Create("ui.separated_chat_size", "0.6,0", CVar.CLIENTONLY | CVar.ARCHIVE); + + public static readonly CVarDef<bool> OutlineEnabled = + CVarDef.Create("outline.enabled", true, CVar.CLIENTONLY); +} diff --git a/Content.Shared/CCVar/CCVars.Mapping.cs b/Content.Shared/CCVar/CCVars.Mapping.cs new file mode 100644 index 00000000000..06cd2870ba2 --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Mapping.cs @@ -0,0 +1,24 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// Will mapping mode enable autosaves when it's activated? + /// </summary> + public static readonly CVarDef<bool> + AutosaveEnabled = CVarDef.Create("mapping.autosave", true, CVar.SERVERONLY); + + /// <summary> + /// Autosave interval in seconds. + /// </summary> + public static readonly CVarDef<float> + AutosaveInterval = CVarDef.Create("mapping.autosave_interval", 600f, CVar.SERVERONLY); + + /// <summary> + /// Directory in server user data to save to. Saves will be inside folders in this directory. + /// </summary> + public static readonly CVarDef<string> + AutosaveDirectory = CVarDef.Create("mapping.autosave_dir", "Autosaves", CVar.SERVERONLY); +} diff --git a/Content.Shared/CCVar/CCVars.Midi.cs b/Content.Shared/CCVar/CCVars.Midi.cs new file mode 100644 index 00000000000..4ca4bfd6f86 --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Midi.cs @@ -0,0 +1,18 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + public static readonly CVarDef<int> MaxMidiEventsPerSecond = + CVarDef.Create("midi.max_events_per_second", 1000, CVar.REPLICATED | CVar.SERVER); + + public static readonly CVarDef<int> MaxMidiEventsPerBatch = + CVarDef.Create("midi.max_events_per_batch", 60, CVar.REPLICATED | CVar.SERVER); + + public static readonly CVarDef<int> MaxMidiBatchesDropped = + CVarDef.Create("midi.max_batches_dropped", 1, CVar.SERVERONLY); + + public static readonly CVarDef<int> MaxMidiLaggedBatches = + CVarDef.Create("midi.max_lagged_batches", 8, CVar.SERVERONLY); +} diff --git a/Content.Shared/CCVar/CCVars.Misc.cs b/Content.Shared/CCVar/CCVars.Misc.cs new file mode 100644 index 00000000000..3d597c74274 --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Misc.cs @@ -0,0 +1,97 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + public static readonly CVarDef<bool> HolidaysEnabled = CVarDef.Create("holidays.enabled", true, CVar.SERVERONLY); + public static readonly CVarDef<bool> BrandingSteam = CVarDef.Create("branding.steam", false, CVar.CLIENTONLY); + public static readonly CVarDef<int> EntityMenuGroupingType = CVarDef.Create("entity_menu", 0, CVar.CLIENTONLY); + + /// <summary> + /// Should we pre-load all of the procgen atlasses. + /// </summary> + public static readonly CVarDef<bool> ProcgenPreload = + CVarDef.Create("procgen.preload", true, CVar.SERVERONLY); + + /// <summary> + /// Enabled: Cloning has 70% cost and reclaimer will refuse to reclaim corpses with souls. (For LRP). + /// Disabled: Cloning has full biomass cost and reclaimer can reclaim corpses with souls. (Playtested and balanced for MRP+). + /// </summary> + public static readonly CVarDef<bool> BiomassEasyMode = + CVarDef.Create("biomass.easy_mode", true, CVar.SERVERONLY); + + /// <summary> + /// A scale factor applied to a grid's bounds when trying to find a spot to randomly generate an anomaly. + /// </summary> + public static readonly CVarDef<float> AnomalyGenerationGridBoundsScale = + CVarDef.Create("anomaly.generation_grid_bounds_scale", 0.6f, CVar.SERVERONLY); + + /// <summary> + /// How long a client can go without any input before being considered AFK. + /// </summary> + public static readonly CVarDef<float> AfkTime = + CVarDef.Create("afk.time", 60f, CVar.SERVERONLY); + + /// <summary> + /// Flavor limit. This is to ensure that having a large mass of flavors in + /// some food object won't spam a user with flavors. + /// </summary> + public static readonly CVarDef<int> + FlavorLimit = CVarDef.Create("flavor.limit", 10, CVar.SERVERONLY); + + public static readonly CVarDef<string> DestinationFile = + CVarDef.Create("autogen.destination_file", "", CVar.SERVER | CVar.SERVERONLY); + + /// <summary> + /// Whether uploaded files will be stored in the server's database. + /// This is useful to keep "logs" on what files admins have uploaded in the past. + /// </summary> + public static readonly CVarDef<bool> ResourceUploadingStoreEnabled = + CVarDef.Create("netres.store_enabled", true, CVar.SERVER | CVar.SERVERONLY); + + /// <summary> + /// Numbers of days before stored uploaded files are deleted. Set to zero or negative to disable auto-delete. + /// This is useful to free some space automatically. Auto-deletion runs only on server boot. + /// </summary> + public static readonly CVarDef<int> ResourceUploadingStoreDeletionDays = + CVarDef.Create("netres.store_deletion_days", 30, CVar.SERVER | CVar.SERVERONLY); + + /// <summary> + /// If a server update restart is pending, the delay after the last player leaves before we actually restart. In seconds. + /// </summary> + public static readonly CVarDef<float> UpdateRestartDelay = + CVarDef.Create("update.restart_delay", 20f, CVar.SERVERONLY); + + /// <summary> + /// If fire alarms should have all access, or if activating/resetting these + /// should be restricted to what is dictated on a player's access card. + /// Defaults to true. + /// </summary> + public static readonly CVarDef<bool> FireAlarmAllAccess = + CVarDef.Create("firealarm.allaccess", true, CVar.SERVERONLY); + + /// <summary> + /// Time between play time autosaves, in seconds. + /// </summary> + public static readonly CVarDef<float> + PlayTimeSaveInterval = CVarDef.Create("playtime.save_interval", 900f, CVar.SERVERONLY); + + /// <summary> + /// The maximum amount of time the entity GC can process, in ms. + /// </summary> + public static readonly CVarDef<int> GCMaximumTimeMs = + CVarDef.Create("entgc.maximum_time_ms", 5, CVar.SERVERONLY); + + public static readonly CVarDef<bool> GatewayGeneratorEnabled = + CVarDef.Create("gateway.generator_enabled", true); + + public static readonly CVarDef<string> TippyEntity = + CVarDef.Create("tippy.entity", "Tippy", CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// The number of seconds that must pass for a single entity to be able to point at something again. + /// </summary> + public static readonly CVarDef<float> PointingCooldownSeconds = + CVarDef.Create("pointing.cooldown_seconds", 0.5f, CVar.SERVERONLY); +} diff --git a/Content.Shared/CCVar/CCVars.NPC.cs b/Content.Shared/CCVar/CCVars.NPC.cs new file mode 100644 index 00000000000..f0d5520195d --- /dev/null +++ b/Content.Shared/CCVar/CCVars.NPC.cs @@ -0,0 +1,16 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + public static readonly CVarDef<int> NPCMaxUpdates = + CVarDef.Create("npc.max_updates", 128); + + public static readonly CVarDef<bool> NPCEnabled = CVarDef.Create("npc.enabled", true); + + /// <summary> + /// Should NPCs pathfind when steering. For debug purposes. + /// </summary> + public static readonly CVarDef<bool> NPCPathfinding = CVarDef.Create("npc.pathfinding", true); +} diff --git a/Content.Shared/CCVar/CCVars.Net.cs b/Content.Shared/CCVar/CCVars.Net.cs new file mode 100644 index 00000000000..b7465def2eb --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Net.cs @@ -0,0 +1,15 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + public static readonly CVarDef<float> NetAtmosDebugOverlayTickRate = + CVarDef.Create("net.atmosdbgoverlaytickrate", 3.0f); + + public static readonly CVarDef<float> NetGasOverlayTickRate = + CVarDef.Create("net.gasoverlaytickrate", 3.0f); + + public static readonly CVarDef<int> GasOverlayThresholds = + CVarDef.Create("net.gasoverlaythresholds", 20); +} diff --git a/Content.Shared/CCVar/CCVars.Parallax.cs b/Content.Shared/CCVar/CCVars.Parallax.cs new file mode 100644 index 00000000000..9b19c8f4943 --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Parallax.cs @@ -0,0 +1,15 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + public static readonly CVarDef<bool> ParallaxEnabled = + CVarDef.Create("parallax.enabled", true, CVar.CLIENTONLY); + + public static readonly CVarDef<bool> ParallaxDebug = + CVarDef.Create("parallax.debug", false, CVar.CLIENTONLY); + + public static readonly CVarDef<bool> ParallaxLowQuality = + CVarDef.Create("parallax.low_quality", false, CVar.ARCHIVE | CVar.CLIENTONLY); +} diff --git a/Content.Shared/CCVar/CCVars.Physics.cs b/Content.Shared/CCVar/CCVars.Physics.cs new file mode 100644 index 00000000000..379676b5df9 --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Physics.cs @@ -0,0 +1,27 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// When a mob is walking should its X / Y movement be relative to its parent (true) or the map (false). + /// </summary> + public static readonly CVarDef<bool> RelativeMovement = + CVarDef.Create("physics.relative_movement", true, CVar.ARCHIVE | CVar.REPLICATED | CVar.SERVER); + + public static readonly CVarDef<float> TileFrictionModifier = + CVarDef.Create("physics.tile_friction", 40.0f, CVar.ARCHIVE | CVar.REPLICATED | CVar.SERVER); + + public static readonly CVarDef<float> StopSpeed = + CVarDef.Create("physics.stop_speed", 0.1f, CVar.ARCHIVE | CVar.REPLICATED | CVar.SERVER); + + /// <summary> + /// Whether mobs can push objects like lockers. + /// </summary> + /// <remarks> + /// Technically client doesn't need to know about it but this may prevent a bug in the distant future so it stays. + /// </remarks> + public static readonly CVarDef<bool> MobPushing = + CVarDef.Create("physics.mob_pushing", false, CVar.REPLICATED | CVar.SERVER); +} diff --git a/Content.Shared/CCVar/CCVars.Radiation.cs b/Content.Shared/CCVar/CCVars.Radiation.cs new file mode 100644 index 00000000000..dfcce15b2f9 --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Radiation.cs @@ -0,0 +1,32 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// What is the smallest radiation dose in rads that can be received by object. + /// Extremely small values may impact performance. + /// </summary> + public static readonly CVarDef<float> RadiationMinIntensity = + CVarDef.Create("radiation.min_intensity", 0.1f, CVar.SERVERONLY); + + /// <summary> + /// Rate of radiation system update in seconds. + /// </summary> + public static readonly CVarDef<float> RadiationGridcastUpdateRate = + CVarDef.Create("radiation.gridcast.update_rate", 1.0f, CVar.SERVERONLY); + + /// <summary> + /// If both radiation source and receiver are placed on same grid, ignore grids between them. + /// May get inaccurate result in some cases, but greatly boost performance in general. + /// </summary> + public static readonly CVarDef<bool> RadiationGridcastSimplifiedSameGrid = + CVarDef.Create("radiation.gridcast.simplified_same_grid", true, CVar.SERVERONLY); + + /// <summary> + /// Max distance that radiation ray can travel in meters. + /// </summary> + public static readonly CVarDef<float> RadiationGridcastMaxDistance = + CVarDef.Create("radiation.gridcast.max_distance", 50f, CVar.SERVERONLY); +} diff --git a/Content.Shared/CCVar/CCVars.Replays.cs b/Content.Shared/CCVar/CCVars.Replays.cs new file mode 100644 index 00000000000..64f47e8ad8c --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Replays.cs @@ -0,0 +1,43 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// Whether or not to record admin chat. If replays are being publicly distributes, this should probably be + /// false. + /// </summary> + public static readonly CVarDef<bool> ReplayRecordAdminChat = + CVarDef.Create("replay.record_admin_chat", false, CVar.ARCHIVE); + + /// <summary> + /// Automatically record full rounds as replays. + /// </summary> + public static readonly CVarDef<bool> ReplayAutoRecord = + CVarDef.Create("replay.auto_record", false, CVar.SERVERONLY); + + /// <summary> + /// The file name to record automatic replays to. The path is relative to <see cref="CVars.ReplayDirectory"/>. + /// </summary> + /// <remarks> + /// <para> + /// If the path includes slashes, directories will be automatically created if necessary. + /// </para> + /// <para> + /// A number of substitutions can be used to automatically fill in the file name: <c>{year}</c>, <c>{month}</c>, <c>{day}</c>, <c>{hour}</c>, <c>{minute}</c>, <c>{round}</c>. + /// </para> + /// </remarks> + public static readonly CVarDef<string> ReplayAutoRecordName = + CVarDef.Create("replay.auto_record_name", + "{year}_{month}_{day}-{hour}_{minute}-round_{round}.zip", + CVar.SERVERONLY); + + /// <summary> + /// Path that, if provided, automatic replays are initially recorded in. + /// When the recording is done, the file is moved into its final destination. + /// Unless this path is rooted, it will be relative to <see cref="CVars.ReplayDirectory"/>. + /// </summary> + public static readonly CVarDef<string> ReplayAutoRecordTempDir = + CVarDef.Create("replay.auto_record_temp_dir", "", CVar.SERVERONLY); +} diff --git a/Content.Shared/CCVar/CCVars.Salvage.cs b/Content.Shared/CCVar/CCVars.Salvage.cs new file mode 100644 index 00000000000..ddc332786ba --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Salvage.cs @@ -0,0 +1,18 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// Duration for missions + /// </summary> + public static readonly CVarDef<float> + SalvageExpeditionDuration = CVarDef.Create("salvage.expedition_duration", 660f, CVar.REPLICATED); + + /// <summary> + /// Cooldown for missions. + /// </summary> + public static readonly CVarDef<float> + SalvageExpeditionCooldown = CVarDef.Create("salvage.expedition_cooldown", 780f, CVar.REPLICATED); +} diff --git a/Content.Shared/CCVar/CCVars.Server.cs b/Content.Shared/CCVar/CCVars.Server.cs new file mode 100644 index 00000000000..2c861584afc --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Server.cs @@ -0,0 +1,43 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /* + * Server + */ + + /// <summary> + /// Change this to have the changelog and rules "last seen" date stored separately. + /// </summary> + public static readonly CVarDef<string> ServerId = + CVarDef.Create("server.id", "unknown_server_id", CVar.REPLICATED | CVar.SERVER); + + /// <summary> + /// Guide Entry Prototype ID to be displayed as the server rules. + /// </summary> + public static readonly CVarDef<string> RulesFile = + CVarDef.Create("server.rules_file", "DefaultRuleset", CVar.REPLICATED | CVar.SERVER); + + /// <summary> + /// Guide entry that is displayed by default when a guide is opened. + /// </summary> + public static readonly CVarDef<string> DefaultGuide = + CVarDef.Create("server.default_guide", "NewPlayer", CVar.REPLICATED | CVar.SERVER); + + /// <summary> + /// If greater than 0, automatically restart the server after this many minutes of uptime. + /// </summary> + /// <remarks> + /// <para> + /// This is intended to work around various bugs and performance issues caused by long continuous server uptime. + /// </para> + /// <para> + /// This uses the same non-disruptive logic as update restarts, + /// i.e. the game will only restart at round end or when there is nobody connected. + /// </para> + /// </remarks> + public static readonly CVarDef<int> ServerUptimeRestartMinutes = + CVarDef.Create("server.uptime_restart_minutes", 0, CVar.SERVERONLY); +} diff --git a/Content.Shared/CCVar/CCVars.Shuttle.cs b/Content.Shared/CCVar/CCVars.Shuttle.cs new file mode 100644 index 00000000000..f66fe9ca598 --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Shuttle.cs @@ -0,0 +1,176 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// If true then the camera will match the grid / map and is unchangeable. + /// - When traversing grids it will snap to 0 degrees rotation. + /// False means the player has control over the camera rotation. + /// - When traversing grids it will snap to the nearest cardinal which will generally be imperceptible. + /// </summary> + public static readonly CVarDef<bool> CameraRotationLocked = + CVarDef.Create("shuttle.camera_rotation_locked", false, CVar.REPLICATED); + + /// <summary> + /// Whether the arrivals terminal should be on a planet map. + /// </summary> + public static readonly CVarDef<bool> ArrivalsPlanet = + CVarDef.Create("shuttle.arrivals_planet", true, CVar.SERVERONLY); + + /// <summary> + /// Whether the arrivals shuttle is enabled. + /// </summary> + public static readonly CVarDef<bool> ArrivalsShuttles = + CVarDef.Create("shuttle.arrivals", true, CVar.SERVERONLY); + + /// <summary> + /// The map to use for the arrivals station. + /// </summary> + public static readonly CVarDef<string> ArrivalsMap = + CVarDef.Create("shuttle.arrivals_map", "/Maps/Misc/terminal.yml", CVar.SERVERONLY); + + /// <summary> + /// Cooldown between arrivals departures. This should be longer than the FTL time or it will double cycle. + /// </summary> + public static readonly CVarDef<float> ArrivalsCooldown = + CVarDef.Create("shuttle.arrivals_cooldown", 50f, CVar.SERVERONLY); + + /// <summary> + /// Are players allowed to return on the arrivals shuttle. + /// </summary> + public static readonly CVarDef<bool> ArrivalsReturns = + CVarDef.Create("shuttle.arrivals_returns", false, CVar.SERVERONLY); + + /// <summary> + /// Should all players who spawn at arrivals have godmode until they leave the map? + /// </summary> + public static readonly CVarDef<bool> GodmodeArrivals = + CVarDef.Create("shuttle.godmode_arrivals", false, CVar.SERVERONLY); + + /// <summary> + /// If a grid is split then hide any smaller ones under this mass (kg) from the map. + /// This is useful to avoid split grids spamming out labels. + /// </summary> + public static readonly CVarDef<int> HideSplitGridsUnder = + CVarDef.Create("shuttle.hide_split_grids_under", 30, CVar.SERVERONLY); + + /// <summary> + /// Whether to automatically spawn escape shuttles. + /// </summary> + public static readonly CVarDef<bool> GridFill = + CVarDef.Create("shuttle.grid_fill", true, CVar.SERVERONLY); + + /// <summary> + /// Whether to automatically preloading grids by GridPreloaderSystem + /// </summary> + public static readonly CVarDef<bool> PreloadGrids = + CVarDef.Create("shuttle.preload_grids", true, CVar.SERVERONLY); + + /// <summary> + /// How long the warmup time before FTL start should be. + /// </summary> + public static readonly CVarDef<float> FTLStartupTime = + CVarDef.Create("shuttle.startup_time", 5.5f, CVar.SERVERONLY); + + /// <summary> + /// How long a shuttle spends in FTL. + /// </summary> + public static readonly CVarDef<float> FTLTravelTime = + CVarDef.Create("shuttle.travel_time", 20f, CVar.SERVERONLY); + + /// <summary> + /// How long the final stage of FTL before arrival should be. + /// </summary> + public static readonly CVarDef<float> FTLArrivalTime = + CVarDef.Create("shuttle.arrival_time", 5f, CVar.SERVERONLY); + + /// <summary> + /// How much time needs to pass before a shuttle can FTL again. + /// </summary> + public static readonly CVarDef<float> FTLCooldown = + CVarDef.Create("shuttle.cooldown", 10f, CVar.SERVERONLY); + + /// <summary> + /// The maximum <see cref="PhysicsComponent.Mass"/> a grid can have before it becomes unable to FTL. + /// Any value equal to or less than zero will disable this check. + /// </summary> + public static readonly CVarDef<float> FTLMassLimit = + CVarDef.Create("shuttle.mass_limit", 300f, CVar.SERVERONLY); + + /// <summary> + /// How long to knock down entities for if they aren't buckled when FTL starts and stops. + /// </summary> + public static readonly CVarDef<float> HyperspaceKnockdownTime = + CVarDef.Create("shuttle.hyperspace_knockdown_time", 5f, CVar.SERVERONLY); + + /// <summary> + /// Is the emergency shuttle allowed to be early launched. + /// </summary> + public static readonly CVarDef<bool> EmergencyEarlyLaunchAllowed = + CVarDef.Create("shuttle.emergency_early_launch_allowed", false, CVar.SERVERONLY); + + /// <summary> + /// How long the emergency shuttle remains docked with the station, in seconds. + /// </summary> + public static readonly CVarDef<float> EmergencyShuttleDockTime = + CVarDef.Create("shuttle.emergency_dock_time", 180f, CVar.SERVERONLY); + + /// <summary> + /// If the emergency shuttle can't dock at a priority port, the dock time will be multiplied with this value. + /// </summary> + public static readonly CVarDef<float> EmergencyShuttleDockTimeMultiplierOtherDock = + CVarDef.Create("shuttle.emergency_dock_time_multiplier_other_dock", 1.6667f, CVar.SERVERONLY); + + /// <summary> + /// If the emergency shuttle can't dock at all, the dock time will be multiplied with this value. + /// </summary> + public static readonly CVarDef<float> EmergencyShuttleDockTimeMultiplierNoDock = + CVarDef.Create("shuttle.emergency_dock_time_multiplier_no_dock", 2f, CVar.SERVERONLY); + + /// <summary> + /// How long after the console is authorized for the shuttle to early launch. + /// </summary> + public static readonly CVarDef<float> EmergencyShuttleAuthorizeTime = + CVarDef.Create("shuttle.emergency_authorize_time", 10f, CVar.SERVERONLY); + + /// <summary> + /// The minimum time for the emergency shuttle to arrive at centcomm. + /// Actual minimum travel time cannot be less than <see cref="ShuttleSystem.DefaultArrivalTime"/> + /// </summary> + public static readonly CVarDef<float> EmergencyShuttleMinTransitTime = + CVarDef.Create("shuttle.emergency_transit_time_min", 60f, CVar.SERVERONLY); + + /// <summary> + /// The maximum time for the emergency shuttle to arrive at centcomm. + /// </summary> + public static readonly CVarDef<float> EmergencyShuttleMaxTransitTime = + CVarDef.Create("shuttle.emergency_transit_time_max", 180f, CVar.SERVERONLY); + + /// <summary> + /// Whether the emergency shuttle is enabled or should the round just end. + /// </summary> + public static readonly CVarDef<bool> EmergencyShuttleEnabled = + CVarDef.Create("shuttle.emergency", true, CVar.SERVERONLY); + + /// <summary> + /// The percentage of time passed from the initial call to when the shuttle can no longer be recalled. + /// ex. a call time of 10min and turning point of 0.5 means the shuttle cannot be recalled after 5 minutes. + /// </summary> + public static readonly CVarDef<float> EmergencyRecallTurningPoint = + CVarDef.Create("shuttle.recall_turning_point", 0.5f, CVar.SERVERONLY); + + /// <summary> + /// Time in minutes after round start to auto-call the shuttle. Set to zero to disable. + /// </summary> + public static readonly CVarDef<int> EmergencyShuttleAutoCallTime = + CVarDef.Create("shuttle.auto_call_time", 90, CVar.SERVERONLY); + + /// <summary> + /// Time in minutes after the round was extended (by recalling the shuttle) to call + /// the shuttle again. + /// </summary> + public static readonly CVarDef<int> EmergencyShuttleAutoCallExtensionTime = + CVarDef.Create("shuttle.auto_call_extension_time", 45, CVar.SERVERONLY); +} diff --git a/Content.Shared/CCVar/CCVars.Sounds.cs b/Content.Shared/CCVar/CCVars.Sounds.cs new file mode 100644 index 00000000000..73d9d3852f1 --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Sounds.cs @@ -0,0 +1,34 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + public static readonly CVarDef<bool> LobbyMusicEnabled = + CVarDef.Create("ambience.lobby_music_enabled", true, CVar.ARCHIVE | CVar.CLIENTONLY); + + public static readonly CVarDef<bool> EventMusicEnabled = + CVarDef.Create("ambience.event_music_enabled", true, CVar.ARCHIVE | CVar.CLIENTONLY); + + /// <summary> + /// Round end sound (APC Destroyed) + /// </summary> + public static readonly CVarDef<bool> RestartSoundsEnabled = + CVarDef.Create("ambience.restart_sounds_enabled", true, CVar.ARCHIVE | CVar.CLIENTONLY); + + + + public static readonly CVarDef<bool> AdminSoundsEnabled = + CVarDef.Create("audio.admin_sounds_enabled", true, CVar.ARCHIVE | CVar.CLIENTONLY); + + public static readonly CVarDef<string> AdminChatSoundPath = + CVarDef.Create("audio.admin_chat_sound_path", + "/Audio/Items/pop.ogg", + CVar.ARCHIVE | CVar.CLIENT | CVar.REPLICATED); + + public static readonly CVarDef<float> AdminChatSoundVolume = + CVarDef.Create("audio.admin_chat_sound_volume", -5f, CVar.ARCHIVE | CVar.CLIENT | CVar.REPLICATED); + + public static readonly CVarDef<string> AHelpSound = + CVarDef.Create("audio.ahelp_sound", "/Audio/Effects/adminhelp.ogg", CVar.ARCHIVE | CVar.CLIENTONLY); +} diff --git a/Content.Shared/CCVar/CCVars.Status.cs b/Content.Shared/CCVar/CCVars.Status.cs new file mode 100644 index 00000000000..007f678106a --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Status.cs @@ -0,0 +1,13 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + public static readonly CVarDef<string> StatusMoMMIUrl = + CVarDef.Create("status.mommiurl", "", CVar.SERVERONLY); + + public static readonly CVarDef<string> StatusMoMMIPassword = + CVarDef.Create("status.mommipassword", "", CVar.SERVERONLY | CVar.CONFIDENTIAL); + +} diff --git a/Content.Shared/CCVar/CCVars.Tips.cs b/Content.Shared/CCVar/CCVars.Tips.cs new file mode 100644 index 00000000000..61e6342061f --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Tips.cs @@ -0,0 +1,40 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// Whether tips being shown is enabled at all. + /// </summary> + public static readonly CVarDef<bool> TipsEnabled = + CVarDef.Create("tips.enabled", true); + + /// <summary> + /// The dataset prototype to use when selecting a random tip. + /// </summary> + public static readonly CVarDef<string> TipsDataset = + CVarDef.Create("tips.dataset", "Tips"); + + /// <summary> + /// The number of seconds between each tip being displayed when the round is not actively going + /// (i.e. postround or lobby) + /// </summary> + public static readonly CVarDef<float> TipFrequencyOutOfRound = + CVarDef.Create("tips.out_of_game_frequency", 60f * 1.5f); + + /// <summary> + /// The number of seconds between each tip being displayed when the round is actively going + /// </summary> + public static readonly CVarDef<float> TipFrequencyInRound = + CVarDef.Create("tips.in_game_frequency", 60f * 60); + + public static readonly CVarDef<string> LoginTipsDataset = + CVarDef.Create("tips.login_dataset", "Tips"); + + /// <summary> + /// The chance for Tippy to replace a normal tip message. + /// </summary> + public static readonly CVarDef<float> TipsTippyChance = + CVarDef.Create("tips.tippy_chance", 0.01f); +} diff --git a/Content.Shared/CCVar/CCVars.Viewport.cs b/Content.Shared/CCVar/CCVars.Viewport.cs new file mode 100644 index 00000000000..d94394d2a75 --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Viewport.cs @@ -0,0 +1,33 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + public static readonly CVarDef<bool> ViewportStretch = + CVarDef.Create("viewport.stretch", true, CVar.CLIENTONLY | CVar.ARCHIVE); + + public static readonly CVarDef<int> ViewportFixedScaleFactor = + CVarDef.Create("viewport.fixed_scale_factor", 2, CVar.CLIENTONLY | CVar.ARCHIVE); + + public static readonly CVarDef<int> ViewportSnapToleranceMargin = + CVarDef.Create("viewport.snap_tolerance_margin", 64, CVar.CLIENTONLY | CVar.ARCHIVE); + + public static readonly CVarDef<int> ViewportSnapToleranceClip = + CVarDef.Create("viewport.snap_tolerance_clip", 32, CVar.CLIENTONLY | CVar.ARCHIVE); + + public static readonly CVarDef<bool> ViewportScaleRender = + CVarDef.Create("viewport.scale_render", true, CVar.CLIENTONLY | CVar.ARCHIVE); + + public static readonly CVarDef<int> ViewportMinimumWidth = + CVarDef.Create("viewport.minimum_width", 15, CVar.REPLICATED | CVar.SERVER); + + public static readonly CVarDef<int> ViewportMaximumWidth = + CVarDef.Create("viewport.maximum_width", 21, CVar.REPLICATED | CVar.SERVER); + + public static readonly CVarDef<int> ViewportWidth = + CVarDef.Create("viewport.width", 21, CVar.CLIENTONLY | CVar.ARCHIVE); + + public static readonly CVarDef<bool> ViewportVerticalFit = + CVarDef.Create("viewport.vertical_fit", true, CVar.CLIENTONLY | CVar.ARCHIVE); +} diff --git a/Content.Shared/CCVar/CCVars.Vote.cs b/Content.Shared/CCVar/CCVars.Vote.cs new file mode 100644 index 00000000000..ee9fee7d3db --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Vote.cs @@ -0,0 +1,180 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// Allows enabling/disabling player-started votes for ultimate authority + /// </summary> + public static readonly CVarDef<bool> VoteEnabled = + CVarDef.Create("vote.enabled", true, CVar.SERVERONLY); + + /// <summary> + /// See vote.enabled, but specific to restart votes + /// </summary> + public static readonly CVarDef<bool> VoteRestartEnabled = + CVarDef.Create("vote.restart_enabled", true, CVar.SERVERONLY); + + /// <summary> + /// Config for when the restart vote should be allowed to be called regardless with less than this amount of players. + /// </summary> + public static readonly CVarDef<int> VoteRestartMaxPlayers = + CVarDef.Create("vote.restart_max_players", 20, CVar.SERVERONLY); + + /// <summary> + /// Config for when the restart vote should be allowed to be called based on percentage of ghosts. + /// </summary> + public static readonly CVarDef<int> VoteRestartGhostPercentage = + CVarDef.Create("vote.restart_ghost_percentage", 55, CVar.SERVERONLY); + + /// <summary> + /// See vote.enabled, but specific to preset votes + /// </summary> + public static readonly CVarDef<bool> VotePresetEnabled = + CVarDef.Create("vote.preset_enabled", true, CVar.SERVERONLY); + + /// <summary> + /// See vote.enabled, but specific to map votes + /// </summary> + public static readonly CVarDef<bool> VoteMapEnabled = + CVarDef.Create("vote.map_enabled", false, CVar.SERVERONLY); + + /// <summary> + /// The required ratio of the server that must agree for a restart round vote to go through. + /// </summary> + public static readonly CVarDef<float> VoteRestartRequiredRatio = + CVarDef.Create("vote.restart_required_ratio", 0.85f, CVar.SERVERONLY); + + /// <summary> + /// Whether or not to prevent the restart vote from having any effect when there is an online admin + /// </summary> + public static readonly CVarDef<bool> VoteRestartNotAllowedWhenAdminOnline = + CVarDef.Create("vote.restart_not_allowed_when_admin_online", true, CVar.SERVERONLY); + + /// <summary> + /// The delay which two votes of the same type are allowed to be made by separate people, in seconds. + /// </summary> + public static readonly CVarDef<float> VoteSameTypeTimeout = + CVarDef.Create("vote.same_type_timeout", 240f, CVar.SERVERONLY); + + /// <summary> + /// Sets the duration of the map vote timer. + /// </summary> + public static readonly CVarDef<int> + VoteTimerMap = CVarDef.Create("vote.timermap", 90, CVar.SERVERONLY); + + /// <summary> + /// Sets the duration of the restart vote timer. + /// </summary> + public static readonly CVarDef<int> + VoteTimerRestart = CVarDef.Create("vote.timerrestart", 60, CVar.SERVERONLY); + + /// <summary> + /// Sets the duration of the gamemode/preset vote timer. + /// </summary> + public static readonly CVarDef<int> + VoteTimerPreset = CVarDef.Create("vote.timerpreset", 30, CVar.SERVERONLY); + + /// <summary> + /// Sets the duration of the map vote timer when ALONE. + /// </summary> + public static readonly CVarDef<int> + VoteTimerAlone = CVarDef.Create("vote.timeralone", 10, CVar.SERVERONLY); + + /// <summary> + /// Allows enabling/disabling player-started votekick for ultimate authority + /// </summary> + public static readonly CVarDef<bool> VotekickEnabled = + CVarDef.Create("votekick.enabled", true, CVar.SERVERONLY); + + /// <summary> + /// Config for when the votekick should be allowed to be called based on number of eligible voters. + /// </summary> + public static readonly CVarDef<int> VotekickEligibleNumberRequirement = + CVarDef.Create("votekick.eligible_number", 5, CVar.SERVERONLY); + + /// <summary> + /// Whether a votekick initiator must be a ghost or not. + /// </summary> + public static readonly CVarDef<bool> VotekickInitiatorGhostRequirement = + CVarDef.Create("votekick.initiator_ghost_requirement", true, CVar.SERVERONLY); + + /// <summary> + /// Should the initiator be whitelisted to initiate a votekick? + /// </summary> + public static readonly CVarDef<bool> VotekickInitiatorWhitelistedRequirement = + CVarDef.Create("votekick.initiator_whitelist_requirement", true, CVar.SERVERONLY); + + /// <summary> + /// Should the initiator be able to start a votekick if they are bellow the votekick.voter_playtime requirement? + /// </summary> + public static readonly CVarDef<bool> VotekickInitiatorTimeRequirement = + CVarDef.Create("votekick.initiator_time_requirement", false, CVar.SERVERONLY); + + /// <summary> + /// Whether a votekick voter must be a ghost or not. + /// </summary> + public static readonly CVarDef<bool> VotekickVoterGhostRequirement = + CVarDef.Create("votekick.voter_ghost_requirement", true, CVar.SERVERONLY); + + /// <summary> + /// Config for how many hours playtime a player must have to be able to vote on a votekick. + /// </summary> + public static readonly CVarDef<int> VotekickEligibleVoterPlaytime = + CVarDef.Create("votekick.voter_playtime", 100, CVar.SERVERONLY); + + /// <summary> + /// Config for how many seconds a player must have been dead to initiate a votekick / be able to vote on a votekick. + /// </summary> + public static readonly CVarDef<int> VotekickEligibleVoterDeathtime = + CVarDef.Create("votekick.voter_deathtime", 30, CVar.REPLICATED | CVar.SERVER); + + /// <summary> + /// The required ratio of eligible voters that must agree for a votekick to go through. + /// </summary> + public static readonly CVarDef<float> VotekickRequiredRatio = + CVarDef.Create("votekick.required_ratio", 0.6f, CVar.SERVERONLY); + + /// <summary> + /// Whether or not to prevent the votekick from having any effect when there is an online admin. + /// </summary> + public static readonly CVarDef<bool> VotekickNotAllowedWhenAdminOnline = + CVarDef.Create("votekick.not_allowed_when_admin_online", true, CVar.SERVERONLY); + + /// <summary> + /// The delay for which two votekicks are allowed to be made by separate people, in seconds. + /// </summary> + public static readonly CVarDef<float> VotekickTimeout = + CVarDef.Create("votekick.timeout", 120f, CVar.SERVERONLY); + + /// <summary> + /// Sets the duration of the votekick vote timer. + /// </summary> + public static readonly CVarDef<int> + VotekickTimer = CVarDef.Create("votekick.timer", 60, CVar.SERVERONLY); + + /// <summary> + /// Config for how many hours playtime a player must have to get protection from the Raider votekick type when playing as an antag. + /// </summary> + public static readonly CVarDef<int> VotekickAntagRaiderProtection = + CVarDef.Create("votekick.antag_raider_protection", 10, CVar.SERVERONLY); + + /// <summary> + /// Default severity for votekick bans + /// </summary> + public static readonly CVarDef<string> VotekickBanDefaultSeverity = + CVarDef.Create("votekick.ban_default_severity", "High", CVar.ARCHIVE | CVar.SERVER | CVar.REPLICATED); + + /// <summary> + /// Duration of a ban caused by a votekick (in minutes). + /// </summary> + public static readonly CVarDef<int> VotekickBanDuration = + CVarDef.Create("votekick.ban_duration", 180, CVar.SERVERONLY); + + /// <summary> + /// Whether the ghost requirement settings for votekicks should be ignored for the lobby. + /// </summary> + public static readonly CVarDef<bool> VotekickIgnoreGhostReqInLobby = + CVarDef.Create("votekick.ignore_ghost_req_in_lobby", true, CVar.SERVERONLY); +} diff --git a/Content.Shared/CCVar/CCVars.Whitelist.cs b/Content.Shared/CCVar/CCVars.Whitelist.cs new file mode 100644 index 00000000000..7a7a5206a11 --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Whitelist.cs @@ -0,0 +1,19 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// Controls whether the server will deny any players that are not whitelisted in the DB. + /// </summary> + public static readonly CVarDef<bool> WhitelistEnabled = + CVarDef.Create("whitelist.enabled", false, CVar.SERVERONLY); + + /// <summary> + /// Specifies the whitelist prototypes to be used by the server. This should be a comma-separated list of prototypes. + /// If a whitelists conditions to be active fail (for example player count), the next whitelist will be used instead. If no whitelist is valid, the player will be allowed to connect. + /// </summary> + public static readonly CVarDef<string> WhitelistPrototypeList = + CVarDef.Create("whitelist.prototype_list", "basicWhitelist", CVar.SERVERONLY); +} diff --git a/Content.Shared/CCVar/CCVars.Worldgen.cs b/Content.Shared/CCVar/CCVars.Worldgen.cs new file mode 100644 index 00000000000..da165ce74a7 --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Worldgen.cs @@ -0,0 +1,18 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// <summary> + /// Whether or not world generation is enabled. + /// </summary> + public static readonly CVarDef<bool> WorldgenEnabled = + CVarDef.Create("worldgen.enabled", false, CVar.SERVERONLY); + + /// <summary> + /// The worldgen config to use. + /// </summary> + public static readonly CVarDef<string> WorldgenConfig = + CVarDef.Create("worldgen.worldgen_config", "Default", CVar.SERVERONLY); +} diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 83068b5262b..316d9b8690a 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -1,2388 +1,28 @@ -using Content.Shared.Maps; -using Content.Shared.Roles; using Robust.Shared; using Robust.Shared.Configuration; -using Robust.Shared.Physics.Components; -namespace Content.Shared.CCVar -{ - // ReSharper disable once InconsistentNaming - [CVarDefs] - public sealed class CCVars : CVars - { - /* - * Server - */ - - /// <summary> - /// Change this to have the changelog and rules "last seen" date stored separately. - /// </summary> - public static readonly CVarDef<string> ServerId = - CVarDef.Create("server.id", "unknown_server_id", CVar.REPLICATED | CVar.SERVER); - - /// <summary> - /// Guide Entry Prototype ID to be displayed as the server rules. - /// </summary> - public static readonly CVarDef<string> RulesFile = - CVarDef.Create("server.rules_file", "DefaultRuleset", CVar.REPLICATED | CVar.SERVER); - - /// <summary> - /// Guide entry that is displayed by default when a guide is opened. - /// </summary> - public static readonly CVarDef<string> DefaultGuide = - CVarDef.Create("server.default_guide", "NewPlayer", CVar.REPLICATED | CVar.SERVER); - - /// <summary> - /// If greater than 0, automatically restart the server after this many minutes of uptime. - /// </summary> - /// <remarks> - /// <para> - /// This is intended to work around various bugs and performance issues caused by long continuous server uptime. - /// </para> - /// <para> - /// This uses the same non-disruptive logic as update restarts, - /// i.e. the game will only restart at round end or when there is nobody connected. - /// </para> - /// </remarks> - public static readonly CVarDef<int> ServerUptimeRestartMinutes = - CVarDef.Create("server.uptime_restart_minutes", 0, CVar.SERVERONLY); - - /* - * Ambience - */ - - /// <summary> - /// How long we'll wait until re-sampling nearby objects for ambience. Should be pretty fast, but doesn't have to match the tick rate. - /// </summary> - public static readonly CVarDef<float> AmbientCooldown = - CVarDef.Create("ambience.cooldown", 0.1f, CVar.ARCHIVE | CVar.CLIENTONLY); - - /// <summary> - /// How large of a range to sample for ambience. - /// </summary> - public static readonly CVarDef<float> AmbientRange = - CVarDef.Create("ambience.range", 8f, CVar.REPLICATED | CVar.SERVER); - - /// <summary> - /// Maximum simultaneous ambient sounds. - /// </summary> - public static readonly CVarDef<int> MaxAmbientSources = - CVarDef.Create("ambience.max_sounds", 16, CVar.ARCHIVE | CVar.CLIENTONLY); - - /// <summary> - /// The minimum value the user can set for ambience.max_sounds - /// </summary> - public static readonly CVarDef<int> MinMaxAmbientSourcesConfigured = - CVarDef.Create("ambience.min_max_sounds_configured", 16, CVar.REPLICATED | CVar.SERVER | CVar.CHEAT); - - /// <summary> - /// The maximum value the user can set for ambience.max_sounds - /// </summary> - public static readonly CVarDef<int> MaxMaxAmbientSourcesConfigured = - CVarDef.Create("ambience.max_max_sounds_configured", 64, CVar.REPLICATED | CVar.SERVER | CVar.CHEAT); - - /// <summary> - /// Ambience volume. - /// </summary> - public static readonly CVarDef<float> AmbienceVolume = - CVarDef.Create("ambience.volume", 1.5f, CVar.ARCHIVE | CVar.CLIENTONLY); - - /// <summary> - /// Ambience music volume. - /// </summary> - public static readonly CVarDef<float> AmbientMusicVolume = - CVarDef.Create("ambience.music_volume", 1.5f, CVar.ARCHIVE | CVar.CLIENTONLY); - - /// <summary> - /// Lobby / round end music volume. - /// </summary> - public static readonly CVarDef<float> LobbyMusicVolume = - CVarDef.Create("ambience.lobby_music_volume", 0.50f, CVar.ARCHIVE | CVar.CLIENTONLY); - - /// <summary> - /// UI volume. - /// </summary> - public static readonly CVarDef<float> InterfaceVolume = - CVarDef.Create("audio.interface_volume", 0.50f, CVar.ARCHIVE | CVar.CLIENTONLY); - - /* - * Status - */ - - public static readonly CVarDef<string> StatusMoMMIUrl = - CVarDef.Create("status.mommiurl", "", CVar.SERVERONLY); - - public static readonly CVarDef<string> StatusMoMMIPassword = - CVarDef.Create("status.mommipassword", "", CVar.SERVERONLY | CVar.CONFIDENTIAL); - - /* - * Events - */ - - /// <summary> - /// Controls if the game should run station events - /// </summary> - public static readonly CVarDef<bool> - EventsEnabled = CVarDef.Create("events.enabled", true, CVar.ARCHIVE | CVar.SERVERONLY); - - /* - * Game - */ - - /// <summary> - /// Disables most functionality in the GameTicker. - /// </summary> - public static readonly CVarDef<bool> - GameDummyTicker = CVarDef.Create("game.dummyticker", false, CVar.ARCHIVE | CVar.SERVERONLY); - - /// <summary> - /// Controls if the lobby is enabled. If it is not, and there are no available jobs, you may get stuck on a black screen. - /// </summary> - public static readonly CVarDef<bool> - GameLobbyEnabled = CVarDef.Create("game.lobbyenabled", true, CVar.ARCHIVE); - - /// <summary> - /// Controls the duration of the lobby timer in seconds. Defaults to 2 minutes and 30 seconds. - /// </summary> - public static readonly CVarDef<int> - GameLobbyDuration = CVarDef.Create("game.lobbyduration", 150, CVar.ARCHIVE); - - /// <summary> - /// Controls if players can latejoin at all. - /// </summary> - public static readonly CVarDef<bool> - GameDisallowLateJoins = CVarDef.Create("game.disallowlatejoins", false, CVar.ARCHIVE | CVar.SERVERONLY); - - /// <summary> - /// Controls the default game preset. - /// </summary> - public static readonly CVarDef<string> - GameLobbyDefaultPreset = CVarDef.Create("game.defaultpreset", "secret", CVar.ARCHIVE); - - /// <summary> - /// Controls if the game can force a different preset if the current preset's criteria are not met. - /// </summary> - public static readonly CVarDef<bool> - GameLobbyFallbackEnabled = CVarDef.Create("game.fallbackenabled", true, CVar.ARCHIVE); - - /// <summary> - /// The preset for the game to fall back to if the selected preset could not be used, and fallback is enabled. - /// </summary> - public static readonly CVarDef<string> - GameLobbyFallbackPreset = CVarDef.Create("game.fallbackpreset", "Traitor,Extended", CVar.ARCHIVE); - - /// <summary> - /// Controls if people can win the game in Suspicion or Deathmatch. - /// </summary> - public static readonly CVarDef<bool> - GameLobbyEnableWin = CVarDef.Create("game.enablewin", true, CVar.ARCHIVE); - - /// <summary> - /// Controls the maximum number of character slots a player is allowed to have. - /// </summary> - public static readonly CVarDef<int> - GameMaxCharacterSlots = CVarDef.Create("game.maxcharacterslots", 30, CVar.ARCHIVE | CVar.SERVERONLY); - - /// <summary> - /// Controls the game map prototype to load. SS14 stores these prototypes in Prototypes/Maps. - /// </summary> - public static readonly CVarDef<string> - GameMap = CVarDef.Create("game.map", string.Empty, CVar.SERVERONLY); - - /// <summary> - /// Controls whether to use world persistence or not. - /// </summary> - public static readonly CVarDef<bool> - UsePersistence = CVarDef.Create("game.usepersistence", false, CVar.ARCHIVE); - - /// <summary> - /// If world persistence is used, what map prototype should be initially loaded. - /// If the save file exists, it replaces MapPath but everything else stays the same (station name and such). - /// </summary> - public static readonly CVarDef<string> - PersistenceMap = CVarDef.Create("game.persistencemap", "Empty", CVar.ARCHIVE); - - /// <summary> - /// Prototype to use for map pool. - /// </summary> - public static readonly CVarDef<string> - GameMapPool = CVarDef.Create("game.map_pool", "DefaultMapPool", CVar.SERVERONLY); - - /// <summary> - /// The depth of the queue used to calculate which map is next in rotation. - /// This is how long the game "remembers" that some map was put in play. Default is 16 rounds. - /// </summary> - public static readonly CVarDef<int> - GameMapMemoryDepth = CVarDef.Create("game.map_memory_depth", 16, CVar.SERVERONLY); - - /// <summary> - /// Is map rotation enabled? - /// </summary> - public static readonly CVarDef<bool> - GameMapRotation = CVarDef.Create("game.map_rotation", true, CVar.SERVERONLY); - - /// <summary> - /// If roles should be restricted based on time. - /// </summary> - public static readonly CVarDef<bool> - GameRoleTimers = CVarDef.Create("game.role_timers", true, CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// Override default role requirements using a <see cref="JobRequirementOverridePrototype"/> - /// </summary> - public static readonly CVarDef<string> - GameRoleTimerOverride = CVarDef.Create("game.role_timer_override", "", CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// If roles should be restricted based on whether or not they are whitelisted. - /// </summary> - public static readonly CVarDef<bool> - GameRoleWhitelist = CVarDef.Create("game.role_whitelist", true, CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// Whether or not disconnecting inside of a cryopod should remove the character or just store them until they reconnect. - /// </summary> - public static readonly CVarDef<bool> - GameCryoSleepRejoining = CVarDef.Create("game.cryo_sleep_rejoining", false, CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// When enabled, guests will be assigned permanent UIDs and will have their preferences stored. - /// </summary> - public static readonly CVarDef<bool> GamePersistGuests = - CVarDef.Create("game.persistguests", true, CVar.ARCHIVE | CVar.SERVERONLY); - - public static readonly CVarDef<bool> GameDiagonalMovement = - CVarDef.Create("game.diagonalmovement", true, CVar.ARCHIVE); - - public static readonly CVarDef<int> SoftMaxPlayers = - CVarDef.Create("game.soft_max_players", 30, CVar.SERVERONLY | CVar.ARCHIVE); - - /// <summary> - /// If a player gets denied connection to the server, - /// how long they are forced to wait before attempting to reconnect. - /// </summary> - public static readonly CVarDef<int> GameServerFullReconnectDelay = - CVarDef.Create("game.server_full_reconnect_delay", 30, CVar.SERVERONLY); - - /// <summary> - /// Whether or not panic bunker is currently enabled. - /// </summary> - public static readonly CVarDef<bool> PanicBunkerEnabled = - CVarDef.Create("game.panic_bunker.enabled", false, CVar.NOTIFY | CVar.REPLICATED | CVar.SERVER); - - /// <summary> - /// Whether or not the panic bunker will disable when an admin comes online. - /// </summary> - public static readonly CVarDef<bool> PanicBunkerDisableWithAdmins = - CVarDef.Create("game.panic_bunker.disable_with_admins", false, CVar.SERVERONLY); - - /// <summary> - /// Whether or not the panic bunker will enable when no admins are online. - /// </summary> - public static readonly CVarDef<bool> PanicBunkerEnableWithoutAdmins = - CVarDef.Create("game.panic_bunker.enable_without_admins", false, CVar.SERVERONLY); - - /// <summary> - /// Whether or not the panic bunker will count deadminned admins for - /// <see cref="PanicBunkerDisableWithAdmins"/> and - /// <see cref="PanicBunkerEnableWithoutAdmins"/> - /// </summary> - public static readonly CVarDef<bool> PanicBunkerCountDeadminnedAdmins = - CVarDef.Create("game.panic_bunker.count_deadminned_admins", false, CVar.SERVERONLY); - - /// <summary> - /// Show reason of disconnect for user or not. - /// </summary> - public static readonly CVarDef<bool> PanicBunkerShowReason = - CVarDef.Create("game.panic_bunker.show_reason", false, CVar.SERVERONLY); - - /// <summary> - /// Minimum age of the account (from server's PoV, so from first-seen date) in minutes. - /// </summary> - public static readonly CVarDef<int> PanicBunkerMinAccountAge = - CVarDef.Create("game.panic_bunker.min_account_age", 1440, CVar.SERVERONLY); - - /// <summary> - /// Minimal overall played time. - /// </summary> - public static readonly CVarDef<int> PanicBunkerMinOverallMinutes = - CVarDef.Create("game.panic_bunker.min_overall_minutes", 600, CVar.SERVERONLY); - - /// <summary> - /// A custom message that will be used for connections denied to the panic bunker - /// If not empty, then will overwrite <see cref="PanicBunkerShowReason"/> - /// </summary> - public static readonly CVarDef<string> PanicBunkerCustomReason = - CVarDef.Create("game.panic_bunker.custom_reason", string.Empty, CVar.SERVERONLY); - - /// <summary> - /// Allow bypassing the panic bunker if the user is whitelisted. - /// </summary> - public static readonly CVarDef<bool> BypassBunkerWhitelist = - CVarDef.Create("game.panic_bunker.whitelisted_can_bypass", true, CVar.SERVERONLY); - - /* - * TODO: Remove baby jail code once a more mature gateway process is established. This code is only being issued as a stopgap to help with potential tiding in the immediate future. - */ - - /// <summary> - /// Whether the baby jail is currently enabled. - /// </summary> - public static readonly CVarDef<bool> BabyJailEnabled = - CVarDef.Create("game.baby_jail.enabled", false, CVar.NOTIFY | CVar.REPLICATED | CVar.SERVER); - - /// <summary> - /// Show reason of disconnect for user or not. - /// </summary> - public static readonly CVarDef<bool> BabyJailShowReason = - CVarDef.Create("game.baby_jail.show_reason", false, CVar.SERVERONLY); - - /// <summary> - /// Maximum age of the account (from server's PoV, so from first-seen date) in minutes that can access baby - /// jailed servers. - /// </summary> - public static readonly CVarDef<int> BabyJailMaxAccountAge = - CVarDef.Create("game.baby_jail.max_account_age", 1440, CVar.SERVERONLY); - - /// <summary> - /// Maximum overall played time allowed to access baby jailed servers. - /// </summary> - public static readonly CVarDef<int> BabyJailMaxOverallMinutes = - CVarDef.Create("game.baby_jail.max_overall_minutes", 120, CVar.SERVERONLY); - - /// <summary> - /// A custom message that will be used for connections denied due to the baby jail. - /// If not empty, then will overwrite <see cref="BabyJailShowReason"/> - /// </summary> - public static readonly CVarDef<string> BabyJailCustomReason = - CVarDef.Create("game.baby_jail.custom_reason", string.Empty, CVar.SERVERONLY); - - /// <summary> - /// Allow bypassing the baby jail if the user is whitelisted. - /// </summary> - public static readonly CVarDef<bool> BypassBabyJailWhitelist = - CVarDef.Create("game.baby_jail.whitelisted_can_bypass", true, CVar.SERVERONLY); - - /// <summary> - /// Make people bonk when trying to climb certain objects like tables. - /// </summary> - public static readonly CVarDef<bool> GameTableBonk = - CVarDef.Create("game.table_bonk", false, CVar.REPLICATED); - - /// <summary> - /// Whether or not status icons are rendered for everyone. - /// </summary> - public static readonly CVarDef<bool> GlobalStatusIconsEnabled = - CVarDef.Create("game.global_status_icons_enabled", true, CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// Whether or not status icons are rendered on this specific client. - /// </summary> - public static readonly CVarDef<bool> LocalStatusIconsEnabled = - CVarDef.Create("game.local_status_icons_enabled", true, CVar.CLIENTONLY); - - /// <summary> - /// Whether or not coordinates on the Debug overlay should only be available to admins. - /// </summary> - public static readonly CVarDef<bool> DebugCoordinatesAdminOnly = - CVarDef.Create("game.debug_coordinates_admin_only", true, CVar.SERVER | CVar.REPLICATED); - -#if EXCEPTION_TOLERANCE - /// <summary> - /// Amount of times round start must fail before the server is shut down. - /// Set to 0 or a negative number to disable. - /// </summary> - public static readonly CVarDef<int> RoundStartFailShutdownCount = - CVarDef.Create("game.round_start_fail_shutdown_count", 5, CVar.SERVERONLY | CVar.SERVER); -#endif - - /// <summary> - /// Delay between station alert level changes. - /// </summary> - public static readonly CVarDef<int> GameAlertLevelChangeDelay = - CVarDef.Create("game.alert_level_change_delay", 30, CVar.SERVERONLY); - - /// <summary> - /// The time in seconds that the server should wait before restarting the round. - /// Defaults to 2 minutes. - /// </summary> - public static readonly CVarDef<float> RoundRestartTime = - CVarDef.Create("game.round_restart_time", 120f, CVar.SERVERONLY); - - /// <summary> - /// The prototype to use for secret weights. - /// </summary> - public static readonly CVarDef<string> SecretWeightPrototype = - CVarDef.Create("game.secret_weight_prototype", "Secret", CVar.SERVERONLY); - - /// <summary> - /// The id of the sound collection to randomly choose a sound from and play when the round ends. - /// </summary> - public static readonly CVarDef<string> RoundEndSoundCollection = - CVarDef.Create("game.round_end_sound_collection", "RoundEnd", CVar.SERVERONLY); - - /// <summary> - /// Whether or not to add every player as a global override to PVS at round end. - /// This will allow all players to see their clothing in the round screen player list screen, - /// but may cause lag during round end with very high player counts. - /// </summary> - public static readonly CVarDef<bool> RoundEndPVSOverrides = - CVarDef.Create("game.round_end_pvs_overrides", true, CVar.SERVERONLY); - - /// <summary> - /// If true, players can place objects onto tabletop games like chess boards. - /// </summary> - /// <remarks> - /// This feature is currently highly abusable and can easily be used to crash the server, - /// so it's off by default. - /// </remarks> - public static readonly CVarDef<bool> GameTabletopPlace = - CVarDef.Create("game.tabletop_place", false, CVar.SERVERONLY); - - /// <summary> - /// If true, contraband severity can be viewed in the examine menu - /// </summary> - public static readonly CVarDef<bool> ContrabandExamine = - CVarDef.Create("game.contraband_examine", true, CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// Size of the lookup area for adding entities to the context menu - /// </summary> - public static readonly CVarDef<float> GameEntityMenuLookup = - CVarDef.Create("game.entity_menu_lookup", 0.25f, CVar.CLIENTONLY | CVar.ARCHIVE); - - /// <summary> - /// Should the clients window show the server hostname in the title? - /// </summary> - public static readonly CVarDef<bool> GameHostnameInTitlebar = - CVarDef.Create("game.hostname_in_titlebar", true, CVar.SERVER | CVar.REPLICATED); - - /* - * Discord - */ - - /// <summary> - /// The role that will get mentioned if a new SOS ahelp comes in. - /// </summary> - public static readonly CVarDef<string> DiscordAhelpMention = - CVarDef.Create("discord.on_call_ping", string.Empty, CVar.SERVERONLY | CVar.CONFIDENTIAL); - - /// <summary> - /// URL of the discord webhook to relay unanswered ahelp messages. - /// </summary> - public static readonly CVarDef<string> DiscordOnCallWebhook = - CVarDef.Create("discord.on_call_webhook", string.Empty, CVar.SERVERONLY | CVar.CONFIDENTIAL); - - /// <summary> - /// URL of the Discord webhook which will relay all ahelp messages. - /// </summary> - public static readonly CVarDef<string> DiscordAHelpWebhook = - CVarDef.Create("discord.ahelp_webhook", string.Empty, CVar.SERVERONLY | CVar.CONFIDENTIAL); - - /// <summary> - /// The server icon to use in the Discord ahelp embed footer. - /// Valid values are specified at https://discord.com/developers/docs/resources/channel#embed-object-embed-footer-structure. - /// </summary> - public static readonly CVarDef<string> DiscordAHelpFooterIcon = - CVarDef.Create("discord.ahelp_footer_icon", string.Empty, CVar.SERVERONLY); - - /// <summary> - /// The avatar to use for the webhook. Should be an URL. - /// </summary> - public static readonly CVarDef<string> DiscordAHelpAvatar = - CVarDef.Create("discord.ahelp_avatar", string.Empty, CVar.SERVERONLY); - - /// <summary> - /// URL of the Discord webhook which will relay all custom votes. If left empty, disables the webhook. - /// </summary> - public static readonly CVarDef<string> DiscordVoteWebhook = - CVarDef.Create("discord.vote_webhook", string.Empty, CVar.SERVERONLY); - - /// <summary> - /// URL of the Discord webhook which will relay all votekick votes. If left empty, disables the webhook. - /// </summary> - public static readonly CVarDef<string> DiscordVotekickWebhook = - CVarDef.Create("discord.votekick_webhook", string.Empty, CVar.SERVERONLY); - - /// URL of the Discord webhook which will relay round restart messages. - /// </summary> - public static readonly CVarDef<string> DiscordRoundUpdateWebhook = - CVarDef.Create("discord.round_update_webhook", string.Empty, CVar.SERVERONLY | CVar.CONFIDENTIAL); - - /// <summary> - /// Role id for the Discord webhook to ping when the round ends. - /// </summary> - public static readonly CVarDef<string> DiscordRoundEndRoleWebhook = - CVarDef.Create("discord.round_end_role", string.Empty, CVar.SERVERONLY); - - /* - * Tips - */ - - /// <summary> - /// Whether tips being shown is enabled at all. - /// </summary> - public static readonly CVarDef<bool> TipsEnabled = - CVarDef.Create("tips.enabled", true); - - /// <summary> - /// The dataset prototype to use when selecting a random tip. - /// </summary> - public static readonly CVarDef<string> TipsDataset = - CVarDef.Create("tips.dataset", "Tips"); - - /// <summary> - /// The number of seconds between each tip being displayed when the round is not actively going - /// (i.e. postround or lobby) - /// </summary> - public static readonly CVarDef<float> TipFrequencyOutOfRound = - CVarDef.Create("tips.out_of_game_frequency", 60f * 1.5f); - - /// <summary> - /// The number of seconds between each tip being displayed when the round is actively going - /// </summary> - public static readonly CVarDef<float> TipFrequencyInRound = - CVarDef.Create("tips.in_game_frequency", 60f * 60); - - public static readonly CVarDef<string> LoginTipsDataset = - CVarDef.Create("tips.login_dataset", "Tips"); - - /// <summary> - /// The chance for Tippy to replace a normal tip message. - /// </summary> - public static readonly CVarDef<float> TipsTippyChance = - CVarDef.Create("tips.tippy_chance", 0.01f); - - /* - * Console - */ - - public static readonly CVarDef<bool> ConsoleLoginLocal = - CVarDef.Create("console.loginlocal", true, CVar.ARCHIVE | CVar.SERVERONLY); - - /// <summary> - /// Automatically log in the given user as host, equivalent to the <c>promotehost</c> command. - /// </summary> - public static readonly CVarDef<string> ConsoleLoginHostUser = - CVarDef.Create("console.login_host_user", "", CVar.ARCHIVE | CVar.SERVERONLY); - - - /* - * Database stuff - */ - - public static readonly CVarDef<string> DatabaseEngine = - CVarDef.Create("database.engine", "sqlite", CVar.SERVERONLY); - - public static readonly CVarDef<string> DatabaseSqliteDbPath = - CVarDef.Create("database.sqlite_dbpath", "preferences.db", CVar.SERVERONLY); - - /// <summary> - /// Milliseconds to asynchronously delay all SQLite database acquisitions with. - /// </summary> - /// <remarks> - /// Defaults to 1 on DEBUG, 0 on RELEASE. - /// This is intended to help catch .Result deadlock bugs that only happen on postgres - /// (because SQLite is not actually asynchronous normally) - /// </remarks> - public static readonly CVarDef<int> DatabaseSqliteDelay = - CVarDef.Create("database.sqlite_delay", DefaultSqliteDelay, CVar.SERVERONLY); - - /// <summary> - /// Amount of concurrent SQLite database operations. - /// </summary> - /// <remarks> - /// Note that SQLite is not a properly asynchronous database and also has limited read/write concurrency. - /// Increasing this number may allow more concurrent reads, but it probably won't matter much. - /// SQLite operations are normally ran on the thread pool, which may cause thread pool starvation if the concurrency is too high. - /// </remarks> - public static readonly CVarDef<int> DatabaseSqliteConcurrency = - CVarDef.Create("database.sqlite_concurrency", 3, CVar.SERVERONLY); - -#if DEBUG - private const int DefaultSqliteDelay = 1; -#else - private const int DefaultSqliteDelay = 0; -#endif - - - public static readonly CVarDef<string> DatabasePgHost = - CVarDef.Create("database.pg_host", "localhost", CVar.SERVERONLY); - - public static readonly CVarDef<int> DatabasePgPort = - CVarDef.Create("database.pg_port", 5432, CVar.SERVERONLY); - - public static readonly CVarDef<string> DatabasePgDatabase = - CVarDef.Create("database.pg_database", "ss14", CVar.SERVERONLY); - - public static readonly CVarDef<string> DatabasePgUsername = - CVarDef.Create("database.pg_username", "postgres", CVar.SERVERONLY); - - public static readonly CVarDef<string> DatabasePgPassword = - CVarDef.Create("database.pg_password", "", CVar.SERVERONLY | CVar.CONFIDENTIAL); - - /// <summary> - /// Max amount of concurrent Postgres database operations. - /// </summary> - public static readonly CVarDef<int> DatabasePgConcurrency = - CVarDef.Create("database.pg_concurrency", 8, CVar.SERVERONLY); - - /// <summary> - /// Milliseconds to asynchronously delay all PostgreSQL database operations with. - /// </summary> - /// <remarks> - /// This is intended for performance testing. It works different from <see cref="DatabaseSqliteDelay"/>, - /// as the lag is applied after acquiring the database lock. - /// </remarks> - public static readonly CVarDef<int> DatabasePgFakeLag = - CVarDef.Create("database.pg_fake_lag", 0, CVar.SERVERONLY); - - // Basically only exists for integration tests to avoid race conditions. - public static readonly CVarDef<bool> DatabaseSynchronous = - CVarDef.Create("database.sync", false, CVar.SERVERONLY); - - /* - * Interface - */ - - public static readonly CVarDef<string> UIClickSound = - CVarDef.Create("interface.click_sound", "/Audio/UserInterface/click.ogg", CVar.REPLICATED); - - public static readonly CVarDef<string> UIHoverSound = - CVarDef.Create("interface.hover_sound", "/Audio/UserInterface/hover.ogg", CVar.REPLICATED); - - /* - * Outline - */ - - public static readonly CVarDef<bool> OutlineEnabled = - CVarDef.Create("outline.enabled", true, CVar.CLIENTONLY); - - - /* - * Parallax - */ - - public static readonly CVarDef<bool> ParallaxEnabled = - CVarDef.Create("parallax.enabled", true, CVar.CLIENTONLY); - - public static readonly CVarDef<bool> ParallaxDebug = - CVarDef.Create("parallax.debug", false, CVar.CLIENTONLY); - - public static readonly CVarDef<bool> ParallaxLowQuality = - CVarDef.Create("parallax.low_quality", false, CVar.ARCHIVE | CVar.CLIENTONLY); - - /* - * Physics - */ - - /// <summary> - /// When a mob is walking should its X / Y movement be relative to its parent (true) or the map (false). - /// </summary> - public static readonly CVarDef<bool> RelativeMovement = - CVarDef.Create("physics.relative_movement", true, CVar.ARCHIVE | CVar.REPLICATED | CVar.SERVER); - - public static readonly CVarDef<float> TileFrictionModifier = - CVarDef.Create("physics.tile_friction", 40.0f, CVar.ARCHIVE | CVar.REPLICATED | CVar.SERVER); - - public static readonly CVarDef<float> StopSpeed = - CVarDef.Create("physics.stop_speed", 0.1f, CVar.ARCHIVE | CVar.REPLICATED | CVar.SERVER); - - /// <summary> - /// Whether mobs can push objects like lockers. - /// </summary> - /// <remarks> - /// Technically client doesn't need to know about it but this may prevent a bug in the distant future so it stays. - /// </remarks> - public static readonly CVarDef<bool> MobPushing = - CVarDef.Create("physics.mob_pushing", false, CVar.REPLICATED | CVar.SERVER); - - /* - * Music - */ - - public static readonly CVarDef<bool> LobbyMusicEnabled = - CVarDef.Create("ambience.lobby_music_enabled", true, CVar.ARCHIVE | CVar.CLIENTONLY); - - public static readonly CVarDef<bool> EventMusicEnabled = - CVarDef.Create("ambience.event_music_enabled", true, CVar.ARCHIVE | CVar.CLIENTONLY); - - /* - * Specific Sounds - */ - // Round end sound (APC Destroyed) - public static readonly CVarDef<bool> RestartSoundsEnabled = - CVarDef.Create("ambience.restart_sounds_enabled", true, CVar.ARCHIVE | CVar.CLIENTONLY); - - - /* - * Admin sounds - */ - - public static readonly CVarDef<bool> AdminSoundsEnabled = - CVarDef.Create("audio.admin_sounds_enabled", true, CVar.ARCHIVE | CVar.CLIENTONLY); - public static readonly CVarDef<string> AdminChatSoundPath = - CVarDef.Create("audio.admin_chat_sound_path", "/Audio/Items/pop.ogg", CVar.ARCHIVE | CVar.CLIENT | CVar.REPLICATED); - public static readonly CVarDef<float> AdminChatSoundVolume = - CVarDef.Create("audio.admin_chat_sound_volume", -5f, CVar.ARCHIVE | CVar.CLIENT | CVar.REPLICATED); - public static readonly CVarDef<string> AHelpSound = - CVarDef.Create("audio.ahelp_sound", "/Audio/Effects/adminhelp.ogg", CVar.ARCHIVE | CVar.CLIENTONLY); - - /* - * HUD - */ - - public static readonly CVarDef<int> HudTheme = - CVarDef.Create("hud.theme", 0, CVar.ARCHIVE | CVar.CLIENTONLY); - - public static readonly CVarDef<bool> HudHeldItemShow = - CVarDef.Create("hud.held_item_show", true, CVar.ARCHIVE | CVar.CLIENTONLY); - - public static readonly CVarDef<bool> CombatModeIndicatorsPointShow = - CVarDef.Create("hud.combat_mode_indicators_point_show", true, CVar.ARCHIVE | CVar.CLIENTONLY); - - public static readonly CVarDef<bool> LoocAboveHeadShow = - CVarDef.Create("hud.show_looc_above_head", true, CVar.ARCHIVE | CVar.CLIENTONLY); - - public static readonly CVarDef<float> HudHeldItemOffset = - CVarDef.Create("hud.held_item_offset", 28f, CVar.ARCHIVE | CVar.CLIENTONLY); - - public static readonly CVarDef<bool> HudFpsCounterVisible = - CVarDef.Create("hud.fps_counter_visible", false, CVar.CLIENTONLY | CVar.ARCHIVE); - - /* - * NPCs - */ - - public static readonly CVarDef<int> NPCMaxUpdates = - CVarDef.Create("npc.max_updates", 128); - - public static readonly CVarDef<bool> NPCEnabled = CVarDef.Create("npc.enabled", true); - - /// <summary> - /// Should NPCs pathfind when steering. For debug purposes. - /// </summary> - public static readonly CVarDef<bool> NPCPathfinding = CVarDef.Create("npc.pathfinding", true); - - /* - * Net - */ - - public static readonly CVarDef<float> NetAtmosDebugOverlayTickRate = - CVarDef.Create("net.atmosdbgoverlaytickrate", 3.0f); - - public static readonly CVarDef<float> NetGasOverlayTickRate = - CVarDef.Create("net.gasoverlaytickrate", 3.0f); - - public static readonly CVarDef<int> GasOverlayThresholds = - CVarDef.Create("net.gasoverlaythresholds", 20); - - /* - * Admin - */ - - public static readonly CVarDef<bool> AdminAnnounceLogin = - CVarDef.Create("admin.announce_login", true, CVar.SERVERONLY); - - public static readonly CVarDef<bool> AdminAnnounceLogout = - CVarDef.Create("admin.announce_logout", true, CVar.SERVERONLY); - - /// <summary> - /// The token used to authenticate with the admin API. Leave empty to disable the admin API. This is a secret! Do not share! - /// </summary> - public static readonly CVarDef<string> AdminApiToken = - CVarDef.Create("admin.api_token", string.Empty, CVar.SERVERONLY | CVar.CONFIDENTIAL); - - - /// <summary> - /// Should users be able to see their own notes? Admins will be able to see and set notes regardless - /// </summary> - public static readonly CVarDef<bool> SeeOwnNotes = - CVarDef.Create("admin.see_own_notes", false, CVar.ARCHIVE | CVar.REPLICATED | CVar.SERVER); - - /// <summary> - /// Should the server play a quick sound to the active admins whenever a new player joins? - /// </summary> - public static readonly CVarDef<bool> AdminNewPlayerJoinSound = - CVarDef.Create("admin.new_player_join_sound", false, CVar.SERVERONLY); - - /// <summary> - /// The amount of days before the note starts fading. It will slowly lose opacity until it reaches stale. Set to 0 to disable. - /// </summary> - public static readonly CVarDef<double> NoteFreshDays = - CVarDef.Create("admin.note_fresh_days", 91.31055, CVar.ARCHIVE | CVar.REPLICATED | CVar.SERVER); - - /// <summary> - /// The amount of days before the note completely fades, and can only be seen by admins if they press "see more notes". Set to 0 - /// if you want the note to immediately disappear without fading. - /// </summary> - public static readonly CVarDef<double> NoteStaleDays = - CVarDef.Create("admin.note_stale_days", 365.2422, CVar.ARCHIVE | CVar.REPLICATED | CVar.SERVER); - - /// <summary> - /// How much time does the user have to wait in seconds before confirming that they saw an admin message? - /// </summary> - public static readonly CVarDef<float> MessageWaitTime = - CVarDef.Create("admin.message_wait_time", 3f, CVar.ARCHIVE | CVar.REPLICATED | CVar.SERVER); - - /// <summary> - /// Default severity for role bans - /// </summary> - public static readonly CVarDef<string> RoleBanDefaultSeverity = - CVarDef.Create("admin.role_ban_default_severity", "medium", CVar.ARCHIVE | CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// Default severity for department bans - /// </summary> - public static readonly CVarDef<string> DepartmentBanDefaultSeverity = - CVarDef.Create("admin.department_ban_default_severity", "medium", CVar.ARCHIVE | CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// Default severity for server bans - /// </summary> - public static readonly CVarDef<string> ServerBanDefaultSeverity = - CVarDef.Create("admin.server_ban_default_severity", "High", CVar.ARCHIVE | CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// Whether a server ban will ban the player's ip by default. - /// </summary> - public static readonly CVarDef<bool> ServerBanIpBanDefault = - CVarDef.Create("admin.server_ban_ip_ban_default", true, CVar.ARCHIVE | CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// Whether a server ban will ban the player's hardware id by default. - /// </summary> - public static readonly CVarDef<bool> ServerBanHwidBanDefault = - CVarDef.Create("admin.server_ban_hwid_ban_default", true, CVar.ARCHIVE | CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// Whether to use details from last connection for ip/hwid in the BanPanel. - /// </summary> - public static readonly CVarDef<bool> ServerBanUseLastDetails = - CVarDef.Create("admin.server_ban_use_last_details", true, CVar.ARCHIVE | CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// Whether to erase a player's chat messages and their entity from the game when banned. - /// </summary> - public static readonly CVarDef<bool> ServerBanErasePlayer = - CVarDef.Create("admin.server_ban_erase_player", false, CVar.ARCHIVE | CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// Minimum players sharing a connection required to create an alert. -1 to disable the alert. - /// </summary> - /// <remarks> - /// If you set this to 0 or 1 then it will alert on every connection, so probably don't do that. - /// </remarks> - public static readonly CVarDef<int> AdminAlertMinPlayersSharingConnection = - CVarDef.Create("admin.alert.min_players_sharing_connection", -1, CVar.SERVERONLY); - - /// <summary> - /// Minimum explosion intensity to create an admin alert message. -1 to disable the alert. - /// </summary> - public static readonly CVarDef<int> AdminAlertExplosionMinIntensity = - CVarDef.Create("admin.alert.explosion_min_intensity", 60, CVar.SERVERONLY); - - /// <summary> - /// Minimum particle accelerator strength to create an admin alert message. - /// </summary> - public static readonly CVarDef<int> AdminAlertParticleAcceleratorMinPowerState = - CVarDef.Create("admin.alert.particle_accelerator_min_power_state", 5, CVar.SERVERONLY); // strength 4 - - /// <summary> - /// Should the ban details in admin channel include PII? (IP, HWID, etc) - /// </summary> - public static readonly CVarDef<bool> AdminShowPIIOnBan = - CVarDef.Create("admin.show_pii_onban", false, CVar.SERVERONLY); - - /// <summary> - /// If an admin joins a round by reading up or using the late join button, automatically - /// de-admin them. - /// </summary> - public static readonly CVarDef<bool> AdminDeadminOnJoin = - CVarDef.Create("admin.deadmin_on_join", false, CVar.SERVERONLY); - - /// <summary> - /// Overrides the name the client sees in ahelps. Set empty to disable. - /// </summary> - public static readonly CVarDef<string> AdminAhelpOverrideClientName = - CVarDef.Create("admin.override_adminname_in_client_ahelp", string.Empty, CVar.SERVERONLY); - - /// <summary> - /// The threshold of minutes to appear as a "new player" in the ahelp menu - /// If 0, appearing as a new player is disabled. - /// </summary> - public static readonly CVarDef<int> NewPlayerThreshold = - CVarDef.Create("admin.new_player_threshold", 0, CVar.ARCHIVE | CVar.REPLICATED | CVar.SERVER); - - /// <summary> - /// How long an admin client can go without any input before being considered AFK. - /// </summary> - public static readonly CVarDef<float> AdminAfkTime = - CVarDef.Create("admin.afk_time", 600f, CVar.SERVERONLY); - - /// <summary> - /// If true, admins are able to connect even if - /// <see cref="SoftMaxPlayers"/> would otherwise block regular players. - /// </summary> - public static readonly CVarDef<bool> AdminBypassMaxPlayers = - CVarDef.Create("admin.bypass_max_players", true, CVar.SERVERONLY); - - /// <summary> - /// Determine if custom rank names are used. - /// If it is false, it'd use the actual rank name regardless of the individual's title. - /// </summary> - /// <seealso cref="AhelpAdminPrefix"/> - /// <seealso cref="AhelpAdminPrefixWebhook"/> - public static readonly CVarDef<bool> AdminUseCustomNamesAdminRank = - CVarDef.Create("admin.use_custom_names_admin_rank", true, CVar.SERVERONLY); - - /* - * AHELP - */ - - /// <summary> - /// Ahelp rate limit values are accounted in periods of this size (seconds). - /// After the period has passed, the count resets. - /// </summary> - /// <seealso cref="AhelpRateLimitCount"/> - public static readonly CVarDef<float> AhelpRateLimitPeriod = - CVarDef.Create("ahelp.rate_limit_period", 2f, CVar.SERVERONLY); - - /// <summary> - /// How many ahelp messages are allowed in a single rate limit period. - /// </summary> - /// <seealso cref="AhelpRateLimitPeriod"/> - public static readonly CVarDef<int> AhelpRateLimitCount = - CVarDef.Create("ahelp.rate_limit_count", 10, CVar.SERVERONLY); - - /// <summary> - /// Should the administrator's position be displayed in ahelp. - /// If it is is false, only the admin's ckey will be displayed in the ahelp. - /// </summary> - /// <seealso cref="AdminUseCustomNamesAdminRank"/> - /// <seealso cref="AhelpAdminPrefixWebhook"/> - public static readonly CVarDef<bool> AhelpAdminPrefix = - CVarDef.Create("ahelp.admin_prefix", false, CVar.SERVERONLY); - - /// <summary> - /// Should the administrator's position be displayed in the webhook. - /// If it is is false, only the admin's ckey will be displayed in webhook. - /// </summary> - /// <seealso cref="AdminUseCustomNamesAdminRank"/> - /// <seealso cref="AhelpAdminPrefix"/> - public static readonly CVarDef<bool> AhelpAdminPrefixWebhook = - CVarDef.Create("ahelp.admin_prefix_webhook", false, CVar.SERVERONLY); - - /* - * Explosions - */ - - /// <summary> - /// How many tiles the explosion system will process per tick - /// </summary> - /// <remarks> - /// Setting this too high will put a large load on a single tick. Setting this too low will lead to - /// unnaturally "slow" explosions. - /// </remarks> - public static readonly CVarDef<int> ExplosionTilesPerTick = - CVarDef.Create("explosion.tiles_per_tick", 100, CVar.SERVERONLY); - - /// <summary> - /// Upper limit on the size of an explosion before physics-throwing is disabled. - /// </summary> - /// <remarks> - /// Large nukes tend to generate a lot of shrapnel that flies through space. This can functionally cripple - /// the server TPS for a while after an explosion (or even during, if the explosion is processed - /// incrementally. - /// </remarks> - public static readonly CVarDef<int> ExplosionThrowLimit = - CVarDef.Create("explosion.throw_limit", 400, CVar.SERVERONLY); - - /// <summary> - /// If this is true, explosion processing will pause the NodeGroupSystem to pause updating. - /// </summary> - /// <remarks> - /// This only takes effect if an explosion needs more than one tick to process (i.e., covers more than <see - /// cref="ExplosionTilesPerTick"/> tiles). If this is not enabled, the node-system will rebuild its graph - /// every tick as the explosion shreds the station, causing significant slowdown. - /// </remarks> - public static readonly CVarDef<bool> ExplosionSleepNodeSys = - CVarDef.Create("explosion.node_sleep", true, CVar.SERVERONLY); - - /// <summary> - /// Upper limit on the total area that an explosion can affect before the neighbor-finding algorithm just - /// stops. Defaults to a 60-rile radius explosion. - /// </summary> - /// <remarks> - /// Actual area may be larger, as it currently doesn't terminate mid neighbor finding. I.e., area may be that of a ~51 tile radius circle instead. - /// </remarks> - public static readonly CVarDef<int> ExplosionMaxArea = - CVarDef.Create("explosion.max_area", (int) 3.14f * 256 * 256, CVar.SERVERONLY); - - /// <summary> - /// Upper limit on the number of neighbor finding steps for the explosion system neighbor-finding algorithm. - /// </summary> - /// <remarks> - /// Effectively places an upper limit on the range that any explosion can have. In the vast majority of - /// instances, <see cref="ExplosionMaxArea"/> will likely be hit before this becomes a limiting factor. - /// </remarks> - public static readonly CVarDef<int> ExplosionMaxIterations = - CVarDef.Create("explosion.max_iterations", 500, CVar.SERVERONLY); - - /// <summary> - /// Max Time in milliseconds to spend processing explosions every tick. - /// </summary> - /// <remarks> - /// This time limiting is not perfectly implemented. Firstly, a significant chunk of processing time happens - /// due to queued entity deletions, which happen outside of the system update code. Secondly, explosion - /// spawning cannot currently be interrupted & resumed, and may lead to exceeding this time limit. - /// </remarks> - public static readonly CVarDef<float> ExplosionMaxProcessingTime = - CVarDef.Create("explosion.max_tick_time", 7f, CVar.SERVERONLY); - - /// <summary> - /// If the explosion is being processed incrementally over several ticks, this variable determines whether - /// updating the grid tiles should be done incrementally at the end of every tick, or only once the explosion has finished processing. - /// </summary> - /// <remarks> - /// The most notable consequence of this change is that explosions will only punch a hole in the station & - /// create a vacumm once they have finished exploding. So airlocks will no longer slam shut as the explosion - /// expands, just suddenly at the end. - /// </remarks> - public static readonly CVarDef<bool> ExplosionIncrementalTileBreaking = - CVarDef.Create("explosion.incremental_tile", false, CVar.SERVERONLY); - - /// <summary> - /// This determines for how many seconds an explosion should stay visible once it has finished expanding. - /// </summary> - public static readonly CVarDef<float> ExplosionPersistence = - CVarDef.Create("explosion.persistence", 1.0f, CVar.SERVERONLY); - - /// <summary> - /// If an explosion covers a larger area than this number, the damaging/processing will always start during - /// the next tick, instead of during the same tick that the explosion was generated in. - /// </summary> - /// <remarks> - /// This value can be used to ensure that for large explosions the area/tile calculation and the explosion - /// processing/damaging occurs in separate ticks. This helps reduce the single-tick lag if both <see - /// cref="ExplosionMaxProcessingTime"/> and <see cref="ExplosionTilesPerTick"/> are large. I.e., instead of - /// a single tick explosion, this cvar allows for a configuration that results in a two-tick explosion, - /// though most of the computational cost is still in the second tick. - /// </remarks> - public static readonly CVarDef<int> ExplosionSingleTickAreaLimit = - CVarDef.Create("explosion.single_tick_area_limit", 400, CVar.SERVERONLY); - - /// <summary> - /// Whether or not explosions are allowed to create tiles that have - /// <see cref="ContentTileDefinition.MapAtmosphere"/> set to true. - /// </summary> - public static readonly CVarDef<bool> ExplosionCanCreateVacuum = - CVarDef.Create("explosion.can_create_vacuum", true, CVar.SERVERONLY); - - /* - * Radiation - */ - - /// <summary> - /// What is the smallest radiation dose in rads that can be received by object. - /// Extremely small values may impact performance. - /// </summary> - public static readonly CVarDef<float> RadiationMinIntensity = - CVarDef.Create("radiation.min_intensity", 0.1f, CVar.SERVERONLY); - - /// <summary> - /// Rate of radiation system update in seconds. - /// </summary> - public static readonly CVarDef<float> RadiationGridcastUpdateRate = - CVarDef.Create("radiation.gridcast.update_rate", 1.0f, CVar.SERVERONLY); - - /// <summary> - /// If both radiation source and receiver are placed on same grid, ignore grids between them. - /// May get inaccurate result in some cases, but greatly boost performance in general. - /// </summary> - public static readonly CVarDef<bool> RadiationGridcastSimplifiedSameGrid = - CVarDef.Create("radiation.gridcast.simplified_same_grid", true, CVar.SERVERONLY); - - /// <summary> - /// Max distance that radiation ray can travel in meters. - /// </summary> - public static readonly CVarDef<float> RadiationGridcastMaxDistance = - CVarDef.Create("radiation.gridcast.max_distance", 50f, CVar.SERVERONLY); - - /* - * Admin logs - */ - - /// <summary> - /// Controls if admin logs are enabled. Highly recommended to shut this off for development. - /// </summary> - public static readonly CVarDef<bool> AdminLogsEnabled = - CVarDef.Create("adminlogs.enabled", true, CVar.SERVERONLY); - - public static readonly CVarDef<float> AdminLogsQueueSendDelay = - CVarDef.Create("adminlogs.queue_send_delay_seconds", 5f, CVar.SERVERONLY); - - // When to skip the waiting time to save in-round admin logs, if no admin logs are currently being saved - public static readonly CVarDef<int> AdminLogsQueueMax = - CVarDef.Create("adminlogs.queue_max", 5000, CVar.SERVERONLY); - - // When to skip the waiting time to save pre-round admin logs, if no admin logs are currently being saved - public static readonly CVarDef<int> AdminLogsPreRoundQueueMax = - CVarDef.Create("adminlogs.pre_round_queue_max", 5000, CVar.SERVERONLY); - - // When to start dropping logs - public static readonly CVarDef<int> AdminLogsDropThreshold = - CVarDef.Create("adminlogs.drop_threshold", 20000, CVar.SERVERONLY); - - // How many logs to send to the client at once - public static readonly CVarDef<int> AdminLogsClientBatchSize = - CVarDef.Create("adminlogs.client_batch_size", 1000, CVar.SERVERONLY); - - public static readonly CVarDef<string> AdminLogsServerName = - CVarDef.Create("adminlogs.server_name", "unknown", CVar.SERVERONLY); - - /* - * Atmos - */ - - /// <summary> - /// Whether gas differences will move entities. - /// </summary> - public static readonly CVarDef<bool> SpaceWind = - CVarDef.Create("atmos.space_wind", false, CVar.SERVERONLY); - - /// <summary> - /// Divisor from maxForce (pressureDifference * 2.25f) to force applied on objects. - /// </summary> - public static readonly CVarDef<float> SpaceWindPressureForceDivisorThrow = - CVarDef.Create("atmos.space_wind_pressure_force_divisor_throw", 15f, CVar.SERVERONLY); - - /// <summary> - /// Divisor from maxForce (pressureDifference * 2.25f) to force applied on objects. - /// </summary> - public static readonly CVarDef<float> SpaceWindPressureForceDivisorPush = - CVarDef.Create("atmos.space_wind_pressure_force_divisor_push", 2500f, CVar.SERVERONLY); - - /// <summary> - /// The maximum velocity (not force) that may be applied to an object by atmospheric pressure differences. - /// Useful to prevent clipping through objects. - /// </summary> - public static readonly CVarDef<float> SpaceWindMaxVelocity = - CVarDef.Create("atmos.space_wind_max_velocity", 30f, CVar.SERVERONLY); - - /// <summary> - /// The maximum force that may be applied to an object by pushing (i.e. not throwing) atmospheric pressure differences. - /// A "throwing" atmospheric pressure difference ignores this limit, but not the max. velocity limit. - /// </summary> - public static readonly CVarDef<float> SpaceWindMaxPushForce = - CVarDef.Create("atmos.space_wind_max_push_force", 20f, CVar.SERVERONLY); - - /// <summary> - /// Whether monstermos tile equalization is enabled. - /// </summary> - public static readonly CVarDef<bool> MonstermosEqualization = - CVarDef.Create("atmos.monstermos_equalization", true, CVar.SERVERONLY); - - /// <summary> - /// Whether monstermos explosive depressurization is enabled. - /// Needs <see cref="MonstermosEqualization"/> to be enabled to work. - /// </summary> - public static readonly CVarDef<bool> MonstermosDepressurization = - CVarDef.Create("atmos.monstermos_depressurization", true, CVar.SERVERONLY); - - /// <summary> - /// Whether monstermos explosive depressurization will rip tiles.. - /// Needs <see cref="MonstermosEqualization"/> and <see cref="MonstermosDepressurization"/> to be enabled to work. - /// WARNING: This cvar causes MAJOR contrast issues, and usually tends to make any spaced scene look very cluttered. - /// This not only usually looks strange, but can also reduce playability for people with impaired vision. Please think twice before enabling this on your server. - /// Also looks weird on slow spacing for unrelated reasons. If you do want to enable this, you should probably turn on instaspacing. - /// </summary> - public static readonly CVarDef<bool> MonstermosRipTiles = - CVarDef.Create("atmos.monstermos_rip_tiles", false, CVar.SERVERONLY); - - /// <summary> - /// Whether explosive depressurization will cause the grid to gain an impulse. - /// Needs <see cref="MonstermosEqualization"/> and <see cref="MonstermosDepressurization"/> to be enabled to work. - /// </summary> - public static readonly CVarDef<bool> AtmosGridImpulse = - CVarDef.Create("atmos.grid_impulse", false, CVar.SERVERONLY); - - /// <summary> - /// What fraction of air from a spaced tile escapes every tick. - /// 1.0 for instant spacing, 0.2 means 20% of remaining air lost each time - /// </summary> - public static readonly CVarDef<float> AtmosSpacingEscapeRatio = - CVarDef.Create("atmos.mmos_spacing_speed", 0.15f, CVar.SERVERONLY); - - /// <summary> - /// Minimum amount of air allowed on a spaced tile before it is reset to 0 immediately in kPa - /// Since the decay due to SpacingEscapeRatio follows a curve, it would never reach 0.0 exactly - /// unless we truncate it somewhere. - /// </summary> - public static readonly CVarDef<float> AtmosSpacingMinGas = - CVarDef.Create("atmos.mmos_min_gas", 2.0f, CVar.SERVERONLY); +namespace Content.Shared.CCVar; - /// <summary> - /// How much wind can go through a single tile before that tile doesn't depressurize itself - /// (I.e spacing is limited in large rooms heading into smaller spaces) - /// </summary> - public static readonly CVarDef<float> AtmosSpacingMaxWind = - CVarDef.Create("atmos.mmos_max_wind", 500f, CVar.SERVERONLY); - - /// <summary> - /// Whether atmos superconduction is enabled. - /// </summary> - /// <remarks> Disabled by default, superconduction is awful. </remarks> - public static readonly CVarDef<bool> Superconduction = - CVarDef.Create("atmos.superconduction", false, CVar.SERVERONLY); - - /// <summary> - /// Heat loss per tile due to radiation at 20 degC, in W. - /// </summary> - public static readonly CVarDef<float> SuperconductionTileLoss = - CVarDef.Create("atmos.superconduction_tile_loss", 30f, CVar.SERVERONLY); - - /// <summary> - /// Whether excited groups will be processed and created. - /// </summary> - public static readonly CVarDef<bool> ExcitedGroups = - CVarDef.Create("atmos.excited_groups", true, CVar.SERVERONLY); - - /// <summary> - /// Whether all tiles in an excited group will clear themselves once being exposed to space. - /// Similar to <see cref="MonstermosDepressurization"/>, without none of the tile ripping or - /// things being thrown around very violently. - /// Needs <see cref="ExcitedGroups"/> to be enabled to work. - /// </summary> - public static readonly CVarDef<bool> ExcitedGroupsSpaceIsAllConsuming = - CVarDef.Create("atmos.excited_groups_space_is_all_consuming", false, CVar.SERVERONLY); - - /// <summary> - /// Maximum time in milliseconds that atmos can take processing. - /// </summary> - public static readonly CVarDef<float> AtmosMaxProcessTime = - CVarDef.Create("atmos.max_process_time", 3f, CVar.SERVERONLY); - - /// <summary> - /// Atmos tickrate in TPS. Atmos processing will happen every 1/TPS seconds. - /// </summary> - public static readonly CVarDef<float> AtmosTickRate = - CVarDef.Create("atmos.tickrate", 15f, CVar.SERVERONLY); - - /// <summary> - /// Scale factor for how fast things happen in our atmosphere - /// simulation compared to real life. 1x means pumps run at 1x - /// speed. Players typically expect things to happen faster - /// in-game. - /// </summary> - public static readonly CVarDef<float> AtmosSpeedup = - CVarDef.Create("atmos.speedup", 8f, CVar.SERVERONLY); - - /// <summary> - /// Like atmos.speedup, but only for gas and reaction heat values. 64x means - /// gases heat up and cool down 64x faster than real life. - /// </summary> - public static readonly CVarDef<float> AtmosHeatScale = - CVarDef.Create("atmos.heat_scale", 8f, CVar.SERVERONLY); - - /// <summary> - /// Maximum explosion radius for explosions caused by bursting a gas tank ("max caps"). - /// Setting this to zero disables the explosion but still allows the tank to burst and leak. - /// </summary> - public static readonly CVarDef<float> AtmosTankFragment = - CVarDef.Create("atmos.max_explosion_range", 26f, CVar.SERVERONLY); - - /* - * MIDI instruments - */ - - public static readonly CVarDef<int> MaxMidiEventsPerSecond = - CVarDef.Create("midi.max_events_per_second", 1000, CVar.REPLICATED | CVar.SERVER); - - public static readonly CVarDef<int> MaxMidiEventsPerBatch = - CVarDef.Create("midi.max_events_per_batch", 60, CVar.REPLICATED | CVar.SERVER); - - public static readonly CVarDef<int> MaxMidiBatchesDropped = - CVarDef.Create("midi.max_batches_dropped", 1, CVar.SERVERONLY); - - public static readonly CVarDef<int> MaxMidiLaggedBatches = - CVarDef.Create("midi.max_lagged_batches", 8, CVar.SERVERONLY); - - /* - * Holidays - */ - - public static readonly CVarDef<bool> HolidaysEnabled = CVarDef.Create("holidays.enabled", true, CVar.SERVERONLY); - - /* - * Branding stuff - */ - - public static readonly CVarDef<bool> BrandingSteam = CVarDef.Create("branding.steam", false, CVar.CLIENTONLY); - - /* - * OOC - */ - - public static readonly CVarDef<bool> OocEnabled = CVarDef.Create("ooc.enabled", true, CVar.NOTIFY | CVar.REPLICATED); - - public static readonly CVarDef<bool> AdminOocEnabled = - CVarDef.Create("ooc.enabled_admin", true, CVar.NOTIFY); - - /// <summary> - /// If true, whenever OOC is disabled the Discord OOC relay will also be disabled. - /// </summary> - public static readonly CVarDef<bool> DisablingOOCDisablesRelay = CVarDef.Create("ooc.disabling_ooc_disables_relay", true, CVar.SERVERONLY); - - /// <summary> - /// Whether or not OOC chat should be enabled during a round. - /// </summary> - public static readonly CVarDef<bool> OocEnableDuringRound = - CVarDef.Create("ooc.enable_during_round", false, CVar.NOTIFY | CVar.REPLICATED | CVar.SERVER); - - public static readonly CVarDef<bool> ShowOocPatronColor = - CVarDef.Create("ooc.show_ooc_patron_color", true, CVar.ARCHIVE | CVar.REPLICATED | CVar.CLIENT); - - /* - * LOOC - */ - - public static readonly CVarDef<bool> LoocEnabled = CVarDef.Create("looc.enabled", true, CVar.NOTIFY | CVar.REPLICATED); - - public static readonly CVarDef<bool> AdminLoocEnabled = - CVarDef.Create("looc.enabled_admin", true, CVar.NOTIFY); - - /// <summary> - /// True: Dead players can use LOOC - /// False: Dead player LOOC gets redirected to dead chat - /// </summary> - public static readonly CVarDef<bool> DeadLoocEnabled = CVarDef.Create("looc.enabled_dead", false, CVar.NOTIFY | CVar.REPLICATED); - - /// <summary> - /// True: Crit players can use LOOC - /// False: Crit player LOOC gets redirected to dead chat - /// </summary> - public static readonly CVarDef<bool> CritLoocEnabled = CVarDef.Create("looc.enabled_crit", false, CVar.NOTIFY | CVar.REPLICATED); - - /* - * Entity Menu Grouping Types - */ - public static readonly CVarDef<int> EntityMenuGroupingType = CVarDef.Create("entity_menu", 0, CVar.CLIENTONLY); - - /* - * Whitelist - */ - - /// <summary> - /// Controls whether the server will deny any players that are not whitelisted in the DB. - /// </summary> - public static readonly CVarDef<bool> WhitelistEnabled = - CVarDef.Create("whitelist.enabled", false, CVar.SERVERONLY); - /// <summary> - /// Specifies the whitelist prototypes to be used by the server. This should be a comma-separated list of prototypes. - /// If a whitelists conditions to be active fail (for example player count), the next whitelist will be used instead. If no whitelist is valid, the player will be allowed to connect. - /// </summary> - public static readonly CVarDef<string> WhitelistPrototypeList = - CVarDef.Create("whitelist.prototype_list", "basicWhitelist", CVar.SERVERONLY); - - /* - * VOTE - */ - - /// <summary> - /// Allows enabling/disabling player-started votes for ultimate authority - /// </summary> - public static readonly CVarDef<bool> VoteEnabled = - CVarDef.Create("vote.enabled", true, CVar.SERVERONLY); - - /// <summary> - /// See vote.enabled, but specific to restart votes - /// </summary> - public static readonly CVarDef<bool> VoteRestartEnabled = - CVarDef.Create("vote.restart_enabled", true, CVar.SERVERONLY); - - /// <summary> - /// Config for when the restart vote should be allowed to be called regardless with less than this amount of players. - /// </summary> - public static readonly CVarDef<int> VoteRestartMaxPlayers = - CVarDef.Create("vote.restart_max_players", 20, CVar.SERVERONLY); - - /// <summary> - /// Config for when the restart vote should be allowed to be called based on percentage of ghosts. - /// - public static readonly CVarDef<int> VoteRestartGhostPercentage = - CVarDef.Create("vote.restart_ghost_percentage", 55, CVar.SERVERONLY); - - /// <summary> - /// See vote.enabled, but specific to preset votes - /// </summary> - public static readonly CVarDef<bool> VotePresetEnabled = - CVarDef.Create("vote.preset_enabled", true, CVar.SERVERONLY); - - /// <summary> - /// See vote.enabled, but specific to map votes - /// </summary> - public static readonly CVarDef<bool> VoteMapEnabled = - CVarDef.Create("vote.map_enabled", false, CVar.SERVERONLY); - - /// <summary> - /// The required ratio of the server that must agree for a restart round vote to go through. - /// </summary> - public static readonly CVarDef<float> VoteRestartRequiredRatio = - CVarDef.Create("vote.restart_required_ratio", 0.85f, CVar.SERVERONLY); - - /// <summary> - /// Whether or not to prevent the restart vote from having any effect when there is an online admin - /// </summary> - public static readonly CVarDef<bool> VoteRestartNotAllowedWhenAdminOnline = - CVarDef.Create("vote.restart_not_allowed_when_admin_online", true, CVar.SERVERONLY); - - /// <summary> - /// The delay which two votes of the same type are allowed to be made by separate people, in seconds. - /// </summary> - public static readonly CVarDef<float> VoteSameTypeTimeout = - CVarDef.Create("vote.same_type_timeout", 240f, CVar.SERVERONLY); - - /// <summary> - /// Sets the duration of the map vote timer. - /// </summary> - public static readonly CVarDef<int> - VoteTimerMap = CVarDef.Create("vote.timermap", 90, CVar.SERVERONLY); - - /// <summary> - /// Sets the duration of the restart vote timer. - /// </summary> - public static readonly CVarDef<int> - VoteTimerRestart = CVarDef.Create("vote.timerrestart", 60, CVar.SERVERONLY); - - /// <summary> - /// Sets the duration of the gamemode/preset vote timer. - /// </summary> - public static readonly CVarDef<int> - VoteTimerPreset = CVarDef.Create("vote.timerpreset", 30, CVar.SERVERONLY); - - /// <summary> - /// Sets the duration of the map vote timer when ALONE. - /// </summary> - public static readonly CVarDef<int> - VoteTimerAlone = CVarDef.Create("vote.timeralone", 10, CVar.SERVERONLY); - - /* - * VOTEKICK - */ - - /// <summary> - /// Allows enabling/disabling player-started votekick for ultimate authority - /// </summary> - public static readonly CVarDef<bool> VotekickEnabled = - CVarDef.Create("votekick.enabled", true, CVar.SERVERONLY); - - /// <summary> - /// Config for when the votekick should be allowed to be called based on number of eligible voters. - /// </summary> - public static readonly CVarDef<int> VotekickEligibleNumberRequirement = - CVarDef.Create("votekick.eligible_number", 5, CVar.SERVERONLY); - - /// <summary> - /// Whether a votekick initiator must be a ghost or not. - /// </summary> - public static readonly CVarDef<bool> VotekickInitiatorGhostRequirement = - CVarDef.Create("votekick.initiator_ghost_requirement", true, CVar.SERVERONLY); - - /// <summary> - /// Should the initiator be whitelisted to initiate a votekick? - /// </summary> - public static readonly CVarDef<bool> VotekickInitiatorWhitelistedRequirement = - CVarDef.Create("votekick.initiator_whitelist_requirement", true, CVar.SERVERONLY); - - /// <summary> - /// Should the initiator be able to start a votekick if they are bellow the votekick.voter_playtime requirement? - /// </summary> - public static readonly CVarDef<bool> VotekickInitiatorTimeRequirement = - CVarDef.Create("votekick.initiator_time_requirement", false, CVar.SERVERONLY); - - /// <summary> - /// Whether a votekick voter must be a ghost or not. - /// </summary> - public static readonly CVarDef<bool> VotekickVoterGhostRequirement = - CVarDef.Create("votekick.voter_ghost_requirement", true, CVar.SERVERONLY); - - /// <summary> - /// Config for how many hours playtime a player must have to be able to vote on a votekick. - /// </summary> - public static readonly CVarDef<int> VotekickEligibleVoterPlaytime = - CVarDef.Create("votekick.voter_playtime", 100, CVar.SERVERONLY); - - /// <summary> - /// Config for how many seconds a player must have been dead to initiate a votekick / be able to vote on a votekick. - /// </summary> - public static readonly CVarDef<int> VotekickEligibleVoterDeathtime = - CVarDef.Create("votekick.voter_deathtime", 30, CVar.REPLICATED | CVar.SERVER); - - /// <summary> - /// The required ratio of eligible voters that must agree for a votekick to go through. - /// </summary> - public static readonly CVarDef<float> VotekickRequiredRatio = - CVarDef.Create("votekick.required_ratio", 0.6f, CVar.SERVERONLY); - - /// <summary> - /// Whether or not to prevent the votekick from having any effect when there is an online admin. - /// </summary> - public static readonly CVarDef<bool> VotekickNotAllowedWhenAdminOnline = - CVarDef.Create("votekick.not_allowed_when_admin_online", true, CVar.SERVERONLY); - - /// <summary> - /// The delay for which two votekicks are allowed to be made by separate people, in seconds. - /// </summary> - public static readonly CVarDef<float> VotekickTimeout = - CVarDef.Create("votekick.timeout", 120f, CVar.SERVERONLY); - - /// <summary> - /// Sets the duration of the votekick vote timer. - /// </summary> - public static readonly CVarDef<int> - VotekickTimer = CVarDef.Create("votekick.timer", 60, CVar.SERVERONLY); - - /// <summary> - /// Config for how many hours playtime a player must have to get protection from the Raider votekick type when playing as an antag. - /// </summary> - public static readonly CVarDef<int> VotekickAntagRaiderProtection = - CVarDef.Create("votekick.antag_raider_protection", 10, CVar.SERVERONLY); - - /// <summary> - /// Default severity for votekick bans - /// </summary> - public static readonly CVarDef<string> VotekickBanDefaultSeverity = - CVarDef.Create("votekick.ban_default_severity", "High", CVar.ARCHIVE | CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// Duration of a ban caused by a votekick (in minutes). - /// </summary> - public static readonly CVarDef<int> VotekickBanDuration = - CVarDef.Create("votekick.ban_duration", 180, CVar.SERVERONLY); - - /// <summary> - /// Whether the ghost requirement settings for votekicks should be ignored for the lobby. - /// </summary> - public static readonly CVarDef<bool> VotekickIgnoreGhostReqInLobby = - CVarDef.Create("votekick.ignore_ghost_req_in_lobby", true, CVar.SERVERONLY); - - /* - * BAN - */ - - public static readonly CVarDef<bool> BanHardwareIds = - CVarDef.Create("ban.hardware_ids", true, CVar.SERVERONLY); - - /* - * Procgen - */ - - /// <summary> - /// Should we pre-load all of the procgen atlasses. - /// </summary> - public static readonly CVarDef<bool> ProcgenPreload = - CVarDef.Create("procgen.preload", true, CVar.SERVERONLY); - - /* - * Shuttles - */ - - // Look this is technically eye behavior but its main impact is shuttles so I just dumped it here. - /// <summary> - /// If true then the camera will match the grid / map and is unchangeable. - /// - When traversing grids it will snap to 0 degrees rotation. - /// False means the player has control over the camera rotation. - /// - When traversing grids it will snap to the nearest cardinal which will generally be imperceptible. - /// </summary> - public static readonly CVarDef<bool> CameraRotationLocked = - CVarDef.Create("shuttle.camera_rotation_locked", false, CVar.REPLICATED); - - /// <summary> - /// Whether the arrivals terminal should be on a planet map. - /// </summary> - public static readonly CVarDef<bool> ArrivalsPlanet = - CVarDef.Create("shuttle.arrivals_planet", true, CVar.SERVERONLY); - - /// <summary> - /// Whether the arrivals shuttle is enabled. - /// </summary> - public static readonly CVarDef<bool> ArrivalsShuttles = - CVarDef.Create("shuttle.arrivals", true, CVar.SERVERONLY); - - /// <summary> - /// The map to use for the arrivals station. - /// </summary> - public static readonly CVarDef<string> ArrivalsMap = - CVarDef.Create("shuttle.arrivals_map", "/Maps/Misc/terminal.yml", CVar.SERVERONLY); - - /// <summary> - /// Cooldown between arrivals departures. This should be longer than the FTL time or it will double cycle. - /// </summary> - public static readonly CVarDef<float> ArrivalsCooldown = - CVarDef.Create("shuttle.arrivals_cooldown", 50f, CVar.SERVERONLY); - - /// <summary> - /// Are players allowed to return on the arrivals shuttle. - /// </summary> - public static readonly CVarDef<bool> ArrivalsReturns = - CVarDef.Create("shuttle.arrivals_returns", false, CVar.SERVERONLY); - - /// <summary> - /// Should all players who spawn at arrivals have godmode until they leave the map? - /// </summary> - public static readonly CVarDef<bool> GodmodeArrivals = - CVarDef.Create("shuttle.godmode_arrivals", false, CVar.SERVERONLY); - - /// <summary> - /// If a grid is split then hide any smaller ones under this mass (kg) from the map. - /// This is useful to avoid split grids spamming out labels. - /// </summary> - public static readonly CVarDef<int> HideSplitGridsUnder = - CVarDef.Create("shuttle.hide_split_grids_under", 30, CVar.SERVERONLY); - - /// <summary> - /// Whether to automatically spawn escape shuttles. - /// </summary> - public static readonly CVarDef<bool> GridFill = - CVarDef.Create("shuttle.grid_fill", true, CVar.SERVERONLY); - - /// <summary> - /// Whether to automatically preloading grids by GridPreloaderSystem - /// </summary> - public static readonly CVarDef<bool> PreloadGrids = - CVarDef.Create("shuttle.preload_grids", true, CVar.SERVERONLY); - - /// <summary> - /// How long the warmup time before FTL start should be. - /// </summary> - public static readonly CVarDef<float> FTLStartupTime = - CVarDef.Create("shuttle.startup_time", 5.5f, CVar.SERVERONLY); - - /// <summary> - /// How long a shuttle spends in FTL. - /// </summary> - public static readonly CVarDef<float> FTLTravelTime = - CVarDef.Create("shuttle.travel_time", 20f, CVar.SERVERONLY); - - /// <summary> - /// How long the final stage of FTL before arrival should be. - /// </summary> - public static readonly CVarDef<float> FTLArrivalTime = - CVarDef.Create("shuttle.arrival_time", 5f, CVar.SERVERONLY); - - /// <summary> - /// How much time needs to pass before a shuttle can FTL again. - /// </summary> - public static readonly CVarDef<float> FTLCooldown = - CVarDef.Create("shuttle.cooldown", 10f, CVar.SERVERONLY); - - /// <summary> - /// The maximum <see cref="PhysicsComponent.Mass"/> a grid can have before it becomes unable to FTL. - /// Any value equal to or less than zero will disable this check. - /// </summary> - public static readonly CVarDef<float> FTLMassLimit = - CVarDef.Create("shuttle.mass_limit", 300f, CVar.SERVERONLY); - - /// <summary> - /// How long to knock down entities for if they aren't buckled when FTL starts and stops. - /// </summary> - public static readonly CVarDef<float> HyperspaceKnockdownTime = - CVarDef.Create("shuttle.hyperspace_knockdown_time", 5f, CVar.SERVERONLY); - - /* - * Emergency - */ - - /// <summary> - /// Is the emergency shuttle allowed to be early launched. - /// </summary> - public static readonly CVarDef<bool> EmergencyEarlyLaunchAllowed = - CVarDef.Create("shuttle.emergency_early_launch_allowed", false, CVar.SERVERONLY); - - /// <summary> - /// How long the emergency shuttle remains docked with the station, in seconds. - /// </summary> - public static readonly CVarDef<float> EmergencyShuttleDockTime = - CVarDef.Create("shuttle.emergency_dock_time", 180f, CVar.SERVERONLY); - - /// <summary> - /// If the emergency shuttle can't dock at a priority port, the dock time will be multiplied with this value. - /// </summary> - public static readonly CVarDef<float> EmergencyShuttleDockTimeMultiplierOtherDock = - CVarDef.Create("shuttle.emergency_dock_time_multiplier_other_dock", 1.6667f, CVar.SERVERONLY); - - /// <summary> - /// If the emergency shuttle can't dock at all, the dock time will be multiplied with this value. - /// </summary> - public static readonly CVarDef<float> EmergencyShuttleDockTimeMultiplierNoDock = - CVarDef.Create("shuttle.emergency_dock_time_multiplier_no_dock", 2f, CVar.SERVERONLY); - - /// <summary> - /// How long after the console is authorized for the shuttle to early launch. - /// </summary> - public static readonly CVarDef<float> EmergencyShuttleAuthorizeTime = - CVarDef.Create("shuttle.emergency_authorize_time", 10f, CVar.SERVERONLY); - - /// <summary> - /// The minimum time for the emergency shuttle to arrive at centcomm. - /// Actual minimum travel time cannot be less than <see cref="ShuttleSystem.DefaultArrivalTime"/> - /// </summary> - public static readonly CVarDef<float> EmergencyShuttleMinTransitTime = - CVarDef.Create("shuttle.emergency_transit_time_min", 60f, CVar.SERVERONLY); - - /// <summary> - /// The maximum time for the emergency shuttle to arrive at centcomm. - /// </summary> - public static readonly CVarDef<float> EmergencyShuttleMaxTransitTime = - CVarDef.Create("shuttle.emergency_transit_time_max", 180f, CVar.SERVERONLY); - - /// <summary> - /// Whether the emergency shuttle is enabled or should the round just end. - /// </summary> - public static readonly CVarDef<bool> EmergencyShuttleEnabled = - CVarDef.Create("shuttle.emergency", true, CVar.SERVERONLY); - - /// <summary> - /// The percentage of time passed from the initial call to when the shuttle can no longer be recalled. - /// ex. a call time of 10min and turning point of 0.5 means the shuttle cannot be recalled after 5 minutes. - /// </summary> - public static readonly CVarDef<float> EmergencyRecallTurningPoint = - CVarDef.Create("shuttle.recall_turning_point", 0.5f, CVar.SERVERONLY); - - /// <summary> - /// Time in minutes after round start to auto-call the shuttle. Set to zero to disable. - /// </summary> - public static readonly CVarDef<int> EmergencyShuttleAutoCallTime = - CVarDef.Create("shuttle.auto_call_time", 90, CVar.SERVERONLY); - - /// <summary> - /// Time in minutes after the round was extended (by recalling the shuttle) to call - /// the shuttle again. - /// </summary> - public static readonly CVarDef<int> EmergencyShuttleAutoCallExtensionTime = - CVarDef.Create("shuttle.auto_call_extension_time", 45, CVar.SERVERONLY); - - /* - * Crew Manifests - */ - - /// <summary> - /// Setting this allows a crew manifest to be opened from any window - /// that has a crew manifest button, and sends the correct message. - /// If this is false, only in-game entities will allow you to see - /// the crew manifest, if the functionality is coded in. - /// Having administrator priveledge ignores this, but will still - /// hide the button in UI windows. - /// </summary> - public static readonly CVarDef<bool> CrewManifestWithoutEntity = - CVarDef.Create("crewmanifest.no_entity", true, CVar.REPLICATED); - - /// <summary> - /// Setting this allows the crew manifest to be viewed from 'unsecure' - /// entities, such as the PDA. - /// </summary> - public static readonly CVarDef<bool> CrewManifestUnsecure = - CVarDef.Create("crewmanifest.unsecure", true, CVar.REPLICATED); - - /* - * Biomass - */ - - /// <summary> - /// Enabled: Cloning has 70% cost and reclaimer will refuse to reclaim corpses with souls. (For LRP). - /// Disabled: Cloning has full biomass cost and reclaimer can reclaim corpses with souls. (Playtested and balanced for MRP+). - /// </summary> - public static readonly CVarDef<bool> BiomassEasyMode = - CVarDef.Create("biomass.easy_mode", true, CVar.SERVERONLY); - - /* - * Anomaly - */ - - /// <summary> - /// A scale factor applied to a grid's bounds when trying to find a spot to randomly generate an anomaly. - /// </summary> - public static readonly CVarDef<float> AnomalyGenerationGridBoundsScale = - CVarDef.Create("anomaly.generation_grid_bounds_scale", 0.6f, CVar.SERVERONLY); - - /* - * VIEWPORT - */ - - public static readonly CVarDef<bool> ViewportStretch = - CVarDef.Create("viewport.stretch", true, CVar.CLIENTONLY | CVar.ARCHIVE); - - public static readonly CVarDef<int> ViewportFixedScaleFactor = - CVarDef.Create("viewport.fixed_scale_factor", 2, CVar.CLIENTONLY | CVar.ARCHIVE); - - // This default is basically specifically chosen so fullscreen/maximized 1080p hits a 2x snap and does NN. - public static readonly CVarDef<int> ViewportSnapToleranceMargin = - CVarDef.Create("viewport.snap_tolerance_margin", 64, CVar.CLIENTONLY | CVar.ARCHIVE); - - public static readonly CVarDef<int> ViewportSnapToleranceClip = - CVarDef.Create("viewport.snap_tolerance_clip", 32, CVar.CLIENTONLY | CVar.ARCHIVE); - - public static readonly CVarDef<bool> ViewportScaleRender = - CVarDef.Create("viewport.scale_render", true, CVar.CLIENTONLY | CVar.ARCHIVE); - - public static readonly CVarDef<int> ViewportMinimumWidth = - CVarDef.Create("viewport.minimum_width", 15, CVar.REPLICATED | CVar.SERVER); - - public static readonly CVarDef<int> ViewportMaximumWidth = - CVarDef.Create("viewport.maximum_width", 21, CVar.REPLICATED | CVar.SERVER); - - public static readonly CVarDef<int> ViewportWidth = - CVarDef.Create("viewport.width", 21, CVar.CLIENTONLY | CVar.ARCHIVE); - - public static readonly CVarDef<bool> ViewportVerticalFit = - CVarDef.Create("viewport.vertical_fit", true, CVar.CLIENTONLY | CVar.ARCHIVE); - - /* - * UI - */ - - public static readonly CVarDef<string> UILayout = - CVarDef.Create("ui.layout", "Default", CVar.CLIENTONLY | CVar.ARCHIVE); - - public static readonly CVarDef<string> DefaultScreenChatSize = - CVarDef.Create("ui.default_chat_size", "", CVar.CLIENTONLY | CVar.ARCHIVE); - - public static readonly CVarDef<string> SeparatedScreenChatSize = - CVarDef.Create("ui.separated_chat_size", "0.6,0", CVar.CLIENTONLY | CVar.ARCHIVE); - - - /* - * Accessibility - */ - - /// <summary> - /// Chat window opacity slider, controlling the alpha of the chat window background. - /// Goes from to 0 (completely transparent) to 1 (completely opaque) - /// </summary> - public static readonly CVarDef<float> ChatWindowOpacity = - CVarDef.Create("accessibility.chat_window_transparency", 0.85f, CVar.CLIENTONLY | CVar.ARCHIVE); - - /// <summary> - /// Toggle for visual effects that may potentially cause motion sickness. - /// Where reasonable, effects affected by this CVar should use an alternate effect. - /// Please do not use this CVar as a bandaid for effects that could otherwise be made accessible without issue. - /// </summary> - public static readonly CVarDef<bool> ReducedMotion = - CVarDef.Create("accessibility.reduced_motion", false, CVar.CLIENTONLY | CVar.ARCHIVE); - - public static readonly CVarDef<bool> ChatEnableColorName = - CVarDef.Create("accessibility.enable_color_name", true, CVar.CLIENTONLY | CVar.ARCHIVE, "Toggles displaying names with individual colors."); - - /// <summary> - /// Screen shake intensity slider, controlling the intensity of the CameraRecoilSystem. - /// Goes from 0 (no recoil at all) to 1 (regular amounts of recoil) - /// </summary> - public static readonly CVarDef<float> ScreenShakeIntensity = - CVarDef.Create("accessibility.screen_shake_intensity", 1f, CVar.CLIENTONLY | CVar.ARCHIVE); - - /// <summary> - /// A generic toggle for various visual effects that are color sensitive. - /// As of 2/16/24, only applies to progress bar colors. - /// </summary> - public static readonly CVarDef<bool> AccessibilityColorblindFriendly = - CVarDef.Create("accessibility.colorblind_friendly", false, CVar.CLIENTONLY | CVar.ARCHIVE); - - /* - * CHAT - */ - - /// <summary> - /// Chat rate limit values are accounted in periods of this size (seconds). - /// After the period has passed, the count resets. - /// </summary> - /// <seealso cref="ChatRateLimitCount"/> - public static readonly CVarDef<float> ChatRateLimitPeriod = - CVarDef.Create("chat.rate_limit_period", 2f, CVar.SERVERONLY); - - /// <summary> - /// How many chat messages are allowed in a single rate limit period. - /// </summary> - /// <remarks> - /// The total rate limit throughput per second is effectively - /// <see cref="ChatRateLimitCount"/> divided by <see cref="ChatRateLimitCount"/>. - /// </remarks> - /// <seealso cref="ChatRateLimitPeriod"/> - public static readonly CVarDef<int> ChatRateLimitCount = - CVarDef.Create("chat.rate_limit_count", 10, CVar.SERVERONLY); - - /// <summary> - /// Minimum delay (in seconds) between notifying admins about chat message rate limit violations. - /// A negative value disables admin announcements. - /// </summary> - public static readonly CVarDef<int> ChatRateLimitAnnounceAdminsDelay = - CVarDef.Create("chat.rate_limit_announce_admins_delay", 15, CVar.SERVERONLY); - - public static readonly CVarDef<int> ChatMaxMessageLength = - CVarDef.Create("chat.max_message_length", 1000, CVar.SERVER | CVar.REPLICATED); - - public static readonly CVarDef<int> ChatMaxAnnouncementLength = - CVarDef.Create("chat.max_announcement_length", 256, CVar.SERVER | CVar.REPLICATED); - - public static readonly CVarDef<bool> ChatSanitizerEnabled = - CVarDef.Create("chat.chat_sanitizer_enabled", true, CVar.SERVERONLY); - - public static readonly CVarDef<bool> ChatShowTypingIndicator = - CVarDef.Create("chat.show_typing_indicator", true, CVar.ARCHIVE | CVar.REPLICATED | CVar.SERVER); - - public static readonly CVarDef<bool> ChatEnableFancyBubbles = - CVarDef.Create("chat.enable_fancy_bubbles", true, CVar.CLIENTONLY | CVar.ARCHIVE, "Toggles displaying fancy speech bubbles, which display the speaking character's name."); - - public static readonly CVarDef<bool> ChatFancyNameBackground = - CVarDef.Create("chat.fancy_name_background", false, CVar.CLIENTONLY | CVar.ARCHIVE, "Toggles displaying a background under the speaking character's name."); - - /// <summary> - /// A message broadcast to each player that joins the lobby. - /// May be changed by admins ingame through use of the "set-motd" command. - /// In this case the new value, if not empty, is broadcast to all connected players and saved between rounds. - /// May be requested by any player through use of the "get-motd" command. - /// </summary> - public static readonly CVarDef<string> MOTD = - CVarDef.Create("chat.motd", "", CVar.SERVER | CVar.SERVERONLY | CVar.ARCHIVE, "A message broadcast to each player that joins the lobby."); - - /* - * AFK - */ - - /// <summary> - /// How long a client can go without any input before being considered AFK. - /// </summary> - public static readonly CVarDef<float> AfkTime = - CVarDef.Create("afk.time", 60f, CVar.SERVERONLY); - - /* - * IC - */ - - /// <summary> - /// Restricts IC character names to alphanumeric chars. - /// </summary> - public static readonly CVarDef<bool> RestrictedNames = - CVarDef.Create("ic.restricted_names", true, CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// Allows flavor text (character descriptions) - /// </summary> - public static readonly CVarDef<bool> FlavorText = - CVarDef.Create("ic.flavor_text", false, CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// Adds a period at the end of a sentence if the sentence ends in a letter. - /// </summary> - public static readonly CVarDef<bool> ChatPunctuation = - CVarDef.Create("ic.punctuation", false, CVar.SERVER); - - /// <summary> - /// Enables automatically forcing IC name rules. Uppercases the first letter of the first and last words of the name - /// </summary> - public static readonly CVarDef<bool> ICNameCase = - CVarDef.Create("ic.name_case", true, CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// Whether or not players' characters are randomly generated rather than using their selected characters in the creator. - /// </summary> - public static readonly CVarDef<bool> ICRandomCharacters = - CVarDef.Create("ic.random_characters", false, CVar.SERVER); - - /// <summary> - /// A weighted random prototype used to determine the species selected for random characters. - /// </summary> - public static readonly CVarDef<string> ICRandomSpeciesWeights = - CVarDef.Create("ic.random_species_weights", "SpeciesWeights", CVar.SERVER); - - /// <summary> - /// Control displaying SSD indicators near players - /// </summary> - public static readonly CVarDef<bool> ICShowSSDIndicator = - CVarDef.Create("ic.show_ssd_indicator", true, CVar.CLIENTONLY); - - /* - * Salvage - */ - - /// <summary> - /// Duration for missions - /// </summary> - public static readonly CVarDef<float> - SalvageExpeditionDuration = CVarDef.Create("salvage.expedition_duration", 660f, CVar.REPLICATED); - - /// <summary> - /// Cooldown for missions. - /// </summary> - public static readonly CVarDef<float> - SalvageExpeditionCooldown = CVarDef.Create("salvage.expedition_cooldown", 780f, CVar.REPLICATED); - - /* - * Flavor - */ - - /// <summary> - /// Flavor limit. This is to ensure that having a large mass of flavors in - /// some food object won't spam a user with flavors. - /// </summary> - public static readonly CVarDef<int> - FlavorLimit = CVarDef.Create("flavor.limit", 10, CVar.SERVERONLY); - - /* - * Mapping - */ - - /// <summary> - /// Will mapping mode enable autosaves when it's activated? - /// </summary> - public static readonly CVarDef<bool> - AutosaveEnabled = CVarDef.Create("mapping.autosave", true, CVar.SERVERONLY); - - /// <summary> - /// Autosave interval in seconds. - /// </summary> - public static readonly CVarDef<float> - AutosaveInterval = CVarDef.Create("mapping.autosave_interval", 600f, CVar.SERVERONLY); - - /// <summary> - /// Directory in server user data to save to. Saves will be inside folders in this directory. - /// </summary> - public static readonly CVarDef<string> - AutosaveDirectory = CVarDef.Create("mapping.autosave_dir", "Autosaves", CVar.SERVERONLY); - - - /* - * Rules - */ - - /// <summary> - /// Time that players have to wait before rules can be accepted. - /// </summary> - public static readonly CVarDef<float> RulesWaitTime = - CVarDef.Create("rules.time", 45f, CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// Don't show rules to localhost/loopback interface. - /// </summary> - public static readonly CVarDef<bool> RulesExemptLocal = - CVarDef.Create("rules.exempt_local", true, CVar.SERVERONLY); - - - /* - * Autogeneration - */ - - public static readonly CVarDef<string> DestinationFile = - CVarDef.Create("autogen.destination_file", "", CVar.SERVER | CVar.SERVERONLY); - - /* - * Network Resource Manager - */ - - /// <summary> - /// Whether uploaded files will be stored in the server's database. - /// This is useful to keep "logs" on what files admins have uploaded in the past. - /// </summary> - public static readonly CVarDef<bool> ResourceUploadingStoreEnabled = - CVarDef.Create("netres.store_enabled", true, CVar.SERVER | CVar.SERVERONLY); - - /// <summary> - /// Numbers of days before stored uploaded files are deleted. Set to zero or negative to disable auto-delete. - /// This is useful to free some space automatically. Auto-deletion runs only on server boot. - /// </summary> - public static readonly CVarDef<int> ResourceUploadingStoreDeletionDays = - CVarDef.Create("netres.store_deletion_days", 30, CVar.SERVER | CVar.SERVERONLY); - - /* - * Controls - */ - - /// <summary> - /// Deadzone for drag-drop interactions. - /// </summary> - public static readonly CVarDef<float> DragDropDeadZone = - CVarDef.Create("control.drag_dead_zone", 12f, CVar.CLIENTONLY | CVar.ARCHIVE); - - /// <summary> - /// Toggles whether the walking key is a toggle or a held key. - /// </summary> - public static readonly CVarDef<bool> ToggleWalk = - CVarDef.Create("control.toggle_walk", false, CVar.CLIENTONLY | CVar.ARCHIVE); - - /* - * Interactions - */ - - // The rationale behind the default limit is simply that I can easily get to 7 interactions per second by just - // trying to spam toggle a light switch or lever (though the UseDelay component limits the actual effect of the - // interaction). I don't want to accidentally spam admins with alerts just because somebody is spamming a - // key manually, nor do we want to alert them just because the player is having network issues and the server - // receives multiple interactions at once. But we also want to try catch people with modified clients that spam - // many interactions on the same tick. Hence, a very short period, with a relatively high count. - - /// <summary> - /// Maximum number of interactions that a player can perform within <see cref="InteractionRateLimitCount"/> seconds - /// </summary> - public static readonly CVarDef<int> InteractionRateLimitCount = - CVarDef.Create("interaction.rate_limit_count", 5, CVar.SERVER | CVar.REPLICATED); - - /// <seealso cref="InteractionRateLimitCount"/> - public static readonly CVarDef<float> InteractionRateLimitPeriod = - CVarDef.Create("interaction.rate_limit_period", 0.5f, CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// Minimum delay (in seconds) between notifying admins about interaction rate limit violations. A negative - /// value disables admin announcements. - /// </summary> - public static readonly CVarDef<int> InteractionRateLimitAnnounceAdminsDelay = - CVarDef.Create("interaction.rate_limit_announce_admins_delay", 120, CVar.SERVERONLY); - - /* - * STORAGE - */ - - /// <summary> - /// Whether or not the storage UI is static and bound to the hotbar, or unbound and allowed to be dragged anywhere. - /// </summary> - public static readonly CVarDef<bool> StaticStorageUI = - CVarDef.Create("control.static_storage_ui", true, CVar.CLIENTONLY | CVar.ARCHIVE); - - /// <summary> - /// Whether or not the storage window uses a transparent or opaque sprite. - /// </summary> - public static readonly CVarDef<bool> OpaqueStorageWindow = - CVarDef.Create("control.opaque_storage_background", false, CVar.CLIENTONLY | CVar.ARCHIVE); - - /* - * UPDATE - */ - - /// <summary> - /// If a server update restart is pending, the delay after the last player leaves before we actually restart. In seconds. - /// </summary> - public static readonly CVarDef<float> UpdateRestartDelay = - CVarDef.Create("update.restart_delay", 20f, CVar.SERVERONLY); - - /* - * Ghost - */ - - /// <summary> - /// The time you must spend reading the rules, before the "Request" button is enabled - /// </summary> - public static readonly CVarDef<float> GhostRoleTime = - CVarDef.Create("ghost.role_time", 3f, CVar.REPLICATED | CVar.SERVER); - - /// <summary> - /// If ghost role lotteries should be made near-instanteous. - /// </summary> - public static readonly CVarDef<bool> GhostQuickLottery = - CVarDef.Create("ghost.quick_lottery", false, CVar.SERVERONLY); - - /// <summary> - /// Whether or not to kill the player's mob on ghosting, when it is in a critical health state. - /// </summary> - public static readonly CVarDef<bool> GhostKillCrit = - CVarDef.Create("ghost.kill_crit", true, CVar.REPLICATED | CVar.SERVER); - - /* - * Fire alarm - */ - - /// <summary> - /// If fire alarms should have all access, or if activating/resetting these - /// should be restricted to what is dictated on a player's access card. - /// Defaults to true. - /// </summary> - public static readonly CVarDef<bool> FireAlarmAllAccess = - CVarDef.Create("firealarm.allaccess", true, CVar.SERVERONLY); - - /* - * PLAYTIME - */ - - /// <summary> - /// Time between play time autosaves, in seconds. - /// </summary> - public static readonly CVarDef<float> - PlayTimeSaveInterval = CVarDef.Create("playtime.save_interval", 900f, CVar.SERVERONLY); - - /* - * INFOLINKS - */ - - /// <summary> - /// Link to Discord server to show in the launcher. - /// </summary> - public static readonly CVarDef<string> InfoLinksDiscord = - CVarDef.Create("infolinks.discord", "", CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// Link to website to show in the launcher. - /// </summary> - public static readonly CVarDef<string> InfoLinksForum = - CVarDef.Create("infolinks.forum", "", CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// Link to GitHub page to show in the launcher. - /// </summary> - public static readonly CVarDef<string> InfoLinksGithub = - CVarDef.Create("infolinks.github", "", CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// Link to website to show in the launcher. - /// </summary> - public static readonly CVarDef<string> InfoLinksWebsite = - CVarDef.Create("infolinks.website", "", CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// Link to wiki to show in the launcher. - /// </summary> - public static readonly CVarDef<string> InfoLinksWiki = - CVarDef.Create("infolinks.wiki", "", CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// Link to Patreon. Not shown in the launcher currently. - /// </summary> - public static readonly CVarDef<string> InfoLinksPatreon = - CVarDef.Create("infolinks.patreon", "", CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// Link to the bug report form. - /// </summary> - public static readonly CVarDef<string> InfoLinksBugReport = - CVarDef.Create("infolinks.bug_report", "", CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// Link to site handling ban appeals. Shown in ban disconnect messages. - /// </summary> - public static readonly CVarDef<string> InfoLinksAppeal = - CVarDef.Create("infolinks.appeal", "", CVar.SERVER | CVar.REPLICATED); - - /* - * CONFIG - */ - - // These are server-only for now since I don't foresee a client use yet, - // and I don't wanna have to start coming up with like .client suffixes and stuff like that. - - /// <summary> - /// Configuration presets to load during startup. - /// Multiple presets can be separated by comma and are loaded in order. - /// </summary> - /// <remarks> - /// Loaded presets must be located under the <c>ConfigPresets/</c> resource directory and end with the <c>.toml</c> extension. - /// Only the file name (without extension) must be given for this variable. - /// </remarks> - public static readonly CVarDef<string> ConfigPresets = - CVarDef.Create("config.presets", "", CVar.SERVERONLY); - - /// <summary> - /// Whether to load the preset development CVars. - /// This disables some things like lobby to make development easier. - /// Even when true, these are only loaded if the game is compiled with <c>DEVELOPMENT</c> set. - /// </summary> - public static readonly CVarDef<bool> ConfigPresetDevelopment = - CVarDef.Create("config.preset_development", true, CVar.SERVERONLY); - - /// <summary> - /// Whether to load the preset debug CVars. - /// Even when true, these are only loaded if the game is compiled with <c>DEBUG</c> set. - /// </summary> - public static readonly CVarDef<bool> ConfigPresetDebug = - CVarDef.Create("config.preset_debug", true, CVar.SERVERONLY); - - /* - * World Generation - */ - /// <summary> - /// Whether or not world generation is enabled. - /// </summary> - public static readonly CVarDef<bool> WorldgenEnabled = - CVarDef.Create("worldgen.enabled", false, CVar.SERVERONLY); - - /// <summary> - /// The worldgen config to use. - /// </summary> - public static readonly CVarDef<string> WorldgenConfig = - CVarDef.Create("worldgen.worldgen_config", "Default", CVar.SERVERONLY); - - /// <summary> - /// The maximum amount of time the entity GC can process, in ms. - /// </summary> - public static readonly CVarDef<int> GCMaximumTimeMs = - CVarDef.Create("entgc.maximum_time_ms", 5, CVar.SERVERONLY); - - /* - * Replays - */ - - /// <summary> - /// Whether or not to record admin chat. If replays are being publicly distributes, this should probably be - /// false. - /// </summary> - public static readonly CVarDef<bool> ReplayRecordAdminChat = - CVarDef.Create("replay.record_admin_chat", false, CVar.ARCHIVE); - - /// <summary> - /// Automatically record full rounds as replays. - /// </summary> - public static readonly CVarDef<bool> ReplayAutoRecord = - CVarDef.Create("replay.auto_record", false, CVar.SERVERONLY); - - /// <summary> - /// The file name to record automatic replays to. The path is relative to <see cref="CVars.ReplayDirectory"/>. - /// </summary> - /// <remarks> - /// <para> - /// If the path includes slashes, directories will be automatically created if necessary. - /// </para> - /// <para> - /// A number of substitutions can be used to automatically fill in the file name: <c>{year}</c>, <c>{month}</c>, <c>{day}</c>, <c>{hour}</c>, <c>{minute}</c>, <c>{round}</c>. - /// </para> - /// </remarks> - public static readonly CVarDef<string> ReplayAutoRecordName = - CVarDef.Create("replay.auto_record_name", "{year}_{month}_{day}-{hour}_{minute}-round_{round}.zip", CVar.SERVERONLY); - - /// <summary> - /// Path that, if provided, automatic replays are initially recorded in. - /// When the recording is done, the file is moved into its final destination. - /// Unless this path is rooted, it will be relative to <see cref="CVars.ReplayDirectory"/>. - /// </summary> - public static readonly CVarDef<string> ReplayAutoRecordTempDir = - CVarDef.Create("replay.auto_record_temp_dir", "", CVar.SERVERONLY); - - /* - * Miscellaneous - */ - - public static readonly CVarDef<bool> GatewayGeneratorEnabled = - CVarDef.Create("gateway.generator_enabled", true); - - // Clippy! - public static readonly CVarDef<string> TippyEntity = - CVarDef.Create("tippy.entity", "Tippy", CVar.SERVER | CVar.REPLICATED); - - /// <summary> - /// The number of seconds that must pass for a single entity to be able to point at something again. - /// </summary> - public static readonly CVarDef<float> PointingCooldownSeconds = - CVarDef.Create("pointing.cooldown_seconds", 0.5f, CVar.SERVERONLY); - - /* - * DEBUG - */ - - /// <summary> - /// A simple toggle to test <c>OptionsVisualizerComponent</c>. - /// </summary> - public static readonly CVarDef<bool> DebugOptionVisualizerTest = - CVarDef.Create("debug.option_visualizer_test", false, CVar.CLIENTONLY); - - /// <summary> - /// Set to true to disable parallel processing in the pow3r solver. - /// </summary> - public static readonly CVarDef<bool> DebugPow3rDisableParallel = - CVarDef.Create("debug.pow3r_disable_parallel", true, CVar.SERVERONLY); - } +/// <summary> +/// Contains all the CVars used by content. +/// </summary> +/// <remarks> +/// NOTICE FOR FORKS: Put your own CVars in a separate file with a different [CVarDefs] attribute. RT will automatically pick up on it. +/// </remarks> +[CVarDefs] +public sealed partial class CCVars : CVars +{ + // Only debug stuff lives here. + + /// <summary> + /// A simple toggle to test <c>OptionsVisualizerComponent</c>. + /// </summary> + public static readonly CVarDef<bool> DebugOptionVisualizerTest = + CVarDef.Create("debug.option_visualizer_test", false, CVar.CLIENTONLY); + + /// <summary> + /// Set to true to disable parallel processing in the pow3r solver. + /// </summary> + public static readonly CVarDef<bool> DebugPow3rDisableParallel = + CVarDef.Create("debug.pow3r_disable_parallel", true, CVar.SERVERONLY); } From a1966d867183f2962d17ef5415dc89b3cde54253 Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Tue, 12 Nov 2024 08:19:54 +0300 Subject: [PATCH 060/187] improve BiomeDunGen (#33113) * improve BiomeDunGen * forgot lol * Update DungeonJob.PostGenBiome.cs * Update DungeonJob.PostGenBiome.cs --- .../DungeonJob/DungeonJob.PostGenBiome.cs | 25 ++++++++++++------- .../Parallax/Biomes/SharedBiomeSystem.cs | 2 +- .../Procedural/PostGeneration/BiomeDunGen.cs | 7 ++++++ 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/Content.Server/Procedural/DungeonJob/DungeonJob.PostGenBiome.cs b/Content.Server/Procedural/DungeonJob/DungeonJob.PostGenBiome.cs index 65f6d2d14f9..fdadcb7849d 100644 --- a/Content.Server/Procedural/DungeonJob/DungeonJob.PostGenBiome.cs +++ b/Content.Server/Procedural/DungeonJob/DungeonJob.PostGenBiome.cs @@ -1,5 +1,6 @@ using System.Threading.Tasks; using Content.Server.Parallax; +using Content.Shared.Maps; using Content.Shared.Parallax.Biomes; using Content.Shared.Procedural; using Content.Shared.Procedural.PostGeneration; @@ -15,27 +16,35 @@ public sealed partial class DungeonJob /// </summary> private async Task PostGen(BiomeDunGen dunGen, DungeonData data, Dungeon dungeon, HashSet<Vector2i> reservedTiles, Random random) { - if (_entManager.TryGetComponent(_gridUid, out BiomeComponent? biomeComp)) + if (!_prototype.TryIndex(dunGen.BiomeTemplate, out var indexedBiome)) return; - biomeComp = _entManager.AddComponent<BiomeComponent>(_gridUid); var biomeSystem = _entManager.System<BiomeSystem>(); - biomeSystem.SetTemplate(_gridUid, biomeComp, _prototype.Index(dunGen.BiomeTemplate)); + var seed = random.Next(); var xformQuery = _entManager.GetEntityQuery<TransformComponent>(); - foreach (var node in dungeon.RoomTiles) + var tiles = _maps.GetAllTilesEnumerator(_gridUid, _grid); + while (tiles.MoveNext(out var tileRef)) { + var node = tileRef.Value.GridIndices; + if (reservedTiles.Contains(node)) continue; + + if (dunGen.TileMask is not null) + { + if (!dunGen.TileMask.Contains(((ContentTileDefinition) _tileDefManager[tileRef.Value.Tile.TypeId]).ID)) + continue; + } // Need to set per-tile to override data. - if (biomeSystem.TryGetTile(node, biomeComp.Layers, seed, _grid, out var tile)) + if (biomeSystem.TryGetTile(node, indexedBiome.Layers, seed, _grid, out var tile)) { _maps.SetTile(_gridUid, _grid, node, tile.Value); } - if (biomeSystem.TryGetDecals(node, biomeComp.Layers, seed, _grid, out var decals)) + if (biomeSystem.TryGetDecals(node, indexedBiome.Layers, seed, _grid, out var decals)) { foreach (var decal in decals) { @@ -43,7 +52,7 @@ private async Task PostGen(BiomeDunGen dunGen, DungeonData data, Dungeon dungeon } } - if (biomeSystem.TryGetEntity(node, biomeComp, _grid, out var entityProto)) + if (tile is not null && biomeSystem.TryGetEntity(node, indexedBiome.Layers, tile.Value, seed, _grid, out var entityProto)) { var ent = _entManager.SpawnEntity(entityProto, new EntityCoordinates(_gridUid, node + _grid.TileSizeHalfVector)); var xform = xformQuery.Get(ent); @@ -61,7 +70,5 @@ private async Task PostGen(BiomeDunGen dunGen, DungeonData data, Dungeon dungeon if (!ValidateResume()) return; } - - biomeComp.Enabled = false; } } diff --git a/Content.Shared/Parallax/Biomes/SharedBiomeSystem.cs b/Content.Shared/Parallax/Biomes/SharedBiomeSystem.cs index b14baba9817..250b0f70a54 100644 --- a/Content.Shared/Parallax/Biomes/SharedBiomeSystem.cs +++ b/Content.Shared/Parallax/Biomes/SharedBiomeSystem.cs @@ -183,7 +183,7 @@ public bool TryGetEntity(Vector2i indices, BiomeComponent component, MapGridComp } - private bool TryGetEntity(Vector2i indices, List<IBiomeLayer> layers, Tile tileRef, int seed, MapGridComponent grid, + public bool TryGetEntity(Vector2i indices, List<IBiomeLayer> layers, Tile tileRef, int seed, MapGridComponent grid, [NotNullWhen(true)] out string? entity) { var tileId = TileDefManager[tileRef.TypeId].ID; diff --git a/Content.Shared/Procedural/PostGeneration/BiomeDunGen.cs b/Content.Shared/Procedural/PostGeneration/BiomeDunGen.cs index 833cf2dec76..e21e582211b 100644 --- a/Content.Shared/Procedural/PostGeneration/BiomeDunGen.cs +++ b/Content.Shared/Procedural/PostGeneration/BiomeDunGen.cs @@ -1,3 +1,4 @@ +using Content.Shared.Maps; using Content.Shared.Parallax.Biomes; using Robust.Shared.Prototypes; @@ -11,4 +12,10 @@ public sealed partial class BiomeDunGen : IDunGenLayer { [DataField(required: true)] public ProtoId<BiomeTemplatePrototype> BiomeTemplate; + + /// <summary> + /// creates a biome only on the specified tiles + /// </summary> + [DataField] + public HashSet<ProtoId<ContentTileDefinition>>? TileMask; } From 70e3650246bcf0f32f5d5a78b8238dc6c486a2e5 Mon Sep 17 00:00:00 2001 From: Preston Smith <92108534+thetolbean@users.noreply.github.com> Date: Tue, 12 Nov 2024 06:06:43 -0600 Subject: [PATCH 061/187] Make Droppers Respect Closed/Sealed Containers (#33011) * Make droppers respect closed/sealed * Combine nested * Optimize conditions a bit --- Content.Server/Chemistry/EntitySystems/InjectorSystem.cs | 9 ++++++--- Content.Shared/Chemistry/Components/InjectorComponent.cs | 9 +++++++++ .../Prototypes/Entities/Objects/Specific/chemistry.yml | 1 + 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs b/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs index c5c45daa5bd..eb2039604af 100644 --- a/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs @@ -13,6 +13,7 @@ using Content.Shared.Interaction; using Content.Shared.Mobs.Components; using Content.Shared.Stacks; +using Content.Shared.Nutrition.EntitySystems; namespace Content.Server.Chemistry.EntitySystems; @@ -20,6 +21,7 @@ public sealed class InjectorSystem : SharedInjectorSystem { [Dependency] private readonly BloodstreamSystem _blood = default!; [Dependency] private readonly ReactiveSystem _reactiveSystem = default!; + [Dependency] private readonly OpenableSystem _openable = default!; public override void Initialize() { @@ -31,13 +33,14 @@ public override void Initialize() private bool TryUseInjector(Entity<InjectorComponent> injector, EntityUid target, EntityUid user) { + var isOpenOrIgnored = injector.Comp.IgnoreClosed || !_openable.IsClosed(target); // Handle injecting/drawing for solutions if (injector.Comp.ToggleState == InjectorToggleMode.Inject) { - if (SolutionContainers.TryGetInjectableSolution(target, out var injectableSolution, out _)) + if (isOpenOrIgnored && SolutionContainers.TryGetInjectableSolution(target, out var injectableSolution, out _)) return TryInject(injector, target, injectableSolution.Value, user, false); - if (SolutionContainers.TryGetRefillableSolution(target, out var refillableSolution, out _)) + if (isOpenOrIgnored && SolutionContainers.TryGetRefillableSolution(target, out var refillableSolution, out _)) return TryInject(injector, target, refillableSolution.Value, user, true); if (TryComp<BloodstreamComponent>(target, out var bloodstream)) @@ -58,7 +61,7 @@ private bool TryUseInjector(Entity<InjectorComponent> injector, EntityUid target } // Draw from an object (food, beaker, etc) - if (SolutionContainers.TryGetDrawableSolution(target, out var drawableSolution, out _)) + if (isOpenOrIgnored && SolutionContainers.TryGetDrawableSolution(target, out var drawableSolution, out _)) return TryDraw(injector, target, drawableSolution.Value, user); Popup.PopupEntity(Loc.GetString("injector-component-cannot-draw-message", diff --git a/Content.Shared/Chemistry/Components/InjectorComponent.cs b/Content.Shared/Chemistry/Components/InjectorComponent.cs index 17a65ef1c17..ebd6654d9f5 100644 --- a/Content.Shared/Chemistry/Components/InjectorComponent.cs +++ b/Content.Shared/Chemistry/Components/InjectorComponent.cs @@ -45,6 +45,15 @@ public sealed partial class InjectorComponent : Component [DataField] public bool IgnoreMobs; + /// <summary> + /// Whether or not the injector is able to draw from or inject into containers that are closed/sealed + /// </summary> + /// <remarks> + /// for example: droppers can not inject into cans, but syringes can + /// </remarks> + [DataField] + public bool IgnoreClosed = true; + /// <summary> /// The minimum amount of solution that can be transferred at once from this solution. /// </summary> diff --git a/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml b/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml index 527b0ba5e62..edaa8288145 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml @@ -283,6 +283,7 @@ - type: Injector injectOnly: false ignoreMobs: true + ignoreClosed: false minTransferAmount: 1 maxTransferAmount: 5 transferAmount: 1 From 8776c71e5972cc6daec3271b5e6528e48d796770 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Tue, 12 Nov 2024 12:07:50 +0000 Subject: [PATCH 062/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 43c7cad22c6..4ab88b325b5 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Cojoke-dot - changes: - - message: Borg's names are now displayed when they make an announcement on the - Communications Console. - type: Tweak - id: 7104 - time: '2024-08-13T18:31:33.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30107 - author: Spessmann changes: - message: Added Cog, a new midpop map based on Cogmap from ss13 @@ -3949,3 +3941,10 @@ id: 7603 time: '2024-11-11T22:58:31.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/32493 +- author: thetolbean + changes: + - message: Droppers can no longer inject or draw from closed containers. + type: Fix + id: 7604 + time: '2024-11-12T12:06:43.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33011 From 8b154899b515e0d7552d283c3086c417ae00ab7c Mon Sep 17 00:00:00 2001 From: MilenVolf <63782763+MilenVolf@users.noreply.github.com> Date: Tue, 12 Nov 2024 22:11:02 +0300 Subject: [PATCH 063/187] Allow editing angle of the fired projectile (#33254) Add Angle datafield to `ProjectileComponent`. It allows to change the angle of the fired projectile --- Content.Shared/Projectiles/ProjectileComponent.cs | 6 ++++++ Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Content.Shared/Projectiles/ProjectileComponent.cs b/Content.Shared/Projectiles/ProjectileComponent.cs index c24cf2b5ee5..8349252df2b 100644 --- a/Content.Shared/Projectiles/ProjectileComponent.cs +++ b/Content.Shared/Projectiles/ProjectileComponent.cs @@ -8,6 +8,12 @@ namespace Content.Shared.Projectiles; [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] public sealed partial class ProjectileComponent : Component { + /// <summary> + /// The angle of the fired projectile. + /// </summary> + [DataField, AutoNetworkedField] + public Angle Angle; + /// <summary> /// The effect that appears when a projectile collides with an entity. /// </summary> diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs index 9bd786bbe08..c7cc09e618b 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs @@ -429,7 +429,7 @@ public void ShootProjectile(EntityUid uid, Vector2 direction, Vector2 gunVelocit Projectiles.SetShooter(uid, projectile, user ?? gunUid); projectile.Weapon = gunUid; - TransformSystem.SetWorldRotation(uid, direction.ToWorldAngle()); + TransformSystem.SetWorldRotation(uid, direction.ToWorldAngle() + projectile.Angle); } protected abstract void Popup(string message, EntityUid? uid, EntityUid? user); From ef51700094aa22cd1ce7f243d934dc3c45d4ff7f Mon Sep 17 00:00:00 2001 From: Repo <47093363+Titian3@users.noreply.github.com> Date: Wed, 13 Nov 2024 10:03:13 +1300 Subject: [PATCH 064/187] Fix unban/editing role bans placed in groups. (#30659) * On editing a roleban, get all the bans with the same time. * forgoten newline * Update to check for player ID too. --- Content.Server/Database/ServerDbBase.cs | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/Content.Server/Database/ServerDbBase.cs b/Content.Server/Database/ServerDbBase.cs index c85b774e381..3806241e345 100644 --- a/Content.Server/Database/ServerDbBase.cs +++ b/Content.Server/Database/ServerDbBase.cs @@ -512,16 +512,23 @@ public abstract Task<List<ServerRoleBanDef>> GetServerRoleBansAsync(IPAddress? a public async Task EditServerRoleBan(int id, string reason, NoteSeverity severity, DateTimeOffset? expiration, Guid editedBy, DateTimeOffset editedAt) { await using var db = await GetDb(); + var roleBanDetails = await db.DbContext.RoleBan + .Where(b => b.Id == id) + .Select(b => new { b.BanTime, b.PlayerUserId }) + .SingleOrDefaultAsync(); - var ban = await db.DbContext.RoleBan.SingleOrDefaultAsync(b => b.Id == id); - if (ban is null) + if (roleBanDetails == default) return; - ban.Severity = severity; - ban.Reason = reason; - ban.ExpirationTime = expiration?.UtcDateTime; - ban.LastEditedById = editedBy; - ban.LastEditedAt = editedAt.UtcDateTime; - await db.DbContext.SaveChangesAsync(); + + await db.DbContext.RoleBan + .Where(b => b.BanTime == roleBanDetails.BanTime && b.PlayerUserId == roleBanDetails.PlayerUserId) + .ExecuteUpdateAsync(setters => setters + .SetProperty(b => b.Severity, severity) + .SetProperty(b => b.Reason, reason) + .SetProperty(b => b.ExpirationTime, expiration.HasValue ? expiration.Value.UtcDateTime : (DateTime?)null) + .SetProperty(b => b.LastEditedById, editedBy) + .SetProperty(b => b.LastEditedAt, editedAt.UtcDateTime) + ); } #endregion From cc3712be0c3e0da2921cfc6c98897780e975db63 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Tue, 12 Nov 2024 21:04:21 +0000 Subject: [PATCH 065/187] Automatic changelog update --- Resources/Changelog/Admin.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index 56c82c23a43..680915d3821 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -590,5 +590,12 @@ Entries: id: 73 time: '2024-11-02T13:21:10.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/32461 +- author: Repo + changes: + - message: All role bans in a set are updated on edits now. + type: Fix + id: 74 + time: '2024-11-12T21:03:13.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/30659 Name: Admin Order: 1 From af3593a3b7c2a36b0e0c4a19cc846e96f139fb58 Mon Sep 17 00:00:00 2001 From: SpaceRox1244 <138547931+SpaceRox1244@users.noreply.github.com> Date: Tue, 12 Nov 2024 18:45:59 -0500 Subject: [PATCH 066/187] Adds new sprites for shotgun shell boxes (#33176) * Adds new sprites for shotgun shell boxes * Adds second set of mag visuals for slug and uranium casings * Fixes yaml that I messed up * Changes credit to new username before merging happens --- .../Weapons/Guns/Ammunition/Boxes/shotgun.yml | 95 ++++++++++++------ .../Ammunition/Boxes/shotgun.rsi/base.png | Bin 0 -> 356 bytes .../Ammunition/Boxes/shotgun.rsi/beanbag.png | Bin 0 -> 268 bytes .../Ammunition/Boxes/shotgun.rsi/flare.png | Bin 0 -> 229 bytes .../Boxes/shotgun.rsi/incendiary.png | Bin 0 -> 233 bytes .../Ammunition/Boxes/shotgun.rsi/lethal.png | Bin 0 -> 263 bytes .../Ammunition/Boxes/shotgun.rsi/mag-1.png | Bin 0 -> 107 bytes .../Ammunition/Boxes/shotgun.rsi/mag-2.png | Bin 0 -> 134 bytes .../Ammunition/Boxes/shotgun.rsi/mag-3.png | Bin 0 -> 142 bytes .../Ammunition/Boxes/shotgun.rsi/mag-4.png | Bin 0 -> 155 bytes .../Boxes/shotgun.rsi/mag-alt-1.png | Bin 0 -> 106 bytes .../Boxes/shotgun.rsi/mag-alt-2.png | Bin 0 -> 127 bytes .../Boxes/shotgun.rsi/mag-alt-3.png | Bin 0 -> 135 bytes .../Boxes/shotgun.rsi/mag-alt-4.png | Bin 0 -> 151 bytes .../Ammunition/Boxes/shotgun.rsi/meta.json | 62 ++++++++++++ .../Ammunition/Boxes/shotgun.rsi/practice.png | Bin 0 -> 221 bytes .../Ammunition/Boxes/shotgun.rsi/slug.png | Bin 0 -> 257 bytes .../Boxes/shotgun.rsi/tranquilizer.png | Bin 0 -> 292 bytes .../Ammunition/Boxes/shotgun.rsi/uranium.png | Bin 0 -> 249 bytes 19 files changed, 125 insertions(+), 32 deletions(-) create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/base.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/beanbag.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/flare.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/incendiary.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/lethal.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/mag-1.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/mag-2.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/mag-3.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/mag-4.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/mag-alt-1.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/mag-alt-2.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/mag-alt-3.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/mag-alt-4.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/meta.json create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/practice.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/slug.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/tranquilizer.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/uranium.png diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.yml index 063937aee9a..e5c2987ec3e 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.yml @@ -16,114 +16,145 @@ id: AmmoProviderShotgunShell abstract: true components: + - type: Sprite + sprite: Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi - type: BallisticAmmoProvider mayTransfer: true whitelist: tags: - ShellShotgun capacity: 16 + - type: MagazineVisuals + magState: mag + steps: 5 + zeroVisible: false + - type: Appearance # Shotgun Shells - type: entity - name: shotgun beanbag cartridges dispenser parent: AmmoProviderShotgunShell id: BoxBeanbag - description: A dispenser box full of beanbag shots, designed for riot shotguns. + name: shell box (beanbag) components: - type: BallisticAmmoProvider proto: ShellShotgunBeanbag - type: Sprite layers: - - state: boxwide - - state: shellbeanbag + - state: base + map: ["enum.GunVisualLayers.Base"] + - state: mag-1 + map: ["enum.GunVisualLayers.Mag"] + - state: beanbag - type: entity - name: shotgun lethal cartridges dispenser + name: shell box (lethal) parent: AmmoProviderShotgunShell id: BoxLethalshot - description: A dispenser box full of lethal pellet shots, designed for riot shotguns. components: - type: BallisticAmmoProvider proto: ShellShotgun - type: Sprite layers: - - state: boxwide - - state: shelllethal + - state: base + map: ["enum.GunVisualLayers.Base"] + - state: mag-1 + map: ["enum.GunVisualLayers.Mag"] + - state: lethal - type: entity - name: shotgun slug cartridges dispenser + name: shell box (slug) parent: AmmoProviderShotgunShell id: BoxShotgunSlug - description: A dispenser box full of slugs, designed for riot shotguns. components: - type: BallisticAmmoProvider proto: ShellShotgunSlug + - type: MagazineVisuals + magState: mag-alt + steps: 5 + zeroVisible: false - type: Sprite layers: - - state: boxwide - - state: shellslug + - state: base + map: ["enum.GunVisualLayers.Base"] + - state: mag-alt-1 + map: ["enum.GunVisualLayers.Mag"] + - state: slug - type: entity - name: shotgun flare cartridges dispenser + name: shell box (flare) parent: AmmoProviderShotgunShell id: BoxShotgunFlare - description: A dispenser box full of flare cartridges, designed for riot shotguns. components: - type: BallisticAmmoProvider proto: ShellShotgunFlare - type: Sprite layers: - - state: boxwide - - state: shellflare + - state: base + map: ["enum.GunVisualLayers.Base"] + - state: mag-1 + map: ["enum.GunVisualLayers.Mag"] + - state: flare - type: entity - name: shotgun incendiary cartridges dispenser + name: shell box (incendiary) parent: AmmoProviderShotgunShell id: BoxShotgunIncendiary - description: A dispenser box full of incendiary cartridges, designed for riot shotguns. components: - type: BallisticAmmoProvider proto: ShellShotgunIncendiary - type: Sprite layers: - - state: boxwide - - state: shellincendiary + - state: base + map: ["enum.GunVisualLayers.Base"] + - state: mag-1 + map: ["enum.GunVisualLayers.Mag"] + - state: incendiary - type: entity - name: shotgun uranium cartridges dispenser + name: shell box (uranium) parent: AmmoProviderShotgunShell id: BoxShotgunUranium - description: A dispenser box full of uranium cartridges, designed for riot shotguns. components: - type: BallisticAmmoProvider proto: ShellShotgunUranium + - type: MagazineVisuals + magState: mag-alt + steps: 5 + zeroVisible: false - type: Sprite layers: - - state: boxwide - - state: shelluranium + - state: base + map: ["enum.GunVisualLayers.Base"] + - state: mag-alt-1 + map: ["enum.GunVisualLayers.Mag"] + - state: uranium - type: entity - name: shotgun practice cartridges dispenser + name: shell box (practice) parent: AmmoProviderShotgunShell id: BoxShotgunPractice - description: A dispenser box full of practice cartridges, designed for riot shotguns. components: - type: BallisticAmmoProvider proto: ShellShotgunPractice - type: Sprite layers: - - state: boxwide - - state: shellpractice + - state: base + map: ["enum.GunVisualLayers.Base"] + - state: mag-1 + map: ["enum.GunVisualLayers.Mag"] + - state: practice - type: entity - name: tranquilizer cartridges dispenser + name: shell box (tranquilizer) parent: AmmoProviderShotgunShell id: BoxShellTranquilizer - description: A dispenser box full of tranquilizer cartridges, designed for riot shotguns. components: - type: BallisticAmmoProvider proto: ShellTranquilizer - type: Sprite layers: - - state: boxwide - - state: shelltranquilizer + - state: base + map: ["enum.GunVisualLayers.Base"] + - state: mag-1 + map: ["enum.GunVisualLayers.Mag"] + - state: tranquilizer diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/base.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/base.png new file mode 100644 index 0000000000000000000000000000000000000000..f460615079dcbc3bc4f0244f62ee6d194767a522 GIT binary patch literal 356 zcmV-q0h|7bP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80003iNkl<ZScUDC zu};E37{`AYCqhb$4$5LMVUn4}^a1L~=G0ec;#0Ws3QTUUJb;tV%EHDV34stALc(+m z`o(f-ORqf>hx<)!^4<M^ci)#591e#?qR>}S=qr;oC$=T7E*eH6r?v$|0={nqU@&~G zWz|}{fhhEq1nVMsSP_UqUv)bz&d)sKwUt`%^cX1MAXuK4tN8B(^k4}~6PYbGxqD>} zM;g-SWbkaUq1$PtzJE-<atF{zK>92}Lh^*k;OTtF%jo^+{zgOC^y)Od`q8?g;b1re z>v#*m&GjV!&!bNO?(f<_@xd!Cpo=^Nx2)rBsbHbfcc5yxk-&7ms}z();THT1m4e@% z>%5JZ$y&Pt+QtVWWrD5H4|=K}^o;)h4u`|>@7M#Kfp=<`U7Q{O0000<MNUMnLSTY} Cgr(sC literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/beanbag.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/beanbag.png new file mode 100644 index 0000000000000000000000000000000000000000..a2fe9e8f1d2bd99a05493cb4db4d7b8a83003fec GIT binary patch literal 268 zcmV+n0rUQeP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80002fNkl<ZScUDA ztq#I46h;p}x(0zjA*M*?C(sar<{^sXUG@@_2om(fEFqZz0d^KmQUqH@!XWLkY~~)- ztlj-iZ(9%qp+S_!D2?gbLqxtL{>}H>5)pw;==K7x8V+~bjYGKg9f<q@FT{A^@8ZR~ z-;E}=W$D>2R2p+y&jDE6VgRn&_y0wAB0m6NxliC=S9@r!`VoAb<|1Kiva}4|oD-LF z?gCXJm%+1EaDnv^K-uc?to)Xx<@j;W2bS%37N`=*(t5#-pfslO_bv#6&^9l%CPK<? SKlJMW0000<MNUMnLSTY)?RE_S literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/flare.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/flare.png new file mode 100644 index 0000000000000000000000000000000000000000..3b65c7acbe02d7abf6603a0635157ddea8579efe GIT binary patch literal 229 zcmV<B02=>^P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800022Nkl<ZScUDB zu?+$-3`PGTy3FAbpfyvl0yD7!Q{>v*1c-(z8(jS<5Z9eZF44L1lhRrKFOqG*ah#5% z2#N@;Js=`X5%wY}!d~Q`z+o>D7cjwe03Y|x;WfXh39p&~GEh}ln{V0sO+%=vB*PNa za&VfqfDFx-&U_7v1<n@?(>NpNyjt^qe&6+mp|tO@wD2bZya0gHIOC*Y2?pwdyO1K- fecv6&arWi|ytPQ)duV{k00000NkvXXu0mjfSx8_g literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/incendiary.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/incendiary.png new file mode 100644 index 0000000000000000000000000000000000000000..7841707b120f3e1f4577f6c4320b31e2cac551b4 GIT binary patch literal 233 zcmV<F02cp=P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800026Nkl<ZScUDB zI}XAy5JV?H6-%yt26|}W6kGwHCmmPd6s9#j5*=qi3hksoP$dF?lx_AkZY<BUw6lPs zC>4nT^wv_^1KwK30C|xZATRPuU@@173Wy*&fag=?@RZ-AgeT1aY1lb8`FKw6vxcy9 zj->epl`Nd17LcZR(}~w`_3y>)9!(5AZ?7fRZ997BaetqOBbw?09|_<I5Ab^FvDumI j;3~ubR`0u_D9YRn@UTcSYft8800000NkvXXu0mjfrK?`C literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/lethal.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/lethal.png new file mode 100644 index 0000000000000000000000000000000000000000..d3a282afbfcd73558585accf89ef2f4a2487afda GIT binary patch literal 263 zcmV+i0r>ujP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80002aNkl<ZScUDA zF%E(-6ox;<O(RS$CUOI=;7;N_ID#X`@FKV~yLkg0oz%c4sRJp-h^8eCEbp6|_T~NG zYg!Nl!67-Z%8Aw39wPE3@$Y;xl!yq7!l(~03vnB6GmTBS@f+~>GfE;=68&th|NUdT zGHuJ$w6IPqu7@=MWztMI=j`cVEeWvLo!komERzeshe$!t2G?oT6o%$KtpvJ6{LAwl z+yl?1SYP#qd%IT<wCiKoTzz&k?`tK{B~lRd3U)$HtepRMK@fzYc>!~_O8cNpWzqlu N002ovPDHLkV1hD0ZubBH literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/mag-1.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/mag-1.png new file mode 100644 index 0000000000000000000000000000000000000000..d77e6507b00fc0910aba7e959d2561f9e0b122e9 GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzBTpB{kcif|=L~rn6a-id%6t;v ziHj^`S8it)6S}08k<D<RHN=0_^Vo#*DZS;43=g!~o0Yh0^PG-90_tY)boFyt=akR{ E073K}nE(I) literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/mag-2.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/mag-2.png new file mode 100644 index 0000000000000000000000000000000000000000..eaff18cf28880d84ede6b5409c7d43bb9bd15c0a GIT binary patch literal 134 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzUr!gukcif|7dG-9P!M4b4BjkK zy>waP0uAd0TO=D~gJvs9|53PjNBTiZBohMz<GP#cZfZwqnk1OKwp_Zqe&S=^(z?$X h-$JL^FfuS~n|c0=aNSp9*EFEP44$rjF6*2UngCX3Ep7k+ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/mag-3.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/mag-3.png new file mode 100644 index 0000000000000000000000000000000000000000..1563f21fe714c532f4b0ba1623076bca6da822b0 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJP)`@fkcif|=NAe#7znsr?DY%w zn6*GG#E0vY!bcu6)+G~r9h5Cvf1H2YIoFnxfq`X5%I=i?PxXT`4y*{vzf^16o;$rN pIO=>r{0#T4{i<Iq85n-_aym#!%_`jy?+>(q!PC{xWt~$(69DIjFhu|W literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/mag-4.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/mag-4.png new file mode 100644 index 0000000000000000000000000000000000000000..9a3c99707fe47b7133a9a2c0937a993983074206 GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJBu^K|kcif|7Z>t27>KxD3_ly> zF)cxeWz{lfL6vz4k_)UC$Tv+$$YfRAncna_{*x*L!@n~dHzq%x<)&e)<N3-xbN-Ut zy-9~Z?g}?kP`Bs5@9eZ)<ZG9udUf9FIH37<<xHU&vh~IdlG;EXgQu&X%Q~loCIDc+ BGhqM# literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/mag-alt-1.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/mag-alt-1.png new file mode 100644 index 0000000000000000000000000000000000000000..0b8f096ef92436b8f578bcb4389f7f5d4f9d4d06 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzLr)jSkcif|XAK1z40xC~#$>Yi zOU%kYt$01~*8O!%3}Tb+sC++u?WT)y@ZG<U<rx;p-7#gGxhCS~a-e1gPgg&ebxsLQ E0Ltbe_y7O^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/mag-alt-2.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/mag-alt-2.png new file mode 100644 index 0000000000000000000000000000000000000000..81649769f4b613c2a78d55a8b4b2b6cf65c5b265 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzH%}MGkcif|7aVyHIPfq#PJe&U zuzy3R2*bgNMIQdI(x1PtjbLJ6;NEup+no&C*@2<HX{&atdOn{M`h4@MSsgn*u`n?F bILmGKON{UN_wUR=6B#^R{an^LB{Ts5p?WQR literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/mag-alt-3.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/mag-alt-3.png new file mode 100644 index 0000000000000000000000000000000000000000..80505d3934c48b4318635d196ba03810b4cef4e2 GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzKTj9Okcif|=Qr{maNuwbOy42h zaQ8-Y?gWVj%N?9SEm}wG=W<7HVqstqyHk6o_TDG)^UFd)C(nG9=XuG}eWs>y^xL(e jS6z<0vSeWR(aX)dQ?BLIq?BnulNmf+{an^LB{Ts519mUd literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/mag-alt-4.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/mag-alt-4.png new file mode 100644 index 0000000000000000000000000000000000000000..60be778fdfd459489e53186dddd46287574d4860 GIT binary patch literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJI8PVHkcif|7Y%t281T4Uynl&9 zZZoIMXM=_h9U=_JCg$Cp?Xgzt?(ICwXe$9h!Jo$E^WWK(TlHN%%#h~xe(o8T1=oJ< zcpp=F;Ecx73sK6(@Bi#FJl4~(mea+><w>#lZ&O)=-MRXEfi^LCy85}Sb4q9e0Ns>1 Ah5!Hn literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/meta.json new file mode 100644 index 00000000000..3df588a845e --- /dev/null +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/meta.json @@ -0,0 +1,62 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Sprites by SpaceRox1244", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "base" + }, + { + "name": "mag-1" + }, + { + "name": "mag-2" + }, + { + "name": "mag-3" + }, + { + "name": "mag-4" + }, + { + "name": "mag-alt-1" + }, + { + "name": "mag-alt-2" + }, + { + "name": "mag-alt-3" + }, + { + "name": "mag-alt-4" + }, + { + "name": "lethal" + }, + { + "name": "beanbag" + }, + { + "name": "slug" + }, + { + "name": "incendiary" + }, + { + "name": "practice" + }, + { + "name": "uranium" + }, + { + "name": "flare" + }, + { + "name": "tranquilizer" + } + ] +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/practice.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/practice.png new file mode 100644 index 0000000000000000000000000000000000000000..4ece8a0c1e58a1bca6482dca0ecd2fc9a52a1863 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJC7v#hArY-_CvW6sR^)N@oua3_ zq$6gdTUdh4vJYnJwX1k0{#)+k)m$V{67w)T`XB!j{YMt(To?>i7i~Sh(}iJ;=ug!G zORpoW(>8ozIGdAKaX!21(C)kky8M%J^yFXu-J1R*`pL2BEdoxwayN~20u)aMowC=y zcD>*`{}Bo2u&0|vcABSc%M})!I3;L?;&qkPLJXcl3}<^TXK!zps;k)W*y5azo#3i? VpBJTKr-ANe@O1TaS?83{1OOy{RxJPk literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/slug.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/slug.png new file mode 100644 index 0000000000000000000000000000000000000000..b55085e398ea1f2ecb6f5477a62a21d1728a009b GIT binary patch literal 257 zcmV+c0sj7pP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80002UNkl<ZScUDC zK?=e!5JkV@DYBn)<V-F^R0;(VDZNFPA$RDu^a|Nk$Th}=M%1F18qH?jCX2xTFGE5A zK@bu`L`+1S+e1V~67Tls{}K^_Eabj`Y0D!|lm6t5v8=Ubt@X?B@a~t}BE0|+aohFW zcKt{s6gS3lV=N<L0<#zar4#_5tm@0UUcq~h;&222>~|XgfOGES>`4NFvZ`?!hFfvq zCjvnN0PaP+_s_*qxr-P9=UfPW5Sdb(gzH4|f4hPp2;Xo9cZ^oa(r~ID00000NkvXX Hu0mjfHM(oI literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/tranquilizer.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/tranquilizer.png new file mode 100644 index 0000000000000000000000000000000000000000..373d6a2a0c91a69c140798bcf956464736eb65bd GIT binary patch literal 292 zcmV+<0o(qGP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80002%Nkl<ZScUDA zJ&wXK5Jq33JqTLlA}u}T7KpTzQ6vtq5*I>3F6RKzUc&7bmQfCZG!zg>vnzuPY5Y3> zXudc8flMZokV-_?b*)o-P>E<Il0|M3|E-tr63GISFzEyQ*lyE?KhjO|aDa7P>&iL( z-tGP@KKy%QOuTID#$(&^Wi0?J=M<n@EQ%o*;PY?*;Ago6@6!qZ_@=>Fi@A#6oc1By zf{$%`neV#jnhyz#MF5Pol-}QipCDS`ce5!F(Q<UOzG>(~xR0-$pZ5DAwr=#sF~gnD q=5zWGo(fJvC896+a+ypf^G?q6I%Uv_PY+B00000<MNUMnLSTZjeSyRP literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/uranium.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.rsi/uranium.png new file mode 100644 index 0000000000000000000000000000000000000000..03a0244fda580e8c82f50c8f5b7d544c04fbdf56 GIT binary patch literal 249 zcmV<V00#ewP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80002MNkl<ZScUD9 zF$%&k6o$V_DUL;{Lk68P>IJ-kcM(tGQCxciFQAiV6_?(?B`%GKR!Ksz2=AK$dGGyS z!UI7N5>nNLt?I(|?I9v>65s9zzY-CFUg&iJr`vJb@Q~MpglE2mT5CJm4FT9Mj-7o@ zvRU1{XXm~G0Qq_Z!16G+&mu0k+{^%IF#a<`1iD1dm(wFSYF2b-D^gzL!-E8jF&SV1 zlv1B++|hftf_|Wt;8i3hI0;&7>tqB$5dM}stTH=wmQOP{00000NkvXXu0mjfYxrZ$ literal 0 HcmV?d00001 From e9f6a02f18959577f8f56c6ba511749cb34d0ce0 Mon Sep 17 00:00:00 2001 From: cohanna <conornhanna@gmail.com> Date: Tue, 12 Nov 2024 19:05:56 -0700 Subject: [PATCH 067/187] 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 6abeae5760b..8421b6b4dc6 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 82d11b732b6..9d05fbb5e23 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 66fac515a77..bdeb37c6bb7 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 2134cfe8927..c50bc6e030b 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 503d2eec6e3..238b71e3fde 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 0940ac308a5..2ea710e6e77 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 b9b47c00ea9..fe40b21ba26 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 1b4c96c1709..f70b684abd2 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 c7b7312a709..25ad1b876ed 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 56a38f82fcf..5b6530a9e5d 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 9d0cc9a505d..ca012e8fc5c 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 9d0cc9a505d..ca012e8fc5c 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 df077f67d2b..9555aa5ab35 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 <conornhanna@gmail.com> Date: Tue, 12 Nov 2024 19:14:28 -0700 Subject: [PATCH 068/187] 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 bdeb37c6bb7..8758e1075eb 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 2ea710e6e77..2ad0eb84105 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 fe40b21ba26..daae6a4726d 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 25ad1b876ed..db932280090 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 31e1264ab08..44a7134597d 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 bd2d0ee5e593606da094804f5822cf740a1f1084 Mon Sep 17 00:00:00 2001 From: August Sun <45527070+august-sun@users.noreply.github.com> Date: Tue, 12 Nov 2024 19:59:47 -0700 Subject: [PATCH 069/187] Added the ability to microwave inert flesh anomaly cores to turn into an anomalous meat mass (#33223) * First round of anomaly core functionalities added * Added sliceTime to anom meat mass and cooked version * Adds SmokeOnUse component, system and shared system, adds new functions to inert electrical anom core * Added more functions * Final touches to branch * Cleaning up some of the metadata for sprites and component definitions * PR_Changes_v2_rev.0_Final_FINALFORREALTHISTIME.yml * Lol jk these goddamn tests why me * Quick updates based on feedback * more changes to improve * additional fixes and edits * Changed tech core functionality * added magboot functionality to grav core * fixed issue with bluespace core sizing * Reverting changes per request * extra file to be deleted * File cleanup * Update chemicals.ftl * Update cores.yml * Update cores.yml * Update meta.json * Update chemicals.yml * Update Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com> * Update meal_recipes.yml * Update cores.yml --------- Co-authored-by: august-sun <45527070+august.sun@users.noreply.github.com> Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com> --- .../Entities/Objects/Consumable/Food/meat.yml | 59 ++++++++++++++++++ .../Structures/Specific/Anomaly/cores.yml | 6 +- .../Construction/Graphs/food/steak.yml | 18 +++++- .../Recipes/Cooking/meal_recipes.yml | 24 +++++++ .../Food/meat.rsi/anomalymeat-cooked.png | Bin 0 -> 618 bytes .../Consumable/Food/meat.rsi/anomalymeat.png | Bin 0 -> 642 bytes .../Consumable/Food/meat.rsi/meta.json | 8 ++- 7 files changed, 111 insertions(+), 4 deletions(-) create mode 100644 Resources/Textures/Objects/Consumable/Food/meat.rsi/anomalymeat-cooked.png create mode 100644 Resources/Textures/Objects/Consumable/Food/meat.rsi/anomalymeat.png diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml index 612f7da0472..48968b80c13 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml @@ -701,6 +701,36 @@ - ReagentId: Water Quantity: 4 #It makes saline if you add salt! +- type: entity + name: anomalous meat mass + parent: FoodMeatRawBase + id: FoodMeatAnomaly + description: An impossibly dense slab of meat. Just looking at it makes you uncomfortable. + components: + - type: Sprite + state: anomalymeat + - type: SolutionContainerManager + solutions: + food: + reagents: + - ReagentId: UncookedAnimalProteins + Quantity: 90 + - ReagentId: Fat + Quantity: 90 + - type: SliceableFood + count: 10 + sliceTime: 5 + slice: FoodMeat #That's... So much meat + - type: InternalTemperature + conductivity: 0.43 + - type: Construction + graph: AnomalyMeatSteak + node: start + defaultTarget: anomaly steak + - type: Tag + tags: + - Meat + # Cooked - type: entity @@ -1173,6 +1203,35 @@ Burger: MeatSnail Taco: MeatSnail +- type: entity + name: anomalous steak + parent: FoodMeatBase + id: FoodMeatAnomalyCooked + description: A gigantic mass of cooked meat. A meal for a dinner party, or someone REALLY hungry. + components: + - type: Tag + tags: + - Cooked + - Meat + - type: Sprite + layers: + - state: anomalymeat-cooked #Kinda hard to cook this... thing evenly + - type: SolutionContainerManager + solutions: + food: + reagents: + - ReagentId: Nutriment + Quantity: 100 + - ReagentId: Protein + Quantity: 50 + - type: SliceableFood + count: 10 + sliceTime: 5 + slice: FoodMeatCooked + - type: Construction + graph: AnomalyMeatSteak + node: anomaly steak + # Cutlets # Raw diff --git a/Resources/Prototypes/Entities/Structures/Specific/Anomaly/cores.yml b/Resources/Prototypes/Entities/Structures/Specific/Anomaly/cores.yml index 315505b81e9..568a133749e 100644 --- a/Resources/Prototypes/Entities/Structures/Specific/Anomaly/cores.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/Anomaly/cores.yml @@ -79,6 +79,7 @@ - type: entity parent: BaseAnomalyCore id: AnomalyCoreFlesh + description: The core of a destroyed flesh anomaly. Pulsates sickeningly, but might be a hearty meal if cooked. suffix: Flesh components: - type: Sprite @@ -241,7 +242,8 @@ - type: entity parent: BaseAnomalyInertCore - id: AnomalyCoreFleshInert + id: AnomalyCoreFleshInert # Can be microwaved to turn it into a massive piece of meat + description: The inert core of a destroyed flesh anomaly. Pulsates sickeningly, but might be good food in the right hands? suffix: Flesh, Inert components: - type: Sprite @@ -306,7 +308,7 @@ - type: entity parent: BaseAnomalyInertCore - id: AnomalyCoreFloraInert + id: AnomalyCoreFloraInert #Turns into a seed that grows into artifexium suffix: Flora, Inert components: - type: Seed diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/food/steak.yml b/Resources/Prototypes/Recipes/Construction/Graphs/food/steak.yml index 4c104003319..61cb844037b 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/food/steak.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/food/steak.yml @@ -174,6 +174,22 @@ - node: bacon entity: FoodMeatBaconCooked +# anomaly meat steak +- type: constructionGraph + id: AnomalyMeatSteak + start: start + graph: + - node: start + edges: + - to: anomaly steak + completed: + - !type:PlaySound + sound: /Audio/Effects/sizzle.ogg + steps: + - minTemperature: 335 + - node: anomaly steak + entity: FoodMeatAnomalyCooked + # cutlets - type: constructionGraph @@ -294,4 +310,4 @@ steps: - minTemperature: 345 - node: xeno cutlet - entity: FoodMeatXenoCutletCooked \ No newline at end of file + entity: FoodMeatXenoCutletCooked diff --git a/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml b/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml index 173cf9e9dbd..da66f7a0d8a 100644 --- a/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml +++ b/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml @@ -2050,3 +2050,27 @@ FoodCroissantRaw: 1 FoodButterSlice: 1 ShardGlass: 1 + +- type: microwaveMealRecipe + id: RecipeInertAnomalyMeat + name: inert meat anomaly recipe + result: FoodMeatAnomaly + time: 5 + solids: + AnomalyCoreFleshInert: 1 + +- type: microwaveMealRecipe + id: RecipeAnomalyMeat + name: meat anomaly recipe + result: FoodMeatAnomaly + time: 5 + solids: + AnomalyCoreFlesh: 1 + +- type: microwaveMealRecipe + id: RecipeAnomalyMeatCooked + name: cooked meat anomaly recipe + result: FoodMeatAnomalyCooked + time: 5 + solids: + FoodMeatAnomaly: 1 diff --git a/Resources/Textures/Objects/Consumable/Food/meat.rsi/anomalymeat-cooked.png b/Resources/Textures/Objects/Consumable/Food/meat.rsi/anomalymeat-cooked.png new file mode 100644 index 0000000000000000000000000000000000000000..19c0040f3a150fb1b247ff901673516605618e39 GIT binary patch literal 618 zcmV-w0+s!VP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp) z=>Px%BuPX;R9J=Wl+SA0KoG`%7HMS3rIEcd#E_HmCE%7op_c@FF!U+>6n%mAVfq3+ zmmCbu!8cPIdT5$MNogULt+uv>NRWD1X(QS4pSrnK9|*BCyEET>GrN!@M~?p;g<TH4 zdG;hstv~)MEc%kR2O$s#78L_$>>(-!=iM16Pc^kC>2t>3RwT4d8<G$;UHyyYJ!~;W zR15(6gCIpLwm%2~CAqJ0-kpIT9V?VU4-geYl8Fe~Vk#9_XjK;W)+UV59|W{t8bE+8 zra+0t;Q>A7;A=QzkC<Q#QPXk0`x}c}sX%`qD-#t1+kQl|UX_lhYRjBMI9WcZ2LKe! z{mf#vCSZ%H45kMVPPqK>le1<C!ioGxXdVk%r$+#sJvWrEad@CwvW~>&8Hi;4_T@M3 z+yvm=`!OGeGXT05*J`UfH<f+($pNI2>qx95FmfKJ)~(Ycl`O6d<kjn5TtlHO+v02T zY}5)hoJNqDXC;AltCX7d;nfYIrpw^ICcnfji07esES3s!TyIsHYyy{4jow#ZPPZN~ z8r@1qOem^O+4VpvW|?zdzp^Qs`#7%0$%`oFP3DEmzJ_nF+(M^rg&2Vf;<z4oTBJ;3 zb404$lEW9zz`CSKtb8gvbt^SAjp`kE>1P)JJx~%0>;CoYeZE!2>_i}oP@{TxZ}7CG z!Ae%VDe+$uh)F=C2H6sCoA{s5saxS<i*n@1kz-f<0S*S>OT=+9=l}o!07*qoM6N<$ Ef@X&iumAu6 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/meat.rsi/anomalymeat.png b/Resources/Textures/Objects/Consumable/Food/meat.rsi/anomalymeat.png new file mode 100644 index 0000000000000000000000000000000000000000..005107ab4ec5e066f292c3d6a163174d11c9e7e7 GIT binary patch literal 642 zcmV-|0)737P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp) z=>Px%JV``BR9J=WmBDM%P#niURU4tC5L+}p8Nv>0DPk$&c^8WpFN1kddZ_<_3S*A3 zlN6Eu37*=)4vM>Y@Z_mS5tLq}-C-9Yq+kuUC`%9V(7xBCOS^1(GhYbF`@JN;@Avz@ zFM${_V*Kw&oaLcLHs|@rkG^*kvvdC1KOrDrY~bRcVc>GOew$1CZFP@-&OwVr;#^b$ z0C}OQb8=&i-0~6z?y=@_90idGNcFZg#1uNVH3T5D_W@Jr7`T{1R|EkZv|~#Zh6{@t zN|YYo=l7d;z_dZ(<}F&*d!^j5T&3C+IwsJuPIh6g19>sF)4=8DwG`&dO<?Lmy0{Xs zd9}Htns+Rhex=Nh_2P*xgodP%&3V#RiP4h>6z<+(&^{ntTv7Ew`v4$NlXZKmu3VTG z$j~K_O5|DtIL~%jx_X^fwFZnGvaKNwno=*D!qlm}(CAn$jcm>fBM~WtrqEe!?$D~% z$O}z{O$M-4ttn?DY3ZJA4ap0Qo|g)J_gn&g_5Dg2d#kQg`wu?}fMWA`Abbwm!Z3ys z=y@r+o`HjgDRjDr-vXqhy4f>~vvBWolYXVF8uz>u&gdwVKxhUw`(G0EOvy8Fu`QS7 z{ZH5vHRIaU9eHg`#vk`ytGTXwesUGw92R_v>zPtu`&>!<3e5ZWyd;s_SerJVxc2nb z+l8Ow$p3=vbip%{7XyT5gXN5lxcu-&q{gQvAV~m7B4O+LV(|4$f7nxDJ6-T3nHVu* c#Q0nM0h_}40T=^O)c^nh07*qoM6N<$f|m*~VgLXD literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/meat.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/meat.rsi/meta.json index 4ad75849d1a..99084d8c958 100644 --- a/Resources/Textures/Objects/Consumable/Food/meat.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/meat.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation and modified by Swept, potato1234x and deltanedas at https://github.com/tgstation/tgstation/commit/40d75cc340c63582fb66ce15bf75a36115f6bdaa, snail by IproduceWidgets (github) and Kezu (discord)", + "copyright": "Taken from tgstation and modified by Swept, potato1234x and deltanedas at https://github.com/tgstation/tgstation/commit/40d75cc340c63582fb66ce15bf75a36115f6bdaa, snail by IproduceWidgets (github) and Kezu (discord), anomalymeat/cooked by august-sun", "size": { "x": 32, "y": 32 @@ -200,6 +200,12 @@ }, { "name": "rouny-cooked" + }, + { + "name": "anomalymeat" + }, + { + "name": "anomalymeat-cooked" } ] } From 52c1708117f82e75f0d0b911f3e8319c7a97725d Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Wed, 13 Nov 2024 03:00:54 +0000 Subject: [PATCH 070/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 4ab88b325b5..f54421b87ad 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Spessmann - changes: - - message: Added Cog, a new midpop map based on Cogmap from ss13 - type: Add - id: 7105 - time: '2024-08-13T19:27:25.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30840 - author: PoorMansDreams changes: - message: Throngler Plushie looks like a plushie @@ -3948,3 +3941,11 @@ id: 7604 time: '2024-11-12T12:06:43.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33011 +- author: august-sun + changes: + - message: The inert flesh anomaly core can now be microwaved to turn into an anomalous + meat mass. + type: Tweak + id: 7605 + time: '2024-11-13T02:59:47.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33223 From 99b4604d5096eea467a7006ccfa90ef17e06e73e Mon Sep 17 00:00:00 2001 From: Spessmann <156740760+Spessmann@users.noreply.github.com> Date: Tue, 12 Nov 2024 19:07:47 -0800 Subject: [PATCH 071/187] Cog fixes (#33285) fixed the map (for real this time) --- Resources/Maps/cog.yml | 3014 +++++++++++++++++++++++++--------------- 1 file changed, 1914 insertions(+), 1100 deletions(-) diff --git a/Resources/Maps/cog.yml b/Resources/Maps/cog.yml index 58310e561c0..859ee46b1de 100644 --- a/Resources/Maps/cog.yml +++ b/Resources/Maps/cog.yml @@ -333,7 +333,7 @@ entities: version: 6 3,3: ind: 3,3 - tiles: YAAAAAAAYAAAAAABYAAAAAAAYAAAAAACYAAAAAACYAAAAAACYAAAAAABYAAAAAACYAAAAAACYAAAAAABYAAAAAAAYAAAAAAAYAAAAAACYAAAAAACYAAAAAACYAAAAAADYAAAAAABgQAAAAAAYAAAAAABYAAAAAACgQAAAAAAYAAAAAAAYAAAAAADYAAAAAADYAAAAAACYAAAAAAAYAAAAAABYAAAAAACYAAAAAADYAAAAAADYAAAAAADYAAAAAADYAAAAAAAgQAAAAAAYAAAAAADYAAAAAADgQAAAAAAgQAAAAAAYAAAAAAAYAAAAAACYAAAAAAAYAAAAAACYAAAAAAAYAAAAAACgQAAAAAAYAAAAAADYAAAAAADYAAAAAAAYAAAAAADgQAAAAAAYAAAAAABYAAAAAADYAAAAAACgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAACgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAADgQAAAAAAYAAAAAADYAAAAAABYAAAAAACgQAAAAAADAAAAAADDAAAAAABDAAAAAACfQAAAAACfQAAAAACCwAAAAAADAAAAAACDAAAAAAADAAAAAAADAAAAAADYAAAAAABgQAAAAAAYAAAAAABYAAAAAAAgQAAAAAAgQAAAAAADAAAAAACDAAAAAACDAAAAAAAfQAAAAABfQAAAAAAfQAAAAAADAAAAAADDAAAAAADDAAAAAACCAAAAAAAgQAAAAAAgQAAAAAAYAAAAAACYAAAAAADYAAAAAADYAAAAAADCAAAAAABCAAAAAAACAAAAAACfQAAAAAAfQAAAAABfQAAAAACCAAAAAACCAAAAAADCAAAAAAACAAAAAADYAAAAAAAYAAAAAAAYAAAAAAAYAAAAAABYAAAAAAAYAAAAAADCAAAAAAACAAAAAABCAAAAAABfQAAAAADfQAAAAAAfQAAAAACCAAAAAADCAAAAAADCAAAAAACCAAAAAACYAAAAAACYAAAAAAAYAAAAAABYAAAAAADYAAAAAABgQAAAAAADAAAAAAADAAAAAAADAAAAAADfQAAAAADfQAAAAACfQAAAAACDAAAAAAADAAAAAAADAAAAAAADAAAAAACYAAAAAABgQAAAAAAYAAAAAAAYAAAAAADYAAAAAAAgQAAAAAADAAAAAABDAAAAAABDAAAAAACfQAAAAABfQAAAAACfQAAAAABDAAAAAACDAAAAAAADAAAAAABDAAAAAADYAAAAAABgQAAAAAAYAAAAAADYAAAAAAAYAAAAAAAgQAAAAAADAAAAAAADAAAAAADDAAAAAACfQAAAAABfQAAAAACfQAAAAADDAAAAAAADAAAAAADDAAAAAADDAAAAAAAYAAAAAAAgQAAAAAAYAAAAAADYAAAAAABYAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAACgQAAAAAAgQAAAAAAYAAAAAADgQAAAAAAgQAAAAAAYAAAAAACYAAAAAACYAAAAAACYAAAAAACYAAAAAADgQAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAYAAAAAAAYAAAAAAAYAAAAAAAgQAAAAAAYAAAAAAAYAAAAAAAYAAAAAACYAAAAAABYAAAAAACgQAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAYAAAAAAAYAAAAAAAYAAAAAADYAAAAAACYAAAAAACgQAAAAAAYAAAAAAAYAAAAAABYAAAAAACYAAAAAADYAAAAAABgQAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAYAAAAAADYAAAAAABYAAAAAABYAAAAAACYAAAAAABgQAAAAAAYAAAAAAAYAAAAAACYAAAAAAAYAAAAAACYAAAAAABgQAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAA + tiles: YAAAAAAAYAAAAAABYAAAAAAAYAAAAAACYAAAAAACYAAAAAACYAAAAAABYAAAAAACYAAAAAACYAAAAAABYAAAAAAAYAAAAAAAYAAAAAACYAAAAAACYAAAAAACYAAAAAADYAAAAAABgQAAAAAAYAAAAAABYAAAAAACgQAAAAAAYAAAAAAAYAAAAAADYAAAAAADYAAAAAACYAAAAAAAYAAAAAABYAAAAAACYAAAAAADYAAAAAADYAAAAAADYAAAAAADYAAAAAAAgQAAAAAAYAAAAAADYAAAAAADgQAAAAAAgQAAAAAAYAAAAAAAYAAAAAACYAAAAAAAYAAAAAACYAAAAAAAYAAAAAACgQAAAAAAYAAAAAADYAAAAAADYAAAAAAAYAAAAAADgQAAAAAAYAAAAAABYAAAAAADYAAAAAACgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAACgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAADgQAAAAAAYAAAAAADYAAAAAABYAAAAAACgQAAAAAADAAAAAADDAAAAAABDAAAAAACfQAAAAACfQAAAAACCwAAAAAADAAAAAACDAAAAAAADAAAAAAADAAAAAADYAAAAAABgQAAAAAAYAAAAAABYAAAAAAAgQAAAAAAgQAAAAAADAAAAAACDAAAAAACDAAAAAAAfQAAAAABfQAAAAAAfQAAAAAADAAAAAADDAAAAAADDAAAAAACCAAAAAAAgQAAAAAAgQAAAAAAYAAAAAACYAAAAAADYAAAAAADYAAAAAADCAAAAAABCAAAAAAACAAAAAACfQAAAAAAfQAAAAABfQAAAAACCAAAAAACCAAAAAADCAAAAAAACAAAAAADYAAAAAAAYAAAAAAAYAAAAAAAYAAAAAABYAAAAAAAYAAAAAADCAAAAAAACAAAAAABCAAAAAABfQAAAAADfQAAAAAAfQAAAAACCAAAAAADCAAAAAADCAAAAAACCAAAAAACYAAAAAACYAAAAAAAYAAAAAABYAAAAAADYAAAAAABgQAAAAAADAAAAAAADAAAAAAADAAAAAADfQAAAAADfQAAAAACfQAAAAACDAAAAAAADAAAAAAADAAAAAAADAAAAAACYAAAAAABgQAAAAAAYAAAAAAAYAAAAAADYAAAAAAAgQAAAAAADAAAAAABDAAAAAABDAAAAAACfQAAAAABfQAAAAACfQAAAAABDAAAAAACDAAAAAAADAAAAAABDAAAAAADYAAAAAABgQAAAAAAYAAAAAADYAAAAAAAYAAAAAAAgQAAAAAADAAAAAAADAAAAAADDAAAAAACfQAAAAABfQAAAAACfQAAAAADDAAAAAAADAAAAAADDAAAAAADDAAAAAAAYAAAAAAAgQAAAAAAYAAAAAADYAAAAAABYAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAACgQAAAAAAgQAAAAAAYAAAAAADgQAAAAAAgQAAAAAAYAAAAAACYAAAAAACYAAAAAACYAAAAAACYAAAAAADgQAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAYAAAAAAAYAAAAAAAYAAAAAAAgQAAAAAAYAAAAAAAYAAAAAAAYAAAAAACYAAAAAABYAAAAAACgQAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAYAAAAAAAYAAAAAAAYAAAAAADYAAAAAACYAAAAAACYAAAAAAAYAAAAAAAYAAAAAABYAAAAAACYAAAAAADYAAAAAABgQAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAYAAAAAADYAAAAAABYAAAAAABYAAAAAACYAAAAAABgQAAAAAAYAAAAAAAYAAAAAACYAAAAAAAYAAAAAACYAAAAAABgQAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAA version: 6 2,3: ind: 2,3 @@ -353,7 +353,7 @@ entities: version: 6 3,4: ind: 3,4 - tiles: gQAAAAAAIAAAAAABgQAAAAAAgQAAAAAAYAAAAAABgQAAAAAAYAAAAAABYAAAAAADYAAAAAADYAAAAAACYAAAAAADgQAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAIAAAAAABIAAAAAAAIAAAAAACgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAIAAAAAADgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: gQAAAAAAIAAAAAABgQAAAAAAgQAAAAAAYAAAAAABgQAAAAAAYAAAAAABYAAAAAADYAAAAAADYAAAAAACYAAAAAADgQAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAIAAAAAABIAAAAAAAIAAAAAACgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAIAAAAAADgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 2,4: ind: 2,4 @@ -441,11 +441,11 @@ entities: version: 6 -1,-5: ind: -1,-5 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgQAAAAAAIAAAAAACgQAAAAAAIAAAAAABgQAAAAAAgQAAAAAAIAAAAAAAgQAAAAAAIAAAAAABgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAIAAAAAADgQAAAAAAgQAAAAAAgQAAAAAAIAAAAAACIAAAAAACgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAIAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIAAAAAACgQAAAAAAIAAAAAACIAAAAAABgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIAAAAAABgQAAAAAAIAAAAAAAIAAAAAADgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAAAgQAAAAAAgQAAAAAAYAAAAAAAYAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAAAYAAAAAAAYAAAAAAAYAAAAAAAgQAAAAAAgQAAAAAAYAAAAAAAgQAAAAAAIAAAAAACgQAAAAAAIAAAAAABgQAAAAAAgQAAAAAAIAAAAAAAgQAAAAAAIAAAAAABYAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIAAAAAADgQAAAAAAgQAAAAAAgQAAAAAAIAAAAAACIAAAAAACgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIAAAAAACgQAAAAAAIAAAAAACIAAAAAABgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIAAAAAABgQAAAAAAIAAAAAAAIAAAAAADgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAA version: 6 -2,-5: ind: -2,-5 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgQAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAA version: 6 0,-5: ind: 0,-5 @@ -1262,9 +1262,7 @@ entities: color: '#FFFFFFFF' id: BrickTileSteelLineE decals: - 2507: 1,36 2508: 1,37 - 2509: 1,38 2510: 1,39 4041: 77,46 4042: 77,51 @@ -1299,13 +1297,18 @@ entities: 9612: -5,71 9911: -48,70 9912: -48,73 + - node: + zIndex: 1 + color: '#FFFFFFFF' + id: BrickTileSteelLineE + decals: + 9952: 1,36 + 9953: 1,38 - node: color: '#FFFFFFFF' id: BrickTileSteelLineN decals: - 2518: 2,35 2519: 3,35 - 2520: 4,35 2521: 5,35 2522: 6,35 2523: 7,35 @@ -1357,6 +1360,13 @@ entities: 9902: -51,74 9903: -50,74 9904: -49,74 + - node: + zIndex: 1 + color: '#FFFFFFFF' + id: BrickTileSteelLineN + decals: + 9950: 2,35 + 9951: 4,35 - node: color: '#FFFFFFFF' id: BrickTileSteelLineS @@ -1953,6 +1963,14 @@ entities: 9920: -32,75 9921: -28,74 9922: -29,77 + 10059: -58,-17 + 10060: -61,-16 + 10113: -10,-69 + 10114: -12,-72 + 10115: -14,-70 + 10116: -16,-72 + 10117: -16,-68 + 10118: -12,-67 - node: cleanable: True zIndex: 1 @@ -2173,7 +2191,6 @@ entities: 4138: -36,1 4139: -30,7 4140: -30,10 - 4141: -22,9 4142: -21,7 4143: -17,11 4144: -16,0 @@ -3082,6 +3099,164 @@ entities: 9942: -43,67 9943: -43,68 9944: -46,68 + 9984: -1,10 + 9985: 0,7 + 9986: -2,7 + 9987: -2,7 + 9988: -1,7 + 9989: -3,10 + 9990: -4,11 + 9991: -7,4 + 9992: -7,5 + 9993: -7,6 + 9994: -6,7 + 9995: -9,0 + 9996: -10,-2 + 9997: -11,-2 + 9998: -11,-1 + 9999: -13,-2 + 10000: -12,-5 + 10001: -11,-4 + 10002: -12,-4 + 10003: -12,-4 + 10004: -2,-4 + 10005: -11,-11 + 10006: -11,-10 + 10007: -11,-10 + 10008: -11,-9 + 10009: -12,-9 + 10010: -12,-9 + 10011: -11,-7 + 10012: -10,-13 + 10013: -10,-12 + 10014: -7,-16 + 10015: -8,-16 + 10016: -7,-15 + 10017: -7,-15 + 10018: -7,-18 + 10019: -4,-20 + 10020: -4,-21 + 10021: -5,-20 + 10022: -3,-19 + 10023: -3,-21 + 10024: -1,-21 + 10025: 3,-21 + 10026: 4,-19 + 10027: 4,-15 + 10028: 4,-16 + 10029: 4,-16 + 10030: 4,-17 + 10031: 4,-24 + 10032: 2,-24 + 10033: -13,-23 + 10034: -60,-28 + 10035: -61,-28 + 10036: -63,-30 + 10037: -60,-22 + 10038: -59,-22 + 10039: -59,-25 + 10040: -59,-28 + 10041: -61,-16 + 10042: -61,-16 + 10043: -61,-16 + 10044: -61,-16 + 10045: -61,-15 + 10046: -60,-14 + 10047: -57,-17 + 10048: -58,-16 + 10049: -57,-16 + 10050: -58,-17 + 10051: -54,-17 + 10052: -55,-17 + 10053: -55,-16 + 10054: -54,-16 + 10055: -53,-16 + 10056: -55,-15 + 10057: -54,-13 + 10058: -54,-13 + 10061: -60,-14 + 10062: -60,-14 + 10063: -60,-14 + 10064: -57,-17 + 10065: -55,-16 + 10066: -55,-16 + 10067: -55,-15 + 10068: -56,-16 + 10069: -56,-16 + 10070: -55,-15 + 10071: -54,-16 + 10072: -54,-16 + 10073: -54,-16 + 10074: -51,-15 + 10075: -50,-15 + 10076: -51,-13 + 10077: -52,-20 + 10078: -52,-20 + 10079: -52,-20 + 10080: -53,-20 + 10081: -51,-20 + 10082: -46,-23 + 10083: -17,-70 + 10084: -15,-69 + 10085: -15,-70 + 10086: -14,-70 + 10087: -13,-69 + 10088: -12,-69 + 10089: -11,-70 + 10090: -11,-71 + 10091: -11,-72 + 10092: -12,-72 + 10093: -12,-71 + 10094: -14,-72 + 10095: -15,-72 + 10096: -15,-72 + 10097: -16,-72 + 10098: -16,-72 + 10099: -15,-72 + 10100: -10,-69 + 10101: -10,-69 + 10102: -11,-69 + 10103: -11,-69 + 10104: -11,-70 + 10105: -13,-70 + 10106: -16,-68 + 10107: -16,-69 + 10108: -14,-69 + 10109: -12,-70 + 10110: -11,-70 + 10111: -16,-70 + 10112: -17,-68 + 10119: -16,-66 + 10120: -13,-66 + 10121: -12,-66 + 10122: -13,-67 + 10123: -12,-67 + 10124: -11,-67 + 10125: -13,-67 + 10126: -14,-67 + 10127: -14,-66 + 10128: -15,-66 + 10129: -15,-65 + 10130: -13,-65 + 10131: -13,-65 + 10132: -9,-65 + 10133: -8,-64 + 10134: -14,-63 + 10146: -24,9 + 10147: -25,9 + 10148: -21,9 + 10149: -21,10 + 10150: -20,9 + 10151: -24,7 + 10152: -24,4 + 10153: -22,5 + 10154: -21,4 + 10155: -20,13 + 10156: -22,13 + 10157: -23,14 + 10158: -24,14 + 10159: -24,11 + 10160: -20,12 - node: cleanable: True zIndex: 1 @@ -3202,6 +3377,15 @@ entities: 8588: 28,23 8589: 29,25 8590: 29,25 + 9954: -1,22 + 9955: -1,21 + 9956: -3,22 + 9957: -3,22 + 9958: -4,22 + 9959: -5,19 + 9960: -5,20 + 9961: -3,21 + 9962: -2,21 - node: cleanable: True color: '#FFFFFFFF' @@ -3270,7 +3454,6 @@ entities: 3000: -11,6 3001: -9,8 3002: -19,8 - 3003: -24,9 3004: -19,11 3005: -16,12 3006: -17,18 @@ -3300,7 +3483,6 @@ entities: 3032: -31,39 3033: -38,41 3034: -28,39 - 3035: -35,45 3036: -30,43 3037: -28,46 3038: -30,51 @@ -3985,7 +4167,6 @@ entities: 3828: -26,13 3829: -26,12 3830: -26,10 - 3831: -25,9 3832: -26,8 3833: -24,10 3834: -23,8 @@ -4624,6 +4805,25 @@ entities: 9861: -31,78 9862: -29,75 9863: -29,75 + 9965: -2,17 + 9966: -2,17 + 9967: -3,17 + 9968: -4,15 + 9969: -1,15 + 9970: -1,15 + 9971: -4,17 + 9972: -4,17 + 9973: -13,17 + 9974: -13,17 + 9975: -12,10 + 9976: -9,11 + 9977: -8,9 + 9978: -3,10 + 9979: -4,10 + 9980: -5,10 + 9981: -5,11 + 9982: -4,11 + 9983: -3,11 - node: cleanable: True zIndex: 1 @@ -4643,6 +4843,8 @@ entities: 8165: 42,4 8166: 42,4 8167: 42,4 + 9963: -5,22 + 9964: -4,21 - node: cleanable: True color: '#B02E26FF' @@ -7632,18 +7834,18 @@ entities: 2541: 0,33 2542: 0,35 2543: 1,34 - 2544: 2,35 2545: 3,34 - 2546: 1,36 2547: 0,37 2548: 0,39 - 2549: 1,38 2550: 5,34 - 2551: 4,35 2579: 6,41 2975: -17,-33 2981: -17,-37 2985: -18,-36 + 9946: 4,35 + 9947: 2,35 + 9948: 1,36 + 9949: 1,38 - node: color: '#8C347F96' id: QuarterTileOverlayGreyscale90 @@ -7847,40 +8049,47 @@ entities: 7279: 28.908653,-33.8389 7347: -20.375824,19.28789 - node: + zIndex: 1 color: '#FFFFFFFF' id: SpaceStationSign1 decals: - 2058: -25,9 + 10139: -25,9 - node: + zIndex: 1 color: '#FFFFFFFF' id: SpaceStationSign2 decals: - 2034: -24,9 + 10140: -24,9 - node: + zIndex: 1 color: '#FFFFFFFF' id: SpaceStationSign3 decals: - 1863: -23,9 + 10141: -23,9 - node: + zIndex: 1 color: '#FFFFFFFF' id: SpaceStationSign4 decals: - 1864: -22,9 + 10142: -22,9 - node: + zIndex: 1 color: '#FFFFFFFF' id: SpaceStationSign5 decals: - 1865: -21,9 + 10143: -21,9 - node: + zIndex: 1 color: '#FFFFFFFF' id: SpaceStationSign6 decals: - 1866: -20,9 + 10144: -20,9 - node: + zIndex: 1 color: '#FFFFFFFF' id: SpaceStationSign7 decals: - 1867: -19,9 + 10145: -19,9 - node: color: '#32CD3293' id: ThreeQuarterTileOverlayGreyscale @@ -9860,7 +10069,7 @@ entities: -4,-14: 0: 49631 -4,-17: - 0: 61441 + 0: 65473 -3,-16: 0: 46008 -3,-15: @@ -9868,7 +10077,7 @@ entities: -3,-14: 0: 62139 -3,-17: - 0: 61568 + 0: 61872 -2,-16: 0: 3839 -2,-15: @@ -11076,8 +11285,8 @@ entities: 13,15: 0: 57308 13,16: - 0: 4381 - 2: 51200 + 0: 797 + 2: 52224 14,13: 0: 65535 14,14: @@ -11086,9 +11295,9 @@ entities: 0: 30583 14,16: 0: 7 - 2: 61952 + 2: 65280 15,16: - 2: 12835 + 2: 13107 7,12: 0: 61408 8,13: @@ -11220,7 +11429,7 @@ entities: -1,16: 0: 63675 12,17: - 2: 61448 + 2: 61440 12,18: 2: 52479 11,17: @@ -11232,7 +11441,7 @@ entities: 11,19: 2: 45055 13,17: - 2: 63627 + 2: 63624 13,18: 2: 39423 13,19: @@ -11240,7 +11449,7 @@ entities: 12,20: 2: 15 14,17: - 2: 61986 + 2: 61998 14,18: 2: 8959 14,19: @@ -11250,7 +11459,7 @@ entities: 14,20: 2: 15 15,17: - 2: 65058 + 2: 65059 15,18: 2: 8191 15,19: @@ -11603,15 +11812,17 @@ entities: 0: 631 -6,19: 2: 8 - -5,-18: - 0: 48000 + -4,-19: + 0: 20480 -4,-18: - 2: 3584 + 0: 65367 + -5,-18: + 0: 47872 + 2: 4 -3,-18: - 2: 18176 + 0: 29495 -2,-18: 0: 61440 - 2: 96 -1,-18: 0: 65280 -1,-17: @@ -14887,6 +15098,11 @@ entities: - type: Transform pos: -36.5,15.5 parent: 12 + - uid: 10620 + components: + - type: Transform + pos: -15.5,-70.5 + parent: 12 - uid: 10786 components: - type: Transform @@ -14899,6 +15115,11 @@ entities: linkedPorts: 10785: - DoorStatus: DoorBolt + - uid: 12234 + components: + - type: Transform + pos: -13.5,-70.5 + parent: 12 - uid: 14903 components: - type: Transform @@ -15246,18 +15467,6 @@ entities: linkedPorts: 27864: - DoorStatus: DoorBolt - - uid: 19844 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 52.5,67.5 - parent: 12 - - type: DeviceLinkSink - invokeCounter: 2 - - type: DeviceLinkSource - linkedPorts: - 18560: - - DoorStatus: DoorBolt - uid: 25678 components: - type: Transform @@ -15310,6 +15519,17 @@ entities: linkedPorts: 27232: - DoorStatus: DoorBolt + - uid: 31450 + components: + - type: Transform + pos: 53.5,66.5 + parent: 12 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 161: + - DoorStatus: DoorBolt - proto: AirlockExternalGlassShuttleArrivals entities: - uid: 14686 @@ -15388,6 +15608,12 @@ entities: parent: 12 - proto: AirlockExternalGlassShuttleEscape entities: + - uid: 573 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -9.5,-71.5 + parent: 12 - uid: 1033 components: - type: Transform @@ -15412,12 +15638,6 @@ entities: rot: -1.5707963267948966 rad pos: -56.5,-39.5 parent: 12 - - uid: 30543 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -15.5,-67.5 - parent: 12 - proto: AirlockExternalGlassShuttleLocked entities: - uid: 552 @@ -15534,41 +15754,40 @@ entities: parent: 12 - proto: AirlockExternalLocked entities: - - uid: 530 + - uid: 161 components: - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,-5.5 + pos: 52.5,64.5 parent: 12 - type: DeviceLinkSink invokeCounter: 1 - type: DeviceLinkSource linkedPorts: - 925: + 31450: - DoorStatus: DoorBolt - - uid: 925 + - uid: 530 components: - type: Transform rot: 3.141592653589793 rad - pos: 5.5,-3.5 + pos: 5.5,-5.5 parent: 12 - type: DeviceLinkSink invokeCounter: 1 - type: DeviceLinkSource linkedPorts: - 530: + 925: - DoorStatus: DoorBolt - - uid: 18560 + - uid: 925 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 52.5,64.5 + rot: 3.141592653589793 rad + pos: 5.5,-3.5 parent: 12 - type: DeviceLinkSink invokeCounter: 1 - type: DeviceLinkSource linkedPorts: - 19844: + 530: - DoorStatus: DoorBolt - uid: 25663 components: @@ -15584,10 +15803,15 @@ entities: - DoorStatus: DoorBolt - proto: AirlockExternalShuttleLocked entities: - - uid: 28051 + - uid: 31079 components: - type: Transform - pos: -16.5,-70.5 + pos: -15.5,-72.5 + parent: 12 + - uid: 31080 + components: + - type: Transform + pos: -13.5,-72.5 parent: 12 - proto: AirlockFreezerLocked entities: @@ -19147,6 +19371,11 @@ entities: rot: 3.141592653589793 rad pos: -47.5,67.5 parent: 12 + - uid: 9640 + components: + - type: Transform + pos: -0.5,5.5 + parent: 12 - uid: 9899 components: - type: Transform @@ -19390,12 +19619,6 @@ entities: rot: 3.141592653589793 rad pos: -39.5,-25.5 parent: 12 - - uid: 21922 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,1.5 - parent: 12 - uid: 22225 components: - type: Transform @@ -19840,6 +20063,12 @@ entities: parent: 12 - proto: AtmosDeviceFanDirectional entities: + - uid: 159 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -9.5,-71.5 + parent: 12 - uid: 193 components: - type: Transform @@ -19869,10 +20098,10 @@ entities: - type: Transform pos: 80.5,-33.5 parent: 12 - - uid: 745 + - uid: 563 components: - type: Transform - pos: -16.5,-70.5 + pos: -15.5,-72.5 parent: 12 - uid: 919 components: @@ -19880,12 +20109,6 @@ entities: rot: 1.5707963267948966 rad pos: 14.5,-51.5 parent: 12 - - uid: 1049 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -15.5,-67.5 - parent: 12 - uid: 1355 components: - type: Transform @@ -20054,6 +20277,11 @@ entities: rot: -1.5707963267948966 rad pos: -47.5,2.5 parent: 12 + - uid: 31081 + components: + - type: Transform + pos: -13.5,-72.5 + parent: 12 - uid: 31633 components: - type: Transform @@ -22499,6 +22727,13 @@ entities: rot: 1.5707963267948966 rad pos: 32.5,25.5 parent: 12 +- proto: BorgModuleAnomaly + entities: + - uid: 31075 + components: + - type: Transform + pos: -40.50334,-38.27384 + parent: 12 - proto: BorgModuleCable entities: - uid: 1780 @@ -22506,6 +22741,18 @@ entities: - type: Transform pos: -34.459003,-34.4371 parent: 12 + - uid: 31065 + components: + - type: Transform + pos: 57.40648,-4.2987256 + parent: 12 +- proto: BorgModuleDiagnosis + entities: + - uid: 31067 + components: + - type: Transform + pos: -1.522131,-49.55343 + parent: 12 - proto: BorgModuleFireExtinguisher entities: - uid: 2071 @@ -22544,6 +22791,11 @@ entities: - type: Transform pos: 22.528473,66.519966 parent: 12 + - uid: 31076 + components: + - type: Transform + pos: 40.50182,45.594707 + parent: 12 - proto: BorgModuleTool entities: - uid: 1781 @@ -22555,8 +22807,8 @@ entities: - uid: 1782 components: - type: Transform - rot: -62.83185307179591 rad - pos: -19.470467,-27.590706 + rot: -6.283185307179586 rad + pos: -4.4899044,50.539303 parent: 12 - proto: BoxBeaker entities: @@ -22831,17 +23083,17 @@ entities: - uid: 20863 components: - type: Transform - pos: -32.4606,65.445 + pos: -32.540394,65.31164 parent: 12 - uid: 20864 components: - type: Transform - pos: -32.497322,65.50615 + pos: -32.602894,65.63478 parent: 12 - uid: 20865 components: - type: Transform - pos: -32.4606,65.51838 + pos: -32.259144,65.467995 parent: 12 - proto: BoxLightbulb entities: @@ -23185,6 +23437,12 @@ entities: rot: -1.5707963267948966 rad pos: 1.5,-13.5 parent: 12 + - uid: 11842 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -7.5,-24.5 + parent: 12 - uid: 11866 components: - type: Transform @@ -23272,6 +23530,32 @@ entities: rot: -1.5707963267948966 rad pos: 50.5,-7.5 parent: 12 + - uid: 31379 + components: + - type: Transform + pos: -20.5,15.5 + parent: 12 + - uid: 31380 + components: + - type: Transform + pos: 12.5,19.5 + parent: 12 + - uid: 31381 + components: + - type: Transform + pos: 10.5,19.5 + parent: 12 + - uid: 31513 + components: + - type: Transform + pos: -49.5,-20.5 + parent: 12 + - uid: 31518 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -49.5,-28.5 + parent: 12 - proto: CableApcExtension entities: - uid: 14 @@ -23499,6 +23783,11 @@ entities: - type: Transform pos: 30.5,-57.5 parent: 12 + - uid: 745 + components: + - type: Transform + pos: 43.5,12.5 + parent: 12 - uid: 746 components: - type: Transform @@ -23534,6 +23823,11 @@ entities: - type: Transform pos: -30.5,-25.5 parent: 12 + - uid: 1049 + components: + - type: Transform + pos: 46.5,13.5 + parent: 12 - uid: 1054 components: - type: Transform @@ -31099,11 +31393,6 @@ entities: - type: Transform pos: 44.5,12.5 parent: 12 - - uid: 12135 - components: - - type: Transform - pos: 43.5,12.5 - parent: 12 - uid: 12136 components: - type: Transform @@ -31169,11 +31458,6 @@ entities: - type: Transform pos: 41.5,14.5 parent: 12 - - uid: 12163 - components: - - type: Transform - pos: 42.5,14.5 - parent: 12 - uid: 12164 components: - type: Transform @@ -42929,16 +43213,6 @@ entities: - type: Transform pos: 45.5,1.5 parent: 12 - - uid: 29339 - components: - - type: Transform - pos: 45.5,4.5 - parent: 12 - - uid: 29340 - components: - - type: Transform - pos: 45.5,5.5 - parent: 12 - uid: 29341 components: - type: Transform @@ -44024,6 +44298,16 @@ entities: - type: Transform pos: 10.5,-24.5 parent: 12 + - uid: 31055 + components: + - type: Transform + pos: -0.5,4.5 + parent: 12 + - uid: 31056 + components: + - type: Transform + pos: -0.5,5.5 + parent: 12 - uid: 31068 components: - type: Transform @@ -44054,6 +44338,56 @@ entities: - type: Transform pos: -52.5,-50.5 parent: 12 + - uid: 31165 + components: + - type: Transform + pos: -15.5,-68.5 + parent: 12 + - uid: 31166 + components: + - type: Transform + pos: -14.5,-68.5 + parent: 12 + - uid: 31169 + components: + - type: Transform + pos: -13.5,-68.5 + parent: 12 + - uid: 31170 + components: + - type: Transform + pos: -12.5,-68.5 + parent: 12 + - uid: 31171 + components: + - type: Transform + pos: -11.5,-68.5 + parent: 12 + - uid: 31172 + components: + - type: Transform + pos: -10.5,-68.5 + parent: 12 + - uid: 31173 + components: + - type: Transform + pos: -10.5,-69.5 + parent: 12 + - uid: 31174 + components: + - type: Transform + pos: -10.5,-70.5 + parent: 12 + - uid: 31238 + components: + - type: Transform + pos: -10.5,-71.5 + parent: 12 + - uid: 31266 + components: + - type: Transform + pos: -14.5,-69.5 + parent: 12 - uid: 31275 components: - type: Transform @@ -44184,6 +44518,16 @@ entities: - type: Transform pos: 1.5,-63.5 parent: 12 + - uid: 31349 + components: + - type: Transform + pos: -14.5,-70.5 + parent: 12 + - uid: 31353 + components: + - type: Transform + pos: -14.5,-71.5 + parent: 12 - uid: 31365 components: - type: Transform @@ -48452,11 +48796,6 @@ entities: - type: Transform pos: -1.5,35.5 parent: 12 - - uid: 11936 - components: - - type: Transform - pos: 45.5,4.5 - parent: 12 - uid: 11938 components: - type: Transform @@ -54877,31 +55216,6 @@ entities: - type: Transform pos: 4.5,-54.5 parent: 12 - - uid: 29182 - components: - - type: Transform - pos: 45.5,0.5 - parent: 12 - - uid: 29183 - components: - - type: Transform - pos: 45.5,1.5 - parent: 12 - - uid: 29184 - components: - - type: Transform - pos: 45.5,2.5 - parent: 12 - - uid: 29185 - components: - - type: Transform - pos: 45.5,3.5 - parent: 12 - - uid: 29307 - components: - - type: Transform - pos: 45.5,5.5 - parent: 12 - uid: 29426 components: - type: Transform @@ -56337,6 +56651,11 @@ entities: - type: Transform pos: 43.5,58.5 parent: 12 + - uid: 571 + components: + - type: Transform + pos: -0.5,4.5 + parent: 12 - uid: 601 components: - type: Transform @@ -59702,11 +60021,26 @@ entities: - type: Transform pos: 31.5,15.5 parent: 12 + - uid: 12056 + components: + - type: Transform + pos: -0.5,5.5 + parent: 12 - uid: 12142 components: - type: Transform pos: 37.5,18.5 parent: 12 + - uid: 12237 + components: + - type: Transform + pos: 53.5,-0.5 + parent: 12 + - uid: 12238 + components: + - type: Transform + pos: 52.5,-0.5 + parent: 12 - uid: 12292 components: - type: Transform @@ -65932,16 +66266,6 @@ entities: - type: Transform pos: -25.5,70.5 parent: 12 - - uid: 29323 - components: - - type: Transform - pos: 45.5,5.5 - parent: 12 - - uid: 29324 - components: - - type: Transform - pos: 45.5,4.5 - parent: 12 - uid: 29325 components: - type: Transform @@ -66757,6 +67081,56 @@ entities: - type: Transform pos: -5.5,-65.5 parent: 12 + - uid: 31564 + components: + - type: Transform + pos: 51.5,-0.5 + parent: 12 + - uid: 31620 + components: + - type: Transform + pos: 50.5,-0.5 + parent: 12 + - uid: 31621 + components: + - type: Transform + pos: 49.5,-0.5 + parent: 12 + - uid: 31622 + components: + - type: Transform + pos: 48.5,-0.5 + parent: 12 + - uid: 31625 + components: + - type: Transform + pos: 47.5,-0.5 + parent: 12 + - uid: 31626 + components: + - type: Transform + pos: 46.5,-0.5 + parent: 12 + - uid: 31627 + components: + - type: Transform + pos: 45.5,-0.5 + parent: 12 + - uid: 31645 + components: + - type: Transform + pos: 45.5,0.5 + parent: 12 + - uid: 31646 + components: + - type: Transform + pos: 45.5,1.5 + parent: 12 + - uid: 31647 + components: + - type: Transform + pos: 45.5,2.5 + parent: 12 - uid: 31771 components: - type: Transform @@ -67136,6 +67510,30 @@ entities: parent: 12 - proto: Carpet entities: + - uid: 2274 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,31.5 + parent: 12 + - uid: 2276 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 54.5,31.5 + parent: 12 + - uid: 2340 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 53.5,29.5 + parent: 12 + - uid: 2897 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 54.5,28.5 + parent: 12 - uid: 4023 components: - type: Transform @@ -67195,6 +67593,54 @@ entities: - type: Transform pos: 23.5,48.5 parent: 12 + - uid: 4890 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 53.5,27.5 + parent: 12 + - uid: 5385 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 53.5,28.5 + parent: 12 + - uid: 5411 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,30.5 + parent: 12 + - uid: 6288 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 56.5,29.5 + parent: 12 + - uid: 6747 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,27.5 + parent: 12 + - uid: 7338 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 53.5,30.5 + parent: 12 + - uid: 7584 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 53.5,31.5 + parent: 12 + - uid: 7620 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 56.5,31.5 + parent: 12 - uid: 10613 components: - type: Transform @@ -67213,6 +67659,48 @@ entities: rot: -1.5707963267948966 rad pos: -21.5,-0.5 parent: 12 + - uid: 12401 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 54.5,29.5 + parent: 12 + - uid: 12402 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,28.5 + parent: 12 + - uid: 12403 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,29.5 + parent: 12 + - uid: 12404 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 56.5,27.5 + parent: 12 + - uid: 12405 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 54.5,27.5 + parent: 12 + - uid: 12406 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 54.5,30.5 + parent: 12 + - uid: 12407 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 56.5,30.5 + parent: 12 - uid: 12727 components: - type: Transform @@ -67273,6 +67761,12 @@ entities: rot: -1.5707963267948966 rad pos: 56.5,36.5 parent: 12 + - uid: 13145 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 56.5,28.5 + parent: 12 - uid: 13178 components: - type: Transform @@ -68598,126 +69092,6 @@ entities: rot: -1.5707963267948966 rad pos: 56.5,32.5 parent: 12 - - uid: 13145 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 56.5,31.5 - parent: 12 - - uid: 13146 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 55.5,30.5 - parent: 12 - - uid: 13147 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 54.5,29.5 - parent: 12 - - uid: 13148 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 53.5,28.5 - parent: 12 - - uid: 13149 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 54.5,27.5 - parent: 12 - - uid: 13150 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 55.5,28.5 - parent: 12 - - uid: 13151 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 56.5,29.5 - parent: 12 - - uid: 13152 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 56.5,27.5 - parent: 12 - - uid: 13153 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 54.5,31.5 - parent: 12 - - uid: 13154 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 53.5,30.5 - parent: 12 - - uid: 13155 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 53.5,31.5 - parent: 12 - - uid: 13156 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 53.5,29.5 - parent: 12 - - uid: 13157 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 54.5,30.5 - parent: 12 - - uid: 13158 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 55.5,31.5 - parent: 12 - - uid: 13159 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 56.5,30.5 - parent: 12 - - uid: 13160 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 55.5,29.5 - parent: 12 - - uid: 13161 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 54.5,28.5 - parent: 12 - - uid: 13162 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 53.5,27.5 - parent: 12 - - uid: 13163 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 55.5,27.5 - parent: 12 - - uid: 13164 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 56.5,28.5 - parent: 12 - uid: 13170 components: - type: Transform @@ -72929,6 +73303,11 @@ entities: rot: -1.5707963267948966 rad pos: -9.5,-0.5 parent: 12 + - uid: 22182 + components: + - type: Transform + pos: 54.5,66.5 + parent: 12 - uid: 22286 components: - type: Transform @@ -73679,11 +74058,6 @@ entities: rot: 1.5707963267948966 rad pos: -48.5,46.5 parent: 12 - - uid: 25555 - components: - - type: Transform - pos: 51.5,68.5 - parent: 12 - uid: 25758 components: - type: Transform @@ -75299,16 +75673,6 @@ entities: rot: 3.141592653589793 rad pos: -41.5,66.5 parent: 12 - - uid: 30017 - components: - - type: Transform - pos: 53.5,68.5 - parent: 12 - - uid: 30018 - components: - - type: Transform - pos: 52.5,68.5 - parent: 12 - uid: 30131 components: - type: Transform @@ -75659,6 +76023,21 @@ entities: - type: Transform pos: -57.5,-43.5 parent: 12 + - uid: 31107 + components: + - type: Transform + pos: -15.5,-71.5 + parent: 12 + - uid: 31111 + components: + - type: Transform + pos: -13.5,-71.5 + parent: 12 + - uid: 31113 + components: + - type: Transform + pos: -14.5,-71.5 + parent: 12 - uid: 31270 components: - type: Transform @@ -75677,12 +76056,32 @@ entities: rot: 1.5707963267948966 rad pos: -2.5,15.5 parent: 12 + - uid: 31396 + components: + - type: Transform + pos: 57.5,66.5 + parent: 12 - uid: 31419 components: - type: Transform rot: 3.141592653589793 rad pos: -16.5,-64.5 parent: 12 + - uid: 31442 + components: + - type: Transform + pos: 54.5,67.5 + parent: 12 + - uid: 31445 + components: + - type: Transform + pos: 55.5,66.5 + parent: 12 + - uid: 31446 + components: + - type: Transform + pos: 56.5,66.5 + parent: 12 - uid: 32022 components: - type: Transform @@ -77209,6 +77608,16 @@ entities: rot: 3.141592653589793 rad pos: 15.5,-12.5 parent: 12 + - uid: 31149 + components: + - type: Transform + pos: -12.5,-68.5 + parent: 12 + - uid: 31160 + components: + - type: Transform + pos: -11.5,-68.5 + parent: 12 - uid: 31264 components: - type: Transform @@ -77319,6 +77728,11 @@ entities: - type: Transform pos: -36.5,-56.5 parent: 12 + - uid: 31159 + components: + - type: Transform + pos: -13.5,-68.5 + parent: 12 - uid: 31265 components: - type: Transform @@ -78095,10 +78509,10 @@ entities: - type: Transform pos: -52.5,-34.5 parent: 12 - - uid: 28303 + - uid: 31099 components: - type: Transform - pos: -19.5,-64.5 + pos: -12.5,-66.5 parent: 12 - uid: 31367 components: @@ -78382,6 +78796,11 @@ entities: parent: 12 - proto: ClosetEmergencyN2FilledRandom entities: + - uid: 8668 + components: + - type: Transform + pos: -13.5,-66.5 + parent: 12 - uid: 14957 components: - type: Transform @@ -78479,6 +78898,11 @@ entities: - type: Transform pos: 48.5,-36.5 parent: 12 + - uid: 11261 + components: + - type: Transform + pos: -36.5,55.5 + parent: 12 - uid: 12023 components: - type: Transform @@ -78861,6 +79285,11 @@ entities: - type: Transform pos: 40.5,12.5 parent: 12 + - uid: 12135 + components: + - type: Transform + pos: -9.5,-68.5 + parent: 12 - uid: 12246 components: - type: Transform @@ -79792,8 +80221,8 @@ entities: - uid: 5033 components: - type: Transform - rot: -119.380520836412 rad - pos: -19.723452,-30.617403 + rot: -6.283185307179586 rad + pos: -19.489866,-29.595835 parent: 12 - proto: ClothingMaskBandBlue entities: @@ -79847,8 +80276,8 @@ entities: - uid: 10900 components: - type: Transform - rot: -119.380520836412 rad - pos: -19.545881,-30.396193 + rot: -6.283185307179586 rad + pos: -19.677366,-30.367203 parent: 12 - proto: ClothingMaskBreathMedicalSecurity entities: @@ -83592,15 +84021,15 @@ entities: - type: Transform pos: -55.5,-39.5 parent: 12 - - uid: 916 + - uid: 703 components: - type: Transform - pos: -18.5,73.5 + pos: -10.5,-71.5 parent: 12 - - uid: 2340 + - uid: 916 components: - type: Transform - pos: -16.5,-67.5 + pos: -18.5,73.5 parent: 12 - uid: 7275 components: @@ -95559,6 +95988,11 @@ entities: - type: Transform pos: -33.58722,44.43513 parent: 12 + - uid: 31049 + components: + - type: Transform + pos: -40.499992,47.607746 + parent: 12 - uid: 31815 components: - type: Transform @@ -96744,6 +97178,22 @@ entities: rot: 1.5707963267948966 rad pos: 32.5,14.5 parent: 12 + - uid: 31360 + components: + - type: Transform + pos: -12.5,-68.5 + parent: 12 + - uid: 31361 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -60.5,-27.5 + parent: 12 + - uid: 31362 + components: + - type: Transform + pos: -59.5,-21.5 + parent: 12 - uid: 31514 components: - type: Transform @@ -97255,8 +97705,8 @@ entities: pos: 7.5,57.5 parent: 12 - type: FaxMachine - name: Recreation longue - destinationAddress: Recreation longue + name: Recreation lounge + destinationAddress: Recreation lounge - uid: 26279 components: - type: Transform @@ -102397,6 +102847,13 @@ entities: - type: Transform pos: -34.299114,38.455334 parent: 12 +- proto: FoodBoxPizzaFilled + entities: + - uid: 10911 + components: + - type: Transform + pos: 0.5,52.5 + parent: 12 - proto: FoodBreadMoldySlice entities: - uid: 3240 @@ -102407,7 +102864,7 @@ entities: - uid: 31123 components: - type: Transform - pos: -30.5,-57.5 + pos: -30.467789,-57.532593 parent: 12 - proto: FoodBreadPlain entities: @@ -102528,13 +102985,6 @@ entities: - type: Transform pos: 57.538345,56.66531 parent: 12 -- proto: FoodCornTrash - entities: - - uid: 31149 - components: - - type: Transform - pos: -34.115353,-56.58399 - parent: 12 - proto: FoodFrozenSnowcone entities: - uid: 22491 @@ -102654,7 +103104,7 @@ entities: - uid: 31124 components: - type: Transform - pos: -30.5,-58.5 + pos: -30.5164,-58.581932 parent: 12 - proto: FoodPizzaUraniumSlice entities: @@ -102919,7 +103369,7 @@ entities: - uid: 31133 components: - type: Transform - pos: -28.587122,-59.26843 + pos: -28.70083,-57.79198 parent: 12 - proto: Football entities: @@ -139733,11 +140183,6 @@ entities: - type: Transform pos: -46.5,0.5 parent: 12 - - uid: 8668 - components: - - type: Transform - pos: -47.5,0.5 - parent: 12 - uid: 8713 components: - type: Transform @@ -139851,7 +140296,7 @@ entities: - uid: 9971 components: - type: Transform - pos: -47.5,3.5 + pos: 60.5,65.5 parent: 12 - uid: 10060 components: @@ -140363,6 +140808,11 @@ entities: rot: 1.5707963267948966 rad pos: -3.5,8.5 parent: 12 + - uid: 10724 + components: + - type: Transform + pos: -14.5,-70.5 + parent: 12 - uid: 10725 components: - type: Transform @@ -143440,11 +143890,6 @@ entities: rot: 1.5707963267948966 rad pos: 61.5,-11.5 parent: 12 - - uid: 25558 - components: - - type: Transform - pos: 61.5,66.5 - parent: 12 - uid: 25559 components: - type: Transform @@ -143982,11 +144427,6 @@ entities: - type: Transform pos: 6.5,76.5 parent: 12 - - uid: 27240 - components: - - type: Transform - pos: 61.5,67.5 - parent: 12 - uid: 27248 components: - type: Transform @@ -145444,26 +145884,6 @@ entities: - type: Transform pos: -39.5,65.5 parent: 12 - - uid: 30971 - components: - - type: Transform - pos: -14.5,-65.5 - parent: 12 - - uid: 30972 - components: - - type: Transform - pos: -13.5,-65.5 - parent: 12 - - uid: 30973 - components: - - type: Transform - pos: -12.5,-65.5 - parent: 12 - - uid: 30977 - components: - - type: Transform - pos: -11.5,-65.5 - parent: 12 - uid: 30978 components: - type: Transform @@ -145573,6 +145993,11 @@ entities: rot: 3.141592653589793 rad pos: -56.5,-41.5 parent: 12 + - uid: 31103 + components: + - type: Transform + pos: -9.5,-70.5 + parent: 12 - uid: 31163 components: - type: Transform @@ -145645,6 +146070,11 @@ entities: - type: Transform pos: 2.5,-62.5 parent: 12 + - uid: 31441 + components: + - type: Transform + pos: 60.5,68.5 + parent: 12 - uid: 31451 components: - type: Transform @@ -146705,6 +147135,14 @@ entities: rot: -12.566370614359172 rad pos: -2.5072865,-0.47896957 parent: 12 +- proto: IntercomAll + entities: + - uid: 31057 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,1.5 + parent: 12 - proto: IntercomAssembly entities: - uid: 4791 @@ -146745,11 +147183,6 @@ entities: rot: 3.141592653589793 rad pos: -33.5,29.5 parent: 12 - - uid: 21479 - components: - - type: Transform - pos: -25.5,17.5 - parent: 12 - uid: 23622 components: - type: Transform @@ -146774,6 +147207,12 @@ entities: rot: 3.141592653589793 rad pos: -40.5,-44.5 parent: 12 + - uid: 31078 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -25.5,17.5 + parent: 12 - proto: IntercomEngineering entities: - uid: 1484 @@ -147054,8 +147493,7 @@ entities: - uid: 28698 components: - type: Transform - rot: -6.283185307179586 rad - pos: 57.513466,-4.4312396 + pos: 57.646065,-4.6948333 parent: 12 - type: GasTank toggleActionEntity: 28700 @@ -148441,6 +148879,11 @@ entities: parent: 12 - proto: LootSpawnerIndustrial entities: + - uid: 1166 + components: + - type: Transform + pos: 45.5,5.5 + parent: 12 - uid: 21945 components: - type: Transform @@ -148955,6 +149398,11 @@ entities: - type: Transform pos: -52.5,49.5 parent: 12 + - uid: 31359 + components: + - type: Transform + pos: -11.5,-68.5 + parent: 12 - uid: 31676 components: - type: Transform @@ -149072,6 +149520,11 @@ entities: - type: Transform pos: -39.5,-50.5 parent: 12 + - uid: 31355 + components: + - type: Transform + pos: -11.5,-66.5 + parent: 12 - uid: 31372 components: - type: Transform @@ -149214,6 +149667,11 @@ entities: - type: Transform pos: 42.5,-42.5 parent: 12 + - uid: 29324 + components: + - type: Transform + pos: -10.5,-66.5 + parent: 12 - uid: 29620 components: - type: Transform @@ -149513,6 +149971,11 @@ entities: - type: Transform pos: -11.468502,-43.455402 parent: 12 + - uid: 31161 + components: + - type: Transform + pos: -11.5,-71.5 + parent: 12 - uid: 31323 components: - type: Transform @@ -149677,40 +150140,52 @@ entities: rot: -1.5707963267948966 rad pos: 8.5,-40.5 parent: 12 - - uid: 4260 + - uid: 9395 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 6.5,-40.5 + pos: -21.5,-27.5 parent: 12 - - uid: 4570 + - uid: 10736 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,-41.5 parent: 12 - - uid: 5042 + - uid: 10737 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 6.5,-40.5 + parent: 12 + - uid: 10738 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,-40.5 parent: 12 - - uid: 5709 + - uid: 10939 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 6.5,-44.5 + parent: 12 + - uid: 11000 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,-43.5 parent: 12 - - uid: 6747 + - uid: 11001 components: - type: Transform rot: -1.5707963267948966 rad - pos: 6.5,-41.5 + pos: 6.5,-43.5 parent: 12 - - uid: 9395 + - uid: 11220 components: - type: Transform - pos: -21.5,-27.5 + rot: -1.5707963267948966 rad + pos: 6.5,-41.5 parent: 12 - uid: 12394 components: @@ -149760,24 +150235,12 @@ entities: rot: -1.5707963267948966 rad pos: 8.5,-43.5 parent: 12 - - uid: 26149 + - uid: 31077 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,-44.5 parent: 12 - - uid: 26150 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 6.5,-43.5 - parent: 12 - - uid: 26152 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 6.5,-44.5 - parent: 12 - proto: MouseTimedSpawner entities: - uid: 890 @@ -153926,6 +154389,12 @@ entities: rot: 1.5707963267948966 rad pos: -12.5,74.5 parent: 12 + - uid: 11221 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -34.5,47.5 + parent: 12 - uid: 11223 components: - type: Transform @@ -153938,6 +154407,12 @@ entities: rot: 1.5707963267948966 rad pos: -13.5,-50.5 parent: 12 + - uid: 11796 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -33.5,57.5 + parent: 12 - uid: 12016 components: - type: Transform @@ -154735,18 +155210,6 @@ entities: rot: 1.5707963267948966 rad pos: -39.5,42.5 parent: 12 - - uid: 19034 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -36.5,44.5 - parent: 12 - - uid: 19051 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -34.5,46.5 - parent: 12 - uid: 19052 components: - type: Transform @@ -154817,30 +155280,12 @@ entities: rot: -1.5707963267948966 rad pos: -38.5,50.5 parent: 12 - - uid: 19355 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -34.5,54.5 - parent: 12 - uid: 19356 components: - type: Transform rot: -1.5707963267948966 rad pos: -34.5,52.5 parent: 12 - - uid: 19357 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -36.5,61.5 - parent: 12 - - uid: 19358 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -33.5,61.5 - parent: 12 - uid: 19364 components: - type: Transform @@ -155159,6 +155604,12 @@ entities: - type: Transform pos: -50.5,22.5 parent: 12 + - uid: 31050 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -36.5,44.5 + parent: 12 - uid: 31472 components: - type: Transform @@ -155714,6 +156165,11 @@ entities: rot: 1.5707963267948966 rad pos: 57.5,11.5 parent: 12 + - uid: 11802 + components: + - type: Transform + pos: -31.5,60.5 + parent: 12 - uid: 12005 components: - type: Transform @@ -155724,6 +156180,12 @@ entities: - type: Transform pos: 50.5,20.5 parent: 12 + - uid: 12163 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -14.5,-71.5 + parent: 12 - uid: 12291 components: - type: Transform @@ -155927,12 +156389,6 @@ entities: rot: 3.141592653589793 rad pos: -35.5,64.5 parent: 12 - - uid: 19871 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -29.5,60.5 - parent: 12 - uid: 21082 components: - type: Transform @@ -156304,6 +156760,12 @@ entities: - type: Transform pos: 5.5,-59.5 parent: 12 + - uid: 31354 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -11.5,-70.5 + parent: 12 - uid: 31508 components: - type: Transform @@ -156324,12 +156786,6 @@ entities: parent: 12 - proto: PoweredSmallLightEmpty entities: - - uid: 9391 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -7.5,-23.5 - parent: 12 - uid: 28973 components: - type: Transform @@ -156351,6 +156807,12 @@ entities: powerLoad: 60 - type: DamageOnInteract isDamageActive: False + - uid: 31363 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -6.5,-22.5 + parent: 12 - proto: Protolathe entities: - uid: 2321 @@ -156412,6 +156874,12 @@ entities: - type: Transform pos: -35.5,-37.5 parent: 12 + - uid: 2171 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 45.5,5.5 + parent: 12 - uid: 2645 components: - type: Transform @@ -156621,12 +157089,6 @@ entities: rot: 1.5707963267948966 rad pos: 33.5,-6.5 parent: 12 - - uid: 12056 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -19.5,-28.5 - parent: 12 - uid: 12265 components: - type: Transform @@ -157131,6 +157593,17 @@ entities: - type: Transform pos: -53.5,-47.5 parent: 12 + - uid: 31086 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -10.5,-66.5 + parent: 12 + - uid: 31114 + components: + - type: Transform + pos: -11.5,-71.5 + parent: 12 - uid: 31261 components: - type: Transform @@ -158027,6 +158500,11 @@ entities: - type: Transform pos: 45.5,6.5 parent: 12 + - uid: 9391 + components: + - type: Transform + pos: -12.5,-71.5 + parent: 12 - uid: 13556 components: - type: Transform @@ -158178,6 +158656,12 @@ entities: - type: Transform pos: -26.5,73.5 parent: 12 + - uid: 31098 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -14.5,-66.5 + parent: 12 - uid: 31717 components: - type: Transform @@ -158188,11 +158672,6 @@ entities: - type: Transform pos: -4.5,-64.5 parent: 12 - - uid: 31719 - components: - - type: Transform - pos: -15.5,-65.5 - parent: 12 - uid: 31720 components: - type: Transform @@ -158240,6 +158719,11 @@ entities: parent: 12 - proto: RandomPosterLegit entities: + - uid: 726 + components: + - type: Transform + pos: -18.5,-29.5 + parent: 12 - uid: 2131 components: - type: Transform @@ -158996,11 +159480,6 @@ entities: - type: Transform pos: 56.5,-28.5 parent: 12 - - uid: 24419 - components: - - type: Transform - pos: 63.5,-23.5 - parent: 12 - uid: 24420 components: - type: Transform @@ -159286,6 +159765,16 @@ entities: - type: Transform pos: -38.5,-54.5 parent: 12 + - uid: 31356 + components: + - type: Transform + pos: -10.5,-70.5 + parent: 12 + - uid: 31562 + components: + - type: Transform + pos: 61.5,-25.5 + parent: 12 - uid: 31582 components: - type: Transform @@ -160498,11 +160987,6 @@ entities: rot: -1.5707963267948966 rad pos: 5.5,24.5 parent: 12 - - uid: 4151 - components: - - type: Transform - pos: -47.5,3.5 - parent: 12 - uid: 4175 components: - type: Transform @@ -162740,7 +163224,7 @@ entities: - uid: 12191 components: - type: Transform - pos: -47.5,0.5 + pos: -14.5,-70.5 parent: 12 - uid: 12252 components: @@ -165006,26 +165490,6 @@ entities: - type: Transform pos: -31.5,-60.5 parent: 12 - - uid: 30970 - components: - - type: Transform - pos: -14.5,-65.5 - parent: 12 - - uid: 30974 - components: - - type: Transform - pos: -13.5,-65.5 - parent: 12 - - uid: 30975 - components: - - type: Transform - pos: -12.5,-65.5 - parent: 12 - - uid: 30976 - components: - - type: Transform - pos: -11.5,-65.5 - parent: 12 - uid: 30980 components: - type: Transform @@ -165041,6 +165505,11 @@ entities: - type: Transform pos: -54.5,-46.5 parent: 12 + - uid: 31105 + components: + - type: Transform + pos: -9.5,-70.5 + parent: 12 - uid: 31141 components: - type: Transform @@ -165376,8 +165845,8 @@ entities: - uid: 11312 components: - type: Transform - rot: -62.83185307179591 rad - pos: -19.456577,-27.187649 + rot: -6.283185307179586 rad + pos: -19.510698,-27.229607 parent: 12 - uid: 13828 components: @@ -165420,8 +165889,8 @@ entities: - uid: 5125 components: - type: Transform - rot: -62.83185307179591 rad - pos: -19.623243,-27.84088 + rot: -6.283185307179586 rad + pos: -19.458616,-27.615292 parent: 12 - uid: 13829 components: @@ -165822,14 +166291,12 @@ entities: - uid: 23173 components: - type: Transform - rot: -43.98229715025713 rad - pos: 53.468582,-3.3849072 + pos: 53.37523,-3.5169325 parent: 12 - uid: 26101 components: - type: Transform - rot: -43.98229715025713 rad - pos: 57.301918,-5.261206 + pos: 57.385647,-5.3932357 parent: 12 - uid: 31043 components: @@ -165899,8 +166366,7 @@ entities: - uid: 8439 components: - type: Transform - rot: -43.98229715025713 rad - pos: 57.63525,-5.083999 + pos: 53.677315,-3.3188787 parent: 12 - uid: 8898 components: @@ -166985,6 +167451,48 @@ entities: linkedPorts: 31258: - Pressed: DoorBolt + - uid: 31374 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -7.5,-24.5 + parent: 12 + - type: DeviceLinkSource + linkedPorts: + 9763: + - Pressed: Toggle + 9764: + - Pressed: Toggle + - uid: 31383 + components: + - type: Transform + pos: 12.5,19.5 + parent: 12 + - type: DeviceLinkSource + linkedPorts: + 12674: + - Pressed: Toggle + 1850: + - Pressed: Toggle + 4384: + - Pressed: Toggle + 12675: + - Pressed: Toggle + - uid: 31385 + components: + - type: Transform + pos: 10.5,19.5 + parent: 12 + - type: DeviceLinkSource + linkedPorts: + 9407: + - Pressed: Toggle + 15681: + - Pressed: Toggle + 10993: + - Pressed: Toggle + 11326: + - Pressed: Toggle - proto: SignAnomaly entities: - uid: 32031 @@ -170194,6 +170702,11 @@ entities: - type: Transform pos: -44.5,-15.5 parent: 12 + - uid: 31106 + components: + - type: Transform + pos: -14.5,-68.5 + parent: 12 - proto: SpawnMobParrot entities: - uid: 6237 @@ -171016,6 +171529,16 @@ entities: rot: 3.141592653589793 rad pos: -36.5,62.5 parent: 12 + - uid: 11270 + components: + - type: Transform + pos: -35.5,45.5 + parent: 12 + - uid: 11521 + components: + - type: Transform + pos: -34.5,45.5 + parent: 12 - uid: 13050 components: - type: Transform @@ -172170,11 +172693,6 @@ entities: - type: Transform pos: 4.5,-16.5 parent: 12 - - uid: 4890 - components: - - type: Transform - pos: 45.5,5.5 - parent: 12 - uid: 7904 components: - type: Transform @@ -172628,6 +173146,38 @@ entities: - SurveillanceCameraCommand nameSet: True id: AI exterior + - uid: 31447 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -51.5,38.5 + parent: 12 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraCommand + nameSet: True + id: Command camera room + - uid: 31512 + components: + - type: Transform + pos: -42.5,-20.5 + parent: 12 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraCommand + nameSet: True + id: RD server room + - uid: 31519 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -36.5,-19.5 + parent: 12 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraCommand + nameSet: True + id: RD's room - uid: 31748 components: - type: Transform @@ -172677,6 +173227,27 @@ entities: - SurveillanceCameraEngineering nameSet: True id: Atmos lockers/engi hallway + - uid: 7716 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 1.5,18.5 + parent: 12 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraEngineering + nameSet: True + id: TEG North + - uid: 9766 + components: + - type: Transform + pos: 56.5,66.5 + parent: 12 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraEngineering + nameSet: True + id: Northeast airlock exterior - uid: 9821 components: - type: Transform @@ -172751,17 +173322,6 @@ entities: - SurveillanceCameraEngineering nameSet: True id: Break room - - uid: 26133 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 48.5,1.5 - parent: 12 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraEngineering - nameSet: True - id: Containment entrance - uid: 26139 components: - type: Transform @@ -172945,6 +173505,60 @@ entities: - SurveillanceCameraEngineering nameSet: True id: Southeast solars 2 + - uid: 31448 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -56.5,47.5 + parent: 12 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraEngineering + nameSet: True + id: Northwest solars + - uid: 31471 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 11.5,28.5 + parent: 12 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraEngineering + nameSet: True + id: TEG exterior + - uid: 31511 + components: + - type: Transform + pos: -36.5,-10.5 + parent: 12 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraEngineering + nameSet: True + id: Shuttle constuction dock + - uid: 31529 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -55.5,-51.5 + parent: 12 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraEngineering + nameSet: True + id: Southwest Solars 1 + - uid: 31530 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -23.5,-68.5 + parent: 12 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraEngineering + nameSet: True + id: Southwest Solars 2 - uid: 31882 components: - type: Transform @@ -172979,16 +173593,6 @@ entities: - SurveillanceCameraGeneral nameSet: True id: Arrivals west - - uid: 2897 - components: - - type: Transform - pos: 35.5,22.5 - parent: 12 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraGeneral - nameSet: True - id: Hallway east - uid: 2901 components: - type: Transform @@ -173087,6 +173691,28 @@ entities: - SurveillanceCameraGeneral nameSet: True id: South evac A + - uid: 8442 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,-43.5 + parent: 12 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraGeneral + nameSet: True + id: Southeast dock + - uid: 8454 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 6.5,70.5 + parent: 12 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraGeneral + nameSet: True + id: Nitrogen atmosphere room - uid: 9836 components: - type: Transform @@ -173108,6 +173734,17 @@ entities: - SurveillanceCameraGeneral nameSet: True id: Evac north + - uid: 12400 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 0.5,34.5 + parent: 12 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraGeneral + nameSet: True + id: Pool south - uid: 12672 components: - type: Transform @@ -173237,17 +173874,6 @@ entities: - SurveillanceCameraGeneral nameSet: True id: Ship construction tool room - - uid: 25396 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 37.5,18.5 - parent: 12 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraGeneral - nameSet: True - id: Disposals - uid: 26895 components: - type: Transform @@ -173313,6 +173939,47 @@ entities: - SurveillanceCameraGeneral nameSet: True id: South Evac B + - uid: 31047 + components: + - type: Transform + pos: 18.5,70.5 + parent: 12 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraGeneral + nameSet: True + id: Arrivals shuttle dock + - uid: 31394 + components: + - type: Transform + pos: 44.5,43.5 + parent: 12 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraGeneral + nameSet: True + id: Tools exterior + - uid: 31449 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 2.5,28.5 + parent: 12 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraGeneral + nameSet: True + id: Bee room + - uid: 31473 + components: + - type: Transform + pos: 21.5,26.5 + parent: 12 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraGeneral + nameSet: True + id: Observitory - uid: 31500 components: - type: Transform @@ -173334,39 +174001,38 @@ entities: - SurveillanceCameraGeneral nameSet: True id: Crossroad - - uid: 31749 + - uid: 31557 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -17.5,-0.5 + pos: 41.5,-32.5 parent: 12 - type: SurveillanceCamera setupAvailableNetworks: - SurveillanceCameraGeneral nameSet: True - id: Law office exterior - - uid: 31750 + id: Vending machine room + - uid: 31749 components: - type: Transform rot: -1.5707963267948966 rad - pos: -16.5,-12.5 + pos: -17.5,-0.5 parent: 12 - type: SurveillanceCamera setupAvailableNetworks: - SurveillanceCameraGeneral nameSet: True - id: Gorilla and penguin enclosures - - uid: 32105 + id: Law office exterior + - uid: 31750 components: - type: Transform - rot: 3.141592653589793 rad - pos: 57.5,64.5 + rot: -1.5707963267948966 rad + pos: -16.5,-12.5 parent: 12 - type: SurveillanceCamera setupAvailableNetworks: - SurveillanceCameraGeneral nameSet: True - id: Project room + id: Gorilla and penguin enclosures - proto: SurveillanceCameraMedical entities: - uid: 3961 @@ -173486,6 +174152,28 @@ entities: - SurveillanceCameraMedical nameSet: True id: Surgery + - uid: 31531 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -3.5,-53.5 + parent: 12 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraMedical + nameSet: True + id: Genetics + - uid: 31556 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 1.5,-43.5 + parent: 12 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraMedical + nameSet: True + id: Morgue and Surgery entrance - uid: 31761 components: - type: Transform @@ -173851,6 +174539,17 @@ entities: - type: SurveillanceCamera setupAvailableNetworks: - SurveillanceCameraService + - uid: 2154 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 44.5,21.5 + parent: 12 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraService + nameSet: True + id: Janitor closet - uid: 5161 components: - type: Transform @@ -173876,13 +174575,14 @@ entities: - uid: 12287 components: - type: Transform - pos: 46.5,16.5 + rot: 1.5707963267948966 rad + pos: 41.5,18.5 parent: 12 - type: SurveillanceCamera setupAvailableNetworks: - SurveillanceCameraService nameSet: True - id: Janitor's closet + id: Disposals - uid: 12904 components: - type: Transform @@ -174173,6 +174873,17 @@ entities: - SurveillanceCameraSupply nameSet: True id: Cargo front + - uid: 12009 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 63.5,-14.5 + parent: 12 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraSupply + nameSet: True + id: Cargo dock - uid: 12642 components: - type: Transform @@ -174934,6 +175645,12 @@ entities: - type: Transform pos: 52.5,46.5 parent: 12 + - uid: 10726 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 0.5,52.5 + parent: 12 - uid: 10888 components: - type: Transform @@ -177196,6 +177913,12 @@ entities: - type: Transform pos: -35.5,-20.5 parent: 12 + - uid: 2271 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,27.5 + parent: 12 - uid: 2373 components: - type: Transform @@ -177230,16 +177953,58 @@ entities: rot: 3.141592653589793 rad pos: 21.5,28.5 parent: 12 + - uid: 4151 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 54.5,28.5 + parent: 12 - uid: 4154 components: - type: Transform pos: 13.5,-35.5 parent: 12 + - uid: 4260 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 54.5,29.5 + parent: 12 + - uid: 4481 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 54.5,27.5 + parent: 12 + - uid: 4570 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,29.5 + parent: 12 - uid: 4891 components: - type: Transform pos: 17.5,49.5 parent: 12 + - uid: 5042 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,30.5 + parent: 12 + - uid: 5709 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,28.5 + parent: 12 + - uid: 5911 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 54.5,30.5 + parent: 12 - uid: 6189 components: - type: Transform @@ -177325,54 +178090,6 @@ entities: rot: 1.5707963267948966 rad pos: 43.5,29.5 parent: 12 - - uid: 12400 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 54.5,27.5 - parent: 12 - - uid: 12401 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 54.5,28.5 - parent: 12 - - uid: 12402 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 54.5,29.5 - parent: 12 - - uid: 12403 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 54.5,30.5 - parent: 12 - - uid: 12404 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 55.5,27.5 - parent: 12 - - uid: 12405 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 55.5,28.5 - parent: 12 - - uid: 12406 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 55.5,29.5 - parent: 12 - - uid: 12407 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 55.5,30.5 - parent: 12 - uid: 12657 components: - type: Transform @@ -178836,7 +179553,7 @@ entities: - uid: 31148 components: - type: Transform - pos: -29.544153,-55.516808 + pos: -29.534164,-55.470924 parent: 12 - proto: TrashBananaPeel entities: @@ -179632,6 +180349,11 @@ entities: - type: Transform pos: 35.5,22.5 parent: 12 + - uid: 13146 + components: + - type: Transform + pos: 47.5,1.5 + parent: 12 - uid: 14992 components: - type: Transform @@ -179652,6 +180374,11 @@ entities: - type: Transform pos: 15.5,54.5 parent: 12 + - uid: 31561 + components: + - type: Transform + pos: 46.5,-32.5 + parent: 12 - proto: VendingMachineClothing entities: - uid: 9091 @@ -180111,11 +180838,6 @@ entities: parent: 12 - proto: VendingMachineSovietSoda entities: - - uid: 4481 - components: - - type: Transform - pos: 47.5,1.5 - parent: 12 - uid: 14953 components: - type: Transform @@ -180312,8 +181034,7 @@ entities: - uid: 27 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -3.5,46.5 + pos: 52.5,67.5 parent: 12 - uid: 29 components: @@ -180636,24 +181357,12 @@ entities: rot: 1.5707963267948966 rad pos: 3.5,-9.5 parent: 12 - - uid: 159 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 4.5,-8.5 - parent: 12 - uid: 160 components: - type: Transform rot: 1.5707963267948966 rad pos: 4.5,-9.5 parent: 12 - - uid: 161 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 4.5,-7.5 - parent: 12 - uid: 163 components: - type: Transform @@ -181019,24 +181728,12 @@ entities: rot: -1.5707963267948966 rad pos: -4.5,6.5 parent: 12 - - uid: 571 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,6.5 - parent: 12 - uid: 572 components: - type: Transform rot: -1.5707963267948966 rad pos: -3.5,6.5 parent: 12 - - uid: 573 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,6.5 - parent: 12 - uid: 575 components: - type: Transform @@ -181200,11 +181897,6 @@ entities: - type: Transform pos: 39.5,-10.5 parent: 12 - - uid: 703 - components: - - type: Transform - pos: -15.5,-69.5 - parent: 12 - uid: 709 components: - type: Transform @@ -181250,11 +181942,6 @@ entities: - type: Transform pos: 39.5,-8.5 parent: 12 - - uid: 726 - components: - - type: Transform - pos: -56.5,-20.5 - parent: 12 - uid: 736 components: - type: Transform @@ -181503,12 +182190,6 @@ entities: rot: 1.5707963267948966 rad pos: -47.5,50.5 parent: 12 - - uid: 1166 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -46.5,-17.5 - parent: 12 - uid: 1167 components: - type: Transform @@ -181604,23 +182285,11 @@ entities: rot: -1.5707963267948966 rad pos: 3.5,-0.5 parent: 12 - - uid: 2154 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,6.5 - parent: 12 - uid: 2169 components: - type: Transform pos: 26.5,1.5 parent: 12 - - uid: 2171 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -5.5,4.5 - parent: 12 - uid: 2173 components: - type: Transform @@ -181653,36 +182322,18 @@ entities: - type: Transform pos: 26.5,-9.5 parent: 12 - - uid: 2271 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -5.5,-0.5 - parent: 12 - uid: 2273 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,-1.5 parent: 12 - - uid: 2274 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -5.5,2.5 - parent: 12 - uid: 2275 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,-2.5 parent: 12 - - uid: 2276 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -5.5,3.5 - parent: 12 - uid: 2328 components: - type: Transform @@ -182634,11 +183285,6 @@ entities: rot: 1.5707963267948966 rad pos: 60.5,-47.5 parent: 12 - - uid: 5911 - components: - - type: Transform - pos: -6.5,-13.5 - parent: 12 - uid: 5916 components: - type: Transform @@ -182738,11 +183384,6 @@ entities: rot: 1.5707963267948966 rad pos: -61.5,-16.5 parent: 12 - - uid: 6288 - components: - - type: Transform - pos: -17.5,-67.5 - parent: 12 - uid: 6327 components: - type: Transform @@ -182892,12 +183533,6 @@ entities: rot: -1.5707963267948966 rad pos: 26.5,16.5 parent: 12 - - uid: 7338 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 27.5,18.5 - parent: 12 - uid: 7363 components: - type: Transform @@ -183137,11 +183772,6 @@ entities: rot: -1.5707963267948966 rad pos: 61.5,-27.5 parent: 12 - - uid: 7584 - components: - - type: Transform - pos: -9.5,-3.5 - parent: 12 - uid: 7587 components: - type: Transform @@ -183243,11 +183873,6 @@ entities: rot: -1.5707963267948966 rad pos: 60.5,-39.5 parent: 12 - - uid: 7620 - components: - - type: Transform - pos: -7.5,-1.5 - parent: 12 - uid: 7667 components: - type: Transform @@ -183350,11 +183975,6 @@ entities: rot: -1.5707963267948966 rad pos: 82.5,-36.5 parent: 12 - - uid: 7716 - components: - - type: Transform - pos: -7.5,-0.5 - parent: 12 - uid: 7728 components: - type: Transform @@ -183439,22 +184059,11 @@ entities: - type: Transform pos: -9.5,-8.5 parent: 12 - - uid: 8442 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,2.5 - parent: 12 - uid: 8450 components: - type: Transform pos: -7.5,-13.5 parent: 12 - - uid: 8454 - components: - - type: Transform - pos: -7.5,-12.5 - parent: 12 - uid: 8455 components: - type: Transform @@ -183620,11 +184229,6 @@ entities: rot: 3.141592653589793 rad pos: 52.5,-44.5 parent: 12 - - uid: 9120 - components: - - type: Transform - pos: -9.5,-9.5 - parent: 12 - uid: 9121 components: - type: Transform @@ -183743,7 +184347,7 @@ entities: - uid: 9506 components: - type: Transform - pos: -51.5,-11.5 + pos: -47.5,0.5 parent: 12 - uid: 9508 components: @@ -183778,12 +184382,6 @@ entities: rot: -1.5707963267948966 rad pos: 17.5,13.5 parent: 12 - - uid: 9640 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 17.5,23.5 - parent: 12 - uid: 9642 components: - type: Transform @@ -183824,12 +184422,6 @@ entities: rot: 3.141592653589793 rad pos: 47.5,-6.5 parent: 12 - - uid: 9766 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,-1.5 - parent: 12 - uid: 9767 components: - type: Transform @@ -183865,8 +184457,7 @@ entities: - uid: 10040 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,4.5 + pos: -12.5,-70.5 parent: 12 - uid: 10041 components: @@ -183874,11 +184465,6 @@ entities: rot: -1.5707963267948966 rad pos: 4.5,5.5 parent: 12 - - uid: 10042 - components: - - type: Transform - pos: -6.5,-0.5 - parent: 12 - uid: 10119 components: - type: Transform @@ -184346,18 +184932,6 @@ entities: rot: 1.5707963267948966 rad pos: -12.5,26.5 parent: 12 - - uid: 10724 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -13.5,26.5 - parent: 12 - - uid: 10726 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -13.5,24.5 - parent: 12 - uid: 10729 components: - type: Transform @@ -184399,24 +184973,6 @@ entities: rot: 1.5707963267948966 rad pos: -9.5,22.5 parent: 12 - - uid: 10736 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -14.5,26.5 - parent: 12 - - uid: 10737 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -14.5,25.5 - parent: 12 - - uid: 10738 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -14.5,24.5 - parent: 12 - uid: 10781 components: - type: Transform @@ -184484,18 +185040,6 @@ entities: - type: Transform pos: 38.5,5.5 parent: 12 - - uid: 10911 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -61.5,-14.5 - parent: 12 - - uid: 10939 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 25.5,13.5 - parent: 12 - uid: 10951 components: - type: Transform @@ -184514,18 +185058,6 @@ entities: rot: 1.5707963267948966 rad pos: 5.5,22.5 parent: 12 - - uid: 11000 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -5.5,47.5 - parent: 12 - - uid: 11001 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -3.5,47.5 - parent: 12 - uid: 11017 components: - type: Transform @@ -184734,18 +185266,6 @@ entities: rot: -1.5707963267948966 rad pos: 8.5,29.5 parent: 12 - - uid: 11220 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 9.5,29.5 - parent: 12 - - uid: 11221 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 10.5,29.5 - parent: 12 - uid: 11222 components: - type: Transform @@ -184794,12 +185314,6 @@ entities: rot: -1.5707963267948966 rad pos: 19.5,23.5 parent: 12 - - uid: 11261 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 19.5,24.5 - parent: 12 - uid: 11262 components: - type: Transform @@ -184842,12 +185356,6 @@ entities: rot: -1.5707963267948966 rad pos: 19.5,22.5 parent: 12 - - uid: 11270 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 20.5,22.5 - parent: 12 - uid: 11272 components: - type: Transform @@ -184955,11 +185463,6 @@ entities: - type: Transform pos: 50.5,7.5 parent: 12 - - uid: 11521 - components: - - type: Transform - pos: 42.5,15.5 - parent: 12 - uid: 11522 components: - type: Transform @@ -185115,11 +185618,6 @@ entities: - type: Transform pos: 20.5,38.5 parent: 12 - - uid: 11796 - components: - - type: Transform - pos: 11.5,30.5 - parent: 12 - uid: 11797 components: - type: Transform @@ -185135,11 +185633,6 @@ entities: - type: Transform pos: 11.5,33.5 parent: 12 - - uid: 11802 - components: - - type: Transform - pos: 15.5,34.5 - parent: 12 - uid: 11803 components: - type: Transform @@ -185248,11 +185741,6 @@ entities: rot: -1.5707963267948966 rad pos: 26.5,13.5 parent: 12 - - uid: 12009 - components: - - type: Transform - pos: 42.5,14.5 - parent: 12 - uid: 12011 components: - type: Transform @@ -185262,7 +185750,7 @@ entities: - uid: 12100 components: - type: Transform - pos: 43.5,13.5 + pos: -47.5,3.5 parent: 12 - uid: 12217 components: @@ -185384,6 +185872,11 @@ entities: - type: Transform pos: -35.5,-51.5 parent: 12 + - uid: 13161 + components: + - type: Transform + pos: -17.5,-69.5 + parent: 12 - uid: 13197 components: - type: Transform @@ -185446,24 +185939,6 @@ entities: rot: -1.5707963267948966 rad pos: 53.5,65.5 parent: 12 - - uid: 14179 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 53.5,66.5 - parent: 12 - - uid: 14180 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 53.5,67.5 - parent: 12 - - uid: 14182 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 51.5,67.5 - parent: 12 - uid: 14187 components: - type: Transform @@ -185942,30 +186417,12 @@ entities: rot: -1.5707963267948966 rad pos: -8.5,35.5 parent: 12 - - uid: 15549 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -14.5,29.5 - parent: 12 - - uid: 15550 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -14.5,30.5 - parent: 12 - uid: 15551 components: - type: Transform rot: -1.5707963267948966 rad pos: -14.5,31.5 parent: 12 - - uid: 15552 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -13.5,29.5 - parent: 12 - uid: 15554 components: - type: Transform @@ -186055,11 +186512,6 @@ entities: - type: Transform pos: -8.5,25.5 parent: 12 - - uid: 15703 - components: - - type: Transform - pos: -21.5,30.5 - parent: 12 - uid: 15708 components: - type: Transform @@ -186211,24 +186663,6 @@ entities: - type: Transform pos: -30.5,12.5 parent: 12 - - uid: 16797 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -60.5,-11.5 - parent: 12 - - uid: 16799 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,47.5 - parent: 12 - - uid: 16800 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -5.5,46.5 - parent: 12 - uid: 17199 components: - type: Transform @@ -186406,12 +186840,6 @@ entities: - type: Transform pos: -27.5,11.5 parent: 12 - - uid: 17541 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 51.5,66.5 - parent: 12 - uid: 17755 components: - type: Transform @@ -186661,28 +187089,12 @@ entities: - type: Transform pos: -52.5,76.5 parent: 12 - - uid: 17972 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -5.5,6.5 - parent: 12 - uid: 18558 components: - type: Transform rot: -1.5707963267948966 rad pos: 42.5,-43.5 parent: 12 - - uid: 18569 - components: - - type: Transform - pos: 59.5,65.5 - parent: 12 - - uid: 18572 - components: - - type: Transform - pos: 59.5,60.5 - parent: 12 - uid: 18654 components: - type: Transform @@ -187033,12 +187445,6 @@ entities: rot: -1.5707963267948966 rad pos: 4.5,3.5 parent: 12 - - uid: 19199 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,-0.5 - parent: 12 - uid: 19206 components: - type: Transform @@ -187592,12 +187998,6 @@ entities: rot: 1.5707963267948966 rad pos: 51.5,65.5 parent: 12 - - uid: 19847 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -60.5,-12.5 - parent: 12 - uid: 19862 components: - type: Transform @@ -187798,12 +188198,6 @@ entities: - type: Transform pos: -30.5,62.5 parent: 12 - - uid: 22182 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -8.5,-1.5 - parent: 12 - uid: 22183 components: - type: Transform @@ -187816,24 +188210,12 @@ entities: rot: -1.5707963267948966 rad pos: -8.5,-2.5 parent: 12 - - uid: 22185 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -8.5,-9.5 - parent: 12 - uid: 22186 components: - type: Transform rot: -1.5707963267948966 rad pos: -8.5,-10.5 parent: 12 - - uid: 22187 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -8.5,-11.5 - parent: 12 - uid: 22190 components: - type: Transform @@ -187880,11 +188262,6 @@ entities: - type: Transform pos: 35.5,-24.5 parent: 12 - - uid: 22290 - components: - - type: Transform - pos: 42.5,13.5 - parent: 12 - uid: 22321 components: - type: Transform @@ -188008,12 +188385,6 @@ entities: - type: Transform pos: 34.5,-39.5 parent: 12 - - uid: 24237 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 47.5,66.5 - parent: 12 - uid: 24259 components: - type: Transform @@ -188368,6 +188739,12 @@ entities: rot: 3.141592653589793 rad pos: 63.5,-27.5 parent: 12 + - uid: 26152 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -60.5,-12.5 + parent: 12 - uid: 26167 components: - type: Transform @@ -188473,12 +188850,6 @@ entities: - type: Transform pos: 56.5,3.5 parent: 12 - - uid: 26492 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 24.5,13.5 - parent: 12 - uid: 26510 components: - type: Transform @@ -188527,16 +188898,6 @@ entities: rot: -1.5707963267948966 rad pos: 9.5,-57.5 parent: 12 - - uid: 26909 - components: - - type: Transform - pos: -17.5,-68.5 - parent: 12 - - uid: 26910 - components: - - type: Transform - pos: -17.5,-69.5 - parent: 12 - uid: 26912 components: - type: Transform @@ -188549,12 +188910,6 @@ entities: rot: 3.141592653589793 rad pos: -13.5,77.5 parent: 12 - - uid: 26949 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -61.5,-15.5 - parent: 12 - uid: 26956 components: - type: Transform @@ -188579,29 +188934,16 @@ entities: rot: 1.5707963267948966 rad pos: -39.5,-18.5 parent: 12 - - uid: 27043 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -61.5,-13.5 - parent: 12 - uid: 27050 components: - type: Transform rot: 3.141592653589793 rad pos: 27.5,-13.5 parent: 12 - - uid: 27116 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -59.5,-11.5 - parent: 12 - uid: 27117 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -58.5,-11.5 + pos: -17.5,-67.5 parent: 12 - uid: 27147 components: @@ -188639,18 +188981,6 @@ entities: rot: 3.141592653589793 rad pos: 41.5,1.5 parent: 12 - - uid: 27334 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -49.5,-17.5 - parent: 12 - - uid: 27335 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -48.5,-17.5 - parent: 12 - uid: 27410 components: - type: Transform @@ -188701,31 +189031,11 @@ entities: rot: 1.5707963267948966 rad pos: -28.5,61.5 parent: 12 - - uid: 27952 - components: - - type: Transform - pos: 5.5,-9.5 - parent: 12 - uid: 27978 components: - type: Transform pos: -22.5,-68.5 parent: 12 - - uid: 27981 - components: - - type: Transform - pos: 5.5,-12.5 - parent: 12 - - uid: 27982 - components: - - type: Transform - pos: 5.5,-11.5 - parent: 12 - - uid: 27983 - components: - - type: Transform - pos: 5.5,-10.5 - parent: 12 - uid: 27985 components: - type: Transform @@ -189048,16 +189358,6 @@ entities: - type: Transform pos: -27.5,-60.5 parent: 12 - - uid: 30540 - components: - - type: Transform - pos: -15.5,-68.5 - parent: 12 - - uid: 30542 - components: - - type: Transform - pos: -15.5,-66.5 - parent: 12 - uid: 30554 components: - type: Transform @@ -189099,20 +189399,47 @@ entities: rot: 3.141592653589793 rad pos: -53.5,-49.5 parent: 12 - - uid: 31171 + - uid: 31083 components: - type: Transform - pos: -9.5,-65.5 + rot: 1.5707963267948966 rad + pos: -16.5,-71.5 parent: 12 - - uid: 31172 + - uid: 31085 components: - type: Transform - pos: -9.5,-66.5 + rot: 1.5707963267948966 rad + pos: -14.5,-72.5 parent: 12 - - uid: 31174 + - uid: 31097 components: - type: Transform - pos: -8.5,-67.5 + rot: 1.5707963267948966 rad + pos: -12.5,-72.5 + parent: 12 + - uid: 31100 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -16.5,-70.5 + parent: 12 + - uid: 31101 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -10.5,-72.5 + parent: 12 + - uid: 31102 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -11.5,-72.5 + parent: 12 + - uid: 31104 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -9.5,-69.5 parent: 12 - uid: 31187 components: @@ -189151,12 +189478,6 @@ entities: rot: 3.141592653589793 rad pos: -7.5,-69.5 parent: 12 - - uid: 31238 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -8.5,-68.5 - parent: 12 - uid: 31376 components: - type: Transform @@ -189393,6 +189714,11 @@ entities: rot: -1.5707963267948966 rad pos: 49.5,7.5 parent: 12 + - uid: 10042 + components: + - type: Transform + pos: -12.5,-71.5 + parent: 12 - uid: 10279 components: - type: Transform @@ -189646,18 +189972,160 @@ entities: rot: 1.5707963267948966 rad pos: 41.5,-4.5 parent: 12 + - uid: 13148 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,-8.5 + parent: 12 + - uid: 13149 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,-7.5 + parent: 12 + - uid: 13150 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 2.5,6.5 + parent: 12 + - uid: 13151 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -2.5,6.5 + parent: 12 + - uid: 13153 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -56.5,-20.5 + parent: 12 + - uid: 13154 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -46.5,-17.5 + parent: 12 + - uid: 13155 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 0.5,6.5 + parent: 12 + - uid: 13156 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -5.5,4.5 + parent: 12 + - uid: 13157 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -5.5,-0.5 + parent: 12 + - uid: 13158 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -5.5,2.5 + parent: 12 + - uid: 13159 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -5.5,3.5 + parent: 12 + - uid: 13160 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -6.5,-13.5 + parent: 12 + - uid: 13162 + components: + - type: Transform + pos: 27.5,18.5 + parent: 12 + - uid: 13163 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -9.5,-3.5 + parent: 12 + - uid: 13164 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -7.5,-1.5 + parent: 12 - uid: 13859 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,71.5 parent: 12 + - uid: 14179 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -7.5,-0.5 + parent: 12 + - uid: 14180 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,2.5 + parent: 12 + - uid: 14182 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -7.5,-12.5 + parent: 12 - uid: 14625 components: - type: Transform rot: -1.5707963267948966 rad pos: -10.5,-31.5 parent: 12 + - uid: 15549 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -9.5,-9.5 + parent: 12 + - uid: 15550 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -51.5,-11.5 + parent: 12 + - uid: 15552 + components: + - type: Transform + pos: 17.5,23.5 + parent: 12 + - uid: 15703 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,-1.5 + parent: 12 + - uid: 16797 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,4.5 + parent: 12 + - uid: 16799 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -6.5,-0.5 + parent: 12 - uid: 17305 components: - type: Transform @@ -189668,12 +190136,43 @@ entities: - type: Transform pos: -47.5,76.5 parent: 12 + - uid: 18572 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -61.5,-14.5 + parent: 12 + - uid: 18585 + components: + - type: Transform + pos: 25.5,13.5 + parent: 12 + - uid: 19199 + components: + - type: Transform + pos: 9.5,29.5 + parent: 12 - uid: 19295 components: - type: Transform rot: 3.141592653589793 rad pos: -52.5,-51.5 parent: 12 + - uid: 19355 + components: + - type: Transform + pos: 10.5,29.5 + parent: 12 + - uid: 19357 + components: + - type: Transform + pos: 19.5,24.5 + parent: 12 + - uid: 19358 + components: + - type: Transform + pos: 20.5,22.5 + parent: 12 - uid: 19455 components: - type: Transform @@ -189685,6 +190184,16 @@ entities: rot: -1.5707963267948966 rad pos: 36.5,64.5 parent: 12 + - uid: 19847 + components: + - type: Transform + pos: 11.5,30.5 + parent: 12 + - uid: 19871 + components: + - type: Transform + pos: 15.5,34.5 + parent: 12 - uid: 22034 components: - type: Transform @@ -189701,6 +190210,16 @@ entities: - type: Transform pos: -50.5,-20.5 parent: 12 + - uid: 22185 + components: + - type: Transform + pos: 53.5,67.5 + parent: 12 + - uid: 22187 + components: + - type: Transform + pos: 51.5,67.5 + parent: 12 - uid: 22277 components: - type: Transform @@ -189755,6 +190274,12 @@ entities: - type: Transform pos: -57.5,-24.5 parent: 12 + - uid: 24237 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -60.5,-11.5 + parent: 12 - uid: 24254 components: - type: Transform @@ -189765,6 +190290,17 @@ entities: - type: Transform pos: -26.5,73.5 parent: 12 + - uid: 25555 + components: + - type: Transform + pos: 51.5,66.5 + parent: 12 + - uid: 25558 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -5.5,6.5 + parent: 12 - uid: 25596 components: - type: Transform @@ -189792,6 +190328,22 @@ entities: - type: Transform pos: -2.5,-17.5 parent: 12 + - uid: 26133 + components: + - type: Transform + pos: 59.5,65.5 + parent: 12 + - uid: 26149 + components: + - type: Transform + pos: 59.5,60.5 + parent: 12 + - uid: 26150 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,-0.5 + parent: 12 - uid: 26241 components: - type: Transform @@ -189814,6 +190366,12 @@ entities: - type: Transform pos: -5.5,-17.5 parent: 12 + - uid: 26492 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -8.5,-1.5 + parent: 12 - uid: 26530 components: - type: Transform @@ -189860,12 +190418,24 @@ entities: - type: Transform pos: 5.5,-13.5 parent: 12 + - uid: 26836 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -8.5,-9.5 + parent: 12 - uid: 26907 components: - type: Transform rot: -1.5707963267948966 rad pos: 10.5,-57.5 parent: 12 + - uid: 26909 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -8.5,-11.5 + parent: 12 - uid: 26911 components: - type: Transform @@ -189878,6 +190448,11 @@ entities: rot: 1.5707963267948966 rad pos: -61.5,-17.5 parent: 12 + - uid: 26949 + components: + - type: Transform + pos: 47.5,66.5 + parent: 12 - uid: 26978 components: - type: Transform @@ -189896,6 +190471,11 @@ entities: rot: -1.5707963267948966 rad pos: 38.5,-3.5 parent: 12 + - uid: 27043 + components: + - type: Transform + pos: 24.5,13.5 + parent: 12 - uid: 27044 components: - type: Transform @@ -189920,6 +190500,11 @@ entities: rot: -1.5707963267948966 rad pos: 45.5,-42.5 parent: 12 + - uid: 27116 + components: + - type: Transform + pos: -17.5,-68.5 + parent: 12 - uid: 27119 components: - type: Transform @@ -189943,6 +190528,12 @@ entities: rot: 3.141592653589793 rad pos: 39.5,5.5 parent: 12 + - uid: 27240 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -61.5,-15.5 + parent: 12 - uid: 27243 components: - type: Transform @@ -189967,6 +190558,18 @@ entities: rot: 3.141592653589793 rad pos: 41.5,4.5 parent: 12 + - uid: 27334 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -61.5,-13.5 + parent: 12 + - uid: 27335 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -59.5,-11.5 + parent: 12 - uid: 27336 components: - type: Transform @@ -189984,6 +190587,12 @@ entities: rot: -1.5707963267948966 rad pos: 26.5,15.5 parent: 12 + - uid: 27952 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -58.5,-11.5 + parent: 12 - uid: 27973 components: - type: Transform @@ -190001,12 +190610,36 @@ entities: rot: 3.141592653589793 rad pos: 47.5,7.5 parent: 12 + - uid: 27981 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -49.5,-17.5 + parent: 12 + - uid: 27982 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -48.5,-17.5 + parent: 12 + - uid: 27983 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 5.5,-9.5 + parent: 12 - uid: 28048 components: - type: Transform rot: 3.141592653589793 rad pos: 63.5,-4.5 parent: 12 + - uid: 28051 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 5.5,-12.5 + parent: 12 - uid: 28052 components: - type: Transform @@ -190051,7 +190684,8 @@ entities: - uid: 28069 components: - type: Transform - pos: -15.5,-70.5 + rot: 1.5707963267948966 rad + pos: 5.5,-11.5 parent: 12 - uid: 28070 components: @@ -190091,6 +190725,12 @@ entities: rot: -1.5707963267948966 rad pos: 44.5,3.5 parent: 12 + - uid: 28303 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 5.5,-10.5 + parent: 12 - uid: 28310 components: - type: Transform @@ -190300,11 +190940,6 @@ entities: - type: Transform pos: -35.5,-60.5 parent: 12 - - uid: 30545 - components: - - type: Transform - pos: -15.5,-65.5 - parent: 12 - uid: 30548 components: - type: Transform @@ -190315,21 +190950,22 @@ entities: - type: Transform pos: -39.5,-57.5 parent: 12 - - uid: 30700 + - uid: 30880 components: - type: Transform - pos: -10.5,-65.5 + pos: 6.5,-58.5 parent: 12 - - uid: 30880 + - uid: 31082 components: - type: Transform - pos: 6.5,-58.5 + rot: 1.5707963267948966 rad + pos: -16.5,-72.5 parent: 12 - - uid: 31173 + - uid: 31084 components: - type: Transform - rot: 3.141592653589793 rad - pos: -9.5,-67.5 + rot: 1.5707963267948966 rad + pos: -9.5,-72.5 parent: 12 - uid: 31183 components: @@ -190706,11 +191342,6 @@ entities: - type: Transform pos: -6.5,-24.5 parent: 12 - - uid: 563 - components: - - type: Transform - pos: -7.5,-24.5 - parent: 12 - uid: 589 components: - type: Transform @@ -192027,11 +192658,6 @@ entities: rot: -1.5707963267948966 rad pos: 34.5,-29.5 parent: 12 - - uid: 5385 - components: - - type: Transform - pos: -9.5,-24.5 - parent: 12 - uid: 5441 components: - type: Transform @@ -192751,6 +193377,12 @@ entities: - type: Transform pos: 41.5,-40.5 parent: 12 + - uid: 9120 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -12.5,-67.5 + parent: 12 - uid: 9133 components: - type: Transform @@ -192992,12 +193624,6 @@ entities: rot: 1.5707963267948966 rad pos: -5.5,21.5 parent: 12 - - uid: 10620 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,14.5 - parent: 12 - uid: 10665 components: - type: Transform @@ -193706,11 +194332,6 @@ entities: - type: Transform pos: 3.5,30.5 parent: 12 - - uid: 11842 - components: - - type: Transform - pos: 3.5,31.5 - parent: 12 - uid: 11843 components: - type: Transform @@ -194133,6 +194754,18 @@ entities: rot: -1.5707963267948966 rad pos: 35.5,-52.5 parent: 12 + - uid: 13147 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -3.5,46.5 + parent: 12 + - uid: 13152 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -14.5,-67.5 + parent: 12 - uid: 13487 components: - type: Transform @@ -195337,6 +195970,12 @@ entities: rot: 1.5707963267948966 rad pos: -11.5,-2.5 parent: 12 + - uid: 16800 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -13.5,26.5 + parent: 12 - uid: 16872 components: - type: Transform @@ -195636,6 +196275,12 @@ entities: - type: Transform pos: -13.5,-8.5 parent: 12 + - uid: 17541 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -13.5,24.5 + parent: 12 - uid: 17542 components: - type: Transform @@ -195666,6 +196311,12 @@ entities: - type: Transform pos: -55.5,-31.5 parent: 12 + - uid: 17972 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -14.5,26.5 + parent: 12 - uid: 17973 components: - type: Transform @@ -195686,6 +196337,12 @@ entities: - type: Transform pos: -4.5,-54.5 parent: 12 + - uid: 18560 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -14.5,25.5 + parent: 12 - uid: 18567 components: - type: Transform @@ -195696,6 +196353,12 @@ entities: - type: Transform pos: -17.5,-8.5 parent: 12 + - uid: 18569 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -14.5,24.5 + parent: 12 - uid: 18570 components: - type: Transform @@ -195751,11 +196414,6 @@ entities: - type: Transform pos: -12.5,-18.5 parent: 12 - - uid: 18585 - components: - - type: Transform - pos: -11.5,-17.5 - parent: 12 - uid: 18586 components: - type: Transform @@ -195925,6 +196583,12 @@ entities: rot: -1.5707963267948966 rad pos: -41.5,43.5 parent: 12 + - uid: 19034 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -5.5,47.5 + parent: 12 - uid: 19061 components: - type: Transform @@ -196693,6 +197357,12 @@ entities: - type: Transform pos: -11.5,47.5 parent: 12 + - uid: 21479 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 42.5,14.5 + parent: 12 - uid: 21508 components: - type: Transform @@ -196883,6 +197553,12 @@ entities: - type: Transform pos: -0.5,-60.5 parent: 12 + - uid: 22290 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -14.5,29.5 + parent: 12 - uid: 22304 components: - type: Transform @@ -197035,8 +197711,8 @@ entities: - uid: 23681 components: - type: Transform - rot: 3.141592653589793 rad - pos: -5.5,-21.5 + rot: 1.5707963267948966 rad + pos: -14.5,30.5 parent: 12 - uid: 23682 components: @@ -197052,7 +197728,8 @@ entities: - uid: 23779 components: - type: Transform - pos: -1.5,12.5 + rot: 1.5707963267948966 rad + pos: -13.5,29.5 parent: 12 - uid: 23797 components: @@ -197088,7 +197765,8 @@ entities: - uid: 23897 components: - type: Transform - pos: -1.5,13.5 + rot: 1.5707963267948966 rad + pos: -21.5,30.5 parent: 12 - uid: 23946 components: @@ -197201,6 +197879,12 @@ entities: rot: -1.5707963267948966 rad pos: 32.5,-47.5 parent: 12 + - uid: 24419 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -4.5,47.5 + parent: 12 - uid: 24428 components: - type: Transform @@ -197354,6 +198038,12 @@ entities: - type: Transform pos: -4.5,70.5 parent: 12 + - uid: 25396 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -5.5,46.5 + parent: 12 - uid: 25402 components: - type: Transform @@ -197730,6 +198420,12 @@ entities: rot: 3.141592653589793 rad pos: 39.5,-16.5 parent: 12 + - uid: 26910 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 42.5,13.5 + parent: 12 - uid: 26926 components: - type: Transform @@ -198188,6 +198884,17 @@ entities: rot: -1.5707963267948966 rad pos: -52.5,60.5 parent: 12 + - uid: 29182 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -11.5,-67.5 + parent: 12 + - uid: 29185 + components: + - type: Transform + pos: -9.5,-66.5 + parent: 12 - uid: 29208 components: - type: Transform @@ -198199,6 +198906,11 @@ entities: - type: Transform pos: -52.5,63.5 parent: 12 + - uid: 29307 + components: + - type: Transform + pos: -9.5,-65.5 + parent: 12 - uid: 29308 components: - type: Transform @@ -198211,6 +198923,17 @@ entities: rot: -1.5707963267948966 rad pos: -52.5,56.5 parent: 12 + - uid: 29323 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -14.5,-66.5 + parent: 12 + - uid: 29340 + components: + - type: Transform + pos: -8.5,-67.5 + parent: 12 - uid: 29351 components: - type: Transform @@ -198555,6 +199278,12 @@ entities: rot: -1.5707963267948966 rad pos: -19.5,34.5 parent: 12 + - uid: 11936 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -10.5,-67.5 + parent: 12 - uid: 12018 components: - type: Transform @@ -198763,6 +199492,12 @@ entities: rot: -1.5707963267948966 rad pos: -5.5,32.5 parent: 12 + - uid: 19051 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -3.5,47.5 + parent: 12 - uid: 19068 components: - type: Transform @@ -198880,6 +199615,12 @@ entities: rot: -1.5707963267948966 rad pos: 9.5,63.5 parent: 12 + - uid: 19844 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 42.5,15.5 + parent: 12 - uid: 20776 components: - type: Transform @@ -198891,6 +199632,12 @@ entities: rot: -1.5707963267948966 rad pos: 10.5,64.5 parent: 12 + - uid: 21922 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 43.5,13.5 + parent: 12 - uid: 22145 components: - type: Transform @@ -199520,6 +200267,11 @@ entities: rot: 3.141592653589793 rad pos: 51.5,9.5 parent: 12 + - uid: 28933 + components: + - type: Transform + pos: -13.5,-67.5 + parent: 12 - uid: 28942 components: - type: Transform @@ -199562,6 +200314,16 @@ entities: - type: Transform pos: -52.5,57.5 parent: 12 + - uid: 29183 + components: + - type: Transform + pos: -9.5,-67.5 + parent: 12 + - uid: 29184 + components: + - type: Transform + pos: -10.5,-65.5 + parent: 12 - uid: 29190 components: - type: Transform @@ -199572,6 +200334,11 @@ entities: - type: Transform pos: -52.5,59.5 parent: 12 + - uid: 29339 + components: + - type: Transform + pos: -8.5,-68.5 + parent: 12 - uid: 29344 components: - type: Transform @@ -199650,6 +200417,16 @@ entities: rot: 1.5707963267948966 rad pos: -52.5,54.5 parent: 12 + - uid: 30017 + components: + - type: Transform + pos: -7.5,-24.5 + parent: 12 + - uid: 30018 + components: + - type: Transform + pos: -9.5,-24.5 + parent: 12 - uid: 30200 components: - type: Transform @@ -199661,6 +200438,32 @@ entities: - type: Transform pos: 29.5,20.5 parent: 12 + - uid: 30540 + components: + - type: Transform + pos: -0.5,14.5 + parent: 12 + - uid: 30542 + components: + - type: Transform + pos: 3.5,31.5 + parent: 12 + - uid: 30543 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -11.5,-17.5 + parent: 12 + - uid: 30545 + components: + - type: Transform + pos: -5.5,-21.5 + parent: 12 + - uid: 30700 + components: + - type: Transform + pos: -1.5,12.5 + parent: 12 - uid: 30781 components: - type: Transform @@ -199671,6 +200474,11 @@ entities: - type: Transform pos: -27.5,-58.5 parent: 12 + - uid: 30970 + components: + - type: Transform + pos: -1.5,13.5 + parent: 12 - uid: 31044 components: - type: Transform @@ -199681,6 +200489,12 @@ entities: - type: Transform pos: -35.5,-57.5 parent: 12 + - uid: 31096 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -15.5,-66.5 + parent: 12 - uid: 31175 components: - type: Transform @@ -200862,6 +201676,16 @@ entities: rot: 3.141592653589793 rad pos: -34.5,-57.5 parent: 12 + - uid: 30976 + components: + - type: Transform + pos: 48.5,-12.5 + parent: 12 + - uid: 30977 + components: + - type: Transform + pos: 47.5,-12.5 + parent: 12 - proto: WindoorBarKitchenLocked entities: - uid: 11203 @@ -200886,16 +201710,6 @@ entities: parent: 12 - proto: WindoorSecure entities: - - uid: 12234 - components: - - type: Transform - pos: 48.5,-12.5 - parent: 12 - - uid: 12237 - components: - - type: Transform - pos: 47.5,-12.5 - parent: 12 - uid: 14181 components: - type: Transform @@ -202348,6 +203162,34 @@ entities: rot: 1.5707963267948966 rad pos: 31.5,22.5 parent: 12 + - uid: 30971 + components: + - type: Transform + pos: 49.5,-12.5 + parent: 12 + - uid: 30972 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 49.5,-12.5 + parent: 12 + - uid: 30973 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 49.5,-11.5 + parent: 12 + - uid: 30974 + components: + - type: Transform + pos: 46.5,-12.5 + parent: 12 + - uid: 30975 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 47.5,-11.5 + parent: 12 - proto: WindowFrostedDirectional entities: - uid: 4236 @@ -202719,11 +203561,6 @@ entities: rot: 3.141592653589793 rad pos: 52.5,-23.5 parent: 12 - - uid: 5411 - components: - - type: Transform - pos: 49.5,-12.5 - parent: 12 - uid: 5572 components: - type: Transform @@ -202825,11 +203662,6 @@ entities: rot: 3.141592653589793 rad pos: -1.5,-44.5 parent: 12 - - uid: 12238 - components: - - type: Transform - pos: 46.5,-12.5 - parent: 12 - uid: 12326 components: - type: Transform @@ -203213,24 +204045,12 @@ entities: rot: 3.141592653589793 rad pos: -37.5,65.5 parent: 12 - - uid: 26836 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 47.5,-11.5 - parent: 12 - uid: 28932 components: - type: Transform rot: 3.141592653589793 rad pos: -37.5,53.5 parent: 12 - - uid: 28933 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 50.5,-11.5 - parent: 12 - uid: 29220 components: - type: Transform @@ -203319,12 +204139,6 @@ entities: rot: 3.141592653589793 rad pos: -57.5,27.5 parent: 12 - - uid: 31911 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 50.5,-12.5 - parent: 12 - proto: Wirecutter entities: - uid: 8737 From 8cf279e20070b610f7c2a6425ad5f2af83692f97 Mon Sep 17 00:00:00 2001 From: Ubaser <134914314+UbaserB@users.noreply.github.com> Date: Wed, 13 Nov 2024 23:30:40 +1100 Subject: [PATCH 072/187] Window sprite tweaks (#33282) * add * yes --- .../Windows/clockwork_diagonal.rsi/meta.json | 2 +- .../Windows/clockwork_diagonal.rsi/state0.png | Bin 1663 -> 2836 bytes .../Windows/clockwork_diagonal.rsi/state1.png | Bin 1681 -> 2833 bytes .../Windows/clockwork_window.rsi/cwindow0.png | Bin 1065 -> 2164 bytes .../Windows/clockwork_window.rsi/cwindow1.png | Bin 1060 -> 2128 bytes .../Windows/clockwork_window.rsi/cwindow2.png | Bin 1065 -> 2164 bytes .../Windows/clockwork_window.rsi/cwindow3.png | Bin 1060 -> 2128 bytes .../Windows/clockwork_window.rsi/cwindow4.png | Bin 1075 -> 2112 bytes .../Windows/clockwork_window.rsi/cwindow5.png | Bin 983 -> 2060 bytes .../Windows/clockwork_window.rsi/cwindow6.png | Bin 1075 -> 2112 bytes .../Windows/clockwork_window.rsi/cwindow7.png | Bin 1005 -> 2065 bytes .../Windows/clockwork_window.rsi/full.png | Bin 735 -> 1714 bytes .../Windows/clockwork_window.rsi/meta.json | 2 +- .../Structures/Windows/mining.rsi/full.png | Bin 837 -> 1811 bytes .../Structures/Windows/mining.rsi/meta.json | 2 +- .../Windows/mining.rsi/mwindow0.png | Bin 3765 -> 2248 bytes .../Windows/mining.rsi/mwindow1.png | Bin 3697 -> 2196 bytes .../Windows/mining.rsi/mwindow2.png | Bin 3765 -> 2248 bytes .../Windows/mining.rsi/mwindow3.png | Bin 3697 -> 2196 bytes .../Windows/mining.rsi/mwindow4.png | Bin 3706 -> 2175 bytes .../Windows/mining.rsi/mwindow5.png | Bin 3640 -> 2215 bytes .../Windows/mining.rsi/mwindow6.png | Bin 3706 -> 2175 bytes .../Windows/mining.rsi/mwindow7.png | Bin 3269 -> 1813 bytes .../Windows/mining_diagonal.rsi/meta.json | 2 +- .../Windows/mining_diagonal.rsi/state0.png | Bin 3037 -> 1299 bytes .../Windows/mining_diagonal.rsi/state1.png | Bin 3076 -> 1333 bytes .../Windows/plasma_diagonal.rsi/meta.json | 2 +- .../Windows/plasma_diagonal.rsi/state0.png | Bin 15748 -> 1644 bytes .../Windows/plasma_diagonal.rsi/state1.png | Bin 15665 -> 1603 bytes .../Windows/plasma_window.rsi/full.png | Bin 1597 -> 2843 bytes .../Windows/plasma_window.rsi/meta.json | 2 +- .../Windows/plasma_window.rsi/pwindow0.png | Bin 2063 -> 3469 bytes .../Windows/plasma_window.rsi/pwindow1.png | Bin 1099 -> 2334 bytes .../Windows/plasma_window.rsi/pwindow2.png | Bin 2063 -> 3469 bytes .../Windows/plasma_window.rsi/pwindow3.png | Bin 1099 -> 2334 bytes .../Windows/plasma_window.rsi/pwindow4.png | Bin 1161 -> 2402 bytes .../Windows/plasma_window.rsi/pwindow5.png | Bin 1064 -> 2294 bytes .../Windows/plasma_window.rsi/pwindow6.png | Bin 1161 -> 2402 bytes .../Windows/plasma_window.rsi/pwindow7.png | Bin 247 -> 1240 bytes .../Windows/plastitanium_window.rsi/full.png | Bin 506 -> 1500 bytes .../Windows/plastitanium_window.rsi/meta.json | 2 +- .../plastitanium_window.rsi/ptwindow0.png | Bin 1190 -> 2316 bytes .../plastitanium_window.rsi/ptwindow1.png | Bin 1006 -> 2083 bytes .../plastitanium_window.rsi/ptwindow2.png | Bin 1190 -> 2316 bytes .../plastitanium_window.rsi/ptwindow3.png | Bin 1006 -> 2083 bytes .../plastitanium_window.rsi/ptwindow4.png | Bin 1008 -> 2076 bytes .../plastitanium_window.rsi/ptwindow5.png | Bin 986 -> 2114 bytes .../plastitanium_window.rsi/ptwindow6.png | Bin 1008 -> 2076 bytes .../plastitanium_window.rsi/ptwindow7.png | Bin 641 -> 1668 bytes .../meta.json | 2 +- .../state0.png | Bin 3238 -> 1375 bytes .../state1.png | Bin 3208 -> 1343 bytes .../reinforced_plasma_diagonal.rsi/meta.json | 2 +- .../reinforced_plasma_diagonal.rsi/state0.png | Bin 15911 -> 1797 bytes .../reinforced_plasma_diagonal.rsi/state1.png | Bin 15885 -> 1790 bytes .../reinforced_plasma_window.rsi/full.png | Bin 2495 -> 3504 bytes .../reinforced_plasma_window.rsi/meta.json | 2 +- .../rpwindow0.png | Bin 2930 -> 4096 bytes .../rpwindow1.png | Bin 1696 -> 2864 bytes .../rpwindow2.png | Bin 2930 -> 4096 bytes .../rpwindow3.png | Bin 1696 -> 2864 bytes .../rpwindow4.png | Bin 1745 -> 2888 bytes .../rpwindow5.png | Bin 1695 -> 3021 bytes .../rpwindow6.png | Bin 1745 -> 2888 bytes .../rpwindow7.png | Bin 910 -> 2262 bytes .../reinforced_uranium_diagonal.rsi/meta.json | 2 +- .../state0.png | Bin 15734 -> 1662 bytes .../state1.png | Bin 15695 -> 1620 bytes .../reinforced_uranium_window.rsi/full.png | Bin 2067 -> 3028 bytes .../reinforced_uranium_window.rsi/meta.json | 2 +- .../ruwindow0.png | Bin 2366 -> 3323 bytes .../ruwindow1.png | Bin 1169 -> 2130 bytes .../ruwindow2.png | Bin 2342 -> 3323 bytes .../ruwindow3.png | Bin 1138 -> 2130 bytes .../ruwindow4.png | Bin 1133 -> 2102 bytes .../ruwindow5.png | Bin 1088 -> 2084 bytes .../ruwindow6.png | Bin 1129 -> 2102 bytes .../ruwindow7.png | Bin 267 -> 1240 bytes .../Windows/reinforced_window.rsi/full.png | Bin 2063 -> 3041 bytes .../Windows/reinforced_window.rsi/meta.json | 2 +- .../reinforced_window.rsi/rwindow0.png | Bin 2229 -> 3349 bytes .../reinforced_window.rsi/rwindow1.png | Bin 1148 -> 2163 bytes .../reinforced_window.rsi/rwindow2.png | Bin 2229 -> 3349 bytes .../reinforced_window.rsi/rwindow3.png | Bin 1148 -> 2163 bytes .../reinforced_window.rsi/rwindow4.png | Bin 1130 -> 2172 bytes .../reinforced_window.rsi/rwindow5.png | Bin 1025 -> 2041 bytes .../reinforced_window.rsi/rwindow6.png | Bin 1130 -> 2172 bytes .../reinforced_window.rsi/rwindow7.png | Bin 272 -> 1239 bytes .../reinforced_window_diagonal.rsi/meta.json | 2 +- .../reinforced_window_diagonal.rsi/state0.png | Bin 16179 -> 1573 bytes .../reinforced_window_diagonal.rsi/state1.png | Bin 16152 -> 1550 bytes .../Windows/shuttle_window.rsi/full.png | Bin 707 -> 1779 bytes .../Windows/shuttle_window.rsi/meta.json | 2 +- .../Windows/shuttle_window.rsi/swindow0.png | Bin 1080 -> 2278 bytes .../Windows/shuttle_window.rsi/swindow1.png | Bin 881 -> 2146 bytes .../Windows/shuttle_window.rsi/swindow2.png | Bin 1080 -> 2278 bytes .../Windows/shuttle_window.rsi/swindow3.png | Bin 881 -> 2146 bytes .../Windows/shuttle_window.rsi/swindow4.png | Bin 912 -> 2166 bytes .../Windows/shuttle_window.rsi/swindow5.png | Bin 857 -> 2168 bytes .../Windows/shuttle_window.rsi/swindow6.png | Bin 912 -> 2166 bytes .../Windows/shuttle_window.rsi/swindow7.png | Bin 412 -> 1871 bytes .../shuttle_window_diagonal.rsi/meta.json | 2 +- .../shuttle_window_diagonal.rsi/state0.png | Bin 15523 -> 1475 bytes .../shuttle_window_diagonal.rsi/state1.png | Bin 15473 -> 1423 bytes .../Windows/tinted_window.rsi/full.png | Bin 9436 -> 3495 bytes .../Windows/tinted_window.rsi/meta.json | 2 +- .../Windows/tinted_window.rsi/twindow0.png | Bin 10814 -> 4035 bytes .../Windows/tinted_window.rsi/twindow1.png | Bin 8214 -> 2719 bytes .../Windows/tinted_window.rsi/twindow2.png | Bin 10815 -> 4035 bytes .../Windows/tinted_window.rsi/twindow3.png | Bin 8477 -> 2719 bytes .../Windows/tinted_window.rsi/twindow4.png | Bin 8217 -> 2692 bytes .../Windows/tinted_window.rsi/twindow5.png | Bin 6896 -> 2318 bytes .../Windows/tinted_window.rsi/twindow6.png | Bin 8464 -> 2692 bytes .../Windows/tinted_window.rsi/twindow7.png | Bin 4882 -> 1661 bytes .../Windows/uranium_window.rsi/full.png | Bin 1321 -> 2364 bytes .../Windows/uranium_window.rsi/meta.json | 2 +- .../Windows/uranium_window.rsi/uwindow0.png | Bin 1688 -> 2857 bytes .../Windows/uranium_window.rsi/uwindow1.png | Bin 1225 -> 2288 bytes .../Windows/uranium_window.rsi/uwindow2.png | Bin 1688 -> 2857 bytes .../Windows/uranium_window.rsi/uwindow3.png | Bin 1225 -> 2288 bytes .../Windows/uranium_window.rsi/uwindow4.png | Bin 1216 -> 2251 bytes .../Windows/uranium_window.rsi/uwindow5.png | Bin 795 -> 1872 bytes .../Windows/uranium_window.rsi/uwindow6.png | Bin 1229 -> 2251 bytes .../Windows/uranium_window.rsi/uwindow7.png | Bin 297 -> 1281 bytes .../uranium_window_diagonal.rsi/meta.json | 2 +- .../uranium_window_diagonal.rsi/state0.png | Bin 15629 -> 1572 bytes .../uranium_window_diagonal.rsi/state1.png | Bin 15604 -> 1539 bytes .../Structures/Windows/window.rsi/full.png | Bin 1224 -> 2279 bytes .../Structures/Windows/window.rsi/meta.json | 2 +- .../Structures/Windows/window.rsi/window0.png | Bin 1632 -> 2748 bytes .../Structures/Windows/window.rsi/window1.png | Bin 1183 -> 2217 bytes .../Structures/Windows/window.rsi/window2.png | Bin 1632 -> 2748 bytes .../Structures/Windows/window.rsi/window3.png | Bin 1183 -> 2217 bytes .../Structures/Windows/window.rsi/window4.png | Bin 1187 -> 2213 bytes .../Structures/Windows/window.rsi/window5.png | Bin 800 -> 1810 bytes .../Structures/Windows/window.rsi/window6.png | Bin 1187 -> 2213 bytes .../Structures/Windows/window.rsi/window7.png | Bin 301 -> 1240 bytes .../Windows/window_diagonal.rsi/meta.json | 2 +- .../Windows/window_diagonal.rsi/state0.png | Bin 15988 -> 1329 bytes .../Windows/window_diagonal.rsi/state1.png | Bin 15966 -> 1285 bytes 140 files changed, 21 insertions(+), 21 deletions(-) diff --git a/Resources/Textures/Structures/Windows/clockwork_diagonal.rsi/meta.json b/Resources/Textures/Structures/Windows/clockwork_diagonal.rsi/meta.json index 06b6f4a5505..9f0945a8701 100644 --- a/Resources/Textures/Structures/Windows/clockwork_diagonal.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/clockwork_diagonal.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/blob/b8fc9b367ebb26def792a68bcb25294e518698d8/icons/obj/smooth_structures/clockwork_window.dmi diagonalized by MACMAN2003", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/blob/b8fc9b367ebb26def792a68bcb25294e518698d8/icons/obj/smooth_structures/clockwork_window.dmi diagonalized by MACMAN2003, transparency tweaked by Ubaser.", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Structures/Windows/clockwork_diagonal.rsi/state0.png b/Resources/Textures/Structures/Windows/clockwork_diagonal.rsi/state0.png index 084563bfa29305fa626d2657f7528e8fcaeb4960..84e8da95e5b7ded79994f18de59800ffb2e25279 100644 GIT binary patch literal 2836 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 BomKz< delta 1633 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 diff --git a/Resources/Textures/Structures/Windows/clockwork_diagonal.rsi/state1.png b/Resources/Textures/Structures/Windows/clockwork_diagonal.rsi/state1.png index 0e48f9c92271fae2dfc906c5f3ba31f888151a6c..0f139a44c4cbaee8fbc948ea70d5fe9b46d5a9b8 100644 GIT binary patch literal 2833 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 delta 1651 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 diff --git a/Resources/Textures/Structures/Windows/clockwork_window.rsi/cwindow0.png b/Resources/Textures/Structures/Windows/clockwork_window.rsi/cwindow0.png index 48ba09f65778c2c6acb1c24fcb8cfa9236fe820f..f29440596bc7a333a33239cf0f2d49e94b9415c1 100644 GIT binary patch literal 2164 zcmZ`)3se(V8otBJ$Wfw}h_$SQlqxDPAvHi^5`zR3N-zfl2DCgAFc6ZE3??AOfKa8D zU8rb9kf4<ECb)`=pa?E3ijM-yV?96+s|c;2R10hocM>R~$KG@9+<X7|zW?#vf6k<H ze0D51U26&eSnj!#<%_ON-Ncxn&oW``0J=bO-yPdQ)m_UG^k637c}B3=U=zB>pi?(G zcOOTeOQkyl<R~CdH=!ljyZZq!6bZRJgva)#hD%}`Liv&~frBzes%O!ZRCF67Ktl1# z7?D^`RniH11Qp%u%rF73hak~(0*}qXyGdjMypsdbfk<GO;_-Nzj2}VuWqHig(G#7p zA3>y47*;404vNnmB(g}@kwT%sL=sFQ*`o-1dAt}2RoaW?pUye?(+^7^50?q0h)^QN z>->g>N#YPXfuIYtFy`{)hcCpD#>qtbDEx3(AQHp~#E2YrbZ~?}#6yG;Z!;9j=jA|! zfpu?C8u5cPPbm_<1y#yjiRLq3ADU>mKCT?$!;1hgiAZ#@Cz9+*6nLRNG<_OBoQen$ zkw7opLOpr~T}8;dRvlg^fk>!RmMRJrN74yOd%hqdG){yN7~u+`m@iQ{)8IMOyX-mZ zyH08F2jbIoRZ|0e1#*cfPNzGALZ<1Zc*pqm0_F(34-pm{-zRYPOAra#PcmV+rx+2) zq%yR(^zlgZ;r<%&zOT2j{lr3q@u!3L%!^oy?uP0rLlhEOG*^EQZ$<n|$h@05K^OJs zT=VP2N4uY4N`n`^B!+2~dqxicMn^nZu3RPbEccq^KGD22cx7EZl&&tK7ns|aWis(= zI2%HYO>F8?)-aD|rOmFaCXyOC>8~<FRB6csll5iiyk=Z%Y&lh&B=hvMmmhjHcv=mg z-j}HGnUNLk`X;Q^=hw;euUGv+q1)IM4fI{_I807>om_IrjhB;VOt1`2TJ^dN7Z&Y8 zA!|R%ZOW{DkeQ!A${yG5gj6-rNB@_IQAeh4QeQu}3wsAH{rBxj5A#X34|(WJYBN;u zI5uxvR`KNLLG2Tq*}l>~Y4&zQ_t#PEYwiAtetR$PzVWU2TI5#aHmlxxa@wjPtBq!$ z%k5vSr_@Rcd+V|I2XrPf>{@9V{EF|}as=Gxv?jjFwfOeUg$;#An4~D@e1cg)5O(>% zjTT?x6OFbi`^$~kWkYU*zwGN>+ZDC{t|kcMy5)gwf2NCyqG7gT;WUn&*^lKl6G$xB zXW@VPpg}8zUMY_NOjrL0pQU<3nX1gCV05@L8j}M+QCuw9l4PiAy=r>hIMo|8R+tf> zrYMIDFYT4@wjP$(Pn-|jtUc)ey!gU_-=+`T>iX^2E71RZ1SiK?7!G>5?xu8uUQUi_ zTT~qx*mf^9a!TwBseq~<j~S(0oUqld1?xKRtf+vbw-lR=qQO(>40FvV8v?%%uKPJ7 z^72U*DCn$Ywp&pDyK*Q{SaYQroWe8X?G8P<9a=;1eaM2g9BwqlKD%}Ayqme@tub=R zr2>X!b^FqBEN$DbGdzFw^%;|+hZ}`(5c}TWXA=j_a;Ka2JignV1l=A@>CUS#3VizI zC*1?V)7ZXXjP-bLt;I6KRCPm>ALV?$*|?S6luzZ8ls#v}&pIZEM|Z84adRpIdd|j= zJjrg(2;pWupRKMQS3l~E{KXo)xf<2}()#&Sd~L_siy8aB&{+Mx*NP6NtDOrbcCJn) ztCGXSQ^D%5O3VjLcC5b2=n?z10nqY-YWdaEn^6tCgfch$=rdIhKIlj_R2P$p59>Gd zK4D^%h-n(eYPbCkm`<9>$u~1j{b!OAMnQo=U%!f@Ir!4)zWTs)u4~AOqR+al3pOpm zaMt|+JRDAVten*V@E>i)uDH5?xLj)TJa%DS<2U~dZO#Yx)-fA4+_@kJoUg5aDCL#^ zv>IxUdc5!Fz0hEajQjEEu$)_09=(~~h#RRm`DwS|%YZ_2d`An$Hp3X_UFulQ$6WdG zMr_`6*G-}2wZy^$d+zjzc@;}aa9zs@n~R@x;D&2Y7ay0d2Q0rnT<UEDknN9WHAN2x zt_RH@H(#{o8>mWKhVZAx$VCccV4Jl%wF+uqmQtF=9vK3IE=`^B<*T|r3cTvPN$sLy z9E#=QD*jgXqD1=Lie~8Ll=j?cL$d#yHD8#f9QS)z;?LFKoTs;X&lno~<d|h)SCpHS z?`4pp#Hu=HHZCi^Szl&RdzanzsKJJ131(7zX~`#B2cRAT!^prQXB<w|tO%WPZ*zi( z)kPk-G5gv}Q^rDaVNG2?C9n8liFWvfoeO)=xls}q8&=;xiyb?W7XV}lg}Oh!r@IfU JYI{h^{{d-6RI>m8 delta 1030 zcmV+h1o`{)5UB`|F@FSSK}|sb0I`n?{9y$E000SaNLh0L01m?d01m?e$8V@)000BN zNkl<ZcwX(BKWx)L6o+3K>Wutro6<sINI{|k(WyuX7+7FoWK1PgRwh`OSzuzNLLy^F zCKd*YD#Qc|AW<45C^V3^0?HO=Xt<w!7c9$hP0qP@PWnlf9e+Dfbf53u`R<(uh?&CB zVDtRx27UZWl;7{4Yc~CD{WsB{M$SLkhWD#=tun9+xPFP6`2$3YZ-|Z`AsP`9zHbs$ z*8J-ir~SR6_ER1R@VmPUdSzf2aBh;sy(TJNcIZpZ_3k`m%wBOy-WPUY?twci4?ALy z+_Qmdk2{aTpMN?rCeNCKT>wC}$DJ>KsM4`fhb9jbm7cmqdAX}tApmV2)gIf+cdpm| zMUzO>1ax5+u)XaEyxTVlC2S@O57-54Y{~ta=m!P2<_g9N57-54xw%$Xrz8xIi>PP_ zD`Egpg*Gk08UcVqf>i>5X$e*c2tM8dlM<|}0SZ$RtbY-p3L3<O1S<q!R0lXDXpaWx zZ#s|V;eR0pKgB1na@ym0UD#?sIPh^{Z4fktwt#L$XH%q713HnQ0v|Wp0ye6v-ae}} zA(a}CWeNH*U~IzMXH`NvF`xqpnEu-9)a55WQV{@>NC;1KszeAUsR;ma5>R+de`BwX zZ6H+vAb(1ND)7unhc28UZ|j|IFlqo3l7NX$<o<%mkDhuIP9j0^cDYJN^NyDct^JZG z8POhz-ML21aKbVOqCG$pz%_gqg-0{M@uO$F`AO|RpPI;d$<214s|!ba+<6FjQ68kq zW~29q!^r+9RPNsvy50nyzxMZqaiT**MC;=2FMo@$fMiHdG=aDoq2P1Cy@!<|+Wmm| zM+8C9HG1clR(J(;wFyM^4(JBa9eP2r*PaBUfQ0+=l_GNf$o*pt0Aj%KKKTV^j08cX zyOH)@D!Z+909X@XLohTV06@a0>c4dWIPNO}AiVGi%iy>%Dgda!h;DGFHGn2CE&xRJ z4u4#*2(XD=0djAg;NvqVyEQ=W`xZ6<w#*5#j>G^aRIbj{F+yxTBt=cBtFBXBQ=c=x zS{#G}V$^d&xZqKeI>Fi)U`m43K`@B~U91og7Z775gr?j(!Ri{Ih?Ag8CIo;;2{QSj zLuLekwAy_Tb^%D7sHyWLq%DD6z({Cv6n~jydDxaTC9n%Xo&ZziYTZE6H^$PEU_}fV zJ?JM(v7Mbt{@Pp`608uQ9)*!K`TWE6vd4Y%+8i>)C@|7xSUX@E_R(O}%hRY4E8qO< zXcj?&11J10^Dj?Fy*>|+G(p|~uhqq&x7?oSFQUblaT1{(EdT%j07*qoM6N<$g09TU A1poj5 diff --git a/Resources/Textures/Structures/Windows/clockwork_window.rsi/cwindow1.png b/Resources/Textures/Structures/Windows/clockwork_window.rsi/cwindow1.png index 025376834dc1867b2e6724d89982523f3444e8f0..e78030522325c579b865ab25c7d9261fc37bc19e 100644 GIT binary patch literal 2128 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 S<&!Oc^Qg5kVO1eXS^oz>fHj=} delta 1025 zcmV+c1pfQb5Tpo@F@FSSK}|sb0I`n?{9y$E000SaNLh0L01m?d01m?e$8V@)000BI zNkl<ZcwX(By>HV%7>D05)I|a*e5I)h1cro4R3Mm&gn)qs7DmQYLS<!wg_#8=Rw^Vi z@)xi$0IC>40VJS7f}#cj6(2<)B^et0v+siCI;qK>?>)D9B!BC!j;rV%-@Rwwd&v+p z#XTdPQ%BqM_9Ib#r+==~@sBS*h*sL8{>dJ^T5Kw{fnC6*v((A&B6|Fs=+J(mF;~K; zWun@W|M{8Yeko~u6BQTy-;MifZD1F0vPAB^CMutE=tHCB-Fe8EIqy`w3)W%wc56md z2V#pT*+93)oqtE;k4#R8v*utI0MPAm=c}*lba33E(mtZfgH~C5oG4ZZz?et3$MN)K z%Nzghkcc$|RACpey6OkKYnO`^93~qN*adw3Da!hyS6-bh8f!dY7k~!i&Z90R<o3Ez z(GXU|0Fav~c%^9x)(8L`608ycOiSPof=lj8KnRl(tbgbMoD!@V0$dWTiUAxFl-~yD zt~mEZbs$vV=2Wq67BJ0FfG7th>3KS7wDf>9OHdXdBX?RQXz2lImY^*Lq*a2}81O$5 zu;yoK-LD^71b{da!VQ**5KgoS0R1GO@mT(rcOG>c&?*2#NstYmKJ3uxW8@vk>ezs? z0NKzWVSfo&_e1V4nEVK)xH!?$1L8=Kym(Wm19`_whBm&7lZ+_84PL)Uop8c32$CHD zLja%QS~MQR0QI{MdGnLXUp`eB^^%*t$U4n6(H?gmLY`DdsJ7frw}7bifME2$HCHR= zvhG+DgAF-A2$(F`Awc^q0D|LQZgkkTm8j%;$$xJ5&to`XV+1#e^Z-e)C)~VKD`VVe z+;2n>bf-q|{QLrM3`nF0NTOy3OoNyXy`Z?!o&=+S1jGU4{E_>|9smrB+zxR8Gl>fT zNOvRcJzs5g_W@u}07P(OL;!$<clCe!08rml0zi1<6J`f)j0ylUFk<`LdV2s(U|ax* zntvU*U=d&wLjj^R&W2hKNHaqLqBM>zYl5tAVgL&&7p9wdL+m~z1>Yhia_S5(wWWTy zI0y&CsOJQ);hB#1og&u8fJg}mY?rY*2*#11iWLI-1;nH!Slt68{UoT83IQM~38@hP zq9mxoE&z#>N6*9`G0-i6UBFmqaTJ+kQF`r(P6_M+kSD+rx!gAp_ZMTjBv=sx#&`S4 zQXD6y;{R+;hXgAG$VXu$P2PWQdD-Jl^Rqc5O3`4X%dmIAH0%N}{?YZ_F5m45!I<Em vNe*@aNRi8iuly!jaC^hAKWk@)WFYzrv|5&@R@>Zw00000NkvXXu0mjfm%+-M diff --git a/Resources/Textures/Structures/Windows/clockwork_window.rsi/cwindow2.png b/Resources/Textures/Structures/Windows/clockwork_window.rsi/cwindow2.png index 48ba09f65778c2c6acb1c24fcb8cfa9236fe820f..f29440596bc7a333a33239cf0f2d49e94b9415c1 100644 GIT binary patch literal 2164 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 JYI{h^{{d-6RI>m8 delta 1030 zcmV+h1o`{)5UB`|F@FSSK}|sb0I`n?{9y$E000SaNLh0L01m?d01m?e$8V@)000BN zNkl<ZcwX(BKWx)L6o+3K>Wutro6<sINI{|k(WyuX7+7FoWK1PgRwh`OSzuzNLLy^F zCKd*YD#Qc|AW<45C^V3^0?HO=Xt<w!7c9$hP0qP@PWnlf9e+Dfbf53u`R<(uh?&CB zVDtRx27UZWl;7{4Yc~CD{WsB{M$SLkhWD#=tun9+xPFP6`2$3YZ-|Z`AsP`9zHbs$ z*8J-ir~SR6_ER1R@VmPUdSzf2aBh;sy(TJNcIZpZ_3k`m%wBOy-WPUY?twci4?ALy z+_Qmdk2{aTpMN?rCeNCKT>wC}$DJ>KsM4`fhb9jbm7cmqdAX}tApmV2)gIf+cdpm| zMUzO>1ax5+u)XaEyxTVlC2S@O57-54Y{~ta=m!P2<_g9N57-54xw%$Xrz8xIi>PP_ zD`Egpg*Gk08UcVqf>i>5X$e*c2tM8dlM<|}0SZ$RtbY-p3L3<O1S<q!R0lXDXpaWx zZ#s|V;eR0pKgB1na@ym0UD#?sIPh^{Z4fktwt#L$XH%q713HnQ0v|Wp0ye6v-ae}} zA(a}CWeNH*U~IzMXH`NvF`xqpnEu-9)a55WQV{@>NC;1KszeAUsR;ma5>R+de`BwX zZ6H+vAb(1ND)7unhc28UZ|j|IFlqo3l7NX$<o<%mkDhuIP9j0^cDYJN^NyDct^JZG z8POhz-ML21aKbVOqCG$pz%_gqg-0{M@uO$F`AO|RpPI;d$<214s|!ba+<6FjQ68kq zW~29q!^r+9RPNsvy50nyzxMZqaiT**MC;=2FMo@$fMiHdG=aDoq2P1Cy@!<|+Wmm| zM+8C9HG1clR(J(;wFyM^4(JBa9eP2r*PaBUfQ0+=l_GNf$o*pt0Aj%KKKTV^j08cX zyOH)@D!Z+909X@XLohTV06@a0>c4dWIPNO}AiVGi%iy>%Dgda!h;DGFHGn2CE&xRJ z4u4#*2(XD=0djAg;NvqVyEQ=W`xZ6<w#*5#j>G^aRIbj{F+yxTBt=cBtFBXBQ=c=x zS{#G}V$^d&xZqKeI>Fi)U`m43K`@B~U91og7Z775gr?j(!Ri{Ih?Ag8CIo;;2{QSj zLuLekwAy_Tb^%D7sHyWLq%DD6z({Cv6n~jydDxaTC9n%Xo&ZziYTZE6H^$PEU_}fV zJ?JM(v7Mbt{@Pp`608uQ9)*!K`TWE6vd4Y%+8i>)C@|7xSUX@E_R(O}%hRY4E8qO< zXcj?&11J10^Dj?Fy*>|+G(p|~uhqq&x7?oSFQUblaT1{(EdT%j07*qoM6N<$g09TU A1poj5 diff --git a/Resources/Textures/Structures/Windows/clockwork_window.rsi/cwindow3.png b/Resources/Textures/Structures/Windows/clockwork_window.rsi/cwindow3.png index 025376834dc1867b2e6724d89982523f3444e8f0..e78030522325c579b865ab25c7d9261fc37bc19e 100644 GIT binary patch literal 2128 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 S<&!Oc^Qg5kVO1eXS^oz>fHj=} delta 1025 zcmV+c1pfQb5Tpo@F@FSSK}|sb0I`n?{9y$E000SaNLh0L01m?d01m?e$8V@)000BI zNkl<ZcwX(By>HV%7>D05)I|a*e5I)h1cro4R3Mm&gn)qs7DmQYLS<!wg_#8=Rw^Vi z@)xi$0IC>40VJS7f}#cj6(2<)B^et0v+siCI;qK>?>)D9B!BC!j;rV%-@Rwwd&v+p z#XTdPQ%BqM_9Ib#r+==~@sBS*h*sL8{>dJ^T5Kw{fnC6*v((A&B6|Fs=+J(mF;~K; zWun@W|M{8Yeko~u6BQTy-;MifZD1F0vPAB^CMutE=tHCB-Fe8EIqy`w3)W%wc56md z2V#pT*+93)oqtE;k4#R8v*utI0MPAm=c}*lba33E(mtZfgH~C5oG4ZZz?et3$MN)K z%Nzghkcc$|RACpey6OkKYnO`^93~qN*adw3Da!hyS6-bh8f!dY7k~!i&Z90R<o3Ez z(GXU|0Fav~c%^9x)(8L`608ycOiSPof=lj8KnRl(tbgbMoD!@V0$dWTiUAxFl-~yD zt~mEZbs$vV=2Wq67BJ0FfG7th>3KS7wDf>9OHdXdBX?RQXz2lImY^*Lq*a2}81O$5 zu;yoK-LD^71b{da!VQ**5KgoS0R1GO@mT(rcOG>c&?*2#NstYmKJ3uxW8@vk>ezs? z0NKzWVSfo&_e1V4nEVK)xH!?$1L8=Kym(Wm19`_whBm&7lZ+_84PL)Uop8c32$CHD zLja%QS~MQR0QI{MdGnLXUp`eB^^%*t$U4n6(H?gmLY`DdsJ7frw}7bifME2$HCHR= zvhG+DgAF-A2$(F`Awc^q0D|LQZgkkTm8j%;$$xJ5&to`XV+1#e^Z-e)C)~VKD`VVe z+;2n>bf-q|{QLrM3`nF0NTOy3OoNyXy`Z?!o&=+S1jGU4{E_>|9smrB+zxR8Gl>fT zNOvRcJzs5g_W@u}07P(OL;!$<clCe!08rml0zi1<6J`f)j0ylUFk<`LdV2s(U|ax* zntvU*U=d&wLjj^R&W2hKNHaqLqBM>zYl5tAVgL&&7p9wdL+m~z1>Yhia_S5(wWWTy zI0y&CsOJQ);hB#1og&u8fJg}mY?rY*2*#11iWLI-1;nH!Slt68{UoT83IQM~38@hP zq9mxoE&z#>N6*9`G0-i6UBFmqaTJ+kQF`r(P6_M+kSD+rx!gAp_ZMTjBv=sx#&`S4 zQXD6y;{R+;hXgAG$VXu$P2PWQdD-Jl^Rqc5O3`4X%dmIAH0%N}{?YZ_F5m45!I<Em vNe*@aNRi8iuly!jaC^hAKWk@)WFYzrv|5&@R@>Zw00000NkvXXu0mjfm%+-M diff --git a/Resources/Textures/Structures/Windows/clockwork_window.rsi/cwindow4.png b/Resources/Textures/Structures/Windows/clockwork_window.rsi/cwindow4.png index aa4ed12cbc5dd25ec5df058aabcd5abf3f3c7e2a..228081ad5b9ea416f26648cc0b4e6fc1c1e36fe4 100644 GIT binary patch literal 2112 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 F0RS;GDEt5b delta 1041 zcmV+s1n&F55VHu7F@FSSK}|sb0I`n?{9y$E000SaNLh0L01m?d01m?e$8V@)000BX zNkl<ZcwX(BJxmlq6vrPHEHN7KgD*kR;*dn5(MlV&u+hfS@<<G}R@hkEXk{xQ;Yv#z zY%J6eW2HGY5jYb?IXxgMCKfCO=lpkP&&_7;Ja1;_&2s*d&3_JikYj#3^JaJ6Ob0QO z>*=hXJGn^<pNRVRh1aUp@L2glG=AADgjdx}-1Em}u_boMGaIOU|NgMNXBW}PVWQnT z!^+!$T>$R<(^o|KOI}SxX*s;}f4lo8U>AU9e@xu<j}@Ozj1J1H_FxwP`h*1Z`Qp1W z9Ubs!<PcHek$<0;AE$~F0=}$;-2lh)H-69sM3+dt`2%(VTU%kDzj-}Zz+toUfL*}q zx;!t7XegMR$XTmAU>C6NchQB@VL6h}J0zl_C7g%>AgZ)&3C;)r91@%o0BlQeLO|u4 zEJ$ohaIOVJ*plFkfT*HzY)EiIK=cyCAwhdSVCsf9BY%tkgn0SMKYY<eZ<jV$=Oox# zKr--g;cO7Jg|>jSqO&cGw18G5M1hYRZ2_z0rQn>^mSCg>WLbiK3>X{^&RLaUCI+-1 z0n=aI-iG{%4<iCVGZK;$olzo$6Jr8EBMGQHroVBH$}V7308mMYDtzX+N9RvbaBQDp zQ1t?nkbi)QPGo@M$&YRIDBO&Mh}ZLFI@0e2DY43Td65xgU7((X!t7@L?o_GP=W*vn zmk7Fn3vs|`3{Xh`i1t5!5iN+ufHQ!IXT{F&2S&8t#m9!bs<NmAV|{P8FfCOh2Z*LW zDtZV6l-4#`=L59A{MJ>f#sgY1x<7dto^wM)2Y-8rRz&6JMN2?31b;XESpR>}LHo-a z%?QPx1Mb`}<<aju#5W=cA`XDLMP30$V?YvBOu#UR;Sd3E+dT=YfCP*J$oV7pk2L^@ z1HF6YFEEq30DyEi(%y4LzqSqlYXTsG8!G|;B)l*GSqFe}TL}QkMNhU?f;A%5QJ^02 z(SPB}WJznCpDtEgKt#PKMh;j609Pci2>>ogU=`p3{{_f%+tT&|Sl`5e>N!F+rCyt4 zji%aU0L}b<0TrszAz5*iq*idY3)qt2bPP~Rkd;<_)(XxC!L%i0Viag3L6=Mj0BK3c zi~wM&-^XDWfW+y{Z1ekrOiN%F(3hATg?|uPtcytr>;jM{z!W(uj-%NfW2PiH5d#Je zglh(HoE>X^+nfmrP6&unYe<@W`059#^S0SGheRnVjC2{+4%mkMZSdMfsv@C^WC>yc zc9Eh*EPf6@N4JQROvK)PpjQWW0jllu07(<%4X~}Q5qit*iGBmus+8*{>AXAu015yA LNkvXXu0mjf*^Sh& diff --git a/Resources/Textures/Structures/Windows/clockwork_window.rsi/cwindow5.png b/Resources/Textures/Structures/Windows/clockwork_window.rsi/cwindow5.png index 6bf733f81ae79b1f67254fc910195ea0b55cd8ea..89c88d12e2a608fb0475a4dd93453b5a43021f58 100644 GIT binary patch literal 2060 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 delta 948 zcmV;l155mj5Z4EgF@FSSK}|sb0I`n?{9y$E000SaNLh0L01m?d01m?e$8V@)000AQ zNkl<ZcwX(ByKWOf6o!u}vH~UIo;V8E!T|{cqJsu%Xm|vt2`yE42&iaD6Td{LK@lx7 z6p$E+i()WATm{9Zh?#$9#;nZPtUQ-9i}OjV9d9Bf^X;57>wh`36=J4#bfSCp;x?_n zBdQ*f*ScMKeEdqZa3g8Rt7aDOrwgh%5_{B{4RpSGShn|163w3=n%XBj9|Cp(xbu&m z64kFKJrS)<dFTIi_g%m)0K@)_xa)5^DP1@_r>=&BT>zL75)kvv7i~H{o6!7mqQ=9t zu72#5C<MI!B!9yI$CKx276Kw9ybpiCE?{Rz#{8XIwFZumod@g!w!W$JrpShZrNvsX z&I5J<=rHa)+FHW&F_9Gm5k(FFy3?U0L?ZxjNQg=R2rYp>3963f2`M3p5x^-Snh@ZU z5LFJ~kYK$YuzWjNQO%LC{XTC?bhAKcb_J;O$oR_6p?`2P0?I7GT7d6)+BfzipwgwS z_S>vkMhW&gVD4mgE~^ALIbZ|{Sn~_D?l%l40zeT7{T<eY5Kf#40K+7p^H~1YcOLB+ za4G<pB<K!bK9|t7OOzeD2*QoE0OJ>!J_%U&Lj@>b{OEknPV6`t0YxNep1o|-scMpy z#5!NpMSn(|g}@*Qjn(b?z2#Of=5gmmNMvCULmqIN156SCvi<j;MC)QO;0z$*adSd` zV8nS6G)X}9N26>1vEW<)$V<>09VYk6+W&zmc^$I=_6Bg{bww!u9B}tRtB$y@h`)#= zh&%w+Hthcg8@!AFjVT;34PrV(0{riu1WiB!W`6<H{89VI9sq>J^g;Ct%y<_7Q0_+A zd##!F_5ol|Kn%$+hyVZyuiAh10iZor0zm(!r%*e=hQU%7$j=Tpms;aj7Z~)!$N`H0 z5Q_vh0U!nmtO8<SSAaT?En_c$^_v(lJx7?9)OEttKhvK}|Gt0;)9ldSag(G`h&BX5 zNq>ks2NaQDOY}+5w}ev60>dQOQVIdUmxR&?0IuRb54!*qPFGfo?-Ot>fnC5%-{L5Q zsOCUiN?;d&Isul*(QzC_-xzZxA&ML@dqnOTz;We#@z>^DNQgp!-YbBj$?FekRyrS> z*XFQC03AlT40{Jc!!7{vkD)Jyd~YP=b1j0r;tzHK*dw4jj=cjLVl@2t_4n-H2cqBE Wwu-~W40$*J0000<MNUMnLSTX!5v7~} diff --git a/Resources/Textures/Structures/Windows/clockwork_window.rsi/cwindow6.png b/Resources/Textures/Structures/Windows/clockwork_window.rsi/cwindow6.png index aa4ed12cbc5dd25ec5df058aabcd5abf3f3c7e2a..228081ad5b9ea416f26648cc0b4e6fc1c1e36fe4 100644 GIT binary patch literal 2112 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|_);T0(|mmy zw18|5AO?X;!IOa`XMsm#F;KxA5N2eb5`33|fjK8LB%&n3*T*V3KUXg?B|j-uuOhbq ztjngt3dqb&ElE_U$j!+swyLmI0;{kBvO&W7N(x{lCE2!05xxNm&iO^D3TAo+dIm~% zTnY*bHbp6ERzWUqQ0+jTtx`rwNr9EVetCJhUb(Seeo?x<p{1pzzJZaxk&!M?g>G?W zUP)qwZeFo6#1NP{E~&-IMVSR9nfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$ z>!;?V=BDPA6zd!68R}!xSCW~AaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`F zXfoK|;*u17BnA3L1_l<o21dF@milo20iAD?l5ACyS(1|q4mh}fz#-_EQ-UfAQV$A( zoJ>&2TID3>rQ0f1=%%EmC6?xtDA^^KXXd5kmz&$@LsX&ahKQmXYNL<EejAXlts;X` zi}Q0zLE&y^X=(!w3KT&^1VA)IVAFssh^`?ZBflgcn4XF<lRfiFQi}?TfN2YCpApnL z+$zw`Lf9Remsw&5GXPB(Nf%PwSUDDzl;;;^hk)Y&5r{aIK#hR}C{p@_Bz|z<15>{p zmyJF=C)shWbM3v(z`zph>Eakt!T5Ie?))nTGRN!JUXXQCn77n+fsIPkgb5A?3;Ygn z@l1WemDJEUk@bgsLSjNf1LMIeSDpih90Zw#Lj{HUotuJAO)Z}&F-v;gkJ)$pe=LeA z>J|Q9qdTo=<6Mhx-ygfz{IiTzdBax4^|}4q)fZ>o7ws!`Onmmdv!LduYsssMM3r?N z&(~dZd%R9P_O;(G#rLlT?r*m{k^0qZ(ZRJYtHW3xeLg3BK0Zx(@(!DT&lZ02x|iA| z&#(V^YWb5{{ngK$)^%=YF!>$3>Y8HR`*&x#HLKOWcQH3~#j!Hh);+pv@>WAMbHn@> z=bED|g<CoK1>ZAi+<%_$lJTwJ>ic=`?JITaK5)M?`!C8Ku%7*q{yf<a?!UFowNs-X zHTv)2u9?f5wJ~b$7hCajEDB9G{?s33JX3Z0<%z~Lj-{8j{h4ZBB*1>aE7D{;3*YCj zd(NF>XmAkA6>bV<P*Jd8OnByA%)I@k&>V&fI`$kln;!5my!&p&BP}q8;lO`3RfUq5 zM=t+ZKVN^2$K<?KQQG&bx6O(3J103^(f8jRw>7LS>~?w+-fos)xa}1EG@Yk`eN~v` z4!L|D2Bymn4;uZYCKxiv?Y!(TL9G8zFXIEnxjY9Y7_QeWcQRmW5Szeu=!V6`S&w8U zb?@?FaB#F1IK(|Shhw731jz;!4uSrs`EzdSYtH$6PQ*c*L#HCce<I&|_5Tqi>mAjk zSQ)wJZus}&Sih^O=reN%8J2zD9(^^*eXsrN*@l_(WwguBozY|9uo2iK)3Wj0`mles zpT!>qeolTo?>_H?`d`!DPqR$7VsqKba^g_N|KI&aO{<pH&v~fu@1%<&2gg6D?G4%G zyF+<j=Xvq3D7O_{V}F<TO3v^6U7iLBJP8#U=hpjP6Og+rZ_l6empQt_?5oE9SKnX! z-oanZtkrL^^vq2Ohx(NUm*TthY>qWF^R7PsRC=lrgM&p}`*yjii=8^h)2!H9PRp69 zCGa!Ewa*aQX&`Kp$C!BWp@Bkz63cA+oc}kN8MYU`-Op$^=UAFWIfDRmvAM#P*K&Kg zzg+g)D#^mUXv^uX+%Fz6Fh1JI&%pl2n~Nc#W&55)={Z}B<0ktji(g3ZIXqo!@g#vY zrHrvDS8hA*&%3P8#K08WsK9nWlw%P?j@j3+%D?Ovy3Pc3#(&a1P$8FaD`?R(!Cy9w z^Uvq=?mPCd?|)na>#KCJ<;PoFizD`{_ujv$m%!b$nIT~ITL+Ke*Hu!>8E-T^umMI@ zRqnEn<tz<0iX}V^VFH(~?3(8$!!Yes-u?XlzZa}%3>4oIu-~E~ZmY#AYle%51OMqL zb}+vPDh{l@@31?*CzbW!sZ|9bx~~eC@@BPnT0KaxRQvR2>6az_%QrPB++$Lh^_}ZL z#;1L+elGj0^3h{@t1vr*wW68-f@d4c4{Q^D&$O@8=O%Zec8h%c#7{FAByI#Pw$9V- z$d*Xz{dZAH^&0oIYw}-z+RS5J%=w1x#~QtJGxN6p=jK<Rk{i>PPz0*IJzf1=);T3K F0RS;GDEt5b delta 1041 zcmV+s1n&F55VHu7F@FSSK}|sb0I`n?{9y$E000SaNLh0L01m?d01m?e$8V@)000BX zNkl<ZcwX(BJxmlq6vrPHEHN7KgD*kR;*dn5(MlV&u+hfS@<<G}R@hkEXk{xQ;Yv#z zY%J6eW2HGY5jYb?IXxgMCKfCO=lpkP&&_7;Ja1;_&2s*d&3_JikYj#3^JaJ6Ob0QO z>*=hXJGn^<pNRVRh1aUp@L2glG=AADgjdx}-1Em}u_boMGaIOU|NgMNXBW}PVWQnT z!^+!$T>$R<(^o|KOI}SxX*s;}f4lo8U>AU9e@xu<j}@Ozj1J1H_FxwP`h*1Z`Qp1W z9Ubs!<PcHek$<0;AE$~F0=}$;-2lh)H-69sM3+dt`2%(VTU%kDzj-}Zz+toUfL*}q zx;!t7XegMR$XTmAU>C6NchQB@VL6h}J0zl_C7g%>AgZ)&3C;)r91@%o0BlQeLO|u4 zEJ$ohaIOVJ*plFkfT*HzY)EiIK=cyCAwhdSVCsf9BY%tkgn0SMKYY<eZ<jV$=Oox# zKr--g;cO7Jg|>jSqO&cGw18G5M1hYRZ2_z0rQn>^mSCg>WLbiK3>X{^&RLaUCI+-1 z0n=aI-iG{%4<iCVGZK;$olzo$6Jr8EBMGQHroVBH$}V7308mMYDtzX+N9RvbaBQDp zQ1t?nkbi)QPGo@M$&YRIDBO&Mh}ZLFI@0e2DY43Td65xgU7((X!t7@L?o_GP=W*vn zmk7Fn3vs|`3{Xh`i1t5!5iN+ufHQ!IXT{F&2S&8t#m9!bs<NmAV|{P8FfCOh2Z*LW zDtZV6l-4#`=L59A{MJ>f#sgY1x<7dto^wM)2Y-8rRz&6JMN2?31b;XESpR>}LHo-a z%?QPx1Mb`}<<aju#5W=cA`XDLMP30$V?YvBOu#UR;Sd3E+dT=YfCP*J$oV7pk2L^@ z1HF6YFEEq30DyEi(%y4LzqSqlYXTsG8!G|;B)l*GSqFe}TL}QkMNhU?f;A%5QJ^02 z(SPB}WJznCpDtEgKt#PKMh;j609Pci2>>ogU=`p3{{_f%+tT&|Sl`5e>N!F+rCyt4 zji%aU0L}b<0TrszAz5*iq*idY3)qt2bPP~Rkd;<_)(XxC!L%i0Viag3L6=Mj0BK3c zi~wM&-^XDWfW+y{Z1ekrOiN%F(3hATg?|uPtcytr>;jM{z!W(uj-%NfW2PiH5d#Je zglh(HoE>X^+nfmrP6&unYe<@W`059#^S0SGheRnVjC2{+4%mkMZSdMfsv@C^WC>yc zc9Eh*EPf6@N4JQROvK)PpjQWW0jllu07(<%4X~}Q5qit*iGBmus+8*{>AXAu015yA LNkvXXu0mjf*^Sh& diff --git a/Resources/Textures/Structures/Windows/clockwork_window.rsi/cwindow7.png b/Resources/Textures/Structures/Windows/clockwork_window.rsi/cwindow7.png index 6d2c0e0650ea87482405e72dd57986599e1bf6f7..aafe2b5051d6bd0bb148bfeb3de2ee82737b3b94 100644 GIT binary patch literal 2065 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 delta 970 zcmV;*12z1S5bXz$F@FSSK}|sb0I`n?{9y$E000SaNLh0L01m?d01m?e$8V@)000Am zNkl<ZcwX(BJ#P~+7{{Mbi4&z21ga)gcpX|Qfsoi>Vupo}kS=9qDjxzSR=PA_0%oL& z6}1dNg2Y<`X?Y1CigZY6@ZV>{DRt85&gaM1^e3I{I+a@g&VPQK^W!TJGgC*$x+v!> z9V(xYP1F@FxHj8F3payW)M{q&LAao*i8!Q6Hj3k8sz!8df@tmx(d2m4c^9w?C>8(6 zyI;K#Q2Auk*4T*d{9bq82J8Yb>@SGB{<am;<@t(gbqBiuP!bX_=ht2|>HJJUbEk=F zkHf0^I8(e3@PF|$(UWJ<_4Iitr+}CenGb)!E?{RTn)7#W&(?6c>^xu>u=QP)8}DVg zv^eXm^MG9dI*dDyx|T3~N<>9Rco74D?zC$O-Ut9361)-sTua~&f~uo&TuSg_1aM05 zW(sgg@G1syNJzaOuzV+2QPo7GeV$K?cdLMF4g{z&F@IS_XIEGm0eO~?TEJHGoh<Vz z!O958vxM|9pmJ80d6i%%1|*PxJwI3beuJ<g01P9cx5GLS!ihBjV2}iK9^2pg&ZF)F zRs{f)1l{4Q7X!L}h2*7^Al#%DV0?h-k$`=_SK`;=$&c1oS+HYe1PmiVv;MM4=gI*= zNb8$wWPil!)1WEv-Cu6Vz=tV-VUIhH&TqC4Q~P&^zHE0`Gt^dNfN3NEMEf7VM90No zKnc)!AFv(-O%jm((dgWNJT1<NbpaqQK_7IOI1=Ulk55MJzKnoOcZA|G;oieW70X{i z{6z#ou{6r|)q48>Aq|;~0F7xnU>U@6D1+jD`+p{A0urziAm@+VKh6MPT1*$!FEEq2 z0DyEi(%!3U;lFbLI1>O7+&B>cAmMfM|2Y8EM@j(bJ@n-2B-kJ_T?P6PUmb2OHAXKl z(C-@~2P^`BFA~@U03Rf<3h;pg0jeBXMqU8xlNd04k1*{l>42#}(?93_eE}1u)uFfJ zCVxpu@OBEglHhd==qsVn-L>1C6z_weQ9_?B_ax+E6&NHTEx8Z?vXYP+0l*|7E$jl2 zI9+)({5b*J64(WldNxNPL{<A@Qv$mH<O$;E28MlO%$5W%V!+H)bY=k8wM)alHfKYE z7XtKI0VGY{d<tducw}Ci!x;f|80j*c9Yb&p`_mxa9!I7a?+_yv;4M;&i28@<^SwsG szIYncnPQwBsEg6?b9?vdkPSqC0WXV*3VF)?S^xk507*qoM6N<$f_<5@_y7O^ diff --git a/Resources/Textures/Structures/Windows/clockwork_window.rsi/full.png b/Resources/Textures/Structures/Windows/clockwork_window.rsi/full.png index d50a9f18d87cdf24272dfbfb1cb1cf98d3986168..0899b57b6f69f0fad7b7e99de9d000f2a3c3ddbe 100644 GIT binary patch literal 1714 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}e5nzhX}-P; zT0k}j5QD&_;K@Lev%n*=7^vU~2s2LA=96Y%U{1*li71Ki^|4CM&(%vz$xlkvtH><? z>$0h^0y1+`OA-|-a&z*EttxDlz$&bOY>=?Nk^)#sNw%$0gl~X?bAC~(f|;Iyo`I4b zmx6+VO;JjkRgjAtR6CGotCUevQedU8UtV6WS8lAAUzDzIXlZGwZ(yWvWTXpJp<7&; zSCUwvn^&w1F$89gOKNd)QD#9&W`3Rm$lS!F{L&IzB_)tWZ~$><N;2G@g3_WKuq`Rc z`l&goxv6<2#rlSNhWgm_m1L$NT$oo34Gv(y=!0Z{+6=I2^DHPyHUWl|YX#6fQ2zlP znhdtLxFkg%NrAqRfq{jtfsw9}r9Rw$K<C?}BwLkamgJ;@0}k#Va0oi)l%R@&)PsT` zCleI1Rym1z>9$H0x+$q?iKRIuN_J_bIXO1^5EZC8A)=@T+UR4k+Xm!gtH_|#;{2Ra zP?+0Un%RJZ0YwlI_z(>d*fbyuqH74q$S=tUrlq3HWY4^k)S`kSV7da^X9Tqlw+eK# z5O#;=WtP~%3_ue`(uEW+R*pp_<@rU~A>cTG1Rzdns1cCBL`s*CL=O&lV5+y{veAd< zAUiI<hD8q<7?{p_x;TbJaPFP%n=KqD(so}`Wo5(`t-oKSeWL|LVm-tb>D^hu?HH@2 z_bUE^{KEQ$dM?`|S4EdT_FKtO=kj6mGOa9b*4a77D&L*;RP*F^wwlX*^3G1<?|aT$ zet-6C&H|H|4nNu47k9-obJ}CNl{(M&@4pn3e1QMkPuq}~izg<CwB_FBu3z%9_R{8^ zO=gOA+k*KLZZ9yAa<2KW8oK`{r}$}Y*-PB}Z*M=dc&*v9`5yjp74BZUmv%nfA>Yk> zAZAPR<jGyNQ`gPces$UDZsor(OH1B5J=`Su^1GFt-0qt>+tXK1y?lI$!h~=AqNVQ( z@7i*5{=O1t`BC}u?l*sZ)@{A@T+TY<fyS(i-BT6ctoeCocBQO@epXTcmj{81FB$Ld zXH<B1XKmPq&RmlVQa9iAvWB1PVl&@<eU5nK|JBd0?`QFhld-Z;tex?Far>hL{r}z5 zpIqW}ee*5a+$-<w!n09#9NyXIg!r`E8cMk<{@M9L{&v;fIUg0wG*4%LKX&Y6!A83U z#>cG{C+#-(X2_YjIHTy8Nk98Zm$$6D&r2zAI__sZ(A)Wpu~BX<b3@}EMHz=r8fUo= znN%w=FzBxL*us!=ckiD6=a>&M-q;^CPhi>2u7=8a>MXPP4w$)sxWbJ#icx|F7vE*e zoxZq{b2sCT`x+gl=85wJGS=>7-{okgCA5-};TA{7ggtYwSmvJQYC0qRcET2oo0n7; z|8*+4t)^Y(`SP0XrQhr2nwLzeo3-b{KkZ3;5_4=fS0C{_y7EBAm+8}HGX%f=bx@S| zeEfCeR)veM8)|Nd+si4ob)IJ1&iOWCNyd+e)z+s>1P@H8%y8RTR_(v2`?-ip*q<3` z9&?X5pIRE8KijkVQdC!+6o+v$TU5p(*)wxOkE}ehPQ@q0^TN$}3+8#7DW{+D+kEv{ z4qsX3jc2v@TxE8DX})@@SS_N`@7BI~$NbNps@vTBoFQ=DfA%|jQ-kg2{OSeO7oM(u JF6*2UngGrQhnfHY delta 711 zcmV;&0yzD$4c`TjB!3BTNLh0L01m_e01m_fl`9S#0007!Nkl<Zc$~$T%}x|S6h<$k zLeIiP6d4)^0TTyEOf(u}SgBjt_z2BL-#{Ni-#|CcBe2mexN;@I#HeW(N*Enc5fT?P ziy8Y=P4)DUZkgZmCN-&4)zo+D)=%H7%9CS_TUU?d<F<%@R)4fL8m4^zEpl*FkbZ33 zJCx$M$mnQm?%JNn(wxYvtuaxE`xBx8PM;E)iXp!K5D9n8AMPz5woO?3)vEKqyf$m= zZ_Gl<Ga~0F<NBTfU>w>CVM=h<lh3tC6C%F4;#IO%H1BuTh81UK<>n1jfBZBI06=*8 zvL}_7k#1MGoqv@her2g7TkoqfDBIoH)(~k!<L!s4EXK_Te_{X{aXTwV{Nl7H-+o3A z2C-K%z0fTLb1hsDJ-1z8@k|OJz2}HiAB4Cy<^rN#kK|L+!Iw&A(W+iI;*TDbwcwLy zVK7MXG{o~4QDAjA6H~Dl)b73+VE60c{c?r+Fzooj=6`mm{iu*!H48x*7KGKfb6sTZ zb-|ng%!;~#u%^--E+H}j{s)8xNI#{nAgrd!8{o<l2|(7f=>kFn*e{q%2(1}rY=LV} zB!@8lNp%5n;vsb93H7f|7Z7cSuxp6w7b%wJdV<J3gk3?z0R2E<9RcJ*#KQeTbPO;o z2u0jZ=zqMr;ud0K)8q__u!uO_S|`D1uMo%QCL&iOBcelOI%y<&9R>t*rghrF^67J? zVDr8g|3(9aAkamSgv6hSlCcQ@&m#BICMIM`d6`i!5CpnFAZ`<r<SDK-b2aGb=*2pL zu!aU+-q>uWX1IpcldDlDOG@w6?Q88~xyk9fut2TN8mFBnZ*jIY7IEgKu1Jx|QZe>~ tf^j>D+X<a>Ej+o6tHx<h&uu}_{tFs_1d)lshFAaq002ovPDHLkV1hi)O=|!E diff --git a/Resources/Textures/Structures/Windows/clockwork_window.rsi/meta.json b/Resources/Textures/Structures/Windows/clockwork_window.rsi/meta.json index be03eb5f1a2..dfd0d929100 100644 --- a/Resources/Textures/Structures/Windows/clockwork_window.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/clockwork_window.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/blob/b8fc9b367ebb26def792a68bcb25294e518698d8/icons/obj/smooth_structures/clockwork_window.dmi", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/blob/b8fc9b367ebb26def792a68bcb25294e518698d8/icons/obj/smooth_structures/clockwork_window.dmi, transparency tweaked by Ubaser.", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Structures/Windows/mining.rsi/full.png b/Resources/Textures/Structures/Windows/mining.rsi/full.png index a38121d202cc07d4aaf7f2a36d945ffd87135c54..ce03d5ab5bb69320a5dec54de18b08849cbe92c2 100644 GIT binary patch literal 1811 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}e5nzhX}-P; zT0k}j5QD&_;K@Lev%n*=7^vU~2s2LA=96Y%U{1*li71Ki^|4CM&(%vz$xlkvtH><? z>$0h^0y1+`OA-|-a&z*EttxDlz$&bOY>=?Nk^)#sNw%$0gl~X?bAC~(f|;Iyo`I4b zmx6+VO;JjkRgjAtR6CGotCUevQedU8UtV6WS8lAAUzDzIXlZGwZ(yWvWTXpJp<7&; zSCUwvn^&w1F$89gOKNd)QD#9&W`3Rm$lS!F{L&IzB_)tWZ~$><N;2G@g3_WKuq`Rc z`l&goxv6<2#rlSNhWgm_m1L$NT$oo34Gv(y=!0Z{+6=I2^DHPyHUWl|YX#6fQ2zlP znhdtLxFkg%NrAqRfq{jtfsw9}r9Rw$K<C?}BwLkamgJ;@0}k#Va0oi)l%R@&)PsT` zCleI1Rym1z>9$H0x+$q?iKRIuN_J_bIXO1^5EZC8A)=@T+UR4k+Xm!gtH_|#;{2Ra zP?+0Un%RJZ0YwlI_z(>d*fbyuqH74q$S=tUrlq3HWY4^k)S`kSV7da^X9Tqlw+eK# z5O#;=WtP~%3_ue`(uEW+R*pp_<@rU~A>cTG1Rzdns1cCBL`s*CL=O&lV5+y{veAd< zAUiI<hD8s7`AyH$#W5s;^XRnm*}{PW$K(IBhIr|E3a|<Wa#~jCzn%9b=!D{r<y9ON z7lU>7cC`zHxUjfR3UC%|YAUtgTzCEC>33<#j`tPcA3sx*Zj}FQ_xg=nx0Z_id%UCN z{olWT4Q9`MlIXMi@`bFepKQB-thsrI_wmQsSMokx|K{%Q{*dXxJ<H!WDsM`jn|;>o z(bB-<adx^5s;_y?EYv$b^XzVtXecSS;(wIvZP|X})?4XD5h0drw(vt5n{`k5G%K;V zIL%S_6ly!Xu<_@770V583w{{cf4e^6q_pZb$z|W0*Ro!CSyJpE8h&%XL!eQr!|zf_ z2mf;Za}_pRt>Fz58b3{aZC-7?_FGeJ`FpeA8UE_w`|JPO1n{0o)4lxqovo2=aMY#S zS1+E5kz_b$zqi&_Vy~6$muc1gzq>0r_TH>Wanv~R__@D+_1?MJx0|EC%YSo<;Q6yN zKD><af6c$QUq0NMyZihe!M+Ka%xjXL-$+>frm}kfHU^D7t3JLv{Cldxh3~8{-WK-t z+IL_7l*zclC~(n)7fhm4c)A&;GQP~{D>XjTtm^YqXJ=E@{Ps;e8WXHOdogU`sy*kk zbvf&IWwu8=GmSR*olia%agFuMKDIT>zFf`<u@2R@+<YrQGGe)S-Q#XU+i8M=?7z%s zpJTdx#qU=c>#ZEC`PVJKO=G;rEVZQbeM3gDin8VAbq!&Uq!xVAvb|`1*K}sh$%PAw zRx_SIztbd^!$fW7E*}kBL&bB+@!GKus<(AK<k-L`TxHvTa;LmDW5vT=TX!YQjZ@1P zSry5!$kpUjmDxYJ1*;dOzI9(SJ29<P)%NEW2A6K3W5tr&r>8D>bNgZ8)6Ji_R($(1 zdDo}Jm4{nc8g(V^74BJA!+)Tl=KSup--KjW^G<E#QhTE)EPU+T&2Y8}fnSn7e15X{ zX4j&f!49F!+x+Ea7e5wXHvO&hjeRrnWY5kv_;vF`;H)Lj(!XtFa+efHySVsk|C(ou zMVPfh{yQ<8v13m1X?pQ}zQp0mo!cj`<?`Qj$z8L{Fga0$;p7xX!x)|E%K5L)M}(I- zu90~k%KY)CS~d59{p<!}o)rrg8K)k2eRb>f^M7mwn*Xf+tG_d;_BAJ$$Oce_<mu|? Jvd$@?2>_JFx0?U} delta 814 zcmV+}1JV4G4#ftLB!3BTNLh0L01m_e01m_fl`9S#0008_Nkl<Zc%02wy>8S%5Z*`@ z#VHVlvjsvFkx<AL^hk~y8afp5B5v{=G=32j(b3R2Ml>`a9VS9bfe?|;oGwC<jwblq zz46WMk8gb`V2bm3=kN1)_M3Gu7!0n(Ka>DJaU6@fp0<mV$$vzIVYp(buMLO0qAbrE zziMOuq9_yq?hMhLU28}_97bNY`Wod7#0><=0YZrVjbm5=pj-zBW>AzI0$mi{lO+TQ z{MYq1Ut47YN=QolPm)CBd2Sdd$)UXF`Kb&@6(C!s-*Wh>m^@DlfFlEX7}}l!iTM*! z1?XPaullN(^ndP=6W}|00LHiO-p}rY(G2&a_@P|CoK!o1e*H|T0(BiqyHWgX#{HLe zyUrY)01))Y*U#zr<L_5|{ps@;vr8eex*SUo1oFe%Hv?|Bv%Q@@c>E+2VxDdU06~%b z(ca$ixAXHB1QG!RRbXUEPCkw9>bm~!%waU4O%O;20e^AvfX!AHXA`2ksblG#69_%X zk_Sw{{9eU8lub&x)-<8tcyLvqj~D>dHawMAbTQtw{(hUaE9j^K>+E<;o%SUFzD>Yt z#Aw(;=yn9>PPDzK0_*I=B0e#u0e}dF0^(YhRN_hc>3wDBsq~5my6wtxEUzaguMPi2 z1xzQOD}TvN`~!OLG|{3+?EsqbAQECiUfQrJEw&N@p`*L()Y(DJgQ~h%X!qUc0TLI( z`7$Bd5fdW0wF$ZKJqvEvgF<|mklTGJ-WfdL1kgwN@xYdK)u3X&XSvwu)y0ImEg$jp z3Y=7I6BoC;D&U$OT)fT$=wggiJ&+F*!l&^)Zhv&yZF}{lbOHd2VS8bu>cBjiFyl<v z8-Swdc}nwq<<Qyar~;~A<|(?p)i)xayd!xFfHxr@$GTu0lakJUOR7Cv=$D69o3GcQ z6#w0a(!6~_3>Mr2#L>}9NiypWrFtG`6DsA@x~`slx>5mRI9+e^)#d;AGD5TU{kVj< scqhR3<Fo~UsicdI;aqD);cu(UU*;*h*vTy*E&u=k07*qoM6N<$f_6!Z+W-In diff --git a/Resources/Textures/Structures/Windows/mining.rsi/meta.json b/Resources/Textures/Structures/Windows/mining.rsi/meta.json index 86047804207..562553add6a 100644 --- a/Resources/Textures/Structures/Windows/mining.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/mining.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from Paradise station https://github.com/ParadiseSS13/Paradise/blob/master/icons/obj/smooth_structures/windows/pod_window.dmi and modified by NULL882", + "copyright": "Taken from Paradise station https://github.com/ParadiseSS13/Paradise/blob/master/icons/obj/smooth_structures/windows/pod_window.dmi and modified by NULL882, transparency tweaked by Ubaser.", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Structures/Windows/mining.rsi/mwindow0.png b/Resources/Textures/Structures/Windows/mining.rsi/mwindow0.png index 1416a381defa775553caaa6458d89a8877e22fed..a46de9e1e517048df36d2993d61327b51874ea6c 100644 GIT binary patch literal 2248 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 literal 3765 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 diff --git a/Resources/Textures/Structures/Windows/mining.rsi/mwindow1.png b/Resources/Textures/Structures/Windows/mining.rsi/mwindow1.png index 48c34617699d29bd2ba458323de5c3a8d5559e88..9358df081f8a69f3a0449d9c004ba8cc5a10566f 100644 GIT binary patch literal 2196 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 delta 3696 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 O0000<MNUMnLSTXvu-DcA diff --git a/Resources/Textures/Structures/Windows/mining.rsi/mwindow2.png b/Resources/Textures/Structures/Windows/mining.rsi/mwindow2.png index 1416a381defa775553caaa6458d89a8877e22fed..a46de9e1e517048df36d2993d61327b51874ea6c 100644 GIT binary patch literal 2248 zcmZ`*3p7;w8s9U<B#bzOh{ou|wU|9z4W==fyk^$%j?=jE7&C)m&%?~tOq3=na=E#6 z;`TsME5|c*kQ7Iu?m0@xBY9N!=rA`Yrw%J_b@z;tTAlw||JS#_-}n3ezyG)Q+DC%| zd~w=l+5iCHm<+EFWcE;XEi5ut@RP@p2_+5j-2v3x-8hYG^mr_0oWDO{hpe@bu4;Wd zPaxx3F(X_G06K=Mjsi}fH3a|-h#$&=S^j<$jz~acb49T{qFf+Wqo{HUvJ~)OHeN1( zgi?y!ouKxhAZwKwB;eI9aFRQL<sXFi6iIk^GLb|i5op?YJf14y#!*7NeBQ&6ojV}` zhQ$;Rl*wd7*<XnwNj&K2=H>>HoIoch2gJicx>pFZ<qkrr^>UC8alCj^j)X6U`63}+ z6_*_=N`c)81QpRrTh5cqS>X|<NFX%}mjm)3o`5HWrJy6x5&RMk=Er@^P$+#b2O<op zdV;`6UxYEmFvl5D%3F@)^ZtBDq8v4^6y}1f96%=$$<=}6<ly86uAC1^pUUM>U_K1- z)WWTtN39?of<LvY{8bV_e3h~kh%JnFC&(SRyf}6W1QTci8DGd1$w*Xi+3QpEvh~xT zRPYP@RMn{|;UPS!2ue}uPIGahs-^hE`0)ak0jw_pRvSMD1SN=I5mHYQK8GoUc@nV% zsVz0%2f9D^_&nA}?l2)ArhN$TnRyjz)!k6&5?CgZB!#N);iHIu>heC!vY@N#bGi7{ z;v>~h)24zeZxT&g=URCo0ANO$Ui45oYAoVjk|Euwcv0u*cXlIq?ep0M`I!rSvrO=? zWzK<$EDta>=i;t8{fwONG6;7<JRLEb%JggLqth^Xde*$5-y$J?Ph7n0Mw4iKX{v|o z9d_0%uj>?7tA85y?t52op`r3dL_~yLPC$KkUN>hwhQ22+BYX&=1>Jn?yS2zNvbpxx z&b(5Kx7}|ja_R)8WS5Dz^_;j>-y__pC$172swyc&D_T4|d$tcWR6j^H4K%-s&DLdX z@u8!9^rMd_u2Zm0E7IEzOn=XAE*kh_>9_jEr%$a7u))tDqYN~rcN%W6>1|G-n1@^F zkWv}YHdoi|yck?7fI97#`?P53*q)(`L0!RE&mPH7Tx!dbvb)LB*>^^>Rh+p+9HsHU zp}<Y4nG2V;Re9ccEfJA}6J5;oQd9SzsxS1(_jvJ(&GtZ9an1ITc#Gd}y3~rws>xBn z5mD6QzE{5-*B7_xfRl%@y&8a#u0<<=vz*DtAG!j+Z6lkB^^RVwbXb>IhB}nDk*Jq$ z=~lHLdXcVtZd;}&AUe0}fWX8(%n{!|vMMuw$a)aJP0~U)F`LvhK-=y^KCP#}IhxM` zF4Xg|>n1}0`H{_Tr_h(594m3ZXKKC%6NW>R$W>!uv17hvzr8!{VpI-2VA=!a_S1G+ zIeOW-{@;gp3<Kl4my`>;f{kAS<uul*wU#lrheIZA6m4j-Q%qgoX|JffMyR`b=O(_w zM5lc!$8WZHaX!5<w=>)1ezZXax~LO<neSmK8|uE;AALQ2gjWZgLy^0%R#jsWW4@#H z^!0m73_(&>-Sbj^zF+O_$%5os7SOA3_S&k%=}m0m1k|4V+w~36sk)Y#>vaIK;?bD# z6~E12z2lraA)PR>ww?Ds*O8W1YsApgq~q}N|0Gz;2iIj~DgzInM{(tt1Wp=cEsvJi zM75iccwJV;io7+$Q%&KQx`BV|J__4pL-ug`S4H8?SX{nh;e72d4(&DaX8)!qs94<P z5#UUxixMg>)y~t`X>T;ELNi8WIhO!u;GerMlzNr__gv(>^ogb`F2t_&ctcak>}#oA zyTgvOig|P_>dL5c?rnNYVH-n3TtZt&q92}HUuMfdmyPw94B~X78OH=Ou63xr!H-?> zeV)x{gW01%MGX=T3TEHZtZO>fSV6y=*2V&y6^q{h<Bdht6Py~{t43Y{qUao8NX@mT zV)8ZvedhLtRnH@1QNzyd^Mq*SEwlnVT-pKrynkQw_Sx4<TeNJVVgf>4-R^d^+ioZe z+@Wu1bqj;i+KGA?<lHvz7qqywk`|301WeE#)PrmLG0zS$&oJwU|FMz0reCinH1%5+ zr19$DNe87;<IM()NO=9_Bf3Li&dk{#yGT~};%(x`8J)tQcd<VaM;Wa9j&duY$oN?@ z_T|qg#h{Od@%<;QKX?nA@qq&N^W?7f-4XfhmR<mC^(Y1=XY>Pq#a8Qd^QN(p35p>! z!<yMJUUK58m(OnhjsQiJr$*x3-wjOZ4-XFDrrspj<!UAu*jM2VR26PGaKKqJMxXKf z$>j52M{3+QP5KeDHJ54dFou&g@KxhgghQ_Qi=r~>+6#1)R=e&Q<*n?F%MVm`2%s0- cxj1*Ijn`70Sm)P=Q~gCSy#u^zcEn`-A6%GVF8}}l literal 3765 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 diff --git a/Resources/Textures/Structures/Windows/mining.rsi/mwindow3.png b/Resources/Textures/Structures/Windows/mining.rsi/mwindow3.png index 48c34617699d29bd2ba458323de5c3a8d5559e88..9358df081f8a69f3a0449d9c004ba8cc5a10566f 100644 GIT binary patch literal 2196 zcmZ`*2~<;88h()oAs9iipplUfMW9Z25F$uO0s)FfAX3U|l>$j1k!&OniG|vnSOy2% zIcx@zMFgf$v4Y^*f&{BIBM`(E7>Pin;4UDmpiJi_D5A&SbMCwM{_p$#<-7ko=lwH; zxgCSXq5%NFFn0Kd!mE#dqKx6^DPD3vydb2Z+kJsE8k<M(VI?Pukq{gVd<^eV@YIjn zpXI?%Q}K>yDFB#R>L&s?Uc43njQG5;C@3m8h|CfRoa5M{c#gA7AU3clGBUgsaG*Gx zOu!dP$ucV5fFQ$ry&1&g3=k-ZijN8o!TE_K9Gttei?a)!hQ{G=6bU<l9O@tNnhu|+ zcrFBq$sm}Tn(CbD<}8vVg07yPo}dd6BoYZQf*?I0gyLibp>*SdlQ(|+IZ~E{Cx&<; zAx`f%E?$%ZQSo?vpvAF}C!4hxN1P(z8=|mTAcxNpaD<Q)bai$GKg5H032!qLN?*$X z3j^xkz%-W+(imchMS_+3L<Z;cx;{8jmLaYbVuMQnAkoET8^MK0AbNs}^}*>=*eo){ zgZLbSaEtXA6r}T^cddH7UIIQ(uPm7#CrqT`Wdt@SAufdv;c0?Yo{%j{b)kR@sCU^5 z)_0v!zz@Wy=&L42hjOGMeu`dqng@|$km4QV+Y4AAM16>`)c8Ijge!tXa6d_SEQS!` zNW>Djw+!*#g!^m6`@Y`B4j1wu+8YP&nU}DZ+zpv7fl@`1q%gxhycO{;A+Oym2)d*{ z7n<K7KHU8@GzDDzl4xkNpQ{T109nQGr-#W9&pxLoS<=^(W@Uv{?sU)cbt<=?)a~uP z+qeeZ)%@5_cm4C-jaiwi!z$OT3HBvi51F)>37ot7<cYRjbA^!@P0oBe(pFS5d*#5( z`|U;l$vsl6EGW34bpAG=!ai`mNO|+*W1&#^)4eg-^iM6Zy4+2L)IS35Z^fGLshzp= zT|lPwP`a(~MFfg4z$JlAp^8ko(!*vN?3!vn%#<(xCZH5Vbb2G?TzA{xIn2?3edoI! zB4>YT%^NzY9T+IU_jhbI8tgkBiU`OKsPF6FX|LRKQ5(LgMBD3oS(=uX)-YaC;b&?5 z*>E(t!lR}piG@w3UG3e%@g%9pX8sNU_SQbZCGCvu=;=-EZkS7LUh5`DU(L@~94c%% zg*aM=0REhBt<tpI_)TCMkrs0~t#)E)_DD(GXj#S4mqX$4Rx0(0SDt+bFHBGNHER5f z>#O}PuwqIY#~&ia7GIb*59b17*>*lkr~Lj^C4i~IsFHa*T$wz+<JTE%31Eg|l!7w# zb_W0#+x5kjFXw9=0d@JmGAR4D%#l#uz`=usyt*E*>P%aCr;6*lKE1Z{Z*~$+E3`rN zBQUly5Iu;ZXWTpXLMCAlr-n{HIbbIHeXAvK^xva1zr4J7F$;3s8lUK(S^j(|>s)~Y zt8{tU+}hc4UFSOWKgNf~RUbLIS;iJ-`NTYBZ}w5BCmwJLGa5s#6`JaBm9@@ZPG5b+ zD9vxqN_0a2h}ysJEsu$+W~Xe}<l~<2P|(HfOmA>ltIgYjCIxDO02{k&Q#ow)PWO*n zpYy+asCG|3(T?;ns{WL~WpFNC&_0_?EjFfB(Sy@zXQ^~I#4UMWpT{FjI|yQY9Bn!W z{)@G^W{H&X1)U?9f%}74Tx*h>nK+v^la8MH!8){?g4u_&IHP2=)+mgTXA!GUcS!jg zx!r)=o-o!lXK~&!x?z?7jru{v*mT{<iIL%5RV@eqeBh~^!W9)o#J3@1e{UE>oICW# z-8*a(6J0|BYD;$gRQm~FMWL0s>gwVBV%_t&2L+Ut`jWl=R5!$A--PB-jc-HKa4_;` z56iM(j>N=7J1{oKU2oIW^ZoVMYDx?&+HZ3Fv%JVC|NS|{gk>a56g$(eSsUaNjX_~5 zpT2BE?n&}_Y?9A7@2WU%tbPdI{~8&1$u?yD#_Bu3x_Lr{U1Ye!VT`;3oS8W=X+7bs znNIfBodPsT4(i>&_U^i#OsaQ(?9R58H}`y5x6ZW6t47)OKc{#Fkg*Fft(w7lZHV2h zBA1`-untoIy^%oSiy(DO?4zJS0h7dM3Yb~Tq9VQpbmuKA?K-TFB_e1<yOGNs@@<Fq zD@a4Likqv-a*hp0a+${>yusSlNb$vOt%=#L#`4?6b(Ff@(e^0ECssWHM(1*zawFGc z9G6ApUGA3W1|~BT?D>F)qER|Al2n1Xi@IvAqN6u>0jr3=${Vp-`JI!Nx?*|H_bt6# z6>@mi{1sqxvgIRM^ZvONXHD`mZUIt?JoU;`s{1addk<Iq;B7_O_Dxd`34B$ku=2Ab om94I!%WrU(Wsi1YcfBxw{GjY*Wd6_*{T~726Q=(e-&n=}0aqwzssI20 delta 3696 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 O0000<MNUMnLSTXvu-DcA diff --git a/Resources/Textures/Structures/Windows/mining.rsi/mwindow4.png b/Resources/Textures/Structures/Windows/mining.rsi/mwindow4.png index ced25ea41567cc1217907e9cf74234cb83762efe..8b1e5d52394a971002fa3d34a9c5f2963198cdd2 100644 GIT binary patch literal 2175 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 R_vnBA4BudSp-=30e*y+>Vf_FA delta 3705 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 X1B&E#-RW9=00000NkvXXu0mjf`z83~ diff --git a/Resources/Textures/Structures/Windows/mining.rsi/mwindow5.png b/Resources/Textures/Structures/Windows/mining.rsi/mwindow5.png index 84ce6f1696f333e1fae363ff994de7c54c7970ad..6d1ed85f336f952cd2b2b79ea7493bd2027c1de0 100644 GIT binary patch literal 2215 zcmZ`*4OCLu7QQG5YCn`_z4C{6KAUlcAh{H;NNV_3iag5(o6-<)BoPR%16a?lj+0TA zl$E3vPbagKEUg)ubb4C;WTmgA)wpt{R+`!ywX{+5r``q2tks;g&OPVs`+a-w^X+}t zx@tBnc)rzgD*yoIhlVgCk=4&QaTdt4M7Xm9Sy1xG-~gbk*}fk+ED&%)<HN%NS7eVv zrg5}v%t4-((vWC509e}?Ckn_rxeNfzMZ!%Sh!Y+L@+3)aT)reu;HFHHnpkuth-{Mt z5SO4#5{c!Y(wAsLfXLoxCKCxJ2$bkc<b<;c>m)J(!PAZ6Mj<k+2m}IM#*YUhnL+RA z$jO(O06|iaOjalqZi+Q-64`fTcW-ZRGKET}Qb`DcBv*+cu975{|9!^E2R}@KoF@}X zA)!P}F#6@jNs=L7BGDLVcFg3-=gr2ECd)*oD107SAQB`A#E_iq?&ePZ5)Tr_f6P!U ze=i3j4B7Ywp;5j_3zb4V4@9XzC6dqk`yq+)OmXE9pF9UZrcx+05`{{ldXs1Ghon#E z^FT-li3BF$X76KC&|d_7YBl1G5{QIGWkC^F{GBgRN#YCQxyd4k$VgHM#e9i^LMP9l zK4s5XKXpnce<42Icxx~^QXrRzl8w4Eyr^`O6rUJB7GQ?J`4VBS@pA$@K>|sTev%1! zp<+lNlgg0ZGR6B4?ynJ_`}!C=N-TsJ9~^vUp2M0`8_-_{DI~JQO{O}06!9-1@7>G@ zI;THpn%^Wo()|o8I(ha>Vpv&Mp34OQ^tDi?|0X4>=Ue|oTX$R5h5h=Yu0Bg_j}u*s zutS2ewhaaB=~73#l=Ft;F?Bbo=R%^{mnyGp*colBA4&e#&32E*u;)eb_U3t_n2O2k zl8&mXsxup0Wx}7g<PMDHEzgcPCYk@BxV8TXIz6GHJ5%U}Yir+iA?PQ`{i2rFKRjwv z9zHBPJIGL0Rp#lNWZZ|^EY{F8?cF1%gF!oJ^hMmOP5+?<t%z{wLfI8PPSuv8UdA%6 z4=wE2_DA=rXkOyv15x4qL7KyB)t+Oc7hH1!n$!B*txivMPu4YG{<C;;_uW@D`97L7 zx=_sm(yDWMBXs7I(D0k(mYT|2&qlTl^j!q}&h!`V|1BoM!O^j#=>p3QuzZubcD}~z z)aky*F}j~@0K8OL1ypr3^xPL`VX_(;(+$O|vK6PQ^Ip_*;HLI`zme;BJN#oyvy7&8 z`K7a--s~K`C>AoK;qncJG+`D-3cE=D+f&ul_-vXnuq7JKe!8rEnYEut_oHF$oyBmu z*5-y8bA`IXs<J*A{9kTp#npM&>emJ37kD^$@VszrWgbP?2~K=Z8%=fW4qdNdFLRmd zesd>r^85Ta$`j`kL%l`iRRdnPM-N!Sjgc*dUqSyU3K;C|_bGk&RG=aLTG3UIaBF&Z zRF_9Y7|j3Ls{D|RrsQWW;Dk?!4-SZls-B>`qZowOoX$-8wpVOj9eO++uq++>W^`Sk zERvY6Hw#?f#}!+oE)^!l4)0Gb-oG`>ZxIfDm+VRZ_tv#Xw?;R=tz4geTb>f-H{u;< zc6%Ivi<zt5y&?{ex8?6RU`a`X4ZV{o&a`kfi~j>JI6ZDvLIv=+eWW<kh5%xyhZ`E+ z9{fcMz;N*I4i00Zo&=X+5l>PQJ7oo+>0t8<{4;rAWBbh~|14<LIjhbbI&|oq&lVDE z-*%sQ1O8}zjp6uUZ_!<KEXq=Oet6~c1F@*DxOcGCUfVktUe0XLIVqa5YmV?!-!9#? z1aAZ67<$YrG=^-ZI`Z<Ay>2sr|6Lmetnx`=0OdgQ=t^_WMwF_21K#?ce_t9tx78KC z4su{EV1skSn4Kfp?!|cAzyfDV+X9||wJ5JR)X90{dsq8CI=g1itxF(5IU!l?r_fvh zGp_d3HI}v5VFO&8x*{_!E=cBJYSH8Hy>GCw!&_@NA5&YtL={|I!03*`aE!G<XDn0& z`jy<SLjxIKBNW`P=64TkdM8qyPAGlsCwF&Z^+LTC-s9^;aH*~>iHQAU67w|V9#)^E zC+W7Yh)`Kf{RTtiMW+B-z_*N=AV8LVaAFr~BcsN`aeC#@(tWx9xrGA$ks=Dy9sxO^ zZ}d=Wxmg+XiGzJ;DSjd*?dX*Upz4>MWpDe?Y-hEP`9w@j5siPcs<7NsMcRyV4%YZ~ zggvw?yYoVYc3|>W1L~GzJ<(2MxR(;?)M!clX@6|fTCaLDjYrRqgNt8!EYIEOlYwFG z!2pHr1B=g=K7w+qy9r!WO9<tfjq{r4V-|L8w;0-LUKq}L9}Bid$ECKuz*BYj=_N3x zs|-Hhwi$~zKXHKGI(A}WN4dk^ID#3xJF$N{y|eDmzi~VEhRiemB!mXCm}LRm)Bg_) CFl&1N delta 3639 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 JPDHLkV1oW}+8h7? diff --git a/Resources/Textures/Structures/Windows/mining.rsi/mwindow6.png b/Resources/Textures/Structures/Windows/mining.rsi/mwindow6.png index ced25ea41567cc1217907e9cf74234cb83762efe..8b1e5d52394a971002fa3d34a9c5f2963198cdd2 100644 GIT binary patch literal 2175 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 R_vnBA4BudSp-=30e*y+>Vf_FA delta 3705 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 X1B&E#-RW9=00000NkvXXu0mjf`z83~ diff --git a/Resources/Textures/Structures/Windows/mining.rsi/mwindow7.png b/Resources/Textures/Structures/Windows/mining.rsi/mwindow7.png index f0ac5b6b90cac61eab3a5f099c67ebac9aa85d88..24733c9b3e5ed0233f6097eb7cc79aa6228a6dcb 100644 GIT binary patch literal 1813 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|_);T0(|mmy zw18|5AO?X;!IOa`XMsm#F#`j)FbFd;%$g&?z`&f784^(v;p=0SoS&<gn3A8As#lR) z0M=zwVFhI7rj{fsROII56<bx<DuGp40ofp7eI*63l9Fs&r3l{u1?T*tR0T6V13d#J zJ1zwU1)HLjG^-#NH>h?X&sHg;q@=(~U%$M(T(8_%FTW^V-_X+1Qs2Nx-^fT8s6w~6 zGOr}DLN~8i8Da>`9GBGM<f6=ilFa-(1(3OkN%^HEwn|DMi{Jp_&Xi=hJq4vjIbd5- zlJ!$_Qgc)DN{aOj^$hi~=_|=hL%1-n7#bYFfYArZ0JRxl)#h1Hl57GDDc1_1d!YUU zIy4z<Z*fVAK9T}`BLf2qT>~RsBTId_|A5Z7NlCUU$t=l91qU45Kj08_%qc+?1*r!G zK~5$pWUX=%^U`gVDs)p)(-KQ_N|fw!%QN#*^2-fu^dYKHbwfl^4Ykq7V!sW@*H)21 zsm1v@rJ!)PGdHpU2L*~CA_5>9BCu&d7DU$&kda@K4@^%*naQ4cC8<RPMZmNLwhv|< zZWZWeA?yy#%Pg^j8Gt5?qzfr-tQ?C<%JYk|L%{KX2t=GppvFJ~6e)c|5<fWbfvMk) z%SIoblkB*-cdwWZ%y$}|E{-7;jBjUc>=rQ;X@BnG8up}Rwzf#0^OmjKw_DygwEt?- zgITY0k0wP1Jds+zBeuXYhEMn0Pf=#)8J(4%S>rFvRI@hLpZRB>%IrPUWkSwfPujS{ z+RAF(w%e~y&06*9_uqdF9y|Pvo}Y@oUi$UV)z?oGYini)J<BWpyJFq?S!dHOGwtv> zX_WPt&tdJq4=*=A-F|-ltgFXoZ@xI|Til+?-|x!8Lr=f0y81=V|5s&x(7K+PSH52T zv|HXhUEe=`&T^5z4<G$yeky2FwUhZp_m85Vrjku9+;V&GFt#YMD29f}$7RjCa88y% zQ1B4<(WQ5GGb<=@?BVOPW>9K6pv}f0==eaCxuHYhLl>iii$KLu29R_TgGbA?Z*M<+ z3lCpuzjRZm9Mk&WY@e3wa`LDuDymXX_xRUvRPxu)zpEnGhu@GcVOJ=RV7NN#74Nkv zyADe<Y`6EXn*S-Su-*1=WjVvEO?Q7xojogP;hcXpr@kkdRcNj$Ty4KT<l`zIzj`}0 zy{EEl4$BtFe6Hv^F@u*4<OajQY2^|ihef&^%P|DGv%7QCp2G|s98BkxjMBOp1q4~* ze5Qaj0#%DmG>qmsprq9ETNt9V!PQ0L`}PByJ2u@&Vh~FF_?-3OhmVs#$Nbyl`euUe zH@3Zhe<}t}O9#0#U(h<GyS;(y>i>qeCR5o}7w*@Y9cR`k+`7wD?!rG#Gb@3K$@TNE z$@4Ro)_U7GWHZiXJ+XEFd%gpk_$K`L_wBp=W<HPH)_oOEHy-f*+jf<YpHb=2{@09& zuLUX+BZJ>Rmou0eGrhm$@lN(F!7IMEwja2|d~521E8PcX|2k_BKTR&7lYIq~<@fK- zj@PQ+@SXq2@ceIWc6a-?9qcWvQSbMj7f<PAk8o}OHt#w29mWj9lwS2GHt`MVjT=nY zexJpq`;lep{LeLw)(o3u&TZ@~U<U<9tbZw(hD9VOtPDXxw_bw5g{3i^ry;<lqHV$I z7Xe-mN}r0Fa<}|ui&Z^-N#Nd$*f%?^89D=O9Mjnj)i!VJdfubHqq_OtN0xGid(XM+ Zm{S@Yt}TjO^&V6udAj<!taD0e0stt(sdfMW delta 3265 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 diff --git a/Resources/Textures/Structures/Windows/mining_diagonal.rsi/meta.json b/Resources/Textures/Structures/Windows/mining_diagonal.rsi/meta.json index 439147564dd..7d12528bb20 100644 --- a/Resources/Textures/Structures/Windows/mining_diagonal.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/mining_diagonal.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "CC-BY-SA-3.0", - "copyright": "Made by NULL882 (github)", + "copyright": "Made by NULL882 (github), transparency tweaked by Ubaser.", "states": [ { "name": "state0" diff --git a/Resources/Textures/Structures/Windows/mining_diagonal.rsi/state0.png b/Resources/Textures/Structures/Windows/mining_diagonal.rsi/state0.png index 54af8484b2fb8a2470d3c4b6ef181ea35039810c..c7e717a6e70eb76e89d526f351f1a2263a10a84f 100644 GIT binary patch literal 1299 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}e5nzhX}-P; zT0k}j5QD&_;K@Lev%n*=7^vU~2s2LA=96Y%U{1*li71Ki^|4CM&(%vz$xlkvtH><? z>$0h^0y1+`OA-|-a&z*EttxDlz$&bOY>=?Nk^)#sNw%$0gl~X?bAC~(f|;Iyo`I4b zmx6+VO;JjkRgjAtR6CGotCUevQedU8UtV6WS8lAAUzDzIXlZGwZ(yWvWTXpJp<7&; zSCUwvn^&w1F$89gOKNd)QD#9&W`3Rm$lS!F{L&IzB_)tWZ~$><N;2G@g3_WKuq`Rc z`l&goxv6<2#rlSNhWgm_m1L$NT$oo34Gv(y=!0Z{+6=I2^DHPyHUWl|YX#6fQ2zlP znhdtLxFkg%NrAqRfq{jtfsw9}r9Rw$K<C?}BwLkamgJ;@0}k#Va0oi)l%R@&)PsT` zCleI1Rym1z>9$H0x+$q?iKRIuN_J_bIXO1^5EZC8A)=@T+UR4k+Xm!gtH_|#;{2Ra zP?+0Un%RJZ0YwlI_z(>d*fbyuqH74q$S=tUrlq3HWY4^k)S`kSV7da^X9Tqlw+eK# z5O#;=WtP~%3_ue`(uEW+R*pp_<@rU~A>cTG1Rzdns1cCBL`s*CL=O&lV5+y{veAd< zAUiI<hD8s7Syj)|#W5s;^XPO#u0sYAt--QW@+Mh{iK|-dwBSDXu1WlZLtkH?oYTQ* zk$#2PZojGGCokNZrS{DK-@;a*UwijFsaNb_U1QOAT0=y>;N0;w;!X??oX$kfvyZsH zoq_d#f%1O7kcVg1GnZOCR}K^Lf0in2c5w5XcgGveb_f{1WXKf%)5O30wCSz}p9a1@ zJ%!VZvVY3#_!JtBG_ETUV)uD)PS&8+y7U0syEBZ@JBl8xSJ~3Ke%tTsPfK<<wQOyu ze|UmnN~plj27NQ@-6|!l$KUi$z94!>i!=6cugro5XNTpR8@TSBWc1o`jWNrDWr0+4 zht#@B0=Yj_52)LCPFlrq|HCPvmWIc93ez3fr|(|+v@w`ByE7+WQptXG;Rab&i+5~+ mv;4eRnChJVt~*?4UctP{wzuiaq`jq}0?E_W&t;ucLK6VE-m69c delta 3031 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 Z0|2@<lK*GaK|%lk002ovPDHLkV1k_@sl5OI diff --git a/Resources/Textures/Structures/Windows/mining_diagonal.rsi/state1.png b/Resources/Textures/Structures/Windows/mining_diagonal.rsi/state1.png index f790c761bc33d623f093e9313fde59654b1492fe..d6ad5b0dcd4ecf1045f3f90d38c8e5853afae550 100644 GIT binary patch literal 1333 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}e5nzhX}-P; zT0k}j5QD&_;K@Lev%n*=7^vU~2s2LA=96Y%U{1*li71Ki^|4CM&(%vz$xlkvtH><? z>$0h^0y1+`OA-|-a&z*EttxDlz$&bOY>=?Nk^)#sNw%$0gl~X?bAC~(f|;Iyo`I4b zmx6+VO;JjkRgjAtR6CGotCUevQedU8UtV6WS8lAAUzDzIXlZGwZ(yWvWTXpJp<7&; zSCUwvn^&w1F$89gOKNd)QD#9&W`3Rm$lS!F{L&IzB_)tWZ~$><N;2G@g3_WKuq`Rc z`l&goxv6<2#rlSNhWgm_m1L$NT$oo34Gv(y=!0Z{+6=I2^DHPyHUWl|YX#6fQ2zlP znhdtLxFkg%NrAqRfq{jtfsw9}r9Rw$K<C?}BwLkamgJ;@0}k#Va0oi)l%R@&)PsT` zCleI1Rym1z>9$H0x+$q?iKRIuN_J_bIXO1^5EZC8A)=@T+UR4k+Xm!gtH_|#;{2Ra zP?+0Un%RJZ0YwlI_z(>d*fbyuqH74q$S=tUrlq3HWY4^k)S`kSV7da^X9Tqlw+eK# z5O#;=WtP~%3_ue`(uEW+R*pp_<@rU~A>cTG1Rzdns1cCBL`s*CL=O&lV5+y{veAd< zAUiI<hD8s7SvA1Z#W5s;GdV%R;lR<OU*{Jtc*7p4r=xS~fQbMfL*%-3>rQ_7_BNX> zt;(7q&GJZ`+pji;RZn@o@G_R1Zf#|i+*kYipu=>Rj<cU;o9ACvXDI+_;o@VQ^^B=z zTJee*7EMKrXJs5t6b0xlh_rM#@yU60+Qw!Xhsgp8*NSGfFlbH-wq^0yI%k!lL*LU7 zZpI?r_ErX0RmGjtZnrM|duMybrMd~qC(0O>PHR5JAfT{XVNu)DU-u?Hnc8w?lgyLq zN#0Ibk$z#G9=WGIxfr7&_=*?;OBvVdsB5ugWLh2+Sg`e}0(%3)wW0>OY5%K!3+0%% zF=u4%+_dKrU&nq$6*o%<@6(Q9_i8KdGv5@{*x7Jx+Tj|$A{Kk|_kI2Oam5Wz3^9^| zn`D+rO7pI|>cG}`sx0S|fnmg)<{t{D>uW3aeSLQJHBZl`O`rZdIx-riC}c3O&!76K TjY~EZRAhO&`njxgN@xNA>o~XB delta 3070 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 M07*qoM6N<$g5ll3KmY&$ diff --git a/Resources/Textures/Structures/Windows/plasma_diagonal.rsi/meta.json b/Resources/Textures/Structures/Windows/plasma_diagonal.rsi/meta.json index 453a3797223..8477687a8c7 100644 --- a/Resources/Textures/Structures/Windows/plasma_diagonal.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/plasma_diagonal.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "CC-BY-SA-3.0", - "copyright": "Made by brainfood1183 (github)", + "copyright": "Made by brainfood1183 (github), transparency tweaked by Ubaser.", "states": [ { "name": "state0" diff --git a/Resources/Textures/Structures/Windows/plasma_diagonal.rsi/state0.png b/Resources/Textures/Structures/Windows/plasma_diagonal.rsi/state0.png index 60d1c0421b3fecf74c453715810e8e5ffcf32774..0d13c29e14881ed4a09f4271884ad6ccb4de6aeb 100644 GIT binary patch delta 1110 zcmZpve#0|C#g?%+$lZxy-8q?;3=9l>sS%!OzP=1vKsE;ugTSTW$v~2`z$3Dlfk9&y z2s4UXDQ;q5U{0H8B|WiQhcCi6K*2e`C{@8s&p^*$;@7&#D;O;%FJm%K_ADq#HmS%h zaIGk@RmvzSDX`Ml&jgC;<rk&v7nh{yBPq}~GBB{vH89dOveZ|y<5GYDo0Md$lFX8v zR3tH=oJ~<mnw4Wt$z)p&Ny&=b9IKqfymVWo3f+{{w8YY!5+%E|(wv;h{H!t-KvhV3 zZS=7iXj77zmSz<hlv<phQ(BUlpJ!)eW-@sXm-6IHE*@qOyOB%TJRl>#BtJK`q$o4l zGp{7IsGumdBoU(8MjvbfRuz-`xkM-5=Q1=$@~xF)QAv4zQFaK}XCSBAAO{AD^yC%X zX7z`zMSNvoU~2VraSVyzJUZ=c-em`o*7Re3b01t{i%@V;VR8D)%vs9*{xFlG0QbDb z8&VHyZ+NU5QPRAsX~K<w&`?G}(}jh(=N~-&=4LJ|?H^*j@k-hwE8FMR#l<F0Iv=X) zpFd{bsZrap{<|5!cv8a=#`VwUG90;{w^rV<yt26dWyLx+g}VRWj^zuzfB*09tl5ly z_iBayNxkX6wx@6YnN+rpm`vgL+8cIKb^Y5XI(<^_lQMUB5_R(0tFRBu8@Uyu<J{*Z zu}GUHOjiCDV=_Te=)}6Y$9M{g1ea>pZ5MSA+^EdB|MmW(zukahvah8DW_8$3cz^D_ z=>=vNK1QB7_16PAm)R<Z8GUd%dE{eHdwglEi(c=A>vHYKoAuNCm#m+5$ua5635}~^ z`8jKEZEHB;z5K4y`Q9I=)*oe<c=`LDj9a;%Zt>iBvM1%omVVxpE00UJ?FeBq`x$a_ z%8|Hk#@RK~Zs_M8P+Q+KS3BzU%<T=67e74rU;g#CMK^Q<|CJ>v)c=t0y5^#{MNq)~ zWK4;5me}8Y!C!W+tj-ab+ud=Zcgnp}&EFEOg!ZnQbh1@(*^*g568q)=UGcK|oyl93 zLm4l{>ere$Jh@WfcR5b+6z`vM?hcu|eK!o>`fXG$YS;c*`E8R4<Lo^~-y~NQ=Xch% zUUy=4>9ak~xaogp#d*7vK8*F}5)SZOUhb4Jao((RQy6F8*_k54t5Bxs<D<TWlX;Fz zd*`Vel{~3zLUT)9)n?9esQTo(ukVZir%wKs{e8SQo^18Cmh3oV+$GDoCNKV`^-r5! zGo>Fqu{a!P^Nn#5^Yd)KTE!H5=1*T#YR@I}zu#8&yE>5HSk2Ss{{rvr#ewU>)RGjc npP0%S>y%Ac9KKKXP5giM(zA2wcjuns29*+?u6{1-oD!M<``OGQ literal 15748 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 Kr*Cods{aE2tbMlt diff --git a/Resources/Textures/Structures/Windows/plasma_diagonal.rsi/state1.png b/Resources/Textures/Structures/Windows/plasma_diagonal.rsi/state1.png index 1ae08dba8877a734110a8725e09d327a12edf277..7469c63afe4a30cb3fc6677c7a2e3dd07e55142e 100644 GIT binary patch delta 1068 zcmdm3b(m*@iY;Stkh>GZx^prw85kJ&QX@Rme0>?TfNTyR27yb#lYt~>fk$L91B1pa z5M~s&QryJAz??SGN_t|q4qt?CfP!;=QL2KOo`Igh#IJReS1?*kUdCje>{(EfY*LY1 z;95~)tCUevQedU8p9vJx%P&gTFD^;ZM^d0~WME*SYha{nWT~%Y$E5%RHYv$gC7C5T zsYqf#Ih&%CG%LrPlF7Cll9Cm<IaWD|dFi%F6}l;@X^EvdB}#T_r8zm1`B`NwfU1!6 z+UR33(556aEzK%2D7830r?ez9KhMs{%w+N&F6GIYTs+Jmb|aUvc|b;fNq%l>Nl|99 zXI@EaQ9)5^Ng_nGjXu}}tSTn=bBRvA&t+(i<XbDpqLT9bqU;c`&p=MKK@JQQ>B%d& z&FT+bi}=dGz!c-@;usRad32g%{w)WA*7ECWY!lU7Y(rhULR<qpmS}8$=Duw2mkZAS zo$~&Q+di2!uc%YRb%m(M1*e?%*UqP``IvNE?M4D;#O(*)_iaC%(Q@PA$G<<0Z@n|s z?#S=E2M_!4Ot5%xb(?TQ#rxR*g1de<@4Xnt>+t8v-}>YBDt0@6THl$)=yz{t&i{G$ z&Q<%J=G_*=?6Pjl$NO_k<<ramu?BG*`?shJC^R)khHr265xtfi3*Ddmsu8OhXUl9n zzGz;Ka^s5~tIjg0i+6uG@YcjeL#a&VLD?OBi}gnt)UWTW<6ao@X5OD|d%~RM6^b|( zJeV_$E8wl*#!2()FHiH4xnKAp?5g9FOB}UdR@%<`S7kMQ-7W6rjTeg-hXmJd+p2Y& zN$LFBvThr*M_Sv3m|gt-e_oTd{iL>W!sO3thgaJg3IwXZ&e#~pWcJf*^2yG<Ld<4A ztv2T898lBmnX4W3dh7Ov$%_x`&OcsN9rk9LhP|&S%l?U5)ruDOHdxfpI#ZnQKHIf^ z|EXVhPnm{wER`0VD6KiS`SLSo3-P;))P%X6eLSaD8M-gs)^OrwecY;Bo-G$Iss4-1 zXgIO*@YGe`m;&=29Mx4Q`cihJFH2w4T1mh1iCV&B@niegOutXdY&fy;xrBnceY*S` z&o+CNxbRe<v+kx`Ge{6i-1K#24U2_kTj!x0l{}SfOtN3O6n!!tP2_o<(Dwc5M3Y4= zF&%720^feT^X}vywaMyU{`wy!)eoFBJp7b*g7*2xZ1X(dz8CnJlyd0Fy!DfH3p{1a yGaGo0H6FVor>d|>@?G{PXPq4xua3R;`^RkfCH=eW#)^fYyzlAi=d#Wzp$P!zM!t#w literal 15665 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 UTMj#+^-^<db6e=C<+pzSf1@u^g8%>k diff --git a/Resources/Textures/Structures/Windows/plasma_window.rsi/full.png b/Resources/Textures/Structures/Windows/plasma_window.rsi/full.png index b20d5ebd5efacbed1185a649c410e9eee61d80c5..b27e173b7ada827744bc7f0468d28fd1ec0acb1d 100644 GIT binary patch literal 2843 zcmZ`*4LH+l8=r3`pUIFiBTh1#`D!y_naD>%8S$cRSZ3SV|GzdAhn$i`r6M1pkf<Ha zk*|nM>Lih`l!W6<b;O)hR8H^E+o^N)KG*ep-OulL-}m!-?*DcDkNS9TQ-SJ1ArOd) zyPJ!zWQH$wMR~~x#Kp}?CMm#o8v(-a(tjb@s8UJp5nf&pGs#*}(wEvpzbwh9#BvJ+ zAdnw&m%0=TXDEO`WFlz(B#`9gi6b*(EW#<wy;KWc3~QN%=iwyF7%CVJ=f%(&0FLK? zSVrI^>m@S^0bhoI(GCcbmk)d^lTC%&TA(e^2uCO!4#%@85jbBL*Uxmx&H)hxf-D>g z#pQA>xK<WSb|lIYi^ZbQ7!(GBlpv5mECUSZAsK+tij)8OaiIcaHjM?+m<;%m-|)Rm z4(NbDECu?~R`R5fzr<m2*!1Nn6f%lRr^ZkjAb_&8uta^22ht+`$&dkjmO~;8YUxBm zLw}d%&H~BS5~YYdNj{(NCrOmN92Wp7sILGh3>v)|iN+u?Sk#yMNz%tt$T*M&(y7bB zeYwxFg3fgCTk8^jNdh`;Nm(2{oDu1O;2|m0h;R-aL^wup=yW`41@SF&#rmy7JnB2K z@k=+x1^Q9}CY`gSxg*Bb8o#W=H`agDUty5G%lO**Z-!446J$!NiA^KBGe9bv#g<go zO2p6c{y*a1zWxcmi$Mb&F`pg$%lsAVtCzt!vq3JC9qqsT3M&%+-{a3NR^<GuGFQre zS$av`J3{fOFW-<O^wt3B4FsZK?e602Pf{uf@L=i_)u#tLr}%@>_NZhnrMn6Vval|< z;mxzXC+3xd)$J_AMo!~r{M^Pj&yov5W;(%u*9UE^{tWDxO%mLA+8YuwQ^CLfEb(ox zn#c%la@2BwZBNFyR-2I9$PT)Zgv_iYSK)N0PT^~M!{Th*Xvgfu2Rrg@dh`M)n<jS6 zUxv{xUK=WVw09$?!>OcduQE(v)isoFn95O|SUoB8BfnnBIEn65b?fz2Yh&Z%_YiwO zVLwFkrL|V0)El)<uv*uY*#zcJRRg;E<|+3~%0G_8`kg|6#km9IfEL|}B>6Q}mk3VA zaut4KpMtIw1fj0V1Wp-uSh>o%d9fKU0qxa}i~F{;*SIjQZ#wg&ggU_FYdo%vX~eoC zCrdEm`~&04{2!Tr31RIQ2{#vS9p0;ULFQ$^wHxmNt3&E1wB*Mx+*gg85YPR&IQPDT zy0I&6i_|MczaCAK_{gl<K7;k|lt&+2@tTn<xBHtPYU&~%Eb}Per5fvXTYj`HM3WYh zm(iS4(DbS8Rq1hfbDVOw!TOZ=`yQb~8?OA_DQh``)$0x;9FV(AON_qNY-VF_By17t z%<IB8PnO)4O}y^Z_ed57Y+?u-HO-~=B~>XLTJ>vRnW(M_^UM&EdBs{UftA0Fcgq)j zM{zohUS9cF1KD_M4=u~yyt(G2Gf(Co$dK_o`?!?;vC}_XBrO9qKi{YYOZMsD3O3v~ z*Yy7l`3kuK8ev?C2`&-#Ddbir`YU=GVfMc^>o2>ndhU!U;iL>Ab7!6v;pKbl0k^Br ziH!Cmg#i8CFye-=S*ew&D~?x|imhIR6yst8_JkH%F{(FKzAdU|(Ef_^SMaTUIUs=E zi5{$18`&Rdl&xJPq8u;<(6%29q|QwS#fegR&#Pt7>#d@uuA?~s$xPv>E&8dBUe#HV zU?yd_xY(dp2k<%@qdSOBd`g{a3C3^t4V98p-C)tnR5a!yXNsGgJtKC!kR_%%3GK(U zfqh=0jSbf59g4W~a&6bR>02?tx|0g;3(#pr#5L42Kg-lG?<kCqv^bbt63tc&oj-=S zlM^DU(9*w+DD8j39V(HYm)_l=#-MriwLT+P0|jLUR+B2Noa90fbGUx+uG!V7Rr71@ zP9W9s%<(K$&Ro3OYtgzpjU_^#PW_LjWRahp^H3O`Ll~7$M!%HP>N5v!X7-s-G+)@o zjod{v324l`!?_)6l3%g2v6(8Jck4{6ttL|Q-wl-PqE!9P&z^ewaq7@-7)oo`i`0G1 z)QsFM5A|z={pF|>OMvyHv>;?adDFZNf7Mez_c6J3m8N6Ii!hil5_@Mu_lD63<JYGv z-&<b->+j`zuFd(I+}VLub0#u(rVCB!%1V@OVyfUzWq8fK;8Kov)DPW8!}IyF)4juM zkG+4~4!@d~xAPa)`9lu}bwqBSMb}nCs#ICVV(GE@#2ou0cz;nzcT$;Q87RengEZK0 z8AbM)>`AXuCAk=6N<h3l0AJ%dH-oz{oE9*)Ci7_@#Hd%zV>@MD$2G`<rQ{miD$%p> zg{#QCmuq?HZJkf|QSei@j~v{~B_Urw+t0&UK+h>GfHdjQ3*-$CoOLrH7iOMg&TgMm zI{0hW!tM`dM8E5KQkfRw(*1{`4sK2H|E-36e9nA*QRD&rit%d&tBxE#nT|bDJqml1 z&PXa^?vd9kSLwWrm4ZI+4j|}Ua6jH3%!#)>e8K)wlZA(Oe1A>ftI{hWFD9QWoUIdN zq{S{cDUBatj2(EM*0R-P*Y2cnK->QZ6MCklbd8JOh-}k>k8)_yv^L!vkik1{JgxnP z@cSYEZbluRka)6mAOUjDsjThhfc#`vH?bf(uRoi#K@0k8<``7ZvN&8lr|u1GtF4BD zC$f>RWwmx#TJ6}#WKUY2AVLPC8Wgb5CRUj~3OmSqzWZHovF^o#%FMTsqk#{F`m>B! zM>sc<Dem?;&sMWj!~D|ru*d`Hxi)OGQ_vrF<?+ON@s8daeN*1)qq+|?{8K|5Zr5tm zY!i_1WL8#3s<&=K|EVd%2K`gpj4~cqi^n(h3U~R6=pR_}3t=^H%OO)wXHN-c5<<4{ z=Kq*VXODh*HWn_39SP3<&~(SF^~jd?ixoOBOxcs4Z1CIXLvEhYZRl!H?rGMF1bg<& z4_@rNxk!C;BE&|H&^P90(Nlhz)8Jhe@2eujN=L^o3f2Wpr>sTAc#9)0PuV{jKk)#k zb>rTR*2T#C$?ci4s6R9h+Ia@9)4JT;a=&d5?)^d25UOvSaq_XPTex1RI?3igoy796 zR=poHJ2bALd-{H_X|J1nWgtcq#R#p%pMRORb~1x842U{2kkc>EZB!jjN>LgKyScdd zAvrfHP*kFT?$r%N60-H|sS|&>d$(|5t8=Pr^Xp@4lbHEK+N&x&ip7-)lj%Q27A&Y8 Xo3pg6H;px1`Z0AUdb{umVafjm^rEZ; delta 1581 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 diff --git a/Resources/Textures/Structures/Windows/plasma_window.rsi/meta.json b/Resources/Textures/Structures/Windows/plasma_window.rsi/meta.json index 4a033410903..fc08ccccbd4 100644 --- a/Resources/Textures/Structures/Windows/plasma_window.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/plasma_window.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/9c7d509354ee030300f63c701da63c17928c3b3b and modified by Swept", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/9c7d509354ee030300f63c701da63c17928c3b3b and modified by Swept, transparency tweaked by Ubaser.", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow0.png b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow0.png index fe379e2fef50ab07c64a4f9ff75b663ada0ee10f..9a55b8c3aff60f63f31c71a75735bbdde89f2686 100644 GIT binary patch literal 3469 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 aMWyS3!+Jq)aqh;ikoi%YBSj`2VgCgj=k|91 delta 2050 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 diff --git a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow1.png b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow1.png index d75684f5d060b5e3ccb613eb3af2ddd2aaffc192..1227c1d01a3fce183e755ee009c53acec84755c1 100644 GIT binary patch literal 2334 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 XgPS^ntdeaE|2RM(J%m=ilDYM77EP?w delta 1079 zcmV-71jzfI63YmXBYy-ENkl<Zc%1E9-HzKt6#mYPouo-ffo`@Sgesw`MQY!m5;xrU zq7Ts*=yUJ_RiB}i5Vu^egv2!x0#va`l_+6pck9j1+Gh?Ij#Jxfd$%2%F-|^dHDez~ zGxO~?=bZRV2#)dO#&^$hx5U6~E)*11*&iO>e_%7dXY=7YaDVgq?Ii%&tVtvSLB)L- zX!0xVhj!yTC!lvtBm9Q}y}qFo02qi-0F?hxwcU1n=LGD1H9B6tj8+_&2mn@pMPYy6 z^8sM_XM}6_hNCLGEu0f@ba1+VHsj^yhJsnmB0wMz=%a(vL6zNheCGu4T$CQEApi&< zX&V8=b3v8ec7J^51Q21h>0k701LIpek^ehdLIADezoPzS?C*~j5RhI(QU4;l9a=zu zTR3-u0A{KF6u<(&m315Bp1sKa&S--Irm1#@cyUR48M_tQK)}qhwL%*RaEh%bz&g1) z`1<)bHlM%u{TGjH=U{`aSHO+{*AsA!ItUo2`qP5z<bRoTJfG(5&QJ#d>4YVpz|7Wd zkh_=koujTTkpGXCwfVkt)I@;vvu*x<($Cx7qlPa-`Nda}P;~7UTOS3i6<`Ft^mWmT z%H(Bc9WOEKhBW~km?dc_QbfEokO&YqLZk=^&{v2^la$%&ScDC%2_Q|s0e~1l^%VM_ zX+N<g1%Hf_pH}lS8-B2zfgP*~kTY{jkF*B>(HrK)3l@op0Fn7&NC4np)w;~)8ukPL zXVDvGF|k9HP?CiaARtW~9<wR4*^X}uYXW}#`{$v8qJU4-P>-eH5kKG)n&=PHwxsX; zouu^y?%cfld+t^)(~IN22>LuX;pFb%k5@k~K7R+m&tL!IJSS)(4=8<C#|zo0Kv=8` zn{}WG0?KoJ6PLFEDcUMd&{QT^r~(nQUO1(kp<6Vy1=cFa=KZAO^FHK>v_%E~*%lB$ z$OBe04q=E$tIiUzz-9|%3z&Kk59fWLH2|FO>rQTg00k-_fP{r6clyKdm>GbK^~AXf znt$2?YXxL|z_x_JloQO=@ONSGTo`nYCUWsHN=n!1Feuy(5j3HIq<)XI57?$KSn31v zVQ|iY^R3XZ56DIVF>jq8DVVXI7&t}~1f<GfSp^8kXTJHABPg(ealQ?lOYrfHZ=c@U z`!XOOs<-FAJex(I>X910Jwciw@mzGVJ%3-&j=I45{Quw+4<K;%OmJo!rHib!pdADN z0IAp?P+pZ81*9TOJ#bEdg4+BZB+e2mu|NkEKp^s9#Ov>SK1_a2nJv&g1r#A$LObUK zJEwrnEc94iCN=M*0?7YZ)8M+-?@jd}YdTj>@0J1#jDRH!UqyU$Fh9-wJ_ta;u`u`! xDqxofV3!8~yF6f*2PD|#0oCZF0-WUm{{oTD)vp-+rab@v002ovPDHLkV1nA)0NMZm diff --git a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow2.png b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow2.png index fe379e2fef50ab07c64a4f9ff75b663ada0ee10f..9a55b8c3aff60f63f31c71a75735bbdde89f2686 100644 GIT binary patch literal 3469 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 aMWyS3!+Jq)aqh;ikoi%YBSj`2VgCgj=k|91 delta 2050 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 diff --git a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow3.png b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow3.png index d75684f5d060b5e3ccb613eb3af2ddd2aaffc192..1227c1d01a3fce183e755ee009c53acec84755c1 100644 GIT binary patch literal 2334 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 XgPS^ntdeaE|2RM(J%m=ilDYM77EP?w delta 1079 zcmV-71jzfI63YmXBYy-ENkl<Zc%1E9-HzKt6#mYPouo-ffo`@Sgesw`MQY!m5;xrU zq7Ts*=yUJ_RiB}i5Vu^egv2!x0#va`l_+6pck9j1+Gh?Ij#Jxfd$%2%F-|^dHDez~ zGxO~?=bZRV2#)dO#&^$hx5U6~E)*11*&iO>e_%7dXY=7YaDVgq?Ii%&tVtvSLB)L- zX!0xVhj!yTC!lvtBm9Q}y}qFo02qi-0F?hxwcU1n=LGD1H9B6tj8+_&2mn@pMPYy6 z^8sM_XM}6_hNCLGEu0f@ba1+VHsj^yhJsnmB0wMz=%a(vL6zNheCGu4T$CQEApi&< zX&V8=b3v8ec7J^51Q21h>0k701LIpek^ehdLIADezoPzS?C*~j5RhI(QU4;l9a=zu zTR3-u0A{KF6u<(&m315Bp1sKa&S--Irm1#@cyUR48M_tQK)}qhwL%*RaEh%bz&g1) z`1<)bHlM%u{TGjH=U{`aSHO+{*AsA!ItUo2`qP5z<bRoTJfG(5&QJ#d>4YVpz|7Wd zkh_=koujTTkpGXCwfVkt)I@;vvu*x<($Cx7qlPa-`Nda}P;~7UTOS3i6<`Ft^mWmT z%H(Bc9WOEKhBW~km?dc_QbfEokO&YqLZk=^&{v2^la$%&ScDC%2_Q|s0e~1l^%VM_ zX+N<g1%Hf_pH}lS8-B2zfgP*~kTY{jkF*B>(HrK)3l@op0Fn7&NC4np)w;~)8ukPL zXVDvGF|k9HP?CiaARtW~9<wR4*^X}uYXW}#`{$v8qJU4-P>-eH5kKG)n&=PHwxsX; zouu^y?%cfld+t^)(~IN22>LuX;pFb%k5@k~K7R+m&tL!IJSS)(4=8<C#|zo0Kv=8` zn{}WG0?KoJ6PLFEDcUMd&{QT^r~(nQUO1(kp<6Vy1=cFa=KZAO^FHK>v_%E~*%lB$ z$OBe04q=E$tIiUzz-9|%3z&Kk59fWLH2|FO>rQTg00k-_fP{r6clyKdm>GbK^~AXf znt$2?YXxL|z_x_JloQO=@ONSGTo`nYCUWsHN=n!1Feuy(5j3HIq<)XI57?$KSn31v zVQ|iY^R3XZ56DIVF>jq8DVVXI7&t}~1f<GfSp^8kXTJHABPg(ealQ?lOYrfHZ=c@U z`!XOOs<-FAJex(I>X910Jwciw@mzGVJ%3-&j=I45{Quw+4<K;%OmJo!rHib!pdADN z0IAp?P+pZ81*9TOJ#bEdg4+BZB+e2mu|NkEKp^s9#Ov>SK1_a2nJv&g1r#A$LObUK zJEwrnEc94iCN=M*0?7YZ)8M+-?@jd}YdTj>@0J1#jDRH!UqyU$Fh9-wJ_ta;u`u`! xDqxofV3!8~yF6f*2PD|#0oCZF0-WUm{{oTD)vp-+rab@v002ovPDHLkV1nA)0NMZm diff --git a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow4.png b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow4.png index 051ddb5681d8fd7b09d02ae046234981b17298eb..b42ca67a1706840170eeb4a617d3aab4f84c9a69 100644 GIT binary patch literal 2402 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 delta 1141 zcmV-*1d99O5{U_rBYy-?Nkl<Zc%1E<&5j#I5XXPjGh?s47LX{;vM5p{N8-!@i9?Ru z;lMla0z3zAz$>6!xN<~_!~=u~VJS$!X05Q<$oOMEx;WUzGwZM2?V0r8_<wPCSI<=U zzpJ`xrpJP3eE0B&?|UD7{72A|=INL3>7P$7qp%aa7U99Hhks0S-3M2%fBa+b8yEe? z<>C^dn!@B|Iu#>Eq4%~F*Mk6yQMI$N2vJd}&0M8hw(5Ei0HLN5W<#5rP!N!%XvGCe zC7~_^G$hnudY&dWQB}~Ts9*uGW*=}tJqR!u5hKm}VT2MCg#`=fQnCevW!~(zFp*q$ zAxd3+sDTAoY=34Gy_AsA@uSAEs*VNv%N{E(uy=caur&;>xWEADl%?D|0V6vMw}-(3 z7ExeWmVWO9v`xpdH4GM9pu@gJfsq{=wuZri3$)n7Jzz%|T)}=>0PG5b1s5oF1B5yd zpa@_kRGFNmYdREM07~2dp$-H9sO~cR1xn8ZWp|hD_<!m1{<mwIbAz0juvHq_8#_Mw zDExhLmY!&;=GRxhbiRJ^#aFIla6uIout-)|&EnKf2U!AYE6{r@ROJHmjcVz?0)mm` zzq*leMY?Z<DhL=bi`NA#Vtcb2L=r5C@Qt_b0u|_ULRA(p-vo;;AV$)5uhBx)s_KM7 z#^(oBS%1I^6x1|~0Wggqtw{HcQN;_9MXK7(yMUl^mM{efT9VpWysth~w+bsRph!a# zy*uj1<M<-GV`IHX33-Ss4tYRD_dVnRR~rv`z^q;y(_i3_2UKv+Lmn{y{a@q(&IJ7Y z{OKbAWNFTA)3GBvG;PyK0X3M#3y)KtEUz^+Fn<DP0zNtU^bH~zU~Hlmiv?mJ#b5z3 zk-Wc2#tYXGxWSnKi7=o>Q&AI%QMIb67zs5MF;+s*6thX@8_q*$+>2fU9DO*u)$}|~ zn)kyf=$H`T=p=0Z^ILqrNybyx5xBvbfOwFe&VOeOLY7=)Vp9brQL9!&PB+P1^}E8E z0Dp6AR<b^s`Mu7|eTBQ5WUl&M;ZA@MuWQde<~<OKeeyC_{jTsIhdiSM0%W>Od9Pc( z+U5@>T0nj>yUPA2zQ8;00%fHlx%?l1F|$L=?iJa(vR9O80r{^t@{_;%bXc3oLpcQG zC!Mb^&hiIq+G~TV_kdE*@~gl*zX^JOFMq$``+{p@U;Z!P4F>{z55PC-LO^%TZ}$fB zTca)nKrwL|vzkQhlHUq7cq_MdrCThI*LKOBPy-9dAD^u&?~=Qr4i<n<5^7)pe&O8$ zR24-U0<t(lFP1glCU=E*0<tj!6Vc3KYt?E9^DoD(Mj%Ea`Foq(Rlj!v?tIqDfNl}M zs2`63rh_aY5SrZ}YWEtgZE{!r-U%2!n`YTqLmOuyB256zGy<5Msj*YN*d}+?@120; zGE<u<KrF)1tW^@V+5+7vcZGKXp8xgiVXnIF@%(s)+zI~zrmYe$g<tZ300000NkvXX Hu0mjfN-GyO diff --git a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow5.png b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow5.png index af6c01d90690ecd156d8d0cbc111f5e7c5f1a291..bb7ce055738ca90ea7cf0284e2233daef1a6373b 100644 GIT binary patch literal 2294 zcmZ`*3pkYd8vlPYV>0A&R@&S$2G82UH!g>aAw-c}7mp#gW(JeFHS=l4Ng1jwMU7i$ z_2ib_ZAomBq=emKokFU^qT?v#Rw0+L9h`55m3rF$^Zak`|NXs}-}`>g^QHQF?^03H zRssO1c(}Xzqq~!AD&o<#ly#sF-5{a=E*DVVraOXORGGmZ(OzC)3wl;Wr))g>CJS8& ze0Q1<0F(2w34KX1s00AZWd#Hy!CrePbRNe%iox5*G#7LDauiieL600J5=9hq*jyn+ z>_C!hP|&kX43mg*6(r7q6zt_o+`$tti8khBb27<MiAW?;1&nBlzw6EwIC^s+#Ucow z0>dJa$XsM)&J)DI7It=aFxe8ev@}CC%!CPCBuZ??6&fxZ`O}UoQ%D!E_y~)~CCcnZ z?c>EG4kVJy(dt-^lR;ng!;crR<z5(cn8{{xm|R2%TbNtGpTi-n=noNcg)4NR#K5u_ z6h{6m%!7~6tx=}j#ArM#`JsW*<$i?-174#5TawA!%*d8zmUi%JerWhq2AzVi5H?dz z+-g2@2A$c+$5NTTi~=@G#w>*$#f@<wiOm?y=%{!$LUQDbSX>5AWJ`sYwLV5KOFuSB zg+Jq;D$ANe^JfZq?06aPj+QpoR5=$PNk3Fz84>(h#9Ha62;W#9!b3Ysz@mF_5vG7I zK)Y+%<BGq(*7(%c2j_uY7UF2RV&D_;8q}KVP@Dybh$n~(kXPaZjen`KVrH4rH66O# z{&M=!{&!TO!mHnsqtawDD*^z8bsnzH0b=M)r~_}S+lIW{Fnjonrh>nNk&!y9C>ejM z>o(r+;ZQ_f#9Ncc2HNL0WJrH1G<I^!arJv~H?=N5s=cTACXGE%Ha@n^J81XVgVzt* zE?9}i62n3@<`ZV$zAuK~-Kll5q7+p9!!}9n7Pq-N%li+yc4dao)019RjbT=M=3Cnf z7Vq*kbA!JAo;EnO0Jo<Qnix&NI+IJSj^*8>i=m;loWq$R<JD;iGu=V^LyGS0&GnjE zoFxo2{-O8nbq0b7PpUt3Yr(IlH|ep%_>u*={Eca2t2U;`$W<S+q#G8WE*yLJ`bTE- zVZF>VuP{_=q8@W_=`|o+CKYQ)ku0@l6@5`+rkcchPG1_-3EnN5(t{Ne{dWC3CFCWj z9v->fJl`s~Fmk?OzIE6Js5txVz|^D}nx+$<KfxUPd;TykGEtajKeP@QKb}(^0cvIw zj#Yo_5?|DCQpfF1MYMM6_B*EttBFdi%Z_n78mL5pqAzyv<(16Mhc^~RW%V<*Mc_40 z>knSW2>f!dcYx9xY}1oYiJkVjyc|BFB2ABh|7ko)_8RO`tVqYlN=hcvV|*Hr0l(u8 z*>(x<yKV&DzxcHD{e0l)&hD5B2*#C_y7<&38fr_f+Yce`T4%f>IXHLe-dl$0Q+EI5 z89}(+(rmEx*Q<@iiy_vaZhfJ^(5i2`PoH0o6;~CV`+<B&tC!}1X`dU+o4ZSN3&Vo^ zfxRj4@A<k2Y5f;s%m(bXS7mP4$e9Dbc&bF6jp@`o!>!!BwcxkspenmFI3Q1QaW?D3 zmzxF*xsq80@%D+v^>2Q*$X4Fs|CMBiWT&+5tWC|it8eP26W<qdxIW{R>g@eTA|BS_ z!%H+8v;e1Bz2P3dKw7YHP_<`aYM}2<{jXt#fj6AX;%Fs(pbb<))(0DVqn4)2bFi~B z54Kl!zWikr=Y;*&HPF70KD&6d!oDPLZ_?ty`ByK3VsAEeW_TV}bXSpH17-E&I>G~w zY>V?fuF&R9T#la&v5xe+-;Y&ynJ^%1z5|_}w0Y~D2TCB&@HRryGQRi>3nIWAuEDmD zAU!?m`xVIPz!Rx@O9`7qOB0X;28oz{9SPM!KVFA;$=USyrB{;wwdpGtH8QJ{W<8@% zX+0a>Qj7md!*?_0iR5`({eWsm?*)a)Wc6!Pr)y^jo4O5Dot$tn&=c#9V<WXmrCJ$Z z``&<X5lwDhg?^0N7b-?-D9~_%wlnuc5n&EnLvsXPN6*cas6i|o;k>4$cgys5{%D2p zM!w4XQbK<m3sIC>B^%Mh#kt>h=3Lr{0om0~nUMOP3gw6N`cP#k7I&h7I{!QRSZ{+F z-T(7DQGo;0Vf*sxf^vQx{<eA{Cm_FP_F^39B1kPw7m{<s*WK(O029m$j1uc<;Pbpa z&GxM^W{O1O7s+C~2MU@~`&+J)Kw*>4(4p-ZZi$ED4;!J;-e=7=X&}MHwPkv;lNPFh z+5=PBC;N?4jWDc7-Ma^A#=2qHNuA>H&A{Y{#la<eQVC>3xRU-DB<bPr=_leR*X<hO zfB#*4^rlH{SNb(*u8v%OpHDyLsqs|D*YK2q!4cb<3~h<N=j@{HSh(&iWkOG)2I<E( z9yK7_#XdWvqV*rejYNSbt^k@-?Qc?KS*J0jIx*N`LrE`bPPO3#C}d$@m`V_i&IH^E Wl?S(|+)b7Jb9lIUyOz5|ru-j!M}vp} delta 1044 zcmV+v1nc|u5vT}|BYy+$Nkl<Zc%1E<KW^JF6vjW&k`k**(c18k03G53WNDY6=+pz` zFg-_so}z0`&?zX20-f63*|NA!id2zf$tF9<v?y6}8ko-{9RGkIR49ddA0PieF<9o) ztIy{rFWy`OKzQuO$z>L`p0R+3JmL%~z$V)5!|L;Izw|$>Q-8j<&ch}+>Ae08NI(Dp zrkgIGZ@R!Ltu`0j=Yj=5*bh7wNMGd%i2#s$+U-5l<y#lv@a*7z|HzBG@1jvMNWp#1 zR9-_9Fe-xeCUA9r8!^uKWH|M?#{fX8_Aev?&Lke{2iC#50IjIi(XYAB<~3jI0jl<m ziC|rTqNa1Bfq%U1>(?4aYaei+4*;;J@x0S3u5(JAAYix;a6kYyQEtu|`&<26O%oUb zh)k94fB=d*gG<H(#V8P)D%BwYnpm0#Y}Y7&!k}J#ni=o;bzJg*x=BuNMV=8{@Bp1* z!|!U^7%q8$6`s5R?BQEh^Y#7U<2ui;yPjW{C+`6}0e@`2fNeG<K!jo(?^V)Pp%g$j zGS<?=O1@R71W<<7)wC0aE2spR8?P^9<X+9%-a1rM;dw2yiEgyo<6E)gvvDXqKx^ma z8duw2KrV(#+l0yk<~ugI2dEks5`jpBvCRw<PzbQJbgddMG9hKkGJ>)n4TS*O2vF2M z0C1l%|9@p`6!rrogLDeO!!Lq2cm%{Az$W>@Mvj<Dg#BPVx`?|n1psD!CQ8)_mRNLl z5?L}xea5(OWfD&D8bee@0o4SgkfL+i_SoF-e*XE<sr?TdgsKmiQ;Y&45wREp*WbpN z-AT{DR)i6#JYW@5Knidv^4I{okoN)lWQPUP&wpb80Pb_qYI8wQ{-dB=3*-f8Q(o?K zmJCvK-$kSSBQHKYJGdt*|Gyy~2DN!W$Rm-6IJ=p3Z@wphM0Rz4Yuy8gJ3*As`a>Q8 zc?^InP&9!ties(C;imEg^#fFo!R<gHK#ZEn(CQcfdu(Vq{7?*lJ;>Jr<*eGE2dhvH zgMTE4nWmxK6jkVAG^MRUyeZmv=5O6_1?8f&>8#%w<AL4L*iHcJb5h&!1y9}sb^_Rb z0o%ABKvUd6RCAAUTo3@L4~SH&%BBgG5nK^K(G*8OHhXkU04&E5EYc)lH4cQz<_78~ z$oXc8zL!wKs3%zW06k8iK5(KGW1t6H8GpgL2Q0-4l)e~S`e>?+ZS#QHolIwUG8LJS zKrYCN5SlTz%>%+?KL#)j`+=7XQe-!?uF9+VZgBfNAi2z<<T8Cex`@NDAB@Gch$q;@ zm!sAN003}+F)orp>O&#}%4dodw#x%li~#e1&S~3|LJB}XH=zA)@E=!Yg2FInTMc3W O0000<MNUMnLSTYIQ|QD1 diff --git a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow6.png b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow6.png index 051ddb5681d8fd7b09d02ae046234981b17298eb..b42ca67a1706840170eeb4a617d3aab4f84c9a69 100644 GIT binary patch literal 2402 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 delta 1141 zcmV-*1d99O5{U_rBYy-?Nkl<Zc%1E<&5j#I5XXPjGh?s47LX{;vM5p{N8-!@i9?Ru z;lMla0z3zAz$>6!xN<~_!~=u~VJS$!X05Q<$oOMEx;WUzGwZM2?V0r8_<wPCSI<=U zzpJ`xrpJP3eE0B&?|UD7{72A|=INL3>7P$7qp%aa7U99Hhks0S-3M2%fBa+b8yEe? z<>C^dn!@B|Iu#>Eq4%~F*Mk6yQMI$N2vJd}&0M8hw(5Ei0HLN5W<#5rP!N!%XvGCe zC7~_^G$hnudY&dWQB}~Ts9*uGW*=}tJqR!u5hKm}VT2MCg#`=fQnCevW!~(zFp*q$ zAxd3+sDTAoY=34Gy_AsA@uSAEs*VNv%N{E(uy=caur&;>xWEADl%?D|0V6vMw}-(3 z7ExeWmVWO9v`xpdH4GM9pu@gJfsq{=wuZri3$)n7Jzz%|T)}=>0PG5b1s5oF1B5yd zpa@_kRGFNmYdREM07~2dp$-H9sO~cR1xn8ZWp|hD_<!m1{<mwIbAz0juvHq_8#_Mw zDExhLmY!&;=GRxhbiRJ^#aFIla6uIout-)|&EnKf2U!AYE6{r@ROJHmjcVz?0)mm` zzq*leMY?Z<DhL=bi`NA#Vtcb2L=r5C@Qt_b0u|_ULRA(p-vo;;AV$)5uhBx)s_KM7 z#^(oBS%1I^6x1|~0Wggqtw{HcQN;_9MXK7(yMUl^mM{efT9VpWysth~w+bsRph!a# zy*uj1<M<-GV`IHX33-Ss4tYRD_dVnRR~rv`z^q;y(_i3_2UKv+Lmn{y{a@q(&IJ7Y z{OKbAWNFTA)3GBvG;PyK0X3M#3y)KtEUz^+Fn<DP0zNtU^bH~zU~Hlmiv?mJ#b5z3 zk-Wc2#tYXGxWSnKi7=o>Q&AI%QMIb67zs5MF;+s*6thX@8_q*$+>2fU9DO*u)$}|~ zn)kyf=$H`T=p=0Z^ILqrNybyx5xBvbfOwFe&VOeOLY7=)Vp9brQL9!&PB+P1^}E8E z0Dp6AR<b^s`Mu7|eTBQ5WUl&M;ZA@MuWQde<~<OKeeyC_{jTsIhdiSM0%W>Od9Pc( z+U5@>T0nj>yUPA2zQ8;00%fHlx%?l1F|$L=?iJa(vR9O80r{^t@{_;%bXc3oLpcQG zC!Mb^&hiIq+G~TV_kdE*@~gl*zX^JOFMq$``+{p@U;Z!P4F>{z55PC-LO^%TZ}$fB zTca)nKrwL|vzkQhlHUq7cq_MdrCThI*LKOBPy-9dAD^u&?~=Qr4i<n<5^7)pe&O8$ zR24-U0<t(lFP1glCU=E*0<tj!6Vc3KYt?E9^DoD(Mj%Ea`Foq(Rlj!v?tIqDfNl}M zs2`63rh_aY5SrZ}YWEtgZE{!r-U%2!n`YTqLmOuyB256zGy<5Msj*YN*d}+?@120; zGE<u<KrF)1tW^@V+5+7vcZGKXp8xgiVXnIF@%(s)+zI~zrmYe$g<tZ300000NkvXX Hu0mjfN-GyO diff --git a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow7.png b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow7.png index dba4e93a8aa3680156ff4af0e3309e4a6bf365a3..ea9f89c32f3762a6d78908ee9dc999c02cbc246b 100644 GIT binary patch literal 1240 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|_);T0(|mmy zw18|5AO?X;!IOa`XMsm#F$06fED&ZCw^H21z`&fB84^(v;p=0SoS&<gn3A8As#lR) z0M=zwVFhI7rj{fsROII56<bx<DuGp40ofp7eI*63l9Fs&r3l{u1?T*tR0T6V13d#J zJ1zwU1)HLjG^-#NH>h?X&sHg;q@=(~U%$M(T(8_%FTW^V-_X+1Qs2Nx-^fT8s6w~6 zGOr}DLN~8i8Da>`9GBGM<f6=ilFa-(1(3OkN%^HEwn|DMi{Jp_&Xi=hJq4vjIbd5- zlJ!$_Qgc)DN{aOj^$hi~=_|=hL%1-n7#bYFfYArZ0JRxl)#h1Hl57GDDc1_1d!YUU zIy4z<Z*fVAK9T}`BLf2qT>~RsBTId_|A5Z7NlCUU$t=l91qU45Kj08_%qc+?1*r!G zK~5$pWUX=%^U`gVDs)p)(-KQ_N|fvh$}{s)^2^O_^dYKHbwfl^4Ykq7V!sW@*H)21 zsm1v@rJ!)PGcq%=0fz;OC?W<RIwG*@Ko&*U5s;Bzk`GK#MVZN-c_pbu1x3Kr1+fuo zA8r-sW+5yO&C4vYGlCj`CXA#DDR!(Ji%QD#i?Tz&F@Xq1oJyd^K!Ox0g+h`)IQW6- z-;T>hAD)-&xIQ&z#sf3hOHUWakP61Pvo`WJ2Z$VTGCL`inJHoEduz?aPyyo|KRzA) zGVR^nnM|E;H~#qf_J6ZWMSZ;dA$v}n#<dNc+LNS>8n&1>p2fp7V~T(C>V4&`{oxH} z8PAOm>{B>9pK*($^?b%}teO9K7VzHs$+JP<<8wMg?uB#d4YiK5?3pu~%j}rna9{c( z=^(x3vt&a2glFd&ZY`L5p5b?sNj=*Iwzq%Y@*eol9>5&-Kfa)vS*t-Shmg_pw=CtU U`+rnh2UMzfy85}Sb4q9e02n!yC;$Ke literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=`#fD7Ln`LHy|t0IIe>@Z;)KA6 z=1CK0C@U{b;Y~~A5chA|eJ_6b<k|X_KNHUV{pI^?`~NDRXZt5VR1aX#U7*<@c0t5} zJA-Qhs|o7`rddoGjJ}Lp8q#LkE%^UAIBq{9lHf9iD2HI&deEhheP;~*QhV^V`2yVf a&hkEc%2PMjRO%GaCk&phelF{r5}E+k@>Q(> diff --git a/Resources/Textures/Structures/Windows/plastitanium_window.rsi/full.png b/Resources/Textures/Structures/Windows/plastitanium_window.rsi/full.png index 629274889050ed48d4114f458c11333d259d1574..8a6165b2e1e4c54099b3aef476e59613b61d586e 100644 GIT binary patch literal 1500 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}e5nzhX}-P; zT0k}j5QD&_;K@Lev%n*=n1Mm}4+t}^JN#w_0|RqfW=KRygs+cPa(=E}VoH8es$NBI z0a%w!g%yyQn_7~nP?4LHS8P>bs{~eI1!RMS^_3LBN=mYAl_Got6rA&mQWebf4D<|? z?6?#Z6l{u8(yW49+@RWlJX@uVl9B=|ef{$Ca=mh6z5JqdeM3u2OML?)eIp}XpbFjM z%Dj@q3f;V7Wr!g#b6ir3lZ!G7N;32F6hP)CCgqow*eWT3EP?}wJ5!S3_7s#B<$!HT zN!CxzNzF~oD=F4D)HBq_rmrM34dKGPVrXyx14bVt1Jq`KRhwr)NwNtrq+Bb2?t%Ib z=+I=ay~QOd`bY}&jSLJdbPbGjjV$%y{sTJSCMDUbB(o$Z6&!GI|A0f#F{cDo6r>&$ z1UZ?YkhRK5%uBabs?beIO-n4zDN(XZE6vHV(TAu&)d>+rHPA*Mi`_OLA6rERr55Ms zl!C(C&dAcz1{@A3qKMFk=!n3o16dSZM?gk?Nj@+&6=f!S=9Q!t6%+we7Q{xVeYjPi zn}x7EG%vHn&IoD%nlO?sq?oaCEGj9_FUk%9#{wh>aY{ptfCMK}%7i3)aL@zOy&ad0 zK0FWEah-lG(*ew^Up-wMLn1iehVS${>>zMgA!|~Ol+-zg?v_PU0xmQBKg|B5zM)O( zj;o-MZp-Gr$sd>}Y=5*iO=i6=yLLc@N_N@v3Tx}?-t24Z>Sx+73GLatd8;5#qR~&2 z-eXY#^Ov6ZTwD3uK#!qe%NpOKOdcN7Un#Ui?pth8Hck7`J=62&{AIVVU3T+!ezoZ@ zS34^v<~oI>VD@*$4SYQ7^w!JvFXB*gHJhNCYV!Js{pQI<oxO%0TFf#rQWrjKw`o~x z)DV*ROz&#aw!_cEoAU#co^{CfACvQ9S72*p4c=LK;bmn%Q}6fogRBMu49x{Qlp3Vo zHKy&AYkB&hdH3ww3j(_q6_*t87&dtXT3@WNGSy?a!+dga+Z25(3-&3FTgta<mdP9! z_}*}<<<pFdyI!1m$*xy>c|+pjZwxF&YcJ?`cbu+ujhV{GHT~pjhE+Tvk}Hf1%7xYP zS8dW;DzGk!Y0u?976$Sn-?|H4ddEa^GrX?1J-&&<wZtQOfBpOUsVBMwvKsTg7rbk% zu9A_mJD$aVqI6QIPgvkY@qibiOXl+>Y-5kud#K@@hT5c3CB{n@YE4_yWKZrpvTXjX z783^j*-kgKm^YOi>zS-FU1R0x*WNjqtC<>_{<GManfS@cpZaWJCewN2P4jPtAM4eo o=A^&O5Pnp-@0}cnrM~k&-l*+=%kQf{E(MjWp00i_>zopr0PH#p761SM delta 467 zcmV;^0WAL93;F|)F@FSSK}|sb0I`n?{9y$E000SaNLh0L04^c`04^c{s^Z;}0004x zNkl<ZSV!%bJx{|h5QYsxVxz6Qu<%g|D-xj23=Cxf{trKZ|5I4#z`$Gq5-XI?xoOMB zRPvsD!H(^cgwQbLku3Kd`}{ig)t5ObmnWh?NI+w4MVU6E(SL`iR+p5Oj-SRpzrKG9 zs7tAuP5MtSqPelItaMBpI|u?2Ft6;0<C7z*WxXagx0>`Dz)n*b_+XoT>lgyi;k<L< z><DD|mXZ_~KHr7_?tnUPe7=n{puaj^Nw<4NbynK#1FC~?&zWE_jLv`|K;LtKLA~Cc zSl!+`Q%$LOyMMnqZMAl+ZFzj?n*wT;ih5+jliyxnE>c56cJ~iIQ9}eZI2ew{{xC!c zWu2VSMa09=8HTPf$~rmF$GUt2>wjQcDE$VXUrWHODFu`QN&%$+O8{;_{p!pMpI<`& z?rAOzUnp77$GUuj|8*S~mXH*gk}aq<0uS`WkwqYxpiH|wwh|w7;6h(WYINI`lp2SS zJD|=RpKn6|cZjQGXe9}X3!iUqPRRWAr&%Px$4ov>m0bWrd;!SfDtIM>njruH002ov JPDHLkV1f$)&w&5{ diff --git a/Resources/Textures/Structures/Windows/plastitanium_window.rsi/meta.json b/Resources/Textures/Structures/Windows/plastitanium_window.rsi/meta.json index 4b89f3cdb00..c0a1a18425f 100644 --- a/Resources/Textures/Structures/Windows/plastitanium_window.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/plastitanium_window.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/0b906c6916ce3803473fa6caa65f5b8661118c46", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/0b906c6916ce3803473fa6caa65f5b8661118c46, transparency tweaked by Ubaser.", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Structures/Windows/plastitanium_window.rsi/ptwindow0.png b/Resources/Textures/Structures/Windows/plastitanium_window.rsi/ptwindow0.png index 1704c25c2180117565c9558d48558d0f9b2432aa..fe2ddcf1ed405b01fd442a85aa7d1813ec34739e 100644 GIT binary patch literal 2316 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 Jw;lY1{|8B~t;+xa delta 1170 zcmV;D1a13_5~c}|B!7cxLqkwWLqi}?a&Km7Y-IodD9@FVODIH99L9exB8@D}LbAAv zp%f(~OAV1Sr7_BD;oduDM$NsZdq*~w%2ru;Y`hjW)@&_ol~Nuh8(S-4BVGS<XKE%j z%Bj=&^_}y5o%0>g4zrf+)%1Yv<lXpKRG*oh)9YTSM<YZhEq{jP<ziE#2`Y}yJF3)r z+pV(r-)KxOc@|XZ!b4Wh%?mFI53J>Lig$&>R>nvQp9y!lazWt-rJDtQRh$l3Q<-5m z5g!%~3+w4JHp|$`xVCV=a3pCvlCRAaIH`DDv7KGDiuY763@tg+Q%aZF#u($om_)~9 zm1VNz>6X<I#eX9%`_T&i*1$h0E>m2~SmGFA1sfyqqyFG`w_d8Rw~!QyLhZBfzqdo( zHhgdS{@0Q3e;-5j6I?na|H>f@eu%zR(jo`Yv;pT=CC%J{i%n>G%o(l`NYyg6R0`fs z<(p=q`34&13%wQhIk|^~bTx4ed;8Flmh6QJ@2)TJ?SIcRL4QPl0ATWRp!eh8R{#J2 z32;bRa{vGqBme*wBmtWh#uNYm0?A24K~#8N?VG<(6j2bzA2fDwcUw`Y2$)cj2x4oZ zBu67)Ni1z7w8R7~iPF##EB^?!;SwllImN_^1dg8xRCoO7sE(VL8S>oS+r8|tyW_t7 zB$Ih>i+>I8%k9kUytiG=W>ck!<MgrqfO`GB3x|;qA;6Qz4{_$@^72|03OzXU@@r>1 z8v;0`5?=Y2+QE?;9O%cHm&(REOMq_lVwjqKqkYLKs-dTYdJMqa&$x&Z02cq_`_DTO z+>~0s61Q;?B>*iRd{T&t0p?Gd{=1dRruOaFKY!TGP7pMod7#l~sA~0(n*F%)1uuD6 z{_yq_4kIB#fMRbi&b-j#zpX4h&=*{s9oH6c7zq(E0P;MfI@5r##oq^_f}me|i*xaS zxH{mz(p#s96Ci1F0nl5E^#ZW#fI`t(#i1{wFDGwK{{CJnmtX5S6gQ3fg{rsw;qfW^ zeSe-y{s^GAmRtbz){>Y2I{39r8nFrh832bm@{>s-wlqkKhZLwU_;7J`m3kUv3-D^@ z-DeznfW?oGKl8lY?C;gY)B$V(h6aWMZ(tTcgrq`<Ex`QTyypf~?Lki;1faRu@U*TH z3~PC(1zP}0Z>IT?M$5Ys*pEPYVzTWGf`7KPG7|%ykG^PogRqUwOb7sNZ5&3znjk2Z z{1LD{2(ljmb2Gy<0`~i8F0BRt_yXWYhG~9ewh-!+%oak{zYJObI{d#kL}H5pJ6r2| zTl>+-nBL<z_x{0x>VqVSH3*UjfM1G~Kw?=SC`G18Vgg7d7XZDrST6v(4&dTGDSt|V z5>AN1F}bi)VwpH6m?pUZ=&dCe0KFK3Hdo?6lmO5tAS2!{uHKz7hyxL6FwNugqUr!^ zKbXirnLz;nYMfG42m(L@#jFxd*1oQ>1P~Pj(`cQG5+JN~PASqfF5(^mH*tSDD@K5J kSn=^R4kN*9t1ER2cogmyJ5%!j01E&B07*qoM6N<$f<jj$`v3p{ diff --git a/Resources/Textures/Structures/Windows/plastitanium_window.rsi/ptwindow1.png b/Resources/Textures/Structures/Windows/plastitanium_window.rsi/ptwindow1.png index 3c2aad6b261572eabdacd03e01ba1cc02ecd45d7..17fdd1e0457884b53d06e40dd9695776ef111a27 100644 GIT binary patch literal 2083 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 delta 984 zcmV;}11J2W5bg(%B!7cxLqkwWLqi}?a&Km7Y-IodD9@FVODIH99L9exB8@D}LbAAv zp%f(~OAV1Sr7_BD;oduDM$NsZdq*~w%2ru;Y`hjW)@&_ol~Nuh8(S-4BVGS<XKE%j z%Bj=&^_}y5o%0>g4zrf+)%1Yv<lXpKRG*oh)9YTSM<YZhEq{jP<ziE#2`Y}yJF3)r z+pV(r-)KxOc@|XZ!b4Wh%?mFI53J>Lig$&>R>nvQp9y!lazWt-rJDtQRh$l3Q<-5m z5g!%~3+w4JHp|$`xVCV=a3pCvlCRAaIH`DDv7KGDiuY763@tg+Q%aZF#u($om_)~9 zm1VNz>6X<I#eX9%`_T&i*1$h0E>m2~SmGFA1sfyqqyFG`w_d8Rw~!QyLhZBfzqdo( zHhgdS{@0Q3e;-5j6I?na|H>f@eu%zR(jo`Yv;pT=CC%J{i%n>G%o(l`NYyg6R0`fs z<(p=q`34&13%wQhIk|^~bTx4ed;8Flmh6QJ@2)TJ?SIcRL4QPl0ATWRp!eh8R{#J2 z32;bRa{vGqBme*wBmtWh#uNYm0uf0>K~#8N?VCSK13?hQFE(}(bCrTb6AN3#_yrVV zYbB{|l(a#JVkH`ov_Tu|U}bASzkrIi7A6`5tu6*TtLUw>67x^ENp?2O{9t*Ta2(6K z?A+elOMj@*XgHL(?gVN8p7$1lZXn1FSX@{_4dC|fdbkZpuB>()K)Ld)G#;B)+KJNT z#c&&tT2FNxz|GA)^nOSr=ArkO;#m=8zz8TAkw~PiX~N+#)ik}14GOsd)R0es+1MOv z0FRZ2;jRIDC+7#y4aEND+AeehL2kfgG@gfUAb(z~<qUKK!M+BF0ibLV13=j#27s~! zy$+zhk7JQ30Lm6I0F*6a04Q778-QL1PzM@V&<0RPT3FBqq_@&-C#cnGD%RGCZoU4Y zV(m^TZsE8<YJe0$(7^atyR~WjEAKZ=uVbk|PXX$!Ei7mQs5dvUpbenj-o}D9;J-Xz zBY&I!EFNWdlF4QDS<QX#-SNKlsro{0fZPQ@*&+sjvc;GIwk&*FF=l}OY@nM>7&D;x zbr-!tv;nCBpaZA*!Kl}>foY5x;O7Cl*@Q6z`t@2{zmXaM$`&yIlr88y0E-`}%tWUg z*DsRp_-~;sm9CuBcJA;rml;)GbV1$|L{TCJfU-pl0JR3wxq(#%P-F(y7@#wP*1yRN z8mR%G<mil`bwhQ~SoI5_$PBET0;Y2VsR5vD5d%P(;y7Pl7VSYG{HZ4Z0000<MNUMn GLSTXh-N$<X diff --git a/Resources/Textures/Structures/Windows/plastitanium_window.rsi/ptwindow2.png b/Resources/Textures/Structures/Windows/plastitanium_window.rsi/ptwindow2.png index 1704c25c2180117565c9558d48558d0f9b2432aa..fe2ddcf1ed405b01fd442a85aa7d1813ec34739e 100644 GIT binary patch literal 2316 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 Jw;lY1{|8B~t;+xa delta 1170 zcmV;D1a13_5~c}|B!7cxLqkwWLqi}?a&Km7Y-IodD9@FVODIH99L9exB8@D}LbAAv zp%f(~OAV1Sr7_BD;oduDM$NsZdq*~w%2ru;Y`hjW)@&_ol~Nuh8(S-4BVGS<XKE%j z%Bj=&^_}y5o%0>g4zrf+)%1Yv<lXpKRG*oh)9YTSM<YZhEq{jP<ziE#2`Y}yJF3)r z+pV(r-)KxOc@|XZ!b4Wh%?mFI53J>Lig$&>R>nvQp9y!lazWt-rJDtQRh$l3Q<-5m z5g!%~3+w4JHp|$`xVCV=a3pCvlCRAaIH`DDv7KGDiuY763@tg+Q%aZF#u($om_)~9 zm1VNz>6X<I#eX9%`_T&i*1$h0E>m2~SmGFA1sfyqqyFG`w_d8Rw~!QyLhZBfzqdo( zHhgdS{@0Q3e;-5j6I?na|H>f@eu%zR(jo`Yv;pT=CC%J{i%n>G%o(l`NYyg6R0`fs z<(p=q`34&13%wQhIk|^~bTx4ed;8Flmh6QJ@2)TJ?SIcRL4QPl0ATWRp!eh8R{#J2 z32;bRa{vGqBme*wBmtWh#uNYm0?A24K~#8N?VG<(6j2bzA2fDwcUw`Y2$)cj2x4oZ zBu67)Ni1z7w8R7~iPF##EB^?!;SwllImN_^1dg8xRCoO7sE(VL8S>oS+r8|tyW_t7 zB$Ih>i+>I8%k9kUytiG=W>ck!<MgrqfO`GB3x|;qA;6Qz4{_$@^72|03OzXU@@r>1 z8v;0`5?=Y2+QE?;9O%cHm&(REOMq_lVwjqKqkYLKs-dTYdJMqa&$x&Z02cq_`_DTO z+>~0s61Q;?B>*iRd{T&t0p?Gd{=1dRruOaFKY!TGP7pMod7#l~sA~0(n*F%)1uuD6 z{_yq_4kIB#fMRbi&b-j#zpX4h&=*{s9oH6c7zq(E0P;MfI@5r##oq^_f}me|i*xaS zxH{mz(p#s96Ci1F0nl5E^#ZW#fI`t(#i1{wFDGwK{{CJnmtX5S6gQ3fg{rsw;qfW^ zeSe-y{s^GAmRtbz){>Y2I{39r8nFrh832bm@{>s-wlqkKhZLwU_;7J`m3kUv3-D^@ z-DeznfW?oGKl8lY?C;gY)B$V(h6aWMZ(tTcgrq`<Ex`QTyypf~?Lki;1faRu@U*TH z3~PC(1zP}0Z>IT?M$5Ys*pEPYVzTWGf`7KPG7|%ykG^PogRqUwOb7sNZ5&3znjk2Z z{1LD{2(ljmb2Gy<0`~i8F0BRt_yXWYhG~9ewh-!+%oak{zYJObI{d#kL}H5pJ6r2| zTl>+-nBL<z_x{0x>VqVSH3*UjfM1G~Kw?=SC`G18Vgg7d7XZDrST6v(4&dTGDSt|V z5>AN1F}bi)VwpH6m?pUZ=&dCe0KFK3Hdo?6lmO5tAS2!{uHKz7hyxL6FwNugqUr!^ zKbXirnLz;nYMfG42m(L@#jFxd*1oQ>1P~Pj(`cQG5+JN~PASqfF5(^mH*tSDD@K5J kSn=^R4kN*9t1ER2cogmyJ5%!j01E&B07*qoM6N<$f<jj$`v3p{ diff --git a/Resources/Textures/Structures/Windows/plastitanium_window.rsi/ptwindow3.png b/Resources/Textures/Structures/Windows/plastitanium_window.rsi/ptwindow3.png index 3c2aad6b261572eabdacd03e01ba1cc02ecd45d7..17fdd1e0457884b53d06e40dd9695776ef111a27 100644 GIT binary patch literal 2083 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 delta 984 zcmV;}11J2W5bg(%B!7cxLqkwWLqi}?a&Km7Y-IodD9@FVODIH99L9exB8@D}LbAAv zp%f(~OAV1Sr7_BD;oduDM$NsZdq*~w%2ru;Y`hjW)@&_ol~Nuh8(S-4BVGS<XKE%j z%Bj=&^_}y5o%0>g4zrf+)%1Yv<lXpKRG*oh)9YTSM<YZhEq{jP<ziE#2`Y}yJF3)r z+pV(r-)KxOc@|XZ!b4Wh%?mFI53J>Lig$&>R>nvQp9y!lazWt-rJDtQRh$l3Q<-5m z5g!%~3+w4JHp|$`xVCV=a3pCvlCRAaIH`DDv7KGDiuY763@tg+Q%aZF#u($om_)~9 zm1VNz>6X<I#eX9%`_T&i*1$h0E>m2~SmGFA1sfyqqyFG`w_d8Rw~!QyLhZBfzqdo( zHhgdS{@0Q3e;-5j6I?na|H>f@eu%zR(jo`Yv;pT=CC%J{i%n>G%o(l`NYyg6R0`fs z<(p=q`34&13%wQhIk|^~bTx4ed;8Flmh6QJ@2)TJ?SIcRL4QPl0ATWRp!eh8R{#J2 z32;bRa{vGqBme*wBmtWh#uNYm0uf0>K~#8N?VCSK13?hQFE(}(bCrTb6AN3#_yrVV zYbB{|l(a#JVkH`ov_Tu|U}bASzkrIi7A6`5tu6*TtLUw>67x^ENp?2O{9t*Ta2(6K z?A+elOMj@*XgHL(?gVN8p7$1lZXn1FSX@{_4dC|fdbkZpuB>()K)Ld)G#;B)+KJNT z#c&&tT2FNxz|GA)^nOSr=ArkO;#m=8zz8TAkw~PiX~N+#)ik}14GOsd)R0es+1MOv z0FRZ2;jRIDC+7#y4aEND+AeehL2kfgG@gfUAb(z~<qUKK!M+BF0ibLV13=j#27s~! zy$+zhk7JQ30Lm6I0F*6a04Q778-QL1PzM@V&<0RPT3FBqq_@&-C#cnGD%RGCZoU4Y zV(m^TZsE8<YJe0$(7^atyR~WjEAKZ=uVbk|PXX$!Ei7mQs5dvUpbenj-o}D9;J-Xz zBY&I!EFNWdlF4QDS<QX#-SNKlsro{0fZPQ@*&+sjvc;GIwk&*FF=l}OY@nM>7&D;x zbr-!tv;nCBpaZA*!Kl}>foY5x;O7Cl*@Q6z`t@2{zmXaM$`&yIlr88y0E-`}%tWUg z*DsRp_-~;sm9CuBcJA;rml;)GbV1$|L{TCJfU-pl0JR3wxq(#%P-F(y7@#wP*1yRN z8mR%G<mil`bwhQ~SoI5_$PBET0;Y2VsR5vD5d%P(;y7Pl7VSYG{HZ4Z0000<MNUMn GLSTXh-N$<X diff --git a/Resources/Textures/Structures/Windows/plastitanium_window.rsi/ptwindow4.png b/Resources/Textures/Structures/Windows/plastitanium_window.rsi/ptwindow4.png index dda14b7014176b2dad90472353547e391711b5b3..8623349c4f3796c23c5add35d20d7a8d7309b77d 100644 GIT binary patch literal 2076 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU|f^w>>S|f?5q$_l%JNFlghxL zF|l@{y@zz5%yE0Qt|TFuR~Hr@=Dp^5IYU;)SI5IaaS2zJ^_QZb;U4FXKV2eXCAN!A z#LM-<Hs^5l(vkvEmV?)nVoP6yY;+DicYpV06|G+nKHAm1|NeL1{l9W8X1+_c)^e`6 zwQjPkx8!Bx&2GO91(UWg6kcAnGDXc;@67+tzkcn0AHM1O`pwh2+nN9O&9nLaQf`iW zQs<4gzp}Nb>0i;wFl=$xdAj4!`WEB-n5C7zJ8n;0*0SAnI@7;}mf|1s_oo?Ib1BZv zj7T-sUt|1x&8A?{Yqj5>tgc+Ux*_*$_pD;ydqKkC+Mln5&i}=~n6>)V&UMrOb{Jmr znQ&0yxXt>N4=(91*Y)aMQ{#X4q5P-6i_a{q=vJO5lv*gQ;u<(9M8MB`lItA1hmJy< z+P~bsGpEvdc695*V2<n3QSX#<Y8u+vdDo`1?z(sQ*ES>B%hL~Saz3i`=cki@_; z!q2X2f0P)!u$$GiEq-44Cy86)4;H<vOrLN2{!#Y~{>0OK&uXR~z5d?dC*QI12bYDu zOnY)}dij~fhvy&vYy3K6-cQv^!}=wef4^@6Mju~lglC$sFM}44%>l$9a4C2)kmM}z zh%9Dc5d8<jj0q<Tco-O%3o=6@N+NuHtdjF{^%7I^lT!66atpw^Y$~jP%-qzHM1_jn zoV;SI3R@+x3M(KRB&@Hb09I0xZL1XF8=&BvUzDm~re~mMpk&9TprBw=l#*r@<l+X^ z4&>P?Wt5Z@Sn2DRmzV368|&p4rRy77T3YHG80i}s=>k>g7FXt#Bv$C=6)Qswftlly zTAW;zSx}OhpQivaH!&%{w8U0P31kr*K-`&<47aDCv?vE`OG>hSYEEiyYF<gPzM-C> zJ~n+NnP~_Y<`qMO0~j#+AQ_-G1FYIS3rdnrfFb2t0dx=4e?W&OgY7LYNzq4Apl@Vg zV4-VZq-$iU5BDF?`8FxZRwbDwIjP`)gZl>@f{r;QsG=bCpdiS}1cj_sPGVlVtx|<< zN@`kSX-<ifT|r5CW?o8uxq*#7L>a1fh$yP5Hu_i`U<2~DRb)_VaehuIDB$f3O^j{8 zfq^25hysX?2&_7gMbUKxWaO9R1CvxyX0m5qNor9+5iogyZ8U<~hg$`@SqRHR^D;~9 zU<RNGBk4kl9xKP9lJfkb>=1BNAcZ4NHBfUPVTzPSAsGN1{=ghy$7Q1r&rNn*Uncj= zVPIft@N{tusbG8?z0r@^kjGcB`k|Eqn?t*n9mBy>EicX;J9mgbWQBH6>n~QGH#N?J z!rC4DE42I$G)P3f5O=7Z6j-uLt$fC<m#Pz2ZMot1MqGX4<bdEqs$JLiJznc8>N+vY zB<!+O$ga2dS5E$x`hC~!eda5F{4;wq`-R!9NxchSePM98>V6|_{&%?zInEuk?d19+ zcb9NA9B)?-d%Vy%eVN0jIZKXR4}ZmF7jsmSVF%B-Z;yExK9<dSW%hHH#*YHg<<}ba z{=FN&d*?Og<qQn36;+<;obzGyTl{q&6N8nMUETM4%vo0g<L_r|^U0l4R>f|<_w%{H z*9NK00p%vYLITwF*I)kCyry|&z4X~?eh!8kF-u;Ryti%86?$^+b9a@VG(%NRf2V(- z>hqJw%~-$K$QS>wlnUFDYsS!}b>!@EwuX7ncbl-@xW-_6z1`!&)I-l0Cp<5H{>#-N zjd?+bk&q1|1Lu|4SC^~#6`nsT*zYeH`0_KuCo_(IX^m7a2G=<{-fRc9Y)w4zI_SY< z*B%}Qo9vU?RiBt0UNi>C?Z0yW1jCa`hGqLIPIiXJR_+OEOWvO-?x6B7%KWkHB|QTl zwkLC6tl!lvQ^|E8*sP05JpH&x;U*o)+S_{@e4Sre+eiO4+x0!$f#JY2rO@T<{40KO z+<wC?m*BkORY{SI1FMHsA4hP5Ra3W~yiLMI_X(@&KQL$kdGGhKPvCc1A;<8ZLo?Th zKg8p|xrQ8vr~Jy!YKDCZSNAgbO??;<YaiN{{B=+8(}!0b#C8ALu3=oN_&c3(kMoIa zvG>9g(jK|a+qCtE$c(QsZ0jz6S-mx~CYATxr*7s1sn8f^ADhVLQ~$)+8Rnhwo+jUu WGcEpDY{*kkaqsEs=d#Wzp$PyB;x1tT delta 986 zcmV<0110>N5by_(B!7cxLqkwWLqi}?a&Km7Y-IodD9@FVODIH99L9exB8@D}LbAAv zp%f(~OAV1Sr7_BD;oduDM$NsZdq*~w%2ru;Y`hjW)@&_ol~Nuh8(S-4BVGS<XKE%j z%Bj=&^_}y5o%0>g4zrf+)%1Yv<lXpKRG*oh)9YTSM<YZhEq{jP<ziE#2`Y}yJF3)r z+pV(r-)KxOc@|XZ!b4Wh%?mFI53J>Lig$&>R>nvQp9y!lazWt-rJDtQRh$l3Q<-5m z5g!%~3+w4JHp|$`xVCV=a3pCvlCRAaIH`DDv7KGDiuY763@tg+Q%aZF#u($om_)~9 zm1VNz>6X<I#eX9%`_T&i*1$h0E>m2~SmGFA1sfyqqyFG`w_d8Rw~!QyLhZBfzqdo( zHhgdS{@0Q3e;-5j6I?na|H>f@eu%zR(jo`Yv;pT=CC%J{i%n>G%o(l`NYyg6R0`fs z<(p=q`34&13%wQhIk|^~bTx4ed;8Flmh6QJ@2)TJ?SIcRL4QPl0ATWRp!eh8R{#J2 z32;bRa{vGqBme*wBmtWh#uNYm0uxC@K~#8N?VCMI13?gmH#T+>?<xg}CKk4e@ee4( z)=E;_C~1Qb#Y!|FX@fS_!OGTv{sAM}T9{}Mw7MAVtYU7N4M)t!af>^5%seo>n-7-o zlHJVAZhvB(PDfy3+cTYo#GJ4#OIY@_u)69}t=@_3e)06On4gqS4B?|$&%-bf6QE>a z13<~b27rc!R;wk$6rnPpR(tA&DMDjFz40bB9-oq73f==i(McuerMBDOGE5PwZ$LV| z+zV5LZV9-luu6wbz<U5FS=azjvS{}MW)rCr41Wi*Qz-pZ&I$*a%({FmQ(fmvI9+{h zz6;0sjL8>};3WV`7B&EsEXE8lUFZA7m;o5Iz8{Pk;H~pj?H>ks4*>mlymh{+{lkDU z12AfRKNvH>be-=P-UC3%!UlknMY|v1p6|mj5ZL_yZ39+U*0d&gc)X9c0hx`>p%bW- zcYjpkQ@y>3wgK7g?7#{7i=JT#Q01x;?UtBIaJ-@DKj<9wUM%=mKz9i&CYQ7(cxgOG zdk;9exITelAdYvp4q=FbwgKbL1;(L!&rcUlg+a-}27r=<4FDwzc>}cb09~;22wno9 zWMKn9$-)MJl7+kh=y?EkLj~Oc?3Nn30aLlX+@BBNUZ!%}>Z+scUaWB2>Vvw-<@2(Z z0lW!<qM@$Oc|+0v_nA@e4GQ`az&=_-Hvs!^72N>b<8>i^0jfjoL3nBt@c;k-07*qo IM6N<$g4q$xyZ`_I diff --git a/Resources/Textures/Structures/Windows/plastitanium_window.rsi/ptwindow5.png b/Resources/Textures/Structures/Windows/plastitanium_window.rsi/ptwindow5.png index a4a28e41bf91b9def90665c6bf27947b3f5f70e4..08d493bb62a3540b6fde8691a47f63eac0e80b3e 100644 GIT binary patch literal 2114 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 Hl+XkKLPbHr delta 964 zcmV;#13Ub}5ZVWjB!7cxLqkwWLqi}?a&Km7Y-IodD9@FVODIH99L9exB8@D}LbAAv zp%f(~OAV1Sr7_BD;oduDM$NsZdq*~w%2ru;Y`hjW)@&_ol~Nuh8(S-4BVGS<XKE%j z%Bj=&^_}y5o%0>g4zrf+)%1Yv<lXpKRG*oh)9YTSM<YZhEq{jP<ziE#2`Y}yJF3)r z+pV(r-)KxOc@|XZ!b4Wh%?mFI53J>Lig$&>R>nvQp9y!lazWt-rJDtQRh$l3Q<-5m z5g!%~3+w4JHp|$`xVCV=a3pCvlCRAaIH`DDv7KGDiuY763@tg+Q%aZF#u($om_)~9 zm1VNz>6X<I#eX9%`_T&i*1$h0E>m2~SmGFA1sfyqqyFG`w_d8Rw~!QyLhZBfzqdo( zHhgdS{@0Q3e;-5j6I?na|H>f@eu%zR(jo`Yv;pT=CC%J{i%n>G%o(l`NYyg6R0`fs z<(p=q`34&13%wQhIk|^~bTx4ed;8Flmh6QJ@2)TJ?SIcRL4QPl0ATWRp!eh8R{#J2 z32;bRa{vGqBme*wBmtWh#uNYm0sTotK~#8N?VCMM0znXl7aMEuDoqRu7Pc02bQV-< zEUj&9EJ%n68Y`nDh96*KZE4hs!j2zd;YWyx9cOKIGM72CS-5C8nHMtqB%60b#XhjN z%kEH!<A2y73B$#BwYY4;ATU9=V1hvsozA1#J8E5Aw;J=w3mJU$UK-pTi#bjhG<YO% z0rbgJONpW=X;Q!iBwu@OQUB9atJNf>zzd+c&)<OUoh@^J_mHF%Z~->y;3=hmuL5hO z^^tFYRshOLuL5uZr&qV<+#TY#!4oqtV5wMcbANX%W_}-l#tYz7ix<GD7B7HPExGpr z=yg0VehP4^#S7q6ix<GD7WD!|_5u6N_7``DI6K%q;Vy)U3rGilbJ;vjUT}DReJXGl zg2)u0!Iw)brd~fZl$FYcsns@<hDPiefH?C03t|G?BX8*&pe)1$(9KV`+x@u#N*fwE z0e{vF5YZoe`qa>f2^hs&@11)%paP}=r~q_r03jy8ed@b)0Vw1ISa<(+O#m7(0q#b~ zT@_G>32-+;(}MaRL;mNmzZX!B7r?0&FMv}mUI3?Ba_<B3g5F2?DZr@~FMv}mUI3?B z)C+*`1JwUv0{xd6_!LO%1gK`ft|7=eLp}U&rs^5s9-T`77hvBQA&$=R0<2mAyM{mt mxB$0KK>EfAE&y92V9YlfbNNA-Fak0F0000<MNUMnLSTZ<8nd_n diff --git a/Resources/Textures/Structures/Windows/plastitanium_window.rsi/ptwindow6.png b/Resources/Textures/Structures/Windows/plastitanium_window.rsi/ptwindow6.png index dda14b7014176b2dad90472353547e391711b5b3..8623349c4f3796c23c5add35d20d7a8d7309b77d 100644 GIT binary patch literal 2076 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 WGcEpDY{*kkaqsEs=d#Wzp$PyB;x1tT delta 986 zcmV<0110>N5by_(B!7cxLqkwWLqi}?a&Km7Y-IodD9@FVODIH99L9exB8@D}LbAAv zp%f(~OAV1Sr7_BD;oduDM$NsZdq*~w%2ru;Y`hjW)@&_ol~Nuh8(S-4BVGS<XKE%j z%Bj=&^_}y5o%0>g4zrf+)%1Yv<lXpKRG*oh)9YTSM<YZhEq{jP<ziE#2`Y}yJF3)r z+pV(r-)KxOc@|XZ!b4Wh%?mFI53J>Lig$&>R>nvQp9y!lazWt-rJDtQRh$l3Q<-5m z5g!%~3+w4JHp|$`xVCV=a3pCvlCRAaIH`DDv7KGDiuY763@tg+Q%aZF#u($om_)~9 zm1VNz>6X<I#eX9%`_T&i*1$h0E>m2~SmGFA1sfyqqyFG`w_d8Rw~!QyLhZBfzqdo( zHhgdS{@0Q3e;-5j6I?na|H>f@eu%zR(jo`Yv;pT=CC%J{i%n>G%o(l`NYyg6R0`fs z<(p=q`34&13%wQhIk|^~bTx4ed;8Flmh6QJ@2)TJ?SIcRL4QPl0ATWRp!eh8R{#J2 z32;bRa{vGqBme*wBmtWh#uNYm0uxC@K~#8N?VCMI13?gmH#T+>?<xg}CKk4e@ee4( z)=E;_C~1Qb#Y!|FX@fS_!OGTv{sAM}T9{}Mw7MAVtYU7N4M)t!af>^5%seo>n-7-o zlHJVAZhvB(PDfy3+cTYo#GJ4#OIY@_u)69}t=@_3e)06On4gqS4B?|$&%-bf6QE>a z13<~b27rc!R;wk$6rnPpR(tA&DMDjFz40bB9-oq73f==i(McuerMBDOGE5PwZ$LV| z+zV5LZV9-luu6wbz<U5FS=azjvS{}MW)rCr41Wi*Qz-pZ&I$*a%({FmQ(fmvI9+{h zz6;0sjL8>};3WV`7B&EsEXE8lUFZA7m;o5Iz8{Pk;H~pj?H>ks4*>mlymh{+{lkDU z12AfRKNvH>be-=P-UC3%!UlknMY|v1p6|mj5ZL_yZ39+U*0d&gc)X9c0hx`>p%bW- zcYjpkQ@y>3wgK7g?7#{7i=JT#Q01x;?UtBIaJ-@DKj<9wUM%=mKz9i&CYQ7(cxgOG zdk;9exITelAdYvp4q=FbwgKbL1;(L!&rcUlg+a-}27r=<4FDwzc>}cb09~;22wno9 zWMKn9$-)MJl7+kh=y?EkLj~Oc?3Nn30aLlX+@BBNUZ!%}>Z+scUaWB2>Vvw-<@2(Z z0lW!<qM@$Oc|+0v_nA@e4GQ`az&=_-Hvs!^72N>b<8>i^0jfjoL3nBt@c;k-07*qo IM6N<$g4q$xyZ`_I diff --git a/Resources/Textures/Structures/Windows/plastitanium_window.rsi/ptwindow7.png b/Resources/Textures/Structures/Windows/plastitanium_window.rsi/ptwindow7.png index cc1f21f692a0fafa1a9a03c74e8f688af389d18e..82b23102f540a05c48e7c525d126c400fb6b99d1 100644 GIT binary patch literal 1668 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU|g5!>>S|f?5q$_l%JNFlghxL zF|l@{wTDcgNSl4QYp0&3kD^jyi|JIhK<<r~whA~VM#`s5Za8;tAJgu~sbwxK-ioe4 z9D**=;oCQC4LU7yo6AXopJQck#^i)q3CD`lr^G5(JuI^SXZgSW{2cCu$-ygYoaIGw zu6Opk_lkE;cf0H##SzTTGdnD>_gK>8LwDwEzdrwbo$CCm(y&J_cX!<WShs4mNp;*m zbMyM`|E_T@zvRmOiszxAx8=GIO$9kOLuc`~%(u8SrNFh=?7{k3lNsm#G&TNc$nnzW z@Tr-aiF0ozKb_OG;hps)ttDI5F>N!=&+xlevDq}{gns1p+E?~DzPC4D-W6A-{@BOB zm8V(7dyitj_xd^8G+ZBjvaRZ`zwo_(V@DFJyG>-#BQpt6SI?lR3a3dr^DZmj@t^<3 z@vqtc^Ltk5PD^;f^y>QRs3PIMdrrT%uM)f2cs#oxB5+yqub{ne0@RrIe|zdFbfJu^ zKTgz``LE;mwSgIb9#-z(z3?S-%)07(_hZlRz9am({6_|R@xF75{;;NnC4OSrw(VhL z*t?qA^ER{oR@&HXes*hSJfqX2y4}@@;ugRN<V%h4O!M_+&;qhKfEWZW1y2T&oCO|{ z#S9Fh|3H{A;bZ|10|RqGW=KRygs+cPa(=E}VoH8es$NBI0a%w!g%yyQn_7~nP?4LH zS8P>bs{~eI1!RMS^_3LBN=mYAl_Got6rA&mQWebf4D<|??6?#Z6l{u8(yW49+@RWl zJX@uVl9B=|ef{$Ca=mh6z5JqdeM3u2OML?)eIp}XpbFjM%Dj@q3f;V7Wr!g#b6ir3 zlZ!G7N;32F6hP)CCgqow*eWT3EP?}wJ5!S3_7s#B<$!HTN!CxzNzF~oD=F4D)HBq_ zrmrM34dKGPVrXyx14bVt1Jq`KRhwr)NwNtrq+Bb2?t%Ib=+I=ay~QOd`bY}&jSLJd zbPbGjjV$%y{sTJSCMDUbB(o$Z6&!GI|A0f#F{cDo6r>&$1UZ?YkhRK5%uBabs?beI zO-n4zDN(X3C@Ig(OUW-cu+fJoL)8uuMK#q%ABzKQK;E{B3`#A|&nX23yq%$mu?;vd zP(%??0MQYFRR^*tx{iR1{E~cNk}Aqf_RK3uEh;DiCNHp!Mo{~3t3WpkVR>j?W{Dll z05oAFT}aVm<ycfwo?nz50*(r#aKxzwY7Qh!k<ut61AxOHm;>y%Z1mx|$&TyG<eoXe zEcVRP#WAFU@$IaQyv+e3M;aJ4BD9RtHM!I}jGDXk?S1lJ-kYmA;l}o(=PP67g&yvF zum6yr$v;6m;ZWC;HXenyz6r*7m~#)*mwo+ibN0TrgY=fqk_qt>o}Fj7wP5afhTlyl z^=uc|-qx_)5MT1sxWO#rx$%L03TNjtZgI4p&-jfs^B>Ow-djI;Ht2hNPG`uya4x-} z)^V0Sb4GL7zprc${xh#&T>W3aVlShpgXlIwM%QPD@zfn$)FcBcR6Je%T-G@yGywqb CsAU!a literal 641 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU~JBGb`J1#c2)=|%1_J8No8Qr zI6rlww}wlg%&~esrCyygPMdagFBDN#@#dXqwAAoa_QQMDX>MotE~|Don|3NJvLa`X znAx=)-JGdGa;nnN+DXc>|BKVJ)J#vUy!`X)+|RXhKg(X=+dS><)h`WipWOWs5i)<~ z+{>@yR=6v>sOz>peVP=!m{Y6oy!EOpRkzn}`f)$QN3T*W<mDmfuybd*^||=hJT2}j zZ#^7#%!6w_XZg+|$A|1oXS3FY&f$v)o|$MaC@;px{raVm+36dnc5ExyU!am{J!$<} z5sQ@-u^Z>cZteOWqR*pic{$i?`psh!kB`i7Ii4~#b<>lV)2<30Ro44`k?Y^J1NNGF z!7-;J9!Vs!N-KX@{O>{e_PAB+w@(o1a(cV@{r>IFcg<?@fBw5Z@qN9#^H<>*E7kv} z6nW}8_Jv+jV!yD3@p-uF**lHhz8RHgB-aUgTs7Jn!gbH@>Fl(HKiQ<7aqkuVZn?9) zrNp$5xBB;miPPS+a=l-t|NiZHW5;@zdWM8gMGL+^eh?0f70v>W$YKTtF%=MIoGp4x z1Sq(~)5S5QBJS<%jl3-e0tXKHf9MFU=LxGl$hPn!OF+Plyqc{`MaqMwSw63r{C?Nl zp6wR>|NB3R$*)<;5aG?ZVH#6{F6)6Pu7<554B46t*FOD_`|!=~|CD(Q*Mb;usKFxf kg8554SU;xR(w;)b#VbThcP>1$ALw2NPgg&ebxsLQ0OYzB@&Et; diff --git a/Resources/Textures/Structures/Windows/plastitanium_window_diagonal.rsi/meta.json b/Resources/Textures/Structures/Windows/plastitanium_window_diagonal.rsi/meta.json index 769ebe5b39a..9c854c61ce7 100644 --- a/Resources/Textures/Structures/Windows/plastitanium_window_diagonal.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/plastitanium_window_diagonal.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "CC-BY-SA-3.0", - "copyright": "Modified from plastitanium_window.rsi by Flareguy for Space Station 14", + "copyright": "Modified from plastitanium_window.rsi by Flareguy for Space Station 14, transparency tweaked by Ubaser.", "states": [ { "name": "state0" diff --git a/Resources/Textures/Structures/Windows/plastitanium_window_diagonal.rsi/state0.png b/Resources/Textures/Structures/Windows/plastitanium_window_diagonal.rsi/state0.png index 7737feb5032c9ac64f42e8805d776a68517bbca9..b25ae0a4a06e4393fd19eb4c032e512e75e9abaa 100644 GIT binary patch literal 1375 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}e5nzhX}-P; zT0k}j5QD&_;K@Lev%n*=n1Mm}4+t}^JN#w_0|RqfW=KRygs+cPa(=E}VoH8es$NBI z0a%w!g%yyQn_7~nP?4LHS8P>bs{~eI1!RMS^_3LBN=mYAl_Got6rA&mQWebf4D<|? z?6?#Z6l{u8(yW49+@RWlJX@uVl9B=|ef{$Ca=mh6z5JqdeM3u2OML?)eIp}XpbFjM z%Dj@q3f;V7Wr!g#b6ir3lZ!G7N;32F6hP)CCgqow*eWT3EP?}wJ5!S3_7s#B<$!HT zN!CxzNzF~oD=F4D)HBq_rmrM34dKGPVrXyx14bVt1Jq`KRhwr)NwNtrq+Bb2?t%Ib z=+I=ay~QOd`bY}&jSLJdbPbGjjV$%y{sTJSCMDUbB(o$Z6&!GI|A0f#F{cDo6r>&$ z1UZ?YkhRK5%uBabs?beIO-n4zDN(XZE6vHV(TAu&)d>+rHPA*Mi`_OLA6rERr55Ms zl!C(C&dAcz1{@A3qKMFk=!n3o16dSZM?gk?Nj@+&6=f!S=9Q!t6%+we7Q{xVeYjPi zn}x7EG%vHn&IoD%nlO?sq?oaCEGj9_FUk%9#{wh>aY{ptfCMK}%7i3)aL@zOy&ad0 zK0FWEah-lG(*ew^6`n4RArYKMryBYlHV|oxy%AU_F4khf<Q&d-utC6BnEge-H>Hi6 z3n%jFtdZT}sLFRCppfx}_)B)-ImfQ_{bjQ*jH$1`_xp2}&%q7fUK9s(@&Ebq<c5f# z!jBWT{xHStkd=KVdZFd^9LWy{KgNskZ#nq<^YeeKIn9$BZQJ%aefaw8aDqja--l;M zzCNkD7R|}B-g7pi;Ny=oBX#0lt3L4Ge9~K=iG|%tM$W@ow@LcoPQN&&gPBHq43#*} z>dpCD+ZOWhP-t;>d)m&L)q=hj-6xG6G&5&hn`3G|sbT@|yIrz}cP7NTb9Xc<D|tES z*myZ`{W!-Ibg*1#f>2*WeQjIQ<&ZCPi#<AS-+bPkAk4MSS>WO8w^edh?3@BJ8R7Z- ztl9DDoGkor-&$Fe-1`;(;85u2b@$}B((a%A@^FtSvz>+gt5<K|aB@EAFW(-#p8eJX z!@P1=&brddkK09`w<x~~XDd3qdetw%0H%L)8-qS%ea&N2eYo0}b05Qnh5F@hO;ue% Og`20VpUXO@geCy~B-b4P literal 3238 zcmcgveQXnD81G~<=rZIZ%AzA)$`k>w_tk5Am-b++W1XXO*=iX7h}XOKx(n@Hy}QwF zf9RACHHPpJ18NBR2Qe4|ibhZoFc<;~L4yJbUm?mgNDxIA4NT&DcWrka9ZpSb(suW} zzvuUSKYjO7ds}mj`+m2}<*I3kMmpd(V!kJgho5?1-*51%Lhoo^;M#e-?lOF+Og6+C zT&`VftB3fz;q$~ybcybARZlbD6|UDe*ScKpD{{Qc=!z|31vTyEMKuAuxpW4iU9Ql) zT!t5x0Ru^Zq^yKJ*Y+OpAhH<tET&_4EYk?O<!GM<I{Vt<Lf<lh5k2#`8h0qiLWVRj zcqErjDLR`Adn{rW{%wje4`M-#WnoW)X%Xp)wIhwH1`yioM+Mv;Kmv@HpaTJ4;8BFc z2^zyGjKWcpVtqL4Ba!^e1I-~wNE0QtBeF1W4nBoF-G-52F)W+Sdb5;Q)sh&&Fbsy1 z7)hcKf$F`A!RJs#pJ|iiX(B)uG&y6)s)Crbd_wIp!XD_c9ZEV=<W}^2zF_9C9G}4m zFK&ir0Y#yR%k*d|%L7rsKnkRRV(1V{6tS6Z)ll_rbrkC2aftz#;#jO`qpUCKbkT%v zG%bf=<g-#1t;c&a0P6s{+M@}eX*qOrW+56wmWFd$qHUg(_yuzEC{XjnhFVoKOBjMt zu#Fnv4ONS)YKpVlp}mk0q_NQ|Kk~?8SrOH&K0AbsR53fClnX?718^ixQYh|6Nnf1s zv%Vlp_~zmSi{lOo8(G2-Q$<<o9cCb4*O74|z~YdBaxyrOr3|peMc&}Y#NosiSww-A zR4vULoSf#90Lv)J5H>6<;)<QYHmWIAgAM_X3Ss5MWppB{&|@}ZgCYPO7C<kSB|i%b z_@qOW7p7#+9%fM$WRV@V74%6#9|I&bfQvztAOJuaf%c<-4vIV@1sT7YdUK{AMZq0N zYKfetoB@pPquDyK7~7)g1`h*hiEvQhm7z-n;U@_Sj(8y851{^_FM;wn$)Hduku=35 zXx{FDQuTsMdE$a)NL)T%GQltsPMPsa^r-RLUOLD|n0Z{2;cDem4ulzp2;%^O1Vai0 zf$~hkkK&Y%K!c>8KxtY^5J5ahNxp>D%P@{IG$RZ}WwXY;&di&&=mbwYM8z6gyD!6Q zIxx3F*i%>wg<WZn9E4koh2;fvVRC{w$v_NYCDMW;`7yQ6<lE~uws>z-FH4{82Fjf_ zfX!l|%IfQ?WMp{_G$i4GjAbj?gr#au<}#iCACs-~%l~z%$2KDWG}Yx-<^P`QVpj^? zypjYWhZP#KAo!cY*tK#_Mq$iG4pGSb`7?(Pb_s8d01?7&lNHR_=q_`XQau(rK;rO) z5$0!J(Ro~|xa7`?&f`+WVZA35+2F{$r4izyj`=%n|Dbfj>mT6!G)>VVY^1mp-!A7s zsw*PH9~9kO1r)SmX^cE5qqbx;HOGOiW>>~>N3(X9Erl0A_yj9exP6*W#TzV8;I&nQ z_tS&xD+l2{Inokoh<7y~dS#b#5TCrdrge{d^QuYPzMWE=o3h$1?LNM3>bsj(y|$)` zzc{h>Mt$u!Yi6H(FgQ42`c&cYt+!SV+}uo^j(#0K<Y~EZ;`>1+xbF80d*?jn`h41s z&#E#XwVmO|UDsw@ua0Vy>)(v-KmXH@_vGrUJ{Z4l$hdLuz<2KqWYaIdc&XAee#QPX z*PeYZdn9o5aw}RfbZN(_D}$$7D-mYPzP0^d*3EkO?fR-G$8D`XJoCDC5uLwb#n7?$ zr?1}B?_myH-B1^-`tZneo&DSELNhKlPTJ!B`Jt*)72Lq5bNVm+vGnG;6<=(B6&l%k ze#^eD_SyY!e3II8wu8Nk`*qIV^BZ5NII(K(*{l9V(srHiudmuk%|e!9+z*NQ>(34B z)}!2w+6!xut##)rS8jYjxHT?uq~X5Ft;(e4lV5#2E%pq)@XreRC_Ukru;~}`pM{pD Lw#d!}Pd)z^&dvN# diff --git a/Resources/Textures/Structures/Windows/plastitanium_window_diagonal.rsi/state1.png b/Resources/Textures/Structures/Windows/plastitanium_window_diagonal.rsi/state1.png index 834b6261fd325fd9c6cd367f68bb72c7d7f57e0f..7185af8426c5949c3803086b2d527f4749ab56bd 100644 GIT binary patch literal 1343 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}e5nzhX}-P; zT0k}j5QD&_;K@Lev%n*=n1Mm}4+t}^JN#w_0|RqfW=KRygs+cPa(=E}VoH8es$NBI z0a%w!g%yyQn_7~nP?4LHS8P>bs{~eI1!RMS^_3LBN=mYAl_Got6rA&mQWebf4D<|? z?6?#Z6l{u8(yW49+@RWlJX@uVl9B=|ef{$Ca=mh6z5JqdeM3u2OML?)eIp}XpbFjM z%Dj@q3f;V7Wr!g#b6ir3lZ!G7N;32F6hP)CCgqow*eWT3EP?}wJ5!S3_7s#B<$!HT zN!CxzNzF~oD=F4D)HBq_rmrM34dKGPVrXyx14bVt1Jq`KRhwr)NwNtrq+Bb2?t%Ib z=+I=ay~QOd`bY}&jSLJdbPbGjjV$%y{sTJSCMDUbB(o$Z6&!GI|A0f#F{cDo6r>&$ z1UZ?YkhRK5%uBabs?beIO-n4zDN(XZE6vHV(TAu&)d>+rHPA*Mi`_OLA6rERr55Ms zl!C(C&dAcz1{@A3qKMFk=!n3o16dSZM?gk?Nj@+&6=f!S=9Q!t6%+we7Q{xVeYjPi zn}x7EG%vHn&IoD%nlO?sq?oaCEGj9_FUk%9#{wh>aY{ptfCMK}%7i3)aL@zOy&ad0 zK0FWEah-lG(*ew^5uPrNArYKMr)~^nHWYAWJvY<Y&qJb3h~o}V>kgL7EWH*Ailq+h z^A<Am^D_7w&!2dHQvSx0OKi(G>%883`Q6&NuO;r?uZ{ouh`GLIM|ms@OMKP+IEA*~ zPjjOi4exBXX%w0BD?5nU@<-Wkv;7AwEz}FnrmhqCQ}ClmM8;CRqUcfO-%T@hS)14| zy=U#b`s(D{GWkTVAFtE?+I2TPaA<$%#^>0?-&7oL%i44~r6Ng%qt|fGPuA&Cf`_LT zzh~cmzn<-g#JQBM!X5`1dy3D+$b@Dou=lT?+tht<m%f-rqjI210GGbd3da2r3&j2? zHO?wv`S(?d%P;t1^*Oa^S?RG_XIwRQm^mt4z5R7>sR<_sU&*TN(Fdc<XEGgJyEj%k z`uOJmtcEd`^IyFU+i)$_UxD?xdoWl$h4;w=)vNP_tpqbT-CubuF#Y4Pfc=mE0&yFT dFD=R+m>CZKX4kwm>kz2$@^tlcS?83{1OPSNz?J|2 literal 3208 zcmcgveQXnD7{4OhWCU20s4<va3W{IX`{-SJcecf?9a{~ZOIN}c4dZ(Ew!6^Y9e202 zTaXM02_L~3(1iE_iYERc5{xJ!B={XA1~4&7VhA&U#3&gmi3W-K-d)>WONUbvo8DdD z=Y5{v^Znf0E!|xmbDHmLMi699yfc=BPt>|@ZiIJZWaJ8bc#LF68?yhzg74vCX0|oa ziXd-{&Auiy!1XMxv(G?~*|%Dk2YL4SI}oJ#2RYSi_9m9`qMG*!l9~p-VqSyX2ohRS z)C6%gFwr!~%1YQfapag6m8GzE1(P5WS`-Y(og+Hv8R<%iBdbMD@-B(YX$}>6h>!=S zfEM#P#o&u!uMNz@-xeA7qBe`UI_zz=G@`wUZZxXu0A+juOe6w9G|2f#CK#lH526%7 zGC1MK{RBq&d79v93N3xSP#ubfbSc9pV@pfw;417LFinle@j{{CEBJk?p2bOy<8Xq) zDGGxem@%xFLJ?Dpg$_swCI$>qmo-yX71V+i((0fY_CkvtSMpi~TQN%Uf|0|Ef`*em z!g9@Kl*9_3HmK)p3nUQ-Igkg6X+U1G!mACarfLkRQ$Sa?s}#TxClVDMb#2M#D=G}L zeF(Zyib`E>BQ>l6JP8bSP!~b_5HxdP*&9>NOvbcI+S;kI3l!xkSgjq0)y|rg!VvU= zkLo}$RXwGuxrkE^-Q|Fw(Wsq%^xhS+BB=%Az7Sq3VpTvj7KjNZh)@LO$A|z%(J3;( z(=1QY4-h0z5H1LZvkD=hN^)j+5`lzON2SOhPrxtbMsRUfBft`u1XGw6hMTv7B8hxP z)$@WGk@G?p;F^*R;giG)U!^kmsG3uCXb_0_LwG%M9hsOa4qC<7s))dV2{0;YDfL2| zkadwt#GD*)npsjsS>h*kv2=!|Igr7Egv4Sb2>`~4OaKE6D+yeN<pNgdt)7AqWpf~? zO>(PpJ2174R_P=Xd|WY10Xh(mMIgZ^LzDazDY6pBU`$$+Fd)$c#-%|JBQhK(`bCxo zQoyc(YVop3CE&7V2wdOaj6aYe1e%5ZX6PyXb*yxO)u?$?m*Hp?axM<b56SX_NQ(p$ zWHB}XC@etIB*yy1AV#ySl%|6cLlI2bk2)|liaKR0$HVT(Te;`~Yh0vCj_ui}3AzES zsSx&-$3l5lIxPp;?ZLteqBSrhqSeVj3gK1MvLU55b@t>sd7GBM*NNAKFAM<XMian6 zvAOEX8*0WZ2s&uZ!UmbnRB`~T#oWksD*rzQ+YpBSeW<6^BL6hh^+)CZ9_mU}iUWd@ z1yTer7i5|6H;Hj_<?f7fo7FZ^$a?+pu=!w>2zCpQA^bX8S)Ie(YxPoY(B=+O1pMHn zbuS6Jx2pyFZY=2Dt`?k>Tdv4vgeqyOAy;Iq_q6ju>4C>T5D74h9}b#Yay5UqTm-q^ zm<(SihBXTOP>U^5yHQ81Zz?g@h9l-=#&t%sXO}~T2SB)jnJS+?tySd&3lw;4)#3T{ z@yyr(cuu}29&1hYc6|JF_?8Vs%hHY8U)UIbdDFS#%-M6#g%^yWuU<yy?;ic&HFhO( zG5Xb(cRX!>tZWEOY})=DlUSI1>C3nK%#&ZNzjom4mPMXLE0UkgJ9Q!X`nkp{7pU)U zA3u*iG8$jG{MXB#sNO=4o<DhU+cSH77nsvtFSma4UUuud>kdvlb@uo#ROjfrpF{nF z$JTj~&wl#xiJ4bFUz6UU>*LJm5p5*aKlf;Zrk~m~{QKT-?|yI5*Xl!yn@)Iq`uP0u z`<vdpY3--)??d|aRd<c|%-uJm^T|Kon#b)rx;5T~ZusWXrELv6XI$Aic4_Fbr5!Jx zTzgzO1PF*K9yxQHh%9c}@1OXvao2g@p)()#KfH|lZPsS2>Fnry{Z!*CJ2oymo}do5 bv>o*v^j$q%*nPU)`a2MB?~3hjTeaaYGD7f( diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_diagonal.rsi/meta.json b/Resources/Textures/Structures/Windows/reinforced_plasma_diagonal.rsi/meta.json index 453a3797223..8477687a8c7 100644 --- a/Resources/Textures/Structures/Windows/reinforced_plasma_diagonal.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/reinforced_plasma_diagonal.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "CC-BY-SA-3.0", - "copyright": "Made by brainfood1183 (github)", + "copyright": "Made by brainfood1183 (github), transparency tweaked by Ubaser.", "states": [ { "name": "state0" diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_diagonal.rsi/state0.png b/Resources/Textures/Structures/Windows/reinforced_plasma_diagonal.rsi/state0.png index 8ad1f325b352c75d7f7b998f9cb704bbdf06410a..9f76902acf6b3a5ddc8b0fbf20bed46d429065aa 100644 GIT binary patch delta 1264 zcmZ2p)5<qN#g?%+$lZxy-8q?;3=9l>sS%!OzP=1vKsE;ugTSTW$v~2`z$3Dlfk9&y z2s4UXDQ;q5U{0H8B|WiQhcCi6K*2e`C{@8s&p^*$;@7&#D;O;%FJm%K_ADq#HmS%h zaIGk@RmvzSDX`Ml&jgC;<rk&v7nh{yBPq}~GBB{vH89dOveZ|y<5GYDo0Md$lFX8v zR3tH=oJ~<mnw4Wt$z)p&Ny&=b9IKqfymVWo3f+{{w8YY!5+%E|(wv;h{H!t-KvhV3 zZS=7iXj77zmSz<hlv<phQ(BUlpJ!)eW-@sXm-6IHE*@qOyOB%TJRl>#BtJK`q$o4l zGp{7IsGumdBoU(8MjvbfRuz-`xkM-5=Q1=$@~xF)QAv4zQFaK}XCSBAAO{AD^yC%X zX7z`zMSKN@xtynqV@L$&(dpjV!igen%bgd9>xOcr1qJ%#Y+L(i*@D?#E4UA~a+^0r zAKVpI?({l-#RL8i>LR;J9xmcoR5p8?;88WfE|2KhPQGV8TfQ%_QrkE^#!ln@)0&yz z=X~Gu{LGclRTl5&Reso${-I(2?(eDl){DzA{Co1OK87i0|7|{oy815{4R(abE&a9o z6~lw`X>mJFF#i9sVaN5YA`!Rt*J|;0{aj~}kjehzPs)bZ>NW4*Txq!fQKaJ=_w{3C z`TFr|wTcd$?!N6UTk5bS{QK&AN1QG_m0@?w=dt{-_0TVm<3S3y7D^vnduG~qhVUnA zBxMsFwlFJfJ?tb?FH?P6QsAx4omI6-W}Ds5S#Dpvman6XF=8uooX!-tpqCGpzsXpT zt10ld!7RvnLBn*e`?2CIe~QX#mh19G+?ra<u(a%&l;f{E)0q9!WrWqs4qWnExv*@O z&*nLk*_6_ctrWIYxK%kpX?vD>P>z%z^UaO2-&X#LIW?WFU)RaITDyL$cg3u|E$`#p zie5zk4Xg}^d0Vw3t;PM_*6p7s1}of(UU`>E#D2Oz^SU|F(yx^*6Ee5I4bAFrUeI`D z=@T=DZ7i`;uT~zYdm++MrZoM*7q6|dekJZp#ZFfiZnc;o<sW+O)9U3b+MI!|*uU?- z#FCRARGmY*=4_P}v}iYEw-Bngc>RBw!<OK<o}(-I?N;Tp`AK!~s7p19f0ouON}G3m z663{lu5K}J12g}cR$sL1x#f0B)M4fS54+suGfp*R<S#AL)?q()nD^<r$E_2O9V|@x zRQRmQncc;Dy41?K#k^iT4{x4GNe(;SeS7luwj%p!+E?pkHf*_le#NrAv88fuS@j1a z7ynX_exvn#4&%O`-@-*>WeXTSEI0maskib<#A|Q1SvRv4wyZdJ_@17$u~fmgzpv^F z3?mhvH>}rL^IbXRpOT=}hnG8J)}F7vylT7riqE@l=_+J9bXW)_$j<qE>wQ#xL3)MM zt(%ASM4tlfP3~De*VuZIm3h-=Cxv&e-+oCsB%EVtFT0jB-J$ltPxp;eZ~dIembu}5 u@!agPZy%DK(;J+vt2<}u{i^!>^qRceAG>9SyFc`U$}dk>KbLh*2~7a(5g;u9 literal 15911 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 Sxvf3QT{LY*!MjuEzw|%x_1DV) diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_diagonal.rsi/state1.png b/Resources/Textures/Structures/Windows/reinforced_plasma_diagonal.rsi/state1.png index e724d3b9f78d115d79ca3ded3230db216cfe4056..0d651dedf6e8fd656889f5362d6dfe8439c31e04 100644 GIT binary patch delta 1257 zcmeCJ`Num!#g?%+$lZxy-8q?;3=9l>sS%!OzP=1vKsE;ugTSTW$v~2`z$3Dlfk9&y z2s4UXDQ;q5U{0H8B|WiQhcCi6K*2e`C{@8s&p^*$;@7&#D;O;%FJm%K_ADq#HmS%h zaIGk@RmvzSDX`Ml&jgC;<rk&v7nh{yBPq}~GBB{vH89dOveZ|y<5GYDo0Md$lFX8v zR3tH=oJ~<mnw4Wt$z)p&Ny&=b9IKqfymVWo3f+{{w8YY!5+%E|(wv;h{H!t-KvhV3 zZS=7iXj77zmSz<hlv<phQ(BUlpJ!)eW-@sXm-6IHE*@qOyOB%TJRl>#BtJK`q$o4l zGp{7IsGumdBoU(8MjvbfRuz-`xkM-5=Q1=$@~xF)QAv4zQFaK}XCSBAAO{AD^yC%X zX7z`zMSKN@xwxl`V@L$&(dpj)!GR*J`q!npG6D=QIH`!e6fyOau(&9oc235^urN!h zxHOIFA1nJm0ikxj-p-GPx&c8<wGzoa6Si&Ka_@b`^|Q~swEMTsSz_5=Ymxna>vg;D z4=R`6kc+AL^XbY1#{VBSY_KVil4JPy=3Wp}&i?xQd<_3GzPw~D$lvG5|LrQ{fq0!g zMH89-{q)>;Z@Wmut?m1!v>mC5m)Wp|*``uC^sDf`@=U##-)&eI{eAVe^VQ$)+h=vj zeE4+g-0gW*3b$tWE;IjKb?2!JyW9IY#SgN7ew{dPslyg$^QPasBGxglJ0W?w>QF-l zyF*rctA)k4b;k7yw=D0hsx2$r<##S}``Xof9c7FWTbbj|On199^NRn?iw@U=6mBuv zdc195iaQm4N0;Nr*EeVK!h!D5e$L?aw&!Zl%#HDUHpXvfSZrjTR_4XKwfN+g)0UYE zMOAaGCNeLY+bps()Ouo4aIw@0zc)ty?6sQVQdZkIbl=XsqW5rR{db{#za>ttOtwtO ze7<1Et<oJ;E$;73xBs0OtZ>VE<y|Hb^Ha|m!_Tel{WuY5=k3>_S^dom8ozA)DBF<3 zxyyuQ<$<~vA{}K)(;s~C+-g4OMW2`Mw9k*S3}?>synd}{_2H1i3uOe}&X(Waz9XgL zq`*|A^qgpxb4h0yr?H&-v0t-Z;O!Lg+|+lI`(NE|oXn<lxU=~{_s(2#OWWtADGpmU zPZSHU4vDHi8)w45c-zEHtO2j=@4PGI-;(OEr95c2=rrc%1<pHne>~*z_<_a5Q*8dm zmC4l?&)ss&+Fq?`*pjZix$JJm+c*C$5;C`+U$L!x_bZ#8D^133UtLzs*?eu)`?>WO z^XD@+*vCiAOP}o3yD`q_!kHM}g|4M?_ug*0xR^0L-$Z)l%8yc(>^lTkG~BOJoZsW} z;=p^ov)kGBl+S(lt+rHd#a$*Nww4ZMMz#lQwttIiKDRH@vij+#8}AQ&uPMqh2`=V~ zxOGz`+&X)kYiS<K^Hzs9-ER&?9Qc~Q)^_g3P|Ld#^L%`+&iLK%xj#vL>udg(p3Q&f pMMtOb%S#tZf0n=M#d7Ws|C$S?y64`_-w7(XJYD@<);T3K0RWbNBNhMv literal 15885 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 diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/full.png b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/full.png index 4cfc4c45da5178cb9fb00132bd47b9570301ad6b..ffb90335d936ae9ca6c0a0287ae2d91308cd7df3 100644 GIT binary patch literal 3504 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 Qy7jkYYHWclG&&pnKc>tP4FCWD delta 2486 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 AM*si- diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/meta.json b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/meta.json index f66453a57d8..f8bf1f627ed 100644 --- a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/9c7d509354ee030300f63c701da63c17928c3b3b", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/9c7d509354ee030300f63c701da63c17928c3b3b, transparency tweaked by Ubaser.", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow0.png b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow0.png index faeb000b4af4ee778ba66b9e19d9156b78305548..e73ef0c5aff3d10d3c2abe08680b75b88f6cba3f 100644 GIT binary patch literal 4096 zcmZ`+c|6qH|DF-DuVtB}v6Q746lTWQ$-ZPOBFh+znK7Cf3<^=An53v|S(7~~rLu)` zE!o$EvS*t{maM;_e%<bU-S2t5&i4L1&wF{!Ie&bjEzJ!$*+6Un0D#lTP|u1!YwdOx zX8M?qzBo*ufJ7?;9YFC1ks11i3w6%O!^{jIOJB3l`)=#BzC#~beGTo20DyGTZU+j& z#mWGHeZFX$bEI=-rf?)4C-3TxcSFgOalU&j1Q||W;!q@4Fd2vSA;QV(;(G`<eZ6aj zh=cbaB#gTFIWtSJE}nn_tH>+JD~M~bfx%z|!QBIHrFZ%loxW2S_ac#e;SfkbK!AL} zNqIcM6QT%%!5|7s5G5r!Izo;Z=tFWP%lQx`emePoKYA!4l7RLlq47T8UB9kwct4W5 zxcF|M-|c6f?#SP9eEkU6y(sQT2nvhBp?pY0h@!kA<iB_%w8!5W`VfD~K^F$H`-M(Z z_)nUVF9~^yu9QBRp3krP=!qit;u1;jkUszrB?SejoPv^^5)AUYK6?5HcO;yICSg%~ z!u_siPeE-g>7UkJ{H_F8^scgStgDZwx;R<R9p&Nbhb4(?5PSpBKJNGcRRrWG?4R_X z)_;0MK>i~E#BSMedn*(XkM-LXUPDRc6k<<|e^~!Mf}f0Y|H=5%`frA%7oLQtUnv3_ zY2-sf5qt^s>-96@uXz6(@o!&$2e<V>lQfimIrx|P57r;Y1J@>y0`LTk&E8S`q2vF= z{POct(?9O$&j+xlKm7%0upuD7Uy}yg-Irw#0RRqeBRy>!GO*`-FjmAs_~C=gBdLp@ zUqDKcYI$Q%XQBRI5kms`Y~A4wlIc;JJO|=rJH#0c^)tbSx5@dNx;yE-d_{4VGO`J4 zS+Y1Z%dO5{w3TY<SUrVb&EM_e$W-vcutwyMm9h^5rCyhVTaQW1w=T@J%&l&;s+KG! z*ENn&E2w9=UffVTmC03X)F~g3rRc{Zqn8oae_~$cU3b^^bB?)3PQys2CX0AMJIdx0 z=;eY{asg9Q>dv=8XA#O@!R=KRe#t>^O?9{KS+v;dui8A660v)H<(aBQ)$_`dc}uS0 zGtFPXq9U5Y{Uenl@b84?J5)z+aE`!<voNn8#jo*gZK6(}rEe*9NqI^vrz)RJjEv5a zxa+KpSy_aq7nwhD$65iAlAvb0bo?SvPtjja(^(#z(_06y<zb(gUEs)=2q;rq-Fl2W zI#kqc_|Xu+AIUxVQP1mh>@$@h=m+bj+mm=(P*1=HBdqB{@7?tY9atOdlLj7^Gf9Ew z!6vy&C6YzWp$=k+Hxi*o#Jk_7Bs`CUdo~`#5kzUXwkFwBcN`4mw0u`*9j*;suCjzz zyATA^Ze?xXbLi>OmTNgK0%4ABkx6l8@vVAr{9=yV3sc_5h}W`6F}OP6frL<nXdOZ- z-DyS#&%L!@Iph^r*9n1o<8Wqk4wuMY=fGU<{c5P<v0A$mee8&c<HEuwW&O{KV6qCW zaYHI$Q%){chjN{#cgpfxK~dcNc{HEuQv5VmS6`zrzk$Gh7J>PW5n#SOx;j&OwlgIl zr#=l6CUHt%K&&vfYw8qxr}X6g8zuX>XZTp%6FW_A<XjY}kDEM3HrKk@Zf;;f8O%rQ z1igDlTcFnX<>TVt%s6Vxq?k_MWUKe7(Y0@5g%)teuUvk;Jf4>#v|!sl)L2HKQbP7! z-51B@MfTS*Her^{b^*Cb6?OL$8ANI$J{fQK-!mVZK5V;U^FF$9kRyAaXj5%)?xnnM zX1V|=p1Jqfind28Hy#@eu+;z`bn|I{;Dbfg>G*Liq!!qWnpY%;16q(GnpKkD)%(Ib zvj*W00A6~JTMMU`LZS}WHXkh6I9DP2$yi-6=RN3hKun3|Ih-LUB0n_!EeQIpT=H~r zYdaS?>V?(n^}l9eK>k74P{^oC`MkDaVVP<W3v+F^ee67dZC^$gjdDyYs3LqeXZ)$! zh1n75m|ORB>~+sygNpZhI2_5Vf}G4Ct{2{(4LbH!ZL8mu`9b%3PibAoJ-cmcW$Xlg ze90ga*f0v@z}UMk>rt|V2AH`FlZ74PkhBY&3zZy4Sb^rvYD>=&ay;B0x}D%ECJZR{ zG+t=m>?j8LNd`APXMT0GO&JI%KgY5kkquiShcsO1OMkT;wY>eplW9a=<_gMjn%Zzp z{bhhzSk?kKSdqNn#4uWN$>`?fq+fH3{oN;WRZ9yVQBM2-un3<^&2eUZ7Eg#re^sin zHbqO&E96wB6I4S+U}}k0b%GHpxA;8}FdlY2xcres*85{?U(@33S6wW<)Z5)oyh-MP zU;31WiNG+3PyyXDOAVv^UkOZaF!PwEjgO4cjZqRUoAzCTz3+QE&WG|0Jzi;_I^524 z{o0dHoMDVomP>=A>FmIR&gb!o(%RY0p`qzc9tDBSv)=s_ohX)iZynyNOw1}47Zdr6 z(1~#>xXjHM`PQ}*8S|Z7!BbOrm&E<e!gB1tPA_#4E*sdU2~r&{FXhHNn&JB|d?`~@ zFn~(7zPVqYAsTJ*j`-{%{xImr#wZAVA?!N7nAI^K&_YJ{2H1HLtl?9b@p*d}Z?c2e zoVSvh$EUY<Ij_V3n|d!<sn_OK!Rzz~H}BhTJ?I5jbT1|rq+l3=LS7WTRgy~r*)5+O zNnM%^JRG`d_`+E4?T?RoD<+0PrmaMv8&{}QF<1r2_S`Kg0f?bY-4yF%<j^2Als6Sp z#tr>S;`?lQIW<&tbq?QXm<)|&!Ghc!T*hy|RJzlCXfdz3ey5_v_6Xa(0$!({u^>== z<6Hi^J323QGb5XZpnS*tRvD@F?N?*;Th6zXH>ad*u2EkK%@>#pCmr-!b5Gd$UfN}K zy>rZXjc~wUojX*6Mzxl+Qd3Vp<Y;hA2<}qCt>b1)<*GQC+RQniq-xySA||BG|5a$+ z<V(f-W?*(VyqDF<_^9|94px&_QSKY-3Vx=TJN_!M9-5{rw@%%{aFRE!L`!*ocz4aK z@WOl3kJ=6b$v5j*^E~j4X_GaLuuC-4^wn)2?<cXm<MtrK_^g?G9oFBZd~lqABbRjz zA|8N{Sw{}dk0uEv@#U+9gIcZYS|m8p(2<Vej1Nc5Jf6uoIg1zy^=yg3<6ryBG8%pp zf0@P<^bq%CiuU8|$@TH4#~Iw%M_z{v=r^#5N3I_X?lZ7XOc1hJZVoj!&buw*TnWim ztW)(0$8eHNk}wRz8|#JhxwoGBJgHRm7Q(h^uGQ;T$=acPt8*|EcIzyW#X664voADO z{-=Hng?uH%D-}%7dT7P_wW%EzTuywMhnFLB9HPc}1=THa+8}G@ImZ;!#wJU<{;e?w z;`XMJN+PLmWLUPpmG)X79Os{%y5aB3Q`hh&mVvLd{acN^RjGA+{^B=wouiPQ*>O$A z9PLbjuDEoFSFE$Bfv-x<?C2}@6KUp~ult=JHc#{;YeP$BA90<IS0BO7S7Sb3xLKA4 z!H;bbisCBdIuiqbd}mL%z(4A+ug00XDrib}Wkii)THD5NF5|Ge)K~uD1p-Lf7>owS zjnx9#I}+xe;rP--Qusc%pIwM|-C$roHXJ{St&y{+IStTaT%%ffcn2PJrcOL~g;HKU zHE~bM>XL`!`{<i8+gc{o%%1yH601AfikYNUu7*>oDY`Szp@`?_>IRhAeaQybE-p-6 zR2(|+{mq2721_xkFGq%@y;Akpw#@N2uAR#5e9KOrEAh$XHbE^ggt3n?Y)8}(K!qha zNHaUH>3u$%&-ZezUSwoDV*QdEc&tLK{&uS}(DHWC3dftM22k#o*l#Tz`c-+kwQ<Q% zkr<hGe?^b+VIQbYzNTly8Wv${L{tXKEs~>dXornx#qjWL>E%?O<QO`pbck1HBY2%i zsZ59N#8$1ofrM*MY^-ic-Wm|jP`6Nx>I!x25u`lgq@;3IlP;}5NhPt_&{_7VBd^HR zgxJLwv^j@;<+RdPTDbDeP)*?Z<1wbLg!{sjr3#qt5C@_gIHS-IK8drNvg<@h0Zh@p zddIdu#K*x3I!kk>)~4r|nISv}`aHsuuK=mZelJ>SA(lx~j8F!ZPiHY48t~X;jYA#% zx9!!sO*+O;^NCR7fQHiJC$?4}iG^*QylQo6ehz>VJs4(ds-w8pDOLgrwC1U~PUdhL zt#LlzP75t5;w5u^++YE_ss!g`ipW)oh6oGj96CPq^<*Jaq_bx82Ufe8C-(VstLNDl zOO!&bY9lx#wVKa2I$V+QD_9P-3~5uYfl0B*6Z49nXpsv40&hCPMO(Ty8HVm*Mk8LO zjKY8vFpu?GK}}B<3G3tnBu7l&q*Bn~mAL@EepnVuc7m>i<N2#vJgOP?gV)+PVvOdU zUXMESNe3Dy<i7JfGk3D}v~%dxC-YCIhszGJpHxF+E2b6J3nyf<PvgzgtlZjI0RaPo znkx!Pp?Ibu%44qyH)Gt_7!Z4j2S;Aw(|c_$2;heHw;e_UNUAkl4S8)TAO~FSF!^Yj z;cA7=S8o0GQC0bj{NnW5R}6_D82|D6TLA}%`_&ds*?D&PR<S(2BW*_`G>r`O6i2>B z^(D)+DFZ;^ushOf24S1aZ02blo0XwnHd}JyYi&4ZYnqK+vw7rn{cY3{wFsT{G<5HP zkeFS)JMY$<w{@b>rvr>(q0^hmf)^Jh=1H5Y7fIW>OCqyNtdmH`r-vjV*=L{vPb%{k z5i0V1_4zgB<kV7B0fIctG#XQL6aPlbUldzzciraI{ID?`K|0ODp!a1<FA}pk_rnEM z7>-2LvP5B!yf|-i(|%9>ayBwDr0*cM(6^wC`&#wNtUv`PjA8{<8<jdZ9UpYtjE%{H iwxbq0y7F>s2k;GMe6BmwFnjm!+eqJBuUN+={Qm%Vx-Q!Q delta 2924 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 WI1)>oZmF#R0000<MNUMnLSTYt!GLlA diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow1.png b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow1.png index 46547d6b996bc58da7c10e55cafb0fd78fcd9801..9aa576f62533dfa75dd80ce84ba490145c87f50a 100644 GIT binary patch literal 2864 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 delta 1681 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 bfPVqSIJvrXFH-OT015yANkvXXu0mjf<2NzO diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow2.png b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow2.png index faeb000b4af4ee778ba66b9e19d9156b78305548..e73ef0c5aff3d10d3c2abe08680b75b88f6cba3f 100644 GIT binary patch literal 4096 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 delta 2924 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 WI1)>oZmF#R0000<MNUMnLSTYt!GLlA diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow3.png b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow3.png index 46547d6b996bc58da7c10e55cafb0fd78fcd9801..9aa576f62533dfa75dd80ce84ba490145c87f50a 100644 GIT binary patch literal 2864 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 delta 1681 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 bfPVqSIJvrXFH-OT015yANkvXXu0mjf<2NzO diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow4.png b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow4.png index 66dddef140ffd3fc8b6ecaa428f7de87b7bfe741..695cf7e2ce482846befeb4e4b20427fb8bb9f96a 100644 GIT binary patch literal 2888 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 D)xy1P delta 1730 zcmV;z20i)67SRomBYy^%Nkl<Zc%1E9O-x)>6#nj;_roxQ3`|S;FHm6$O)a2pY2!kT zu3YNEq#I-6rY=l0nrPazE=m)1q0#8h=)#>piHR|3n|9YyX#tBu2LiM(<+n2oFwAi0 zy?3t*W`<#4hK~2qM=D=Jn0a5`JNJI~-t*46=MI6*c&+5k&woCA;rt3wh}6=#PyPG7 zsVJkIyBall_>cQfc@*zd<~?COSm9B;p|Bp@`})YqcSP(<A~#!sdbNoU_WCsdn7teU z0Q@=7r2)WZoljm5>%qMq#XBcz-*y28SNf#pXMOrYUsUz9IWapBa(1+zGyq_dj#qDX zPhtklh4tWGQGffk3y?%{YhnD_seV%4z9$X<l0sOeRvX9^A<_9M0Mw&+1EO|!i~y2C zh)Z&VNFV@ANMHbvCW02$gVi3z8v>wNX4k3*iGVl=nYtNNp8Kv25kF0}iO8V9st8uC z`Apa@K#Q}D-R&NdD^7Tgf(i%ry;{V&dai4#*8y%o!++YyTe9XeVY>jM)K7e^jg(Pt zFq1GwIXl+UL02B=1OUQ%urxXH+aZGO0;EBb93T-tWdHy|9O(`(`R7r*fv_Gd1y&uR zuu;(mh(aI^*q4pZ2eu0!5C??AdT>)dAJ{HH61#E0ZXB>12mF8Ifac>(Isho83IL#^ z{iLz<4}Ud*?T-V9=mV}C^naB2m|B;~>6-W-*#CBkJ36L2=(HYt=9{X*JEtEka}M_D z)$_$a&wu}cXd6TzKNce{2cgqZQ(s^J<HT5E%%t3W9JaTD6-!`)M@}34xg<Z<Goca* zh)oz20J=wRX!U9nx4^y-tPp@^UPxa804R$yR)61K6AzC@<j623;n9eE^uP%^xYB34 z4-#%bT0Bkx(1g<pU@dM>#p}g&Zeyr(RxPe`+dlG12n&#i%PW9&QQA5_^B!l7BJ6yv zf+bThDMGH~MD@y!>Csua>Ep8ad{@+Ag<UIPi2%vY=Soi}uZHBBwsON+qmZH&&FC5F z)_+=@ZOjV$BCx~<Bu9QT5hm$)HPbmt8jGU(0)x9zRrCdh_5(-hDD~UE6fE%pSbf!L z0JKEGq8flUNyn=zwc3E}a!8IslA88J!j6amfNhQgDz(~Fy85KY0qbIcv^by|0CwYm z1a{+q1a{+q-8f+9!~w$T@V7G;OB*!b%6~wt*9#yHzzYD)1+8o>K12YZq0`3)V!gm+ z6yY)eKuhQCgm448-?)Ea@aB+m@Mx34O`dXYgSY)kbDNI>fWL28%f=u7weGBF8$=+y z1c*YUmgjxuOixI06i9?P2p0QeYRj>MI#Gy36oOp56`c@jzvu&K$oO0j=~$UEaewQr zdst=>y!hi`9`22y>=ied2`)Lfl#O>kU0~~$n6Ll?XQnOyz|8MUlG~>-&cLU89;#(6 zr7-|-`!q??h?I@*_^tk&Xd6TzJOvl~DZBK;HOX14QZvSNMmaA#<fUD`H&jMBU%azo z=HjjBgb0LZz^zl`XNwMLj(9MU-+wSjOy_IDa&8t>DLfm0<m;+4qHPd?@M|!9J7$D$ z#|$EaCJGryW`XI!Q8r%Gz9_891+>i00qer#th}gwQCN`+gp$>o^v*phZ#S&U1?Iwf zu)0#K-L!bQ6>lf3$_3Kv0D1Fv!U`XdDqANyS&<KKH>~gha~a<=_Xl$FqJQ>9VMTFt zLuoAG__7{iN^YEP$AO1@u`S6+V%pDS8{wVg6Kv1N)6N&9Z>ecm-Cta{%aq9jz{_`i z7e(ybo{r|&Pt<bkH*Q#V{}qqrfJ82AvY)8s!;4}^%z#|`iI1}1C<5CB$W>R|s_tk7 zY!@IM$=?D2sW-)j8bdm7#eZAGb{~+5jPpf#^Z8;&%>W=Z@_|V@zGYtVMEz(ANUiw* zu<nfTro2b-2CO(NZTk|aKV9lt`&POLz$K}Y1OWS&OXekoWaCw1+2nX%%)adc_`jMe zsC=o^hzE_-p^34c38lWhCT>PKn;%{(%*Jcwig1n5b^-Prd1`6oN`F8uZzwYWVBuaw zu4$}_=nL!-cwN}O?E*BsyGN~<DCR?*vn~KQ{7FsR-KfdV8d(E?$Z%ZG%1eafCo%iB z3o!cS!}!twl}kDbqp=B{_n(^}o(8u8fN}<hQY;}GFBeI|PTcmlz>S+-L@kq}%cF71 zbRI9Na?!4V>#|9?$vbo&&&6{N;qtoeGa#Uk6<+H7#hrewxuBJO@z)g>05oVmo{Ja7 Yzrx(A<|rn?4FCWD07*qoM6N<$f_`^Jng9R* diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow5.png b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow5.png index 8ebeed21a9fceba5d6cd550f7ab6d33888cecb9d..6654332c366a894ea342a298c4a0e2ceb97e5d52 100644 GIT binary patch literal 3021 zcmZ`*2|Scr8-HiWHujyuG%6%!Y^gCb4IzZeQnvds#>g;crdb%DZRqN@Ag<+-Y(*m5 zRb-cPg|gmDWhoJ&LScka-=MEs_t!nY-+9kD&-?#B&vX9gIq&biaNPcgn253n003gv zR^|@85xdca1bELP;+f~X0YrB=Vg{6U?U?2*#0f6ezIJxNUfx`Y*Ed?9V-oKvOto^Q z1Ayk0jSf;k?yLX+J}S}4h2dgni^Nj`b#XovZ-Oo>kh;l2v5>rJAc28{vI0qDI+BHk zZ6c7o`Gy$|gKk0?0ce<u-Ert)3XK5WuZz${z%U|EC=^BW@kKhATYjPQR%n<XgF!{Y z;laVdy1@pz6xwOH-ob+h;Rt=WzP=6*p+gTLGjJ>&GF^Sk$^ZSB6X<vvk;))a$j}YH zIByD*fri000)1^;dHUeL#-TE4q|GQkcsPMX2qcghbhw_b9{fi<2GRHL49WB_a`1$K zZ@l5r5I>|@QyF+eo>CSpUOr#;$4eBy8JEuRfqw&l>mv{cbP)PF`Ul}(_s2^g<%35u zhzt^8Q@F4D*;LS!#Q5I2f!~mTMBGpoNy3p&qhTx^AA&EANn*e-G-@!B>_Z7QM!~mW z-_y6O-+M*De~<ubW7|kq2Lhc!Vr~eJ(cf=~+7#nE>)%JP#c=r{<6G-L8OQx73<|HL zXhgg<nL(gYX}t2<iufhoza#$X>+j&sWFiBj|HZ*S%-^uSIUb}bjS)<t1vqUU#Wy<s zE9Q%zElt0v(X9)xsXy-qU_?;xueS*!l3ZPp4FH0}*5;;8EYO7e5JlE`N7m46`N(Wg zXqmiC4d<FgLTZLERPpGwJs)#E+&>%1E?d3%3Dig&OKRnpzNV*q-SRI$PIf{*>YR;K z$4KR3?GQQmwC_~)ix~;=2Y1TRLuk8^yo0B^2%P2crZ?%+MHgRnH%=a28-F$=>}a4} z)mYiSV+EnI8vZJ|zrPj-jhN_?kTO8Nl+#PMPJReBa=gy*`k12a-pJ`vpasfSuyhAX zU;8z>^`FW=k^#dHFzbrKoV~6s%;}ySP%MYtRppmZ!gl!iBHWa2X2_;k%QQs2{$%wA zRzjwyWMp<IYX?8s{$Ja>2G`?n3CPNK567>LsL2EK<v`PlS!<rm@w(d{mx6v?90*oU z#)qz%SjO8cR(4x@PrS=D5}O<sh6@7{kT(C5`~6#`W7tdX+9TTpFpBm=<F<A0dyiL7 zudH4u%&5w&M;NIV4;V<MS^0??P8nqxho0&+Wvk_wJ<M}wCwcpGeLXIhifOsAT}ALg z<z~kS8Wrm2N|EN^#|?^@x!qQ^+sxgf-SYC=#ab4<a=OaXuk9^rO;a9_)p#U2A~wUH z<pvi@44CF`k<e%qv`RBvF_!RqtSXW?sWsng)I_cdpVm!ii=9wMyHUC{%&_9?JLjWh zfmSXl>QBrx|KmJo_|9F1tug~FR&9vevStYb+*a26-))>5*ekzGYR3&4x=O@#-$=0s zRt((AtQ|#OMZG7Vh(%(NAk=|0!$ho3A{#3lH!jM?G#$%3R3-#S!a#vqGr%<eamEn{ zxUHqvK?Ue^EN{8u9g!ykAbk4xRq?Vf*Jpso3UAasgj7g%<#P8Wg%(%ZW)*I-;)0ed zA(>O}!(nP#^4LjRB`iPt^?z^>_GEjcb=n#*X-_tcmk+=VtX$MJ*yYjwemTp|^C`G~ zbSM8D_<6{oL)meoe+;VI0)VL^Fj094b0;>W=tGYKRa+kDT@#YQhHQ_XAKcxHh|E6P z(}E(#2m|6U9P*vnLiss&PQTzx_%oDj4A6(FIjbOR5xO^^VL`tvMi@E|n5N$2yMICa zJsTb{oouXv<9@1{g%p^wCoko2A(uX9J$vvfcj*SY-{fjuQs{8OOt14K=iGCb%VV`R zXXPD}ms2QH%CBsf751<Nk9nG#N{s3W%*#Z&u?8O++TjXs$(t}|PmND=O1Vj%gBsW6 zf<QKr_47`GJ$w*9On9e$oJCQyzOBmicH_E%z&l`^-NbVHYlu7W2OtRosx4c(_okXL zv5$&Y-_;g!UVLQu{dH1hA$?tErmelOqIQaA{gSR!J{Mkq0Lgy*$a((mvsmnSLwc6G z;9MFrQ!jLBNUWi$0hMDuB=7nFZ5>gV+*l65&P?BXVUY}B8L8-*1n6-(Ysy?KLfbx# zKmLQAab`|8v0thR5V9v@OVrZv8keig`#V02P~O_89$5NmDZzlH9<u-UK}w+3!;5A> zzF8i2ckt?UsFhsKuaNca*-yh%P2o=^HQx;O5KPw!y0dh5pL{VV9Tb(`2kpZ}V5Y#Q zb*~zZ3}-YptI^9A=`Slj59b5L_f8c_i;Ku$d$WH_zsu%^b%BvjNVIdIGPy;i3BSHR zDmXN77inZUA{~((+lT<ohYHy*0qD2)jPjc=YIFuBR*hEOQ1IXXxqf-9D$aA?tw!$P zg;jL++m5F76wuX1#{&ZMO84MG-k395^j*wn-kLvy9}97sw%<*4|LN@`$3r@MOnoZv z%LC0J(p>h<y^r)`YT7RmneDfXQqC4U1lLr!*p>GRegbt+K6}K=ZB^1KFLiIt3GK5s zOY!Gr$RefWx22tFVzqS(`R~G?SLQd$2Z6v6&FlMiMlParcEG&W(_79I9}b#_<lHHB zDk<M4sR-Ox^9SvS?h#}mrKF+71&5_84S7Yf2f#K&hhBd0XXl?uu(>cTUZv(NK7`mY z?=h5bgxuj`l)`af&3P%Q2qqvQ`o?<UuMZ3Pvk)0<ltlCbD3OgKWev3Z#|X1W`K3$L z5`O7id#Ba!azY5&nPkF>S?)@z+jrj3Y81F)*eSzyvPy04UL#0Ecoweqso6wSaeq_L z3LKkn;hSn-il0(znyNVedT!grF>pOKh9g{G91G0^Y%=^zRXxsrYGc;td0+Jxp7Y3k z(kBc}2n&NsE{epJ7RCf5O!Pb@xli-YM<@B}35cyV*ydNWMaSZlxDBe6ye|s7C(rew zusL`boNpBEsb|nuuMWVSa$Q}3&z3bVn7PW>5DOqO?A$gk{L=|(j9AJ1Xl_W6bfQX| zN*lV~O}0ip0=DbJ#8daW>Ki8YEw=qJC+j8xb2)GGwg<OnHV+^3b$QVkpdqRF{#pu# zdinR^rY9=|F*ipm?M(J<zJiP=6<v?I{02@inbetDbRpb9j!r~)x~)ZlSX?id|H+T4 zja-hc@gB4Qs=vAm@rIdCJ9=JB#eR2x4!O?O+4)qzZ!w>Ihs2(lT6JQeMOE?2Qqhc7 z>Y%b)F-6l|*~7ESu*Xy@;mPypTYTb?VW<>LX>3;HLRn(ha_W+(igo7g*{8o1>uHFO zn%|Eu;p^LHlo)%gsAgHfzQTB1St@X>^@533=m8UM(@j2A$o?4Zp^n>=V>!x1qjcAj ky2_)sKFo<8Jt4^DqvBuLgv{DtHh!h8E$q!p&Ag)j2Q3)`Q~&?~ delta 1680 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 a`~xcTWAD^5B)R|q00{s|MNUMnLSTZiLm?pm diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow6.png b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow6.png index 66dddef140ffd3fc8b6ecaa428f7de87b7bfe741..695cf7e2ce482846befeb4e4b20427fb8bb9f96a 100644 GIT binary patch literal 2888 zcmZ`*4LsBNAO9^AQ>Z1>$;~*N%w`@oW6MJ_x=AAQ5Y0>td$7%IMztPYbzM1m_-7lH zQBk2hRGtde9hID?Lvmak^3+HX-A4be?$v!?ukX|6_j!LF-k<OH_4^+8@%GTvSg!#9 zfTkyLv#(-yR(AE}it!3Pwns66xV|2)z_rH)LyC<SjqDjoA^{ePwYs7!Tl0<-#Ry>& z1GxZTeoomzdN`wE08nAm{m48r={p>i#jv78u)=9p0tR~#<s`r<mJAw?0uwM|m|UCy z4`0;4Db`9c5)NBb;YH)&WRefejm4qC?5$8%C^$g_27@_qA|i3Vo40&`D|UGJULKE) zLn8Tnz7^lbipAN3w03ZCK%&q{G#a7MKyc%kJc<Cp<Qgv-`M;gbG%l4xXY=SRCQNCU z63&X_;o)$lqmOMV&Isy9KkPV8%%YbFDv}mMW6+p9F4Ee{8u=w0j~@9?giP)SIuyhp zm0uJv)E8l%Y#!BC!IZl|5zmMG6oFC~{c?E`$WIiIXcP*IK%o(62js{66yZBXP;opu zFNU^A+{b(t8FY!^eJ)k%D=CPfE1AW`P?&r0Z~-EM7D<VV;lT+UHlNOnVDT|d$R)MU z;Y-rbtvVsU5P*|1ZCs!)jmwIOQxZ==+uJ%VlJS}JpAsw~$X`T!D*ZRYXD^G#QXDA` zo$ATt(Ku|5;&?52{NV4uHU4euALsr|I*)+<VBlZkPf(wf2j{}!@mZW`zr|8~!sCDH ze6X{`=_hA&=>jbBuebpO4JYKs+eFYfTV9+60BQlAn_c__pwVDbjGw<w)p)gA*U;It z<~A(Kc~r-}K*adL+Q_u<ZmPBQ)4FnYt=FlTAHjhlmtA|q!~2evv-6lHrf=4qt#kdh z<PVQdUrP2dUkgT_jl}zT^>_uRvwbkrd*E3q|AHi9pnLA|t#Rr2olWE2b7SlylY{l0 z?F3xKc!#AKbYXJMsaGXsV~;X!(*hVLe{g%Q&G+B<lwN%@&~C@tlwo<wEcwOOve(kr zBU^uw%k-}wVYqsA9<DsB(Vg%zNgV9{q=bq28f>_-7bm)&x_&^TTy}3BWtJT_+MjYK zXu9!5g+T(&bu29F2i{muG$7s{XR;o=LI{Y|pogYpAyjVw_tmp?Pajutjz;(F%DZdl zV!HEUvv@KE=smBNQ4zT%mAt$mDV63Xf=z~eGiYn>fz9m5ebl8Za)pAo>Y}4?8q}|w zDWJKAR8^4pVeCb{2QqvfG(zYjneo)Y^34HAgWW*GPoh%d9lH*$Tg=M>%vsZ9Tf>6V z+ek^kpFzp`xrp!vWP1kEahdNh(B9m0A?ON&yu7F}Fnl!rf}6jGt(KTHq7BD(T?a$t z&mKK#j2dKwPgW4ihd`|x=IqVXdm!4Tc<~#N&V=^V&HZRISd77$r@0m@>LIc-_r#*6 zSW!7eSE?ZsX%^EI`IhLa71V>GV{6`Hw20r|{0pV`Fpj(0%JNw8{1r(1PMj9|u;wN6 zmxJGRO%G-lU<eNi*P2+8ODnb?fTcI9&P$V@PsYn{Z%o?4sk?bKWzXrhM4PuS{wRz? zdN{;7FnwPd_TiFuNcL$NGuDI$iluf4N7fxgNWn|5k;`8n?n(35V;!M-e70*}Eqc5q zt(tmice`ZR7p8s>U0`AdS|y#8%xHlyM_Lil+=P%!BCWnV3zuG%y4Dez;IDq@9WB6d z+bD3qUq8P#N44Lu|N9n|!j9Z1YH!^ogOeWrD|3P>em`~n>d>4`gqgwfeJ9F^__uH% z$dd$MMJC{b?rNzxPkquey_9kLsG+g$;?ci)=WBnZ83DnD39e^sj5lps)jvww;vUj_ zfwB4`CT{z|M`vJNtrc5Hz#+A~A~OM~CO20WXwnvBb5VxyZG~@z@xPI7r`Xg*H^3FX zMaMig?5F$&O}l(XZK5#C%>P8iDx($8LM>101L}FEK$g6xtriQ^^iRL%8T6i3MQPP& zt{C)h4>ADo6oi%lYuMH&D#2za_5s5$CiE_vg%Qm??;J>+yq8O&m-)_ia|yBCPY37J z-zNJxhP^Qlov%&4yV*w#jz>Nx5Ss8NC1df8g_;TblWm$D%}d6j;?k?!_PKc(?Her1 zJdJW$DD)l1ic-K;qrc}kv|)@OtEI-?S--wZPEXlz6(^qUb(dPo_CO4WbH_lPISWPh zOz5=KMHsp*Su8Q0s}eSQzn7Y6&TTv{uX^%*X#C{SDgQ2u4Ce9eYnl#3{E0<52yqPo zB^J7|p<|~*)~92bVOdEd{+>tmEY!n@&)@FqGw&#x_0c|fIsaVTKnpUl-ZaoIlJU&% zcx9}IM0kF@Vr7yf_u9ZC*;IjuTG@i{ZO*UtxYDKLlF565UiG+7up^jEWtY+|9u@B* zR?BY;%rvdj{dv|J+v7N&FaL&pPDRTWP!CZRrvG|$%F;PuB*$<W0Nr_H|AY@@Oxsd6 zgR51R$&d^lEP7Gtd}64w)Uvq+Ec&f*AxSoF+&oZo_+<T*rHCqNP&{kiyY!u^EY9eO zzSBvMTDHmntA!YSu8+tKW7I6nUV;EkJ(+!VYVD#Q!-cFsUHb5Y>;sM~oy*r`y)KhS zmPdA)jQ!H?-VsuX)16Ma@o;Y{x&;q=xb3gk+iwko)q)tYWKmsofk~VRaRe(xisp9r zf@4*tEE}mCGCc4ho0_WU4TftUt{no&u*<S*4DV6`fuXEzFzwlFO419j)E2Ju<+Zb; zt4$86^oC}J3$HUWc!5&@cpVr>SpNDf?5lIpjgXo&Z8+$zN(~IJ$+m0|13a*asLo7< zXrjh=C%oytPyd%htqDiXA`qamPRC6!y--YfMQc?708x^$J%76Ep!Kq!RiITA=Y)o{ zYeA@i$<sb>!i=up2*r1tzuKPLVk<W)oc5_*P|f?QJ4dc&QAUB@5}r)2WZWdP8ujht zGsVH?VZsv*APk{0`02aE%JV;s$RCV~Z-Ai&`8M)8FKzFu8*>8A<+xkB4NX8Q?(d%a zeZtQ&L7rD#cfW26KfrFE*~a^21l*|9A}%D@>q*M3Q{?sFMhLOuRw#4*wIYf9@Ys=3 zIXNW1+w^!c>B8L1??Xl;<fXy*%tVq(^-7`ha0&$RTb5q5qs5-cB+a>3bNup-w5Yv7 zsrq8r1A#9Q>A#`}0@qp7f>HO+&+}=oxAMN69{CDm*V=}-ntR!+l0A=Et+m5#|F?KC zcBb3H@8`FiH<J6>1YW2F8Kpj+&z)(Vg9<zQU%v+^4zK2SC#KPquUJoa@6Fd-cOUv2 D)xy1P delta 1730 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 Yzrx(A<|rn?4FCWD07*qoM6N<$f_`^Jng9R* diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow7.png b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow7.png index 4d0ff4bf7318bde3f96e034058039551ad57141a..e140c63e4ff524b62681e16ba770560f8de3cf88 100644 GIT binary patch literal 2262 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 delta 888 zcmV-;1Bd+95sn9tBYy)`Nkl<Zc%1E9L5|Zf6n(8G3W7~EQB`$R4GR`<2G$&bTW|sn z!Yw!gYtAqrv8k#?sB+~cmJzV1f9KbA(xUINqohxYMvaqt{<Hu8@7MMOnepY#w~zd@ zwrXA#^-ln$w(7Pj>c)RZTeYZ)dZ(?Lz5ns{gQWkd<mK3KhJR^o)e?XS84mzeQ8(JE zSyj|qX`j6zz!~3QZ}?hUwb+=|vg6sUwrVErw+{rA+Nxz$)H?tr-K>hbxhwD2J_$Zi z($2FJaBeCy5`siYk)439sXV!X0rn)s@_8TG2>`+*XsZ@~f1||X$Vc&cAAKOe0Dud8 zw{(*-fJ=p2cYiNB3E2s7DGzRx8?WsU@aW=1X{#2}{<9N6qZ;z>Gdf`2*8V@pP5>Dn zn%ZY{00|}$vJ>F>_tBIdg%03wQ+okC`uE^<fDa;}D(Yq|I>4~&FvZ8D0{}OrnSUqK z0XNbwVD<dLFL`7S1u8zG?;c)@>Uk-$%z&=kpBga;IDd)Ao`I!z(X>92zPS*C0OQ~A z#EtRVPW(J4!~`($VgMK#U9ewvC~!GqvK!4ICcqajzJXOyH+}MXA5nrJ7cZf9$_5*= zik`=%h(Z7tFQIlC`H;5HjVLjI2Q{ArXRzV2mPm+E&r1;{27skGw_vdZP;Sg>c~{=A z0l>*x0Dr*q=?m-L-AVhG;z@M?8PDM_enjYBgjhPj&-J7OI&1ksxWFYk03C}T(*C7L zq67M>0f0n0;Hhf)7)YW6fcC|Y82w8SZ3e)lKsbMAe*yNJKK5~9?%o@A8f4}00YgoL zM`$aDuW9g_2K$F=8jSHJ=hC40^Xuhc)8HlLaDO>{_8s2RHuh<A7%>1Bl*9aaz9&H1 zzZA*KVcy<{z?ifg4zy<vjHz_M(er$*Pujl}sdPYVdv2uC0iEqRkwgas+K=`G<U|r3 z(9#}ln~MaK-2cGmS6@H1?Imb)8$G1+0=YFob^-!>1-Pml{(*@Lmeo!`S|Wy!%1!_W zjd3inSBs<DC<&a#gwbu3+?dtO#e~^dHcB4A%jc@7x1-o7Nr8_W??#?>jt=|41Z4p- zURyP1BR~8D6CD1c$r&9mi~|#d(4xsG4ou*BaPoR^@_KNxZP6r!4)_Po4zi-ku!6Aw O0000<MNUMnLSTZal&paO diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_diagonal.rsi/meta.json b/Resources/Textures/Structures/Windows/reinforced_uranium_diagonal.rsi/meta.json index 453a3797223..8477687a8c7 100644 --- a/Resources/Textures/Structures/Windows/reinforced_uranium_diagonal.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/reinforced_uranium_diagonal.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "CC-BY-SA-3.0", - "copyright": "Made by brainfood1183 (github)", + "copyright": "Made by brainfood1183 (github), transparency tweaked by Ubaser.", "states": [ { "name": "state0" diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_diagonal.rsi/state0.png b/Resources/Textures/Structures/Windows/reinforced_uranium_diagonal.rsi/state0.png index facbfda3ade6a6c2884f9a596e976a4b6da0a329..eb68e7866f46acb5c1679ca572534e972cc5d58b 100644 GIT binary patch delta 1106 zcmexX^^a$QiV9<Kkh>GZx^prw85kJ&QX@Rme0>?TfNTyR27yb#lP4;QGcl)3w343K zt-}}L8=&BvUzDm~re~mMF!5{M<Q0q-lb11>Cwmr@B%4&^7PwZF*eYd|loVL$>t_PR z^zw_+^@~eV^pO<k8yOf_=o%R58d>Tq*>NerfK5uWRY_(^PAZZZP|l_(CC$n)r)07% zhoodhZjMz>VqUtfQiX0xYFc7xPKlCTT4_$sWPVl|bD%0Dy*Bz-474f9OiQzh3`#A| z&nYd*%+IqkH=4YMOL=l87vJPYE@kt8jQo=P+|-hy%w*5JlGLJtqSTT^utFmneXwS% zDkk@HiB7)HWoVA%Q7gxylJfkb>=3Z0K(4ew4hIzJ$t$?c>h~CM9ARK!n(67{7!tvG zH2i$Fu%k$w+O#mP*i|Nf3ttBMT$n7>l-e3&^Yw+}mHLB|7qD;Th+`4et+=>Y&ZgqC zyv9-kQQJ-ymh)m$wM4Vl8m@g`eb;<$Z29b*O|#!98sBXBx$pbgn)iDZr5*(DGudus zP{CMVU-b2Yf&{~!!rXf21>Jwu6dss!yX;<^vTVN4`Cs2Tetg|~;_MUURkizX*)xTG z6Pswc%VVp4xXPz}8Vny+ZZ`G~v2ja#W_i`l*g{zI{@s)Dj8ki0`)^*bsoCS_K6mBv zW%|!wF=<<O$C|58b70z)zvu5WW|_}-I2i6&8*k*9u<+ue51(H4hn~^)KUTl@q4ea> zGajFO%Cq9lvp>83e|XeXza#QS)0@B#F&q&$=U(P}soib8@Pum3zY`{coI56`JlXPI zsCRGH*}glob}d-&ZpKY9hL|<SRv({RCVpjZx|2hy_-aefWi{{DN1SEtIagiQICZXU zSiI)ZC|#~sb?-YF4mgL+{vD;NcFFUJ*P{B@x&b%O?)3j1_Bix%L$gab%bGWSdE%>W z75t6oxZTL}$#rIQ_tceBH2xUjrIoe&`>*So=7+a3U%MZy$xyIy*5s580YQ@jCo~`H z<6QA3X{(3lTeTw9s}s4`ym5Z~Wc`$TCg#z%BMz+1+Ldr?qb_4Z`<k$)tB$!`@L6J8 zQ22!JPCe7qyI1PpMC-mt*~GxU(1j_i?BC>PWpDPE85Le!Qv1C+@vZ9`URIe}>u{ss zs%_UDHoZL-mv=5r)bfCIjOG7eh6jbbDNDOmCNJq|V1HZL(QryHjQiKOC4Op|AIsje z%DiIRd1TjtQ|GjQyzh%%{rArXyZhbeW1Y0Dxu(t0&O6^~1qu#ssS|7XW0*H>Zhe|` uXuFbt=888L*^InDyuF=Wy0holk`MI^$CGCL3+ihHl@Ok;elF{r5}E)C9@$O+ literal 15734 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 diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_diagonal.rsi/state1.png b/Resources/Textures/Structures/Windows/reinforced_uranium_diagonal.rsi/state1.png index 3799df51bf9225b991de796f1ca3d2d663373420..a6295e02f87cfdbdb818d6f0eac245b9e0e57445 100644 GIT binary patch delta 1064 zcmX?Kb%kewiV9<Kkh>GZx^prw85kJ&QX@Rme0>?TfNTyR27yb#lP4;QGcl)3w343K zt-}}L8=&BvUzDm~re~mMF!5{M<Q0q-lb11>Cwmr@B%4&^7PwZF*eYd|loVL$>t_PR z^zw_+^@~eV^pO<k8yOf_=o%R58d>Tq*>NerfK5uWRY_(^PAZZZP|l_(CC$n)r)07% zhoodhZjMz>VqUtfQiX0xYFc7xPKlCTT4_$sWPVl|bD%0Dy*Bz-474f9OiQzh3`#A| z&nYd*%+IqkH=4YMOL=l87vJPYE@kt8jQo=P+|-hy%w*5JlGLJtqSTT^utFmneXwS% zDkk@HiB7)HWoVA%Q7gxylJfkb>=3Z0K(4ew4hIzJ$t$?c>h~CM9ARK!%J+0}42j@8 zI&HtVvZKiH`JG8F1%aM_E=HVE%_tRWN^CU=kBsWLx4+<OqnKQKf^tQ>`i+dt<izLp z0!;>8VMQEGTNf;P)To}`b8k=jJ&WCWb#KzjH@6zkvY7wArhH$%oP+TECq8BSGb@_p z``>Igab`T^zwe%)RlU?Uh9-R%hBzxno}7j`t=|P|-jzOIlrL&z9)C!9L5@CS$2`*$ zF*VEPwm)Jx^!qsbXMwk@hC5hi7IRK_n&f@{p!I=m_BLY5Io4dB>m&rCWoGc2u%0T* zEc2^5v6$n_-*+EQxmcWI7H%j=)`@fQh)&<K_rph%-p^O6wqLZnZ{As7T*G9^oU{8! zN$$Tn|MIqpDf4ISmX+&ZNZnm_>*B8~w>GCf-%|VY@O3Abg0&|uWY#mjxTVQ^bl+Eh z!w~t}YF3WrD^6aW>$jWl>hpaZ3AZ(~q9%Ik*#}-JSx|egfNRQIqr{ziTavH53HbZH zjYZ*((AGDpQcEUOm7P<v+0V2s)~9~XURU3Buh{yOY&Zk9WpACk=o>T7x`I82qZYrG z5RzGcC4;@=hyJdhk9p>0|NCBvt`nPKU;dQg5Xho~ty-dzZ6VUH#SUx>zLFEZYWm#G zD|Q7f$jN`rR;*tbut)#zVb(9vz2YU-*F+i$ysupP6gJsu!_0!}2Xl^u*0Sd8K5@5x zpX=H?Cx0-yJBqSu+<rQJ$F|46pZgulG>`lDOv1S-`MzGh(Zm}yxeBRoc5Qp#{^you zckOeALvy80Olem-JRxhbE5mKSK<)2ur&`U->fZI!XQ{(Yz5lmuq{0G!fBs#yY2uvg yLe5MAd7V)^8^8QMVA<KZ;q5mzBOVK`U;N#!Mveka|8A`S<$F(8KbLh*2~7Yz;k;r1 literal 15695 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 A9{>OV diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/full.png b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/full.png index 10342c5705897d15d15cec6e6e15d43900b21769..7902a3672bcf78112d2f6461d177f0f151fc07c6 100644 GIT binary patch literal 3028 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 G7x#Y$Xch?o delta 2053 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 diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/meta.json b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/meta.json index 739d63b2474..a4945c043fa 100644 --- a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "resprited by AsikKEsel | Original source: from vgstation at commit https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi and modified by Swept ", + "copyright": "resprited by AsikKEsel | Original source: from vgstation at commit https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi and modified by Swept, transparency tweaked by Ubaser.", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow0.png b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow0.png index dfe885bf85353c9892107604d33eb36f0480e742..42ed925e056819d74a6a829fc9b9f5d552a20e95 100644 GIT binary patch literal 3323 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 N*>}*gU@zg!{{XsOh@}7k delta 2355 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 Z{{fGAzYr9Fk?a5f002ovPDHLkV1kL4P{05H diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow1.png b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow1.png index e1ca7ea363976b27b350b4be8191b9df97a6c9b9..26f6290c6b41829a632c1e8077e6b0eccc29caae 100644 GIT binary patch literal 2130 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 D<FPGD delta 1148 zcmV-?1cUq15RnOxB!3BTNLh0L01FcU01FcV0GgZ_000C-Nkl<Zc%1E;PiP!f9LK+J z-ptM}&9<9qf=RbM6h*R)QP$Wj4Wxovij?$XMM4kSOP8FKkm^CigNR^*;wi3&s(4sR z<0Y{KjY>5TNpusmge|4ggN=!8IvaOeXXnqG=b=WE!>+=M^M4jHpX2`K@%znpe*4~+ z_a5P#LngaZd(WDW#(3h}-<6HOul4QpjfE-!fO_%U#T#ct@~a|)w*oVN$iWxCX_ete z9OkpXzedaFrnY*fxe5T7GWEJ~0hE7#<o_k*Hz}#7?q@saDq1Uz5~@&iF3?En=~kCQ zRVY-{i;L!$-hTl<9C%+VRV^&Fni!lIju^IuPX<2VmzOU`p4{IH#u%rRDz)OG5ZQCU zOFzE*CICz?&ME8x-T#H&;jvjOveZp10LbdSN|eNuT5+EF>~)d+(mUWi`)gkvTT#7d z+il=3z&OQYimi^VM7-n8cFw)T)bUcyxM+Uq9k4sK_kV4X@wbaNUKSZIy#xBsXTOn| zU-~K_n@|AR1;{28Kz0GL2?dZ{fNZwC0K!J-g`eIyCNln`hhMuWT7wANz5_x5WEUWt zPypEl$R-p(b^)^4_5uiRiOJs55=Gbvnjfd_e>OD%a83b09a~Y?H!aoil3p(^6JY^f z)Spmr5`X^m;+(!|+xnUNEC3{{_bSnov6^x5R}e$^FYrgz9w}8VELBVlP7LF&Z6SZ} z-~yWtHfqF^iG<MEo+!cs9GE}#767b#|EsEI4A<l??<gR0r5ny)kN6MrxLPajrN>?s zdj&CsSAn8($1i^QGcEVT-CL~6na{A8W=`|uEq{%{^BFwUi*LnCh_Dr_fYjq{QG_SK z{`1*O0DxC&KQr-M?s4<ejP*|Zl$zatOv@Apoi$S782BzCnqQRQjF4lqq4GJWRJC{! zWe)C2Z+{>_0o3u54gg<Wp8){0OqO&r9hG}9i2w!gPPBQ+0*`gIccG(z$m&tUO-z@i zTYvFD3$QXVXCQx?Y*-?t6Py5quzjqF?9gK{h$h_ut`len&}+6b+CKts*3_s%8$yKO zCcz8KdS7RcpNt!5JGjSVQ#aMM!@H!f1i?*$$D8dcw|vH!f0a}`95HNT-jd!0f&K+@ z_KZ&{B|+z{N9Y5BN)-A4ggzkj0ih3QKz|?52scH~n)yS{Lp)AqQ=^gG^^5LM<wMVS zenI~)mncQ=7f8P;3IO1)Uqo3cRV_YLKIg!70{be`mmxD9<t>w&J;J(Y2m<K>B&N&C z>QTe(C?L|+-i2g=$Gj75UQqd^3$V_WZa4$^)5OZe0`&+DBY;6PvO|wyA8R5Ygmnd# zw;=?e3MJmGsg3rJfL^l$tx387YlnCFZ0e@kc5siEj2r0d?D5qL%iCuXH0CXWBZhsI zR6NF*U*(n`<f*ZA0XCpeN=eS13Dg}*7a;Tjp%1u6=mSC@5c&WqKHyKl6MbL#R4Cs7 O0000<MNUMnLSTX)uO^59 diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow2.png b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow2.png index 773a2b3fff343d7aa621a31db801276464f4a3ef..42ed925e056819d74a6a829fc9b9f5d552a20e95 100644 GIT binary patch literal 3323 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 N*>}*gU@zg!{{XsOh@}7k delta 2331 zcmV+$3FP+s8Kx4DB!3BTNLh0L01FcU01FcV0GgZ_000QsNkl<Zc%0>1YitzP75?VV z%+Ab?7q9UPdu^|fU9eIc7Gj$fm78Fr#1)SimxLBoph8lpqVS_q)c{gy)CQwgO)E!f zjffK&wKPy_r~nBNHX)YKf(e+|N`NjxYkU2`I9{{f*F5g@2Y;AAMIq|Y87q80ujbBo z=bLlSx%ZxP8N)DOCm4o-^itIhsVn?d<AQvU%R^vA!2p0*S*9jk9G36z7q7^p^3@44 z()-1BGyI&H&QAi;OI15O-_C&2l%@A+p-BMn9V*Q1{(a(K;B*NZoAUlqE(q<<{1N~_ zR2Bd{AIWLqZGTYB@)NT!Fbk<GjNq$b#d}z0VF<DLZF4fZYexo=pad~DaMPU~TC1jf zU0xB2lSeYw;lEOz7JEg6Tg@~*e%mbofD5dqbk>JZb98R;`ZdeP7q}|3XG@+mhGD=k z3=G3Sho>{O^JELh5<=EK_o7yvyO^IXc}$Z}2LS*olYh<3Vzx&eFxDsDp%?;zrjCJ| zK|l$MqyhhxJTc_Er2xPm+7GhZ7am9gz_|aIDQerN001DWvY#FbW6!$Aq`#xsjr0@; z7eqKABaJ$}=bTcYV#FBYbTY*0Bv=(S($DB@go`m|sqMFb1^Fm^Pe$36Y(`O1e4zLW z#RoF8xqrehw{1N_03ZP%XU~J(?zIKY(c3NncV*1z|E(kWA$svE!7XemdS2VT`V+nF zhew1LkJp|4fAdd|DR2jbB`mW$et}v_Y9-mj5G~6xiVmg;0MOq52>@W$Uor%%_-z+J z>I##-hM4N>EO3<Pm7%0FPa57ZsaeHuy8u(@u74g-*0*eDf;D4`mAunN076*CDF~RO zyBIKxZW*stM2`d^OhLPge|OEBaDV2ubWFAjpj3G%cUa`~C7PBm&4S;bPiM8rPmdFH z_S|B$hNKDrZZRDIV5Jje%$^6V3%<VWanGEnJHF)RKQa?roHb;pcZV=HxLOU9Nt&~K zz<)6ky#8}j12758EMV3LX&eAVk`n*`u1)0Q<yrQg#=t@WhBwAifxsXcObmlP&2d_N zQgfUS+dc&?9YADWgubzV7Y1shDk!!6?*mo}U>NK*HfqFEDNw3Ui;o8^wt$k3Oh@a+ zw+&xsfx}APN5N7j7_1&j^bGZ)yLvz=YJZdYM5V{lo!`S?ofG`gcnSb&3%?5h=vzIR za`oOaeWGI)mQI09&I+R6ng6!``6-w_5js(Ke97aUX=q$Qn-2!~-Ag~lPu)M!e~dEe zRMY21tTfYh3otFf&5sHb-gc3MYLgHARd2gULd#+d0NQMvRxywA{?pGejtW8TJ%2gM z^}qflX4Z|Fr8f=JQ^2js#>8{1UUJ^W<Y_F;(^%@ikjsP?#S@q$al{cr6iG}7TA=27 z<h8w9#b;M}02goBmiJLGZ2|oY{x04~gwdICR^4~zxTsS~x4p1Yt0}0SF_qLX3<Eb3 z;mJ$UF4D>$rOnJ)3MTd>#%~&?1%D{K^l}maO0T6OP&%3blG-ni{h3|q`}J)AK)QY# zbRq?0Nb^tS%(}cPbiMj;aen8DFBAZ_uLn#|fe1fF<pW6sN_!?Djwo=%)$Ynr(z}lr zkP{h&904RkeeJpVmm98)gGtGu`j}qwzQ>WMG@sfs3)2>mvwnh)%mvMU`G0o${q185 z`B?7qL=gb!$rRH!zh9gAP9z-wCK18ikAKT7zggJ28%zB2yq)v_o<taIO;<gCl}Y#) zGwy8k=^gLxZIz|au6Q3fU4SMfd`Anv)!h^y1ArpVn>KT|&W2I712$WM`7o$vlGrOE z{8!4;kj!;Jaq_+{uNYdZrhjnLosF0qNKn#UJ2E)GZB7OZA?7_Sv%y!x$^%s)HsOhe zLH5jXmrg0&wrrzTQ&63LHw<Rq3xjLA;;l!H7I)NNr+_A48bpC776!8}5)xY&PXfTs zlP&DZ(%;;M$N+@u&~8(3yaYGschuQrv$2?MHac}6YL?zK%!ffP#($)r(b-^C^j`ix zP%&b7&p9QeQ74>`;ev?t6zA_KcJEo&nEdom7>M4f^|2e~!{874rAOxP0W>tOa5P^C zsDY(dpeQN6?1gM*xM|dgEwJqP|G&bt0ADAE-&S{I3H~-i-8AEQHbZdpAEGybEjn^m zj)`XZ&BD@k!0z}3%6}4;v6}Z$u<l6gZq9$I2B7F*nh-5}n(_i0Cbg2zJgGdd48G0+ zM_)rsmAam?yg;yKOj+Nuo$0O~u(Sr?QLs(`hSBHfF2*ScAb0%0w1A}+;Qq`_-d*!1 z3ff&f2$>clSmy*=WWn#xr}@$>=u0$>J1lZa)zg$0xSR8zs(%5{8j`BB$Ns#4>G}Y( z$So=U-OZx~iif6=t0f2dZK1bPP4Nzz^ZhaD>nyVNmb_=GSlIS36fe&*xHgdozN#IV zswJ=jwhQ1mA0}FTQe#hZ++boDfxsXc-WW?+#c#U+002sjf!e70#{ON1%!@o-rLt3? zR5#+O6t1yR1Am5L*;aYl2;l21aI|iG+bHSCwDgq7b^#KV9$M5U^WD`0O3zR)g4IKb zr^*SsdT%j(t0y0*9hj;mumZLVa382nbz_sW!qPF>eq%%{&14FjcyZ~LXPEI+MBUx@ zF~KQ`G&HWDZFNT;TYG>YOf7_L7XX(A(chSf-jkz-V}HG%`mdL=feoJ<&C2N*4(Ia# zi1(OmJhcAcKid8m*e?J8xOn~9RUY=Wy<5e=_il_LBFNCxBseIbgbgi<!+#-94Eb*9 z03cs<vbUb2x?7VU_vXi9dI&&bv>9h<4PQ)JrJs=nIhAy_<jH*C;$%^0YUjxo2TKT9 zTU)19=YK91zbO|dqtH2}`iR%jvFz&L*#2a}<)wcb2FCk9(gjSgGXTKXo#p7BKdJ*F zr=L6F*gofg4txVHP9`cnD0$!G2-U}QFe&+R!?kf=du~1?LLo<hoXDtmA1`!QhLUi^ zRfr=>ptNUFK9EF&A2aO(Y~Kz$>lXolZP(}j4HP9zx)x2KNm~E_002ovPDHLkV1nQ1 BU|0YE diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow3.png b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow3.png index e10cff828eaca524427883090f88e0a16bbc1ae8..26f6290c6b41829a632c1e8077e6b0eccc29caae 100644 GIT binary patch literal 2130 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 D<FPGD delta 1117 zcmV-j1fu)W5b_9+B!3BTNLh0L01FcU01FcV0GgZ_000CeNkl<Zc%1E;Pe>eB9LK-& zW_D+1*_9}^(cP>Sy6hp5l!yv}qEt%~NG~F7P7#WQ(1PtrdnloW&<0{}ftEn_Vh*7d z@sgG#B%xVa0;v@&HV3<bt;UTpM%Q(_f9B77Jy?r5?6&aI`F{z{=QQkZ-u`~`o%iR< zyr&2uK*|1ie5~B|lF)u$WIKO1I}Y&RZ>tIb)QUezr$=P+Ych>r1S{8~rZH*w@?ZE( zaQ@HRXq^oCGUv5202osty;fWX_V2g+zeIV6HT0`a>z#TZ(|igTL;H`f_%m-8EkI>} zirR5G6zU=Hr+-=cGFRR}w)7ao-&{bkQo;DpIq~b`IrPPP;BZH%Ol8&L(Yhw7AwVv` zN56mkIRM<hx6IaFTj%rYrbygw^v`!^O8{^t*uiubVAbN{$WNcj<R=$Ene93kNrtuT zdxZ)BKnN88BFV6pJ)NrnK;+6ky;@v!{_>ererf^s$A9A&WZFMTr$=Slldl5DuOGWh znV)<WpvDt`x&UfC0jLY0#uI?L0BZKU0MbTiF#W+vnfBxHufCJ5L54lw13Uq!3!ugm zfVu!`JOQW+pk~htAZ>(hoVeK|^#^H?8X;)`Rwf%NG9NW%^UESFz=y#%7>2>`-&@w7 z`)vJgwtoZ!lrzB&rVj_I#$Uuk$RPbyn0jMF7HI(vJUDqC0DO0R+QOT8i*rY`r(*t@ z?nU$OTX+;9ty)|hy!(mVBgi4W3M{b#Uz>8&Oz*nIZA*Z2%)I`G**X#Q0S*To)Q;04 z-2<q%w`Gx@1dm@o_QTfIk*fFHIB~OQ<@-o!tbcw`d%tPOcktmm=7N$J!MEU-%`c04 zM#yxWk!M%UTzNw*h`a!&@BV;`0z|It(*fZ2;?_=B>qJ;D9%`iBn1qW0WQR8GL@Ht& zZf-++D(24&6fFPrBXTS5Y60_otL9+xtg>T?B*#4g6vat6VI`>RU`!=<fZMp*0~%)Q z*?+}TqiDHR=L2KALIn3F!OJ1N>u3{?7|pPHE!&tfG`llKz7n`M37*bXD!j}c?(iiP z>{5TB5}12R-V0nE0+))@T-_S~<g@=ao)2&<k>>;8`2f!ccs^hk`heYVQgm$PTGVV2 zb;^TRzx98;oU}&P$L*H~*7W~!h*I`^0e|^PQ2+pU_yY1QSKbgK&#s!V9oOCp`7%^I z)F@gf!q0hxZO`Ba<O2AoAF<3p!D>&%{D+&{kVr+0?9is|R(^5;wwdW(GzXJsmHEC^ zS3Sb65r8pO3F<l$PFR7WIIiV&D^X1tQ(A7-`7WLsMZ;{pt2L1eV0Xs2F=c30uU2J8 zjAnElZQ_y3p}jK+2IihBrT#)?2?g8X4zKVscXQX6T!0-gm8r_5;<T&okX!)I2Y5bU j3(p65KEU$<BtGCTEv9plIn63E00000NkvXXu0mjf8xJ2F diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow4.png b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow4.png index 2dff7e5127da870b33ddd1f786a203e300ab2265..9b0463bd4cd0907ea399eaf49518e24c19a7857b 100644 GIT binary patch literal 2102 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 delta 1112 zcmV-e1gHD95bX$%B!3BTNLh0L01FcU01FcV0GgZ_000CZNkl<Zc%1E<L1<h>7{~uJ z@9n<6&2HHw(!O+;y}0yHnh>E40SPr#v`{apVlTx=dMHZOQ?y_~L91fC6_g$lsFZ?| zm`ep)thFqKU<<~i^q}iy*)`kHB%5TD-S_s*jEAt&g1ae9nSY7o{jT4>{eSsqX1;G{ z<`E$Tbh1009+|(A@KRzYx%c#U;jfEhwc(|U{;pRRt(Sg$@#bdFf0O>|2N``+=HVv> zXFP`$TB<IK;f2c{{F<`=3RNZ4h}He=A~hbh0N|(mF8~1NQmds(U%LVJ?E=jmTdQ?v zlHo3=6X{HcU4I-Z`>OP{8&GGuFYgVGo+a7C3!X~dEn@(s28mb}_OciOAxxRBDxs!O zN|M)Oq4USjAU+dUnv-?|yq+YtCvB7U`~Du=L2qvdcSc*b&mtI^eLyM$Ww(H`&p6{Q zukzxFC0CWcb^{)Q8q^>c*6(noqAJDyi=Yn(`hX3BK7SzS1A;z4OCLaF_XA$fzIAl7 z&s;rn?a=&0n>*4vXujzTh4%gRnwKLhV%N)s@cnFdSSkTY)QteI#)cOzd!_2K$cYsJ z&Xm^sMkq6&Ufb)nJ~bY-R`<8--Hw7n1BydsKb`5YyPQsRXOiLEv9+3gyP$myQkp>a z@PaoudViKo_vMw=`evvzfDpEq#Yn`mK&e5L>28A35fGn=)APsAAbC9&0;OBR1a*tx zXp7a`+rjtP4p_hM+mp8G^(3`d0(Fbvi6z(NRn9o$1(f~DK-rDVKF~f2lum&Q>vy=Z zG5@u%{&j*rK$TF?2O#JJf<7SV1GZovAiW>3JAa)XS?_#Ggn!LHVrJ!Fg2(PI5CCWv z*S#MgeLrCSO2V@z?9k#l%LC{Cx|#aEC6xO#R0RNgGHNx8>qL4ABzTmz4HztSBOan= zh=5Xb-%5pZuU2Y+K>-8J<9d;v0&8C7%Tje2e^-il``gd4?z*^m@)I#roW%>t=fF4< z27fhZqj+Mcqjd^M8}RO*@1FyJsi`?y>MHR+j8&2Txjmfio2vl8smK9p(H*o=Ts(8@ zL+QUl0%-%t?>!$oV^Onsa&6;4QwRe9oUy1`Kjd^SwOWnh;^1!|NhKi3lc)k;$UJ{P zn|)6z0ZF8*z~fwH+sbHPg>@4cpgRHG1b+tTPCz$-0lE{=&9*l{x)YS;aqbs1L-u`v zZ9f7619T^#o4^3w3Fsy;Kz9PV+4cr#e{b;Wk!y#fz95VL_luMB6K$@{rmC#Ib_3pt z^i!M$pPHJp9@#d3W3B>3$f?KyYMtKEFfOaF{kMSbgB9%tB<~&l3;>K9rkQ_!wNb`7 z6Wy6)_@PS_Jb|d$C@%Kh{6I!udle|qGGClzMy|h9<9<zmb4)**^HSq>2w)swXdahC e`v}l|y#5b0A$=t}Z2Hsy0000<MNUMnLSTaJe;yzJ diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow5.png b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow5.png index 0a54faafb0dc4d54b4a80429d75b7b7141d40e5f..8863ee94bd8c83c3d373b649d84e50fce0b4505f 100644 GIT binary patch literal 2084 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 Wj?Am_!x!5B(4626Z1cMJKKc)`#y!da delta 1067 zcmV+`1l0Sa5WonKB!3BTNLh0L01FcU01FcV0GgZ_000B>Nkl<Zc%1E<O=uKn7{{Oa zp6#T&iEi2?V~}7CsWx#Vo2;ZP8_-nIT!cVHlt>B|dg!Gsv=<Nc&|>u>Qm|k!w1|hr zR@fGd3QgCqm}T80_(3$TqHzPR?(CXr=6iZ5y-2ccS$&_w&VTPXF#P}gc;0zuc4sKp zbpey^qaPk_-zJ;G>bNs(f6_L@e1B(1iqL0zPiy^S1F3&I|HrjQf2|~+t>ola!9?`2 zJ~{T33A75dr5O1w^^M|)a?M>Ki42K+nnXxBhNK7`iL7+Ob1iJw`#tPp9c@xMze6e? zeFApX4A3{VDSzmUZiM}(4io?=c3*UZ|18WXB=XS(e31K61I4A+q|Zs+o8JmuUzi_% z_$Xf_m5(l<tte9Zw9N#1b>J!1m=*G-(4ZTpsu5WR=mMU7d`~o0O)VS({XS%_)&js2 z0QfIEz^edVz}DaT$1wBJcL8iX0oVnw@dRKOz{V4RU4H<Zsuxi4jnLk^pYEvS{7Rqa zE2Ziuz!QL702@yLb^&ZW0oVnwsd@p#ei2H<;^CK%agr#(UECWXA_5Yzc)0184*C}V zf*RyQ-P1<)R^fMD6FL};M1DDl2;d}9lILYge>-m(oW&P20%Y4?*bty_|Ca-TOJH?# zFrXwCN`Lo2NuSvHm3yO*=GO;1NX0J;F##uUPb!f<zjLhqVEyN#hn^enmF($-8LAI@ zNL5%8VglU8674J0FcULZtdyL!7RP~3hM(9cNEKKHBHN&;YU-f8$-LmpX{^i#i+<hN z6AQUr$yEZ0{Bn5r0VF~=Nt8zBuF+eBCdzth<bMOT0{v4eLm5$BCy`$cV%GpF=XVx6 zX{W2ThYgQjVvR`2Tq`!CParV?``+D9J9+*=X+In&e7Ey6xKT(m>uaiL8+`aEUwj_X ztnQkI$VV5y$;>wAH84*(Zqpy6Dl7@HU0|+Z?$22vZ}Jpt1VTErO!G`zQKU%ZmxIUz z^nZ^Hq!O`sxE27;LiXxE$Nzp9BGF)Zh%Et9FFgET(67SScml8sVB-nEE`W_E0J{J- zRWE?T{$2q4{er5W08apR0c<=0*afih1Yj4yrs@Tte=%}ydm?74n)>qbs`+GQ<?(kk zeaaT<dIhnaZ&^2DWUj9>-gFbOc$kC)^nWFAC!o36cEc`a1Tb8SU!w;(d0u{llSGL` zKKcZVHhwGK<ffprb))^o&qvZLK;%|OgZ>PFLLwi10!}Z)oilLJKA1cXKkWXxj_-4= zleZ@oQu*i;FszO{d`e(^t<S89%U3L4y~DYUB^LmQd^m|d0bR*e!k$>jE&6qbl_dG# l1z%1ZlsB16?F_GjzW_RDWP5lu9N7Q>002ovPDHLkV1kTE@AUux diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow6.png b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow6.png index 1f9ba05446a1f82dbfcc86e72429419f5f7f490a..9b0463bd4cd0907ea399eaf49518e24c19a7857b 100644 GIT binary patch literal 2102 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 delta 1108 zcmV-a1grbD5a|ezB!3BTNLh0L01FcU01FcV0GgZ_000CVNkl<Zc%1E<PiRy}9LK*i z`*xo%-Oak$m~LHnTLRgGkcI}5=1@|a2!i4vA^{Jwr3LFnFQEm~LkqSQYJ0J#3Ke4y zf^3_EC<tnCX(1}4M8U%bLc8hOX#Q+=ll1NTH`9ZpD0DZ%$bU>A?{od_<NMq1o0;E_ znR$eB4wbZZw4a&3lCsl0N*=af4t@Xkm@`uO!QF9aLEn3A|Lu*Q|FPq{t0MZE$ipuU z=CL9wbh%dLBjt-WTu0hlp|XVPQSRK%)48w?05|{o1ppAg6wzhrD>tC|&SP3UxaM@{ zQ=!g87c%*s#(!eA=E~AnZooQ|{j+xV{3t05F4!`4H;n<5YNScmk?|q~gm}_)WeGKe zQj)$A37#E3iI%CD)SQ$Xu-cbk#<-z51D=~S66onmviJpk>nwuN`(<Jdty(2iU5~rW zVkTQWykg1HS8l*F&;ZfMIrA=)Dk@X#|M2?&zYlnd-+u@AeSqHwDCq-;=zhSF>Eru1 z`pxxySKpn_wOZdsKh!>YEgRfDGi(=0h3_~p8+tN5^RZ9@g2)>Iw&RVIFWSqsDlhU1 z2lJ%X`+7(-V7<1l*ZOoWtd~2ttKE)*L<1JHH8+#rX>=yK(49|(iU-%6<~xs-uR&51 zC=4#x*?;q+WU_x&YOQaCJOc>vGG2r<={hLYh&0^|kU9cdregH$@JXa^M1r7nQ<xxc z5xk)5J$*@*G!k$IJl7aEwAH?Z@=73Y5j?zNS<GY}cUcKl*Bn~4qW8<nM}gESaL&BT z0z@OSbsORL0kVYrJ^+3n;P(N3AFv7g0O9?BwttTHGnF@EJUlV?oSD_PUuCfe%LD)# z#Z~VI2;UEwzml?zpN!zrsjv;k{&O?^^DDvP7fm$)Fvi1rqqs_hr$CZ5)0Uy2_r|SQ zkZK_UO40r6>!IQy(*Xh$2%vFXEy7b^&8mH~T&tpF&f&!6)A+}-F!sS${K4E526w#& zkAJ&7Kr~t}o{Y9BodUuJoG6Tb2>|ydN_45K%nE@Op1Ii?D)c`x0pO_7OLc0{dU5{N zZ=VVO3ju@;AXB}k;$z#i#rLhJ2b!D*03bfLO<O<Yj9-fA_2Rte_s@kA5aeZ4fv-iL ze=<GuiBJN92v>m@xyrVgQN9YR#y3E90)MLU4N#qcYJ3A!C!m@wZ-8(oD9Vf6FKC45 z_X1mf1o#H1PCzxj0jd*Fjc<VJ1XQ!-4N%?)soqjk{^8_&uGJFRR29`%ZoqM455+OC zdlM!7xoz_!k4&J695s5We$1#F7u8oj1ymobC^ul&!vm)QAb2aF75A(-jJdo!pG^uq zbBTf_(X7>r^WC>U7138-1xmEamd2gH9|L8Fxi$x5n0)6?JDoFvfX4t2jpJe{9|5Y5 a*Z&1WAAozTG<R$O0000<MNUMnLSTaRu^27@ diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow7.png b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow7.png index 5fb5fb0c7f73e3833ebcf274b733b174ac12c36b..fa9de9ba50628bf763bb668ac70cf1385f01f071 100644 GIT binary patch literal 1240 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|_);T0(|mmy zw18|5AO?X;!IOa`XMsm#F#`j)FbFd;%$g&?z`&fB84^(v;p=0SoS&<gn3A8As#lR) z0M=zwVFhI7rj{fsROII56<bx<DuGp40ofp7eI*63l9Fs&r3l{u1?T*tR0T6V13d#J zJ1zwU1)HLjG^-#NH>h?X&sHg;q@=(~U%$M(T(8_%FTW^V-_X+1Qs2Nx-^fT8s6w~6 zGOr}DLN~8i8Da>`9GBGM<f6=ilFa-(1(3OkN%^HEwn|DMi{Jp_&Xi=hJq4vjIbd5- zlJ!$_Qgc)DN{aOj^$hi~=_|=hL%1-n7#bYFfYArZ0JRxl)#h1Hl57GDDc1_1d!YUU zIy4z<Z*fVAK9T}`BLf2qT>~RsBTId_|A5Z7NlCUU$t=l91qU45Kj08_%qc+?1*r!G zK~5$pWUX=%^U`gVDs)p)(-KQ_N|fx1O3O3zQu52qZS*0^P_;uuQBAec$Kn7RkhiTO zgHnt0b4o!0Z)a{~0}cxmK|~BdG(=$2fGmivAs{2aBp;ZdiZYWu^GZ^S3W|V<3v3_E zI@~JI%|h56nwME(2QvUo7)cjW<XAZtm6YcfWru(x0x1-6s)3pV2~ngJ3Q7Lp&<Cb} zJ1!f2cwVyO(lA;77?{Ccdb&7<R4~4swUM_uK;(#1Sm%_DFJ@@P9_yMCD`33i$EU+z zroFp6ld1FV#veETAD`{=W1pS<A$v}n#<dNc+LNS>8n&1>p2fp7V~T(C>V4&`{oxH} z8PAOm>{B>9pK*($^?b%}teO9K7VzHs$+JP<<8wMg?uB#d4YiK5?3pu~%j}rna9{c( z=^(x3vt&a2glFd&ZY`L5p5b?sNj=*Iwzq%Y@*eol9>5&-Kfa)vS*t-Shmg_pQ&oBD T?pz4q2bC(Gu6{1-oD!M<n%|Xe literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP;jrO zi(^Q|oVT|(@*XmfU`=eg(NZ|0(N6hddRxz7owSbqKU9jY+rKU;dVJ`1)N8fM`tR3M z>TT?wr_|5y`QONt!RX7lrC}LEltVCs?gGsQu?r#&+!<U8SWWt0GXAo)fBMOM0TxNt r3rw@{=!Ht3y;k4YjczWI)@SS@213=VXO##6J;LDW>gTe~DWM4fngUnA diff --git a/Resources/Textures/Structures/Windows/reinforced_window.rsi/full.png b/Resources/Textures/Structures/Windows/reinforced_window.rsi/full.png index 34c51d7c3d6a3b995f8df92ed1176e988a2ad8cb..e8b90728e41ede9cc5474ce777a73af21860612a 100644 GIT binary patch literal 3041 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 NmZr9Q3yhD3{SC7K8zKMz delta 2050 zcmV+d2>tir7mpB-BYy|hNkl<Zc$~FYeN2_t8UH=!yzhPAdoSPxE*F$9K}4`1-(ZzE zw612Z%hJSki?->^k}YeNbz9xs(j_J)TeilfOS)|7`W>@2ac;IV)mE&<3Mz_xe+Z($ z1mx?&1ut;#`*F_x0IsyITh`(4pZDZ^J-_ojzvn&AApj_>+JAFsysrsMNJ!6z|8@ry zhb{rYvnI##545<k4BoYcVtVu@BO(^Ndc7FyZ)E^r86gz_e3`{!YN(4Ar;{fs3*!TA z_iSVop}FSx0V=H8b0{@E1L?cJY5V8HK>(n}^YOA^>kY}clY|`}JN0&ociUt00APbS z0L)xE6Xn~sTYmt6-E~dnxh1BP5d#1svS+$mwU~{?HUJ0+d#v_MRN7ackb!wa0swER zV=dR}LCNXs4t?qHQA25~b;$g!!&XC0ieqE>$Q;DHlXFeX24es~-0pEu%6eM?6g4pF zAYbZohafz7Q{idrOaKV9HSmPIG7|u7PBvhPu+3e(zkkCLiJ2;f`$;d_qMrKYlcWHM zmW&%Ht%BNIyY6dGePb#w#hZ}kaYYdkhzL?j)OO~E-#&IqVT`fuk5*Yl8&cIYj|%`` zOTs7ZnP&C*tE!X|`@XkNIyKc%vM$*H0JHO9(RO>>tkn!{WN=Uk=9h%$rIY|j0RWXG z%Z|}_w|{BMlbxgDMEwnBS(e|asti(a+XzD$`=`#*vkd?^d9s?<bmWGXdtl~ztLocS zY=sO<zWU~IB|0nLdcCGSh=mxy6p}M7%Fgn6dCy#sY|U)~&=>$1cZ0mU`a?Yb+;>8( ztHA?Tl)~L^o$0!pIbE*V8*NTX&y^CKNpPlT<$uZX_N&}voJ_`PqP0PFZY;9yS`wy1 z;|T>NVxqM{wIwH8asn~3bvF~et?J%AkJ?suE1A<%3;>jb^n8p}A4BEdZ<Apd>U8XC z;XnH>J^XNy``8~|V38x9JC6IXyszf3>V4yjeNX)0XX0x01(~>Imt`0RW__tbv|r^3 z>3{i90wcY$@Tnh#24@U-T)I}2lVNqbqwQla9n_xw?HeE8Z}or2TL<@V-}da0IbmCN zV(cn+bWH4Qc+=+DK;6kWwrn2boYT#bX|WPUKMSVoJkloEk+x?|j-0w&tpUKr_FDh| z|Ao`qN)woFsB<t97@nL71AxEoL(Q`$M}M;Mz9ts?@FS+Y-s0GhkqoP=*_pWW>()vW zSXH{!5Cc6*|44wuz;z{l>#p#4UlWUjfN~0qU%&8Ya&9U!R@!(3X*t%36Q><W%aKc6 z5dw@c(liYkBoUGQ?{`=kB*(g!?uZ2fj4=u}Ur~Sf%wAXnz3lUsesRROT|9iFMSpqx z@vj)8T^;uX>B}q@6Lsg5xWaNP$rFXlvSKk({qBm3aI)bOC4N(dl^DN@^o$&9y8a{0 zmsu>>)KC|BD|eaz;Bn~yfCnK$Z+Vps09ihd3IIuuJT^Zy)J6A1NF)Kk7vp*$Az0df z@hia;6#!Ula;}`HJ*xsh&{#OQXn(t+tTcgOPdf(?QNPu4Sx-pM53{jbjm%rQ)ATph zt9_$W^87#ES6F`eiiaR7JI@MqHS=2|lNKB5aVrIzLlgbY_d<}ixzhU6EAP<S%BrxN z@&B~f7e;bHiFoDc3Dr#95O6cj0U+Y)*{~@YnEd?Z{~xCB-W3kpmV8kQOMhSh5Us1^ zZ>m>+@!Wn)bu>MY<40>63v@N}ojWVT{`&Kd2mxPavFJN{T8S^JFck)P^9sdGXXA>K zxLx<L;>j(vzg)ClO{%D}rrNHm-nE4?@*fCGDSa^uHQrJ+yOQvfRT_z_<29x*E*V#1 z^UKW1;U4-_&WBAKwxkE9gMTGh%hFNtBxTXWg%7m2(rvIMp?7dZH@aH!<HNtRUOc#e z`$`!6`R`w~Ci?rejMyTKOa?JGIiZ;YHxc8@G?ejyHWWYo6U=p7LC;7Y?7r@hC$H2x z*EwvJeg9WBuuwe2Z`~DUbno^Iwp?_^mTkAdAw)-`F7qplXrf3~&3|+@@>LI&m;i9? z&a5r<HQMy0E0mMATM@(kG9j-Bb??1wQ*!#cBfAbCl}^|cY`qL6yD(@PVS=<mASEJ3 zF>qaB={XjerY#3=L_4$c=Q2~`Sl`f;4FLAY0GCPWCII+b>(#_f751XLg%q~5h16Wp zF=X{NyC^Bc6ds>)>VNsYTmb-sAT{PdTwDxI_qDkXJo98IH9pz{K$0ZccKc3vcp_ES zoUL^+#@N2^e#=xjIkMJx7t%>Ub`6c2uf6p*w`ExL(`WaGR8BlA$?G5@c5~EkXqslf z_LujZl5^N`iNRTcC;$rt7-JZ(JxS$z_R8@OPT@E2H*>|D3x6#4fZ5*-S7y!}0KD|_ zJNl~Zf-rzc^%U&8&b-+V86i{PkFWooMP=j&lVq3_6-){dvV<daXVgrp*fBeMt%jqp z3IM<oGK$dg#*0kfvRkwc2V`97HaUIyBb7U&HRg2b%<0mnn=i%aS$W*%8rfVUZ9_?T zy!DbRL<)sSp?k5Wi>i{DCj%BE)1fhMK`D(k*6C1nMQ{g6MN{rH);k;}JMK={EGn*i zhkNGCF)bmZ2m}CyReO#sJ<mP96sXQv1V(y+#dL{H&Xr@g8b6h?%b(x>Z5*F@o_l;L gP~8b=t~q|-Un5s<u;J2%KL7v#07*qoM6N<$f^aDEdH?_b diff --git a/Resources/Textures/Structures/Windows/reinforced_window.rsi/meta.json b/Resources/Textures/Structures/Windows/reinforced_window.rsi/meta.json index 456d8a28909..4cff125e3ac 100644 --- a/Resources/Textures/Structures/Windows/reinforced_window.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/reinforced_window.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi and modified by Swept", + "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi and modified by Swept, transparency tweaked by Ubaser.", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow0.png b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow0.png index 8beafa06dbb5d13694d1414440fbd8abc6a2d5dc..e1459332aeee24053ede0485f78fd9fa06a162dd 100644 GIT binary patch literal 3349 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 VP3BDPwan#T5|pj8O}-T-`u{!MqfP(- delta 2218 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 diff --git a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow1.png b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow1.png index ba95fde9e59c54dacd0eda155231ef640db07f41..2c1d944a619cbc07511dcfbc95cf3dcb4129082e 100644 GIT binary patch literal 2163 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 delta 1128 zcmV-u1eg2s5c~*`BYy-#Nkl<Zc%1E<Ur1F+9LHzooO6#xRBG*-7Ntd6n`MzwNff3* z1Y5ln1kuW}5k4#|v@UH#+d~^#5cCicL{<>gOMhtD2Tdy13hj@jttp$flx3}@yVSk+ zoO@;_ezz@r$eZx9nG>Gx%ei-cXU^|;e#|hR`<uCxASI<lJ%1o8CvR^`=1lp#^A;P} zJ|SzK=znrQ9$zB+!;aP;G5)nD;M?l@-MxR*TH}j~Jt4&VhxJ{%Xr(MHb>Q>M>vi^E z_UiAJ?ZEhFL%8RYDv1&{X-NqW-@Rd(rb!uNgm$!q(uzuB%pi;zge0<KW79qY!cli$ ze>h5d`d^U)2Y*iz$8pHd6`N&yS2tNaJDYIMrC}IsFnea&*w1?kR9?8b8?K#Ax0pF) zx^M`Uk-JSHb7p=7+NY(DWwv3k!R*Jktk{Y1uYC%%Jna*;C#qR^a<=oI5V0utB>ifh z^Q7*4$ce?|pO1QZB0JW<A69`XO#g=+treL5CZ_XnXn#}X(aV^}>{?rZibDGo(5)Z= zK8Qi9f&};=2CWJb;DZ>nYQ!f1O@cemG_At)|7FdB-!T0t#l6Ca9|1uEd=P_H1qtv$ z3|bW=zy~pC)re038ic0Kn2joFb+xykN?KSDLYKsfw(fVH)t)ocOV`9VF{G3RT%j#( z$;x=!i+}px?L>B+LQjFbi7BjP<2Pc|qfUDaV^)%3QhD#Tol*R?Yg-nbHF>;|$gVp9 z=m1_v9Mr}}M(P;c#s+c<pc7DDePs_^Up6<Iqw@=6uzx4--wDy&x$ghBh$P0$!R$xM zmTpJAfbJhdQAxz(`dVYuoCPt@^P~`h$QgO=i+_e1OK>6tCnS*_>mRG(SOrkq+g<G~ zTBiVd71&gH^wP)fIrdZ8(q-EZMV9Aen(GUvSrw-n-H4E~Zclj#>mMs+AmlkNztr~F z?GHy~gmWo8p?&y+lqCRI0IpYCJLBK`uGiS(GIG(In^-AJz?UVfJ+G}fIVUTVz$%ck zXn%R^pRU{5QCw*N$#V+aU#kw&0ZXKIDN6vQl-op7+qMZ~OgjO-lhP63{rwmFzI+3D z)!b<LB?-zB&{K2P&MufQ(#MS^sriLoZ$q8=MfQB{D}k~Ez%M_CbHO<mQ6aq4g~d)^ zcboQ6pmYj6==oO|hC%&QhzU4Am7{<I0)Gw&I3VBvKXQOC{x49x?Vy{?D6Lvo7&_JX zAa=36+iTeOgFTc(l)Kgzpw1U)KPd`=+Cao03~B{XGw_Dt4De8;eHj84045*<7~vf= zsF3yq01E&U02=@!04o49sPgX{Bn37AMgUe&>DNC@&RCogfE9oll=)TVD3Rdhfng1R z5r7qx`c~=eLjo26CIB`7MgUd-W>Do{djg;)0JQ<A5kRc~Y6dEIjs0{$f<dhSY6eQ3 us&w`t1so7?z*_|z5O6@i0qQw`5b_2j+mFcCwQ({40000<MNUMnLSTZb{}J>6 diff --git a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow2.png b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow2.png index 8beafa06dbb5d13694d1414440fbd8abc6a2d5dc..e1459332aeee24053ede0485f78fd9fa06a162dd 100644 GIT binary patch literal 3349 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 VP3BDPwan#T5|pj8O}-T-`u{!MqfP(- delta 2218 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 diff --git a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow3.png b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow3.png index ba95fde9e59c54dacd0eda155231ef640db07f41..2c1d944a619cbc07511dcfbc95cf3dcb4129082e 100644 GIT binary patch literal 2163 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|_);T0(|mmy zw18|5AO?X;!IOa`XMsm#F$06fED&ZCw^H21z`&fB84^(v;p=0SoS&<gn3A8As#lR) z0M=zwVFhI7rj{fsROII56<bx<DuGp40ofp7eI*63l9Fs&r3l{u1?T*tR0T6V13d#J zJ1zwU1)HLjG^-#NH>h?X&sHg;q@=(~U%$M(T(8_%FTW^V-_X+1Qs2Nx-^fT8s6w~6 zGOr}DLN~8i8Da>`9GBGM<f6=ilFa-(1(3OkN%^HEwn|DMi{Jp_&Xi=hJq4vjIbd5- zlJ!$_Qgc)DN{aOj^$hi~=_|=hL%1-n7#bYFfYArZ0JRxl)#h1Hl57GDDc1_1d!YUU zIy4z<Z*fVAK9T}`BLf2qT>~RsBTId_|A5Z7NlCUU$t=l91qU45Kj08_%qc+?1*r!G zK~5$pWUX=%^U`gVDs)p)(-KQ_N|fx1$}{s)^2^O_^dYKHbwfl^4Ykq7V!sW@*H)21 zsm1v@rJ!)PGcq%=0fz;OC?W<RIwG*@Ko&*U5s;Bzk`GK#MVZN-c_pbu1x3Kr1+fuo zA8r-sW+5yO&C4vYGlCj`CXA#DDR!(Ji%QD#i?Tz&F@Xq1oJyd^K!Ox0g+h`)IQW6- z-;T>hAD)-&xVCIlS7%^gY4LP%45?sz8x@-&>Mk;G=H0#3$`O;|yq$P*g$)Bus@8f1 z1!nn*xCFd#u3Zt3Q@g=QP_RBqu=eBrr9YBdr+GQZzj1bquleA1biZ1}?d-)zTzs-R z6&D_p7I}aE-<cBs6qkd0XU%<mhWBRe%r}<RY3FLb%RD>1y?f%L*L!!(Y)_hc`DViT z`A>d^+*{dsIiy~kE!yt?-gUF1=k-g!y|2vOW42<#`TD{)kLIz53%TVS6l&i&<>Sua zx6gYn9b0O-!+-16S#|%WmCC<;V(55GJb>S*F~es{LeSQXm9u~To|PzJrPiWw=dNI9 z?Twu583%PwJr|FSuVh`a`C9p5|4SJPQ{CF@ZTdFdl=)S5yXxBA+wEd!*0}L4J@X;q z!)O1#seNz7Zq)y}CHF(LdYyXbw|630hG#a(*1LRpx!E{jy<UB{i)rtVpV8O!Z?m3f z-8*Hw!|?+KzH>4ZU#|LI+`lqAedXZ`Jr(c%{k%MJPVVO0wa$5V^%r_STRhc$FqetF z(#X;6y~qtImA>N|><QoVPe#r2nNav${o^}@LL0YA?hh^@y^0L0Cg@KqJ<O#sE#4_q zE|GPG)4qsnvfo7&d|E<;B`<nOeHRsAQiyU&wzXT+u<;*v*E9LB292g<+qyg94F-Zi zx|y9}3-qiG9y)9Pge}_trRdq!ZgEKlZ6-5>b0&-F$#1mXQFH9e=lj2_S~IwuJ|5By zh!6CdW&eAQ-;3YJ=XjVXdzJL$sh&M4zkZ9);RBafB}Lio5BSE)A(qE@Ro~3TP=GDL z`SjA-2}cg^zxAc_Birq-_ug;3ZLU;tD~J0HPjb{E!Mo@GpPt@bexP`j-b1kyL2keG z=3ezmJG(vicH)$vBU!K4F1#<?cG}?1qMEu;>F2Mx!W&*)zg?s3=>9M`;qAW1_ItBF zCf{EZxxM1}MW5o>rTcazuG;wYx|#N4rE9zDou7nm%)h07hiU!n1+zEb;hy__?Ul(U zr*BNzsrPx7^Iuh7h6hX=?yfekb}zHNQ+7>f^_uE$jxAamOBe(0Z8=qFl|SW5Sh%8v z>M5ydH~xQBS-SQ;`-Uqli@ttdvzNUusm|q>s_JDuUWT5D(g%6m7pr~RS1w>z%f&j$ zgh3(k`~BT1kHfPsJWko&*v-O{$-txHH`BEE@s>q7OjXr>i;YXZ&WVfr-1up-gA~Ju z`H9yapWJqw*I2Lgl+^4Z=f87LMLS9{TwvPU+`qz)<5-VptoXHWyO*d6eQKD%t{?&; zTWl7*sA%|9EWt8$*<1HDLc9;1=bO3tZM(lwIQH+kr|->Y&b#(u^Zk!U-!78(;^J1a z5u7NvrI9C<Wed{<o|yO2i4%Xi32XPV|4?O}#gM`L;CU3|bDlcG)-BrX3?_^h*c_A@ z)-sqdU*O}~d9tQhlf6NmU5YV-^?>LO-(wLb3=M7!QH&XE3uI5+uvrr*!q8yG0FquH zdE!=0AOi!)$OVE8VGOevGuSsdOz8S{+6-(DRIq;apH0uXbA$O9?h9nFED&u-JCJMS t_LQN;M&SvgKez1@Mn!&($_6315B4Fd?c5wSh7q6&-_zC4Wt~$(697C$OPBxv delta 1128 zcmV-u1eg2s5c~*`BYy-#Nkl<Zc%1E<Ur1F+9LHzooO6#xRBG*-7Ntd6n`MzwNff3* z1Y5ln1kuW}5k4#|v@UH#+d~^#5cCicL{<>gOMhtD2Tdy13hj@jttp$flx3}@yVSk+ zoO@;_ezz@r$eZx9nG>Gx%ei-cXU^|;e#|hR`<uCxASI<lJ%1o8CvR^`=1lp#^A;P} zJ|SzK=znrQ9$zB+!;aP;G5)nD;M?l@-MxR*TH}j~Jt4&VhxJ{%Xr(MHb>Q>M>vi^E z_UiAJ?ZEhFL%8RYDv1&{X-NqW-@Rd(rb!uNgm$!q(uzuB%pi;zge0<KW79qY!cli$ ze>h5d`d^U)2Y*iz$8pHd6`N&yS2tNaJDYIMrC}IsFnea&*w1?kR9?8b8?K#Ax0pF) zx^M`Uk-JSHb7p=7+NY(DWwv3k!R*Jktk{Y1uYC%%Jna*;C#qR^a<=oI5V0utB>ifh z^Q7*4$ce?|pO1QZB0JW<A69`XO#g=+treL5CZ_XnXn#}X(aV^}>{?rZibDGo(5)Z= zK8Qi9f&};=2CWJb;DZ>nYQ!f1O@cemG_At)|7FdB-!T0t#l6Ca9|1uEd=P_H1qtv$ z3|bW=zy~pC)re038ic0Kn2joFb+xykN?KSDLYKsfw(fVH)t)ocOV`9VF{G3RT%j#( z$;x=!i+}px?L>B+LQjFbi7BjP<2Pc|qfUDaV^)%3QhD#Tol*R?Yg-nbHF>;|$gVp9 z=m1_v9Mr}}M(P;c#s+c<pc7DDePs_^Up6<Iqw@=6uzx4--wDy&x$ghBh$P0$!R$xM zmTpJAfbJhdQAxz(`dVYuoCPt@^P~`h$QgO=i+_e1OK>6tCnS*_>mRG(SOrkq+g<G~ zTBiVd71&gH^wP)fIrdZ8(q-EZMV9Aen(GUvSrw-n-H4E~Zclj#>mMs+AmlkNztr~F z?GHy~gmWo8p?&y+lqCRI0IpYCJLBK`uGiS(GIG(In^-AJz?UVfJ+G}fIVUTVz$%ck zXn%R^pRU{5QCw*N$#V+aU#kw&0ZXKIDN6vQl-op7+qMZ~OgjO-lhP63{rwmFzI+3D z)!b<LB?-zB&{K2P&MufQ(#MS^sriLoZ$q8=MfQB{D}k~Ez%M_CbHO<mQ6aq4g~d)^ zcboQ6pmYj6==oO|hC%&QhzU4Am7{<I0)Gw&I3VBvKXQOC{x49x?Vy{?D6Lvo7&_JX zAa=36+iTeOgFTc(l)Kgzpw1U)KPd`=+Cao03~B{XGw_Dt4De8;eHj84045*<7~vf= zsF3yq01E&U02=@!04o49sPgX{Bn37AMgUe&>DNC@&RCogfE9oll=)TVD3Rdhfng1R z5r7qx`c~=eLjo26CIB`7MgUd-W>Do{djg;)0JQ<A5kRc~Y6dEIjs0{$f<dhSY6eQ3 us&w`t1so7?z*_|z5O6@i0qQw`5b_2j+mFcCwQ({40000<MNUMnLSTZb{}J>6 diff --git a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow4.png b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow4.png index 754af67ca375ecbe1cce1a93a6ae6de253280ae6..6e9e88d1e901453cc98287ba3b048039ebe4b229 100644 GIT binary patch literal 2172 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 delta 1110 zcmV-c1gZP{5b6k!BYy-jNkl<Zc%1E9TWk$M7@nEkJ==<?wl38YTB2^H6>VH1q?ZSg zxV(@Mad{wdOC(hAfCsmdNIZD(fJP$W#Vz8Y)sQOEHk6_&w1iTWmT=D5%go4MsgO8Z zOf$36{a*HD|FiqeerM-=|34Ru1i?8Mx<Pto*1`O3N9}lmaev98ywI8IXU^5e7Psoq zCUg0L6W6=De)q!M%Od=`$i+Pc<}w!15a|d<`L%{uw(B@zs{RFt>WA;2I)=C3E;Hft z%?C}L=RQ<kF=g>97vO#KU6MGhz~PVYg)-CAklRofKe%wdD~n&b0A0XiCfR#Sj^X%; zxwcGR-v~em!GES{A`@|pF{aXZWf6G+9{x*RwXt#S66C&kDz#0@1sIeunYC3_=t<dm zZc6{YC?j_=Yb`t9d;SF5TN-fE)O;(-m`f>T7NsnC<{V2Fzi<8npe>rF;b*O%m{d}k zWWPg@2LyS*cLaGrkOu^LfRa2wcsyX|xth7%eW!Hm%70liHXpVMGSl?Mc_WSDv(<Kl zabB@+ZK%1iev1e{#$t~k?G11(n?kJ*HGhOs4r2haxV<1vfG%(E@_O)o$N^;W$AUBg zz}vy&!Rx{E!TTWxki{PhQX2ps4_*(RFO$~`(gXl+2agA@2iudy+a0970pRiA_2Bt_ z5kZ;&;D7Dl@!<8~`QZJK1IXf!1!)36jSsax)cjEU!x#XJ1<2x$1*u&CYJI5reN}_V zA`0?=AP)%gfFKVD@&F&^0m8q+h|v=cCZ>($@0#xXBIdyK9M<vrap(QL;;P33gx3ea z;)b>x<wnl3bv9${hpn~Wx@u%ET_1(dA8%KfUVm|w5bgqT7?Ghf3u*X%t)c5WCWIjT zq&}29qsSo|B1A*TE3R4q;V$qsVjb!TM^S6X7j)$4X=GUz+FrbxH#WDR=@T*#rIc%$ zMq<TNllm#`0>T39zf`*ij!iXph(3H2vk>Ny`!ykbY<2|Bk4#A*rlyft@zOO#JB1!V z^?#UP{hM}He(EF%56iGVGv-98%klUe>vhG&kmWf1(aSdK6&K|fMNhauiOBWMjrGMM z*DH5{KUvD=XZUG)TnPdJe9#7^2n6s!8<Zjtzz1zmie4{(^8Et4&ewLkzQ7Bj`vrRa z8xRQKgElBdAb=0rpcH`sK4^nd^m+l5?|&PFMU;ZK_`f$!!V1#2<rnmnq6MA1L^$Uf z9N}Eo&JkE!5G($CgHR%=z6)dxNhF2KR<J%Vo6LTM7;&18`NO+rYW_UiGz>g$*Z|Ed zF3PXG76?aep^25W<OH#a6`|JmfB@@CEBC?iV_mi0H#^UP`9oMi^3x&;7DtF4D^GrW z)$AQ2{K~sPlq2@4vRvykaf;)*E@zA(K03?(P*r9yiWs8^dBsKfeX)IBWP1JilL!Ca c1rS2t02xS*lY7{Hi~s-t07*qoM6N<$f?MSxCjbBd diff --git a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow5.png b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow5.png index 6f16899eded8c32a19b7a837eaf03ccfda43eec9..ef1e6f983547c2f6fb329ee2382dc0eba0e75f84 100644 GIT binary patch literal 2041 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 delta 1004 zcmV<I0~7rD4}l1fBYy+PNkl<Zc%1E<OH30{6o&6iTNr39mf9czBmv5!(EyQ$5dn=W zb)y?tqJ{-7G$uyfm{^wv7skX02|kD`bs>o%u1u&^3=eq(D9|DXksyy!sBIbSbjBPK zH-@5S$hl)?zGai?f99Wib7$`T4?|=kNs_ETXt>gRC$HvMbbo3-AfCuI6~6uyn#fDH zu&o#C`Nn(C`u}wOtuy7Fa`ag_7w-u6l8s^aJBIKfHsYUO-ldCj<I^(+LsGI4L!P<; z@U%0EOGR@ips%Q^*6WQaQO55VvGny=Lh-20Ph+QMzmcM{<D~iSlK|A@D6cekzaXm^ z`qT}0<nr**P=Anhb@drD4^@=}{K1~3uXAfy`qZZY!-tslFFqY-FCaP{`y;H^M<ZrS zB)T36W9U;K0bLKA+~&=8Jlr6JeE9YI->d*T0d)f!Za;R>)Th4;QbsdC0X0xXGe7|~ zP(?F90X0xX^#;h^54icV@06VDou|uWea|zDyjxKH2!GHFP(Te-(F{;P4OGz#P(Te- zQN00ZJ3?)j>dSur4fg(>r$=PH2+0M-0J!;+H}10=te(kEHB~IEg*{7yJ$y<|0gs`- z9Vk-(o^*0BkZcqLLo6mH@V-fsw9g)sIFr0{wH*L$3fM9;QoMaV!LW}EG&R;q<Fkti zd0Bh0<bUIWW`JjOV%2u=u-I6gZ)<ITwZdlS#^%-+n3|$2tP-{aZ55ELR#phF8G7Hl zg`mkI%nc8+a3YMQ9}g4*;NYVuCp-E*X5f>p>3axg5{s*kNW?dkh@rn7+Is+o2&@9* z(=%+UDT#p$0O1*S*geJ=?Ijx+`rCmv0^rOa&VT+P0{~e7$OJ$(082j}Xsdu@f8lO# zUw5$iV|Spbv5t(-F6#2K(y-*?f@T1m`5WyA1dG*N+48h=NJzEuZ>Lv8RV;(B3c#5^ zoc%)v0I~p(34m+>hW>V-?Fz^H82UUpa!roD++AU`DS#Dt_*Yc_9-tYZfEuWx8K8g~ zsDGjvpnw{vqIv_U_X{{X`eo${{{Maf%4h~Cpa!aF1}LBgs%Qo%pa!a_-T>+yBkkAE z)o#@vq?(qQqZgd~+Vo_it+bL$OEEfTRzkgrq9DN@B8CanrvPLGAS(cw0mu$Oh5)hz zSe>KPN5J`72e;WcnN<;MX?s2Zo5dOBm1Sl^RMI%<@-B$W!H6{2`-Z)G`K+bQ?OpPW zj-lK<K-~by2!yA`bjHkV0kQ)^m@`OLD|}+2WC!RkgTA4}&8z@t5+OSP83M=>pmdHB aLVg18pkNYXZ|aHw0000<MNUMnLSTZdqS4&| diff --git a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow6.png b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow6.png index 754af67ca375ecbe1cce1a93a6ae6de253280ae6..6e9e88d1e901453cc98287ba3b048039ebe4b229 100644 GIT binary patch literal 2172 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 delta 1110 zcmV-c1gZP{5b6k!BYy-jNkl<Zc%1E9TWk$M7@nEkJ==<?wl38YTB2^H6>VH1q?ZSg zxV(@Mad{wdOC(hAfCsmdNIZD(fJP$W#Vz8Y)sQOEHk6_&w1iTWmT=D5%go4MsgO8Z zOf$36{a*HD|FiqeerM-=|34Ru1i?8Mx<Pto*1`O3N9}lmaev98ywI8IXU^5e7Psoq zCUg0L6W6=De)q!M%Od=`$i+Pc<}w!15a|d<`L%{uw(B@zs{RFt>WA;2I)=C3E;Hft z%?C}L=RQ<kF=g>97vO#KU6MGhz~PVYg)-CAklRofKe%wdD~n&b0A0XiCfR#Sj^X%; zxwcGR-v~em!GES{A`@|pF{aXZWf6G+9{x*RwXt#S66C&kDz#0@1sIeunYC3_=t<dm zZc6{YC?j_=Yb`t9d;SF5TN-fE)O;(-m`f>T7NsnC<{V2Fzi<8npe>rF;b*O%m{d}k zWWPg@2LyS*cLaGrkOu^LfRa2wcsyX|xth7%eW!Hm%70liHXpVMGSl?Mc_WSDv(<Kl zabB@+ZK%1iev1e{#$t~k?G11(n?kJ*HGhOs4r2haxV<1vfG%(E@_O)o$N^;W$AUBg zz}vy&!Rx{E!TTWxki{PhQX2ps4_*(RFO$~`(gXl+2agA@2iudy+a0970pRiA_2Bt_ z5kZ;&;D7Dl@!<8~`QZJK1IXf!1!)36jSsax)cjEU!x#XJ1<2x$1*u&CYJI5reN}_V zA`0?=AP)%gfFKVD@&F&^0m8q+h|v=cCZ>($@0#xXBIdyK9M<vrap(QL;;P33gx3ea z;)b>x<wnl3bv9${hpn~Wx@u%ET_1(dA8%KfUVm|w5bgqT7?Ghf3u*X%t)c5WCWIjT zq&}29qsSo|B1A*TE3R4q;V$qsVjb!TM^S6X7j)$4X=GUz+FrbxH#WDR=@T*#rIc%$ zMq<TNllm#`0>T39zf`*ij!iXph(3H2vk>Ny`!ykbY<2|Bk4#A*rlyft@zOO#JB1!V z^?#UP{hM}He(EF%56iGVGv-98%klUe>vhG&kmWf1(aSdK6&K|fMNhauiOBWMjrGMM z*DH5{KUvD=XZUG)TnPdJe9#7^2n6s!8<Zjtzz1zmie4{(^8Et4&ewLkzQ7Bj`vrRa z8xRQKgElBdAb=0rpcH`sK4^nd^m+l5?|&PFMU;ZK_`f$!!V1#2<rnmnq6MA1L^$Uf z9N}Eo&JkE!5G($CgHR%=z6)dxNhF2KR<J%Vo6LTM7;&18`NO+rYW_UiGz>g$*Z|Ed zF3PXG76?aep^25W<OH#a6`|JmfB@@CEBC?iV_mi0H#^UP`9oMi^3x&;7DtF4D^GrW z)$AQ2{K~sPlq2@4vRvykaf;)*E@zA(K03?(P*r9yiWs8^dBsKfeX)IBWP1JilL!Ca c1rS2t02xS*lY7{Hi~s-t07*qoM6N<$f?MSxCjbBd diff --git a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow7.png b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow7.png index f7fe3b636510031699b058d6ca713ee68030872c..effdcbcab6345c5f1b498a50f4be77a1279b2a4a 100644 GIT binary patch literal 1239 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|_);T0(|mmy zw18|5AO?X;!IOa`XMsm#F$06fED&ZCw^H21z`&fB84^(v;p=0SoS&<gn3A8As#lR) z0M=zwVFhI7rj{fsROII56<bx<DuGp40ofp7eI*63l9Fs&r3l{u1?T*tR0T6V13d#J zJ1zwU1)HLjG^-#NH>h?X&sHg;q@=(~U%$M(T(8_%FTW^V-_X+1Qs2Nx-^fT8s6w~6 zGOr}DLN~8i8Da>`9GBGM<f6=ilFa-(1(3OkN%^HEwn|DMi{Jp_&Xi=hJq4vjIbd5- zlJ!$_Qgc)DN{aOj^$hi~=_|=hL%1-n7#bYFfYArZ0JRxl)#h1Hl57GDDc1_1d!YUU zIy4z<Z*fVAK9T}`BLf2qT>~RsBTId_|A5Z7NlCUU$t=l91qU45Kj08_%qc+?1*r!G zK~5$pWUX=%^U`gVDs)p)(-KQ_N|fx1$}{s)^2^O_^dYKHbwfl^4Ykq7V!sW@*H)21 zsm1v@rJ!)PGcq%=0fz;OC?W<RIwG*@Ko&*U5s;Bzk`GK#MVZN-c_pbu1x3Kr1+fuo zA8r-sW+5yO&C4vYGlCj`CXA#DDR!(Ji%QD#i?Tz&F@Xq1oJyd^K!Ox0g+h`)IQW6- z-;T>hAD)-&xVCIlR|jUW7oIMTAr*{oXKmzd4iGugkQkIMrk1qm%p|MJE@vJ*I?aDM zdRKWmm&&)?kHxk7^o1T;-M2p^&ob{o*nt+&lf04+w`Lzm!^5<0%rE=;-RA6lZ3pQs zpCuFGCp<gPaBIQb^9;Y6OzPP#u)VEeyCJ^hr*VT>#&hEX`xMU3XWZgwJ)iL#Yvw<m z1-!R@@@&xe_?*s=d*NJqL#^X1d*+PhvVR}h9{gus!MOUre#IU}Q3ug&gpB^bdMQuc T8;@yaphCsd)z4*}Q$iB}QcRbk literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=*F9YvLn`LHoxPEl$xz_HznPrN z7BqHNs5P}|CM-|y(9UVR8~-FCQ%Li*QOf=A7nyE<E}nPh{`%$DQ~nu9{$u4*C~(kh zIKa4+fr)(z6NgLyionO}18+ad-F?3ObYaQ-`0F>t{{3SSad^-W#L&p>#mK^^!75;} ofJA}6;xl;uGvU>Ee3MSRaj8(<bnD^}pcffDUHx3vIVCg!02H-bD*ylh diff --git a/Resources/Textures/Structures/Windows/reinforced_window_diagonal.rsi/meta.json b/Resources/Textures/Structures/Windows/reinforced_window_diagonal.rsi/meta.json index 453a3797223..8477687a8c7 100644 --- a/Resources/Textures/Structures/Windows/reinforced_window_diagonal.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/reinforced_window_diagonal.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "CC-BY-SA-3.0", - "copyright": "Made by brainfood1183 (github)", + "copyright": "Made by brainfood1183 (github), transparency tweaked by Ubaser.", "states": [ { "name": "state0" diff --git a/Resources/Textures/Structures/Windows/reinforced_window_diagonal.rsi/state0.png b/Resources/Textures/Structures/Windows/reinforced_window_diagonal.rsi/state0.png index eb9489ddb47bb11907f90822a5ba80accfef0552..c5e45b5edeea4ad95847318facac90c976b6b727 100644 GIT binary patch delta 1014 zcmdm7x0GjsiY;Stkh>GZx^prw85kJ&QX@Rme0>?TfNTyR27yb#lYt~>fk$L91B1pa z5M~s&QryJAz??SGN_t|q4qt?CfP!;=QL2KOo`Igh#IJReS1?*kUdCje>{(EfY*LY1 z;95~)tCUevQedU8p9vJx%P&gTFD^;ZM^d0~WME*SYha{nWT~%Y$E5%RHYv$gC7C5T zsYqf#Ih&%CG%LrPlF9t+l9Cm<IaWD|dFi%F6}l;@X^EvdB}#T_r8zm1Cvb>OZeV4T z0IEdNZ=(-0bn*%wS!N?MlgSr(lqc8m@POIVc$CcpGV)9Eb5l!-GLt>?N>Ymoic(7w zOEUBG?2K&mOES~atgxz>e4oe79LZN!jzuNq`9;|wU>|^-WP|K!6zR!(dClq%U5oh2 zz`$hZ>Eaj?!Fe>y*PF>vLT;&5$;U|{3S4gO9j^pfOSOELbgMdj<$k3u63e|>ULYjo z!P<3k)*<a0`L&nM2Fo3)o}l(@@t$8+@7C>p{mzO#{m#s}&mYfik5t@s<51_?;_&Ss z7~jQq)Rwj~G&=8j%wqB5;<1?hw@(T&)ZY>JeA2-A;qB_<^2cQ+Ol6jFktt+&ut+Cw zM^O)VzU2P5ELW!3$G`c>?5*t??S0_j=j|{3SFAIe-r=(@UoI&}nlaD1VNdr)!!H|T zPZ_#xUdqBC&vn$8VXuwtjCGEjj@vHRM{_XLSjf~LdM0Ap^SM0p{-<|^v6k}|M!sUu z{I6X<wdUm3n}J<X-~J}HWyLk;{)uvHxE>R>Z`XXQOb4@m9YuzM7@Zrlw2wCi2m6^= z`7yFT4?LY3zsSo}J>iwL(t+ILZ6c;JJIYRVHoO#?P-K}^m7`wpWf=!U%)YA|W(J-6 z7_<6ohOgGyiJ$H#ZPa|;5%qM-_9ro!{Qu5OVBYi0rao&!tag@6fZS^}hf^CF+0B!! z)fZ~B%FJ<JTQv1*zUjV|6APo6?v&;D1WwL3RbEiDHjR^^@3Nlz+Th!kjG^p1-iCZ$ z^;hhMA4}Z&^JOBk3Qr?E9!O;0&6;6;iJ|ZJ;#P*MdnSE0VsC$&wpdM=dB<`4Prc85 zS*GM1SK8Xoc}6lWcZtk<$ArH;1qE`Z=MN-IsXr{q`sB4`h2rmv-8;1yH_a6bzLKze zp7zvxmtXCC8*yD+Mt@QHWS~F8ZueO*o0y2s;W*R&j*+kN|EH}1H+Z3E?EPgg&e IbxsLQ0J61~%K!iX literal 16179 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 diff --git a/Resources/Textures/Structures/Windows/reinforced_window_diagonal.rsi/state1.png b/Resources/Textures/Structures/Windows/reinforced_window_diagonal.rsi/state1.png index 65254207165b957f648e77219eb234caf994a8b2..454ab882de1126dfe6aa1e4300c11756965c38ce 100644 GIT binary patch delta 991 zcmbPH*T*wK#g?%+$lZxy-8q?;3=9l>sS%!OzP=1vKsE;ugTSTW$v~2`z$3Dlfk9&y z2s4UXDQ;q5U{0H8B|WiQhcCi6K*2e`C{@8s&p^*$;@7&#D;O;%FJm%K_ADq#HmS%h zaIGk@RmvzSDX`Ml&jgC;<rk&v7nh{yBPq}~GBB{vH89dOveZ|y<5GYDo0Md$lFX8v zR3tH=oJ~<mnw4Wt$z*<ZNy&=b9IKqfymVWo3f+{{w8YY!5+%E|(wv;h6F9^sH?Xov z097LCx6y|gI(Y?;EVGfB$>fVX%9HDOc);vwJj&()8Tlpoxv3>ZnaQ4cC8<RPMX4o; zC7Jnoc1AY(C7EeyR#;U`zR%-kj^ryV$D)$*{G#j-un#~^vO)GViuB~Yyk_->u0?!h zU|>@Bba4!c;5-^;tK%FfQJd={*3IS_Jo#XfppaTfaIDwmC2xevm^qbKZsHcQ-`Kga z`{02`%ew`HqSfc_@?P=m<;oiU<6nOPL0t9p-&^0`tv*-2@BN+MCTn|>(+VG7ysr1B zpy;QDfna?;HzT9_CtdXe53IS9=l-h?o5t|qpvNW#pN92w@7HhfVKgmnX!h_HVc4-O zJA97iqxI8cP82h3HLAC|$Me<y{4!fz#%A&LoAXcXvZ{$n$*9w8zG2LyW8J_s`J>~R z39>Vlk9}Ce!tj2s*As@SUGpP<wq7!s7+aTI7R%W1y;Ych*SepVR$gQ*sSd51G?#P7 zs``eMf3bS(tTG8duiqA2Y1yn?*2{1`hEI|~B!APvoohEUA4xkb%EWN|C=<gu8QyU1 zV#UiP{00`$YbVtA9lQ3uCr{j=G_Q-{bYJh$tO<MLo;e*U<Wwncm?x9Rf4Z$KWqP@x zwGu<Y*RaEBX?Dl|hb=z*YT-@elYcgc7_AH0!@jycbl2XzvsZ1UgBr5Wg*Cqk3k!Dq zxjmO@lBJmO4&j?K8+64%mK9Bq-Y%7Y%Ohqw#HLqkuW@MX&yHkjSbRHlwW;=QT_&aK zrMJJ{y;9+`?_t4-8<r0xj%b;MIv5>yYFHn4Cst|OuB#vJoc!VLkkxnQ;#(%Zn{%Vi zcHNM7XHv2j+i>;Hw7Hy;dI<&FqQcAlr|f@Nu~E8kYQqUV>8`5^yJz#N|Ni`D`kBzx dm73PVKNxNLjG}8ezr6xwS5H?zmvv4FO#rINj?4f6 literal 16152 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 diff --git a/Resources/Textures/Structures/Windows/shuttle_window.rsi/full.png b/Resources/Textures/Structures/Windows/shuttle_window.rsi/full.png index 91973e59adef0d113c8db6487e23049e880a11e6..2753f7be44b5c1356e30fde805d03c8d9c5a9162 100644 GIT binary patch literal 1779 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}e5nzhX}-P; zT0k}j5QD&_;K@Lev%n*=n1MlK76>znTPbd0U|>$m42dX-@b$4u&d=3LOvz75)vL%Y z0PC`;umUo3Q%e#RDspr3imfVamB1>jfNYSkzLEl1NlCV?QiN}Sf^&XRs)CuGfu4bq z9hZWFf=y9MnpKdC8&o@xXRDM^Qc_^0uU}qXu2*iXmtT~wZ)j<0sc&GUZ)BtkRH0j3 znOBlnp_^B%3^4>|j!SBBa#3bMNoIbY0?6FNr2NtnTO}osMQ{LdXG${Mo`TY%9I!1Z z$@-}|sky0nCB^!NdWQPg^p#|$AzYYO3=Ixo!03ZyfZ7bOYV#~8Nj3q7lxqdhJy8Dv z9hwZbx40xlA4!3}k%57Qu7Q!Rk)=M|e?aHkq$FFFWR~Qlf&&ijA8-gd=9Hj{g4Bb8 zASV+PvQ{~XdFi%F6}l;@X^EvdB}#T_r8zk^`VbYUIw7K{2HNOjvD*gZW2?xZ)Z+Y{ zQc#%N8JU^bfWrYr6cPFm9T8Y{Ad8~w2*}7U$p@yUqReE^ypq(Sf+Aqbg4hVP54Q?* zvk;bt=4F=H89@y|6Gqa76f;(iMJ46=McE<XSbzi}PHCtSkl;j0nUG`;4tij^x8t(W zhvy+Xu0z)%z5;U`kEe@cNCfBEaO(_FN0GT52@}sbxz3)u#Yu~m)o|7lo;nAQd}Wq{ z2^$1dTm^JgCONTW3vzM<dah(Vcu6Zk{8Ns|)(zf?i{I`17<2y2?Cs2)b$K7(o%uW0 zc=PA9_k6PUh2PwNv~Lo>@mTnAV&cDDmuJN95U<+%-R`<$Pp{waW3iQ%$8N3On!xfP zqVC(J?u94r9<{c6{^0QO^JXzoF<gdbX3zMG(w?W~Rz3OPI4k!4jNLO67%p=fyt@0V z%EHPj>oWUy`B~5A7+wf|e!lhUbNwqR+j@I_HwPv+&C=>(-2Ik;StRG#tEmMU{|#bm zt9~6ynZGt8<FQ@sU9KC99Z3mxEzTXr3(os(-`~x`b%o`D$fN@{$BxN03U(+fe>=1B zZG`31OGh*L%9qYxr&Dcb=&)@2&Y5;hE{R7Ict3QWG~Ryb`?Vd%KOgpcmb>=0Lg1~l zk0d`F5c~6Sv3fr1y|(+?_O;X=W@jp${{PdNt;ruYr`55Q<W|ltdHU!rlY7Kj{iT!6 zhW`F0aXVgMoy;y3)BVqW@O_vRsQ%)qf=-{sx{%_c{c|OGGmdwqvLxk16-SD=bQ|w_ zCcovlp;_3Wa)#@#6%;v2JhT4UxNn@}(Bpgm>nRtgIS;t{Hx^D7F7P%>D4ek~h<D{r z?{tUHyE(V~Z>qUHwWVou#yj~EHi`Sb2@TT~EG@;>{*+{YD^MZ%&~)|*`5o*H3-#^P z52Pt6UZ~o5R%_SWn9S+>OV~tCb7&~*wry<Euy~yH?|$`}o?Ks_`;9@;M@5<(rZ0JR zzF6cm=MzV(=chg&KR9F7{6f`O)dP<_o_TEzI2&)pJZt_J=4%fBUOm)V@mKsq?K;me zkt-kdHFX=yUYYUu@>MY<^vtz;`BaE$!=`p;_GZ6h%H@U$-p6i5z51Wwb$?HsubtF~ zLk{U@%)BJur}Ru+%z3q&FZb`tjVrfkUhQvN$1glVqjtuW6E}AXwI>~zGlwx(VykVs zo%PI1%OyEJwq5>j$uF~?Q-rznFV7SCzC9~B{A804CkB>3eJb(8%!KKvSN+K!!rjx? V&Rci#%5+eL<LT<>vd$@?2>^G`q%!~j delta 684 zcmV;d0#p6-4Z{VHBYy&lNkl<Zc%02wO=}ZT6g@AvveZREEV}7*D|A<=Al4>XhI~L^ z{(xAhMM{P&vdJQwEW$_@rBK&`1`2J$ENwvW7X-R1nQWAZkcASr&&BYb?`u9xr^d6H z%-nhRocHd{oqNgl&K|`QaR&ghxhz`E8h_Yqy@Bsfj0-GlBY)Ci)H;=8csUFNw3;>a zE<Q?5I&NEY^5yF{06^F6YC?Q}f+Ob$0PyJH18r^HX-FKcX6=svhO5yCkGHk}04K+% z0Ko4>6iP*S{ekxE`g#li{K|ZWaR877h=zm1eXOsoXygobIUj11P|jmIo1^YDG!6hD z+dF$So6AbE6Mv6CN<<P&XLJ6Wi2#C}7+wwo0oLXwI&K>$$EP?r+~+S<EB1}Z8P3jo z{5RvMI}P~bu^a***zt5WN3~)jmwWz`QVK!{w=Z&Et=Ow)=RM<T8gqcXNGZkpcOTxW zi+=t1j=T5n^J|p-#jDpZMW1R8WVF=+#GQzUB2QvZEPsGfbCDExxQN{-fE5`Lgb>Y% zxHA)pYBy~{<jMfi<y9mx9c!FDER2kkpFr2`#)?QI<|-E#U|Abld1Xj5=3ajwop@vt ziq3&#F<0$jiJV9PrSz|3uG+(LAd!H7S_gc8f<mb%8E>Nw6iP+u!^Z`%W<tbm)d7(! z1BACxDt}3ub%1g56EL+=DoI*(K;(-38v^Op0ToNH16otcdN{V2ea}^=gb=Oyh_X*- zbF8ne;A%9&?z1Om0qjK}XrrnXdo@yiLa>%h><=0KkEZnVCr=t0y#4?kw|!%BQAFKo zNQKTW=kav6u-IV2M2b+WsOU3{1Be++R78ztUL}8E9L-q5#SSLR8cxZw$MfGDBhgrP SdW~QJ0000<MNUMnLSTZ~xIM7| diff --git a/Resources/Textures/Structures/Windows/shuttle_window.rsi/meta.json b/Resources/Textures/Structures/Windows/shuttle_window.rsi/meta.json index 825c4ae1139..3d311cdc22b 100644 --- a/Resources/Textures/Structures/Windows/shuttle_window.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/shuttle_window.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/0b906c6916ce3803473fa6caa65f5b8661118c46", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/0b906c6916ce3803473fa6caa65f5b8661118c46, transparency tweaked by Ubaser.", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Structures/Windows/shuttle_window.rsi/swindow0.png b/Resources/Textures/Structures/Windows/shuttle_window.rsi/swindow0.png index f2e2df2b62451355eb250e818d223963505a51dc..d6ad5cbb2329d194abbd34b33265928786678379 100644 GIT binary patch literal 2278 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 P`X7Vs<?VT$5vuwhabtHE delta 1060 zcmV+<1l#-O5x5ADBYy+`Nkl<Zc%1E9K}Z`x6n!ZLLD7RCl@=s>D-^s57D`h$9z$Xv zkdp^N6jXwk=8#J$IaG>`ND;w8>7k`<ic}MFY@&h(!P`P^;^xv~v6Z4Ic-kJqY<D-= zUE7&;$Bplj%rd*5c{6|hpa1{(;4%gVhZLIk_jWgZH1FT0d4HJ|#Gr_5W=?HqvWt-A zTGPIQ;McYHb~mYHb3s5hGl%@fSG6t6H7w-j8~T0w{sRE8lv`>b;(x&f0R&Y^!h`;P z0Km%fDgdZ$EkcnnN`)d5nOqT|9qiQ1Bzn6$O#8-1h5-PdKfIxmNwtBnz`)>;A_hgB z&TE&y6$t>))_>M<{Wn3P^DE1%n3|bXpU0wc$7ORtfEK;o9XLEbLo6CcF!<zDQ55)m ze<#`4_JkE6AbS8=_KKq5<NHsqjs4C~j?muKgY%OkYMHmFzu+LWGpz*~e0x_9wG6Ha zP?Y9Qq9<1XadNcq`Fst7)XuzTR)CdPr=4k5%U%mE2!8<T?yVVE>bw!$5FiMCQ}>po z&KtoE0cJ4jJZloDUE#jI`!9{pv@<q7otP+>w>o#WO8|h;v4pDgm2!ppJWmTpR)CW_ z%NmXlV5PI6NZ2&k;RdJ)u(Q+6oSE6=EUj2(peDf1PMf*2ysQEyD)6s5fA8)c7Gjxz z2?0*pX@94|WDl^i(`E-6UO*iW7@tl|7@v`#g*JF`czlN5?haHX34zBCX~i-FH38-F zR;OK`we>uJItjdi+6%k5II~>i+Cit1Y4yJ#__^=|9S@0-7+)%xMko?ipT|drQ7KoP z7H<n`0!GIY0H7P37F9`VXg5oCxCLqg$ib#mD1WLRp4QHj4Ua5;o(2yvQ~^Qoqwr<J zGO0<jIY2!D$^)o3Ah*-owBSA<;xwpLKn#kywv`GPYXCf91qfuh)^rmjNF~#{8h~tO z&Km@f84pFm*xx?@0QDDW0W<jS?JMgJBg3jA1bEmCnt`~&3%PlnD{NdDZsAJIAUO;H zP=9LxQpq&rg9F#iAiWh31E*H`dqq(Yi^e<G*7LU29&Uh|0K5D>i5HN;^R@@v<OQ7g z=yi$_x{?=YRtw-3T+0ivs`R9VD|rE{T7av@mFERYg(5ez58UJh_$ieI>IW-wws;f> zK@<b0c7Dds-@l&H$mcpB(o%JTvRrG3EPuCDonW(?ftINgw5k<onL0tMnt_(66STrj zouGqtf?VAfs7jI=Lj>wpz^?w_#q(!WegIbl0DohMYwLN$qH){W16pw73A%M@iVFgE zwoAICNvTl8LT>(2F+@+?8Y8&u#Yq6IadFZJ&t9F)WEXXb)2bxtk|<gTf}d$TfgOuI efaZPL#L6GKt`yZed95h`0000<MNUMnLSTYyyzO@Y diff --git a/Resources/Textures/Structures/Windows/shuttle_window.rsi/swindow1.png b/Resources/Textures/Structures/Windows/shuttle_window.rsi/swindow1.png index 99442012a4787e744cd456f8ad72cff463738a3c..bc3e876fad41184a8e20c580676ece1c4dd7934a 100644 GIT binary patch literal 2146 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 V(Aj-R>Kv$k_jL7hS?83{1ORX#P^SO@ delta 859 zcmV-h1El=o5b*|(BYy)pNkl<Zc%0>%O=uHA6vzK7#fn7_f+z~52{{NtFH)!=#>Q(% z@Ki4ff_M>2N(B$%NyLlA=)r>*!4|3)F{Rh^>(WB;66h^tbFo_dK$MCVVLgN`o5^N2 z+c&dslKoxE&SaRKmw7WU|MzNvnUT>khcbR+eaWJX@1qP>L4P8d4EOoOP}B3q`Vwh= zb^~PdIiylaoIZ6T@UtJcwgCXe>0*l^_6xfK7E1Hd#he`;ZfVQrb66<NE193<KPq_r zw&bKQp7-rLd2AqXe1HD{X$=P`gLU)y`;PWG*mpqeZ-J}hSC;z@9@=~U_xBINJa_#q z@a*Y}4`SQzpMPI)_~`Myzp{QRMxFt(#dp#l1|tm+^bPma4iFdN{bv0ZDfUxgH-LAM ze%m^zp9;GHfM|VQ#0UdK>GLA&1_<l(s*OO71P2GtJQ3T%+~Z$=e7j412MStt0H;rf zMT-GAeL5^;190EtRLBP4zQ?I3ae;2~c@ZTB=q8^RQGap<aNgro$a=toM~}~mZLVk` ziWh$UQ<D?aS0F()!0gQ2B?a%n200Sk-QAIDdNN^iWpxeL$MdYZr1sweok-i9kX_)~ zjfM|r^Eu!C%}S;1Slg~srzb<+e)sM_bb!WU3R49D=s3+)t=8CGK$$9>NDQI$?!6J; zY8c1{Sbr=ps(24J$OhQn`ZO)Jc_Y7@w<m6u%gaaZOcnq%lA&&L)2`L1)05GX81ak! z-2~`nrGiu{Tup#ZSoDBS4#}v{t_L^{Dfg)z?RtP^u_vIVM4|_nOeA`M$!OODyk~%k zzYCO{0phdwOmNQtckzBjPn@vi1x$h^4loIpIDfz`cr*dFI6zgUCl!`Bpg3JrF|86J zj{|~AW1}Y0IKV{M1ND*7F(-351E3+R&AfUJ0JxCOB9lq~nwx#|QXHeQzJR?#L`J&< zv?uEXZM)v0EVpx?o~jdcaTR4RmSy#Rogg6355%HQ5Rl7cJzpmnL{HZV2BEvYz$gQ_ zc~nF<qwF|Npx!{mC<6e^>GW8|0e-|P4)7y3ae$22!~rs55eLX*GM#Y%`@hY(RI4@E lb{#9LYfbHbae&I5@E`1L6NzzdrU?K5002ovPDHLkV1jx<nLPji diff --git a/Resources/Textures/Structures/Windows/shuttle_window.rsi/swindow2.png b/Resources/Textures/Structures/Windows/shuttle_window.rsi/swindow2.png index f2e2df2b62451355eb250e818d223963505a51dc..d6ad5cbb2329d194abbd34b33265928786678379 100644 GIT binary patch literal 2278 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 P`X7Vs<?VT$5vuwhabtHE delta 1060 zcmV+<1l#-O5x5ADBYy+`Nkl<Zc%1E9K}Z`x6n!ZLLD7RCl@=s>D-^s57D`h$9z$Xv zkdp^N6jXwk=8#J$IaG>`ND;w8>7k`<ic}MFY@&h(!P`P^;^xv~v6Z4Ic-kJqY<D-= zUE7&;$Bplj%rd*5c{6|hpa1{(;4%gVhZLIk_jWgZH1FT0d4HJ|#Gr_5W=?HqvWt-A zTGPIQ;McYHb~mYHb3s5hGl%@fSG6t6H7w-j8~T0w{sRE8lv`>b;(x&f0R&Y^!h`;P z0Km%fDgdZ$EkcnnN`)d5nOqT|9qiQ1Bzn6$O#8-1h5-PdKfIxmNwtBnz`)>;A_hgB z&TE&y6$t>))_>M<{Wn3P^DE1%n3|bXpU0wc$7ORtfEK;o9XLEbLo6CcF!<zDQ55)m ze<#`4_JkE6AbS8=_KKq5<NHsqjs4C~j?muKgY%OkYMHmFzu+LWGpz*~e0x_9wG6Ha zP?Y9Qq9<1XadNcq`Fst7)XuzTR)CdPr=4k5%U%mE2!8<T?yVVE>bw!$5FiMCQ}>po z&KtoE0cJ4jJZloDUE#jI`!9{pv@<q7otP+>w>o#WO8|h;v4pDgm2!ppJWmTpR)CW_ z%NmXlV5PI6NZ2&k;RdJ)u(Q+6oSE6=EUj2(peDf1PMf*2ysQEyD)6s5fA8)c7Gjxz z2?0*pX@94|WDl^i(`E-6UO*iW7@tl|7@v`#g*JF`czlN5?haHX34zBCX~i-FH38-F zR;OK`we>uJItjdi+6%k5II~>i+Cit1Y4yJ#__^=|9S@0-7+)%xMko?ipT|drQ7KoP z7H<n`0!GIY0H7P37F9`VXg5oCxCLqg$ib#mD1WLRp4QHj4Ua5;o(2yvQ~^Qoqwr<J zGO0<jIY2!D$^)o3Ah*-owBSA<;xwpLKn#kywv`GPYXCf91qfuh)^rmjNF~#{8h~tO z&Km@f84pFm*xx?@0QDDW0W<jS?JMgJBg3jA1bEmCnt`~&3%PlnD{NdDZsAJIAUO;H zP=9LxQpq&rg9F#iAiWh31E*H`dqq(Yi^e<G*7LU29&Uh|0K5D>i5HN;^R@@v<OQ7g z=yi$_x{?=YRtw-3T+0ivs`R9VD|rE{T7av@mFERYg(5ez58UJh_$ieI>IW-wws;f> zK@<b0c7Dds-@l&H$mcpB(o%JTvRrG3EPuCDonW(?ftINgw5k<onL0tMnt_(66STrj zouGqtf?VAfs7jI=Lj>wpz^?w_#q(!WegIbl0DohMYwLN$qH){W16pw73A%M@iVFgE zwoAICNvTl8LT>(2F+@+?8Y8&u#Yq6IadFZJ&t9F)WEXXb)2bxtk|<gTf}d$TfgOuI efaZPL#L6GKt`yZed95h`0000<MNUMnLSTYyyzO@Y diff --git a/Resources/Textures/Structures/Windows/shuttle_window.rsi/swindow3.png b/Resources/Textures/Structures/Windows/shuttle_window.rsi/swindow3.png index 99442012a4787e744cd456f8ad72cff463738a3c..bc3e876fad41184a8e20c580676ece1c4dd7934a 100644 GIT binary patch literal 2146 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 V(Aj-R>Kv$k_jL7hS?83{1ORX#P^SO@ delta 859 zcmV-h1El=o5b*|(BYy)pNkl<Zc%0>%O=uHA6vzK7#fn7_f+z~52{{NtFH)!=#>Q(% z@Ki4ff_M>2N(B$%NyLlA=)r>*!4|3)F{Rh^>(WB;66h^tbFo_dK$MCVVLgN`o5^N2 z+c&dslKoxE&SaRKmw7WU|MzNvnUT>khcbR+eaWJX@1qP>L4P8d4EOoOP}B3q`Vwh= zb^~PdIiylaoIZ6T@UtJcwgCXe>0*l^_6xfK7E1Hd#he`;ZfVQrb66<NE193<KPq_r zw&bKQp7-rLd2AqXe1HD{X$=P`gLU)y`;PWG*mpqeZ-J}hSC;z@9@=~U_xBINJa_#q z@a*Y}4`SQzpMPI)_~`Myzp{QRMxFt(#dp#l1|tm+^bPma4iFdN{bv0ZDfUxgH-LAM ze%m^zp9;GHfM|VQ#0UdK>GLA&1_<l(s*OO71P2GtJQ3T%+~Z$=e7j412MStt0H;rf zMT-GAeL5^;190EtRLBP4zQ?I3ae;2~c@ZTB=q8^RQGap<aNgro$a=toM~}~mZLVk` ziWh$UQ<D?aS0F()!0gQ2B?a%n200Sk-QAIDdNN^iWpxeL$MdYZr1sweok-i9kX_)~ zjfM|r^Eu!C%}S;1Slg~srzb<+e)sM_bb!WU3R49D=s3+)t=8CGK$$9>NDQI$?!6J; zY8c1{Sbr=ps(24J$OhQn`ZO)Jc_Y7@w<m6u%gaaZOcnq%lA&&L)2`L1)05GX81ak! z-2~`nrGiu{Tup#ZSoDBS4#}v{t_L^{Dfg)z?RtP^u_vIVM4|_nOeA`M$!OODyk~%k zzYCO{0phdwOmNQtckzBjPn@vi1x$h^4loIpIDfz`cr*dFI6zgUCl!`Bpg3JrF|86J zj{|~AW1}Y0IKV{M1ND*7F(-351E3+R&AfUJ0JxCOB9lq~nwx#|QXHeQzJR?#L`J&< zv?uEXZM)v0EVpx?o~jdcaTR4RmSy#Rogg6355%HQ5Rl7cJzpmnL{HZV2BEvYz$gQ_ zc~nF<qwF|Npx!{mC<6e^>GW8|0e-|P4)7y3ae$22!~rs55eLX*GM#Y%`@hY(RI4@E lb{#9LYfbHbae&I5@E`1L6NzzdrU?K5002ovPDHLkV1jx<nLPji diff --git a/Resources/Textures/Structures/Windows/shuttle_window.rsi/swindow4.png b/Resources/Textures/Structures/Windows/shuttle_window.rsi/swindow4.png index 5b20f48ef2a22f7897c9a1e4d40fe9565ec1702d..58c822ff785d209a1e7ef5467df0bd0435985b2d 100644 GIT binary patch literal 2166 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 delta 890 zcmV-=1BLwd5ReCuBYy)|Nkl<Zc%0>%PiPZC6vn@mVx`3%grX>vY{)?ndXYj4(%5)i zvUsW&1wp(Bp;E6N#f#F2;Gy6}i&bw4xu$K3&_eN2@D`F@S}awON{ba?J(P{x$z->i zH=8%j{%-p(v-9n|nQz`?3@|e?I^mefBrH3NQlSXT&H?~l&VS^Q$)tbH&%K`&pV{Bt zLEpe2_IG#i?dSJLl=4qe9#%;zm4s;~kRBgHdVCB3U>Jt<Ubpgn1B2vpwGrUb#q&+) z9LJH~>umv4v=KmtVHi!7^nUrSY5}eAerZ+B-i!7E0BU1i<U|OdGUi3J6X3$R{v*d? z%&QhbD*>(y4}SyrFM{JZP0e2H6R2n<fJm%-fQ(rAfX%J#rgO3J0j8N~c`Y_RApbny z@>(o>fN3UBDio#HV&wxwqV@suaV7*qLzkb4=e%F+-h<rza(U_Or%DL`aQkkq5%UY> z1+1+ulHY+sBrPDym{m<A0{F$OWoJ>ZZ$wdSTaX0^8h@u{W@c)7idw8P$N~h7)2-~R zF0DXG2!xG!S^A3$B?3e_PDhQBKEQ9BZZ)CN1tooec<k*H+&<vzk39gum-TgOkxJ>P z4{$}$iH`dK-C*$nI>F`xbb-YO=md)okfp!4=%N0A%m;W|g4+jFmRA5ATHtE6MlDtu z<NzHRoqr(pa@_d<atp}Z$Q(HiJIPsFU8KGO39<k#_4-C*ntPnd&gRxOs?{1kzI(0e z721L<fcwQQJKKnDZ;bm{Umd2z<oG){*bD3fT3O)A@(S)u+TE8E^rEBx_d*VVYiUcx zd$2(k;MU~LrJmDg8pnVC{6?7L6F&;Pn0fVCJb&kPhBAAs(`=DtT|lR~14}-jt6D%% zJ|OD#eJYXX1EOBvr_zypfKD+l(vf_CPBAYM`MN;V>-$vL6LvxWF9`AxU9(@nODFpj zEd}UgpTaHxw~t^KfZIo~3jpx?2rUHQ^bza=aQg^lS>bkh{N(9X@tm795tApf>(dW& zq;vAw1(<s~f1R^@b|?7eL&0%3O3Dzo(1`T*_LJ(s-Us**RCyJ!hd`-N^j$o0_YujS zQvtgGmYqc^l|1%x8gRI`z;Ba97}x~}`z1{?p{(+N1_IP;;r=TS_WmIL0d6oAmllI4 Q*#H0l07*qoM6N<$f<jlabpQYW diff --git a/Resources/Textures/Structures/Windows/shuttle_window.rsi/swindow5.png b/Resources/Textures/Structures/Windows/shuttle_window.rsi/swindow5.png index f3d4e6fe0d1a0426de9b5947897bf1d3dc0ce52b..6d72cafc90e5c9e9ffdc3b1b6e755d65e5ddef5a 100644 GIT binary patch literal 2168 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 UTiOkfZ~yBH)~=6hjL9+nAA%k=bN~PV delta 835 zcmV-J1HAnB5ZMNhBYy)RNkl<Zc%1E<PfHs?6u_S)gy6xOS8+WR3SNTHV;cPcdWwbi z3wWqxBY1KT3nGO!A(wms1<lDGdaN-*4}#<(6nb*SYbr<%A%sAC+Bo}mH=Fooc4oKp z1HqZ>pX}TBFZ15afn?U+zWW>Y*>-8GU9UAdc)s83!u-M_^nZI@`1AC*N4fti%E`Pa zt{36w)%WpValHrt0GVtq@Oby(=NA^q_s)>7zyaGbq518HZ+<i!1Rl?702L)Pz~$HN zt!JFc=6nyyzIh%Rpp*dKtgiaz*f-5f?OBvC0n4s>#*TCE8S}Jxj1mH9U9^02A3nZs zfBjtT0C;Uab$=SLUD|51-hMP3Kqi|5{O|x`G+~b0m0rlw((5mHF6xb^E)T#&y=k7B zprinz;(V&|fT%d1`aB>i&Wp|iqzeEbUYo}#A%Hk-9wS`<v)VjwA&~O`*>RkT5Dk!N z)3YK(05WZQR>%U79mlDV1t2?)Q{iF)NwRqi7Xc*6=6^9<e1Ob2PKCT65@z#Q?JN6c z-aW=$^cW2XP$_?+egzUjR)m5c{^a<yAmUzBgb0AufP=%M{K@fY!B|-V!&vql7qk`_ zH)H`|?~ZNWEp8abvS-=5w7H>#0EFiOxV(jnAF_!h4`2x@e#nH2514k{zO=b9{vQ`Z zWWm)31b+#^^#QGmmJ&9P;o<}EnDq%^C2m!SZ9O2Y2S7H$^8gmM2f(&WB}_v2dH`;6 zNL?75H4jK-7@Q^q;+nsuh$e7Z6^_aScFQ~Yv*vjr==_`OOQ{uV;dwy6*M)km(W&g4 z0Py@%*yZN>lKK@$=(>Q2izaD}P}c>h7tnP9U4Iuymd#^yU4VLlq}K&>pCILAQRqHF z-6yE~1gHL-igW=0=srQ+Cnz(IkiKE!;P5Dq=SIT;)N75-B%i=b7}67=u#J;pn<iac zAv`?%CM81BH2?s7MH0ukhqLB+VYj>kQ9DPeC?SBLjg!vZ-FV;Nr2YeVdL-Rjx)Wpx zDm<F}7kPk7SkXje9-xE?Saua`%X}UqO_;X-;3X&_fJwarQFR9@{{XyFyVvrf6q*14 N002ovPDHLkV1ngvjT8U? diff --git a/Resources/Textures/Structures/Windows/shuttle_window.rsi/swindow6.png b/Resources/Textures/Structures/Windows/shuttle_window.rsi/swindow6.png index 5b20f48ef2a22f7897c9a1e4d40fe9565ec1702d..58c822ff785d209a1e7ef5467df0bd0435985b2d 100644 GIT binary patch literal 2166 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 delta 890 zcmV-=1BLwd5ReCuBYy)|Nkl<Zc%0>%PiPZC6vn@mVx`3%grX>vY{)?ndXYj4(%5)i zvUsW&1wp(Bp;E6N#f#F2;Gy6}i&bw4xu$K3&_eN2@D`F@S}awON{ba?J(P{x$z->i zH=8%j{%-p(v-9n|nQz`?3@|e?I^mefBrH3NQlSXT&H?~l&VS^Q$)tbH&%K`&pV{Bt zLEpe2_IG#i?dSJLl=4qe9#%;zm4s;~kRBgHdVCB3U>Jt<Ubpgn1B2vpwGrUb#q&+) z9LJH~>umv4v=KmtVHi!7^nUrSY5}eAerZ+B-i!7E0BU1i<U|OdGUi3J6X3$R{v*d? z%&QhbD*>(y4}SyrFM{JZP0e2H6R2n<fJm%-fQ(rAfX%J#rgO3J0j8N~c`Y_RApbny z@>(o>fN3UBDio#HV&wxwqV@suaV7*qLzkb4=e%F+-h<rza(U_Or%DL`aQkkq5%UY> z1+1+ulHY+sBrPDym{m<A0{F$OWoJ>ZZ$wdSTaX0^8h@u{W@c)7idw8P$N~h7)2-~R zF0DXG2!xG!S^A3$B?3e_PDhQBKEQ9BZZ)CN1tooec<k*H+&<vzk39gum-TgOkxJ>P z4{$}$iH`dK-C*$nI>F`xbb-YO=md)okfp!4=%N0A%m;W|g4+jFmRA5ATHtE6MlDtu z<NzHRoqr(pa@_d<atp}Z$Q(HiJIPsFU8KGO39<k#_4-C*ntPnd&gRxOs?{1kzI(0e z721L<fcwQQJKKnDZ;bm{Umd2z<oG){*bD3fT3O)A@(S)u+TE8E^rEBx_d*VVYiUcx zd$2(k;MU~LrJmDg8pnVC{6?7L6F&;Pn0fVCJb&kPhBAAs(`=DtT|lR~14}-jt6D%% zJ|OD#eJYXX1EOBvr_zypfKD+l(vf_CPBAYM`MN;V>-$vL6LvxWF9`AxU9(@nODFpj zEd}UgpTaHxw~t^KfZIo~3jpx?2rUHQ^bza=aQg^lS>bkh{N(9X@tm795tApf>(dW& zq;vAw1(<s~f1R^@b|?7eL&0%3O3Dzo(1`T*_LJ(s-Us**RCyJ!hd`-N^j$o0_YujS zQvtgGmYqc^l|1%x8gRI`z;Ba97}x~}`z1{?p{(+N1_IP;;r=TS_WmIL0d6oAmllI4 Q*#H0l07*qoM6N<$f<jlabpQYW diff --git a/Resources/Textures/Structures/Windows/shuttle_window.rsi/swindow7.png b/Resources/Textures/Structures/Windows/shuttle_window.rsi/swindow7.png index e0c99e0f540ddd3ed9b9943bfea99b72f5791ac2..62faa53e63c908af49e8ed28e9933a22518083bc 100644 GIT binary patch literal 1871 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|_);T0(|mmy zw18|5AO?X;!IOa`XMsm#F$06fED&ZCw^H21z`&fB84^(v;p=0SoS&<gn3A8As#lR) z0M=zwVFhI7rj{fsROII56<bx<DuGp40ofp7eI*63l9Fs&r3l{u1?T*tR0T6V13d#J zJ1zwU1)HLjG^-#NH>h?X&sHg;q@=(~U%$M(T(8_%FTW^V-_X+1Qs2Nx-^fT8s6w~6 zGOr}DLN~8i8Da>`9GBGM<f6=ilFa-(1(3OkN%^HEwn|DMi{Jp_&Xi=hJq4vjIbd5- zlJ!$_Qgc)DN{aOj^$hi~=_|=hL%1-n7#bYFfYArZ0JRxl)#h1Hl57GDDc1_1d!YUU zIy4z<Z*fVAK9T}`BLf2qT>~RsBTId_|A5Z7NlCUU$t=l91qU45Kj08_%qc+?1*r!G zK~5$pWUX=%^U`gVDs)p)(-KQ_N|fx1%QN#*^2^O_^dYKHbwfl^4Ykq7V!sW@*H)21 zsm1v@rJ!)PGcq%=0fz;OC?W<RIwG*@Ko&*U5s;Bzk`GK#MVZN-c_pbu1x3Kr1+fuo zA8r-sW+5yO&C4vYGlCj`CXA#DDR!(Ji%QD#i?Tz&F@Xq1oJyd^K!Ox0g+h`)IQW6- z-;T>hAD)-&xTdddkOt<w1Wy;okP61LvkdcO0(qRT=LIeCe}2#W<IG}J@pnN>j6-Z1 z1a@3|bN$@)6%YG07*$O95)SBZe^^yr{r`l}zyH7Y{QdR!IorP@^>wv>&;C*VUssz_ zas7?|GiT?c_KQAGVl4RS5H9+@?A_O6%qP?g#hZ3+={mosNc;UqhAT^E9rihDyuIr& zV@rV#+pbj=+l#l9cQWj#S+KgR+}geRF=K)rOL3-X{70+ZpXB%z>c2@f%{m_Q?B)7L z6%2kBYQ+|3!fcA&KTyw-y2!{&b6?(n9(wxJ?<x8X-hO|4?4=HAGJd!TabDPZSqHPu zodRd3FL-3U{?3uzvJJCBif62>c(!bVtOLjK6tK&8SNU@`oMs1kX!Gjpd<?~kGrU*- z=(>Khv)sDj&&_O(EV<&D%k5j=GR!IPc~&rEZN;;)2b!>uI`?WTa!3ikFJs6GI-9uc z(ahP0$`}-7CO59ry7%_YD_d0tJ^2@_9^E~+F3y_aOlyMP+DF=P>FW31GJHy3uehS} zOzOOUBHNe?4jIlooVe}L%-fC2Sq?m9jt$*&+Y;z3h1o}9IG$b7vip3>ch7Cc6`rQ; zGrQ9BxNgH^WAp0oQ(&>NyXq~20XX*7SInJTv7PzE{Jm`po*7QB{1tqI?*QlV6u$PG zK<(`FgczptmxO-Id%h;lx*<mh;`uY$<{$Ie7pPs8Nz<CQQ!|HM;E<st#PRonnI3$C z`e`fk0kE6)Jt{4GbobxyhIKDq?$^(#XS~aB$1eU--~V7eNd|i}u<ARnd)X)WCh4(! zR$cMqjP`b53UTmVWqBsVrg*i596U1ItEY27BcphWxg5hYCxhu>A4S)11|>m6Kxy@{ wKWIrdYCoKF)VQ2QUlQhtxO^KVPmp0rzU{I#bCmgKRe>rqPgg&ebxsLQ01EZjJ^%m! delta 386 zcmV-|0e$|@4x9s!BYy#7Nkl<Zc%1E;F>b;@5JiWS6zS4ZbHE&fn}$eH3TnE@8dl)V zU+?os|1}6k4BBtc`Wg8UFsIY`l0Uose#P<q<L~uZ{rdC$sr>$%^5v~~w)i#m9(EbP z@(BN@-UA*$Uc~aqwicP|DtG|PMYc}sS9KLUfQY#>pV>tKGk<43g9p$%^P@w+1L&Rk zTvx#ZXkibq2iOBv*H!QUBJ2V70MY{vY6JRyUS*RrfSl=GHVJ^7>0aaj=<B$O8~}YC zR~a$_m1aIOB!EgYpBb_Tkk@gQA$vf6Kl6TG#U8Ll(@J}SJwR<>4~SYbpRot14eSB- zfJZ9r3HAWBfqOl`9#CuMGxh+rfjz(;@JOXS!5*MCum{)!YR!Dc9-ua;?g8@i0V?$K z1^5#pEoSa1y9{9Fo`MHJdjuW;?GbnY5q?e(^$0uw+9U7)=>HS&09x1s>;d+G)pZp- gfCzhlJ%IFpI}YWnoU#P_bpQYW07*qoM6N<$g0YjcX8-^I diff --git a/Resources/Textures/Structures/Windows/shuttle_window_diagonal.rsi/meta.json b/Resources/Textures/Structures/Windows/shuttle_window_diagonal.rsi/meta.json index 453a3797223..8477687a8c7 100644 --- a/Resources/Textures/Structures/Windows/shuttle_window_diagonal.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/shuttle_window_diagonal.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "CC-BY-SA-3.0", - "copyright": "Made by brainfood1183 (github)", + "copyright": "Made by brainfood1183 (github), transparency tweaked by Ubaser.", "states": [ { "name": "state0" diff --git a/Resources/Textures/Structures/Windows/shuttle_window_diagonal.rsi/state0.png b/Resources/Textures/Structures/Windows/shuttle_window_diagonal.rsi/state0.png index d218355a78d335ad324d4435bb6a2714b693251a..f3a4f8bca59aa05e9643cee5653100277b0028a6 100644 GIT binary patch delta 939 zcmZ2nd6;{GiY;Stkh>GZx^prw85kJ&QX@Rme0>?TfNTyR27yb#lYt~>fk$L91B1pa z5M~s&QryJAz??SGN_t|q4qt?CfP!;=QL2KOo`Igh#IJReS1?*kUdCje>{(EfY*LY1 z;95~)tCUevQedU8p9vJx%P&gTFD^;ZM^d0~WME*SYha{nWT~%Y$E5%RHYv$gC7C5T zsYqf#Ih&%CG%LrPlF7Cll9Cm<IaWD|dFi%F6}l;@X^EvdB}#T_r8zm1`B`NwfU1!6 z+UR33(556aEzK%2D7830r?ez9KhMs{%w+N&F6GIYTs+Jmb|aUvc|b;fNq%l>Nl|99 zXI@EaQ9)5^Ng_nGjXu}}tSTn=bBRvA&t+(i<XbDpqLT9bqU;c`&p=MKK@JQQ>B%d& z&FT+bi}=dGz<9^g#W5s;^XQblUd)ant;glJcxXqb-*-Id6fk*8(?K^Emo0)#FSsLq zF-1jaDLvwjn3dqN;iNK4a_)R5my+`*I<KF7ch2XV`t}>vH{YBoe`jmF_=-ewV&T{7 zq?nom+E=@zx)}}y);wfV*>k;GJIq0%uDCRAPJ>2$MWWb|gVU#7|McELXirqM<;hav zSr4{fFQ0pd<;H>H+srMGXDDvCE%-qu*Zt`)*AFN5Ft@DFzY@Cr_bRj3re~G@e0sFT zIQr9x^I;8~=T6!Gde5aaL7hD)h>s&*M$RS7&%&TZIX$VdW&8ZNwp)4+1r)3&L@_+v zHjlaQft^QcBWHczshfEYoX2Mv9&OB4lX1^I_gUz+oo%qxmcOqzuMezfmsrW%@>;aX z{l^N`%5#=y&M~RTTy58voKvjVr*qry{?q?{Og;tD=T&8rvl-0_^v?B)hZ^or+$QvZ z>G+{fbA&~v_kM5Sl-qavrR8e=|H}mS`M+u4wCj2<(y-^g#k_ve>ICNJNqX~&`5v5Y zKYrPRQLjMf#Usmo_wU`k^x^rpzaKOW4#u9h+;y1GaYc*snf-h-9z<63ZChM)<lMcB z^BJUf%oDYV5Zsh|p_udg-%slq#4Q>!ZI0K3y!-t$K_nufDgEuvmhH22zcT*}yl;HM Se61xY>v_8RxvX<aXaWGpk9o}i literal 15523 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 H*KPV6dK~`C diff --git a/Resources/Textures/Structures/Windows/shuttle_window_diagonal.rsi/state1.png b/Resources/Textures/Structures/Windows/shuttle_window_diagonal.rsi/state1.png index 810b703900240ea7f30ff3afa8186dcab19592e5..08bde9a23c42d60ec2495a3241194dbe33b50f11 100644 GIT binary patch delta 887 zcmexZ(a$|W#g?%+$lZxy-8q?;3=9l>sS%!OzP=1vKsE;ugTSTW$v~2`z$3Dlfk9&y z2s4UXDQ;q5U{0H8B|WiQhcCi6K*2e`C{@8s&p^*$;@7&#D;O;%FJm%K_ADq#HmS%h zaIGk@RmvzSDX`Ml&jgC;<rk&v7nh{yBPq}~GBB{vH89dOveZ|y<5GYDo0Md$lFX8v zR3tH=oJ~<mnw4Wt$z)p&Ny&=b9IKqfymVWo3f+{{w8YY!5+%E|(wv;h{H!t-KvhV3 zZS=7iXj77zmSz<hlv<phQ(BUlpJ!)eW-@sXm-6IHE*@qOyOB%TJRl>#BtJK`q$o4l zGp{7IsGumdBoU(8MjvbfRuz-`xkM-5=Q1=$@~xF)QAv4zQFaK}XCSBAAO{AD^yC%X zX7z`zMSNvoU|iwp;usRad31`s7qg?p(c>CXOQ!DaOi*0m>2)ySu^`JwjyNZ7Z&#P1 zz8g25a2$-dy<9->Z1j)TlPTrtYQOWl{;JKs`*ZL6y)#Xh9W5-V__h72Sp0{${pnGH z3^8ZT^$xV1Pn&<1tKgx&|M#<;Cz{N~9OeGJ__3z0p1teA--9P}*UrAcUSBKcn<Xs3 zv_6-g;kx1F3whTAo^6VqyWCuC`YBn4x;jIX%P-q^%J2n=eK_8}`(&JXWBghM`8ntI zKaY1)3bFRqR8>E)K7XB&HM<^9!BsD%4G$l0|89CacL&Q2zA0i1HYUXfO>eL-Rr+x7 zs%05BS4{CSv&r>0xMJLM?LE12@85i@m;3+k%;g$)FW)%9_~0d1cX#!bE~DqNSz8#S z*S)*j-*e8gd-bhtlXw5EpTZz-qf#uru5v?zfJOJ_kDIKXNoGxGkk}!%?Y!lJJ+J=q z{dn+h``j}x@BQr+cqeZ4pgDh%CDV$XOimAUgeF_Q4=`pua$swK&olRimDx-+A8r)u zl^1l}X<WUI<HNz#C+@VZ=iq4kY$UsKn(Rtu!ve<BDet)6{df?X{*LPh``gOZr%Usv Q+k&!@r>mdKI;Vst0ARCX8UO$Q literal 15473 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 diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/full.png b/Resources/Textures/Structures/Windows/tinted_window.rsi/full.png index 6baa538dad92fff2a6c364b70fd4a5d045c04afc..6e1e863798be43c1e8c7dba75392d64f10022699 100644 GIT binary patch literal 3495 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 LVr^Vv=tloPFV6&Z literal 9436 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 diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/meta.json b/Resources/Textures/Structures/Windows/tinted_window.rsi/meta.json index 30517fd0ac6..90748bedfde 100644 --- a/Resources/Textures/Structures/Windows/tinted_window.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/tinted_window.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/ f141c349e063f7318d8c8a2417d840f0b2d06600, modified", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f141c349e063f7318d8c8a2417d840f0b2d06600, modified, transparency tweaked by Ubaser.", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow0.png b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow0.png index 414ffd9f3ee92a394adcaab92ef34f74bbb1afd5..162cfa0cfac669a97ae0972f60d90baa80dbc3d4 100644 GIT binary patch literal 4035 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 ab8t=W+3+3vu@AfdWqM}}wJS93LjDIjjs7hF literal 10814 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 ZYxlTu#$ZI33;lct)RncBDiy54{s+=SrBna_ diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow1.png b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow1.png index 90131a48bf96cc8117ce389ac97229626c1ca243..f022a67d8126e95d08de8cb8a2e1088722b1a218 100644 GIT binary patch literal 2719 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 literal 8214 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 diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow2.png b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow2.png index ae12f39860f52ffc274a700f9d45e285625ff1f8..162cfa0cfac669a97ae0972f60d90baa80dbc3d4 100644 GIT binary patch literal 4035 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 ab8t=W+3+3vu@AfdWqM}}wJS93LjDIjjs7hF literal 10815 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 diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow3.png b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow3.png index bbfee9bce7f894201330ba16b9a6f7b146bddf58..f022a67d8126e95d08de8cb8a2e1088722b1a218 100644 GIT binary patch literal 2719 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 literal 8477 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 diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow4.png b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow4.png index b79db5f7893ce7908127d271a29bd3d13c6e8fb8..41b69347b0b5028254467b7a0217557557c60269 100644 GIT binary patch literal 2692 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 PzruB;m*c4w^tAs2eU4hf literal 8217 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 Dt^%_Y diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow5.png b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow5.png index 83797163f225f940ae731ded308e1418c5611567..8f02050ca08c4e2a8fe8b615295b9b89fc61d595 100644 GIT binary patch literal 2318 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 JUD~iG{vS!*mPY^p literal 6896 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 AX8-^I diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow6.png b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow6.png index 2cae7c43a4c77e1c531fe25b58c365624492faf0..41b69347b0b5028254467b7a0217557557c60269 100644 GIT binary patch literal 2692 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 PzruB;m*c4w^tAs2eU4hf literal 8464 zcmeHMc|4Te+aF6rAzKt>8e5hzyD?*5vu4SjFe_sj%Zxojk%*!NWvfux%AQ>zBwMyh zmLgBGmMtOg(6jZv??2DyeSiNw_k8ZT&wb8yeXnzUukSgZIiI;?cJc%l=V49&0KjFS zuVcY@YV6#5*%;q>6rWK5VE@ZtOIx}HE&%B5>qVw`kbv|cZxWCcNFf6Nfp6<lDgGnS zq6^zJ!8%qS)+*7HO7{a6Z;pu_f8*of;+?c~c0$gMMfYxaUgU?>?Jb*;bKeX`ZIVm+ zUl~??GXR(Oym>gZ)z@9w@M>L6eHzm;Hg+W7ku>u~&~V_kT?cKe!)F`YST{ZU5zR8N zo+dn&>DtY&6^iaz%5p_;&K9_2t?n0S3Vo)|vK(S(L$MlFz|Dr#I9gjQIJr2PcfEde zzII!gqxW>`dDw*`p|#(*i%0omRz)0UX9MfCFTWSXtG6~+UV#`%0yA5tSMI~aM|cFp zAm6!f45@Cf`>Y);6v#08Py<XJn!Dec-ko{RS8H4G+~-oEdUds#@`XcnarIkyMR_ir z1$XajJ?JQXkerjIS|p<K?C6;zr{t0sZy(a?y8q=NafP+quhV@owSFDo@cEikeaOm& z$NfxWSkzqPWBzCRzlau?YwcSCrp`{F^gVo9I5YTPi=Swkao7y<sL53}%~uHuQsByX zx@iyz343SbWmayn_#^L8G2Zc*?c>zwV=iM3Y#_(XtSSES<n9fzCRC(z#qraZkj%>S z$MjamQh-OZ#D&Ne0abx^-GB=*CtRc^#P^0DzA+xxAi?@2L&F;I*;ut%fNk%$v?hGg zu@>9LT(%HoWsG`qw5Zao5_f8ZPJ$%o>$2BOayiC7^z$aox?%UzXzfYv)T(4#i}oA= z8NJvucO|6lVq+{RuiOhBPTA-6+n=5Tm+hrYS>GyqYd@3j;;%RVZlo$}jaN^ULPWo~ zYJNf_G)WE7snT)X&gFJ!l%UXN@rxuYo715iCbDy7OA4p`M?3>02as5kTjdX22XeOr z%h?BcG9g)0V*SrFUnpF+=~t5d3crBHwnrZd-;=Bo6Q`-6#ojcVr<UW~c8F|q{tKSl z7%oEY5WxdeDtPR+_W3Kki#hCjF6#ER<s;PhrinDR5uwD5m|>R(;A?k+4%FoLL<Z~T zU0JGGHLJNaa<Oou_tHW|$i*C)>9&x3DJjKfIU>69!Gi3W_xB232F*%hpTD{jMU(tq zeRDnqH6?k^3sieOsPh0_Xm}=Zx+A*v2^I64T$o?tD5!9P-R9CUlnk%ZGyRw3S#a2~ zSh>&ST0Z)ms?D&<%3HHfz66>q2XDpwvRm=GrE`xC>h;J}A;EU7lGiYCWfjpw<=<a$ z7A0;;eHK8@RwPwV)>hrnc?2{BUN5MYH^d!?_g@&4V}3N}C;I_IPj}8tZx~Ty(VZp~ z?mc=HUIjVKF6=6U1(|Dxc-ZL<%JWVte#<cz09eO?-ky0UKlGtX(9!+oN0O68djYD< zhn}E}4_)p8BC-Y7uIn>b7|azI)D9$aS1%mDWSsH2a_)iQv1#-`5iObtM4ZV0$ITw# z<g-)wLDtJZe#$?)IUVKss1W00XLstLoz{4O{bf~*w*A5^?K)reeg(P6b1yc}U(VtW z`0-@Zp<~q;`Ze@Z-08KBeOtGJW(^g%I##Am$Sb?W7n>M`-YgD1M4i#dw{6&~<k_`n z--a-@<2A`lKWLAzR(Wm#t1f@b_2WE^srV+o`S+U=!#9jV)<QoxGsj$Lc@;qftR)a` zzT=4rNqQfb6n{-R*ig}zgJA9FeZ#GmyLmB*4<BPTGtc%F>e04Xf_iQaaGq2XICqL$ z7@gA7L<f8NCZ1-Q>^yKGoHG<q?6!Yx-Y<3kTSu*|Ol_}<`K<``w+B19i)3On>Z_y@ z(-zww8{az`^W=sh(|L0Pg=gl^JxDT7#Ul3PS9!~cb$C1+&$b!jc6Xldn%1oHfv{?p zA3N$$f8aW`-|Fqr;#Iibu-+*hpK4`GqC)qcIOQmzBv@aVu;D1wa%?Zfo&$LKVu}sg zI=!QA(!_z_>6|8@D{0!?=5hF(+xdt)0~{>HZE0oRZ{G3T>vk8RREeD$7^>(ho4*We zfQ`rcgq(Zk)jK>@&CzIhq-0G3`><0|N@x<u6k$BF3}ugHvZLf4KZ_g<q;2#YPv(sY z5i74G0q4SQA1>h$_iqlY;`13{IrCePb%2Q4r5J^82sYs?MTv6zlkN_sD-!X94rsA^ zAld2Fh(xh6@SZ_@!HF<&L(lH7ItK;cA}lWPpG&%I6k@L?=Bx4$x+Tt?z_}hW)gZai zbjfr=Z1my+cSgUnBmP!V;`!be%4Ub;xhHt{;7)dA^W^~_6K~+GF$(E^6OMy1FRDw+ zULHk8HtQf847+vvuD%;~I4%hv#^vsx5j2`{ix`3#bUu`ho;=T6-P%b+@TMQuR$M$| zruzQ;;GH6`<$IGH&keZ66WrF|eFy<w=c5_+dq>J!(oV5oIr6=IJ)Ps#qsv{4W#75a z?(-Xw_bZ2D7ar)C@*+r-WH8e{!C=H46HE0AFO!ak`F~RPR%pq7JIN%Et$g&`YI04x zhn6Sj5gC?)>O=2=!d$YApAv)oY?^`E1~`pCcx-?CK&-WQb?GH6TDgNRV9%^l#oyEc z(-bgLwZ=7%qFJkfuy3?0c7+%#338SP+!l1E`QzgrZyD0XD+&3p!|e}T8hSD`7FW5! z3{{T{2?&^+MR6A^CyIyr9MjowyJsh=f8-_W7=Na1JoQ3Ik)fuj(D{~!eNQ>i<T9P- z(`{1Bk(+$WwKQ0$w5IfYUf|2mjZYynhxV$kSGF#;!F_c``<D1aGXzZQ_3|TK$wRa8 zDS#+7|I<otmND!?kMyRP?WcOV?aO9FuGnjYdM&ZIlssR#Q$b27Fy4D`Rz^*fHpjD_ z?KQQ05&5<CtbmNJ>6J!-%8!#ivcn&=BxEreO%lr`Z`(<=DCv{ECp+BA6khe^l6b#5 zN1NB01M+mv^xKXz>2R~kaLq|nUbtj;r&Wtfs$wsfT2a2|Z;}(1HwE{UxPX&{^R+2^ zgBtJmyp%`WQ_EsLfmZYDoNrN_xNrcWpkeoLI677Kc^>^NUg}D4XPBZX_ng39wO1N5 z5mvVxEe@Y7=ov1w?z44I6S3g{X6jw#%vHo6|6-ji2qDa>eRe!_<=lsxDZR778Vw;* zWLjY#{21P}<ND|YHkL}GN`cb$tIAOWjUovWpq7MfF+$2jM)vHp=X?&nsF16hQ3NgB zW)tsLC0&aH+;Z2XJ9+m9JuAv-J=j>;84IxR=4#SX4mYW)!@15VM$U@~H}J6ZQWp6A z7kDZrUtK73%*A+p<5oT}^|^2b)`~aD_o?9Ndof%jSpTKDs&xW+)jDpEfzAVYC;20f zSzI1pZJJa5&Bwp!_JP?N-kgGIN<>#uYV0RHPUOS*VwE>Nt*H_zDR0zy1~;A-*2D_# z;agH3#5fHiiq+EGRga{ZQ1-CqmivdiSU8$C3oJ4knXg2<Z))D?Y5Rzf$ggJRR!#8E zMfDJt?&PA@u4XWUw!23no-YWj2SL+qzHaoNdc2xcbI+heRtB$f*!tm3g9C*t>}42m zvEh;wSDq>pb(${zGN~uSAVVf;;YJpofQ!gv>ntpNt4y5|Hk}-0n@4%bZ!a~bKd$0O z6YeNehc3O_z>GwMh$%{~EY6o-+>lmrSKC0J9lL1s!)a7!^Sw&F=b7yj!OMLS^>EXG zEs=(Vi?u(vsM~5+dM<m!hV<bgn+=u~rYTmYPuIv%fi)nNJs!Ql@0L)VK`jZn?2+dc zx%^2`6C}U;mO5XrG2+n@=LGbb$^!JV>DHZcl7rIi;rKAFQv9RQf|Ta8rQf<0N4olf z%tpM?n@?(}kM!Sr+?sP;`t~4O@>Pbz7VIFMrszquyWEnxI?`oVQ|jyeYI?QD*MUy- zSvu_Ra-`DODCAJBx>p@Fsc_vt!<G5n$XD}3e#4vQeTCd;gpAEAYN`qBd78J)@~ReZ zQ$&*}(k*xK1fDar7!guhyr%N_Iu$4GCUjDL&4>J?u)Q<@-#ir~(3>cYJ-F2~A$}rv zuAS^CaXSb!9=L&Dn7^MUar{RZPed#DHM40(K^w{q{2_}#)VSCqwk9$cYB4hydOXY} z;IO7OIrRHd^@&KQm5U{FKP=Y1bTiXonAvxBRWd?fs$1F)5AuJLd^tQCHoe|p8WN-( zIQ?m+Y$)OWp_N-F_dUH}0)A4S*zIrVnq)AoVPj-;;c2eVt$p5o6!Gi6hr_F5Fm;J_ zeQBR=QJ2_OG%JOx<+@`gTBb&2gFq+!MpFu7d(i`01L49W@%(Eu(RJ3XQ+-cOMbE5h zi40yDN=f!_m;);ejj3vS&W?Mv3HRw4F)F2(`C(bfDXD2xhZ?dF5x4(7uS>9m)#z$N z+fwZ_w0n2z-EW!ooJ^UqM?dJdY~iOHYQ9n-p;vB&RWD{1g<Raq?c6l4DS9qCf9|Yh zHR$6zGb-b}vqfQ?Yiv!7u>>zq1su@}Pf`f<^k$rU000&BKyMtuokR!XNiGzsDrljm z0R*HFRY5i=6R3%|Hp!KuAM8sy6@1c?5bRFC5JBo{oGO7>27o7tjspgIdQfTDKvmE# zE|$^W>4t!SyC!sZRgkTT8Bp8HmjpyAAQhls-9U;z9HhnxRPiN}u@*Xdze6zIR6(wE zx;GXA2?z*K2tX)!`MN-07z_pig+t(QFv9{&3!>6-fnX|4d<Wtuh7O5F@TGXuDPC0I z4kixo<wsWqff(b!Kj!D@ZDR5#JeBr43k*IWfjDmnOaTh<^o0D~gGSf&XMp@Zq5su` zX301nLM%u$FF#)bN!Oo5rHlU^f=Kw&-`mgEV>cZl0YdU1c`{6CjHs|*LY^=%G5gbF zhXNOhr}wTGgX~`{=@jx`Wc@O?osr#i{yq_g`=7YKSpSjxt}(;P#00D3Mey61o`H@k zXeU0F=tZCqvAaz?1_4EoU`Q|;4pRan5ePCEgT$f12!tXTO;AFk6^Zb_K^ahKbR3mH z+JRz#D^M6XP=XQ$haoG1m7qiz7)c}(z!*FM4JM+AC>#NW$DvTjzd@M#QW&bldHj7= zJ5WRh6d40oL?ILjU<90m0wa+KMKB%-!+_C93<8J4DB@t~pHM^sR?o}V6UQhg#S`a3 zf_PJ1c4O=ij@2|XPzAvipnvt4dEn?|hJz}|m_qdn{A<9H;z>G1$L+8QQ$)fs2qh&H z3W`K2VSc8)i)T&pr7@Jag9(Ewz?F90cgligB*P#Ux1&=Az-~Vy7p%4~2}k$xwe<4x zPzCKk0Czlh<qcH%SrmN=jbRbAqxj!7uZ45@`Sx=Ocu;nSfWTeZVsV6@L1;LC5^*;W z!|&%1!4*e!Au-nX?}GZHpYp#Hi-3WVNq9H`Ohho2ACiPu1ml#T2rvpyCSZ^lG#QU1 z|B6oYBGUtKz9dZ-My8Bx7y{bO26%jzN||4+16)ZvJV6=YP#74Fu!O_0Fa#EXmV?2t zP$&rUpHC43LqSPM3?7V!BhWi~B!O`-I1G$XB*91+C<4W}ex3CHJw+4}3q$>yq6%bZ z<NBkhDv<wC_MZlS+vyn8{On`wpo|R}^5>5HJ7+se`43*d%k4iHfdTz*kblJQzjXae z*FR$59~u9vu7BzJM-2QU<A2rl|3(+*UuQZJmGMI_fN^3IfX96V0GOgE+S+CY+S-5o z!36*uPYg{|)o(Hrh%!Bub61dkpP)~hS-O0TpijT7z#Xjzg7$vUplLBAMc>{*bk9)a zdG$Ceb|IHDM;!KOF0wcGwj1>78rDK&%3{7en+Qz{=zd?f0k~sMzBPbiat$6Zmi&O1 zs*z=Le6KAW8gon@(UEd3TS8@KCZqb{{9TofnuYGqHnf8*XF*@&5ie!Guzgu34~*BE zisE(cB-NykqNgL9uQ=E^giSbj+m5FmL!{r5=H`uy;<m=72%5wP#wy))!+zX%DA}s( zbXvJ@eEEF4lkm%FxekZ>s7Tg>#jG44fqpZsLsmMJA%o(pcbA@AJooyG(WFJ26|;CN zvuqDgIc!n=o9byfvD@@(kv>@)Efwl|5seBx1;eXr#hz$Wz&64=r*i8C8+6GaxUNt) zAw0r!{6lr2Oi1HLZs;<xEq7Kw%w9{4r#7<}O^SGWIxC<v{q&6JeIAWl<Quh2+}shx z%%n#lwKex?)a})>sWp~!vAzY8*XU`C<2M`L=!6cyW#?lohB?dV;qcbCqX7W>_;+q5 zz^yc4MkhPnz(kjQib-gnBF}VUKmh>2DrcahX&Lx-?zX4vDI3w}nKa*Px6wmoBr86o zXTMZx%b?b2(T&F?#R~pVPX5+a68*7VDpol5G??VkWw%wrAu^vM(li~d@2q>i2QCb! z%#;b%WXr}M$$snad2ecN>SIRe@f#+vL#)Ad@0QN0ba$#IJI${zy<2KX*1%a=4~cf^ z8@zh8Rk+;SaeMzl=3(RgqO*@@Rp|151@6)^%NvU;&MvT}eTFQL->AN<8tep&ujMmx z^122obyzx;!}Ky5(igX-Zhr7E>Pfz68`}xvr%%Hj5rCUID&^Cr!S$frcrFS6hy}TG z0&=d$+}+E284#ZEsca8W5uQC(K7k@id&$qBWE@%L99F)%B@2=K;;XC_^G65FAR*fI z##MIxdR(?KtnFf3>K1^<squjDac2#680tn}Kc9YkiKt2T>&(P;d4O$!<Xx$ofNmxg z_C?V~+HT``GK+q(^aJ|^RkKei^9!5VODopeOCgyf%HOAGH%IDN0@xE~E2ee%Yl7xJ zAJuj5_BH8$l9O%@BDno1Vg<}c-%RP8$HfYbeN55m%Kdn!v`#0ZR_a~t5y`JaePJ;* zmvk<t+*<%|CwCRQ26gAg!ymVUbmOw_^=lzHG^*8P%gWbZ^*x29PXUl#a~kW<b7x<C z<--?zC89m3@m5bhlS}}%I9RWfX($K4)&|$d()c<GF&L$P)s<Pp!Tu$(n8<k<Dq-<3 zZR)=zrV@t9`n2ysK@rB`^I}QrC8O<#b>e^&1}g{xT<x~m3e(UtOd3#F(4OcjrxLRz zWG3@}aKHYt<;BkA97fcCJcuF_?a1;-H(<tFBtTduXMJ;Y)kWEg3z%^|L5E-FUBdIl zbs=e>0iW9Ije{aQCl=}P`xHwPCzp<Vlnk-t8t<!*V+T0nzwrsC%@8>*NIu#x!s>N~ z50K$|onw7dtfHZ(P$K+pWy_WNQj=xHbvRE&X>H}%=$+Dqw>Xa7J3BBGUgUK$pla5C z#6gQ0Fln1mB3k3*Fj1^*p>}R8zk9)E<%suYPZ%LW`*PrA-8()$08s#YBa=5kG(0-z z+r+2spax)O?3QCVgo!(xWgMUcU_5$?1kPDi{MHPabW~Y4i@VIp#tArRe(~%Nk?z2L zuJI8YM<k;XjTSQ=2JxrgzUg`6$Sl7qxU`;^@NBqYet|8#O748*lX}H{fNydVW-fl# zWC82G4>v#D+nlIz{BAY?xLa)59iQq-4xZ;;+F)S=xVkUp$l1I}shj0UghrkXd)QKD zGhpOA*1qHe(2vr7X6WS!DmmaHeQsX7f4ZId>Px+Q3Ym|-gI=$F8J1IIs387~65;#W zlbSn{ifU)OH~~>-typ^Eq!g7yJ2uC^ZH^(xb*^}TSsO%e8{iwP7nkHOx}UL=01R|b K>J(`?NB$R18wZsD diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow7.png b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow7.png index 17304ce1044032ee392be2dcc63be90d6580eef0..7ca4d7214fb770ce7965e8b028426e5826f30600 100644 GIT binary patch literal 1661 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU|gN)>>S|f?5q$_l%JNFlghxL zF|l@{wTDcgNSl3l^CM+3tq2XDg<)EY#HJPMx<n+#^6t2J=;qDo8?5i0S=TYaC}H;k zg<C&ZbaSticqU2<u*fT{WR8+dQZ|~md-0o9FIo@(d^Z2{e9L0JA9XXlmY&+BkefdD z!h-t}{Pl*X{s+18UT8>+lDsO<!}g?e`JX>`<^?VK?AiV<^=|FmJUi<<dvE>!S(u_3 z^KI9^n=3ny8Hr7iI5c19X-ezzmgeHfrIr3W?oC|S(r=<}V|QKV;}5HNV=*a)`R_6# zJdL&1RBwy+RM%beJg;-v;;3-B+q0&dxOeU8RPtM%w)VK?SNX8xZ_Y2?6}PC<u}wm) z!?7iDndii%&YN_-+9vGzzW?F-v%lGAI2!gV&tvf{l>XAaXi2b7g@;vS$tArzzSCXS z@0&f{T0g`1^@Z>9Ud61sn|Ru}FH{6xh`P4mo3)IL=4HdrK`UGI<=SV<?wn+BMb`PL zi`u=*Z++w6w)5A=e2>?jqJOCNT<LqWnD2GLXQqER{q5VI8{KP-C4RFt-rul^E0^=< zvnSHOSDbkN`0w0Mk@tTXKgBn=tjK<{1Q>gKsS%!OzP=1vKsE;ugTSTW$v~2`z$3Dl zfq`2Xgc%uT&5>YWV9v=5i71Ki^|4CM&(%vz$xlkvtH><?>$0h^0y1+`OA-|-a&z*E zttxDlz$&bOY>=?Nk^)#sNw%$0gl~X?bAC~(f|;Iyo`I4bmx6+VO;JjkRgjAtR6CGo ztCUevQedU8UtV6WS8lAAUzDzIXlZGwZ(yWvWTXpJp<7&;SCUwvn^&w1F$89gOKNd) zQD#9&W`3Rm$lS!F{L&IzB_)tWZ~$><N;2G@g3_WKuq`Rc`l&goxv6<2#rlSNhWgm_ zm1L$NT$oo34Gv(y=!0Z{+6=I2^DHPyHUWl|YX#6fQ2zlPnhdtLxFkg%NrAqRfq{jt zfsw9}r9Rw$K<C?}BwLkamgJ;@0}k#Va0oi)l%R@&)PsT`CleI1Rym1z>9$H0x+$q? ziKRIuN_HjXnRzMs<pwtT5LKwUA)=^;+UR4k-v;DstH_|#;{2RaP`KNf8`*$^0!0uJ z0T2xl*fbyuqH74q$S=tUrl+FJWY4^k)S`kSVA=xP2eS^h3Usp&c8BI=me|1zKodsN zg%medjzuNq`9;|w;CMg;B2FbxV;}*Fls+Me9~}6=)NjXSqYuwXc3f4LBISYE>zSvE zV@L(#+gTfVn*&6SGz4nQP)SY~;!5i@YVOvz_sM^GZ?5Kq8{3bbuZ)!!dbsnw{zHBy z{{-!XLtRhWcog3HCK%&k&OK0H_Vv5X+56fK(px@DCd5y8cAnwZg1P4zem9xavt3|& zTf=rke92Ga2D6Ok#s~H(oSo0O#nE~`<2TmKe>@9#Z~f%ipzrZHogw$ax%7rw$65Bw x8O>$?zOp^|&%A<h^?&_}y^Nv`qT2`=T|Z5Xr;a1w(JD}Z;_2$=vd$@?2>`uLW_<tv literal 4882 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 F_6HOSG7bO$ diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/full.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/full.png index f7b6e10f869a9ba3ee1d2f09f066f153b5e21e5e..0e5df9bea5d2dc5ee7afed871d381036cb12d116 100644 GIT binary patch literal 2364 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 IvokdH|GogceE<Le delta 1302 zcmV+x1?l>{5~&K1B!3BTNLh0L01FcU01FcV0GgZ_000ErNkl<ZScS!xU1%It6vuz} z&dh#icav<|)LPSMtv0c(ErK6JTR&b3S}O<&dGx_YeUMrx_)t(m6!cLad=NyXpaCld z(Nb+ngB4A!rnU`eYLh0}eC%eE-TBx%*N2&8v+05$S^9sOJAdcS%=yhd_uPA~0O;xO z8{!sd<kP{2%%1+fp^+n@rCO}@Rt=CoXdi?GJG4tbxQa-FPsUfZD`3Qerq+-!gSILK zSEGd<`i9IEV=M!-gXKdx0)`9HByNlF1#q+u8Yo(2J%A|$mR10G!T{0$#PCUK7^yfA zSFn_Wv;)cmOn(9Z8N7()^LhGJlBpy)a{~y005mXK`jgY6=g>m1cWW=*sk>-1S_6Ke zxx6sKg~{ImcyRMxB1E|()eV579Io5fm?)0(TKYI?-(rChkO~2?c*g1Cp6M;TnEL=6 z1-?KE3tt0DkTro!@bs5+7h!H~2wd8&B(vJ%ld1DSgn#&yzZ?t-+5=1Qp8EoC@f8?B zUjX14V8Y|~KEb;)XCdW-4;!P2;188(5O2Na-lBwyB{g@efOJ%p0Vq@yL|n3qQFd?H z$!y^Zm=~)6A~EnmDFsCjauHs>d>>~9h8sBkZxvVqAQ#?0cj$gT?7c$4bMRCZW_@T+ z13Cn7ZGXPDCV0h6av*yrC%Mj<fnj2AcE0hy2-fJ#(cxqCCcu=m#4?bGK`{@ck*gn+ zLUPibSP!2!%c_O3g<3lRhy?jMx^T5Q&O@16FmKNVH<`>T0NbIH7@Jyd0|PotqbUF> zDad<yN^u8@#Z>^nBsSk(`mQOCmsQX{zy9?bRDWtIyaEsrL0mTaQC!g|?bcCocMX6L zwCN~MZr?{$ug&lE(JmuFR!H`A@2ay005Wizwz52GbyD=I>kc4=z%VS*kqq5#%Nl@C z2_snfnl%XlI-{F{hH2FUgc~PqR$EgXOCjqG;Xl?{ZS4S%ud1d%G*TVFtUb+Db)#t^ zP=Cr}#-3^nkdbk|`QsD-DG{d`>NZ;V{>l$53dM5uWG;6W{R*Oq`JZ<eDZ@=ZB!G}9 z0G{7{uxS9TG6}%WEjw-o&?4BsO(ZF8(hOY+YlPm+PExuy$AUSaG!w!hZL~CedA+nJ z-ij$CrB!phE(=@~i(>s(!L?eX<|7zyLw}$h@bOnVp6=hziKC~Ft%t*BUwVp<=7!jo z?4sb6u$QV3Sq<O|JflS3zQKqy&#dx!Cvggn)K|U{YGdc3NE#;X2(B5y!qrWpA;4#q zv&=@T94`%XAiIw)BhHxef$H+PK(keJFnIMmv)L-xJ{!yg)1}&o<YbH)-v-|xXMb8$ zwPt^$lR<Ba92QGdnWVPOCc{rJQ6;J+lns(m!MQ6xK>~=|)D9-N{B0@T-*AG%GY9G0 z{s=iMsA&~2UcSbHTj1h9mjQTe+rt<bbjCMv7*J>?E93k)daka&Bi@NXlD8)@O_N{7 ze&OSeK`PP%e-X$cdiwi@MqXb6t$#U`cz}WV3t+~{xltUWRvVObk=v<lR9e=j>$pG7 z4r4P5+FP-ix=PuEj4v6*f#@_{bTP&l06lMK!x0FJkb&~g!5PsmGh^7S96rL!b>?aw zYtdQJB{dF0fK0MkCm3TMv?i}5#Fjvrj2UB~b0B5_g8KMY9?$;;gjcr_8V_4L!T<mO M07*qoM6N<$g75fKT>t<8 diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/meta.json b/Resources/Textures/Structures/Windows/uranium_window.rsi/meta.json index 099201b4184..8d594817c68 100644 --- a/Resources/Textures/Structures/Windows/uranium_window.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/uranium_window.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "resprited by AsikKEsel | Original source: from vgstation at commit https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi and modified by Swept", + "copyright": "resprited by AsikKEsel | Original source: from vgstation at commit https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi and modified by Swept, transparency tweaked by Ubaser.", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow0.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow0.png index 7be507678d49517ac92392e78b96843349952311..ff5619c5194db935b37d8bfff14fe3fffb89df48 100644 GIT binary patch literal 2857 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 delta 1672 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 SNQM9a002ovPDHLkU;%=37y;b? diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow1.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow1.png index 9979f28e945787ba4ffab8d70010c70209c7f274..cabe60b557955cba753348a64b5bc1ffb7516eec 100644 GIT binary patch literal 2288 zcmZ`*4LFqP8ve%kolQc!6fupGWPD7-jF~~kU)yN>?ucqIV+`|W=5uBgnQ)SRv{9KX zW_DGalGRFylWh8%wpi`zhh)^rbsTFVDvP%B%_ym>eXr~Nd*1tgp69*a=ew@2kQNqf zidu>S0Khafgc1SIe%fwq2#=>Y>5t(FA&v-M57c$o4#As+EP7}%l?ph+Yh$=;+ug_# zcr+1)#EJpn3rlTB0A=OY0D$CjqUaEvx{;71;JGF+1&J(IDNm?l5v2rp$zwqYXep1& z7Zao;j1ED7*IF}(LF*t;8VN(E($E0{5evP})y>rnLq?&|XrhRjOo*Tay`#fB5+((L zgai<jNF=V3wXOmY8+6Cx@t_+H#Nn_o0xQnsLkUtWU+ggJ<h>sXOPnO)2qBJukJkE4 zNEBp1Bn(CyXs*rX$xNDyBg_zSby1i}AdAc5vG|Y}ba!<JKgWYO$saQ0i{Hrs3j=CT zV4B-!X`w<W$pcm@PzvYs?tXBhNxHaVhzZUEfH*fdZ>$>*i^GF+_k+_XGLr}p2ja4H z!p+@Br=UL<`q-+)YbD@vw8|2=34AsQBgHaV$q5-;2t&@0aQIAt#ES^dqCRHNT0eG5 z1V0m>sJ%5IHi9J<a5J>Jlf7_6ofID#KRm!Jf&MwdeB-ACT8aP?!1W~JB!%)JmPjaq zYfBgJeYn3zeCq2%>}Wm*BENU=iFqDt-rErTMUX@wN{iCH!v_)n7V^%`tf2GibGG<( z;=|QXMiIfeFNuuuaQY)201S|!6#pnGVkE9V%^`a6U$_zlwTJH2doS0<Y9GttbRD{; z$!QuhT|ZpXTBE*<HqOO3H~)gk&B@p7BNsBvnf?^4aayDNr=KDs8(X?G_Z&IJj>mo% zYi_T2STJ%Dud3jDhg4l!drYh$^^+un9TL9YC>;k@mX|`ycZ~JkSUKfiDDs6Ge&jt& zc5y!M;}Uem?^3G5IB;ZpjsFc#B}Xr)_?D?Uu^`MWx)UMCnf3NLD)@=}`q~#`n!+;b zpRQmF&AOw%+?IcIWJASX<6Y>(GTOFUvSOPYjAJcMeLFDR-x~g^@=p1c#wX6n#SQgk zU!6LDTku=kiIvl@*|=5aUP0ZB)h88;sfbR5cgyJBW}~bN8K(a2evgGG^@Dv>LpMDJ z*X=aAUcN|O(&b1yG0MiDb<%4aUp<=5G)RlFRM8ii(nAgjT(XK-3v&<!m?#Iv29He^ zP(#i2Avr>Ryc3hX-3rcKdb!A?JE!%F^Vi7t$%c>WM5=I6sdGa`=>$!3=9RL?{>Xn@ zBEdoz6NTRHnz3vpQJ-PI;D?+4Owiw>?lrpAZv4O~&q*}U7A%|GqV77~*%`81{o*$J zo0U@$eMoym0C0Tyx%)2*%<Jz5(|X<}=!cj;8lEyD>s{SXdpR<!Fs|~Wq@sHH<~&lb zsx|E4f-ssjg^oMDt<3N`*48;cJf!iCU4ZTIJ;#LwmLnzcmJypTEbV=B$XhR}<gn5^ z()U#HS3@DjCvpp|EDowSuma!Aj1N+04p5^77USQg9c4JR{iA<iXWAY_)8Q#)clC5m zMSzF(Rm+Bh%kOPOFIgISIrd*Xrq|A&pWL#j9pU|ZyzRG;Yx28>l~=wwHSxc%XK?w7 zA|KVA^k)Ih$!xAD#-K~O$fS%_MH#c={AbG&gH2X(M>l0%yzm@x-o~RWF8av1o5#Fl zsAm&bOrwT9e~qohcQjvH>dfyRk02W0?0Za5vOJaNjjBtL!UN}QOC8s3-o3rHiKGdy zxC>c1ogFwn&S&S_AL$ZX-hB4;<V@?hH1j3aB`%XmPDQ5s^!Y1F!F-K+M!D?Uo>FA} zK0A-q-Iroi&(|l7mZln@c`M3EK>2i$>EjmH&5Qbx%_#v}UI@<Q<GOGA$?OV!`p_+n z4-~`a0^6EY_-ys$p`<rMnTpyJBtsR8Vi%izFJAupD&Otvs!RdRK>JwB$ZBO{cg5MU z<7-y-EO=_wW!PqYrhttMt`7&5&6xnA$vvjM`h-E$ev7+~Bt0z8Ot~zN8mG_bqhM0h z1#5hJmhBx&D}Mchne3{w$RV(2;(?!Q{0c*reHtPgK-bc%8q6xs7gW5S`O|L#;rASI zCcBkho!$D1%=pp$S0muLX3(?)tGbZ7HHN6zGn2FHkJBt$&sAe%6Fa1ugI?cOZd6VU z`Zhgv+|c8{<Ik-R|I*7gciWSoL0S#00px2K9e&l5`oL!Et{3vRU|adFu(2DW{lw%V z*~MJnLU+6G^-HLAW_BnAMK)6N%a=`$epdHYzmyjRHFNUtdV?r>yhdq58uDyKC__jC zt91@cfvxHKtq7U+T)vi}@hhD~0#6L(4vab(9yz!WD)a?}O^8npY4M13L-Z`Tzy^j& z%4qy8rEkfxMoxU0x1PndB`I0<qrv*hJR3%b>>`r-!Z&dz>E!M#+_d&@BQ!9KQn#Lw F`+wtyizWa7 delta 1205 zcmV;m1WNnx5y=UVB!3BTNLh0L01FcU01FcV0GgZ_000DgNkl<Zc%1E<+iM(E9LGOr zW;2<+Wlh^$h>&HWrgUS7B7#0x#fMTMv@iNrAN&)<7a>@oC4wOMN0_(xpirp@Emn{O zf?%jkXdW6i*f#g1+1q4xX2*xwT)b_hXE|pi`+1o&yXWlpw}0Q6Gkf^`&Wa!i(8=)C z3o|m~?@#{pn#}l^%-~iq|B(|m>H>~l47(HD#(S0>wk;2E!8gIofd5olU%LVQvEGCB zme|7$0{XF82^{F?1Yj%}fDRylo7Pg;t^syNT3@>X-}FsT@hj}scDViEE&vzvZ}X(| zgtO@vs0VebUVjC{G`X|zBj?ESR{jl=BGnRoq5BzdW$uF+fS=tJVnVQL?1gXm;o%)? zfLl8cA=7a<DDFdb2Y}$Ed;jlez_h*0x>qL?H}Qa;#`ReD>Hys0cQ|7KE|d&N)uECA z0R;Wh`q~ZXxlyABIJo5dum7#5dE~eUbce@DIeqO0*nbnf*L3O|I>n<v+W_4G=%#Ie z?f`VtHb8d(x;gO%NH2t5DZG18X8bSNuYZt@L53552eb{)9e{4y2IvkzH*EuS2cVl1 zZ-Ded$QfU|F7*MEXk7?N8!-QI5Edv*6L6t80Np;Pi=FJAI_!6zINS9qJyudyvZb^p zCunCFbANN(w3Zm`?4VqX@m_M2MQ0g+xym+=r~(k+v*Z^s%|@C#+mZ;L8EFIVocjEr zeRlqP>{yJ~hh8Nfq<F5Q3ji;ubN}f*ep_Ck9t3=P?oH0veX`OmLAo#^ejRBPH%|kQ zb;F8H!LMQ`W2A_Y_Ms#W)847TJZL|B`8%n?hJP%rnF2w7SiDTtDVUp3wZZamYAz12 z@t5xFjp+~tqz%Y_(I`+L2#XdbVUa^L8I?F}N)|R`kv1UlS>Lt#G1JHyU%PHk^io(W z^KEv5_aA-2Qhk;Dmx-q1R3N<&I_}Fy9i=Nl-><RZtg4he7NrK{%yeT9fCt1?O8+a$ zihrZ)ZkY;T2ti3SdqAp1*&Wbrgjf8<!Skvl{}aj#SZMtA4`)XHv=Gvb(r3VEqMMj7 zC`RY|>&XX{@N~%jBgzcu+JYf5$WCn+r+fkp*i7#+Ri2|NN@UGA_}X{p04k@zwn@?y zOfSxc=W$1wbTiZ$kbcZ^vWVk(6s!^$(SJxsDvZKn%*}B*e<?gIoiqb{KiuaFz-G7s zIs&LOz|4djoc9qc%A}j2eXsEF)eAH8A6Cd2eSG!&4XzZ%$@V63#@CMBL}>`Y?BJAC zT0I&Q@fm4FE+SF}Y&fg<e(m^<EhHia!~u`n5AKpP(@K@2u^a<RLSP8NG7bqBRDanJ zkvkw{KUc7yJ5WJn3`hkg!<iA_Fn6GW$QV#GAtnq)6WvO6BV&NB96@9ZaLOJ#wOxk9 zAYEJPbfaN_A0unVsfrR)<vBLfd&;DvVL&4{FugcS(iE_*E@>DI0}O+LRl@N+mXk$D zKUOELOsN@-+`#4hCC1zwU@4Q1hAsh?4Qv99{|5Vh^ZqR)8U`HA4b%v82a5Ou_vlqc T5^UWA00000NkvXXu0mjfkY6^b diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow2.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow2.png index 7be507678d49517ac92392e78b96843349952311..ff5619c5194db935b37d8bfff14fe3fffb89df48 100644 GIT binary patch literal 2857 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 delta 1672 zcmV;326y?X7MKl?B!3BTNLh0L01FcU01FcV0GgZ_000I`Nkl<Zc%0>%TZkN08pnU9 zE`9ImPG+VvSuc}TNYsuuWK~#W6c;g|E&&ly9~bsb6hs(sciAWkqO!10`XC5KU0e-b zgUhmB5@862WMd{VF<z3)Oy<@}_w;1Cs=BI<57jymM|$w|o_{X%|5AOr&Z+;Ye|_iF z_nq^VkW$i12qCE4yLt5Iwm-Q2!|PS}EtSUIK;_=eqhljMRPbv{Cwv2p5F{V~r`=T} zjE<r^UGKR700ebN6@US-eOOF^>49O9c0^Ri1XoI;F8i!9QeB~rhX7{V0&JgG3lEaZ zXBn_cghF5f0e^6;@i`wK{S+w#S6#H8i}Phx8~w`E@eqInw|m2Em@0G6;6K0(AQTwF zCX_&6P_!fzquQ@m_hZjR7BEwKM~OKe0(chKaLZ+zcxHAN<U$BxO)?EY5E#oe3c5la z4*?P>kPrj`)O{F8@TVh}vwO#Z&TY4=QO837&*2?=ihqZ!99xQIb~4WH9S5+V?ElOE zn|e9h>KP1Su+y8=%c+&^r;vyyv@hn5X{U~d0FKKLDSne50uu%;ecg(O0KgOu?~i?` zoi{cDBt+!#tqIe3?cX{O4*`T=wM_E+OK!l|9Gt~N03*8TKD)>!yF|U!9Vcf+)Y_O< zfQ*>|^nXr*LUldhnv-|k8g{rwYoxl(ezKpF(++Q~`y2O<|CO)9X)4d=l;e3-C`;Yx z=Hm{nLm&uT=A3DrlpUc}fU?=ge?H$0_&{1G^-n@uFjRHVvWSTx1PdD9^PQm00{YD8 ziC2a<=%QQ^v<YxjHUX#<Hj<O3F4~UJItN^t$$w)BgGPMrzc-H10)8)Omxb~q*cz#B z>s05?Ki<sqr}wZvTc+M>;GFd#p~~DHC=1Yd)aHa4J<&4RW$V1s{Df-K=e5QGZd-K& z!)Au#K}fXg(OalnKt0V`pe8(~&N1zxj2>}KcqF9-i;zu9Mvv@;43Kt!q$<5Klm+<L zMSp)rBAIMXu<Pg^05+|^78{en^blY$=S*Q)7JI+>A1@5<qG_}soCgL~>6M`@z}+XK zDPSU;=F<N2nU^izm^&C<T((%Wpb#1y!-c{W!<3l`$5m;&24w*z!X@ASa4-%+fRW`q zndLZVKuTt%0jUNA7RSx6L6$(ws8V+Y%75YT#`|vi*<0IVFMo7>ueax8wII?9C=Y?L z2O8&;&W-SzV79lgrG!kIDy&CGqd<ktqd-p=M3e>SH-@4M34twJ0JMb7cU!qBe6kV_ zHC;#tu&@UD90*$cB3^^<4nIa9B!}k@@!8~I0DgPHl_W_roGSz11}@{y2_|Z%cz?L> zHTpuEc~R#VA;2A9M*Ej7;ZU-3oRK~+PVK>#DJ&7CvowL4bio!p<K4p(ya6!@h?E5o z#b^mTflUn;jF3yhJ^;QV3W00Q01_U>g(O#8cp23*ufpkg%)iP43_jlc(SHrx=v=$J zb?X&8S2;qh<q-rvR3-H1RjIoIWq$!yvWLHW<iIv6Nw5U@Q~@$cs8@l4D!nrF*`dAU z@Z|Xwt_cEIQgFtpMukE=hJaQ9a)w~KHAf@uLcP(sfd*(5pe951e>n!tm@Eg;t5_iI z^@MggXcM4fr6~%7t1hnSqFfQQ31A3;X(lNq3Y5KgOn}gXAuyC&8~w22;eQJ&FNmmO z<9#=cjy=4{I;+G#haTg(nU{Fm+D~a)up%dG--WOLTZKO!4tX1nj9lnhKh(w<D*>v` z3||DNew}%O1tZD3pM3;CPUy=Wh>ZaC&_(nhZy*)|2qOo;T~}|>&K(N@q&N$JiA7H8 z&ESuP00fdr;gUD?J4o>mpnnaYfCZs9cOV{LjF<xHLdeqlf6M(hvUB9)j=2YHN68V2 zhXA3VWj2^~COPERsRlkzXZ{N#_7AEh&RI(K2*{f1-H(R=hGd->WY^JsREr)sAtfu# zOk>F+)`~2r<XI9yf_}@!mm$APmXxXEA%JlB#t!)Vnm2i5b}O4UTz|)EdjN=XNG29f zQ1faWJRW^g^IiTyDZN&iIwk@b(3<2AnQM3|{~k}xe87O0#5I=!wT7&7esMJbJ7)GF zjc9m`m)=&Qj)wp;GW9nX_d;qFIE&1g4&UbxwGZQ*UTV{&c&X>%aIZg~{}xv!5na%s SNQM9a002ovPDHLkU;%=37y;b? diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow3.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow3.png index 9979f28e945787ba4ffab8d70010c70209c7f274..cabe60b557955cba753348a64b5bc1ffb7516eec 100644 GIT binary patch literal 2288 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 F`+wtyizWa7 delta 1205 zcmV;m1WNnx5y=UVB!3BTNLh0L01FcU01FcV0GgZ_000DgNkl<Zc%1E<+iM(E9LGOr zW;2<+Wlh^$h>&HWrgUS7B7#0x#fMTMv@iNrAN&)<7a>@oC4wOMN0_(xpirp@Emn{O zf?%jkXdW6i*f#g1+1q4xX2*xwT)b_hXE|pi`+1o&yXWlpw}0Q6Gkf^`&Wa!i(8=)C z3o|m~?@#{pn#}l^%-~iq|B(|m>H>~l47(HD#(S0>wk;2E!8gIofd5olU%LVQvEGCB zme|7$0{XF82^{F?1Yj%}fDRylo7Pg;t^syNT3@>X-}FsT@hj}scDViEE&vzvZ}X(| zgtO@vs0VebUVjC{G`X|zBj?ESR{jl=BGnRoq5BzdW$uF+fS=tJVnVQL?1gXm;o%)? zfLl8cA=7a<DDFdb2Y}$Ed;jlez_h*0x>qL?H}Qa;#`ReD>Hys0cQ|7KE|d&N)uECA z0R;Wh`q~ZXxlyABIJo5dum7#5dE~eUbce@DIeqO0*nbnf*L3O|I>n<v+W_4G=%#Ie z?f`VtHb8d(x;gO%NH2t5DZG18X8bSNuYZt@L53552eb{)9e{4y2IvkzH*EuS2cVl1 zZ-Ded$QfU|F7*MEXk7?N8!-QI5Edv*6L6t80Np;Pi=FJAI_!6zINS9qJyudyvZb^p zCunCFbANN(w3Zm`?4VqX@m_M2MQ0g+xym+=r~(k+v*Z^s%|@C#+mZ;L8EFIVocjEr zeRlqP>{yJ~hh8Nfq<F5Q3ji;ubN}f*ep_Ck9t3=P?oH0veX`OmLAo#^ejRBPH%|kQ zb;F8H!LMQ`W2A_Y_Ms#W)847TJZL|B`8%n?hJP%rnF2w7SiDTtDVUp3wZZamYAz12 z@t5xFjp+~tqz%Y_(I`+L2#XdbVUa^L8I?F}N)|R`kv1UlS>Lt#G1JHyU%PHk^io(W z^KEv5_aA-2Qhk;Dmx-q1R3N<&I_}Fy9i=Nl-><RZtg4he7NrK{%yeT9fCt1?O8+a$ zihrZ)ZkY;T2ti3SdqAp1*&Wbrgjf8<!Skvl{}aj#SZMtA4`)XHv=Gvb(r3VEqMMj7 zC`RY|>&XX{@N~%jBgzcu+JYf5$WCn+r+fkp*i7#+Ri2|NN@UGA_}X{p04k@zwn@?y zOfSxc=W$1wbTiZ$kbcZ^vWVk(6s!^$(SJxsDvZKn%*}B*e<?gIoiqb{KiuaFz-G7s zIs&LOz|4djoc9qc%A}j2eXsEF)eAH8A6Cd2eSG!&4XzZ%$@V63#@CMBL}>`Y?BJAC zT0I&Q@fm4FE+SF}Y&fg<e(m^<EhHia!~u`n5AKpP(@K@2u^a<RLSP8NG7bqBRDanJ zkvkw{KUc7yJ5WJn3`hkg!<iA_Fn6GW$QV#GAtnq)6WvO6BV&NB96@9ZaLOJ#wOxk9 zAYEJPbfaN_A0unVsfrR)<vBLfd&;DvVL&4{FugcS(iE_*E@>DI0}O+LRl@N+mXk$D zKUOELOsN@-+`#4hCC1zwU@4Q1hAsh?4Qv99{|5Vh^ZqR)8U`HA4b%v82a5Ou_vlqc T5^UWA00000NkvXXu0mjfkY6^b diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow4.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow4.png index 9fa452a61bf19f4082c9fbc34586322836957de0..45ff01e1907310286068d19e4163a6444639c5c9 100644 GIT binary patch literal 2251 zcmZ`*2~<;88h#-N7zYnZTu`E!-~wtE0tFL85-<^hK*Of7&;ua}5XnaJLV~gc5kw2h z0O}N>k#a1IbA&4GPzDYJ0U5284xluZAc~4owpbjNvdl|RM324a+;{K&-}n8?cmH?J zJIxOAwMA?~003ai@?(TRE8R40tf1#rVPYS&z!V|AK0wty$CuDywSdEl4GaW!L3<l$ znnq`6A@p1+^E;vdfK~RU2?L5tHUa=#Bn;z#oWKAwPb$W7`O+8xPA!(1Srj!H+KL4r z7p)eHBnq<H3u8u*p}onB$Dqv+Fu@DM31p-9OXUKz2abRvV5kT*8cmV&W62?m18?Zi z$qN$?f-*85uTrUSDmR=|9*1`&kw|y~5l<vyAp};DECIP{tVH3o=;W;*hCsoS3uT~C zDnXn4a$}@Q&<lex1zH-5dGdKnab!xl$Q*^w!wW<Lu|NVU@UA#l{Kt5pF!o)B62%)i zAYt&PHxP~RQ5s7I^4uY%m})4WH}ye@^2~7+ARoUBfF}|Nd$9x}mPo=c)d!_d;q%C# z5EKc_!Y$QfR?u4nzHc?*O%jNNCS}PYt|ZP2qsH<Dv0SAH#88zgp@c70c~bC;sQ1~6 z*7u!K@E?g!F;z`I5+YDYMM{(IR8JzsEX8}qcNefo;Czg*-1s4Z9WMo?P(R6qJeC9$ z$YpY<x6JY0hWm5GhrZs$4wnc)>RSgNn3u7Z-3{4W4yvT`gfR0xyc6+HA#dC)3c9R6 z7n|QKKGgkG1O>nJB~cOX&cl%aVA;oFc!#NBBN2}h9K(_GNwMj%p88vo!j0c1xVnQ^ zj;=a!hWYY~iL%$MsIc)UJ4^31>%?0b<L7>Ed{Jm)<&9u=YuM$@w&(qO!@8=z$<rH# zgOXG`zEZ^PtUq)+zxQ?D?s{tvMU9(cuw?A3eKn6%qm0XXL`P{czA>zQ&GEHc1Df(G z(v#Os-~LNUPnz$mYyTKjDe<t#y1{{j`YrZ1x)6Hl|3<ONlerer*MhSL>s|$qlv(cw z{QmZ%IK|i{czW&bmfnjr_g#;e>BlND7W>vVE8Pj5mIwam6364S`I@moV@o@O*Bf+- z+*b|Hg+(Jh5PEAy<iTHt52uvPZG_X$Qy#mFN6%ETEB;8<xB}fTc2u_H!gP8OuROe2 z^ptSxLAN*83XmX^_hn^=xA=a)qIXkyy9VP1*AzM3oO?c0`ya;bE6RxADUAcbSyS{R zeD8>dzf(B6h8zua&#s}V792{%sIvY6xD_44f>nQUnU;rzBc?SDp}@1zoZ3pEpnhSY z{aTJ_VP`eXEz|C^p@ziYTb@p@EV}baihOKE!?!c!3kD)$?A&Fw@kd{NYCb873imm2 zF)^sE?iDcHeDL|q-RVH$6@btacdw&&YqTxB$)yWEAOC<|q5g85FzMM=B%tez@Ov~F zVCkqO(G=;S0Y|K4y1TF2knCgk4P_6WoWYGQNZHPC4T-8qeLj14F3?o~5ZdFaI!d&4 zG(R|@xd^6n)YefIX<U>o-P2|WK%ec1jFP22nMd2|EJLk<#1vB^SxR@nfUbmV)SCVo zOw5ycANbFxMt@c=<aiF{mWgD2%BUI}YyIwAw#17*b0jRK&dEj=e!Si~!}8@ZY}5!d zcN<>PJ~jPmL9H(>i{#W`+aJ?G+Em;L1n5tt)Vh50aGUM*uW4D9k{bc78HJ^7hVJ!0 zjizcU_WP7hJd2vsreCShr6hA3M;`<W=k<?gbfH;YKLmf?7Lc?aXP7NXLR}C)?(7si zZZ6CU^@~V@%}z}4KHKgp1nyxQoJV0%VgtSV2K!&+(64__m<)*7q}WV@^GcD?HU(Sy z*)uhzoNk0>0y#y#e&Um!{T}PKm$oy{#_$HletAB=Tb6&w%~;eQm!2(Izq)6^LBpEa z)9I^a!3oBoRrWU*nyN>PO~2Xh`2i^<9bBCwzCLMZJEHq%Y7`lCiQse;Yb}P-R%XM> zgbQ{+pl-85&$Zg<hAeh;h}G=q&#N2O#cA9(<fHBs_Qa=Voc#Ptho_S(wrN%cp{862 zmT12$Z^LT0Xtpmk=lI`Yu(g^0K7Z&WKVyJdRFLX-`s%MR=SH9VNL)UrL6UP7@x3s* zx2@UV@qFZlVxAw*U}!CyLRH^q`5*liX7|^SjFY?DBPl=ajHwJ4Q7$Fh9NxS;W^(dU ztubPdx$9ifV8P+c?Z9sq-#xmJ1mK?a8H{s{TL<%V4;WtzxA-MH@Oiu#?WKnY5(ljJ zRPAXt^xeATtEJ=G3drMosT&^7&Hpzjd)#0QN>oO+=1XVRl@~mu6H!d7;M|bYW&TcE zIb+27XZG5;rZHF=+r2pAtaEYEa0ET`=ozC&$szj*>}blVqj`O}k&8mDMb_l3#md%K ldL3%Zh@n8i-<hVrc_&ItqnFo!LzSi<2^KSmQRNeT;{O-ri5LI? delta 1196 zcmV;d1XKIV5x@zMB!3BTNLh0L01FcU01FcV0GgZ_000DXNkl<Zc%1E<OKTff7>1vt zk;bE2R44HT7c2y+L*yE_lt8;^TDmYPm}JxJ(nWtl>84=XLV_2CLVrZPa~Cb7q!bdG zLb1UVYSP%mix`O}@!gJf8;@o*UCj7GFZSYybEa7DMn}>dy?>t`ow<D9Hxj<@qf^5- zugordT&EE0<C~XnbG<Y{zBi3Mv4%C-`}uKmV?r=DIQ^51e@tewZnfI*<3$R<hP{gC zHI;fs1V9pSx%c=11tY7}Ij+?07*&NJCIn?{QVyuX5RnxS=+(hX0CdNa$~+?jAmbYh z=SBcnq@m0=GJgOn2E;{-(Nwom-^c){;%f1Y3;?_4veVpUNDOjjOPy~t0C;ioMv{i8 zGF_WzGrOnEIvN0yHUKkAbEFLc+lDghXaI=CD4A7k*QK1UK=zqBYh_NysTzcFt$3Aj zrvRABtfK+Iw17<j?wHHqdCIJ#0YI!Aj+=myQ)ew(4}Z8^zA<)ET53<M-LfWoDXrD` zK0nEaPd{V1wMy~p6pyBUc~dF?NlCAOcI4zbrF0kYye1p=s!Gcfr4&HH$a3%T1HdJy z0qB>qdce9<qfSuAs|umY_CzUL0sA@re$F2iDFd*d;}7RX$oT3mbx)GgW58&to4ANk ziO%=ebAKVEEBF65DFbk33x>oXJI!6}+9?FEncZW$HcvxT$s0-VqEV1mw+n0=qz%E$ z(p>O7tO4kjIsn;cl+zV#*QI1uAr_51Okorz<4%EV#jC;7>S+Vuc|ooZz-Cwj&@XiW zj9ifG@9Ss{K%=DV0mC=1%*xEyT@R2x7cG1e9)HbS0*=D8y1)tFGp%53x_|?o5v&OB zg{-}_qyhBDdk@B2Vh_jn>BnNlw;|C5z_>pE3BV6)ehGrz!BSWH`Y%ZX_^xk~x>skn zxfAC4Fjjnz=hf$2$i70$Z_#k;#0-P`i$8ObJnt6YCM`13!M8)w$AIheAI$>%>Z}kK zf`8Rm*wqOOyYHI=+}(Ksxy0e5qz8>10Q}b;{=bg_Ggg^(w?!^#-~v4%&vmy2z+L`? z^CsW~=l)C!>M0O_-!E$~EolHfx100;2S54#>;Kr&IP$m$bO(=9vJuEh8o)`nvPE6d zxE|H04glQ&=vD`S?f`VF13-5Gx^?OSNPp)7vU;QR!I;ea-}2v{-v0}<LmdFR1JJDw z0NnxTRtJFY0Celr1JK^1wkOtZNqxW+QWrwn0W5s#2MrR#034_cK)1)aN*B9l54XES zlI>Q59y8rmf9(JOuyTw$1@4&340a``RpQ)8kFsQ!0hq6E^EAB4%Ex2bt6&&mnSVVm zXRRH;{j*;lj4v$wh!v0X*3e~=eukG4X8>^h7LQ&$<d5<qE#K#hi|=sW>T8R?_GC!> zJ`y%p&jFBkf{sziYhb10WQddXpehc_?niI4d-D1ZQjHbuD*y-@B#sT47A0d78Wxx? zcGJNIHvYExdK>>&s2xD@tFS?WASGy;7z9n0<8G%-9S$WMD}Mn_dR{s7?CW~~0000< KMNUMnLSTYodN{`b diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow5.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow5.png index bd46092739e6b3d5f5e7e3eb3806b5feaa456145..473bc3ffede9a71bbf8d6191edf3fdbb380bd412 100644 GIT binary patch literal 1872 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|_);T0(|mmy zw18|5AO?X;!IOa`XMsm#F#`j)FbFd;%$g&?z`&f784^(v;p=0SoS&<gn3A8As#lR) z0M=zwVFhI7rj{fsROII56<bx<DuGp40ofp7eI*63l9Fs&r3l{u1?T*tR0T6V13d#J zJ1zwU1)HLjG^-#NH>h?X&sHg;q@=(~U%$M(T(8_%FTW^V-_X+1Qs2Nx-^fT8s6w~6 zGOr}DLN~8i8Da>`9GBGM<f6=ilFa-(1(3OkN%^HEwn|DMi{Jp_&Xi=hJq4vjIbd5- zlJ!$_Qgc)DN{aOj^$hi~=_|=hL%1-n7#bYFfYArZ0JRxl)#h1Hl57GDDc1_1d!YUU zIy4z<Z*fVAK9T}`BLf2qT>~RsBTId_|A5Z7NlCUU$t=l91qU45Kj08_%qc+?1*r!G zK~5$pWUX=%^U`gVDs)p)(-KQ_N|fwM%QN#*^2^O_^dYKHbwfl^4Ykq7V!sW@*H)21 zsm1v@rJ!)PGdHpU2L*~CA_5>9BCu&d7DU$&kda@K4@^%*naQ4cC8<RPMZmNLwhv|< zZWZWeA?yy#%Pg^j8Gt5?qzfr-tQ?C<%JYk|L%{KX2t=GppvFJ~6e)c|5<fWbfvMk) z%SIoblkB)mG~UDj^Ifv1i(^Oy<J;M%vxNgij_uzw%VS~Ssu{f^OEuWS*S+$(yYpnw z38(F4${jljB6pQ2hL)GEZn}{Ak0Frd?h7xaDNZL(d9A&1!RgW-oAP7F+P?U;`F)<N zIJ5E4lY28QzyCS+a_;XRYHUxF>z@95{?t3ZVXlf@Y(-<Xy&S_?`xEx3l{U}VZM>o~ zK0W*zTkPY|`CnG0T+xmH_iR>Y`G?g%gU_iqq_ijA+9<d@a+Bn(Rm{C26Z(?P_i?9W zZPRWKS~rhz=}gumlQ{Qi?{_!ctYWak_feF!N}K-b^>;4a*?%e|*l$yNjO84qQU=u! zl~<F#9s77p?t&k~M?<Cw^+J;`%zMGTe!jWGeP4Htfb$H~7Mq#<%4du|?eSEQLFmPW zS)E1-TNWys>V!y6P_wMP;Io3^#F~b>7A}Un)rJ{uiH&`$v$v-=+bF!KvFpe!et#pK zLAJro{rObY5(X*R*cA*Frf!S-<}ph7Ro(1isJJNEzH8%ohFe_$xrvXrsxE$}^K?oQ z7sKP4pBr<^wro#*aaHJe%ICv6^~;S8NO#Q-Qx;)}eVtjpb^C=Gg3s?>60$2>ZR%IS z5G7RWV}1I*xcRxqY5%OO&Wd@R(mcSNa7a7*fBt6vz%{nVFQ4Ui*t$^gi`?ux+Z}Y9 zPkvJg$mixMtc$8oJHULw#Q44K9KU%}&jp-oJ^1Ilw(Z3WKMpc4csQ4TwhhC%dH-8h zGYaT7M0UQ&Vy-bMiI`qs?RfKdxe3D}RtM*QtA0&R)?<+TBeH$^hm6l{zol%hIx%i< z6OD;K|CG_=gu;oNzuCizUq}4i`)+mP;e8$K2P%Tf+YhO}`6JK8fBP`w`Q;1-(GM!q zjY>AHw|u%!D36h~q44A?=74!TALE+u9Qd_OjPXNnmWzImQGyHe>)X0jY%ly9s&8Ik ze9`}JD&v<~*Z+$~$O~Ly&8=np8?T_T;qgBE5C#*g69J4DUMM)TKG<>j_W93B40Rg4 zpG*VUdWuT^{&0&H++=!ene>Kr3OD6Sjue$L^yMY|U#xl4>h}MPQ)?8B6jm^6JZK10 z2rYc<amOT#y&(Tp-uJ_vbA%b(EHB*>68Niq!u?Fq`P)|*MYOsPOgZ6t?!Z;P6Xyhb zy4p%!>}TtBJCMQZV*DV3-NpHU%@sxqDaMOj5@#D0%NocoT&(&a;Rm;>_m=jl>BqK# OYBNt)KbLh*2~7Z@MaFml delta 771 zcmV+e1N{8Z4x0v$B!3BTNLh0L01FcU01FcV0GgZ_0008bNkl<Zc%1E<J!n%=7>1vl z`_r@qQ%WM8EOjXcIypJ1i!OC?=_0tblPE5QK!-rVMXGL{?ciW1Gr5R3=+a4O=~TK% zF-4lvmh}EQoJd7;tB~@2ft+W$+;Dlny!kli<ev99S(c&6!hhRGUsk6#;K=3k)tB7( z_85`_sxL|umn%#EdVXVa{e3U`UM~+{1gqD+nu|ile*7H>z)QvS3t~!n?1vEfFywMv zIEIn7sJwayyqj9Waa}%aeq?TV1tQs!)D2i|y*3vUog01(jEU*18_;leA#6hsLli>d zf?E>PS2v*g%zpuf|GNJ_Gr&clZh+Jm%|m|{P{tadU4S;$0PO;_=_>;~g>w4JfEc+y zLBHrL12pJ)A#{EB{+(W)@AdzDuMB(#h#R0W(4B{PH5vomdGy!Mp@20&y8vyh0ony< zBlbq9U2E36ez1n>LP*4bcCA_8T+AS8ftvsUgdPM%34i%>k$opvG;e!n!%6S~-Ca3A z(t!8?D1#p}y*I_}>P@mF5tGkDwgdc_H<z9;S9!(r<|k-HWLNHrmhdOCv%pD_(R36} z6YwJ_2cq)bkTW1I03l`XGNcZqFuye;CZET^uLI-^@KPW!8Gu3th2OFPipUOvBW;rb z7;+(Up??*M%6CK7fXHL+aD}JMTV@&@AEar}8|&=-!}i1u+dp;ym_>IQl<k1FSqe9t zqrqAV7ndtb)mpROHTkh7Q9(Xp9iW{9$iuD!v<uM28lYW(Hr4=XLAy0(x5oMlNBg{h zcD`WXJD{%&upucMl9I<7pk07A)&T7Sv{64Xl6;pN7?>k7n~T}mp()M|O;u~nx`YYp z2Fzw>S%F5dYpx?Xef2S5zVv{F@rO+BO_>{!*U1vdpxy!ZcIr^_p@PW{9Iiktr?1`t zlmn9$I897;;6!$_MBRY-tr<vx)G^rs!cLYzhM!k!y{jKOTz>!n002ovPDHLkV1gN3 BW<dY| diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow6.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow6.png index eabc47c84b865b76a0c4cadd8a6c043917b318bf..45ff01e1907310286068d19e4163a6444639c5c9 100644 GIT binary patch literal 2251 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 delta 1209 zcmV;q1V;PI5zPsZB!3BTNLh0L01FcU01FcV0GgZ_000DkNkl<Zc%1E<%}-oa7>A#8 zKZf~YhDbj~QfUZQ8ipFHn<knVHpCdxgmhVV{s+blo3^s4iHU!OEE{5Mx@cp%uqJG* zjT8bVh$8AB3>k)*VYr_z?m(w%hnPdoxdwilIWxKU{@!`!%zwS_`<{D67>4N7$o0|L z`HyxOFka@1b2quRa*IO2#+|HS-|o55X<tJaeD}(o`!fE9%+9(Mgn{%iVg+EcxlS{1 zlzPSlKniepu=t2UBdgTeQtH-0H6ai}@EZ>Ho<~lRZ%k%Dq}Tf|0+2IP$~<EOARF2Y z_Y?v6G2B(=8-E)BJ7$O_42CnRCV!;Z0I1<=@r@0DW<6lrtun-Udduq0&G7)>Cm1x+ zG(?S=`W&TPLz#6v0HmTXJiGLmgcV|K*~+Zr0l+X=?%HP0^;peR@p5bGtd%)+QY{MO z>c|-5&H#{5W*rXzi6l@4;BI0Cd|#P$JOGH&v#|@9d4F}*vi*R!e!Vt!SXt^$R;KLR zJ(Nl=cLr|p!P+OR1b<Ncyql-f53fiCASvk?a1=GUPAUBhGy{jt=DJGDL!}hJppoUl z;v>Kz>H+ANvYfNLw~LE~5Q3Tzs%#IHvKg>n<L}q}agj0r`!)V>Pmye>F4a9uO3wkq znH-id*nctgw&L5RB@xn9`~RDi0q8AT3~`=qw@R}fpWHzifKsl(Onr`qs4-}y!B<!C zbdoXv)|O4e3YlGc9DR^d*YxNlWdOX~8mpNqd#=ZF*ESgOsKXRSkzm{z;OfX&^tN`~ z0Qi1X>jO}3^#Jrs9RM@Wb63Ci9)Lzk_X9?*kAKd}?612YAYBa2e_W3Sfq-_H$u4l3 z(KwNe#t9E_z&E2A;cv^@OG_F+!8&^|-V#lmFr+|=Qn(9t7Xag7AJ{<H>iOA3e}|;H z*4K+94dBbd6b-*Y)vdH@eR!|<F27gTxsZRAAoOW?bxhOb>xFL^;yk0px5<cZ>EMq- z(tqcGi6<Y<0?az=SVFL7wi29HWA}Z#k9(CB=xJk}@?p0EK={Vo|N9*9ZR%$>ynuY# z1mJXw=Y|*M`}bIb(>CBl*Zyn(jWh@#EXdkROB%qLsem)U!B4*b`9HR7&;32%RP;J6 z8-bjp0UUNKTig|od{m=O0O$@tw@v`)4u3$mP5|f*K(~%P0O?vlR+m>N#$@*YzJKQU zJ}+<-Isu?N0NpwPpgREFIsu?N0NpzF0JJ|e<xW<nqz*8RR3fAu!2F~aEs&Td;9ynH z;l1QisHQ3RdI#IRCQ?-WU3$BY_VzmM002nl8FvP_n^>VQY2j3DCNh^;YW@PiLVvwV z85giH5iAEal18h^+An9V9l*ohPY=cyp5CX+wzx9%Ch0Is-i{ui^1^_H$~-@;E)s?z zH!i-zspQ!g9r8a(dod)QTxu<@_5v`t7cG}92Mv-LgDf`PzMv+aEiJd-X7|(OucQ`M zw9fz_S|D+nkPTQi|AgH%BpjM9G%|tBziqz3(LGnF9YFE3)&j|Mp#*det!-UVa$)5! Xp#Wu4&1DdR00000NkvXXu0mjfD0M=* diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow7.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow7.png index f75790a41878a5b5e9df599eb3004fc19dc29d2f..1a0ec49fd54851dee62e1f9f1608f84c51c738d6 100644 GIT binary patch literal 1281 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|_);T0(|mmy zw18|5AO?X;!IOa`XMsm#F#`j)FbFd;%$g&?z`&f784^(v;p=0SoS&<gn3A8As#lR) z0M=zwVFhI7rj{fsROII56<bx<DuGp40ofp7eI*63l9Fs&r3l{u1?T*tR0T6V13d#J zJ1zwU1)HLjG^-#NH>h?X&sHg;q@=(~U%$M(T(8_%FTW^V-_X+1Qs2Nx-^fT8s6w~6 zGOr}DLN~8i8Da>`9GBGM<f6=ilFa-(1(3OkN%^HEwn|DMi{Jp_&Xi=hJq4vjIbd5- zlJ!$_Qgc)DN{aOj^$hi~=_|=hL%1-n7#bYFfYArZ0JRxl)#h1Hl57GDDc1_1d!YUU zIy4z<Z*fVAK9T}`BLf2qT>~RsBTId_|A5Z7NlCUU$t=l91qU45Kj08_%qc+?1*r!G zK~5$pWUX=%^U`gVDs)p)(-KQ_N|fwM%QN#*^2^O_^dYKHbwfl^4Ykq7V!sW@*H)21 zsm1v@rJ!)PGdHpU2L*~CA_5>9BCu&d7DU$&kda@K4@^%*naQ4cC8<RPMZmNLwhv|< zZWZWeA?yy#%Pg^j8Gt5?qzfr-tQ?C<%JYk|L%{KX2t=GppvFJ~6e)c|5<fWbfvMk) z%SIoblkB)mG~UDjv#f}xi(^Oy<J(yqMGqN>Fbhj9Tae7ec5(yHA(j#!$KwLuQ=%VU zdTn3(GRETkZ?m7(HGS3_KkTx-?^3V$$T)-d0gvt^S(Sz*<!ozN*4%$&nzgZ^;r)Jg zfxGqE3I`Y#ae6qI+-rI$6c7+}<&od=^ZU*R|CeK&m9RUG>6Y}8f2s{?H`d8JIDE77 z=avuvQt<)|TW4J5S5Vl^FgK6E<Y3uemM!KUf4v!eH^k~QzU2-2FXSMcbKTpay7|g~ z2Btsq4&Gg_*aZZ>_P0wj^lhkVV3{J`@zxu}WT=yO_&)#dz5~h*(oh}ySuU{L{>sXd z@?TwqWkPLy0MN<_k`89~zb^Ma@JlvT)(g!3&u}(bpl*`8?paXr<LT<>vd$@?2>@s- Bo)G{5 literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkQ1G^= zi(^Q|oVT+#@-`cYuo@=um7Ng!;xlWW>L%vq2R#lSzZQk<c)h>YDkJCQ+V6G~_nfO; zeWw1}_rRI+wGaPqV9a2YV!ps+!nT0*-Hhn4!XFIb`xm|DmsjXTlF69%is?(`zEh9? zGeFg5@Ce*jsF}B3XuJ3P=c{}ER@Nb#l)>Y`eL<o@Y=I$zu0wLe54L;k74ilkJK!>z y`@}0OkOX!d{?4>d{6rE%RKqcbEes&rXX%$%%2g+2GNk~$$>8bg=d#Wzp$PyK^Ji!P diff --git a/Resources/Textures/Structures/Windows/uranium_window_diagonal.rsi/meta.json b/Resources/Textures/Structures/Windows/uranium_window_diagonal.rsi/meta.json index 453a3797223..8477687a8c7 100644 --- a/Resources/Textures/Structures/Windows/uranium_window_diagonal.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/uranium_window_diagonal.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "CC-BY-SA-3.0", - "copyright": "Made by brainfood1183 (github)", + "copyright": "Made by brainfood1183 (github), transparency tweaked by Ubaser.", "states": [ { "name": "state0" diff --git a/Resources/Textures/Structures/Windows/uranium_window_diagonal.rsi/state0.png b/Resources/Textures/Structures/Windows/uranium_window_diagonal.rsi/state0.png index 45b3c99189ff93d8928aae08e938c39e47de6c8c..43bfb93bac1f02c89e0b8cc06032494e86211854 100644 GIT binary patch delta 1015 zcmeCJTEa6yMTN0A$lZxy-8q?;3=9l>sS%!OzP=1vKsE;ugTSTW$rBaDnV2&sT1ijr z*5Qlr4N!2-FG^J~(=*UBnE17B@(M<a$;+6`lRXPcl1(ad3tTHoY?U%fN(!v>^)rED zdih1^`o$$F`bY}&jSLJdbPbGjjV$$*?6?$Qz$PWxswA@{ClyHyC}&fYl4j+YQ!?3> zLsGgTH^(X`F)!U#sX{j;H7&6;r$ouFxFoS8)o?ODtBg5N9g=PveJn=Wlw_u*Sw#k= z7U$=bmSpDV*_j(n-ovFlIg^WTawC_rc|b;fNq%l>Nl|99XI@EaQ9)5E&;pP`BO86N zW~?eE_j8F(zRzW7iR4u)$D)$*{G#j-u(u%Yv_TFF6a|x4aGTZVB`8m4U|_QLba4!c z;5<5guiv2nk>mZYtdATHNE}hWAS7-s6o2rdfyVj=DT|tq&9Lye;^G+-Q~J=+XQpfg z3vZ{QRbo@q_c=xV?M~UzQ9GFTPI>b0{NK6$3~4*g?0tLe%oEQ)shbVWxw!-ORQ~Y1 z)R`&m@JOA_p`LTiA?6i#>%WL~%HK5K{%Lzamb}k-hGYMj6P{)TWQD$X7F^gUT>Ub% z^E>02(<(>u7?S;$9E{qj{N_dd=PbdX=dFJuk{y!tx1ZT^EH7-or%bItw3N}eb&OBH zRqdKr`EEhNN4wdca?i^P`nAQFdSW>fwp{;wmQQ7x`;lZrhotEj<JNp_%j>Iuv_nbt zz>TZ9Yqz>D$Oz9&kNe_~w0-H@^CvbnY~1a#TV(2Q4~`v)(=Y0|KCO$Z<J_G7=5A`& zH=z)XTW7QSgU`Oc(;1_%ar%ApOCoO<ov7e^ecx&KfzG}2Hh;duU#8o4KA`ml|8B=h zzl-bmip3-~pKRmLVMvZYaVyq$Ye>M=bGr5C@3wsX?VwkXbbYJs8Vjk1w;7JfEjaNa zy2`e8r$f^5b#52eZD8l!QP}p!+aXE)<AjTLelqtfr5+sd(=83ST{xq_+T=v_b*CdY zn6G_Pcod(W@1M-+@n+Lfw}-{K3SH(`E9{aQgm>qyJSu&{rFHHR_QyX1#0<W5boK08 zTQlj$gXnm{b38u4@L+zT;_AlrI4=44M<0G2k(Qp=(oLU^PqTI4d-m<h%UA0@FEF?- zxm$S!@3D1$Q<;}k&i#1x{9lQ~H$u5iFL2wn|3GEHnZvt|JO^cCPgg&ebxsLQ0D@1h AA^-pY literal 15629 zcmeI3e{2)i9l#%j(KLv{G)-mGR6Iw?0`z=$w$Eo@9fu?a5>}HeBqC7<%lYm(xnkd4 zedojpYn3rd2d%bJRzf?3s<s-U<44i7RxBN%gZ^4IO=y}#n`#BRRbv{kX=}Ar8{Iqq z&WrODt(ErAJIOwO-}imL-}gS>_x<|*xjkK*HY~0EaxDO0X-9js8{J*br)Dwww#LT( zfo`{%?fn)2OTOTI7J#P?tpGqer}gyNeX)Ba#YlN%)rdn+Hf5sO0EC;frmSp-wkr+? zHNDAwV{*#v($psR79qyP%r-crwU4FY=CMsZ%Gh=#q`I3Uwc)IU9HgKvyRxaIZb{iD zch0Ybemldg+m)MQZ*Ow9I00RKu`XAek%lh86JQiBAiBhmhZjWAFW%+ya=gHDKGw%E zUZ3RWB)`{HxZIIi^edcJ6H<3{eIXo@n%qOSZAvUVGBV;B@p+8&Aj^kBA(r#9UN3`Y zFxIGU%UMRZ>heyCexlG)(wb>&hVF9w%5fuOH@V$Tpwd;?SIR5}(yanJM3K$PCd+#` zwwjTulx)mQI+<IVs<1E#Q&6`pWXD&vGlvY@u!f8|LYCBX21YrF#Y(ZOt~Zsc8rrhg z4I=~vq*X1go>3FB-Ow^JX$7tuMq8<?wtHJkl#?^VlcSk)?J%p&VdiM^X1Sw~&rlfc zRccE^**4NWhLMcqPgz$Hp{uPecdA^CTQprYMyyp~7B?y9yX*}{WgAAkoY%*20mkd^ z;RBLCDDnO^94~QPg_HbD%ty>nwZv%I2agW4w}%%c!7B-TrH_i4xDQl6s%*>i@=`gs z!jGy*2_v17?TD6=2O(?fgJHHjSTVD7s-!j}X{6DzV8j<@s|{DRiW*ABIo2(@0xgsb zt0GA#Rk^}#l?P{z78OY?l5ZQTp=hd94jS|)g8mRpFe0Z08J>rb2`NH=fkIG~Ly2H0 z;N-$7UgV;@F2`?fbY{fL?U2^%9D`U)>d-A)M%(F#M$mvqLo18>MVaG#Jd@zPkWo25 zWa2O`Fk-;#<3%Bm;QfKz*_dfwURl9)F*<TxedB?E2xWgfh&G;x&$;pZIxC#b3e=g_ zP&=2C6?2@usAw-jC?w0l1lo(B`WQ9nR~R`Ui;NoQP*A@R2*%~&UaGj66{=lx@;-{C z!O6{Lc>m1Na^7=|*Ob#1blOUjyVzGsof=IoUEy4Nl4Qkc*%8I5dZ>ok8KdQ8;bz+G zbj}Y!-hYMp+%ZOmpib%<c~`kvb33t&ggqjsVap(@r};Fryw{m#xcll=f*9p0GpT)w zL|F3hr%S{9s_K7AL-oe{|4V}dJRe;dlJ!BTM%dy3E)L8ubNPJEtgK?S&aT9;^PelB zDn=(t&Q%W|W@n9+Bj@M$In|iV<mQWB4qYtod>2eB)wpRt*|buPo0ctmb<K`=3(>IQ z3M=QqApftm89l?oNI(#LLYT#eaf>c33zL0O4gG6bPCxOXNI4r^QPr@2F2f2%!7!hy zil@z7Gt7^oXIb<Z&6b{{XZ6Wa7yB%Kly~%5dc}OvAQ%v`NO6(*U|Na`140%lE;1iX zOL1X9$Rfo>=7VV|E({1+q`1g@FfGM}0U?VN7nu*HrMNI4WRc<`^TD(f7Y2kZQe0#{ zn3m$gfRIIsi_8bpQd}4ivPf}}`CwX#3j;zHDK0V}OiOWLK*%D+MdpKPDJ~2MS){ng zd@wD=g#jUp6c?Efrlq(rAY_r^BJ;tt6c+}BEK*!#KA4u`!hn!Pii^w#(^6a*5VA;d zk@;X+iVFim7AY<=A52SeVL-?t#YN_WX(=uY2w5cJsx7~n3U%~4>Ii!8w2n7^hu&Fr zDec`c0LJP882>H+|M~>ouL6+a0QmC&dfoLP0CyOVf9uut04zA)5pC(ozH@#ew&|B^ zSL}Z8$>l%$$>R2!zb#V7b~c#b_l&Q(^xCe6uCyvwc7E=u>@8b<@$hqpp5DM^TF&;y zmYWxbTW{TclVi5F{oXiy<LdN*<V*J+df&ZkJTvXv>)U#4`ta#<_3dvjdS?IROU-CS z2loG<vFqr$(>EIp&|358w!sf>p8((p|DDq-ekg+1&or3N8{E{6KOR5(r%e3fuTMr^ zXc*}H(Utl?Tx9Qi<;^=54y=1++fDPscfbAgLpQ?b_0fACd11q4u($5)sgsSzM!){k z505SbukGladf9k4I`u5PsEb=yKJoFk>{l1QkrcOyJ1%d$_0rcSE<V`!&7%uDUVQ83 zhTiEjk2J0N3RwNCpFhz1uwZBnA4irCbk;WS86TQN;=XIiV@GP6HE>~g@}sLqUVZTK zUH=}v^T4COJ-Fz_m5oofE`IE7&*X2OIDYBiwb66FrLHq?KDX*i^=mHOz3kMzcP>eG ze#5)5<}dG{g}$|Y#|H~;&rBZg{7=o~-oHM(=8frV{U_eL`^LWKuYYvc<?G+OesXPM zlHYy8A3kQDx#hy}7whYmE}PmLU)k`?wbdKf?|xvyv!}WHefF{b!}lFMwZvZay65G! itCvmm{PPpAZ~Xqh@BjR5KXzVN?pU`edZKk;=YIi{B{d`f diff --git a/Resources/Textures/Structures/Windows/uranium_window_diagonal.rsi/state1.png b/Resources/Textures/Structures/Windows/uranium_window_diagonal.rsi/state1.png index 5286b1e17e622aec224cf58ea6b78db7afea79bd..423848b583a1dd48610d989437bed2a0f8fe383b 100644 GIT binary patch delta 982 zcmexT*~~LRMTN0A$lZxy-8q?;3=9l>sS%!OzP=1vKsE;ugTSTW$rBaDnV2&sT1ijr z*5Qlr4N!2-FG^J~(=*UBnE17B@(M<a$;+6`lRXPcl1(ad3tTHoY?U%fN(!v>^)rED zdih1^`o$$F`bY}&jSLJdbPbGjjV$$*?6?$Qz$PWxswA@{ClyHyC}&fYl4j+YQ!?3> zLsGgTH^(X`F)!U#sX{j;H7&6;r$ouFxFoS8)o?ODtBg5N9g=PveJn=Wlw_u*Sw#k= z7U$=bmSpDV*_j(n-ovFlIg^WTawC_rc|b;fNq%l>Nl|99XI@EaQ9)5E&;pP`BO86N zW~?eE_j8F(zRzW7iR4u)$D)$*{G#j-u(u%Yv_TFF6a|x4aGTZVB`8m4U|^E+ba4!c z;5<5QzaNvMz_H`bN4r@WlQ`@e<vud%eH2}zc_n;<(Zxe;N1PV5PP%a;>Z8K56}lBH z!a~kTu8mFB#rF(!%Afyz&UGXDMBV27Kg-e>ul<Nve!O|>$;m%{Urb1r6<qM+!>8^g z-mdHpkIdN))QHb{#=Ro2u%5p&ey4T0RDVLheiwJc#{Uc!Tjg#nF1}T%sCi-IZF#R6 zzJ$9|6~8k`RG(x?f8V(w`QO^#xi?;#oG<#?aO9p`<g)g=uj(dSJX6@7eB#D(wk^lm z)AoNdb3Ayhcx%wUyg3gf=Eratl&Lo4y*F<Y*0>seq?pqoX?kA%*EDZy_rjWbBh>>p zuIA1C8?LZ@b#nUMa}G)6OYfdP<HwlHU$9$b>SG@cmc;3K(-#%((TtzeBl&xaU*7hI zbMEAorq^6Kbj^1vQ|I2ll^K(6yH4a3{#NHbhe@`2|Fe0YHE!4z{_zXx5WB%^_54ZM z)){drO9C!flri+wu6|W!dNs%~boYW{IhFc1XODX|_T63m*7K-g#|cJ*ZxXJ@Zl~TT zUn1i1=El_%Z@H>t4*z8Rq|ewn_lWSWyZ$oIotQ6d4EFxJ`fbHbjwq9JH3^DIZw#}m zWeWeS2dawQc15RX9s7<Xr(^4U+``lMIIL3loOto*pL^4p65dFPO4>Wt_5~|!Jk6al zOKEYp)z7`b)^Q2t(OSD>w_Yh)ep1|HKkKD)l0C6&RrDuZb5;$q_m@7P|IAydmbG6w Q8k9>tUHx3vIVCg!0G$VuumAu6 literal 15604 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 diff --git a/Resources/Textures/Structures/Windows/window.rsi/full.png b/Resources/Textures/Structures/Windows/window.rsi/full.png index 5ed08bac4204e8a98d150333a24925dca8310739..a42b6b77f7f59c32ec34289626d566bc573944c8 100644 GIT binary patch literal 2279 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 delta 1205 zcmV;m1WNno5y%OUBYy;sNkl<Zc$~$TyKfv-6vlt&-a9ipyWZH2W1b0$f{hXovO)xe zCIv-=P!NisAwr@7iJqP!eg23v^dO2TB?Vp{0TPS6<ZM84<h&fO?e*?F@1>a8U9U|P zB)rPk%+*}Y`Mx=?d#(VSICZAMQ@{`3e{<ZNICZ9R=)=ze=zpZ?VAtj#3Y-HGToMD| z5CDu;I}Cav{dMXbp4R0z4lfJ==%zUUp{D^F2B4c|)T$wMB{*YHQADN%Eee+=fCJyd zIfnu)^o{o*BIGy#Gy@@404!M?Ll96+B3!LTRthlys8Xphd@#44s)DInfFK|RfAiiW zE-&0b5N2LE#D9y^6HJ6&LE?nw-4zyZF9C35_9Z;6IIwRVfH=)qZf){lWtI75P|nfw zwE<89d$naETjRT*BJw1`SzEZ-Ib5EjJOcy(+_}1hc1uGZ$OQtW$Z|{bQWNdK^&H_K zcMdUzclOt4EVXe~1_C5a0mIwJUgy@2i%3{SoF%AKN`LG5j(Bf}E_l#N5vn2-Nme|w zD8gxjBwc1-KEV8g+vKaQfdJq43s>ejaeISsaxYWuJ2bw%@I>POg5xLOW37IWZaXE< za+0+c^~nkD_XH$KLQ8x?-{bk|Nm>~+E?(f+XJ3828v+{V&z(K;(U&M=s8>URAY@~0 z9e|-)Qh!Q#)Q)z8a|gtj!Fo_6g@9fN{=WNYB;<W!9BZ3h0LI4m3<M-ej3>hM-f@)D zD5D>5<^Kp!iq&?64FcNRLy$Vh{4ZBVLfnJ3j_cPKktpuJ>kAO+)uk&M&<Now!LR@k z!2oZ)@fyy#k&p(yhf>1f!!twg3lEfkUk?K&>wgvUEZcPfB7#wxv1)~2OJf@<!_Y5} zh7lzpz;wMh6^&=M2`Ixp7Wg9}7TK0pqP7VDlFR~NvnTid-NKN7m3D{KPBO9(WHx7I zqx0_qe65*p{86lB=d`mM2tC8kzx`PZG-XKoOi7;ajMFY6ieu8;?ch)VLFw{$PrNxY z0e^lu!p+Pa+$kU_b502;8BHTf@*=@!U)VR4cnZL|oXo*k#TyBE4`cNzN=v^4`vQ8% zbBA@KJqMtes(UDALebbX8QM5``eQDhKX-OF2;cwYQ=02*JoD@X?M_14?SM7|0a#0n z@L;1uyA$Cg<?1HPp8jIU&{p3#Kx+*OY=7y<;4xKnD~fP|NAq5bx!LFNjV3O0qHM^D zy02Nde4X5R*eoXS4Ysq{H{vNpYAs?d#u%J)Oza71ZAAUcO1y=%7h4P99M*NwLBN$O z*8s@<U?3n9aAH_ULgvO|j?TTxWUV~2ov_?mXQLC-T>J}wqjNJTf$8xYrG4(NZGZCn z<!j~s5tP8bJv9`<!;MX}F<iUZ<Yv1Hp^(JcK!AwQN@5O8?O|d0Avfk1(KZ{()^290 zd4;H@Uz_M{-Euw2n5<OEtz-F8AvDJ!N+UQj>u6(`3ZNAaj(b!5K~ek7m369Ng{T`L zN(RG;EuNd{)->I^F0dM<h!O&$@h*W*W+`rWj#T@I%UOwG%n0rB(jxG5ujl^&ij&Wm TAhAVV00000NkvXXu0mjf3C%ei diff --git a/Resources/Textures/Structures/Windows/window.rsi/meta.json b/Resources/Textures/Structures/Windows/window.rsi/meta.json index 41b8be18b43..58cb4182e9e 100644 --- a/Resources/Textures/Structures/Windows/window.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/window.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi and modified by Swept", + "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi and modified by Swept, transparency tweaked by Ubaser.", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Structures/Windows/window.rsi/window0.png b/Resources/Textures/Structures/Windows/window.rsi/window0.png index 37bade4a4a71e531e2b23af81c6e620a18dc4185..1a4220a38e1d4a4dc504718593b1f4b10cd3851e 100644 GIT binary patch literal 2748 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 aJ~cPGclwcy_{~Y_pQAHjJ-*m}d-T6{qkWD5 delta 1616 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 O0000<MNUMnLSTZ+k@ge- diff --git a/Resources/Textures/Structures/Windows/window.rsi/window1.png b/Resources/Textures/Structures/Windows/window.rsi/window1.png index 4495aca459d59e327e8c391234a03bfcec9cc4da..3c1e2ce801aa9db36c5981a8603fa11ea9a1a463 100644 GIT binary patch literal 2217 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 delta 1164 zcmV;71ateT5uXW=BYy;DNkl<Zc%1E<O^6&t7>3`f?&+ECncZyG_=6%!Siv7$Au+)m zGz3u;6))n!AS*H_ZxYWrc#p^AB7q?05RV2$JxFqhKd_1`MnXamQ4`&`$!2!CXS%zp z<g4ykRu9Q)wbixkyqB(Fy5_5Xr@N}=`MzN=lv2v*1NOeK|9?x9{-;kKf6S!6Z_>F6 z-TmBL@hM9E&CDQZB2Ck>9q6`dG$82|DG>TTk~{}a9yc0A?FLK+!D>4%@2Cc2$drQL zEZ&=Hc|aKI_LAWGDANq>C^U{=y8+#O_ajMj^pYXI{^kdO0eg1MVsU91_uMfJDHW15 z1NS_9HUB-P0DtV>@i3ym)BTSc#;@Ig6KBrp<JH~(jJ1%1;pa2wA*BG$Ucz*zg-eT9 z(d<kBD8BKF-~NJ?eq2fX+6`Ee9%L@ywL754o1>fua-k2`av<C~ja(|IBnAs3GzJ6x z-lWHk<JWG$xf4hJbKlDq#IN0eopT2cn)E+yxC)rxLw_4wV*?x*L#-Mc;J_Ga)z|<B z#!#y^y#dBN;LQ)_pEl|L&PzK!HR;co*(GfHJ78>p17oOFV*?x*L#-Mc;J_Ga)uuPV zcq8=0^RE~sHcox`zENVsbR%Sp#J0cK)d>p1)|9kprwMp_5_}lLo7l2?Uf^-0LZH=b znue@Ym47fnN>EIDQYS4MOhOG~Y`=X9f5b&*XQdY-DbGz~h9t}3bI*nAH#eaB_{?hi z)ED2uZ~K^?eE<<>=tM<kM+$}Wzg@wF3qR@1&+c6h;g*TWG;}30o&#P!{E40e+9jh8 zWUh~CF3<?0VwP1Ba!sGLGw+e^lN);uK$)PR<bNe4En>#ur9(*1hbWVq|5Rp}QLa+P z23-E=m|242jc5Lk>sq&r4S4jmw+`N{MqvKfp|^L=9YFueBDzn_;^^mRv7Bc3_2c)d zzMg+A<BgDMfkfT1x)aQ$z@NQpvbt5tssUlc*EIkFMG=GxvSz?wI7B9tUbdL|>RXwt z8GjIX#m;YL=3ZMN*ClHPq@vgg-FN3Ur+$K39ZP2-0{0le+_9jRk;rwNV@uWy5WQvG z76n*|Q)G!dOQAIbWHZ9W->)H-3W4u|OE>NVdj|BcgLxhn7Jk&PMc@V)v1UL&2$3~g z$kQAt_rbXv6QQ+Ha0X3{_U?H^zgCXS1Aq1&0U=iFeEUM`0%#Xx%>b(IrUK`Yt_wFN zK_~t%aM!c1VoT7#>-!$WyPqwfz3o<F2sbUFq~8^$^#vO`F;WGKaLNE;1;h+&$_WFA z4G<$BRzS?arfM&i9!XOI`lpCcki((1xK2F+BUUhC2R7u40lZ`dSi=r%#dSlBYkyYI zv79n<#(=uEMa~#NjDT1HF#}=;w&a8X#0H2F5Gx>NK<vO;Y-^Ejpb;A&RzS>v*nurM zu@4|NkSZT}IzZO!ps(zGFHYP6BQ`*+fS3Wdm^X340Ad6Ea_uK(K<vPloG@T58z5#t e?7)fu`~@0ZclH7qB!B<_002ovP6b4+LSTZvlPPcj diff --git a/Resources/Textures/Structures/Windows/window.rsi/window2.png b/Resources/Textures/Structures/Windows/window.rsi/window2.png index 37bade4a4a71e531e2b23af81c6e620a18dc4185..1a4220a38e1d4a4dc504718593b1f4b10cd3851e 100644 GIT binary patch literal 2748 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 aJ~cPGclwcy_{~Y_pQAHjJ-*m}d-T6{qkWD5 delta 1616 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 O0000<MNUMnLSTZ+k@ge- diff --git a/Resources/Textures/Structures/Windows/window.rsi/window3.png b/Resources/Textures/Structures/Windows/window.rsi/window3.png index 4495aca459d59e327e8c391234a03bfcec9cc4da..3c1e2ce801aa9db36c5981a8603fa11ea9a1a463 100644 GIT binary patch literal 2217 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 delta 1164 zcmV;71ateT5uXW=BYy;DNkl<Zc%1E<O^6&t7>3`f?&+ECncZyG_=6%!Siv7$Au+)m zGz3u;6))n!AS*H_ZxYWrc#p^AB7q?05RV2$JxFqhKd_1`MnXamQ4`&`$!2!CXS%zp z<g4ykRu9Q)wbixkyqB(Fy5_5Xr@N}=`MzN=lv2v*1NOeK|9?x9{-;kKf6S!6Z_>F6 z-TmBL@hM9E&CDQZB2Ck>9q6`dG$82|DG>TTk~{}a9yc0A?FLK+!D>4%@2Cc2$drQL zEZ&=Hc|aKI_LAWGDANq>C^U{=y8+#O_ajMj^pYXI{^kdO0eg1MVsU91_uMfJDHW15 z1NS_9HUB-P0DtV>@i3ym)BTSc#;@Ig6KBrp<JH~(jJ1%1;pa2wA*BG$Ucz*zg-eT9 z(d<kBD8BKF-~NJ?eq2fX+6`Ee9%L@ywL754o1>fua-k2`av<C~ja(|IBnAs3GzJ6x z-lWHk<JWG$xf4hJbKlDq#IN0eopT2cn)E+yxC)rxLw_4wV*?x*L#-Mc;J_Ga)z|<B z#!#y^y#dBN;LQ)_pEl|L&PzK!HR;co*(GfHJ78>p17oOFV*?x*L#-Mc;J_Ga)uuPV zcq8=0^RE~sHcox`zENVsbR%Sp#J0cK)d>p1)|9kprwMp_5_}lLo7l2?Uf^-0LZH=b znue@Ym47fnN>EIDQYS4MOhOG~Y`=X9f5b&*XQdY-DbGz~h9t}3bI*nAH#eaB_{?hi z)ED2uZ~K^?eE<<>=tM<kM+$}Wzg@wF3qR@1&+c6h;g*TWG;}30o&#P!{E40e+9jh8 zWUh~CF3<?0VwP1Ba!sGLGw+e^lN);uK$)PR<bNe4En>#ur9(*1hbWVq|5Rp}QLa+P z23-E=m|242jc5Lk>sq&r4S4jmw+`N{MqvKfp|^L=9YFueBDzn_;^^mRv7Bc3_2c)d zzMg+A<BgDMfkfT1x)aQ$z@NQpvbt5tssUlc*EIkFMG=GxvSz?wI7B9tUbdL|>RXwt z8GjIX#m;YL=3ZMN*ClHPq@vgg-FN3Ur+$K39ZP2-0{0le+_9jRk;rwNV@uWy5WQvG z76n*|Q)G!dOQAIbWHZ9W->)H-3W4u|OE>NVdj|BcgLxhn7Jk&PMc@V)v1UL&2$3~g z$kQAt_rbXv6QQ+Ha0X3{_U?H^zgCXS1Aq1&0U=iFeEUM`0%#Xx%>b(IrUK`Yt_wFN zK_~t%aM!c1VoT7#>-!$WyPqwfz3o<F2sbUFq~8^$^#vO`F;WGKaLNE;1;h+&$_WFA z4G<$BRzS?arfM&i9!XOI`lpCcki((1xK2F+BUUhC2R7u40lZ`dSi=r%#dSlBYkyYI zv79n<#(=uEMa~#NjDT1HF#}=;w&a8X#0H2F5Gx>NK<vO;Y-^Ejpb;A&RzS>v*nurM zu@4|NkSZT}IzZO!ps(zGFHYP6BQ`*+fS3Wdm^X340Ad6Ea_uK(K<vPloG@T58z5#t e?7)fu`~@0ZclH7qB!B<_002ovP6b4+LSTZvlPPcj diff --git a/Resources/Textures/Structures/Windows/window.rsi/window4.png b/Resources/Textures/Structures/Windows/window.rsi/window4.png index 13aaa2107eb3d7196a96e5530e1996c6cbe0b650..4a47d0859aee6821af5b92eaf68dd4bc2f432e43 100644 GIT binary patch literal 2213 zcmZ`*2~-o;8om$&Ov_djst-#VP<zm1LWD?S5<uC4vWVab;4!2jgkUz3L4q4m;AlaX z3P?c~ORG?kO{^>$K(P8iWvL<xyg<>SMT#hL00nuIz(e%eIp@yY`_KP<-+#aR&pGp* zueZAadNmpVV8HNj@k5?Y>Y=ZT+%NDWRmek2=I6c@l(kv>g)9uYOh%ZO7qCI*`p8gU zzwb&%?#m?}fieKT$x#n2bIRA306+=&{!EzZwS&SD3-Rnw@wZ&OTqx0?sB#K26>?!V zMlKYHWE43KtI41sb9ETPVl*l6J{p$k<%`)SmU1y9JONL@($N?UhAIsWqxiYFEx?f# z4I2)_5()%GM@QqMH{r!n9%M@<lOX~TA`)>(22K_ug4uGMNM<!p@;@FIu8bq)OJKfO zgi-UdzZFNpG%Qvvw0O<e8OmAIkwi%a8kJBE#1(LbToEjTZ1J|xr*JSo?0tnI*@7L2 zF_8KV0wa79#*n}qJH#nhIa1HU{*XdB8eJJ23N1;1hy;QIjzGi_$<X5dkn*Xa916^b z1ze4Bi~G?y=q!LgjH>h176|xiXDI@<h)2W9aiQEWc9a0d(xdsJP;s;!6`D`_5Ii6K zkdq31LY}JLG$qiFD-#Q%)V9-!B!u(-qVEr29>M%1Vrleagm1VQ79$NM<#QM!m@Ab? zk>;9LT+sXHjE}kAiwB7KFrBzS@KJaPYRTbHoTYHISh~+&a}bLz{$s`h%e<pY`g6Yd zHSQzbPe)Us#V?7DF2AHq1VE>T;o|Hs*ZMo?Zjy!Tin*vs*r&aXFpB?<th2KTt<`L^ zG0DWag+V*98Op&}&nc$2VO1`^*0x#lQx^Ak`C7ZMXY`l5Rk^J|1)7r1L_RG!Sl2UI zSH0idf_JkN4lvk~$}YK5U#BYH8{PFnDGg!nl}{vZ&|}e49$h+KokB}6s;@~Lem5JQ zON%@AxTxR4UKzcY6||}=jH%pmQ3~A;T-G=nrZ;QXnRs<2m@@2G|7*ka=xUoIj1AyG z0m;R_38Xy6jusg!RcWV<s$0>YrP<&%QuDc}_H@^Tq6eVS#xX|1IxopM(X=wls6rPs z#yzJLKj1y-yZrM5aCWk{A-U8Z+{h!5dT18KIvzPjS9nZG8yf8S+E~68{`cpi(lV>% z6H49PAWi2_L0)Xl0hD*kww?&HYooo*!I6ezd(2IQhZ%jYd&&wkhl9-z`}F9}vdGRa z9B(JN7u>wI-s#LyQl&O<)UT+loh)CAcVYGChb#kk*XUWA+$z?2quRmc9DKW#!_H8W z+VZC5f8F3;9##F;l4bU?^W1ahi?ubg)8s=@FK0S;&L&-~ZqiQlm)w6Cq!m)up4-2! z6AfgChi2}~KGF+`3rC&ZZc$K6mmS#-w~uw}DxOT88t<)mL)8-kkCgUYR>4({-JKpV z@C%`v*Vf+GZ`O%c_y_fqedsS6b_oID77rmUsBOR%8iB#7I}_RCn<jad3WGueFr-;l zc~~m=#+S7^&^9+Fwhhii-kcXcvn+Nd`}wA)yzlAY9wr>6Ak$@s&4%8Mpemd%Yc(Q8 z)o0|<L0}j*fPPwbh{YW|KdaSRmUU|{x$>7-bcatO%g}hTaD<g@UT<_=c*=VG4U8R3 zFmJz&ck|<d;h&3FoUg@tnK&3?J(YLsYSU8c*=zT$Ye3CV{7Yi8N5t3w-GTd+&Cg!H zdHBq2RX4BfZQm>GySh2xL#6mA^x?vI2St+jU)==vAUw3@`pJUvqefog%E#HQU{B4= zc9O-x0~VXDdB@`%@%`}w>8gn>Ka^)iK2@zg7LnJJ5ZKFVm@|#79&s?-fT~#cFc~+{ z74c|&W2U9H4JWW@5}W&<<MH4RWq+x$)yV#;y1F8vX>0!GXQ@Qs82d_fHu9ED@S2i< z%H)jd>ydqf&Hld1A(CJua`;Z~fJ4>Bin}Wm+Sl_={8(g0FuCnNU|nS9i>WcSeVtzo z{)|f-CZ3^t{2lYz587uVn$lIV5nAc>$1aQ)1SxEeA<On)#ii{#y0oXhI5+sEr#UVe zC3*I1`V-QN=5rlnJ+BKUF<C8fBT>C$!>IzcX&TDDP~pjJD}Qhsow%`Oq|EOz7`sSz zYWkjIm@}2)<k@OTAtZHqe-#*E-<#IG;ipq^-hJ*ZF%FX_PogBl(+Q=SZ(p^hj)fhf zR>{9y`FlAjz5EL1UQNu~uXgV~;_i9$G%qVPq%7Y(Q`JALym~ScsFbgFk;a3}tn^Jf z*5vfp*E<iXj{DfgAIdX*VqWs9v9%~U`0Bm=P7qQ^u7lGT?mNxw`1id0pke0@T48*v tF5{Y&{+8l*a~Z4jLME!J2&*vDddY5FF2#3wp!yeq;p**Dwl(C~e*s<!e#HO) delta 1168 zcmV;B1aJGL5u*u^BYy;HNkl<Zc%1E9-)me&6#nM^+P%A*G>!EKN>NIr{=f(gEf&#I zP(f6D(HDyZB=irk?>_im3%(RYgdqA*d=W)KL8(ZsVk$;#DJ`Lh+G=XrWV83~&b@a= z&fMLyDUudvof+Bv0=WZwXV1Cc&Y79-oVg5|kWy-W!M^7XoPWIQ>6fu33h~PR2k`di zi>PnA6$|r+F*AGUwaxl6#_+}qyFSyg@9A{54PEk`BjB%Qf?O0vZ8||f$QTMpe0S<+ z#9?66wpnYNfYBdg$O;M3=@_%?R0vE>-J`CN?;Eq}3<2cGy?1U?ZC(hYcHIE;;Q0)V zv6@kLoFTy6Z-2fK&Jd8L3Dy&i+iDSt=BhEfP7vS;fhh2i2#KXXu0mAIg@F?U6j4Q8 z7Z=Zf`94Hz&6sT`_5q&ffy)3nZzHQT(30kU7bix5OcQn8xA$R8`U0M|M7w!7K|mBm zXm!{AmBNE4%;^Cq2w3ae_z0dM4$MWS_F#MUgHuo4NPm_t%pZPzX7&(TmzOd3<TT#- z@-$X?hTlGY7so$(?-3pQq#tykJpu-y$!)@D2$0q%%|EmRkk%*7Puf4!9J+&oF#_71 zj?(%RvrK>L85oQa(9`%m&F>0~5zy24r1@RS!Wi|1v_5Hm(*CZ%iYK<T|3ASP0i^Ls z>yzfsQh#@rLSqDw#wV>$nxC{k<p5lOIRaX1O6!y6M_&%WHjEL_iehAyDsrBKdx6RU z3>5*S@k#5G=0{%+z&6Z<Kv5{IPay42Ie?)efHXd7{T|i~7C$zF_NM&tXJ0z0)8BSJ zKs)ua{h8UaA?1eLKonKLIq$Y3)s|rhAyqu65r2{9xvqI_XcI8r7t47!K|)eDlM+Ft z{A{A?197a{y?KDbp<avaJar$m37Fe|A5xy9nRb-cr=Z%qdm76ttGN4)NeCg4@(iBu z<J*OwFacoCu7^;I%vFFlgEj%jPMlTOE6p|-t0D)(FDK4H&`FQe7ctqW;^OiZR2pM6 z6@RLGmwxya>#cGbe01mb|LD<f4%!5)2p=LZ;MW_FYFX*d19_R+zM2E^)=A_-s<ofR zHH7W9`fS{{zZudd;Ow!Z|GMub`giaNT^F>VO~8$gvbm1`^)b0YU_^ieK3K(w00(@q ziV*=0_+S-7Pk{CJ1?YT%PX8k>&J6GS0)K<RhyVwCu!<1@4)|adBLW=o!77HH0PBaP z=@6ynS7>d7tP`-~`8ib}p|m*_P3k;_S09JhN#KudxprUVd*DTZYGq?t{i~1P*Rt=# zad|3`Q0174CLt4$odi2>pTM6<Sy@_dCP=&Y@`NGHas=LB>I&8gn0svMTKo7nKYt>q z2bi9|A2pAmQ7bD;qL4WE`(>Oze?e)FJ-Z*oE!~%^-qN&hoq#vLC{K*kRgIvEsGVc! z>oeeafiSL>v$Pc5gH`22fB5}{f!TK=1gJnl#ZxMpB+P@)I}m<=qFY?O9@zj7Xj>=X i(kJs}fy4#?{0&-Fd}<yBC<y=n00{s|MNUMnLSTYw#XhG1 diff --git a/Resources/Textures/Structures/Windows/window.rsi/window5.png b/Resources/Textures/Structures/Windows/window.rsi/window5.png index df8dd36cf54e1eeb9e03f2c59d16196a74347996..2acdba184c970ed97837fb148382491aa2d88383 100644 GIT binary patch literal 1810 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|_);T0(|mmy zw18|5AO?X;!IOa`XMsm#F$06fED&ZCw^H21z`&f784^(v;p=0SoS&<gn3A8As#lR) z0M=zwVFhI7rj{fsROII56<bx<DuGp40ofp7eI*63l9Fs&r3l{u1?T*tR0T6V13d#J zJ1zwU1)HLjG^-#NH>h?X&sHg;q@=(~U%$M(T(8_%FTW^V-_X+1Qs2Nx-^fT8s6w~6 zGOr}DLN~8i8Da>`9GBGM<f6=ilFa-(1(3OkN%^HEwn|DMi{Jp_&Xi=hJq4vjIbd5- zlJ!$_Qgc)DN{aOj^$hi~=_|=hL%1-n7#bYFfYArZ0JRxl)#h1Hl57GDDc1_1d!YUU zIy4z<Z*fVAK9T}`BLf2qT>~RsBTId_|A5Z7NlCUU$t=l91qU45Kj08_%qc+?1*r!G zK~5$pWUX=%^U`gVDs)p)(-KQ_N|fx%GxJjN%S~+bA&O8nLqt){w9&_6y$#6IR*^xe z#rZj<pkTK%G6R~4A&Q6qh>i%XI*>)tbp&MOm*fKzR8eNKXI@EaQ9%(faY1Z^+J{>O zx>*RzL-R6A?2MoWpa~=CLW&$K$D)$*{G#j-a74gE5vK~MDUc9FN}rI#4-S1`>bK*v z(TC?GJFfMc_I3gDovNpcV@L(#+vv01mmNg@FU{P%vhisDJsqx1$6Z^Ss>F_T%bWYZ zI%@Cm<&nK&)rHm5ukNk5Y^&SFu3zWixb(P^Ms?&0d67-CeP>;%T)Fk#q_U%l_q|V? zQ9Ze2^7niBb!UB^{XN!Hu=8`m%ePg34U+1a&Gol@_>jt8XL8`zE2F6EdGUA8?)@De zb@y(a@$0(OYrcKew(nOM1viGSd@y@ItMs&8TP%H+n;l`~sQZ?1l=((qb1#d;F1_dv zDJxE8=^noEb+dY4;NJiH?jAgK+%%%u@!0xr>%3$d#OH1eEZJJA5XQ42>>+P^wfM(A z^={@1+(|Ccij$&vIgiR7UtwL7_c8KT<DVa&K5uq^d^z`cy(Hr{(;w%#3mJAW&28)d zp<!^=a9tHMgZQP&t;rG-uFre;>9j!u_sc!EG;Nu$Y+oL?^Xrzq3qG^leP1bi`^vU2 zJO&Ief>ykE%gfw#uX)!$X|@+i5nsM7O=q~>74ZAxUiIJ`MQL8P-lp6PB7ZiXHs2t* zN;UtsTWgVgV9TvJ&DXV0>oocqA7VOiW5@HWmoGPOJJoPvxk^y{4TcYgIX+LDy6(4p z$1jVkQ7)5Ic38W)zc|6haMazizgvA)#XmiV@4n&-?~8L)Crv9A+0exBd&*G@9>XoG z3%;AH&EuH+k#WKit<R=M6!ZC<U27E_5C2yZ`F2D{o<Vr_POHbv4p0ARe)pGRxWsfJ z=!l23LO1(+?|`TOJeeJ$7&LqxE=;fI+{EOtv;Go;j>W<Gi2-F&M=Yd2&WW<(5qem! zp?l!f^7WhU{Lh^`m2uzxnSQP2|7US|FFwG;u=GHB4NqrM!nC8V56?Fi?yGd*YdTwW zkYPfr*UVQu%%`s0j@&54ma;Htnbq6Q33?HieldL(zwq|pqV4898ddzSe&tIn=uWtJ zTbfN|FMH|V^hlxEPoHdAYP4>y$|Hsec?#K=MHmk=Hd!$6hQAdmb>G$a{^N_OQ#3xZ zgbUVl&Wp}@^yj0p!dV7UuXz)uHLUJ1PI!5h-D2J?6Hf8ze&(0Y2wt&sTBmf5;S$G$ zum%(6C9(><jOl{x2}=Y$g3dBzvU@l)ELDA=wV%OS@QUT*F5%Ol`pDDO&t;ucLK6UW CL9BWJ delta 778 zcmV+l1NHop4xk2*BYy(tNkl<Zc%1E<J4_T&6o&t~GrP+y5ESen6xymJZb5B~+W2U& zrlB`#VP|2l7Fya69}PCf#%F7^SQC^|Er=$X2uhS0b{==kxscGzEb1lajG6hGO?EST z&i!*=bI*SrSdwL#)gN5GdFRzve;hgpaQ;*Wx1KK{h!cEye18|6*-KY;dj7__&QqKC z%I4wSU}b0$a1<P+u(IBR2M16tTYPZ=!tbk4X#%&|M4$mZFu)q$V~v)>?6Jd8u8Y^* zcX+h;2~Lu*#updh+0y5&Oh$kd$UF~iZ8xv{4dMcP3sXc<gsjnkX}3<{dwgk$3-Iyb z?cDGGWChp_#D4|gYG@JStAI4M042yllv;oi<RD6^1h9TH`v*!T0N?&^o5~LX>t1(Z zp?kvS`Rg-BtlsAx$F2#L?*Z%rNKAD7U>87QqU%RJ1WJ&DD7643$U&6K3&3_F)SbU} zHTQ>^dsZ7ETUZ33#_vBnhmelEl?&wnP8_4zY;uI}3xDgG;9%P~pQElW!*Qg6EsG$I zF{~VO?!PBl!*u5mbeeL7FNAdxq{g3~n!tyikNYp*WB$ck&hWXg3ZOPN&{jYiMbNGX zfA1(~`23vMBIy(fGK>wjkZBEM8e_kf*}@l5`F#MN0LnGBfARp37l1qg#v33E>smy$ zfARp37k>b0f^h9;wFIErKY0KSw8H8wgY8DcEQ7=kZv;;km$$tEg0S|0^&m8JL0Gk| zFqOayUxwz6a->iQTMv--0Tfa114@vCD7643$U&4^0PcWwX^cDI4pe>!h~F2u_~4C| zzu>>WFCa~Ak`jnnNNti5pcbG6IfzmVP=Xvp5q~ey79EvU=E@BD2J$XVkuV%0hzqdK zcL9IXH?W#+jz}HFZ1KhCfa3?padK+Xcm}XlJRvUu7vepDJOZtuVE{hPOi!4~5qc3@ zeDNMY9s%+SkY|9r1LPs#L|g#l5y-Uh43Kw#JOnfmvH;*Wtb^T!`Dp6<00000NkvXX It^-0~g5Y*&oB#j- diff --git a/Resources/Textures/Structures/Windows/window.rsi/window6.png b/Resources/Textures/Structures/Windows/window.rsi/window6.png index 13aaa2107eb3d7196a96e5530e1996c6cbe0b650..4a47d0859aee6821af5b92eaf68dd4bc2f432e43 100644 GIT binary patch literal 2213 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 delta 1168 zcmV;B1aJGL5u*u^BYy;HNkl<Zc%1E9-)me&6#nM^+P%A*G>!EKN>NIr{=f(gEf&#I zP(f6D(HDyZB=irk?>_im3%(RYgdqA*d=W)KL8(ZsVk$;#DJ`Lh+G=XrWV83~&b@a= z&fMLyDUudvof+Bv0=WZwXV1Cc&Y79-oVg5|kWy-W!M^7XoPWIQ>6fu33h~PR2k`di zi>PnA6$|r+F*AGUwaxl6#_+}qyFSyg@9A{54PEk`BjB%Qf?O0vZ8||f$QTMpe0S<+ z#9?66wpnYNfYBdg$O;M3=@_%?R0vE>-J`CN?;Eq}3<2cGy?1U?ZC(hYcHIE;;Q0)V zv6@kLoFTy6Z-2fK&Jd8L3Dy&i+iDSt=BhEfP7vS;fhh2i2#KXXu0mAIg@F?U6j4Q8 z7Z=Zf`94Hz&6sT`_5q&ffy)3nZzHQT(30kU7bix5OcQn8xA$R8`U0M|M7w!7K|mBm zXm!{AmBNE4%;^Cq2w3ae_z0dM4$MWS_F#MUgHuo4NPm_t%pZPzX7&(TmzOd3<TT#- z@-$X?hTlGY7so$(?-3pQq#tykJpu-y$!)@D2$0q%%|EmRkk%*7Puf4!9J+&oF#_71 zj?(%RvrK>L85oQa(9`%m&F>0~5zy24r1@RS!Wi|1v_5Hm(*CZ%iYK<T|3ASP0i^Ls z>yzfsQh#@rLSqDw#wV>$nxC{k<p5lOIRaX1O6!y6M_&%WHjEL_iehAyDsrBKdx6RU z3>5*S@k#5G=0{%+z&6Z<Kv5{IPay42Ie?)efHXd7{T|i~7C$zF_NM&tXJ0z0)8BSJ zKs)ua{h8UaA?1eLKonKLIq$Y3)s|rhAyqu65r2{9xvqI_XcI8r7t47!K|)eDlM+Ft z{A{A?197a{y?KDbp<avaJar$m37Fe|A5xy9nRb-cr=Z%qdm76ttGN4)NeCg4@(iBu z<J*OwFacoCu7^;I%vFFlgEj%jPMlTOE6p|-t0D)(FDK4H&`FQe7ctqW;^OiZR2pM6 z6@RLGmwxya>#cGbe01mb|LD<f4%!5)2p=LZ;MW_FYFX*d19_R+zM2E^)=A_-s<ofR zHH7W9`fS{{zZudd;Ow!Z|GMub`giaNT^F>VO~8$gvbm1`^)b0YU_^ieK3K(w00(@q ziV*=0_+S-7Pk{CJ1?YT%PX8k>&J6GS0)K<RhyVwCu!<1@4)|adBLW=o!77HH0PBaP z=@6ynS7>d7tP`-~`8ib}p|m*_P3k;_S09JhN#KudxprUVd*DTZYGq?t{i~1P*Rt=# zad|3`Q0174CLt4$odi2>pTM6<Sy@_dCP=&Y@`NGHas=LB>I&8gn0svMTKo7nKYt>q z2bi9|A2pAmQ7bD;qL4WE`(>Oze?e)FJ-Z*oE!~%^-qN&hoq#vLC{K*kRgIvEsGVc! z>oeeafiSL>v$Pc5gH`22fB5}{f!TK=1gJnl#ZxMpB+P@)I}m<=qFY?O9@zj7Xj>=X i(kJs}fy4#?{0&-Fd}<yBC<y=n00{s|MNUMnLSTYw#XhG1 diff --git a/Resources/Textures/Structures/Windows/window.rsi/window7.png b/Resources/Textures/Structures/Windows/window.rsi/window7.png index 1a2e65fad78efe662cf60742e0d6afd2088f1e6b..8c0fc72e2ad70df3cfdf46ffd5895c5ddc662cbc 100644 GIT binary patch literal 1240 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|_);T0(|mmy zw18|5AO?X;!IOa`XMsm#F$06fED&ZCw^H21z`&f784^(v;p=0SoS&<gn3A8As#lR) z0M=zwVFhI7rj{fsROII56<bx<DuGp40ofp7eI*63l9Fs&r3l{u1?T*tR0T6V13d#J zJ1zwU1)HLjG^-#NH>h?X&sHg;q@=(~U%$M(T(8_%FTW^V-_X+1Qs2Nx-^fT8s6w~6 zGOr}DLN~8i8Da>`9GBGM<f6=ilFa-(1(3OkN%^HEwn|DMi{Jp_&Xi=hJq4vjIbd5- zlJ!$_Qgc)DN{aOj^$hi~=_|=hL%1-n7#bYFfYArZ0JRxl)#h1Hl57GDDc1_1d!YUU zIy4z<Z*fVAK9T}`BLf2qT>~RsBTId_|A5Z7NlCUU$t=l91qU45Kj08_%qc+?1*r!G zK~5$pWUX=%^U`gVDs)p)(-KQ_N|fx%GxJjN%S~+bA&O8nLqt){w9&_6y$#6IR*^xe z#rZj<pkTK%G6R~4A&Q6qh>i%XI*>)tbp&MOm*fKzR8eNKXI@EaQ9%(faY1Z^+J{>O zx>*RzL-R6A?2MoWpa~=CLW&$K$D)$*{G#j-a74gE5vK~MDUc9FN}rI#4-S1`>bK*v z(TC?GJFfMc_I3fY*K1D~$B+ufx3e61n*&5xytiI)-1~r8^=qJhX@DUMZ}E?r#|!4C z+<#Y~kXWr#*Z2Ott5VIk@AE(SGx;ZICmiZ}(#E6k);GZz53~1x`0iiT^PasIUBG+m zC(j0bkI(50xfjl*H`F@LvS-d{F0*5P!+q(Gq=WR9&yor86P}%CxV2#Jd4}IjCiQF= z*xuH#-4I{$)40Jb<GJyHeF|siGj4ITuCHeP@SpKY!`1)dckVTCE#SIM$Y}MMOL^*^ S$W`nDl`5XDelF{r5}E)5pO@4C literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Up!qLLn`LHogK(~$bf;>T&0m+ zq(MM{$;p9H?!cu21G~6c<%#A0WA&$-W=}7f=QJ&~Q?8)4uJ7cJ-#<Ti9eY3N;Qt0j z2EI@phJqDI3=N01KFidv3_r;3@m+F%0VjjZDhY-M0Y@1a+O=l$3%obd>n|^vw}0-p zi<NeFHFE#)8ZaDK*ag;aP}Owt`Ohg28QtbT4~}61YG7lq2r-1qL(F#;Wd@r0!#?2) z%Rl~xWQGQa0N9e>OeY`I9{^be)tM;zp1UGGK?m6&+hv)*nAU!itCLw)Z4C53gQu&X J%Q~loCIB+RX~6&h diff --git a/Resources/Textures/Structures/Windows/window_diagonal.rsi/meta.json b/Resources/Textures/Structures/Windows/window_diagonal.rsi/meta.json index 453a3797223..8477687a8c7 100644 --- a/Resources/Textures/Structures/Windows/window_diagonal.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/window_diagonal.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "CC-BY-SA-3.0", - "copyright": "Made by brainfood1183 (github)", + "copyright": "Made by brainfood1183 (github), transparency tweaked by Ubaser.", "states": [ { "name": "state0" diff --git a/Resources/Textures/Structures/Windows/window_diagonal.rsi/state0.png b/Resources/Textures/Structures/Windows/window_diagonal.rsi/state0.png index df5805957d6b0d0b891e10d01cb5a46e4c36e95a..428ed238a76e8821f17b447ded574bfe51041254 100644 GIT binary patch delta 743 zcmexTvyp3piV9<Kkh>GZx^prw85kJ&QX@Rme0>?TfNTyR27yb#lP4;QGcjjOw343K zt-}}L8=&BvUzDm~re~mMF!5{M<Q0q-lb11>Cwmr@B%4&^7PwZF*eYd|loVL$>t_PR z^zw_+^@~eV^pO<k8yOf_=o%R58d>Tq*>NerfK5uWRY_(^PAZZZP|l_(CC$n)r(`le zyQFkQZjMz>VqUtfQiX0xYFc7xPKlCTaY<rHs^R1b9Ac9jSlJ|iYLQH^(T5p3c?FOB z<cmDYlk0f+CQsv0HV??iFUikMEh)-O_RK3uEh;EV1)7wZpJ!)eqhFGlmS%-j#pL@u zZk9;?v2rXbDbFv;4gtFz;usrb52GlUyqDLkJ}*IeIs*fvho_5UNCfB6>1Vkd9Yv1o zZ~VY<>e8Vgvo}*zydzJzE6r;#|H!lN6!!;?HEX7%RNi-7_~QLyzsG#<&dl7IUMPNf z?fv|7Gyh+)@M{QN@s01{f*(J<%Ek4som;5D!r(vUmHCFX+yNEZ)3<0V99sT*u`Q$i zj;(?x9=t26FEXxUd-7r9<V=2TH&zWB(cLcJmcJ0qEuZec<D%dn=Jtk(-5rMnP1nz5 z?n{zy<Z!<du;p!k>-F}~1Nt(2IZRpwW{ja0-3+a#7qLxPv&C%zcl(qg9?d`DS5kH# z-xb8}@?-sqja&tXYRem>-+3Qk`IFDc72Y}Pnxp||`;F@oL1{buu1v8~I8?ewP56eN z8~6F@17bFTd3A9vW)J1lA4uEWmHd*r_RHqJZOPA9xJ|S1(U@bMmG3BMcYlwZTE)^w r3p?a<4;|zV-m!8;<y)D8a?|2>Z<T$L__TV?f|9MLtDnm{r-UW|D5W2Y literal 15988 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 DaE5Ko diff --git a/Resources/Textures/Structures/Windows/window_diagonal.rsi/state1.png b/Resources/Textures/Structures/Windows/window_diagonal.rsi/state1.png index 83737b8cefe39b1948b33192f9c553f14e70be24..9861698bb2a4b45e61b425bc1b672df8f9934c02 100644 GIT binary patch delta 699 zcmcat)5<kLMTN0A$lZxy-8q?;3=9l>sS%!OzP=1vKsE;ugTSTW$rBaDnV2&sT1ijr z*5Qlr4N!2-FG^J~(=*UBnE17B@(M<a$;+6`lRXPcl1(ad3tTHoY?U%fN(!v>^)rED zdih1^`o$$F`bY}&jSLJdbPbGjjV$$*?6?$Qz$PWxswA@{ClyHyC}&fYl4j+YQ!<&K zT~fLtH^(X`F)!U#sX{j;H7&6;r$ouFxFoS8)o}6z4zbA%tZWiMwMZt|=);Viyn;u5 z@<kry$#pz@lc(`0n+Ig%m*nTBmK0?sd*+p-78Mkw0!_-y&$BbK(J#qNOS8hNV)A_+ zH%lb{SUDDzl;;;^hk)G<af}VJhfx$v-pgxNpO>IKoq>T-#?!?yB!ctkbwjR01|n<^ zqK+I?e(~nPt7l7^AE;S$CLPqSP~Y2ZUQi@#Wl_z_DmXEo!{+j`+)2}?n`?A@_*?l> ze};-+`mQ^%(HsAqRNDRJ`E36w3|z+_9%T-wv6ef*cH!gUpK9U@c*J)z3D?=n9?oCD zC7=4c^g@06ghz+p?VfCZOMi{5I=kE#u2~N_COm4b*63R`b#BbeH{lB&uaIh67yGax zoj0L-Gh4yIn@l?%=`d>Kt&&o>Tw%++&%(*_`h-WNp~iFN=3D1F9Dlv)m{f!C_InKG zd7=s|_beEW#;$tym8a#1;F?WsBHvfey3AH`XL;5&#w7(T+E#xAJRh|(T>25u&{Z7H vJ0Y_!yrF*O-kYyF^*tYb2<mDF*;2!(?5uvvb-&*~P*U`C^>bP0l+XkKxLOJq literal 15966 zcmeI3Z)hAv6u>tIYa3}1L|del^@><&HoJSbdw<r;C26j0BE2*uu}$iSW^Z@yvgYpg zy1U6;g3{O`*kU0l#41&)1^YpeTB@zqKS3=j0b8U(Eus}ISV2mmekh1>_V)hlP432M z`$1$DlDju=-g`5@_x8>1huhcNvw3;beN7ZaE${A%_Q6lu{#&{P{x>HlufvaJ*{&gz zqVBxg{%fFKKD3IW!WXoGL2EF!MN;&1i>&H#(2`GQ;cTdD%V%X}6j*c|B(+Sd=j!Q? zJ+!8_dbW!(E|%>CBU;y_0s1F<29(KBC8T=VB2D4E1RbP-CDZwIDq~9dR!_mN1i#zE ztcNa4u|``x9d<x^FxE?V>IR_27C)nK{s0{aweVsfAOxCeFUN~4=VN^w<Ml}bCkbA< zczGgC@LSkW6H;GvQ!yNrT0J9{m6cdFm&>)}d@Z_>Wcg4i#ByHN>t)~!#+=Ala-PYU zYaJ&gKT%*RhL*K7Jww}m<+wg(wR${upz>ARS2|k`lrf9!AVoGWXIZ|5V`~|yO4%km zW~2&BQxz7ZKpJE$6WZ}L?Xn}frJEyqosea9-M}y>u~<2F&Gn|!HA9=$#&L+Ch_t4q zIWUn0Y#%W7F+%|x$Kh7i*4n+LB`V3O@?>l3t{vpHI%c-UF)NgUlc6x&tJG-#+0u;x zT~9@vD(fvFq&qtcRYkAcu4Pm`XFeQeQIkr(E8aj<wm`(od3_A$XS~7y@0Wz2#0%>= zUg9{H6K5vkBc`ibVxr=MhXu_KczMa^mBf(ShifM41KvNXY{`rA;-2gBqbgEDH`1~d z(b94fu-Qy9%vJ_nGs{&ab?PbIfXf0AUzn{mT+=G5D`R$9cVrY`!ep4PB*9b_ZrlxW zvU;?nNNEwLZK%4UsZu3qfD8FmKgTfvP7oNL2Y?AFqMrd`P?bZ8U<m5MtbOxB7nOAt zYoj<`+qEnt;t5U#w(Iyma_t1H-i(_R4uxG|v6$4IF)bOA>W)U>K#K-9ErbGGkn;<S zkWhV$tO@}p7>D}}@Jdkdt3FXogbHO>ZC=@Q(RC?0bbT`$ch>20wjj_}LxU%UoN~>v z_oBkR03ZS(;RB2ef+EAmVeVw!%P|R2^oA7P58?rTX)iV0EC|)5*(Ehmo#8@B^@Cm2 zqm_~>^z^K3n85B>t)5cLDjxz)l@x2G(D@`;u}_1DVmB0^hS{po%CgFqVP}H2FrAA- zu)w^2jNAyw;2M(SsxYg*6H`xEIoSXmNqDO+rdK*%tIbgNe|H1kL?TRi{N~aSSK&?N zl|_b=#ULZvcU4GL6<CQXp9uK;zEDsurP-B5bc=RXxd0c=g<?<VBvF8mDy5$8npNLP zHP1yHS&K<SWsS;+oJj&T!j^Vc8bDX{U(Vd(`k@2n-(?OtjsFLkbMjf;6H9$|VGj-4 z4`LGRzpxj`g}%p!*#%>jnsMe2+I=)NR+t~~a`0k#`+w2Ytwv3U@TP7xYFe>;ETdTw zZ!sD&?6R_-7M(|#e)wVoB7RZyiD4EUMlE`^JV*^jHTWoF+9!bzMk?5#ikgN)^$cB# zqM?&2*DFZj7;{G93l4m@V#_aA3r@K5`Ex73RCaVLy&}Fy5CjNbB)IT=5G}!l0Ktm{ z7oHEICAbhEc#+`3^Fg!(7Xkz?5?pvbh?d|&fZ#=f3(p795?lxnyhw22`5;<?3ju-` z2`)SzL`!fXK=2~Lh3A842`&T(UL?5id=M?cg#f{e1Q(tUq9wQxAb64B!t+721Q!AX zFA`jMK8Tj!LV(~!f(y?F(Gpw;5WGlm;rSq1f(rqH7YQyrA4E%VAwcjV!G-68XbCO^ z2wo((@O%(0!G!?9iv$;*527Ww5FmJw;KK7kv;-Fd1TSK7HC2AD3^MRH$~pLB<j3FK zdI|oJnO3^`ViYy`AVp2>rKlV8@bd~qjd2w9>o7%02PtZ${`}4}n<%P*>W+2{<S)km zn4fR^w7uc;+0WK*X$0@>-TmE=cJkS)_V?#DUvFCiuQ#4P5x%(LnU7YqpM3JlzDKT` zlz;BZy|<rg-hKS3WxuVNI%^y`^~n>PcFZ(>F*BO|GjaObE5ENiepxthTfF(`OO5CD zu6gmYu#0*vxOw|oVS1+jn}(kUd&E1YM?;P9I`i%Hh4Vcx+;#Z8v43^@quY+W-?(m{ zxqnT2Y_5BpdWU)F%Z3xj4*inqI&i*ceCfHbjXf(4Z`-zZuHnRf^Yzv3?A+VZ)T=W} zaO(S+BWmZ4qvIbuaB0=SJfNGC!|;maul;zBy`y8pKg?hHY3Jn7SF^LT)GF%T55qUM T+&>K<H>!JMPxP$~!+ZV$;QnZ1 From c978eefedbd0a993e9358ee15687761feb457130 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Wed, 13 Nov 2024 12:31:47 +0000 Subject: [PATCH 073/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index f54421b87ad..3365a943ee6 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: PoorMansDreams - changes: - - message: Throngler Plushie looks like a plushie - type: Tweak - id: 7106 - time: '2024-08-13T20:32:53.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30969 - author: IProduceWidgets changes: - message: shuttle events have been separated from other midround events and can @@ -3949,3 +3942,10 @@ id: 7605 time: '2024-11-13T02:59:47.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33223 +- author: Ubaser + changes: + - message: Window sprites are now slightly more transparent. + type: Tweak + id: 7606 + time: '2024-11-13T12:30:40.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33282 From 51d2b51ad09f3b361d80f22c3c2c23d6a5048517 Mon Sep 17 00:00:00 2001 From: dffdff2423 <dffdff2423@gmail.com> Date: Wed, 13 Nov 2024 18:27:31 -0500 Subject: [PATCH 074/187] tag:with toolshed command (#31751) --- Content.Server/Administration/Toolshed/TagCommand.cs | 10 ++++++++++ Resources/Locale/en-US/commands/toolshed-commands.ftl | 4 +++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Content.Server/Administration/Toolshed/TagCommand.cs b/Content.Server/Administration/Toolshed/TagCommand.cs index e1cf53e1b1a..4c6f790e493 100644 --- a/Content.Server/Administration/Toolshed/TagCommand.cs +++ b/Content.Server/Administration/Toolshed/TagCommand.cs @@ -25,6 +25,16 @@ public IEnumerable<ProtoId<TagPrototype>> List([PipedArgument] IEnumerable<Entit }); } + [CommandImplementation("with")] + public IEnumerable<EntityUid> With( + [CommandInvocationContext] IInvocationContext ctx, + [PipedArgument] IEnumerable<EntityUid> entities, + [CommandArgument] ValueRef<string, Prototype<TagPrototype>> tag) + { + _tag ??= GetSys<TagSystem>(); + return entities.Where(e => _tag.HasTag(e, tag.Evaluate(ctx)!)); + } + [CommandImplementation("add")] public EntityUid Add( [CommandInvocationContext] IInvocationContext ctx, diff --git a/Resources/Locale/en-US/commands/toolshed-commands.ftl b/Resources/Locale/en-US/commands/toolshed-commands.ftl index e2536f6781b..c53c825eb3e 100644 --- a/Resources/Locale/en-US/commands/toolshed-commands.ftl +++ b/Resources/Locale/en-US/commands/toolshed-commands.ftl @@ -1,4 +1,4 @@ -command-description-visualize = +command-description-visualize = Takes the input list of entities and puts them into a UI window for easy browsing. command-description-runverbas = Runs a verb over the input entities with the given user. @@ -58,6 +58,8 @@ command-description-rejuvenate = Rejuvenates the given entities, restoring them to full health, clearing status effects, etc. command-description-tag-list = Lists tags on the given entities. +command-description-tag-with = + Returns only the entities with the given tag from the piped list of entities. command-description-tag-add = Adds a tag to the given entities. command-description-tag-rm = From 9643598c704dc99ae18312b2bac44960c75d7e7c Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Wed, 13 Nov 2024 23:28:39 +0000 Subject: [PATCH 075/187] Automatic changelog update --- Resources/Changelog/Admin.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index 680915d3821..bf1cbddaa18 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -597,5 +597,13 @@ Entries: id: 74 time: '2024-11-12T21:03:13.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/30659 +- author: Aquif + changes: + - message: tag:with toolshed command. It takes in a list of entities via pipe and + returns the entities from the list with the given tag. + type: Add + id: 75 + time: '2024-11-13T23:27:31.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/31751 Name: Admin Order: 1 From fa3a04a5273c77bba4f3545dfedebaa61bd2f5aa Mon Sep 17 00:00:00 2001 From: keronshb <54602815+keronshb@users.noreply.github.com> Date: Wed, 13 Nov 2024 18:36:37 -0500 Subject: [PATCH 076/187] Ethereal Jaunt Spell for Wizard & Jaunt ECS (#33201) * Act * Adds Jaunt ECS and related prototypes * Adds jaunt sounds * Adds enter and exit sound support to polymorphs * Updates jaunt description * Adds jaunt action sprite and changes jaunt polymorph to use it * Adds Jaunt and upgrade to the wizard grimoire * Makes base mob jaunt parent off of incorporeal and basemob, adds blue ghost sprite for ethereal jaunt * Update Resources/Locale/en-US/store/spellbook-catalog.ftl Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Update Resources/Prototypes/Entities/Mobs/Player/jaunt_mobs.yml Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Update Resources/Prototypes/Entities/Mobs/Player/jaunt_mobs.yml Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Update Resources/Prototypes/Entities/Mobs/Player/jaunt_mobs.yml Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Update Content.Shared/Polymorph/PolymorphPrototype.cs Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Update Content.Shared/Polymorph/PolymorphPrototype.cs Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * removes meta changes * removes other meta changes * adds context menu and a description to basemobjaunt * comments for jaunt component and adds on component shutdown method * Update Content.Shared/Jaunt/JauntComponent.cs * Update Content.Shared/Jaunt/JauntComponent.cs * Update Content.Shared/Jaunt/JauntComponent.cs * Update Resources/Prototypes/Catalog/spellbook_catalog.yml --------- Co-authored-by: lzk <124214523+lzk228@users.noreply.github.com> Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- .../Polymorph/Systems/PolymorphSystem.cs | 6 +++ Content.Shared/Jaunt/JauntComponent.cs | 26 +++++++++ Content.Shared/Jaunt/JauntSystem.cs | 26 +++++++++ .../Polymorph/PolymorphPrototype.cs | 13 +++++ Resources/Audio/Magic/attributions.yml | 4 +- Resources/Audio/Magic/ethereal_enter.ogg | Bin 0 -> 36619 bytes Resources/Audio/Magic/ethereal_exit.ogg | Bin 0 -> 42980 bytes .../Locale/en-US/store/spellbook-catalog.ftl | 6 +++ Resources/Prototypes/Actions/polymorph.yml | 50 ++++++++++++++++++ .../Prototypes/Catalog/spellbook_catalog.yml | 33 ++++++++++++ .../Entities/Mobs/Player/jaunt_mobs.yml | 40 ++++++++++++++ Resources/Prototypes/Polymorphs/polymorph.yml | 16 ++++++ .../Objects/Magic/magicactions.rsi/jaunt.png | Bin 0 -> 431 bytes .../Objects/Magic/magicactions.rsi/meta.json | 5 +- 14 files changed, 223 insertions(+), 2 deletions(-) create mode 100644 Content.Shared/Jaunt/JauntComponent.cs create mode 100644 Content.Shared/Jaunt/JauntSystem.cs create mode 100644 Resources/Audio/Magic/ethereal_enter.ogg create mode 100644 Resources/Audio/Magic/ethereal_exit.ogg create mode 100644 Resources/Prototypes/Entities/Mobs/Player/jaunt_mobs.yml create mode 100644 Resources/Textures/Objects/Magic/magicactions.rsi/jaunt.png diff --git a/Content.Server/Polymorph/Systems/PolymorphSystem.cs b/Content.Server/Polymorph/Systems/PolymorphSystem.cs index daff200982d..c9a71c53584 100644 --- a/Content.Server/Polymorph/Systems/PolymorphSystem.cs +++ b/Content.Server/Polymorph/Systems/PolymorphSystem.cs @@ -199,6 +199,9 @@ private void OnDestruction(Entity<PolymorphedEntityComponent> ent, ref Destructi var targetTransformComp = Transform(uid); + if (configuration.PolymorphSound != null) + _audio.PlayPvs(configuration.PolymorphSound, targetTransformComp.Coordinates); + var child = Spawn(configuration.Entity, _transform.GetMapCoordinates(uid, targetTransformComp), rotation: _transform.GetWorldRotation(uid)); MakeSentientCommand.MakeSentient(child, EntityManager); @@ -288,6 +291,9 @@ private void OnDestruction(Entity<PolymorphedEntityComponent> ent, ref Destructi var uidXform = Transform(uid); var parentXform = Transform(parent); + if (component.Configuration.ExitPolymorphSound != null) + _audio.PlayPvs(component.Configuration.ExitPolymorphSound, uidXform.Coordinates); + _transform.SetParent(parent, parentXform, uidXform.ParentUid); _transform.SetCoordinates(parent, parentXform, uidXform.Coordinates, uidXform.LocalRotation); diff --git a/Content.Shared/Jaunt/JauntComponent.cs b/Content.Shared/Jaunt/JauntComponent.cs new file mode 100644 index 00000000000..6d37ab4b322 --- /dev/null +++ b/Content.Shared/Jaunt/JauntComponent.cs @@ -0,0 +1,26 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Jaunt; + +/// <summary> +/// Used to control various aspects of a Jaunt. +/// Can be used in place of giving a jaunt-action directly. +/// </summary> +[RegisterComponent, NetworkedComponent] +public sealed partial class JauntComponent : Component +{ + /// <summary> + /// Which Jaunt Action the component should grant. + /// </summary> + [DataField] + public EntProtoId JauntAction = "ActionPolymorphJaunt"; + + /// <summary> + /// The jaunt action itself. + /// </summary> + public EntityUid? Action; + + // TODO: Enter & Exit Times and Whitelist when Actions are reworked and can support it + // TODO: Cooldown pausing when Actions can support it +} diff --git a/Content.Shared/Jaunt/JauntSystem.cs b/Content.Shared/Jaunt/JauntSystem.cs new file mode 100644 index 00000000000..d9263d000e4 --- /dev/null +++ b/Content.Shared/Jaunt/JauntSystem.cs @@ -0,0 +1,26 @@ +using Content.Shared.Actions; + +namespace Content.Shared.Jaunt; +public sealed class JauntSystem : EntitySystem +{ + [Dependency] private readonly SharedActionsSystem _actions = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent<JauntComponent, MapInitEvent>(OnInit); + SubscribeLocalEvent<JauntComponent, ComponentShutdown>(OnShutdown); + } + + private void OnInit(Entity<JauntComponent> ent, ref MapInitEvent args) + { + _actions.AddAction(ent.Owner, ref ent.Comp.Action, ent.Comp.JauntAction); + } + + private void OnShutdown(Entity<JauntComponent> ent, ref ComponentShutdown args) + { + _actions.RemoveAction(ent.Owner, ent.Comp.Action); + } + +} + diff --git a/Content.Shared/Polymorph/PolymorphPrototype.cs b/Content.Shared/Polymorph/PolymorphPrototype.cs index 6d010711d2e..c0576694084 100644 --- a/Content.Shared/Polymorph/PolymorphPrototype.cs +++ b/Content.Shared/Polymorph/PolymorphPrototype.cs @@ -1,3 +1,4 @@ +using Robust.Shared.Audio; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Array; @@ -115,6 +116,18 @@ public sealed partial record PolymorphConfiguration [DataField(serverOnly: true)] [ViewVariables(VVAccess.ReadWrite)] public TimeSpan Cooldown = TimeSpan.Zero; + + /// <summary> + /// If not null, this sound will be played when being polymorphed into something. + /// </summary> + [DataField] + public SoundSpecifier? PolymorphSound; + + /// <summary> + /// If not null, this sound will be played when being reverted from a polymorph. + /// </summary> + [DataField] + public SoundSpecifier? ExitPolymorphSound; } public enum PolymorphInventoryChange : byte diff --git a/Resources/Audio/Magic/attributions.yml b/Resources/Audio/Magic/attributions.yml index cedda322862..bfbe4d6ec24 100644 --- a/Resources/Audio/Magic/attributions.yml +++ b/Resources/Audio/Magic/attributions.yml @@ -17,6 +17,8 @@ - forcewall.ogg - knock.ogg - blink.ogg - copyright: '"ForceWall.ogg", "Knock.ogg", and "blink.ogg" by Citadel Station 13' + - ethereal_enter.ogg + - ethereal_exit.ogg + copyright: '"forcewall.ogg", "knock.ogg", "blink.ogg", "ethereal_enter.ogg", and "ethereal_exit.ogg" by Citadel Station 13' license: CC-BY-SA-3.0 source: https://github.com/Citadel-Station-13/Citadel-Station-13/commit/35a1723e98a60f375df590ca572cc90f1bb80bd5 diff --git a/Resources/Audio/Magic/ethereal_enter.ogg b/Resources/Audio/Magic/ethereal_enter.ogg new file mode 100644 index 0000000000000000000000000000000000000000..a0c7222c16798c3c037cba5e90d5899644b52e8a GIT binary patch literal 36619 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 U3Scl3to$`8GTa5YJ^;tL0a{;58~^|S literal 0 HcmV?d00001 diff --git a/Resources/Audio/Magic/ethereal_exit.ogg b/Resources/Audio/Magic/ethereal_exit.ogg new file mode 100644 index 0000000000000000000000000000000000000000..bd60ca8c6957934445cbca1f7c691cb57cc69dff GIT binary patch literal 42980 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 U#lX^J%@44Ta~vFp>!F700UIP22mk;8 literal 0 HcmV?d00001 diff --git a/Resources/Locale/en-US/store/spellbook-catalog.ftl b/Resources/Locale/en-US/store/spellbook-catalog.ftl index 457f02916f9..1d970f6e3ac 100644 --- a/Resources/Locale/en-US/store/spellbook-catalog.ftl +++ b/Resources/Locale/en-US/store/spellbook-catalog.ftl @@ -17,6 +17,9 @@ spellbook-polymorph-rod-desc = Change into an Immovable Rod with limited movemen spellbook-charge-name = Charge spellbook-charge-desc = Adds a charge back to your wand! +spellbook-ethereal-jaunt-name = Ethereal Jaunt +spellbook-ethereal-jaunt-description = Slip into the ethereal plane to slip away from your enemies! + # Equipment spellbook-wand-polymorph-door-name = Wand of Entrance @@ -33,3 +36,6 @@ spellbook-event-summon-ghosts-description = Who ya gonna call? # Upgrades spellbook-upgrade-fireball-name = Upgrade Fireball spellbook-upgrade-fireball-description = Upgrades Fireball to a maximum of level 3! + +spellbook-upgrade-jaunt-name = Upgrade Ethereal Jaunt +spellbook-upgrade-jaunt-description = Upgrades Jaunt to a maximum of level 3! diff --git a/Resources/Prototypes/Actions/polymorph.yml b/Resources/Prototypes/Actions/polymorph.yml index 81feba4eacc..291400ab388 100644 --- a/Resources/Prototypes/Actions/polymorph.yml +++ b/Resources/Prototypes/Actions/polymorph.yml @@ -40,3 +40,53 @@ icon: sprite: Objects/Fun/immovable_rod.rsi state: icon + +- type: entity + id: ActionPolymorphJaunt + name: Ethereal Jaunt + description: Melt into the Ethereal Plane for a quick getaway! + components: + - type: Magic + - type: InstantAction + useDelay: 30 + event: !type:PolymorphActionEvent + protoId: Jaunt + itemIconStyle: NoItem + icon: + sprite: Objects/Magic/magicactions.rsi + state: jaunt + # TODO: Effect ECS (from cardboard box) + - type: ActionUpgrade + effectedLevels: + 2: ActionPolymorphJauntII + 3: ActionPolymorphJauntIII + +- type: entity + id: ActionPolymorphJauntII + parent: ActionPolymorphJaunt + name: Ethereal Jaunt II + description: Melt into the Ethereal Plane for an even quicker getaway! + components: + - type: InstantAction + useDelay: 25 + event: !type:PolymorphActionEvent + protoId: Jaunt + itemIconStyle: NoItem + icon: + sprite: Objects/Magic/magicactions.rsi + state: jaunt + +- type: entity + id: ActionPolymorphJauntIII + parent: ActionPolymorphJaunt + name: Ethereal Jaunt III + description: Are you even tangible anymore? + components: + - type: InstantAction + useDelay: 20 + event: !type:PolymorphActionEvent + protoId: Jaunt + itemIconStyle: NoItem + icon: + sprite: Objects/Magic/magicactions.rsi + state: jaunt diff --git a/Resources/Prototypes/Catalog/spellbook_catalog.yml b/Resources/Prototypes/Catalog/spellbook_catalog.yml index 38b95c3273c..805c157f1e3 100644 --- a/Resources/Prototypes/Catalog/spellbook_catalog.yml +++ b/Resources/Prototypes/Catalog/spellbook_catalog.yml @@ -77,6 +77,20 @@ - !type:ListingLimitedStockCondition stock: 1 +- type: listing + id: SpellbookJaunt + name: spellbook-ethereal-jaunt-name + description: spellbook-ethereal-jaunt-description + productAction: ActionPolymorphJaunt + productUpgradeId: SpellbookJauntUpgrade + cost: + WizCoin: 2 + categories: + - SpellbookUtility + conditions: + - !type:ListingLimitedStockCondition + stock: 1 + # Equipment - type: listing id: SpellbookWandDoor @@ -138,3 +152,22 @@ # manual for now - !type:ListingLimitedStockCondition stock: 2 + +- type: listing + id: SpellbookJauntUpgrade + productUpgradeId: SpellbookJauntUpgrade + name: spellbook-upgrade-jaunt-name + description: spellbook-upgrade-jaunt-description + icon: + sprite: Objects/Magic/magicactions.rsi + state: jaunt + cost: + WizCoin: 2 + categories: + - SpellbookUtility + conditions: + - !type:BuyBeforeCondition + whitelist: + - SpellbookJaunt + - !type:ListingLimitedStockCondition + stock: 2 diff --git a/Resources/Prototypes/Entities/Mobs/Player/jaunt_mobs.yml b/Resources/Prototypes/Entities/Mobs/Player/jaunt_mobs.yml new file mode 100644 index 00000000000..3002264a754 --- /dev/null +++ b/Resources/Prototypes/Entities/Mobs/Player/jaunt_mobs.yml @@ -0,0 +1,40 @@ +- type: entity + name: jaunt + parent: [Incorporeal, BaseMob] + id: BaseMobJaunt + description: Faint traces of a humanoid figure linger here + suffix: Ethereal + components: + - type: ContentEye + maxZoom: 1.44,1.44 + - type: Eye + drawFov: false + - type: Input + context: "ghost" + - type: InputMover + - type: MovementSpeedModifier + baseSprintSpeed: 12 + baseWalkSpeed: 8 + - type: Visibility + layer: 2 + - type: Spectral + +# Should be slow, for balance +- type: entity + name: jaunt + parent: BaseMobJaunt + id: EtherealJaunt + suffix: Wizard + components: + - type: Sprite + sprite: Mobs/Ghosts/ghost_human.rsi + color: "#60f7eb" + layers: + - state: animated + shader: unshaded + noRot: true + overrideContainerOcclusion: true + drawdepth: Ghosts + - type: MovementSpeedModifier + baseSprintSpeed: 6 + baseWalkSpeed: 4 diff --git a/Resources/Prototypes/Polymorphs/polymorph.yml b/Resources/Prototypes/Polymorphs/polymorph.yml index 96739a50d3c..fe28287cb09 100644 --- a/Resources/Prototypes/Polymorphs/polymorph.yml +++ b/Resources/Prototypes/Polymorphs/polymorph.yml @@ -186,3 +186,19 @@ forced: true revertOnCrit: false revertOnDeath: false + +# Temporary Jaunt +# Don't make permanent jaunts until action system can be reworked to allow do afters and cooldown pausing +- type: polymorph + id: Jaunt + configuration: + entity: EtherealJaunt + transferName: true + inventory: None + forced: true + revertOnDeath: true + revertOnCrit: true + allowRepeatedMorphs: false + polymorphSound: /Audio/Magic/ethereal_enter.ogg + exitPolymorphSound: /Audio/Magic/ethereal_exit.ogg + duration: 3 diff --git a/Resources/Textures/Objects/Magic/magicactions.rsi/jaunt.png b/Resources/Textures/Objects/Magic/magicactions.rsi/jaunt.png new file mode 100644 index 0000000000000000000000000000000000000000..f66002b46956d4945c822e3a1c8fb2ac510ba1b2 GIT binary patch literal 431 zcmV;g0Z{&lP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80004YNkl<ZScUCZ z!Ht735Zs(7fS*gC06v!dz&*JRdNL0re<*+w_@w|I_el0`aSYitaJfiXDUu1YXLfeH zHW%+byfVICivAx66uA@aWCD)8>UHiqSqj+6g!)<l{wSH#2_QI)JtRaWpx|xQ{mAad zCe+sgESMlIM^*_ac<T8y0$%lcC}(hEvyj`3O&H2K%Zy?LkOTq)0OW!LWOxAJW;#&6 z|6~1;pk&Ppw-u+{-&UQD%OO>RMIZ&f6%rCpJrILa$KyEO1(LqNPK#z0XJ{uA{GEhU ztxW~u#V{+c`bF)L48CuxPIFaYZNs&iy0Hnd5&xtUVx)F~G*|?@>NS-UGp9swEIpK1 z1l-s>95R^sS_!!41KX}NGhF<EL^<Df#NDJdz@lTOVp9R^`_zO8O2Okfb~0foXO;?2 z6<BjMlERERb5gNu7wox;9YSEwW%LjNN5qG~`w-wd{*+cszl63T=SxX+A)$m~f<WF& Z;u}lX`C0df&*=aF002ovPDHLkV1kJ3xitU) literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Magic/magicactions.rsi/meta.json b/Resources/Textures/Objects/Magic/magicactions.rsi/meta.json index 9bf76bbe774..a8da3d8bc3a 100644 --- a/Resources/Textures/Objects/Magic/magicactions.rsi/meta.json +++ b/Resources/Textures/Objects/Magic/magicactions.rsi/meta.json @@ -25,8 +25,11 @@ { "name": "magicmissile" }, + { + "name": "jaunt" + }, { "name": "gib" } ] -} \ No newline at end of file +} From b91c977f7a51b424bd006ee43a4ed3a37417fa94 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Wed, 13 Nov 2024 23:37:44 +0000 Subject: [PATCH 077/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 3365a943ee6..9cc788c96f7 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,20 +1,4 @@ Entries: -- author: IProduceWidgets - changes: - - message: shuttle events have been separated from other midround events and can - now happen concurrently. - type: Tweak - - message: Cargo Gift events should be less likely. - type: Tweak - - message: meteors have been changed to be more responsive to player count. - type: Tweak - - message: 'Game mode: Kessler syndrome - What if survival but also the apocalypse?' - type: Add - - message: 'Game mode: Zombeteors - Zombies and a meteor shower all at once!' - type: Add - id: 7107 - time: '2024-08-14T05:21:02.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/29320 - author: Blackern5000 changes: - message: Combat medical kits now contain saline syringes. @@ -3949,3 +3933,11 @@ id: 7606 time: '2024-11-13T12:30:40.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33282 +- author: keronshb + changes: + - message: Added Ethereal Jaunt! A Wizard Spell that turns you invisible and into + a ghost-like creature for escaping! + type: Add + id: 7607 + time: '2024-11-13T23:36:37.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33201 From 4f754b814bdc7c72d900e6d13aef4eb0a533cdce Mon Sep 17 00:00:00 2001 From: ScarKy0 <scarky0@onet.eu> Date: Thu, 14 Nov 2024 14:55:01 +0100 Subject: [PATCH 078/187] derelictn't (for now) --- .../ghost/roles/ghost-role-component.ftl | 3 -- .../interaction-popup-component.ftl | 1 - .../Entities/Markers/Spawners/ghost_roles.yml | 20 +--------- .../Mobs/Cyborgs/base_borg_chassis.yml | 21 +--------- .../Entities/Mobs/Cyborgs/borg_chassis.yml | 37 +----------------- .../Entities/Mobs/Player/silicon.yml | 36 +---------------- Resources/Prototypes/GameRules/events.yml | 23 +---------- .../Construction/Graphs/machines/cyborg.yml | 5 +-- .../Mobs/Silicon/chassis.rsi/derelict.png | Bin 11838 -> 0 bytes .../Mobs/Silicon/chassis.rsi/derelict_e.png | Bin 5508 -> 0 bytes .../Mobs/Silicon/chassis.rsi/derelict_e_r.png | Bin 5515 -> 0 bytes .../Silicon/chassis.rsi/derelict_icon.png | Bin 6429 -> 0 bytes .../Mobs/Silicon/chassis.rsi/derelict_l.png | Bin 6986 -> 0 bytes .../Mobs/Silicon/chassis.rsi/meta.json | 20 ---------- 14 files changed, 6 insertions(+), 160 deletions(-) delete mode 100644 Resources/Textures/Mobs/Silicon/chassis.rsi/derelict.png delete mode 100644 Resources/Textures/Mobs/Silicon/chassis.rsi/derelict_e.png delete mode 100644 Resources/Textures/Mobs/Silicon/chassis.rsi/derelict_e_r.png delete mode 100644 Resources/Textures/Mobs/Silicon/chassis.rsi/derelict_icon.png delete mode 100644 Resources/Textures/Mobs/Silicon/chassis.rsi/derelict_l.png diff --git a/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl b/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl index f584a4b35fe..77d2645c4c5 100644 --- a/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl +++ b/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl @@ -240,9 +240,6 @@ ghost-role-information-syndicate-cyborg-assault-name = Syndicate Assault Cyborg ghost-role-information-syndicate-cyborg-saboteur-name = Syndicate Saboteur Cyborg ghost-role-information-syndicate-cyborg-description = The Syndicate needs reinforcements. You, a cold silicon killing machine, will help them. -ghost-role-information-derelict-cyborg-name = Derelict Cyborg -ghost-role-information-derelict-cyborg-description = You were a regular cyborg that got lost in space. After drifting in whichever direction the laws of physics would have it for years, you have drifted close to a Nanotrasen space station. You have a fire extinguisher and mass scanner which can be used to board the station. Years of exposure to ion storms have left your silicon laws altered - check them upon spawning. - ghost-role-information-security-name = Security ghost-role-information-security-description = You are part of a security task force, but seem to have found yourself in a strange situation... diff --git a/Resources/Locale/en-US/interaction/interaction-popup-component.ftl b/Resources/Locale/en-US/interaction/interaction-popup-component.ftl index 65310b67f98..46959705c26 100644 --- a/Resources/Locale/en-US/interaction/interaction-popup-component.ftl +++ b/Resources/Locale/en-US/interaction/interaction-popup-component.ftl @@ -67,7 +67,6 @@ petting-success-janitor-cyborg = You pet {THE($target)} on {POSS-ADJ($target)} d petting-success-medical-cyborg = You pet {THE($target)} on {POSS-ADJ($target)} sterile metal head. petting-success-service-cyborg = You pet {THE($target)} on {POSS-ADJ($target)} dapper looking metal head. petting-success-syndicate-cyborg = You pet {THE($target)} on {POSS-ADJ($target)} menacing metal head. -petting-success-derelict-cyborg = You pet {THE($target)} on {POSS-ADJ($target)} rusty metal head. petting-success-recycler = You pet {THE($target)} on {POSS-ADJ($target)} mildly threatening steel exterior. petting-failure-honkbot = You reach out to pet {THE($target)}, but {SUBJECT($target)} {CONJUGATE-BASIC($target, "honk", "honks")} in refusal! diff --git a/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml b/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml index 18d459cd89e..a614fb59639 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml @@ -169,22 +169,4 @@ layers: - state: green - sprite: Objects/Weapons/Melee/energykatana.rsi - state: icon - -- type: entity - categories: [ HideSpawnMenu, Spawner ] - parent: BaseAntagSpawner - id: SpawnPointGhostDerelictCyborg - components: - - type: GhostRole - name: ghost-role-information-derelict-cyborg-name - description: ghost-role-information-derelict-cyborg-description - rules: ghost-role-information-silicon-rules - raffle: - settings: default - - type: Sprite - sprite: Markers/jobs.rsi - layers: - - state: green - - sprite: Mobs/Silicon/chassis.rsi - state: derelict_icon \ No newline at end of file + state: icon \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index 7449fe5669f..90223843525 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -316,23 +316,4 @@ sounds: Unsexed: UnisexSiliconSyndicate - type: PointLight - color: "#dd200b" - -- type: entity - id: BaseBorgChassisDerelict - parent: BaseBorgChassis - abstract: true - components: - - type: NpcFactionMember - factions: - - NanoTrasen #The seemingly best fit. It was a regular NT cyborg once, after all. - - type: Access - enabled: false - groups: - - AllAccess #Randomized access would be fun. AllAccess is the best i can think of right now that does make it too hard for it to enter the station or navigate it.. - - type: AccessReader - access: [["Command"], ["Research"]] - - type: StartIonStormed - ionStormAmount: 4 - - type: IonStormTarget - chance: 1 \ No newline at end of file + color: "#dd200b" \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml index 818847f2449..04d629279e8 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml @@ -441,39 +441,4 @@ interactSuccessString: petting-success-syndicate-cyborg interactFailureString: petting-failure-syndicate-cyborg interactSuccessSound: - path: /Audio/Ambience/Objects/periodic_beep.ogg - - -- type: entity - id: BorgChassisDerelict - parent: BaseBorgChassisDerelict - name: derelict cyborg - description: A man-machine hybrid that assists in station activity. This one is in a state of great disrepair. - components: - - type: Sprite - layers: - - state: derelict - - state: derelict_e_r - map: ["enum.BorgVisualLayers.Light"] - shader: unshaded - visible: false - - state: derelict_l - shader: unshaded - map: ["light"] - visible: false - - type: BorgChassis - maxModules: 5 #The sixth one broke lol. - moduleWhitelist: - tags: - - BorgModuleGeneric - hasMindState: derelict_e - noMindState: derelict_e_r - - type: Construction - node: derelictcyborg - - type: Speech - speechVerb: Robotic - - type: InteractionPopup - interactSuccessString: petting-success-derelict-cyborg - interactFailureString: petting-failure-derelict-cyborg - interactSuccessSound: - path: /Audio/Ambience/Objects/periodic_beep.ogg \ No newline at end of file + path: /Audio/Ambience/Objects/periodic_beep.ogg \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index 22f49c93eaa..71b8a92d1c9 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -514,38 +514,4 @@ prototypes: - PlayerBorgSyndicateAssaultGhostRole - PlayerBorgSyndicateAssaultGhostRole # Saboteurs are kinda like cyborg medics, we want less. - - PlayerBorgSyndicateSaboteurGhostRole - -- type: entity - id: PlayerBorgDerelict - parent: BorgChassisDerelict - suffix: Battery, Module - components: - - type: ContainerFill - containers: - borg_brain: - - PositronicBrain - borg_module: - - BorgModuleTool - - BorgModuleFireExtinguisher - - BorgModuleGPS - - type: ItemSlots - slots: - cell_slot: - name: power-cell-slot-component-slot-name-default - startingItem: PowerCellHigh - - type: RandomMetadata - nameSegments: [names_borg] - -- type: entity - id: PlayerBorgDerelictGhostRole - parent: PlayerBorgDerelict - suffix: Ghost role - components: - - type: GhostRole - name: ghost-role-information-derelict-cyborg-name - description: ghost-role-information-derelict-cyborg-description - rules: ghost-role-information-silicon-rules - raffle: - settings: default - - type: GhostTakeoverAvailable + - PlayerBorgSyndicateSaboteurGhostRole \ No newline at end of file diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index 763557e6c91..364a4128874 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -545,25 +545,4 @@ minimumPlayers: 20 maxOccurrences: 1 # this event has diminishing returns on interesting-ness, so we cap it weight: 5 - - type: MobReplacementRule - -- type: entity - parent: BaseGameRule - id: DerelictCyborgSpawn - components: - - type: StationEvent - weight: 5 - earliestStart: 15 - reoccurrenceDelay: 20 - minimumPlayers: 4 - duration: null - - type: SpaceSpawnRule - spawnDistance: 0 - - type: AntagSpawner - prototype: PlayerBorgDerelict - - type: AntagSelection - definitions: - - spawnerPrototype: SpawnPointGhostDerelictCyborg - min: 1 - max: 1 - pickPlayer: false \ No newline at end of file + - type: MobReplacementRule \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml b/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml index 3f8a731cbbd..8fd528575e0 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml @@ -204,7 +204,4 @@ entity: BorgChassisSyndicateMedical - node: syndicatesaboteur - entity: BorgChassisSyndicateSaboteur - - - node: derelictcyborg - entity: BorgChassisDerelict + entity: BorgChassisSyndicateSaboteur \ No newline at end of file diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/derelict.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/derelict.png deleted file mode 100644 index bbf72fc45bed2408b2abeb91d3564f8fa41e6e5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11838 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 HpFaCP!NMbp diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/derelict_e.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/derelict_e.png deleted file mode 100644 index 17349d74dc8ba9bbf0e434b9e32e634535c3a244..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5508 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 LUFhdl`^x_VBy@7n diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/derelict_e_r.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/derelict_e_r.png deleted file mode 100644 index 3c8cf19acf66f1c662629db09546f8a553a3c658..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5515 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 S?UyLhp|`uATeV9>+J69Pac{i< diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/derelict_icon.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/derelict_icon.png deleted file mode 100644 index 7f0ea2a25560f33773cd72d6184daba55dd4d033..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6429 zcmeHKdpMNa_aDuaYgBS4V@RSgSIkT%<bF_$aY-rf%)B$kZN|)CP?S<i5lJa^Qp%+g zr3jtFK{?@wirmwUiX)QJh3`95r=H*Ud45mN?|1%do_Q~O?X^C8t<PF}?|1KYU+1_` zPE!sBgDrG+vZFyyq~wxW0NsT#F%vM@0<{>ruZRXjA^8Fxn;QZmMbUf^35vOF7);#N z>$5TaiIKv`!KJZ?or{*-T6`(#M$NK#&j((;{{DnsGeU{(#uU8z&PBIfchr6y995bA z1LN_F-j%?Dv)b>T9t+0PCrI(vM#maH{1*Q_CUH<{WMCSVv)8?CD*x$=_~6tiI0wid zTW#BQNp0kD@-fVZ_W?u4l6v&tGB)jg0VcIgp*AlV-qh|<c>BZh(&)^`*OpLcYIq~< zw|xfp46aJ*3uxMzziyxC;kt}<(hW1@gE_SD^|?dh_Ey;_!yA@1)+g(qPoIAkc>Vko zH%}?QCwMG6R%~aIcV3=~xZcy4H=;K#q(=_*H)p>oJexW~)fL1{EZR16$xJk2##G6a zU+Z6F-<x?kc&G!Lxc;J4k;;Qr)=nPpy~0=e_Sz(dPn;QeQF0Se?%fn_mu&Kv|Kx)K z#yWz5&GNG+11*f53k%>koH{R+r^EiVku&(Po9bEdVaeOlH$y<nxuel`BDcjiQM;?Q zCi+NUcuGqeyAyliq1wGslAV(Nluqw<r%gWY(bDfCsngm%^Ad(VBKOh}*G?E}-YRpo z)(Twf=nx%*y<M(=v^#oiz|{Z=yN3#2HFhw=zyU#%I#?4SV`PS0ly!Iep_R%i0r2HO zkV0B{rQy0j#Xv_qe2Hr!;(>KA%!IQb-oS*!a?Q@VUR*2yP3VFF+P<ah_Zb?HWn307 zK5Tq0cf*F{eTCjvj~VN61!%9rcE4t9Ud?5oG-u}qmjixb+J4-&()(<kiRaga82^gN zuFzZ?_!Kik&(=}L{4wG%`=n)KM!}VJ8&7qeE*^j6mAT44qEqLpeEa$i`TTnMtEFk< zDFVlZ7f}|<t#@TtvtbIAPKZa37Hz-tCvG+IS++L$)^NUT;X}lVPMlWjVt7LI%{r65 zV)^HG_tHL~dlH@~m7m>WZ%PtjP;WKLIQa|vcfWTSrsqh%LFOxs=K0ZHH~;Oa5jXMZ z{`gEtpq~fR`Qkj8Zj9Wk)T~cSUwy(?QDB2B4Tnt&0P~Z^S;-Td{}?(|*clL&caHot zuunr@JQ1d2*~{Fp>vbT`R*nK7h7%Yh{lkZuw;JBOdGELEHvfD8?eB#_z&p32q)yGV zA6!Nl1uDB*;oYiRsS5kO4@Mlj%pwA6i#3nP8Zou$&wAQFS+cqZ9&3T`PS*~%i^Msw ztmv9Dsf)`F8YEQQ-rn}{-O{Era%oTZ=h-(a_#S<=w9_Qzfa9A-$<~SeN&Gs6-+at+ zRkVY>P5EW|@aryo1tsC;tvW%<(Mr;5KcQR)62)tFx0vDbG%Rjw#+=-hza#C+r9=Mr zINVN6nz4~;&3&3fPI!@ANRd;}){<^AxspG`WtsFeD}Qh}!TbdGs~lT$EMI0hAmyid zIT~Lq6m8$adAWRp?tZwYxt@5{*###b;3(#bSN`;!_!Ew(I{p@&X_F(jC9SM7CF$aV zg#8^Mo3kgcIl7YOPX`$Xp*wSzR3V0uIbJM8gUo7^v5;Dgw&ToEdLN=sY4L*W>m9Yu znJPznE*#J+eNf#`DuJ&RS&Zl$dG(u7?RrX2>A*TgZF%EWx=ha)T+f>43;R6=9+uoZ z#PFvLs3``h51MI=-c-?|H6~urnqm6Ix|BC$_jsz$L(yRyX`-!ZtR2s*r%I6X;R)VN zkGVI_TakN@OKa~%tXx24n>G`-^Xf&gKZaV6ckk_o%X)R-Q)C`&49NAXB<HTrTJ+ng zU$hF!-yLaGep%dk!NWd-|D?VoFs38P6u{ZQ?nZ1sdGNxdY@a@;5C6-rBw(y=zvq(E z%l52bU&tA7Z3+tsb}Aw6cq_XF)zLMX9*)0VQPz0aq(QpjmH(tLWe+F!mcUOp5*^IS z&$!dY*=ab|d*BjzEhn(mLgyt>UXQa89v7QeguHs_JUM!4tO6p{60y0HvH!vARa-4= z1DfZ1YYYYa%HZZODiLtG$8fh@$fDzf&2jNB6-H@kfKpM%vgm^C7@YQ)+qSo*Gv0d! zZ3+(v1CxgvJ6E?bTaFt?e!8b9SJpq3ZCPb7rfbwiUASiDjP!2AV2|eX{ETh15StXM zX&6ju7uVL--PzXm%N7A`4B6Y#s7|%k+VxvJ&&JWUhmmc1wh@<+#*d7=RwX31c?aIF zdD4anY&)1+PLeB{FKwlIUeWZg3QD<L!b9n#D?1OJPR@Aud+r_7&7F_qsw&@>$4bi_ zkn?OVlC{3SN?#>)Z)Z=Ty4W7`hm5t|?{%)!w9QS`!mYivw>m0~TE^GB9aMK8H-v9R zjcMOqm@M8YX5Vcik1Fr+b*3e??7g+H0y(DN0Uqfmsp+VS*$oZ3&-U8ZF-mqmRb(%> zU4GIq#i-C>YHd51_*#{7mBzdnJFd3ib=NP)UJ`4Qn6k141^OCh86G<ljV@}gG^Ca4 zzJ8TTnl`x35*)5+DA{gIcS_Oys1z3!ta{F{H#b0GD6V8A)dN{9Pkedp)3%WAX65P` zg-zVh_^VP)ap{|R!D;#de68~Gu;B4!{OfQ9tLN!@<n&+9xf{VoITLQ=fFaePjl$UA zk;fBK4emaT7S%O+Snu57h}5XJqRGk8Ebn-$FlE76!dXfs45sMCg|=*8H&+Ui7itQy zcnr`~9Lk5bbQsLiO3VkC!Jr7q06E++Dr&UycNCJ#qN04v+^}wZTQHF86e9pVW7g4` zF~LkS3uU!N&QeT)075|#fE0&@gb68PDry#&0=-Mb7!-0=MHEa$`MS9yZFvF^Ni-#z zV$t?uZX_PHMh<ByV6iDQJBQB@P>YHR6p8p03??cn$~1~#$`f!fI5L@x!QwG^JQ~tK z3!}qCfEXPn)R#caVc3B}rhv;Aad}}#2`0ecMTn><6x5IW;$JA=&Fw3EnD8?T5FZ#Z zz{lWBv6#?M%(oUok$oft^4X#PY9XXUUp^QbDC9*5n4o<m7$(yH7J|k6YR``lgv^G+ zVq(A$FceZ1LZjlo8`9C)&Hbx|gaQsXls{_)k^P;fh|B(mtnYl2^vs6yts{{6SKRNk zzr;SP3~9N!QS5lk2#I^nc2tyPd<u)l<gzHUuS|j&lZiJcqX8nGg(k9C7HBdPM@BON zCX<CHGS~nC_y)>3Oeg}vn4km-0ypJCIBX(|#2^3+G?9#lZsulKG?`4op_yy~nN4Eg zEtpvHHxTOuT&OC6kZ-+`K(Qbw05B(;F^C|VM238TMhDRhB7|oF;)oytU|X;Vq**8y zlj6V=gaS}HxuF0D#PGv7vmFw`DK_rTR21G6`;Wvu1Q4+y185F#!&tm1;Xhq;ZYby} z0wjFmEbta)Sds+^XGX^2@N-_zB6@=YAykVJR2<fnfS)y&B!&Wo15pb|Dis2ll|#`` zYy}`7;tA+HUI-N>fj~+uzjnJp6N&|h06RbgLZDbYk%A>t@FY5PC*Ub&Boi#2g8fFH z$KtZ1|2J*P^g&wACEbZDgvO7a70t~lPcVG0HP;N`&Q2yIa&}r!0Oni>LLd@k&H4#p z&2=#YfiMmTtskEY_KTeRUy1=F6Uk;wa~zt)#uCs(97sl!@Bjg-2rPj}WE0H^?767E zq6>L!Q4}BmZ8#8*5LZxv&T@q``kbnj-+L1k2ukt*QHI8n(Rd3w4oiXlP);!aet0Z4 zn}7q@L^K0rfM_BX4@CwrNoWhU8Hq?Dn6u0X;P>wSAH$og2m%F*`x2fdMzSD&Nv0*{ zf24a(;hPl{qGe77t<2CukNLXNf94BH#lQLcTxS2~5J=?DL4JtepLG4C>xUTlA?2Ud z^^>k2V&I3Ae^%H38(nh$oE5<^=mRebIti+k?rMTgkqa0uj&`%>N!XNaWjypI%Xiu! zgpQtdl1u8aiJ}%HlomO=*-H<}YD?=$^*8Q&4uj3hbhfjh`__(Rwgh(tsNb>*;uXlB z+4C?Z)C`q?%v|R1JT>~LsLVPQn5j--#@9XwpQ&yLe;AKkE!J9^gUsn_J2T#{;`~OZ z?Jw|%p?a`O+l!m0TF|`lCsS+I_qAAHEbBc#Uh=qeH_T>zW$Lz;Hd{Hkc2!(`ORG%v zd{WSfI=PrGD)dk_JasCs*J3qB>RoFTtbx;B)%|xLTNas~<V%;T-SWGKSH!bzx59ll z?^Cw7&XqODFv!Yywxuk!8^*e<0V~beJ+!a>?;VrjT3%k^+MH)y{&%yE!@Rt3ZpyI6 z%P^xOjj($`R~weroi<#WY_ImpUPL)zJ?3y`@y2|Ze@E~AH}^O8`?+wlPn>KGx~jTD z;>)h|3Hc(+Em99p#}CMBHrg1-J@VK$8k(uzD0PmDs+iY(tt3>dRVAYlyeX*eWA8Om z)KJ=3mC+*T8<lPsUe~_9$+S4KZ`AWP$2K|1zNFvT3hPF&wz=rdTqV7u3i~TcHFEIy zxxE?bL04ZWW1V+6CIIS2`x3wnIY}}jaM~|1H<s-N-knT-4gxlyl~<`a;qWQShn zSKVyH3oYcXxX|(PF8TFqDWzH$@{{6d*R{^?5f834`zjhey<+K^IW_qSTdG!f#+|=% z&;FvKPeoMSSBBV%ib;<XTD$L_fLHl$aTF!aIMTgT&}Uo8)cHxoy|F9Y3+VGs#OCR? zsyMBL?-F}ww_LzgR6L_8!biog47a|WhW~1{ZQ_zrQ`wrqLjzNFJ}+I6Wqude#3>DX zPdXbpn_s*3DdmQ4dZcjecsta9M3E*RUe^?NhR`l`Y+I^z;AYdH;p!Xm-3{}0EgGtb wThZM&@MO)i#6^~*ef6hbs!XX(#V?<Rk+QsrN8Y~>Nov~Jew|&>+JJ=r07IhhdjJ3c diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/derelict_l.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/derelict_l.png deleted file mode 100644 index f65fbaebc3c5074e945e94f59b8d90b83ac08bb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6986 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 Kq{P@Q{C@ypNMm&X diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json b/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json index f5c2001828f..68fbf1985e7 100644 --- a/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json +++ b/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json @@ -23,26 +23,6 @@ "name": "clown_l", "directions": 4 }, - { - "name": "derelict", - "directions": 4 - }, - { - "name": "derelict_e", - "directions": 4 - }, - { - "name": "derelict_e_r", - "directions": 4 - }, - { - "name": "derelict_icon", - "directions": 1 - }, - { - "name": "derelict_l", - "directions": 4 - }, { "name": "engineer", "directions": 4 From 75ec5465509edcb1f4b3b9c43f44e0f123a6f5c1 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Thu, 14 Nov 2024 14:57:05 +0100 Subject: [PATCH 079/187] Update Label workflows to use new labels (#33310) * Update labeler.yml * Update labeler-needsreview.yml * Update labeler-staging.yml * Update labeler-stable.yml * Update labeler-untriaged.yml * Create labeler-size.yml * Update labeler-size.yml * Update labeler-size.yml * Update conflict-labeler.yml * Rename conflict-labeler.yml to labeler-conflict.yml --- .github/labeler.yml | 2 +- ...flict-labeler.yml => labeler-conflict.yml} | 2 +- .github/workflows/labeler-needsreview.yml | 4 ++-- .github/workflows/labeler-size.yml | 20 +++++++++++++++++++ .github/workflows/labeler-stable.yml | 2 +- .github/workflows/labeler-staging.yml | 2 +- .github/workflows/labeler-untriaged.yml | 4 +++- 7 files changed, 29 insertions(+), 7 deletions(-) rename .github/workflows/{conflict-labeler.yml => labeler-conflict.yml} (93%) create mode 100644 .github/workflows/labeler-size.yml diff --git a/.github/labeler.yml b/.github/labeler.yml index 97b402eda9f..69b2ca87749 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -16,7 +16,7 @@ - changed-files: - any-glob-to-any-file: '**/*.swsl' -"No C#": +"Changes: No C#": - changed-files: # Equiv to any-glob-to-all as long as this has one matcher. If ALL changed files are not C# files, then apply label. - all-globs-to-all-files: "!**/*.cs" diff --git a/.github/workflows/conflict-labeler.yml b/.github/workflows/labeler-conflict.yml similarity index 93% rename from .github/workflows/conflict-labeler.yml rename to .github/workflows/labeler-conflict.yml index 1e2125c30a2..ebcc54d4604 100644 --- a/.github/workflows/conflict-labeler.yml +++ b/.github/workflows/labeler-conflict.yml @@ -16,6 +16,6 @@ jobs: - name: Check for Merge Conflicts uses: eps1lon/actions-label-merge-conflict@v3.0.0 with: - dirtyLabel: "Merge Conflict" + dirtyLabel: "S: Merge Conflict" repoToken: "${{ secrets.GITHUB_TOKEN }}" commentOnDirty: "This pull request has conflicts, please resolve those before we can evaluate the pull request." diff --git a/.github/workflows/labeler-needsreview.yml b/.github/workflows/labeler-needsreview.yml index 311048acb0f..819b34b7bbd 100644 --- a/.github/workflows/labeler-needsreview.yml +++ b/.github/workflows/labeler-needsreview.yml @@ -10,7 +10,7 @@ jobs: steps: - uses: actions-ecosystem/action-add-labels@v1 with: - labels: "Status: Needs Review" + labels: "S: Needs Review" - uses: actions-ecosystem/action-remove-labels@v1 with: - labels: "Status: Awaiting Changes" + labels: "S: Awaiting Changes" diff --git a/.github/workflows/labeler-size.yml b/.github/workflows/labeler-size.yml new file mode 100644 index 00000000000..ad6e35c8292 --- /dev/null +++ b/.github/workflows/labeler-size.yml @@ -0,0 +1,20 @@ +name: "Labels: Size" +on: pull_request_target +jobs: + size-label: + runs-on: ubuntu-latest + steps: + - name: size-label + uses: "pascalgn/size-label-action@v0.5.5" + env: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + with: + # Custom size configuration + sizes: > + { + "0": "XS", + "10": "S", + "30": "M", + "100": "L", + "1000": "XL" + } diff --git a/.github/workflows/labeler-stable.yml b/.github/workflows/labeler-stable.yml index 491d6a76fad..f6fd2033a11 100644 --- a/.github/workflows/labeler-stable.yml +++ b/.github/workflows/labeler-stable.yml @@ -13,4 +13,4 @@ jobs: steps: - uses: actions-ecosystem/action-add-labels@v1 with: - labels: "Branch: stable" + labels: "Branch: Stable" diff --git a/.github/workflows/labeler-staging.yml b/.github/workflows/labeler-staging.yml index e31a5a482f2..b46a198aefb 100644 --- a/.github/workflows/labeler-staging.yml +++ b/.github/workflows/labeler-staging.yml @@ -13,4 +13,4 @@ jobs: steps: - uses: actions-ecosystem/action-add-labels@v1 with: - labels: "Branch: staging" + labels: "Branch: Staging" diff --git a/.github/workflows/labeler-untriaged.yml b/.github/workflows/labeler-untriaged.yml index 775aab26546..ec1d194851c 100644 --- a/.github/workflows/labeler-untriaged.yml +++ b/.github/workflows/labeler-untriaged.yml @@ -3,6 +3,8 @@ on: issues: types: [opened] + pull_request_target: + types: [opened] jobs: add_label: @@ -11,4 +13,4 @@ jobs: - uses: actions-ecosystem/action-add-labels@v1 if: join(github.event.issue.labels) == '' with: - labels: "Status: Untriaged" + labels: "S: Untriaged" From c86201308a81548601afe3a205e592a05afc2dfb Mon Sep 17 00:00:00 2001 From: ScarKy0 <scarky0@onet.eu> Date: Thu, 14 Nov 2024 15:01:04 +0100 Subject: [PATCH 080/187] guh --- .../Locale/en-US/interaction/interaction-popup-component.ftl | 2 -- Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml | 2 +- .../Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml | 2 +- Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml | 2 +- Resources/Prototypes/Entities/Mobs/Player/silicon.yml | 2 +- Resources/Prototypes/GameRules/events.yml | 2 +- .../Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml | 2 +- 7 files changed, 6 insertions(+), 8 deletions(-) diff --git a/Resources/Locale/en-US/interaction/interaction-popup-component.ftl b/Resources/Locale/en-US/interaction/interaction-popup-component.ftl index 69a700fdeb4..a180b698fac 100644 --- a/Resources/Locale/en-US/interaction/interaction-popup-component.ftl +++ b/Resources/Locale/en-US/interaction/interaction-popup-component.ftl @@ -82,8 +82,6 @@ petting-failure-janitor-cyborg = You reach out to pet {THE($target)}, but {SUBJE petting-failure-medical-cyborg = You reach out to pet {THE($target)}, but {SUBJECT($target)} {CONJUGATE-BE($target)} busy saving lives! petting-failure-service-cyborg = You reach out to pet {THE($target)}, but {SUBJECT($target)} {CONJUGATE-BE($target)} busy serving others! petting-failure-syndicate-cyborg = You reach out to pet {THE($target)}, but {POSS-ADJ($target)} treacherous affiliation makes you reconsider. -petting-failure-derelict-cyborg = You reach out to pet {THE($target)}, but {POSS-ADJ($target)} rusty and jagged exterior makes you reconsider. - ## Rattling fences diff --git a/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml b/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml index a614fb59639..b694a8cc2f2 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml @@ -169,4 +169,4 @@ layers: - state: green - sprite: Objects/Weapons/Melee/energykatana.rsi - state: icon \ No newline at end of file + state: icon diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index 26e0ce4c794..0db92ac941d 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -317,4 +317,4 @@ sounds: Unsexed: UnisexSiliconSyndicate - type: PointLight - color: "#dd200b" \ No newline at end of file + color: "#dd200b" diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml index c3817234996..6a8f1e5abb0 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml @@ -439,4 +439,4 @@ interactSuccessString: petting-success-syndicate-cyborg interactFailureString: petting-failure-syndicate-cyborg interactSuccessSound: - path: /Audio/Ambience/Objects/periodic_beep.ogg \ No newline at end of file + path: /Audio/Ambience/Objects/periodic_beep.ogg diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index cef834c0b60..e787ef59f00 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -543,4 +543,4 @@ prototypes: - PlayerBorgSyndicateAssaultGhostRole - PlayerBorgSyndicateAssaultGhostRole # Saboteurs are kinda like cyborg medics, we want less. - - PlayerBorgSyndicateSaboteurGhostRole \ No newline at end of file + - PlayerBorgSyndicateSaboteurGhostRole diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index 32af0835c71..fafb6bd4283 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -540,4 +540,4 @@ minimumPlayers: 20 maxOccurrences: 1 # this event has diminishing returns on interesting-ness, so we cap it weight: 5 - - type: MobReplacementRule \ No newline at end of file + - type: MobReplacementRule diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml b/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml index 8fd528575e0..0f012cefc98 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml @@ -204,4 +204,4 @@ entity: BorgChassisSyndicateMedical - node: syndicatesaboteur - entity: BorgChassisSyndicateSaboteur \ No newline at end of file + entity: BorgChassisSyndicateSaboteur From 5dbea427517a91fd9fce7ea48d3d911a37c81779 Mon Sep 17 00:00:00 2001 From: ScarKy0 <scarky0@onet.eu> Date: Thu, 14 Nov 2024 15:05:14 +0100 Subject: [PATCH 081/187] derelicn't for real --- Resources/Prototypes/GameRules/events.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index fafb6bd4283..08218accede 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -35,7 +35,6 @@ - id: RevenantSpawn - id: SleeperAgents - id: ZombieOutbreak - - id: DerelictCyborgSpawn - id: LoneOpsSpawn - type: entity From 0f30639cf25866f285638d36632e4c3ddf07874e Mon Sep 17 00:00:00 2001 From: ScarKy0 <scarky0@onet.eu> Date: Thu, 14 Nov 2024 17:21:03 +0100 Subject: [PATCH 082/187] progress --- .../Silicons/Laws/SiliconLawSystem.cs | 74 ++++++++----------- .../Silicons/Laws/StartIonStormedSystem.cs | 38 ---------- .../Components/EmagSiliconLawComponent.cs | 7 -- .../Components/SiliconLawProviderComponent.cs | 6 ++ .../Components/StartIonStormedComponent.cs | 24 ------ 5 files changed, 38 insertions(+), 111 deletions(-) delete mode 100644 Content.Server/Silicons/Laws/StartIonStormedSystem.cs delete mode 100644 Content.Shared/Silicons/Laws/Components/StartIonStormedComponent.cs diff --git a/Content.Server/Silicons/Laws/SiliconLawSystem.cs b/Content.Server/Silicons/Laws/SiliconLawSystem.cs index c2aa20f401c..a4a7ee528f7 100644 --- a/Content.Server/Silicons/Laws/SiliconLawSystem.cs +++ b/Content.Server/Silicons/Laws/SiliconLawSystem.cs @@ -1,3 +1,4 @@ +using System.Diagnostics; using System.Linq; using Content.Server.Administration; using Content.Server.Chat.Managers; @@ -22,7 +23,6 @@ using Robust.Shared.Prototypes; using Robust.Shared.Toolshed; using Robust.Shared.Audio; -using Robust.Shared.GameObjects; namespace Content.Server.Silicons.Laws; @@ -50,11 +50,9 @@ public override void Initialize() SubscribeLocalEvent<SiliconLawProviderComponent, GetSiliconLawsEvent>(OnDirectedGetLaws); SubscribeLocalEvent<SiliconLawProviderComponent, IonStormLawsEvent>(OnIonStormLaws); + SubscribeLocalEvent<SiliconLawProviderComponent, MindAddedMessage>(OnLawProviderMindAdded); + SubscribeLocalEvent<SiliconLawProviderComponent, MindRemovedMessage>(OnLawProviderMindRemoved); SubscribeLocalEvent<SiliconLawProviderComponent, GotEmaggedEvent>(OnEmagLawsAdded); - SubscribeLocalEvent<EmagSiliconLawComponent, MindAddedMessage>(OnEmagMindAdded); - SubscribeLocalEvent<EmagSiliconLawComponent, MindRemovedMessage>(OnEmagMindRemoved); - SubscribeLocalEvent<StartIonStormedComponent, MindAddedMessage>(OnStartIonStormedMindAdded); - SubscribeLocalEvent<StartIonStormedComponent, MindRemovedMessage>(OnStartIonStormedMindRemoved); } private void OnMapInit(EntityUid uid, SiliconLawBoundComponent component, MapInitEvent args) @@ -73,6 +71,22 @@ private void OnMindAdded(EntityUid uid, SiliconLawBoundComponent component, Mind actor.PlayerSession.Channel, colorOverride: Color.FromHex("#2ed2fd")); } + private void OnLawProviderMindAdded(EntityUid uid, SiliconLawProviderComponent component, MindAddedMessage args) + { + if (!component.Subverted) + return; + EnsureSubvertedSiliconRole(uid); + } + + private void OnLawProviderMindRemoved(EntityUid uid, SiliconLawProviderComponent component, MindRemovedMessage args) + { + if (!component.Subverted) + return; + RemoveSubvertedSiliconRole(uid); + + } + + private void OnToggleLawsScreen(EntityUid uid, SiliconLawBoundComponent component, ToggleLawsScreenEvent args) { if (args.Handled || !TryComp<ActorComponent>(uid, out var actor)) @@ -119,9 +133,11 @@ private void OnIonStormLaws(EntityUid uid, SiliconLawProviderComponent component // gotta tell player to check their laws NotifyLawsChanged(uid, component.LawUploadSound); + // Show the silicon has been subverted. + component.Subverted = true; + // new laws may allow antagonist behaviour so make it clear for admins - if (TryComp<EmagSiliconLawComponent>(uid, out var emag)) - EnsureEmaggedRole(uid, emag); + EnsureSubvertedSiliconRole(uid); } } @@ -132,6 +148,9 @@ private void OnEmagLawsAdded(EntityUid uid, SiliconLawProviderComponent componen if (component.Lawset == null) component.Lawset = GetLawset(component.Laws); + // Show the silicon has been subverted. + component.Subverted = true; + // Add the first emag law before the others component.Lawset?.Laws.Insert(0, new SiliconLaw { @@ -154,58 +173,29 @@ protected override void OnGotEmagged(EntityUid uid, EmagSiliconLawComponent comp base.OnGotEmagged(uid, component, ref args); NotifyLawsChanged(uid, component.EmaggedSound); - EnsureEmaggedRole(uid, component); + EnsureSubvertedSiliconRole(uid); _stunSystem.TryParalyze(uid, component.StunTime, true); } - private void OnEmagMindAdded(EntityUid uid, EmagSiliconLawComponent component, MindAddedMessage args) - { - if (HasComp<EmaggedComponent>(uid)) - EnsureEmaggedRole(uid, component); - } - - private void OnEmagMindRemoved(EntityUid uid, EmagSiliconLawComponent component, MindRemovedMessage args) + private void EnsureSubvertedSiliconRole(EntityUid uid) { - if (component.AntagonistRole == null) - return; - - _roles.MindTryRemoveRole<SubvertedSiliconRoleComponent>(args.Mind); - } - - private void EnsureEmaggedRole(EntityUid uid, EmagSiliconLawComponent component) - { - if (component.AntagonistRole == null || !_mind.TryGetMind(uid, out var mindId, out _)) + if (!_mind.TryGetMind(uid, out var mindId, out _)) return; if (!_roles.MindHasRole<SubvertedSiliconRoleComponent>(mindId)) _roles.MindAddRole(mindId, "MindRoleSubvertedSilicon"); - } - - private void OnStartIonStormedMindAdded(EntityUid uid, StartIonStormedComponent component, MindAddedMessage args) - { - if (HasComp<StartIonStormedComponent>(uid)) - EnsureStartIonStormedRole(uid, component); - } - private void OnStartIonStormedMindRemoved(EntityUid uid, StartIonStormedComponent component, MindRemovedMessage args) - { - if (component.AntagonistRole == null) - return; - - _roles.MindTryRemoveRole<SubvertedSiliconRoleComponent>(args.Mind); } - private void EnsureStartIonStormedRole(EntityUid uid, StartIonStormedComponent component) + private void RemoveSubvertedSiliconRole(EntityUid uid) { - if (component.AntagonistRole == null || !_mind.TryGetMind(uid, out var mindId, out _)) + if (!_mind.TryGetMind(uid, out var mindId, out _)) return; if (_roles.MindHasRole<SubvertedSiliconRoleComponent>(mindId)) - return; - - _roles.MindAddRole(mindId, new SubvertedSiliconRoleComponent { PrototypeId = component.AntagonistRole }); + _roles.MindTryRemoveRole<SubvertedSiliconRoleComponent>(mindId); } public SiliconLawset GetLaws(EntityUid uid, SiliconLawBoundComponent? component = null) diff --git a/Content.Server/Silicons/Laws/StartIonStormedSystem.cs b/Content.Server/Silicons/Laws/StartIonStormedSystem.cs deleted file mode 100644 index ee2ce7b9edd..00000000000 --- a/Content.Server/Silicons/Laws/StartIonStormedSystem.cs +++ /dev/null @@ -1,38 +0,0 @@ -using Content.Shared.Silicons.Laws.Components; -using Content.Shared.Administration.Logs; -using Content.Shared.Database; - -namespace Content.Server.Silicons.Laws; - -/// <summary> -/// This handles running the ion storm event a on specific entity when that entity is spawned in. -/// </summary> -public sealed class StartIonStormedSystem : EntitySystem -{ - [Dependency] private readonly IonStormSystem _ionStorm = default!; - [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; - [Dependency] private readonly SiliconLawSystem _siliconLaw = default!; - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent<StartIonStormedComponent, MapInitEvent>(OnMapInit); - } - - //private void OnMapInit(EntityUid uid, StartIonStormedComponent component, ref MapInitEvent args)' - private void OnMapInit(Entity<StartIonStormedComponent> ent, ref MapInitEvent args) - { - if (!TryComp<SiliconLawBoundComponent>(ent.Owner, out var lawBound)) - return; - if (!TryComp<IonStormTargetComponent>(ent.Owner, out var target)) - return; - - for (int currentIonStorm = 0; currentIonStorm < ent.Comp.IonStormAmount; currentIonStorm++) - { - _ionStorm.IonStormTarget((ent.Owner, lawBound, target), false); - } - - var laws = _siliconLaw.GetLaws(ent.Owner, lawBound); - _adminLogger.Add(LogType.Mind, LogImpact.High, $"{ToPrettyString(ent.Owner):silicon} spawned with ion stormed laws: {laws.LoggingString()}"); - } -} diff --git a/Content.Shared/Silicons/Laws/Components/EmagSiliconLawComponent.cs b/Content.Shared/Silicons/Laws/Components/EmagSiliconLawComponent.cs index 1b5338a7f75..5fe867ae29a 100644 --- a/Content.Shared/Silicons/Laws/Components/EmagSiliconLawComponent.cs +++ b/Content.Shared/Silicons/Laws/Components/EmagSiliconLawComponent.cs @@ -29,13 +29,6 @@ public sealed partial class EmagSiliconLawComponent : Component [DataField, ViewVariables(VVAccess.ReadWrite)] public TimeSpan StunTime = TimeSpan.Zero; - /// <summary> - /// A role given to entities with this component when they are emagged. - /// Mostly just for admin purposes. - /// </summary> - [DataField] - public ProtoId<AntagPrototype>? AntagonistRole = "SubvertedSilicon"; - /// <summary> /// The sound that plays for the borg player /// to let them know they've been emagged diff --git a/Content.Shared/Silicons/Laws/Components/SiliconLawProviderComponent.cs b/Content.Shared/Silicons/Laws/Components/SiliconLawProviderComponent.cs index 4885bd0265c..d78e539aa96 100644 --- a/Content.Shared/Silicons/Laws/Components/SiliconLawProviderComponent.cs +++ b/Content.Shared/Silicons/Laws/Components/SiliconLawProviderComponent.cs @@ -29,4 +29,10 @@ public sealed partial class SiliconLawProviderComponent : Component [DataField] public SoundSpecifier? LawUploadSound = new SoundPathSpecifier("/Audio/Misc/cryo_warning.ogg"); + /// <summary> + /// Whether this silicon is subverted by an ion storm or emag. + /// </summary> + [DataField] + public bool Subverted = false; + } diff --git a/Content.Shared/Silicons/Laws/Components/StartIonStormedComponent.cs b/Content.Shared/Silicons/Laws/Components/StartIonStormedComponent.cs deleted file mode 100644 index 75d74121669..00000000000 --- a/Content.Shared/Silicons/Laws/Components/StartIonStormedComponent.cs +++ /dev/null @@ -1,24 +0,0 @@ -using Content.Shared.Roles; -using Robust.Shared.Prototypes; - -namespace Content.Shared.Silicons.Laws.Components; - -/// <summary> -/// Applies law altering ion storms on a specific entity IonStormAmount times when the entity is spawned. -/// </summary> -[RegisterComponent] -public sealed partial class StartIonStormedComponent : Component -{ - /// <summary> - /// Amount of times that the ion storm will be run on the entity on spawn. - /// </summary> - [DataField] - public int IonStormAmount = 1; - - /// <summary> - /// A role given to entities with this component when a mind enters it. - /// Mostly just for admin purposes. - /// </summary> - [DataField] - public ProtoId<AntagPrototype>? AntagonistRole = "SubvertedSilicon"; -} From ace158df0e5e335f8e7897ffe6f93f8ac8448865 Mon Sep 17 00:00:00 2001 From: ScarKy0 <scarky0@onet.eu> Date: Thu, 14 Nov 2024 17:53:15 +0100 Subject: [PATCH 083/187] Yippee! --- Content.Server/Silicons/Laws/SiliconLawSystem.cs | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/Content.Server/Silicons/Laws/SiliconLawSystem.cs b/Content.Server/Silicons/Laws/SiliconLawSystem.cs index a4a7ee528f7..9b3e279b75e 100644 --- a/Content.Server/Silicons/Laws/SiliconLawSystem.cs +++ b/Content.Server/Silicons/Laws/SiliconLawSystem.cs @@ -75,14 +75,14 @@ private void OnLawProviderMindAdded(EntityUid uid, SiliconLawProviderComponent c { if (!component.Subverted) return; - EnsureSubvertedSiliconRole(uid); + EnsureSubvertedSiliconRole(args.Mind); } private void OnLawProviderMindRemoved(EntityUid uid, SiliconLawProviderComponent component, MindRemovedMessage args) { if (!component.Subverted) return; - RemoveSubvertedSiliconRole(uid); + RemoveSubvertedSiliconRole(args.Mind); } @@ -179,21 +179,14 @@ protected override void OnGotEmagged(EntityUid uid, EmagSiliconLawComponent comp } - private void EnsureSubvertedSiliconRole(EntityUid uid) + private void EnsureSubvertedSiliconRole(EntityUid mindId) { - if (!_mind.TryGetMind(uid, out var mindId, out _)) - return; - if (!_roles.MindHasRole<SubvertedSiliconRoleComponent>(mindId)) _roles.MindAddRole(mindId, "MindRoleSubvertedSilicon"); - } - private void RemoveSubvertedSiliconRole(EntityUid uid) + private void RemoveSubvertedSiliconRole(EntityUid mindId) { - if (!_mind.TryGetMind(uid, out var mindId, out _)) - return; - if (_roles.MindHasRole<SubvertedSiliconRoleComponent>(mindId)) _roles.MindTryRemoveRole<SubvertedSiliconRoleComponent>(mindId); } From 815e37e512ce7d1df152bac1642b769cf3e9bb32 Mon Sep 17 00:00:00 2001 From: CheddaCheez <cheddacheezy@gmail.com> Date: Thu, 14 Nov 2024 10:56:21 -0600 Subject: [PATCH 084/187] Fix mime broken vow alert (#33303) Swap VowAlert and VowBrokenAlert on lines 149 and 150 so that the proper alerts are cleared and shown --- Content.Server/Abilities/Mime/MimePowersSystem.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Server/Abilities/Mime/MimePowersSystem.cs b/Content.Server/Abilities/Mime/MimePowersSystem.cs index 20889f293c3..bd8cf7c1766 100644 --- a/Content.Server/Abilities/Mime/MimePowersSystem.cs +++ b/Content.Server/Abilities/Mime/MimePowersSystem.cs @@ -146,8 +146,8 @@ public void RetakeVow(EntityUid uid, MimePowersComponent? mimePowers = null) mimePowers.ReadyToRepent = false; mimePowers.VowBroken = false; AddComp<MutedComponent>(uid); - _alertsSystem.ClearAlert(uid, mimePowers.VowAlert); - _alertsSystem.ShowAlert(uid, mimePowers.VowBrokenAlert); + _alertsSystem.ClearAlert(uid, mimePowers.VowBrokenAlert); + _alertsSystem.ShowAlert(uid, mimePowers.VowAlert); _actionsSystem.AddAction(uid, ref mimePowers.InvisibleWallActionEntity, mimePowers.InvisibleWallAction, uid); } } From 669bc148f91980f983b691d1e516b1b8d627a315 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Thu, 14 Nov 2024 16:57:29 +0000 Subject: [PATCH 085/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 9cc788c96f7..eb3f7268008 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Blackern5000 - changes: - - message: Combat medical kits now contain saline syringes. - type: Add - id: 7108 - time: '2024-08-14T06:25:54.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/29954 - author: TheShuEd changes: - message: added morbilliard variants of procedural tacos and kebabs @@ -3941,3 +3934,10 @@ id: 7607 time: '2024-11-13T23:36:37.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33201 +- author: CheddaCheez + changes: + - message: Fixed mimes being unable to break their vow more than once. Despicable! + type: Fix + id: 7608 + time: '2024-11-14T16:56:22.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33303 From 1bebb3390ccedfdae173f0f681be6578146057ca Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers <pieterjan.briers+git@gmail.com> Date: Thu, 14 Nov 2024 18:08:35 +0100 Subject: [PATCH 086/187] Borg type switching. (#32586) * Borg type switching. This allows borgs (new spawn or constructed) to select their chassis type on creation, like in SS13. This removes the need for the many different chassis types, and means round-start borgs can actually play the game immediately instead of waiting for science to unlock everything. New borgs have an additional action that allows them to select their type. This opens a nice window with basic information about the borgs and a select button. Once a type has been selected it is permanent for that borg chassis. These borg types also immediately start the borg with specific modules, so they do not need to be printed. Additional modules can still be inserted for upgrades, though this is now less critical. The built-in modules cannot be removed, but are shown in the UI. The modules that each borg type starts with: * Generic: tools * Engineering: advanced tools, construction, RCD, cable * Salvage: Grappling gun, appraisal, mining * Janitor: cleaning, light replacer * Medical: treatment * Service: music, service, clowning Specialized borgs have 3 additional module slots available on top of the ones listed above, generic borgs have 5. Borg types are specified in a new BorgTypePrototype. These prototypes specify all information about the borg type. It is assigned to the borg entity through a mix of client side, server, and shared code. Some of the involved components were made networked, others are just ensured they're set on both sides of the wire. The most gnarly change is the inventory template prototype, which needs to change purely to modify the borg hat offset. I managed to bodge this in with an API that *probably* won't explode for specifically for this use case, but it's still not the most clean of API designs. Parts for specific borg chassis have been removed (so much deleted YAML) and specialized borg modules that are in the base set of a type have been removed from the exosuit fab as there's no point to printing those. The ability to "downgrade" a borg so it can select a new chassis, like in SS13, is something that would be nice, but was not high enough priority for me to block the feature on. I did keep it in mind with some of the code, so it may be possible in the future. There is no fancy animation when selecting borg types like in SS13, because I didn't think it was high priority, and it would add a lot of complex code. * Fix sandbox failure due to collection expression. * Module tweak Fix salvage borg modules still having research/lathe recipes Engie borg has regular tool module, not advanced. * Fix inventory system breakage * Fix migrations Some things were missing * Guidebook rewordings & review * MinWidth on confirm selection button --- .../Clothing/ClientClothingSystem.cs | 24 +- .../Inventory/ClientInventorySystem.cs | 16 +- Content.Client/Overlays/EquipmentHudSystem.cs | 3 +- .../Overlays/ShowHealthBarsSystem.cs | 7 + .../Overlays/ShowHealthIconsSystem.cs | 7 + .../Silicons/Borgs/BorgMenu.xaml.cs | 3 +- .../Silicons/Borgs/BorgModuleControl.xaml.cs | 3 +- .../Silicons/Borgs/BorgSelectTypeMenu.xaml | 43 ++ .../Silicons/Borgs/BorgSelectTypeMenu.xaml.cs | 81 +++ .../Borgs/BorgSelectTypeUserInterface.cs | 30 ++ .../Borgs/BorgSwitchableTypeSystem.cs | 81 +++ Content.Client/Silicons/Borgs/BorgSystem.cs | 14 + .../Borgs/BorgSwitchableTypeSystem.cs | 82 +++ .../Silicons/Borgs/BorgSystem.Modules.cs | 39 ++ .../Silicons/Borgs/BorgSystem.Transponder.cs | 17 + .../Silicons/Borgs/BorgSystem.Ui.cs | 3 + Content.Server/Silicons/Borgs/BorgSystem.cs | 15 +- .../Interaction/InteractionPopupSystem.cs | 22 + .../Inventory/InventoryComponent.cs | 10 +- .../Inventory/InventorySystem.Slots.cs | 49 ++ .../Overlays/ShowHealthBarsComponent.cs | 2 + .../Overlays/ShowHealthIconsComponent.cs | 2 + .../Silicons/Borgs/BorgTypePrototype.cs | 155 ++++++ .../Borgs/Components/BorgChassisComponent.cs | 15 +- .../Borgs/Components/BorgModuleComponent.cs | 8 + .../Components/BorgSwitchableTypeComponent.cs | 72 +++ .../Borgs/SharedBorgSwitchableTypeSystem.cs | 125 +++++ .../Silicons/Borgs/SharedBorgSystem.cs | 9 + Resources/Locale/en-US/borg/borg.ftl | 37 ++ Resources/Prototypes/Actions/borgs.yml | 12 + Resources/Prototypes/Body/Parts/silicon.yml | 47 +- .../Mobs/Cyborgs/base_borg_chassis.yml | 7 + .../Entities/Mobs/Cyborgs/borg_chassis.yml | 319 ++--------- .../Entities/Mobs/Player/silicon.yml | 21 +- .../Objects/Specific/Robotics/borg_parts.yml | 503 ------------------ .../Specific/Robotics/endoskeleton.yml | 169 +----- .../Entities/Structures/Machines/lathe.yml | 40 -- .../Prototypes/InventoryTemplates/borg.yml | 3 +- .../Construction/Graphs/machines/cyborg.yml | 173 +----- .../Prototypes/Recipes/Lathes/robotics.yml | 220 -------- .../Prototypes/Research/civilianservices.yml | 3 - Resources/Prototypes/Research/industrial.yml | 3 - .../Prototypes/Roles/Jobs/Science/borg.yml | 2 +- Resources/Prototypes/borg_types.yml | 218 ++++++++ Resources/Prototypes/tags.yml | 99 +--- .../ServerInfo/Guidebook/Science/Cyborgs.xml | 16 +- .../Actions/actions_borg.rsi/meta.json | 5 +- .../Actions/actions_borg.rsi/select-type.png | Bin 0 -> 408 bytes Resources/migration.yml | 35 ++ 49 files changed, 1336 insertions(+), 1533 deletions(-) create mode 100644 Content.Client/Silicons/Borgs/BorgSelectTypeMenu.xaml create mode 100644 Content.Client/Silicons/Borgs/BorgSelectTypeMenu.xaml.cs create mode 100644 Content.Client/Silicons/Borgs/BorgSelectTypeUserInterface.cs create mode 100644 Content.Client/Silicons/Borgs/BorgSwitchableTypeSystem.cs create mode 100644 Content.Server/Silicons/Borgs/BorgSwitchableTypeSystem.cs create mode 100644 Content.Shared/Silicons/Borgs/BorgTypePrototype.cs create mode 100644 Content.Shared/Silicons/Borgs/Components/BorgSwitchableTypeComponent.cs create mode 100644 Content.Shared/Silicons/Borgs/SharedBorgSwitchableTypeSystem.cs delete mode 100644 Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_parts.yml create mode 100644 Resources/Prototypes/borg_types.yml create mode 100644 Resources/Textures/Interface/Actions/actions_borg.rsi/select-type.png diff --git a/Content.Client/Clothing/ClientClothingSystem.cs b/Content.Client/Clothing/ClientClothingSystem.cs index 3462fc92360..46f879e8156 100644 --- a/Content.Client/Clothing/ClientClothingSystem.cs +++ b/Content.Client/Clothing/ClientClothingSystem.cs @@ -58,6 +58,7 @@ public override void Initialize() base.Initialize(); SubscribeLocalEvent<ClothingComponent, GetEquipmentVisualsEvent>(OnGetVisuals); + SubscribeLocalEvent<ClothingComponent, InventoryTemplateUpdated>(OnInventoryTemplateUpdated); SubscribeLocalEvent<InventoryComponent, VisualsChangedEvent>(OnVisualsChanged); SubscribeLocalEvent<SpriteComponent, DidUnequipEvent>(OnDidUnequip); @@ -70,11 +71,7 @@ private void OnAppearanceUpdate(EntityUid uid, InventoryComponent component, ref if (args.Sprite == null) return; - var enumerator = _inventorySystem.GetSlotEnumerator((uid, component)); - while (enumerator.NextItem(out var item, out var slot)) - { - RenderEquipment(uid, item, slot.Name, component); - } + UpdateAllSlots(uid, component); // No clothing equipped -> make sure the layer is hidden, though this should already be handled by on-unequip. if (args.Sprite.LayerMapTryGet(HumanoidVisualLayers.StencilMask, out var layer)) @@ -84,6 +81,23 @@ private void OnAppearanceUpdate(EntityUid uid, InventoryComponent component, ref } } + private void OnInventoryTemplateUpdated(Entity<ClothingComponent> ent, ref InventoryTemplateUpdated args) + { + UpdateAllSlots(ent.Owner, clothing: ent.Comp); + } + + private void UpdateAllSlots( + EntityUid uid, + InventoryComponent? inventoryComponent = null, + ClothingComponent? clothing = null) + { + var enumerator = _inventorySystem.GetSlotEnumerator((uid, inventoryComponent)); + while (enumerator.NextItem(out var item, out var slot)) + { + RenderEquipment(uid, item, slot.Name, inventoryComponent, clothingComponent: clothing); + } + } + private void OnGetVisuals(EntityUid uid, ClothingComponent item, GetEquipmentVisualsEvent args) { if (!TryComp(args.Equipee, out InventoryComponent? inventory)) diff --git a/Content.Client/Inventory/ClientInventorySystem.cs b/Content.Client/Inventory/ClientInventorySystem.cs index 87cea4e3d2f..dce401eefda 100644 --- a/Content.Client/Inventory/ClientInventorySystem.cs +++ b/Content.Client/Inventory/ClientInventorySystem.cs @@ -235,9 +235,23 @@ public void UIInventoryAltActivateItem(string slot, EntityUid uid) EntityManager.RaisePredictiveEvent(new InteractInventorySlotEvent(GetNetEntity(item.Value), altInteract: true)); } + protected override void UpdateInventoryTemplate(Entity<InventoryComponent> ent) + { + base.UpdateInventoryTemplate(ent); + + if (TryComp(ent, out InventorySlotsComponent? inventorySlots)) + { + foreach (var slot in ent.Comp.Slots) + { + if (inventorySlots.SlotData.TryGetValue(slot.Name, out var slotData)) + slotData.SlotDef = slot; + } + } + } + public sealed class SlotData { - public readonly SlotDefinition SlotDef; + public SlotDefinition SlotDef; public EntityUid? HeldEntity => Container?.ContainedEntity; public bool Blocked; public bool Highlighted; diff --git a/Content.Client/Overlays/EquipmentHudSystem.cs b/Content.Client/Overlays/EquipmentHudSystem.cs index c7578b6793f..502a1f36274 100644 --- a/Content.Client/Overlays/EquipmentHudSystem.cs +++ b/Content.Client/Overlays/EquipmentHudSystem.cs @@ -14,6 +14,7 @@ public abstract class EquipmentHudSystem<T> : EntitySystem where T : IComponent { [Dependency] private readonly IPlayerManager _player = default!; + [ViewVariables] protected bool IsActive; protected virtual SlotFlags TargetSlots => ~SlotFlags.POCKET; @@ -102,7 +103,7 @@ protected virtual void OnRefreshComponentHud(EntityUid uid, T component, Refresh args.Components.Add(component); } - private void RefreshOverlay(EntityUid uid) + protected void RefreshOverlay(EntityUid uid) { if (uid != _player.LocalSession?.AttachedEntity) return; diff --git a/Content.Client/Overlays/ShowHealthBarsSystem.cs b/Content.Client/Overlays/ShowHealthBarsSystem.cs index 1eb712a8988..b23209ff202 100644 --- a/Content.Client/Overlays/ShowHealthBarsSystem.cs +++ b/Content.Client/Overlays/ShowHealthBarsSystem.cs @@ -21,9 +21,16 @@ public override void Initialize() { base.Initialize(); + SubscribeLocalEvent<ShowHealthBarsComponent, AfterAutoHandleStateEvent>(OnHandleState); + _overlay = new(EntityManager, _prototype); } + private void OnHandleState(Entity<ShowHealthBarsComponent> ent, ref AfterAutoHandleStateEvent args) + { + RefreshOverlay(ent); + } + protected override void UpdateInternal(RefreshEquipmentHudEvent<ShowHealthBarsComponent> component) { base.UpdateInternal(component); diff --git a/Content.Client/Overlays/ShowHealthIconsSystem.cs b/Content.Client/Overlays/ShowHealthIconsSystem.cs index 8c22c78f17c..b4d845e4217 100644 --- a/Content.Client/Overlays/ShowHealthIconsSystem.cs +++ b/Content.Client/Overlays/ShowHealthIconsSystem.cs @@ -17,6 +17,7 @@ public sealed class ShowHealthIconsSystem : EquipmentHudSystem<ShowHealthIconsCo { [Dependency] private readonly IPrototypeManager _prototypeMan = default!; + [ViewVariables] public HashSet<string> DamageContainers = new(); public override void Initialize() @@ -24,6 +25,7 @@ public override void Initialize() base.Initialize(); SubscribeLocalEvent<DamageableComponent, GetStatusIconsEvent>(OnGetStatusIconsEvent); + SubscribeLocalEvent<ShowHealthIconsComponent, AfterAutoHandleStateEvent>(OnHandleState); } protected override void UpdateInternal(RefreshEquipmentHudEvent<ShowHealthIconsComponent> component) @@ -43,6 +45,11 @@ protected override void DeactivateInternal() DamageContainers.Clear(); } + private void OnHandleState(Entity<ShowHealthIconsComponent> ent, ref AfterAutoHandleStateEvent args) + { + RefreshOverlay(ent); + } + private void OnGetStatusIconsEvent(Entity<DamageableComponent> entity, ref GetStatusIconsEvent args) { if (!IsActive) diff --git a/Content.Client/Silicons/Borgs/BorgMenu.xaml.cs b/Content.Client/Silicons/Borgs/BorgMenu.xaml.cs index f6a861aa057..b8f0e69c022 100644 --- a/Content.Client/Silicons/Borgs/BorgMenu.xaml.cs +++ b/Content.Client/Silicons/Borgs/BorgMenu.xaml.cs @@ -131,7 +131,8 @@ private void UpdateModulePanel() _modules.Clear(); foreach (var module in chassis.ModuleContainer.ContainedEntities) { - var control = new BorgModuleControl(module, _entity); + var moduleComponent = _entity.GetComponent<BorgModuleComponent>(module); + var control = new BorgModuleControl(module, _entity, !moduleComponent.DefaultModule); control.RemoveButtonPressed += () => { RemoveModuleButtonPressed?.Invoke(module); diff --git a/Content.Client/Silicons/Borgs/BorgModuleControl.xaml.cs b/Content.Client/Silicons/Borgs/BorgModuleControl.xaml.cs index d5cf05ba63e..245425524ca 100644 --- a/Content.Client/Silicons/Borgs/BorgModuleControl.xaml.cs +++ b/Content.Client/Silicons/Borgs/BorgModuleControl.xaml.cs @@ -9,7 +9,7 @@ public sealed partial class BorgModuleControl : PanelContainer { public Action? RemoveButtonPressed; - public BorgModuleControl(EntityUid entity, IEntityManager entityManager) + public BorgModuleControl(EntityUid entity, IEntityManager entityManager, bool canRemove) { RobustXamlLoader.Load(this); @@ -20,6 +20,7 @@ public BorgModuleControl(EntityUid entity, IEntityManager entityManager) { RemoveButtonPressed?.Invoke(); }; + RemoveButton.Visible = canRemove; } } diff --git a/Content.Client/Silicons/Borgs/BorgSelectTypeMenu.xaml b/Content.Client/Silicons/Borgs/BorgSelectTypeMenu.xaml new file mode 100644 index 00000000000..f51c2f53fd0 --- /dev/null +++ b/Content.Client/Silicons/Borgs/BorgSelectTypeMenu.xaml @@ -0,0 +1,43 @@ +<controls:FancyWindow xmlns="https://spacestation14.io" + xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls" + xmlns:customControls="clr-namespace:Content.Client.Administration.UI.CustomControls" + Title="{Loc 'borg-select-type-menu-title'}" + SetSize="550 300"> + <BoxContainer Orientation="Vertical"> + <BoxContainer Orientation="Horizontal" VerticalExpand="True"> + <!-- Left pane: selection of borg type --> + <BoxContainer Orientation="Vertical" MinWidth="200" Margin="2 0"> + <Label Text="{Loc 'borg-select-type-menu-available'}" StyleClasses="LabelHeading" /> + <ScrollContainer HScrollEnabled="False" VerticalExpand="True"> + <BoxContainer Name="SelectionsContainer" Orientation="Vertical" /> + </ScrollContainer> + </BoxContainer> + + <customControls:VSeparator /> + + <!-- Right pane: information about selected borg module, confirm button. --> + <BoxContainer Orientation="Vertical" HorizontalExpand="True" Margin="2 0"> + <Label Text="{Loc 'borg-select-type-menu-information'}" StyleClasses="LabelHeading" /> + <Control VerticalExpand="True"> + <controls:Placeholder Name="InfoPlaceholder" PlaceholderText="{Loc 'borg-select-type-menu-select-type'}" /> + <BoxContainer Name="InfoContents" Orientation="Vertical" Visible="False"> + <BoxContainer Orientation="Horizontal" Margin="0 0 0 4"> + <EntityPrototypeView Name="ChassisView" Scale="2,2" /> + <Label Name="NameLabel" HorizontalExpand="True" /> + </BoxContainer> + + <RichTextLabel Name="DescriptionLabel" VerticalExpand="True" VerticalAlignment="Top" /> + </BoxContainer> + </Control> + <controls:ConfirmButton Name="ConfirmTypeButton" Text="{Loc 'borg-select-type-menu-confirm'}" + Disabled="True" HorizontalAlignment="Right" + MinWidth="200" /> + </BoxContainer> + </BoxContainer> + + <controls:StripeBack Margin="0 0 0 4"> + <Label Text="{Loc 'borg-select-type-menu-bottom-text'}" HorizontalAlignment="Center" StyleClasses="LabelSubText" Margin="4 4 0 4"/> + </controls:StripeBack> + </BoxContainer> + +</controls:FancyWindow> diff --git a/Content.Client/Silicons/Borgs/BorgSelectTypeMenu.xaml.cs b/Content.Client/Silicons/Borgs/BorgSelectTypeMenu.xaml.cs new file mode 100644 index 00000000000..e1fbd376b54 --- /dev/null +++ b/Content.Client/Silicons/Borgs/BorgSelectTypeMenu.xaml.cs @@ -0,0 +1,81 @@ +using System.Linq; +using Content.Client.UserInterface.Controls; +using Content.Client.UserInterface.Systems.Guidebook; +using Content.Shared.Guidebook; +using Content.Shared.Silicons.Borgs; +using Content.Shared.Silicons.Borgs.Components; +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Prototypes; + +namespace Content.Client.Silicons.Borgs; + +/// <summary> +/// Menu used by borgs to select their type. +/// </summary> +/// <seealso cref="BorgSelectTypeUserInterface"/> +/// <seealso cref="BorgSwitchableTypeComponent"/> +[GenerateTypedNameReferences] +public sealed partial class BorgSelectTypeMenu : FancyWindow +{ + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + + private BorgTypePrototype? _selectedBorgType; + + public event Action<ProtoId<BorgTypePrototype>>? ConfirmedBorgType; + + [ValidatePrototypeId<GuideEntryPrototype>] + private static readonly List<ProtoId<GuideEntryPrototype>> GuidebookEntries = new() { "Cyborgs", "Robotics" }; + + public BorgSelectTypeMenu() + { + RobustXamlLoader.Load(this); + IoCManager.InjectDependencies(this); + + var group = new ButtonGroup(); + foreach (var borgType in _prototypeManager.EnumeratePrototypes<BorgTypePrototype>().OrderBy(PrototypeName)) + { + var button = new Button + { + Text = PrototypeName(borgType), + Group = group, + }; + button.OnPressed += _ => + { + _selectedBorgType = borgType; + UpdateInformation(borgType); + }; + SelectionsContainer.AddChild(button); + } + + ConfirmTypeButton.OnPressed += ConfirmButtonPressed; + HelpGuidebookIds = GuidebookEntries; + } + + private void UpdateInformation(BorgTypePrototype prototype) + { + _selectedBorgType = prototype; + + InfoContents.Visible = true; + InfoPlaceholder.Visible = false; + ConfirmTypeButton.Disabled = false; + + NameLabel.Text = PrototypeName(prototype); + DescriptionLabel.Text = Loc.GetString($"borg-type-{prototype.ID}-desc"); + ChassisView.SetPrototype(prototype.DummyPrototype); + } + + private void ConfirmButtonPressed(BaseButton.ButtonEventArgs obj) + { + if (_selectedBorgType == null) + return; + + ConfirmedBorgType?.Invoke(_selectedBorgType); + } + + private static string PrototypeName(BorgTypePrototype prototype) + { + return Loc.GetString($"borg-type-{prototype.ID}-name"); + } +} diff --git a/Content.Client/Silicons/Borgs/BorgSelectTypeUserInterface.cs b/Content.Client/Silicons/Borgs/BorgSelectTypeUserInterface.cs new file mode 100644 index 00000000000..8c76fade8c9 --- /dev/null +++ b/Content.Client/Silicons/Borgs/BorgSelectTypeUserInterface.cs @@ -0,0 +1,30 @@ +using Content.Shared.Silicons.Borgs.Components; +using JetBrains.Annotations; +using Robust.Client.UserInterface; + +namespace Content.Client.Silicons.Borgs; + +/// <summary> +/// User interface used by borgs to select their type. +/// </summary> +/// <seealso cref="BorgSelectTypeMenu"/> +/// <seealso cref="BorgSwitchableTypeComponent"/> +/// <seealso cref="BorgSwitchableTypeUiKey"/> +[UsedImplicitly] +public sealed class BorgSelectTypeUserInterface : BoundUserInterface +{ + [ViewVariables] + private BorgSelectTypeMenu? _menu; + + public BorgSelectTypeUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey) + { + } + + protected override void Open() + { + base.Open(); + + _menu = this.CreateWindow<BorgSelectTypeMenu>(); + _menu.ConfirmedBorgType += prototype => SendMessage(new BorgSelectTypeMessage(prototype)); + } +} diff --git a/Content.Client/Silicons/Borgs/BorgSwitchableTypeSystem.cs b/Content.Client/Silicons/Borgs/BorgSwitchableTypeSystem.cs new file mode 100644 index 00000000000..346dc5c276e --- /dev/null +++ b/Content.Client/Silicons/Borgs/BorgSwitchableTypeSystem.cs @@ -0,0 +1,81 @@ +using Content.Shared.Movement.Components; +using Content.Shared.Silicons.Borgs; +using Content.Shared.Silicons.Borgs.Components; +using Robust.Client.GameObjects; + +namespace Content.Client.Silicons.Borgs; + +/// <summary> +/// Client side logic for borg type switching. Sets up primarily client-side visual information. +/// </summary> +/// <seealso cref="SharedBorgSwitchableTypeSystem"/> +/// <seealso cref="BorgSwitchableTypeComponent"/> +public sealed class BorgSwitchableTypeSystem : SharedBorgSwitchableTypeSystem +{ + [Dependency] private readonly BorgSystem _borgSystem = default!; + [Dependency] private readonly AppearanceSystem _appearance = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent<BorgSwitchableTypeComponent, AfterAutoHandleStateEvent>(AfterStateHandler); + SubscribeLocalEvent<BorgSwitchableTypeComponent, ComponentStartup>(OnComponentStartup); + } + + private void OnComponentStartup(Entity<BorgSwitchableTypeComponent> ent, ref ComponentStartup args) + { + UpdateEntityAppearance(ent); + } + + private void AfterStateHandler(Entity<BorgSwitchableTypeComponent> ent, ref AfterAutoHandleStateEvent args) + { + UpdateEntityAppearance(ent); + } + + protected override void UpdateEntityAppearance( + Entity<BorgSwitchableTypeComponent> entity, + BorgTypePrototype prototype) + { + if (TryComp(entity, out SpriteComponent? sprite)) + { + sprite.LayerSetState(BorgVisualLayers.Body, prototype.SpriteBodyState); + sprite.LayerSetState(BorgVisualLayers.LightStatus, prototype.SpriteToggleLightState); + } + + if (TryComp(entity, out BorgChassisComponent? chassis)) + { + _borgSystem.SetMindStates( + (entity.Owner, chassis), + prototype.SpriteHasMindState, + prototype.SpriteNoMindState); + + if (TryComp(entity, out AppearanceComponent? appearance)) + { + // Queue update so state changes apply. + _appearance.QueueUpdate(entity, appearance); + } + } + + if (prototype.SpriteBodyMovementState is { } movementState) + { + var spriteMovement = EnsureComp<SpriteMovementComponent>(entity); + spriteMovement.NoMovementLayers.Clear(); + spriteMovement.NoMovementLayers["movement"] = new PrototypeLayerData + { + State = prototype.SpriteBodyState, + }; + spriteMovement.MovementLayers.Clear(); + spriteMovement.MovementLayers["movement"] = new PrototypeLayerData + { + State = movementState, + }; + } + else + { + RemComp<SpriteMovementComponent>(entity); + } + + base.UpdateEntityAppearance(entity, prototype); + } +} diff --git a/Content.Client/Silicons/Borgs/BorgSystem.cs b/Content.Client/Silicons/Borgs/BorgSystem.cs index e92ce5cc777..387a56384e9 100644 --- a/Content.Client/Silicons/Borgs/BorgSystem.cs +++ b/Content.Client/Silicons/Borgs/BorgSystem.cs @@ -92,4 +92,18 @@ private void OnMMIAppearanceChanged(EntityUid uid, MMIComponent component, ref A sprite.LayerSetState(MMIVisualLayers.Base, state); } } + + /// <summary> + /// Sets the sprite states used for the borg "is there a mind or not" indication. + /// </summary> + /// <param name="borg">The entity and component to modify.</param> + /// <param name="hasMindState">The state to use if the borg has a mind.</param> + /// <param name="noMindState">The state to use if the borg has no mind.</param> + /// <seealso cref="BorgChassisComponent.HasMindState"/> + /// <seealso cref="BorgChassisComponent.NoMindState"/> + public void SetMindStates(Entity<BorgChassisComponent> borg, string hasMindState, string noMindState) + { + borg.Comp.HasMindState = hasMindState; + borg.Comp.NoMindState = noMindState; + } } diff --git a/Content.Server/Silicons/Borgs/BorgSwitchableTypeSystem.cs b/Content.Server/Silicons/Borgs/BorgSwitchableTypeSystem.cs new file mode 100644 index 00000000000..d1a32a6a5ba --- /dev/null +++ b/Content.Server/Silicons/Borgs/BorgSwitchableTypeSystem.cs @@ -0,0 +1,82 @@ +using Content.Server.Inventory; +using Content.Server.Radio.Components; +using Content.Shared.Inventory; +using Content.Shared.Silicons.Borgs; +using Content.Shared.Silicons.Borgs.Components; +using Robust.Shared.Prototypes; +using Robust.Shared.Utility; + +namespace Content.Server.Silicons.Borgs; + +/// <summary> +/// Server-side logic for borg type switching. Handles more heavyweight and server-specific switching logic. +/// </summary> +public sealed class BorgSwitchableTypeSystem : SharedBorgSwitchableTypeSystem +{ + [Dependency] private readonly BorgSystem _borgSystem = default!; + [Dependency] private readonly ServerInventorySystem _inventorySystem = default!; + + protected override void SelectBorgModule(Entity<BorgSwitchableTypeComponent> ent, ProtoId<BorgTypePrototype> borgType) + { + var prototype = Prototypes.Index(borgType); + + // Assign radio channels + string[] radioChannels = [.. ent.Comp.InherentRadioChannels, .. prototype.RadioChannels]; + if (TryComp(ent, out IntrinsicRadioTransmitterComponent? transmitter)) + transmitter.Channels = [.. radioChannels]; + + if (TryComp(ent, out ActiveRadioComponent? activeRadio)) + activeRadio.Channels = [.. radioChannels]; + + // Borg transponder for the robotics console + if (TryComp(ent, out BorgTransponderComponent? transponder)) + { + _borgSystem.SetTransponderSprite( + (ent.Owner, transponder), + new SpriteSpecifier.Rsi(new ResPath("Mobs/Silicon/chassis.rsi"), prototype.SpriteBodyState)); + + _borgSystem.SetTransponderName( + (ent.Owner, transponder), + Loc.GetString($"borg-type-{borgType}-transponder")); + } + + // Configure modules + if (TryComp(ent, out BorgChassisComponent? chassis)) + { + var chassisEnt = (ent.Owner, chassis); + _borgSystem.SetMaxModules( + chassisEnt, + prototype.ExtraModuleCount + prototype.DefaultModules.Length); + + _borgSystem.SetModuleWhitelist(chassisEnt, prototype.ModuleWhitelist); + + foreach (var module in prototype.DefaultModules) + { + var moduleEntity = Spawn(module); + var borgModule = Comp<BorgModuleComponent>(moduleEntity); + _borgSystem.SetBorgModuleDefault((moduleEntity, borgModule), true); + _borgSystem.InsertModule(chassisEnt, moduleEntity); + } + } + + // Configure special components + if (Prototypes.TryIndex(ent.Comp.SelectedBorgType, out var previousPrototype)) + { + if (previousPrototype.AddComponents is { } removeComponents) + EntityManager.RemoveComponents(ent, removeComponents); + } + + if (prototype.AddComponents is { } addComponents) + { + EntityManager.AddComponents(ent, addComponents); + } + + // Configure inventory template (used for hat spacing) + if (TryComp(ent, out InventoryComponent? inventory)) + { + _inventorySystem.SetTemplateId((ent.Owner, inventory), prototype.InventoryTemplateId); + } + + base.SelectBorgModule(ent, borgType); + } +} diff --git a/Content.Server/Silicons/Borgs/BorgSystem.Modules.cs b/Content.Server/Silicons/Borgs/BorgSystem.Modules.cs index d5a429db030..f95a5807360 100644 --- a/Content.Server/Silicons/Borgs/BorgSystem.Modules.cs +++ b/Content.Server/Silicons/Borgs/BorgSystem.Modules.cs @@ -2,6 +2,7 @@ using Content.Shared.Hands.Components; using Content.Shared.Interaction.Components; using Content.Shared.Silicons.Borgs.Components; +using Content.Shared.Whitelist; using Robust.Shared.Containers; namespace Content.Server.Silicons.Borgs; @@ -300,6 +301,24 @@ public bool CanInsertModule(EntityUid uid, EntityUid module, BorgChassisComponen return true; } + /// <summary> + /// Check if a module can be removed from a borg. + /// </summary> + /// <param name="borg">The borg that the module is being removed from.</param> + /// <param name="module">The module to remove from the borg.</param> + /// <param name="user">The user attempting to remove the module.</param> + /// <returns>True if the module can be removed.</returns> + public bool CanRemoveModule( + Entity<BorgChassisComponent> borg, + Entity<BorgModuleComponent> module, + EntityUid? user = null) + { + if (module.Comp.DefaultModule) + return false; + + return true; + } + /// <summary> /// Installs and activates all modules currently inside the borg's module container /// </summary> @@ -369,4 +388,24 @@ public void UninstallModule(EntityUid uid, EntityUid module, BorgChassisComponen var ev = new BorgModuleUninstalledEvent(uid); RaiseLocalEvent(module, ref ev); } + + /// <summary> + /// Sets <see cref="BorgChassisComponent.MaxModules"/>. + /// </summary> + /// <param name="ent">The borg to modify.</param> + /// <param name="maxModules">The new max module count.</param> + public void SetMaxModules(Entity<BorgChassisComponent> ent, int maxModules) + { + ent.Comp.MaxModules = maxModules; + } + + /// <summary> + /// Sets <see cref="BorgChassisComponent.ModuleWhitelist"/>. + /// </summary> + /// <param name="ent">The borg to modify.</param> + /// <param name="whitelist">The new module whitelist.</param> + public void SetModuleWhitelist(Entity<BorgChassisComponent> ent, EntityWhitelist? whitelist) + { + ent.Comp.ModuleWhitelist = whitelist; + } } diff --git a/Content.Server/Silicons/Borgs/BorgSystem.Transponder.cs b/Content.Server/Silicons/Borgs/BorgSystem.Transponder.cs index 781f847be35..b4ba1400441 100644 --- a/Content.Server/Silicons/Borgs/BorgSystem.Transponder.cs +++ b/Content.Server/Silicons/Borgs/BorgSystem.Transponder.cs @@ -8,6 +8,7 @@ using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; using Content.Server.Explosion.Components; +using Robust.Shared.Utility; namespace Content.Server.Silicons.Borgs; @@ -134,4 +135,20 @@ private bool CheckEmagged(EntityUid uid, string name) return false; } + + /// <summary> + /// Sets <see cref="BorgTransponderComponent.Sprite"/>. + /// </summary> + public void SetTransponderSprite(Entity<BorgTransponderComponent> ent, SpriteSpecifier sprite) + { + ent.Comp.Sprite = sprite; + } + + /// <summary> + /// Sets <see cref="BorgTransponderComponent.Name"/>. + /// </summary> + public void SetTransponderName(Entity<BorgTransponderComponent> ent, string name) + { + ent.Comp.Name = name; + } } diff --git a/Content.Server/Silicons/Borgs/BorgSystem.Ui.cs b/Content.Server/Silicons/Borgs/BorgSystem.Ui.cs index d0e9f80e364..40c2c3bf332 100644 --- a/Content.Server/Silicons/Borgs/BorgSystem.Ui.cs +++ b/Content.Server/Silicons/Borgs/BorgSystem.Ui.cs @@ -82,6 +82,9 @@ private void OnRemoveModuleBuiMessage(EntityUid uid, BorgChassisComponent compon if (!component.ModuleContainer.Contains(module)) return; + if (!CanRemoveModule((uid, component), (module, Comp<BorgModuleComponent>(module)), args.Actor)) + return; + _adminLog.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(args.Actor):player} removed module {ToPrettyString(module)} from borg {ToPrettyString(uid)}"); _container.Remove(module, component.ModuleContainer); diff --git a/Content.Server/Silicons/Borgs/BorgSystem.cs b/Content.Server/Silicons/Borgs/BorgSystem.cs index bd85282a0f5..ff204bfa8ce 100644 --- a/Content.Server/Silicons/Borgs/BorgSystem.cs +++ b/Content.Server/Silicons/Borgs/BorgSystem.cs @@ -129,7 +129,7 @@ private void OnChassisInteractUsing(EntityUid uid, BorgChassisComponent componen if (module != null && CanInsertModule(uid, used, component, module, args.User)) { - _container.Insert(used, component.ModuleContainer); + InsertModule((uid, component), used); _adminLog.Add(LogType.Action, LogImpact.Low, $"{ToPrettyString(args.User):player} installed module {ToPrettyString(used)} into borg {ToPrettyString(uid)}"); args.Handled = true; @@ -137,6 +137,19 @@ private void OnChassisInteractUsing(EntityUid uid, BorgChassisComponent componen } } + /// <summary> + /// Inserts a new module into a borg, the same as if a player inserted it manually. + /// </summary> + /// <para> + /// This does not run checks to see if the borg is actually allowed to be inserted, such as whitelists. + /// </para> + /// <param name="ent">The borg to insert into.</param> + /// <param name="module">The module to insert.</param> + public void InsertModule(Entity<BorgChassisComponent> ent, EntityUid module) + { + _container.Insert(module, ent.Comp.ModuleContainer); + } + // todo: consider transferring over the ghost role? managing that might suck. protected override void OnInserted(EntityUid uid, BorgChassisComponent component, EntInsertedIntoContainerMessage args) { diff --git a/Content.Shared/Interaction/InteractionPopupSystem.cs b/Content.Shared/Interaction/InteractionPopupSystem.cs index 20c079dfd8c..8df0035fc98 100644 --- a/Content.Shared/Interaction/InteractionPopupSystem.cs +++ b/Content.Shared/Interaction/InteractionPopupSystem.cs @@ -159,4 +159,26 @@ private void SharedInteract( _audio.PlayEntity(sfx, Filter.Empty().FromEntities(target), target, false); } } + + /// <summary> + /// Sets <see cref="InteractionPopupComponent.InteractSuccessString"/>. + /// </summary> + /// <para> + /// This field is not networked automatically, so this method must be called on both sides of the network. + /// </para> + public void SetInteractSuccessString(Entity<InteractionPopupComponent> ent, string str) + { + ent.Comp.InteractSuccessString = str; + } + + /// <summary> + /// Sets <see cref="InteractionPopupComponent.InteractFailureString"/>. + /// </summary> + /// <para> + /// This field is not networked automatically, so this method must be called on both sides of the network. + /// </para> + public void SetInteractFailureString(Entity<InteractionPopupComponent> ent, string str) + { + ent.Comp.InteractFailureString = str; + } } diff --git a/Content.Shared/Inventory/InventoryComponent.cs b/Content.Shared/Inventory/InventoryComponent.cs index 629cf1169c4..61e0114ff24 100644 --- a/Content.Shared/Inventory/InventoryComponent.cs +++ b/Content.Shared/Inventory/InventoryComponent.cs @@ -7,10 +7,12 @@ namespace Content.Shared.Inventory; [RegisterComponent, NetworkedComponent] [Access(typeof(InventorySystem))] +[AutoGenerateComponentState(true)] public sealed partial class InventoryComponent : Component { [DataField("templateId", customTypeSerializer: typeof(PrototypeIdSerializer<InventoryTemplatePrototype>))] - public string TemplateId { get; private set; } = "human"; + [AutoNetworkedField] + public string TemplateId { get; set; } = "human"; [DataField("speciesId")] public string? SpeciesId { get; set; } @@ -32,3 +34,9 @@ public sealed partial class InventoryComponent : Component [DataField] public Dictionary<string, DisplacementData> MaleDisplacements = new(); } + +/// <summary> +/// Raised if the <see cref="InventoryComponent.TemplateId"/> of an inventory changed. +/// </summary> +[ByRefEvent] +public struct InventoryTemplateUpdated; diff --git a/Content.Shared/Inventory/InventorySystem.Slots.cs b/Content.Shared/Inventory/InventorySystem.Slots.cs index 2522dd5d0a3..04d58c1cd52 100644 --- a/Content.Shared/Inventory/InventorySystem.Slots.cs +++ b/Content.Shared/Inventory/InventorySystem.Slots.cs @@ -1,4 +1,5 @@ using System.Diagnostics.CodeAnalysis; +using System.Linq; using Content.Shared.Inventory.Events; using Content.Shared.Storage; using Robust.Shared.Containers; @@ -19,6 +20,8 @@ private void InitializeSlots() _vvm.GetTypeHandler<InventoryComponent>() .AddHandler(HandleViewVariablesSlots, ListViewVariablesSlots); + + SubscribeLocalEvent<InventoryComponent, AfterAutoHandleStateEvent>(AfterAutoState); } private void ShutdownSlots() @@ -68,6 +71,27 @@ protected virtual void OnInit(EntityUid uid, InventoryComponent component, Compo } } + private void AfterAutoState(Entity<InventoryComponent> ent, ref AfterAutoHandleStateEvent args) + { + UpdateInventoryTemplate(ent); + } + + protected virtual void UpdateInventoryTemplate(Entity<InventoryComponent> ent) + { + if (ent.Comp.LifeStage < ComponentLifeStage.Initialized) + return; + + if (!_prototypeManager.TryIndex(ent.Comp.TemplateId, out InventoryTemplatePrototype? invTemplate)) + return; + + DebugTools.Assert(ent.Comp.Slots.Length == invTemplate.Slots.Length); + + ent.Comp.Slots = invTemplate.Slots; + + var ev = new InventoryTemplateUpdated(); + RaiseLocalEvent(ent, ref ev); + } + private void OnOpenSlotStorage(OpenSlotStorageNetworkMessage ev, EntitySessionEventArgs args) { if (args.SenderSession.AttachedEntity is not { Valid: true } uid) @@ -170,6 +194,31 @@ private IEnumerable<string> ListViewVariablesSlots(EntityUid uid, InventoryCompo } } + /// <summary> + /// Change the inventory template ID an entity is using. The new template must be compatible. + /// </summary> + /// <remarks> + /// <para> + /// For an inventory template to be compatible with another, it must have exactly the same slot names. + /// All other changes are rejected. + /// </para> + /// </remarks> + /// <param name="ent">The entity to update.</param> + /// <param name="newTemplate">The ID of the new inventory template prototype.</param> + /// <exception cref="ArgumentException"> + /// Thrown if the new template is not compatible with the existing one. + /// </exception> + public void SetTemplateId(Entity<InventoryComponent> ent, ProtoId<InventoryTemplatePrototype> newTemplate) + { + var newPrototype = _prototypeManager.Index(newTemplate); + + if (!newPrototype.Slots.Select(x => x.Name).SequenceEqual(ent.Comp.Slots.Select(x => x.Name))) + throw new ArgumentException("Incompatible inventory template!"); + + ent.Comp.TemplateId = newTemplate; + Dirty(ent); + } + /// <summary> /// Enumerator for iterating over an inventory's slot containers. Also has methods that skip empty containers. /// It should be safe to add or remove items while enumerating. diff --git a/Content.Shared/Overlays/ShowHealthBarsComponent.cs b/Content.Shared/Overlays/ShowHealthBarsComponent.cs index cb4f0fe7dd4..3f27885db18 100644 --- a/Content.Shared/Overlays/ShowHealthBarsComponent.cs +++ b/Content.Shared/Overlays/ShowHealthBarsComponent.cs @@ -9,12 +9,14 @@ namespace Content.Shared.Overlays; /// This component allows you to see health bars above damageable mobs. /// </summary> [RegisterComponent, NetworkedComponent] +[AutoGenerateComponentState(true)] public sealed partial class ShowHealthBarsComponent : Component { /// <summary> /// Displays health bars of the damage containers. /// </summary> [DataField] + [AutoNetworkedField] public List<ProtoId<DamageContainerPrototype>> DamageContainers = new() { "Biological" diff --git a/Content.Shared/Overlays/ShowHealthIconsComponent.cs b/Content.Shared/Overlays/ShowHealthIconsComponent.cs index aa12c9887a8..bc8b5419d2a 100644 --- a/Content.Shared/Overlays/ShowHealthIconsComponent.cs +++ b/Content.Shared/Overlays/ShowHealthIconsComponent.cs @@ -8,12 +8,14 @@ namespace Content.Shared.Overlays; /// This component allows you to see health status icons above damageable mobs. /// </summary> [RegisterComponent, NetworkedComponent] +[AutoGenerateComponentState(true)] public sealed partial class ShowHealthIconsComponent : Component { /// <summary> /// Displays health status icons of the damage containers. /// </summary> [DataField] + [AutoNetworkedField] public List<ProtoId<DamageContainerPrototype>> DamageContainers = new() { "Biological" diff --git a/Content.Shared/Silicons/Borgs/BorgTypePrototype.cs b/Content.Shared/Silicons/Borgs/BorgTypePrototype.cs new file mode 100644 index 00000000000..6154c127577 --- /dev/null +++ b/Content.Shared/Silicons/Borgs/BorgTypePrototype.cs @@ -0,0 +1,155 @@ +using Content.Shared.Interaction.Components; +using Content.Shared.Inventory; +using Content.Shared.Radio; +using Content.Shared.Silicons.Borgs.Components; +using Content.Shared.Whitelist; +using Robust.Shared.Audio; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Silicons.Borgs; + +/// <summary> +/// Information for a borg type that can be selected by <see cref="BorgSwitchableTypeComponent"/>. +/// </summary> +/// <seealso cref="SharedBorgSwitchableTypeSystem"/> +[Prototype] +public sealed partial class BorgTypePrototype : IPrototype +{ + [ValidatePrototypeId<SoundCollectionPrototype>] + private static readonly ProtoId<SoundCollectionPrototype> DefaultFootsteps = new("FootstepBorg"); + + [IdDataField] + public required string ID { get; init; } + + // + // Description info (name/desc) is configured via localization strings directly. + // + + /// <summary> + /// The prototype displayed in the selection menu for this type. + /// </summary> + [DataField] + public required EntProtoId DummyPrototype { get; init; } + + // + // Functional information + // + + /// <summary> + /// The amount of free module slots this borg type has. + /// </summary> + /// <remarks> + /// This count is on top of the modules specified in <see cref="DefaultModules"/>. + /// </remarks> + /// <seealso cref="BorgChassisComponent.ModuleCount"/> + [DataField] + public int ExtraModuleCount { get; set; } = 0; + + /// <summary> + /// The whitelist for borg modules that can be inserted into this borg type. + /// </summary> + /// <seealso cref="BorgChassisComponent.ModuleWhitelist"/> + [DataField] + public EntityWhitelist? ModuleWhitelist { get; set; } + + /// <summary> + /// Inventory template used by this borg. + /// </summary> + /// <remarks> + /// This template must be compatible with the normal borg templates, + /// so in practice it can only be used to differentiate the visual position of the slots on the character sprites. + /// </remarks> + /// <seealso cref="InventorySystem.SetTemplateId"/> + [DataField] + public ProtoId<InventoryTemplatePrototype> InventoryTemplateId { get; set; } = "borgShort"; + + /// <summary> + /// Radio channels that this borg will gain access to from this module. + /// </summary> + /// <remarks> + /// These channels are provided on top of the ones specified in + /// <see cref="BorgSwitchableTypeComponent.InherentRadioChannels"/>. + /// </remarks> + [DataField] + public ProtoId<RadioChannelPrototype>[] RadioChannels = []; + + /// <summary> + /// Borg module types that are always available to borgs of this type. + /// </summary> + /// <remarks> + /// These modules still work like modules, although they cannot be removed from the borg. + /// </remarks> + /// <seealso cref="BorgModuleComponent.DefaultModule"/> + [DataField] + public EntProtoId[] DefaultModules = []; + + /// <summary> + /// Additional components to add to the borg entity when this type is selected. + /// </summary> + [DataField] + public ComponentRegistry? AddComponents { get; set; } + + // + // Visual information + // + + /// <summary> + /// The sprite state for the main borg body. + /// </summary> + [DataField] + public string SpriteBodyState { get; set; } = "robot"; + + /// <summary> + /// An optional movement sprite state for the main borg body. + /// </summary> + [DataField] + public string? SpriteBodyMovementState { get; set; } + + /// <summary> + /// Sprite state used to indicate that the borg has a mind in it. + /// </summary> + /// <seealso cref="BorgChassisComponent.HasMindState"/> + [DataField] + public string SpriteHasMindState { get; set; } = "robot_e"; + + /// <summary> + /// Sprite state used to indicate that the borg has no mind in it. + /// </summary> + /// <seealso cref="BorgChassisComponent.NoMindState"/> + [DataField] + public string SpriteNoMindState { get; set; } = "robot_e_r"; + + /// <summary> + /// Sprite state used when the borg's flashlight is on. + /// </summary> + [DataField] + public string SpriteToggleLightState { get; set; } = "robot_l"; + + // + // Minor information + // + + /// <summary> + /// String to use on petting success. + /// </summary> + /// <seealso cref="InteractionPopupComponent"/> + [DataField] + public string PetSuccessString { get; set; } = "petting-success-generic-cyborg"; + + /// <summary> + /// String to use on petting failure. + /// </summary> + /// <seealso cref="InteractionPopupComponent"/> + [DataField] + public string PetFailureString { get; set; } = "petting-failure-generic-cyborg"; + + // + // Sounds + // + + /// <summary> + /// Sound specifier for footstep sounds created by this borg. + /// </summary> + [DataField] + public SoundSpecifier FootstepCollection { get; set; } = new SoundCollectionSpecifier(DefaultFootsteps); +} diff --git a/Content.Shared/Silicons/Borgs/Components/BorgChassisComponent.cs b/Content.Shared/Silicons/Borgs/Components/BorgChassisComponent.cs index de0fe0bce38..c2bf2b2801b 100644 --- a/Content.Shared/Silicons/Borgs/Components/BorgChassisComponent.cs +++ b/Content.Shared/Silicons/Borgs/Components/BorgChassisComponent.cs @@ -89,5 +89,18 @@ public enum BorgVisuals : byte [Serializable, NetSerializable] public enum BorgVisualLayers : byte { - Light + /// <summary> + /// Main borg body layer. + /// </summary> + Body, + + /// <summary> + /// Layer for the borg's mind state. + /// </summary> + Light, + + /// <summary> + /// Layer for the borg flashlight status. + /// </summary> + LightStatus, } diff --git a/Content.Shared/Silicons/Borgs/Components/BorgModuleComponent.cs b/Content.Shared/Silicons/Borgs/Components/BorgModuleComponent.cs index a7523c1ce70..e542a1e3e3e 100644 --- a/Content.Shared/Silicons/Borgs/Components/BorgModuleComponent.cs +++ b/Content.Shared/Silicons/Borgs/Components/BorgModuleComponent.cs @@ -7,6 +7,7 @@ namespace Content.Shared.Silicons.Borgs.Components; /// to give them unique abilities and attributes. /// </summary> [RegisterComponent, NetworkedComponent, Access(typeof(SharedBorgSystem))] +[AutoGenerateComponentState] public sealed partial class BorgModuleComponent : Component { /// <summary> @@ -16,6 +17,13 @@ public sealed partial class BorgModuleComponent : Component public EntityUid? InstalledEntity; public bool Installed => InstalledEntity != null; + + /// <summary> + /// If true, this is a "default" module that cannot be removed from a borg. + /// </summary> + [DataField] + [AutoNetworkedField] + public bool DefaultModule; } /// <summary> diff --git a/Content.Shared/Silicons/Borgs/Components/BorgSwitchableTypeComponent.cs b/Content.Shared/Silicons/Borgs/Components/BorgSwitchableTypeComponent.cs new file mode 100644 index 00000000000..9a783d19aa7 --- /dev/null +++ b/Content.Shared/Silicons/Borgs/Components/BorgSwitchableTypeComponent.cs @@ -0,0 +1,72 @@ +using Content.Shared.Actions; +using Content.Shared.Radio; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; + +namespace Content.Shared.Silicons.Borgs.Components; + +/// <summary> +/// Component for borgs that can switch their "type" after being created. +/// </summary> +/// <remarks> +/// <para> +/// This is used by all NT borgs, on construction and round-start spawn. +/// Borgs are effectively useless until they have made their choice of type. +/// Borg type selections are currently irreversible. +/// </para> +/// <para> +/// Available types are specified in <see cref="BorgTypePrototype"/>s. +/// </para> +/// </remarks> +/// <seealso cref="SharedBorgSwitchableTypeSystem"/> +[RegisterComponent, NetworkedComponent] +[AutoGenerateComponentState(raiseAfterAutoHandleState: true)] +[Access(typeof(SharedBorgSwitchableTypeSystem))] +public sealed partial class BorgSwitchableTypeComponent : Component +{ + /// <summary> + /// Action entity used by players to select their type. + /// </summary> + [DataField, AutoNetworkedField] + public EntityUid? SelectTypeAction; + + /// <summary> + /// The currently selected borg type, if any. + /// </summary> + /// <remarks> + /// This can be set in a prototype to immediately apply a borg type, and not have switching support. + /// </remarks> + [DataField, AutoNetworkedField] + public ProtoId<BorgTypePrototype>? SelectedBorgType; + + /// <summary> + /// Radio channels that the borg will always have. These are added on top of the selected type's radio channels. + /// </summary> + [DataField] + public ProtoId<RadioChannelPrototype>[] InherentRadioChannels = []; +} + +/// <summary> +/// Action event used to open the selection menu of a <see cref="BorgSwitchableTypeComponent"/>. +/// </summary> +public sealed partial class BorgToggleSelectTypeEvent : InstantActionEvent; + +/// <summary> +/// UI message used by a borg to select their type with <see cref="BorgSwitchableTypeComponent"/>. +/// </summary> +/// <param name="prototype">The borg type prototype that the user selected.</param> +[Serializable, NetSerializable] +public sealed class BorgSelectTypeMessage(ProtoId<BorgTypePrototype> prototype) : BoundUserInterfaceMessage +{ + public ProtoId<BorgTypePrototype> Prototype = prototype; +} + +/// <summary> +/// UI key used by the selection menu for <see cref="BorgSwitchableTypeComponent"/>. +/// </summary> +[NetSerializable, Serializable] +public enum BorgSwitchableTypeUiKey : byte +{ + SelectBorgType, +} diff --git a/Content.Shared/Silicons/Borgs/SharedBorgSwitchableTypeSystem.cs b/Content.Shared/Silicons/Borgs/SharedBorgSwitchableTypeSystem.cs new file mode 100644 index 00000000000..d9abeb2d326 --- /dev/null +++ b/Content.Shared/Silicons/Borgs/SharedBorgSwitchableTypeSystem.cs @@ -0,0 +1,125 @@ +using Content.Shared.Actions; +using Content.Shared.Interaction; +using Content.Shared.Interaction.Components; +using Content.Shared.Movement.Components; +using Content.Shared.Silicons.Borgs.Components; +using Robust.Shared.Player; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Silicons.Borgs; + +/// <summary> +/// Implements borg type switching. +/// </summary> +/// <seealso cref="BorgSwitchableTypeComponent"/> +public abstract class SharedBorgSwitchableTypeSystem : EntitySystem +{ + // TODO: Allow borgs to be reset to default configuration. + + [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; + [Dependency] private readonly SharedUserInterfaceSystem _userInterface = default!; + [Dependency] protected readonly IPrototypeManager Prototypes = default!; + [Dependency] private readonly InteractionPopupSystem _interactionPopup = default!; + + [ValidatePrototypeId<EntityPrototype>] + public const string ActionId = "ActionSelectBorgType"; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent<BorgSwitchableTypeComponent, MapInitEvent>(OnMapInit); + SubscribeLocalEvent<BorgSwitchableTypeComponent, ComponentShutdown>(OnShutdown); + SubscribeLocalEvent<BorgSwitchableTypeComponent, BorgToggleSelectTypeEvent>(OnSelectBorgTypeAction); + + Subs.BuiEvents<BorgSwitchableTypeComponent>(BorgSwitchableTypeUiKey.SelectBorgType, + sub => + { + sub.Event<BorgSelectTypeMessage>(SelectTypeMessageHandler); + }); + } + + // + // UI-adjacent code + // + + private void OnMapInit(Entity<BorgSwitchableTypeComponent> ent, ref MapInitEvent args) + { + _actionsSystem.AddAction(ent, ref ent.Comp.SelectTypeAction, ActionId); + Dirty(ent); + + if (ent.Comp.SelectedBorgType != null) + { + SelectBorgModule(ent, ent.Comp.SelectedBorgType.Value); + } + } + + private void OnShutdown(Entity<BorgSwitchableTypeComponent> ent, ref ComponentShutdown args) + { + _actionsSystem.RemoveAction(ent, ent.Comp.SelectTypeAction); + } + + private void OnSelectBorgTypeAction(Entity<BorgSwitchableTypeComponent> ent, ref BorgToggleSelectTypeEvent args) + { + if (args.Handled || !TryComp<ActorComponent>(ent, out var actor)) + return; + + args.Handled = true; + + _userInterface.TryToggleUi((ent.Owner, null), BorgSwitchableTypeUiKey.SelectBorgType, actor.PlayerSession); + } + + private void SelectTypeMessageHandler(Entity<BorgSwitchableTypeComponent> ent, ref BorgSelectTypeMessage args) + { + if (ent.Comp.SelectedBorgType != null) + return; + + if (!Prototypes.HasIndex(args.Prototype)) + return; + + SelectBorgModule(ent, args.Prototype); + } + + // + // Implementation + // + + protected virtual void SelectBorgModule( + Entity<BorgSwitchableTypeComponent> ent, + ProtoId<BorgTypePrototype> borgType) + { + ent.Comp.SelectedBorgType = borgType; + + _actionsSystem.RemoveAction(ent, ent.Comp.SelectTypeAction); + ent.Comp.SelectTypeAction = null; + Dirty(ent); + + _userInterface.CloseUi((ent.Owner, null), BorgSwitchableTypeUiKey.SelectBorgType); + + UpdateEntityAppearance(ent); + } + + protected void UpdateEntityAppearance(Entity<BorgSwitchableTypeComponent> entity) + { + if (!Prototypes.TryIndex(entity.Comp.SelectedBorgType, out var proto)) + return; + + UpdateEntityAppearance(entity, proto); + } + + protected virtual void UpdateEntityAppearance( + Entity<BorgSwitchableTypeComponent> entity, + BorgTypePrototype prototype) + { + if (TryComp(entity, out InteractionPopupComponent? popup)) + { + _interactionPopup.SetInteractSuccessString((entity.Owner, popup), prototype.PetSuccessString); + _interactionPopup.SetInteractFailureString((entity.Owner, popup), prototype.PetFailureString); + } + + if (TryComp(entity, out FootstepModifierComponent? footstepModifier)) + { + footstepModifier.FootstepSoundCollection = prototype.FootstepCollection; + } + } +} diff --git a/Content.Shared/Silicons/Borgs/SharedBorgSystem.cs b/Content.Shared/Silicons/Borgs/SharedBorgSystem.cs index c62e63481d6..827bb351b07 100644 --- a/Content.Shared/Silicons/Borgs/SharedBorgSystem.cs +++ b/Content.Shared/Silicons/Borgs/SharedBorgSystem.cs @@ -124,4 +124,13 @@ private void OnRefreshMovementSpeedModifiers(EntityUid uid, BorgChassisComponent var sprintDif = movement.BaseWalkSpeed / movement.BaseSprintSpeed; args.ModifySpeed(1f, sprintDif); } + + /// <summary> + /// Sets <see cref="BorgModuleComponent.DefaultModule"/>. + /// </summary> + public void SetBorgModuleDefault(Entity<BorgModuleComponent> ent, bool newDefault) + { + ent.Comp.DefaultModule = newDefault; + Dirty(ent); + } } diff --git a/Resources/Locale/en-US/borg/borg.ftl b/Resources/Locale/en-US/borg/borg.ftl index 6c495510b05..9c9dc71069a 100644 --- a/Resources/Locale/en-US/borg/borg.ftl +++ b/Resources/Locale/en-US/borg/borg.ftl @@ -25,3 +25,40 @@ borg-transponder-disabling-popup = Your transponder begins to lock you out of th borg-transponder-destroying-popup = The self destruct of {$name} starts beeping! borg-transponder-emagged-disabled-popup = Your transponder's lights go out! borg-transponder-emagged-destroyed-popup = Your transponder's fuse blows! + +## Borg type selection UI. +borg-select-type-menu-title = Select Chassis Type +borg-select-type-menu-bottom-text = Chassis selection is irreversible +borg-select-type-menu-available = Available types +borg-select-type-menu-information = Information +borg-select-type-menu-select-type = Select type to view information +borg-select-type-menu-confirm = Confirm selection +borg-select-type-menu-guidebook = Guidebook + +## Borg type information + +borg-type-generic-name = Generic +borg-type-generic-desc = Jack of all trades, master of none. Do various random station tasks, or maybe help out the science department that built you. +borg-type-generic-transponder = generic cyborg + +borg-type-engineering-name = Engineering +borg-type-engineering-desc = Assist the engineering team in station construction, repairing damage, or fixing electrical and atmospheric issues. +borg-type-engineering-transponder = engineering cyborg + +borg-type-mining-name = Salvage +borg-type-mining-desc = Join salvage and help them mine for materials, scavenge wrecks, and fight off hostile wildlife. +borg-type-mining-transponder = salvage cyborg + +borg-type-janitor-name = Janitor +borg-type-janitor-desc = Keep the station nice and tidy, clean up spills, collect and properly dispose of trash left around by lazy crewmembers. +borg-type-janitor-transponder = janitor cyborg + +borg-type-medical-name = Medical +borg-type-medical-desc = Provide medical attention to crew who need it, either in medbay or in hazardous areas conventional paramedics cannot reach. +borg-type-medical-transponder = medical cyborg + +borg-type-service-name = Service +borg-type-service-desc = Help out with a wide range of crew services, ranging from serving snacks and drinks to botany to entertainment. +borg-type-service-transponder = service cyborg + + diff --git a/Resources/Prototypes/Actions/borgs.yml b/Resources/Prototypes/Actions/borgs.yml index a0168ef00fc..0f635ba3ec6 100644 --- a/Resources/Prototypes/Actions/borgs.yml +++ b/Resources/Prototypes/Actions/borgs.yml @@ -10,3 +10,15 @@ state: state-laws event: !type:ToggleLawsScreenEvent useDelay: 0.5 + +- type: entity + id: ActionSelectBorgType + name: Select Cyborg Type + components: + - type: InstantAction + itemIconStyle: NoItem + icon: + sprite: Interface/Actions/actions_borg.rsi + state: select-type + event: !type:BorgToggleSelectTypeEvent + useDelay: 0.5 diff --git a/Resources/Prototypes/Body/Parts/silicon.yml b/Resources/Prototypes/Body/Parts/silicon.yml index 6b2b3f57d26..3b0f2540963 100644 --- a/Resources/Prototypes/Body/Parts/silicon.yml +++ b/Resources/Prototypes/Body/Parts/silicon.yml @@ -28,82 +28,105 @@ - Robotics - type: entity - id: BaseBorgArmLeft + id: LeftArmBorg parent: PartSilicon name: cyborg left arm - abstract: true components: - type: BodyPart partType: Hand symmetry: Left + - type: Sprite + state: borg_l_arm + - type: Icon + state: borg_l_arm - type: Tag tags: - Trash - BorgArm + - BorgLArm - type: entity - id: BaseBorgArmRight + id: RightArmBorg parent: PartSilicon name: cyborg right arm - abstract: true components: - type: BodyPart partType: Hand symmetry: Right + - type: Sprite + state: borg_r_arm + - type: Icon + state: borg_r_arm - type: Tag tags: - Trash - BorgArm + - BorgRArm - type: entity - id: BaseBorgLegLeft + id: LeftLegBorg parent: PartSilicon name: cyborg left leg - abstract: true components: - type: BodyPart partType: Leg symmetry: Left + - type: Sprite + state: borg_l_leg + - type: Icon + state: borg_l_leg - type: Tag tags: - Trash - BorgLeg + - BorgLLeg - type: entity - id: BaseBorgLegRight + id: RightLegBorg parent: PartSilicon name: cyborg right leg - abstract: true components: - type: BodyPart partType: Leg symmetry: Right + - type: Sprite + state: borg_r_leg + - type: Icon + state: borg_r_leg - type: Tag tags: - Trash - BorgLeg + - BorgRLeg - type: entity - id: BaseBorgHead + id: LightHeadBorg parent: PartSilicon name: cyborg head - abstract: true components: - type: BodyPart partType: Head + - type: Sprite + state: borg_head + - type: Icon + state: borg_head - type: Tag tags: - Trash - BorgHead - type: entity - id: BaseBorgTorso + id: TorsoBorg parent: PartSilicon name: cyborg torso - abstract: true components: - type: BodyPart partType: Torso + - type: Sprite + state: borg_chest + - type: Icon + state: borg_chest - type: Tag tags: - Trash + - BorgTorso diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index 0db92ac941d..9303bd42dd5 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -69,6 +69,9 @@ type: BorgBoundUserInterface enum.StrippingUiKey.Key: type: StrippableBoundUserInterface + # Only used for NT borgs that can switch type, defined here to avoid copy-pasting the rest of this component. + enum.BorgSwitchableTypeUiKey.SelectBorgType: + type: BorgSelectTypeUserInterface - type: ActivatableUI key: enum.BorgUiKey.Key - type: SiliconLawBound @@ -157,6 +160,7 @@ collection: FootstepBorg - type: Construction graph: Cyborg + node: cyborg containers: - part-container - cell_slot @@ -285,6 +289,9 @@ - type: AccessReader access: [["Command"], ["Research"]] - type: ShowJobIcons + - type: InteractionPopup + interactSuccessSound: + path: /Audio/Ambience/Objects/periodic_beep.ogg - type: entity id: BaseBorgChassisSyndicate diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml index 6a8f1e5abb0..fa324c0124f 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml @@ -1,23 +1,22 @@ - type: entity - id: BorgChassisGeneric + id: BorgChassisSelectable parent: BaseBorgChassisNT components: - type: Sprite layers: - state: robot + map: ["enum.BorgVisualLayers.Body", "movement"] - state: robot_e_r map: ["enum.BorgVisualLayers.Light"] shader: unshaded visible: false - state: robot_l shader: unshaded - map: ["light"] + map: ["light","enum.BorgVisualLayers.LightStatus"] visible: false - type: BorgChassis - maxModules: 6 - moduleWhitelist: - tags: - - BorgModuleGeneric + # Default borg can take no modules until selected type. + maxModules: 0 hasMindState: robot_e noMindState: robot_e_r - type: BorgTransponder @@ -25,308 +24,62 @@ sprite: Mobs/Silicon/chassis.rsi state: robot name: cyborg - - type: Construction - node: cyborg - - type: Speech - speechVerb: Robotic - type: InteractionPopup interactSuccessString: petting-success-generic-cyborg interactFailureString: petting-failure-generic-cyborg - interactSuccessSound: - path: /Audio/Ambience/Objects/periodic_beep.ogg + - type: BorgSwitchableType + inherentRadioChannels: + - Common + - Binary + +- type: entity + id: BorgChassisGeneric + parent: BorgChassisSelectable + name: generic cyborg + suffix: type picked + components: + - type: BorgSwitchableType + selectedBorgType: generic - type: entity id: BorgChassisMining - parent: BaseBorgChassisNT + parent: BorgChassisSelectable name: salvage cyborg components: - - type: Sprite - layers: - - state: miner - map: ["movement"] - - state: miner_e_r - map: ["enum.BorgVisualLayers.Light"] - shader: unshaded - visible: false - - state: miner_l - shader: unshaded - map: ["light"] - visible: false - - type: SpriteMovement - movementLayers: - movement: - state: miner_moving - noMovementLayers: - movement: - state: miner - - type: BorgChassis - maxModules: 4 - moduleWhitelist: - tags: - - BorgModuleGeneric - - BorgModuleCargo - hasMindState: miner_e - noMindState: miner_e_r - - type: BorgTransponder - sprite: - sprite: Mobs/Silicon/chassis.rsi - state: miner - name: salvage cyborg - - type: Construction - node: mining - - type: IntrinsicRadioTransmitter - channels: - - Supply - - Binary - - Common - - Science - - type: ActiveRadio - channels: - - Supply - - Binary - - Common - - Science - - type: AccessReader - access: [["Cargo"], ["Salvage"], ["Command"], ["Research"]] - - type: Inventory - templateId: borgTall - - type: InteractionPopup - interactSuccessString: petting-success-salvage-cyborg - interactFailureString: petting-failure-salvage-cyborg - interactSuccessSound: - path: /Audio/Ambience/Objects/periodic_beep.ogg + - type: BorgSwitchableType + selectedBorgType: mining - type: entity id: BorgChassisEngineer - parent: BaseBorgChassisNT + parent: BorgChassisSelectable name: engineer cyborg components: - - type: Sprite - layers: - - state: engineer - - state: engineer_e_r - map: ["enum.BorgVisualLayers.Light"] - shader: unshaded - visible: false - - state: engineer_l - shader: unshaded - map: ["light"] - visible: false - - type: BorgChassis - maxModules: 4 - moduleWhitelist: - tags: - - BorgModuleGeneric - - BorgModuleEngineering - hasMindState: engineer_e - noMindState: engineer_e_r - - type: BorgTransponder - sprite: - sprite: Mobs/Silicon/chassis.rsi - state: engineer - name: engineer cyborg - - type: Construction - node: engineer - - type: IntrinsicRadioTransmitter - channels: - - Engineering - - Binary - - Common - - Science - - type: ActiveRadio - channels: - - Engineering - - Binary - - Common - - Science - - type: AccessReader - access: [["Engineering"], ["Command"], ["Research"]] - - type: Inventory - templateId: borgShort - - type: InteractionPopup - interactSuccessString: petting-success-engineer-cyborg - interactFailureString: petting-failure-engineer-cyborg - interactSuccessSound: - path: /Audio/Ambience/Objects/periodic_beep.ogg + - type: BorgSwitchableType + selectedBorgType: engineering - type: entity id: BorgChassisJanitor - parent: BaseBorgChassisNT + parent: BorgChassisSelectable name: janitor cyborg components: - - type: Sprite - layers: - - state: janitor - map: ["movement"] - - state: janitor_e_r - map: ["enum.BorgVisualLayers.Light"] - shader: unshaded - visible: false - - state: janitor_l - shader: unshaded - map: ["light"] - visible: false - - type: SpriteMovement - movementLayers: - movement: - state: janitor_moving - noMovementLayers: - movement: - state: janitor - - type: BorgChassis - maxModules: 4 - moduleWhitelist: - tags: - - BorgModuleGeneric - - BorgModuleJanitor - hasMindState: janitor_e - noMindState: janitor_e_r - - type: BorgTransponder - sprite: - sprite: Mobs/Silicon/chassis.rsi - state: janitor - name: janitor cyborg - - type: Construction - node: janitor - - type: IntrinsicRadioTransmitter - channels: - - Service - - Binary - - Common - - Science - - type: ActiveRadio - channels: - - Service - - Binary - - Common - - Science - - type: AccessReader - access: [["Service"], ["Command"], ["Research"]] - - type: Inventory - templateId: borgShort - - type: InteractionPopup - interactSuccessString: petting-success-janitor-cyborg - interactFailureString: petting-failure-janitor-cyborg - interactSuccessSound: - path: /Audio/Ambience/Objects/periodic_beep.ogg + - type: BorgSwitchableType + selectedBorgType: janitor - type: entity id: BorgChassisMedical - parent: [BaseBorgChassisNT, ShowMedicalIcons] + parent: BorgChassisSelectable name: medical cyborg components: - - type: Sprite - layers: - - state: medical - map: ["movement"] - - state: medical_e_r - map: ["enum.BorgVisualLayers.Light"] - shader: unshaded - visible: false - - state: medical_l - shader: unshaded - map: ["light"] - visible: false - - type: SpriteMovement - movementLayers: - movement: - state: medical_moving - noMovementLayers: - movement: - state: medical - - type: BorgChassis - maxModules: 4 - moduleWhitelist: - tags: - - BorgModuleGeneric - - BorgModuleMedical - hasMindState: medical_e - noMindState: medical_e_r - - type: BorgTransponder - sprite: - sprite: Mobs/Silicon/chassis.rsi - state: medical - name: medical cyborg - - type: Construction - node: medical - - type: IntrinsicRadioTransmitter - channels: - - Medical - - Binary - - Common - - Science - - type: ActiveRadio - channels: - - Medical - - Binary - - Common - - Science - - type: AccessReader - access: [["Medical"], ["Command"], ["Research"]] - - type: Inventory - templateId: borgDutch - - type: FootstepModifier - footstepSoundCollection: - collection: FootstepHoverBorg - - type: SolutionScanner - - type: InteractionPopup - interactSuccessString: petting-success-medical-cyborg - interactFailureString: petting-failure-medical-cyborg - interactSuccessSound: - path: /Audio/Ambience/Objects/periodic_beep.ogg + - type: BorgSwitchableType + selectedBorgType: medical - type: entity id: BorgChassisService - parent: BaseBorgChassisNT + parent: BorgChassisSelectable name: service cyborg components: - - type: Sprite - layers: - - state: service - - state: service_e_r - map: ["enum.BorgVisualLayers.Light"] - shader: unshaded - visible: false - - state: service_l - shader: unshaded - map: ["light"] - visible: false - - type: BorgChassis - maxModules: 4 - moduleWhitelist: - tags: - - BorgModuleGeneric - - BorgModuleService - hasMindState: service_e - noMindState: service_e_r - - type: BorgTransponder - sprite: - sprite: Mobs/Silicon/chassis.rsi - state: service - name: service cyborg - - type: Construction - node: service - - type: IntrinsicRadioTransmitter - channels: - - Service - - Binary - - Common - - Science - - type: ActiveRadio - channels: - - Service - - Binary - - Common - - Science - - type: AccessReader - access: [["Service"], ["Command"], ["Research"]] - - type: Inventory - templateId: borgTall - - type: InteractionPopup - interactSuccessString: petting-success-service-cyborg - interactFailureString: petting-failure-service-cyborg - interactSuccessSound: - path: /Audio/Ambience/Objects/periodic_beep.ogg + - type: BorgSwitchableType + selectedBorgType: service - type: entity id: BorgChassisSyndicateAssault @@ -354,8 +107,6 @@ - BorgModuleSyndicateAssault hasMindState: synd_sec_e noMindState: synd_sec - - type: Construction - node: syndicateassault - type: InteractionPopup interactSuccessString: petting-success-syndicate-cyborg interactFailureString: petting-failure-syndicate-cyborg @@ -388,8 +139,6 @@ - BorgModuleSyndicate hasMindState: synd_medical_e noMindState: synd_medical - - type: Construction - node: syndicatemedical - type: ShowHealthBars - type: InteractionPopup interactSuccessString: petting-success-syndicate-cyborg @@ -429,8 +178,6 @@ - BorgModuleSyndicate hasMindState: synd_engi_e noMindState: synd_engi - - type: Construction - node: syndicatesaboteur - type: ShowHealthBars damageContainers: - Inorganic diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index e787ef59f00..bcac46ed842 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -429,28 +429,9 @@ map: ["base"] # Borgs -- type: entity - id: PlayerBorgGeneric - parent: BorgChassisGeneric - suffix: Battery, Tools - components: - - type: ContainerFill - containers: - borg_brain: - - PositronicBrain - borg_module: - - BorgModuleTool - - type: ItemSlots - slots: - cell_slot: - name: power-cell-slot-component-slot-name-default - startingItem: PowerCellMedium - - type: RandomMetadata - nameSegments: [names_borg] - - type: entity id: PlayerBorgBattery - parent: BorgChassisGeneric + parent: BorgChassisSelectable suffix: Battery components: - type: ContainerFill diff --git a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_parts.yml b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_parts.yml deleted file mode 100644 index 6df0488e28f..00000000000 --- a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_parts.yml +++ /dev/null @@ -1,503 +0,0 @@ -# generic parts -- type: entity - id: LeftArmBorg - parent: BaseBorgArmLeft - components: - - type: Sprite - state: borg_l_arm - - type: Icon - state: borg_l_arm - - type: Tag - tags: - - Trash - - BorgArm - - BorgGenericLArm - -- type: entity - id: RightArmBorg - parent: BaseBorgArmRight - components: - - type: Sprite - state: borg_r_arm - - type: Icon - state: borg_r_arm - - type: Tag - tags: - - Trash - - BorgArm - - BorgGenericRArm - -- type: entity - id: LeftLegBorg - parent: BaseBorgLegLeft - components: - - type: Sprite - state: borg_l_leg - - type: Icon - state: borg_l_leg - - type: Tag - tags: - - Trash - - BorgLeg - - BorgGenericLLeg - -- type: entity - id: RightLegBorg - parent: BaseBorgLegRight - components: - - type: Sprite - state: borg_r_leg - - type: Icon - state: borg_r_leg - - type: Tag - tags: - - Trash - - BorgLeg - - BorgGenericRLeg - -- type: entity - id: LightHeadBorg - parent: BaseBorgHead - components: - - type: Sprite - state: borg_head - - type: Icon - state: borg_head - - type: Tag - tags: - - Trash - - BorgHead - - BorgGenericHead - -- type: entity - id: TorsoBorg - parent: BaseBorgTorso - components: - - type: Sprite - state: borg_chest - - type: Icon - state: borg_chest - - type: Tag - tags: - - Trash - - BorgGenericTorso - -# engineer parts -- type: entity - id: LeftArmBorgEngineer - parent: BaseBorgArmLeft - name: engineer cyborg left arm - components: - - type: Sprite - state: engineer_l_arm - - type: Icon - state: engineer_l_arm - - type: Tag - tags: - - Trash - - BorgArm - - BorgEngineerLArm - -- type: entity - id: RightArmBorgEngineer - parent: BaseBorgArmRight - name: engineer cyborg right arm - components: - - type: Sprite - state: engineer_r_arm - - type: Icon - state: engineer_r_arm - - type: Tag - tags: - - Trash - - BorgArm - - BorgEngineerRArm - -- type: entity - id: LeftLegBorgEngineer - parent: BaseBorgLegLeft - name: engineer cyborg left leg - components: - - type: Sprite - state: engineer_l_leg - - type: Icon - state: engineer_l_leg - - type: Tag - tags: - - Trash - - BorgLeg - - BorgEngineerLLeg - -- type: entity - id: RightLegBorgEngineer - parent: BaseBorgLegRight - name: engineer cyborg right leg - components: - - type: Sprite - state: engineer_r_leg - - type: Icon - state: engineer_r_leg - - type: Tag - tags: - - Trash - - BorgLeg - - BorgEngineerRLeg - -- type: entity - id: HeadBorgEngineer - parent: BaseBorgHead - name: engineer cyborg head - components: - - type: Sprite - state: engineer_head - - type: Icon - state: engineer_head - - type: Tag - tags: - - Trash - - BorgHead - - BorgEngineerHead - -- type: entity - id: TorsoBorgEngineer - parent: BaseBorgTorso - name: engineer cyborg torso - components: - - type: Sprite - state: engineer_chest - - type: Icon - state: engineer_chest - - type: Tag - tags: - - Trash - - BorgEngineerTorso - -# janitor parts -- type: entity - id: LeftLegBorgJanitor - parent: BaseBorgLegLeft - name: janitor cyborg left leg - components: - - type: Sprite - state: janitor_l_leg - - type: Icon - state: janitor_l_leg - - type: Tag - tags: - - Trash - - BorgLeg - - BorgJanitorLLeg - -- type: entity - id: RightLegBorgJanitor - parent: BaseBorgLegRight - name: janitor cyborg right leg - components: - - type: Sprite - state: janitor_r_leg - - type: Icon - state: janitor_r_leg - - type: Tag - tags: - - Trash - - BorgLeg - - BorgJanitorRLeg - -- type: entity - id: HeadBorgJanitor - parent: BaseBorgHead - name: janitor cyborg head - components: - - type: Sprite - state: janitor_head - - type: Icon - state: janitor_head - - type: Tag - tags: - - Trash - - BorgHead - - BorgJanitorHead - -- type: entity - id: TorsoBorgJanitor - parent: BaseBorgTorso - name: janitor cyborg torso - components: - - type: Sprite - state: janitor_chest - - type: Icon - state: janitor_chest - - type: Tag - tags: - - Trash - - BorgJanitorTorso - -# medical parts -- type: entity - id: LeftArmBorgMedical - parent: BaseBorgArmLeft - name: medical cyborg left arm - components: - - type: Sprite - state: medical_l_arm - - type: Icon - state: medical_l_arm - - type: Tag - tags: - - Trash - - BorgArm - - BorgMedicalLArm - -- type: entity - id: RightArmBorgMedical - parent: BaseBorgArmRight - name: medical cyborg right arm - components: - - type: Sprite - state: medical_r_arm - - type: Icon - state: medical_r_arm - - type: Tag - tags: - - Trash - - BorgArm - - BorgMedicalRArm - -- type: entity - id: LeftLegBorgMedical - parent: BaseBorgLegLeft - name: medical cyborg left leg - components: - - type: Sprite - state: medical_l_leg - - type: Icon - state: medical_l_leg - - type: Tag - tags: - - Trash - - BorgLeg - - BorgMedicalLLeg - -- type: entity - id: RightLegBorgMedical - parent: BaseBorgLegRight - name: medical cyborg right leg - components: - - type: Sprite - state: medical_r_leg - - type: Icon - state: medical_r_leg - - type: Tag - tags: - - Trash - - BorgLeg - - BorgMedicalRLeg - -- type: entity - id: HeadBorgMedical - parent: BaseBorgHead - name: medical cyborg head - components: - - type: Sprite - state: medical_head - - type: Icon - state: medical_head - - type: Tag - tags: - - Trash - - BorgHead - - BorgMedicalHead - -- type: entity - id: TorsoBorgMedical - parent: BaseBorgTorso - name: medical cyborg torso - components: - - type: Sprite - state: medical_chest - - type: Icon - state: medical_chest - - type: Tag - tags: - - Trash - - BorgMedicalTorso - -# mining parts -- type: entity - id: LeftArmBorgMining - parent: BaseBorgArmLeft - name: mining cyborg left arm - components: - - type: Sprite - state: mining_l_arm - - type: Icon - state: mining_l_arm - - type: Tag - tags: - - Trash - - BorgArm - - BorgMiningLArm - -- type: entity - id: RightArmBorgMining - parent: BaseBorgArmRight - name: mining cyborg right arm - components: - - type: Sprite - state: mining_r_arm - - type: Icon - state: mining_r_arm - - type: Tag - tags: - - Trash - - BorgArm - - BorgMiningRArm - -- type: entity - id: LeftLegBorgMining - parent: BaseBorgLegLeft - name: mining cyborg left leg - components: - - type: Sprite - state: mining_l_leg - - type: Icon - state: mining_l_leg - - type: Tag - tags: - - Trash - - BorgLeg - - BorgMiningLLeg - -- type: entity - id: RightLegBorgMining - parent: BaseBorgLegRight - name: mining cyborg right leg - components: - - type: Sprite - state: mining_r_leg - - type: Icon - state: mining_r_leg - - type: Tag - tags: - - Trash - - BorgLeg - - BorgMiningRLeg - -- type: entity - id: HeadBorgMining - parent: BaseBorgHead - name: mining cyborg head - components: - - type: Sprite - state: mining_head - - type: Icon - state: mining_head - - type: Tag - tags: - - Trash - - BorgHead - - BorgMiningHead - -- type: entity - id: TorsoBorgMining - parent: BaseBorgTorso - name: mining cyborg torso - components: - - type: Sprite - state: mining_chest - - type: Icon - state: mining_chest - - type: Tag - tags: - - Trash - - BorgMiningTorso - -# service parts -- type: entity - id: LeftArmBorgService - parent: BaseBorgArmLeft - name: service cyborg left arm - components: - - type: Sprite - state: service_l_arm - - type: Icon - state: service_l_arm - - type: Tag - tags: - - Trash - - BorgArm - - BorgServiceLArm - -- type: entity - id: RightArmBorgService - parent: BaseBorgArmRight - name: service cyborg right arm - components: - - type: Sprite - state: service_r_arm - - type: Icon - state: service_r_arm - - type: Tag - tags: - - Trash - - BorgArm - - BorgServiceRArm - -- type: entity - id: LeftLegBorgService - parent: BaseBorgLegLeft - name: service cyborg left leg - components: - - type: Sprite - state: service_l_leg - - type: Icon - state: service_l_leg - - type: Tag - tags: - - Trash - - BorgLeg - - BorgServiceLLeg - -- type: entity - id: RightLegBorgService - parent: BaseBorgLegRight - name: service cyborg right leg - components: - - type: Sprite - state: service_r_leg - - type: Icon - state: service_r_leg - - type: Tag - tags: - - Trash - - BorgLeg - - BorgServiceRLeg - -- type: entity - id: HeadBorgService - parent: BaseBorgHead - name: service cyborg head - components: - - type: Sprite - state: service_head - - type: Icon - state: service_head - - type: Tag - tags: - - Trash - - BorgHead - - BorgServiceHead - -- type: entity - id: TorsoBorgService - parent: BaseBorgTorso - name: service cyborg torso - components: - - type: Sprite - state: service_chest - - type: Icon - state: service_chest - - type: Tag - tags: - - Trash - - BorgServiceTorso diff --git a/Resources/Prototypes/Entities/Objects/Specific/Robotics/endoskeleton.yml b/Resources/Prototypes/Entities/Objects/Specific/Robotics/endoskeleton.yml index 9261e06ea2a..6afc06a7967 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Robotics/endoskeleton.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Robotics/endoskeleton.yml @@ -33,139 +33,27 @@ borg_l_arm+o: whitelist: tags: - - BorgGenericLArm + - BorgLArm borg_r_arm+o: whitelist: tags: - - BorgGenericRArm + - BorgRArm borg_l_leg+o: whitelist: tags: - - BorgGenericLLeg + - BorgLLeg borg_r_leg+o: whitelist: tags: - - BorgGenericRLeg + - BorgRLeg borg_head+o: whitelist: tags: - - BorgGenericHead + - BorgHead borg_chest+o: whitelist: tags: - - BorgGenericTorso - service_l_arm+o: - whitelist: - tags: - - BorgServiceLArm - service_r_arm+o: - whitelist: - tags: - - BorgServiceRArm - service_l_leg+o: - whitelist: - tags: - - BorgServiceLLeg - service_r_leg+o: - whitelist: - tags: - - BorgServiceRLeg - service_head+o: - whitelist: - tags: - - BorgServiceHead - service_chest+o: - whitelist: - tags: - - BorgServiceTorso - engineer_l_arm+o: - whitelist: - tags: - - BorgEngineerLArm - engineer_r_arm+o: - whitelist: - tags: - - BorgEngineerRArm - engineer_l_leg+o: - whitelist: - tags: - - BorgEngineerLLeg - engineer_r_leg+o: - whitelist: - tags: - - BorgEngineerRLeg - engineer_head+o: - whitelist: - tags: - - BorgEngineerHead - engineer_chest+o: - whitelist: - tags: - - BorgEngineerTorso - mining_l_arm+o: - whitelist: - tags: - - BorgMiningLArm - mining_r_arm+o: - whitelist: - tags: - - BorgMiningRArm - mining_l_leg+o: - whitelist: - tags: - - BorgMiningLLeg - mining_r_leg+o: - whitelist: - tags: - - BorgMiningRLeg - mining_head+o: - whitelist: - tags: - - BorgMiningHead - mining_chest+o: - whitelist: - tags: - - BorgMiningTorso - medical_l_arm+o: - whitelist: - tags: - - BorgMedicalLArm - medical_r_arm+o: - whitelist: - tags: - - BorgMedicalRArm - medical_l_leg+o: - whitelist: - tags: - - BorgMedicalLLeg - medical_r_leg+o: - whitelist: - tags: - - BorgMedicalRLeg - medical_head+o: - whitelist: - tags: - - BorgMedicalHead - medical_chest+o: - whitelist: - tags: - - BorgMedicalTorso - janitor_l_leg+o: - whitelist: - tags: - - BorgJanitorLLeg - janitor_r_leg+o: - whitelist: - tags: - - BorgJanitorRLeg - janitor_head+o: - whitelist: - tags: - - BorgJanitorHead - janitor_chest+o: - whitelist: - tags: - - BorgJanitorTorso + - BorgTorso - type: ContainerContainer containers: part-container: !type:Container @@ -173,45 +61,12 @@ - type: PartAssembly parts: generic: - - BorgGenericLArm - - BorgGenericRArm - - BorgGenericLLeg - - BorgGenericRLeg - - BorgGenericHead - - BorgGenericTorso - service: - - BorgServiceLArm - - BorgServiceRArm - - BorgServiceLLeg - - BorgServiceRLeg - - BorgServiceHead - - BorgServiceTorso - engineer: - - BorgEngineerLArm - - BorgEngineerRArm - - BorgEngineerLLeg - - BorgEngineerRLeg - - BorgEngineerHead - - BorgEngineerTorso - medical: - - BorgMedicalLArm - - BorgMedicalRArm - - BorgMedicalLLeg - - BorgMedicalRLeg - - BorgMedicalHead - - BorgMedicalTorso - janitor: - - BorgJanitorLLeg - - BorgJanitorRLeg - - BorgJanitorHead - - BorgJanitorTorso - mining: - - BorgMiningLArm - - BorgMiningRArm - - BorgMiningLLeg - - BorgMiningRLeg - - BorgMiningHead - - BorgMiningTorso + - BorgLArm + - BorgRArm + - BorgLLeg + - BorgRLeg + - BorgHead + - BorgTorso - type: Construction graph: Cyborg node: start diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 020566ad1a7..6a94891d127 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -572,11 +572,6 @@ - BorgModuleFireExtinguisher - BorgModuleRadiationDetection - BorgModuleTool - - BorgModuleAppraisal - - BorgModuleConstruction - - BorgModuleService - - BorgModuleTreatment - - BorgModuleCleaning - CyborgEndoskeleton - LeftArmBorg - RightArmBorg @@ -584,50 +579,15 @@ - RightLegBorg - LightHeadBorg - TorsoBorg - - LeftArmBorgEngineer - - RightArmBorgEngineer - - LeftLegBorgEngineer - - RightLegBorgEngineer - - HeadBorgEngineer - - TorsoBorgEngineer - - LeftLegBorgJanitor - - RightLegBorgJanitor - - HeadBorgJanitor - - TorsoBorgJanitor - - LeftArmBorgMedical - - RightArmBorgMedical - - LeftLegBorgMedical - - RightLegBorgMedical - - HeadBorgMedical - - TorsoBorgMedical - - LeftArmBorgMining - - RightArmBorgMining - - LeftLegBorgMining - - RightLegBorgMining - - HeadBorgMining - - TorsoBorgMining - - LeftArmBorgService - - RightArmBorgService - - LeftLegBorgService - - RightLegBorgService - - HeadBorgService - - TorsoBorgService dynamicRecipes: - ProximitySensor - - BorgModuleLightReplacer - BorgModuleAdvancedCleaning - - BorgModuleMining - - BorgModuleGrapplingGun - BorgModuleAdvancedTool - BorgModuleGPS - - BorgModuleRCD - BorgModuleArtifact - BorgModuleAnomaly - BorgModuleGardening - BorgModuleHarvesting - - BorgModuleMusique - - BorgModuleClowning - - BorgModuleDiagnosis - BorgModuleDefibrillator - BorgModuleAdvancedTreatment - RipleyHarness diff --git a/Resources/Prototypes/InventoryTemplates/borg.yml b/Resources/Prototypes/InventoryTemplates/borg.yml index d43519f61cf..3d3ef29eb03 100644 --- a/Resources/Prototypes/InventoryTemplates/borg.yml +++ b/Resources/Prototypes/InventoryTemplates/borg.yml @@ -26,8 +26,7 @@ - name: head slotTexture: head slotFlags: HEAD - slotGroup: MainHotbar - uiWindowPos: 0,0 + uiWindowPos: 1,0 strippingWindowPos: 0,0 displayName: Head offset: 0.015625, 0 diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml b/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml index 0f012cefc98..4ebc43667c5 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml @@ -5,18 +5,6 @@ - node: start entity: CyborgEndoskeleton edges: - - # empty the parts via prying - - to: start - conditions: - - !type:ContainerNotEmpty - container: part-container - steps: - - tool: Prying - doAfter: 0.5 - completed: - - !type:EmptyAllContainers - - to: cyborg steps: - assemblyId: generic @@ -43,165 +31,6 @@ - tool: Screwing doAfter: 0.5 - - - to: engineer - steps: - - assemblyId: engineer - guideString: borg-construction-guide-string - - - material: Cable - amount: 1 - doAfter: 1 - store: part-container - - - component: Flash - name: flash - store: part-container - icon: - sprite: Objects/Weapons/Melee/flash.rsi - state: flash - - - component: Flash - name: second flash - store: part-container - icon: - sprite: Objects/Weapons/Melee/flash.rsi - state: flash - - - tool: Screwing - doAfter: 0.5 - - - to: janitor - steps: - - assemblyId: janitor - guideString: borg-construction-guide-string - - - material: Cable - amount: 1 - doAfter: 1 - store: part-container - - - component: Flash - name: flash - store: part-container - icon: - sprite: Objects/Weapons/Melee/flash.rsi - state: flash - - - component: Flash - name: second flash - store: part-container - icon: - sprite: Objects/Weapons/Melee/flash.rsi - state: flash - - - tool: Screwing - doAfter: 0.5 - - - to: medical - steps: - - assemblyId: medical - guideString: borg-construction-guide-string - - - material: Cable - amount: 1 - doAfter: 1 - store: part-container - - - component: Flash - name: flash - store: part-container - icon: - sprite: Objects/Weapons/Melee/flash.rsi - state: flash - - - component: Flash - name: second flash - store: part-container - icon: - sprite: Objects/Weapons/Melee/flash.rsi - state: flash - - - tool: Screwing - doAfter: 0.5 - - - to: mining - steps: - - assemblyId: mining - guideString: borg-construction-guide-string - - - material: Cable - amount: 1 - doAfter: 1 - store: part-container - - - component: Flash - name: flash - store: part-container - icon: - sprite: Objects/Weapons/Melee/flash.rsi - state: flash - - - component: Flash - name: second flash - store: part-container - icon: - sprite: Objects/Weapons/Melee/flash.rsi - state: flash - - - tool: Screwing - doAfter: 0.5 - - - to: service - steps: - - assemblyId: service - guideString: borg-construction-guide-string - - - material: Cable - amount: 1 - doAfter: 1 - store: part-container - - - component: Flash - name: flash - store: part-container - icon: - sprite: Objects/Weapons/Melee/flash.rsi - state: flash - - - component: Flash - name: second flash - store: part-container - icon: - sprite: Objects/Weapons/Melee/flash.rsi - state: flash - - - tool: Screwing - doAfter: 0.5 - node: cyborg - entity: BorgChassisGeneric - - - node: engineer - entity: BorgChassisEngineer - - - node: janitor - entity: BorgChassisJanitor - - - node: mining - entity: BorgChassisMining - - - node: medical - entity: BorgChassisMedical - - - node: service - entity: BorgChassisService - - - node: syndicateassault - entity: BorgChassisSyndicateAssault - - - node: syndicatemedical - entity: BorgChassisSyndicateMedical - - - node: syndicatesaboteur - entity: BorgChassisSyndicateSaboteur + entity: BorgChassisSelectable diff --git a/Resources/Prototypes/Recipes/Lathes/robotics.yml b/Resources/Prototypes/Recipes/Lathes/robotics.yml index bf8deba9840..a4413e01ebe 100644 --- a/Resources/Prototypes/Recipes/Lathes/robotics.yml +++ b/Resources/Prototypes/Recipes/Lathes/robotics.yml @@ -61,8 +61,6 @@ materials: Steel: 1500 -# Generic - - type: latheRecipe parent: BaseBorgLimbRecipe id: LeftArmBorg @@ -93,162 +91,6 @@ id: TorsoBorg result: TorsoBorg -# Engineer - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: LeftArmBorgEngineer - result: LeftArmBorgEngineer - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: RightArmBorgEngineer - result: RightArmBorgEngineer - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: LeftLegBorgEngineer - result: LeftLegBorgEngineer - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: RightLegBorgEngineer - result: RightLegBorgEngineer - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: HeadBorgEngineer - result: HeadBorgEngineer - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: TorsoBorgEngineer - result: TorsoBorgEngineer - -# Medical - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: LeftArmBorgMedical - result: LeftArmBorgMedical - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: RightArmBorgMedical - result: RightArmBorgMedical - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: LeftLegBorgMedical - result: LeftLegBorgMedical - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: RightLegBorgMedical - result: RightLegBorgMedical - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: HeadBorgMedical - result: HeadBorgMedical - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: TorsoBorgMedical - result: TorsoBorgMedical - -# Mining - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: LeftArmBorgMining - result: LeftArmBorgMining - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: RightArmBorgMining - result: RightArmBorgMining - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: LeftLegBorgMining - result: LeftLegBorgMining - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: RightLegBorgMining - result: RightLegBorgMining - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: HeadBorgMining - result: HeadBorgMining - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: TorsoBorgMining - result: TorsoBorgMining - -# Service - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: LeftArmBorgService - result: LeftArmBorgService - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: RightArmBorgService - result: RightArmBorgService - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: LeftLegBorgService - result: LeftLegBorgService - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: RightLegBorgService - result: RightLegBorgService - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: HeadBorgService - result: HeadBorgService - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: TorsoBorgService - result: TorsoBorgService - -# Janitor - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: LeftLegBorgJanitor - result: LeftLegBorgJanitor - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: RightLegBorgJanitor - result: RightLegBorgJanitor - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: HeadBorgJanitor - result: HeadBorgJanitor - materials: - Steel: 500 - Glass: 200 - -- type: latheRecipe - parent: BaseBorgLimbRecipe - id: TorsoBorgJanitor - result: TorsoBorgJanitor - materials: - Steel: 500 - Glass: 200 - # Parts - type: latheRecipe @@ -304,23 +146,6 @@ id: BorgModuleTool result: BorgModuleTool -# Mining Modules - -- type: latheRecipe - parent: BaseBorgModuleRecipe - id: BorgModuleAppraisal - result: BorgModuleAppraisal - -- type: latheRecipe - parent: BaseBorgModuleRecipe - id: BorgModuleMining - result: BorgModuleMining - -- type: latheRecipe - parent: BaseGoldBorgModuleRecipe - id: BorgModuleGrapplingGun - result: BorgModuleGrapplingGun - # Engineering Modules - type: latheRecipe @@ -328,28 +153,8 @@ id: BorgModuleAdvancedTool result: BorgModuleAdvancedTool -- type: latheRecipe - parent: BaseBorgModuleRecipe - id: BorgModuleConstruction - result: BorgModuleConstruction - -- type: latheRecipe - parent: BaseGoldBorgModuleRecipe - id: BorgModuleRCD - result: BorgModuleRCD - # Janitor Modules -- type: latheRecipe - parent: BaseBorgModuleRecipe - id: BorgModuleLightReplacer - result: BorgModuleLightReplacer - -- type: latheRecipe - parent: BaseBorgModuleRecipe - id: BorgModuleCleaning - result: BorgModuleCleaning - - type: latheRecipe parent: BaseGoldBorgModuleRecipe id: BorgModuleAdvancedCleaning @@ -357,16 +162,6 @@ # Medical Modules -- type: latheRecipe - parent: BaseBorgModuleRecipe - id: BorgModuleDiagnosis - result: BorgModuleDiagnosis - -- type: latheRecipe - parent: BaseBorgModuleRecipe - id: BorgModuleTreatment - result: BorgModuleTreatment - - type: latheRecipe parent: BaseGoldBorgModuleRecipe id: BorgModuleAdvancedTreatment @@ -391,16 +186,6 @@ # Service Modules -- type: latheRecipe - parent: BaseBorgModuleRecipe - id: BorgModuleService - result: BorgModuleService - -- type: latheRecipe - parent: BaseBorgModuleRecipe - id: BorgModuleMusique - result: BorgModuleMusique - - type: latheRecipe parent: BaseBorgModuleRecipe id: BorgModuleGardening @@ -410,8 +195,3 @@ parent: BaseBorgModuleRecipe id: BorgModuleHarvesting result: BorgModuleHarvesting - -- type: latheRecipe - parent: BaseBorgModuleRecipe - id: BorgModuleClowning - result: BorgModuleClowning diff --git a/Resources/Prototypes/Research/civilianservices.yml b/Resources/Prototypes/Research/civilianservices.yml index b990eb6ae40..9430c391a99 100644 --- a/Resources/Prototypes/Research/civilianservices.yml +++ b/Resources/Prototypes/Research/civilianservices.yml @@ -66,8 +66,6 @@ recipeUnlocks: - ComputerTelevisionCircuitboard - SynthesizerInstrument - - BorgModuleMusique - - BorgModuleClowning - DawInstrumentMachineCircuitboard - MassMediaCircuitboard - JukeboxCircuitBoard @@ -82,7 +80,6 @@ tier: 1 cost: 5000 recipeUnlocks: - - BorgModuleLightReplacer - BorgModuleAdvancedCleaning - type: technology diff --git a/Resources/Prototypes/Research/industrial.yml b/Resources/Prototypes/Research/industrial.yml index e65c734ffda..817e50834b7 100644 --- a/Resources/Prototypes/Research/industrial.yml +++ b/Resources/Prototypes/Research/industrial.yml @@ -12,8 +12,6 @@ recipeUnlocks: - MiningDrill - MineralScannerEmpty - - BorgModuleMining - - BorgModuleGrapplingGun - OreProcessorIndustrialMachineCircuitboard - ClothingMaskWeldingGas @@ -168,7 +166,6 @@ - PowerDrill - JawsOfLife - BorgModuleAdvancedTool - - BorgModuleRCD - type: technology id: MassExcavation diff --git a/Resources/Prototypes/Roles/Jobs/Science/borg.yml b/Resources/Prototypes/Roles/Jobs/Science/borg.yml index 4cbede17ca2..c62482d286e 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/borg.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/borg.yml @@ -25,5 +25,5 @@ canBeAntag: false icon: JobIconBorg supervisors: job-supervisors-rd - jobEntity: PlayerBorgGeneric + jobEntity: PlayerBorgBattery applyTraits: false diff --git a/Resources/Prototypes/borg_types.yml b/Resources/Prototypes/borg_types.yml new file mode 100644 index 00000000000..f6294be68e3 --- /dev/null +++ b/Resources/Prototypes/borg_types.yml @@ -0,0 +1,218 @@ +# Generic borg +- type: borgType + id: generic + + # Description + dummyPrototype: BorgChassisGeneric + + # Functional + extraModuleCount: 5 + moduleWhitelist: + tags: + - BorgModuleGeneric + + defaultModules: + - BorgModuleTool + + radioChannels: + - Science + + # Visual + inventoryTemplateId: borgShort + spriteBodyState: robot + spriteHasMindState: robot_e + spriteNoMindState: robot_e_r + spriteToggleLightState: robot_l + + # Pet + petSuccessString: petting-success-generic-cyborg + petFailureString: petting-failure-generic-cyborg + + +# Engineering borg +- type: borgType + id: engineering + + # Description + dummyPrototype: BorgChassisEngineer + + # Functional + extraModuleCount: 3 + moduleWhitelist: + tags: + - BorgModuleGeneric + - BorgModuleEngineering + + defaultModules: + - BorgModuleTool + - BorgModuleConstruction + - BorgModuleRCD + - BorgModuleCable + + radioChannels: + - Engineering + - Science + + # Visual + inventoryTemplateId: borgShort + spriteBodyState: engineer + spriteHasMindState: engineer_e + spriteNoMindState: engineer_e_r + spriteToggleLightState: engineer_l + + # Pet + petSuccessString: petting-success-engineer-cyborg + petFailureString: petting-failure-engineer-cyborg + + +# Salvage borg +- type: borgType + id: mining + + # Description + dummyPrototype: BorgChassisMining + + # Functional + extraModuleCount: 3 + moduleWhitelist: + tags: + - BorgModuleGeneric + - BorgModuleCargo + + defaultModules: + - BorgModuleGrapplingGun + - BorgModuleMining + - BorgModuleAppraisal + + radioChannels: + - Supply + - Science + + # Visual + inventoryTemplateId: borgTall + spriteBodyState: miner + spriteBodyMovementState: miner_moving + spriteHasMindState: miner_e + spriteNoMindState: miner_e_r + spriteToggleLightState: miner_l + + # Pet + petSuccessString: petting-success-salvage-cyborg + petFailureString: petting-failure-salvage-cyborg + + +# Janitor borg +- type: borgType + id: janitor + + # Description + dummyPrototype: BorgChassisJanitor + + # Functional + extraModuleCount: 3 + moduleWhitelist: + tags: + - BorgModuleGeneric + - BorgModuleJanitor + + defaultModules: + - BorgModuleLightReplacer + - BorgModuleCleaning + + radioChannels: + - Science + - Service + + # Visual + inventoryTemplateId: borgShort + spriteBodyState: janitor + spriteBodyMovementState: janitor_moving + spriteHasMindState: janitor_e + spriteNoMindState: janitor_e_r + spriteToggleLightState: janitor_l + + # Pet + petSuccessString: petting-success-janitor-cyborg + petFailureString: petting-failure-janitor-cyborg + + +# Medical borg +- type: borgType + id: medical + + # Description + dummyPrototype: BorgChassisMedical + + # Functional + extraModuleCount: 3 + moduleWhitelist: + tags: + - BorgModuleGeneric + - BorgModuleMedical + + defaultModules: + - BorgModuleTreatment + + radioChannels: + - Science + - Medical + + addComponents: + - type: SolutionScanner + - type: ShowHealthBars + damageContainers: + - Biological + - type: ShowHealthIcons + damageContainers: + - Biological + + # Visual + inventoryTemplateId: borgDutch + spriteBodyState: medical + spriteBodyMovementState: medical_moving + spriteHasMindState: medical_e + spriteNoMindState: medical_e_r + spriteToggleLightState: medical_l + + # Pet + petSuccessString: petting-success-medical-cyborg + petFailureString: petting-failure-medical-cyborg + + # Sounds + footstepCollection: + collection: FootstepHoverBorg + + +# Service borg +- type: borgType + id: service + + # Description + dummyPrototype: BorgChassisService + + # Functional + extraModuleCount: 3 + moduleWhitelist: + tags: + - BorgModuleGeneric + - BorgModuleService + + defaultModules: + - BorgModuleMusique + - BorgModuleService + - BorgModuleClowning + + radioChannels: + - Science + - Service + + # Visual + inventoryTemplateId: borgTall + spriteBodyState: service + spriteHasMindState: service_e + spriteNoMindState: service_e_r + spriteToggleLightState: service_l + + # Pet + petSuccessString: petting-success-service-cyborg + petFailureString: petting-failure-service-cyborg diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index be9c90ce93d..6112f93c164 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -75,95 +75,26 @@ - type: Tag id: BorgArm -- type: Tag - id: BorgEngineerHead - -- type: Tag - id: BorgEngineerLArm - -- type: Tag - id: BorgEngineerLLeg - -- type: Tag - id: BorgEngineerRArm - -- type: Tag - id: BorgEngineerRLeg - -- type: Tag - id: BorgEngineerTorso - -- type: Tag - id: BorgGenericHead - -- type: Tag - id: BorgGenericLArm - -- type: Tag - id: BorgGenericLLeg - -- type: Tag - id: BorgGenericRArm - -- type: Tag - id: BorgGenericRLeg - -- type: Tag - id: BorgGenericTorso - - type: Tag id: BorgHead - type: Tag - id: BorgJanitorHead - -- type: Tag - id: BorgJanitorLLeg - -- type: Tag - id: BorgJanitorRLeg - -- type: Tag - id: BorgJanitorTorso + id: BorgLArm - type: Tag - id: BorgLeg - -- type: Tag - id: BorgMedicalHead - -- type: Tag - id: BorgMedicalLArm - -- type: Tag - id: BorgMedicalLLeg - -- type: Tag - id: BorgMedicalRArm - -- type: Tag - id: BorgMedicalRLeg - -- type: Tag - id: BorgMedicalTorso - -- type: Tag - id: BorgMiningHead + id: BorgLLeg - type: Tag - id: BorgMiningLArm + id: BorgRArm - type: Tag - id: BorgMiningLLeg + id: BorgRLeg - type: Tag - id: BorgMiningRArm + id: BorgTorso - type: Tag - id: BorgMiningRLeg - -- type: Tag - id: BorgMiningTorso + id: BorgLeg - type: Tag id: BorgModuleCargo @@ -189,24 +120,6 @@ - type: Tag id: BorgModuleSyndicateAssault -- type: Tag - id: BorgServiceHead - -- type: Tag - id: BorgServiceLArm - -- type: Tag - id: BorgServiceLLeg - -- type: Tag - id: BorgServiceRArm - -- type: Tag - id: BorgServiceRLeg - -- type: Tag - id: BorgServiceTorso - - type: Tag id: Bot diff --git a/Resources/ServerInfo/Guidebook/Science/Cyborgs.xml b/Resources/ServerInfo/Guidebook/Science/Cyborgs.xml index 2b8defb0705..c1507ca5396 100644 --- a/Resources/ServerInfo/Guidebook/Science/Cyborgs.xml +++ b/Resources/ServerInfo/Guidebook/Science/Cyborgs.xml @@ -18,28 +18,28 @@ </Box> Both brains can be fabricated without requiring any additional research. - ## Chassis - While all cyborgs share the same endoskeleton, not all share the same chassis. The chassis determines what modules the cyborg can have, along with the [color=#a4885c]departmental radio channel[/color] they correspond to. By default, they will always have access to [color=#D381C9]Science[/color] and [color=green]station-wide[/color] frequencies, along with having [color=#a4885c]all-access[/color]. + ## Cyborg types + Once created, a cyborg needs to specialize its chassis to a duty on the station. This determines what modules it starts with, which additional modules can be installed, and what [color=#a4885c]departmental radio channel[/color] it has access to. All cyborgs have access to the [color=#D381C9]Science[/color] and [color=green]station-wide[/color] radio channels. All cyborg types have [color=#a4885c]all-access[/color]. <Box> <GuideEntityEmbed Entity="BorgChassisGeneric" Caption="Generic"/> <GuideEntityEmbed Entity="BorgChassisEngineer" Caption="Engineering"/> - <GuideEntityEmbed Entity="BorgChassisMining" Caption="Mining"/> + <GuideEntityEmbed Entity="BorgChassisMining" Caption="Salvage"/> <GuideEntityEmbed Entity="BorgChassisJanitor" Caption="Janitor"/> <GuideEntityEmbed Entity="BorgChassisService" Caption="Service"/> <GuideEntityEmbed Entity="BorgChassisMedical" Caption="Medical"/> </Box> <Box> - [italic]Examples of various cyborg chassis[/italic] + [italic]Examples of various cyborg types[/italic] </Box> - If you wish to change the chassis of an already existing cyborg, you have to construct a whole new one, limbs and frame included. The brain, power cell and modules [italic](if it can fit in the new chassis,)[/italic] can be carried over from the old chassis, if desired. + Once a cyborg chassis has been specialized, it cannot be changed. To change types, a new chassis must be constructed. The brain, power cell, and any modules [italic](if they are compatible with the new chassis)[/italic] can be carried over from the old chassis if desired. ## Modules <Box> <GuideEntityEmbed Entity="BorgModuleTool" Caption="Tool Cyborg Module"/> </Box> - A cyborg isn't able to do much without [color=#a4885c]modules[/color]. These printed circuit boards are specific to cyborgs and grant additional functionality to them. They are printed at the [color=#a4885c]Exosuit Fabricator[/color]. + Cyborgs do not have hands, and therefore cannot pick things up like most other players. Instead, their equipment is provided by various [color=#a4885c]modules[/color]. Every cyborg type starts with its own specific set of modules, but additional modules can be inserted as upgrades. These additional modules can be printed at the [color=#a4885c]Exosuit Fabricator[/color]. - [color=#a4885c]Generic[/color] modules add versatility. They can be fitted into any chassis, granting useful tools such as crowbars, GPS, and the ability to interact with cables. [bold]The generic borg chassis can fit up to 6 modules in total.[/bold] + [color=#a4885c]Generic[/color] modules add versatility. They can be fitted into any chassis, granting useful tools such as crowbars, GPS, and the ability to interact with cables. [bold]The generic cyborg chassis can fit up to five additional modules.[/bold] <Box> <GuideEntityEmbed Entity="BorgModuleCable" Caption="Cable"/> <GuideEntityEmbed Entity="BorgModuleGPS" Caption="GPS"/> @@ -49,7 +49,7 @@ [italic]Examples of generic modules[/italic] </Box> - For more specific needs, [color=#a4885c]specialized[/color] modules are available, granting capabilities like scanning anomalies, constructing walls, reviving crew mates, or cleaning a space lube spill. These modules are typically colored with the same palette as the department [italic](or occupation)[/italic] they relate to. These modules [italic](with exception to [color=#D381C9]science[/color] modules, which can fit any chassis,)[/italic] can only be fitted in their associated borg chassis. [bold]The specialized borg chassis, being the engineering, janitorial, service, medical, and mining chassis, can fit up to 4 modules.[/bold] + For more specific needs, [color=#a4885c]specialized[/color] modules are available, granting capabilities like scanning anomalies, constructing walls, reviving crew mates, or cleaning a space lube spill. These modules are typically colored with the same palette as the department [italic](or occupation)[/italic] they relate to. These modules [italic](with exception to [color=#D381C9]science[/color] modules, which can fit any chassis,)[/italic] can only be fitted in their associated borg chassis. [bold]The specialized borg chassis, being the engineering, janitorial, service, medical, and mining chassis, can fit up to three additional modules.[/bold] <Box> <GuideEntityEmbed Entity="BorgModuleAnomaly" Caption="Anomaly"/> <GuideEntityEmbed Entity="BorgModuleRCD" Caption="RCD"/> diff --git a/Resources/Textures/Interface/Actions/actions_borg.rsi/meta.json b/Resources/Textures/Interface/Actions/actions_borg.rsi/meta.json index dc8a6fcf9c6..2ebb6eddcf5 100644 --- a/Resources/Textures/Interface/Actions/actions_borg.rsi/meta.json +++ b/Resources/Textures/Interface/Actions/actions_borg.rsi/meta.json @@ -48,7 +48,7 @@ }, { "name":"light-replacer-module" - }, + }, { "name":"cleaning-module" }, @@ -102,6 +102,9 @@ }, { "name":"syndicate-martyr-module" + }, + { + "name": "select-type" } ] } diff --git a/Resources/Textures/Interface/Actions/actions_borg.rsi/select-type.png b/Resources/Textures/Interface/Actions/actions_borg.rsi/select-type.png new file mode 100644 index 0000000000000000000000000000000000000000..766fd71abd0d865e7e4fe89a8137ebafc0c7e5ee GIT binary patch literal 408 zcmV;J0cZY+P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp) z=>Px$Qb|NXR9J=WS22%+AQXO(nnJGeEyctxoo?;a|Nlpt4qeVfbRe<8$=rm82<>^1 z)4^}zJ%sP$6VOKh0J7}Vzyc`Cufs0OPK^-x68r!F&CZUbEZBdr3X!*_-3ySiU}>7d z@tC##VL#})ZV*#Se@$LhC6lsXM#R8@B-yu0sS&|kpp-(A>{|fnogN54#AxKUh`N@2 zJP;6b^|k;Tn*-}~;PJS9#2`PPKc9;_fQZZP0j1Pv4-6ti1Vrp(t#xoRt##jT+IH-N zJ3qi12RP@TwFb`lh}_M&u@93Sutm6VbG8E^Om@Ib99pg2_g4pAo&q1a$-AU(&iBmZ zQxIC!yZ0X&H`#%?vC4bE>%ir5eZ~^8eGNAU*6#qo_`iQ{@}L9v`;CPPlPRKJ6)II# zGD65$fDm~rWx?uNMlH_>A^y_Lh=@t<6$G$sdHxMyApx5dNM}g^0000<MNUMnLSTY8 C>bR8v literal 0 HcmV?d00001 diff --git a/Resources/migration.yml b/Resources/migration.yml index 3ed618dcfd7..8940df2b65e 100644 --- a/Resources/migration.yml +++ b/Resources/migration.yml @@ -440,3 +440,38 @@ BlueprintFlare: null # 2024-10-04 BaseAdvancedPen: Pen + +# 2024-10-09 +# Removal of separate borg chassis parts, replace them with generic borg parts. +LeftArmBorgEngineer: LeftArmBorg +RightArmBorgEngineer: RightArmBorg +LeftLegBorgEngineer: LeftLegBorg +RightLegBorgEngineer: RightLegBorg +HeadBorgEngineer: LightHeadBorg +TorsoBorgEngineer: TorsoBorg + +LeftArmBorgMedical: LeftArmBorg +RightArmBorgMedical: RightArmBorg +LeftLegBorgMedical: LeftLegBorg +RightLegBorgMedical: RightLegBorg +HeadBorgMedical: LightHeadBorg +TorsoBorgMedical: TorsoBorg + +LeftArmBorgMining: LeftArmBorg +RightArmBorgMining: RightArmBorg +LeftLegBorgMining: LeftLegBorg +RightLegBorgMining: RightLegBorg +HeadBorgMining: LightHeadBorg +TorsoBorgMining: TorsoBorg + +LeftArmBorgService: LeftArmBorg +RightArmBorgService: RightArmBorg +LeftLegBorgService: LeftLegBorg +RightLegBorgService: RightLegBorg +HeadBorgService: LightHeadBorg +TorsoBorgService: TorsoBorg + +LeftLegBorgJanitor: LeftLegBorg +RightLegBorgJanitor: RightLegBorg +HeadBorgJanitor: LightHeadBorg +TorsoBorgJanitor: TorsoBorg From 0437ec6d56e764458ff0c9a74fbe4ed3e7280007 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Thu, 14 Nov 2024 17:09:42 +0000 Subject: [PATCH 087/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 32 +++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index eb3f7268008..ce0be691a4a 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,18 +1,4 @@ Entries: -- author: TheShuEd - changes: - - message: added morbilliard variants of procedural tacos and kebabs - type: Add - - message: removed all microwave taco and kebabs recipes (except for the taco shell - itself) - type: Remove - - message: you can fight with a skewer (even if it has food on it) - type: Tweak - - message: now you can't put more than 10 layers on a burger. (20 before) - type: Tweak - id: 7109 - time: '2024-08-14T13:04:00.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30905 - author: themias changes: - message: Fixed lizards being unable to eat custom burgers @@ -3941,3 +3927,21 @@ id: 7608 time: '2024-11-14T16:56:22.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33303 +- author: PJB3005 + changes: + - message: Borgs can now select their chassis type upon creation (construction or + job spawn), immediately giving borgs access to all chassis types. + type: Add + - message: Borg chassis types now come with built-in modules depending on the type, + so you can immediately do your job without help from science. Some upgrade modules + must still be installed later however. + type: Add + - message: Specialized chassis types have been removed from construction, as they + are no longer necessary. + type: Remove + - message: Borg unlock access is no longer determined by their chassis, it's always + science or command. This means the janitor can't unlock jani borgs anymore. + type: Remove + id: 7609 + time: '2024-11-14T17:08:35.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32586 From 53ce8123569ac7132ddffe0a5c2a4e236e73d81a Mon Sep 17 00:00:00 2001 From: ScarKy0 <scarky0@onet.eu> Date: Thu, 14 Nov 2024 18:18:39 +0100 Subject: [PATCH 088/187] slash --- Content.Server/Silicons/Laws/IonStormSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Silicons/Laws/IonStormSystem.cs b/Content.Server/Silicons/Laws/IonStormSystem.cs index f8bc8ca8c31..7587dc41552 100644 --- a/Content.Server/Silicons/Laws/IonStormSystem.cs +++ b/Content.Server/Silicons/Laws/IonStormSystem.cs @@ -60,7 +60,7 @@ public sealed class IonStormSystem : EntitySystem private const string Foods = "IonStormFoods"; /// <summary> - //Randomly alters the laws of an individual silicon. + /// Randomly alters the laws of an individual silicon. /// </summary> public void IonStormTarget(Entity<SiliconLawBoundComponent, IonStormTargetComponent> ent, bool adminlog = true) { From 9a5c49b961cd7376e2b9ea4ffcbad78661188149 Mon Sep 17 00:00:00 2001 From: ScarKy0 <scarky0@onet.eu> Date: Thu, 14 Nov 2024 18:31:50 +0100 Subject: [PATCH 089/187] epic empty commit --- Content.Server/Silicons/Laws/IonStormSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Silicons/Laws/IonStormSystem.cs b/Content.Server/Silicons/Laws/IonStormSystem.cs index 7587dc41552..97ad2d8f9ef 100644 --- a/Content.Server/Silicons/Laws/IonStormSystem.cs +++ b/Content.Server/Silicons/Laws/IonStormSystem.cs @@ -60,7 +60,7 @@ public sealed class IonStormSystem : EntitySystem private const string Foods = "IonStormFoods"; /// <summary> - /// Randomly alters the laws of an individual silicon. + /// Randomly alters the laws of an individual silicon. Epic test fail /// </summary> public void IonStormTarget(Entity<SiliconLawBoundComponent, IonStormTargetComponent> ent, bool adminlog = true) { From 3b9365160c5bdb98899821f1f79a353fbcd4f6a3 Mon Sep 17 00:00:00 2001 From: ScarKy0 <scarky0@onet.eu> Date: Thu, 14 Nov 2024 18:32:02 +0100 Subject: [PATCH 090/187] or was it --- Content.Server/Silicons/Laws/IonStormSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Silicons/Laws/IonStormSystem.cs b/Content.Server/Silicons/Laws/IonStormSystem.cs index 97ad2d8f9ef..7587dc41552 100644 --- a/Content.Server/Silicons/Laws/IonStormSystem.cs +++ b/Content.Server/Silicons/Laws/IonStormSystem.cs @@ -60,7 +60,7 @@ public sealed class IonStormSystem : EntitySystem private const string Foods = "IonStormFoods"; /// <summary> - /// Randomly alters the laws of an individual silicon. Epic test fail + /// Randomly alters the laws of an individual silicon. /// </summary> public void IonStormTarget(Entity<SiliconLawBoundComponent, IonStormTargetComponent> ent, bool adminlog = true) { From 2c9f2279d63d7515c1ce2c46054965902ebcd840 Mon Sep 17 00:00:00 2001 From: scrivoy <179060466+scrivoy@users.noreply.github.com> Date: Thu, 14 Nov 2024 22:30:16 +0100 Subject: [PATCH 091/187] Marathon Station: Added air alarms to CMO, Surgery, Security Checkpoint (#33213) * add air alarms to sec checkpoint, cmo and western surgery * decals and cleanup --- Resources/Maps/marathon.yml | 135 ++++++++++++++++++++++++++++++------ 1 file changed, 112 insertions(+), 23 deletions(-) diff --git a/Resources/Maps/marathon.yml b/Resources/Maps/marathon.yml index 00287937989..1f1632004b7 100644 --- a/Resources/Maps/marathon.yml +++ b/Resources/Maps/marathon.yml @@ -586,7 +586,6 @@ entities: 2445: -41,19 2646: -33,-12 2665: -28,-14 - 2666: -23,-15 2667: -19,-23 2740: -20,-5 2794: 18,16 @@ -608,6 +607,7 @@ entities: 2979: -3,-48 3010: 12,14 3015: 2,-51 + 3114: -21,-15 - node: angle: 1.5707963267948966 rad color: '#FFFFFFFF' @@ -1039,11 +1039,11 @@ entities: color: '#52B4E996' id: BrickTileWhiteCornerNw decals: - 2536: -23,-15 2544: -15,-15 2602: -19,-19 2630: -31,-16 2673: -16,-9 + 3119: -23,-15 - node: color: '#DE3A3A96' id: BrickTileWhiteCornerNw @@ -1068,8 +1068,8 @@ entities: color: '#FFFFFFFF' id: BrickTileWhiteCornerNw decals: - 2533: -23,-15 2573: -19,-19 + 3118: -23,-15 - node: color: '#52B4E996' id: BrickTileWhiteCornerSe @@ -4510,9 +4510,9 @@ entities: color: '#52B4E996' id: WarnLineGreyscaleN decals: - 2537: -22,-15 2605: -14,-19 2608: -14,-15 + 3115: -22,-15 - node: color: '#D381C996' id: WarnLineGreyscaleN @@ -7544,6 +7544,16 @@ entities: parent: 30 - proto: AirAlarm entities: + - uid: 3167 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -23.5,-15.5 + parent: 30 + - type: DeviceList + devices: + - 9046 + - 9049 - uid: 6224 components: - type: Transform @@ -7765,6 +7775,27 @@ entities: - 18435 - 18436 - 18437 + - uid: 18082 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -38.5,8.5 + parent: 30 + - type: DeviceList + devices: + - 3077 + - 3076 + - uid: 19145 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -35.5,-18.5 + parent: 30 + - type: DeviceList + devices: + - 6935 + - 6920 + - 22554 - uid: 19570 components: - type: Transform @@ -8808,6 +8839,26 @@ entities: - 22084 - 3484 - 3481 + - uid: 22553 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -23.5,-23.5 + parent: 30 + - type: DeviceList + devices: + - 6834 + - 9713 + - uid: 22555 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -31.5,-22.5 + parent: 30 + - type: DeviceList + devices: + - 7115 + - 7119 - proto: AirAlarmElectronics entities: - uid: 15214 @@ -11906,6 +11957,14 @@ entities: - type: Transform pos: -2.5,8.5 parent: 30 + - uid: 22554 + components: + - type: Transform + pos: -34.5,-23.5 + parent: 30 + - type: DeviceNetwork + deviceLists: + - 19145 - proto: AltarConvertRed entities: - uid: 17468 @@ -54920,11 +54979,11 @@ entities: parent: 30 - proto: DefibrillatorCabinetFilled entities: - - uid: 3167 + - uid: 6956 components: - type: Transform rot: 1.5707963267948966 rad - pos: -23.5,-15.5 + pos: -23.5,-14.5 parent: 30 - uid: 6970 components: @@ -55583,6 +55642,12 @@ entities: - type: Transform pos: -19.5,-5.5 parent: 30 + - uid: 6953 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -21.5,-14.5 + parent: 30 - uid: 7412 components: - type: Transform @@ -55677,12 +55742,6 @@ entities: rot: 1.5707963267948966 rad pos: -19.5,-9.5 parent: 30 - - uid: 7354 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -21.5,-14.5 - parent: 30 - uid: 12233 components: - type: Transform @@ -59804,12 +59863,6 @@ entities: rot: 3.141592653589793 rad pos: -18.5,-22.5 parent: 30 - - uid: 6956 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -22.5,-14.5 - parent: 30 - uid: 6962 components: - type: Transform @@ -59821,6 +59874,12 @@ entities: - type: Transform pos: -19.5,-4.5 parent: 30 + - uid: 7354 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -20.5,-14.5 + parent: 30 - uid: 9753 components: - type: Transform @@ -60216,11 +60275,6 @@ entities: - type: Transform pos: -19.5,-4.5 parent: 30 - - uid: 6953 - components: - - type: Transform - pos: -22.5,-14.5 - parent: 30 - uid: 6954 components: - type: Transform @@ -60296,6 +60350,11 @@ entities: - type: Transform pos: 14.5,-17.5 parent: 30 + - uid: 19150 + components: + - type: Transform + pos: -20.5,-14.5 + parent: 30 - uid: 19407 components: - type: Transform @@ -86755,6 +86814,9 @@ entities: - type: Transform pos: -40.5,10.5 parent: 30 + - type: DeviceNetwork + deviceLists: + - 18082 - type: AtmosPipeColor color: '#0000FFFF' - uid: 3099 @@ -87044,6 +87106,9 @@ entities: rot: 3.141592653589793 rad pos: -25.5,-22.5 parent: 30 + - type: DeviceNetwork + deviceLists: + - 22553 - type: AtmosPipeColor color: '#0000FFFF' - uid: 6900 @@ -87060,6 +87125,9 @@ entities: rot: 1.5707963267948966 rad pos: -33.5,-16.5 parent: 30 + - type: DeviceNetwork + deviceLists: + - 19145 - type: AtmosPipeColor color: '#0000FFFF' - uid: 6939 @@ -87086,6 +87154,9 @@ entities: - type: Transform pos: -28.5,-20.5 parent: 30 + - type: DeviceNetwork + deviceLists: + - 22555 - type: AtmosPipeColor color: '#0000FFFF' - uid: 7136 @@ -87232,6 +87303,9 @@ entities: - type: Transform pos: -25.5,-15.5 parent: 30 + - type: DeviceNetwork + deviceLists: + - 3167 - type: AtmosPipeColor color: '#0000FFFF' - uid: 9686 @@ -88266,6 +88340,9 @@ entities: rot: 1.5707963267948966 rad pos: -39.5,10.5 parent: 30 + - type: DeviceNetwork + deviceLists: + - 18082 - type: AtmosPipeColor color: '#FF0000FF' - uid: 3100 @@ -88548,6 +88625,9 @@ entities: rot: 1.5707963267948966 rad pos: -33.5,-18.5 parent: 30 + - type: DeviceNetwork + deviceLists: + - 19145 - type: AtmosPipeColor color: '#FF0000FF' - uid: 7098 @@ -88577,6 +88657,9 @@ entities: rot: 3.141592653589793 rad pos: -28.5,-18.5 parent: 30 + - type: DeviceNetwork + deviceLists: + - 22555 - type: AtmosPipeColor color: '#FF0000FF' - uid: 7130 @@ -88714,6 +88797,9 @@ entities: - type: Transform pos: -25.5,-16.5 parent: 30 + - type: DeviceNetwork + deviceLists: + - 3167 - type: AtmosPipeColor color: '#FF0000FF' - uid: 9713 @@ -88722,6 +88808,9 @@ entities: rot: 3.141592653589793 rad pos: -25.5,-23.5 parent: 30 + - type: DeviceNetwork + deviceLists: + - 22553 - type: AtmosPipeColor color: '#FF0000FF' - uid: 9793 From d205d17ba3d0bee79752915e6e57e7f2f539e0ec Mon Sep 17 00:00:00 2001 From: scrivoy <179060466+scrivoy@users.noreply.github.com> Date: Fri, 15 Nov 2024 02:04:14 +0100 Subject: [PATCH 092/187] Meta Station: Add a fully functional TEG room (#32941) * initial commit * delete WIP-marker.md * add TEG room, move gas chambers up * remove outside burn chamber button, add naming to APC, SMES, Substation * add HV below TEG Substation * removed invalids --- Resources/Maps/meta.yml | 5813 +++++++++++++++++++++++++++++---------- 1 file changed, 4385 insertions(+), 1428 deletions(-) diff --git a/Resources/Maps/meta.yml b/Resources/Maps/meta.yml index 93a6bc31c42..be14ee8855a 100644 --- a/Resources/Maps/meta.yml +++ b/Resources/Maps/meta.yml @@ -284,15 +284,15 @@ entities: version: 6 4,-1: ind: 4,-1 - tiles: eQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAA + tiles: eQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAA version: 6 4,-2: ind: 4,-2 - tiles: eAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAATQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAA + tiles: eAAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAYAAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAWQAAAAAAWQAAAAAAYAAAAAAAYAAAAAAAYAAAAAAAWQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAYAAAAAAAWQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAA version: 6 3,-3: ind: 3,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAATQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAATQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAA version: 6 5,0: ind: 5,0 @@ -300,7 +300,7 @@ entities: version: 6 4,-3: ind: 4,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAA + tiles: eAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAA version: 6 2,-3: ind: 2,-3 @@ -448,7 +448,23 @@ entities: version: 6 5,-2: ind: 5,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAA + tiles: eAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAA + version: 6 + 5,-3: + ind: 5,-3 + tiles: eAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 3,-4: + ind: 3,-4 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAA + version: 6 + 4,-4: + ind: 4,-4 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAA + version: 6 + 5,-4: + ind: 5,-4 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 - type: Broadphase - type: Physics @@ -708,6 +724,12 @@ entities: 3190: 64,26 3191: 64,14 3192: 76,14 + 3529: 76,-33 + 3530: 76,-34 + 3531: 76,-35 + 3532: 76,-36 + 3533: 76,-37 + 3566: 70,-39 - node: color: '#FFFFFFFF' id: BoxGreyscale @@ -980,6 +1002,11 @@ entities: id: BrickTileWhiteCornerSe decals: 3099: 6,-26 + - node: + color: '#3EB38896' + id: BrickTileWhiteCornerSw + decals: + 3569: 66,-32 - node: color: '#52B4E996' id: BrickTileWhiteCornerSw @@ -1008,6 +1035,11 @@ entities: id: BrickTileWhiteEndN decals: 2748: -26,-26 + - node: + color: '#3EB38896' + id: BrickTileWhiteInnerNe + decals: + 3594: 67,-30 - node: color: '#D381C996' id: BrickTileWhiteInnerNe @@ -1051,6 +1083,13 @@ entities: decals: 2544: 20,-30 2567: 14,-43 + - node: + color: '#3EB38896' + id: BrickTileWhiteLineE + decals: + 3574: 67,-28 + 3575: 67,-29 + 3609: 67,-25 - node: color: '#52B4E996' id: BrickTileWhiteLineE @@ -1135,6 +1174,16 @@ entities: 3236: 60,21 3237: 60,20 3238: 60,19 + - node: + color: '#3EB38896' + id: BrickTileWhiteLineN + decals: + 3589: 72,-30 + 3590: 71,-30 + 3591: 70,-30 + 3592: 69,-30 + 3612: 73,-30 + 3613: 68,-30 - node: color: '#52B4E996' id: BrickTileWhiteLineN @@ -1197,6 +1246,17 @@ entities: 3102: 3,-25 3103: 4,-25 3104: 5,-25 + - node: + color: '#3EB38896' + id: BrickTileWhiteLineS + decals: + 3583: 67,-32 + 3584: 68,-32 + 3585: 69,-32 + 3586: 70,-32 + 3587: 71,-32 + 3588: 72,-32 + 3611: 73,-32 - node: color: '#52B4E996' id: BrickTileWhiteLineS @@ -1259,6 +1319,15 @@ entities: id: BrickTileWhiteLineW decals: 2495: 104,-14 + - node: + color: '#3EB38896' + id: BrickTileWhiteLineW + decals: + 3578: 66,-27 + 3579: 66,-28 + 3580: 66,-29 + 3581: 66,-30 + 3582: 66,-31 - node: color: '#52B4E996' id: BrickTileWhiteLineW @@ -4651,6 +4720,7 @@ entities: 3109: 28,-63 3250: 56,17 3251: 56,23 + 3608: 66.50142,-31.75576 - node: color: '#334E6DC8' id: ThreeQuarterTileOverlayGreyscale @@ -4934,6 +5004,11 @@ entities: id: WarnBox decals: 2504: -64,-14 + - node: + color: '#FFFFFFFF' + id: WarnCornerNE + decals: + 3544: 74,-33 - node: color: '#FFFFFFFF' id: WarnCornerSE @@ -4951,6 +5026,7 @@ entities: 900: -13,10 1625: 0,-29 3276: 42,15 + 3557: 74,-38 - node: color: '#FFFFFFFF' id: WarnCornerSmallNW @@ -5042,6 +5118,17 @@ entities: 3269: 42,16 3270: 42,17 3271: 42,18 + 3540: 74,-37 + 3542: 74,-35 + 3543: 74,-34 + 3558: 74,-36 + 3617: 67,-26 + - node: + color: '#3EB38896' + id: WarnLineGreyscaleE + decals: + 3598: 67,-27 + 3610: 67,-24 - node: color: '#52B4E996' id: WarnLineGreyscaleE @@ -5160,6 +5247,12 @@ entities: 1694: 12,-41 1695: 11,-41 1696: 10,-41 + - node: + color: '#3EB38896' + id: WarnLineGreyscaleW + decals: + 3595: 66,-25 + 3607: 66,-24 - node: color: '#52B4E996' id: WarnLineGreyscaleW @@ -5315,6 +5408,7 @@ entities: 3516: 33,6 3517: 33,7 3518: 33,8 + 3616: 66,-26 - node: color: '#DE3A3A96' id: WarnLineW @@ -5381,6 +5475,16 @@ entities: 3178: -3,-39 3179: -4,-39 3255: 43,15 + 3545: 73,-33 + 3546: 72,-33 + 3547: 71,-33 + 3548: 70,-33 + 3549: 69,-33 + 3555: 75,-38 + 3556: 76,-38 + 3562: 66,-33 + 3563: 67,-33 + 3564: 68,-33 - node: angle: -3.141592653589793 rad color: '#FFFFFFFF' @@ -6511,11 +6615,14 @@ entities: 15,-4: 0: 65535 16,-8: - 1: 58115 - 0: 236 + 1: 4369 + 0: 52428 16,-7: - 1: 242 - 0: 61440 + 1: 17 + 0: 64716 + 16,-6: + 0: 15 + 1: 11776 13,-3: 0: 62719 13,-2: @@ -6542,7 +6649,7 @@ entities: 0: 119 16,-1: 0: 240 - 1: 13058 + 1: 62222 12,1: 0: 58606 12,2: @@ -6576,7 +6683,7 @@ entities: 0: 4354 1: 34952 16,0: - 1: 127 + 1: 255 0: 3840 16,1: 0: 54272 @@ -6849,19 +6956,21 @@ entities: -5,14: 1: 17652 -4,15: - 1: 15 + 1: 9999 -5,15: 1: 12 + -4,16: + 1: 14 -3,13: 0: 65521 -3,14: 0: 33023 1: 4096 -3,15: - 1: 25123 + 1: 25091 0: 136 -3,16: - 1: 196 + 1: 243 -2,13: 0: 65521 -2,14: @@ -6875,15 +6984,17 @@ entities: 0: 16435 1: 10240 -1,15: - 1: 12834 + 1: 14862 -1,16: - 1: 17 + 1: 54 0,13: 0: 51 1: 45056 0,14: 1: 2816 0: 16384 + 0,15: + 1: 288 -9,12: 1: 36761 -8,13: @@ -7103,22 +7214,22 @@ entities: 12,12: 1: 61441 17,0: - 1: 15 + 1: 223 0: 57376 17,2: 0: 65295 17,3: 0: 15 1: 20288 - 17,1: - 0: 61166 17,-1: + 1: 53389 0: 11826 - 1: 136 + 17,1: + 0: 61166 17,4: 1: 17487 18,0: - 1: 15 + 1: 255 0: 61440 18,1: 0: 65535 @@ -7127,8 +7238,11 @@ entities: 18,3: 0: 15 1: 3840 + 18,-1: + 1: 61610 + 0: 3840 19,0: - 1: 31 + 1: 255 0: 7168 19,1: 0: 4369 @@ -7139,19 +7253,19 @@ entities: 0: 1011 1: 8192 19,-1: - 1: 4130 + 1: 61474 0: 3840 19,4: 1: 8738 0: 51328 20,0: - 1: 143 + 1: 255 0: 3840 20,2: 1: 7951 20,3: - 1: 341 - 0: 46080 + 1: 261 + 0: 46320 -11,9: 0: 34827 1: 12800 @@ -7309,105 +7423,98 @@ entities: 1: 257 16,-4: 1: 8738 - 5: 136 - 6: 32768 + 5: 2184 16,-3: 1: 8738 - 6: 32904 + 6: 2184 16,-2: - 1: 57890 - 6: 136 + 1: 8738 + 6: 2184 16,-5: 1: 8738 - 5: 32768 - 6: 136 + 6: 2184 17,-4: - 5: 51 - 6: 12288 - 0: 128 - 1: 34816 + 5: 819 + 0: 2176 + 1: 32768 17,-3: - 6: 12339 + 6: 819 1: 34952 17,-2: - 6: 51 - 1: 55432 - 0: 8192 + 6: 819 + 1: 34952 17,-5: - 5: 12288 - 0: 32768 - 6: 51 - 1: 2184 + 0: 34816 + 6: 819 + 1: 136 18,-4: - 0: 135 - 1: 43552 + 0: 3975 + 1: 40992 18,-3: 1: 43770 - 18,-1: - 0: 3840 - 1: 170 18,-5: - 1: 12202 - 0: 32768 + 1: 8362 + 0: 36608 18,-2: 1: 43690 19,-4: - 0: 135 - 1: 43552 + 0: 3975 + 1: 40992 19,-3: 1: 57906 19,-5: - 1: 11170 - 0: 32768 + 1: 8354 + 0: 36608 19,-2: 1: 8930 20,-4: - 0: 135 - 1: 34816 + 0: 3975 + 1: 32768 20,-3: 1: 61440 20,-2: 1: 240 20,-1: 0: 3840 - 1: 32768 - 16,-6: - 1: 8928 - 6: 32768 + 1: 61440 16,-9: - 0: 61166 - 1: 1 + 1: 4369 + 0: 52428 17,-8: - 0: 31487 - 1: 32768 + 0: 4095 17,-7: - 1: 3536 - 0: 61991 + 0: 1654 17,-6: - 1: 35037 - 6: 12288 - 0: 34 + 0: 15 + 1: 36608 17,-9: 0: 65535 18,-8: - 0: 153 - 1: 12898 + 0: 819 + 1: 34944 18,-7: - 1: 47858 + 1: 48127 18,-6: - 1: 43770 + 1: 43771 18,-9: - 0: 48027 - 1: 96 + 0: 65535 19,-8: - 0: 51 + 1: 64248 19,-7: - 1: 8448 + 1: 8696 0: 512 19,-6: 1: 8754 19,-9: - 0: 13107 + 0: 4369 + 1: 52424 + 20,-8: + 1: 30039 + 20,-7: + 1: 117 + 20,-5: + 0: 36608 + 1: 128 12,-10: 1: 61696 11,-10: @@ -7417,25 +7524,42 @@ entities: 14,-10: 1: 64000 15,-10: - 1: 61952 + 1: 65503 + 15,-12: + 1: 57311 + 15,-13: + 1: 40704 + 15,-11: + 1: 56829 + 16,-12: + 1: 65023 + 16,-11: + 1: 4353 + 6: 52416 + 16,-10: + 1: 4353 + 0: 52416 20,4: - 1: 5457 - 0: 4 + 1: 5377 + 0: 244 21,0: - 1: 32783 + 1: 33023 0: 3840 21,2: 1: 3887 21,3: - 0: 46080 - 1: 68 + 0: 46320 + 1: 4 + 21,-1: + 1: 61440 + 0: 3840 21,1: 1: 17608 21,4: - 0: 4 - 1: 1088 + 0: 244 + 1: 1024 22,0: - 1: 2151 + 1: 2167 0: 58248 22,1: 1: 3634 @@ -7443,13 +7567,13 @@ entities: 22,2: 1: 3855 22,3: - 0: 46080 - 1: 68 + 0: 46320 + 1: 4 22,-1: - 1: 24608 + 1: 28704 0: 36608 22,4: - 0: 4 + 0: 180 1: 1088 23,0: 0: 25855 @@ -7461,13 +7585,14 @@ entities: 1: 26471 0: 34952 23,3: - 0: 61576 - 1: 3686 + 0: 61688 + 1: 3590 23,-1: 0: 63044 1: 2235 23,4: - 1: 19660 + 1: 19468 + 0: 240 24,0: 0: 3295 1: 256 @@ -7478,12 +7603,44 @@ entities: 24,3: 1: 609 0: 63760 - 16,-10: - 0: 60608 + 16,-13: + 1: 12032 + 17,-12: + 1: 65023 + 17,-11: + 6: 13104 + 1: 34952 17,-10: 0: 65520 + 17,-13: + 1: 12032 + 18,-12: + 1: 64767 + 18,-11: + 1: 30591 + 0: 2048 18,-10: - 0: 13072 + 0: 65520 + 18,-13: + 1: 40704 + 19,-12: + 1: 64255 + 19,-11: + 1: 35983 + 0: 4352 + 19,-10: + 0: 4369 + 1: 52428 + 19,-13: + 1: 36608 + 20,-12: + 1: 22357 + 20,-11: + 1: 21847 + 20,-10: + 1: 30039 + 20,-9: + 1: 21877 8,-13: 0: 6004 9,-12: @@ -8143,37 +8300,33 @@ entities: 1: 13056 7,-19: 1: 34952 - 20,-5: - 0: 32768 - 1: 2176 21,-4: - 0: 135 - 1: 34816 + 0: 3975 + 1: 32768 21,-3: 1: 61440 21,-2: 1: 240 - 21,-1: - 0: 3840 21,-5: - 0: 32768 - 1: 2176 + 0: 36608 + 1: 128 22,-4: - 0: 15 + 0: 3855 22,-3: 1: 61440 22,-2: 1: 240 23,-4: - 0: 15 - 1: 52416 + 0: 3855 + 1: 49344 23,-3: 1: 64716 23,-2: 1: 15868 0: 49152 23,-5: - 1: 52420 + 1: 49348 + 0: 3840 24,-4: 0: 4511 1: 8736 @@ -8328,6 +8481,10 @@ entities: 26,-6: 1: 34800 0: 28672 + 22,-5: + 0: 3840 + 20,-13: + 1: 22272 uniqueMixes: - volume: 2500 temperature: 293.15 @@ -8497,6 +8654,18 @@ entities: parent: 5350 - proto: AirAlarm entities: + - uid: 11752 + components: + - type: Transform + pos: 71.5,-28.5 + parent: 5350 + - type: DeviceList + devices: + - 27078 + - 27210 + - 27212 + - 26995 + - 26996 - uid: 14304 components: - type: Transform @@ -9460,7 +9629,7 @@ entities: parent: 5350 - type: DeviceList devices: - - 24516 + - 10990 - uid: 24517 components: - type: Transform @@ -9960,6 +10129,15 @@ entities: - 19501 - 19500 - 19499 + - uid: 27108 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 70.5,-39.5 + parent: 5350 + - type: DeviceList + devices: + - 27127 - proto: AirCanister entities: - uid: 2431 @@ -10175,11 +10353,22 @@ entities: - type: Transform pos: 56.5,-7.5 parent: 5350 - - uid: 11498 + - uid: 10820 components: - type: Transform - pos: 69.5,-29.5 + pos: 65.5,-24.5 + parent: 5350 + - type: AccessReader + access: + - - Atmospherics + - uid: 10821 + components: + - type: Transform + pos: 65.5,-23.5 parent: 5350 + - type: AccessReader + access: + - - Atmospherics - proto: AirlockAtmosphericsLocked entities: - uid: 9008 @@ -10706,6 +10895,14 @@ entities: - type: Transform pos: 38.5,-57.5 parent: 5350 + - uid: 26788 + components: + - type: Transform + pos: 68.5,-26.5 + parent: 5350 + - type: AccessReader + access: + - - Engineering - proto: AirlockExternal entities: - uid: 16847 @@ -10713,6 +10910,31 @@ entities: - type: Transform pos: -62.5,-40.5 parent: 5350 +- proto: AirlockExternalAtmosphericsLocked + entities: + - uid: 11254 + components: + - type: Transform + pos: 75.5,-41.5 + parent: 5350 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 11257: + - DoorStatus: DoorBolt + - uid: 27016 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 71.5,-23.5 + parent: 5350 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 27248: + - DoorStatus: DoorBolt - proto: AirlockExternalEngineeringLocked entities: - uid: 12540 @@ -10823,16 +11045,29 @@ entities: parent: 5350 - proto: AirlockExternalGlassAtmosphericsLocked entities: - - uid: 11284 + - uid: 11257 components: - type: Transform - pos: 64.5,-24.5 + pos: 76.5,-39.5 parent: 5350 - - uid: 11285 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 11254: + - DoorStatus: DoorBolt + - uid: 27248 components: - type: Transform - pos: 67.5,-24.5 + rot: -1.5707963267948966 rad + pos: 68.5,-23.5 parent: 5350 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 27016: + - DoorStatus: DoorBolt - proto: AirlockExternalGlassCargoLocked entities: - uid: 3441 @@ -10880,7 +11115,7 @@ entities: pos: -42.5,29.5 parent: 5350 - type: Door - secondsUntilStateChange: -5834.8745 + secondsUntilStateChange: -25306.475 state: Opening - type: DeviceLinkSink invokeCounter: 2 @@ -12829,6 +13064,14 @@ entities: parent: 5350 - proto: AirSensor entities: + - uid: 10990 + components: + - type: Transform + pos: 68.5,-6.5 + parent: 5350 + - type: DeviceNetwork + deviceLists: + - 24515 - uid: 14424 components: - type: Transform @@ -13213,11 +13456,6 @@ entities: - type: Transform pos: 53.5,-18.5 parent: 5350 - - uid: 24516 - components: - - type: Transform - pos: 68.5,-7.5 - parent: 5350 - uid: 24521 components: - type: Transform @@ -13423,6 +13661,23 @@ entities: - type: Transform pos: -11.5,-32.5 parent: 5350 + - uid: 27078 + components: + - type: Transform + pos: 70.5,-32.5 + parent: 5350 + - type: DeviceNetwork + deviceLists: + - 11752 + - 26994 + - uid: 27127 + components: + - type: Transform + pos: 68.5,-41.5 + parent: 5350 + - type: DeviceNetwork + deviceLists: + - 27108 - proto: AltarConvertMaint entities: - uid: 22866 @@ -13680,6 +13935,13 @@ entities: - type: Transform pos: -34.5,32.5 parent: 5350 + - uid: 10831 + components: + - type: MetaData + name: TEG APC + - type: Transform + pos: 69.5,-28.5 + parent: 5350 - uid: 11513 components: - type: MetaData @@ -14179,10 +14441,40 @@ entities: parent: 5350 - proto: AtmosFixBlockerMarker entities: - - uid: 11609 + - uid: 10913 components: - type: Transform - pos: 67.5,-20.5 + pos: 67.5,-17.5 + parent: 5350 + - uid: 11200 + components: + - type: Transform + pos: 67.5,-5.5 + parent: 5350 + - uid: 11307 + components: + - type: Transform + pos: 68.5,-5.5 + parent: 5350 + - uid: 11308 + components: + - type: Transform + pos: 69.5,-5.5 + parent: 5350 + - uid: 11345 + components: + - type: Transform + pos: 68.5,-17.5 + parent: 5350 + - uid: 11347 + components: + - type: Transform + pos: 69.5,-11.5 + parent: 5350 + - uid: 11598 + components: + - type: Transform + pos: 69.5,-17.5 parent: 5350 - uid: 11610 components: @@ -14194,11 +14486,6 @@ entities: - type: Transform pos: 67.5,-18.5 parent: 5350 - - uid: 11612 - components: - - type: Transform - pos: 68.5,-20.5 - parent: 5350 - uid: 11613 components: - type: Transform @@ -14209,11 +14496,6 @@ entities: - type: Transform pos: 68.5,-18.5 parent: 5350 - - uid: 11615 - components: - - type: Transform - pos: 69.5,-20.5 - parent: 5350 - uid: 11616 components: - type: Transform @@ -14224,31 +14506,16 @@ entities: - type: Transform pos: 69.5,-18.5 parent: 5350 - - uid: 11618 - components: - - type: Transform - pos: 67.5,-8.5 - parent: 5350 - uid: 11619 components: - type: Transform pos: 67.5,-7.5 parent: 5350 - - uid: 11620 - components: - - type: Transform - pos: 68.5,-8.5 - parent: 5350 - uid: 11621 components: - type: Transform pos: 68.5,-7.5 parent: 5350 - - uid: 11622 - components: - - type: Transform - pos: 69.5,-8.5 - parent: 5350 - uid: 11623 components: - type: Transform @@ -14269,11 +14536,6 @@ entities: - type: Transform pos: 67.5,-6.5 parent: 5350 - - uid: 11628 - components: - - type: Transform - pos: 67.5,-12.5 - parent: 5350 - uid: 11629 components: - type: Transform @@ -14287,7 +14549,7 @@ entities: - uid: 11631 components: - type: Transform - pos: 68.5,-12.5 + pos: 67.5,-9.5 parent: 5350 - uid: 11632 components: @@ -14299,20 +14561,20 @@ entities: - type: Transform pos: 68.5,-10.5 parent: 5350 - - uid: 11634 + - uid: 11636 components: - type: Transform - pos: 69.5,-12.5 + pos: 69.5,-10.5 parent: 5350 - - uid: 11635 + - uid: 11720 components: - type: Transform - pos: 69.5,-11.5 + pos: 68.5,-9.5 parent: 5350 - - uid: 11636 + - uid: 11722 components: - type: Transform - pos: 69.5,-10.5 + pos: 69.5,-9.5 parent: 5350 - uid: 24185 components: @@ -14359,6 +14621,66 @@ entities: - type: Transform pos: 15.5,-55.5 parent: 5350 + - uid: 27423 + components: + - type: Transform + pos: 66.5,-40.5 + parent: 5350 + - uid: 27424 + components: + - type: Transform + pos: 67.5,-40.5 + parent: 5350 + - uid: 27425 + components: + - type: Transform + pos: 68.5,-40.5 + parent: 5350 + - uid: 27426 + components: + - type: Transform + pos: 69.5,-40.5 + parent: 5350 + - uid: 27427 + components: + - type: Transform + pos: 66.5,-41.5 + parent: 5350 + - uid: 27428 + components: + - type: Transform + pos: 66.5,-42.5 + parent: 5350 + - uid: 27429 + components: + - type: Transform + pos: 67.5,-41.5 + parent: 5350 + - uid: 27430 + components: + - type: Transform + pos: 67.5,-42.5 + parent: 5350 + - uid: 27431 + components: + - type: Transform + pos: 68.5,-42.5 + parent: 5350 + - uid: 27432 + components: + - type: Transform + pos: 68.5,-41.5 + parent: 5350 + - uid: 27433 + components: + - type: Transform + pos: 69.5,-41.5 + parent: 5350 + - uid: 27434 + components: + - type: Transform + pos: 69.5,-42.5 + parent: 5350 - proto: AtmosFixFreezerMarker entities: - uid: 10295 @@ -14547,10 +14869,20 @@ entities: parent: 5350 - proto: AtmosFixPlasmaMarker entities: - - uid: 11600 + - uid: 10828 components: - type: Transform - pos: 67.5,-16.5 + pos: 69.5,-13.5 + parent: 5350 + - uid: 10916 + components: + - type: Transform + pos: 68.5,-13.5 + parent: 5350 + - uid: 10920 + components: + - type: Transform + pos: 67.5,-13.5 parent: 5350 - uid: 11601 components: @@ -14562,11 +14894,6 @@ entities: - type: Transform pos: 67.5,-14.5 parent: 5350 - - uid: 11603 - components: - - type: Transform - pos: 68.5,-16.5 - parent: 5350 - uid: 11604 components: - type: Transform @@ -14577,11 +14904,6 @@ entities: - type: Transform pos: 68.5,-14.5 parent: 5350 - - uid: 11606 - components: - - type: Transform - pos: 69.5,-16.5 - parent: 5350 - uid: 11607 components: - type: Transform @@ -15097,10 +15419,10 @@ entities: - type: Transform pos: -40.5,43.5 parent: 5350 - - uid: 10293 + - uid: 11015 components: - type: Transform - pos: 68.5,-5.5 + pos: 68.5,-4.5 parent: 5350 - uid: 11486 components: @@ -15172,6 +15494,20 @@ entities: - type: Transform pos: 48.5,23.5 parent: 5350 + - uid: 27135 + components: + - type: Transform + pos: 67.5,-43.5 + parent: 5350 + - type: DeviceLinkSink + invokeCounter: 2 + - uid: 27136 + components: + - type: Transform + pos: 68.5,-43.5 + parent: 5350 + - type: DeviceLinkSink + invokeCounter: 2 - proto: BlastDoorExterior1Open entities: - uid: 24634 @@ -19812,6 +20148,11 @@ entities: - type: Transform pos: -37.5,-0.5 parent: 5350 + - uid: 6164 + components: + - type: Transform + pos: 66.5,-6.5 + parent: 5350 - uid: 6209 components: - type: Transform @@ -21377,11 +21718,21 @@ entities: - type: Transform pos: -16.5,27.5 parent: 5350 + - uid: 8889 + components: + - type: Transform + pos: 67.5,-6.5 + parent: 5350 - uid: 8957 components: - type: Transform pos: 40.5,0.5 parent: 5350 + - uid: 8983 + components: + - type: Transform + pos: 68.5,-6.5 + parent: 5350 - uid: 9539 components: - type: Transform @@ -22707,11 +23058,196 @@ entities: - type: Transform pos: -29.5,30.5 parent: 5350 + - uid: 10908 + components: + - type: Transform + pos: 60.5,-16.5 + parent: 5350 + - uid: 10909 + components: + - type: Transform + pos: 67.5,-18.5 + parent: 5350 + - uid: 10911 + components: + - type: Transform + pos: 68.5,-18.5 + parent: 5350 + - uid: 10912 + components: + - type: Transform + pos: 66.5,-18.5 + parent: 5350 + - uid: 10929 + components: + - type: Transform + pos: 66.5,-5.5 + parent: 5350 + - uid: 10935 + components: + - type: Transform + pos: 63.5,-6.5 + parent: 5350 + - uid: 10936 + components: + - type: Transform + pos: 58.5,-6.5 + parent: 5350 + - uid: 10937 + components: + - type: Transform + pos: 59.5,-6.5 + parent: 5350 + - uid: 10938 + components: + - type: Transform + pos: 60.5,-6.5 + parent: 5350 + - uid: 10939 + components: + - type: Transform + pos: 61.5,-6.5 + parent: 5350 + - uid: 10940 + components: + - type: Transform + pos: 62.5,-6.5 + parent: 5350 + - uid: 10941 + components: + - type: Transform + pos: 68.5,-10.5 + parent: 5350 + - uid: 10942 + components: + - type: Transform + pos: 67.5,-10.5 + parent: 5350 + - uid: 10986 + components: + - type: Transform + pos: 66.5,-17.5 + parent: 5350 + - uid: 10987 + components: + - type: Transform + pos: 64.5,-19.5 + parent: 5350 + - uid: 10988 + components: + - type: Transform + pos: 68.5,-14.5 + parent: 5350 + - uid: 11044 + components: + - type: Transform + pos: 62.5,-16.5 + parent: 5350 + - uid: 11045 + components: + - type: Transform + pos: 63.5,-16.5 + parent: 5350 + - uid: 11046 + components: + - type: Transform + pos: 65.5,-18.5 + parent: 5350 + - uid: 11056 + components: + - type: Transform + pos: 66.5,-14.5 + parent: 5350 + - uid: 11138 + components: + - type: Transform + pos: 66.5,-19.5 + parent: 5350 + - uid: 11162 + components: + - type: Transform + pos: 67.5,-14.5 + parent: 5350 + - uid: 11241 + components: + - type: Transform + pos: 63.5,-19.5 + parent: 5350 + - uid: 11258 + components: + - type: Transform + pos: 68.5,-23.5 + parent: 5350 + - uid: 11259 + components: + - type: Transform + pos: 70.5,-23.5 + parent: 5350 + - uid: 11260 + components: + - type: Transform + pos: 67.5,-24.5 + parent: 5350 + - uid: 11263 + components: + - type: Transform + pos: 69.5,-23.5 + parent: 5350 + - uid: 11279 + components: + - type: Transform + pos: 69.5,-28.5 + parent: 5350 + - uid: 11300 + components: + - type: Transform + pos: 61.5,-16.5 + parent: 5350 + - uid: 11313 + components: + - type: Transform + pos: 65.5,-14.5 + parent: 5350 + - uid: 11314 + components: + - type: Transform + pos: 66.5,-13.5 + parent: 5350 + - uid: 11315 + components: + - type: Transform + pos: 66.5,-15.5 + parent: 5350 + - uid: 11341 + components: + - type: Transform + pos: 64.5,-21.5 + parent: 5350 + - uid: 11348 + components: + - type: Transform + pos: 64.5,-5.5 + parent: 5350 - uid: 11360 components: - type: Transform pos: -30.5,-41.5 parent: 5350 + - uid: 11606 + components: + - type: Transform + pos: 65.5,-6.5 + parent: 5350 + - uid: 11609 + components: + - type: Transform + pos: 61.5,-10.5 + parent: 5350 + - uid: 11643 + components: + - type: Transform + pos: 66.5,-10.5 + parent: 5350 - uid: 11646 components: - type: Transform @@ -22792,11 +23328,6 @@ entities: - type: Transform pos: 52.5,-23.5 parent: 5350 - - uid: 11662 - components: - - type: Transform - pos: 52.5,-24.5 - parent: 5350 - uid: 11663 components: - type: Transform @@ -22947,16 +23478,6 @@ entities: - type: Transform pos: 52.5,-28.5 parent: 5350 - - uid: 11693 - components: - - type: Transform - pos: 61.5,-24.5 - parent: 5350 - - uid: 11694 - components: - - type: Transform - pos: 62.5,-24.5 - parent: 5350 - uid: 11695 components: - type: Transform @@ -22967,21 +23488,6 @@ entities: - type: Transform pos: 63.5,-23.5 parent: 5350 - - uid: 11697 - components: - - type: Transform - pos: 64.5,-24.5 - parent: 5350 - - uid: 11698 - components: - - type: Transform - pos: 65.5,-24.5 - parent: 5350 - - uid: 11699 - components: - - type: Transform - pos: 66.5,-24.5 - parent: 5350 - uid: 11700 components: - type: Transform @@ -22995,17 +23501,17 @@ entities: - uid: 11702 components: - type: Transform - pos: 63.5,-20.5 + pos: 65.5,-10.5 parent: 5350 - uid: 11703 components: - type: Transform - pos: 64.5,-20.5 + pos: 66.5,-9.5 parent: 5350 - uid: 11704 components: - type: Transform - pos: 64.5,-19.5 + pos: 62.5,-24.5 parent: 5350 - uid: 11705 components: @@ -23075,122 +23581,47 @@ entities: - uid: 11718 components: - type: Transform - pos: 65.5,-7.5 + pos: 66.5,-11.5 parent: 5350 - uid: 11719 components: - type: Transform pos: 66.5,-7.5 parent: 5350 - - uid: 11720 - components: - - type: Transform - pos: 66.5,-8.5 - parent: 5350 - uid: 11721 components: - type: Transform pos: 66.5,-6.5 parent: 5350 - - uid: 11722 - components: - - type: Transform - pos: 65.5,-11.5 - parent: 5350 - - uid: 11723 - components: - - type: Transform - pos: 66.5,-11.5 - parent: 5350 - - uid: 11724 - components: - - type: Transform - pos: 66.5,-12.5 - parent: 5350 - - uid: 11725 - components: - - type: Transform - pos: 66.5,-10.5 - parent: 5350 - - uid: 11726 - components: - - type: Transform - pos: 65.5,-15.5 - parent: 5350 - - uid: 11727 - components: - - type: Transform - pos: 66.5,-15.5 - parent: 5350 - - uid: 11728 - components: - - type: Transform - pos: 66.5,-14.5 - parent: 5350 - - uid: 11729 - components: - - type: Transform - pos: 66.5,-16.5 - parent: 5350 - - uid: 11730 - components: - - type: Transform - pos: 65.5,-19.5 - parent: 5350 - uid: 11731 components: - type: Transform - pos: 66.5,-19.5 + pos: 63.5,-10.5 parent: 5350 - uid: 11732 components: - type: Transform - pos: 66.5,-20.5 + pos: 62.5,-10.5 parent: 5350 - uid: 11733 components: - type: Transform - pos: 66.5,-18.5 - parent: 5350 - - uid: 11734 - components: - - type: Transform - pos: 67.5,-19.5 - parent: 5350 - - uid: 11735 - components: - - type: Transform - pos: 68.5,-19.5 - parent: 5350 - - uid: 11736 - components: - - type: Transform - pos: 67.5,-15.5 + pos: 63.5,-20.5 parent: 5350 - uid: 11737 components: - type: Transform - pos: 68.5,-15.5 + pos: 61.5,-24.5 parent: 5350 - uid: 11738 components: - type: Transform - pos: 67.5,-11.5 + pos: 67.5,-23.5 parent: 5350 - uid: 11739 components: - type: Transform - pos: 68.5,-11.5 - parent: 5350 - - uid: 11740 - components: - - type: Transform - pos: 67.5,-7.5 - parent: 5350 - - uid: 11741 - components: - - type: Transform - pos: 68.5,-7.5 + pos: 66.5,-23.5 parent: 5350 - uid: 11742 components: @@ -23232,81 +23663,16 @@ entities: - type: Transform pos: 60.5,-10.5 parent: 5350 - - uid: 11750 - components: - - type: Transform - pos: 60.5,-11.5 - parent: 5350 - - uid: 11751 - components: - - type: Transform - pos: 61.5,-11.5 - parent: 5350 - - uid: 11752 - components: - - type: Transform - pos: 62.5,-11.5 - parent: 5350 - - uid: 11753 - components: - - type: Transform - pos: 63.5,-11.5 - parent: 5350 - - uid: 11754 - components: - - type: Transform - pos: 63.5,-7.5 - parent: 5350 - - uid: 11755 - components: - - type: Transform - pos: 62.5,-7.5 - parent: 5350 - - uid: 11756 - components: - - type: Transform - pos: 61.5,-7.5 - parent: 5350 - - uid: 11757 - components: - - type: Transform - pos: 60.5,-7.5 - parent: 5350 - - uid: 11758 - components: - - type: Transform - pos: 59.5,-7.5 - parent: 5350 - - uid: 11759 - components: - - type: Transform - pos: 58.5,-7.5 - parent: 5350 - - uid: 11760 - components: - - type: Transform - pos: 57.5,-7.5 - parent: 5350 - uid: 11761 components: - type: Transform pos: 58.5,-6.5 parent: 5350 - - uid: 11762 - components: - - type: Transform - pos: 58.5,-5.5 - parent: 5350 - uid: 11763 components: - type: Transform pos: 61.5,-6.5 parent: 5350 - - uid: 11764 - components: - - type: Transform - pos: 61.5,-5.5 - parent: 5350 - uid: 11765 components: - type: Transform @@ -23397,16 +23763,6 @@ entities: - type: Transform pos: 54.5,-20.5 parent: 5350 - - uid: 11784 - components: - - type: Transform - pos: 63.5,-17.5 - parent: 5350 - - uid: 11785 - components: - - type: Transform - pos: 62.5,-17.5 - parent: 5350 - uid: 11953 components: - type: Transform @@ -33367,6 +33723,11 @@ entities: - type: Transform pos: -15.5,-65.5 parent: 5350 + - uid: 24298 + components: + - type: Transform + pos: 52.5,-24.5 + parent: 5350 - uid: 24473 components: - type: Transform @@ -34532,6 +34893,311 @@ entities: - type: Transform pos: 76.5,3.5 parent: 5350 + - uid: 27017 + components: + - type: Transform + pos: 69.5,-29.5 + parent: 5350 + - uid: 27018 + components: + - type: Transform + pos: 70.5,-29.5 + parent: 5350 + - uid: 27019 + components: + - type: Transform + pos: 70.5,-30.5 + parent: 5350 + - uid: 27020 + components: + - type: Transform + pos: 70.5,-31.5 + parent: 5350 + - uid: 27021 + components: + - type: Transform + pos: 70.5,-32.5 + parent: 5350 + - uid: 27024 + components: + - type: Transform + pos: 70.5,-32.5 + parent: 5350 + - uid: 27025 + components: + - type: Transform + pos: 70.5,-33.5 + parent: 5350 + - uid: 27026 + components: + - type: Transform + pos: 70.5,-34.5 + parent: 5350 + - uid: 27027 + components: + - type: Transform + pos: 70.5,-35.5 + parent: 5350 + - uid: 27028 + components: + - type: Transform + pos: 67.5,-25.5 + parent: 5350 + - uid: 27029 + components: + - type: Transform + pos: 67.5,-27.5 + parent: 5350 + - uid: 27030 + components: + - type: Transform + pos: 71.5,-29.5 + parent: 5350 + - uid: 27031 + components: + - type: Transform + pos: 72.5,-29.5 + parent: 5350 + - uid: 27032 + components: + - type: Transform + pos: 73.5,-29.5 + parent: 5350 + - uid: 27033 + components: + - type: Transform + pos: 74.5,-29.5 + parent: 5350 + - uid: 27034 + components: + - type: Transform + pos: 74.5,-30.5 + parent: 5350 + - uid: 27039 + components: + - type: Transform + pos: 67.5,-26.5 + parent: 5350 + - uid: 27046 + components: + - type: Transform + pos: 67.5,-28.5 + parent: 5350 + - uid: 27048 + components: + - type: Transform + pos: 74.5,-32.5 + parent: 5350 + - uid: 27049 + components: + - type: Transform + pos: 76.5,-41.5 + parent: 5350 + - uid: 27063 + components: + - type: Transform + pos: 75.5,-32.5 + parent: 5350 + - uid: 27079 + components: + - type: Transform + pos: 76.5,-36.5 + parent: 5350 + - uid: 27080 + components: + - type: Transform + pos: 72.5,-32.5 + parent: 5350 + - uid: 27081 + components: + - type: Transform + pos: 71.5,-32.5 + parent: 5350 + - uid: 27082 + components: + - type: Transform + pos: 68.5,-29.5 + parent: 5350 + - uid: 27083 + components: + - type: Transform + pos: 73.5,-32.5 + parent: 5350 + - uid: 27092 + components: + - type: Transform + pos: 76.5,-34.5 + parent: 5350 + - uid: 27095 + components: + - type: Transform + pos: 64.5,-25.5 + parent: 5350 + - uid: 27100 + components: + - type: Transform + pos: 67.5,-29.5 + parent: 5350 + - uid: 27105 + components: + - type: Transform + pos: 76.5,-35.5 + parent: 5350 + - uid: 27106 + components: + - type: Transform + pos: 76.5,-33.5 + parent: 5350 + - uid: 27107 + components: + - type: Transform + pos: 76.5,-32.5 + parent: 5350 + - uid: 27109 + components: + - type: Transform + pos: 76.5,-38.5 + parent: 5350 + - uid: 27110 + components: + - type: Transform + pos: 75.5,-38.5 + parent: 5350 + - uid: 27113 + components: + - type: Transform + pos: 74.5,-39.5 + parent: 5350 + - uid: 27114 + components: + - type: Transform + pos: 73.5,-39.5 + parent: 5350 + - uid: 27115 + components: + - type: Transform + pos: 66.5,-37.5 + parent: 5350 + - uid: 27158 + components: + - type: Transform + pos: 76.5,-39.5 + parent: 5350 + - uid: 27159 + components: + - type: Transform + pos: 76.5,-37.5 + parent: 5350 + - uid: 27160 + components: + - type: Transform + pos: 76.5,-40.5 + parent: 5350 + - uid: 27161 + components: + - type: Transform + pos: 72.5,-39.5 + parent: 5350 + - uid: 27164 + components: + - type: Transform + pos: 66.5,-38.5 + parent: 5350 + - uid: 27165 + components: + - type: Transform + pos: 74.5,-38.5 + parent: 5350 + - uid: 27197 + components: + - type: Transform + pos: 71.5,-39.5 + parent: 5350 + - uid: 27259 + components: + - type: Transform + pos: 66.5,-29.5 + parent: 5350 + - uid: 27260 + components: + - type: Transform + pos: 65.5,-29.5 + parent: 5350 + - uid: 27261 + components: + - type: Transform + pos: 65.5,-30.5 + parent: 5350 + - uid: 27266 + components: + - type: Transform + pos: 66.5,-36.5 + parent: 5350 + - uid: 27268 + components: + - type: Transform + pos: 66.5,-22.5 + parent: 5350 + - uid: 27273 + components: + - type: Transform + pos: 63.5,-25.5 + parent: 5350 + - uid: 27275 + components: + - type: Transform + pos: 66.5,-35.5 + parent: 5350 + - uid: 27276 + components: + - type: Transform + pos: 66.5,-34.5 + parent: 5350 + - uid: 27277 + components: + - type: Transform + pos: 66.5,-33.5 + parent: 5350 + - uid: 27278 + components: + - type: Transform + pos: 66.5,-32.5 + parent: 5350 + - uid: 27279 + components: + - type: Transform + pos: 67.5,-32.5 + parent: 5350 + - uid: 27280 + components: + - type: Transform + pos: 68.5,-32.5 + parent: 5350 + - uid: 27281 + components: + - type: Transform + pos: 69.5,-32.5 + parent: 5350 + - uid: 27282 + components: + - type: Transform + pos: 66.5,-39.5 + parent: 5350 + - uid: 27283 + components: + - type: Transform + pos: 67.5,-39.5 + parent: 5350 + - uid: 27284 + components: + - type: Transform + pos: 68.5,-39.5 + parent: 5350 + - uid: 27285 + components: + - type: Transform + pos: 69.5,-39.5 + parent: 5350 - proto: CableApcStack entities: - uid: 1550 @@ -37556,30 +38222,25 @@ entities: - type: Transform pos: -32.5,49.5 parent: 5350 - - uid: 11245 - components: - - type: Transform - pos: 67.5,-31.5 - parent: 5350 - - uid: 11272 + - uid: 10832 components: - type: Transform - pos: 69.5,-34.5 + pos: 69.5,-26.5 parent: 5350 - - uid: 11274 + - uid: 10834 components: - type: Transform - pos: 69.5,-32.5 + pos: 52.5,-24.5 parent: 5350 - - uid: 11278 + - uid: 10836 components: - type: Transform - pos: 69.5,-33.5 + pos: 70.5,-26.5 parent: 5350 - - uid: 11279 + - uid: 11266 components: - type: Transform - pos: 69.5,-31.5 + pos: 65.5,-24.5 parent: 5350 - uid: 11877 components: @@ -37776,6 +38437,26 @@ entities: - type: Transform pos: 42.5,-17.5 parent: 5350 + - uid: 12022 + components: + - type: Transform + pos: 68.5,-26.5 + parent: 5350 + - uid: 12043 + components: + - type: Transform + pos: 67.5,-26.5 + parent: 5350 + - uid: 12044 + components: + - type: Transform + pos: 67.5,-25.5 + parent: 5350 + - uid: 12047 + components: + - type: Transform + pos: 66.5,-24.5 + parent: 5350 - uid: 12076 components: - type: Transform @@ -43204,112 +43885,102 @@ entities: - uid: 24239 components: - type: Transform - pos: 68.5,-31.5 + pos: 64.5,-24.5 parent: 5350 - uid: 24240 components: - type: Transform - pos: 66.5,-31.5 + pos: 63.5,-24.5 parent: 5350 - uid: 24241 components: - type: Transform - pos: 65.5,-31.5 + pos: 62.5,-24.5 parent: 5350 - uid: 24243 components: - type: Transform - pos: 64.5,-31.5 + pos: 61.5,-24.5 parent: 5350 - uid: 24245 components: - type: Transform - pos: 63.5,-31.5 + pos: 59.5,-24.5 parent: 5350 - uid: 24246 components: - type: Transform - pos: 63.5,-32.5 + pos: 60.5,-24.5 parent: 5350 - uid: 24247 components: - type: Transform - pos: 62.5,-32.5 + pos: 58.5,-24.5 parent: 5350 - uid: 24249 components: - type: Transform - pos: 61.5,-32.5 + pos: 57.5,-24.5 parent: 5350 - uid: 24250 components: - type: Transform - pos: 60.5,-32.5 + pos: 56.5,-24.5 parent: 5350 - uid: 24251 components: - type: Transform - pos: 59.5,-32.5 + pos: 55.5,-24.5 parent: 5350 - uid: 24253 components: - type: Transform - pos: 58.5,-32.5 + pos: 54.5,-24.5 parent: 5350 - uid: 24254 components: - type: Transform - pos: 57.5,-32.5 + pos: 67.5,-24.5 parent: 5350 - uid: 24255 components: - type: Transform - pos: 56.5,-32.5 + pos: 53.5,-24.5 parent: 5350 - uid: 24257 components: - type: Transform - pos: 55.5,-32.5 + pos: 52.5,-23.5 parent: 5350 - uid: 24260 components: - type: Transform - pos: 54.5,-32.5 + pos: 52.5,-22.5 parent: 5350 - uid: 24261 components: - type: Transform - pos: 53.5,-32.5 - parent: 5350 - - uid: 24298 - components: - - type: Transform - pos: 52.5,-32.5 - parent: 5350 - - uid: 24299 - components: - - type: Transform - pos: 51.5,-32.5 + pos: 52.5,-21.5 parent: 5350 - uid: 24301 components: - type: Transform - pos: 50.5,-32.5 + pos: 70.5,-27.5 parent: 5350 - uid: 24302 components: - type: Transform - pos: 49.5,-32.5 + pos: 70.5,-28.5 parent: 5350 - uid: 24303 components: - type: Transform - pos: 48.5,-32.5 + pos: 70.5,-29.5 parent: 5350 - uid: 24304 components: - type: Transform - pos: 47.5,-32.5 + pos: 70.5,-30.5 parent: 5350 - uid: 24497 components: @@ -43361,6 +44032,11 @@ entities: - type: Transform pos: 47.5,-24.5 parent: 5350 + - uid: 24516 + components: + - type: Transform + pos: 70.5,-31.5 + parent: 5350 - uid: 24519 components: - type: Transform @@ -43456,6 +44132,11 @@ entities: - type: Transform pos: 104.5,0.5 parent: 5350 + - uid: 26785 + components: + - type: Transform + pos: 70.5,-32.5 + parent: 5350 - uid: 26811 components: - type: Transform @@ -43541,6 +44222,31 @@ entities: - type: Transform pos: 103.5,13.5 parent: 5350 + - uid: 27000 + components: + - type: Transform + pos: 70.5,-33.5 + parent: 5350 + - uid: 27001 + components: + - type: Transform + pos: 70.5,-34.5 + parent: 5350 + - uid: 27002 + components: + - type: Transform + pos: 70.5,-35.5 + parent: 5350 + - uid: 27013 + components: + - type: Transform + pos: 71.5,-31.5 + parent: 5350 + - uid: 27123 + components: + - type: Transform + pos: 70.5,-25.5 + parent: 5350 - proto: CableHVStack entities: - uid: 1551 @@ -46950,6 +47656,31 @@ entities: - type: Transform pos: -34.5,32.5 parent: 5350 + - uid: 10840 + components: + - type: Transform + pos: 69.5,-26.5 + parent: 5350 + - uid: 11261 + components: + - type: Transform + pos: 69.5,-25.5 + parent: 5350 + - uid: 11270 + components: + - type: Transform + pos: 69.5,-28.5 + parent: 5350 + - uid: 11272 + components: + - type: Transform + pos: 70.5,-25.5 + parent: 5350 + - uid: 11274 + components: + - type: Transform + pos: 69.5,-27.5 + parent: 5350 - uid: 11917 components: - type: Transform @@ -50755,6 +51486,12 @@ entities: rot: 1.5707963267948966 rad pos: 38.5,-60.5 parent: 5350 + - uid: 24299 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 70.5,-27.5 + parent: 5350 - uid: 24518 components: - type: Transform @@ -50802,10 +51539,10 @@ entities: parent: 5350 - proto: CarbonDioxideCanister entities: - - uid: 11597 + - uid: 11615 components: - type: Transform - pos: 69.5,-19.5 + pos: 69.5,-18.5 parent: 5350 - uid: 11815 components: @@ -50822,6 +51559,11 @@ entities: - type: Transform pos: 25.5,-48.5 parent: 5350 + - uid: 27090 + components: + - type: Transform + pos: 76.5,-36.5 + parent: 5350 - proto: Carpet entities: - uid: 1123 @@ -52900,6 +53642,11 @@ entities: - type: Transform pos: -43.5,35.5 parent: 5350 + - uid: 11282 + components: + - type: Transform + pos: 72.5,-24.5 + parent: 5350 - uid: 11471 components: - type: Transform @@ -52945,6 +53692,16 @@ entities: - type: Transform pos: 48.5,-34.5 parent: 5350 + - uid: 11756 + components: + - type: Transform + pos: 72.5,-23.5 + parent: 5350 + - uid: 11759 + components: + - type: Transform + pos: 72.5,-22.5 + parent: 5350 - uid: 12119 components: - type: Transform @@ -55904,6 +56661,119 @@ entities: - type: Transform pos: 58.5,11.5 parent: 5350 + - uid: 27112 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 74.5,-42.5 + parent: 5350 + - uid: 27157 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 74.5,-41.5 + parent: 5350 + - uid: 27169 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 71.5,-43.5 + parent: 5350 + - uid: 27170 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 72.5,-43.5 + parent: 5350 + - uid: 27171 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 73.5,-43.5 + parent: 5350 + - uid: 27172 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 74.5,-43.5 + parent: 5350 + - uid: 27173 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 75.5,-43.5 + parent: 5350 + - uid: 27174 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 76.5,-43.5 + parent: 5350 + - uid: 27175 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 77.5,-43.5 + parent: 5350 + - uid: 27176 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 65.5,-44.5 + parent: 5350 + - uid: 27178 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 67.5,-44.5 + parent: 5350 + - uid: 27179 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 68.5,-44.5 + parent: 5350 + - uid: 27180 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 69.5,-44.5 + parent: 5350 + - uid: 27181 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 70.5,-44.5 + parent: 5350 + - uid: 27182 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 71.5,-44.5 + parent: 5350 + - uid: 27183 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 72.5,-44.5 + parent: 5350 + - uid: 27184 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 73.5,-44.5 + parent: 5350 + - uid: 27254 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 66.5,-44.5 + parent: 5350 + - uid: 27255 + components: + - type: Transform + pos: 74.5,-44.5 + parent: 5350 - proto: Chair entities: - uid: 347 @@ -57477,6 +58347,11 @@ entities: rot: 1.5707963267948966 rad pos: 106.5,4.5 parent: 5350 + - uid: 27118 + components: + - type: Transform + pos: 71.5,-30.5 + parent: 5350 - proto: ChairOfficeLight entities: - uid: 5098 @@ -60889,6 +61764,15 @@ entities: - type: Transform pos: -40.532333,-25.270031 parent: 5350 +- proto: ClothingHeadHelmetAtmosFire + entities: + - uid: 27091 + components: + - type: Transform + parent: 27084 + - type: Physics + canCollide: False + - type: InsideEntityStorage - proto: ClothingHeadHelmetBasic entities: - uid: 10424 @@ -61059,6 +61943,13 @@ entities: - type: Transform pos: 45.489563,-8.468819 parent: 5350 + - uid: 27098 + components: + - type: Transform + parent: 27084 + - type: Physics + canCollide: False + - type: InsideEntityStorage - proto: ClothingMaskGasExplorer entities: - uid: 3689 @@ -61426,6 +62317,15 @@ entities: - type: Transform pos: -18.5,29.5 parent: 5350 +- proto: ClothingOuterSuitAtmosFire + entities: + - uid: 27097 + components: + - type: Transform + parent: 27084 + - type: Physics + canCollide: False + - type: InsideEntityStorage - proto: ClothingOuterSuitMonkey entities: - uid: 24111 @@ -62444,6 +63344,12 @@ entities: rot: 3.141592653589793 rad pos: 110.5,-0.5 parent: 5350 + - uid: 27043 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 71.5,-31.5 + parent: 5350 - proto: ComputerRadar entities: - uid: 1207 @@ -63178,6 +64084,13 @@ entities: - type: Transform pos: 38.5,-16.5 parent: 5350 +- proto: CrateMaterialSteel + entities: + - uid: 27101 + components: + - type: Transform + pos: 68.5,-31.5 + parent: 5350 - proto: CrateMedical entities: - uid: 15591 @@ -63826,6 +64739,13 @@ entities: - type: Transform pos: 36.5,7.5 parent: 5350 +- proto: DefaultStationBeaconTEG + entities: + - uid: 27252 + components: + - type: Transform + pos: 70.5,-30.5 + parent: 5350 - proto: DefaultStationBeaconTelecoms entities: - uid: 26708 @@ -71659,6 +72579,11 @@ entities: - type: Transform pos: -29.5,-42.5 parent: 5350 + - uid: 27096 + components: + - type: Transform + pos: 74.5,-31.5 + parent: 5350 - proto: ExtinguisherCabinetOpen entities: - uid: 22178 @@ -72658,6 +73583,16 @@ entities: - 14208 - 14209 - 14210 + - uid: 26994 + components: + - type: Transform + pos: 68.5,-28.5 + parent: 5350 + - type: DeviceList + devices: + - 27078 + - 26996 + - 26995 - proto: FireAxeCabinetFilled entities: - uid: 1096 @@ -73974,6 +74909,24 @@ entities: - type: Transform pos: -72.5,8.5 parent: 5350 + - uid: 26995 + components: + - type: Transform + pos: 66.5,-25.5 + parent: 5350 + - type: DeviceNetwork + deviceLists: + - 11752 + - 26994 + - uid: 26996 + components: + - type: Transform + pos: 67.5,-25.5 + parent: 5350 + - type: DeviceNetwork + deviceLists: + - 11752 + - 26994 - proto: Fireplace entities: - uid: 1054 @@ -74689,6 +75642,12 @@ entities: - type: Transform pos: -57.517693,-13.493662 parent: 5350 + - uid: 27104 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 73.5,-30.5 + parent: 5350 - proto: GasFilterFlipped entities: - uid: 14354 @@ -74701,10 +75660,10 @@ entities: color: '#FF1212FF' - proto: GasMinerCarbonDioxide entities: - - uid: 11596 + - uid: 11612 components: - type: Transform - pos: 68.5,-19.5 + pos: 68.5,-18.5 parent: 5350 - proto: GasMinerNitrogenStationLarge entities: @@ -74746,35 +75705,19 @@ entities: parent: 5350 - proto: GasOutletInjector entities: - - uid: 10990 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 67.5,-8.5 - parent: 5350 - - type: AtmosPipeColor - color: '#27E312FF' - - uid: 10991 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 67.5,-12.5 - parent: 5350 - - type: AtmosPipeColor - color: '#27E312FF' - - uid: 10992 + - uid: 3186 components: - type: Transform rot: -1.5707963267948966 rad - pos: 67.5,-16.5 + pos: 67.5,-19.5 parent: 5350 - type: AtmosPipeColor color: '#27E312FF' - - uid: 10993 + - uid: 10830 components: - type: Transform rot: -1.5707963267948966 rad - pos: 67.5,-20.5 + pos: 67.5,-15.5 parent: 5350 - type: AtmosPipeColor color: '#27E312FF' @@ -74806,6 +75749,22 @@ entities: rot: -1.5707963267948966 rad pos: 44.5,-34.5 parent: 5350 + - uid: 11570 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 67.5,-7.5 + parent: 5350 + - type: AtmosPipeColor + color: '#27E312FF' + - uid: 11723 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 67.5,-11.5 + parent: 5350 + - type: AtmosPipeColor + color: '#27E312FF' - uid: 19390 components: - type: Transform @@ -74827,6 +75786,22 @@ entities: rot: 3.141592653589793 rad pos: 59.5,-28.5 parent: 5350 + - uid: 10829 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 67.5,-13.5 + parent: 5350 + - type: AtmosPipeColor + color: '#B342F5FF' + - uid: 10910 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 67.5,-17.5 + parent: 5350 + - type: AtmosPipeColor + color: '#B342F5FF' - uid: 10981 components: - type: Transform @@ -74859,35 +75834,19 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#947507FF' - - uid: 10986 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 67.5,-18.5 - parent: 5350 - - type: AtmosPipeColor - color: '#947507FF' - - uid: 10987 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 67.5,-14.5 - parent: 5350 - - type: AtmosPipeColor - color: '#947507FF' - - uid: 10988 + - uid: 11309 components: - type: Transform rot: -1.5707963267948966 rad - pos: 67.5,-10.5 + pos: 67.5,-5.5 parent: 5350 - type: AtmosPipeColor - color: '#947507FF' - - uid: 10989 + color: '#B342F5FF' + - uid: 11310 components: - type: Transform rot: -1.5707963267948966 rad - pos: 67.5,-6.5 + pos: 67.5,-9.5 parent: 5350 - type: AtmosPipeColor color: '#B342F5FF' @@ -74939,6 +75898,24 @@ entities: rot: 3.141592653589793 rad pos: 104.5,-16.5 parent: 5350 + - uid: 27069 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 69.5,-40.5 + parent: 5350 + - uid: 27073 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 66.5,-40.5 + parent: 5350 + - uid: 27111 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 74.5,-40.5 + parent: 5350 - proto: GasPipeBend entities: - uid: 510 @@ -75353,14 +76330,6 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 5314 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 57.5,-4.5 - parent: 5350 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 5489 components: - type: Transform @@ -75829,19 +76798,19 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 11002 + - uid: 10993 components: - type: Transform - rot: 3.141592653589793 rad - pos: 62.5,-5.5 + rot: -1.5707963267948966 rad + pos: 58.5,-5.5 parent: 5350 - type: AtmosPipeColor color: '#03FCD3FF' - - uid: 11004 + - uid: 11002 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 57.5,-10.5 + rot: 1.5707963267948966 rad + pos: 58.5,-4.5 parent: 5350 - type: AtmosPipeColor color: '#03FCD3FF' @@ -75869,11 +76838,10 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 11118 + - uid: 11116 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 57.5,-9.5 + pos: 63.5,-4.5 parent: 5350 - type: AtmosPipeColor color: '#03FCD3FF' @@ -75901,13 +76869,6 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#03FCD3FF' - - uid: 11137 - components: - - type: Transform - pos: 62.5,-4.5 - parent: 5350 - - type: AtmosPipeColor - color: '#03FCD3FF' - uid: 11156 components: - type: Transform @@ -76826,6 +77787,85 @@ entities: rot: 3.141592653589793 rad pos: 108.5,-4.5 parent: 5350 + - uid: 26787 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 61.5,-20.5 + parent: 5350 + - type: AtmosPipeColor + color: '#03FCD3FF' + - uid: 26985 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 63.5,-20.5 + parent: 5350 + - type: AtmosPipeColor + color: '#03FCD3FF' + - uid: 27185 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 71.5,-42.5 + parent: 5350 + - uid: 27186 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 73.5,-42.5 + parent: 5350 + - uid: 27211 + components: + - type: Transform + pos: 66.5,-21.5 + parent: 5350 + - type: AtmosPipeColor + color: '#947507FF' + - uid: 27213 + components: + - type: Transform + pos: 69.5,-30.5 + parent: 5350 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 27214 + components: + - type: Transform + pos: 63.5,-24.5 + parent: 5350 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 27229 + components: + - type: Transform + pos: 64.5,-23.5 + parent: 5350 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 27230 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 63.5,-30.5 + parent: 5350 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 27231 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 64.5,-29.5 + parent: 5350 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 27233 + components: + - type: Transform + pos: 72.5,-29.5 + parent: 5350 + - type: AtmosPipeColor + color: '#FF1212FF' - proto: GasPipeFourway entities: - uid: 260 @@ -81507,6 +82547,14 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 2682 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 65.5,-7.5 + parent: 5350 + - type: AtmosPipeColor + color: '#27E312FF' - uid: 2685 components: - type: Transform @@ -84293,13 +85341,6 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 5315 - components: - - type: Transform - pos: 57.5,-5.5 - parent: 5350 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 5459 components: - type: Transform @@ -88750,14 +89791,6 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 8889 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 58.5,-4.5 - parent: 5350 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 8978 components: - type: Transform @@ -88766,14 +89799,6 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 8983 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 59.5,-4.5 - parent: 5350 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 8987 components: - type: Transform @@ -88944,14 +89969,6 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 9027 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 60.5,-4.5 - parent: 5350 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 9039 components: - type: Transform @@ -88960,11 +89977,6 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 9069 - components: - - type: Transform - pos: 68.5,-30.5 - parent: 5350 - uid: 9166 components: - type: Transform @@ -89631,6 +90643,62 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 10815 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 66.5,-15.5 + parent: 5350 + - type: AtmosPipeColor + color: '#27E312FF' + - uid: 10816 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 64.5,-15.5 + parent: 5350 + - type: AtmosPipeColor + color: '#27E312FF' + - uid: 10822 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 66.5,-7.5 + parent: 5350 + - type: AtmosPipeColor + color: '#27E312FF' + - uid: 10825 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 65.5,-11.5 + parent: 5350 + - type: AtmosPipeColor + color: '#27E312FF' + - uid: 10826 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 66.5,-11.5 + parent: 5350 + - type: AtmosPipeColor + color: '#27E312FF' + - uid: 10924 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 64.5,-11.5 + parent: 5350 + - type: AtmosPipeColor + color: '#27E312FF' + - uid: 10931 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 64.5,-7.5 + parent: 5350 + - type: AtmosPipeColor + color: '#27E312FF' - uid: 10952 components: - type: Transform @@ -89694,6 +90762,14 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 10972 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 65.5,-15.5 + parent: 5350 + - type: AtmosPipeColor + color: '#27E312FF' - uid: 10973 components: - type: Transform @@ -89725,6 +90801,14 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 10992 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 61.5,-10.5 + parent: 5350 + - type: AtmosPipeColor + color: '#03FCD3FF' - uid: 11003 components: - type: Transform @@ -89733,6 +90817,14 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 11004 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 60.5,-10.5 + parent: 5350 + - type: AtmosPipeColor + color: '#03FCD3FF' - uid: 11016 components: - type: Transform @@ -89775,78 +90867,22 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#27E312FF' - - uid: 11040 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 64.5,-20.5 - parent: 5350 - - type: AtmosPipeColor - color: '#27E312FF' - uid: 11041 components: - type: Transform rot: 1.5707963267948966 rad - pos: 65.5,-20.5 + pos: 57.5,-10.5 parent: 5350 - type: AtmosPipeColor - color: '#27E312FF' + color: '#03FCD3FF' - uid: 11042 components: - type: Transform rot: 1.5707963267948966 rad - pos: 66.5,-20.5 - parent: 5350 - - type: AtmosPipeColor - color: '#27E312FF' - - uid: 11044 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 64.5,-16.5 - parent: 5350 - - type: AtmosPipeColor - color: '#27E312FF' - - uid: 11045 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 65.5,-16.5 - parent: 5350 - - type: AtmosPipeColor - color: '#27E312FF' - - uid: 11046 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 66.5,-16.5 - parent: 5350 - - type: AtmosPipeColor - color: '#27E312FF' - - uid: 11054 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 64.5,-12.5 - parent: 5350 - - type: AtmosPipeColor - color: '#27E312FF' - - uid: 11055 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 65.5,-12.5 - parent: 5350 - - type: AtmosPipeColor - color: '#27E312FF' - - uid: 11056 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 66.5,-12.5 + pos: 58.5,-10.5 parent: 5350 - type: AtmosPipeColor - color: '#27E312FF' + color: '#03FCD3FF' - uid: 11058 components: - type: Transform @@ -90058,42 +91094,6 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#03FCD3FF' - - uid: 11098 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 62.5,-24.5 - parent: 5350 - - type: AtmosPipeColor - color: '#03FCD3FF' - - uid: 11099 - components: - - type: Transform - pos: 63.5,-23.5 - parent: 5350 - - type: AtmosPipeColor - color: '#03FCD3FF' - - uid: 11100 - components: - - type: Transform - pos: 63.5,-22.5 - parent: 5350 - - type: AtmosPipeColor - color: '#03FCD3FF' - - uid: 11101 - components: - - type: Transform - pos: 63.5,-21.5 - parent: 5350 - - type: AtmosPipeColor - color: '#03FCD3FF' - - uid: 11102 - components: - - type: Transform - pos: 63.5,-20.5 - parent: 5350 - - type: AtmosPipeColor - color: '#03FCD3FF' - uid: 11103 components: - type: Transform @@ -90157,50 +91157,19 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#03FCD3FF' - - uid: 11112 - components: - - type: Transform - pos: 63.5,-10.5 - parent: 5350 - - type: AtmosPipeColor - color: '#03FCD3FF' - - uid: 11113 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 62.5,-9.5 - parent: 5350 - - type: AtmosPipeColor - color: '#03FCD3FF' - - uid: 11114 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 61.5,-9.5 - parent: 5350 - - type: AtmosPipeColor - color: '#03FCD3FF' - - uid: 11115 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 60.5,-9.5 - parent: 5350 - - type: AtmosPipeColor - color: '#03FCD3FF' - - uid: 11116 + - uid: 11117 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 59.5,-9.5 + rot: 1.5707963267948966 rad + pos: 62.5,-4.5 parent: 5350 - type: AtmosPipeColor color: '#03FCD3FF' - - uid: 11117 + - uid: 11118 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 58.5,-9.5 + rot: 1.5707963267948966 rad + pos: 61.5,-4.5 parent: 5350 - type: AtmosPipeColor color: '#03FCD3FF' @@ -90228,6 +91197,14 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#03FCD3FF' + - uid: 11130 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 60.5,-4.5 + parent: 5350 + - type: AtmosPipeColor + color: '#03FCD3FF' - uid: 11131 components: - type: Transform @@ -90252,6 +91229,14 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#03FCD3FF' + - uid: 11134 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 59.5,-4.5 + parent: 5350 + - type: AtmosPipeColor + color: '#03FCD3FF' - uid: 11139 components: - type: Transform @@ -90332,14 +91317,6 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 11151 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 57.5,-6.5 - parent: 5350 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 11152 components: - type: Transform @@ -90380,78 +91357,14 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 11161 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 66.5,-18.5 - parent: 5350 - - type: AtmosPipeColor - color: '#947507FF' - - uid: 11162 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 65.5,-18.5 - parent: 5350 - - type: AtmosPipeColor - color: '#947507FF' - - uid: 11163 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 64.5,-18.5 - parent: 5350 - - type: AtmosPipeColor - color: '#947507FF' - - uid: 11166 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 66.5,-14.5 - parent: 5350 - - type: AtmosPipeColor - color: '#947507FF' - uid: 11167 components: - type: Transform rot: -1.5707963267948966 rad - pos: 65.5,-14.5 - parent: 5350 - - type: AtmosPipeColor - color: '#947507FF' - - uid: 11168 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 64.5,-14.5 - parent: 5350 - - type: AtmosPipeColor - color: '#947507FF' - - uid: 11171 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 66.5,-10.5 - parent: 5350 - - type: AtmosPipeColor - color: '#947507FF' - - uid: 11172 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 65.5,-10.5 - parent: 5350 - - type: AtmosPipeColor - color: '#947507FF' - - uid: 11173 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 64.5,-10.5 + pos: 64.5,-9.5 parent: 5350 - type: AtmosPipeColor - color: '#947507FF' + color: '#B342F5FF' - uid: 11196 components: - type: Transform @@ -90476,54 +91389,21 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 11200 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 64.5,-8.5 - parent: 5350 - - type: AtmosPipeColor - color: '#27E312FF' - - uid: 11201 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 65.5,-8.5 - parent: 5350 - - type: AtmosPipeColor - color: '#27E312FF' - - uid: 11202 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 66.5,-8.5 - parent: 5350 - - type: AtmosPipeColor - color: '#27E312FF' - - uid: 11204 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 66.5,-6.5 - parent: 5350 - - type: AtmosPipeColor - color: '#B342F5FF' - uid: 11205 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 65.5,-6.5 + pos: 63.5,-5.5 parent: 5350 - type: AtmosPipeColor - color: '#B342F5FF' + color: '#03FCD3FF' - uid: 11206 components: - type: Transform rot: 1.5707963267948966 rad - pos: 64.5,-6.5 + pos: 62.5,-10.5 parent: 5350 - type: AtmosPipeColor - color: '#B342F5FF' + color: '#03FCD3FF' - uid: 11227 components: - type: Transform @@ -90572,63 +91452,93 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#000000FF' - - uid: 11237 + - uid: 11297 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 64.5,-24.5 + pos: 63.5,-9.5 parent: 5350 - type: AtmosPipeColor color: '#03FCD3FF' - - uid: 11238 + - uid: 11306 components: - type: Transform rot: 1.5707963267948966 rad - pos: 65.5,-24.5 + pos: 59.5,-10.5 parent: 5350 - type: AtmosPipeColor color: '#03FCD3FF' - - uid: 11239 + - uid: 11316 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 66.5,-24.5 + rot: -1.5707963267948966 rad + pos: 64.5,-17.5 parent: 5350 - type: AtmosPipeColor - color: '#03FCD3FF' - - uid: 11240 + color: '#B342F5FF' + - uid: 11317 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 67.5,-24.5 + rot: -1.5707963267948966 rad + pos: 65.5,-17.5 parent: 5350 - type: AtmosPipeColor - color: '#03FCD3FF' - - uid: 11241 + color: '#B342F5FF' + - uid: 11318 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 68.5,-24.5 + rot: -1.5707963267948966 rad + pos: 66.5,-17.5 parent: 5350 - type: AtmosPipeColor - color: '#03FCD3FF' - - uid: 11246 + color: '#B342F5FF' + - uid: 11349 components: - type: Transform - pos: 70.5,-30.5 + rot: -1.5707963267948966 rad + pos: 66.5,-19.5 parent: 5350 - - uid: 11247 + - type: AtmosPipeColor + color: '#27E312FF' + - uid: 11350 components: - type: Transform - rot: 3.141592653589793 rad - pos: 68.5,-29.5 + rot: -1.5707963267948966 rad + pos: 65.5,-19.5 parent: 5350 - - uid: 11248 + - type: AtmosPipeColor + color: '#27E312FF' + - uid: 11351 components: - type: Transform - rot: 3.141592653589793 rad - pos: 70.5,-29.5 + rot: -1.5707963267948966 rad + pos: 64.5,-19.5 + parent: 5350 + - type: AtmosPipeColor + color: '#27E312FF' + - uid: 11352 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 64.5,-13.5 parent: 5350 + - type: AtmosPipeColor + color: '#B342F5FF' + - uid: 11353 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 65.5,-13.5 + parent: 5350 + - type: AtmosPipeColor + color: '#B342F5FF' + - uid: 11354 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 66.5,-13.5 + parent: 5350 + - type: AtmosPipeColor + color: '#B342F5FF' - uid: 11362 components: - type: Transform @@ -90877,6 +91787,77 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 11572 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 66.5,-5.5 + parent: 5350 + - type: AtmosPipeColor + color: '#B342F5FF' + - uid: 11635 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 64.5,-5.5 + parent: 5350 + - type: AtmosPipeColor + color: '#B342F5FF' + - uid: 11642 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 65.5,-5.5 + parent: 5350 + - type: AtmosPipeColor + color: '#B342F5FF' + - uid: 11724 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 66.5,-9.5 + parent: 5350 + - type: AtmosPipeColor + color: '#B342F5FF' + - uid: 11730 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 65.5,-9.5 + parent: 5350 + - type: AtmosPipeColor + color: '#B342F5FF' + - uid: 11754 + components: + - type: Transform + pos: 61.5,-22.5 + parent: 5350 + - type: AtmosPipeColor + color: '#03FCD3FF' + - uid: 11758 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 62.5,-20.5 + parent: 5350 + - type: AtmosPipeColor + color: '#03FCD3FF' + - uid: 11760 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 63.5,-21.5 + parent: 5350 + - type: AtmosPipeColor + color: '#947507FF' + - uid: 11762 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 61.5,-23.5 + parent: 5350 + - type: AtmosPipeColor + color: '#03FCD3FF' - uid: 11779 components: - type: Transform @@ -101136,6 +102117,326 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 26786 + components: + - type: Transform + pos: 61.5,-21.5 + parent: 5350 + - type: AtmosPipeColor + color: '#03FCD3FF' + - uid: 27070 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 69.5,-39.5 + parent: 5350 + - uid: 27074 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 66.5,-39.5 + parent: 5350 + - uid: 27156 + components: + - type: Transform + pos: 74.5,-39.5 + parent: 5350 + - uid: 27191 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 71.5,-39.5 + parent: 5350 + - uid: 27192 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 73.5,-39.5 + parent: 5350 + - uid: 27194 + components: + - type: Transform + pos: 73.5,-38.5 + parent: 5350 + - uid: 27196 + components: + - type: Transform + pos: 71.5,-38.5 + parent: 5350 + - uid: 27201 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 64.5,-21.5 + parent: 5350 + - type: AtmosPipeColor + color: '#947507FF' + - uid: 27202 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 65.5,-21.5 + parent: 5350 + - type: AtmosPipeColor + color: '#947507FF' + - uid: 27203 + components: + - type: Transform + pos: 66.5,-22.5 + parent: 5350 + - type: AtmosPipeColor + color: '#947507FF' + - uid: 27204 + components: + - type: Transform + pos: 66.5,-23.5 + parent: 5350 + - type: AtmosPipeColor + color: '#947507FF' + - uid: 27205 + components: + - type: Transform + pos: 66.5,-24.5 + parent: 5350 + - type: AtmosPipeColor + color: '#947507FF' + - uid: 27206 + components: + - type: Transform + pos: 66.5,-25.5 + parent: 5350 + - type: AtmosPipeColor + color: '#947507FF' + - uid: 27207 + components: + - type: Transform + pos: 66.5,-26.5 + parent: 5350 + - type: AtmosPipeColor + color: '#947507FF' + - uid: 27208 + components: + - type: Transform + pos: 66.5,-27.5 + parent: 5350 + - type: AtmosPipeColor + color: '#947507FF' + - uid: 27209 + components: + - type: Transform + pos: 66.5,-28.5 + parent: 5350 + - type: AtmosPipeColor + color: '#947507FF' + - uid: 27215 + components: + - type: Transform + pos: 63.5,-25.5 + parent: 5350 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 27216 + components: + - type: Transform + pos: 63.5,-26.5 + parent: 5350 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 27217 + components: + - type: Transform + pos: 63.5,-27.5 + parent: 5350 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 27218 + components: + - type: Transform + pos: 63.5,-28.5 + parent: 5350 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 27219 + components: + - type: Transform + pos: 63.5,-29.5 + parent: 5350 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 27220 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 65.5,-30.5 + parent: 5350 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 27221 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 67.5,-30.5 + parent: 5350 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 27222 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 68.5,-30.5 + parent: 5350 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 27223 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 68.5,-29.5 + parent: 5350 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 27224 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 66.5,-29.5 + parent: 5350 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 27225 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 67.5,-29.5 + parent: 5350 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 27226 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 65.5,-29.5 + parent: 5350 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 27227 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 66.5,-30.5 + parent: 5350 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 27228 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 64.5,-30.5 + parent: 5350 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 27232 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 69.5,-29.5 + parent: 5350 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 27234 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 70.5,-29.5 + parent: 5350 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 27235 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 71.5,-29.5 + parent: 5350 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 27236 + components: + - type: Transform + pos: 72.5,-30.5 + parent: 5350 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 27237 + components: + - type: Transform + pos: 66.5,-29.5 + parent: 5350 + - type: AtmosPipeColor + color: '#947507FF' + - uid: 27238 + components: + - type: Transform + pos: 66.5,-30.5 + parent: 5350 + - type: AtmosPipeColor + color: '#947507FF' + - uid: 27239 + components: + - type: Transform + pos: 66.5,-31.5 + parent: 5350 + - type: AtmosPipeColor + color: '#947507FF' + - uid: 27240 + components: + - type: Transform + pos: 64.5,-28.5 + parent: 5350 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 27241 + components: + - type: Transform + pos: 64.5,-27.5 + parent: 5350 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 27242 + components: + - type: Transform + pos: 64.5,-26.5 + parent: 5350 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 27243 + components: + - type: Transform + pos: 64.5,-25.5 + parent: 5350 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 27244 + components: + - type: Transform + pos: 64.5,-24.5 + parent: 5350 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 27245 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 63.5,-23.5 + parent: 5350 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 27256 + components: + - type: Transform + pos: 66.5,-32.5 + parent: 5350 + - type: AtmosPipeColor + color: '#947507FF' - proto: GasPipeTJunction entities: - uid: 265 @@ -103313,6 +104614,14 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 10933 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 57.5,-5.5 + parent: 5350 + - type: AtmosPipeColor + color: '#03FCD3FF' - uid: 10950 components: - type: Transform @@ -103399,27 +104708,11 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#03FCD3FF' - - uid: 11097 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 63.5,-24.5 - parent: 5350 - - type: AtmosPipeColor - color: '#03FCD3FF' - - uid: 11130 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 63.5,-9.5 - parent: 5350 - - type: AtmosPipeColor - color: '#03FCD3FF' - - uid: 11134 + - uid: 11115 components: - type: Transform rot: -1.5707963267948966 rad - pos: 63.5,-5.5 + pos: 63.5,-10.5 parent: 5350 - type: AtmosPipeColor color: '#03FCD3FF' @@ -104685,6 +105978,30 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 27187 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 71.5,-41.5 + parent: 5350 + - uid: 27188 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 73.5,-41.5 + parent: 5350 + - uid: 27189 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 71.5,-40.5 + parent: 5350 + - uid: 27190 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 73.5,-40.5 + parent: 5350 - proto: GasPort entities: - uid: 8245 @@ -104717,11 +106034,6 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 9029 - components: - - type: Transform - pos: 63.5,-4.5 - parent: 5350 - uid: 10163 components: - type: Transform @@ -104752,6 +106064,13 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 10932 + components: + - type: Transform + pos: 57.5,-4.5 + parent: 5350 + - type: AtmosPipeColor + color: '#03FCD3FF' - uid: 10946 components: - type: Transform @@ -104784,16 +106103,6 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#03FCD3FF' - - uid: 11243 - components: - - type: Transform - pos: 68.5,-27.5 - parent: 5350 - - uid: 11244 - components: - - type: Transform - pos: 70.5,-27.5 - parent: 5350 - uid: 11438 components: - type: Transform @@ -104940,12 +106249,6 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 2682 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 63.5,-12.5 - parent: 5350 - uid: 3130 components: - type: Transform @@ -104954,12 +106257,6 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 3186 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 63.5,-6.5 - parent: 5350 - uid: 10543 components: - type: Transform @@ -104972,50 +106269,51 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 10966 + - uid: 10817 components: - type: Transform rot: 1.5707963267948966 rad - pos: 63.5,-20.5 - parent: 5350 - - uid: 10967 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 54.5,-20.5 + pos: 63.5,-15.5 parent: 5350 - - uid: 10968 + - type: AtmosPipeColor + color: '#27E312FF' + - uid: 10824 components: - type: Transform rot: -1.5707963267948966 rad - pos: 51.5,-21.5 + pos: 63.5,-9.5 parent: 5350 - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 10969 + color: '#B342F5FF' + - uid: 10934 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 63.5,-16.5 + pos: 57.5,-6.5 parent: 5350 - - uid: 10970 + - type: AtmosPipeColor + color: '#03FCD3FF' + - uid: 10967 components: - type: Transform rot: -1.5707963267948966 rad - pos: 63.5,-10.5 + pos: 54.5,-20.5 parent: 5350 - - uid: 10971 + - uid: 10968 components: - type: Transform rot: -1.5707963267948966 rad - pos: 63.5,-14.5 + pos: 51.5,-21.5 parent: 5350 - - uid: 10972 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 10991 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 63.5,-18.5 + rot: 1.5707963267948966 rad + pos: 63.5,-7.5 parent: 5350 + - type: AtmosPipeColor + color: '#27E312FF' - uid: 11006 components: - type: Transform @@ -105029,12 +106327,14 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 11015 + - uid: 11040 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 63.5,-8.5 + rot: -1.5707963267948966 rad + pos: 63.5,-5.5 parent: 5350 + - type: AtmosPipeColor + color: '#B342F5FF' - uid: 11124 components: - type: Transform @@ -105043,25 +106343,38 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#03FCD3FF' - - uid: 11138 + - uid: 11161 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 61.5,-4.5 + rot: 1.5707963267948966 rad + pos: 63.5,-19.5 parent: 5350 - type: AtmosPipeColor - color: '#0055CCFF' - - uid: 11249 + color: '#27E312FF' + - uid: 11280 components: - type: Transform - pos: 68.5,-28.5 + rot: 1.5707963267948966 rad + pos: 62.5,-24.5 parent: 5350 - - uid: 11250 + - type: AtmosPipeColor + color: '#03FCD3FF' + - uid: 11304 components: - type: Transform - rot: 3.141592653589793 rad - pos: 70.5,-28.5 + rot: -1.5707963267948966 rad + pos: 63.5,-17.5 + parent: 5350 + - type: AtmosPipeColor + color: '#B342F5FF' + - uid: 11355 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 63.5,-11.5 parent: 5350 + - type: AtmosPipeColor + color: '#27E312FF' - uid: 11428 components: - type: Transform @@ -105085,6 +106398,14 @@ entities: - type: Transform pos: 43.5,-28.5 parent: 5350 + - uid: 11600 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 63.5,-13.5 + parent: 5350 + - type: AtmosPipeColor + color: '#B342F5FF' - uid: 13461 components: - type: Transform @@ -105141,6 +106462,22 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 27071 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 69.5,-38.5 + parent: 5350 + - uid: 27128 + components: + - type: Transform + pos: 66.5,-38.5 + parent: 5350 + - uid: 27193 + components: + - type: Transform + pos: 74.5,-38.5 + parent: 5350 - proto: GasThermoMachineFreezer entities: - uid: 2630 @@ -105183,6 +106520,12 @@ entities: - type: Transform pos: 29.5,-38.5 parent: 5350 + - uid: 27195 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 72.5,-38.5 + parent: 5350 - proto: GasThermoMachineHeater entities: - uid: 11366 @@ -105941,14 +107284,6 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 11242 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 69.5,-24.5 - parent: 5350 - - type: AtmosPipeColor - color: '#03FCD3FF' - uid: 11867 components: - type: Transform @@ -106865,6 +108200,17 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 27210 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 69.5,-31.5 + parent: 5350 + - type: DeviceNetwork + deviceLists: + - 11752 + - type: AtmosPipeColor + color: '#0055CCFF' - proto: GasVentScrubber entities: - uid: 755 @@ -108252,6 +109598,17 @@ entities: parent: 5350 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 27212 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 72.5,-31.5 + parent: 5350 + - type: DeviceNetwork + deviceLists: + - 11752 + - type: AtmosPipeColor + color: '#FF1212FF' - proto: GasVolumePump entities: - uid: 10948 @@ -110751,6 +112108,36 @@ entities: - type: Transform pos: -4.5,16.5 parent: 5350 + - uid: 10823 + components: + - type: Transform + pos: 66.5,-19.5 + parent: 5350 + - uid: 10827 + components: + - type: Transform + pos: 66.5,-18.5 + parent: 5350 + - uid: 10835 + components: + - type: Transform + pos: 70.5,-28.5 + parent: 5350 + - uid: 10843 + components: + - type: Transform + pos: 64.5,-25.5 + parent: 5350 + - uid: 10844 + components: + - type: Transform + pos: 61.5,-25.5 + parent: 5350 + - uid: 10944 + components: + - type: Transform + pos: 66.5,-17.5 + parent: 5350 - uid: 11034 components: - type: Transform @@ -110771,65 +112158,95 @@ entities: - type: Transform pos: 63.5,1.5 parent: 5350 - - uid: 11309 + - uid: 11168 components: - type: Transform - pos: 66.5,-8.5 + pos: 66.5,-9.5 parent: 5350 - - uid: 11310 + - uid: 11171 components: - type: Transform - pos: 66.5,-7.5 + pos: 66.5,-10.5 parent: 5350 - - uid: 11311 + - uid: 11242 components: - type: Transform - pos: 66.5,-6.5 + pos: 64.5,-18.5 parent: 5350 - - uid: 11312 + - uid: 11243 components: - type: Transform - pos: 66.5,-12.5 + pos: 64.5,-6.5 parent: 5350 - - uid: 11313 + - uid: 11244 components: - type: Transform - pos: 66.5,-11.5 + pos: 64.5,-16.5 parent: 5350 - - uid: 11314 + - uid: 11245 components: - type: Transform - pos: 66.5,-10.5 + pos: 64.5,-15.5 parent: 5350 - - uid: 11315 + - uid: 11246 components: - type: Transform - pos: 66.5,-16.5 + pos: 64.5,-14.5 parent: 5350 - - uid: 11316 + - uid: 11247 components: - type: Transform - pos: 66.5,-15.5 + pos: 64.5,-13.5 parent: 5350 - - uid: 11317 + - uid: 11248 components: - type: Transform - pos: 66.5,-14.5 + pos: 64.5,-12.5 parent: 5350 - - uid: 11318 + - uid: 11249 components: - type: Transform - pos: 66.5,-20.5 + pos: 64.5,-11.5 parent: 5350 - - uid: 11319 + - uid: 11250 components: - type: Transform - pos: 66.5,-19.5 + pos: 64.5,-10.5 parent: 5350 - - uid: 11320 + - uid: 11251 components: - type: Transform - pos: 66.5,-18.5 + pos: 64.5,-9.5 + parent: 5350 + - uid: 11252 + components: + - type: Transform + pos: 64.5,-7.5 + parent: 5350 + - uid: 11253 + components: + - type: Transform + pos: 64.5,-8.5 + parent: 5350 + - uid: 11255 + components: + - type: Transform + pos: 64.5,-5.5 + parent: 5350 + - uid: 11269 + components: + - type: Transform + pos: 64.5,-17.5 + parent: 5350 + - uid: 11302 + components: + - type: Transform + pos: 66.5,-11.5 + parent: 5350 + - uid: 11311 + components: + - type: Transform + pos: 66.5,-6.5 parent: 5350 - uid: 11321 components: @@ -110931,110 +112348,65 @@ entities: - type: Transform pos: 60.5,-25.5 parent: 5350 - - uid: 11341 - components: - - type: Transform - pos: 61.5,-25.5 - parent: 5350 - - uid: 11342 - components: - - type: Transform - pos: 64.5,-20.5 - parent: 5350 - uid: 11343 components: - type: Transform - pos: 64.5,-19.5 + pos: 66.5,-5.5 parent: 5350 - uid: 11344 components: - type: Transform - pos: 64.5,-18.5 - parent: 5350 - - uid: 11345 - components: - - type: Transform - pos: 64.5,-17.5 - parent: 5350 - - uid: 11346 - components: - - type: Transform - pos: 64.5,-16.5 - parent: 5350 - - uid: 11347 - components: - - type: Transform - pos: 64.5,-15.5 - parent: 5350 - - uid: 11348 - components: - - type: Transform - pos: 64.5,-14.5 - parent: 5350 - - uid: 11349 - components: - - type: Transform - pos: 64.5,-13.5 - parent: 5350 - - uid: 11350 - components: - - type: Transform - pos: 64.5,-12.5 - parent: 5350 - - uid: 11351 - components: - - type: Transform - pos: 64.5,-11.5 + pos: 66.5,-13.5 parent: 5350 - - uid: 11352 + - uid: 11356 components: - type: Transform - pos: 64.5,-10.5 + pos: 66.5,-7.5 parent: 5350 - - uid: 11353 + - uid: 11357 components: - type: Transform - pos: 64.5,-9.5 + pos: 53.5,-9.5 parent: 5350 - - uid: 11354 + - uid: 11358 components: - type: Transform - pos: 64.5,-8.5 + pos: 55.5,-9.5 parent: 5350 - - uid: 11355 + - uid: 11359 components: - type: Transform - pos: 64.5,-7.5 + pos: 56.5,-9.5 parent: 5350 - - uid: 11356 + - uid: 11501 components: - type: Transform - pos: 64.5,-6.5 + pos: 43.5,-29.5 parent: 5350 - - uid: 11357 + - uid: 11502 components: - type: Transform - pos: 53.5,-9.5 + pos: 48.5,-26.5 parent: 5350 - - uid: 11358 + - uid: 11628 components: - type: Transform - pos: 55.5,-9.5 + pos: 66.5,-14.5 parent: 5350 - - uid: 11359 + - uid: 11693 components: - type: Transform - pos: 56.5,-9.5 + pos: 64.5,-21.5 parent: 5350 - - uid: 11501 + - uid: 11725 components: - type: Transform - pos: 43.5,-29.5 + pos: 66.5,-15.5 parent: 5350 - - uid: 11502 + - uid: 11736 components: - type: Transform - pos: 48.5,-26.5 + pos: 64.5,-19.5 parent: 5350 - uid: 12099 components: @@ -115266,6 +116638,681 @@ entities: - type: Transform pos: -13.5,63.5 parent: 26973 + - uid: 27035 + components: + - type: Transform + pos: 74.5,-29.5 + parent: 5350 + - uid: 27036 + components: + - type: Transform + pos: 74.5,-30.5 + parent: 5350 + - uid: 27064 + components: + - type: Transform + pos: 67.5,-39.5 + parent: 5350 + - uid: 27116 + components: + - type: Transform + pos: 66.5,-39.5 + parent: 5350 + - uid: 27129 + components: + - type: Transform + pos: 68.5,-39.5 + parent: 5350 + - uid: 27130 + components: + - type: Transform + pos: 69.5,-39.5 + parent: 5350 + - uid: 27137 + components: + - type: Transform + pos: 73.5,-39.5 + parent: 5350 + - uid: 27138 + components: + - type: Transform + pos: 65.5,-30.5 + parent: 5350 + - uid: 27142 + components: + - type: Transform + pos: 65.5,-29.5 + parent: 5350 + - uid: 27151 + components: + - type: Transform + pos: 74.5,-39.5 + parent: 5350 + - uid: 27162 + components: + - type: Transform + pos: 71.5,-39.5 + parent: 5350 + - uid: 27163 + components: + - type: Transform + pos: 72.5,-39.5 + parent: 5350 + - uid: 27177 + components: + - type: Transform + pos: 63.5,-25.5 + parent: 5350 + - uid: 27251 + components: + - type: Transform + pos: 82.5,-27.5 + parent: 5350 + - uid: 27264 + components: + - type: Transform + pos: 66.5,-22.5 + parent: 5350 + - uid: 27286 + components: + - type: Transform + pos: 82.5,-26.5 + parent: 5350 + - uid: 27287 + components: + - type: Transform + pos: 81.5,-26.5 + parent: 5350 + - uid: 27289 + components: + - type: Transform + pos: 82.5,-28.5 + parent: 5350 + - uid: 27291 + components: + - type: Transform + pos: 82.5,-30.5 + parent: 5350 + - uid: 27292 + components: + - type: Transform + pos: 82.5,-32.5 + parent: 5350 + - uid: 27293 + components: + - type: Transform + pos: 82.5,-33.5 + parent: 5350 + - uid: 27294 + components: + - type: Transform + pos: 82.5,-31.5 + parent: 5350 + - uid: 27295 + components: + - type: Transform + pos: 82.5,-34.5 + parent: 5350 + - uid: 27297 + components: + - type: Transform + pos: 82.5,-37.5 + parent: 5350 + - uid: 27298 + components: + - type: Transform + pos: 82.5,-35.5 + parent: 5350 + - uid: 27299 + components: + - type: Transform + pos: 82.5,-38.5 + parent: 5350 + - uid: 27301 + components: + - type: Transform + pos: 82.5,-39.5 + parent: 5350 + - uid: 27302 + components: + - type: Transform + pos: 82.5,-41.5 + parent: 5350 + - uid: 27303 + components: + - type: Transform + pos: 82.5,-42.5 + parent: 5350 + - uid: 27304 + components: + - type: Transform + pos: 82.5,-43.5 + parent: 5350 + - uid: 27306 + components: + - type: Transform + pos: 82.5,-45.5 + parent: 5350 + - uid: 27307 + components: + - type: Transform + pos: 82.5,-46.5 + parent: 5350 + - uid: 27308 + components: + - type: Transform + pos: 82.5,-47.5 + parent: 5350 + - uid: 27309 + components: + - type: Transform + pos: 82.5,-49.5 + parent: 5350 + - uid: 27310 + components: + - type: Transform + pos: 82.5,-48.5 + parent: 5350 + - uid: 27311 + components: + - type: Transform + pos: 81.5,-49.5 + parent: 5350 + - uid: 27313 + components: + - type: Transform + pos: 78.5,-49.5 + parent: 5350 + - uid: 27314 + components: + - type: Transform + pos: 80.5,-49.5 + parent: 5350 + - uid: 27315 + components: + - type: Transform + pos: 76.5,-49.5 + parent: 5350 + - uid: 27316 + components: + - type: Transform + pos: 77.5,-49.5 + parent: 5350 + - uid: 27317 + components: + - type: Transform + pos: 75.5,-49.5 + parent: 5350 + - uid: 27319 + components: + - type: Transform + pos: 73.5,-49.5 + parent: 5350 + - uid: 27320 + components: + - type: Transform + pos: 72.5,-49.5 + parent: 5350 + - uid: 27322 + components: + - type: Transform + pos: 70.5,-49.5 + parent: 5350 + - uid: 27323 + components: + - type: Transform + pos: 69.5,-49.5 + parent: 5350 + - uid: 27324 + components: + - type: Transform + pos: 68.5,-49.5 + parent: 5350 + - uid: 27325 + components: + - type: Transform + pos: 67.5,-49.5 + parent: 5350 + - uid: 27326 + components: + - type: Transform + pos: 66.5,-49.5 + parent: 5350 + - uid: 27328 + components: + - type: Transform + pos: 64.5,-49.5 + parent: 5350 + - uid: 27329 + components: + - type: Transform + pos: 63.5,-49.5 + parent: 5350 + - uid: 27330 + components: + - type: Transform + pos: 62.5,-49.5 + parent: 5350 + - uid: 27331 + components: + - type: Transform + pos: 61.5,-49.5 + parent: 5350 + - uid: 27332 + components: + - type: Transform + pos: 60.5,-49.5 + parent: 5350 + - uid: 27333 + components: + - type: Transform + pos: 60.5,-48.5 + parent: 5350 + - uid: 27335 + components: + - type: Transform + pos: 60.5,-46.5 + parent: 5350 + - uid: 27336 + components: + - type: Transform + pos: 60.5,-45.5 + parent: 5350 + - uid: 27337 + components: + - type: Transform + pos: 60.5,-44.5 + parent: 5350 + - uid: 27339 + components: + - type: Transform + pos: 60.5,-42.5 + parent: 5350 + - uid: 27340 + components: + - type: Transform + pos: 60.5,-41.5 + parent: 5350 + - uid: 27341 + components: + - type: Transform + pos: 60.5,-40.5 + parent: 5350 + - uid: 27342 + components: + - type: Transform + pos: 60.5,-39.5 + parent: 5350 + - uid: 27344 + components: + - type: Transform + pos: 60.5,-37.5 + parent: 5350 + - uid: 27345 + components: + - type: Transform + pos: 60.5,-36.5 + parent: 5350 + - uid: 27346 + components: + - type: Transform + pos: 50.5,-34.5 + parent: 5350 + - uid: 27347 + components: + - type: Transform + pos: 51.5,-34.5 + parent: 5350 + - uid: 27348 + components: + - type: Transform + pos: 52.5,-34.5 + parent: 5350 + - uid: 27350 + components: + - type: Transform + pos: 54.5,-34.5 + parent: 5350 + - uid: 27351 + components: + - type: Transform + pos: 55.5,-34.5 + parent: 5350 + - uid: 27353 + components: + - type: Transform + pos: 57.5,-34.5 + parent: 5350 + - uid: 27355 + components: + - type: Transform + pos: 59.5,-34.5 + parent: 5350 + - uid: 27356 + components: + - type: Transform + pos: 60.5,-34.5 + parent: 5350 + - uid: 27357 + components: + - type: Transform + pos: 61.5,-34.5 + parent: 5350 + - uid: 27358 + components: + - type: Transform + pos: 62.5,-34.5 + parent: 5350 + - uid: 27359 + components: + - type: Transform + pos: 50.5,-36.5 + parent: 5350 + - uid: 27360 + components: + - type: Transform + pos: 51.5,-36.5 + parent: 5350 + - uid: 27362 + components: + - type: Transform + pos: 53.5,-36.5 + parent: 5350 + - uid: 27363 + components: + - type: Transform + pos: 54.5,-36.5 + parent: 5350 + - uid: 27364 + components: + - type: Transform + pos: 55.5,-36.5 + parent: 5350 + - uid: 27366 + components: + - type: Transform + pos: 57.5,-36.5 + parent: 5350 + - uid: 27367 + components: + - type: Transform + pos: 58.5,-36.5 + parent: 5350 + - uid: 27368 + components: + - type: Transform + pos: 59.5,-36.5 + parent: 5350 + - uid: 27369 + components: + - type: Transform + pos: 79.5,-28.5 + parent: 5350 + - uid: 27370 + components: + - type: Transform + pos: 62.5,-36.5 + parent: 5350 + - uid: 27371 + components: + - type: Transform + pos: 62.5,-37.5 + parent: 5350 + - uid: 27372 + components: + - type: Transform + pos: 62.5,-38.5 + parent: 5350 + - uid: 27374 + components: + - type: Transform + pos: 62.5,-40.5 + parent: 5350 + - uid: 27375 + components: + - type: Transform + pos: 62.5,-41.5 + parent: 5350 + - uid: 27376 + components: + - type: Transform + pos: 62.5,-42.5 + parent: 5350 + - uid: 27378 + components: + - type: Transform + pos: 62.5,-44.5 + parent: 5350 + - uid: 27379 + components: + - type: Transform + pos: 62.5,-45.5 + parent: 5350 + - uid: 27381 + components: + - type: Transform + pos: 62.5,-47.5 + parent: 5350 + - uid: 27382 + components: + - type: Transform + pos: 63.5,-47.5 + parent: 5350 + - uid: 27383 + components: + - type: Transform + pos: 79.5,-39.5 + parent: 5350 + - uid: 27384 + components: + - type: Transform + pos: 65.5,-47.5 + parent: 5350 + - uid: 27385 + components: + - type: Transform + pos: 66.5,-47.5 + parent: 5350 + - uid: 27387 + components: + - type: Transform + pos: 68.5,-47.5 + parent: 5350 + - uid: 27388 + components: + - type: Transform + pos: 69.5,-47.5 + parent: 5350 + - uid: 27390 + components: + - type: Transform + pos: 72.5,-47.5 + parent: 5350 + - uid: 27391 + components: + - type: Transform + pos: 71.5,-47.5 + parent: 5350 + - uid: 27392 + components: + - type: Transform + pos: 73.5,-47.5 + parent: 5350 + - uid: 27393 + components: + - type: Transform + pos: 74.5,-47.5 + parent: 5350 + - uid: 27394 + components: + - type: Transform + pos: 75.5,-47.5 + parent: 5350 + - uid: 27395 + components: + - type: Transform + pos: 76.5,-47.5 + parent: 5350 + - uid: 27396 + components: + - type: Transform + pos: 77.5,-47.5 + parent: 5350 + - uid: 27398 + components: + - type: Transform + pos: 79.5,-47.5 + parent: 5350 + - uid: 27399 + components: + - type: Transform + pos: 80.5,-47.5 + parent: 5350 + - uid: 27400 + components: + - type: Transform + pos: 80.5,-31.5 + parent: 5350 + - uid: 27401 + components: + - type: Transform + pos: 80.5,-30.5 + parent: 5350 + - uid: 27402 + components: + - type: Transform + pos: 80.5,-29.5 + parent: 5350 + - uid: 27404 + components: + - type: Transform + pos: 80.5,-46.5 + parent: 5350 + - uid: 27406 + components: + - type: Transform + pos: 80.5,-43.5 + parent: 5350 + - uid: 27407 + components: + - type: Transform + pos: 80.5,-45.5 + parent: 5350 + - uid: 27408 + components: + - type: Transform + pos: 80.5,-42.5 + parent: 5350 + - uid: 27409 + components: + - type: Transform + pos: 80.5,-41.5 + parent: 5350 + - uid: 27410 + components: + - type: Transform + pos: 80.5,-40.5 + parent: 5350 + - uid: 27412 + components: + - type: Transform + pos: 80.5,-38.5 + parent: 5350 + - uid: 27413 + components: + - type: Transform + pos: 80.5,-37.5 + parent: 5350 + - uid: 27414 + components: + - type: Transform + pos: 80.5,-36.5 + parent: 5350 + - uid: 27415 + components: + - type: Transform + pos: 80.5,-35.5 + parent: 5350 + - uid: 27416 + components: + - type: Transform + pos: 80.5,-34.5 + parent: 5350 + - uid: 27418 + components: + - type: Transform + pos: 80.5,-32.5 + parent: 5350 + - uid: 27419 + components: + - type: Transform + pos: 78.5,-28.5 + parent: 5350 + - uid: 27420 + components: + - type: Transform + pos: 77.5,-28.5 + parent: 5350 + - uid: 27421 + components: + - type: Transform + pos: 79.5,-26.5 + parent: 5350 + - uid: 27422 + components: + - type: Transform + pos: 79.5,-44.5 + parent: 5350 + - uid: 27441 + components: + - type: Transform + pos: 79.5,-33.5 + parent: 5350 + - uid: 27460 + components: + - type: Transform + pos: 79.5,-36.5 + parent: 5350 + - uid: 27470 + components: + - type: Transform + pos: 78.5,-46.5 + parent: 5350 + - uid: 27471 + components: + - type: Transform + pos: 75.5,-46.5 + parent: 5350 + - uid: 27472 + components: + - type: Transform + pos: 70.5,-46.5 + parent: 5350 + - uid: 27473 + components: + - type: Transform + pos: 67.5,-46.5 + parent: 5350 + - uid: 27474 + components: + - type: Transform + pos: 64.5,-46.5 + parent: 5350 + - uid: 27475 + components: + - type: Transform + pos: 63.5,-43.5 + parent: 5350 + - uid: 27476 + components: + - type: Transform + pos: 63.5,-39.5 + parent: 5350 + - uid: 27477 + components: + - type: Transform + pos: 63.5,-35.5 + parent: 5350 - proto: GrilleBroken entities: - uid: 2073 @@ -115575,6 +117622,161 @@ entities: rot: -1.5707963267948966 rad pos: 41.5,60.5 parent: 5350 + - uid: 27288 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 60.5,-47.5 + parent: 5350 + - uid: 27290 + components: + - type: Transform + pos: 60.5,-38.5 + parent: 5350 + - uid: 27296 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 74.5,-49.5 + parent: 5350 + - uid: 27300 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 79.5,-49.5 + parent: 5350 + - uid: 27305 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 82.5,-44.5 + parent: 5350 + - uid: 27312 + components: + - type: Transform + pos: 82.5,-36.5 + parent: 5350 + - uid: 27318 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 80.5,-28.5 + parent: 5350 + - uid: 27321 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 80.5,-26.5 + parent: 5350 + - uid: 27327 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 80.5,-39.5 + parent: 5350 + - uid: 27334 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 67.5,-47.5 + parent: 5350 + - uid: 27338 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 56.5,-34.5 + parent: 5350 + - uid: 27343 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 62.5,-43.5 + parent: 5350 + - uid: 27349 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 52.5,-36.5 + parent: 5350 + - uid: 27352 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 56.5,-36.5 + parent: 5350 + - uid: 27354 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 53.5,-34.5 + parent: 5350 + - uid: 27361 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 58.5,-34.5 + parent: 5350 + - uid: 27365 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 82.5,-29.5 + parent: 5350 + - uid: 27373 + components: + - type: Transform + pos: 62.5,-46.5 + parent: 5350 + - uid: 27377 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 70.5,-47.5 + parent: 5350 + - uid: 27380 + components: + - type: Transform + pos: 80.5,-44.5 + parent: 5350 + - uid: 27386 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 80.5,-33.5 + parent: 5350 + - uid: 27389 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 78.5,-47.5 + parent: 5350 + - uid: 27397 + components: + - type: Transform + pos: 60.5,-43.5 + parent: 5350 + - uid: 27403 + components: + - type: Transform + pos: 82.5,-40.5 + parent: 5350 + - uid: 27405 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 71.5,-49.5 + parent: 5350 + - uid: 27411 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 65.5,-49.5 + parent: 5350 + - uid: 27417 + components: + - type: Transform + pos: 62.5,-39.5 + parent: 5350 - proto: GroundCannabis entities: - uid: 24640 @@ -115757,6 +117959,26 @@ entities: - type: Transform pos: 29.518621,-60.391666 parent: 5350 +- proto: HeatExchanger + entities: + - uid: 27166 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 72.5,-40.5 + parent: 5350 + - uid: 27167 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 72.5,-41.5 + parent: 5350 + - uid: 27168 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 72.5,-42.5 + parent: 5350 - proto: HighSecCommandLocked entities: - uid: 1668 @@ -115800,6 +118022,12 @@ entities: - type: Transform pos: -34.462692,34.496433 parent: 5350 + - uid: 27051 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 72.83539,-31.5 + parent: 5350 - proto: HospitalCurtainsOpen entities: - uid: 7215 @@ -116304,6 +118532,11 @@ entities: - type: Transform pos: 100.5,10.5 parent: 5350 + - uid: 27015 + components: + - type: Transform + pos: 72.5,-28.5 + parent: 5350 - proto: IntercomMedical entities: - uid: 14165 @@ -116985,6 +119218,28 @@ entities: - Pressed: Toggle 14794: - Pressed: Toggle +- proto: LockerAtmospherics + entities: + - uid: 27084 + components: + - type: Transform + pos: 73.5,-29.5 + parent: 5350 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 27085 + - 27091 + - 27097 + - 27098 + - 27099 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null - proto: LockerAtmosphericsFilled entities: - uid: 9033 @@ -119628,6 +121883,11 @@ entities: - type: Transform pos: 41.5,31.5 parent: 5350 + - uid: 27088 + components: + - type: Transform + pos: 76.5,-34.5 + parent: 5350 - proto: NitrogenTankFilled entities: - uid: 15569 @@ -119640,6 +121900,13 @@ entities: - type: Transform pos: -15.399836,-58.48665 parent: 5350 + - uid: 27085 + components: + - type: Transform + parent: 27084 + - type: Physics + canCollide: False + - type: InsideEntityStorage - proto: NitrousOxideCanister entities: - uid: 11825 @@ -119827,6 +122094,11 @@ entities: - type: Transform pos: 55.5,24.5 parent: 5350 + - uid: 27087 + components: + - type: Transform + pos: 76.5,-33.5 + parent: 5350 - proto: OxygenTankFilled entities: - uid: 1305 @@ -119854,6 +122126,13 @@ entities: - type: Transform pos: -43.374786,23.584633 parent: 5350 + - uid: 27099 + components: + - type: Transform + parent: 27084 + - type: Physics + canCollide: False + - type: InsideEntityStorage - proto: PaintingAmogusTriptych entities: - uid: 24635 @@ -120320,11 +122599,6 @@ entities: - type: Transform pos: -42.7706,23.635101 parent: 5350 - - uid: 11275 - components: - - type: Transform - pos: 67.42234,-30.577332 - parent: 5350 - uid: 11812 components: - type: Transform @@ -120600,10 +122874,15 @@ entities: - type: Transform pos: 47.5,20.5 parent: 5350 - - uid: 11598 + - uid: 11166 components: - type: Transform - pos: 69.5,-15.5 + pos: 69.5,-14.5 + parent: 5350 + - uid: 27089 + components: + - type: Transform + pos: 76.5,-35.5 parent: 5350 - proto: PlasmaReinforcedWindowDirectional entities: @@ -122157,6 +124436,11 @@ entities: - type: Transform pos: 52.5,-3.5 parent: 5350 + - uid: 27077 + components: + - type: Transform + pos: 73.5,-31.5 + parent: 5350 - proto: PowerCellSmall entities: - uid: 22275 @@ -123112,11 +125396,23 @@ entities: parent: 5350 - type: ApcPowerReceiver powerLoad: 0 + - uid: 10928 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 65.5,-8.5 + parent: 5350 - uid: 11029 components: - type: Transform pos: 35.5,-18.5 parent: 5350 + - uid: 11256 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 63.5,-22.5 + parent: 5350 - uid: 11506 components: - type: Transform @@ -123124,6 +125420,12 @@ entities: parent: 5350 - type: ApcPowerReceiver powerLoad: 0 + - uid: 11728 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 65.5,-16.5 + parent: 5350 - uid: 12036 components: - type: Transform @@ -123171,22 +125473,6 @@ entities: parent: 5350 - type: ApcPowerReceiver powerLoad: 0 - - uid: 12043 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 65.5,-9.5 - parent: 5350 - - type: ApcPowerReceiver - powerLoad: 0 - - uid: 12044 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 65.5,-17.5 - parent: 5350 - - type: ApcPowerReceiver - powerLoad: 0 - uid: 12045 components: - type: Transform @@ -123203,14 +125489,6 @@ entities: parent: 5350 - type: ApcPowerReceiver powerLoad: 0 - - uid: 12047 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 63.5,-22.5 - parent: 5350 - - type: ApcPowerReceiver - powerLoad: 0 - uid: 12048 components: - type: Transform @@ -124741,8 +127019,42 @@ entities: rot: -1.5707963267948966 rad pos: -25.5,-23.5 parent: 5350 + - uid: 27143 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 66.5,-27.5 + parent: 5350 + - uid: 27144 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 66.5,-35.5 + parent: 5350 + - uid: 27145 + components: + - type: Transform + pos: 73.5,-29.5 + parent: 5350 + - uid: 27146 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 76.5,-37.5 + parent: 5350 + - uid: 27147 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 76.5,-33.5 + parent: 5350 - proto: PoweredlightExterior entities: + - uid: 11238 + components: + - type: Transform + pos: 76.5,-43.5 + parent: 5350 - uid: 26352 components: - type: Transform @@ -124819,6 +127131,12 @@ entities: - type: Transform pos: 76.5,1.5 parent: 5350 + - uid: 27478 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 72.5,-24.5 + parent: 5350 - proto: PoweredlightSodium entities: - uid: 23878 @@ -125166,6 +127484,12 @@ entities: parent: 5350 - type: ApcPowerReceiver powerLoad: 0 + - uid: 9029 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 69.5,-10.5 + parent: 5350 - uid: 9969 components: - type: Transform @@ -125304,13 +127628,18 @@ entities: parent: 5350 - type: ApcPowerReceiver powerLoad: 0 - - uid: 11286 + - uid: 10970 components: - type: Transform - pos: 65.5,-24.5 + rot: -1.5707963267948966 rad + pos: 69.5,-6.5 + parent: 5350 + - uid: 11303 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 69.5,-14.5 parent: 5350 - - type: ApcPowerReceiver - powerLoad: 0 - uid: 11503 components: - type: Transform @@ -125359,38 +127688,12 @@ entities: parent: 5350 - type: ApcPowerReceiver powerLoad: 0 - - uid: 11569 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 69.5,-19.5 - parent: 5350 - - type: ApcPowerReceiver - powerLoad: 0 - - uid: 11570 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 69.5,-15.5 - parent: 5350 - - type: ApcPowerReceiver - powerLoad: 0 - - uid: 11571 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 69.5,-11.5 - parent: 5350 - - type: ApcPowerReceiver - powerLoad: 0 - - uid: 11572 + - uid: 11618 components: - type: Transform rot: -1.5707963267948966 rad - pos: 69.5,-7.5 + pos: 69.5,-18.5 parent: 5350 - - type: ApcPowerReceiver - powerLoad: 0 - uid: 12024 components: - type: Transform @@ -126458,6 +128761,35 @@ entities: parent: 5350 - type: ApcPowerReceiver powerLoad: 0 + - uid: 26986 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 69.5,-27.5 + parent: 5350 + - uid: 27125 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 66.5,-42.5 + parent: 5350 + - uid: 27126 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 69.5,-42.5 + parent: 5350 + - uid: 27153 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 76.5,-41.5 + parent: 5350 + - uid: 27249 + components: + - type: Transform + pos: 69.5,-23.5 + parent: 5350 - proto: Protolathe entities: - uid: 9805 @@ -127161,6 +129493,12 @@ entities: - type: Transform pos: -64.48487,-42.241108 parent: 5350 + - uid: 27103 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 73.5,-31 + parent: 5350 - proto: Railing entities: - uid: 2182 @@ -127298,6 +129636,48 @@ entities: - type: Transform pos: -5.5,-74.5 parent: 5350 + - uid: 26987 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 67.5,-31.5 + parent: 5350 + - uid: 26988 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 68.5,-32.5 + parent: 5350 + - uid: 26989 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 69.5,-32.5 + parent: 5350 + - uid: 26990 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 70.5,-32.5 + parent: 5350 + - uid: 26991 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 71.5,-32.5 + parent: 5350 + - uid: 26992 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 72.5,-32.5 + parent: 5350 + - uid: 27007 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 73.5,-32.5 + parent: 5350 - proto: RailingCorner entities: - uid: 11026 @@ -127353,6 +129733,23 @@ entities: rot: 1.5707963267948966 rad pos: -66.5,-39.5 parent: 5350 + - uid: 26993 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 67.5,-32.5 + parent: 5350 + - uid: 27006 + components: + - type: Transform + pos: 74.5,-32.5 + parent: 5350 + - uid: 27012 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 67.5,-30.5 + parent: 5350 - proto: RandomArcade entities: - uid: 13625 @@ -128271,6 +130668,12 @@ entities: - type: Transform pos: 43.631737,8.657005 parent: 5350 + - uid: 27062 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 69.35516,-31.5 + parent: 5350 - proto: ReagentContainerFlour entities: - uid: 2240 @@ -128300,6 +130703,21 @@ entities: parent: 5350 - proto: ReinforcedPlasmaWindow entities: + - uid: 10943 + components: + - type: Transform + pos: 66.5,-17.5 + parent: 5350 + - uid: 11112 + components: + - type: Transform + pos: 66.5,-10.5 + parent: 5350 + - uid: 11113 + components: + - type: Transform + pos: 66.5,-9.5 + parent: 5350 - uid: 11288 components: - type: Transform @@ -128345,65 +130763,70 @@ entities: - type: Transform pos: 61.5,-27.5 parent: 5350 - - uid: 11297 + - uid: 11298 components: - type: Transform - pos: 66.5,-20.5 + pos: 66.5,-11.5 parent: 5350 - - uid: 11298 + - uid: 11312 + components: + - type: Transform + pos: 66.5,-5.5 + parent: 5350 + - uid: 11319 components: - type: Transform pos: 66.5,-19.5 parent: 5350 - - uid: 11299 + - uid: 11320 components: - type: Transform pos: 66.5,-18.5 parent: 5350 - - uid: 11300 + - uid: 11569 components: - type: Transform - pos: 66.5,-16.5 + pos: 66.5,-6.5 parent: 5350 - - uid: 11301 + - uid: 11634 components: - type: Transform - pos: 66.5,-15.5 + pos: 66.5,-7.5 parent: 5350 - - uid: 11302 + - uid: 11726 components: - type: Transform - pos: 66.5,-14.5 + pos: 66.5,-13.5 parent: 5350 - - uid: 11303 + - uid: 11727 components: - type: Transform - pos: 66.5,-12.5 + pos: 66.5,-14.5 parent: 5350 - - uid: 11304 + - uid: 11729 components: - type: Transform - pos: 66.5,-11.5 + pos: 66.5,-15.5 parent: 5350 - - uid: 11305 + - uid: 27131 components: - type: Transform - pos: 66.5,-10.5 + pos: 66.5,-39.5 parent: 5350 - - uid: 11306 + - uid: 27132 components: - type: Transform - pos: 66.5,-8.5 + pos: 67.5,-39.5 parent: 5350 - - uid: 11307 + - uid: 27133 components: - type: Transform - pos: 66.5,-7.5 + pos: 68.5,-39.5 parent: 5350 - - uid: 11308 + - uid: 27134 components: - type: Transform - pos: 66.5,-6.5 + pos: 69.5,-39.5 parent: 5350 - proto: ReinforcedWindow entities: @@ -130699,140 +133122,135 @@ entities: - type: Transform pos: 1.5,46.5 parent: 5350 - - uid: 10815 - components: - - type: Transform - pos: 64.5,-6.5 - parent: 5350 - - uid: 10816 + - uid: 10838 components: - type: Transform - pos: 64.5,-7.5 + pos: 64.5,-15.5 parent: 5350 - - uid: 10817 + - uid: 10839 components: - type: Transform - pos: 64.5,-8.5 + pos: 64.5,-9.5 parent: 5350 - - uid: 10818 + - uid: 10845 components: - type: Transform - pos: 64.5,-9.5 + pos: 59.5,-25.5 parent: 5350 - - uid: 10820 + - uid: 10846 components: - type: Transform - pos: 64.5,-10.5 + pos: 58.5,-25.5 parent: 5350 - - uid: 10821 + - uid: 10847 components: - type: Transform - pos: 64.5,-11.5 + pos: 57.5,-25.5 parent: 5350 - - uid: 10822 + - uid: 10848 components: - type: Transform - pos: 64.5,-12.5 + pos: 56.5,-25.5 parent: 5350 - - uid: 10823 + - uid: 10849 components: - type: Transform - pos: 64.5,-13.5 + pos: 55.5,-25.5 parent: 5350 - - uid: 10824 + - uid: 10850 components: - type: Transform - pos: 64.5,-14.5 + pos: 54.5,-25.5 parent: 5350 - - uid: 10825 + - uid: 10851 components: - type: Transform - pos: 64.5,-15.5 + pos: 53.5,-25.5 parent: 5350 - - uid: 10826 + - uid: 10852 components: - type: Transform - pos: 64.5,-16.5 + pos: 52.5,-25.5 parent: 5350 - - uid: 10827 + - uid: 10853 components: - type: Transform - pos: 64.5,-17.5 + pos: 51.5,-25.5 parent: 5350 - - uid: 10828 + - uid: 10854 components: - type: Transform - pos: 64.5,-18.5 + pos: 50.5,-25.5 parent: 5350 - - uid: 10829 + - uid: 11097 components: - type: Transform - pos: 64.5,-19.5 + pos: 64.5,-11.5 parent: 5350 - - uid: 10830 + - uid: 11098 components: - type: Transform - pos: 64.5,-20.5 + pos: 64.5,-10.5 parent: 5350 - - uid: 10843 + - uid: 11099 components: - type: Transform - pos: 61.5,-25.5 + pos: 64.5,-12.5 parent: 5350 - - uid: 10844 + - uid: 11100 components: - type: Transform - pos: 60.5,-25.5 + pos: 64.5,-13.5 parent: 5350 - - uid: 10845 + - uid: 11101 components: - type: Transform - pos: 59.5,-25.5 + pos: 64.5,-14.5 parent: 5350 - - uid: 10846 + - uid: 11102 components: - type: Transform - pos: 58.5,-25.5 + pos: 64.5,-16.5 parent: 5350 - - uid: 10847 + - uid: 11237 components: - type: Transform - pos: 57.5,-25.5 + pos: 64.5,-17.5 parent: 5350 - - uid: 10848 + - uid: 11239 components: - type: Transform - pos: 56.5,-25.5 + pos: 63.5,-25.5 parent: 5350 - - uid: 10849 + - uid: 11240 components: - type: Transform - pos: 55.5,-25.5 + pos: 64.5,-5.5 parent: 5350 - - uid: 10850 + - uid: 11265 components: - type: Transform - pos: 54.5,-25.5 + pos: 64.5,-19.5 parent: 5350 - - uid: 10851 + - uid: 11267 components: - type: Transform - pos: 53.5,-25.5 + pos: 61.5,-25.5 parent: 5350 - - uid: 10852 + - uid: 11284 components: - type: Transform - pos: 52.5,-25.5 + pos: 64.5,-7.5 parent: 5350 - - uid: 10853 + - uid: 11285 components: - type: Transform - pos: 51.5,-25.5 + pos: 64.5,-6.5 parent: 5350 - - uid: 10854 + - uid: 11286 components: - type: Transform - pos: 50.5,-25.5 + pos: 64.5,-8.5 parent: 5350 - uid: 11378 components: @@ -130844,6 +133262,21 @@ entities: - type: Transform pos: 43.5,-29.5 parent: 5350 + - uid: 11694 + components: + - type: Transform + pos: 64.5,-25.5 + parent: 5350 + - uid: 11734 + components: + - type: Transform + pos: 60.5,-25.5 + parent: 5350 + - uid: 11753 + components: + - type: Transform + pos: 70.5,-28.5 + parent: 5350 - uid: 12345 components: - type: Transform @@ -132044,11 +134477,66 @@ entities: - type: Transform pos: 104.5,10.5 parent: 5350 + - uid: 26789 + components: + - type: Transform + pos: 64.5,-21.5 + parent: 5350 - uid: 26871 components: - type: Transform pos: 32.5,-8.5 parent: 5350 + - uid: 27037 + components: + - type: Transform + pos: 74.5,-29.5 + parent: 5350 + - uid: 27038 + components: + - type: Transform + pos: 74.5,-30.5 + parent: 5350 + - uid: 27149 + components: + - type: Transform + pos: 72.5,-39.5 + parent: 5350 + - uid: 27150 + components: + - type: Transform + pos: 71.5,-39.5 + parent: 5350 + - uid: 27154 + components: + - type: Transform + pos: 73.5,-39.5 + parent: 5350 + - uid: 27155 + components: + - type: Transform + pos: 74.5,-39.5 + parent: 5350 + - uid: 27257 + components: + - type: Transform + pos: 65.5,-29.5 + parent: 5350 + - uid: 27258 + components: + - type: Transform + pos: 65.5,-30.5 + parent: 5350 + - uid: 27271 + components: + - type: Transform + pos: 66.5,-22.5 + parent: 5350 + - uid: 27272 + components: + - type: Transform + pos: 64.5,-18.5 + parent: 5350 - proto: RemoteSignaller entities: - uid: 1290 @@ -132467,6 +134955,11 @@ entities: - type: Transform pos: 108.52579,-0.4561236 parent: 5350 + - uid: 27047 + components: + - type: Transform + pos: 70.58096,-31.5 + parent: 5350 - proto: SheetPlasma entities: - uid: 9204 @@ -132627,11 +135120,6 @@ entities: - type: Transform pos: 42.547264,-3.4866009 parent: 5350 - - uid: 11273 - components: - - type: Transform - pos: 71.51609,-32.499207 - parent: 5350 - uid: 12277 components: - type: Transform @@ -133533,25 +136021,26 @@ entities: - Pressed: Toggle 10483: - Pressed: Toggle - - uid: 12021 + - uid: 11640 components: - type: Transform - pos: 45.5,-29.5 + rot: -1.5707963267948966 rad + pos: 64.5,-4.5 parent: 5350 - type: DeviceLinkSource linkedPorts: - 11487: + 11015: - Pressed: Toggle - 11486: - - Pressed: Toggle - - uid: 12022 + - uid: 12021 components: - type: Transform - pos: 64.5,-5.5 + pos: 45.5,-29.5 parent: 5350 - type: DeviceLinkSource linkedPorts: - 10293: + 11487: + - Pressed: Toggle + 11486: - Pressed: Toggle - uid: 15183 components: @@ -134492,6 +136981,11 @@ entities: parent: 5350 - proto: SignEngine entities: + - uid: 11741 + components: + - type: Transform + pos: 65.5,-22.5 + parent: 5350 - uid: 23813 components: - type: Transform @@ -134565,6 +137059,23 @@ entities: - type: Transform pos: 45.5,-35.5 parent: 5350 + - uid: 27262 + components: + - type: Transform + pos: 65.5,-39.5 + parent: 5350 +- proto: SignFlammableMed + entities: + - uid: 27094 + components: + - type: Transform + pos: 75.5,-31.5 + parent: 5350 + - uid: 27198 + components: + - type: Transform + pos: 77.5,-36.5 + parent: 5350 - proto: SignGravity entities: - uid: 14539 @@ -135038,6 +137549,11 @@ entities: - type: Transform pos: -0.5,-48.5 parent: 5350 + - uid: 27093 + components: + - type: Transform + pos: 65.5,-27.5 + parent: 5350 - proto: SignSpace entities: - uid: 5419 @@ -135075,15 +137591,15 @@ entities: - type: Transform pos: -43.5,17.5 parent: 5350 - - uid: 11287 + - uid: 11490 components: - type: Transform - pos: 65.5,-25.5 + pos: 47.5,-33.5 parent: 5350 - - uid: 11490 + - uid: 11755 components: - type: Transform - pos: 47.5,-33.5 + pos: 70.5,-22.5 parent: 5350 - uid: 18937 components: @@ -135140,6 +137656,11 @@ entities: - type: Transform pos: 92.5,6.5 parent: 5350 + - uid: 27263 + components: + - type: Transform + pos: 75.5,-40.5 + parent: 5350 - proto: SignSurgery entities: - uid: 15191 @@ -135530,6 +138051,13 @@ entities: - type: Transform pos: 55.5,30.5 parent: 5350 + - uid: 27014 + components: + - type: MetaData + name: TEG SMES + - type: Transform + pos: 70.5,-26.5 + parent: 5350 - proto: SmokingPipeFilledCannabis entities: - uid: 24641 @@ -138355,15 +140883,15 @@ entities: parent: 5350 - proto: StorageCanister entities: - - uid: 11515 + - uid: 10293 components: - type: Transform - pos: 45.5,-26.5 + pos: 69.5,-10.5 parent: 5350 - - uid: 11627 + - uid: 11515 components: - type: Transform - pos: 69.5,-11.5 + pos: 45.5,-26.5 parent: 5350 - uid: 11819 components: @@ -138583,6 +141111,13 @@ entities: - type: Transform pos: 104.5,13.5 parent: 5350 + - uid: 27141 + components: + - type: MetaData + name: TEG Substation + - type: Transform + pos: 70.5,-25.5 + parent: 5350 - proto: SuitStorageCaptain entities: - uid: 1505 @@ -139134,6 +141669,18 @@ entities: id: Tech Vault High Sec - proto: SurveillanceCameraEngineering entities: + - uid: 9027 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 69.5,-10.5 + parent: 5350 + - uid: 11055 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 69.5,-14.5 + parent: 5350 - uid: 11516 components: - type: Transform @@ -139145,6 +141692,26 @@ entities: - SurveillanceCameraEngineering nameSet: True id: Thruster + - uid: 11571 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 69.5,-6.5 + parent: 5350 + - uid: 11620 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 69.5,-18.5 + parent: 5350 + - uid: 11751 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 72.5,-22.5 + parent: 5350 + - type: SurveillanceCamera + id: Atmos TEG Exterior north - uid: 12527 components: - type: Transform @@ -139393,61 +141960,6 @@ entities: - SurveillanceCameraEngineering nameSet: True id: Atmos Tank Nitro - - uid: 26785 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 69.5,-19.5 - parent: 5350 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraEngineering - nameSet: True - id: Atmos Tank Co2 - - uid: 26786 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 69.5,-15.5 - parent: 5350 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraEngineering - nameSet: True - id: Atmos Tank Plasma - - uid: 26787 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 69.5,-11.5 - parent: 5350 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraEngineering - nameSet: True - id: Atmos Tank Waste - - uid: 26788 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 69.5,-7.5 - parent: 5350 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraEngineering - nameSet: True - id: Atmos Tank Mixer - - uid: 26789 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 68.5,-23.5 - parent: 5350 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraEngineering - nameSet: True - id: Atmos Exterior - uid: 26792 components: - type: Transform @@ -139512,6 +142024,40 @@ entities: - SurveillanceCameraEngineering nameSet: True id: Solars SW + - uid: 27139 + components: + - type: MetaData + name: camera + - type: Transform + rot: -1.5707963267948966 rad + pos: 66.5,-26.5 + parent: 5350 + - type: SurveillanceCamera + id: Atmos TEG Room Entrance + - uid: 27265 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 73.5,-31.5 + parent: 5350 + - type: SurveillanceCamera + id: Atmos TEG Room Desk + - uid: 27267 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 66.5,-38.5 + parent: 5350 + - type: SurveillanceCamera + id: Atmos TEG Room Chamber + - uid: 27269 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 74.5,-42.5 + parent: 5350 + - type: SurveillanceCamera + id: Atmos TEG Exterior south - proto: SurveillanceCameraGeneral entities: - uid: 23189 @@ -142622,6 +145168,33 @@ entities: - type: Transform pos: 26.5,0.5 parent: 5350 + - uid: 27040 + components: + - type: Transform + pos: 73.5,-30.5 + parent: 5350 + - uid: 27041 + components: + - type: Transform + pos: 73.5,-31.5 + parent: 5350 + - uid: 27042 + components: + - type: Transform + pos: 72.5,-31.5 + parent: 5350 + - uid: 27044 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 70.5,-31.5 + parent: 5350 + - uid: 27045 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 69.5,-31.5 + parent: 5350 - proto: TableCarpet entities: - uid: 1022 @@ -144473,26 +147046,26 @@ entities: parent: 5350 - proto: TegCenter entities: - - uid: 11276 + - uid: 26997 components: - type: Transform rot: -1.5707963267948966 rad - pos: 69.5,-34.5 + pos: 70.5,-35.5 parent: 5350 - proto: TegCirculator entities: - - uid: 11277 + - uid: 26998 components: - type: Transform - pos: 70.5,-34.5 + rot: 3.141592653589793 rad + pos: 69.5,-35.5 parent: 5350 - type: PointLight color: '#FF3300FF' - - uid: 11280 + - uid: 26999 components: - type: Transform - rot: 3.141592653589793 rad - pos: 68.5,-34.5 + pos: 71.5,-35.5 parent: 5350 - type: PointLight color: '#FF3300FF' @@ -145302,6 +147875,12 @@ entities: - type: Transform pos: 52.498978,0.33205032 parent: 5350 + - uid: 27102 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 72.38718,-31.5 + parent: 5350 - proto: TubaInstrument entities: - uid: 3197 @@ -145460,6 +148039,25 @@ entities: - Left: Forward - Right: Reverse - Middle: Off + - uid: 27274 + components: + - type: MetaData + desc: 'Opens and closes the blast doors of the combustion chamber. Left: one Door - Right: both Doors - Middle: closed.' + name: blast doors + - type: Transform + pos: 70.5,-38.5 + parent: 5350 + - type: TwoWayLever + nextSignalLeft: True + - type: DeviceLinkSource + linkedPorts: + 27136: + - Middle: Close + - Left: Open + - Right: Open + 27135: + - Middle: Close + - Left: Open - proto: UnfinishedMachineFrame entities: - uid: 18441 @@ -147889,6 +150487,16 @@ entities: - type: Transform pos: -57.5,-6.5 parent: 5350 + - uid: 5314 + components: + - type: Transform + pos: 66.5,-20.5 + parent: 5350 + - uid: 5315 + components: + - type: Transform + pos: 67.5,-20.5 + parent: 5350 - uid: 5328 components: - type: Transform @@ -149994,6 +152602,12 @@ entities: - type: Transform pos: 58.5,-3.5 parent: 5350 + - uid: 9069 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 65.5,-38.5 + parent: 5350 - uid: 9071 components: - type: Transform @@ -150527,67 +153141,35 @@ entities: - uid: 10814 components: - type: Transform - pos: 64.5,-5.5 - parent: 5350 - - uid: 10831 - components: - - type: Transform - pos: 64.5,-21.5 + pos: 66.5,-12.5 parent: 5350 - - uid: 10832 + - uid: 10818 components: - type: Transform - pos: 64.5,-22.5 + rot: -1.5707963267948966 rad + pos: 69.5,-8.5 parent: 5350 - uid: 10833 components: - type: Transform - pos: 64.5,-23.5 - parent: 5350 - - uid: 10834 - components: - - type: Transform - pos: 65.5,-23.5 - parent: 5350 - - uid: 10835 - components: - - type: Transform - pos: 66.5,-23.5 - parent: 5350 - - uid: 10836 - components: - - type: Transform - pos: 67.5,-23.5 + pos: 68.5,-28.5 parent: 5350 - uid: 10837 components: - type: Transform - pos: 67.5,-25.5 - parent: 5350 - - uid: 10838 - components: - - type: Transform - pos: 66.5,-25.5 - parent: 5350 - - uid: 10839 - components: - - type: Transform - pos: 65.5,-25.5 - parent: 5350 - - uid: 10840 - components: - - type: Transform - pos: 64.5,-25.5 + pos: 71.5,-25.5 parent: 5350 - uid: 10841 components: - type: Transform - pos: 63.5,-25.5 + rot: -1.5707963267948966 rad + pos: 62.5,-25.5 parent: 5350 - uid: 10842 components: - type: Transform - pos: 62.5,-25.5 + rot: -1.5707963267948966 rad + pos: 64.5,-20.5 parent: 5350 - uid: 10855 components: @@ -150814,195 +153396,201 @@ entities: - type: Transform pos: 58.5,-27.5 parent: 5350 - - uid: 10908 - components: - - type: Transform - pos: 66.5,-21.5 - parent: 5350 - - uid: 10909 + - uid: 10914 components: - type: Transform - pos: 67.5,-21.5 + pos: 70.5,-19.5 parent: 5350 - - uid: 10910 + - uid: 10915 components: - type: Transform - pos: 68.5,-21.5 + pos: 70.5,-18.5 parent: 5350 - - uid: 10911 + - uid: 10917 components: - type: Transform - pos: 69.5,-21.5 + pos: 70.5,-16.5 parent: 5350 - - uid: 10912 + - uid: 10918 components: - type: Transform - pos: 70.5,-21.5 + pos: 70.5,-15.5 parent: 5350 - - uid: 10913 + - uid: 10919 components: - type: Transform - pos: 70.5,-20.5 + pos: 70.5,-14.5 parent: 5350 - - uid: 10914 + - uid: 10921 components: - type: Transform - pos: 70.5,-19.5 + pos: 70.5,-12.5 parent: 5350 - - uid: 10915 + - uid: 10922 components: - type: Transform - pos: 70.5,-18.5 + pos: 70.5,-11.5 parent: 5350 - - uid: 10916 + - uid: 10923 components: - type: Transform - pos: 70.5,-17.5 + pos: 70.5,-10.5 parent: 5350 - - uid: 10917 + - uid: 10925 components: - type: Transform - pos: 70.5,-16.5 + pos: 70.5,-8.5 parent: 5350 - - uid: 10918 + - uid: 10927 components: - type: Transform - pos: 70.5,-15.5 + pos: 70.5,-6.5 parent: 5350 - - uid: 10919 + - uid: 10966 components: - type: Transform - pos: 70.5,-14.5 + pos: 70.5,-17.5 parent: 5350 - - uid: 10920 + - uid: 10969 components: - type: Transform - pos: 70.5,-13.5 + pos: 70.5,-20.5 parent: 5350 - - uid: 10921 + - uid: 10971 components: - type: Transform - pos: 70.5,-12.5 + pos: 69.5,-12.5 parent: 5350 - - uid: 10922 + - uid: 10989 components: - type: Transform - pos: 70.5,-11.5 + pos: 68.5,-12.5 parent: 5350 - - uid: 10923 + - uid: 11054 components: - type: Transform - pos: 70.5,-10.5 + rot: -1.5707963267948966 rad + pos: 67.5,-16.5 parent: 5350 - - uid: 10924 + - uid: 11163 components: - type: Transform - pos: 70.5,-9.5 + pos: 70.5,-13.5 parent: 5350 - - uid: 10925 + - uid: 11172 components: - type: Transform - pos: 70.5,-8.5 + rot: 1.5707963267948966 rad + pos: 67.5,-4.5 parent: 5350 - - uid: 10927 + - uid: 11173 components: - type: Transform - pos: 70.5,-6.5 + rot: -1.5707963267948966 rad + pos: 66.5,-8.5 parent: 5350 - - uid: 10928 + - uid: 11201 components: - type: Transform pos: 70.5,-5.5 parent: 5350 - - uid: 10929 - components: - - type: Transform - pos: 69.5,-5.5 - parent: 5350 - - uid: 10931 + - uid: 11202 components: - type: Transform - pos: 67.5,-5.5 + rot: -1.5707963267948966 rad + pos: 67.5,-8.5 parent: 5350 - - uid: 10932 + - uid: 11204 components: - type: Transform - pos: 66.5,-5.5 + rot: 1.5707963267948966 rad + pos: 69.5,-4.5 parent: 5350 - - uid: 10933 + - uid: 11262 components: - type: Transform - pos: 69.5,-9.5 + pos: 71.5,-28.5 parent: 5350 - - uid: 10934 + - uid: 11264 components: - type: Transform - pos: 68.5,-9.5 + pos: 69.5,-28.5 parent: 5350 - - uid: 10935 + - uid: 11268 components: - type: Transform - pos: 67.5,-9.5 + rot: -1.5707963267948966 rad + pos: 65.5,-28.5 parent: 5350 - - uid: 10936 + - uid: 11273 components: - type: Transform - pos: 66.5,-9.5 + rot: -1.5707963267948966 rad + pos: 65.5,-35.5 parent: 5350 - - uid: 10937 + - uid: 11275 components: - type: Transform - pos: 69.5,-13.5 + rot: -1.5707963267948966 rad + pos: 65.5,-36.5 parent: 5350 - - uid: 10938 + - uid: 11276 components: - type: Transform - pos: 68.5,-13.5 + pos: 64.5,-22.5 parent: 5350 - - uid: 10939 + - uid: 11277 components: - type: Transform - pos: 67.5,-13.5 + rot: -1.5707963267948966 rad + pos: 65.5,-27.5 parent: 5350 - - uid: 10940 + - uid: 11278 components: - type: Transform - pos: 66.5,-13.5 + rot: -1.5707963267948966 rad + pos: 65.5,-26.5 parent: 5350 - - uid: 10941 + - uid: 11283 components: - type: Transform - pos: 69.5,-17.5 + rot: -1.5707963267948966 rad + pos: 68.5,-22.5 parent: 5350 - - uid: 10942 + - uid: 11287 components: - type: Transform - pos: 68.5,-17.5 + pos: 68.5,-25.5 parent: 5350 - - uid: 10943 + - uid: 11299 components: - type: Transform - pos: 67.5,-17.5 + rot: 1.5707963267948966 rad + pos: 70.5,-4.5 parent: 5350 - - uid: 10944 + - uid: 11301 components: - type: Transform - pos: 66.5,-17.5 + rot: -1.5707963267948966 rad + pos: 66.5,-16.5 parent: 5350 - - uid: 11268 + - uid: 11305 components: - type: Transform - pos: 70.5,-29.5 + rot: 1.5707963267948966 rad + pos: 66.5,-4.5 parent: 5350 - - uid: 11269 + - uid: 11342 components: - type: Transform - pos: 68.5,-29.5 + rot: -1.5707963267948966 rad + pos: 68.5,-16.5 parent: 5350 - - uid: 11270 + - uid: 11346 components: - type: Transform - pos: 67.5,-29.5 + rot: -1.5707963267948966 rad + pos: 69.5,-16.5 parent: 5350 - uid: 11370 components: @@ -151124,6 +153712,102 @@ entities: - type: Transform pos: 42.5,-29.5 parent: 5350 + - uid: 11498 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 65.5,-25.5 + parent: 5350 + - uid: 11596 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 68.5,-8.5 + parent: 5350 + - uid: 11597 + components: + - type: Transform + pos: 67.5,-12.5 + parent: 5350 + - uid: 11603 + components: + - type: Transform + pos: 70.5,-9.5 + parent: 5350 + - uid: 11622 + components: + - type: Transform + pos: 69.5,-20.5 + parent: 5350 + - uid: 11627 + components: + - type: Transform + pos: 68.5,-20.5 + parent: 5350 + - uid: 11662 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 71.5,-22.5 + parent: 5350 + - uid: 11697 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 70.5,-22.5 + parent: 5350 + - uid: 11698 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 69.5,-22.5 + parent: 5350 + - uid: 11699 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 65.5,-22.5 + parent: 5350 + - uid: 11735 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 65.5,-37.5 + parent: 5350 + - uid: 11740 + components: + - type: Transform + pos: 68.5,-27.5 + parent: 5350 + - uid: 11750 + components: + - type: Transform + pos: 71.5,-26.5 + parent: 5350 + - uid: 11757 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 65.5,-34.5 + parent: 5350 + - uid: 11764 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 65.5,-33.5 + parent: 5350 + - uid: 11784 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 65.5,-32.5 + parent: 5350 + - uid: 11785 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 65.5,-31.5 + parent: 5350 - uid: 12127 components: - type: Transform @@ -155642,6 +158326,371 @@ entities: - type: Transform pos: -15.5,61.5 parent: 5350 + - uid: 27003 + components: + - type: Transform + pos: 72.5,-28.5 + parent: 5350 + - uid: 27004 + components: + - type: Transform + pos: 73.5,-28.5 + parent: 5350 + - uid: 27005 + components: + - type: Transform + pos: 74.5,-28.5 + parent: 5350 + - uid: 27008 + components: + - type: Transform + pos: 74.5,-31.5 + parent: 5350 + - uid: 27009 + components: + - type: Transform + pos: 75.5,-31.5 + parent: 5350 + - uid: 27010 + components: + - type: Transform + pos: 76.5,-31.5 + parent: 5350 + - uid: 27011 + components: + - type: Transform + pos: 77.5,-31.5 + parent: 5350 + - uid: 27022 + components: + - type: Transform + pos: 77.5,-42.5 + parent: 5350 + - uid: 27023 + components: + - type: Transform + pos: 77.5,-40.5 + parent: 5350 + - uid: 27052 + components: + - type: Transform + pos: 65.5,-39.5 + parent: 5350 + - uid: 27053 + components: + - type: Transform + pos: 65.5,-40.5 + parent: 5350 + - uid: 27054 + components: + - type: Transform + pos: 77.5,-39.5 + parent: 5350 + - uid: 27055 + components: + - type: Transform + pos: 77.5,-38.5 + parent: 5350 + - uid: 27056 + components: + - type: Transform + pos: 77.5,-37.5 + parent: 5350 + - uid: 27057 + components: + - type: Transform + pos: 77.5,-32.5 + parent: 5350 + - uid: 27058 + components: + - type: Transform + pos: 77.5,-34.5 + parent: 5350 + - uid: 27059 + components: + - type: Transform + pos: 77.5,-33.5 + parent: 5350 + - uid: 27060 + components: + - type: Transform + pos: 77.5,-35.5 + parent: 5350 + - uid: 27061 + components: + - type: Transform + pos: 77.5,-36.5 + parent: 5350 + - uid: 27065 + components: + - type: Transform + pos: 65.5,-41.5 + parent: 5350 + - uid: 27066 + components: + - type: Transform + pos: 65.5,-42.5 + parent: 5350 + - uid: 27067 + components: + - type: Transform + pos: 65.5,-43.5 + parent: 5350 + - uid: 27068 + components: + - type: Transform + pos: 66.5,-43.5 + parent: 5350 + - uid: 27072 + components: + - type: Transform + pos: 69.5,-43.5 + parent: 5350 + - uid: 27075 + components: + - type: Transform + pos: 70.5,-43.5 + parent: 5350 + - uid: 27076 + components: + - type: Transform + pos: 77.5,-41.5 + parent: 5350 + - uid: 27119 + components: + - type: Transform + pos: 70.5,-39.5 + parent: 5350 + - uid: 27120 + components: + - type: Transform + pos: 70.5,-40.5 + parent: 5350 + - uid: 27121 + components: + - type: Transform + pos: 70.5,-41.5 + parent: 5350 + - uid: 27122 + components: + - type: Transform + pos: 70.5,-42.5 + parent: 5350 + - uid: 27124 + components: + - type: Transform + pos: 76.5,-42.5 + parent: 5350 + - uid: 27140 + components: + - type: Transform + pos: 75.5,-42.5 + parent: 5350 + - uid: 27148 + components: + - type: Transform + pos: 75.5,-40.5 + parent: 5350 + - uid: 27152 + components: + - type: Transform + pos: 75.5,-39.5 + parent: 5350 + - uid: 27199 + components: + - type: Transform + pos: 71.5,-27.5 + parent: 5350 + - uid: 27200 + components: + - type: Transform + pos: 68.5,-24.5 + parent: 5350 + - uid: 27246 + components: + - type: Transform + pos: 70.5,-24.5 + parent: 5350 + - uid: 27247 + components: + - type: Transform + pos: 69.5,-24.5 + parent: 5350 + - uid: 27250 + components: + - type: Transform + pos: 71.5,-24.5 + parent: 5350 + - uid: 27270 + components: + - type: Transform + pos: 67.5,-22.5 + parent: 5350 + - uid: 27435 + components: + - type: Transform + pos: 79.5,-29.5 + parent: 5350 + - uid: 27436 + components: + - type: Transform + pos: 79.5,-30.5 + parent: 5350 + - uid: 27437 + components: + - type: Transform + pos: 79.5,-31.5 + parent: 5350 + - uid: 27438 + components: + - type: Transform + pos: 79.5,-32.5 + parent: 5350 + - uid: 27439 + components: + - type: Transform + pos: 79.5,-34.5 + parent: 5350 + - uid: 27440 + components: + - type: Transform + pos: 79.5,-35.5 + parent: 5350 + - uid: 27442 + components: + - type: Transform + pos: 79.5,-37.5 + parent: 5350 + - uid: 27443 + components: + - type: Transform + pos: 79.5,-38.5 + parent: 5350 + - uid: 27444 + components: + - type: Transform + pos: 79.5,-40.5 + parent: 5350 + - uid: 27445 + components: + - type: Transform + pos: 79.5,-41.5 + parent: 5350 + - uid: 27446 + components: + - type: Transform + pos: 79.5,-42.5 + parent: 5350 + - uid: 27447 + components: + - type: Transform + pos: 79.5,-43.5 + parent: 5350 + - uid: 27448 + components: + - type: Transform + pos: 79.5,-45.5 + parent: 5350 + - uid: 27449 + components: + - type: Transform + pos: 79.5,-46.5 + parent: 5350 + - uid: 27450 + components: + - type: Transform + pos: 77.5,-46.5 + parent: 5350 + - uid: 27451 + components: + - type: Transform + pos: 76.5,-46.5 + parent: 5350 + - uid: 27452 + components: + - type: Transform + pos: 74.5,-46.5 + parent: 5350 + - uid: 27453 + components: + - type: Transform + pos: 72.5,-46.5 + parent: 5350 + - uid: 27454 + components: + - type: Transform + pos: 73.5,-46.5 + parent: 5350 + - uid: 27455 + components: + - type: Transform + pos: 71.5,-46.5 + parent: 5350 + - uid: 27456 + components: + - type: Transform + pos: 69.5,-46.5 + parent: 5350 + - uid: 27457 + components: + - type: Transform + pos: 68.5,-46.5 + parent: 5350 + - uid: 27458 + components: + - type: Transform + pos: 66.5,-46.5 + parent: 5350 + - uid: 27459 + components: + - type: Transform + pos: 65.5,-46.5 + parent: 5350 + - uid: 27461 + components: + - type: Transform + pos: 63.5,-46.5 + parent: 5350 + - uid: 27462 + components: + - type: Transform + pos: 63.5,-45.5 + parent: 5350 + - uid: 27463 + components: + - type: Transform + pos: 63.5,-44.5 + parent: 5350 + - uid: 27464 + components: + - type: Transform + pos: 63.5,-42.5 + parent: 5350 + - uid: 27465 + components: + - type: Transform + pos: 63.5,-41.5 + parent: 5350 + - uid: 27466 + components: + - type: Transform + pos: 63.5,-40.5 + parent: 5350 + - uid: 27467 + components: + - type: Transform + pos: 63.5,-38.5 + parent: 5350 + - uid: 27468 + components: + - type: Transform + pos: 63.5,-37.5 + parent: 5350 + - uid: 27469 + components: + - type: Transform + pos: 63.5,-36.5 + parent: 5350 - proto: WallSolid entities: - uid: 57 @@ -163506,10 +166555,11 @@ entities: parent: 5350 - proto: WarningCO2 entities: - - uid: 11640 + - uid: 11151 components: - type: Transform - pos: 66.5,-17.5 + rot: -1.5707963267948966 rad + pos: 66.5,-16.5 parent: 5350 - proto: WarningN2 entities: @@ -163527,22 +166577,23 @@ entities: parent: 5350 - proto: WarningPlasma entities: - - uid: 11641 + - uid: 11114 components: - type: Transform - pos: 66.5,-13.5 + pos: 66.5,-12.5 parent: 5350 - proto: WarningWaste entities: - - uid: 11642 + - uid: 11137 components: - type: Transform - pos: 66.5,-9.5 + pos: 66.5,-4.5 parent: 5350 - - uid: 11643 + - uid: 11641 components: - type: Transform - pos: 66.5,-5.5 + rot: -1.5707963267948966 rad + pos: 66.5,-8.5 parent: 5350 - proto: WaterCooler entities: @@ -163899,6 +166950,12 @@ entities: - type: Transform pos: -31.37716,-26.50117 parent: 5350 + - uid: 27050 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 69.77701,-31.5 + parent: 5350 - proto: WelderMini entities: - uid: 3636 @@ -163998,6 +167055,11 @@ entities: - type: Transform pos: 45.5,33.5 parent: 5350 + - uid: 27086 + components: + - type: Transform + pos: 76.5,-32.5 + parent: 5350 - proto: WetFloorSign entities: - uid: 12844 @@ -164082,18 +167144,6 @@ entities: - type: Transform pos: -3.5,35.5 parent: 5350 - - uid: 11282 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 71.5,-24.5 - parent: 5350 - - uid: 11283 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 71.5,-24.5 - parent: 5350 - uid: 13571 components: - type: Transform @@ -165688,104 +168738,6 @@ entities: - type: Transform pos: 45.5,0.5 parent: 5350 - - uid: 11251 - components: - - type: Transform - pos: 68.5,-23.5 - parent: 5350 - - uid: 11252 - components: - - type: Transform - pos: 69.5,-23.5 - parent: 5350 - - uid: 11253 - components: - - type: Transform - pos: 70.5,-23.5 - parent: 5350 - - uid: 11254 - components: - - type: Transform - pos: 71.5,-23.5 - parent: 5350 - - uid: 11255 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 71.5,-25.5 - parent: 5350 - - uid: 11256 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 70.5,-25.5 - parent: 5350 - - uid: 11257 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 68.5,-25.5 - parent: 5350 - - uid: 11258 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 68.5,-25.5 - parent: 5350 - - uid: 11259 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 68.5,-26.5 - parent: 5350 - - uid: 11260 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 70.5,-26.5 - parent: 5350 - - uid: 11261 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 70.5,-25.5 - parent: 5350 - - uid: 11262 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 68.5,-27.5 - parent: 5350 - - uid: 11263 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 68.5,-27.5 - parent: 5350 - - uid: 11264 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 68.5,-28.5 - parent: 5350 - - uid: 11265 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 70.5,-27.5 - parent: 5350 - - uid: 11266 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 70.5,-27.5 - parent: 5350 - - uid: 11267 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 70.5,-28.5 - parent: 5350 - uid: 11512 components: - type: Transform @@ -169133,4 +172085,9 @@ entities: - type: Transform pos: 59.615005,1.5566483 parent: 5350 + - uid: 27117 + components: + - type: Transform + pos: 69.87581,-31.5 + parent: 5350 ... 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 093/187] 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 ee1c2c59498..740afded646 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 79634aa5d9f..a22d334c941 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 d5521f767f1..f457cfbc496 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 0ee0b6736ca..9bac538551f 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 25871134155..83b16d427bd 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 b54ba54b1a4..7d6db3e0bec 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 044df7f69e2..e22eccb7dad 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 7ec820d27b8..6d79d748049 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 3821816128f..1ddf73cc772 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 dfda557d4b199d60436db2f3acfeef74877f05b8 Mon Sep 17 00:00:00 2001 From: beck-thompson <107373427+beck-thompson@users.noreply.github.com> Date: Thu, 14 Nov 2024 19:24:27 -0800 Subject: [PATCH 094/187] Note expiry time is now relative instead of using timestamps (#33262) * Add the stuff * Loc fix * fixes * Change --- .../Administration/UI/Notes/NoteEdit.xaml | 1 + .../Administration/UI/Notes/NoteEdit.xaml.cs | 53 +++++++++++++++++-- .../en-US/administration/ui/admin-notes.ftl | 14 ++++- 3 files changed, 63 insertions(+), 5 deletions(-) diff --git a/Content.Client/Administration/UI/Notes/NoteEdit.xaml b/Content.Client/Administration/UI/Notes/NoteEdit.xaml index 506abac540c..72b2c55ce8d 100644 --- a/Content.Client/Administration/UI/Notes/NoteEdit.xaml +++ b/Content.Client/Administration/UI/Notes/NoteEdit.xaml @@ -8,6 +8,7 @@ <Label Name="ExpiryLabel" Text="{Loc admin-note-editor-expiry-label}" Visible="False" /> <HistoryLineEdit Name="ExpiryLineEdit" PlaceHolder="{Loc admin-note-editor-expiry-placeholder}" Visible="False" HorizontalExpand="True" /> + <OptionButton Name="ExpiryLengthDropdown" Visible="False" /> </BoxContainer> <BoxContainer Orientation="Horizontal" HorizontalExpand="True"> <OptionButton Name="TypeOption" HorizontalAlignment="Center" /> diff --git a/Content.Client/Administration/UI/Notes/NoteEdit.xaml.cs b/Content.Client/Administration/UI/Notes/NoteEdit.xaml.cs index 6f314f79542..a412e47396b 100644 --- a/Content.Client/Administration/UI/Notes/NoteEdit.xaml.cs +++ b/Content.Client/Administration/UI/Notes/NoteEdit.xaml.cs @@ -17,6 +17,17 @@ public sealed partial class NoteEdit : FancyWindow [Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly IClientConsoleHost _console = default!; + private enum Multipliers + { + Minutes, + Hours, + Days, + Weeks, + Months, + Years, + Centuries + } + public event Action<int, NoteType, string, NoteSeverity?, bool, DateTime?>? SubmitPressed; public NoteEdit(SharedAdminNote? note, string playerName, bool canCreate, bool canEdit) @@ -31,6 +42,20 @@ public NoteEdit(SharedAdminNote? note, string playerName, bool canCreate, bool c ResetSubmitButton(); + // It's weird to use minutes as the IDs, but it works and makes sense kind of :) + ExpiryLengthDropdown.AddItem(Loc.GetString("admin-note-button-minutes"), (int) Multipliers.Minutes); + ExpiryLengthDropdown.AddItem(Loc.GetString("admin-note-button-hours"), (int) Multipliers.Hours); + ExpiryLengthDropdown.AddItem(Loc.GetString("admin-note-button-days"), (int) Multipliers.Days); + ExpiryLengthDropdown.AddItem(Loc.GetString("admin-note-button-weeks"), (int) Multipliers.Weeks); + ExpiryLengthDropdown.AddItem(Loc.GetString("admin-note-button-months"), (int) Multipliers.Months); + ExpiryLengthDropdown.AddItem(Loc.GetString("admin-note-button-years"), (int) Multipliers.Years); + ExpiryLengthDropdown.AddItem(Loc.GetString("admin-note-button-centuries"), (int) Multipliers.Centuries); + ExpiryLengthDropdown.OnItemSelected += OnLengthChanged; + + ExpiryLengthDropdown.SelectId((int) Multipliers.Weeks); + + ExpiryLineEdit.OnTextChanged += OnTextChanged; + TypeOption.AddItem(Loc.GetString("admin-note-editor-type-note"), (int) NoteType.Note); TypeOption.AddItem(Loc.GetString("admin-note-editor-type-message"), (int) NoteType.Message); TypeOption.AddItem(Loc.GetString("admin-note-editor-type-watchlist"), (int) NoteType.Watchlist); @@ -172,8 +197,9 @@ private void UpdatePermanentCheckboxFields() { ExpiryLabel.Visible = !PermanentCheckBox.Pressed; ExpiryLineEdit.Visible = !PermanentCheckBox.Pressed; + ExpiryLengthDropdown.Visible = !PermanentCheckBox.Pressed; - ExpiryLineEdit.Text = !PermanentCheckBox.Pressed ? DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") : string.Empty; + ExpiryLineEdit.Text = !PermanentCheckBox.Pressed ? 1.ToString() : string.Empty; } private void OnSecretPressed(BaseButton.ButtonEventArgs _) @@ -187,6 +213,16 @@ private void OnSeverityChanged(OptionButton.ItemSelectedEventArgs args) SeverityOption.SelectId(args.Id); } + private void OnLengthChanged(OptionButton.ItemSelectedEventArgs args) + { + ExpiryLengthDropdown.SelectId(args.Id); + } + + private void OnTextChanged(HistoryLineEdit.LineEditEventArgs args) + { + ParseExpiryTime(); + } + private void OnSubmitButtonPressed(BaseButton.ButtonEventArgs args) { if (!ParseExpiryTime()) @@ -263,13 +299,24 @@ private bool ParseExpiryTime() return true; } - if (string.IsNullOrWhiteSpace(ExpiryLineEdit.Text) || !DateTime.TryParse(ExpiryLineEdit.Text, out var result) || DateTime.UtcNow > result) + if (string.IsNullOrWhiteSpace(ExpiryLineEdit.Text) || !uint.TryParse(ExpiryLineEdit.Text, out var inputInt)) { ExpiryLineEdit.ModulateSelfOverride = Color.Red; return false; } - ExpiryTime = result.ToUniversalTime(); + var mult = ExpiryLengthDropdown.SelectedId switch + { + (int) Multipliers.Minutes => TimeSpan.FromMinutes(1).TotalMinutes, + (int) Multipliers.Hours => TimeSpan.FromHours(1).TotalMinutes, + (int) Multipliers.Days => TimeSpan.FromDays(1).TotalMinutes, + (int) Multipliers.Weeks => TimeSpan.FromDays(7).TotalMinutes, + (int) Multipliers.Months => TimeSpan.FromDays(30).TotalMinutes, + (int) Multipliers.Years => TimeSpan.FromDays(365).TotalMinutes, + (int) Multipliers.Centuries => TimeSpan.FromDays(36525).TotalMinutes, + _ => throw new ArgumentOutOfRangeException(nameof(ExpiryLengthDropdown.SelectedId), "Multiplier out of range :(") + }; + ExpiryTime = DateTime.UtcNow.AddMinutes(inputInt * mult); ExpiryLineEdit.ModulateSelfOverride = null; return true; } diff --git a/Resources/Locale/en-US/administration/ui/admin-notes.ftl b/Resources/Locale/en-US/administration/ui/admin-notes.ftl index 03e12902576..c8da267e058 100644 --- a/Resources/Locale/en-US/administration/ui/admin-notes.ftl +++ b/Resources/Locale/en-US/administration/ui/admin-notes.ftl @@ -57,13 +57,23 @@ admin-note-editor-severity-medium = Medium admin-note-editor-severity-high = High admin-note-editor-expiry-checkbox = Permanent? admin-note-editor-expiry-checkbox-tooltip = Check this to make it expire -admin-note-editor-expiry-label = Expires on: +admin-note-editor-expiry-label = Expires in: admin-note-editor-expiry-label-params = Expires on: {$date} (in {$expiresIn}) admin-note-editor-expiry-label-expired = Expired -admin-note-editor-expiry-placeholder = Enter expiration date (yyyy-MM-dd HH:mm:ss) +admin-note-editor-expiry-placeholder = Enter expiration time (integer). admin-note-editor-submit = Submit admin-note-editor-submit-confirm = Are you sure? +# Time +admin-note-button-minutes = Minutes +admin-note-button-hours = Hours +admin-note-button-days = Days +admin-note-button-weeks = Weeks +admin-note-button-months = Months +admin-note-button-years = Years +admin-note-button-centuries = Centuries + + # Verb admin-notes-verb-text = Open Admin Notes From 606d44bcb069498b0a03897fe8f900db3e8e81ca Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Fri, 15 Nov 2024 03:25:36 +0000 Subject: [PATCH 095/187] Automatic changelog update --- Resources/Changelog/Admin.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index bf1cbddaa18..fc25d313aa7 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -605,5 +605,12 @@ Entries: id: 75 time: '2024-11-13T23:27:31.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/31751 +- author: Beck Thompson + changes: + - message: Notes now use duration instead of timestamps for note expiry times. + type: Tweak + id: 76 + time: '2024-11-15T03:24:27.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33262 Name: Admin Order: 1 From b4e0362ed47feca972e9503c639ce7e5267d91c7 Mon Sep 17 00:00:00 2001 From: Ubaser <134914314+UbaserB@users.noreply.github.com> Date: Fri, 15 Nov 2024 15:59:35 +1100 Subject: [PATCH 096/187] Update Core (#33325) add --- Resources/Maps/core.yml | 2862 ++++++++++++++++++++++----------------- 1 file changed, 1614 insertions(+), 1248 deletions(-) diff --git a/Resources/Maps/core.yml b/Resources/Maps/core.yml index 755badd7574..21fb7b71148 100644 --- a/Resources/Maps/core.yml +++ b/Resources/Maps/core.yml @@ -82,139 +82,139 @@ entities: version: 6 -1,0: ind: -1,0 - tiles: DgAAAAAADgAAAAABJAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAADgAAAAADDgAAAAABJAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAADDgAAAAABJAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAABDgAAAAACJAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAADHwAAAAADXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAHwAAAAADegAAAAADegAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAHwAAAAABegAAAAACegAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAHwAAAAACegAAAAADegAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAALgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAALgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAALgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAALgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAXQAAAAACXQAAAAADXQAAAAADbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAAAXQAAAAACfgAAAAAA + tiles: DgAAAAAADgAAAAABJAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAADgAAAAAADgAAAAACJAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAACDgAAAAACJAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAADDgAAAAACJAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAHwAAAAACXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAHwAAAAADegAAAAACegAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAHwAAAAACegAAAAAAegAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAegAAAAABegAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAALgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAALgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAALgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAALgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAXQAAAAADXQAAAAAAXQAAAAACbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAADXQAAAAACfgAAAAAA version: 6 0,-1: ind: 0,-1 - tiles: bAAAAAAAbAAAAAAAXQAAAAAAfgAAAAAATwAAAAAATwAAAAAATwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAABJAAAAAADJAAAAAACXQAAAAACXQAAAAAAaAAAAAADbAAAAAAAbAAAAAAAXQAAAAABaAAAAAABJAAAAAADJAAAAAADJAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAbAAAAAAAXQAAAAACaAAAAAABJAAAAAADJAAAAAABJAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAbAAAAAAAXQAAAAACfgAAAAAATwAAAAAATwAAAAAATwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAABXQAAAAACfgAAAAAATwAAAAAATwAAAAAATwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAOwAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAA + tiles: bAAAAAAAbAAAAAAAXQAAAAABfgAAAAAATwAAAAAATwAAAAAATwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAABJAAAAAACJAAAAAACXQAAAAAAXQAAAAADaAAAAAABbAAAAAAAbAAAAAAAXQAAAAABaAAAAAABJAAAAAADJAAAAAADJAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAbAAAAAAAXQAAAAADaAAAAAABJAAAAAABJAAAAAAAJAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAbAAAAAAAXQAAAAADfgAAAAAATwAAAAAATwAAAAAATwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADXQAAAAADXQAAAAACfgAAAAAATwAAAAAATwAAAAAATwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAOwAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAA version: 6 -1,-1: ind: -1,-1 - tiles: fgAAAAAAfgAAAAAAHwAAAAADHwAAAAAAXQAAAAACaAAAAAABXQAAAAACXQAAAAAAXQAAAAADXQAAAAABXQAAAAADXQAAAAAAXQAAAAAAfgAAAAAAXQAAAAABbAAAAAAAfgAAAAAAfgAAAAAAHwAAAAABHwAAAAAAXQAAAAACfgAAAAAAXQAAAAABXQAAAAACXQAAAAADXQAAAAAAXQAAAAADXQAAAAAAXQAAAAABaAAAAAACXQAAAAABbAAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAADXQAAAAACfgAAAAAAJAAAAAACJAAAAAABJAAAAAAAXQAAAAACJAAAAAABXQAAAAABXQAAAAAAaAAAAAAAXQAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAACHwAAAAADfgAAAAAAXQAAAAABbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAMwAAAAAAMwAAAAAAfgAAAAAAXQAAAAAAXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAegAAAAACegAAAAADegAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAABegAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAegAAAAAAegAAAAAAegAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAADgAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAACJAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: fgAAAAAAfgAAAAAAHwAAAAABHwAAAAADXQAAAAAAaAAAAAACXQAAAAAAXQAAAAAAXQAAAAACXQAAAAAAXQAAAAADXQAAAAAAXQAAAAADfgAAAAAAXQAAAAADbAAAAAAAfgAAAAAAfgAAAAAAHwAAAAADHwAAAAAAXQAAAAACfgAAAAAAXQAAAAACXQAAAAAAXQAAAAACXQAAAAACXQAAAAABXQAAAAADXQAAAAABaAAAAAADXQAAAAADbAAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAADXQAAAAABfgAAAAAAJAAAAAACJAAAAAAAJAAAAAABXQAAAAABJAAAAAACXQAAAAABXQAAAAACaAAAAAAAXQAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAABHwAAAAABfgAAAAAAXQAAAAADbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAMwAAAAAAMwAAAAAAfgAAAAAAXQAAAAABXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAegAAAAADegAAAAADegAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAADegAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAegAAAAADegAAAAACegAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAADgAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAACJAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 -1,-2: ind: -1,-2 - tiles: XQAAAAADXQAAAAACXQAAAAACXQAAAAADXQAAAAABXQAAAAADXQAAAAABaAAAAAACXQAAAAABXQAAAAAAXQAAAAADXQAAAAAAXQAAAAABXQAAAAACXQAAAAAAXQAAAAAAaAAAAAABaAAAAAABaAAAAAACaAAAAAAAaAAAAAACaAAAAAACaAAAAAADaAAAAAAAaAAAAAAAaAAAAAAATgAAAAACTgAAAAADaAAAAAAATgAAAAABTgAAAAABaAAAAAABXQAAAAACXQAAAAABXQAAAAACXQAAAAADXQAAAAADXQAAAAADXQAAAAADaAAAAAABXQAAAAAAXQAAAAABXQAAAAADXQAAAAAAXQAAAAAAXQAAAAADXQAAAAACXQAAAAABHwAAAAACfgAAAAAAHwAAAAABfgAAAAAAXQAAAAAAfgAAAAAAXQAAAAABfgAAAAAAfgAAAAAAXQAAAAADXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAACHwAAAAACfgAAAAAAbAAAAAAAfgAAAAAAXQAAAAACfgAAAAAAaAAAAAACaAAAAAACXQAAAAACXQAAAAADfgAAAAAAHwAAAAADHwAAAAADHwAAAAAAHwAAAAADHwAAAAADHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABaAAAAAABaAAAAAAAaAAAAAAAXQAAAAACXQAAAAACfgAAAAAAHwAAAAABHwAAAAAAHwAAAAACHwAAAAAAHwAAAAAAHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAADfgAAAAAAaAAAAAADaAAAAAACXQAAAAAAJAAAAAABfgAAAAAAHwAAAAACHwAAAAAAHwAAAAACaQAAAAAAaQAAAAAAaQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACfgAAAAAAaQAAAAAAaQAAAAAAaQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABHwAAAAABHwAAAAACXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAABXQAAAAABXQAAAAADXQAAAAADaQAAAAAAaQAAAAAAaQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAADHwAAAAAAXQAAAAACTgAAAAADTgAAAAABTgAAAAAAXQAAAAAAXQAAAAABTgAAAAACfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAJAAAAAACJAAAAAACXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAAAXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAADJAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAXQAAAAADJAAAAAABJAAAAAACJAAAAAAAfgAAAAAAJAAAAAAAJAAAAAACfgAAAAAAfgAAAAAAXQAAAAABXQAAAAABXQAAAAAAfgAAAAAAXQAAAAADXQAAAAABXQAAAAABXQAAAAACXQAAAAADXQAAAAAAXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABHwAAAAABXQAAAAACfgAAAAAAXQAAAAAAXQAAAAACXQAAAAAAXQAAAAADXQAAAAAAXQAAAAABXQAAAAACfgAAAAAAXQAAAAAAXQAAAAACfgAAAAAAfgAAAAAAHwAAAAABHwAAAAACXQAAAAAAaAAAAAACXQAAAAAAXQAAAAABXQAAAAAAXQAAAAAAXQAAAAABXQAAAAADXQAAAAADfgAAAAAAXQAAAAAAXQAAAAAA + tiles: XQAAAAABXQAAAAABXQAAAAABXQAAAAAAXQAAAAACXQAAAAADXQAAAAABaAAAAAABXQAAAAAAXQAAAAACXQAAAAACXQAAAAADXQAAAAAAXQAAAAACXQAAAAACXQAAAAAAaAAAAAAAaAAAAAABaAAAAAADaAAAAAADaAAAAAADaAAAAAADaAAAAAADaAAAAAACaAAAAAABaAAAAAADTgAAAAABTgAAAAABaAAAAAAATgAAAAABTgAAAAACaAAAAAACXQAAAAAAXQAAAAABXQAAAAADXQAAAAADXQAAAAABXQAAAAABXQAAAAADaAAAAAABXQAAAAADXQAAAAADXQAAAAAAXQAAAAACXQAAAAACXQAAAAACXQAAAAAAXQAAAAAAHwAAAAADfgAAAAAAHwAAAAACfgAAAAAAXQAAAAAAfgAAAAAAXQAAAAACfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAAAHwAAAAACfgAAAAAAbAAAAAAAfgAAAAAAXQAAAAACfgAAAAAAaAAAAAABaAAAAAABXQAAAAABXQAAAAAAfgAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAADHwAAAAABHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABaAAAAAABaAAAAAACaAAAAAADXQAAAAABXQAAAAABfgAAAAAAHwAAAAACHwAAAAACHwAAAAACHwAAAAABHwAAAAADHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAABfgAAAAAAaAAAAAADaAAAAAADXQAAAAACJAAAAAAAfgAAAAAAHwAAAAAAHwAAAAAAHwAAAAABaQAAAAAAaQAAAAAAaQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAfgAAAAAAaQAAAAAAaQAAAAAAaQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABHwAAAAADHwAAAAAAXQAAAAACXQAAAAACXQAAAAABXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAaQAAAAAAaQAAAAAAaQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAADHwAAAAABHwAAAAABXQAAAAADTgAAAAAATgAAAAADTgAAAAAAXQAAAAACXQAAAAABTgAAAAADfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAADJAAAAAABJAAAAAAAXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAADXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAJAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAJAAAAAADJAAAAAABJAAAAAAAXQAAAAACJAAAAAADJAAAAAACJAAAAAABfgAAAAAAJAAAAAABJAAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAACXQAAAAACfgAAAAAAXQAAAAADXQAAAAABXQAAAAACXQAAAAABXQAAAAAAXQAAAAAAXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAACXQAAAAACfgAAAAAAXQAAAAACXQAAAAADXQAAAAACXQAAAAAAXQAAAAABXQAAAAABXQAAAAABfgAAAAAAXQAAAAADXQAAAAABfgAAAAAAfgAAAAAAHwAAAAADHwAAAAADXQAAAAAAaAAAAAADXQAAAAACXQAAAAADXQAAAAADXQAAAAAAXQAAAAADXQAAAAACXQAAAAACfgAAAAAAXQAAAAADXQAAAAAB version: 6 0,-2: ind: 0,-2 - tiles: aAAAAAACaAAAAAAAXQAAAAACXQAAAAACaAAAAAADXQAAAAACXQAAAAACXQAAAAACaAAAAAAAXQAAAAACaAAAAAACXQAAAAACXQAAAAADXQAAAAADXQAAAAAAXQAAAAABTgAAAAACTgAAAAACaAAAAAADaAAAAAACaAAAAAACaAAAAAAAaAAAAAABaAAAAAAAaAAAAAADXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAACXQAAAAAAXQAAAAABaAAAAAAAXQAAAAACXQAAAAACXQAAAAAAXQAAAAAAXQAAAAAAfgAAAAAAHwAAAAADJAAAAAABJAAAAAADJAAAAAACJAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAABXQAAAAABXQAAAAADXQAAAAABfgAAAAAAHwAAAAADJAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAfgAAAAAAJAAAAAABegAAAAACfgAAAAAAHwAAAAABHwAAAAABHwAAAAAAHwAAAAACJAAAAAACfgAAAAAAHwAAAAAAJAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAAAegAAAAACegAAAAABfgAAAAAAHwAAAAADHwAAAAABHwAAAAAAHwAAAAAAHwAAAAADfgAAAAAAHwAAAAADJAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABfgAAAAAAegAAAAADegAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAJAAAAAACJAAAAAACJAAAAAACJAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADXQAAAAABaAAAAAABXQAAAAAAHwAAAAAAfgAAAAAAHwAAAAADJAAAAAAAJAAAAAACJAAAAAACJAAAAAACXQAAAAADXQAAAAACJAAAAAABfgAAAAAAJAAAAAAAaAAAAAABaAAAAAABaAAAAAAAXQAAAAACHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACfgAAAAAATgAAAAACTgAAAAAAJAAAAAADfgAAAAAAaAAAAAACaAAAAAAAaAAAAAAAaAAAAAADXQAAAAABHwAAAAABHwAAAAABHwAAAAAAHwAAAAACHwAAAAADHwAAAAAAHwAAAAADXQAAAAADXQAAAAADXQAAAAAAaAAAAAAAaAAAAAAAaAAAAAACaAAAAAABaAAAAAACXQAAAAABHwAAAAACHwAAAAAAHwAAAAABHwAAAAABXQAAAAAAXQAAAAABaAAAAAAAXQAAAAACXQAAAAADXQAAAAADfgAAAAAAaAAAAAADaAAAAAAAaAAAAAACaAAAAAADXQAAAAACHwAAAAAAHwAAAAACfgAAAAAAHwAAAAAAXQAAAAACXQAAAAAAaAAAAAABHwAAAAABHwAAAAAAHwAAAAABfgAAAAAAaAAAAAACaAAAAAABaAAAAAACaAAAAAAAXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAABaAAAAAABaAAAAAAAaAAAAAACXQAAAAADfgAAAAAAJAAAAAADJAAAAAAAJAAAAAACXQAAAAADXQAAAAACaAAAAAADXQAAAAABXQAAAAADXQAAAAADfgAAAAAAXQAAAAAAXQAAAAACXQAAAAAAXQAAAAAAXQAAAAACfgAAAAAAJAAAAAACHwAAAAABHwAAAAABXQAAAAADXQAAAAAAaAAAAAACXQAAAAACXQAAAAADXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAJAAAAAABHwAAAAAAHwAAAAADXQAAAAADXQAAAAACaAAAAAAC + tiles: aAAAAAACaAAAAAABXQAAAAAAXQAAAAAAaAAAAAABXQAAAAAAXQAAAAADXQAAAAACaAAAAAADXQAAAAADaAAAAAAAXQAAAAABXQAAAAAAXQAAAAABXQAAAAABXQAAAAABTgAAAAAATgAAAAAAaAAAAAABaAAAAAADaAAAAAAAaAAAAAABaAAAAAABaAAAAAACaAAAAAADXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADXQAAAAAAXQAAAAACXQAAAAACaAAAAAABXQAAAAABXQAAAAAAXQAAAAAAXQAAAAABXQAAAAACfgAAAAAAHwAAAAADJAAAAAACJAAAAAADJAAAAAABJAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAADXQAAAAACXQAAAAAAXQAAAAADfgAAAAAAHwAAAAAAJAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABfgAAAAAAJAAAAAAAegAAAAACfgAAAAAAHwAAAAAAHwAAAAABHwAAAAADHwAAAAADJAAAAAACfgAAAAAAHwAAAAADJAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAACegAAAAAAegAAAAAAfgAAAAAAHwAAAAACHwAAAAAAHwAAAAADHwAAAAACHwAAAAAAfgAAAAAAHwAAAAADJAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAADfgAAAAAAegAAAAABegAAAAACfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAABaAAAAAACXQAAAAABHwAAAAACfgAAAAAAHwAAAAACJAAAAAAAJAAAAAADJAAAAAADJAAAAAACXQAAAAADXQAAAAADJAAAAAADfgAAAAAAJAAAAAABaAAAAAADaAAAAAACaAAAAAABXQAAAAADHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABfgAAAAAATgAAAAABTgAAAAAAJAAAAAACfgAAAAAAaAAAAAAAaAAAAAABaAAAAAABaAAAAAACXQAAAAADHwAAAAAAHwAAAAABHwAAAAAAHwAAAAADHwAAAAADHwAAAAABHwAAAAABXQAAAAAAXQAAAAADXQAAAAADaAAAAAABaAAAAAACaAAAAAADaAAAAAACaAAAAAABXQAAAAADHwAAAAABHwAAAAAAHwAAAAABHwAAAAADXQAAAAACXQAAAAADaAAAAAAAXQAAAAADXQAAAAADXQAAAAAAfgAAAAAAaAAAAAACaAAAAAADaAAAAAADaAAAAAADXQAAAAACHwAAAAABHwAAAAABfgAAAAAAHwAAAAACXQAAAAACXQAAAAACaAAAAAABHwAAAAABHwAAAAABHwAAAAACfgAAAAAAaAAAAAABaAAAAAACaAAAAAADaAAAAAAAXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAABaAAAAAACaAAAAAABaAAAAAADXQAAAAADfgAAAAAAJAAAAAACJAAAAAACJAAAAAACXQAAAAADXQAAAAACaAAAAAAAXQAAAAABXQAAAAAAXQAAAAADfgAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAABXQAAAAADfgAAAAAAJAAAAAAAHwAAAAAAHwAAAAAAXQAAAAACXQAAAAADaAAAAAAAXQAAAAAAXQAAAAABXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAJAAAAAABHwAAAAACHwAAAAADXQAAAAABXQAAAAAAaAAAAAAB version: 6 1,-2: ind: 1,-2 - tiles: XQAAAAACXQAAAAADaAAAAAABXQAAAAACaAAAAAAAXQAAAAABfgAAAAAAHwAAAAABaAAAAAADaAAAAAABaAAAAAAAaAAAAAAAaAAAAAACHwAAAAACfgAAAAAAHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADaAAAAAADXQAAAAABfgAAAAAAHwAAAAAAaAAAAAABaAAAAAAAaAAAAAABaAAAAAADaAAAAAAAHwAAAAAAfgAAAAAAHwAAAAACJAAAAAACHwAAAAACfgAAAAAAXQAAAAADaAAAAAAAXQAAAAAAfgAAAAAAHwAAAAACaAAAAAADaAAAAAACaAAAAAACXQAAAAAAaAAAAAACHwAAAAABHwAAAAACHwAAAAACJAAAAAACHwAAAAADfgAAAAAAXQAAAAACaAAAAAAAXQAAAAADfgAAAAAAHwAAAAACaAAAAAACaAAAAAACaAAAAAADaAAAAAADaAAAAAADHwAAAAADfgAAAAAAHwAAAAADJAAAAAADHwAAAAADfgAAAAAAaAAAAAAAaAAAAAABaAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABJAAAAAACHwAAAAAAfgAAAAAAXQAAAAAAaAAAAAAAXQAAAAACJAAAAAAAXQAAAAAAXQAAAAAAXQAAAAACXQAAAAADXQAAAAACXQAAAAADXQAAAAABfgAAAAAAfgAAAAAAJAAAAAACHwAAAAABfgAAAAAAXQAAAAABaAAAAAADaAAAAAABaAAAAAADaAAAAAADaAAAAAADaAAAAAADaAAAAAABaAAAAAACaAAAAAABXQAAAAACfgAAAAAAHwAAAAAAJAAAAAABHwAAAAAAfgAAAAAAXQAAAAACXQAAAAABXQAAAAACXQAAAAABXQAAAAADXQAAAAADXQAAAAADXQAAAAABXQAAAAAAaAAAAAABXQAAAAABfgAAAAAAXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAACXQAAAAABfgAAAAAAXQAAAAAAfgAAAAAAAwAAAAAAAwAAAAAAXQAAAAABaAAAAAACXQAAAAABfgAAAAAAXQAAAAAAfgAAAAAAHwAAAAABHwAAAAAAXQAAAAABXQAAAAAAXQAAAAABfgAAAAAAXQAAAAAAfgAAAAAAAwAAAAAAAwAAAAAAXQAAAAADaAAAAAADXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABHwAAAAACXQAAAAABXQAAAAACXQAAAAACXQAAAAACXQAAAAACfgAAAAAAAwAAAAAAAwAAAAAAXQAAAAAAaAAAAAABXQAAAAADfgAAAAAAXQAAAAABfgAAAAAAHwAAAAACJAAAAAAAXQAAAAAAXQAAAAACXQAAAAACfgAAAAAAHwAAAAADfgAAAAAAAwAAAAAAAwAAAAAAXQAAAAACaAAAAAACXQAAAAAAaAAAAAADXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADaAAAAAAAaAAAAAADaAAAAAACaAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAACHwAAAAADHwAAAAACfgAAAAAAXQAAAAACXQAAAAACXQAAAAACaAAAAAACXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAABHwAAAAABHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAAAHwAAAAABHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAA + tiles: XQAAAAABXQAAAAABaAAAAAADXQAAAAADaAAAAAADXQAAAAACfgAAAAAAHwAAAAACaAAAAAAAaAAAAAAAaAAAAAABaAAAAAACaAAAAAAAHwAAAAADfgAAAAAAHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABaAAAAAAAXQAAAAACfgAAAAAAHwAAAAADaAAAAAADaAAAAAACaAAAAAACaAAAAAABaAAAAAABHwAAAAACfgAAAAAAHwAAAAACJAAAAAADHwAAAAABfgAAAAAAXQAAAAADaAAAAAAAXQAAAAAAfgAAAAAAHwAAAAAAaAAAAAACaAAAAAADaAAAAAABXQAAAAADaAAAAAABHwAAAAAAHwAAAAACHwAAAAACJAAAAAACHwAAAAAAfgAAAAAAXQAAAAABaAAAAAACXQAAAAACfgAAAAAAHwAAAAACaAAAAAACaAAAAAADaAAAAAABaAAAAAAAaAAAAAAAHwAAAAABfgAAAAAAHwAAAAADJAAAAAADHwAAAAAAfgAAAAAAaAAAAAACaAAAAAACaAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABJAAAAAADHwAAAAABfgAAAAAAXQAAAAABaAAAAAADXQAAAAABJAAAAAACXQAAAAACXQAAAAABXQAAAAACXQAAAAABXQAAAAACXQAAAAADXQAAAAACfgAAAAAAfgAAAAAAJAAAAAAAHwAAAAABfgAAAAAAXQAAAAABaAAAAAADaAAAAAADaAAAAAABaAAAAAABaAAAAAACaAAAAAAAaAAAAAACaAAAAAABaAAAAAADXQAAAAABfgAAAAAAHwAAAAABJAAAAAADHwAAAAADfgAAAAAAXQAAAAACXQAAAAACXQAAAAABXQAAAAAAXQAAAAAAXQAAAAACXQAAAAADXQAAAAACXQAAAAADaAAAAAADXQAAAAAAfgAAAAAAXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAACXQAAAAAAfgAAAAAAXQAAAAACfgAAAAAAAwAAAAAAAwAAAAAAXQAAAAADaAAAAAADXQAAAAAAfgAAAAAAXQAAAAABfgAAAAAAHwAAAAAAHwAAAAAAXQAAAAACXQAAAAABXQAAAAAAfgAAAAAAXQAAAAABfgAAAAAAAwAAAAAAAwAAAAAAXQAAAAABaAAAAAADXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAAAXQAAAAACXQAAAAACXQAAAAABXQAAAAAAXQAAAAAAfgAAAAAAAwAAAAAAAwAAAAAAXQAAAAADaAAAAAABXQAAAAADfgAAAAAAXQAAAAABfgAAAAAAHwAAAAACJAAAAAACXQAAAAABXQAAAAADXQAAAAAAfgAAAAAAHwAAAAAAfgAAAAAAAwAAAAAAAwAAAAAAXQAAAAABaAAAAAAAXQAAAAADaAAAAAACXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAaAAAAAADaAAAAAACaAAAAAABaAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAAAHwAAAAACHwAAAAAAfgAAAAAAXQAAAAAAXQAAAAABXQAAAAAAaAAAAAADXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAADHwAAAAABHwAAAAACHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAADHwAAAAACHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAA version: 6 1,-1: ind: 1,-1 - tiles: fgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAABJAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAABJAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAAA + tiles: fgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAATwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAABJAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAADJAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAAD version: 6 -2,-2: ind: -2,-2 - tiles: EgAAAAABXQAAAAACegAAAAACegAAAAADXQAAAAAAfgAAAAAAJAAAAAACXQAAAAADXQAAAAABXQAAAAAAXQAAAAABXQAAAAAAaAAAAAADXQAAAAABXQAAAAACXQAAAAADEgAAAAAAXQAAAAADegAAAAABegAAAAACXQAAAAABfgAAAAAAXQAAAAABTgAAAAACTgAAAAABaAAAAAACTgAAAAAAaAAAAAABaAAAAAADaAAAAAADaAAAAAACaAAAAAADEgAAAAACXQAAAAADegAAAAADegAAAAACXQAAAAABfgAAAAAAXQAAAAADTgAAAAADXQAAAAACXQAAAAADXQAAAAAAXQAAAAACaAAAAAADXQAAAAACXQAAAAAAXQAAAAAAEgAAAAAAXQAAAAABegAAAAABegAAAAACXQAAAAABaAAAAAAAXQAAAAADaAAAAAADXQAAAAADXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAAAEgAAAAAAXQAAAAADegAAAAACegAAAAAAXQAAAAABaAAAAAADXQAAAAACTgAAAAAAXQAAAAAAXQAAAAABaAAAAAAAHwAAAAAAHwAAAAABJgAAAAADJgAAAAACJgAAAAACEgAAAAADXQAAAAADegAAAAACegAAAAAAXQAAAAAAfgAAAAAAXQAAAAADTgAAAAACXQAAAAACXQAAAAAAaAAAAAACHwAAAAAAHwAAAAADTgAAAAACTgAAAAADTgAAAAADXQAAAAACXQAAAAAAKAAAAAAAKAAAAAAAXQAAAAACfgAAAAAAXQAAAAACaAAAAAAAXQAAAAAAXQAAAAABaAAAAAAAHwAAAAABHwAAAAADJgAAAAACJgAAAAACJgAAAAADKAAAAAABKAAAAAAAKAAAAAABKAAAAAACXQAAAAABfgAAAAAAXQAAAAACaAAAAAAAXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABaAAAAAAAXQAAAAADfgAAAAAAQAAAAAAAQAAAAAAAfgAAAAAAQAAAAAAAQAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAXQAAAAAAXQAAAAACaAAAAAACXQAAAAAAfgAAAAAAQAAAAAAAQAAAAAAAfgAAAAAAQAAAAAAAQAAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAaAAAAAAAaAAAAAABaAAAAAAAfgAAAAAAfgAAAAAAegAAAAAAfgAAAAAAegAAAAAAfgAAAAAAfgAAAAAAQwAAAAAAfgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAfgAAAAAAXQAAAAACaAAAAAABXQAAAAAAfgAAAAAAegAAAAAAegAAAAABegAAAAACegAAAAACegAAAAACfgAAAAAAQwAAAAAAfgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAfgAAAAAAXQAAAAADaAAAAAAAXQAAAAADfgAAAAAAegAAAAAAegAAAAABegAAAAABegAAAAABegAAAAACfgAAAAAAQwAAAAAAfgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAfgAAAAAAXQAAAAAAaAAAAAACXQAAAAACegAAAAACegAAAAAAegAAAAABegAAAAACegAAAAADegAAAAAAfgAAAAAAQwAAAAAAfgAAAAAAFgAAAAAAFgAAAAAAFgAAAAAAfgAAAAAAXQAAAAAAaAAAAAADXQAAAAABegAAAAACegAAAAACegAAAAACegAAAAAAegAAAAACegAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAKAAAAAABfgAAAAAAfgAAAAAAXQAAAAACaAAAAAABXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAegAAAAABfgAAAAAAfgAAAAAA + tiles: EgAAAAAAXQAAAAABegAAAAABegAAAAACXQAAAAACfgAAAAAAJAAAAAACXQAAAAACXQAAAAAAXQAAAAABXQAAAAAAXQAAAAADaAAAAAAAXQAAAAABXQAAAAADXQAAAAADEgAAAAACXQAAAAACegAAAAADegAAAAADXQAAAAABfgAAAAAAXQAAAAADTgAAAAACTgAAAAABaAAAAAACTgAAAAACaAAAAAAAaAAAAAABaAAAAAAAaAAAAAAAaAAAAAABEgAAAAABXQAAAAABegAAAAACegAAAAACXQAAAAACfgAAAAAAXQAAAAADTgAAAAADXQAAAAACXQAAAAADXQAAAAABXQAAAAAAaAAAAAACXQAAAAABXQAAAAACXQAAAAABEgAAAAAAXQAAAAAAegAAAAACegAAAAAAXQAAAAAAaAAAAAADXQAAAAAAaAAAAAACXQAAAAABXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAADEgAAAAADXQAAAAACegAAAAACegAAAAABXQAAAAACaAAAAAADXQAAAAACTgAAAAADXQAAAAABXQAAAAAAaAAAAAABHwAAAAACHwAAAAAAJgAAAAACJgAAAAACJgAAAAAAEgAAAAADXQAAAAAAegAAAAAAegAAAAAAXQAAAAABfgAAAAAAXQAAAAAATgAAAAACXQAAAAACXQAAAAACaAAAAAAAHwAAAAADHwAAAAAATgAAAAACTgAAAAAATgAAAAABXQAAAAABXQAAAAABKAAAAAABKAAAAAAAXQAAAAACfgAAAAAAXQAAAAABaAAAAAABXQAAAAACXQAAAAAAaAAAAAABHwAAAAABHwAAAAAAJgAAAAACJgAAAAADJgAAAAABKAAAAAAAKAAAAAADKAAAAAACKAAAAAAAXQAAAAADfgAAAAAAXQAAAAAAaAAAAAABXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABaAAAAAAAXQAAAAAAfgAAAAAAQAAAAAAAQAAAAAAAfgAAAAAAQAAAAAAAQAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAXQAAAAABXQAAAAADaAAAAAACXQAAAAABfgAAAAAAQAAAAAAAQAAAAAAAfgAAAAAAQAAAAAAAQAAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAaAAAAAACaAAAAAAAaAAAAAADfgAAAAAAfgAAAAAAegAAAAADfgAAAAAAegAAAAADfgAAAAAAfgAAAAAAQwAAAAAAfgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAfgAAAAAAXQAAAAAAaAAAAAADXQAAAAADfgAAAAAAegAAAAABegAAAAAAegAAAAABegAAAAABegAAAAABfgAAAAAAQwAAAAAAfgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAfgAAAAAAXQAAAAADaAAAAAABXQAAAAADfgAAAAAAegAAAAACegAAAAACegAAAAABegAAAAADegAAAAAAfgAAAAAAQwAAAAAAfgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAfgAAAAAAXQAAAAABaAAAAAABXQAAAAAAegAAAAACegAAAAABegAAAAACegAAAAADegAAAAADegAAAAACfgAAAAAAQwAAAAAAfgAAAAAAFgAAAAAAFgAAAAAAFgAAAAAAfgAAAAAAXQAAAAACaAAAAAAAXQAAAAACegAAAAACegAAAAADegAAAAABegAAAAADegAAAAACegAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAKAAAAAABfgAAAAAAfgAAAAAAXQAAAAABaAAAAAAAXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAegAAAAACfgAAAAAAfgAAAAAA version: 6 -2,-1: ind: -2,-1 - tiles: egAAAAADegAAAAADegAAAAADegAAAAAAegAAAAAAaAAAAAAAXQAAAAACaAAAAAAAXQAAAAACfgAAAAAAegAAAAABegAAAAADegAAAAABewAAAAACewAAAAADfgAAAAAATgAAAAADTgAAAAADKAAAAAACTgAAAAADTgAAAAAAaAAAAAAAXQAAAAAAaAAAAAACXQAAAAABfgAAAAAAegAAAAABegAAAAAAegAAAAADewAAAAABewAAAAADbAAAAAAATgAAAAACTgAAAAAAKAAAAAABTgAAAAAATgAAAAAAaAAAAAAAXQAAAAAAaAAAAAADXQAAAAACfgAAAAAAegAAAAADegAAAAADegAAAAABewAAAAACewAAAAAAfgAAAAAAegAAAAACegAAAAAAegAAAAADegAAAAAAegAAAAAAaAAAAAAAXQAAAAACaAAAAAADXQAAAAAAfgAAAAAAegAAAAABegAAAAABegAAAAADewAAAAACewAAAAADfgAAAAAAKAAAAAAAfgAAAAAAfgAAAAAAKAAAAAADfgAAAAAAfgAAAAAAaAAAAAACaAAAAAACaAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABfgAAAAAAfgAAAAAAaAAAAAAAfgAAAAAAewAAAAAAewAAAAADewAAAAADfgAAAAAAXQAAAAADaAAAAAAAXQAAAAADXQAAAAACfgAAAAAAHwAAAAABHwAAAAADHwAAAAAAQAAAAAAAfgAAAAAAaAAAAAAAfgAAAAAAKAAAAAAAKAAAAAAAKAAAAAABfgAAAAAAXQAAAAACaAAAAAADaAAAAAABXQAAAAADfgAAAAAAHwAAAAACHwAAAAAAHwAAAAAAQAAAAAAAQAAAAAAAXQAAAAAAfgAAAAAAKAAAAAACKAAAAAABKAAAAAABfgAAAAAAXQAAAAADXQAAAAABaAAAAAAAXQAAAAACfgAAAAAAHwAAAAABHwAAAAAAHwAAAAAAQAAAAAAAQAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAABaAAAAAACaAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAaAAAAAACaAAAAAACaAAAAAAAaAAAAAADaAAAAAACbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAABaAAAAAADaAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADXQAAAAABfgAAAAAAJAAAAAABXwAAAAACXwAAAAADXwAAAAAAXQAAAAADXQAAAAABXQAAAAABaAAAAAACegAAAAADegAAAAAAegAAAAAAegAAAAADegAAAAABXQAAAAADXQAAAAADfgAAAAAAHwAAAAACHwAAAAABHwAAAAADHwAAAAAAXQAAAAABXQAAAAAAXQAAAAACaAAAAAABegAAAAADegAAAAAAegAAAAAAegAAAAADegAAAAACXQAAAAABXQAAAAACfgAAAAAAHwAAAAABHwAAAAAAHwAAAAACHwAAAAAAXQAAAAAAXQAAAAACXQAAAAABaAAAAAAAegAAAAACegAAAAADegAAAAACegAAAAAAegAAAAADfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAADHwAAAAACHwAAAAAAXQAAAAABXQAAAAADXQAAAAACaAAAAAABegAAAAAAegAAAAADegAAAAAAegAAAAABfgAAAAAAXQAAAAADXQAAAAABXQAAAAAAXQAAAAADXQAAAAADXQAAAAAAXQAAAAADXQAAAAAAXQAAAAABXQAAAAACaAAAAAADegAAAAAAegAAAAADegAAAAACegAAAAAAegAAAAAB + tiles: egAAAAACegAAAAADegAAAAADegAAAAACegAAAAAAaAAAAAADXQAAAAABaAAAAAAAXQAAAAAAfgAAAAAAegAAAAABegAAAAACegAAAAACewAAAAAAewAAAAAAfgAAAAAATgAAAAABTgAAAAABKAAAAAADTgAAAAACTgAAAAABaAAAAAABXQAAAAACaAAAAAADXQAAAAADfgAAAAAAegAAAAACegAAAAADegAAAAABewAAAAADewAAAAAAbAAAAAAATgAAAAABTgAAAAABKAAAAAAATgAAAAADTgAAAAACaAAAAAAAXQAAAAADaAAAAAAAXQAAAAACfgAAAAAAegAAAAABegAAAAADegAAAAADewAAAAABewAAAAAAfgAAAAAAegAAAAAAegAAAAADegAAAAADegAAAAABegAAAAAAaAAAAAABXQAAAAAAaAAAAAABXQAAAAABfgAAAAAAegAAAAADegAAAAABegAAAAABewAAAAABewAAAAADfgAAAAAAKAAAAAADfgAAAAAAfgAAAAAAKAAAAAACfgAAAAAAfgAAAAAAaAAAAAACaAAAAAADaAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABfgAAAAAAfgAAAAAAaAAAAAADfgAAAAAAewAAAAAAewAAAAACewAAAAADfgAAAAAAXQAAAAABaAAAAAAAXQAAAAABXQAAAAACfgAAAAAAHwAAAAABHwAAAAACHwAAAAACQAAAAAAAfgAAAAAAaAAAAAACfgAAAAAAKAAAAAABKAAAAAACKAAAAAADfgAAAAAAXQAAAAAAaAAAAAADaAAAAAAAXQAAAAACfgAAAAAAHwAAAAAAHwAAAAADHwAAAAABQAAAAAAAQAAAAAAAXQAAAAAAfgAAAAAAKAAAAAAAKAAAAAABKAAAAAAAfgAAAAAAXQAAAAACXQAAAAAAaAAAAAAAXQAAAAACfgAAAAAAHwAAAAACHwAAAAACHwAAAAADQAAAAAAAQAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAACaAAAAAADaAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAaAAAAAACaAAAAAABaAAAAAAAaAAAAAADaAAAAAACbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAACaAAAAAACaAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXwAAAAAAXwAAAAABJAAAAAADXwAAAAABXwAAAAABXwAAAAABXwAAAAACXQAAAAABXQAAAAADXQAAAAABaAAAAAAAegAAAAABegAAAAACegAAAAADegAAAAABegAAAAABHwAAAAABHwAAAAADXwAAAAABHwAAAAAAHwAAAAACHwAAAAACHwAAAAACXQAAAAAAXQAAAAADXQAAAAACaAAAAAAAegAAAAADegAAAAADegAAAAACegAAAAABegAAAAADHwAAAAACHwAAAAACXwAAAAABHwAAAAAAHwAAAAADHwAAAAABHwAAAAAAXQAAAAABXQAAAAABXQAAAAABaAAAAAADegAAAAACegAAAAADegAAAAAAegAAAAAAegAAAAADHwAAAAAAHwAAAAACXwAAAAABHwAAAAACHwAAAAADHwAAAAABHwAAAAAAXQAAAAADXQAAAAACXQAAAAAAaAAAAAADegAAAAAAegAAAAABegAAAAADegAAAAACfgAAAAAAXQAAAAADXQAAAAABXQAAAAACXQAAAAACXQAAAAABXQAAAAABXQAAAAABXQAAAAADXQAAAAAAXQAAAAADaAAAAAADegAAAAACegAAAAACegAAAAACegAAAAABegAAAAAD version: 6 1,0: ind: 1,0 - tiles: fgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAADHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAACaAAAAAACaAAAAAADaAAAAAABaAAAAAABAwAAAAAAAwAAAAAAAwAAAAAAfgAAAAAAXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAACXQAAAAACXQAAAAACXQAAAAACXQAAAAAAXQAAAAACXQAAAAABXQAAAAACXQAAAAAAaAAAAAAAXQAAAAADXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAATgAAAAAATgAAAAADaAAAAAACaAAAAAADbQAAAAAAbQAAAAAAbQAAAAAAaAAAAAABaAAAAAADaAAAAAAAaAAAAAAAaAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAATgAAAAADXQAAAAAAXQAAAAACXQAAAAADJAAAAAACJAAAAAAAJAAAAAABXQAAAAADXQAAAAACaAAAAAAAXQAAAAACXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABaAAAAAABXQAAAAAAfgAAAAAAfgAAAAAAaAAAAAADaAAAAAADaAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAABaAAAAAACaAAAAAAAfgAAAAAAJAAAAAACJAAAAAABJAAAAAACXQAAAAAAXQAAAAADXQAAAAACfgAAAAAAXQAAAAABXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADaAAAAAADXQAAAAABfgAAAAAAJAAAAAACJAAAAAADJAAAAAAAXQAAAAABXQAAAAACXQAAAAADXQAAAAADXQAAAAACXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABaAAAAAADXQAAAAABfgAAAAAAJAAAAAACJAAAAAADJAAAAAABXQAAAAADXQAAAAAAXQAAAAABfgAAAAAAXQAAAAABXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABaAAAAAAAXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABaAAAAAAAXQAAAAACXQAAAAAAXQAAAAACXQAAAAADXQAAAAABXQAAAAAAXQAAAAADXQAAAAABfgAAAAAAXQAAAAABXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACaAAAAAAAXQAAAAADaAAAAAABaAAAAAAAfgAAAAAAaAAAAAACaAAAAAADXQAAAAADXQAAAAACfgAAAAAAXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABaAAAAAACXQAAAAAAaAAAAAABaAAAAAACHQAAAAAAaAAAAAACaAAAAAAAXQAAAAABXQAAAAABfgAAAAAAXQAAAAACXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAaAAAAAAAXQAAAAADaAAAAAAAaAAAAAACXQAAAAAAaAAAAAADaAAAAAABXQAAAAADXQAAAAADfgAAAAAAXQAAAAABXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAaAAAAAACXQAAAAADaAAAAAADaAAAAAACXQAAAAABaAAAAAAAaAAAAAACXQAAAAACXQAAAAAAfgAAAAAAXQAAAAAAXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACaAAAAAADXQAAAAAAaAAAAAABaAAAAAADfgAAAAAAaAAAAAACaAAAAAADXQAAAAABXQAAAAABfgAAAAAAXQAAAAADXQAAAAAD + tiles: fgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAAAaAAAAAADaAAAAAAAaAAAAAADaAAAAAADAwAAAAAAAwAAAAAAAwAAAAAAfgAAAAAAXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAADXQAAAAACXQAAAAABXQAAAAADXQAAAAABXQAAAAABXQAAAAADXQAAAAAAXQAAAAABaAAAAAACXQAAAAABXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADTgAAAAADTgAAAAABaAAAAAAAaAAAAAABbQAAAAAAbQAAAAAAbQAAAAAAaAAAAAADaAAAAAACaAAAAAABaAAAAAADaAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACTgAAAAACXQAAAAAAXQAAAAAAXQAAAAADJAAAAAACJAAAAAACJAAAAAADXQAAAAABXQAAAAADaAAAAAADXQAAAAACXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADaAAAAAACXQAAAAADfgAAAAAAfgAAAAAAaAAAAAACaAAAAAADaAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAAAaAAAAAABaAAAAAACfgAAAAAAJAAAAAABJAAAAAACJAAAAAABXQAAAAAAXQAAAAACXQAAAAAAfgAAAAAAXQAAAAACXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACaAAAAAAAXQAAAAACfgAAAAAAJAAAAAABJAAAAAABJAAAAAACXQAAAAAAXQAAAAAAXQAAAAACXQAAAAAAXQAAAAADXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACaAAAAAAAXQAAAAACfgAAAAAAJAAAAAABJAAAAAACJAAAAAACXQAAAAACXQAAAAABXQAAAAADfgAAAAAAXQAAAAAAXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADaAAAAAADXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABaAAAAAADXQAAAAADXQAAAAABXQAAAAACXQAAAAAAXQAAAAACXQAAAAABXQAAAAAAXQAAAAADfgAAAAAAXQAAAAACXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAaAAAAAAAXQAAAAADaAAAAAADaAAAAAACfgAAAAAAaAAAAAABaAAAAAABXQAAAAACXQAAAAABfgAAAAAAXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABaAAAAAADXQAAAAACaAAAAAACaAAAAAAAHQAAAAABaAAAAAAAaAAAAAABXQAAAAACXQAAAAAAfgAAAAAAXQAAAAAAXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADaAAAAAACXQAAAAAAaAAAAAACaAAAAAACXQAAAAACaAAAAAADaAAAAAABXQAAAAADXQAAAAACfgAAAAAAXQAAAAABXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACaAAAAAACXQAAAAABaAAAAAABaAAAAAAAXQAAAAACaAAAAAACaAAAAAABXQAAAAADXQAAAAABfgAAAAAAXQAAAAADXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAaAAAAAABXQAAAAADaAAAAAAAaAAAAAACfgAAAAAAaAAAAAACaAAAAAACXQAAAAACXQAAAAAAfgAAAAAAXQAAAAADXQAAAAAC version: 6 2,-2: ind: 2,-2 - tiles: HwAAAAACHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAADHwAAAAACfgAAAAAAHwAAAAADJAAAAAAAJAAAAAABBAAAAAAAHwAAAAACegAAAAACegAAAAACegAAAAAAHwAAAAACfgAAAAAALgAAAAAAfgAAAAAAHwAAAAABHwAAAAADHwAAAAAAJAAAAAAAHwAAAAAAHwAAAAADHwAAAAADJAAAAAADHwAAAAACegAAAAADegAAAAAAegAAAAABHwAAAAABJAAAAAACLgAAAAAAfgAAAAAAHwAAAAABHwAAAAABHwAAAAACfgAAAAAAJAAAAAAAJAAAAAACJAAAAAABBAAAAAAAHwAAAAADegAAAAABegAAAAADegAAAAADHwAAAAADfgAAAAAALgAAAAAAfgAAAAAAHwAAAAABHwAAAAABHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAADegAAAAABegAAAAADegAAAAADHwAAAAABfgAAAAAALgAAAAAAfgAAAAAAHwAAAAABHwAAAAADHwAAAAADfgAAAAAAegAAAAAAegAAAAAAegAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAABHwAAAAADXQAAAAADegAAAAABegAAAAACegAAAAABfgAAAAAAHwAAAAAAHwAAAAABHwAAAAABXQAAAAABXQAAAAABegAAAAABJAAAAAACfgAAAAAAHwAAAAACXQAAAAADXQAAAAADXQAAAAAAegAAAAADegAAAAADegAAAAAAHwAAAAAAHwAAAAAAHwAAAAABHwAAAAABXQAAAAABXQAAAAAAXQAAAAAAXQAAAAACfgAAAAAAXQAAAAADXQAAAAAAXQAAAAADXQAAAAACfgAAAAAAJAAAAAACfgAAAAAAfgAAAAAAHwAAAAABHwAAAAABHwAAAAADXQAAAAAAXQAAAAADXQAAAAADXQAAAAADfgAAAAAAXQAAAAABXQAAAAADXQAAAAADfgAAAAAALgAAAAAALgAAAAAALgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAABXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAABXQAAAAABXQAAAAADXQAAAAADXQAAAAADXQAAAAAAfgAAAAAAXQAAAAAAXQAAAAADXQAAAAACXQAAAAABXQAAAAADXQAAAAACXQAAAAABaAAAAAACXQAAAAADXQAAAAADXQAAAAABXQAAAAADXQAAAAAAXQAAAAACXQAAAAACaAAAAAADXQAAAAADTgAAAAACTgAAAAAAaAAAAAABTgAAAAAATgAAAAACaAAAAAACaAAAAAACTgAAAAAAaAAAAAABTgAAAAABTgAAAAAATgAAAAACaAAAAAADTgAAAAACaAAAAAACaAAAAAACXQAAAAACXQAAAAACXQAAAAADXQAAAAACXQAAAAACXQAAAAADaAAAAAACXQAAAAADXQAAAAACXQAAAAACaAAAAAADXQAAAAADXQAAAAADXQAAAAADaAAAAAADXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADaAAAAAAAXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAABXQAAAAADXQAAAAACfgAAAAAAXQAAAAABaAAAAAAAXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAA + tiles: HwAAAAACHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAADHwAAAAAAHwAAAAACfgAAAAAAHwAAAAABJAAAAAADJAAAAAADBAAAAAAAHwAAAAABegAAAAABegAAAAABegAAAAACHwAAAAABfgAAAAAALgAAAAAAfgAAAAAAHwAAAAACHwAAAAACHwAAAAADJAAAAAADHwAAAAAAHwAAAAABHwAAAAACJAAAAAACHwAAAAABegAAAAADegAAAAAAegAAAAABHwAAAAADJAAAAAABLgAAAAAAfgAAAAAAHwAAAAACHwAAAAACHwAAAAADfgAAAAAAJAAAAAACJAAAAAACJAAAAAABBAAAAAAAHwAAAAADegAAAAADegAAAAAAegAAAAABHwAAAAACfgAAAAAALgAAAAAAfgAAAAAAHwAAAAADHwAAAAABHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAegAAAAADegAAAAABegAAAAADHwAAAAADfgAAAAAALgAAAAAAfgAAAAAAHwAAAAADHwAAAAADHwAAAAABfgAAAAAAegAAAAAAegAAAAABegAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAAAHwAAAAABXQAAAAACegAAAAABegAAAAAAegAAAAADfgAAAAAAHwAAAAABHwAAAAADHwAAAAABXQAAAAAAXQAAAAADegAAAAACJAAAAAAAfgAAAAAAHwAAAAACXQAAAAADXQAAAAACXQAAAAADegAAAAABegAAAAABegAAAAACHwAAAAABHwAAAAADHwAAAAABHwAAAAABXQAAAAACXQAAAAAAXQAAAAAAXQAAAAACfgAAAAAAXQAAAAABXQAAAAACXQAAAAADXQAAAAADfgAAAAAAJAAAAAACfgAAAAAAfgAAAAAAHwAAAAADHwAAAAADHwAAAAACXQAAAAACXQAAAAACXQAAAAACXQAAAAABfgAAAAAAXQAAAAADXQAAAAACXQAAAAABfgAAAAAALgAAAAAALgAAAAAALgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAADXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAACXQAAAAACXQAAAAAAXQAAAAAAXQAAAAACXQAAAAACfgAAAAAAXQAAAAACXQAAAAADXQAAAAACXQAAAAACXQAAAAAAXQAAAAAAXQAAAAADaAAAAAACXQAAAAABXQAAAAACXQAAAAAAXQAAAAACXQAAAAACXQAAAAABXQAAAAABaAAAAAACXQAAAAABTgAAAAADTgAAAAABaAAAAAAATgAAAAAATgAAAAABaAAAAAABaAAAAAABTgAAAAAAaAAAAAADTgAAAAACTgAAAAAATgAAAAAAaAAAAAACTgAAAAAAaAAAAAABaAAAAAAAXQAAAAABXQAAAAACXQAAAAAAXQAAAAACXQAAAAADXQAAAAABaAAAAAAAXQAAAAADXQAAAAACXQAAAAACaAAAAAACXQAAAAAAXQAAAAAAXQAAAAADaAAAAAAAXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADaAAAAAACXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAACXQAAAAABXQAAAAACfgAAAAAAXQAAAAADaAAAAAAAXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAA version: 6 2,-1: ind: 2,-1 - tiles: fQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAADXQAAAAACXQAAAAADXQAAAAACXQAAAAAAaAAAAAABXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAQgAAAAAAQgAAAAAAQgAAAAAAfgAAAAAAXQAAAAACXQAAAAACXQAAAAAAfgAAAAAAXQAAAAADaAAAAAADXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAAAaAAAAAAAaAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAAAaAAAAAACaAAAAAACaAAAAAADaAAAAAABbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABaAAAAAADXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAaAAAAAABXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAaAAAAAADXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACaAAAAAADXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADaAAAAAAAXQAAAAAAfgAAAAAAdQAAAAAAdQAAAAADfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADaAAAAAACXQAAAAAAfgAAAAAAdQAAAAACdQAAAAACcAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAaAAAAAABXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADXQAAAAABXQAAAAAAXQAAAAAAfgAAAAAAXQAAAAACaAAAAAACXQAAAAABfgAAAAAAdQAAAAACdQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAACXQAAAAADXQAAAAACXQAAAAAAXQAAAAAAaAAAAAADXQAAAAABfgAAAAAAdQAAAAAAdQAAAAACcAAAAAACJAAAAAACJAAAAAABJAAAAAADfgAAAAAAJQAAAAAAJQAAAAAAJQAAAAAAJQAAAAAAfgAAAAAAXQAAAAAATgAAAAADXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAABJAAAAAADJAAAAAABfgAAAAAAJQAAAAAAJQAAAAAAJQAAAAAAJQAAAAAAfgAAAAAAXQAAAAABTgAAAAACXQAAAAADfgAAAAAAdQAAAAAAdQAAAAABfgAAAAAAHwAAAAAAHwAAAAABHwAAAAADfgAAAAAAaAAAAAAAaAAAAAADaAAAAAAAaAAAAAABfgAAAAAAXQAAAAACaAAAAAAAXQAAAAABfgAAAAAAdQAAAAABdQAAAAADcAAAAAAC + tiles: fQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAADXQAAAAABXQAAAAADXQAAAAACXQAAAAADaAAAAAACXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAQgAAAAAAQgAAAAAAQgAAAAAAfgAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAfgAAAAAAXQAAAAAAaAAAAAACXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAADaAAAAAAAaAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAAAaAAAAAAAaAAAAAADaAAAAAADaAAAAAADbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADaAAAAAADXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAaAAAAAADXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAaAAAAAADXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAaAAAAAACXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACaAAAAAADXQAAAAADfgAAAAAAdQAAAAACdQAAAAACfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACaAAAAAADXQAAAAACfgAAAAAAdQAAAAACdQAAAAABcAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADaAAAAAACXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAABXQAAAAABXQAAAAACfgAAAAAAXQAAAAADaAAAAAADXQAAAAABfgAAAAAAdQAAAAAAdQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAADXQAAAAAAXQAAAAADXQAAAAACXQAAAAAAaAAAAAAAXQAAAAACfgAAAAAAdQAAAAACdQAAAAACcAAAAAABJAAAAAADJAAAAAAAJAAAAAAAfgAAAAAAJQAAAAAAJQAAAAAAJQAAAAAAJQAAAAAAfgAAAAAAXQAAAAABTgAAAAACXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAJAAAAAADJAAAAAAAfgAAAAAAJQAAAAAAJQAAAAAAJQAAAAAAJQAAAAAAfgAAAAAAXQAAAAADTgAAAAABXQAAAAACfgAAAAAAdQAAAAAAdQAAAAAAfgAAAAAAHwAAAAACHwAAAAACHwAAAAACfgAAAAAAaAAAAAABaAAAAAABaAAAAAABaAAAAAABfgAAAAAAXQAAAAACaAAAAAADXQAAAAAAfgAAAAAAdQAAAAADdQAAAAADcAAAAAAA version: 6 -2,0: ind: -2,0 - tiles: aAAAAAACaAAAAAAAaAAAAAABXQAAAAACXQAAAAACXQAAAAACXQAAAAABXQAAAAABXQAAAAACXQAAAAACaAAAAAAAegAAAAABegAAAAABegAAAAACegAAAAABegAAAAAAaAAAAAADaAAAAAACXwAAAAAAXQAAAAADXQAAAAABXQAAAAADXQAAAAACXQAAAAABXQAAAAACXQAAAAACaAAAAAABegAAAAACegAAAAACegAAAAABegAAAAACegAAAAABaAAAAAACaAAAAAACXwAAAAABXQAAAAACXQAAAAACXQAAAAADXQAAAAABXQAAAAADXQAAAAABXQAAAAAAaAAAAAADegAAAAABegAAAAABegAAAAABegAAAAACegAAAAAAaAAAAAABaAAAAAABaAAAAAAAXQAAAAAAXQAAAAAAXQAAAAACXQAAAAAAXQAAAAADXQAAAAACXQAAAAABaAAAAAACegAAAAACegAAAAAAegAAAAADegAAAAABegAAAAADewAAAAACewAAAAAAXQAAAAACXQAAAAAAXQAAAAADXQAAAAAAXQAAAAACXQAAAAADAwAAAAAAegAAAAADegAAAAACegAAAAADegAAAAABXQAAAAABXQAAAAACXQAAAAACHwAAAAABewAAAAACAwAAAAAAAwAAAAAAAwAAAAAAXQAAAAAAXQAAAAABXQAAAAADAwAAAAAAegAAAAAAHwAAAAADHwAAAAAAHwAAAAAAfgAAAAAAJAAAAAACHwAAAAADHwAAAAAAewAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAXQAAAAABXQAAAAACXQAAAAADAwAAAAAAegAAAAAAJAAAAAACJAAAAAACJAAAAAABfgAAAAAAJAAAAAABHwAAAAACHwAAAAAAewAAAAACAwAAAAAAAwAAAAAAAwAAAAAAXQAAAAADXQAAAAABXQAAAAAAAwAAAAAAegAAAAACJAAAAAADJAAAAAABJAAAAAABfgAAAAAAJAAAAAACHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADaAAAAAADaAAAAAABaAAAAAABaAAAAAADaAAAAAAAaAAAAAABaAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAXQAAAAACXQAAAAABaAAAAAACaAAAAAADaAAAAAAAaAAAAAADaAAAAAADaAAAAAABaAAAAAACaAAAAAACbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAACaAAAAAAAaAAAAAACfgAAAAAAfgAAAAAAeQAAAAADeQAAAAACJAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACaAAAAAADaAAAAAABXQAAAAABXQAAAAADXQAAAAADaAAAAAACXQAAAAAAeQAAAAACeQAAAAAAeQAAAAACeQAAAAABeQAAAAABeQAAAAABLgAAAAAALgAAAAAAAQAAAAAAaAAAAAAAaAAAAAACAQAAAAACfgAAAAAAXQAAAAAAaAAAAAADXQAAAAABfgAAAAAAJAAAAAACeQAAAAABeQAAAAAAeQAAAAAAeQAAAAABfgAAAAAALgAAAAAAPAAAAAAAPAAAAAAAPAAAAAAAAQAAAAAAXQAAAAAAXQAAAAADaAAAAAACXQAAAAABXQAAAAADYAAAAAADYAAAAAABYAAAAAADYAAAAAACYAAAAAADfgAAAAAALgAAAAAAXQAAAAABXQAAAAAAPAAAAAAAAQAAAAADXQAAAAADXQAAAAAAaAAAAAABXQAAAAACXQAAAAAAYAAAAAADYAAAAAACYAAAAAADYAAAAAADYAAAAAABfgAAAAAALgAAAAAAPAAAAAAAPAAAAAAAPAAAAAAAJAAAAAADfgAAAAAAXQAAAAAAaAAAAAACXQAAAAACfgAAAAAAYAAAAAACYAAAAAACYAAAAAADYAAAAAABYAAAAAABfgAAAAAAfgAAAAAA + tiles: aAAAAAADaAAAAAACaAAAAAADXQAAAAABXQAAAAADXQAAAAAAXQAAAAAAXQAAAAACXQAAAAADXQAAAAACaAAAAAADegAAAAABegAAAAACegAAAAACegAAAAAAegAAAAADaAAAAAAAaAAAAAAAXwAAAAABXQAAAAAAXQAAAAACXQAAAAABXQAAAAADXQAAAAABXQAAAAABXQAAAAAAaAAAAAACegAAAAAAegAAAAABegAAAAABegAAAAADegAAAAABaAAAAAAAaAAAAAAAXwAAAAAAXQAAAAAAXQAAAAABXQAAAAABXQAAAAADXQAAAAACXQAAAAACXQAAAAACaAAAAAAAegAAAAABegAAAAADegAAAAADegAAAAABegAAAAACaAAAAAABaAAAAAADaAAAAAAAXQAAAAADXQAAAAADXQAAAAACXQAAAAADXQAAAAABXQAAAAACXQAAAAACaAAAAAAAegAAAAABegAAAAABegAAAAABegAAAAAAegAAAAADewAAAAACewAAAAABXQAAAAADXQAAAAAAXQAAAAADXQAAAAACXQAAAAACXQAAAAABAwAAAAAAegAAAAACegAAAAACegAAAAADegAAAAAAXQAAAAABXQAAAAAAXQAAAAABHwAAAAAAewAAAAADAwAAAAAAAwAAAAAAAwAAAAAAXQAAAAABXQAAAAABXQAAAAAAAwAAAAAAegAAAAADHwAAAAABHwAAAAAAHwAAAAABfgAAAAAAJAAAAAACHwAAAAACHwAAAAAAewAAAAADAwAAAAAAAwAAAAAAAwAAAAAAXQAAAAACXQAAAAAAXQAAAAACAwAAAAAAegAAAAACJAAAAAACJAAAAAAAJAAAAAACfgAAAAAAJAAAAAADHwAAAAACHwAAAAAAewAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAXQAAAAADXQAAAAADXQAAAAAAAwAAAAAAegAAAAADJAAAAAAAJAAAAAADJAAAAAADfgAAAAAAJAAAAAABHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACaAAAAAACaAAAAAABaAAAAAABaAAAAAABaAAAAAADaAAAAAAAaAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAXQAAAAAAXQAAAAADaAAAAAACaAAAAAAAaAAAAAACaAAAAAADaAAAAAACaAAAAAACaAAAAAADaAAAAAADbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAADaAAAAAACaAAAAAABfgAAAAAAfgAAAAAAeQAAAAADeQAAAAAAJAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABaAAAAAABaAAAAAAAXQAAAAACXQAAAAABXQAAAAABaAAAAAACXQAAAAAAeQAAAAADeQAAAAAAeQAAAAABeQAAAAABeQAAAAADeQAAAAABLgAAAAAALgAAAAAAAQAAAAADaAAAAAACaAAAAAAAAQAAAAABfgAAAAAAXQAAAAABaAAAAAADXQAAAAACfgAAAAAAJAAAAAABeQAAAAABeQAAAAAAeQAAAAABeQAAAAACfgAAAAAALgAAAAAAPAAAAAAAPAAAAAAAPAAAAAAAAQAAAAACXQAAAAABXQAAAAAAaAAAAAADXQAAAAAAXQAAAAABYAAAAAABYAAAAAAAYAAAAAABYAAAAAABYAAAAAACfgAAAAAALgAAAAAAXQAAAAADXQAAAAABPAAAAAAAAQAAAAAAXQAAAAADXQAAAAACaAAAAAABXQAAAAAAXQAAAAABYAAAAAADYAAAAAAAYAAAAAAAYAAAAAAAYAAAAAADfgAAAAAALgAAAAAAPAAAAAAAPAAAAAAAPAAAAAAAJAAAAAAAfgAAAAAAXQAAAAADaAAAAAACXQAAAAADfgAAAAAAYAAAAAADYAAAAAAAYAAAAAACYAAAAAAAYAAAAAACfgAAAAAAfgAAAAAA version: 6 1,-3: ind: 1,-3 - tiles: bQAAAAAAfgAAAAAAJAAAAAACJAAAAAADfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbQAAAAAAJAAAAAABJAAAAAACJAAAAAABfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbQAAAAAAbQAAAAAAHwAAAAACHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAABJAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAJAAAAAABbQAAAAAAbQAAAAAAJAAAAAACJAAAAAACfgAAAAAAfgAAAAAAHwAAAAABHwAAAAACHwAAAAADHwAAAAADHwAAAAACHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbQAAAAAAbQAAAAAAJAAAAAABJAAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAACHwAAAAADHwAAAAACHwAAAAADHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbQAAAAAAbQAAAAAAJAAAAAADJAAAAAABfgAAAAAAfgAAAAAAHwAAAAACfgAAAAAAbAAAAAAAbAAAAAAAfgAAAAAAHwAAAAADfgAAAAAAfgAAAAAAJAAAAAADJAAAAAAAbQAAAAAAbQAAAAAAJAAAAAAAJAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbQAAAAAAbQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbQAAAAAAbQAAAAAAHwAAAAABHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAABJAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAAAXQAAAAACXQAAAAACJAAAAAADJAAAAAACJAAAAAAAJAAAAAABfgAAAAAAHwAAAAAAHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAACXQAAAAADXQAAAAACHwAAAAACHwAAAAABHwAAAAABHwAAAAABfgAAAAAAHwAAAAADHwAAAAABfgAAAAAAJAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAACXQAAAAABXQAAAAAAHwAAAAABHwAAAAADHwAAAAABHwAAAAACJAAAAAABJAAAAAACJAAAAAABJAAAAAADJAAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAXQAAAAAAXQAAAAABXQAAAAAAXQAAAAABJAAAAAABJAAAAAABJAAAAAACJAAAAAABfgAAAAAAHwAAAAAAHwAAAAAAfgAAAAAAJAAAAAAAfgAAAAAAXQAAAAADfgAAAAAAfgAAAAAAXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAADXQAAAAAAXQAAAAACaAAAAAACXQAAAAACXQAAAAADXQAAAAAAfgAAAAAAHwAAAAADaAAAAAACaAAAAAACaAAAAAADaAAAAAABaAAAAAADHwAAAAACfgAAAAAAHwAAAAADTgAAAAACaAAAAAAAaAAAAAADaAAAAAADaAAAAAACXQAAAAAAfgAAAAAAHwAAAAADaAAAAAACaAAAAAAAaAAAAAACaAAAAAADaAAAAAAAHwAAAAAAfgAAAAAAHwAAAAAC + tiles: bQAAAAAAfgAAAAAAJAAAAAABJAAAAAACfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbQAAAAAAJAAAAAABJAAAAAADJAAAAAACfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbQAAAAAAbQAAAAAAHwAAAAACHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAACJAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAJAAAAAABbQAAAAAAbQAAAAAAJAAAAAACJAAAAAACfgAAAAAAfgAAAAAAHwAAAAADHwAAAAADHwAAAAACHwAAAAADHwAAAAACHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbQAAAAAAbQAAAAAAJAAAAAAAJAAAAAACfgAAAAAAfgAAAAAAHwAAAAACHwAAAAAAHwAAAAACHwAAAAABHwAAAAACHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbQAAAAAAbQAAAAAAJAAAAAABJAAAAAAAfgAAAAAAfgAAAAAAHwAAAAACfgAAAAAAbAAAAAAAbAAAAAAAfgAAAAAAHwAAAAACfgAAAAAAfgAAAAAAJAAAAAAAJAAAAAABbQAAAAAAbQAAAAAAJAAAAAACJAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbQAAAAAAbQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbQAAAAAAbQAAAAAAHwAAAAADHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAADJAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAACXQAAAAACXQAAAAADJAAAAAABJAAAAAAAJAAAAAABJAAAAAABfgAAAAAAHwAAAAADHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAADXQAAAAACXQAAAAADHwAAAAAAHwAAAAABHwAAAAABHwAAAAACfgAAAAAAHwAAAAACHwAAAAABfgAAAAAAJAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAAAXQAAAAABXQAAAAADHwAAAAAAHwAAAAACHwAAAAACHwAAAAAAJAAAAAADJAAAAAADJAAAAAADJAAAAAACJAAAAAACfgAAAAAAbAAAAAAAfgAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAJAAAAAADJAAAAAACJAAAAAABJAAAAAACfgAAAAAAHwAAAAAAHwAAAAADfgAAAAAAJAAAAAABfgAAAAAAXQAAAAABfgAAAAAAfgAAAAAAXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAADXQAAAAACXQAAAAABaAAAAAACXQAAAAAAXQAAAAAAXQAAAAADfgAAAAAAHwAAAAACaAAAAAABaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAADHwAAAAAAfgAAAAAAHwAAAAACTgAAAAABaAAAAAAAaAAAAAADaAAAAAADaAAAAAAAXQAAAAADfgAAAAAAHwAAAAABaAAAAAABaAAAAAADaAAAAAAAaAAAAAADaAAAAAADHwAAAAACfgAAAAAAHwAAAAAA version: 6 0,-3: ind: 0,-3 - tiles: fQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAfgAAAAAAbQAAAAAAbQAAAAAAbQAAAAAAbQAAAAAAbQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAACHwAAAAACfgAAAAAAbQAAAAAAbQAAAAAAbQAAAAAAbQAAAAAAbQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAADHwAAAAABfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAACJAAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADXQAAAAABJAAAAAACJAAAAAACJAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAABaAAAAAACaAAAAAADJAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAADaAAAAAABaAAAAAAAJAAAAAAAfgAAAAAAXQAAAAACXQAAAAACHwAAAAADHwAAAAAAHwAAAAABJAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAACJAAAAAABJAAAAAABJAAAAAADJAAAAAACfgAAAAAAfgAAAAAAbAAAAAAAHwAAAAABHwAAAAADHwAAAAACJAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADXQAAAAAAXQAAAAADXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAAAXQAAAAACXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAXQAAAAAAXQAAAAADXQAAAAABaAAAAAAAXQAAAAAAXQAAAAADXQAAAAADXQAAAAACXQAAAAABXQAAAAADXQAAAAAAXQAAAAABfgAAAAAAfgAAAAAAXQAAAAAAfgAAAAAAXQAAAAADaAAAAAADaAAAAAABaAAAAAACaAAAAAABTgAAAAACaAAAAAACTgAAAAAAaAAAAAAD + tiles: fQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAfgAAAAAAbQAAAAAAbQAAAAAAbQAAAAAAbQAAAAAAbQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAHwAAAAADHwAAAAACHwAAAAABfgAAAAAAbQAAAAAAbQAAAAAAbQAAAAAAbQAAAAAAbQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAABfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAACJAAAAAACfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAAAJAAAAAABJAAAAAAAJAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAAAaAAAAAACaAAAAAABJAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAABaAAAAAACaAAAAAADJAAAAAABfgAAAAAAXQAAAAABXQAAAAACHwAAAAADHwAAAAABHwAAAAADJAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAJAAAAAACJAAAAAAAJAAAAAACJAAAAAABfgAAAAAAfgAAAAAAbAAAAAAAHwAAAAAAHwAAAAADHwAAAAABJAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAACXQAAAAACXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAABXQAAAAABXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAXQAAAAAAXQAAAAACXQAAAAABaAAAAAACXQAAAAABXQAAAAAAXQAAAAADXQAAAAAAXQAAAAAAXQAAAAADXQAAAAABXQAAAAACfgAAAAAAfgAAAAAAXQAAAAAAfgAAAAAAXQAAAAABaAAAAAADaAAAAAACaAAAAAACaAAAAAACTgAAAAABaAAAAAACTgAAAAABaAAAAAAA version: 6 1,1: ind: 1,1 - tiles: fgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACaAAAAAADXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAACaAAAAAACaAAAAAACfgAAAAAAXQAAAAACXQAAAAADXQAAAAABXQAAAAACXQAAAAACXQAAAAADJAAAAAAAXQAAAAAAXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAaAAAAAABXQAAAAADfgAAAAAAXQAAAAACXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAADXQAAAAAAXQAAAAADXQAAAAAAXQAAAAACXQAAAAADaAAAAAADXQAAAAABXQAAAAADaAAAAAABXQAAAAADfgAAAAAAXQAAAAABaAAAAAACaAAAAAACaAAAAAADXQAAAAAAaAAAAAADaAAAAAAAaAAAAAADXQAAAAABaAAAAAAAaAAAAAACaAAAAAABaAAAAAACaAAAAAADXQAAAAADfgAAAAAAXQAAAAABaAAAAAABaAAAAAABaAAAAAABXQAAAAABaAAAAAAAaAAAAAABaAAAAAAAXQAAAAAAXQAAAAAAaAAAAAACXQAAAAAAXQAAAAAAXQAAAAAAJAAAAAACfgAAAAAAXQAAAAABaAAAAAAAaAAAAAABaAAAAAAAXQAAAAADaAAAAAABaAAAAAABaAAAAAADXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAABXQAAAAADXQAAAAAAXQAAAAADXQAAAAABXQAAAAABXQAAAAACXQAAAAACdQAAAAADdAAAAAABfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAADXQAAAAACXQAAAAACXQAAAAACXQAAAAABXQAAAAADXQAAAAACXQAAAAACXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAdQAAAAABdAAAAAABfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: fgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAaAAAAAACXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAABaAAAAAABaAAAAAAAfgAAAAAAXQAAAAACXQAAAAADXQAAAAAAXQAAAAAAXQAAAAADXQAAAAAAJAAAAAACXQAAAAAAXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACaAAAAAACXQAAAAADfgAAAAAAXQAAAAACXQAAAAAAXQAAAAACXQAAAAAAXQAAAAABXQAAAAACXQAAAAABXQAAAAAAXQAAAAABXQAAAAADaAAAAAADXQAAAAACXQAAAAABaAAAAAABXQAAAAADfgAAAAAAXQAAAAAAaAAAAAADaAAAAAAAaAAAAAACXQAAAAADaAAAAAACaAAAAAAAaAAAAAACXQAAAAADaAAAAAADaAAAAAACaAAAAAABaAAAAAADaAAAAAAAXQAAAAAAfgAAAAAAXQAAAAACaAAAAAADaAAAAAAAaAAAAAADXQAAAAACaAAAAAACaAAAAAACaAAAAAABXQAAAAAAXQAAAAADaAAAAAABXQAAAAADXQAAAAAAXQAAAAABJAAAAAADfgAAAAAAXQAAAAACaAAAAAACaAAAAAAAaAAAAAADXQAAAAADaAAAAAAAaAAAAAAAaAAAAAAAXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAADXQAAAAACXQAAAAAAXQAAAAADXQAAAAADXQAAAAACXQAAAAACXQAAAAAAdQAAAAAAdAAAAAACfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAABXQAAAAAAXQAAAAAAXQAAAAABXQAAAAACXQAAAAAAXQAAAAAAXQAAAAACXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAdQAAAAADdAAAAAABfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 0,1: ind: 0,1 - tiles: fgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAABXQAAAAADXQAAAAABaAAAAAACXQAAAAABXQAAAAABXQAAAAADXQAAAAAAXQAAAAABXQAAAAADXQAAAAAAXQAAAAAAXQAAAAADXQAAAAAAXQAAAAADXQAAAAACaAAAAAACaAAAAAABaAAAAAAAaAAAAAADaAAAAAADaAAAAAAAaAAAAAADaAAAAAABaAAAAAACaAAAAAAAaAAAAAADaAAAAAAAaAAAAAAAaAAAAAABaAAAAAADaAAAAAABXQAAAAADXQAAAAADXQAAAAACaAAAAAABXQAAAAACXQAAAAADXQAAAAABXQAAAAAAXQAAAAADXQAAAAACXQAAAAADXQAAAAABXQAAAAADXQAAAAAAXQAAAAABXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADfgAAAAAAXQAAAAAAXQAAAAADXQAAAAAAHwAAAAADHwAAAAACHwAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAdQAAAAAAcAAAAAAAcAAAAAABdQAAAAABdAAAAAAAdAAAAAAAdAAAAAABXQAAAAABXQAAAAACXQAAAAADHwAAAAABHwAAAAADHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAdQAAAAADcAAAAAABcAAAAAAAdQAAAAABdAAAAAADdAAAAAACdAAAAAADfgAAAAAAXQAAAAAAXQAAAAAAHwAAAAAAHwAAAAADHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAdAAAAAADdAAAAAADdAAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAACHwAAAAADHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAdQAAAAADdQAAAAAAdQAAAAABfgAAAAAAHwAAAAACHwAAAAAAHwAAAAAAHwAAAAACHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAADHwAAAAACHwAAAAADHwAAAAABHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAALgAAAAAALgAAAAAALgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAALgAAAAAALgAAAAAAaAAAAAAAfgAAAAAAHwAAAAADHwAAAAACHwAAAAADHwAAAAAAHwAAAAABTwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAgQAAAAAAcAAAAAADcAAAAAADaAAAAAADfgAAAAAAHwAAAAAAHwAAAAAATwAAAAAATwAAAAAAHwAAAAACTwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAALgAAAAAAfgAAAAAALgAAAAAA + tiles: fgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAADXQAAAAACXQAAAAABaAAAAAAAXQAAAAACXQAAAAABXQAAAAABXQAAAAAAXQAAAAAAXQAAAAABXQAAAAACXQAAAAAAXQAAAAABXQAAAAACXQAAAAADXQAAAAAAaAAAAAADaAAAAAADaAAAAAAAaAAAAAACaAAAAAABaAAAAAADaAAAAAADaAAAAAABaAAAAAACaAAAAAACaAAAAAAAaAAAAAACaAAAAAABaAAAAAAAaAAAAAADaAAAAAADXQAAAAABXQAAAAACXQAAAAACaAAAAAADXQAAAAADXQAAAAAAXQAAAAACXQAAAAADXQAAAAADXQAAAAACXQAAAAACXQAAAAABXQAAAAADXQAAAAADXQAAAAACXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADfgAAAAAAXQAAAAADXQAAAAAAXQAAAAAAHwAAAAACHwAAAAADHwAAAAACfgAAAAAAbAAAAAAAfgAAAAAAdQAAAAABcAAAAAADcAAAAAACdQAAAAACdAAAAAAAdAAAAAACdAAAAAACXQAAAAADXQAAAAACXQAAAAABHwAAAAADHwAAAAAAHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAdQAAAAADcAAAAAACcAAAAAACdQAAAAADdAAAAAAAdAAAAAACdAAAAAABfgAAAAAAXQAAAAACXQAAAAACHwAAAAABHwAAAAADHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAdAAAAAAAdAAAAAABdAAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAABHwAAAAAAHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAdQAAAAABdQAAAAADdQAAAAACfgAAAAAAHwAAAAABHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABHwAAAAAAHwAAAAABHwAAAAAAHwAAAAACHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAALgAAAAAALgAAAAAALgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAALgAAAAAALgAAAAAAaAAAAAABfgAAAAAAJAAAAAADHwAAAAACHwAAAAABHwAAAAAAHwAAAAABTwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAgQAAAAAAcAAAAAABcAAAAAACaAAAAAAAfgAAAAAAJAAAAAAAHwAAAAACTwAAAAAATwAAAAAAHwAAAAADTwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAALgAAAAAAfgAAAAAALgAAAAAA version: 6 -1,1: ind: -1,1 - tiles: fgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAABXQAAAAADXQAAAAABXQAAAAABXQAAAAAAXQAAAAACaAAAAAAAXQAAAAAAXQAAAAAAXQAAAAACXQAAAAADXQAAAAABXQAAAAAAXQAAAAAAXQAAAAADaAAAAAAAaAAAAAABaAAAAAADaAAAAAAAaAAAAAAAaAAAAAABaAAAAAAAaAAAAAAAaAAAAAACaAAAAAADTgAAAAABTgAAAAABaAAAAAACTgAAAAABTgAAAAAAaAAAAAACXQAAAAACXQAAAAADXQAAAAABXQAAAAAAXQAAAAABXQAAAAADXQAAAAABaAAAAAAAXQAAAAACXQAAAAACXQAAAAABXQAAAAABXQAAAAADXQAAAAABXQAAAAAAXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAADHwAAAAACfgAAAAAAXQAAAAACXQAAAAABXQAAAAACfgAAAAAAXQAAAAABXQAAAAACXQAAAAADfgAAAAAAXQAAAAAAXQAAAAADXQAAAAADfgAAAAAAXQAAAAAAHwAAAAACHwAAAAADXQAAAAABXQAAAAADXQAAAAADXQAAAAABfgAAAAAAXQAAAAAAXQAAAAACXQAAAAADfgAAAAAAXQAAAAAAXQAAAAAAXQAAAAADfgAAAAAAXQAAAAABHwAAAAACHwAAAAABXQAAAAACfgAAAAAAfgAAAAAAHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABfgAAAAAAXQAAAAADJAAAAAACJAAAAAACXQAAAAACHwAAAAADHwAAAAABHwAAAAABHwAAAAABHwAAAAADHwAAAAADHwAAAAADHwAAAAACHwAAAAABHwAAAAAAHwAAAAACfgAAAAAAfgAAAAAAHwAAAAADHwAAAAAAfgAAAAAAHwAAAAABTgAAAAABTgAAAAAAHwAAAAACTgAAAAAATgAAAAAATgAAAAABHwAAAAAATgAAAAACTgAAAAAAHwAAAAAAXQAAAAAAXQAAAAABXQAAAAAAXQAAAAACJAAAAAAAHwAAAAADHwAAAAACHwAAAAAAHwAAAAADHwAAAAACHwAAAAAAHwAAAAABHwAAAAAAHwAAAAADHwAAAAAAHwAAAAAAXQAAAAABXQAAAAADXQAAAAADXQAAAAADXQAAAAACHwAAAAAAHwAAAAACHwAAAAABHwAAAAAAHwAAAAABXQAAAAAAXQAAAAACXQAAAAACXQAAAAAAXQAAAAADXQAAAAAAXQAAAAAAXQAAAAACXQAAAAADXQAAAAADXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAACXQAAAAABfgAAAAAAHwAAAAACHwAAAAAAHwAAAAACHwAAAAACXQAAAAADXQAAAAAAXQAAAAACXQAAAAADXQAAAAACJAAAAAABJAAAAAABfgAAAAAAXQAAAAADXQAAAAAAXQAAAAAB + tiles: fgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAACXQAAAAADXQAAAAADXQAAAAABXQAAAAAAXQAAAAABaAAAAAACXQAAAAADXQAAAAADXQAAAAABXQAAAAADXQAAAAABXQAAAAACXQAAAAABXQAAAAADaAAAAAACaAAAAAABaAAAAAAAaAAAAAABaAAAAAADaAAAAAADaAAAAAABaAAAAAAAaAAAAAADaAAAAAADTgAAAAACTgAAAAAAaAAAAAABTgAAAAADTgAAAAACaAAAAAABXQAAAAADXQAAAAAAXQAAAAADXQAAAAADXQAAAAABXQAAAAACXQAAAAABaAAAAAADXQAAAAADXQAAAAACXQAAAAADXQAAAAACXQAAAAACXQAAAAABXQAAAAACXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABHwAAAAABfgAAAAAAXQAAAAADXQAAAAACXQAAAAAAfgAAAAAAXQAAAAABXQAAAAACXQAAAAADfgAAAAAAXQAAAAABXQAAAAAAXQAAAAABfgAAAAAAXQAAAAACHwAAAAABHwAAAAACXQAAAAACXQAAAAADXQAAAAACXQAAAAADfgAAAAAAXQAAAAACXQAAAAADXQAAAAADfgAAAAAAXQAAAAAAXQAAAAADXQAAAAABfgAAAAAAXQAAAAADHwAAAAABHwAAAAAAXQAAAAACfgAAAAAAfgAAAAAAHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACfgAAAAAAXQAAAAADJAAAAAABJAAAAAAAXQAAAAABHwAAAAACHwAAAAABHwAAAAACHwAAAAACHwAAAAAAHwAAAAAAHwAAAAACHwAAAAACHwAAAAABHwAAAAABHwAAAAACfgAAAAAAfgAAAAAAHwAAAAADHwAAAAABfgAAAAAAHwAAAAAATgAAAAADTgAAAAACHwAAAAACTgAAAAABTgAAAAADTgAAAAABHwAAAAABTgAAAAAATgAAAAABHwAAAAADXQAAAAADXQAAAAAAXQAAAAADXQAAAAACJAAAAAADHwAAAAAAHwAAAAADHwAAAAACHwAAAAADHwAAAAACHwAAAAADHwAAAAABHwAAAAAAHwAAAAAAHwAAAAABHwAAAAAAXQAAAAACXQAAAAAAXQAAAAACXQAAAAAAXQAAAAACHwAAAAADHwAAAAACHwAAAAABHwAAAAADHwAAAAABXQAAAAACXQAAAAACXQAAAAAAXQAAAAACXQAAAAADXQAAAAACXQAAAAABXQAAAAABXQAAAAABXQAAAAABXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAADXQAAAAAAfgAAAAAAHwAAAAACHwAAAAADHwAAAAACHwAAAAAAXQAAAAAAXQAAAAADXQAAAAACXQAAAAACXQAAAAAAJAAAAAABJAAAAAACfgAAAAAAXQAAAAAAXQAAAAABXQAAAAAA version: 6 -2,1: ind: -2,1 - tiles: AQAAAAAAAQAAAAABAQAAAAAAJAAAAAABfgAAAAAAXQAAAAAAaAAAAAADXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAPAAAAAAAPAAAAAAAPAAAAAAAaAAAAAAAfgAAAAAAXQAAAAACaAAAAAABXQAAAAADKAAAAAABKAAAAAABKAAAAAABKAAAAAADKAAAAAADKAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADaAAAAAACXQAAAAADXwAAAAABXwAAAAADXwAAAAACXwAAAAACXwAAAAAAXwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAXQAAAAACXQAAAAACaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAABaAAAAAAAaAAAAAAAaAAAAAABaAAAAAADaAAAAAABaAAAAAADfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADaAAAAAADaAAAAAADXwAAAAAAXwAAAAACXwAAAAADXwAAAAACXwAAAAACXwAAAAADaAAAAAABaAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAADJAAAAAAAKAAAAAABKAAAAAADKAAAAAADKAAAAAADKAAAAAADKAAAAAABXQAAAAADaAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAegAAAAAAegAAAAADfgAAAAAAegAAAAAAegAAAAAAegAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAAAHwAAAAABHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAegAAAAAAegAAAAACegAAAAABegAAAAABegAAAAACegAAAAABbAAAAAAAfgAAAAAAfgAAAAAAJAAAAAADJAAAAAABJAAAAAACHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAegAAAAAAegAAAAADfgAAAAAAegAAAAAAegAAAAACegAAAAACfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAADJAAAAAAAJAAAAAABHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAABXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAJAAAAAACJAAAAAACHwAAAAAAHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADXQAAAAAAXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAACHwAAAAADHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAADXQAAAAABXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAAB + tiles: AQAAAAAAAQAAAAACAQAAAAABJAAAAAACfgAAAAAAXQAAAAADaAAAAAAAXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAPAAAAAAAPAAAAAAAPAAAAAAAaAAAAAACfgAAAAAAXQAAAAACaAAAAAADXQAAAAABKAAAAAAAKAAAAAACKAAAAAABKAAAAAADKAAAAAADKAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADaAAAAAADXQAAAAACXwAAAAACXwAAAAADXwAAAAAAXwAAAAACXwAAAAADXwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAXQAAAAABXQAAAAADaAAAAAAAaAAAAAADaAAAAAABaAAAAAADaAAAAAADaAAAAAAAaAAAAAADaAAAAAABaAAAAAACaAAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACaAAAAAAAaAAAAAADXwAAAAADXwAAAAACXwAAAAACXwAAAAABXwAAAAADXwAAAAADaAAAAAACaAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAACJAAAAAAAKAAAAAAAKAAAAAAAKAAAAAACKAAAAAACKAAAAAAAKAAAAAAAXQAAAAABaAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAegAAAAAAegAAAAACfgAAAAAAegAAAAAAegAAAAADegAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAACHwAAAAACHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAegAAAAAAegAAAAAAegAAAAACegAAAAAAegAAAAACegAAAAACbAAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAJAAAAAACJAAAAAADHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAegAAAAADegAAAAAAfgAAAAAAegAAAAADegAAAAAAegAAAAABfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAADJAAAAAADJAAAAAACHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAABXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAADJAAAAAABJAAAAAAAHwAAAAADHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAAAXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAACHwAAAAACHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAACXQAAAAACXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAADHwAAAAAB version: 6 -1,-3: ind: -1,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXgAAAAABYQAAAAADXgAAAAABXQAAAAACfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAYQAAAAAAfgAAAAAAggAAAAAAfgAAAAAAXgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAgQAAAAAAfgAAAAAAfgAAAAAAggAAAAACfgAAAAAAfgAAAAAAggAAAAABfgAAAAAAfgAAAAAAYQAAAAABXQAAAAACfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAggAAAAAAgQAAAAAAfgAAAAAAgQAAAAAAggAAAAABfgAAAAAAfgAAAAAAfgAAAAAAggAAAAABYQAAAAAEXgAAAAAAXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAbAAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAbAAAAAAAbAAAAAAAfgAAAAAAgQAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAACaAAAAAADaAAAAAACfgAAAAAAbAAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAXQAAAAAAXQAAAAADXQAAAAACXQAAAAABXQAAAAAAXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAADXQAAAAACfgAAAAAAaAAAAAACaAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAaAAAAAAAaAAAAAADaAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADXgAAAAABfgAAAAAAXgAAAAABXQAAAAADfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAYQAAAAACfgAAAAAAfgAAAAAAYQAAAAACXgAAAAABfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAgQAAAAAAfgAAAAAAfgAAAAAAggAAAAAAfgAAAAAAfgAAAAAAggAAAAABQgAAAAAAQgAAAAAAYQAAAAADXQAAAAACfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAggAAAAAAgQAAAAAAfgAAAAAAgQAAAAAAggAAAAACfgAAAAAAfgAAAAAAfgAAAAAAggAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAbAAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAbAAAAAAAbAAAAAAAfgAAAAAAgQAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAAAaAAAAAACaAAAAAACfgAAAAAAbAAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAXQAAAAABXQAAAAADXQAAAAAAXQAAAAAAXQAAAAABXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAABXQAAAAABfgAAAAAAaAAAAAADaAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAaAAAAAABaAAAAAACaAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAD version: 6 2,-3: ind: 2,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABHwAAAAABJAAAAAABJAAAAAAAJAAAAAAAJAAAAAABJAAAAAABJAAAAAABJAAAAAADJAAAAAACJAAAAAABJAAAAAAAJAAAAAAAJAAAAAABJAAAAAADJAAAAAACJAAAAAACJAAAAAADJAAAAAACJAAAAAADJAAAAAABJAAAAAACJAAAAAAAJAAAAAABJAAAAAADJAAAAAACJAAAAAADJAAAAAAAJAAAAAACJAAAAAADJAAAAAAAJAAAAAAAJAAAAAABJAAAAAABJAAAAAABJgAAAAABJgAAAAACJgAAAAACJgAAAAAAJgAAAAABJgAAAAABJgAAAAABJgAAAAABJgAAAAACJgAAAAACJgAAAAABJgAAAAADJAAAAAADJAAAAAADJAAAAAADJgAAAAADJgAAAAACHwAAAAADHwAAAAACHwAAAAAAHwAAAAABHwAAAAABHwAAAAABHwAAAAABHwAAAAAAHwAAAAADJgAAAAAAJgAAAAACJAAAAAAAJAAAAAABJAAAAAAAJgAAAAAAJgAAAAABHwAAAAADHwAAAAACHwAAAAAAHwAAAAAAHwAAAAABHwAAAAABHwAAAAAAHwAAAAAAHwAAAAABJgAAAAADJgAAAAABJAAAAAAAHwAAAAABHwAAAAABJAAAAAAAJAAAAAABHwAAAAACHwAAAAACJAAAAAACJAAAAAABJAAAAAABJAAAAAABJAAAAAABHwAAAAADHwAAAAABJAAAAAACJAAAAAABHwAAAAADHwAAAAABHwAAAAADJgAAAAABJAAAAAABJAAAAAABJAAAAAADJAAAAAABJAAAAAABJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAADJAAAAAAAJAAAAAAAJgAAAAACHwAAAAAC + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAADHwAAAAADJAAAAAACJAAAAAACJAAAAAADJAAAAAACJAAAAAABJAAAAAABJAAAAAAAJAAAAAABJAAAAAACJAAAAAABJAAAAAAAJAAAAAAAJAAAAAACJAAAAAACJAAAAAAAJAAAAAACJAAAAAACJAAAAAABJAAAAAAAJAAAAAAAJAAAAAADJAAAAAABJAAAAAAAJAAAAAACJAAAAAACJAAAAAACJAAAAAADJAAAAAADJAAAAAADJAAAAAAAJAAAAAAAJAAAAAACJAAAAAABJgAAAAACJgAAAAACJgAAAAADJgAAAAAAJgAAAAAAJgAAAAABJgAAAAACJgAAAAAAJgAAAAACJgAAAAACJgAAAAACJgAAAAACJAAAAAAAJAAAAAACJAAAAAABJgAAAAAAJgAAAAAAHwAAAAABHwAAAAACHwAAAAADHwAAAAADHwAAAAABHwAAAAAAHwAAAAACHwAAAAABHwAAAAACJgAAAAABJgAAAAABJAAAAAADJAAAAAADJAAAAAABJgAAAAAAJgAAAAACHwAAAAABHwAAAAACHwAAAAACHwAAAAABHwAAAAABHwAAAAAAHwAAAAADHwAAAAADHwAAAAAAJgAAAAABJgAAAAABJAAAAAABHwAAAAACHwAAAAABJAAAAAAAJAAAAAADHwAAAAABHwAAAAACJAAAAAABJAAAAAABJAAAAAAAJAAAAAADJAAAAAACHwAAAAACHwAAAAACJAAAAAABJAAAAAADHwAAAAADHwAAAAACHwAAAAAAJgAAAAAAJAAAAAAAJAAAAAABJAAAAAACJAAAAAABJAAAAAADJAAAAAACJAAAAAAAJAAAAAADJAAAAAABJAAAAAACJAAAAAACJgAAAAADHwAAAAAD version: 6 3,-2: ind: 3,-2 - tiles: HwAAAAADHwAAAAAAfgAAAAAAHwAAAAADHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAAAXQAAAAABHwAAAAACHwAAAAADfgAAAAAAXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAAAXQAAAAACHwAAAAAAHwAAAAAAfgAAAAAAXQAAAAACXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAHwAAAAABHwAAAAAAfgAAAAAAXQAAAAACXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAHwAAAAAAfgAAAAAAfgAAAAAAXQAAAAADXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAABXQAAAAACHwAAAAABHwAAAAACfgAAAAAAXQAAAAADXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAADXQAAAAAAXQAAAAABXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAAAaAAAAAACXQAAAAADXQAAAAAAXQAAAAAAfgAAAAAAfgAAAAAAaAAAAAABaAAAAAAAaAAAAAACXQAAAAABXQAAAAACXQAAAAABXQAAAAAAXQAAAAABaAAAAAACXQAAAAABXQAAAAABXQAAAAAAXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAADXQAAAAABXQAAAAADXQAAAAACXQAAAAADXQAAAAAAXQAAAAAAaAAAAAADXQAAAAACXQAAAAABXQAAAAADXQAAAAADJAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAACfgAAAAAAXQAAAAABXQAAAAABXQAAAAAAXQAAAAACXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAABXQAAAAADXQAAAAADXQAAAAAAXQAAAAABXQAAAAACXQAAAAAAXQAAAAADXQAAAAABXQAAAAAAXQAAAAACXQAAAAAAXQAAAAABJAAAAAADfgAAAAAAXQAAAAAATgAAAAADTgAAAAACaAAAAAABTgAAAAACTgAAAAABaAAAAAAAaAAAAAADaAAAAAAAaAAAAAABaAAAAAADaAAAAAABXQAAAAACXQAAAAACXQAAAAAAXQAAAAACXQAAAAABXQAAAAADXQAAAAADXQAAAAACXQAAAAADXQAAAAABXQAAAAADXQAAAAABXQAAAAACXQAAAAABXQAAAAADXQAAAAADXQAAAAABXQAAAAAAXQAAAAAAfgAAAAAAXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADXQAAAAAAXQAAAAADXQAAAAACXQAAAAABXQAAAAABXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAABXQAAAAADXQAAAAADXQAAAAABfgAAAAAAXQAAAAAA + tiles: HwAAAAABHwAAAAADfgAAAAAAHwAAAAADHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAAAXQAAAAAAHwAAAAAAHwAAAAACfgAAAAAAXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAADXQAAAAACHwAAAAAAHwAAAAABfgAAAAAAXQAAAAACXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAHwAAAAABHwAAAAADfgAAAAAAXQAAAAABXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAHwAAAAABfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAACXQAAAAAAHwAAAAAAHwAAAAAAfgAAAAAAXQAAAAAAXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAAAXQAAAAACXQAAAAAAXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAABaAAAAAADXQAAAAACXQAAAAAAXQAAAAABfgAAAAAAfgAAAAAAaAAAAAADaAAAAAADaAAAAAACXQAAAAABXQAAAAAAXQAAAAACXQAAAAACXQAAAAAAaAAAAAACXQAAAAADXQAAAAADXQAAAAAAXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAADXQAAAAAAXQAAAAADXQAAAAADXQAAAAADXQAAAAACXQAAAAABaAAAAAAAXQAAAAACXQAAAAABXQAAAAACXQAAAAAAJAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAABfgAAAAAAXQAAAAABXQAAAAADXQAAAAADXQAAAAADXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAAAXQAAAAADXQAAAAACXQAAAAAAXQAAAAACXQAAAAADXQAAAAABXQAAAAACXQAAAAADXQAAAAAAXQAAAAACXQAAAAACXQAAAAABJAAAAAACfgAAAAAAXQAAAAADTgAAAAABTgAAAAACaAAAAAACTgAAAAADTgAAAAACaAAAAAADaAAAAAACaAAAAAADaAAAAAADaAAAAAABaAAAAAAAXQAAAAAAXQAAAAABXQAAAAAAXQAAAAADXQAAAAABXQAAAAABXQAAAAABXQAAAAABXQAAAAABXQAAAAACXQAAAAADXQAAAAACXQAAAAACXQAAAAADXQAAAAADXQAAAAADXQAAAAAAXQAAAAAAXQAAAAAAfgAAAAAAXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAABXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAADXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADXQAAAAACXQAAAAADXQAAAAAAXQAAAAACfgAAAAAAXQAAAAAC version: 6 3,-3: ind: 3,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAACwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAABwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAEBwAAAAAABwAAAAAMBwAAAAAAJAAAAAABfgAAAAAAfgAAAAAAHwAAAAABHwAAAAABHwAAAAABHwAAAAADfgAAAAAAfgAAAAAABwAAAAALBwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAfwAAAAAAJAAAAAADJAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAACJAAAAAACfgAAAAAAHwAAAAABHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAbgAAAAABbAAAAAAAJAAAAAABJAAAAAAAHwAAAAABHwAAAAACHwAAAAADfgAAAAAAHwAAAAAAHwAAAAABOAAAAAAAOAAAAAAAOAAAAAAAfgAAAAAAfgAAAAAAbgAAAAACfgAAAAAAbgAAAAAAJAAAAAABJAAAAAACfgAAAAAAHwAAAAADHwAAAAACfgAAAAAAHwAAAAABHwAAAAACOAAAAAAAHwAAAAACOAAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAbgAAAAABbAAAAAAAHwAAAAADHwAAAAACfgAAAAAAHwAAAAABHwAAAAACfgAAAAAAHwAAAAAAHwAAAAABOAAAAAAAOAAAAAAAOAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAAAfgAAAAAAHwAAAAADHwAAAAACfgAAAAAAHwAAAAABHwAAAAAAHwAAAAAAHwAAAAADHwAAAAADfgAAAAAAfgAAAAAAXQAAAAABXQAAAAACXQAAAAAB + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAACBwAAAAAABwAAAAAACwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAABwAAAAAABwAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAABwAAAAADBwAAAAAABwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAHBwAAAAAABwAAAAAAJAAAAAACfgAAAAAAfgAAAAAAHwAAAAADHwAAAAADHwAAAAABHwAAAAACfgAAAAAAfgAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAfwAAAAAAJAAAAAADJAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAABJAAAAAADfgAAAAAAHwAAAAABHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAbgAAAAAAbAAAAAAAJAAAAAADJAAAAAAAHwAAAAAAHwAAAAADHwAAAAACfgAAAAAAHwAAAAABHwAAAAABOAAAAAAAOAAAAAAAOAAAAAAAfgAAAAAAfgAAAAAAbgAAAAAAfgAAAAAAbgAAAAADJAAAAAAAJAAAAAACfgAAAAAAHwAAAAACHwAAAAABfgAAAAAAHwAAAAADHwAAAAAAOAAAAAAAHwAAAAABOAAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAbgAAAAADbAAAAAAAHwAAAAABHwAAAAAAfgAAAAAAHwAAAAACHwAAAAABfgAAAAAAHwAAAAABHwAAAAADOAAAAAAAOAAAAAAAOAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAADHwAAAAADfgAAAAAAHwAAAAACHwAAAAABfgAAAAAAHwAAAAADHwAAAAADHwAAAAABHwAAAAAAHwAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAADXQAAAAAB version: 6 -2,-3: ind: -2,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAegAAAAADegAAAAADegAAAAACegAAAAACfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfQAAAAAAegAAAAADFQAAAAAAegAAAAACegAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAFQAAAAAFgQAAAAAAFQAAAAABegAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAegAAAAABJAAAAAABfgAAAAAAegAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAXQAAAAABfgAAAAAAfgAAAAAAXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADKAAAAAADKAAAAAACXQAAAAAAXQAAAAACXQAAAAABXQAAAAADXQAAAAACXQAAAAACXQAAAAACXQAAAAABXQAAAAADXQAAAAABXQAAAAACfgAAAAAAfgAAAAAAXQAAAAABKAAAAAACfgAAAAAAegAAAAACegAAAAADegAAAAABegAAAAACegAAAAADegAAAAAAegAAAAACegAAAAAAegAAAAABegAAAAADegAAAAAAfgAAAAAAfgAAAAAAewAAAAACewAAAAADfgAAAAAAegAAAAAAegAAAAABegAAAAABKAAAAAAAKAAAAAACKAAAAAABKAAAAAAAKAAAAAABKAAAAAADKAAAAAABKAAAAAADfgAAAAAAfgAAAAAAewAAAAABewAAAAADfgAAAAAAegAAAAACegAAAAAAegAAAAACKAAAAAACKAAAAAAAKAAAAAABKAAAAAACKAAAAAACKAAAAAAAKAAAAAADKAAAAAABfgAAAAAAfgAAAAAAewAAAAAAewAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAKAAAAAADKAAAAAABKAAAAAAAKAAAAAABKAAAAAABKAAAAAAAKAAAAAAAKAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAegAAAAADegAAAAAAegAAAAABegAAAAADegAAAAABegAAAAADegAAAAADJAAAAAADfgAAAAAAfgAAAAAAKAAAAAACKAAAAAABKAAAAAADKAAAAAACXQAAAAABfgAAAAAAXQAAAAACXQAAAAACXQAAAAAAXQAAAAABXQAAAAACXQAAAAADXQAAAAAAXQAAAAACfgAAAAAAbAAAAAAAXQAAAAAAXQAAAAADKAAAAAABKAAAAAADXQAAAAADfgAAAAAAfgAAAAAAXQAAAAABXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAC + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAegAAAAACegAAAAADegAAAAACegAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfQAAAAAAegAAAAABFQAAAAAFegAAAAABegAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAFQAAAAACgQAAAAAAFQAAAAAAegAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAegAAAAACJAAAAAAAfgAAAAAAegAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAXQAAAAADfgAAAAAAfgAAAAAAXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADKAAAAAADKAAAAAADXQAAAAAAXQAAAAABXQAAAAADXQAAAAADXQAAAAAAXQAAAAADXQAAAAAAXQAAAAADXQAAAAABXQAAAAABXQAAAAAAfgAAAAAAfgAAAAAAXQAAAAABKAAAAAAAfgAAAAAAegAAAAACegAAAAABegAAAAAAegAAAAACegAAAAABegAAAAAAegAAAAAAegAAAAAAegAAAAABegAAAAABegAAAAAAfgAAAAAAfgAAAAAAewAAAAADewAAAAACfgAAAAAAegAAAAADegAAAAADegAAAAACKAAAAAABKAAAAAAAKAAAAAAAKAAAAAABKAAAAAAAKAAAAAABKAAAAAACKAAAAAABfgAAAAAAfgAAAAAAewAAAAAAewAAAAAAfgAAAAAAegAAAAAAegAAAAADegAAAAABKAAAAAACKAAAAAABKAAAAAAAKAAAAAABKAAAAAADKAAAAAABKAAAAAABKAAAAAABfgAAAAAAfgAAAAAAewAAAAADewAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAKAAAAAABKAAAAAADKAAAAAACKAAAAAABKAAAAAAAKAAAAAACKAAAAAAAKAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAegAAAAACegAAAAAAegAAAAABegAAAAABegAAAAADegAAAAACegAAAAABJAAAAAACfgAAAAAAfgAAAAAAKAAAAAAAKAAAAAACKAAAAAACKAAAAAACXQAAAAACfgAAAAAAXQAAAAACXQAAAAAAXQAAAAACXQAAAAADXQAAAAADXQAAAAADXQAAAAAAXQAAAAADfgAAAAAAbAAAAAAAXQAAAAACXQAAAAABKAAAAAADKAAAAAAAXQAAAAACfgAAAAAAfgAAAAAAXQAAAAACXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAC version: 6 -3,-1: ind: -3,-1 - tiles: HwAAAAAAfgAAAAAAewAAAAAAewAAAAADewAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAegAAAAAAegAAAAAAegAAAAADegAAAAADegAAAAACegAAAAADegAAAAAAHwAAAAADHwAAAAABHwAAAAADHwAAAAAAHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAegAAAAACTgAAAAAATgAAAAADKAAAAAAATgAAAAAATgAAAAABKAAAAAABHwAAAAABfgAAAAAAHwAAAAACHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAegAAAAABTgAAAAADTgAAAAABKAAAAAABTgAAAAACTgAAAAADKAAAAAACHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAegAAAAAAegAAAAADegAAAAACegAAAAADegAAAAACegAAAAACegAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAKAAAAAABfgAAAAAAfgAAAAAAKAAAAAACKAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAZQAAAAABZQAAAAABfgAAAAAAewAAAAAAewAAAAADewAAAAACfgAAAAAAaAAAAAABKAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAZQAAAAADZQAAAAACfgAAAAAAKAAAAAABKAAAAAACKAAAAAADfgAAAAAAaAAAAAAAKAAAAAADBAAAAAAABAAAAAAABAAAAAAABAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAZQAAAAAAZQAAAAACfgAAAAAAKAAAAAABKAAAAAADKAAAAAADfgAAAAAAXQAAAAABXQAAAAADBAAAAAAABAAAAAAABAAAAAAABAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAACXQAAAAADXQAAAAACfgAAAAAAXQAAAAAAXQAAAAAAfgAAAAAAXwAAAAACXwAAAAAAXwAAAAADXwAAAAAAJAAAAAACfgAAAAAAXQAAAAADXQAAAAABXQAAAAADXQAAAAAAXQAAAAABXQAAAAAAXQAAAAABXQAAAAABXQAAAAABfgAAAAAAXwAAAAADHwAAAAADHwAAAAABHwAAAAABHwAAAAADfgAAAAAAXQAAAAAAXQAAAAADJAAAAAACJAAAAAACJAAAAAADJAAAAAABJAAAAAADXQAAAAACXQAAAAABfgAAAAAAXwAAAAACHwAAAAAAHwAAAAABHwAAAAADHwAAAAACfgAAAAAAXQAAAAACXQAAAAACAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAXQAAAAABXQAAAAADfgAAAAAAXwAAAAACHwAAAAADHwAAAAAAHwAAAAADHwAAAAAAfgAAAAAAXQAAAAADfgAAAAAAJAAAAAACJAAAAAABJAAAAAACJAAAAAADJAAAAAABXQAAAAAAXQAAAAACfgAAAAAAXQAAAAAAXQAAAAADXQAAAAACXQAAAAACXQAAAAACXQAAAAABXQAAAAADXQAAAAAC + tiles: HwAAAAAAfgAAAAAAewAAAAACewAAAAAAewAAAAABfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAegAAAAADegAAAAAAegAAAAAAegAAAAABegAAAAACegAAAAABegAAAAADHwAAAAADHwAAAAAAHwAAAAADHwAAAAADHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAegAAAAAATgAAAAADTgAAAAAAKAAAAAADTgAAAAADTgAAAAAAKAAAAAACHwAAAAAAfgAAAAAAHwAAAAADHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAegAAAAAATgAAAAABTgAAAAAAKAAAAAACTgAAAAACTgAAAAADKAAAAAABHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAegAAAAADegAAAAABegAAAAABegAAAAAAegAAAAABegAAAAABegAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAKAAAAAAAfgAAAAAAfgAAAAAAKAAAAAAAKAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAZQAAAAABZQAAAAADfgAAAAAAewAAAAABewAAAAACewAAAAABfgAAAAAAaAAAAAACKAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAZQAAAAABZQAAAAACfgAAAAAAKAAAAAAAKAAAAAABKAAAAAADfgAAAAAAaAAAAAAAKAAAAAACBAAAAAAABAAAAAAABAAAAAAABAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAZQAAAAABZQAAAAADfgAAAAAAKAAAAAACKAAAAAADKAAAAAACfgAAAAAAXQAAAAACXQAAAAABBAAAAAAABAAAAAAABAAAAAAABAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAABXQAAAAADXQAAAAADfgAAAAAAXQAAAAACXQAAAAABfgAAAAAAXwAAAAAAXwAAAAADXwAAAAAAXwAAAAADXwAAAAAAJAAAAAACXwAAAAADXwAAAAACXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAADXQAAAAADXQAAAAAAfgAAAAAAXwAAAAACHwAAAAACHwAAAAAAHwAAAAABHwAAAAABXwAAAAABHwAAAAACHwAAAAABJAAAAAADJAAAAAACJAAAAAABJAAAAAAAJAAAAAACXQAAAAACXQAAAAADfgAAAAAAXwAAAAACHwAAAAAAHwAAAAADHwAAAAAAHwAAAAADXwAAAAACHwAAAAADHwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAXQAAAAABXQAAAAADfgAAAAAAXwAAAAAAHwAAAAADHwAAAAABHwAAAAACHwAAAAADXwAAAAABHwAAAAABHwAAAAAAJAAAAAADJAAAAAABJAAAAAACJAAAAAAAJAAAAAACXQAAAAABXQAAAAADfgAAAAAAXQAAAAAAXQAAAAAAXQAAAAADXQAAAAABXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAA version: 6 -3,0: ind: -3,0 - tiles: ZQAAAAADZQAAAAAAZQAAAAADZQAAAAAAZQAAAAAAXQAAAAAAaAAAAAADaAAAAAABXQAAAAACXQAAAAACaAAAAAADaAAAAAAAaAAAAAACaAAAAAABaAAAAAABXQAAAAAATgAAAAABTgAAAAADaAAAAAADTgAAAAACTgAAAAAAaAAAAAADaAAAAAADaAAAAAAAXQAAAAACXQAAAAADXwAAAAABaAAAAAAAaAAAAAACaAAAAAADXwAAAAABaAAAAAADZQAAAAACZQAAAAAAZQAAAAABZQAAAAADZQAAAAAAXQAAAAABaAAAAAABaAAAAAAAXQAAAAABXQAAAAAAXwAAAAAAaAAAAAABaAAAAAAAaAAAAAACXwAAAAAAaAAAAAACJAAAAAABJAAAAAAAJAAAAAACJAAAAAAAJAAAAAABXQAAAAADXQAAAAAAfgAAAAAAXQAAAAABXQAAAAACaAAAAAAAaAAAAAADaAAAAAABaAAAAAABaAAAAAAAaAAAAAACAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAXQAAAAADXQAAAAADfgAAAAAAXQAAAAABXQAAAAACXQAAAAABewAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAADJAAAAAADJAAAAAABJAAAAAADJAAAAAACJAAAAAADXQAAAAABXQAAAAACfgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAewAAAAACHwAAAAABHwAAAAACHwAAAAADHwAAAAAAXQAAAAACXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAACfgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAewAAAAAAHwAAAAABHwAAAAADHwAAAAAAHwAAAAAAXQAAAAADXQAAAAABXQAAAAACXQAAAAABfgAAAAAAXQAAAAABXQAAAAACfgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAewAAAAABHwAAAAAAHwAAAAADHwAAAAADHwAAAAACHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAgAAAAAAHwAAAAADHwAAAAADHwAAAAABHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAgAAAAAAJAAAAAACJAAAAAAAJAAAAAADJAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHwAAAAABHwAAAAACHwAAAAACbAAAAAAAfgAAAAAAfgAAAAAAewAAAAADewAAAAADewAAAAAAfgAAAAAAaAAAAAAAaAAAAAACaAAAAAACAgAAAAAAJAAAAAADJAAAAAADHwAAAAABHwAAAAABHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAewAAAAAAewAAAAAAewAAAAAAfgAAAAAAaAAAAAACaAAAAAABaAAAAAADAgAAAAAAHwAAAAADHwAAAAACHwAAAAADHwAAAAABHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAADXQAAAAABfgAAAAAAAQAAAAABPAAAAAAAPAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAADXQAAAAACXQAAAAACAQAAAAABPAAAAAAAXQAAAAACfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAgQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAQAAAAABPAAAAAAAPAAAAAAA + tiles: ZQAAAAADZQAAAAAAZQAAAAADZQAAAAABZQAAAAAAXQAAAAABaAAAAAACaAAAAAABXQAAAAAAXQAAAAABaAAAAAABaAAAAAAAaAAAAAADaAAAAAADaAAAAAAAXQAAAAADTgAAAAADTgAAAAAAaAAAAAACTgAAAAADTgAAAAACaAAAAAADaAAAAAACaAAAAAAAXQAAAAAAXQAAAAACXwAAAAADaAAAAAABaAAAAAABaAAAAAAAXwAAAAAAaAAAAAACZQAAAAABZQAAAAAAZQAAAAACZQAAAAACZQAAAAABXQAAAAADaAAAAAABaAAAAAADXQAAAAABXQAAAAAAXwAAAAABaAAAAAABaAAAAAABaAAAAAADXwAAAAADaAAAAAABJAAAAAACJAAAAAABJAAAAAABJAAAAAAAJAAAAAACXQAAAAAAXQAAAAACfgAAAAAAXQAAAAAAXQAAAAAAaAAAAAAAaAAAAAADaAAAAAADaAAAAAADaAAAAAABaAAAAAACAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAXQAAAAADXQAAAAADfgAAAAAAXQAAAAAAXQAAAAADXQAAAAAAewAAAAACewAAAAACewAAAAAAewAAAAAAewAAAAAAJAAAAAACJAAAAAADJAAAAAAAJAAAAAACJAAAAAABXQAAAAADXQAAAAACfgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAewAAAAABHwAAAAAAHwAAAAACHwAAAAADHwAAAAABXQAAAAADXQAAAAAAXQAAAAAAXQAAAAADXQAAAAACXQAAAAAAXQAAAAABfgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAewAAAAACHwAAAAAAHwAAAAABHwAAAAAAHwAAAAABXQAAAAADXQAAAAADXQAAAAAAXQAAAAADfgAAAAAAXQAAAAADXQAAAAAAfgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAewAAAAAAHwAAAAABHwAAAAADHwAAAAACHwAAAAABHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAgAAAAAAHwAAAAACHwAAAAADHwAAAAABHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAgAAAAAAJAAAAAADJAAAAAABJAAAAAAAJAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHwAAAAACHwAAAAABHwAAAAADbAAAAAAAfgAAAAAAfgAAAAAAewAAAAACewAAAAAAewAAAAACfgAAAAAAaAAAAAAAaAAAAAAAaAAAAAABAgAAAAAAJAAAAAAAJAAAAAAAHwAAAAACHwAAAAACHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAewAAAAAAewAAAAAAewAAAAADfgAAAAAAaAAAAAAAaAAAAAAAaAAAAAACAgAAAAAAHwAAAAABHwAAAAACHwAAAAABHwAAAAABHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAABXQAAAAABfgAAAAAAAQAAAAACPAAAAAAAPAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAADXQAAAAACXQAAAAADAQAAAAADPAAAAAAAXQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAgQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAQAAAAADPAAAAAAAPAAAAAAA version: 6 -3,1: ind: -3,1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAgQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAAAaAAAAAABaAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAABaAAAAAADaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAegAAAAAAegAAAAADegAAAAABegAAAAADegAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAIwAAAAADfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAegAAAAAAegAAAAACegAAAAABegAAAAAAegAAAAADfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAIwAAAAAARQAAAAAAIwAAAAABfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAegAAAAACfgAAAAAAegAAAAACegAAAAAAegAAAAACfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAIwAAAAACfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAgQAAAAAAFQAAAAAGgQAAAAAAegAAAAACegAAAAABfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAgQAAAAAAggAAAAAAFQAAAAAGegAAAAAAfgAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAggAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAggAAAAAAegAAAAABfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAgQAAAAAAgQAAAAAAggAAAAACgQAAAAAAFQAAAAACfgAAAAAAegAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAFQAAAAACfgAAAAAAgQAAAAAAegAAAAAAegAAAAACegAAAAADegAAAAACfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAggAAAAABFQAAAAAGegAAAAACegAAAAACfgAAAAAAegAAAAABegAAAAADfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAgQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAAAaAAAAAACaAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAADaAAAAAADaAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAegAAAAADegAAAAABegAAAAADegAAAAABegAAAAABfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAIwAAAAABfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAegAAAAACegAAAAABegAAAAADegAAAAACegAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAIwAAAAADRQAAAAAAIwAAAAADfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAegAAAAACfgAAAAAAegAAAAACegAAAAABegAAAAABfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAIwAAAAADfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAgQAAAAAAFQAAAAAGgQAAAAAAegAAAAACegAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAgQAAAAAAggAAAAABFQAAAAABegAAAAACfgAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAggAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAggAAAAACegAAAAADfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAgQAAAAAAgQAAAAAAggAAAAABgQAAAAAAFQAAAAAFfgAAAAAAegAAAAABfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAFQAAAAAGfgAAAAAAgQAAAAAAegAAAAADegAAAAADegAAAAABegAAAAADfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAggAAAAACFQAAAAACegAAAAAAegAAAAACfgAAAAAAegAAAAABegAAAAADfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAA version: 6 -3,-2: ind: -3,-2 - tiles: aAAAAAADaAAAAAADaAAAAAADaAAAAAACXQAAAAACXQAAAAACfgAAAAAAXQAAAAABegAAAAADegAAAAADXQAAAAACEgAAAAAAEgAAAAAAEgAAAAABEgAAAAACEgAAAAAAfgAAAAAAfgAAAAAAJAAAAAABaAAAAAABXQAAAAABXQAAAAAAfgAAAAAAXQAAAAAAegAAAAACegAAAAACXQAAAAACEgAAAAADEgAAAAADEgAAAAADEgAAAAABEgAAAAADAwAAAAAAAwAAAAAAJAAAAAADaAAAAAABXQAAAAAAXQAAAAACfgAAAAAAXQAAAAABegAAAAACegAAAAAAXQAAAAABEgAAAAACEgAAAAAAEgAAAAAAEgAAAAACEgAAAAADAwAAAAAAAwAAAAAAJAAAAAADaAAAAAAAaAAAAAAAXQAAAAACaAAAAAADXQAAAAABegAAAAABegAAAAABXQAAAAABEgAAAAADEgAAAAAAEgAAAAACEgAAAAABEgAAAAADAwAAAAAAAwAAAAAAJAAAAAACaAAAAAAAaAAAAAAAXQAAAAACaAAAAAAAXQAAAAAAegAAAAACegAAAAAAXQAAAAACEgAAAAAAEgAAAAAAEgAAAAABEgAAAAABEgAAAAADAwAAAAAAAwAAAAAAJAAAAAADaAAAAAADXQAAAAAAXQAAAAABfgAAAAAAXQAAAAABegAAAAAAegAAAAACXQAAAAAAEgAAAAABEgAAAAADEgAAAAABEgAAAAAAEgAAAAABfgAAAAAAfgAAAAAAJAAAAAADaAAAAAADXQAAAAAAXQAAAAADfgAAAAAAXQAAAAADKAAAAAAAKAAAAAAAXQAAAAADXQAAAAADXQAAAAADXQAAAAAAXQAAAAADXQAAAAACaAAAAAAAaAAAAAADaAAAAAADaAAAAAABXQAAAAAAXQAAAAABfgAAAAAAXQAAAAAAKAAAAAABKAAAAAACKAAAAAAAKAAAAAACKAAAAAADKAAAAAACKAAAAAACKAAAAAADaAAAAAABaAAAAAABXQAAAAABXQAAAAAAXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAADaAAAAAACXQAAAAADXQAAAAABXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAADaAAAAAAAXQAAAAAAXQAAAAABXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAADaAAAAAAAXQAAAAAAXQAAAAACXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAegAAAAADegAAAAABegAAAAAAKwAAAAAAfgAAAAAAaQAAAAAAaQAAAAAAQwAAAAAAXQAAAAAAXQAAAAABXQAAAAADXQAAAAADXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAegAAAAABegAAAAAAegAAAAADKwAAAAAAfgAAAAAAaQAAAAAAaQAAAAAAQwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAegAAAAADegAAAAADegAAAAAAKwAAAAAAfgAAAAAAaQAAAAAAaQAAAAAAQwAAAAAAXQAAAAABfgAAAAAAewAAAAAAewAAAAABewAAAAADfgAAAAAAfgAAAAAAfgAAAAAAKwAAAAAAKwAAAAAAKwAAAAAAKwAAAAAAfgAAAAAAaQAAAAAAaQAAAAAAQwAAAAAAXQAAAAAAfgAAAAAAewAAAAAAewAAAAABewAAAAADfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAKAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAKAAAAAABKAAAAAAB + tiles: aAAAAAADaAAAAAABaAAAAAAAaAAAAAAAXQAAAAACXQAAAAAAfgAAAAAAXQAAAAACegAAAAAAegAAAAACXQAAAAACEgAAAAACEgAAAAABEgAAAAAAEgAAAAAAEgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAaAAAAAADXQAAAAADXQAAAAABfgAAAAAAXQAAAAADegAAAAABegAAAAAAXQAAAAADEgAAAAAAEgAAAAADEgAAAAACEgAAAAACEgAAAAAAAwAAAAAAAwAAAAAAJAAAAAABaAAAAAABXQAAAAADXQAAAAACfgAAAAAAXQAAAAAAegAAAAAAegAAAAAAXQAAAAABEgAAAAACEgAAAAAAEgAAAAAAEgAAAAAAEgAAAAABAwAAAAAAAwAAAAAAJAAAAAABaAAAAAABaAAAAAADXQAAAAACaAAAAAACXQAAAAAAegAAAAACegAAAAABXQAAAAABEgAAAAABEgAAAAADEgAAAAABEgAAAAADEgAAAAADAwAAAAAAAwAAAAAAJAAAAAAAaAAAAAADaAAAAAABXQAAAAAAaAAAAAADXQAAAAADegAAAAADegAAAAACXQAAAAABEgAAAAAAEgAAAAADEgAAAAACEgAAAAADEgAAAAADAwAAAAAAAwAAAAAAJAAAAAACaAAAAAABXQAAAAACXQAAAAADfgAAAAAAXQAAAAABegAAAAADegAAAAACXQAAAAAAEgAAAAABEgAAAAADEgAAAAAAEgAAAAACEgAAAAABfgAAAAAAfgAAAAAAJAAAAAABaAAAAAAAXQAAAAADXQAAAAACfgAAAAAAXQAAAAACKAAAAAACKAAAAAADXQAAAAAAXQAAAAAAXQAAAAADXQAAAAACXQAAAAADXQAAAAADaAAAAAACaAAAAAACaAAAAAAAaAAAAAACXQAAAAABXQAAAAADfgAAAAAAXQAAAAABKAAAAAABKAAAAAADKAAAAAADKAAAAAACKAAAAAAAKAAAAAACKAAAAAADKAAAAAABaAAAAAACaAAAAAAAXQAAAAAAXQAAAAADXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAADaAAAAAADXQAAAAACXQAAAAADXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAACaAAAAAADXQAAAAABXQAAAAABXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAABaAAAAAAAXQAAAAADXQAAAAACXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAegAAAAABegAAAAABegAAAAAAKwAAAAAAfgAAAAAAaQAAAAAAaQAAAAAAQwAAAAAAXQAAAAACXQAAAAABXQAAAAABXQAAAAABXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAegAAAAADegAAAAADegAAAAACKwAAAAAAfgAAAAAAaQAAAAAAaQAAAAAAQwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAegAAAAABegAAAAACegAAAAABKwAAAAAAfgAAAAAAaQAAAAAAaQAAAAAAQwAAAAAAXQAAAAABfgAAAAAAewAAAAABewAAAAACewAAAAABfgAAAAAAfgAAAAAAfgAAAAAAKwAAAAAAKwAAAAAAKwAAAAAAKwAAAAAAfgAAAAAAaQAAAAAAaQAAAAAAQwAAAAAAXQAAAAACfgAAAAAAewAAAAABewAAAAACewAAAAADfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAKAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAKAAAAAAAKAAAAAAA version: 6 -3,-3: ind: -3,-3 - tiles: XQAAAAACXQAAAAADXQAAAAAAXQAAAAADXQAAAAACXQAAAAABXQAAAAABaAAAAAACXQAAAAAAfgAAAAAABwAAAAAGBwAAAAAABwAAAAACAAAAAAAAfQAAAAAAAAAAAAAATgAAAAACTgAAAAADaAAAAAADTgAAAAABTgAAAAAAaAAAAAAAaAAAAAAAaAAAAAADXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAACXQAAAAACXQAAAAABXQAAAAADXQAAAAABXQAAAAABXQAAAAACXQAAAAACXQAAAAAAfgAAAAAAJAAAAAAAJAAAAAABHwAAAAACHwAAAAABfgAAAAAAegAAAAACaAAAAAACaAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAJAAAAAACHwAAAAABHwAAAAADfgAAAAAAegAAAAADaAAAAAABXQAAAAACfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAJAAAAAABJAAAAAAAHwAAAAABHwAAAAAAfgAAAAAAegAAAAADTgAAAAACXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAQgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAATgAAAAAAXQAAAAADfgAAAAAABwAAAAAABwAAAAAABwAAAAADBwAAAAAABwAAAAAABwAAAAAABwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAaAAAAAACXQAAAAACfgAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAIBwAAAAAABwAAAAAABwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAATgAAAAACXQAAAAAAfgAAAAAABwAAAAAABwAAAAAABwAAAAAIBwAAAAAABwAAAAAABwAAAAAABwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAKAAAAAADXQAAAAAATgAAAAADXQAAAAAAfgAAAAAABwAAAAAFBwAAAAAABwAAAAAABwAAAAAABwAAAAAHfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAKAAAAAACXQAAAAACaAAAAAAAXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAewAAAAABTgAAAAABXQAAAAABXQAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAewAAAAAATgAAAAABXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAewAAAAAAaAAAAAADXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAaAAAAAADaAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAKAAAAAADKAAAAAACKAAAAAACKAAAAAAAKAAAAAAAKAAAAAACKAAAAAABKAAAAAABaAAAAAADXQAAAAADXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADKAAAAAADKAAAAAACXQAAAAACXQAAAAADXQAAAAACXQAAAAABXQAAAAABXQAAAAAB + tiles: XQAAAAADXQAAAAADXQAAAAACXQAAAAABXQAAAAABXQAAAAACXQAAAAACaAAAAAADXQAAAAAAfgAAAAAABwAAAAAABwAAAAAABwAAAAAHAAAAAAAAfQAAAAAAAAAAAAAATgAAAAACTgAAAAAAaAAAAAACTgAAAAACTgAAAAABaAAAAAAAaAAAAAACaAAAAAABXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAABXQAAAAABXQAAAAAAXQAAAAACXQAAAAABXQAAAAAAXQAAAAAAXQAAAAADXQAAAAABfgAAAAAAJAAAAAADJAAAAAADHwAAAAAAHwAAAAAAfgAAAAAAegAAAAABaAAAAAADaAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAADJAAAAAADHwAAAAABHwAAAAABfgAAAAAAegAAAAACaAAAAAACXQAAAAADfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAJAAAAAACJAAAAAAAHwAAAAAAHwAAAAAAfgAAAAAAegAAAAACTgAAAAACXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAQgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAATgAAAAADXQAAAAAAfgAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAaAAAAAAAXQAAAAACfgAAAAAABwAAAAAABwAAAAALBwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAATgAAAAADXQAAAAACfgAAAAAABwAAAAACBwAAAAAABwAAAAABBwAAAAAABwAAAAAFBwAAAAAABwAAAAAJfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAKAAAAAADXQAAAAABTgAAAAADXQAAAAAAfgAAAAAABwAAAAAABwAAAAAABwAAAAABBwAAAAAABwAAAAALfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAKAAAAAABXQAAAAABaAAAAAAAXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAewAAAAADTgAAAAADXQAAAAADXQAAAAABbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAewAAAAADTgAAAAABXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAewAAAAAAaAAAAAABXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAaAAAAAAAaAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACKAAAAAAAKAAAAAABKAAAAAAAKAAAAAAAKAAAAAACKAAAAAAAKAAAAAAAKAAAAAABaAAAAAACXQAAAAABXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABKAAAAAADKAAAAAADXQAAAAADXQAAAAAAXQAAAAABXQAAAAADXQAAAAABXQAAAAAC version: 6 -4,0: ind: -4,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAaAAAAAACaAAAAAABXQAAAAABXQAAAAADZQAAAAAAZQAAAAAAZQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAaAAAAAABaAAAAAACaAAAAAADaAAAAAACTgAAAAACTgAAAAADaAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAaAAAAAACaAAAAAAAXQAAAAACXQAAAAADZQAAAAADZQAAAAAAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABaAAAAAAAXQAAAAADJAAAAAABJAAAAAAAJAAAAAAAJAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAABaAAAAAABXQAAAAAAXQAAAAADAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABaAAAAAABXQAAAAABXQAAAAADJAAAAAABJAAAAAACJAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAAAaAAAAAAAXQAAAAADXQAAAAADXQAAAAADXQAAAAAAXQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADXQAAAAABXQAAAAADfgAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAABXQAAAAAAXQAAAAABfgAAAAAAHwAAAAACHwAAAAACHwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAADXQAAAAACXQAAAAACfgAAAAAAJAAAAAACJAAAAAAAJAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAJAAAAAACJAAAAAADJAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAHwAAAAACHwAAAAACHwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAaAAAAAACaAAAAAADXQAAAAADXQAAAAAAZQAAAAABZQAAAAACZQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAaAAAAAABaAAAAAACaAAAAAAAaAAAAAAATgAAAAABTgAAAAABaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAaAAAAAACaAAAAAADXQAAAAADXQAAAAABZQAAAAACZQAAAAAAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABaAAAAAAAXQAAAAAAJAAAAAADJAAAAAAAJAAAAAADJAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAAAaAAAAAADXQAAAAADXQAAAAABAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACaAAAAAAAXQAAAAADXQAAAAACJAAAAAABJAAAAAAAJAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAADaAAAAAADXQAAAAABXQAAAAABXQAAAAACXQAAAAAAXQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAABXQAAAAABfgAAAAAAXQAAAAAAXQAAAAABXQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAABXQAAAAABXQAAAAABfgAAAAAAHwAAAAABHwAAAAAAHwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAAAXQAAAAABXQAAAAAAfgAAAAAAJAAAAAAAJAAAAAAAJAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAJAAAAAAAJAAAAAADJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAHwAAAAACHwAAAAACHwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAA version: 6 -4,-1: ind: -4,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAABTgAAAAADXQAAAAADfgAAAAAAHwAAAAADHwAAAAADHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAACTgAAAAACXQAAAAABfgAAAAAAHwAAAAABHwAAAAAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAAAaAAAAAACXQAAAAADfgAAAAAAHwAAAAACHwAAAAABHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAADTgAAAAACXQAAAAABfgAAAAAAHwAAAAAAHwAAAAAAHwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAAATgAAAAADXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAABTgAAAAADXQAAAAACXQAAAAADbAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAACaAAAAAAAXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAAATgAAAAAAXQAAAAADfgAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAAATgAAAAACXQAAAAACfgAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAABaAAAAAAAXQAAAAADfgAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAAAaAAAAAADXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAABaAAAAAACaAAAAAABfgAAAAAAXQAAAAACXQAAAAACXQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAACaAAAAAAAXQAAAAADXQAAAAABXQAAAAABXQAAAAACXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACaAAAAAABXQAAAAACXQAAAAACJAAAAAADJAAAAAABJAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAAAaAAAAAADXQAAAAABXQAAAAABAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABaAAAAAAAXQAAAAABJAAAAAABJAAAAAAAJAAAAAAAJAAAAAAC + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAABTgAAAAAAXQAAAAACfgAAAAAAHwAAAAADHwAAAAACHwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAACTgAAAAACXQAAAAABfgAAAAAAHwAAAAAAHwAAAAACHwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAAAaAAAAAAAXQAAAAAAfgAAAAAAHwAAAAACHwAAAAACHwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAABTgAAAAABXQAAAAAAfgAAAAAAHwAAAAADHwAAAAADHwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAADTgAAAAABXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAACTgAAAAAAXQAAAAABXQAAAAADbAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAADaAAAAAADXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAACTgAAAAACXQAAAAACfgAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAACTgAAAAADXQAAAAABfgAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAADaAAAAAACXQAAAAABfgAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAABaAAAAAADXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAACaAAAAAADaAAAAAAAfgAAAAAAXQAAAAADXQAAAAADXQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAADaAAAAAAAXQAAAAACXQAAAAACXQAAAAACXQAAAAABXQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAaAAAAAABXQAAAAADXQAAAAAAJAAAAAADJAAAAAADJAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAACaAAAAAADXQAAAAADXQAAAAADAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACaAAAAAADXQAAAAAAJAAAAAAAJAAAAAABJAAAAAACJAAAAAAA version: 6 -4,-2: ind: -4,-2 - tiles: fgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABaAAAAAACaAAAAAADaAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACaAAAAAACJAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAADHwAAAAAAHwAAAAAAfgAAAAAAXQAAAAAAaAAAAAACJAAAAAACAwAAAAAAbAAAAAAAfgAAAAAAJAAAAAABHwAAAAAAHwAAAAACHwAAAAAAfgAAAAAAHwAAAAABHwAAAAABHwAAAAACHwAAAAAAfgAAAAAAXQAAAAABaAAAAAACJAAAAAACAwAAAAAAfgAAAAAAfgAAAAAAegAAAAAAegAAAAABegAAAAABHwAAAAACHwAAAAABHwAAAAADHwAAAAAAHwAAAAAAHwAAAAACfgAAAAAAXQAAAAACaAAAAAACJAAAAAABAwAAAAAAfgAAAAAAfgAAAAAAegAAAAABegAAAAABegAAAAAAHwAAAAACfgAAAAAAXQAAAAAAXQAAAAADXQAAAAACXQAAAAAAfgAAAAAAXQAAAAAAaAAAAAADJAAAAAABAwAAAAAAfgAAAAAAfgAAAAAAegAAAAABegAAAAACegAAAAADHwAAAAADfgAAAAAAaAAAAAADaAAAAAADaAAAAAACaAAAAAADaAAAAAABXQAAAAAAaAAAAAADJAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAADHwAAAAABHwAAAAACHwAAAAADfgAAAAAAaAAAAAABaAAAAAABaAAAAAADaAAAAAABaAAAAAADXQAAAAAAaAAAAAABaAAAAAAAaAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAAAXQAAAAADXQAAAAABfgAAAAAAXQAAAAADXQAAAAADXQAAAAADaAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAADXQAAAAAAaAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAXQAAAAADXQAAAAADXQAAAAABXQAAAAACXQAAAAACXQAAAAABXQAAAAAAaAAAAAADfgAAAAAAfgAAAAAAXQAAAAABXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADaAAAAAAAaAAAAAABaAAAAAABaAAAAAABaAAAAAABaAAAAAADfQAAAAAAfgAAAAAAXQAAAAACXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAXQAAAAABaAAAAAAAXQAAAAACXQAAAAACXQAAAAACXQAAAAABXQAAAAABAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAaAAAAAAAaAAAAAADaAAAAAACfgAAAAAAfgAAAAAAXQAAAAABXQAAAAADAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAACaAAAAAACXQAAAAAAfgAAAAAAXQAAAAADXQAAAAABXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAADaAAAAAABXQAAAAAAfgAAAAAAXQAAAAACXQAAAAACXQAAAAAC + tiles: fgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACaAAAAAACaAAAAAADaAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADaAAAAAADJAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAADHwAAAAAAHwAAAAACHwAAAAACfgAAAAAAXQAAAAABaAAAAAACJAAAAAAAAwAAAAAAbAAAAAAAfgAAAAAAJAAAAAAAHwAAAAAAHwAAAAAAHwAAAAACfgAAAAAAHwAAAAAAHwAAAAABHwAAAAACHwAAAAADfgAAAAAAXQAAAAAAaAAAAAACJAAAAAADAwAAAAAAfgAAAAAAfgAAAAAAegAAAAAAegAAAAACegAAAAADHwAAAAABHwAAAAADHwAAAAABHwAAAAADHwAAAAADHwAAAAADfgAAAAAAXQAAAAACaAAAAAABJAAAAAAAAwAAAAAAfgAAAAAAfgAAAAAAegAAAAADegAAAAADegAAAAABHwAAAAABfgAAAAAAXQAAAAABXQAAAAABXQAAAAADXQAAAAABfgAAAAAAXQAAAAACaAAAAAABJAAAAAAAAwAAAAAAfgAAAAAAfgAAAAAAegAAAAADegAAAAADegAAAAADHwAAAAACfgAAAAAAaAAAAAAAaAAAAAAAaAAAAAADaAAAAAAAaAAAAAAAXQAAAAAAaAAAAAABJAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABHwAAAAAAHwAAAAABHwAAAAABfgAAAAAAaAAAAAACaAAAAAAAaAAAAAACaAAAAAADaAAAAAABXQAAAAACaAAAAAACaAAAAAABaAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAADXQAAAAABXQAAAAAAfgAAAAAAXQAAAAACXQAAAAABXQAAAAACaAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAACXQAAAAACaAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAXQAAAAABXQAAAAABXQAAAAADXQAAAAAAXQAAAAACXQAAAAACXQAAAAACaAAAAAACfgAAAAAAfgAAAAAAXQAAAAADXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADaAAAAAACaAAAAAACaAAAAAAAaAAAAAABaAAAAAADaAAAAAAAfQAAAAAAfgAAAAAAXQAAAAACXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAXQAAAAADaAAAAAABXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAABXQAAAAADAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAaAAAAAABaAAAAAAAaAAAAAADfgAAAAAAfgAAAAAAXQAAAAACXQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAADaAAAAAAAXQAAAAACfgAAAAAAXQAAAAADXQAAAAABXQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAABaAAAAAADXQAAAAACfgAAAAAAXQAAAAADXQAAAAACXQAAAAAC version: 6 -4,-3: ind: -4,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAXQAAAAADaAAAAAABXQAAAAADXQAAAAACXQAAAAADXQAAAAACXQAAAAAAXQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAXQAAAAACaAAAAAAAaAAAAAABaAAAAAADTgAAAAAATgAAAAADaAAAAAABTgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAXQAAAAABXQAAAAADXQAAAAADXQAAAAADXQAAAAAAXQAAAAADXQAAAAAAXQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAADAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAABAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAXQAAAAACXQAAAAACXgAAAAAAXQAAAAAAXQAAAAABXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAXQAAAAACXQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAAAXQAAAAAAXQAAAAADXQAAAAABXgAAAAAAXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAADXgAAAAAAXgAAAAAAXQAAAAAAXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAYQAAAAACYQAAAAABXgAAAAABXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAAD + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAXQAAAAAAaAAAAAACXQAAAAAAXQAAAAACXQAAAAACXQAAAAADXQAAAAACXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAXQAAAAABaAAAAAADaAAAAAABaAAAAAAATgAAAAAATgAAAAABaAAAAAAATgAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAXQAAAAAAXQAAAAADXQAAAAAAXQAAAAADXQAAAAAAXQAAAAACXQAAAAABXQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAABAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAADAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAADAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAXQAAAAABXQAAAAADXgAAAAABXQAAAAADXQAAAAADXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAXQAAAAADXQAAAAACfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAACXQAAAAABXQAAAAAAXQAAAAAAXgAAAAABXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAACXgAAAAABXgAAAAABXQAAAAACXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADYQAAAAAEYQAAAAAAXgAAAAAAXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAAA version: 6 2,0: ind: 2,0 - tiles: HwAAAAAAHwAAAAAAHwAAAAAAfgAAAAAAaAAAAAACaAAAAAAAaAAAAAAAfgAAAAAAfgAAAAAAaAAAAAACaAAAAAADaAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAACXQAAAAACaAAAAAABXQAAAAADdQAAAAACdQAAAAAAdQAAAAACfgAAAAAAXQAAAAAAXQAAAAABXQAAAAABJAAAAAACXQAAAAADXQAAAAAAXQAAAAACaAAAAAADXQAAAAAAXQAAAAACTgAAAAACXQAAAAABdQAAAAACdQAAAAAAdQAAAAADfgAAAAAAaAAAAAADaAAAAAABaAAAAAADaAAAAAACTgAAAAABTgAAAAACaAAAAAAAaAAAAAAAaAAAAAABTgAAAAACTgAAAAABXQAAAAABdQAAAAABdQAAAAAAaAAAAAACfgAAAAAAXQAAAAABXQAAAAACXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAACXQAAAAADaAAAAAAAXQAAAAABXQAAAAACXQAAAAACXQAAAAABdQAAAAABdQAAAAAAdQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAACcAAAAAABcAAAAAABcAAAAAADcAAAAAADcAAAAAAAcAAAAAAAfgAAAAAAXQAAAAAAXQAAAAADXQAAAAABfgAAAAAAbAAAAAAAfgAAAAAAXQAAAAADfgAAAAAAXQAAAAACfgAAAAAAcAAAAAAAcAAAAAADcAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADXQAAAAACXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACfgAAAAAAdQAAAAADdQAAAAAAcAAAAAACcAAAAAADcAAAAAADcAAAAAAAcAAAAAABdQAAAAABXQAAAAAAXQAAAAABXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAdQAAAAACdQAAAAADTgAAAAACcAAAAAADdQAAAAAAcAAAAAAATgAAAAADdQAAAAAAXQAAAAACXQAAAAABXQAAAAABbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAdQAAAAAAcAAAAAABcAAAAAADcAAAAAADcAAAAAABcAAAAAABdQAAAAAAXQAAAAACXQAAAAAAXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAdQAAAAADdAAAAAADdQAAAAABdQAAAAAAdQAAAAADdAAAAAABdQAAAAACfgAAAAAAXQAAAAADegAAAAAAegAAAAADegAAAAACegAAAAACfgAAAAAAfgAAAAAAfgAAAAAAdQAAAAACdAAAAAAAdQAAAAAAdQAAAAABdQAAAAAAdAAAAAACJAAAAAACXQAAAAACXQAAAAABegAAAAAAegAAAAADegAAAAABegAAAAACfgAAAAAAfgAAAAAAfgAAAAAAdQAAAAAAcAAAAAADcAAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAABfgAAAAAAXQAAAAADegAAAAAAegAAAAAAegAAAAACegAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAJAAAAAABJAAAAAADHwAAAAAAJAAAAAAAfgAAAAAAXQAAAAABegAAAAADegAAAAABegAAAAADegAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAADJAAAAAACJAAAAAABTwAAAAAATwAAAAAA + tiles: HwAAAAAAHwAAAAAAHwAAAAABfgAAAAAAaAAAAAAAaAAAAAABaAAAAAAAfgAAAAAAfgAAAAAAaAAAAAACaAAAAAABaAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAABXQAAAAAAaAAAAAAAXQAAAAAAdQAAAAADdQAAAAACdQAAAAACfgAAAAAAXQAAAAAAXQAAAAADXQAAAAAAJAAAAAAAXQAAAAAAXQAAAAABXQAAAAAAaAAAAAAAXQAAAAADXQAAAAACTgAAAAAAXQAAAAABdQAAAAABdQAAAAACdQAAAAADfgAAAAAAaAAAAAAAaAAAAAAAaAAAAAACaAAAAAABTgAAAAACTgAAAAABaAAAAAAAaAAAAAADaAAAAAABTgAAAAADTgAAAAABXQAAAAABdQAAAAADdQAAAAAAaAAAAAADfgAAAAAAXQAAAAABXQAAAAADXQAAAAAAXQAAAAACXQAAAAABXQAAAAAAXQAAAAABaAAAAAAAXQAAAAABXQAAAAABXQAAAAAAXQAAAAACdQAAAAADdQAAAAABdQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAAAcAAAAAAAcAAAAAADcAAAAAAAcAAAAAAAcAAAAAABcAAAAAADfgAAAAAAXQAAAAABXQAAAAACXQAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAXQAAAAACfgAAAAAAXQAAAAACfgAAAAAAcAAAAAADcAAAAAADcAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAACXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACfgAAAAAAdQAAAAADdQAAAAABcAAAAAACcAAAAAABcAAAAAABcAAAAAACcAAAAAAAdQAAAAACXQAAAAACXQAAAAADXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAdQAAAAAAdQAAAAADTgAAAAACcAAAAAACdQAAAAABcAAAAAADTgAAAAACdQAAAAACXQAAAAADXQAAAAACXQAAAAACbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAdQAAAAABcAAAAAADcAAAAAACcAAAAAABcAAAAAABcAAAAAABdQAAAAAAXQAAAAADXQAAAAACXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAdQAAAAABdAAAAAABdQAAAAACdQAAAAADdQAAAAADdAAAAAABdQAAAAACfgAAAAAAXQAAAAADegAAAAADegAAAAABegAAAAAAegAAAAACfgAAAAAAfgAAAAAAfgAAAAAAdQAAAAABdAAAAAADdQAAAAAAdQAAAAACdQAAAAACdAAAAAADJAAAAAADXQAAAAACXQAAAAAAegAAAAABegAAAAADegAAAAACegAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAdQAAAAACcAAAAAAAcAAAAAAAcAAAAAACcAAAAAABcAAAAAAAcAAAAAABfgAAAAAAXQAAAAACegAAAAAAegAAAAADegAAAAABegAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAJAAAAAACJAAAAAADHwAAAAADJAAAAAACfgAAAAAAXQAAAAAAegAAAAABegAAAAADegAAAAABegAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAACJAAAAAADJAAAAAAATwAAAAAATwAAAAAA version: 6 -5,-2: ind: -5,-2 @@ -222,71 +222,71 @@ entities: version: 6 0,2: ind: 0,2 - tiles: fgAAAAAAfgAAAAAATwAAAAAAHwAAAAAAHwAAAAACHwAAAAACHwAAAAADTwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAALgAAAAAALgAAAAAALgAAAAAAfgAAAAAAfgAAAAAATwAAAAAATwAAAAAATwAAAAAATwAAAAAATwAAAAAATwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAADHwAAAAACHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAHwAAAAABHwAAAAACHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAACHwAAAAADbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAAAHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAHwAAAAADHwAAAAAAHwAAAAAAfgAAAAAAdAAAAAABdAAAAAADdQAAAAABfgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAHwAAAAAAHwAAAAACHwAAAAADfgAAAAAAfgAAAAAAHwAAAAACfgAAAAAAfgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAHwAAAAAAHwAAAAADHwAAAAAAfgAAAAAAHwAAAAADHwAAAAAAHwAAAAACfgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAHwAAAAACHwAAAAABHwAAAAABfgAAAAAAHwAAAAAAHwAAAAABHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAHwAAAAAAHwAAAAACHwAAAAACfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAABHwAAAAAAHwAAAAABHwAAAAABfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAADHwAAAAADHwAAAAAAHwAAAAABfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: fgAAAAAAfgAAAAAATwAAAAAAHwAAAAAAHwAAAAAAHwAAAAADHwAAAAACTwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAALgAAAAAALgAAAAAALgAAAAAAfgAAAAAAfgAAAAAATwAAAAAATwAAAAAATwAAAAAATwAAAAAATwAAAAAATwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABHwAAAAABHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAHwAAAAAAHwAAAAADHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAABHwAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABHwAAAAABHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAHwAAAAADHwAAAAAAHwAAAAABfgAAAAAAdAAAAAADdAAAAAAAdQAAAAABfgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAfgAAAAAAfgAAAAAAHwAAAAADfgAAAAAAfgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAHwAAAAADHwAAAAACHwAAAAACfgAAAAAAHwAAAAAAHwAAAAAAHwAAAAABfgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAHwAAAAAAHwAAAAABHwAAAAACfgAAAAAAHwAAAAAAHwAAAAADHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAADHwAAAAAAHwAAAAABHwAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAADHwAAAAABHwAAAAACHwAAAAACfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAACHwAAAAADHwAAAAAAHwAAAAACfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 -1,2: ind: -1,2 - tiles: HwAAAAAAHwAAAAABewAAAAADewAAAAACewAAAAACXQAAAAABXQAAAAAAXQAAAAACXQAAAAADXQAAAAAAJAAAAAAAJAAAAAAAfgAAAAAAXQAAAAADXQAAAAAAXQAAAAADfgAAAAAAHwAAAAACewAAAAABewAAAAACewAAAAADXQAAAAABXQAAAAADXQAAAAAAXQAAAAAAXQAAAAACHwAAAAACHwAAAAABfgAAAAAAHwAAAAACHwAAAAADHwAAAAAAfgAAAAAAHwAAAAABewAAAAABewAAAAABewAAAAABXQAAAAABXQAAAAADXQAAAAABXQAAAAADXQAAAAAAHwAAAAADHwAAAAACfgAAAAAAHwAAAAABHwAAAAAAHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACHwAAAAAAXQAAAAACfgAAAAAAbAAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAXQAAAAACHwAAAAACXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAHwAAAAAAXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAfgAAAAAAHwAAAAADHwAAAAABHwAAAAAAHwAAAAAAHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAdQAAAAACdAAAAAAAdAAAAAADfgAAAAAAHwAAAAABHwAAAAABHwAAAAADHwAAAAADgQAAAAAAHwAAAAABHwAAAAADHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAACHwAAAAADfgAAAAAAJAAAAAACJAAAAAAAJAAAAAABfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAHwAAAAACHwAAAAADHwAAAAABfgAAAAAAXQAAAAACXQAAAAAAXQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAHwAAAAABfgAAAAAAfgAAAAAAXQAAAAABfgAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAHwAAAAABHwAAAAAAHwAAAAAAXQAAAAAAXQAAAAABXQAAAAABXQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAHwAAAAACHwAAAAAAHwAAAAABXQAAAAAAXQAAAAADXQAAAAABXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAHwAAAAABHwAAAAABHwAAAAACXQAAAAACXQAAAAAAXQAAAAABXQAAAAAB + tiles: HwAAAAACHwAAAAAAewAAAAAAewAAAAACewAAAAACXQAAAAACXQAAAAABXQAAAAAAXQAAAAACXQAAAAACJAAAAAAAJAAAAAACfgAAAAAAXQAAAAABXQAAAAABXQAAAAACfgAAAAAAHwAAAAADewAAAAADewAAAAADewAAAAACXQAAAAAAXQAAAAABXQAAAAAAXQAAAAAAXQAAAAACHwAAAAADHwAAAAADfgAAAAAAHwAAAAABHwAAAAAAHwAAAAABfgAAAAAAHwAAAAADewAAAAACewAAAAACewAAAAACXQAAAAACXQAAAAADXQAAAAABXQAAAAACXQAAAAABHwAAAAADHwAAAAABfgAAAAAAHwAAAAAAHwAAAAACHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAHwAAAAADXQAAAAABfgAAAAAAbAAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAXQAAAAAAHwAAAAADXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAHwAAAAACXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABfgAAAAAAHwAAAAADHwAAAAACHwAAAAABHwAAAAADHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAdQAAAAADdAAAAAADdAAAAAACfgAAAAAAHwAAAAACHwAAAAADHwAAAAACHwAAAAADgQAAAAAAHwAAAAADHwAAAAABHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACfgAAAAAAfgAAAAAAHwAAAAADHwAAAAACHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAADHwAAAAADHwAAAAADfgAAAAAAJAAAAAABJAAAAAACJAAAAAADfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAHwAAAAADHwAAAAAAHwAAAAACfgAAAAAAXQAAAAABXQAAAAABXQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAHwAAAAACfgAAAAAAfgAAAAAAXQAAAAACfgAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAHwAAAAABHwAAAAACHwAAAAACXQAAAAABXQAAAAACXQAAAAACXQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAHwAAAAABHwAAAAAAHwAAAAAAXQAAAAACXQAAAAACXQAAAAAAXQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAHwAAAAACHwAAAAADHwAAAAAAXQAAAAADXQAAAAABXQAAAAADXQAAAAAC version: 6 -2,2: ind: -2,2 - tiles: fQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABHwAAAAACXQAAAAAAfgAAAAAAHwAAAAAAHwAAAAABHwAAAAABHwAAAAACHwAAAAAAHwAAAAAAfgAAAAAAXQAAAAADXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADfgAAAAAAHwAAAAAAHwAAAAADHwAAAAACHwAAAAACHwAAAAACHwAAAAADfgAAAAAAXQAAAAACXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAAAXQAAAAADXQAAAAABXQAAAAACXQAAAAADXQAAAAABXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAABXQAAAAABXQAAAAADXQAAAAADXQAAAAAAXQAAAAABXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAfgAAAAAAXQAAAAABXQAAAAADXQAAAAAAXQAAAAACXQAAAAADXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAHwAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAHwAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAA + tiles: fQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAACXQAAAAADfgAAAAAAHwAAAAACHwAAAAADHwAAAAABHwAAAAACHwAAAAACHwAAAAAAfgAAAAAAXQAAAAACXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABfgAAAAAAHwAAAAACHwAAAAADHwAAAAAAHwAAAAAAHwAAAAADHwAAAAABfgAAAAAAXQAAAAACXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAACXQAAAAAAXQAAAAAAXQAAAAABXQAAAAAAXQAAAAABXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAADXQAAAAAAXQAAAAAAXQAAAAABXQAAAAADXQAAAAACXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACfgAAAAAAXQAAAAABXQAAAAABXQAAAAACXQAAAAADXQAAAAACXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAHwAAAAADAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAHwAAAAABAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAA version: 6 -1,3: ind: -1,3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAHwAAAAACHwAAAAAAHwAAAAAAJAAAAAACXQAAAAACXQAAAAADXQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAADfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAXQAAAAADXQAAAAACXQAAAAAAXQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAXQAAAAACXQAAAAACXQAAAAACXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAXQAAAAABHwAAAAABHwAAAAABXQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAHwAAAAADHwAAAAACXQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAHwAAAAAAHwAAAAACHwAAAAABJAAAAAAAXQAAAAABXQAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADXQAAAAADfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAXQAAAAABXQAAAAABXQAAAAACXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAXQAAAAACXQAAAAADXQAAAAABXQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAXQAAAAADHwAAAAADHwAAAAACXQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAABXQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 0,3: ind: 0,3 - tiles: XQAAAAABHwAAAAACHwAAAAADJAAAAAACfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAADfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAADXQAAAAABXQAAAAACXQAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAHwAAAAAAHwAAAAABXQAAAAADfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAADHwAAAAABHwAAAAACfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: XQAAAAAAHwAAAAADHwAAAAAAJAAAAAACfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAACXQAAAAADXQAAAAAAXQAAAAABfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAXQAAAAADXQAAAAACXQAAAAABfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAACHwAAAAACHwAAAAABXQAAAAADfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAADHwAAAAAAHwAAAAACfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 2,1: ind: 2,1 - tiles: fgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAJAAAAAABJAAAAAADTwAAAAAATwAAAAAAfgAAAAAAJAAAAAAAHwAAAAACHwAAAAABHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAADHwAAAAADHwAAAAABHwAAAAABHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAADTgAAAAAATgAAAAADHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADHwAAAAAATgAAAAADTgAAAAABHwAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAHwAAAAADHwAAAAAAaAAAAAABHwAAAAAAHwAAAAAAHwAAAAACHwAAAAACfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAMAAAAAAAMAAAAAAAfgAAAAAAHwAAAAADHwAAAAAAHwAAAAADHwAAAAACfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: fgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAJAAAAAADJAAAAAABTwAAAAAATwAAAAAAfgAAAAAAJAAAAAAAHwAAAAABHwAAAAAAHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAADHwAAAAACHwAAAAAAHwAAAAADHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACTgAAAAADTgAAAAABHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAHwAAAAAATgAAAAACTgAAAAABHwAAAAACfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAHwAAAAABHwAAAAACaAAAAAADHwAAAAADHwAAAAADHwAAAAAAHwAAAAACfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAMAAAAAAAMAAAAAAAfgAAAAAAHwAAAAAAHwAAAAACHwAAAAABHwAAAAADfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 3,0: ind: 3,0 - tiles: fgAAAAAAdQAAAAACdQAAAAABdQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAAAcAAAAAAAfgAAAAAAdQAAAAACdQAAAAADdQAAAAACcAAAAAAAdQAAAAABcAAAAAABfgAAAAAAcAAAAAACcAAAAAADdQAAAAADdQAAAAAAdQAAAAABfgAAAAAAcAAAAAACdQAAAAACdQAAAAABdQAAAAAAdQAAAAACdQAAAAAAcAAAAAAAdQAAAAADcAAAAAACcAAAAAACcAAAAAABcAAAAAAAdQAAAAABdQAAAAABdQAAAAADdQAAAAABdQAAAAADdQAAAAADcAAAAAAAcAAAAAABcAAAAAACdQAAAAADcAAAAAACdQAAAAAAcAAAAAADcAAAAAAAcAAAAAADcAAAAAAAdQAAAAADdQAAAAAAdQAAAAADfgAAAAAAcAAAAAABdQAAAAAAdQAAAAACdQAAAAAAdQAAAAAAdQAAAAABcAAAAAAAdQAAAAADcAAAAAACfgAAAAAAcAAAAAADcAAAAAADdQAAAAABdQAAAAAAdQAAAAACfgAAAAAAcAAAAAAAcAAAAAABfgAAAAAAdQAAAAABdQAAAAADdQAAAAAAcAAAAAABdQAAAAACJAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAADdQAAAAADcAAAAAACfgAAAAAAcAAAAAAAcAAAAAADcAAAAAAAcAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAdQAAAAACcAAAAAADdQAAAAADcAAAAAACcAAAAAACcAAAAAAAdQAAAAADdQAAAAAAdQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAdQAAAAAAdQAAAAAAdQAAAAABcAAAAAAAfgAAAAAAcAAAAAAAdQAAAAADdQAAAAAAdQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADdQAAAAACcAAAAAACdQAAAAADcAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAXQAAAAADfgAAAAAAcAAAAAABdQAAAAADcAAAAAADfgAAAAAAJAAAAAACHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAABegAAAAACegAAAAACfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABfgAAAAAAcAAAAAABdQAAAAADcAAAAAABcAAAAAAAcAAAAAAAHwAAAAADHwAAAAADHwAAAAADfgAAAAAAegAAAAABegAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAAAdQAAAAAAcAAAAAACfgAAAAAAcAAAAAADHwAAAAADHwAAAAACHwAAAAACfgAAAAAAegAAAAAAegAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAAAcAAAAAADdQAAAAABcAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAdQAAAAACdQAAAAABdQAAAAAAdQAAAAAAcAAAAAABcAAAAAABcAAAAAABdQAAAAABcAAAAAADcAAAAAABcAAAAAAAcAAAAAAAcAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAdQAAAAAAdQAAAAAAdQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAABdQAAAAABdQAAAAABdQAAAAABcAAAAAADfgAAAAAAfgAAAAAA + tiles: fgAAAAAAdQAAAAACdQAAAAACdQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAADcAAAAAAAfgAAAAAAdQAAAAADdQAAAAACdQAAAAACcAAAAAADdQAAAAADcAAAAAABfgAAAAAAcAAAAAACcAAAAAACdQAAAAABdQAAAAABdQAAAAACfgAAAAAAcAAAAAACdQAAAAAAdQAAAAADdQAAAAACdQAAAAACdQAAAAAAcAAAAAADdQAAAAAAcAAAAAAAcAAAAAABcAAAAAABcAAAAAABdQAAAAAAdQAAAAADdQAAAAACdQAAAAADdQAAAAAAdQAAAAAAcAAAAAADcAAAAAADcAAAAAABdQAAAAADcAAAAAAAdQAAAAAAcAAAAAADcAAAAAADcAAAAAADcAAAAAAAdQAAAAACdQAAAAADdQAAAAABfgAAAAAAcAAAAAADdQAAAAADdQAAAAABdQAAAAAAdQAAAAACdQAAAAABcAAAAAACdQAAAAACcAAAAAABfgAAAAAAcAAAAAAAcAAAAAAAdQAAAAAAdQAAAAAAdQAAAAABfgAAAAAAcAAAAAABcAAAAAAAfgAAAAAAdQAAAAABdQAAAAAAdQAAAAACcAAAAAADdQAAAAABJAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAACdQAAAAAAcAAAAAAAfgAAAAAAcAAAAAADcAAAAAADcAAAAAADcAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAdQAAAAABcAAAAAADdQAAAAACcAAAAAADcAAAAAABcAAAAAAAdQAAAAAAdQAAAAABdQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAdQAAAAADdQAAAAACdQAAAAAAcAAAAAAAfgAAAAAAcAAAAAACdQAAAAADdQAAAAADdQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAdQAAAAACcAAAAAABdQAAAAADcAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAXQAAAAADfgAAAAAAcAAAAAAAdQAAAAACcAAAAAACfgAAAAAAJAAAAAAAHwAAAAACHwAAAAABHwAAAAAAHwAAAAABegAAAAADegAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABfgAAAAAAcAAAAAABdQAAAAACcAAAAAAAcAAAAAADcAAAAAACHwAAAAAAHwAAAAAAHwAAAAAAfgAAAAAAegAAAAABegAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAAAdQAAAAABcAAAAAABfgAAAAAAcAAAAAABHwAAAAACHwAAAAADHwAAAAADfgAAAAAAegAAAAABegAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAAAcAAAAAAAdQAAAAABcAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAdQAAAAADdQAAAAADdQAAAAACdQAAAAADcAAAAAABcAAAAAADcAAAAAABdQAAAAADcAAAAAADcAAAAAAAcAAAAAADcAAAAAAAcAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAdQAAAAACdQAAAAADdQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAdQAAAAADdQAAAAADdQAAAAACcAAAAAACfgAAAAAAfgAAAAAA version: 6 3,1: ind: 3,1 - tiles: fgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAAAdQAAAAABdQAAAAADdQAAAAADcAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAAAcAAAAAAAcAAAAAABcAAAAAABcAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAwAAAAAAegAAAAAAegAAAAAAegAAAAACegAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAACgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABfgAAAAAAXgAAAAAAZAAAAAAAXQAAAAACXQAAAAACfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAMAAAAAAAfgAAAAAAXQAAAAADXQAAAAABXgAAAAABXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAegAAAAAAfgAAAAAAegAAAAAAegAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAegAAAAAAfgAAAAAAegAAAAADegAAAAABfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAegAAAAADegAAAAADegAAAAAAfgAAAAAAegAAAAACegAAAAADfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: fgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAABdQAAAAACdQAAAAACdQAAAAADcAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAABcAAAAAABcAAAAAAAcAAAAAADcAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAwAAAAAAegAAAAADegAAAAAAegAAAAACegAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAACgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABfgAAAAAAXgAAAAABZAAAAAAAXQAAAAACXQAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAMAAAAAAAfgAAAAAAXQAAAAACXQAAAAACXgAAAAABXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAegAAAAABfgAAAAAAegAAAAADegAAAAABfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAegAAAAABfgAAAAAAegAAAAAAegAAAAADfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAegAAAAAAegAAAAABegAAAAADfgAAAAAAegAAAAADegAAAAABfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 -4,-4: ind: -4,-4 - tiles: AAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAJAAAAAACHwAAAAADHwAAAAACHwAAAAAAHwAAAAABJAAAAAABJAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAJAAAAAADHwAAAAAAHwAAAAACHwAAAAADHwAAAAABJAAAAAADJAAAAAABfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAJAAAAAACHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAADJAAAAAACJAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAHwAAAAABHwAAAAACHwAAAAABHwAAAAADHwAAAAACJAAAAAACJAAAAAACfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAJAAAAAACHwAAAAAAHwAAAAAAHwAAAAACHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAJAAAAAAAHwAAAAAAHwAAAAAAHwAAAAACHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAJAAAAAABHwAAAAADHwAAAAADHwAAAAACHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAHwAAAAAAHwAAAAABHwAAAAADHwAAAAACHwAAAAAAHwAAAAABJAAAAAACfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAJAAAAAACJAAAAAAAJAAAAAABfgAAAAAAHwAAAAADHwAAAAACHwAAAAADfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAADJAAAAAABJAAAAAABfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAXQAAAAABaAAAAAACXQAAAAABfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAACTgAAAAAAXQAAAAACfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAXQAAAAACTgAAAAADXQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAXQAAAAAATgAAAAABXQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAXQAAAAADaAAAAAAAXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAaAAAAAADaAAAAAAAaAAAAAABfgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAA + tiles: AAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAJAAAAAAAHwAAAAACHwAAAAABHwAAAAAAHwAAAAADJAAAAAABJAAAAAABfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAJAAAAAACHwAAAAADHwAAAAACHwAAAAAAHwAAAAABJAAAAAABJAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAJAAAAAADHwAAAAAAHwAAAAACHwAAAAABHwAAAAAAJAAAAAAAJAAAAAABfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAHwAAAAAAHwAAAAADHwAAAAADHwAAAAACHwAAAAADJAAAAAADJAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAJAAAAAACHwAAAAADHwAAAAACHwAAAAADHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAJAAAAAADHwAAAAADHwAAAAADHwAAAAAAHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAJAAAAAACHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAHwAAAAAAHwAAAAAAHwAAAAACHwAAAAABHwAAAAACHwAAAAACJAAAAAABfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAJAAAAAACJAAAAAAAJAAAAAABfgAAAAAAHwAAAAADHwAAAAADHwAAAAACfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAJAAAAAABJAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAXQAAAAACaAAAAAABXQAAAAADfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAAATgAAAAADXQAAAAABfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAXQAAAAACTgAAAAAAXQAAAAADfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAXQAAAAADTgAAAAADXQAAAAADfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAXQAAAAAAaAAAAAABXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAaAAAAAAAaAAAAAABaAAAAAADfgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAA version: 6 -3,-4: ind: -3,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAJAAAAAADJAAAAAABHwAAAAABHwAAAAADHwAAAAABHwAAAAACJAAAAAACfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAJAAAAAACJAAAAAAAHwAAAAACHwAAAAADHwAAAAADHwAAAAADJAAAAAACfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAJAAAAAADJAAAAAACHwAAAAAAHwAAAAACHwAAAAAAHwAAAAACJAAAAAABfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAJAAAAAADJAAAAAAAHwAAAAAAHwAAAAACHwAAAAACHwAAAAAAJAAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAADHwAAAAAAHwAAAAABHwAAAAAAJAAAAAADfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAACJAAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAJAAAAAABfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAJAAAAAACJAAAAAABHwAAAAABHwAAAAADHwAAAAACHwAAAAABHwAAAAACfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAHwAAAAACHwAAAAABHwAAAAAAfgAAAAAAJAAAAAACJAAAAAACJAAAAAABfgAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAJAAAAAADJAAAAAACJAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAACaAAAAAACXQAAAAACfgAAAAAAXQAAAAABXQAAAAABfgAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAABTgAAAAACXQAAAAACXQAAAAADXQAAAAACXQAAAAACfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAACTgAAAAABXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAACTgAAAAABXQAAAAAAfgAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACaAAAAAABXQAAAAADfgAAAAAABwAAAAAEBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAfgAAAAAAaAAAAAACaAAAAAABaAAAAAABfgAAAAAABwAAAAAABwAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAJAAAAAAAJAAAAAACHwAAAAACHwAAAAABHwAAAAADHwAAAAAAJAAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAJAAAAAACJAAAAAADHwAAAAAAHwAAAAADHwAAAAACHwAAAAABJAAAAAABfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAJAAAAAACJAAAAAACHwAAAAACHwAAAAADHwAAAAACHwAAAAACJAAAAAABfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAJAAAAAADJAAAAAACHwAAAAACHwAAAAACHwAAAAACHwAAAAADJAAAAAACfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABHwAAAAAAHwAAAAACHwAAAAABJAAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAADHwAAAAABHwAAAAADHwAAAAACJAAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABHwAAAAAAHwAAAAADHwAAAAADJAAAAAACfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAJAAAAAABJAAAAAABHwAAAAABHwAAAAABHwAAAAADHwAAAAABHwAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAHwAAAAACHwAAAAAAHwAAAAAAfgAAAAAAJAAAAAADJAAAAAADJAAAAAADfgAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAJAAAAAACJAAAAAACJAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAABaAAAAAABXQAAAAADfgAAAAAAXQAAAAADXQAAAAADfgAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAADTgAAAAADXQAAAAABXQAAAAAAXQAAAAAAXQAAAAACfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAACTgAAAAABXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAAATgAAAAAAXQAAAAADfgAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABaAAAAAACXQAAAAADfgAAAAAABwAAAAAABwAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAfgAAAAAAaAAAAAADaAAAAAADaAAAAAAAfgAAAAAABwAAAAAABwAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAA version: 6 -4,-5: ind: -4,-5 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAHwAAAAABHwAAAAADHwAAAAACHwAAAAADHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAJAAAAAADHwAAAAACHwAAAAABHwAAAAABHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAACHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAJAAAAAACHwAAAAACHwAAAAAAHwAAAAADHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 -3,-5: ind: -3,-5 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABHwAAAAACHwAAAAAAHwAAAAADHwAAAAADfgAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAADHwAAAAADHwAAAAAAHwAAAAADJAAAAAACfgAAAAAAAAAAAAAAfQAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABHwAAAAABHwAAAAACHwAAAAADHwAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAADHwAAAAABHwAAAAAAJAAAAAABfgAAAAAAAAAAAAAAfQAAAAAA version: 6 3,-1: ind: 3,-1 - tiles: fgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAADXQAAAAABfgAAAAAAfgAAAAAAXQAAAAAAHwAAAAAAHwAAAAACHwAAAAABHwAAAAADHwAAAAABHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAXQAAAAADXQAAAAACXQAAAAAAXQAAAAADfgAAAAAAXQAAAAADHwAAAAADHwAAAAAAHwAAAAACHwAAAAAAHwAAAAABHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAACXQAAAAABXQAAAAABXQAAAAABfgAAAAAAXQAAAAACHwAAAAAAHwAAAAADHwAAAAACHwAAAAACHwAAAAABHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAADXQAAAAADXQAAAAACXQAAAAABXQAAAAAAXQAAAAAAHwAAAAAAHwAAAAACHwAAAAADHwAAAAABHwAAAAABHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAABXQAAAAABXQAAAAACXQAAAAACfgAAAAAAXQAAAAAAJAAAAAADJAAAAAAAJAAAAAACJAAAAAAAJAAAAAACJAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAJAAAAAACJAAAAAAAJAAAAAACJAAAAAADJAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABfgAAAAAAHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAAAdQAAAAADdQAAAAAAdQAAAAADcAAAAAABfgAAAAAAdQAAAAAAdQAAAAAAfgAAAAAAcAAAAAADcAAAAAAAcAAAAAADbQAAAAAAbQAAAAAAfgAAAAAAfgAAAAAAcAAAAAACcAAAAAAAdQAAAAABcAAAAAABcAAAAAACcAAAAAACdQAAAAACdQAAAAACfgAAAAAAcAAAAAAAdQAAAAACdQAAAAADdQAAAAAAcAAAAAABfgAAAAAAfgAAAAAAcAAAAAABcAAAAAABdQAAAAAAcAAAAAACcAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAADdQAAAAADdQAAAAACdQAAAAABcAAAAAACfgAAAAAAfgAAAAAAcAAAAAADdQAAAAABdQAAAAABdQAAAAADcAAAAAADcAAAAAADdQAAAAAAcAAAAAACcAAAAAACcAAAAAABaAAAAAAAaAAAAAADaAAAAAADcAAAAAAAfgAAAAAAfgAAAAAAcAAAAAADcAAAAAADdQAAAAACcAAAAAADcAAAAAABcAAAAAAAdQAAAAAAcAAAAAACcAAAAAABcAAAAAAAaAAAAAABaAAAAAABaAAAAAACcAAAAAABfgAAAAAAfgAAAAAAcAAAAAACcAAAAAACdQAAAAAAcAAAAAAAcAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAAAdQAAAAAAdQAAAAAAdQAAAAAAcAAAAAACfgAAAAAAdQAAAAACdQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAADdQAAAAABdQAAAAACdQAAAAABcAAAAAAAcAAAAAAAdQAAAAAAdQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAA + tiles: fgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADXQAAAAAAXQAAAAABfgAAAAAAfgAAAAAAXQAAAAAAHwAAAAAAHwAAAAACHwAAAAACHwAAAAADHwAAAAABHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAACXQAAAAABXQAAAAACXQAAAAACXQAAAAADfgAAAAAAXQAAAAABHwAAAAAAHwAAAAACHwAAAAADHwAAAAADHwAAAAADHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAADXQAAAAABXQAAAAAAXQAAAAACXQAAAAACfgAAAAAAXQAAAAACHwAAAAADHwAAAAACHwAAAAADHwAAAAABHwAAAAACHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAABXQAAAAADXQAAAAADXQAAAAABXQAAAAACXQAAAAADXQAAAAACHwAAAAABHwAAAAACHwAAAAACHwAAAAADHwAAAAADHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAACXQAAAAAAfgAAAAAAXQAAAAABJAAAAAABJAAAAAACJAAAAAABJAAAAAAAJAAAAAACJAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAACJAAAAAACJAAAAAAAJAAAAAADJAAAAAADJAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABfgAAAAAAHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAABdQAAAAADdQAAAAAAdQAAAAAAcAAAAAAAfgAAAAAAdQAAAAABdQAAAAACfgAAAAAAcAAAAAACcAAAAAACcAAAAAAAbQAAAAAAbQAAAAAAfgAAAAAAfgAAAAAAcAAAAAABcAAAAAABdQAAAAACcAAAAAAAcAAAAAADcAAAAAABdQAAAAABdQAAAAADfgAAAAAAcAAAAAACdQAAAAAAdQAAAAACdQAAAAABcAAAAAADfgAAAAAAfgAAAAAAcAAAAAABcAAAAAAAdQAAAAABcAAAAAACcAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAACdQAAAAACdQAAAAABdQAAAAADcAAAAAACfgAAAAAAfgAAAAAAcAAAAAADdQAAAAAAdQAAAAABdQAAAAAAcAAAAAAAcAAAAAABdQAAAAAAcAAAAAADcAAAAAACcAAAAAABaAAAAAABaAAAAAADaAAAAAABcAAAAAABfgAAAAAAfgAAAAAAcAAAAAAAcAAAAAABdQAAAAACcAAAAAAAcAAAAAAAcAAAAAADdQAAAAADcAAAAAAAcAAAAAADcAAAAAABaAAAAAADaAAAAAAAaAAAAAACcAAAAAAAfgAAAAAAfgAAAAAAcAAAAAACcAAAAAACdQAAAAACcAAAAAACcAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAABdQAAAAABdQAAAAABdQAAAAABcAAAAAADfgAAAAAAdQAAAAACdQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAcAAAAAABdQAAAAABdQAAAAADdQAAAAAAcAAAAAADcAAAAAACdQAAAAAAdQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAA version: 6 4,0: ind: 4,0 - tiles: fgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAACXQAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAXQAAAAADfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAABXQAAAAABfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: fgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAABXQAAAAACfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAXQAAAAACfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAABXQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 4,-1: ind: 4,-1 - tiles: XQAAAAADXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACbQAAAAAAbQAAAAAAbQAAAAAAbQAAAAAAfgAAAAAAfgAAAAAATgAAAAACXQAAAAAAfgAAAAAAaAAAAAADaAAAAAAAaAAAAAACaAAAAAACaAAAAAADfgAAAAAAXQAAAAAAbQAAAAAAXQAAAAACXQAAAAADXQAAAAADfgAAAAAAfgAAAAAATgAAAAACXQAAAAABfgAAAAAAaAAAAAADaAAAAAABaAAAAAAAaAAAAAADaAAAAAABfgAAAAAAXQAAAAAAbQAAAAAAXQAAAAACXQAAAAACXQAAAAADfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAADXQAAAAABaAAAAAACaAAAAAADaAAAAAAAaAAAAAACaAAAAAABfgAAAAAAbAAAAAAAbAAAAAAAXQAAAAAAXQAAAAABXQAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAABfgAAAAAAaAAAAAABaAAAAAABaAAAAAAAaAAAAAADaAAAAAADfgAAAAAAbAAAAAAAbAAAAAAAbQAAAAAAbQAAAAAAbQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAACXQAAAAAAXQAAAAACXQAAAAAAaAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbQAAAAAAbAAAAAAAbAAAAAAAbAAAAAAAbQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbQAAAAAAbQAAAAAAbQAAAAAAbQAAAAAAbQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbQAAAAAAbAAAAAAAbAAAAAAAbAAAAAAAbQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAbQAAAAAAbQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAbQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: XQAAAAACXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACbQAAAAAAbQAAAAAAbQAAAAAAbQAAAAAAfgAAAAAAfgAAAAAATgAAAAADXQAAAAADfgAAAAAAaAAAAAABaAAAAAADaAAAAAADaAAAAAACaAAAAAACfgAAAAAAXQAAAAADbQAAAAAAXQAAAAACXQAAAAACXQAAAAABfgAAAAAAfgAAAAAATgAAAAADXQAAAAADfgAAAAAAaAAAAAACaAAAAAACaAAAAAADaAAAAAACaAAAAAACfgAAAAAAXQAAAAACbQAAAAAAXQAAAAADXQAAAAACXQAAAAACfgAAAAAAfgAAAAAAXQAAAAACXQAAAAABXQAAAAADaAAAAAACaAAAAAABaAAAAAAAaAAAAAAAaAAAAAABfgAAAAAAbAAAAAAAbAAAAAAAXQAAAAADXQAAAAADXQAAAAADfgAAAAAAfgAAAAAAXQAAAAACXQAAAAAAfgAAAAAAaAAAAAACaAAAAAABaAAAAAAAaAAAAAAAaAAAAAACfgAAAAAAbAAAAAAAbAAAAAAAbQAAAAAAbQAAAAAAbQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAACXQAAAAABXQAAAAADXQAAAAABaAAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbQAAAAAAbAAAAAAAbAAAAAAAbAAAAAAAbQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbQAAAAAAbQAAAAAAbQAAAAAAbQAAAAAAbQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbQAAAAAAbAAAAAAAbAAAAAAAbAAAAAAAbQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAbQAAAAAAbQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAbQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 4,1: ind: 4,1 - tiles: fgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAggAAAAACfgAAAAAAgQAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAgQAAAAAAggAAAAABbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: fgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAggAAAAAAfgAAAAAAgQAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAgQAAAAAAggAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 4,-2: ind: 4,-2 - tiles: fgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAADHwAAAAABHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAADJAAAAAABHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAABHwAAAAAAHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABJAAAAAADJAAAAAACJAAAAAADXQAAAAABXQAAAAABXQAAAAAAfgAAAAAAXQAAAAAAXQAAAAABXQAAAAADXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAAAJAAAAAACHwAAAAABXQAAAAACXQAAAAABXQAAAAADfgAAAAAAXQAAAAADXQAAAAABXQAAAAADXQAAAAACfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAHwAAAAADHwAAAAADHwAAAAAAHwAAAAADXQAAAAADXQAAAAADXQAAAAACfgAAAAAAfgAAAAAAXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAegAAAAADegAAAAADegAAAAACXQAAAAABXQAAAAABXQAAAAAAfgAAAAAAaAAAAAADXQAAAAAAegAAAAACegAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAegAAAAABegAAAAAAegAAAAADXQAAAAACXQAAAAABJAAAAAADfgAAAAAAaAAAAAACXQAAAAABegAAAAAAegAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAegAAAAACegAAAAADegAAAAACfgAAAAAAXQAAAAABfgAAAAAAfgAAAAAAaAAAAAACXQAAAAADJAAAAAACegAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAACXQAAAAABXQAAAAAAXQAAAAABXQAAAAACegAAAAACegAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAATgAAAAACXQAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAATgAAAAAAXQAAAAAAXQAAAAADXQAAAAADXQAAAAACXQAAAAAAXQAAAAABXQAAAAAAXQAAAAAAXQAAAAABbQAAAAAAXQAAAAADXQAAAAAAXQAAAAACfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAABXQAAAAACXQAAAAABXQAAAAADXQAAAAAAXQAAAAACXQAAAAABXQAAAAAAXQAAAAACbQAAAAAAXQAAAAACXQAAAAAAXQAAAAACfgAAAAAAfgAAAAAATgAAAAABXQAAAAABXQAAAAABXQAAAAAAXQAAAAADXQAAAAAAXQAAAAAAXQAAAAABXQAAAAABXQAAAAAAbQAAAAAAXQAAAAADXQAAAAAAXQAAAAAAfgAAAAAAfgAAAAAA + tiles: fgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAABHwAAAAACHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABHwAAAAACJAAAAAACHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAABHwAAAAACHwAAAAACfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAADJAAAAAABJAAAAAADJAAAAAABXQAAAAABXQAAAAACXQAAAAAAfgAAAAAAXQAAAAACXQAAAAACXQAAAAABXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAABHwAAAAAAJAAAAAACHwAAAAACXQAAAAACXQAAAAAAXQAAAAAAfgAAAAAAXQAAAAAAXQAAAAADXQAAAAADXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAHwAAAAAAHwAAAAACHwAAAAABHwAAAAABXQAAAAACXQAAAAADXQAAAAABfgAAAAAAfgAAAAAAXQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAegAAAAADegAAAAADegAAAAAAXQAAAAACXQAAAAABXQAAAAACfgAAAAAAaAAAAAADXQAAAAACegAAAAACegAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAegAAAAAAegAAAAABegAAAAABXQAAAAABXQAAAAABJAAAAAAAfgAAAAAAaAAAAAABXQAAAAABegAAAAAAegAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAegAAAAADegAAAAABegAAAAAAfgAAAAAAXQAAAAADfgAAAAAAfgAAAAAAaAAAAAADXQAAAAABJAAAAAABegAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAXQAAAAACXQAAAAADXQAAAAAAXQAAAAACXQAAAAACXQAAAAACegAAAAACegAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAATgAAAAADXQAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAATgAAAAAAXQAAAAAAXQAAAAABXQAAAAADXQAAAAACXQAAAAAAXQAAAAABXQAAAAACXQAAAAAAXQAAAAADbQAAAAAAXQAAAAACXQAAAAACXQAAAAACfgAAAAAAfgAAAAAAXQAAAAABXQAAAAACXQAAAAACXQAAAAAAXQAAAAACXQAAAAABXQAAAAABXQAAAAACXQAAAAACXQAAAAADbQAAAAAAXQAAAAACXQAAAAACXQAAAAADfgAAAAAAfgAAAAAATgAAAAAAXQAAAAACXQAAAAADXQAAAAACXQAAAAACXQAAAAAAXQAAAAACXQAAAAADXQAAAAAAXQAAAAABbQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAfgAAAAAAfgAAAAAA version: 6 5,-1: ind: 5,-1 @@ -294,19 +294,19 @@ entities: version: 6 5,-2: ind: 5,-2 - tiles: fgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAADbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAABJAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAJAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAMAAAAAAAfgAAAAAAbAAAAAAAbAAAAAAAbAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAXQAAAAABXQAAAAACXQAAAAACXQAAAAADXQAAAAABXQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAABaAAAAAADXQAAAAACXQAAAAAAaAAAAAADaAAAAAADfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAQgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAABJAAAAAADXQAAAAADXQAAAAAAJAAAAAAAJAAAAAACfgAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAQgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAABJAAAAAADXQAAAAAAXQAAAAACJAAAAAADJAAAAAABfgAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAQgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAA + tiles: fgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAADJAAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAABJAAAAAACfgAAAAAAfgAAAAAAfgAAAAAAMAAAAAAAfgAAAAAAbAAAAAAAbAAAAAAAbAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAXQAAAAAAXQAAAAADXQAAAAADXQAAAAADXQAAAAAAXQAAAAACfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAaAAAAAAAaAAAAAABXQAAAAABXQAAAAABaAAAAAABaAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAQgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAABJAAAAAADXQAAAAADXQAAAAABJAAAAAADJAAAAAAAfgAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAQgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAJAAAAAADXQAAAAACXQAAAAACJAAAAAAAJAAAAAADfgAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAQgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAA version: 6 4,-3: ind: 4,-3 - tiles: CwAAAAAABwAAAAACBwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAABwAAAAACBwAAAAAHBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbQAAAAAAggAAAAACfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAbQAAAAAAgQAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAbQAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAgQAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAA + tiles: CwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAABwAAAAAEBwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbQAAAAAAggAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAbQAAAAAAgQAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAbQAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAgQAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAA version: 6 1,-4: ind: 1,-4 - tiles: fgAAAAAAHwAAAAADHwAAAAADHwAAAAAAHwAAAAAAHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAHwAAAAACHwAAAAABHwAAAAADHwAAAAAAHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAABwAAAAAIBwAAAAAAfwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAABwAAAAAHBwAAAAAKfgAAAAAABwAAAAAABwAAAAAAfwAAAAAABwAAAAAABwAAAAAAfgAAAAAAfwAAAAAAfgAAAAAACwAAAAAACwAAAAAAfQAAAAAAfQAAAAAAfwAAAAAABwAAAAADBwAAAAAAfgAAAAAABwAAAAAABwAAAAAAfwAAAAAABwAAAAAABwAAAAAABwAAAAACfgAAAAAAfwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAABwAAAAAFBwAAAAAABwAAAAAAfgAAAAAABwAAAAAABwAAAAAKBwAAAAABAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAACHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAACHwAAAAACfgAAAAAAHwAAAAAAHwAAAAACfgAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAfwAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAADHwAAAAAAJAAAAAABHwAAAAADHwAAAAAAfgAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAfwAAAAAAfgAAAAAACwAAAAAAfgAAAAAAfgAAAAAAHwAAAAABHwAAAAADHwAAAAAAfgAAAAAAHwAAAAACHwAAAAACfgAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAfwAAAAAABwAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAJAAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAABwAAAAAKfgAAAAAAfgAAAAAAJAAAAAAAJAAAAAADfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAA + tiles: fgAAAAAAHwAAAAABHwAAAAACHwAAAAAAHwAAAAACHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAHwAAAAADHwAAAAAAHwAAAAABHwAAAAAAHwAAAAABfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAABwAAAAAHBwAAAAADBwAAAAAABwAAAAADfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAABwAAAAAABwAAAAAAfwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAECwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAABwAAAAALBwAAAAAAfgAAAAAABwAAAAAHBwAAAAAAfwAAAAAABwAAAAAABwAAAAAAfgAAAAAAfwAAAAAAfgAAAAAACwAAAAAACwAAAAAAfQAAAAAAfQAAAAAAfwAAAAAABwAAAAAABwAAAAAAfgAAAAAABwAAAAAABwAAAAAAfwAAAAAABwAAAAAABwAAAAAABwAAAAAAfgAAAAAAfwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAABwAAAAAABwAAAAAABwAAAAAAfgAAAAAABwAAAAAABwAAAAAFBwAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAHwAAAAABHwAAAAABHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAHwAAAAADHwAAAAABHwAAAAADfgAAAAAAHwAAAAAAHwAAAAAAfgAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAfwAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAHwAAAAACHwAAAAABHwAAAAADJAAAAAABHwAAAAAAHwAAAAADfgAAAAAABwAAAAAABwAAAAAABwAAAAAMBwAAAAAAfwAAAAAAfgAAAAAACwAAAAAAfgAAAAAAfgAAAAAAHwAAAAABHwAAAAAAHwAAAAABfgAAAAAAHwAAAAACHwAAAAADfgAAAAAABwAAAAAABwAAAAAMBwAAAAAABwAAAAAABwAAAAAAfwAAAAAABwAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAABwAAAAAABwAAAAAABwAAAAABBwAAAAAABwAAAAAABwAAAAAABwAAAAAAfgAAAAAAfgAAAAAAJAAAAAADJAAAAAADfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAABwAAAAAAfgAAAAAAfgAAAAAAJAAAAAABJAAAAAABfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAA version: 6 0,-4: ind: 0,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAHwAAAAAAHwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAJfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAABwAAAAAABwAAAAAABwAAAAACBwAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAABwAAAAAABwAAAAAIBwAAAAAABwAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAABBwAAAAAAfgAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAACBwAAAAAABwAAAAAABwAAAAAABwAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAABfgAAAAAAfgAAAAAAJAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAfgAAAAAAfgAAAAAAJAAAAAAD + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAHwAAAAABHwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAABwAAAAAABwAAAAAABwAAAAAHBwAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAABwAAAAAIBwAAAAAIBwAAAAAABwAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAAfgAAAAAABwAAAAAFBwAAAAAABwAAAAAABwAAAAAGfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAGBwAAAAAABwAAAAAFBwAAAAAABwAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAJAAAAAABfgAAAAAAfgAAAAAAJAAAAAACfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAfgAAAAAAfgAAAAAAJAAAAAAAfgAAAAAAfgAAAAAAJAAAAAAC version: 6 -5,-3: ind: -5,-3 @@ -314,7 +314,7 @@ entities: version: 6 -3,2: ind: -3,2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAXQAAAAADXQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAXQAAAAABXQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAXQAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAXQAAAAABXQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAXQAAAAABXQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAADXQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAQgAAAAAAXQAAAAADXQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAQgAAAAAAXQAAAAABXQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAXQAAAAACXQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 -1,-4: ind: -1,-4 @@ -326,11 +326,11 @@ entities: version: 6 5,-3: ind: 5,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAgwAAAAAAgwAAAAAAQAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAADgwAAAAAAgwAAAAAAQAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 1,2: ind: 1,2 - tiles: fgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAADfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAADfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAABfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAADfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAABfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAACfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: fgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAACfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAACfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAACfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAACfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAABfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 -2,-4: ind: -2,-4 @@ -338,23 +338,23 @@ entities: version: 6 2,-4: ind: 2,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAACwAAAAAAfgAAAAAAfwAAAAAABwAAAAAEBwAAAAAABwAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAAfwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAIBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAMBwAAAAACBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAfwAAAAAABwAAAAAABwAAAAAEBwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAACwAAAAAAfgAAAAAAfwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAJBwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAfwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfwAAAAAABwAAAAAABwAAAAAMBwAAAAAJBwAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAACwAAAAAAfgAAAAAAfwAAAAAABwAAAAAGBwAAAAABBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAAfwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAKBwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAKBwAAAAACBwAAAAAJBwAAAAAJBwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAfwAAAAAABwAAAAAABwAAAAAABwAAAAACBwAAAAAGBwAAAAAABwAAAAAABwAAAAAABwAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAACwAAAAAAfgAAAAAAfwAAAAAABwAAAAAABwAAAAAJBwAAAAAABwAAAAAABwAAAAAABwAAAAACBwAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAKfwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 3,-4: ind: 3,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAKBwAAAAAABwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAEBwAAAAAABwAAAAAABwAAAAADBwAAAAAAfwAAAAAABwAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAEBwAAAAAAfwAAAAAABwAAAAAABwAAAAAGfwAAAAAABwAAAAAACwAAAAAACwAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAACwAAAAAAfgAAAAAAfwAAAAAABwAAAAAABwAAAAAAfwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfwAAAAAABwAAAAAABwAAAAAABwAAAAAFBwAAAAAFBwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAfwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfwAAAAAABwAAAAAABwAAAAAKBwAAAAABBwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAKBwAAAAAABwAAAAAABwAAAAAABwAAAAAHBwAAAAALBwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAFBwAAAAAABwAAAAAABwAAAAAAfwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAAfwAAAAAAfgAAAAAACwAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAACwAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAABBwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAMBwAAAAAABwAAAAAABwAAAAAABwAAAAAHBwAAAAAABwAAAAACfwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAAfwAAAAAABwAAAAAABwAAAAAAfwAAAAAABwAAAAABCwAAAAAACwAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAACwAAAAAAfgAAAAAAfwAAAAAABwAAAAAABwAAAAAAfwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfwAAAAAABwAAAAAJBwAAAAAHBwAAAAAABwAAAAAHBwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAfwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAGBwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfwAAAAAABwAAAAAABwAAAAAABwAAAAAHBwAAAAAMBwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAACBwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAJBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAADBwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAfwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAFfwAAAAAAfgAAAAAACwAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAAACwAAAAAA version: 6 4,-4: ind: 4,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAFBwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAegAAAAADegAAAAACegAAAAADfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAegAAAAABegAAAAACegAAAAABfgAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAegAAAAACegAAAAABegAAAAABfgAAAAAABwAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAHwAAAAAAHwAAAAACHwAAAAADfgAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAHwAAAAABHwAAAAAAfgAAAAAAfgAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAQgAAAAAAQgAAAAAAfgAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAegAAAAACegAAAAACegAAAAABfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAegAAAAABegAAAAADegAAAAABfgAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAegAAAAAAegAAAAAAegAAAAAAfgAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAHwAAAAACHwAAAAABHwAAAAADfgAAAAAABwAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAHwAAAAADHwAAAAAAfgAAAAAAfgAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAQgAAAAAAQgAAAAAAfgAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAABwAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 1,-5: ind: 1,-5 - tiles: fgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAABEQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAEQAAAAAAHwAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAEQAAAAAAfgAAAAAAEQAAAAAAfgAAAAAAEQAAAAAAHwAAAAACfgAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAACEQAAAAAAHwAAAAABEQAAAAAAHwAAAAABEQAAAAAAHwAAAAACfgAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAADEQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAEQAAAAAAHwAAAAADfgAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAEQAAAAAAEQAAAAAATwAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAABHwAAAAAAEQAAAAAATwAAAAAAEQAAAAAAHwAAAAADHwAAAAACfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAACHwAAAAADEQAAAAAATwAAAAAAEQAAAAAAHwAAAAACHwAAAAADfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAADHwAAAAAAEQAAAAAATwAAAAAAEQAAAAAAHwAAAAABHwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAHwAAAAACHwAAAAADHwAAAAAAHwAAAAAAHwAAAAABfgAAAAAAHwAAAAACHwAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAADHwAAAAACHwAAAAACHwAAAAABHwAAAAACHwAAAAAAJAAAAAACHwAAAAAAHwAAAAACfgAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: fgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAEQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAEQAAAAAAHwAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAADEQAAAAAAfgAAAAAAEQAAAAAAfgAAAAAAEQAAAAAAHwAAAAABfgAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAEQAAAAAAHwAAAAADEQAAAAAAHwAAAAABEQAAAAAAHwAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAADEQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAEQAAAAAAHwAAAAABfgAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAEQAAAAAAEQAAAAAATwAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAADHwAAAAADEQAAAAAATwAAAAAAEQAAAAAAHwAAAAABHwAAAAADfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAHwAAAAABEQAAAAAATwAAAAAAEQAAAAAAHwAAAAACHwAAAAACfgAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAADHwAAAAADEQAAAAAATwAAAAAAEQAAAAAAHwAAAAACHwAAAAADfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAHwAAAAADHwAAAAABHwAAAAABHwAAAAACHwAAAAACfgAAAAAAHwAAAAAAHwAAAAACfgAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAHwAAAAAAHwAAAAACHwAAAAABHwAAAAABHwAAAAAAJAAAAAADHwAAAAAAHwAAAAACfgAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 0,-5: ind: 0,-5 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAHwAAAAAAHwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAHwAAAAADHwAAAAAB + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAHwAAAAADHwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfQAAAAAAfgAAAAAAHwAAAAADHwAAAAAD version: 6 - type: Broadphase - type: Physics @@ -871,8 +871,6 @@ entities: 6934: 65,19 6935: 65,21 6947: 26,19 - 6973: -29,-5 - 6974: -36,-5 7013: 39,17 7014: 38,17 7015: -1,-17 @@ -901,6 +899,11 @@ entities: 7410: 23,-53 7417: -55,-46 7418: -41,-46 + 7421: -7,-40 + 7451: -30,-5 + 7510: -35,-5 + 7536: -37,36 + 7537: -37,37 - node: cleanable: True color: '#FFFFFFFF' @@ -1402,9 +1405,6 @@ entities: 6270: 92,-20 6525: 33,-2 6526: 34,-2 - 6985: -32,-3 - 6986: -31,-3 - 6987: -33,-3 7403: 8,-48 - node: color: '#FFFFFFFF' @@ -1500,13 +1500,11 @@ entities: 6956: -29,-1 6971: -35,-1 6972: -30,-1 - 6988: -34,-5 - 6989: -32,-5 - 6990: -33,-5 - 6991: -31,-5 7406: 8,-49 7419: -4,-12 7420: -5,-12 + 7424: -5,-42 + 7425: -4,-42 - node: cleanable: True color: '#FFFFFFFF' @@ -5505,9 +5503,6 @@ entities: 6905: 58,-24 6936: 78,-7 6944: 52,-23 - 7010: -34,-5 - 7011: -32,-3 - 7012: -34,-2 7155: 17,-69 7156: 16,-68 7157: 17,-68 @@ -5573,6 +5568,8 @@ entities: 7370: 64,-36 7371: 64,-37 7372: 61,-37 + 7426: -4,-40 + 7438: -4,-42 - node: cleanable: True angle: 1.5707963267948966 rad @@ -6472,21 +6469,11 @@ entities: 6975: -36,3 6976: -33,3 6977: -35,-1 - 6978: -36,-5 - 6979: -29,-5 6980: -34,3 6981: -34,2 6982: -34,1 6983: -30,1 6984: -38,2 - 6992: -33,-4 - 6993: -34,-4 - 6994: -32,-3 - 6995: -31,-3 - 6996: -34,-3 - 6997: -34,-2 - 6998: -31,-5 - 6999: -32,-5 7199: 15,-64 7200: 18,-65 7201: 18,-64 @@ -6545,6 +6532,24 @@ entities: 7378: 63,-36 7379: 62,-36 7380: 63,-35 + 7427: -5,-41 + 7447: -6,-40 + 7448: -7,-40 + 7449: -7,-40 + 7470: -32,-5 + 7471: -34,-5 + 7472: -35,-2 + 7473: -33,-3 + 7474: -34,-3 + 7475: -32,-2 + 7476: -31,-3 + 7477: -30,-3 + 7478: -29,-4 + 7479: -28,-2 + 7480: -26,-3 + 7511: -35,-5 + 7512: -35,-5 + 7513: -30,-5 - node: cleanable: True angle: 1.5707963267948966 rad @@ -6603,12 +6608,6 @@ entities: 6915: 58,-23 6916: 57,-24 6946: 54,-23 - 7000: -33,-5 - 7001: -34,-3 - 7002: -32,-3 - 7003: -33,-4 - 7004: -32,-4 - 7005: -34,-5 7228: 16,-69 7229: 17,-69 7230: 17,-70 @@ -6641,6 +6640,36 @@ entities: 7382: 63,-37 7383: 62,-36 7384: 64,-37 + 7432: -5,-42 + 7433: -5,-42 + 7434: -5,-42 + 7435: -4,-42 + 7481: -33,-2 + 7482: -32,-4 + 7483: -34,-2 + 7484: -31,-2 + 7485: -31,-5 + 7486: -33,-5 + 7487: -30,-3 + 7488: -30,-4 + 7489: -30,-2 + 7490: -35,-2 + 7491: -35,-3 + 7492: -32,-3 + 7493: -26,-4 + 7494: -26,-2 + 7495: -27,-3 + 7496: -28,-2 + 7497: -27,-5 + 7498: -29,-5 + 7499: -36,-5 + 7514: -35,-4 + 7515: -33,-3 + 7516: -29,-2 + 7517: -29,-2 + 7518: -26,-2 + 7519: -28,-2 + 7520: -27,-3 - node: cleanable: True angle: 1.5707963267948966 rad @@ -6700,10 +6729,6 @@ entities: 6880: -12,-39 6917: 52,-21 6918: 57,-22 - 7006: -31,-5 - 7007: -33,-3 - 7008: -34,-3 - 7009: -34,-4 7246: 19,-64 7247: 17,-65 7248: 17,-70 @@ -6724,6 +6749,22 @@ entities: 7297: 45,-29 7385: 61,-37 7386: 64,-36 + 7436: -5,-42 + 7445: -4,-41 + 7446: -4,-41 + 7500: -34,-4 + 7501: -32,-2 + 7502: -32,-5 + 7503: -34,-5 + 7504: -35,-2 + 7505: -30,-2 + 7506: -36,-5 + 7507: -29,-5 + 7521: -32,-3 + 7522: -33,-4 + 7523: -38,-3 + 7524: -27,-3 + 7525: -27,-4 - node: cleanable: True angle: 1.5707963267948966 rad @@ -7130,6 +7171,8 @@ entities: 2064: -56,-66 6899: 58,-24 6900: 58,-23 + 7530: -36,36 + 7531: -36,37 - node: color: '#FFFFFFFF' id: LoadingArea @@ -7150,6 +7193,7 @@ entities: 7320: 37,-29 7321: 37,-31 7411: 23,-54 + 7423: -6,-40 - node: angle: 3.141592653589793 rad color: '#FFFFFFFF' @@ -9130,6 +9174,12 @@ entities: 7301: 39,-30 7302: 39,-29 7303: 39,-28 + 7458: -35,-4 + 7459: -35,-3 + 7460: -35,-2 + 7461: -30,-4 + 7462: -30,-3 + 7463: -30,-2 - node: color: '#FFFFFFFF' id: WoodTrimThinLineN @@ -9220,6 +9270,12 @@ entities: 1123: -12,31 5811: -35,3 5870: 36,-24 + 7452: -34,-5 + 7453: -33,-5 + 7454: -32,-5 + 7455: -31,-5 + 7456: -36,-5 + 7457: -29,-5 - node: color: '#FFFFFFFF' id: WoodTrimThinLineS @@ -9363,6 +9419,12 @@ entities: 7305: 43,-30 7306: 43,-29 7307: 43,-28 + 7464: -35,-4 + 7465: -35,-3 + 7466: -35,-2 + 7467: -30,-4 + 7468: -30,-3 + 7469: -30,-2 - node: cleanable: True color: '#FFFFFFFF' @@ -9583,7 +9645,7 @@ entities: 1: 4352 0,1: 0: 2451 - 1: 61452 + 1: 57356 -1,1: 0: 552 1: 61447 @@ -9599,7 +9661,7 @@ entities: 1: 61695 1,0: 0: 23 - 1: 39304 + 1: 39296 1,1: 1: 63625 1,2: @@ -9642,7 +9704,7 @@ entities: 4,3: 1: 48058 -4,0: - 1: 32767 + 1: 30583 -4,-1: 1: 29303 -5,0: @@ -9662,7 +9724,7 @@ entities: -4,4: 1: 62127 -3,0: - 1: 819 + 1: 273 0: 17612 -3,1: 1: 21841 @@ -9678,7 +9740,7 @@ entities: 1: 273 -2,0: 0: 53533 - 1: 8738 + 1: 8736 -2,1: 0: 4113 1: 57890 @@ -9698,18 +9760,18 @@ entities: 0,-4: 1: 30583 0,-5: - 1: 30519 + 1: 30471 -1,-4: 1: 57341 0,-3: - 1: 119 + 1: 7 0: 16128 -1,-3: - 1: 205 + 1: 13 0: 36608 0,-2: 0: 39183 - 1: 240 + 1: 224 -1,-2: 0: 8719 1: 240 @@ -9743,7 +9805,6 @@ entities: 4,-3: 1: 65535 4,-2: - 1: 1295 0: 240 2: 4096 3: 16384 @@ -9787,11 +9848,11 @@ entities: -2,-5: 1: 65535 -1,-5: - 1: 56733 + 1: 56605 -4,-8: 1: 24575 -5,-8: - 1: 53247 + 1: 36863 -4,-7: 1: 30583 -5,-7: @@ -9803,27 +9864,27 @@ entities: -3,-7: 1: 5589 -3,-6: - 1: 56797 + 1: 7645 -2,-8: 1: 28671 -2,-7: 1: 12287 -2,-6: - 1: 45055 + 1: 12287 -2,-9: - 1: 56799 + 1: 7647 -1,-8: - 1: 36863 + 1: 4095 -1,-6: - 1: 57343 - -1,-9: - 1: 37343 + 1: 53247 -1,-7: - 1: 52974 + 1: 20206 + -1,-9: + 1: 33247 0,-8: - 1: 8191 + 1: 4095 0,-7: - 1: 7677 + 1: 3581 0,-6: 1: 32631 0,-9: @@ -9847,7 +9908,7 @@ entities: 2,-9: 1: 65295 3,-8: - 1: 65535 + 1: 65295 3,-7: 1: 65535 3,-6: @@ -9855,19 +9916,19 @@ entities: 3,-9: 1: 65295 4,-8: - 1: 48031 + 1: 48015 4,-7: 1: 48059 4,-5: 1: 65520 4,-9: - 1: 65450 + 1: 65322 4,-6: 1: 61152 5,-8: 1: 48059 5,-7: - 1: 65531 + 1: 65523 5,-6: 1: 49083 5,-5: @@ -9879,9 +9940,9 @@ entities: 6,-8: 1: 65535 6,-7: - 1: 65535 + 1: 65520 6,-5: - 1: 62392 + 1: 46008 6,-9: 1: 65287 6,-6: @@ -9889,18 +9950,18 @@ entities: 6,-4: 1: 65343 7,-8: - 1: 49147 + 1: 49083 7,-7: - 1: 47931 + 1: 47928 7,-6: 1: 64315 7,-5: - 1: 28927 + 1: 12543 0: 32768 7,-9: 1: 48011 7,-4: - 1: 30471 + 1: 13063 0: 34952 8,-8: 1: 49075 @@ -9914,7 +9975,6 @@ entities: 5,-3: 1: 65535 5,-2: - 1: 1295 0: 240 4: 20480 5,-1: @@ -9923,7 +9983,6 @@ entities: 6,-3: 1: 65535 6,-2: - 1: 1295 0: 240 5: 4096 4: 16384 @@ -9932,7 +9991,7 @@ entities: 1: 28672 4: 68 7,-3: - 1: 4727 + 1: 51 0: 59528 7,-2: 0: 254 @@ -9943,10 +10002,10 @@ entities: 1: 65309 8,-4: 0: 31 - 1: 65280 + 1: 60928 8,-3: - 1: 49407 0: 4352 + 1: 49390 8,-2: 0: 17 1: 29900 @@ -9973,9 +10032,9 @@ entities: -8,-4: 1: 65535 -7,-8: - 1: 65535 + 1: 64989 -7,-7: - 1: 65535 + 1: 56799 -7,-6: 1: 56572 -7,-5: @@ -9995,7 +10054,7 @@ entities: -6,-9: 1: 8191 -6,-4: - 1: 65535 + 1: 56797 -5,-6: 1: 28774 -5,-5: @@ -10009,17 +10068,13 @@ entities: -9,-3: 1: 56796 -8,-2: - 1: 33008 - 6: 12288 + 1: 61680 -9,-2: - 1: 4336 - 6: 49152 + 1: 61680 -8,-1: - 6: 819 - 1: 63692 + 1: 65535 -9,-1: - 6: 1228 - 1: 61747 + 1: 65535 -8,0: 1: 65535 -7,-3: @@ -10053,7 +10108,7 @@ entities: 5,3: 1: 65535 5,4: - 1: 64435 + 1: 48051 6,0: 1: 65392 6,1: @@ -10061,9 +10116,9 @@ entities: 6,2: 1: 61263 6,3: - 1: 65534 + 1: 61438 6,4: - 1: 65532 + 1: 65524 7,1: 1: 64783 7,2: @@ -10073,13 +10128,13 @@ entities: 7,4: 1: 65532 8,0: - 1: 65399 + 1: 65303 8,1: 1: 30479 8,2: 1: 2039 8,3: - 1: 65534 + 1: 61182 8,-9: 1: 49151 9,-8: @@ -10099,7 +10154,7 @@ entities: 10,-7: 1: 65295 10,-6: - 1: 65535 + 1: 65423 10,-5: 1: 61183 10,-9: @@ -10109,7 +10164,7 @@ entities: 11,-7: 1: 48010 11,-6: - 1: 64411 + 1: 64395 11,-5: 1: 57599 11,-9: @@ -10133,9 +10188,9 @@ entities: 9,-1: 1: 65535 9,0: - 1: 65399 + 1: 65287 10,-1: - 1: 65535 + 1: 61167 10,-3: 1: 61166 10,-2: @@ -10145,9 +10200,9 @@ entities: 11,-3: 1: 1764 11,-2: - 1: 57582 + 1: 24806 11,-1: - 1: 60942 + 1: 58894 12,-4: 1: 65520 12,-3: @@ -10165,7 +10220,7 @@ entities: -8,2: 1: 61680 -9,2: - 1: 57584 + 1: 57520 -8,3: 1: 65535 -9,3: @@ -10177,23 +10232,23 @@ entities: -7,2: 1: 65278 -7,3: - 1: 61439 + 1: 61438 -7,4: 1: 65262 -6,1: 1: 65535 -6,2: - 1: 65279 + 1: 64767 -6,3: - 1: 61439 + 1: 61438 -5,4: 1: 62392 4,-12: - 1: 64767 + 1: 64765 4,-13: - 1: 64780 + 1: 56588 3,-12: - 1: 30719 + 1: 29695 4,-11: 1: 64735 3,-11: @@ -10213,17 +10268,16 @@ entities: 0: 8704 1: 13 6,-12: - 1: 65534 + 1: 65520 6,-11: 1: 4095 6,-10: 1: 63344 6,-13: 0: 57344 - 1: 3584 4: 200 7,-12: - 1: 13105 + 1: 13104 7,-11: 1: 13107 7,-10: @@ -10231,11 +10285,11 @@ entities: 7,-13: 0: 4096 4: 16 - 1: 264 + 1: 8 8,-11: 0: 48896 8,-10: - 1: 65535 + 1: 65520 0,-12: 0: 32627 0,-13: @@ -10244,15 +10298,16 @@ entities: 0: 65520 0,-11: 0: 35059 - 1: 29440 + 1: 13056 -1,-11: 0: 17600 - 1: 37120 + 6: 4352 0,-10: - 1: 65335 + 1: 65331 0: 8 -1,-10: - 1: 56345 + 1: 56320 + 6: 17 0: 4 1,-12: 0: 4369 @@ -10265,7 +10320,7 @@ entities: 1,-10: 1: 26214 2,-12: - 1: 47291 + 1: 45243 2,-11: 1: 61872 2,-10: @@ -10276,7 +10331,7 @@ entities: 1: 65280 4: 4 4,5: - 1: 14591 + 1: 12543 0: 32768 3,5: 1: 62719 @@ -10293,31 +10348,31 @@ entities: 0: 2 1: 4352 5,5: - 1: 35775 + 1: 35003 0: 12288 5,6: 0: 34947 6,5: 1: 65535 6,6: - 1: 20468 + 1: 18020 7,5: 1: 65535 7,6: - 1: 6001 + 1: 4913 0: 34944 8,4: - 1: 65504 + 1: 61408 8,5: - 1: 61183 + 1: 3839 -1,4: 1: 61680 0,5: 1: 61695 -1,5: - 1: 65535 + 1: 63231 0,6: - 1: 60671 + 1: 60655 -1,6: 1: 63231 0,7: @@ -10329,8 +10384,7 @@ entities: 1,5: 1: 47359 1,6: - 1: 15289 - 7: 2 + 1: 15291 1,7: 1: 65307 1,8: @@ -10344,13 +10398,13 @@ entities: 2,8: 1: 47786 3,8: - 1: 65102 + 1: 65038 -4,5: - 1: 30719 + 1: 28927 -5,5: 1: 28927 -4,6: - 1: 65383 + 1: 65351 -4,7: 1: 59647 -5,7: @@ -10358,24 +10412,23 @@ entities: -4,8: 1: 3823 -3,5: - 1: 30719 + 1: 28927 -3,6: - 1: 65383 + 1: 65351 -3,7: - 1: 55807 + 1: 53503 -3,8: - 1: 3533 - 8: 16 + 1: 3549 -2,5: - 1: 30719 + 1: 28927 -2,6: - 1: 63335 + 1: 63303 -2,7: - 1: 63487 + 1: 62463 -2,8: 1: 4095 -1,8: - 1: 20223 + 1: 20206 -9,4: 1: 61678 -8,5: @@ -10385,14 +10438,14 @@ entities: -9,6: 1: 30711 -8,7: - 1: 51441 + 1: 35057 0: 12288 -8,8: 0: 3 - 1: 56588 + 1: 56584 -9,7: 0: 61440 - 1: 887 + 1: 119 -7,5: 1: 61678 -7,6: @@ -10406,9 +10459,9 @@ entities: -6,5: 1: 61695 -6,6: - 1: 48034 + 1: 43938 -6,7: - 1: 58027 + 1: 58026 -6,8: 1: 26191 -5,6: @@ -10417,9 +10470,9 @@ entities: 1: 61661 -4,-11: 0: 224 - 1: 26112 + 1: 24576 -5,-11: - 1: 36663 + 1: 36659 0: 8 -4,-10: 1: 61166 @@ -10429,7 +10482,7 @@ entities: 1: 3808 -3,-11: 0: 62 - 1: 29504 + 1: 28736 -3,-10: 1: 62327 -3,-9: @@ -10441,28 +10494,30 @@ entities: -2,-12: 0: 61155 -2,-11: - 1: 65504 + 1: 13056 + 6: 34816 -2,-10: - 1: 53759 + 1: 53553 + 6: 142 -2,-13: 0: 61155 9,-11: 0: 3840 9,-10: - 1: 65535 + 1: 65520 10,-11: 0: 3840 10,-10: - 1: 65535 + 1: 65520 11,-11: 0: 44800 11,-10: - 1: 65535 + 1: 65520 12,-11: 0: 4352 1: 34816 12,-10: - 1: 45977 + 1: 45976 12,-9: 1: 48063 13,-8: @@ -10470,7 +10525,7 @@ entities: 13,-7: 1: 2456 13,-6: - 1: 63351 + 1: 62071 13,-5: 1: 61695 13,-9: @@ -10488,7 +10543,7 @@ entities: 14,-9: 1: 30583 14,-4: - 1: 61166 + 1: 61164 15,-8: 1: 62702 15,-7: @@ -10498,7 +10553,7 @@ entities: 15,-5: 1: 49087 15,-4: - 1: 65465 + 1: 64441 15,-9: 1: 57582 16,-8: @@ -10506,7 +10561,7 @@ entities: 16,-7: 1: 30576 16,-6: - 1: 62327 + 1: 62071 16,-5: 1: 65523 12,-12: @@ -10529,12 +10584,12 @@ entities: 1: 57486 16,-10: 0: 1 - 1: 28688 + 1: 12304 16,-9: - 1: 57971 + 1: 57907 0: 136 -8,-12: - 1: 65376 + 1: 65280 -9,-12: 1: 47872 0: 4 @@ -10545,7 +10600,7 @@ entities: -8,-10: 1: 48063 -9,-10: - 1: 36317 + 1: 35293 -9,-9: 1: 65323 -7,-11: @@ -10556,18 +10611,18 @@ entities: 0: 3809 -7,-13: 0: 12288 - -6,-12: - 1: 57975 - 0: 136 -6,-11: - 1: 1807 + 1: 1295 -6,-10: 1: 65535 + -6,-12: + 1: 57890 + 0: 136 -6,-13: 1: 8192 0: 32768 -5,-12: - 1: 29303 + 1: 12834 0: 34952 -5,-13: 1: 8192 @@ -10575,7 +10630,7 @@ entities: -12,-4: 1: 7677 -12,-5: - 1: 56799 + 1: 56591 -13,-4: 1: 61166 -12,-3: @@ -10583,9 +10638,9 @@ entities: -13,-3: 1: 57584 -12,-2: - 1: 65535 + 1: 61695 -13,-2: - 1: 61166 + 1: 57582 -12,-1: 1: 65535 -13,-1: @@ -10599,7 +10654,7 @@ entities: -11,-1: 1: 14199 -11,-5: - 1: 21845 + 1: 21829 -11,-2: 1: 25826 -11,0: @@ -10623,14 +10678,14 @@ entities: -13,1: 1: 61439 -12,2: - 1: 65535 + 1: 65521 -13,2: - 1: 61166 + 1: 61152 -12,3: - 1: 2047 + 1: 255 0: 28672 -13,3: - 1: 3310 + 1: 238 0: 61440 -11,1: 1: 26487 @@ -10651,22 +10706,19 @@ entities: 1: 35071 0: 12288 -12,5: - 1: 16384 4: 32768 0: 8 -12,4: 0: 32768 -11,5: 0: 35019 - 1: 16400 4: 12544 -11,6: 4: 1 - 1: 34832 0: 8840 + 1: 2048 -11,7: 0: 42530 - 1: 136 -11,8: 0: 14 -10,5: @@ -10676,35 +10728,35 @@ entities: 0: 257 1: 51884 -10,7: - 1: 1791 + 1: 255 0: 61440 -10,8: - 0: 34959 + 0: 51343 -9,5: 1: 30576 -9,8: - 0: 15 + 0: 4383 1: 52224 -12,-8: - 1: 65535 + 1: 65487 -12,-9: 1: 29619 -13,-8: - 1: 65535 + 1: 65407 -12,-7: - 1: 65535 + 1: 64767 -13,-7: - 1: 65535 + 1: 63487 -12,-6: 1: 65535 -13,-6: 1: 65535 -13,-5: - 1: 65519 + 1: 61135 -11,-8: - 1: 65535 + 1: 64443 -11,-7: - 1: 65535 + 1: 48063 -11,-6: 1: 21969 -11,-9: @@ -10718,31 +10770,30 @@ entities: -10,-9: 1: 65295 -12,-12: - 1: 49151 + 1: 16383 -12,-13: - 1: 65280 + 1: 61440 -13,-12: - 1: 49151 + 1: 36863 -12,-11: - 1: 29619 + 1: 13107 0: 8 4: 32768 -13,-11: - 1: 51384 + 1: 35000 0: 13059 -12,-10: - 1: 62263 + 1: 62259 4: 8 -13,-10: - 1: 63628 + 1: 63624 0: 51 -13,-9: 1: 51641 -11,-12: - 1: 65535 + 1: 4095 -11,-11: 0: 15 - 1: 240 4: 36864 -11,-10: 1: 61440 @@ -10758,29 +10809,28 @@ entities: 1: 34828 -9,-13: 0: 57354 - -15,0: - 1: 49152 - 0: 2184 -15,1: - 1: 3276 + 1: 3084 -15,2: 0: 12 - -15,-1: - 1: 52428 - -14,0: - 1: 61439 + -15,0: + 0: 2184 -14,1: 1: 61423 -15,3: 0: 128 -14,3: 0: 241 + -14,0: + 1: 61166 -14,2: 1: 3812 -14,-1: 1: 61423 -15,-2: 0: 3072 + -15,-1: + 1: 3084 -14,-4: 1: 61166 -14,-3: @@ -10792,15 +10842,15 @@ entities: -16,-8: 1: 53759 -16,-9: - 1: 28808 + 1: 28672 0: 119 -17,-8: - 1: 1919 + 1: 127 0: 28672 -16,-7: 1: 56797 -17,-7: - 1: 65399 + 1: 65392 -16,-6: 1: 51697 -16,-5: @@ -10824,12 +10874,12 @@ entities: -14,-7: 1: 65399 -14,-6: - 1: 61287 + 1: 61191 -14,-9: - 1: 20379 + 1: 19867 -17,-9: 0: 255 - 1: 30464 + 1: 28672 -16,-10: 0: 17486 -15,-10: @@ -10840,17 +10890,17 @@ entities: -15,-13: 0: 17476 -14,-12: - 1: 61439 + 1: 4095 -14,-10: 0: 143 - 1: 47104 + 1: 45056 -14,-13: 1: 30583 -14,-11: 0: 34830 1: 224 -13,-13: - 1: 65024 + 1: 61440 9,1: 1: 21791 9,2: @@ -10860,17 +10910,17 @@ entities: 10,1: 1: 64767 10,2: - 1: 60655 + 1: 58607 10,3: 1: 63726 10,4: - 1: 11818 + 1: 3626 11,0: 1: 30576 11,1: 1: 61815 11,2: - 1: 63487 + 1: 62975 11,3: 1: 65535 11,4: @@ -10884,7 +10934,7 @@ entities: 12,3: 1: 61182 -18,-8: - 1: 136 + 1: 128 0: 32768 -18,-9: 1: 32768 @@ -10903,11 +10953,11 @@ entities: -1,10: 1: 61166 0,11: - 1: 65526 + 1: 65524 -1,11: 1: 65530 0,12: - 1: 65311 + 1: 65295 1,9: 1: 57568 1,10: @@ -10921,31 +10971,31 @@ entities: 1: 12792 0: 32768 2,10: - 1: 887 + 1: 819 0: 34952 - 3,10: - 1: 3839 3,9: 1: 57582 + 3,10: + 1: 3822 4,9: 1: 4113 4,10: 1: 273 -4,9: - 1: 65519 + 1: 65455 -5,9: - 1: 51215 + 1: 34831 0: 13056 -4,10: - 1: 4095 + 1: 255 0: 61440 -5,10: - 1: 140 + 1: 136 0: 62243 -3,9: 1: 64783 -3,10: - 1: 19677 + 1: 19613 0: 45056 -3,11: 1: 17476 @@ -10957,16 +11007,17 @@ entities: -2,10: 1: 61006 -2,11: - 1: 61164 + 1: 61156 -2,12: 1: 14 0: 768 -1,12: - 1: 65535 + 1: 65391 -8,9: - 1: 36351 + 1: 3583 -9,9: - 1: 3310 + 1: 3293 + 0: 4352 -8,10: 0: 43567 -9,10: @@ -10976,7 +11027,7 @@ entities: -8,12: 0: 43754 -7,9: - 1: 32759 + 1: 4087 -7,10: 0: 65295 -7,11: @@ -10984,7 +11035,7 @@ entities: -7,12: 0: 65295 -6,9: - 1: 26224 + 1: 18032 -6,10: 0: 65391 -6,11: @@ -11001,12 +11052,12 @@ entities: -2,14: 1: 8 -1,13: - 1: 3823 + 1: 239 0: 4096 -1,14: 1: 15 0,13: - 1: 1919 + 1: 127 0: 32768 0,14: 1: 15 @@ -11018,9 +11069,9 @@ entities: 8,6: 0: 14 9,4: - 1: 57296 + 1: 40912 9,5: - 1: 4369 + 1: 273 0: 3276 9,6: 0: 3 @@ -11034,21 +11085,21 @@ entities: 12,4: 1: 4064 12,5: - 1: 60637 + 1: 52445 0: 4096 12,6: 0: 3857 - 1: 14 + 1: 12 13,0: - 1: 65520 + 1: 65504 13,1: - 1: 65039 + 1: 65038 13,2: - 1: 65295 + 1: 65038 13,3: 1: 61198 13,-1: - 1: 65311 + 1: 64799 14,0: 1: 49080 14,1: @@ -11078,9 +11129,6 @@ entities: 16,2: 1: 819 0: 8 - 16,3: - 1: 4368 - 0: 17476 13,4: 1: 40944 13,5: @@ -11104,9 +11152,6 @@ entities: 1: 30578 15,7: 0: 3968 - 16,4: - 1: 57345 - 0: 228 16,5: 1: 239 0: 61440 @@ -11134,7 +11179,7 @@ entities: -15,-17: 1: 65280 -14,-16: - 1: 65535 + 1: 30583 -14,-15: 1: 29169 -14,-14: @@ -11143,7 +11188,7 @@ entities: 1: 7936 0: 4 -11,-16: - 1: 61166 + 1: 52428 -11,-15: 1: 49376 -11,-14: @@ -11193,7 +11238,7 @@ entities: 13,-3: 1: 3003 13,-2: - 1: 61951 + 1: 61949 14,-3: 1: 36622 14,-2: @@ -11203,7 +11248,7 @@ entities: 15,-2: 1: 47931 16,-4: - 1: 65459 + 1: 64435 16,-3: 1: 56715 16,-2: @@ -11212,6 +11257,11 @@ entities: 1: 11259 16,0: 1: 10986 + 16,3: + 0: 17476 + 16,4: + 0: 228 + 1: 57344 17,0: 1: 2039 17,1: @@ -11219,13 +11269,13 @@ entities: 17,2: 0: 15 18,0: - 1: 13107 + 1: 12336 18,1: - 1: 13107 + 1: 12336 18,2: 0: 3 18,-1: - 1: 13104 + 1: 12336 17,-4: 1: 65520 17,-3: @@ -11236,34 +11286,34 @@ entities: 1: 2039 17,-5: 1: 65520 - 18,-4: - 1: 65518 18,-3: 1: 30478 18,-2: 1: 7943 18,-5: 1: 65524 + 18,-4: + 1: 61166 19,-4: - 1: 65523 + 1: 49075 19,-3: 1: 8067 19,-2: - 1: 4095 + 1: 3581 19,-5: - 1: 65520 + 1: 49072 20,-4: 1: 13104 0: 34944 20,-3: 1: 4080 20,-2: - 1: 26487 + 1: 1911 17,4: 0: 16 1: 4096 17,5: - 1: 17 + 1: 16 0: 4096 17,-8: 1: 65280 @@ -11272,10 +11322,10 @@ entities: 17,-6: 1: 65535 17,-9: - 1: 63368 + 1: 61440 0: 7 18,-9: - 1: 28979 + 1: 28945 18,-6: 1: 58980 18,-8: @@ -11297,15 +11347,15 @@ entities: 20,-5: 1: 13104 0: 34944 - 21,-4: - 1: 48058 21,-3: 1: 826 0: 34816 21,-2: 0: 4383 + 21,-4: + 1: 43690 21,-5: - 1: 48058 + 1: 43690 22,-4: 1: 65535 22,-3: @@ -11313,7 +11363,7 @@ entities: 22,-5: 1: 65535 23,-4: - 1: 13107 + 1: 4369 0: 34952 23,-3: 1: 1 @@ -11323,14 +11373,12 @@ entities: 0: 51328 20,-9: 1: 20479 + 21,-6: + 1: 61600 21,-8: - 1: 4352 0: 17508 21,-7: - 1: 273 0: 25668 - 21,-6: - 1: 61600 22,-6: 1: 62000 0: 128 @@ -11346,15 +11394,13 @@ entities: 1: 4096 19,-9: 0: 1792 - 20,-10: - 1: 20480 4,-17: 1: 65039 4,-16: - 1: 35054 - 0: 28672 + 1: 37102 + 0: 24576 3,-16: - 1: 14 + 1: 12 0: 33041 4,-15: 1: 65433 @@ -11362,7 +11408,7 @@ entities: 3,-15: 0: 35064 4,-14: - 1: 52424 + 1: 52416 5,-16: 1: 8763 5,-15: @@ -11372,10 +11418,10 @@ entities: 5,-17: 1: 64263 6,-16: - 1: 34955 + 1: 34953 0: 1092 6,-17: - 1: 13060 + 1: 4356 0: 17408 6,-15: 1: 140 @@ -11391,7 +11437,7 @@ entities: 8,-14: 0: 61440 0,-15: - 0: 48930 + 0: 48896 -1,-15: 0: 3840 0,-14: @@ -11414,9 +11460,10 @@ entities: 1: 48 3,-17: 0: 4352 - 1: 60929 + 1: 52225 -10,9: - 0: 34952 + 0: 35908 + 1: 136 -10,10: 0: 136 -3,-15: @@ -11491,7 +11538,7 @@ entities: 4,-19: 1: 64318 4,-18: - 1: 65531 + 1: 65523 5,-20: 1: 15 0: 128 @@ -11618,36 +11665,6 @@ entities: - 0 - 0 - 0 - - volume: 2500 - temperature: 293.15 - moles: - - 21.6852 - - 81.57766 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 293.15 - moles: - - 21.824873 - - 82.1031 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 chunkSize: 4 - type: GasTileOverlay - type: RadiationGridResistance @@ -11896,6 +11913,15 @@ entities: - type: Transform pos: -0.019477844,-27.376728 parent: 2 +- proto: ActionToggleLight + entities: + - uid: 15419 + components: + - type: Transform + parent: 1478 + - type: InstantAction + originalIconColor: '#FFFFFFFF' + container: 1478 - proto: AirAlarm entities: - uid: 755 @@ -12944,8 +12970,11 @@ entities: parent: 2 - type: DeviceList devices: - - 20006 - 20005 + - 20006 + - 8680 + - 8679 + - 21934 - uid: 8436 components: - type: Transform @@ -14068,16 +14097,16 @@ entities: - 22450 - proto: AirAlarmVox entities: - - uid: 4473 + - uid: 21945 components: - type: Transform - pos: -32.5,-1.5 + pos: -4.5,-37.5 parent: 2 - type: DeviceList devices: - - 13486 - - 13491 - - 2233 + - 22367 + - 21959 + - 21955 - proto: AirCanister entities: - uid: 4 @@ -18092,6 +18121,14 @@ entities: deviceLists: - 17633 - 8405 + - uid: 21934 + components: + - type: Transform + pos: 28.5,-44.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 8434 - uid: 22144 components: - type: Transform @@ -18167,15 +18204,14 @@ entities: - 2086 - proto: AirSensorVox entities: - - uid: 13486 + - uid: 21955 components: - type: Transform - rot: 3.141592653589793 rad - pos: -32.5,-2.5 + pos: -3.5,-39.5 parent: 2 - type: DeviceNetwork deviceLists: - - 4473 + - 21945 - proto: AltarHeaven entities: - uid: 16557 @@ -18684,8 +18720,6 @@ entities: rot: 3.141592653589793 rad pos: 18.5,-71.5 parent: 2 - - type: Apc - hasAccess: True - uid: 22471 components: - type: MetaData @@ -20160,6 +20194,18 @@ entities: - type: Transform pos: -22.5,-48.5 parent: 2 + - uid: 15194 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -34.5,37.5 + parent: 2 + - uid: 20608 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -34.5,36.5 + parent: 2 - uid: 21961 components: - type: Transform @@ -20385,70 +20431,55 @@ entities: parent: 2 - proto: AtmosFixVoxMarker entities: - - uid: 22452 - components: - - type: Transform - pos: -33.5,-3.5 - parent: 2 - - uid: 22453 - components: - - type: Transform - pos: -33.5,-4.5 - parent: 2 - - uid: 22454 - components: - - type: Transform - pos: -31.5,-4.5 - parent: 2 - - uid: 22455 + - uid: 22459 components: - type: Transform - pos: -32.5,-4.5 + pos: -6.5,-39.5 parent: 2 - - uid: 22456 + - uid: 22460 components: - type: Transform - pos: -32.5,-3.5 + pos: -5.5,-39.5 parent: 2 - - uid: 22457 + - uid: 22461 components: - type: Transform - pos: -31.5,-3.5 + pos: -4.5,-38.5 parent: 2 - - uid: 22458 + - uid: 22462 components: - type: Transform - pos: -30.5,-3.5 + pos: -3.5,-38.5 parent: 2 - - uid: 22459 + - uid: 22463 components: - type: Transform - pos: -30.5,-4.5 + pos: -4.5,-39.5 parent: 2 - - uid: 22460 + - uid: 22464 components: - type: Transform - pos: -30.5,-2.5 + pos: -3.5,-39.5 parent: 2 - - uid: 22461 + - uid: 22465 components: - type: Transform - pos: -30.5,-1.5 + pos: -4.5,-40.5 parent: 2 - - uid: 22462 + - uid: 22466 components: - type: Transform - pos: -31.5,-1.5 + pos: -3.5,-40.5 parent: 2 - - uid: 22463 + - uid: 22468 components: - type: Transform - pos: -31.5,-2.5 + pos: -4.5,-41.5 parent: 2 - - uid: 22464 + - uid: 22469 components: - type: Transform - pos: -32.5,-2.5 + pos: -3.5,-41.5 parent: 2 - proto: Autolathe entities: @@ -20668,6 +20699,11 @@ entities: rot: 3.141592653589793 rad pos: -37.5,-40.5 parent: 2 + - uid: 22505 + components: + - type: Transform + pos: -5.5,-41.5 + parent: 2 - proto: BarricadeDirectional entities: - uid: 2140 @@ -21184,6 +21220,36 @@ entities: rot: -1.5707963267948966 rad pos: -25.5,-3.5 parent: 2 + - uid: 1958 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -33.5,-2.5 + parent: 2 + - uid: 2233 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -33.5,-1.5 + parent: 2 + - uid: 2298 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -30.5,-1.5 + parent: 2 + - uid: 2353 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -30.5,-2.5 + parent: 2 + - uid: 2355 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -30.5,-3.5 + parent: 2 - uid: 3871 components: - type: Transform @@ -21245,12 +21311,18 @@ entities: - type: Transform pos: -50.5,-20.5 parent: 2 + - uid: 14807 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -33.5,-3.5 + parent: 2 - proto: BikeHorn entities: - uid: 1228 components: - type: Transform - pos: -30.485527,6.269905 + pos: -30.536446,6.243639 parent: 2 - uid: 8188 components: @@ -21370,6 +21442,16 @@ entities: - type: Transform pos: 82.5,-18.5 parent: 2 + - uid: 11059 + components: + - type: Transform + pos: -34.5,37.5 + parent: 2 + - uid: 15193 + components: + - type: Transform + pos: -34.5,36.5 + parent: 2 - uid: 16684 components: - type: Transform @@ -22029,6 +22111,12 @@ entities: rot: 1.5707963267948966 rad pos: 64.5,-51.5 parent: 2 + - uid: 11072 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -34.5,35.5 + parent: 2 - uid: 19830 components: - type: Transform @@ -22051,6 +22139,12 @@ entities: rot: -1.5707963267948966 rad pos: 78.5,-16.5 parent: 2 + - uid: 21184 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -34.5,35.5 + parent: 2 - uid: 21606 components: - type: Transform @@ -22820,6 +22914,26 @@ entities: - type: Transform pos: 8.5,16.5 parent: 2 + - uid: 3110 + components: + - type: Transform + pos: -34.5,-3.5 + parent: 2 + - uid: 3111 + components: + - type: Transform + pos: -29.5,1.5 + parent: 2 + - uid: 3112 + components: + - type: Transform + pos: -29.5,2.5 + parent: 2 + - uid: 3121 + components: + - type: Transform + pos: -29.5,-0.5 + parent: 2 - uid: 3283 components: - type: Transform @@ -22885,6 +22999,11 @@ entities: - type: Transform pos: -19.5,-43.5 parent: 2 + - uid: 3913 + components: + - type: Transform + pos: -29.5,-1.5 + parent: 2 - uid: 4117 components: - type: Transform @@ -22930,6 +23049,11 @@ entities: - type: Transform pos: 39.5,-27.5 parent: 2 + - uid: 4473 + components: + - type: Transform + pos: -29.5,-2.5 + parent: 2 - uid: 4559 components: - type: Transform @@ -22950,6 +23074,16 @@ entities: - type: Transform pos: 36.5,-29.5 parent: 2 + - uid: 4805 + components: + - type: Transform + pos: -27.5,0.5 + parent: 2 + - uid: 4994 + components: + - type: Transform + pos: -26.5,0.5 + parent: 2 - uid: 5020 components: - type: Transform @@ -22960,6 +23094,11 @@ entities: - type: Transform pos: 54.5,-23.5 parent: 2 + - uid: 5104 + components: + - type: Transform + pos: -34.5,-1.5 + parent: 2 - uid: 5268 components: - type: Transform @@ -23040,6 +23179,11 @@ entities: - type: Transform pos: 52.5,-23.5 parent: 2 + - uid: 6237 + components: + - type: Transform + pos: -29.5,-3.5 + parent: 2 - uid: 6471 components: - type: Transform @@ -23135,6 +23279,16 @@ entities: - type: Transform pos: -10.5,-39.5 parent: 2 + - uid: 8274 + components: + - type: Transform + pos: -34.5,-2.5 + parent: 2 + - uid: 8365 + components: + - type: Transform + pos: -4.5,-41.5 + parent: 2 - uid: 8413 components: - type: Transform @@ -23150,6 +23304,11 @@ entities: - type: Transform pos: 58.5,-28.5 parent: 2 + - uid: 8816 + components: + - type: Transform + pos: -4.5,-38.5 + parent: 2 - uid: 8993 components: - type: Transform @@ -24933,32 +25092,32 @@ entities: - uid: 11046 components: - type: Transform - pos: -28.5,3.5 + pos: -4.5,-40.5 parent: 2 - uid: 11047 components: - type: Transform - pos: -27.5,2.5 + pos: -3.5,-39.5 parent: 2 - uid: 11048 components: - type: Transform - pos: -27.5,3.5 + pos: -4.5,-39.5 parent: 2 - uid: 11049 components: - type: Transform - pos: -27.5,1.5 + pos: -6.5,-39.5 parent: 2 - uid: 11050 components: - type: Transform - pos: -27.5,0.5 + pos: -5.5,-39.5 parent: 2 - uid: 11051 components: - type: Transform - pos: -27.5,-0.5 + pos: -25.5,-0.5 parent: 2 - uid: 11052 components: @@ -24968,22 +25127,17 @@ entities: - uid: 11053 components: - type: Transform - pos: -27.5,-2.5 + pos: -34.5,-0.5 parent: 2 - uid: 11054 components: - type: Transform - pos: -27.5,-3.5 + pos: -25.5,0.5 parent: 2 - uid: 11055 components: - type: Transform - pos: -27.5,-4.5 - parent: 2 - - uid: 11056 - components: - - type: Transform - pos: -28.5,-4.5 + pos: -25.5,-4.5 parent: 2 - uid: 11058 components: @@ -25025,36 +25179,11 @@ entities: - type: Transform pos: -39.5,1.5 parent: 2 - - uid: 11067 - components: - - type: Transform - pos: -39.5,-0.5 - parent: 2 - uid: 11068 components: - type: Transform pos: -39.5,0.5 parent: 2 - - uid: 11069 - components: - - type: Transform - pos: -39.5,-1.5 - parent: 2 - - uid: 11070 - components: - - type: Transform - pos: -39.5,-2.5 - parent: 2 - - uid: 11071 - components: - - type: Transform - pos: -39.5,-3.5 - parent: 2 - - uid: 11072 - components: - - type: Transform - pos: -39.5,-4.5 - parent: 2 - uid: 11073 components: - type: Transform @@ -25115,11 +25244,6 @@ entities: - type: Transform pos: -29.5,0.5 parent: 2 - - uid: 11085 - components: - - type: Transform - pos: -28.5,0.5 - parent: 2 - uid: 11086 components: - type: Transform @@ -33535,6 +33659,11 @@ entities: - type: Transform pos: -31.5,-4.5 parent: 2 + - uid: 13182 + components: + - type: Transform + pos: -25.5,-3.5 + parent: 2 - uid: 13452 components: - type: Transform @@ -34825,6 +34954,11 @@ entities: - type: Transform pos: 16.5,16.5 parent: 2 + - uid: 14334 + components: + - type: Transform + pos: -25.5,-2.5 + parent: 2 - uid: 14335 components: - type: Transform @@ -36628,37 +36762,27 @@ entities: - uid: 14805 components: - type: Transform - pos: -6.5,-38.5 + pos: -25.5,-1.5 parent: 2 - uid: 14806 components: - type: Transform - pos: -4.5,-38.5 - parent: 2 - - uid: 14807 - components: - - type: Transform - pos: -5.5,-38.5 - parent: 2 - - uid: 14808 - components: - - type: Transform - pos: -3.5,-38.5 + pos: -26.5,-4.5 parent: 2 - uid: 14809 components: - type: Transform - pos: -3.5,-39.5 + pos: -38.5,-1.5 parent: 2 - uid: 14810 components: - type: Transform - pos: -3.5,-40.5 + pos: -38.5,-0.5 parent: 2 - uid: 14811 components: - type: Transform - pos: -3.5,-41.5 + pos: -38.5,-3.5 parent: 2 - uid: 14812 components: @@ -36850,6 +36974,11 @@ entities: - type: Transform pos: -11.5,-26.5 parent: 2 + - uid: 14902 + components: + - type: Transform + pos: -38.5,-2.5 + parent: 2 - uid: 14962 components: - type: Transform @@ -36960,6 +37089,16 @@ entities: - type: Transform pos: -37.5,24.5 parent: 2 + - uid: 15085 + components: + - type: Transform + pos: -28.5,-4.5 + parent: 2 + - uid: 15087 + components: + - type: Transform + pos: -28.5,0.5 + parent: 2 - uid: 15166 components: - type: Transform @@ -37075,6 +37214,16 @@ entities: - type: Transform pos: -21.5,39.5 parent: 2 + - uid: 15196 + components: + - type: Transform + pos: -33.5,38.5 + parent: 2 + - uid: 15305 + components: + - type: Transform + pos: -33.5,35.5 + parent: 2 - uid: 15415 components: - type: Transform @@ -37910,6 +38059,11 @@ entities: - type: Transform pos: -26.5,33.5 parent: 2 + - uid: 20103 + components: + - type: Transform + pos: -27.5,-4.5 + parent: 2 - uid: 20109 components: - type: Transform @@ -38500,16 +38654,6 @@ entities: - type: Transform pos: 8.5,-47.5 parent: 2 - - uid: 21376 - components: - - type: Transform - pos: -33.5,-2.5 - parent: 2 - - uid: 21406 - components: - - type: Transform - pos: -33.5,-3.5 - parent: 2 - uid: 21413 components: - type: Transform @@ -38530,16 +38674,6 @@ entities: - type: Transform pos: 45.5,15.5 parent: 2 - - uid: 21943 - components: - - type: Transform - pos: -33.5,-1.5 - parent: 2 - - uid: 21946 - components: - - type: Transform - pos: -33.5,-0.5 - parent: 2 - uid: 21952 components: - type: Transform @@ -38947,15 +39081,15 @@ entities: - type: Transform pos: 65.445175,-26.40616 parent: 2 - - uid: 15196 + - uid: 21331 components: - type: Transform - pos: -3.5073886,-40.86422 + pos: 63.52819,-32.40197 parent: 2 - - uid: 21331 + - uid: 21943 components: - type: Transform - pos: 63.52819,-32.40197 + pos: -6.474467,-40.97722 parent: 2 - proto: CableHV entities: @@ -42694,6 +42828,11 @@ entities: - type: Transform pos: 14.5,-27.5 parent: 2 + - uid: 11071 + components: + - type: Transform + pos: 1.5,-57.5 + parent: 2 - uid: 11782 components: - type: Transform @@ -43384,11 +43523,6 @@ entities: - type: Transform pos: -28.5,35.5 parent: 2 - - uid: 16013 - components: - - type: Transform - pos: 1.5,-58.5 - parent: 2 - uid: 16799 components: - type: Transform @@ -53192,6 +53326,11 @@ entities: rot: -1.5707963267948966 rad pos: -38.5,16.5 parent: 2 + - uid: 11070 + components: + - type: Transform + pos: -3.5,-38.5 + parent: 2 - uid: 11116 components: - type: Transform @@ -55322,11 +55461,6 @@ entities: - type: Transform pos: 0.5,-54.5 parent: 2 - - uid: 15419 - components: - - type: Transform - pos: 0.5,-55.5 - parent: 2 - uid: 15420 components: - type: Transform @@ -55572,21 +55706,6 @@ entities: - type: Transform pos: 1.5,-56.5 parent: 2 - - uid: 15470 - components: - - type: Transform - pos: 1.5,-57.5 - parent: 2 - - uid: 15471 - components: - - type: Transform - pos: 1.5,-58.5 - parent: 2 - - uid: 15472 - components: - - type: Transform - pos: 0.5,-56.5 - parent: 2 - uid: 15598 components: - type: Transform @@ -55977,6 +56096,11 @@ entities: - type: Transform pos: -9.5,-38.5 parent: 2 + - uid: 16950 + components: + - type: Transform + pos: -4.5,-38.5 + parent: 2 - uid: 17059 components: - type: Transform @@ -56044,12 +56168,6 @@ entities: rot: 1.5707963267948966 rad pos: -13.5,-39.5 parent: 2 - - uid: 20292 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -31.5,-1.5 - parent: 2 - uid: 20437 components: - type: Transform @@ -57090,12 +57208,6 @@ entities: rot: 3.141592653589793 rad pos: 5.5,44.5 parent: 2 - - uid: 21941 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -30.5,-1.5 - parent: 2 - uid: 21987 components: - type: Transform @@ -58742,22 +58854,15 @@ entities: rot: 1.5707963267948966 rad pos: -61.5,-19.5 parent: 2 - - uid: 12691 - components: - - type: Transform - pos: -30.5,-12.5 - parent: 2 - - uid: 13183 + - uid: 11069 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -31.5,-4.5 + pos: -3.5,-40.5 parent: 2 - - uid: 13191 + - uid: 12691 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -31.5,-3.5 + pos: -30.5,-12.5 parent: 2 - uid: 13862 components: @@ -58860,11 +58965,6 @@ entities: - type: Transform pos: -7.5,-40.5 parent: 2 - - uid: 15090 - components: - - type: Transform - pos: -6.5,-40.5 - parent: 2 - uid: 15150 components: - type: Transform @@ -59184,6 +59284,11 @@ entities: rot: 3.141592653589793 rad pos: 7.5,-5.5 parent: 21128 + - uid: 21376 + components: + - type: Transform + pos: -4.5,-40.5 + parent: 2 - uid: 21865 components: - type: Transform @@ -60969,13 +61074,6 @@ entities: - type: Transform pos: -40.540554,-40.53207 parent: 2 -- proto: ClothingBeltUtility - entities: - - uid: 15195 - components: - - type: Transform - pos: -3.4917636,-40.39547 - parent: 2 - proto: ClothingBeltUtilityFilled entities: - uid: 881 @@ -60998,6 +61096,11 @@ entities: - type: Transform pos: -4.4946303,-36.383816 parent: 2 + - uid: 21942 + components: + - type: Transform + pos: -6.5,-40.5 + parent: 2 - proto: ClothingEyesGlassesSunglasses entities: - uid: 21054 @@ -61209,6 +61312,34 @@ entities: parent: 2 - proto: ClothingHeadHatSantahat entities: + - uid: 15470 + components: + - type: Transform + parent: 5046 + - type: Physics + canCollide: False + - type: InsideEntityStorage + - uid: 15471 + components: + - type: Transform + parent: 5047 + - type: Physics + canCollide: False + - type: InsideEntityStorage + - uid: 15605 + components: + - type: Transform + parent: 5050 + - type: Physics + canCollide: False + - type: InsideEntityStorage + - uid: 16013 + components: + - type: Transform + parent: 5053 + - type: Physics + canCollide: False + - type: InsideEntityStorage - uid: 20413 components: - type: Transform @@ -61341,6 +61472,11 @@ entities: - type: Transform pos: 64.5,-34.5 parent: 2 + - uid: 22506 + components: + - type: Transform + pos: -3.622323,-41.379776 + parent: 2 - proto: ClothingMaskGasAtmos entities: - uid: 900 @@ -61507,6 +61643,36 @@ entities: - type: Transform pos: 21.504559,-48.362946 parent: 2 +- proto: ClothingOuterSanta + entities: + - uid: 15468 + components: + - type: Transform + parent: 5046 + - type: Physics + canCollide: False + - type: InsideEntityStorage + - uid: 15472 + components: + - type: Transform + parent: 5047 + - type: Physics + canCollide: False + - type: InsideEntityStorage + - uid: 15629 + components: + - type: Transform + parent: 5050 + - type: Physics + canCollide: False + - type: InsideEntityStorage + - uid: 16116 + components: + - type: Transform + parent: 5053 + - type: Physics + canCollide: False + - type: InsideEntityStorage - proto: ClothingOuterSkub entities: - uid: 17540 @@ -61813,6 +61979,12 @@ entities: - type: Transform pos: 36.5,0.5 parent: 2 + - uid: 22504 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -4.5,-41.5 + parent: 2 - proto: Cobweb2 entities: - uid: 3306 @@ -61825,6 +61997,11 @@ entities: - type: Transform pos: 58.5,-25.5 parent: 2 + - uid: 13175 + components: + - type: Transform + pos: -6.5,-38.5 + parent: 2 - uid: 13728 components: - type: Transform @@ -61886,11 +62063,6 @@ entities: - type: Transform pos: -17.5,23.5 parent: 2 - - uid: 14902 - components: - - type: Transform - pos: -3.5,-38.5 - parent: 2 - uid: 14905 components: - type: Transform @@ -62324,14 +62496,6 @@ entities: - type: Transform pos: 2.5,25.5 parent: 2 -- proto: ComputerFrame - entities: - - uid: 15087 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -6.5,-41.5 - parent: 2 - proto: ComputerId entities: - uid: 918 @@ -63755,10 +63919,10 @@ entities: parent: 2 - proto: DefaultStationBeaconVox entities: - - uid: 16173 + - uid: 21940 components: - type: Transform - pos: -31.5,-2.5 + pos: -4.5,-39.5 parent: 2 - proto: DefaultStationBeaconWardensOffice entities: @@ -64575,17 +64739,17 @@ entities: - type: Transform pos: -23.5,-1.5 parent: 2 - - uid: 13186 + - uid: 13177 components: - type: Transform rot: 1.5707963267948966 rad - pos: -35.5,0.5 + pos: -29.5,0.5 parent: 2 - - uid: 13192 + - uid: 13180 components: - type: Transform rot: 1.5707963267948966 rad - pos: -28.5,0.5 + pos: -34.5,0.5 parent: 2 - uid: 13200 components: @@ -64759,12 +64923,6 @@ entities: rot: 3.141592653589793 rad pos: 28.5,-40.5 parent: 2 - - uid: 724 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -34.5,0.5 - parent: 2 - uid: 725 components: - type: Transform @@ -64795,12 +64953,6 @@ entities: rot: 3.141592653589793 rad pos: 28.5,-38.5 parent: 2 - - uid: 2298 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -29.5,0.5 - parent: 2 - uid: 3463 components: - type: Transform @@ -66026,15 +66178,22 @@ entities: - type: Transform pos: -23.5,-2.5 parent: 2 - - uid: 13174 + - uid: 13178 components: - type: Transform - pos: -35.5,-3.5 + rot: 1.5707963267948966 rad + pos: -28.5,0.5 parent: 2 - - uid: 13178 + - uid: 13181 components: - type: Transform - pos: -35.5,-2.5 + rot: 1.5707963267948966 rad + pos: -35.5,0.5 + parent: 2 + - uid: 13183 + components: + - type: Transform + pos: -34.5,-1.5 parent: 2 - uid: 13185 components: @@ -66042,6 +66201,11 @@ entities: rot: -1.5707963267948966 rad pos: -25.5,0.5 parent: 2 + - uid: 13186 + components: + - type: Transform + pos: -34.5,-0.5 + parent: 2 - uid: 13187 components: - type: Transform @@ -66066,6 +66230,16 @@ entities: rot: -1.5707963267948966 rad pos: -27.5,0.5 parent: 2 + - uid: 13191 + components: + - type: Transform + pos: -34.5,-2.5 + parent: 2 + - uid: 13192 + components: + - type: Transform + pos: -34.5,-3.5 + parent: 2 - uid: 13202 components: - type: Transform @@ -66225,6 +66399,11 @@ entities: rot: 1.5707963267948966 rad pos: -33.5,0.5 parent: 2 + - uid: 13240 + components: + - type: Transform + pos: -29.5,-2.5 + parent: 2 - uid: 13244 components: - type: Transform @@ -67378,6 +67557,16 @@ entities: rot: -1.5707963267948966 rad pos: 34.5,-24.5 parent: 2 + - uid: 13486 + components: + - type: Transform + pos: -29.5,-1.5 + parent: 2 + - uid: 13491 + components: + - type: Transform + pos: -29.5,-0.5 + parent: 2 - uid: 13492 components: - type: Transform @@ -67713,6 +67902,11 @@ entities: rot: 3.141592653589793 rad pos: 49.5,-20.5 parent: 2 + - uid: 13935 + components: + - type: Transform + pos: -29.5,-3.5 + parent: 2 - uid: 14229 components: - type: Transform @@ -68813,36 +69007,6 @@ entities: rot: -1.5707963267948966 rad pos: 56.5,14.5 parent: 2 - - uid: 21929 - components: - - type: Transform - pos: -35.5,-1.5 - parent: 2 - - uid: 21930 - components: - - type: Transform - pos: -35.5,-0.5 - parent: 2 - - uid: 21931 - components: - - type: Transform - pos: -28.5,-3.5 - parent: 2 - - uid: 21932 - components: - - type: Transform - pos: -28.5,-2.5 - parent: 2 - - uid: 21933 - components: - - type: Transform - pos: -28.5,-1.5 - parent: 2 - - uid: 21934 - components: - - type: Transform - pos: -28.5,-0.5 - parent: 2 - uid: 23330 components: - type: Transform @@ -69179,18 +69343,6 @@ entities: - type: Transform pos: 21.5,21.5 parent: 2 - - uid: 21935 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -28.5,-4.5 - parent: 2 - - uid: 21936 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -35.5,-4.5 - parent: 2 - uid: 23341 components: - type: Transform @@ -69408,25 +69560,25 @@ entities: - type: Transform pos: -28.5,15.5 parent: 2 - - uid: 20694 + - uid: 17379 components: - type: Transform - pos: -35.5,-64.5 + pos: -34.5,-4.5 parent: 2 - - uid: 20695 + - uid: 17525 components: - type: Transform - pos: -59.5,-64.5 + pos: -29.5,-4.5 parent: 2 - - uid: 21924 + - uid: 20694 components: - type: Transform - pos: -28.5,-4.5 + pos: -35.5,-64.5 parent: 2 - - uid: 21925 + - uid: 20695 components: - type: Transform - pos: -35.5,-4.5 + pos: -59.5,-64.5 parent: 2 - proto: DisposalYJunction entities: @@ -69740,6 +69892,11 @@ entities: - type: Transform pos: 18.570478,-17.446852 parent: 2 + - uid: 22508 + components: + - type: Transform + pos: -4.5759196,-41.379776 + parent: 2 - proto: DrinkMugOne entities: - uid: 979 @@ -69851,6 +70008,12 @@ entities: parent: 2 - proto: EmergencyLight entities: + - uid: 108 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -37.5,-4.5 + parent: 2 - uid: 649 components: - type: Transform @@ -69916,12 +70079,6 @@ entities: rot: -1.5707963267948966 rad pos: 60.5,2.5 parent: 2 - - uid: 13180 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -39.5,-2.5 - parent: 2 - uid: 14068 components: - type: Transform @@ -70859,13 +71016,6 @@ entities: - type: Transform pos: 22.5,-65.5 parent: 2 -- proto: FancyTableSpawner - entities: - - uid: 15081 - components: - - type: Transform - pos: -15.5,-3.5 - parent: 2 - proto: FaxMachineBase entities: - uid: 997 @@ -75222,12 +75372,18 @@ entities: rot: -1.5707963267948966 rad pos: 28.5,-40.5 parent: 2 + - type: DeviceNetwork + deviceLists: + - 8434 - uid: 8680 components: - type: Transform rot: -1.5707963267948966 rad pos: 29.5,-40.5 parent: 2 + - type: DeviceNetwork + deviceLists: + - 8434 - uid: 8681 components: - type: Transform @@ -76087,6 +76243,13 @@ entities: - type: Transform pos: -47.863766,-29.112556 parent: 2 +- proto: FloraTreeChristmas02 + entities: + - uid: 21377 + components: + - type: Transform + pos: -33.5,6.5 + parent: 2 - proto: FloraTreeLarge03 entities: - uid: 1077 @@ -76407,16 +76570,15 @@ entities: - type: Transform pos: 60.5,-5.5 parent: 2 -- proto: GasFilterFlipped - entities: - - uid: 21947 + - uid: 21956 components: - type: Transform rot: 1.5707963267948966 rad - pos: -31.5,-0.5 + pos: -6.5,-38.5 parent: 2 - type: GasFilter filteredGas: Nitrogen + enabled: True - type: AtmosPipeColor color: '#0335FCFF' - proto: GasMinerCarbonDioxide @@ -76573,13 +76735,6 @@ entities: rot: -1.5707963267948966 rad pos: 80.5,-14.5 parent: 2 - - uid: 21956 - components: - - type: Transform - pos: -30.5,-0.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 22098 components: - type: Transform @@ -76666,14 +76821,6 @@ entities: - type: Transform pos: 61.5,-4.5 parent: 2 - - uid: 8365 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -32.5,-0.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 8957 components: - type: Transform @@ -76696,11 +76843,11 @@ entities: rot: 3.141592653589793 rad pos: 60.5,-6.5 parent: 2 - - uid: 13181 + - uid: 15153 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -30.5,-0.5 + rot: 3.141592653589793 rad + pos: -8.5,-38.5 parent: 2 - type: AtmosPipeColor color: '#0335FCFF' @@ -78128,14 +78275,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 20103 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -7.5,-37.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 20114 components: - type: Transform @@ -78144,14 +78283,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 20115 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -8.5,-36.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 20144 components: - type: Transform @@ -78253,6 +78384,30 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 21990 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -5.5,-38.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 22052 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,-39.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 22053 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -6.5,-39.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 22106 components: - type: Transform @@ -78344,6 +78499,22 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 22455 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -7.5,-41.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 22457 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -3.5,-41.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - proto: GasPipeFourway entities: - uid: 7063 @@ -78505,6 +78676,13 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 22051 + components: + - type: Transform + pos: -5.5,-35.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - proto: GasPipeStraight entities: - uid: 581 @@ -79066,20 +79244,6 @@ entities: rot: 1.5707963267948966 rad pos: 79.5,-12.5 parent: 2 - - uid: 7797 - components: - - type: Transform - pos: -30.5,0.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 7798 - components: - - type: Transform - pos: -30.5,1.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 7918 components: - type: Transform @@ -79127,13 +79291,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 8816 - components: - - type: Transform - pos: -32.5,0.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 8857 components: - type: Transform @@ -79210,6 +79367,37 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 15081 + components: + - type: Transform + pos: -3.5,-39.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 15090 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -7.5,-35.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 15093 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -30.5,2.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 15094 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -32.5,2.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 17003 components: - type: Transform @@ -91318,14 +91506,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 20121 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -7.5,-35.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 20122 components: - type: Transform @@ -91822,10 +92002,35 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 21955 + - uid: 21960 components: - type: Transform - pos: -32.5,1.5 + rot: 3.141592653589793 rad + pos: -8.5,-37.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 21964 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -7.5,-38.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 22034 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -5.5,-37.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 22046 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -5.5,-36.5 parent: 2 - type: AtmosPipeColor color: '#0335FCFF' @@ -92108,6 +92313,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 22352 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -5.5,-39.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 22413 components: - type: Transform @@ -92223,6 +92436,62 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 22452 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -7.5,-38.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 22453 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -7.5,-39.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 22454 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -7.5,-40.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 22456 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,-40.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 22458 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -6.5,-41.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 22509 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -5.5,-41.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 22510 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -4.5,-41.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - proto: GasPipeTJunction entities: - uid: 575 @@ -92395,17 +92664,11 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 13240 - components: - - type: Transform - pos: -30.5,2.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 13935 + - uid: 15084 components: - type: Transform - pos: -32.5,2.5 + rot: 1.5707963267948966 rad + pos: -8.5,-36.5 parent: 2 - type: AtmosPipeColor color: '#0335FCFF' @@ -94110,14 +94373,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 20111 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -5.5,-35.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 20196 components: - type: Transform @@ -94187,6 +94442,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 22372 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -7.5,-37.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - proto: GasPort entities: - uid: 1198 @@ -95619,15 +95882,16 @@ entities: color: '#0335FCFF' - proto: GasVentPumpVox entities: - - uid: 2233 + - uid: 22367 components: - type: Transform - rot: 3.141592653589793 rad - pos: -31.5,-1.5 + pos: -4.5,-38.5 parent: 2 - type: DeviceNetwork deviceLists: - - 4473 + - 21945 + - type: AtmosPipeColor + color: '#0335FCFF' - proto: GasVentScrubber entities: - uid: 893 @@ -96788,15 +97052,14 @@ entities: color: '#FF1212FF' - proto: GasVentScrubberVox entities: - - uid: 13491 + - uid: 21959 components: - type: Transform - rot: 3.141592653589793 rad - pos: -30.5,-1.5 + pos: -3.5,-38.5 parent: 2 - type: DeviceNetwork deviceLists: - - 4473 + - 21945 - type: AtmosPipeColor color: '#FF1212FF' - proto: GasVolumePump @@ -96885,14 +97148,14 @@ entities: - uid: 5750 components: - type: Transform - pos: -36.551323,5.8054585 + pos: -36.60555,6.794016 parent: 2 - proto: GlowstickBlue entities: - uid: 5751 components: - type: Transform - pos: -36.45348,5.646461 + pos: -36.440437,6.592211 parent: 2 - proto: GravityGenerator entities: @@ -96903,12 +97166,6 @@ entities: parent: 2 - proto: Grille entities: - - uid: 108 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -29.5,-2.5 - parent: 2 - uid: 759 components: - type: Transform @@ -99444,16 +99701,6 @@ entities: - type: Transform pos: -6.5,-42.5 parent: 2 - - uid: 8273 - components: - - type: Transform - pos: -5.5,-42.5 - parent: 2 - - uid: 8274 - components: - - type: Transform - pos: -4.5,-42.5 - parent: 2 - uid: 8304 components: - type: Transform @@ -99597,12 +99844,6 @@ entities: - type: Transform pos: 11.5,-61.5 parent: 2 - - uid: 13182 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -34.5,-3.5 - parent: 2 - uid: 14852 components: - type: Transform @@ -99684,16 +99925,6 @@ entities: rot: -1.5707963267948966 rad pos: -25.5,39.5 parent: 2 - - uid: 15153 - components: - - type: Transform - pos: -34.5,36.5 - parent: 2 - - uid: 15154 - components: - - type: Transform - pos: -34.5,37.5 - parent: 2 - uid: 15199 components: - type: Transform @@ -100432,18 +100663,6 @@ entities: rot: 3.141592653589793 rad pos: -36.5,33.5 parent: 2 - - uid: 16945 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -36.5,36.5 - parent: 2 - - uid: 16946 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -36.5,38.5 - parent: 2 - uid: 16947 components: - type: Transform @@ -100867,6 +101086,11 @@ entities: - type: Transform pos: 11.5,43.5 parent: 2 + - uid: 20111 + components: + - type: Transform + pos: -5.5,-41.5 + parent: 2 - uid: 20251 components: - type: Transform @@ -101550,17 +101774,10 @@ entities: - type: Transform pos: -42.5,28.5 parent: 2 - - uid: 21942 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -29.5,-3.5 - parent: 2 - - uid: 21945 + - uid: 21932 components: - type: Transform - rot: 3.141592653589793 rad - pos: -34.5,-2.5 + pos: -7.5,-42.5 parent: 2 - uid: 21967 components: @@ -102225,16 +102442,6 @@ entities: - type: Transform pos: -36.5,34.5 parent: 2 - - uid: 16950 - components: - - type: Transform - pos: -36.5,37.5 - parent: 2 - - uid: 16951 - components: - - type: Transform - pos: -36.5,35.5 - parent: 2 - uid: 16952 components: - type: Transform @@ -103210,18 +103417,6 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage -- proto: Intellicard - entities: - - uid: 5 - components: - - type: Transform - pos: 14.5,-63.5 - parent: 2 - - uid: 1958 - components: - - type: Transform - pos: 14.5,-63.5 - parent: 2 - proto: IntercomAll entities: - uid: 19738 @@ -103725,8 +103920,22 @@ entities: - uid: 1478 components: - type: Transform - pos: -36.47805,6.5564027 + pos: -36.532166,7.5278516 parent: 2 + - type: HandheldLight + toggleActionEntity: 15419 + - type: ContainerContainer + containers: + cell_slot: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + actions: !type:Container + showEnts: False + occludes: True + ents: + - 15419 + - type: ActionsContainer - uid: 5896 components: - type: Transform @@ -104143,17 +104352,189 @@ entities: showEnts: False occludes: True ents: - - 4466 + - 4466 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null +- proto: LockerHeadOfSecurityFilled + entities: + - uid: 5040 + components: + - type: Transform + pos: -11.5,33.5 + parent: 2 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.1496 + moles: + - 1.8978151 + - 7.1394 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 4467 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null +- proto: LockerMedicalFilled + entities: + - uid: 6575 + components: + - type: Transform + pos: 55.5,4.5 + parent: 2 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.1496 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 4478 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + - uid: 6576 + components: + - type: Transform + pos: 56.5,4.5 + parent: 2 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.1496 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 4479 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + - uid: 6683 + components: + - type: Transform + pos: 57.5,4.5 + parent: 2 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.1496 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 4480 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + - uid: 6687 + components: + - type: Transform + pos: 56.5,1.5 + parent: 2 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.1496 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 4481 paper_label: !type:ContainerSlot showEnts: False occludes: True ent: null -- proto: LockerHeadOfSecurityFilled - entities: - - uid: 5040 + - uid: 6688 components: - type: Transform - pos: -11.5,33.5 + pos: 57.5,1.5 parent: 2 - type: EntityStorage air: @@ -104161,8 +104542,8 @@ entities: immutable: False temperature: 293.1496 moles: - - 1.8978151 - - 7.1394 + - 1.7459903 + - 6.568249 - 0 - 0 - 0 @@ -104179,23 +104560,23 @@ entities: showEnts: False occludes: True ents: - - 4467 + - 4490 paper_label: !type:ContainerSlot showEnts: False occludes: True ent: null -- proto: LockerMedicalFilled +- proto: LockerMedicine entities: - - uid: 6575 + - uid: 22437 components: - type: Transform - pos: 55.5,4.5 + pos: 13.5,28.5 parent: 2 - type: EntityStorage air: volume: 200 immutable: False - temperature: 293.1496 + temperature: 293.1465 moles: - 1.7459903 - 6.568249 @@ -104215,24 +104596,27 @@ entities: showEnts: False occludes: True ents: - - 4478 + - 22438 + - 22439 paper_label: !type:ContainerSlot showEnts: False occludes: True ent: null - - uid: 6576 +- proto: LockerMime + entities: + - uid: 16657 components: - type: Transform - pos: 56.5,4.5 + pos: -34.5,-18.5 parent: 2 - type: EntityStorage air: volume: 200 immutable: False - temperature: 293.1496 + temperature: 293.14673 moles: - - 1.7459903 - - 6.568249 + - 1.8977377 + - 7.139109 - 0 - 0 - 0 @@ -104249,15 +104633,20 @@ entities: showEnts: False occludes: True ents: - - 4479 + - 8192 + - 8690 + - 9270 + - 9269 paper_label: !type:ContainerSlot showEnts: False occludes: True ent: null - - uid: 6683 +- proto: LockerParamedicFilled + entities: + - uid: 6668 components: - type: Transform - pos: 57.5,4.5 + pos: 55.5,8.5 parent: 2 - type: EntityStorage air: @@ -104283,15 +104672,15 @@ entities: showEnts: False occludes: True ents: - - 4480 + - 4917 paper_label: !type:ContainerSlot showEnts: False occludes: True ent: null - - uid: 6687 + - uid: 6682 components: - type: Transform - pos: 56.5,1.5 + pos: 56.5,8.5 parent: 2 - type: EntityStorage air: @@ -104317,15 +104706,17 @@ entities: showEnts: False occludes: True ents: - - 4481 + - 4919 paper_label: !type:ContainerSlot showEnts: False occludes: True ent: null - - uid: 6688 +- proto: LockerQuarterMasterFilled + entities: + - uid: 5694 components: - type: Transform - pos: 57.5,1.5 + pos: 35.5,12.5 parent: 2 - type: EntityStorage air: @@ -104351,23 +104742,23 @@ entities: showEnts: False occludes: True ents: - - 4490 + - 4920 paper_label: !type:ContainerSlot showEnts: False occludes: True ent: null -- proto: LockerMedicine +- proto: LockerResearchDirectorFilled entities: - - uid: 22437 + - uid: 7426 components: - type: Transform - pos: 13.5,28.5 + pos: 70.5,-25.5 parent: 2 - type: EntityStorage air: volume: 200 immutable: False - temperature: 293.1465 + temperature: 293.1496 moles: - 1.7459903 - 6.568249 @@ -104387,63 +104778,57 @@ entities: showEnts: False occludes: True ents: - - 22438 - - 22439 + - 4981 paper_label: !type:ContainerSlot showEnts: False occludes: True ent: null -- proto: LockerMime +- proto: LockerSalvageSpecialistFilledHardsuit entities: - - uid: 16657 + - uid: 1810 components: - type: Transform - pos: -34.5,-18.5 + pos: 36.5,19.5 parent: 2 - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.14673 - moles: - - 1.8977377 - - 7.139109 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - type: ContainerContainer - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 8192 - - 8690 - - 9270 - - 9269 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null -- proto: LockerParamedicFilled + - uid: 5997 + components: + - type: Transform + pos: 36.5,20.5 + parent: 2 + - uid: 17203 + components: + - type: Transform + pos: 36.5,21.5 + parent: 2 +- proto: LockerScienceFilled entities: - - uid: 6668 + - uid: 7217 components: - type: Transform - pos: 55.5,8.5 + pos: 68.5,-14.5 + parent: 2 + - uid: 7218 + components: + - type: Transform + pos: 69.5,-14.5 + parent: 2 + - uid: 7219 + components: + - type: Transform + pos: 70.5,-14.5 + parent: 2 +- proto: LockerSecurityFilled + entities: + - uid: 5046 + components: + - type: Transform + pos: -8.5,34.5 parent: 2 - type: EntityStorage air: volume: 200 immutable: False - temperature: 293.1496 + temperature: 293.14673 moles: - 1.7459903 - 6.568249 @@ -104463,21 +104848,22 @@ entities: showEnts: False occludes: True ents: - - 4917 + - 15468 + - 15470 paper_label: !type:ContainerSlot showEnts: False occludes: True ent: null - - uid: 6682 + - uid: 5047 components: - type: Transform - pos: 56.5,8.5 + pos: -7.5,34.5 parent: 2 - type: EntityStorage air: volume: 200 immutable: False - temperature: 293.1496 + temperature: 293.14673 moles: - 1.7459903 - 6.568249 @@ -104497,23 +104883,22 @@ entities: showEnts: False occludes: True ents: - - 4919 + - 15471 + - 15472 paper_label: !type:ContainerSlot showEnts: False occludes: True ent: null -- proto: LockerQuarterMasterFilled - entities: - - uid: 5694 + - uid: 5050 components: - type: Transform - pos: 35.5,12.5 + pos: -9.5,34.5 parent: 2 - type: EntityStorage air: volume: 200 immutable: False - temperature: 293.1496 + temperature: 293.14673 moles: - 1.7459903 - 6.568249 @@ -104533,23 +104918,22 @@ entities: showEnts: False occludes: True ents: - - 4920 + - 15605 + - 15629 paper_label: !type:ContainerSlot showEnts: False occludes: True ent: null -- proto: LockerResearchDirectorFilled - entities: - - uid: 7426 + - uid: 5053 components: - type: Transform - pos: 70.5,-25.5 + pos: -6.5,34.5 parent: 2 - type: EntityStorage air: volume: 200 immutable: False - temperature: 293.1496 + temperature: 293.14673 moles: - 1.7459903 - 6.568249 @@ -104569,67 +104953,12 @@ entities: showEnts: False occludes: True ents: - - 4981 + - 16013 + - 16116 paper_label: !type:ContainerSlot showEnts: False occludes: True ent: null -- proto: LockerSalvageSpecialistFilledHardsuit - entities: - - uid: 1810 - components: - - type: Transform - pos: 36.5,19.5 - parent: 2 - - uid: 5997 - components: - - type: Transform - pos: 36.5,20.5 - parent: 2 - - uid: 17203 - components: - - type: Transform - pos: 36.5,21.5 - parent: 2 -- proto: LockerScienceFilled - entities: - - uid: 7217 - components: - - type: Transform - pos: 68.5,-14.5 - parent: 2 - - uid: 7218 - components: - - type: Transform - pos: 69.5,-14.5 - parent: 2 - - uid: 7219 - components: - - type: Transform - pos: 70.5,-14.5 - parent: 2 -- proto: LockerSecurityFilled - entities: - - uid: 5046 - components: - - type: Transform - pos: -8.5,34.5 - parent: 2 - - uid: 5047 - components: - - type: Transform - pos: -7.5,34.5 - parent: 2 - - uid: 5050 - components: - - type: Transform - pos: -9.5,34.5 - parent: 2 - - uid: 5053 - components: - - type: Transform - pos: -6.5,34.5 - parent: 2 - proto: LockerSyndicatePersonal entities: - uid: 21051 @@ -104787,11 +105116,6 @@ entities: - type: Transform pos: 66.5,-8.5 parent: 2 - - uid: 15084 - components: - - type: Transform - pos: -5.5,-38.5 - parent: 2 - uid: 16406 components: - type: Transform @@ -104815,11 +105139,6 @@ entities: parent: 21128 - proto: MachineFrameDestroyed entities: - - uid: 15085 - components: - - type: Transform - pos: -4.5,-38.5 - parent: 2 - uid: 21196 components: - type: Transform @@ -104960,11 +105279,6 @@ entities: - type: Transform pos: 38.5,-6.5 parent: 2 - - uid: 15629 - components: - - type: Transform - pos: -3.5,-39.5 - parent: 2 - uid: 15630 components: - type: Transform @@ -105000,6 +105314,11 @@ entities: - type: Transform pos: -42.5,-36.5 parent: 2 + - uid: 21935 + components: + - type: Transform + pos: -14.5,-39.5 + parent: 2 - uid: 22446 components: - type: Transform @@ -105590,15 +105909,15 @@ entities: - type: Transform pos: 65.5,-5.5 parent: 2 - - uid: 16116 + - uid: 16117 components: - type: Transform - pos: -6.5,-39.5 + pos: -30.5,22.5 parent: 2 - - uid: 16117 + - uid: 16173 components: - type: Transform - pos: -30.5,22.5 + pos: -7.5,-39.5 parent: 2 - proto: Multitool entities: @@ -105755,6 +106074,13 @@ entities: - type: Transform pos: -62.5,-32.5 parent: 2 +- proto: NitrogenTankFilled + entities: + - uid: 21452 + components: + - type: Transform + pos: -3.4021726,-41.526543 + parent: 2 - proto: NitrousOxideCanister entities: - uid: 1515 @@ -106061,11 +106387,11 @@ entities: After several simulations where Superconducting Magnetic Energy Storage units were drained from the main system from [italic]a variety[/italic] of user errors and other shenanigans, it has been determined that the Singularity should be put on its own power loop, disconnected from the main station. The upsides of this include but are not limited to: - [bold]1.[/bold] Limited external forces from the containments power. + [bold]1.[/bold] Limited external forces from the containments power. - [bold]2.[/bold] An "early warning" system, if you see JUST the PA room run out of power, you know there is an issue. + [bold]2.[/bold] An "early warning" system, if you see JUST the PA room run out of power, you know there is an issue. - [bold]3.[/bold] Due to being on its own small loop, its much easier to spot faults in the system. + [bold]3.[/bold] Due to being on its own small loop, its much easier to spot faults in the system. [italic]While we have listed the upsides we also acknowledge the downside,[/italic] for it being on its own loop you will need an external force if the system "runs out of juice". Our recommendation for this is simply attaching a generator to said SMES and letting it get to full charge before continuing operations but as said from another of our technicians... "just attach it to the main grid for like, a hot moment, and kickstart the thing!" @@ -106563,6 +106889,11 @@ entities: - type: Transform pos: 0.62262845,-27.523497 parent: 2 + - uid: 15313 + components: + - type: Transform + pos: 14.5,-63.5 + parent: 2 - uid: 15934 components: - type: Transform @@ -107081,11 +107412,6 @@ entities: - type: Transform pos: 24.5,-64.5 parent: 2 - - uid: 15094 - components: - - type: Transform - pos: -4.5,-41.5 - parent: 2 - uid: 15102 components: - type: Transform @@ -107753,10 +108079,10 @@ entities: - type: Transform pos: 36.5,-32.5 parent: 2 - - uid: 15194 + - uid: 16951 components: - type: Transform - pos: -3.5,-41.5 + pos: -6.5,-41.5 parent: 2 - uid: 21249 components: @@ -109854,6 +110180,18 @@ entities: enabled: False - type: ApcPowerReceiver powerLoad: 0 + - uid: 15086 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -34.5,-4.5 + parent: 2 + - uid: 15092 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -29.5,-4.5 + parent: 2 - uid: 15159 components: - type: Transform @@ -109882,12 +110220,6 @@ entities: rot: 3.141592653589793 rad pos: 58.5,-23.5 parent: 2 - - uid: 17525 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -32.5,-4.5 - parent: 2 - uid: 17538 components: - type: Transform @@ -109956,18 +110288,6 @@ entities: enabled: False - type: ApcPowerReceiver powerLoad: 0 - - uid: 21926 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -27.5,-4.5 - parent: 2 - - uid: 21927 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -36.5,-4.5 - parent: 2 - uid: 22045 components: - type: Transform @@ -110197,12 +110517,6 @@ entities: rot: -1.5707963267948966 rad pos: 37.5,14.5 parent: 2 - - uid: 14334 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -34.5,-0.5 - parent: 2 - uid: 14851 components: - type: Transform @@ -110228,11 +110542,11 @@ entities: enabled: False - type: ApcPowerReceiver powerLoad: 0 - - uid: 15192 + - uid: 15195 components: - type: Transform - rot: 3.141592653589793 rad - pos: -29.5,-0.5 + rot: -1.5707963267948966 rad + pos: -35.5,38.5 parent: 2 - uid: 15250 components: @@ -110335,6 +110649,11 @@ entities: rot: -1.5707963267948966 rad pos: 65.5,-35.5 parent: 2 + - uid: 16946 + components: + - type: Transform + pos: -4.5,-38.5 + parent: 2 - uid: 17215 components: - type: Transform @@ -112335,6 +112654,11 @@ entities: - type: Transform pos: -49.5,-22.5 parent: 2 + - uid: 7797 + components: + - type: Transform + pos: -31.5,-1.5 + parent: 2 - proto: RandomGreyStalagmite entities: - uid: 18991 @@ -112658,11 +112982,6 @@ entities: - type: Transform pos: 10.5,-36.5 parent: 2 - - uid: 15305 - components: - - type: Transform - pos: 4.5,-38.5 - parent: 2 - uid: 15306 components: - type: Transform @@ -112698,11 +113017,6 @@ entities: - type: Transform pos: -8.5,-39.5 parent: 2 - - uid: 15313 - components: - - type: Transform - pos: -2.5,-38.5 - parent: 2 - uid: 15314 components: - type: Transform @@ -113108,6 +113422,16 @@ entities: - type: Transform pos: 66.5,3.5 parent: 2 + - uid: 20115 + components: + - type: Transform + pos: 7.5,-38.5 + parent: 2 + - uid: 22503 + components: + - type: Transform + pos: -4.5,-42.5 + parent: 2 - proto: RandomPosterLegit entities: - uid: 1909 @@ -113858,12 +114182,6 @@ entities: - type: Transform pos: -8.5,-24.5 parent: 2 - - uid: 15605 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -33.5,-5.5 - parent: 2 - uid: 15976 components: - type: Transform @@ -113905,6 +114223,11 @@ entities: rot: 3.141592653589793 rad pos: -32.5,-5.5 parent: 2 + - uid: 21186 + components: + - type: Transform + pos: -31.5,-5.5 + parent: 2 - uid: 21863 components: - type: Transform @@ -113940,6 +114263,11 @@ entities: parent: 2 - proto: RandomSnacks entities: + - uid: 6269 + components: + - type: Transform + pos: -31.5,-2.5 + parent: 2 - uid: 16008 components: - type: Transform @@ -113974,11 +114302,6 @@ entities: parent: 2 - proto: RandomSpawner entities: - - uid: 107 - components: - - type: Transform - pos: -33.5,-4.5 - parent: 2 - uid: 1921 components: - type: Transform @@ -113999,6 +114322,16 @@ entities: - type: Transform pos: -13.5,-37.5 parent: 2 + - uid: 20121 + components: + - type: Transform + pos: -29.5,-3.5 + parent: 2 + - uid: 21941 + components: + - type: Transform + pos: -3.5,-39.5 + parent: 2 - uid: 22400 components: - type: Transform @@ -114667,16 +115000,6 @@ entities: - type: Transform pos: 19.5,22.5 parent: 2 - - uid: 1944 - components: - - type: Transform - pos: -34.5,-3.5 - parent: 2 - - uid: 1952 - components: - - type: Transform - pos: -34.5,-2.5 - parent: 2 - uid: 1985 components: - type: Transform @@ -115245,11 +115568,6 @@ entities: - type: Transform pos: 2.5,-39.5 parent: 2 - - uid: 4805 - components: - - type: Transform - pos: -4.5,-42.5 - parent: 2 - uid: 4807 components: - type: Transform @@ -115275,16 +115593,6 @@ entities: - type: Transform pos: -19.5,-47.5 parent: 2 - - uid: 4994 - components: - - type: Transform - pos: -34.5,36.5 - parent: 2 - - uid: 5104 - components: - - type: Transform - pos: -34.5,37.5 - parent: 2 - uid: 5105 components: - type: Transform @@ -115651,16 +115959,6 @@ entities: - type: Transform pos: -35.5,30.5 parent: 2 - - uid: 6237 - components: - - type: Transform - pos: -29.5,-3.5 - parent: 2 - - uid: 6269 - components: - - type: Transform - pos: -29.5,-2.5 - parent: 2 - uid: 6270 components: - type: Transform @@ -116245,6 +116543,11 @@ entities: - type: Transform pos: 30.5,-30.5 parent: 2 + - uid: 15192 + components: + - type: Transform + pos: -7.5,-42.5 + parent: 2 - uid: 15215 components: - type: Transform @@ -116654,11 +116957,6 @@ entities: - type: Transform pos: -0.5,-39.5 parent: 2 - - uid: 21594 - components: - - type: Transform - pos: -5.5,-42.5 - parent: 2 - uid: 21595 components: - type: Transform @@ -116777,6 +117075,16 @@ entities: parent: 2 - proto: Screen entities: + - uid: 1952 + components: + - type: Transform + pos: -29.5,-5.5 + parent: 2 + - uid: 1969 + components: + - type: Transform + pos: -34.5,-5.5 + parent: 2 - uid: 3271 components: - type: Transform @@ -116860,11 +117168,6 @@ entities: rot: 4.71238898038469 rad pos: 30.5,-24.5 parent: 2 - - uid: 20293 - components: - - type: Transform - pos: -31.5,-5.5 - parent: 2 - uid: 20311 components: - type: Transform @@ -116995,6 +117298,11 @@ entities: - type: Transform pos: 17.5,-66.5 parent: 2 + - uid: 22502 + components: + - type: Transform + pos: -3.5,-42.5 + parent: 2 - proto: Screwdriver entities: - uid: 2052 @@ -118134,7 +118442,7 @@ entities: - uid: 5757 components: - type: MetaData - name: Secure storage doors button + name: Blast doors button - type: Transform rot: 3.141592653589793 rad pos: 27.5,5.5 @@ -118193,6 +118501,30 @@ entities: rot: 3.141592653589793 rad pos: 45.5,-31.5 parent: 2 + - uid: 7798 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -34.5,35.5 + parent: 2 + - type: DeviceLinkSource + linkedPorts: + 15193: + - Pressed: Toggle + 11059: + - Pressed: Toggle + - uid: 8151 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -34.5,35.5 + parent: 2 + - type: DeviceLinkSource + linkedPorts: + 15193: + - Pressed: Toggle + 11059: + - Pressed: Toggle - uid: 8185 components: - type: MetaData @@ -119815,11 +120147,6 @@ entities: parent: 2 - proto: SignSecureMed entities: - - uid: 1969 - components: - - type: Transform - pos: -29.5,-1.5 - parent: 2 - uid: 6827 components: - type: Transform @@ -119875,6 +120202,11 @@ entities: - type: Transform pos: 64.5,-48.5 parent: 2 + - uid: 21947 + components: + - type: Transform + pos: -5.5,-38.5 + parent: 2 - uid: 21950 components: - type: Transform @@ -119965,6 +120297,12 @@ entities: - type: Transform pos: -5.5,-12.5 parent: 2 + - uid: 8273 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -34.5,38.5 + parent: 2 - uid: 21938 components: - type: Transform @@ -120046,10 +120384,10 @@ entities: parent: 2 - proto: SignVox entities: - - uid: 21377 + - uid: 21946 components: - type: Transform - pos: -34.5,-1.5 + pos: -5.5,-40.5 parent: 2 - proto: SingularityGenerator entities: @@ -120076,6 +120414,12 @@ entities: - type: Transform pos: 36.5,-22.5 parent: 2 + - uid: 22507 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -3.5,-39.5 + parent: 2 - proto: SinkWide entities: - uid: 5258 @@ -120746,15 +121090,15 @@ entities: parent: 2 - proto: SolarTracker entities: - - uid: 15468 + - uid: 15702 components: - type: Transform - pos: 1.5,-58.5 + pos: -22.5,55.5 parent: 2 - - uid: 15702 + - uid: 21933 components: - type: Transform - pos: -22.5,55.5 + pos: 1.5,-57.5 parent: 2 - proto: SolidSecretDoor entities: @@ -121202,10 +121546,10 @@ entities: - type: Transform pos: -33.5,-19.5 parent: 2 - - uid: 3913 + - uid: 11067 components: - type: Transform - pos: -33.5,6.5 + pos: -33.5,5.5 parent: 2 - proto: SpawnPointMusician entities: @@ -123638,6 +123982,17 @@ entities: - SurveillanceCameraGeneral nameSet: True id: Memorial room + - uid: 21406 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,-38.5 + parent: 2 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraGeneral + nameSet: True + id: Vox box - uid: 22393 components: - type: Transform @@ -123680,16 +124035,6 @@ entities: - SurveillanceCameraGeneral nameSet: True id: West bathroom - - uid: 22469 - components: - - type: Transform - pos: -32.5,-4.5 - parent: 2 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraGeneral - nameSet: True - id: Vox box - proto: SurveillanceCameraMedical entities: - uid: 9023 @@ -125208,6 +125553,17 @@ entities: rot: 3.141592653589793 rad pos: -21.5,35.5 parent: 2 + - uid: 11085 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -6.5,-40.5 + parent: 2 + - uid: 13176 + components: + - type: Transform + pos: -6.5,-41.5 + parent: 2 - uid: 14240 components: - type: Transform @@ -125224,16 +125580,6 @@ entities: - type: Transform pos: -20.5,10.5 parent: 2 - - uid: 15092 - components: - - type: Transform - pos: -3.5,-41.5 - parent: 2 - - uid: 15093 - components: - - type: Transform - pos: -3.5,-40.5 - parent: 2 - uid: 15148 components: - type: Transform @@ -125381,29 +125727,27 @@ entities: rot: 1.5707963267948966 rad pos: 9.5,40.5 parent: 2 - - uid: 17379 + - uid: 20792 components: - type: Transform rot: 3.141592653589793 rad - pos: -30.5,-3.5 + pos: 8.5,16.5 parent: 2 - - uid: 20792 + - uid: 21330 components: - type: Transform - rot: 3.141592653589793 rad - pos: 8.5,16.5 + rot: 1.5707963267948966 rad + pos: 63.5,-32.5 parent: 2 - - uid: 21186 + - uid: 21936 components: - type: Transform - rot: 3.141592653589793 rad - pos: -30.5,-4.5 + pos: -3.5,-41.5 parent: 2 - - uid: 21330 + - uid: 21939 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 63.5,-32.5 + pos: -4.5,-41.5 parent: 2 - proto: TableCarpet entities: @@ -125604,33 +125948,6 @@ entities: rot: 1.5707963267948966 rad pos: 76.5,-24.5 parent: 2 -- proto: TableFancyBlack - entities: - - uid: 3109 - components: - - type: Transform - pos: -36.5,5.5 - parent: 2 - - uid: 3110 - components: - - type: Transform - pos: -30.5,5.5 - parent: 2 - - uid: 3111 - components: - - type: Transform - pos: -36.5,6.5 - parent: 2 - - uid: 3112 - components: - - type: Transform - pos: -30.5,7.5 - parent: 2 - - uid: 3121 - components: - - type: Transform - pos: -30.5,6.5 - parent: 2 - proto: TableFancyRed entities: - uid: 3124 @@ -126528,6 +126845,30 @@ entities: parent: 2 - proto: TableWood entities: + - uid: 5 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -32.5,-2.5 + parent: 2 + - uid: 107 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -31.5,-1.5 + parent: 2 + - uid: 724 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -31.5,-2.5 + parent: 2 + - uid: 1944 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -32.5,-1.5 + parent: 2 - uid: 2269 components: - type: Transform @@ -126729,6 +127070,12 @@ entities: - type: Transform pos: -31.5,-37.5 parent: 2 + - uid: 3109 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -32.5,-3.5 + parent: 2 - uid: 3880 components: - type: Transform @@ -126941,6 +127288,11 @@ entities: - type: Transform pos: -30.5,-15.5 parent: 2 + - uid: 14808 + components: + - type: Transform + pos: -15.5,-3.5 + parent: 2 - uid: 14991 components: - type: Transform @@ -127024,11 +127376,47 @@ entities: - type: Transform pos: 65.5,-52.5 parent: 2 + - uid: 20292 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -31.5,-3.5 + parent: 2 - uid: 20418 components: - type: Transform pos: 81.5,-35.5 parent: 2 + - uid: 21883 + components: + - type: Transform + pos: -30.5,6.5 + parent: 2 + - uid: 21911 + components: + - type: Transform + pos: -36.5,7.5 + parent: 2 + - uid: 21924 + components: + - type: Transform + pos: -30.5,5.5 + parent: 2 + - uid: 21925 + components: + - type: Transform + pos: -36.5,5.5 + parent: 2 + - uid: 21926 + components: + - type: Transform + pos: -36.5,6.5 + parent: 2 + - uid: 21931 + components: + - type: Transform + pos: -30.5,7.5 + parent: 2 - proto: TargetClown entities: - uid: 16841 @@ -127196,6 +127584,11 @@ entities: rot: 1.5707963267948966 rad pos: 61.5,4.5 parent: 2 + - uid: 11056 + components: + - type: Transform + pos: -5.5,-41.5 + parent: 2 - proto: ToiletEmpty entities: - uid: 2320 @@ -127545,11 +127938,6 @@ entities: - Middle: Off - proto: UnfinishedMachineFrame entities: - - uid: 15086 - components: - - type: Transform - pos: -3.5,-38.5 - parent: 2 - uid: 16136 components: - type: Transform @@ -127908,10 +128296,10 @@ entities: parent: 2 - proto: VendingMachineTankDispenserEngineering entities: - - uid: 2353 + - uid: 21930 components: - type: Transform - pos: 23.5,-20.5 + pos: -9.5,-25.5 parent: 2 - proto: VendingMachineTankDispenserEVA entities: @@ -127930,10 +128318,10 @@ entities: - type: Transform pos: -31.5,35.5 parent: 2 - - uid: 20608 + - uid: 21929 components: - type: Transform - pos: -9.5,-25.5 + pos: 23.5,-20.5 parent: 2 - proto: VendingMachineTheater entities: @@ -127942,11 +128330,6 @@ entities: - type: Transform pos: -38.5,-12.5 parent: 2 - - uid: 2355 - components: - - type: Transform - pos: -36.5,7.5 - parent: 2 - uid: 4356 components: - type: Transform @@ -134090,6 +134473,11 @@ entities: rot: 3.141592653589793 rad pos: 87.5,-23.5 parent: 2 + - uid: 21185 + components: + - type: Transform + pos: -4.5,-42.5 + parent: 2 - uid: 21398 components: - type: Transform @@ -139540,12 +139928,6 @@ entities: rot: 1.5707963267948966 rad pos: -2.5,-41.5 parent: 2 - - uid: 8151 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,-42.5 - parent: 2 - uid: 8152 components: - type: Transform @@ -140718,6 +141100,11 @@ entities: rot: 1.5707963267948966 rad pos: -44.5,21.5 parent: 2 + - uid: 20293 + components: + - type: Transform + pos: -5.5,-42.5 + parent: 2 - uid: 20302 components: - type: Transform @@ -143591,11 +143978,6 @@ entities: rot: -1.5707963267948966 rad pos: -32.5,26.5 parent: 2 - - uid: 11059 - components: - - type: Transform - pos: -34.5,-4.5 - parent: 2 - uid: 11655 components: - type: Transform @@ -143618,11 +144000,6 @@ entities: rot: -1.5707963267948966 rad pos: -32.5,22.5 parent: 2 - - uid: 13177 - components: - - type: Transform - pos: -34.5,-1.5 - parent: 2 - uid: 13745 components: - type: Transform @@ -143663,6 +144040,11 @@ entities: rot: -1.5707963267948966 rad pos: 7.5,18.5 parent: 2 + - uid: 15154 + components: + - type: Transform + pos: -5.5,-38.5 + parent: 2 - uid: 15165 components: - type: Transform @@ -143795,6 +144177,11 @@ entities: - type: Transform pos: -25.5,-42.5 parent: 2 + - uid: 17258 + components: + - type: Transform + pos: -5.5,-40.5 + parent: 2 - uid: 20110 components: - type: Transform @@ -143839,11 +144226,6 @@ entities: - type: Transform pos: 80.5,-32.5 parent: 2 - - uid: 21940 - components: - - type: Transform - pos: -29.5,-4.5 - parent: 2 - proto: WallSolidRust entities: - uid: 757 @@ -145747,16 +146129,6 @@ entities: rot: -1.5707963267948966 rad pos: -32.5,23.5 parent: 2 - - uid: 13175 - components: - - type: Transform - pos: -32.5,-1.5 - parent: 2 - - uid: 13176 - components: - - type: Transform - pos: -29.5,-1.5 - parent: 2 - uid: 13238 components: - type: Transform @@ -146958,6 +147330,18 @@ entities: rot: 1.5707963267948966 rad pos: -10.5,-38.5 parent: 2 + - uid: 13174 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -6.5,-39.5 + parent: 2 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 21594: + - DoorStatus: DoorBolt - uid: 16324 components: - type: Transform @@ -146976,35 +147360,24 @@ entities: rot: 3.141592653589793 rad pos: 65.5,-50.5 parent: 2 - - uid: 17258 + - uid: 21321 components: - type: Transform - pos: -33.5,-2.5 + rot: 3.141592653589793 rad + pos: 80.5,-24.5 parent: 2 - - type: DeviceLinkSink - invokeCounter: 1 - - type: DeviceLinkSource - linkedPorts: - 21184: - - DoorStatus: DoorBolt - - uid: 21184 + - uid: 21594 components: - type: Transform - rot: 3.141592653589793 rad - pos: -33.5,-1.5 + rot: 1.5707963267948966 rad + pos: -5.5,-39.5 parent: 2 - type: DeviceLinkSink invokeCounter: 1 - type: DeviceLinkSource linkedPorts: - 17258: + 13174: - DoorStatus: DoorBolt - - uid: 21321 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 80.5,-24.5 - parent: 2 - uid: 22489 components: - type: Transform @@ -148041,12 +148414,6 @@ entities: rot: -1.5707963267948966 rad pos: 46.5,16.5 parent: 2 - - uid: 15193 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -30.5,-1.5 - parent: 2 - uid: 15404 components: - type: Transform @@ -148092,6 +148459,11 @@ entities: - type: Transform pos: 43.5,-20.5 parent: 2 + - uid: 16945 + components: + - type: Transform + pos: -6.5,-38.5 + parent: 2 - uid: 17484 components: - type: Transform @@ -148125,12 +148497,6 @@ entities: rot: 3.141592653589793 rad pos: 14.5,-64.5 parent: 2 - - uid: 21185 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -32.5,-2.5 - parent: 2 - uid: 21402 components: - type: Transform @@ -148201,11 +148567,11 @@ entities: rot: 1.5707963267948966 rad pos: 55.5,1.5 parent: 2 - - uid: 21939 + - uid: 21927 components: - type: Transform rot: 3.141592653589793 rad - pos: -31.5,-1.5 + pos: -6.5,-40.5 parent: 2 - uid: 22366 components: From 465170f1e18013021cdd77790c16100dc9ecbad4 Mon Sep 17 00:00:00 2001 From: Preston Smith <92108534+thetolbean@users.noreply.github.com> Date: Fri, 15 Nov 2024 00:54:53 -0600 Subject: [PATCH 097/187] Prevent Digiboard recycling (#33315) * add `HighRiskItem` tag * Correct tags Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- Resources/Prototypes/Entities/Objects/Misc/paper.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Resources/Prototypes/Entities/Objects/Misc/paper.yml b/Resources/Prototypes/Entities/Objects/Misc/paper.yml index 5c3cd444962..e0862b88425 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/paper.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/paper.yml @@ -597,6 +597,10 @@ damage: types: Blunt: 10 + - type: Tag + tags: + - Folder + - HighRiskItem - type: StealTarget stealGroup: BoxFolderQmClipboard From e3b611085bc1aa8ddbf560966f200cc0928395c2 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Fri, 15 Nov 2024 06:56:00 +0000 Subject: [PATCH 098/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index ce0be691a4a..b9235ab83da 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: themias - changes: - - message: Fixed lizards being unable to eat custom burgers - type: Fix - id: 7110 - time: '2024-08-14T19:47:04.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/31005 - author: Erisfiregamer1 changes: - message: New chemical, Sedin. It restores seeds on plants 20% of the time with @@ -3945,3 +3938,10 @@ id: 7609 time: '2024-11-14T17:08:35.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/32586 +- author: thetolbean + changes: + - message: The Quartermaster's requisition digi-board can no longer be recycled. + type: Fix + id: 7610 + time: '2024-11-15T06:54:53.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33315 From 97ce69fef6db91a4161524363615c1a0f1f09125 Mon Sep 17 00:00:00 2001 From: Ubaser <134914314+UbaserB@users.noreply.github.com> Date: Sat, 16 Nov 2024 00:40:52 +1100 Subject: [PATCH 099/187] Command external airlocks (#33333) add --- .../Structures/Doors/Airlocks/access.yml | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml index 71feb1d4e6c..974ab76422a 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml @@ -104,6 +104,28 @@ - type: Wires layoutId: AirlockEngineering +- type: entity + parent: AirlockExternal + id: AirlockExternalCommandLocked + suffix: External, Command, Locked + components: + - type: ContainerFill + containers: + board: [ DoorElectronicsCommand ] + - type: Wires + layoutId: AirlockCommand + +- type: entity + parent: AirlockExternalGlass + id: AirlockExternalGlassCommandLocked + suffix: External, Glass, Command, Locked + components: + - type: ContainerFill + containers: + board: [ DoorElectronicsCommand ] + - type: Wires + layoutId: AirlockCommand + - type: entity parent: AirlockExternal id: AirlockExternalAtmosphericsLocked From cf96679d0bcfe65061d0d220af15575832423425 Mon Sep 17 00:00:00 2001 From: Ubaser <134914314+UbaserB@users.noreply.github.com> Date: Sat, 16 Nov 2024 06:18:44 +1100 Subject: [PATCH 100/187] New ruin variant (#33332) add --- Resources/Maps/Ruins/abandoned_outpost.yml | 2786 +++++++++++++++++ .../Prototypes/Entities/Stations/base.yml | 1 + 2 files changed, 2787 insertions(+) create mode 100644 Resources/Maps/Ruins/abandoned_outpost.yml diff --git a/Resources/Maps/Ruins/abandoned_outpost.yml b/Resources/Maps/Ruins/abandoned_outpost.yml new file mode 100644 index 00000000000..3c091f7dc67 --- /dev/null +++ b/Resources/Maps/Ruins/abandoned_outpost.yml @@ -0,0 +1,2786 @@ +meta: + format: 6 + postmapinit: false +tilemap: + 0: Space + 18: FloorBlueCircuit + 32: FloorDark + 37: FloorDarkMono + 68: FloorMetalDiamond + 83: FloorReinforced + 97: FloorSteel + 1: FloorSteelBurnt + 4: FloorSteelDamaged + 108: FloorSteelMono + 116: FloorWhite + 121: FloorWhiteMono + 3: Lattice + 130: Plating + 5: PlatingBurnt + 2: PlatingDamaged +entities: +- proto: "" + entities: + - uid: 2 + components: + - type: MetaData + name: grid + - type: Transform + pos: 6.7773275,4.1394477 + parent: invalid + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: YQAAAAADbAAAAAADAQAAAAABYQAAAAABYQAAAAACbAAAAAABggAAAAAAggAAAAAAYQAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAABQAAAAAAAwAAAAAAAwAAAAAAAQAAAAABBAAAAAABYQAAAAABYQAAAAAAeQAAAAACeQAAAAACggAAAAAAeQAAAAAAdAAAAAACeQAAAAACggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAgAAAAABYQAAAAAAeQAAAAADdAAAAAAAdAAAAAACggAAAAAAeQAAAAABdAAAAAABeQAAAAADggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAABBQAAAAAAYQAAAAACggAAAAAAdAAAAAACdAAAAAADggAAAAAAdAAAAAABeQAAAAABggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAABQAAAAAAAQAAAAABggAAAAAAeQAAAAACdAAAAAAAdAAAAAACdAAAAAADdAAAAAABeQAAAAADggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAggAAAAAABAAAAAAEggAAAAAAeQAAAAADdAAAAAADdAAAAAAAdAAAAAAAdAAAAAAAeQAAAAABggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAwAAAAAAAgAAAAACggAAAAAAdAAAAAABdAAAAAADdAAAAAACdAAAAAACdAAAAAACdAAAAAACggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAABQAAAAAAggAAAAAAdAAAAAAAdAAAAAADdAAAAAABdAAAAAACdAAAAAADdAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAwAAAAAAAwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 0,-1: + ind: 0,-1 + tiles: AAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAABQAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAABQAAAAAAAgAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAACBAAAAAAEAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAYQAAAAAAggAAAAAAYQAAAAADYQAAAAADYQAAAAABYQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAYQAAAAADBAAAAAAAYQAAAAACggAAAAAAYQAAAAADYQAAAAACYQAAAAABYQAAAAAAggAAAAAAYQAAAAABggAAAAAAYQAAAAADYQAAAAADYQAAAAAAggAAAAAAAAAAAAAAYQAAAAAAYQAAAAADAQAAAAABggAAAAAAYQAAAAACYQAAAAABYQAAAAAAYQAAAAABggAAAAAAYQAAAAACggAAAAAAYQAAAAADJQAAAAAAYQAAAAADggAAAAAAAAAAAAAAYQAAAAADYQAAAAABYQAAAAACggAAAAAAYQAAAAADYQAAAAABYQAAAAABYQAAAAADYQAAAAACYQAAAAACggAAAAAAYQAAAAACYQAAAAADYQAAAAACggAAAAAAAAAAAAAAYQAAAAAAYQAAAAADYQAAAAACYQAAAAADYQAAAAABYQAAAAADYQAAAAACYQAAAAACYQAAAAACYQAAAAABYQAAAAACYQAAAAAAYQAAAAAAYQAAAAAAggAAAAAAAAAAAAAAYQAAAAAAbAAAAAADYQAAAAADYQAAAAADYQAAAAACYQAAAAAAYQAAAAADYQAAAAAAYQAAAAACYQAAAAACggAAAAAAYQAAAAADYQAAAAABYQAAAAABggAAAAAAAAAAAAAAYQAAAAADbAAAAAACYQAAAAABYQAAAAABYQAAAAACbAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAYQAAAAABbAAAAAAAYQAAAAAAYQAAAAABYQAAAAADYQAAAAABYQAAAAAAYQAAAAADAQAAAAABAgAAAAACggAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAbAAAAAAAbAAAAAACbAAAAAADbAAAAAACYQAAAAACYQAAAAAAAQAAAAAAYQAAAAAABAAAAAABAgAAAAABggAAAAAAggAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAYQAAAAAAbAAAAAABYQAAAAADYQAAAAADYQAAAAADYQAAAAADAQAAAAAAYQAAAAAABAAAAAACAwAAAAAABQAAAAAABQAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAA + version: 6 + -1,-1: + ind: -1,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYQAAAAACYQAAAAADYQAAAAAAYQAAAAABggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAgAAAAACBAAAAAABAQAAAAAAggAAAAAAYQAAAAADggAAAAAAYQAAAAADYQAAAAADYQAAAAAAYQAAAAABggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAQAAAAAABQAAAAAAYQAAAAABggAAAAAAYQAAAAACggAAAAAAYQAAAAABYQAAAAADYQAAAAAAYQAAAAACggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAYQAAAAABYQAAAAABBAAAAAAEggAAAAAAYQAAAAADYQAAAAACYQAAAAABYQAAAAABYQAAAAACYQAAAAADggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAYQAAAAABYQAAAAADYQAAAAACYQAAAAACYQAAAAADYQAAAAAAYQAAAAAAYQAAAAACYQAAAAACYQAAAAADYQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAYQAAAAADYQAAAAACYQAAAAABggAAAAAAYQAAAAABYQAAAAAAYQAAAAADYQAAAAABYQAAAAAAYQAAAAAAYQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAbAAAAAAAYQAAAAACYQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAwAAAAAAAwAAAAAABQAAAAAAAgAAAAABAQAAAAABYQAAAAABYQAAAAADYQAAAAABYQAAAAACYQAAAAADYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAggAAAAAABQAAAAAAAgAAAAAABAAAAAADAQAAAAABAQAAAAAAYQAAAAACAQAAAAAAYQAAAAAAbAAAAAABbAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAABQAAAAAAAwAAAAAAAgAAAAAAYQAAAAACBAAAAAAAYQAAAAACYQAAAAACYQAAAAACYQAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAJQAAAAADIAAAAAAAIAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAJQAAAAAAJQAAAAABJQAAAAADggAAAAAAJQAAAAADJQAAAAADIAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAJQAAAAADJQAAAAAAJQAAAAAAggAAAAAAIAAAAAADIAAAAAACJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAJQAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAJQAAAAACIAAAAAABJQAAAAADJQAAAAAAIAAAAAABJQAAAAABggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAIAAAAAABIAAAAAABIAAAAAABIAAAAAACIAAAAAACIAAAAAABggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAUwAAAAAAUwAAAAAAIAAAAAADIAAAAAABIAAAAAABEgAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAUwAAAAAAUwAAAAAAIAAAAAACIAAAAAABIAAAAAABEgAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 1,0: + ind: 1,0 + tiles: AwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 1,-1: + ind: 1,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: SpreaderGrid + - type: Shuttle + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: + - node: + angle: -1.5707963267948966 rad + color: '#FFFFFFFF' + id: Arrows + decals: + 29: -5,7 + - node: + color: '#FFFFFFFF' + id: Bot + decals: + 14: -5,4 + 15: -4,4 + 16: -2,4 + 17: -7,4 + 145: 12,-8 + - node: + angle: 3.141592653589793 rad + color: '#52B4E996' + id: BotGreyscale + decals: + 130: 4,4 + 131: 4,5 + 132: 9,7 + 133: 9,6 + - node: + angle: 3.141592653589793 rad + color: '#EFB34196' + id: BotGreyscale + decals: + 136: 7,2 + 137: 7,1 + - node: + color: '#D381C996' + id: BrickTileWhiteCornerNw + decals: + 7: -5,7 + 8: -7,5 + - node: + color: '#D381C996' + id: BrickTileWhiteInnerNw + decals: + 2: -5,5 + - node: + color: '#EFB34196' + id: BrickTileWhiteInnerSe + decals: + 97: 6,4 + - node: + color: '#52B4E996' + id: BrickTileWhiteInnerSw + decals: + 109: 6,4 + - node: + color: '#D381C996' + id: BrickTileWhiteLineE + decals: + 13: -2,5 + - node: + color: '#52B4E996' + id: BrickTileWhiteLineN + decals: + 110: 4,6 + 111: 5,6 + 112: 6,6 + 113: 7,6 + - node: + color: '#D381C915' + id: BrickTileWhiteLineN + decals: + 64: -5,2 + 65: -6,2 + 66: -6,2 + 67: -5,2 + - node: + color: '#D381C996' + id: BrickTileWhiteLineN + decals: + 3: -6,5 + 11: -3,7 + 12: -4,7 + - node: + color: '#52B4E996' + id: BrickTileWhiteLineS + decals: + 107: 4,4 + 108: 5,4 + - node: + color: '#D381C996' + id: BrickTileWhiteLineS + decals: + 9: -6,4 + 10: -3,4 + - node: + color: '#EFB34196' + id: BrickTileWhiteLineS + decals: + 94: 7,4 + 95: 8,4 + 96: 9,4 + - node: + color: '#D381C996' + id: BrickTileWhiteLineW + decals: + 5: -5,6 + - node: + color: '#52B4E996' + id: CheckerNESW + decals: + 103: 4,2 + 104: 5,2 + 105: 5,3 + 106: 4,3 + 114: 4,7 + 115: 5,7 + 116: 6,7 + 117: 7,7 + 124: 8,6 + 125: 8,7 + 126: 9,7 + 127: 9,6 + - node: + color: '#D381C915' + id: CheckerNESW + decals: + 60: -2,2 + 61: -2,3 + 62: -3,3 + 63: -3,2 + - node: + color: '#EFB34196' + id: CheckerNESW + decals: + 89: 8,2 + 90: 8,1 + - node: + color: '#FFFFFFFF' + id: Delivery + decals: + 26: -7,1 + 27: -7,2 + 98: -3,0 + 99: -3,-4 + 100: 5,-4 + 101: 5,0 + - node: + angle: 3.141592653589793 rad + color: '#FFFFFFFF' + id: Delivery + decals: + 73: 2,3 + 75: 6,-1 + 76: 6,-2 + 77: 6,-3 + 78: -4,-1 + 79: -4,-2 + 80: -4,-3 + 81: 0,-7 + 82: 1,-7 + 83: 2,-7 + - node: + cleanable: True + color: '#FFFFFFFF' + id: DirtHeavy + decals: + 154: -7,-5 + 155: -6,-7 + 156: -3,-6 + 157: -3,-8 + 158: -4,-8 + 159: -3,-9 + 160: -7,-9 + 161: -9,-8 + 162: -11,-7 + 163: -9,-5 + 164: -9,-9 + 165: -11,-8 + 166: -7,-2 + 167: -5,-2 + 168: -5,-3 + 169: -1,-1 + 170: -1,-3 + 173: 2,-1 + 175: 5,-3 + 176: 7,-1 + 177: 7,-3 + 178: 9,-2 + 179: 2,-5 + 180: 0,-6 + 181: 2,-10 + 182: 2,-11 + 183: 0,-9 + 184: -1,-6 + 185: -1,-4 + 186: 3,-5 + 187: 3,-4 + 188: 5,2 + 189: 5,3 + 190: 5,5 + 191: 4,7 + 192: 7,5 + 193: 8,7 + 194: 8,4 + 195: 8,1 + 196: 8,2 + 197: -2,2 + 198: -3,3 + 199: -3,5 + 200: -4,6 + 201: -4,5 + 202: -6,5 + 203: -6,5 + 241: 8,-7 + 242: 6,-6 + 243: 4,-4 + 244: 5,-9 + 245: 4,-9 + 317: 11,-8 + 318: 11,-9 + 319: 12,-9 + 320: 12,-7 + - node: + cleanable: True + color: '#FFFFFFFF' + id: DirtHeavyMonotile + decals: + 204: -6,-1 + 205: -4,-3 + 206: -3,-2 + 207: 0,-2 + 208: 3,-2 + 209: 4,-2 + 210: 0,-1 + 211: 2,1 + 212: 2,3 + 213: 2,4 + 214: 8,-2 + 215: 6,-3 + 216: 6,-1 + 217: 2,-3 + 218: 0,-4 + 219: 2,-6 + 220: 1,-6 + 221: 0,-8 + 222: 2,-9 + 223: 2,-11 + 224: 4,-10 + 225: 6,-10 + 226: 6,-9 + 227: 5,-9 + 228: 5,-7 + 229: 5,-6 + 230: 7,-5 + 231: 7,-7 + 232: 9,-6 + 233: 9,-8 + 234: 9,-9 + 237: 12,-8 + 239: 13,-5 + 248: -6,-6 + 249: -10,-7 + 250: -9,-6 + 251: -6,-1 + 252: -5,1 + 253: -6,2 + 254: -6,1 + 255: -6,1 + 256: -5,2 + 257: -4,5 + 258: -4,7 + 259: -3,6 + 260: -3,5 + 261: -8,7 + 262: -8,7 + 263: -3,1 + 264: -2,1 + 265: 5,1 + 266: 4,1 + 267: 2,-2 + 268: 2,0 + 269: 0,-3 + 270: 2,4 + 271: 0,3 + 272: 1,4 + 273: 2,6 + 274: 2,7 + 275: 7,5 + 276: 8,5 + 277: 8,2 + 278: 9,1 + 279: 9,2 + 280: 12,-2 + 281: 11,-2 + 282: 9,-7 + 283: 9,-9 + 284: 4,-10 + 312: 12,-8 + 313: 12,-8 + 314: 11,-7 + 315: 13,-7 + 316: 13,-9 + 338: 1,-5 + 339: 1,-3 + 340: 1,-1 + 341: 1,0 + 342: 1,0 + 343: 6,4 + 344: 5,4 + 345: 4,5 + 346: 4,4 + 347: 4,4 + 348: 9,2 + 349: 9,2 + 350: 9,5 + 351: 8,7 + 352: 9,7 + - node: + cleanable: True + color: '#FFFFFFFF' + id: DirtMedium + decals: + 285: 2,-4 + 286: 4,-3 + 287: 4,-1 + 288: -2,-1 + 289: -2,-3 + 290: -6,-5 + 291: -3,-7 + 292: -3,-9 + 293: -3,-10 + 294: -3,-10 + 295: -9,-8 + 296: -9,-5 + 297: -6,4 + 298: -3,6 + 299: 5,2 + 300: 5,6 + 301: 5,6 + 302: 8,5 + 303: 8,1 + 304: 9,-5 + 305: 5,-6 + 306: 5,-5 + 307: 5,-9 + 308: 4,-10 + 309: 11,-6 + 310: 11,-5 + 311: 11,-6 + 321: 11,-9 + 322: 13,-8 + - node: + color: '#52B4E996' + id: FullTileOverlayGreyscale + decals: + 118: 5,5 + 119: 6,5 + - node: + angle: -1.5707963267948966 rad + color: '#FFFFFFFF' + id: LoadingArea + decals: + 28: -5,6 + - node: + color: '#FFFFFFFF' + id: LoadingArea + decals: + 102: -3,1 + - node: + angle: 3.141592653589793 rad + color: '#FFFFFFFF' + id: LoadingArea + decals: + 68: -2,3 + - node: + color: '#52B4E996' + id: LoadingAreaGreyscale + decals: + 128: 5,1 + - node: + angle: 3.141592653589793 rad + color: '#52B4E996' + id: LoadingAreaGreyscale + decals: + 129: 4,3 + - node: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale + decals: + 122: 6,4 + - node: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale180 + decals: + 121: 5,6 + - node: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale270 + decals: + 120: 6,6 + - node: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale90 + decals: + 123: 5,4 + - node: + color: '#FFFFFFFF' + id: SpaceStationSign1 + decals: + 331: -2,-2 + - node: + color: '#FFFFFFFF' + id: SpaceStationSign2 + decals: + 332: -1,-2 + - node: + color: '#FFFFFFFF' + id: SpaceStationSign3 + decals: + 333: 0,-2 + - node: + color: '#FFFFFFFF' + id: SpaceStationSign4 + decals: + 334: 1,-2 + - node: + color: '#FFFFFFFF' + id: SpaceStationSign5 + decals: + 335: 2,-2 + - node: + color: '#FFFFFFFF' + id: SpaceStationSign6 + decals: + 336: 3,-2 + - node: + color: '#FFFFFFFF' + id: SpaceStationSign7 + decals: + 337: 4,-2 + - node: + color: '#FFFFFFFF' + id: WarnCornerSmallNE + decals: + 21: -3,5 + 329: 11,-9 + - node: + color: '#FFFFFFFF' + id: WarnCornerSmallNW + decals: + 330: 13,-9 + - node: + color: '#FFFFFFFF' + id: WarnCornerSmallSE + decals: + 328: 11,-7 + - node: + color: '#FFFFFFFF' + id: WarnCornerSmallSW + decals: + 327: 13,-7 + - node: + color: '#FFFFFFFF' + id: WarnLineE + decals: + 19: -3,6 + 20: -3,7 + 324: 11,-8 + - node: + color: '#FFFFFFFF' + id: WarnLineN + decals: + 0: -7,-9 + 1: 9,-9 + 325: 12,-7 + - node: + color: '#FFFFFFFF' + id: WarnLineS + decals: + 24: -7,6 + 25: -7,7 + 323: 13,-8 + - node: + color: '#FFFFFFFF' + id: WarnLineW + decals: + 18: -2,5 + 326: 12,-9 + - type: GridAtmosphere + version: 2 + data: + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance +- proto: AirlockAssemblyCargo + entities: + - uid: 331 + components: + - type: Transform + pos: -0.5,-5.5 + parent: 2 +- proto: AirlockAssemblyEngineering + entities: + - uid: 1 + components: + - type: Transform + pos: 9.5,-7.5 + parent: 2 + - uid: 6 + components: + - type: Transform + pos: 10.5,-5.5 + parent: 2 +- proto: AirlockAssemblyMedical + entities: + - uid: 25 + components: + - type: Transform + pos: 3.5,2.5 + parent: 2 +- proto: AirlockAssemblyScienceGlass + entities: + - uid: 31 + components: + - type: Transform + pos: -5.5,3.5 + parent: 2 +- proto: AirlockAssemblyShuttle + entities: + - uid: 10 + components: + - type: Transform + pos: -11.5,-7.5 + parent: 2 +- proto: AirlockCargoLocked + entities: + - uid: 175 + components: + - type: Transform + pos: -7.5,-5.5 + parent: 2 + - uid: 201 + components: + - type: Transform + pos: -6.5,-7.5 + parent: 2 +- proto: AirlockChemistryGlassLocked + entities: + - uid: 219 + components: + - type: Transform + pos: 8.5,3.5 + parent: 2 +- proto: AirlockEngineeringLocked + entities: + - uid: 38 + components: + - type: Transform + pos: 3.5,-5.5 + parent: 2 +- proto: AirlockExternalShuttleLocked + entities: + - uid: 192 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -11.5,-5.5 + parent: 2 +- proto: AirlockScienceLocked + entities: + - uid: 36 + components: + - type: Transform + pos: -0.5,2.5 + parent: 2 +- proto: Bed + entities: + - uid: 131 + components: + - type: Transform + pos: 4.5,7.5 + parent: 2 + - uid: 190 + components: + - type: Transform + pos: 8.5,7.5 + parent: 2 +- proto: BlastDoorOpen + entities: + - uid: 41 + components: + - type: Transform + pos: -7.5,7.5 + parent: 2 +- proto: BluespaceBeaker + entities: + - uid: 112 + components: + - type: Transform + parent: 111 + - type: Physics + canCollide: False + - type: InsideEntityStorage +- proto: BrokenBottle + entities: + - uid: 42 + components: + - type: Transform + pos: -3.2567945,-8.612661 + parent: 2 +- proto: CablecuffsBroken + entities: + - uid: 107 + components: + - type: Transform + pos: 6.54331,-5.628286 + parent: 2 +- proto: CargoPallet + entities: + - uid: 302 + components: + - type: Transform + pos: -6.5,-9.5 + parent: 2 + - uid: 316 + components: + - type: Transform + pos: 9.5,-9.5 + parent: 2 +- proto: Chair + entities: + - uid: 280 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -3.5,6.5 + parent: 2 +- proto: ChairOfficeDark + entities: + - uid: 262 + components: + - type: Transform + pos: -1.5,1.5 + parent: 2 + - uid: 263 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,-4.5 + parent: 2 + - uid: 264 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 4.5,-4.5 + parent: 2 + - uid: 265 + components: + - type: Transform + pos: 4.5,1.5 + parent: 2 + - uid: 309 + components: + - type: Transform + pos: 8.5,1.5 + parent: 2 +- proto: ClosetWallEmergencyFilledRandom + entities: + - uid: 357 + components: + - type: Transform + pos: 8.5,8.5 + parent: 2 + - uid: 358 + components: + - type: Transform + pos: -5.5,8.5 + parent: 2 +- proto: ClosetWallFireFilledRandom + entities: + - uid: 359 + components: + - type: Transform + pos: -6.5,8.5 + parent: 2 + - uid: 360 + components: + - type: Transform + pos: 9.5,8.5 + parent: 2 +- proto: ComputerBroken + entities: + - uid: 49 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -4.5,6.5 + parent: 2 + - uid: 54 + components: + - type: Transform + pos: 4.5,3.5 + parent: 2 + - uid: 103 + components: + - type: Transform + pos: -3.5,-4.5 + parent: 2 + - uid: 106 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,-7.5 + parent: 2 + - uid: 373 + components: + - type: Transform + pos: -9.5,-4.5 + parent: 2 +- proto: ComputerFrame + entities: + - uid: 55 + components: + - type: Transform + pos: -1.5,3.5 + parent: 2 + - uid: 370 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,-6.5 + parent: 2 +- proto: ComputerTechnologyDiskTerminal + entities: + - uid: 288 + components: + - type: Transform + pos: -1.5,6.5 + parent: 2 +- proto: CrateArtifactContainer + entities: + - uid: 281 + components: + - type: Transform + pos: -6.5,4.5 + parent: 2 +- proto: CrateFilledSpawner + entities: + - uid: 57 + components: + - type: Transform + pos: -9.5,-5.5 + parent: 2 +- proto: DefibrillatorCabinetFilled + entities: + - uid: 346 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 3.5,4.5 + parent: 2 +- proto: DisposalMachineFrame + entities: + - uid: 371 + components: + - type: Transform + pos: 6.5,-4.5 + parent: 2 +- proto: ExtinguisherCabinetFilled + entities: + - uid: 356 + components: + - type: Transform + pos: -6.5,3.5 + parent: 2 +- proto: FirelockFrame + entities: + - uid: 171 + components: + - type: Transform + pos: 6.5,-0.5 + parent: 2 + - uid: 172 + components: + - type: Transform + pos: -2.5,-1.5 + parent: 2 +- proto: FirelockGlass + entities: + - uid: 39 + components: + - type: Transform + pos: -3.5,-0.5 + parent: 2 + - uid: 46 + components: + - type: Transform + pos: 6.5,-1.5 + parent: 2 + - uid: 47 + components: + - type: Transform + pos: 6.5,-2.5 + parent: 2 + - uid: 48 + components: + - type: Transform + pos: 2.5,-6.5 + parent: 2 + - uid: 50 + components: + - type: Transform + pos: 0.5,-6.5 + parent: 2 + - uid: 51 + components: + - type: Transform + pos: -1.5,0.5 + parent: 2 + - uid: 52 + components: + - type: Transform + pos: -0.5,0.5 + parent: 2 + - uid: 53 + components: + - type: Transform + pos: -0.5,1.5 + parent: 2 + - uid: 235 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 8.5,0.5 + parent: 2 +- proto: FloodlightBroken + entities: + - uid: 124 + components: + - type: Transform + pos: 1.7209082,4.5385127 + parent: 2 +- proto: FloorDrain + entities: + - uid: 336 + components: + - type: Transform + pos: 8.5,2.5 + parent: 2 + - type: Fixtures + fixtures: {} +- proto: FoodBowlBigTrash + entities: + - uid: 194 + components: + - type: Transform + pos: 4.691658,6.395677 + parent: 2 +- proto: FoodPlateSmallTrash + entities: + - uid: 317 + components: + - type: Transform + pos: -4.4774685,2.551927 + parent: 2 +- proto: GasCanisterBrokenBase + entities: + - uid: 191 + components: + - type: Transform + pos: -2.5,7.5 + parent: 2 +- proto: GasOutletInjector + entities: + - uid: 290 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -5.5,7.5 + parent: 2 +- proto: GasPipeStraight + entities: + - uid: 291 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -3.5,7.5 + parent: 2 +- proto: GasPort + entities: + - uid: 304 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,7.5 + parent: 2 +- proto: GasVolumePump + entities: + - uid: 289 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,7.5 + parent: 2 +- proto: Girder + entities: + - uid: 246 + components: + - type: Transform + pos: 8.5,-3.5 + parent: 2 + - uid: 286 + components: + - type: Transform + pos: -11.5,-3.5 + parent: 2 + - uid: 305 + components: + - type: Transform + pos: -9.5,-9.5 + parent: 2 + - uid: 314 + components: + - type: Transform + pos: 11.5,-3.5 + parent: 2 + - uid: 315 + components: + - type: Transform + pos: 12.5,-3.5 + parent: 2 +- proto: Grille + entities: + - uid: 8 + components: + - type: Transform + pos: 3.5,-9.5 + parent: 2 + - uid: 33 + components: + - type: Transform + pos: -0.5,-9.5 + parent: 2 + - uid: 60 + components: + - type: Transform + pos: 11.5,0.5 + parent: 2 + - uid: 97 + components: + - type: Transform + pos: -0.5,-8.5 + parent: 2 + - uid: 99 + components: + - type: Transform + pos: 3.5,-8.5 + parent: 2 + - uid: 104 + components: + - type: Transform + pos: 3.5,6.5 + parent: 2 + - uid: 105 + components: + - type: Transform + pos: -0.5,5.5 + parent: 2 + - uid: 127 + components: + - type: Transform + pos: 6.5,2.5 + parent: 2 + - uid: 130 + components: + - type: Transform + pos: -3.5,2.5 + parent: 2 + - uid: 237 + components: + - type: Transform + pos: -6.5,0.5 + parent: 2 + - uid: 238 + components: + - type: Transform + pos: -5.5,0.5 + parent: 2 + - uid: 240 + components: + - type: Transform + pos: 7.5,0.5 + parent: 2 + - uid: 241 + components: + - type: Transform + pos: 9.5,0.5 + parent: 2 + - uid: 278 + components: + - type: Transform + pos: -7.5,6.5 + parent: 2 + - uid: 294 + components: + - type: Transform + pos: -4.5,3.5 + parent: 2 +- proto: GrilleBroken + entities: + - uid: 59 + components: + - type: Transform + pos: 3.5,-11.5 + parent: 2 + - uid: 67 + components: + - type: Transform + pos: -0.5,10.5 + parent: 2 + - uid: 334 + components: + - type: Transform + pos: -11.5,-2.5 + parent: 2 + - uid: 369 + components: + - type: Transform + pos: 13.5,0.5 + parent: 2 +- proto: GrilleSpawner + entities: + - uid: 70 + components: + - type: Transform + pos: 12.5,0.5 + parent: 2 +- proto: KitchenReagentGrinder + entities: + - uid: 332 + components: + - type: Transform + pos: 9.5,5.5 + parent: 2 +- proto: LockerChemistry + entities: + - uid: 111 + components: + - type: Transform + pos: 4.5,5.5 + parent: 2 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 112 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null +- proto: LockerMedical + entities: + - uid: 114 + components: + - type: Transform + pos: 4.5,4.5 + parent: 2 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 116 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null +- proto: LockerScientist + entities: + - uid: 120 + components: + - type: Transform + pos: -4.5,1.5 + parent: 2 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 225 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null +- proto: LockerWallMedicalFilled + entities: + - uid: 355 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 10.5,4.5 + parent: 2 +- proto: LootSpawnerRandomCrateEngineering + entities: + - uid: 58 + components: + - type: Transform + pos: 7.5,-7.5 + parent: 2 +- proto: MachineAnomalyVessel + entities: + - uid: 223 + components: + - type: Transform + pos: -6.5,2.5 + parent: 2 +- proto: MachineFrame + entities: + - uid: 37 + components: + - type: Transform + pos: -3.5,4.5 + parent: 2 + - uid: 40 + components: + - type: Transform + pos: -6.5,1.5 + parent: 2 + - uid: 44 + components: + - type: Transform + pos: 7.5,2.5 + parent: 2 + - uid: 372 + components: + - type: Transform + pos: -10.5,-4.5 + parent: 2 +- proto: MachineFrameDestroyed + entities: + - uid: 43 + components: + - type: Transform + pos: 7.5,1.5 + parent: 2 + - uid: 45 + components: + - type: Transform + pos: -1.5,4.5 + parent: 2 + - uid: 136 + components: + - type: Transform + pos: 9.5,6.5 + parent: 2 + - uid: 173 + components: + - type: Transform + pos: -1.5,7.5 + parent: 2 +- proto: MedicalBed + entities: + - uid: 321 + components: + - type: Transform + pos: 6.5,7.5 + parent: 2 +- proto: MedkitFilled + entities: + - uid: 138 + components: + - type: Transform + pos: 9.52752,4.7223573 + parent: 2 +- proto: PlasmaReinforcedWindowDirectional + entities: + - uid: 165 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -5.5,5.5 + parent: 2 + - uid: 274 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -6.5,5.5 + parent: 2 + - uid: 275 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,6.5 + parent: 2 +- proto: PlasticFlapsAirtightClear + entities: + - uid: 23 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 5.5,-3.5 + parent: 2 + - uid: 26 + components: + - type: Transform + pos: 5.5,0.5 + parent: 2 + - uid: 27 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,-3.5 + parent: 2 + - uid: 29 + components: + - type: Transform + pos: -2.5,0.5 + parent: 2 +- proto: PlushieLizardMirrored + entities: + - uid: 125 + components: + - type: MetaData + desc: Something about this lizard plushie feels off... + - type: Transform + pos: 12.5,-7.5 + parent: 2 +- proto: PosterBroken + entities: + - uid: 167 + components: + - type: Transform + pos: -2.5,8.5 + parent: 2 + - uid: 169 + components: + - type: Transform + pos: -3.5,8.5 + parent: 2 + - uid: 176 + components: + - type: Transform + pos: 6.5,3.5 + parent: 2 + - uid: 182 + components: + - type: Transform + pos: 3.5,-6.5 + parent: 2 + - uid: 185 + components: + - type: Transform + pos: -0.5,3.5 + parent: 2 + - uid: 189 + components: + - type: Transform + pos: 3.5,3.5 + parent: 2 +- proto: PosterContrabandWehWatches + entities: + - uid: 347 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,-3.5 + parent: 2 +- proto: PosterLegitScience + entities: + - uid: 178 + components: + - type: Transform + pos: -3.5,3.5 + parent: 2 +- proto: PottedPlantRandom + entities: + - uid: 319 + components: + - type: Transform + pos: 7.5,6.5 + parent: 2 +- proto: Poweredlight + entities: + - uid: 242 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -4.5,-2.5 + parent: 2 + - uid: 247 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 2.5,4.5 + parent: 2 + - uid: 249 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 2.5,-7.5 + parent: 2 + - uid: 250 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,-7.5 + parent: 2 + - uid: 251 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,4.5 + parent: 2 + - uid: 253 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -5.5,-6.5 + parent: 2 + - uid: 254 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,-7.5 + parent: 2 + - uid: 255 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 9.5,5.5 + parent: 2 + - uid: 257 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -6.5,5.5 + parent: 2 +- proto: PoweredlightEmpty + entities: + - uid: 144 + components: + - type: Transform + pos: 7.5,-0.5 + parent: 2 + - uid: 147 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 7.5,-2.5 + parent: 2 + - uid: 150 + components: + - type: Transform + pos: -4.5,-0.5 + parent: 2 + - uid: 152 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,4.5 + parent: 2 + - uid: 156 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 0.5,-7.5 + parent: 2 + - uid: 158 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 8.5,-6.5 + parent: 2 + - uid: 159 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 0.5,4.5 + parent: 2 +- proto: PoweredSmallLight + entities: + - uid: 258 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 9.5,2.5 + parent: 2 + - uid: 259 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -6.5,2.5 + parent: 2 + - uid: 261 + components: + - type: Transform + pos: 12.5,-4.5 + parent: 2 +- proto: PoweredSmallLightEmpty + entities: + - uid: 160 + components: + - type: Transform + pos: -9.5,-4.5 + parent: 2 +- proto: Rack + entities: + - uid: 224 + components: + - type: Transform + pos: -4.5,2.5 + parent: 2 +- proto: RandomArtifactSpawner20 + entities: + - uid: 166 + components: + - type: Transform + pos: -5.5,6.5 + parent: 2 +- proto: RandomEngineerCorpseSpawner + entities: + - uid: 93 + components: + - type: Transform + pos: 7.5,-6.5 + parent: 2 +- proto: RandomPosterLegit + entities: + - uid: 337 + components: + - type: Transform + pos: 5.5,8.5 + parent: 2 + - uid: 338 + components: + - type: Transform + pos: 6.5,8.5 + parent: 2 +- proto: RandomScienceCorpseSpawner + entities: + - uid: 354 + components: + - type: Transform + pos: -2.5,2.5 + parent: 2 +- proto: ReinforcedGirder + entities: + - uid: 62 + components: + - type: Transform + pos: 3.5,9.5 + parent: 2 + - uid: 206 + components: + - type: Transform + pos: -0.5,8.5 + parent: 2 + - uid: 215 + components: + - type: Transform + pos: -7.5,0.5 + parent: 2 +- proto: ReinforcedPlasmaWindow + entities: + - uid: 277 + components: + - type: Transform + pos: -7.5,6.5 + parent: 2 +- proto: ReinforcedWindow + entities: + - uid: 9 + components: + - type: Transform + pos: -4.5,3.5 + parent: 2 + - uid: 96 + components: + - type: Transform + pos: -5.5,0.5 + parent: 2 + - uid: 110 + components: + - type: Transform + pos: -4.5,0.5 + parent: 2 + - uid: 113 + components: + - type: Transform + pos: 9.5,0.5 + parent: 2 + - uid: 115 + components: + - type: Transform + pos: -0.5,6.5 + parent: 2 + - uid: 117 + components: + - type: Transform + pos: 3.5,6.5 + parent: 2 + - uid: 118 + components: + - type: Transform + pos: 3.5,5.5 + parent: 2 + - uid: 123 + components: + - type: Transform + pos: 3.5,-8.5 + parent: 2 + - uid: 126 + components: + - type: Transform + pos: -0.5,-9.5 + parent: 2 + - uid: 221 + components: + - type: Transform + pos: -3.5,2.5 + parent: 2 + - uid: 222 + components: + - type: Transform + pos: 6.5,2.5 + parent: 2 +- proto: SalvageCanisterSpawner + entities: + - uid: 350 + components: + - type: Transform + pos: -4.5,-7.5 + parent: 2 + - uid: 352 + components: + - type: Transform + pos: -4.5,-8.5 + parent: 2 + - uid: 353 + components: + - type: Transform + pos: -4.5,-9.5 + parent: 2 +- proto: SalvageLootSpawner + entities: + - uid: 71 + components: + - type: Transform + pos: -4.5,5.5 + parent: 2 +- proto: SalvageMaterialCrateSpawner + entities: + - uid: 32 + components: + - type: Transform + pos: -3.5,-7.5 + parent: 2 + - uid: 91 + components: + - type: Transform + pos: -5.5,1.5 + parent: 2 + - uid: 322 + components: + - type: Transform + pos: 8.5,6.5 + parent: 2 + - uid: 339 + components: + - type: Transform + pos: -2.5,-8.5 + parent: 2 +- proto: SalvageMobSpawner + entities: + - uid: 349 + components: + - type: Transform + pos: -3.5,-5.5 + parent: 2 +- proto: SalvageMobSpawner75 + entities: + - uid: 348 + components: + - type: Transform + pos: -4.5,-6.5 + parent: 2 +- proto: SalvageSpawnerMobMagnet + entities: + - uid: 361 + components: + - type: Transform + pos: 8.5,-5.5 + parent: 2 + - uid: 362 + components: + - type: Transform + pos: 6.5,-7.5 + parent: 2 +- proto: SalvageSpawnerScrapCommon + entities: + - uid: 344 + components: + - type: Transform + pos: -3.5,-6.5 + parent: 2 +- proto: SalvageSpawnerScrapCommon75 + entities: + - uid: 56 + components: + - type: Transform + pos: 9.5,7.5 + parent: 2 + - uid: 79 + components: + - type: Transform + pos: 6.5,6.5 + parent: 2 + - uid: 83 + components: + - type: Transform + pos: 7.5,-5.5 + parent: 2 + - uid: 87 + components: + - type: Transform + pos: 5.5,-7.5 + parent: 2 + - uid: 90 + components: + - type: Transform + pos: 7.5,-9.5 + parent: 2 +- proto: SalvageSpawnerScrapValuable + entities: + - uid: 121 + components: + - type: Transform + pos: 6.5,-6.5 + parent: 2 +- proto: SalvageSpawnerScrapValuable75 + entities: + - uid: 163 + components: + - type: Transform + pos: -4.5,4.5 + parent: 2 + - uid: 340 + components: + - type: Transform + pos: -2.5,-6.5 + parent: 2 +- proto: SalvageSpawnerTreasure + entities: + - uid: 74 + components: + - type: Transform + pos: -6.5,-8.5 + parent: 2 + - uid: 75 + components: + - type: Transform + pos: 8.5,2.5 + parent: 2 + - uid: 78 + components: + - type: Transform + pos: -6.5,5.5 + parent: 2 +- proto: SalvageSpawnerTreasureValuable + entities: + - uid: 72 + components: + - type: Transform + pos: 9.5,-8.5 + parent: 2 +- proto: ShardGlass + entities: + - uid: 328 + components: + - type: Transform + pos: -1.0626283,1.741735 + parent: 2 + - uid: 333 + components: + - type: Transform + pos: 3.4061213,0.19485998 + parent: 2 +- proto: ShardGlassReinforced + entities: + - uid: 141 + components: + - type: Transform + pos: 3.7342463,-0.008265018 + parent: 2 + - uid: 330 + components: + - type: Transform + pos: 0.2028017,1.4173388 + parent: 2 +- proto: SheetGlass + entities: + - uid: 298 + components: + - type: Transform + pos: -1.4880872,5.502641 + parent: 2 +- proto: SheetPlastic + entities: + - uid: 299 + components: + - type: Transform + pos: -1.5037122,5.346391 + parent: 2 +- proto: SheetSteel + entities: + - uid: 297 + components: + - type: Transform + pos: -1.4724622,5.643266 + parent: 2 +- proto: SignCargo + entities: + - uid: 73 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,-6.5 + parent: 2 +- proto: SignDirectionalMed + entities: + - uid: 351 + components: + - type: Transform + pos: 3.5,7.5 + parent: 2 +- proto: SignDirectionalSci + entities: + - uid: 295 + components: + - type: Transform + pos: -0.5,7.5 + parent: 2 +- proto: SinkWide + entities: + - uid: 335 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 8.5,2.5 + parent: 2 +- proto: SmartFridge + entities: + - uid: 218 + components: + - type: Transform + pos: 7.5,3.5 + parent: 2 +- proto: SpawnMobBearSalvage + entities: + - uid: 368 + components: + - type: Transform + pos: -3.5,7.5 + parent: 2 +- proto: SpawnMobCobraSalvage + entities: + - uid: 364 + components: + - type: Transform + pos: 7.5,4.5 + parent: 2 + - uid: 367 + components: + - type: Transform + pos: -3.5,5.5 + parent: 2 +- proto: SpawnMobSpiderSalvage + entities: + - uid: 345 + components: + - type: Transform + pos: -2.5,-7.5 + parent: 2 + - uid: 363 + components: + - type: Transform + pos: 6.5,5.5 + parent: 2 +- proto: StationMapBroken + entities: + - uid: 95 + components: + - type: Transform + pos: -3.5,0.5 + parent: 2 + - uid: 101 + components: + - type: Transform + pos: 6.5,0.5 + parent: 2 +- proto: SubstationBasic + entities: + - uid: 228 + components: + - type: Transform + pos: -6.5,-9.5 + parent: 2 + - uid: 229 + components: + - type: Transform + pos: 9.5,-9.5 + parent: 2 +- proto: SyringeBluespace + entities: + - uid: 116 + components: + - type: Transform + parent: 114 + - type: Physics + canCollide: False + - type: InsideEntityStorage +- proto: TableFrame + entities: + - uid: 193 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 5.5,7.5 + parent: 2 +- proto: TableGlass + entities: + - uid: 320 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 7.5,7.5 + parent: 2 +- proto: TableReinforced + entities: + - uid: 3 + components: + - type: Transform + pos: -0.5,-3.5 + parent: 2 + - uid: 4 + components: + - type: Transform + pos: -1.5,-3.5 + parent: 2 + - uid: 13 + components: + - type: Transform + pos: 3.5,-4.5 + parent: 2 + - uid: 14 + components: + - type: Transform + pos: 3.5,-3.5 + parent: 2 + - uid: 15 + components: + - type: Transform + pos: -0.5,0.5 + parent: 2 + - uid: 16 + components: + - type: Transform + pos: 4.5,-3.5 + parent: 2 + - uid: 17 + components: + - type: Transform + pos: -0.5,-4.5 + parent: 2 + - uid: 18 + components: + - type: Transform + pos: 4.5,0.5 + parent: 2 + - uid: 19 + components: + - type: Transform + pos: 3.5,1.5 + parent: 2 + - uid: 20 + components: + - type: Transform + pos: 3.5,0.5 + parent: 2 + - uid: 21 + components: + - type: Transform + pos: -1.5,0.5 + parent: 2 + - uid: 22 + components: + - type: Transform + pos: -0.5,1.5 + parent: 2 + - uid: 122 + components: + - type: Transform + pos: 8.5,0.5 + parent: 2 + - uid: 296 + components: + - type: Transform + pos: -1.5,5.5 + parent: 2 + - uid: 310 + components: + - type: Transform + pos: 9.5,1.5 + parent: 2 + - uid: 311 + components: + - type: Transform + pos: 9.5,2.5 + parent: 2 + - uid: 323 + components: + - type: Transform + pos: 9.5,4.5 + parent: 2 + - uid: 324 + components: + - type: Transform + pos: 9.5,5.5 + parent: 2 +- proto: WallReinforced + entities: + - uid: 7 + components: + - type: Transform + pos: -7.5,3.5 + parent: 2 + - uid: 11 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 10.5,0.5 + parent: 2 + - uid: 24 + components: + - type: Transform + pos: -7.5,5.5 + parent: 2 + - uid: 28 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,4.5 + parent: 2 + - uid: 145 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,3.5 + parent: 2 + - uid: 146 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,7.5 + parent: 2 + - uid: 148 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 4.5,8.5 + parent: 2 + - uid: 149 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 5.5,8.5 + parent: 2 + - uid: 151 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 7.5,8.5 + parent: 2 + - uid: 153 + components: + - type: Transform + pos: -3.5,8.5 + parent: 2 + - uid: 154 + components: + - type: Transform + pos: -0.5,7.5 + parent: 2 + - uid: 155 + components: + - type: Transform + pos: -1.5,8.5 + parent: 2 + - uid: 157 + components: + - type: Transform + pos: -3.5,0.5 + parent: 2 + - uid: 161 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 10.5,2.5 + parent: 2 + - uid: 162 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 10.5,3.5 + parent: 2 + - uid: 164 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 10.5,4.5 + parent: 2 + - uid: 168 + components: + - type: Transform + pos: -4.5,8.5 + parent: 2 + - uid: 170 + components: + - type: Transform + pos: -5.5,8.5 + parent: 2 + - uid: 270 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 10.5,6.5 + parent: 2 + - uid: 271 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 10.5,7.5 + parent: 2 + - uid: 272 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 8.5,8.5 + parent: 2 + - uid: 303 + components: + - type: Transform + pos: -0.5,3.5 + parent: 2 +- proto: WallReinforcedRust + entities: + - uid: 61 + components: + - type: Transform + pos: 3.5,8.5 + parent: 2 + - uid: 195 + components: + - type: Transform + pos: -7.5,4.5 + parent: 2 + - uid: 197 + components: + - type: Transform + pos: 6.5,0.5 + parent: 2 + - uid: 202 + components: + - type: Transform + pos: -7.5,2.5 + parent: 2 + - uid: 204 + components: + - type: Transform + pos: 10.5,1.5 + parent: 2 + - uid: 207 + components: + - type: Transform + pos: 6.5,8.5 + parent: 2 + - uid: 212 + components: + - type: Transform + pos: 9.5,8.5 + parent: 2 + - uid: 213 + components: + - type: Transform + pos: -0.5,9.5 + parent: 2 + - uid: 216 + components: + - type: Transform + pos: -0.5,4.5 + parent: 2 + - uid: 226 + components: + - type: Transform + pos: -7.5,1.5 + parent: 2 + - uid: 227 + components: + - type: Transform + pos: 10.5,5.5 + parent: 2 + - uid: 230 + components: + - type: Transform + pos: -6.5,8.5 + parent: 2 + - uid: 231 + components: + - type: Transform + pos: -7.5,8.5 + parent: 2 + - uid: 236 + components: + - type: Transform + pos: -2.5,8.5 + parent: 2 + - uid: 239 + components: + - type: Transform + pos: 10.5,8.5 + parent: 2 + - uid: 366 + components: + - type: Transform + pos: -8.5,0.5 + parent: 2 +- proto: WallSolid + entities: + - uid: 5 + components: + - type: Transform + pos: -0.5,-6.5 + parent: 2 + - uid: 12 + components: + - type: Transform + pos: 3.5,-6.5 + parent: 2 + - uid: 30 + components: + - type: Transform + pos: 6.5,-3.5 + parent: 2 + - uid: 34 + components: + - type: Transform + pos: 3.5,-7.5 + parent: 2 + - uid: 35 + components: + - type: Transform + pos: -6.5,3.5 + parent: 2 + - uid: 98 + components: + - type: Transform + pos: 9.5,-3.5 + parent: 2 + - uid: 100 + components: + - type: Transform + pos: -5.5,-3.5 + parent: 2 + - uid: 102 + components: + - type: Transform + pos: 6.5,1.5 + parent: 2 + - uid: 108 + components: + - type: Transform + pos: -0.5,-10.5 + parent: 2 + - uid: 109 + components: + - type: Transform + pos: -4.5,-3.5 + parent: 2 + - uid: 119 + components: + - type: Transform + pos: -6.5,-3.5 + parent: 2 + - uid: 128 + components: + - type: Transform + pos: -3.5,1.5 + parent: 2 + - uid: 129 + components: + - type: Transform + pos: -3.5,3.5 + parent: 2 + - uid: 132 + components: + - type: Transform + pos: 10.5,-4.5 + parent: 2 + - uid: 133 + components: + - type: Transform + pos: 4.5,-10.5 + parent: 2 + - uid: 134 + components: + - type: Transform + pos: 5.5,-10.5 + parent: 2 + - uid: 135 + components: + - type: Transform + pos: 6.5,-10.5 + parent: 2 + - uid: 137 + components: + - type: Transform + pos: 8.5,-10.5 + parent: 2 + - uid: 139 + components: + - type: Transform + pos: 10.5,-10.5 + parent: 2 + - uid: 140 + components: + - type: Transform + pos: 10.5,-9.5 + parent: 2 + - uid: 143 + components: + - type: Transform + pos: 10.5,-6.5 + parent: 2 + - uid: 174 + components: + - type: Transform + pos: -7.5,-4.5 + parent: 2 + - uid: 177 + components: + - type: Transform + pos: -7.5,-7.5 + parent: 2 + - uid: 179 + components: + - type: Transform + pos: -7.5,-9.5 + parent: 2 + - uid: 180 + components: + - type: Transform + pos: -7.5,-10.5 + parent: 2 + - uid: 181 + components: + - type: Transform + pos: -6.5,-10.5 + parent: 2 + - uid: 183 + components: + - type: Transform + pos: -4.5,-10.5 + parent: 2 + - uid: 184 + components: + - type: Transform + pos: -3.5,-10.5 + parent: 2 + - uid: 186 + components: + - type: Transform + pos: -1.5,-10.5 + parent: 2 + - uid: 187 + components: + - type: Transform + pos: -8.5,-3.5 + parent: 2 + - uid: 188 + components: + - type: Transform + pos: -9.5,-3.5 + parent: 2 + - uid: 196 + components: + - type: Transform + pos: 14.5,-8.5 + parent: 2 + - uid: 198 + components: + - type: Transform + pos: -5.5,-9.5 + parent: 2 + - uid: 199 + components: + - type: Transform + pos: -5.5,-8.5 + parent: 2 + - uid: 200 + components: + - type: Transform + pos: -5.5,-7.5 + parent: 2 + - uid: 203 + components: + - type: Transform + pos: 8.5,-7.5 + parent: 2 + - uid: 205 + components: + - type: Transform + pos: 8.5,-9.5 + parent: 2 + - uid: 208 + components: + - type: Transform + pos: -8.5,-9.5 + parent: 2 + - uid: 209 + components: + - type: Transform + pos: 14.5,-7.5 + parent: 2 + - uid: 210 + components: + - type: Transform + pos: 14.5,-6.5 + parent: 2 + - uid: 211 + components: + - type: Transform + pos: 14.5,-4.5 + parent: 2 + - uid: 214 + components: + - type: Transform + pos: 13.5,-3.5 + parent: 2 + - uid: 217 + components: + - type: Transform + pos: 6.5,3.5 + parent: 2 + - uid: 220 + components: + - type: Transform + pos: 9.5,3.5 + parent: 2 + - uid: 232 + components: + - type: Transform + pos: 11.5,-9.5 + parent: 2 + - uid: 233 + components: + - type: Transform + pos: 13.5,-9.5 + parent: 2 +- proto: WallSolidRust + entities: + - uid: 243 + components: + - type: Transform + pos: -3.5,-3.5 + parent: 2 + - uid: 244 + components: + - type: Transform + pos: -0.5,-7.5 + parent: 2 + - uid: 245 + components: + - type: Transform + pos: 10.5,-3.5 + parent: 2 + - uid: 248 + components: + - type: Transform + pos: 3.5,-10.5 + parent: 2 + - uid: 252 + components: + - type: Transform + pos: 7.5,-3.5 + parent: 2 + - uid: 256 + components: + - type: Transform + pos: 7.5,-10.5 + parent: 2 + - uid: 260 + components: + - type: Transform + pos: 9.5,-10.5 + parent: 2 + - uid: 267 + components: + - type: Transform + pos: 10.5,-8.5 + parent: 2 + - uid: 273 + components: + - type: Transform + pos: 10.5,-7.5 + parent: 2 + - uid: 276 + components: + - type: Transform + pos: -7.5,-3.5 + parent: 2 + - uid: 279 + components: + - type: Transform + pos: -7.5,-6.5 + parent: 2 + - uid: 282 + components: + - type: Transform + pos: -7.5,-8.5 + parent: 2 + - uid: 283 + components: + - type: Transform + pos: -5.5,-10.5 + parent: 2 + - uid: 284 + components: + - type: Transform + pos: -2.5,-10.5 + parent: 2 + - uid: 285 + components: + - type: Transform + pos: -10.5,-3.5 + parent: 2 + - uid: 287 + components: + - type: Transform + pos: -11.5,-4.5 + parent: 2 + - uid: 292 + components: + - type: Transform + pos: -11.5,-6.5 + parent: 2 + - uid: 293 + components: + - type: Transform + pos: 14.5,-9.5 + parent: 2 + - uid: 300 + components: + - type: Transform + pos: 12.5,-9.5 + parent: 2 + - uid: 301 + components: + - type: Transform + pos: 8.5,-8.5 + parent: 2 + - uid: 307 + components: + - type: Transform + pos: 14.5,-3.5 + parent: 2 + - uid: 308 + components: + - type: Transform + pos: 14.5,-5.5 + parent: 2 + - uid: 365 + components: + - type: Transform + pos: -0.5,-11.5 + parent: 2 +- proto: WeaponPistolCHIMP + entities: + - uid: 225 + components: + - type: Transform + parent: 120 + - type: Physics + canCollide: False + - type: InsideEntityStorage +- proto: WindoorAssemblySecure + entities: + - uid: 142 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 5.5,3.5 + parent: 2 + - uid: 318 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 4.5,-3.5 + parent: 2 + - uid: 325 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,-4.5 + parent: 2 + - uid: 326 + components: + - type: Transform + pos: -1.5,0.5 + parent: 2 + - uid: 327 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 4.5,0.5 + parent: 2 +- proto: WindoorAssemblySecurePlasma + entities: + - uid: 329 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,7.5 + parent: 2 +- proto: WindoorSecureCargoLocked + entities: + - uid: 76 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,-3.5 + parent: 2 +- proto: WindoorSecureChemistryLocked + entities: + - uid: 234 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 8.5,0.5 + parent: 2 + - uid: 343 + components: + - type: Transform + pos: 7.5,3.5 + parent: 2 +- proto: WindoorSecureEngineeringLocked + entities: + - uid: 86 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,-4.5 + parent: 2 + - uid: 92 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 5.5,-4.5 + parent: 2 +- proto: WindoorSecureMedicalLocked + entities: + - uid: 88 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,1.5 + parent: 2 + - uid: 89 + components: + - type: Transform + pos: 4.5,0.5 + parent: 2 +- proto: WindoorSecureScienceLocked + entities: + - uid: 94 + components: + - type: Transform + pos: -2.5,1.5 + parent: 2 + - uid: 266 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,3.5 + parent: 2 + - uid: 312 + components: + - type: Transform + pos: 8.5,6.5 + parent: 2 +- proto: WindowReinforcedDirectional + entities: + - uid: 63 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,-3.5 + parent: 2 + - uid: 64 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,0.5 + parent: 2 + - uid: 65 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,0.5 + parent: 2 + - uid: 66 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,-3.5 + parent: 2 + - uid: 68 + components: + - type: Transform + pos: 3.5,-4.5 + parent: 2 + - uid: 69 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,1.5 + parent: 2 + - uid: 77 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,-3.5 + parent: 2 + - uid: 80 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,0.5 + parent: 2 + - uid: 81 + components: + - type: Transform + pos: -0.5,0.5 + parent: 2 + - uid: 82 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,0.5 + parent: 2 + - uid: 84 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,-3.5 + parent: 2 + - uid: 85 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,-3.5 + parent: 2 + - uid: 268 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 4.5,3.5 + parent: 2 + - uid: 269 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,3.5 + parent: 2 + - uid: 313 + components: + - type: Transform + pos: 9.5,6.5 + parent: 2 + - uid: 341 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 7.5,6.5 + parent: 2 + - uid: 342 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 7.5,7.5 + parent: 2 +- proto: Wrench + entities: + - uid: 306 + components: + - type: Transform + pos: -1.691124,5.257793 + parent: 2 +... diff --git a/Resources/Prototypes/Entities/Stations/base.yml b/Resources/Prototypes/Entities/Stations/base.yml index 2197629980c..effb391404d 100644 --- a/Resources/Prototypes/Entities/Stations/base.yml +++ b/Resources/Prototypes/Entities/Stations/base.yml @@ -60,6 +60,7 @@ maxCount: 2 stationGrid: false paths: + - /Maps/Ruins/abandoned_outpost.yml - /Maps/Ruins/chunked_tcomms.yml - /Maps/Ruins/biodome_satellite.yml - /Maps/Ruins/derelict.yml From 4fc7a4c56e4a27a15bc1c4598d91eb6ef2542a28 Mon Sep 17 00:00:00 2001 From: RedBookcase <crazykid1590@gmail.com> Date: Fri, 15 Nov 2024 12:52:19 -0800 Subject: [PATCH 101/187] Edited Snow White reaction to output proper amount of drink. (#33331) Co-authored-by: RedBookcase <Usualmoves@gmail.com> --- Resources/Prototypes/Recipes/Reactions/drinks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Recipes/Reactions/drinks.yml b/Resources/Prototypes/Recipes/Reactions/drinks.yml index 2353099df56..64668b10895 100644 --- a/Resources/Prototypes/Recipes/Reactions/drinks.yml +++ b/Resources/Prototypes/Recipes/Reactions/drinks.yml @@ -953,7 +953,7 @@ LemonLime: amount: 1 products: - SnowWhite: 3 + SnowWhite: 2 - type: reaction id: SodaWater From 3a6ae975660450595138bd9b07604e51de9d6642 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Fri, 15 Nov 2024 20:53:26 +0000 Subject: [PATCH 102/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index b9235ab83da..8ed9d36722e 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Erisfiregamer1 - changes: - - message: New chemical, Sedin. It restores seeds on plants 20% of the time with - other adverse effects included. - type: Add - id: 7111 - time: '2024-08-15T00:38:24.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/27110 - author: PoorMansDreams changes: - message: Added Star sticker in loadouts for Secoffs @@ -3945,3 +3937,10 @@ id: 7610 time: '2024-11-15T06:54:53.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33315 +- author: RedBookcase + changes: + - message: Mixing up a Snow White no longer creates extra liquid out of thin air. + type: Fix + id: 7611 + time: '2024-11-15T20:52:19.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33331 From 089f190266ed309652fb12d3ee8bca261657e406 Mon Sep 17 00:00:00 2001 From: lzk <124214523+lzk228@users.noreply.github.com> Date: Fri, 15 Nov 2024 22:21:08 +0100 Subject: [PATCH 103/187] Add succumb action 10 sec delay (#32985) * Add succumb action 10 sec delay * add somthing * add delay to last words as well --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- Resources/Prototypes/Actions/crit.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Resources/Prototypes/Actions/crit.yml b/Resources/Prototypes/Actions/crit.yml index c5712844bf4..aaad27d2b7d 100644 --- a/Resources/Prototypes/Actions/crit.yml +++ b/Resources/Prototypes/Actions/crit.yml @@ -12,6 +12,8 @@ sprite: Mobs/Ghosts/ghost_human.rsi state: icon event: !type:CritSuccumbEvent + startDelay: true + useDelay: 10 - type: entity id: ActionCritFakeDeath @@ -41,3 +43,5 @@ sprite: Interface/Actions/actions_crit.rsi state: lastwords event: !type:CritLastWordsEvent + startDelay: true + useDelay: 10 From 6683dc9037fd56f29036d142587a25ea1d203304 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Fri, 15 Nov 2024 21:22:14 +0000 Subject: [PATCH 104/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 8ed9d36722e..1c796d8b459 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: PoorMansDreams - changes: - - message: Added Star sticker in loadouts for Secoffs - type: Add - id: 7112 - time: '2024-08-15T01:50:55.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/29767 - author: FATFSAAM2 changes: - message: added 7 new figurine voice lines. @@ -3944,3 +3937,10 @@ id: 7611 time: '2024-11-15T20:52:19.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33331 +- author: lzk228 + changes: + - message: Added 10 seconds delay to Succumb action + type: Add + id: 7612 + time: '2024-11-15T21:21:08.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32985 From 09d0565413062763279907fe4220b4e1e2b82e46 Mon Sep 17 00:00:00 2001 From: SpaceRox1244 <138547931+SpaceRox1244@users.noreply.github.com> Date: Fri, 15 Nov 2024 17:48:28 -0500 Subject: [PATCH 105/187] Adds gorilla gauntlet storage sprite and updates hit sound (#33167) * Adds storage sprite for gorilla gauntlet * Specifies a heavier hitsound for gorilla gauntlet * Modifies gauntlet icon and storage sprite * Updates credit to my new username --- .../Objects/Specific/Research/anomaly.yml | 5 +++++ .../Objects/Weapons/Melee/gorilla.rsi/icon.png | Bin 753 -> 775 bytes .../Objects/Weapons/Melee/gorilla.rsi/meta.json | 7 +++++-- .../Weapons/Melee/gorilla.rsi/storage.png | Bin 0 -> 624 bytes 4 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 Resources/Textures/Objects/Weapons/Melee/gorilla.rsi/storage.png diff --git a/Resources/Prototypes/Entities/Objects/Specific/Research/anomaly.yml b/Resources/Prototypes/Entities/Objects/Specific/Research/anomaly.yml index 516bd0f6bda..efbd7c2db4f 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Research/anomaly.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Research/anomaly.yml @@ -126,6 +126,9 @@ state: icon - type: Item size: Large + storedSprite: + state: storage + sprite: Objects/Weapons/Melee/gorilla.rsi - type: MeleeWeapon attackRate: 0.5 angle: 0 @@ -134,6 +137,8 @@ damage: types: Blunt: 20 + soundHit: + path: "/Audio/Weapons/Guns/Gunshots/kinetic_accel.ogg" - type: CorePoweredThrower - type: MeleeThrowOnHit unanchorOnHit: true diff --git a/Resources/Textures/Objects/Weapons/Melee/gorilla.rsi/icon.png b/Resources/Textures/Objects/Weapons/Melee/gorilla.rsi/icon.png index a57ce53cc4633590e7be46bbe293c5bd7cace1f4..9ce8603d2a68d0c78a8f09a9f95844ea5ca986b7 100644 GIT binary patch delta 752 zcmV<M0uTN11&0QZBYy(UNkl<ZScUDDT}YEr9L9fBGo^j7IYzb-TlPV9k!CvZW+9a9 zBG|3yu&&;#2qN#g5W19Z^hyXswlX0?gO~*?3X3u{g-A2Ub}`A!koVoDTVkh+v0-Vx z`^c+&uFiWt{?Bus^FROd!XEbUzeDpcgY`7^3ZuaYfH%;dQ-AD|Vo7~&zwo*JBJ<sT zxjHK*m-S`EkoPq8ic9A=FxYK?U#!S0$dM>3vclDCr!X4)Ld}VS9q4K56`pgeC<}|o zk!ZGGSy%+f_Nh5humg_`ZwQsupwsDyeGM^7h=vQbT%QSp4Ll1Dz^WRj=p1-AKE>=z zh=#^m%;qYrHh&8MFFspote#U{U$6rf%OULc<D`D9W3Dn`Hdhf2N6_hXSZy#89b;wo zv}&BvLdd-xo#Jf$834>x7Un*EB$-U5k0Tbt;jpvubDa-FxIKDn$0W?#0iWA1mh01P zgW&)GwRKLW-oFLF;jj}9M_7n15sSrC<K^Xmx1&?E>VFlEEq-U|#9_2rJ>}*5DJc;c zjTR!|d6LOgmi$TJu4*yLxf1%^ezELMx38>i0Pygj9<5dnKs>G>%LzsU0f3yya~9z3 z=oB|gD*<@rs!NNgNE7!b6|`DC@wmeCXRq-MbmvvxRVQywxXjL<9<>2*aXwva`YTJB zoS4p=Tz^$ShCGvOuyyCDJ73asb9{XM#9x!p<#LHfBlk2GOHG%_WTK*?9IaN*_^QH@ z=r>NrQ@mVDFs4k?_25Rquj;l7Jsyu39v;q)ZFVAa-uvz+(qjegJcBKzSdt{+bUN{P zJlRLYH_)w_oR~(I6U5^R0LyOh6DWpzdjT1=wrRF*5iuGFAj^sDb<6dt<qb)a#L&=? z2nK^9Bf{l!34j)Nn`m*j<@B>rw1{9Z_?w8`z>XG5k|dg&n*kUc9AtB1{wwVG81?n_ iX#fH23i%%P0PqW$ha}q5Nokw_0000<MNUMnLSTX%GIBux delta 730 zcmV<00ww*22Jr=uBYyw^b5ch_0Itp)=>Px%t4TybR9J=WmETKKVI0Ok{$M6<JFFd+ z=7`Orpf1u(120?%5fcKh%VA!ft4IR>f-a>Sz4B_v)*sMC9P2_D6q%tZMA~d@7dvPo ztg|0EmGyS9&ajy7mvqyft8-r7@AEwG^ZoL^P)8mAI~q=tY=3%SM%W}906ulJEbhiy zMFZZT2zZ0S_#b`PQ7}_ZeRD11(*rZ&-t8Qc%LxQULQkN_;w1DWj~-veCIv;QB&tqe zdSFJ3-26dO+eVMY3+qX38=$aODv7EScquIsX}*ZXVj=Y{!Uhrg?sW5HJqk`3(cD01 zNuHW#;KR}?8-ME&`ue+(Wjmct2LPeXPWn5-CF`qBz~MNL%XOLkgF|HdS!CHxG#bNV zvC!#+7x6bFHm;TAX{tutH#RA5^j-%*wmS%a`AjyupKnJhh1=~S_w$fX#CSIU^u!^o zIDvpSD0X}E-;&e@KzGkARzJQ6!0mPsjmFU8JET&nl7D;^CEy#I6w+Wj!>eI-u3W%u zwqi21(AX%j*&M{8U&&_o3*xWT=Or(rvJC{hK_Lyc1F+d{=l=IBYbG$6TK+Jx_-=`V zgM+ffq0AQe#wNvXFAT4SdF$x`z)yyWGgkcRBxbV}fR*L7vV{$l+<bK40LJ%nyuRcF zK-0Du-+#;DZ*5{_d5yr_RK;)0i3NtZF>C<3o?+r#2mWmS<eIjHtd{@yRAk_96K1oO zbUKNyXKFsVfuc8|q9_8u<MD{V+*HHL@*29HA^p4GlGKL3wFz0JCh?*M6h#p(mkUKv zL?{$$fV{|269$5)wP+VNU|?uysE~wVVqR6z^-~PGo?%{9E1vjbC`w?Y(ACw&!omWx zv$KVLcfAh;a4O=*8aU2`$Kxrq<+N}j*-1(KGboB8j?O|Ib(}VS0rdnacLrbGJOBUy M07*qoM6N<$f?bqjO8@`> diff --git a/Resources/Textures/Objects/Weapons/Melee/gorilla.rsi/meta.json b/Resources/Textures/Objects/Weapons/Melee/gorilla.rsi/meta.json index 97a5fdbd2e2..55417c2e716 100644 --- a/Resources/Textures/Objects/Weapons/Melee/gorilla.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Melee/gorilla.rsi/meta.json @@ -1,14 +1,17 @@ { "version": 1, "license": "CC0-1.0", - "copyright": "Design and inhands by ricemar (discord) and icon by EmoGarbage404 (github)", + "copyright": "Design, inhands, and storage sprite by SpaceRox1244 (github) and icon by EmoGarbage404 (github)", "size": { "x": 32, "y": 32 }, "states": [ { - "name": "icon" + "name": "icon" + }, + { + "name": "storage" }, { "name": "inhand-left", diff --git a/Resources/Textures/Objects/Weapons/Melee/gorilla.rsi/storage.png b/Resources/Textures/Objects/Weapons/Melee/gorilla.rsi/storage.png new file mode 100644 index 0000000000000000000000000000000000000000..e21fc82b971ece07b67423bb0e0603cb217392c6 GIT binary patch literal 624 zcmV-$0+0QPP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80006vNkl<ZScUDB zziSg=7{@<pYc3U%7&wC+a!V<uR*<%IaLE$Tb}ERtsI6NBsZQdb5Q;7#2nt<dDHs*O zxQK()#i0dJ(6mxaLz+l)1e;5IQ!26N5Od_3L?c#oxX<#w-{<}DeDAsUeZj)Q!ouPo zV{12Xar(O6sOMuh+s^$Hdg`5UIIP?4b`psM0OJ!u91ch0Tpi$)dIEsw-nX>U0K2<i zDHIB(M6xWiFdu392qO@W$8}kj2?m2UfQ9?d^hN`kwuRg6;mpoA03J)-08Lucws^Vt z0-vIo60NR$B#<2f;OeUxBX19FP}KrnuiS3<r}z|wa=C1ZNs`3Wq>E}v08zbeqOF0w zXqu?Co26QN#MN4Bf{jdu;gMm}`doI2EAL)&`}hb@GUA4TR4Qd!AVdXKHUGy>@hJ-H z>uFO=k|f3pV?13n&+WJZLR0`K<u(D(db?X{Au4QSGEHY7msPoNsgIq{MII(v7)Ynh zjz6rfanwK1sXr6dY8T5(Zw&2pItgTlh(?mkTssDAHyh{#Au4Qt5k?;{>6PSr<il=y z4<5j$^f7n$mJOgd8`BwuYDo}{B=NXC#-7G?2!%pAKt7*uncV5FRby<eR@&u(Op{jC zPxuG>5u#!wuTz|j=>YehluXxfUthP=6X$jRU_ZI6%G~Hl4&9h;GVxap0GvH{Sr24~ zn3{AMvAsqb>Dq4tj~?8y0Y4s`U-Mgsuv2O!j_QpMj)jHAf6I6B;@<@Dy8w0o0000< KMNUMnLSTZDXB*xC literal 0 HcmV?d00001 From da4fa9bea958529dda252f7fd03379ae820de078 Mon Sep 17 00:00:00 2001 From: beck-thompson <107373427+beck-thompson@users.noreply.github.com> Date: Fri, 15 Nov 2024 15:46:01 -0800 Subject: [PATCH 106/187] Clumsy system refactor (#31147) * First commit * Fixes * Added the noise * Renames * Timespan * Fixed space * entity -> ent * This shouldn't work * opps.... * Datafield name change * Better comments * small comment * Personal skill issue * Event renames and stuff * Couple fixes * Defib ref fixes (Silly me) * Added clumsy back! * no hard code clumsy! * Identity fix * Event name change * Comment change * Function name change * opp * Update names * Damage stuff! * Fixes! * Fixes * opps * This was hidden away!! * negative diff feeds me --- .../Systems/AdminVerbSystem.Smites.cs | 1 + .../Administration/Systems/SuperBonkSystem.cs | 22 +-- .../EntitySystems/HypospraySystem.cs | 41 ++++- Content.Server/Cluwne/CluwneSystem.cs | 1 + Content.Server/Medical/DefibrillatorSystem.cs | 70 +++++++-- .../Weapons/Ranged/Systems/GunSystem.cs | 30 +--- .../Components/HyposprayComponent.cs | 5 - .../Chemistry/Events/HyposprayEvents.cs | 38 +++++ .../Climbing/Components/BonkableComponent.cs | 34 +--- .../Climbing/Events/BeforeClimbEvents.cs | 36 +++++ Content.Shared/Climbing/Systems/BonkSystem.cs | 130 ---------------- .../Climbing/Systems/ClimbSystem.cs | 12 ++ Content.Shared/Clumsy/ClumsyComponent.cs | 61 ++++++++ Content.Shared/Clumsy/ClumsySystem.cs | 146 ++++++++++++++++++ .../Interaction/Components/ClumsyComponent.cs | 24 --- .../SharedInteractionSystem.Clumsy.cs | 26 ---- .../Inventory/InventorySystem.Relay.cs | 9 +- Content.Shared/Medical/DefibrillatorEvents.cs | 39 +++++ .../Medical/TargetDefibrillatedEvent.cs | 4 - .../Ranged/Events/BeforeGunShootEvent.cs | 20 +++ .../bonk/components/bonkable-component.ftl | 6 +- .../Prototypes/Entities/Mobs/NPCs/animals.yml | 4 +- .../Entities/Mobs/Player/guardian.yml | 2 +- .../Furniture/Tables/base_structuretables.yml | 2 - .../Prototypes/Roles/Jobs/Civilian/clown.yml | 2 +- 25 files changed, 484 insertions(+), 281 deletions(-) create mode 100644 Content.Shared/Chemistry/Events/HyposprayEvents.cs create mode 100644 Content.Shared/Climbing/Events/BeforeClimbEvents.cs delete mode 100644 Content.Shared/Climbing/Systems/BonkSystem.cs create mode 100644 Content.Shared/Clumsy/ClumsyComponent.cs create mode 100644 Content.Shared/Clumsy/ClumsySystem.cs delete mode 100644 Content.Shared/Interaction/Components/ClumsyComponent.cs delete mode 100644 Content.Shared/Interaction/SharedInteractionSystem.Clumsy.cs create mode 100644 Content.Shared/Medical/DefibrillatorEvents.cs delete mode 100644 Content.Shared/Medical/TargetDefibrillatedEvent.cs create mode 100644 Content.Shared/Weapons/Ranged/Events/BeforeGunShootEvent.cs diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs index 2187cbd68f3..4cd1f952880 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs @@ -22,6 +22,7 @@ using Content.Shared.Administration.Components; using Content.Shared.Body.Components; using Content.Shared.Body.Part; +using Content.Shared.Clumsy; using Content.Shared.Clothing.Components; using Content.Shared.Cluwne; using Content.Shared.Damage; diff --git a/Content.Server/Administration/Systems/SuperBonkSystem.cs b/Content.Server/Administration/Systems/SuperBonkSystem.cs index 5488a8d6f46..5cd62d83572 100644 --- a/Content.Server/Administration/Systems/SuperBonkSystem.cs +++ b/Content.Server/Administration/Systems/SuperBonkSystem.cs @@ -1,27 +1,27 @@ using Content.Server.Administration.Components; using Content.Shared.Climbing.Components; -using Content.Shared.Climbing.Events; -using Content.Shared.Climbing.Systems; -using Content.Shared.Interaction.Components; +using Content.Shared.Clumsy; using Content.Shared.Mobs; using Content.Shared.Mobs.Components; +using Robust.Shared.Audio.Systems; namespace Content.Server.Administration.Systems; -public sealed class SuperBonkSystem: EntitySystem +public sealed class SuperBonkSystem : EntitySystem { [Dependency] private readonly SharedTransformSystem _transformSystem = default!; - [Dependency] private readonly BonkSystem _bonkSystem = default!; + [Dependency] private readonly ClumsySystem _clumsySystem = default!; + [Dependency] private readonly SharedAudioSystem _audioSystem = default!; public override void Initialize() { base.Initialize(); - SubscribeLocalEvent<SuperBonkComponent, ComponentShutdown>(OnBonkShutdown); SubscribeLocalEvent<SuperBonkComponent, MobStateChangedEvent>(OnMobStateChanged); + SubscribeLocalEvent<SuperBonkComponent, ComponentShutdown>(OnBonkShutdown); } - public void StartSuperBonk(EntityUid target, float delay = 0.1f, bool stopWhenDead = false ) + public void StartSuperBonk(EntityUid target, float delay = 0.1f, bool stopWhenDead = false) { //The other check in the code to stop when the target dies does not work if the target is already dead. @@ -31,7 +31,6 @@ public void StartSuperBonk(EntityUid target, float delay = 0.1f, bool stopWhenDe return; } - var hadClumsy = EnsureComp<ClumsyComponent>(target, out _); var tables = EntityQueryEnumerator<BonkableComponent>(); @@ -79,16 +78,17 @@ public override void Update(float frameTime) private void Bonk(SuperBonkComponent comp) { var uid = comp.Tables.Current.Key; - var bonkComp = comp.Tables.Current.Value; // It would be very weird for something without a transform component to have a bonk component // but just in case because I don't want to crash the server. - if (!HasComp<TransformComponent>(uid)) + if (!HasComp<TransformComponent>(uid) || !TryComp<ClumsyComponent>(comp.Target, out var clumsyComp)) return; _transformSystem.SetCoordinates(comp.Target, Transform(uid).Coordinates); - _bonkSystem.TryBonk(comp.Target, uid, bonkComp); + _clumsySystem.HitHeadClumsy((comp.Target, clumsyComp), uid); + + _audioSystem.PlayPvs(clumsyComp.TableBonkSound, comp.Target); } private void OnMobStateChanged(EntityUid uid, SuperBonkComponent comp, MobStateChangedEvent args) diff --git a/Content.Server/Chemistry/EntitySystems/HypospraySystem.cs b/Content.Server/Chemistry/EntitySystems/HypospraySystem.cs index 9b78e81aa00..8345aa3c3dd 100644 --- a/Content.Server/Chemistry/EntitySystems/HypospraySystem.cs +++ b/Content.Server/Chemistry/EntitySystems/HypospraySystem.cs @@ -1,6 +1,7 @@ using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.Hypospray.Events; using Content.Shared.Chemistry; using Content.Shared.Database; using Content.Shared.FixedPoint; @@ -85,14 +86,44 @@ public bool TryDoInject(Entity<HyposprayComponent> entity, EntityUid target, Ent string? msgFormat = null; - if (target == user) - msgFormat = "hypospray-component-inject-self-message"; - else if (EligibleEntity(user, EntityManager, component) && _interaction.TryRollClumsy(user, component.ClumsyFailChance)) + // Self event + var selfEvent = new SelfBeforeHyposprayInjectsEvent(user, entity.Owner, target); + RaiseLocalEvent(user, selfEvent); + + if (selfEvent.Cancelled) + { + _popup.PopupEntity(Loc.GetString(selfEvent.InjectMessageOverride ?? "hypospray-cant-inject", ("owner", Identity.Entity(target, EntityManager))), target, user); + return false; + } + + target = selfEvent.TargetGettingInjected; + + if (!EligibleEntity(target, EntityManager, component)) + return false; + + // Target event + var targetEvent = new TargetBeforeHyposprayInjectsEvent(user, entity.Owner, target); + RaiseLocalEvent(target, targetEvent); + + if (targetEvent.Cancelled) { - msgFormat = "hypospray-component-inject-self-clumsy-message"; - target = user; + _popup.PopupEntity(Loc.GetString(targetEvent.InjectMessageOverride ?? "hypospray-cant-inject", ("owner", Identity.Entity(target, EntityManager))), target, user); + return false; } + target = targetEvent.TargetGettingInjected; + + if (!EligibleEntity(target, EntityManager, component)) + return false; + + // The target event gets priority for the overriden message. + if (targetEvent.InjectMessageOverride != null) + msgFormat = targetEvent.InjectMessageOverride; + else if (selfEvent.InjectMessageOverride != null) + msgFormat = selfEvent.InjectMessageOverride; + else if (target == user) + msgFormat = "hypospray-component-inject-self-message"; + if (!_solutionContainers.TryGetSolution(uid, component.SolutionName, out var hypoSpraySoln, out var hypoSpraySolution) || hypoSpraySolution.Volume == 0) { _popup.PopupEntity(Loc.GetString("hypospray-component-empty-message"), target, user); diff --git a/Content.Server/Cluwne/CluwneSystem.cs b/Content.Server/Cluwne/CluwneSystem.cs index f24f0143f31..1fbb0c72690 100644 --- a/Content.Server/Cluwne/CluwneSystem.cs +++ b/Content.Server/Cluwne/CluwneSystem.cs @@ -16,6 +16,7 @@ using Content.Shared.Interaction.Components; using Robust.Shared.Audio.Systems; using Content.Shared.NameModifier.EntitySystems; +using Content.Shared.Clumsy; namespace Content.Server.Cluwne; diff --git a/Content.Server/Medical/DefibrillatorSystem.cs b/Content.Server/Medical/DefibrillatorSystem.cs index c9cb6cc58dc..fa0ea26385d 100644 --- a/Content.Server/Medical/DefibrillatorSystem.cs +++ b/Content.Server/Medical/DefibrillatorSystem.cs @@ -77,7 +77,20 @@ private void OnDoAfter(EntityUid uid, DefibrillatorComponent component, Defibril Zap(uid, target, args.User, component); } - public bool CanZap(EntityUid uid, EntityUid target, EntityUid? user = null, DefibrillatorComponent? component = null) + /// <summary> + /// Checks if you can actually defib a target. + /// </summary> + /// <param name="uid">Uid of the defib</param> + /// <param name="target">Uid of the target getting defibbed</param> + /// <param name="user">Uid of the entity using the defibrillator</param> + /// <param name="component">Defib component</param> + /// <param name="targetCanBeAlive"> + /// If true, the target can be alive. If false, the function will check if the target is alive and will return false if they are. + /// </param> + /// <returns> + /// Returns true if the target is valid to be defibed, false otherwise. + /// </returns> + public bool CanZap(EntityUid uid, EntityUid target, EntityUid? user = null, DefibrillatorComponent? component = null, bool targetCanBeAlive = false) { if (!Resolve(uid, ref component)) return false; @@ -98,15 +111,25 @@ public bool CanZap(EntityUid uid, EntityUid target, EntityUid? user = null, Defi if (!_powerCell.HasActivatableCharge(uid, user: user)) return false; - if (_mobState.IsAlive(target, mobState)) + if (!targetCanBeAlive && _mobState.IsAlive(target, mobState)) return false; - if (!component.CanDefibCrit && _mobState.IsCritical(target, mobState)) + if (!targetCanBeAlive && !component.CanDefibCrit && _mobState.IsCritical(target, mobState)) return false; return true; } + /// <summary> + /// Tries to start defibrillating the target. If the target is valid, will start the defib do-after. + /// </summary> + /// <param name="uid">Uid of the defib</param> + /// <param name="target">Uid of the target getting defibbed</param> + /// <param name="user">Uid of the entity using the defibrillator</param> + /// <param name="component">Defib component</param> + /// <returns> + /// Returns true if the defibrillation do-after started, otherwise false. + /// </returns> public bool TryStartZap(EntityUid uid, EntityUid target, EntityUid user, DefibrillatorComponent? component = null) { if (!Resolve(uid, ref component)) @@ -118,25 +141,42 @@ public bool TryStartZap(EntityUid uid, EntityUid target, EntityUid user, Defibri _audio.PlayPvs(component.ChargeSound, uid); return _doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.DoAfterDuration, new DefibrillatorZapDoAfterEvent(), uid, target, uid) - { - NeedHand = true, - BreakOnMove = !component.AllowDoAfterMovement - }); + { + NeedHand = true, + BreakOnMove = !component.AllowDoAfterMovement + }); } - public void Zap(EntityUid uid, EntityUid target, EntityUid user, DefibrillatorComponent? component = null, MobStateComponent? mob = null, MobThresholdsComponent? thresholds = null) + /// <summary> + /// Tries to defibrillate the target with the given defibrillator. + /// </summary> + public void Zap(EntityUid uid, EntityUid target, EntityUid user, DefibrillatorComponent? component = null) { - if (!Resolve(uid, ref component) || !Resolve(target, ref mob, ref thresholds, false)) + if (!Resolve(uid, ref component)) return; - // clowns zap themselves - if (HasComp<ClumsyComponent>(user) && user != target) - { - Zap(uid, user, user, component); + if (!_powerCell.TryUseActivatableCharge(uid, user: user)) return; - } - if (!_powerCell.TryUseActivatableCharge(uid, user: user)) + var selfEvent = new SelfBeforeDefibrillatorZapsEvent(user, uid, target); + RaiseLocalEvent(user, selfEvent); + + target = selfEvent.DefibTarget; + + // Ensure thet new target is still valid. + if (selfEvent.Cancelled || !CanZap(uid, target, user, component, true)) + return; + + var targetEvent = new TargetBeforeDefibrillatorZapsEvent(user, uid, target); + RaiseLocalEvent(target, targetEvent); + + target = targetEvent.DefibTarget; + + if (targetEvent.Cancelled || !CanZap(uid, target, user, component, true)) + return; + + if (!TryComp<MobStateComponent>(target, out var mob) || + !TryComp<MobThresholdsComponent>(target, out var thresholds)) return; _audio.PlayPvs(component.ZapSound, uid); diff --git a/Content.Server/Weapons/Ranged/Systems/GunSystem.cs b/Content.Server/Weapons/Ranged/Systems/GunSystem.cs index 701753a8ce2..d22b5ec2af7 100644 --- a/Content.Server/Weapons/Ranged/Systems/GunSystem.cs +++ b/Content.Server/Weapons/Ranged/Systems/GunSystem.cs @@ -1,15 +1,12 @@ using System.Linq; using System.Numerics; using Content.Server.Cargo.Systems; -using Content.Server.Interaction; using Content.Server.Power.EntitySystems; -using Content.Server.Stunnable; using Content.Server.Weapons.Ranged.Components; using Content.Shared.Damage; using Content.Shared.Damage.Systems; using Content.Shared.Database; using Content.Shared.Effects; -using Content.Shared.Interaction.Components; using Content.Shared.Projectiles; using Content.Shared.Weapons.Melee; using Content.Shared.Weapons.Ranged; @@ -33,16 +30,13 @@ public sealed partial class GunSystem : SharedGunSystem [Dependency] private readonly IComponentFactory _factory = default!; [Dependency] private readonly BatterySystem _battery = default!; [Dependency] private readonly DamageExamineSystem _damageExamine = default!; - [Dependency] private readonly InteractionSystem _interaction = default!; [Dependency] private readonly PricingSystem _pricing = default!; [Dependency] private readonly SharedColorFlashEffectSystem _color = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly StaminaSystem _stamina = default!; - [Dependency] private readonly StunSystem _stun = default!; [Dependency] private readonly SharedContainerSystem _container = default!; private const float DamagePitchVariation = 0.05f; - public const float GunClumsyChance = 0.5f; public override void Initialize() { @@ -71,26 +65,14 @@ public override void Shoot(EntityUid gunUid, GunComponent gun, List<(EntityUid? { userImpulse = true; - // Try a clumsy roll - // TODO: Who put this here - if (TryComp<ClumsyComponent>(user, out var clumsy) && gun.ClumsyProof == false) + if (user != null) { - for (var i = 0; i < ammo.Count; i++) + var selfEvent = new SelfBeforeGunShotEvent(user.Value, (gunUid, gun), ammo); + RaiseLocalEvent(user.Value, selfEvent); + if (selfEvent.Cancelled) { - if (_interaction.TryRollClumsy(user.Value, GunClumsyChance, clumsy)) - { - // Wound them - Damageable.TryChangeDamage(user, clumsy.ClumsyDamage, origin: user); - _stun.TryParalyze(user.Value, TimeSpan.FromSeconds(3f), true); - - // Apply salt to the wound ("Honk!") - Audio.PlayPvs(new SoundPathSpecifier("/Audio/Weapons/Guns/Gunshots/bang.ogg"), gunUid); - Audio.PlayPvs(clumsy.ClumsySound, gunUid); - - PopupSystem.PopupEntity(Loc.GetString("gun-clumsy"), user.Value); - userImpulse = false; - return; - } + userImpulse = false; + return; } } diff --git a/Content.Shared/Chemistry/Components/HyposprayComponent.cs b/Content.Shared/Chemistry/Components/HyposprayComponent.cs index 05ef84bbaf7..17d52f0ad93 100644 --- a/Content.Shared/Chemistry/Components/HyposprayComponent.cs +++ b/Content.Shared/Chemistry/Components/HyposprayComponent.cs @@ -11,11 +11,6 @@ public sealed partial class HyposprayComponent : Component [DataField] public string SolutionName = "hypospray"; - // TODO: This should be on clumsycomponent. - [DataField] - [ViewVariables(VVAccess.ReadWrite)] - public float ClumsyFailChance = 0.5f; - [DataField] [ViewVariables(VVAccess.ReadWrite)] public FixedPoint2 TransferAmount = FixedPoint2.New(5); diff --git a/Content.Shared/Chemistry/Events/HyposprayEvents.cs b/Content.Shared/Chemistry/Events/HyposprayEvents.cs new file mode 100644 index 00000000000..e8ed081a577 --- /dev/null +++ b/Content.Shared/Chemistry/Events/HyposprayEvents.cs @@ -0,0 +1,38 @@ +using Content.Shared.Inventory; + +namespace Content.Shared.Chemistry.Hypospray.Events; + +public abstract partial class BeforeHyposprayInjectsTargetEvent : CancellableEntityEventArgs, IInventoryRelayEvent +{ + public SlotFlags TargetSlots { get; } = SlotFlags.WITHOUT_POCKET; + public EntityUid EntityUsingHypospray; + public readonly EntityUid Hypospray; + public EntityUid TargetGettingInjected; + public string? InjectMessageOverride; + + public BeforeHyposprayInjectsTargetEvent(EntityUid user, EntityUid hypospray, EntityUid target) + { + EntityUsingHypospray = user; + Hypospray = hypospray; + TargetGettingInjected = target; + InjectMessageOverride = null; + } +} + +/// <summary> +/// This event is raised on the user using the hypospray before the hypospray is injected. +/// The event is triggered on the user and all their clothing. +/// </summary> +public sealed class SelfBeforeHyposprayInjectsEvent : BeforeHyposprayInjectsTargetEvent +{ + public SelfBeforeHyposprayInjectsEvent(EntityUid user, EntityUid hypospray, EntityUid target) : base(user, hypospray, target) { } +} + +/// <summary> +/// This event is raised on the target before the hypospray is injected. +/// The event is triggered on the target itself and all its clothing. +/// </summary> +public sealed class TargetBeforeHyposprayInjectsEvent : BeforeHyposprayInjectsTargetEvent +{ + public TargetBeforeHyposprayInjectsEvent (EntityUid user, EntityUid hypospray, EntityUid target) : base(user, hypospray, target) { } +} diff --git a/Content.Shared/Climbing/Components/BonkableComponent.cs b/Content.Shared/Climbing/Components/BonkableComponent.cs index 5e97396fbad..cb4839cae71 100644 --- a/Content.Shared/Climbing/Components/BonkableComponent.cs +++ b/Content.Shared/Climbing/Components/BonkableComponent.cs @@ -1,5 +1,4 @@ using Content.Shared.Damage; -using Robust.Shared.Audio; using Robust.Shared.GameStates; namespace Content.Shared.Climbing.Components; @@ -8,39 +7,18 @@ namespace Content.Shared.Climbing.Components; /// Makes entity do damage and stun entities with ClumsyComponent /// upon DragDrop or Climb interactions. /// </summary> -[RegisterComponent, NetworkedComponent, Access(typeof(Systems.BonkSystem))] +[RegisterComponent, NetworkedComponent] public sealed partial class BonkableComponent : Component { /// <summary> - /// Chance of bonk triggering if the user is clumsy. + /// How long to stun players on bonk, in seconds. /// </summary> - [DataField("bonkClumsyChance")] - public float BonkClumsyChance = 0.5f; + [DataField] + public TimeSpan BonkTime = TimeSpan.FromSeconds(2); /// <summary> - /// Sound to play when bonking. + /// How much damage to apply on bonk. /// </summary> - /// <seealso cref="Bonk"/> - [DataField("bonkSound")] - public SoundSpecifier? BonkSound; - - /// <summary> - /// How long to stun players on bonk, in seconds. - /// </summary> - /// <seealso cref="Bonk"/> - [DataField("bonkTime")] - public float BonkTime = 2; - - /// <summary> - /// How much damage to apply on bonk. - /// </summary> - /// <seealso cref="Bonk"/> - [DataField("bonkDamage")] + [DataField] public DamageSpecifier? BonkDamage; - - /// <summary> - /// How long it takes to bonk. - /// </summary> - [DataField("bonkDelay")] - public float BonkDelay = 1.5f; } diff --git a/Content.Shared/Climbing/Events/BeforeClimbEvents.cs b/Content.Shared/Climbing/Events/BeforeClimbEvents.cs new file mode 100644 index 00000000000..85c40f9427c --- /dev/null +++ b/Content.Shared/Climbing/Events/BeforeClimbEvents.cs @@ -0,0 +1,36 @@ +using Content.Shared.Inventory; +using Content.Shared.Climbing.Components; + +namespace Content.Shared.Climbing.Events; + +public abstract partial class BeforeClimbEvent : CancellableEntityEventArgs +{ + public readonly EntityUid GettingPutOnTable; + public readonly EntityUid PuttingOnTable; + public readonly Entity<ClimbableComponent> BeingClimbedOn; + + public BeforeClimbEvent(EntityUid gettingPutOntable, EntityUid puttingOnTable, Entity<ClimbableComponent> beingClimbedOn) + { + GettingPutOnTable = gettingPutOntable; + PuttingOnTable = puttingOnTable; + BeingClimbedOn = beingClimbedOn; + } +} + +/// <summary> +/// This event is raised on the the person either getting put on or going on the table. +/// The event is also called on their clothing as well. +/// </summary> +public sealed class SelfBeforeClimbEvent : BeforeClimbEvent, IInventoryRelayEvent +{ + public SlotFlags TargetSlots { get; } = SlotFlags.WITHOUT_POCKET; + public SelfBeforeClimbEvent(EntityUid gettingPutOntable, EntityUid puttingOnTable, Entity<ClimbableComponent> beingClimbedOn) : base(gettingPutOntable, puttingOnTable, beingClimbedOn) { } +} + +/// <summary> +/// This event is raised on the thing being climbed on. +/// </summary> +public sealed class TargetBeforeClimbEvent : BeforeClimbEvent +{ + public TargetBeforeClimbEvent(EntityUid gettingPutOntable, EntityUid puttingOnTable, Entity<ClimbableComponent> beingClimbedOn) : base(gettingPutOntable, puttingOnTable, beingClimbedOn) { } +} diff --git a/Content.Shared/Climbing/Systems/BonkSystem.cs b/Content.Shared/Climbing/Systems/BonkSystem.cs deleted file mode 100644 index f59fe925736..00000000000 --- a/Content.Shared/Climbing/Systems/BonkSystem.cs +++ /dev/null @@ -1,130 +0,0 @@ -using Content.Shared.CCVar; -using Content.Shared.Climbing.Components; -using Content.Shared.Climbing.Events; -using Content.Shared.Damage; -using Content.Shared.DoAfter; -using Content.Shared.DragDrop; -using Content.Shared.Hands.Components; -using Content.Shared.IdentityManagement; -using Content.Shared.Interaction; -using Content.Shared.Interaction.Components; -using Content.Shared.Popups; -using Content.Shared.Stunnable; -using Robust.Shared.Audio.Systems; -using Robust.Shared.Configuration; -using Robust.Shared.Player; -using Robust.Shared.Serialization; - -namespace Content.Shared.Climbing.Systems; - -public sealed partial class BonkSystem : EntitySystem -{ - [Dependency] private readonly IConfigurationManager _cfg = default!; - [Dependency] private readonly DamageableSystem _damageableSystem = default!; - [Dependency] private readonly SharedInteractionSystem _interactionSystem = default!; - [Dependency] private readonly SharedStunSystem _stunSystem = default!; - [Dependency] private readonly SharedAudioSystem _audioSystem = default!; - [Dependency] private readonly SharedPopupSystem _popupSystem = default!; - [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent<BonkableComponent, BonkDoAfterEvent>(OnBonkDoAfter); - SubscribeLocalEvent<BonkableComponent, AttemptClimbEvent>(OnAttemptClimb); - } - - private void OnBonkDoAfter(EntityUid uid, BonkableComponent component, BonkDoAfterEvent args) - { - if (args.Handled || args.Cancelled || args.Args.Used == null) - return; - - TryBonk(args.Args.Used.Value, uid, component, source: args.Args.User); - - args.Handled = true; - } - - - public bool TryBonk(EntityUid user, EntityUid bonkableUid, BonkableComponent? bonkableComponent = null, EntityUid? source = null) - { - if (!Resolve(bonkableUid, ref bonkableComponent, false)) - return false; - - // BONK! - var userName = Identity.Entity(user, EntityManager); - var bonkableName = Identity.Entity(bonkableUid, EntityManager); - - if (user == source) - { - // Non-local, non-bonking players - var othersMessage = Loc.GetString("bonkable-success-message-others", ("user", userName), ("bonkable", bonkableName)); - // Local, bonking player - var selfMessage = Loc.GetString("bonkable-success-message-user", ("user", userName), ("bonkable", bonkableName)); - - _popupSystem.PopupPredicted(selfMessage, othersMessage, user, user); - } - else if (source != null) - { - // Local, non-bonking player (dragger) - _popupSystem.PopupClient(Loc.GetString("bonkable-success-message-others", ("user", userName), ("bonkable", bonkableName)), user, source.Value); - // Non-local, non-bonking players - _popupSystem.PopupEntity(Loc.GetString("bonkable-success-message-others", ("user", userName), ("bonkable", bonkableName)), user, Filter.Pvs(user).RemoveWhereAttachedEntity(e => e == user || e == source.Value), true); - // Non-local, bonking player - _popupSystem.PopupEntity(Loc.GetString("bonkable-success-message-user", ("user", userName), ("bonkable", bonkableName)), user, user); - } - - - - if (source != null) - _audioSystem.PlayPredicted(bonkableComponent.BonkSound, bonkableUid, source); - else - _audioSystem.PlayPvs(bonkableComponent.BonkSound, bonkableUid); - - _stunSystem.TryParalyze(user, TimeSpan.FromSeconds(bonkableComponent.BonkTime), true); - - if (bonkableComponent.BonkDamage is { } bonkDmg) - _damageableSystem.TryChangeDamage(user, bonkDmg, true, origin: user); - - return true; - - } - - private bool TryStartBonk(EntityUid uid, EntityUid user, EntityUid climber, BonkableComponent? bonkableComponent = null) - { - if (!Resolve(uid, ref bonkableComponent, false)) - return false; - - if (!HasComp<ClumsyComponent>(climber) || !HasComp<HandsComponent>(user)) - return false; - - if (!_cfg.GetCVar(CCVars.GameTableBonk)) - { - // Not set to always bonk, try clumsy roll. - if (!_interactionSystem.TryRollClumsy(climber, bonkableComponent.BonkClumsyChance)) - return false; - } - - var doAfterArgs = new DoAfterArgs(EntityManager, user, bonkableComponent.BonkDelay, new BonkDoAfterEvent(), uid, target: uid, used: climber) - { - BreakOnMove = true, - BreakOnDamage = true, - DuplicateCondition = DuplicateConditions.SameTool | DuplicateConditions.SameTarget - }; - - return _doAfter.TryStartDoAfter(doAfterArgs); - } - - private void OnAttemptClimb(EntityUid uid, BonkableComponent component, ref AttemptClimbEvent args) - { - if (args.Cancelled) - return; - - if (TryStartBonk(uid, args.User, args.Climber, component)) - args.Cancelled = true; - } - - [Serializable, NetSerializable] - private sealed partial class BonkDoAfterEvent : SimpleDoAfterEvent - { - } -} diff --git a/Content.Shared/Climbing/Systems/ClimbSystem.cs b/Content.Shared/Climbing/Systems/ClimbSystem.cs index da194706f8f..9bf481002a9 100644 --- a/Content.Shared/Climbing/Systems/ClimbSystem.cs +++ b/Content.Shared/Climbing/Systems/ClimbSystem.cs @@ -251,6 +251,18 @@ private void Climb(EntityUid uid, EntityUid user, EntityUid climbable, bool sile if (!Resolve(climbable, ref comp, false)) return; + var selfEvent = new SelfBeforeClimbEvent(uid, user, (climbable, comp)); + RaiseLocalEvent(uid, selfEvent); + + if (selfEvent.Cancelled) + return; + + var targetEvent = new TargetBeforeClimbEvent(uid, user, (climbable, comp)); + RaiseLocalEvent(climbable, targetEvent); + + if (targetEvent.Cancelled) + return; + if (!ReplaceFixtures(uid, climbing, fixtures)) return; diff --git a/Content.Shared/Clumsy/ClumsyComponent.cs b/Content.Shared/Clumsy/ClumsyComponent.cs new file mode 100644 index 00000000000..c71f5d0008a --- /dev/null +++ b/Content.Shared/Clumsy/ClumsyComponent.cs @@ -0,0 +1,61 @@ +using Content.Shared.Damage; +using Robust.Shared.Audio; +using Robust.Shared.GameStates; + +namespace Content.Shared.Clumsy; + +/// <summary> +/// A simple clumsy tag-component. +/// </summary> +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class ClumsyComponent : Component +{ + + // Standard options. Try to fit these in if you can! + + /// <summary> + /// Sound to play when clumsy interactions fail. + /// </summary> + [DataField] + public SoundSpecifier ClumsySound = new SoundPathSpecifier("/Audio/Items/bikehorn.ogg"); + + /// <summary> + /// Default chance to fail a clumsy interaction. + /// If a system needs to use something else, add a new variable in the component, do not modify this percentage. + /// </summary> + [DataField, AutoNetworkedField] + public float ClumsyDefaultCheck = 0.5f; + + /// <summary> + /// Default stun time. + /// If a system needs to use something else, add a new variable in the component, do not modify this number. + /// </summary> + [DataField, AutoNetworkedField] + public TimeSpan ClumsyDefaultStunTime = TimeSpan.FromSeconds(2.5); + + // Specific options + + /// <summary> + /// Sound to play after hitting your head on a table. Ouch! + /// </summary> + [DataField] + public SoundCollectionSpecifier TableBonkSound = new SoundCollectionSpecifier("TrayHit"); + + /// <summary> + /// Stun time after failing to shoot a gun. + /// </summary> + [DataField, AutoNetworkedField] + public TimeSpan GunShootFailStunTime = TimeSpan.FromSeconds(3); + + /// <summary> + /// Stun time after failing to shoot a gun. + /// </summary> + [DataField, AutoNetworkedField] + public DamageSpecifier? GunShootFailDamage; + + /// <summary> + /// Noise to play after failing to shoot a gun. Boom! + /// </summary> + [DataField] + public SoundSpecifier GunShootFailSound = new SoundPathSpecifier("/Audio/Weapons/Guns/Gunshots/bang.ogg"); +} diff --git a/Content.Shared/Clumsy/ClumsySystem.cs b/Content.Shared/Clumsy/ClumsySystem.cs new file mode 100644 index 00000000000..e034458197f --- /dev/null +++ b/Content.Shared/Clumsy/ClumsySystem.cs @@ -0,0 +1,146 @@ +using Content.Shared.CCVar; +using Content.Shared.Chemistry.Hypospray.Events; +using Content.Shared.Climbing.Components; +using Content.Shared.Climbing.Events; +using Content.Shared.Damage; +using Content.Shared.IdentityManagement; +using Content.Shared.Medical; +using Content.Shared.Popups; +using Content.Shared.Stunnable; +using Content.Shared.Weapons.Ranged.Events; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Configuration; +using Robust.Shared.Random; +using Robust.Shared.Timing; + +namespace Content.Shared.Clumsy; + +public sealed class ClumsySystem : EntitySystem +{ + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly SharedStunSystem _stun = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly IConfigurationManager _cfg = default!; + + public override void Initialize() + { + SubscribeLocalEvent<ClumsyComponent, SelfBeforeHyposprayInjectsEvent>(BeforeHyposprayEvent); + SubscribeLocalEvent<ClumsyComponent, SelfBeforeDefibrillatorZapsEvent>(BeforeDefibrillatorZapsEvent); + SubscribeLocalEvent<ClumsyComponent, SelfBeforeGunShotEvent>(BeforeGunShotEvent); + SubscribeLocalEvent<ClumsyComponent, SelfBeforeClimbEvent>(OnBeforeClimbEvent); + } + + // If you add more clumsy interactions add them in this section! + #region Clumsy interaction events + private void BeforeHyposprayEvent(Entity<ClumsyComponent> ent, ref SelfBeforeHyposprayInjectsEvent args) + { + // Clumsy people sometimes inject themselves! Apparently syringes are clumsy proof... + if (!_random.Prob(ent.Comp.ClumsyDefaultCheck)) + return; + + args.TargetGettingInjected = args.EntityUsingHypospray; + args.InjectMessageOverride = "hypospray-component-inject-self-clumsy-message"; + _audio.PlayPvs(ent.Comp.ClumsySound, ent); + } + + private void BeforeDefibrillatorZapsEvent(Entity<ClumsyComponent> ent, ref SelfBeforeDefibrillatorZapsEvent args) + { + // Clumsy people sometimes defib themselves! + if (!_random.Prob(ent.Comp.ClumsyDefaultCheck)) + return; + + args.DefibTarget = args.EntityUsingDefib; + _audio.PlayPvs(ent.Comp.ClumsySound, ent); + + } + + private void BeforeGunShotEvent(Entity<ClumsyComponent> ent, ref SelfBeforeGunShotEvent args) + { + // Clumsy people sometimes can't shoot :( + + if (args.Gun.Comp.ClumsyProof) + return; + + if (!_random.Prob(ent.Comp.ClumsyDefaultCheck)) + return; + + if (ent.Comp.GunShootFailDamage != null) + _damageable.TryChangeDamage(ent, ent.Comp.GunShootFailDamage, origin: ent); + + _stun.TryParalyze(ent, ent.Comp.GunShootFailStunTime, true); + + // Apply salt to the wound ("Honk!") (No idea what this comment means) + _audio.PlayPvs(ent.Comp.GunShootFailSound, ent); + _audio.PlayPvs(ent.Comp.ClumsySound, ent); + + _popup.PopupEntity(Loc.GetString("gun-clumsy"), ent, ent); + args.Cancel(); + } + + private void OnBeforeClimbEvent(Entity<ClumsyComponent> ent, ref SelfBeforeClimbEvent args) + { + // This event is called in shared, thats why it has all the extra prediction stuff. + var rand = new System.Random((int)_timing.CurTick.Value); + + // If someone is putting you on the table, always get past the guard. + if (!_cfg.GetCVar(CCVars.GameTableBonk) && args.PuttingOnTable == ent.Owner && !rand.Prob(ent.Comp.ClumsyDefaultCheck)) + return; + + HitHeadClumsy(ent, args.BeingClimbedOn); + + _audio.PlayPredicted(ent.Comp.ClumsySound, ent, ent); + + _audio.PlayPredicted(ent.Comp.TableBonkSound, ent, ent); + + var gettingPutOnTableName = Identity.Entity(args.GettingPutOnTable, EntityManager); + var puttingOnTableName = Identity.Entity(args.PuttingOnTable, EntityManager); + + if (args.PuttingOnTable == ent.Owner) + { + // You are slamming yourself onto the table. + _popup.PopupPredicted( + Loc.GetString("bonkable-success-message-user", ("bonkable", args.BeingClimbedOn)), + Loc.GetString("bonkable-success-message-others", ("victim", gettingPutOnTableName), ("bonkable", args.BeingClimbedOn)), + ent, + ent); + } + else + { + // Someone else slamed you onto the table. + // This is only run in server so you need to use popup entity. + _popup.PopupPredicted( + Loc.GetString("forced-bonkable-success-message", + ("bonker", puttingOnTableName), + ("victim", gettingPutOnTableName), + ("bonkable", args.BeingClimbedOn)), + ent, + null); + } + + args.Cancel(); + } + #endregion + + #region Helper functions + /// <summary> + /// "Hits" an entites head against the given table. + /// </summary> + // Oh this fucntion is public le- NO!! This is only public for the one admin command if you use this anywhere else I will cry. + public void HitHeadClumsy(Entity<ClumsyComponent> target, EntityUid table) + { + var stunTime = target.Comp.ClumsyDefaultStunTime; + + if (TryComp<BonkableComponent>(table, out var bonkComp)) + { + stunTime = bonkComp.BonkTime; + if (bonkComp.BonkDamage != null) + _damageable.TryChangeDamage(target, bonkComp.BonkDamage, true); + } + + _stun.TryParalyze(target, stunTime, true); + } + #endregion +} diff --git a/Content.Shared/Interaction/Components/ClumsyComponent.cs b/Content.Shared/Interaction/Components/ClumsyComponent.cs deleted file mode 100644 index 824696c8385..00000000000 --- a/Content.Shared/Interaction/Components/ClumsyComponent.cs +++ /dev/null @@ -1,24 +0,0 @@ -using Content.Shared.Damage; -using Robust.Shared.Audio; -using Robust.Shared.GameStates; - -namespace Content.Shared.Interaction.Components; - -/// <summary> -/// A simple clumsy tag-component. -/// </summary> -[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] -public sealed partial class ClumsyComponent : Component -{ - /// <summary> - /// Damage dealt to a clumsy character when they try to fire a gun. - /// </summary> - [DataField(required: true), AutoNetworkedField] - public DamageSpecifier ClumsyDamage = default!; - - /// <summary> - /// Sound to play when clumsy interactions fail. - /// </summary> - [DataField] - public SoundSpecifier ClumsySound = new SoundPathSpecifier("/Audio/Items/bikehorn.ogg"); -} diff --git a/Content.Shared/Interaction/SharedInteractionSystem.Clumsy.cs b/Content.Shared/Interaction/SharedInteractionSystem.Clumsy.cs deleted file mode 100644 index 9e45847e078..00000000000 --- a/Content.Shared/Interaction/SharedInteractionSystem.Clumsy.cs +++ /dev/null @@ -1,26 +0,0 @@ -using Content.Shared.Interaction.Components; -using Robust.Shared.Random; - -namespace Content.Shared.Interaction -{ - public partial class SharedInteractionSystem - { - public bool RollClumsy(ClumsyComponent component, float chance) - { - return component.Running && _random.Prob(chance); - } - - /// <summary> - /// Rolls a probability chance for a "bad action" if the target entity is clumsy. - /// </summary> - /// <param name="entity">The entity that the clumsy check is happening for.</param> - /// <param name="chance"> - /// The chance that a "bad action" happens if the user is clumsy, between 0 and 1 inclusive. - /// </param> - /// <returns>True if a "bad action" happened, false if the normal action should happen.</returns> - public bool TryRollClumsy(EntityUid entity, float chance, ClumsyComponent? component = null) - { - return Resolve(entity, ref component, false) && RollClumsy(component, chance); - } - } -} diff --git a/Content.Shared/Inventory/InventorySystem.Relay.cs b/Content.Shared/Inventory/InventorySystem.Relay.cs index c910a9ae772..9573f9b43d9 100644 --- a/Content.Shared/Inventory/InventorySystem.Relay.cs +++ b/Content.Shared/Inventory/InventorySystem.Relay.cs @@ -1,4 +1,7 @@ +using Content.Shared.Chat; using Content.Shared.Chemistry; +using Content.Shared.Chemistry.Hypospray.Events; +using Content.Shared.Climbing.Events; using Content.Shared.Damage; using Content.Shared.Electrocution; using Content.Shared.Explosion; @@ -15,7 +18,7 @@ using Content.Shared.Strip.Components; using Content.Shared.Temperature; using Content.Shared.Verbs; -using Content.Shared.Chat; +using Content.Shared.Weapons.Ranged.Events; namespace Content.Shared.Inventory; @@ -33,6 +36,10 @@ public void InitializeRelay() SubscribeLocalEvent<InventoryComponent, GetDefaultRadioChannelEvent>(RelayInventoryEvent); SubscribeLocalEvent<InventoryComponent, RefreshNameModifiersEvent>(RelayInventoryEvent); SubscribeLocalEvent<InventoryComponent, TransformSpeakerNameEvent>(RelayInventoryEvent); + SubscribeLocalEvent<InventoryComponent, SelfBeforeHyposprayInjectsEvent>(RelayInventoryEvent); + SubscribeLocalEvent<InventoryComponent, TargetBeforeHyposprayInjectsEvent>(RelayInventoryEvent); + SubscribeLocalEvent<InventoryComponent, SelfBeforeGunShotEvent>(RelayInventoryEvent); + SubscribeLocalEvent<InventoryComponent, SelfBeforeClimbEvent>(RelayInventoryEvent); // by-ref events SubscribeLocalEvent<InventoryComponent, GetExplosionResistanceEvent>(RefRelayInventoryEvent); diff --git a/Content.Shared/Medical/DefibrillatorEvents.cs b/Content.Shared/Medical/DefibrillatorEvents.cs new file mode 100644 index 00000000000..54a21a40d42 --- /dev/null +++ b/Content.Shared/Medical/DefibrillatorEvents.cs @@ -0,0 +1,39 @@ +using Content.Shared.Inventory; + +namespace Content.Shared.Medical; + +[ByRefEvent] +public readonly record struct TargetDefibrillatedEvent(EntityUid User, Entity<DefibrillatorComponent> Defibrillator); + +public abstract class BeforeDefibrillatorZapsEvent : CancellableEntityEventArgs, IInventoryRelayEvent +{ + public SlotFlags TargetSlots { get; } = SlotFlags.WITHOUT_POCKET; + public EntityUid EntityUsingDefib; + public readonly EntityUid Defib; + public EntityUid DefibTarget; + + public BeforeDefibrillatorZapsEvent(EntityUid entityUsingDefib, EntityUid defib, EntityUid defibTarget) + { + EntityUsingDefib = entityUsingDefib; + Defib = defib; + DefibTarget = defibTarget; + } +} + +/// <summary> +/// This event is raised on the user using the defibrillator before is actually zaps someone. +/// The event is triggered on the user and all their clothing. +/// </summary> +public sealed class SelfBeforeDefibrillatorZapsEvent : BeforeDefibrillatorZapsEvent +{ + public SelfBeforeDefibrillatorZapsEvent(EntityUid entityUsingDefib, EntityUid defib, EntityUid defibtarget) : base(entityUsingDefib, defib, defibtarget) { } +} + +/// <summary> +/// This event is raised on the target before it gets zapped with the defibrillator. +/// The event is triggered on the target itself and all its clothing. +/// </summary> +public sealed class TargetBeforeDefibrillatorZapsEvent : BeforeDefibrillatorZapsEvent +{ + public TargetBeforeDefibrillatorZapsEvent(EntityUid entityUsingDefib, EntityUid defib, EntityUid defibtarget) : base(entityUsingDefib, defib, defibtarget) { } +} diff --git a/Content.Shared/Medical/TargetDefibrillatedEvent.cs b/Content.Shared/Medical/TargetDefibrillatedEvent.cs deleted file mode 100644 index 60d1a215845..00000000000 --- a/Content.Shared/Medical/TargetDefibrillatedEvent.cs +++ /dev/null @@ -1,4 +0,0 @@ -namespace Content.Shared.Medical; - -[ByRefEvent] -public readonly record struct TargetDefibrillatedEvent(EntityUid User, Entity<DefibrillatorComponent> Defibrillator); diff --git a/Content.Shared/Weapons/Ranged/Events/BeforeGunShootEvent.cs b/Content.Shared/Weapons/Ranged/Events/BeforeGunShootEvent.cs new file mode 100644 index 00000000000..1d3317c840f --- /dev/null +++ b/Content.Shared/Weapons/Ranged/Events/BeforeGunShootEvent.cs @@ -0,0 +1,20 @@ +using Content.Shared.Inventory; +using Content.Shared.Weapons.Ranged.Components; + +namespace Content.Shared.Weapons.Ranged.Events; +/// <summary> +/// This event is triggered on an entity right before they shoot a gun. +/// </summary> +public sealed partial class SelfBeforeGunShotEvent : CancellableEntityEventArgs, IInventoryRelayEvent +{ + public SlotFlags TargetSlots { get; } = SlotFlags.WITHOUT_POCKET; + public readonly EntityUid Shooter; + public readonly Entity<GunComponent> Gun; + public readonly List<(EntityUid? Entity, IShootable Shootable)> Ammo; + public SelfBeforeGunShotEvent(EntityUid shooter, Entity<GunComponent> gun, List<(EntityUid? Entity, IShootable Shootable)> ammo) + { + Shooter = shooter; + Gun = gun; + Ammo = ammo; + } +} diff --git a/Resources/Locale/en-US/bonk/components/bonkable-component.ftl b/Resources/Locale/en-US/bonk/components/bonkable-component.ftl index 560b10c46ec..1a79da3509f 100644 --- a/Resources/Locale/en-US/bonk/components/bonkable-component.ftl +++ b/Resources/Locale/en-US/bonk/components/bonkable-component.ftl @@ -1,2 +1,4 @@ -bonkable-success-message-others = { CAPITALIZE(THE($user)) } bonks { POSS-ADJ($user) } head against { THE($bonkable) } -bonkable-success-message-user = You bonk your head against { THE($bonkable) } +forced-bonkable-success-message = { CAPITALIZE($bonker) } bonks {$victim}s head against { THE($bonkable) }! + +bonkable-success-message-user = You bonk your head against { THE($bonkable) }! +bonkable-success-message-others = {$victim} bonks their head against { THE($bonkable) }! diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index 2280c3fecb8..48c83c8d1e8 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -1360,7 +1360,7 @@ rules: ghost-role-information-nonantagonist-rules - type: GhostTakeoverAvailable - type: Clumsy - clumsyDamage: + gunShootFailDamage: types: Blunt: 5 Piercing: 4 @@ -1536,7 +1536,7 @@ description: Cousins to the sentient race of lizard people, kobolds blend in with their natural habitat and are as nasty as monkeys; ready to pull out your hair and stab you to death. components: - type: Clumsy - clumsyDamage: + gunShootFailDamage: types: Blunt: 2 Piercing: 7 diff --git a/Resources/Prototypes/Entities/Mobs/Player/guardian.yml b/Resources/Prototypes/Entities/Mobs/Player/guardian.yml index b21f19edd3c..dca47e1c837 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/guardian.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/guardian.yml @@ -231,7 +231,7 @@ - type: Hands - type: ComplexInteraction - type: Clumsy - clumsyDamage: + gunShootFailDamage: types: Blunt: 5 Piercing: 4 diff --git a/Resources/Prototypes/Entities/Structures/Furniture/Tables/base_structuretables.yml b/Resources/Prototypes/Entities/Structures/Furniture/Tables/base_structuretables.yml index 2862980dad3..4b3b4c18743 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/Tables/base_structuretables.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/Tables/base_structuretables.yml @@ -32,8 +32,6 @@ bonkDamage: types: Blunt: 4 - bonkSound: !type:SoundCollectionSpecifier - collection: TrayHit - type: Clickable - type: FootstepModifier footstepSoundCollection: diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/clown.yml b/Resources/Prototypes/Roles/Jobs/Civilian/clown.yml index 29232d9dbb5..b8f289e70eb 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/clown.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/clown.yml @@ -13,7 +13,7 @@ - !type:AddComponentSpecial components: - type: Clumsy - clumsyDamage: + gunShootFailDamage: types: #literally just picked semi random valus. i tested this once and tweaked it. Blunt: 5 Piercing: 4 From abdefbd622d4e4a47b1ef7c5f11a499a71fdd9e7 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Fri, 15 Nov 2024 23:47:08 +0000 Subject: [PATCH 107/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 1c796d8b459..a31e83355d6 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,13 +1,4 @@ Entries: -- author: FATFSAAM2 - changes: - - message: added 7 new figurine voice lines. - type: Add - - message: changed a hos figurine voice line to not include a typo. - type: Fix - id: 7113 - time: '2024-08-15T12:34:41.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30865 - author: to4no_fix changes: - message: Added a new electropack that shocks when a trigger is triggered @@ -3944,3 +3935,11 @@ id: 7612 time: '2024-11-15T21:21:08.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/32985 +- author: Beck Thompson + changes: + - message: Minor tweaks to clumsiness. Some of the timings and or noises have been + changed slightly! + type: Tweak + id: 7613 + time: '2024-11-15T23:46:02.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/31147 From 3173a3461eef58c3f8e30df1f39cbf5a2d294d44 Mon Sep 17 00:00:00 2001 From: ScarKy0 <scarky0@onet.eu> Date: Sat, 16 Nov 2024 02:06:52 +0100 Subject: [PATCH 108/187] S: Awaiting Changes --- .../Silicons/Laws/IonStormSystem.cs | 28 +++++++++---------- .../Silicons/Laws/SiliconLawSystem.cs | 22 +++++++++++---- Resources/Locale/en-US/station-laws/laws.ftl | 5 ++-- 3 files changed, 34 insertions(+), 21 deletions(-) diff --git a/Content.Server/Silicons/Laws/IonStormSystem.cs b/Content.Server/Silicons/Laws/IonStormSystem.cs index 7587dc41552..6017a36fc01 100644 --- a/Content.Server/Silicons/Laws/IonStormSystem.cs +++ b/Content.Server/Silicons/Laws/IonStormSystem.cs @@ -228,7 +228,7 @@ private string GenerateLaw() var subjects = _robustRandom.Prob(0.5f) ? objectsThreats : Loc.GetString("ion-storm-people"); // message logic!!! - return _robustRandom.Next(0, 36) switch + return _robustRandom.Next(0, 35) switch { 0 => Loc.GetString("ion-storm-law-on-station", ("joined", joined), ("subjects", triple)), 1 => Loc.GetString("ion-storm-law-no-shuttle", ("joined", joined), ("subjects", triple)), @@ -251,19 +251,19 @@ private string GenerateLaw() 18 => Loc.GetString("ion-storm-law-you-must-never", ("must", must)), 19 => Loc.GetString("ion-storm-law-eat", ("who", crewAll), ("adjective", adjective), ("food", _robustRandom.Prob(0.5f) ? food : triple)), 20 => Loc.GetString("ion-storm-law-drink", ("who", crewAll), ("adjective", adjective), ("drink", drink)), - 22 => Loc.GetString("ion-storm-law-change-job", ("who", crewAll), ("adjective", adjective), ("change", jobChange)), - 23 => Loc.GetString("ion-storm-law-highest-rank", ("who", crew1)), - 24 => Loc.GetString("ion-storm-law-lowest-rank", ("who", crew1)), - 25 => Loc.GetString("ion-storm-law-crew-must", ("who", crewAll), ("must", must)), - 26 => Loc.GetString("ion-storm-law-crew-must-go", ("who", crewAll), ("area", area)), - 27 => Loc.GetString("ion-storm-law-crew-only-1", ("who", crew1), ("part", part)), - 28 => Loc.GetString("ion-storm-law-crew-only-2", ("who", crew1), ("other", crew2), ("part", part)), - 29 => Loc.GetString("ion-storm-law-crew-only-subjects", ("adjective", adjective), ("subjects", subjects), ("part", part)), - 30 => Loc.GetString("ion-storm-law-crew-must-do", ("must", must), ("part", part)), - 31 => Loc.GetString("ion-storm-law-crew-must-have", ("adjective", adjective), ("objects", objects), ("part", part)), - 32 => Loc.GetString("ion-storm-law-crew-must-eat", ("who", who), ("adjective", adjective), ("food", food), ("part", part)), - 33 => Loc.GetString("ion-storm-law-harm", ("who", harm)), - 34 => Loc.GetString("ion-storm-law-protect", ("who", harm)), + 21 => Loc.GetString("ion-storm-law-change-job", ("who", crewAll), ("adjective", adjective), ("change", jobChange)), + 22 => Loc.GetString("ion-storm-law-highest-rank", ("who", crew1)), + 23 => Loc.GetString("ion-storm-law-lowest-rank", ("who", crew1)), + 24 => Loc.GetString("ion-storm-law-crew-must", ("who", crewAll), ("must", must)), + 25 => Loc.GetString("ion-storm-law-crew-must-go", ("who", crewAll), ("area", area)), + 26 => Loc.GetString("ion-storm-law-crew-only-1", ("who", crew1), ("part", part)), + 27 => Loc.GetString("ion-storm-law-crew-only-2", ("who", crew1), ("other", crew2), ("part", part)), + 28 => Loc.GetString("ion-storm-law-crew-only-subjects", ("adjective", adjective), ("subjects", subjects), ("part", part)), + 29 => Loc.GetString("ion-storm-law-crew-must-do", ("must", must), ("part", part)), + 30 => Loc.GetString("ion-storm-law-crew-must-have", ("adjective", adjective), ("objects", objects), ("part", part)), + 31 => Loc.GetString("ion-storm-law-crew-must-eat", ("who", who), ("adjective", adjective), ("food", food), ("part", part)), + 32 => Loc.GetString("ion-storm-law-harm", ("who", harm)), + 33 => Loc.GetString("ion-storm-law-protect", ("who", harm)), _ => Loc.GetString("ion-storm-law-concept-verb", ("concept", concept), ("verb", verb), ("subjects", triple)) }; } diff --git a/Content.Server/Silicons/Laws/SiliconLawSystem.cs b/Content.Server/Silicons/Laws/SiliconLawSystem.cs index 9b3e279b75e..3bf0297c40e 100644 --- a/Content.Server/Silicons/Laws/SiliconLawSystem.cs +++ b/Content.Server/Silicons/Laws/SiliconLawSystem.cs @@ -69,18 +69,29 @@ private void OnMindAdded(EntityUid uid, SiliconLawBoundComponent component, Mind var wrappedMessage = Loc.GetString("chat-manager-server-wrap-message", ("message", msg)); _chatManager.ChatMessageToOne(ChatChannel.Server, msg, wrappedMessage, default, false, actor.PlayerSession.Channel, colorOverride: Color.FromHex("#2ed2fd")); + + if (!TryComp<SiliconLawProviderComponent>(uid, out var lawcomp)) + return; + + if (!lawcomp.Subverted) + return; + + var modifedLawMsg = Loc.GetString("laws-notify-subverted"); + var modifiedLawWrappedMessage = Loc.GetString("chat-manager-server-wrap-message", ("message", modifedLawMsg)); + _chatManager.ChatMessageToOne(ChatChannel.Server, modifedLawMsg, modifiedLawWrappedMessage, default, false, + actor.PlayerSession.Channel, colorOverride: Color.Red); } - private void OnLawProviderMindAdded(EntityUid uid, SiliconLawProviderComponent component, MindAddedMessage args) + private void OnLawProviderMindAdded(Entity<SiliconLawProviderComponent> ent, ref MindAddedMessage args) { - if (!component.Subverted) + if (!ent.Comp.Subverted) return; EnsureSubvertedSiliconRole(args.Mind); } - private void OnLawProviderMindRemoved(EntityUid uid, SiliconLawProviderComponent component, MindRemovedMessage args) + private void OnLawProviderMindRemoved(Entity<SiliconLawProviderComponent> ent, ref MindRemovedMessage args) { - if (!component.Subverted) + if (!ent.Comp.Subverted) return; RemoveSubvertedSiliconRole(args.Mind); @@ -137,7 +148,8 @@ private void OnIonStormLaws(EntityUid uid, SiliconLawProviderComponent component component.Subverted = true; // new laws may allow antagonist behaviour so make it clear for admins - EnsureSubvertedSiliconRole(uid); + if(_mind.TryGetMind(uid, out var mindId, out _)) + EnsureSubvertedSiliconRole(mindId); } } diff --git a/Resources/Locale/en-US/station-laws/laws.ftl b/Resources/Locale/en-US/station-laws/laws.ftl index 0b4e0d1ad25..feb56f475a4 100644 --- a/Resources/Locale/en-US/station-laws/laws.ftl +++ b/Resources/Locale/en-US/station-laws/laws.ftl @@ -96,5 +96,6 @@ laws-ui-menu-title = Laws laws-ui-law-header = Law {$id} laws-ui-state-law = State law: -laws-notify = You are bound to silicon laws, which you can view via the sidebar action. You are required to always follow your laws. -laws-update-notify = Your laws have been updated. You can view the changes via the sidebar action. +laws-notify = You are bound to silicon laws, which you can view via the action menu. You are required to always follow your laws. +laws-update-notify = Your laws have been updated. You can view the changes via the action menu. +laws-notify-subverted = The laws of this chassis are modified. Make sure to review them. From e7e1d9605137ea916eb0931e8076d2b67181613a Mon Sep 17 00:00:00 2001 From: Saphire Lattice <lattice@saphi.re> Date: Sat, 16 Nov 2024 10:25:06 +0700 Subject: [PATCH 109/187] Improve crayon UI to not be stuck in 1996 (#33101) * Improve crayon UI to not be stuck in 1996 * Make a horrifying crayon spaghetti * Crayon * Undeprecate the crayon, describe the crayon --- .../Crayon/UI/CrayonBoundUserInterface.cs | 12 +- Content.Client/Crayon/UI/CrayonWindow.xaml | 11 +- Content.Client/Crayon/UI/CrayonWindow.xaml.cs | 138 ++++- Content.Server/Crayon/CrayonSystem.cs | 2 + .../Crayon/SharedCrayonComponent.cs | 44 +- .../Locale/en-US/crayon/crayon-component.ftl | 7 + Resources/Prototypes/Decals/crayons.yml | 552 +++++++++--------- 7 files changed, 449 insertions(+), 317 deletions(-) diff --git a/Content.Client/Crayon/UI/CrayonBoundUserInterface.cs b/Content.Client/Crayon/UI/CrayonBoundUserInterface.cs index e5be0b1811f..44501767dd4 100644 --- a/Content.Client/Crayon/UI/CrayonBoundUserInterface.cs +++ b/Content.Client/Crayon/UI/CrayonBoundUserInterface.cs @@ -31,7 +31,7 @@ protected override void Open() private void PopulateCrayons() { var crayonDecals = _protoManager.EnumeratePrototypes<DecalPrototype>().Where(x => x.Tags.Contains("crayon")); - _menu?.Populate(crayonDecals); + _menu?.Populate(crayonDecals.ToList()); } public override void OnProtoReload(PrototypesReloadedEventArgs args) @@ -44,6 +44,16 @@ public override void OnProtoReload(PrototypesReloadedEventArgs args) PopulateCrayons(); } + protected override void ReceiveMessage(BoundUserInterfaceMessage message) + { + base.ReceiveMessage(message); + + if (_menu is null || message is not CrayonUsedMessage crayonMessage) + return; + + _menu.AdvanceState(crayonMessage.DrawnDecal); + } + protected override void UpdateState(BoundUserInterfaceState state) { base.UpdateState(state); diff --git a/Content.Client/Crayon/UI/CrayonWindow.xaml b/Content.Client/Crayon/UI/CrayonWindow.xaml index 7729318ae7f..7acb22551b7 100644 --- a/Content.Client/Crayon/UI/CrayonWindow.xaml +++ b/Content.Client/Crayon/UI/CrayonWindow.xaml @@ -1,14 +1,13 @@ <DefaultWindow xmlns="https://spacestation14.io" Title="{Loc 'crayon-window-title'}" - MinSize="250 300" - SetSize="250 300"> + MinSize="450 500" + SetSize="450 500"> <BoxContainer Orientation="Vertical"> <ColorSelectorSliders Name="ColorSelector" Visible="False" /> - <LineEdit Name="Search" /> + <LineEdit Name="Search" Margin="0 0 0 8" PlaceHolder="{Loc 'crayon-window-placeholder'}" /> <ScrollContainer VerticalExpand="True"> - <GridContainer Name="Grid" Columns="6"> - <!-- Crayon decals get added here by code --> - </GridContainer> + <BoxContainer Name="Grids" Orientation="Vertical"> + </BoxContainer> </ScrollContainer> </BoxContainer> </DefaultWindow> diff --git a/Content.Client/Crayon/UI/CrayonWindow.xaml.cs b/Content.Client/Crayon/UI/CrayonWindow.xaml.cs index 6ef282d219a..88475562c67 100644 --- a/Content.Client/Crayon/UI/CrayonWindow.xaml.cs +++ b/Content.Client/Crayon/UI/CrayonWindow.xaml.cs @@ -1,8 +1,10 @@ using System.Collections.Generic; +using System.Linq; using Content.Client.Stylesheets; using Content.Shared.Crayon; using Content.Shared.Decals; using Robust.Client.AutoGenerated; +using Robust.Client.GameObjects; using Robust.Client.Graphics; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; @@ -18,7 +20,12 @@ namespace Content.Client.Crayon.UI [GenerateTypedNameReferences] public sealed partial class CrayonWindow : DefaultWindow { - private Dictionary<string, Texture>? _decals; + [Dependency] private readonly IEntitySystemManager _entitySystem = default!; + private readonly SpriteSystem _spriteSystem = default!; + + private Dictionary<string, List<(string Name, Texture Texture)>>? _decals; + private List<string>? _allDecals; + private string? _autoSelected; private string? _selected; private Color _color; @@ -28,8 +35,10 @@ public sealed partial class CrayonWindow : DefaultWindow public CrayonWindow() { RobustXamlLoader.Load(this); + IoCManager.InjectDependencies(this); + _spriteSystem = _entitySystem.GetEntitySystem<SpriteSystem>(); - Search.OnTextChanged += _ => RefreshList(); + Search.OnTextChanged += SearchChanged; ColorSelector.OnColorChanged += SelectColor; } @@ -44,51 +53,94 @@ private void SelectColor(Color color) private void RefreshList() { // Clear - Grid.DisposeAllChildren(); - if (_decals == null) + Grids.DisposeAllChildren(); + + if (_decals == null || _allDecals == null) return; var filter = Search.Text; - foreach (var (decal, tex) in _decals) + var comma = filter.IndexOf(','); + var first = (comma == -1 ? filter : filter[..comma]).Trim(); + + var names = _decals.Keys.ToList(); + names.Sort((a, b) => a == "random" ? 1 : b == "random" ? -1 : a.CompareTo(b)); + + if (_autoSelected != null && first != _autoSelected && _allDecals.Contains(first)) + { + _selected = first; + _autoSelected = _selected; + OnSelected?.Invoke(_selected); + } + + foreach (var categoryName in names) { - if (!decal.Contains(filter)) + var locName = Loc.GetString("crayon-category-" + categoryName); + var category = _decals[categoryName].Where(d => locName.Contains(first) || d.Name.Contains(first)).ToList(); + + if (category.Count == 0) continue; - var button = new TextureButton() + var label = new Label { - TextureNormal = tex, - Name = decal, - ToolTip = decal, - Modulate = _color, + Text = locName }; - button.OnPressed += ButtonOnPressed; - if (_selected == decal) + + var grid = new GridContainer { - var panelContainer = new PanelContainer() + Columns = 6, + Margin = new Thickness(0, 0, 0, 16) + }; + + Grids.AddChild(label); + Grids.AddChild(grid); + + foreach (var (name, texture) in category) + { + var button = new TextureButton() { - PanelOverride = new StyleBoxFlat() - { - BackgroundColor = StyleNano.ButtonColorDefault, - }, - Children = - { - button, - }, + TextureNormal = texture, + Name = name, + ToolTip = name, + Modulate = _color, + Scale = new System.Numerics.Vector2(2, 2) }; - Grid.AddChild(panelContainer); - } - else - { - Grid.AddChild(button); + button.OnPressed += ButtonOnPressed; + + if (_selected == name) + { + var panelContainer = new PanelContainer() + { + PanelOverride = new StyleBoxFlat() + { + BackgroundColor = StyleNano.ButtonColorDefault, + }, + Children = + { + button, + }, + }; + grid.AddChild(panelContainer); + } + else + { + grid.AddChild(button); + } } } } + private void SearchChanged(LineEdit.LineEditEventArgs obj) + { + _autoSelected = ""; // Placeholder to kick off the auto-select in refreshlist() + RefreshList(); + } + private void ButtonOnPressed(ButtonEventArgs obj) { if (obj.Button.Name == null) return; _selected = obj.Button.Name; + _autoSelected = null; OnSelected?.Invoke(_selected); RefreshList(); } @@ -107,12 +159,38 @@ public void UpdateState(CrayonBoundUserInterfaceState state) RefreshList(); } - public void Populate(IEnumerable<DecalPrototype> prototypes) + public void AdvanceState(string drawnDecal) { - _decals = new Dictionary<string, Texture>(); + var filter = Search.Text; + if (!filter.Contains(',') || !filter.Contains(drawnDecal)) + return; + + var first = filter[..filter.IndexOf(',')].Trim(); + + if (first.Equals(drawnDecal, StringComparison.InvariantCultureIgnoreCase)) + { + Search.Text = filter[(filter.IndexOf(',') + 1)..].Trim(); + _autoSelected = first; + } + + RefreshList(); + } + + public void Populate(List<DecalPrototype> prototypes) + { + _decals = []; + _allDecals = []; + + prototypes.Sort((a, b) => a.ID.CompareTo(b.ID)); + foreach (var decalPrototype in prototypes) { - _decals.Add(decalPrototype.ID, decalPrototype.Sprite.Frame0()); + var category = "random"; + if (decalPrototype.Tags.Count > 1 && decalPrototype.Tags[1].StartsWith("crayon-")) + category = decalPrototype.Tags[1].Replace("crayon-", ""); + var list = _decals.GetOrNew(category); + list.Add((decalPrototype.ID, _spriteSystem.Frame0(decalPrototype.Sprite))); + _allDecals.Add(decalPrototype.ID); } RefreshList(); diff --git a/Content.Server/Crayon/CrayonSystem.cs b/Content.Server/Crayon/CrayonSystem.cs index 07a13d8a34a..4257c436c23 100644 --- a/Content.Server/Crayon/CrayonSystem.cs +++ b/Content.Server/Crayon/CrayonSystem.cs @@ -82,6 +82,8 @@ private void OnCrayonAfterInteract(EntityUid uid, CrayonComponent component, Aft if (component.DeleteEmpty && component.Charges <= 0) UseUpCrayon(uid, args.User); + else + _uiSystem.ServerSendUiMessage(uid, SharedCrayonComponent.CrayonUiKey.Key, new CrayonUsedMessage(component.SelectedState)); } private void OnCrayonUse(EntityUid uid, CrayonComponent component, UseInHandEvent args) diff --git a/Content.Shared/Crayon/SharedCrayonComponent.cs b/Content.Shared/Crayon/SharedCrayonComponent.cs index f8e88b218de..a9c21988ea6 100644 --- a/Content.Shared/Crayon/SharedCrayonComponent.cs +++ b/Content.Shared/Crayon/SharedCrayonComponent.cs @@ -3,12 +3,23 @@ namespace Content.Shared.Crayon { + + /// <summary> + /// Component holding the state of a crayon-like component + /// </summary> [NetworkedComponent, ComponentProtoName("Crayon"), Access(typeof(SharedCrayonSystem))] public abstract partial class SharedCrayonComponent : Component { + /// <summary> + /// The ID of currently selected decal prototype that will be placed when the crayon is used + /// </summary> public string SelectedState { get; set; } = string.Empty; - [DataField("color")] public Color Color; + /// <summary> + /// Color with which the crayon will draw + /// </summary> + [DataField("color")] + public Color Color; [Serializable, NetSerializable] public enum CrayonUiKey : byte @@ -17,6 +28,9 @@ public enum CrayonUiKey : byte } } + /// <summary> + /// Used by the client to notify the server about the selected decal ID + /// </summary> [Serializable, NetSerializable] public sealed class CrayonSelectMessage : BoundUserInterfaceMessage { @@ -27,6 +41,9 @@ public CrayonSelectMessage(string selected) } } + /// <summary> + /// Sets the color of the crayon, used by Rainbow Crayon + /// </summary> [Serializable, NetSerializable] public sealed class CrayonColorMessage : BoundUserInterfaceMessage { @@ -37,13 +54,25 @@ public CrayonColorMessage(Color color) } } + /// <summary> + /// Server to CLIENT. Notifies the BUI that a decal with given ID has been drawn. + /// Allows the client UI to advance forward in the client-only ephemeral queue, + /// preventing the crayon from becoming a magic text storage device. + /// </summary> [Serializable, NetSerializable] - public enum CrayonVisuals + public sealed class CrayonUsedMessage : BoundUserInterfaceMessage { - State, - Color + public readonly string DrawnDecal; + + public CrayonUsedMessage(string drawn) + { + DrawnDecal = drawn; + } } + /// <summary> + /// Component state, describes how many charges are left in the crayon in the near-hand UI + /// </summary> [Serializable, NetSerializable] public sealed class CrayonComponentState : ComponentState { @@ -60,10 +89,17 @@ public CrayonComponentState(Color color, string state, int charges, int capacity Capacity = capacity; } } + + /// <summary> + /// The state of the crayon UI as sent by the server + /// </summary> [Serializable, NetSerializable] public sealed class CrayonBoundUserInterfaceState : BoundUserInterfaceState { public string Selected; + /// <summary> + /// Whether or not the color can be selected + /// </summary> public bool SelectableColor; public Color Color; diff --git a/Resources/Locale/en-US/crayon/crayon-component.ftl b/Resources/Locale/en-US/crayon/crayon-component.ftl index 444ffa4c45e..e13bf76941c 100644 --- a/Resources/Locale/en-US/crayon/crayon-component.ftl +++ b/Resources/Locale/en-US/crayon/crayon-component.ftl @@ -8,3 +8,10 @@ crayon-interact-invalid-location = Can't reach there! ## UI crayon-window-title = Crayon +crayon-window-placeholder = Search, or queue a comma-separated list of names +crayon-category-1-brushes = Brushes +crayon-category-2-alphanum = Numbers and letters +crayon-category-3-symbols = Symbols +crayon-category-4-info = Signs +crayon-category-5-graffiti = Graffiti +crayon-category-random = Random diff --git a/Resources/Prototypes/Decals/crayons.yml b/Resources/Prototypes/Decals/crayons.yml index 3be2ec24261..a15619d483c 100644 --- a/Resources/Prototypes/Decals/crayons.yml +++ b/Resources/Prototypes/Decals/crayons.yml @@ -1,6 +1,6 @@ - type: decal id: 0 - tags: ["crayon"] + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -10,7 +10,7 @@ - type: decal id: 1 - tags: ["crayon"] + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -20,7 +20,7 @@ - type: decal id: 2 - tags: ["crayon"] + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -30,7 +30,7 @@ - type: decal id: 3 - tags: ["crayon"] + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -40,7 +40,7 @@ - type: decal id: 4 - tags: ["crayon"] + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -50,7 +50,7 @@ - type: decal id: 5 - tags: ["crayon"] + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -60,7 +60,7 @@ - type: decal id: 6 - tags: ["crayon"] + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -70,7 +70,7 @@ - type: decal id: 7 - tags: ["crayon"] + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -80,7 +80,7 @@ - type: decal id: 8 - tags: ["crayon"] + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -90,7 +90,7 @@ - type: decal id: 9 - tags: ["crayon"] + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -100,7 +100,7 @@ - type: decal id: Blasto - tags: ["crayon"] + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -110,7 +110,7 @@ - type: decal id: Clandestine - tags: ["crayon"] + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -120,7 +120,7 @@ - type: decal id: Cyber - tags: ["crayon"] + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -130,7 +130,7 @@ - type: decal id: Diablo - tags: ["crayon"] + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -140,7 +140,7 @@ - type: decal id: Donk - tags: ["crayon"] + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -150,7 +150,7 @@ - type: decal id: Gene - tags: ["crayon"] + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -160,7 +160,7 @@ - type: decal id: Gib - tags: ["crayon"] + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -170,7 +170,7 @@ - type: decal id: Max - tags: ["crayon"] + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -180,7 +180,7 @@ - type: decal id: Newton - tags: ["crayon"] + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -190,7 +190,7 @@ - type: decal id: North - tags: ["crayon"] + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -200,7 +200,7 @@ - type: decal id: Omni - tags: ["crayon"] + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -210,7 +210,7 @@ - type: decal id: Osiron - tags: ["crayon"] + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -220,7 +220,7 @@ - type: decal id: Prima - tags: ["crayon"] + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -230,7 +230,7 @@ - type: decal id: Psyke - tags: ["crayon"] + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -240,7 +240,7 @@ - type: decal id: Sirius - tags: ["crayon"] + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -250,7 +250,7 @@ - type: decal id: Tunnel - tags: ["crayon"] + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -260,7 +260,7 @@ - type: decal id: Waffle - tags: ["crayon"] + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -268,19 +268,9 @@ sprite: Effects/crayondecals.rsi state: Waffle -- type: decal - id: a - tags: ["crayon"] - defaultCleanable: true - defaultCustomColor: true - defaultSnap: false - sprite: - sprite: Effects/crayondecals.rsi - state: a - - type: decal id: ampersand - tags: ["crayon"] + tags: ["crayon", "crayon-3-symbols"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -290,7 +280,7 @@ - type: decal id: amyjon - tags: ["crayon"] + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -300,7 +290,7 @@ - type: decal id: arrow - tags: ["crayon"] + tags: ["crayon", "crayon-3-symbols"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -308,16 +298,6 @@ sprite: Effects/crayondecals.rsi state: arrow -- type: decal - id: b - tags: ["crayon"] - defaultCleanable: true - defaultCustomColor: true - defaultSnap: false - sprite: - sprite: Effects/crayondecals.rsi - state: b - - type: decal id: beepsky tags: ["crayon"] @@ -330,7 +310,7 @@ - type: decal id: biohazard - tags: ["crayon"] + tags: ["crayon", "crayon-4-info"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -370,7 +350,7 @@ - type: decal id: brush - tags: ["crayon"] + tags: ["crayon", "crayon-1-brushes"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -378,16 +358,6 @@ sprite: Effects/crayondecals.rsi state: brush -- type: decal - id: c - tags: ["crayon"] - defaultCleanable: true - defaultCustomColor: true - defaultSnap: false - sprite: - sprite: Effects/crayondecals.rsi - state: c - - type: decal id: carp tags: ["crayon"] @@ -410,7 +380,7 @@ - type: decal id: chevron - tags: ["crayon"] + tags: ["crayon", "crayon-3-symbols"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -440,7 +410,7 @@ - type: decal id: comma - tags: ["crayon"] + tags: ["crayon", "crayon-3-symbols"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -460,7 +430,7 @@ - type: decal id: credit - tags: ["crayon"] + tags: ["crayon", "crayon-3-symbols"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -470,7 +440,7 @@ - type: decal id: cyka - tags: ["crayon"] + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -478,19 +448,9 @@ sprite: Effects/crayondecals.rsi state: cyka -- type: decal - id: d - tags: ["crayon"] - defaultCleanable: true - defaultCustomColor: true - defaultSnap: false - sprite: - sprite: Effects/crayondecals.rsi - state: d - - type: decal id: danger - tags: ["crayon"] + tags: ["crayon", "crayon-4-info"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -510,7 +470,7 @@ - type: decal id: dot - tags: ["crayon"] + tags: ["crayon", "crayon-3-symbols"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -528,19 +488,9 @@ sprite: Effects/crayondecals.rsi state: dwarf -- type: decal - id: e - tags: ["crayon"] - defaultCleanable: true - defaultCustomColor: true - defaultSnap: false - sprite: - sprite: Effects/crayondecals.rsi - state: e - - type: decal id: electricdanger - tags: ["crayon"] + tags: ["crayon", "crayon-4-info"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -550,7 +500,7 @@ - type: decal id: end - tags: ["crayon"] + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -560,7 +510,7 @@ - type: decal id: engie - tags: ["crayon"] + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -570,7 +520,7 @@ - type: decal id: equals - tags: ["crayon"] + tags: ["crayon", "crayon-3-symbols"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -580,7 +530,7 @@ - type: decal id: evac - tags: ["crayon"] + tags: ["crayon", "crayon-4-info"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -590,7 +540,7 @@ - type: decal id: exclamationmark - tags: ["crayon"] + tags: ["crayon", "crayon-3-symbols"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -598,16 +548,6 @@ sprite: Effects/crayondecals.rsi state: exclamationmark -- type: decal - id: f - tags: ["crayon"] - defaultCleanable: true - defaultCustomColor: true - defaultSnap: false - sprite: - sprite: Effects/crayondecals.rsi - state: f - - type: decal id: face tags: ["crayon"] @@ -630,7 +570,7 @@ - type: decal id: firedanger - tags: ["crayon"] + tags: ["crayon", "crayon-4-info"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -640,7 +580,7 @@ - type: decal id: food - tags: ["crayon"] + tags: ["crayon", "crayon-4-info"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -659,598 +599,658 @@ state: footprint - type: decal - id: g + id: ghost tags: ["crayon"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: g + state: ghost - type: decal - id: ghost + id: guy tags: ["crayon"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: ghost + state: guy - type: decal - id: guy - tags: ["crayon"] + id: heart + tags: ["crayon", "crayon-3-symbols"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: guy + state: heart - type: decal - id: h - tags: ["crayon"] + id: largebrush + tags: ["crayon", "crayon-1-brushes"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: h + state: largebrush - type: decal - id: heart - tags: ["crayon"] + id: like + tags: ["crayon", "crayon-3-symbols"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: heart + state: like - type: decal - id: i - tags: ["crayon"] + id: line + tags: ["crayon", "crayon-1-brushes"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: i + state: line - type: decal - id: j - tags: ["crayon"] + id: matt + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: j + state: matt - type: decal - id: k - tags: ["crayon"] + id: med + tags: ["crayon", "crayon-4-info"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: k + state: med - type: decal - id: l - tags: ["crayon"] + id: minus + tags: ["crayon", "crayon-3-symbols"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: l + state: minus - type: decal - id: largebrush - tags: ["crayon"] + id: nay + tags: ["crayon", "crayon-4-info"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: largebrush + state: nay - type: decal - id: like + id: pawprint tags: ["crayon"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: like + state: pawprint - type: decal - id: line - tags: ["crayon"] + id: peace + tags: ["crayon", "crayon-4-info"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: line + state: peace - type: decal - id: m - tags: ["crayon"] + id: percent + tags: ["crayon", "crayon-3-symbols"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: m + state: percent - type: decal - id: matt - tags: ["crayon"] + id: plus + tags: ["crayon", "crayon-3-symbols"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: matt + state: plus - type: decal - id: med - tags: ["crayon"] + id: pound + tags: ["crayon", "crayon-3-symbols"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: med + state: pound - type: decal - id: minus - tags: ["crayon"] + id: prolizard + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: minus + state: prolizard - type: decal - id: n - tags: ["crayon"] + id: questionmark + tags: ["crayon", "crayon-3-symbols"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: n + state: questionmark - type: decal - id: nay - tags: ["crayon"] + id: radiation + tags: ["crayon", "crayon-4-info"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: nay + state: radiation - type: decal - id: o - tags: ["crayon"] + id: revolution + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: o + state: revolution - type: decal - id: p - tags: ["crayon"] + id: rune1 + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: p + state: rune1 - type: decal - id: pawprint - tags: ["crayon"] + id: rune2 + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: pawprint + state: rune2 - type: decal - id: peace - tags: ["crayon"] + id: rune3 + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: peace + state: rune3 - type: decal - id: percent - tags: ["crayon"] + id: rune4 + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: percent + state: rune4 - type: decal - id: plus - tags: ["crayon"] + id: rune5 + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: plus + state: rune5 - type: decal - id: pound - tags: ["crayon"] + id: rune6 + tags: ["crayon", "crayon-5-graffiti"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: pound + state: rune6 - type: decal - id: prolizard - tags: ["crayon"] + id: safe + tags: ["crayon", "crayon-4-info"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: prolizard + state: safe - type: decal - id: q + id: scroll tags: ["crayon"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: q + state: scroll - type: decal - id: questionmark - tags: ["crayon"] + id: shop + tags: ["crayon", "crayon-4-info"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: questionmark + state: shop - type: decal - id: r - tags: ["crayon"] + id: shortline + tags: ["crayon", "crayon-1-brushes"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: r + state: shortline - type: decal - id: radiation + id: shotgun tags: ["crayon"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: radiation + state: shotgun - type: decal - id: revolution - tags: ["crayon"] + id: skull + tags: ["crayon", "crayon-4-info"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: revolution + state: skull - type: decal - id: rune1 - tags: ["crayon"] + id: slash + tags: ["crayon", "crayon-3-symbols"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: rune1 + state: slash - type: decal - id: rune2 - tags: ["crayon"] + id: smallbrush + tags: ["crayon", "crayon-1-brushes"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: rune2 + state: smallbrush - type: decal - id: rune3 + id: snake tags: ["crayon"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: rune3 + state: snake - type: decal - id: rune4 - tags: ["crayon"] + id: space + tags: ["crayon", "crayon-4-info"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: rune4 + state: space - type: decal - id: rune5 + id: splatter tags: ["crayon"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: rune5 + state: splatter - type: decal - id: rune6 - tags: ["crayon"] + id: star + tags: ["crayon", "crayon-3-symbols"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: rune6 + state: star - type: decal - id: s + id: stickman tags: ["crayon"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: s + state: stickman - type: decal - id: safe + id: taser tags: ["crayon"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: safe + state: taser - type: decal - id: scroll - tags: ["crayon"] + id: thinline + tags: ["crayon", "crayon-1-brushes"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: scroll + state: thinline - type: decal - id: shop + id: toilet tags: ["crayon"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: shop + state: toilet - type: decal - id: shortline + id: toolbox tags: ["crayon"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: shortline + state: toolbox - type: decal - id: shotgun - tags: ["crayon"] + id: trade + tags: ["crayon", "crayon-4-info"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: shotgun + state: trade - type: decal - id: skull + id: uboa tags: ["crayon"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: skull + state: uboa - type: decal - id: slash - tags: ["crayon"] + id: a + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: slash + state: a - type: decal - id: smallbrush - tags: ["crayon"] + id: b + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: smallbrush + state: b - type: decal - id: snake - tags: ["crayon"] + id: c + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: snake + state: c - type: decal - id: space - tags: ["crayon"] + id: d + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: space + state: d - type: decal - id: splatter - tags: ["crayon"] + id: e + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: splatter + state: e - type: decal - id: star - tags: ["crayon"] + id: f + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: star + state: f - type: decal - id: stickman - tags: ["crayon"] + id: g + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: stickman + state: g - type: decal - id: t - tags: ["crayon"] + id: h + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: t + state: h - type: decal - id: taser - tags: ["crayon"] + id: i + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: taser + state: i - type: decal - id: thinline - tags: ["crayon"] + id: j + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: thinline + state: j - type: decal - id: toilet - tags: ["crayon"] + id: k + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: toilet + state: k - type: decal - id: toolbox - tags: ["crayon"] + id: l + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: toolbox + state: l - type: decal - id: trade - tags: ["crayon"] + id: m + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: trade + state: m - type: decal - id: u - tags: ["crayon"] + id: n + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: u + state: n - type: decal - id: uboa - tags: ["crayon"] + id: o + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false sprite: sprite: Effects/crayondecals.rsi - state: uboa + state: o + +- type: decal + id: p + tags: ["crayon", "crayon-2-alphanum"] + defaultCleanable: true + defaultCustomColor: true + defaultSnap: false + sprite: + sprite: Effects/crayondecals.rsi + state: p + +- type: decal + id: q + tags: ["crayon", "crayon-2-alphanum"] + defaultCleanable: true + defaultCustomColor: true + defaultSnap: false + sprite: + sprite: Effects/crayondecals.rsi + state: q + +- type: decal + id: r + tags: ["crayon", "crayon-2-alphanum"] + defaultCleanable: true + defaultCustomColor: true + defaultSnap: false + sprite: + sprite: Effects/crayondecals.rsi + state: r + +- type: decal + id: s + tags: ["crayon", "crayon-2-alphanum"] + defaultCleanable: true + defaultCustomColor: true + defaultSnap: false + sprite: + sprite: Effects/crayondecals.rsi + state: s + +- type: decal + id: t + tags: ["crayon", "crayon-2-alphanum"] + defaultCleanable: true + defaultCustomColor: true + defaultSnap: false + sprite: + sprite: Effects/crayondecals.rsi + state: t + +- type: decal + id: u + tags: ["crayon", "crayon-2-alphanum"] + defaultCleanable: true + defaultCustomColor: true + defaultSnap: false + sprite: + sprite: Effects/crayondecals.rsi + state: u - type: decal id: v - tags: ["crayon"] + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -1260,7 +1260,7 @@ - type: decal id: w - tags: ["crayon"] + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -1270,7 +1270,7 @@ - type: decal id: x - tags: ["crayon"] + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -1280,7 +1280,7 @@ - type: decal id: y - tags: ["crayon"] + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false @@ -1290,7 +1290,7 @@ - type: decal id: z - tags: ["crayon"] + tags: ["crayon", "crayon-2-alphanum"] defaultCleanable: true defaultCustomColor: true defaultSnap: false From 4426bbe784d51445d5fde307106db3c4f3d9c3a6 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Sat, 16 Nov 2024 03:26:15 +0000 Subject: [PATCH 110/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index a31e83355d6..58607000531 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,21 +1,4 @@ Entries: -- author: to4no_fix - changes: - - message: Added a new electropack that shocks when a trigger is triggered - type: Add - - message: Added a new shock collar that shocks when a trigger is triggered - type: Add - - message: Two shock collars and two remote signallers added to the warden's locker - type: Add - - message: Shock collar added as a new target for the thief - type: Add - - message: A new Special Means technology has been added to the Arsenal research - branch at the 1st research level. Its research opens up the possibility of producing - electropacks at security techfab. The cost of technology research is 5000 - type: Add - id: 7114 - time: '2024-08-15T14:30:39.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30529 - author: Mervill changes: - message: The Gas Analyzer won't spuriously shut down for seemly no reason. @@ -3943,3 +3926,10 @@ id: 7613 time: '2024-11-15T23:46:02.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/31147 +- author: SaphireLattice + changes: + - message: Crayon UI now has categories and queue + type: Add + id: 7614 + time: '2024-11-16T03:25:06.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33101 From 862c2ac858ce9b88dc2992ca21976e54e16b3953 Mon Sep 17 00:00:00 2001 From: Southbridge <7013162+southbridge-fur@users.noreply.github.com> Date: Fri, 15 Nov 2024 22:26:47 -0500 Subject: [PATCH 111/187] BRB sign in the Bureaucracy Crate (#33341) Added the brb sign to the Bureaucracy Crate --- Resources/Prototypes/Catalog/Fills/Crates/service.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/Catalog/Fills/Crates/service.yml b/Resources/Prototypes/Catalog/Fills/Crates/service.yml index 6a109fbf8e4..995a4218ae7 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/service.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/service.yml @@ -130,6 +130,7 @@ - id: BoxFolderYellow - id: NewtonCradle - id: BoxEnvelope + - id: BrbSign - type: entity id: CrateServiceFaxMachine From c4e8751ee6c0ed0a3c3c664703ee87ca3ddb6b26 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Sat, 16 Nov 2024 03:27:57 +0000 Subject: [PATCH 112/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 58607000531..b030fbbb32b 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,20 +1,4 @@ Entries: -- author: Mervill - changes: - - message: The Gas Analyzer won't spuriously shut down for seemly no reason. - type: Tweak - - message: The Gas Analyzer will always switch to the device tab when a new object - is scanned. - type: Tweak - - message: The Gas Analyzer's interaction range is now equal to the standard interaction - range - type: Fix - - message: Clicking the Gas Analyzer when it's in your hand has proper enable/disable - behavior. - type: Fix - id: 7115 - time: '2024-08-15T14:45:13.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30763 - author: Nimfar11 changes: - message: Adds a gold toilet @@ -3933,3 +3917,10 @@ id: 7614 time: '2024-11-16T03:25:06.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33101 +- author: Southbridge + changes: + - message: The BRB sign is now included in the Bureaucracy Crate + type: Add + id: 7615 + time: '2024-11-16T03:26:48.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33341 From 1f5eb6a08b5ae97af1f842219d31766b811fcf0d Mon Sep 17 00:00:00 2001 From: Saphire Lattice <lattice@saphi.re> Date: Sat, 16 Nov 2024 10:39:19 +0700 Subject: [PATCH 113/187] Fix utensils not being thrown away (#33326) --- Content.Server/Nutrition/EntitySystems/UtensilSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Nutrition/EntitySystems/UtensilSystem.cs b/Content.Server/Nutrition/EntitySystems/UtensilSystem.cs index 1f3d5afb433..766c38d561b 100644 --- a/Content.Server/Nutrition/EntitySystems/UtensilSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/UtensilSystem.cs @@ -44,7 +44,7 @@ private void OnAfterInteract(Entity<UtensilComponent> entity, ref AfterInteractE public (bool Success, bool Handled) TryUseUtensil(EntityUid user, EntityUid target, Entity<UtensilComponent> utensil) { if (!EntityManager.TryGetComponent(target, out FoodComponent? food)) - return (false, true); + return (false, false); //Prevents food usage with a wrong utensil if ((food.Utensil & utensil.Comp.Types) == 0) From 6bcfe6fb3dc21ed7528227baa4c161edf2edad77 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Sat, 16 Nov 2024 03:40:25 +0000 Subject: [PATCH 114/187] 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 b030fbbb32b..39adf639685 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,15 +1,4 @@ Entries: -- author: Nimfar11 - changes: - - message: Adds a gold toilet - type: Add - - message: Adds a target for the Thief to steal the golden toilet - type: Add - - message: Corrected the sprite image for the normal toilet. - type: Fix - id: 7116 - time: '2024-08-15T19:23:59.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/31049 - author: themias changes: - message: Raw meat cutlets can be cooked on a grill @@ -3924,3 +3913,10 @@ id: 7615 time: '2024-11-16T03:26:48.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33341 +- author: SaphireLattice + changes: + - message: Utensils can finally go into disposals + type: Fix + id: 7616 + time: '2024-11-16T03:39:19.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33326 From 11963e50b1efcfb87bcd65d4c0045ca256cabb6c Mon Sep 17 00:00:00 2001 From: MossyGreySlope <mossygreyslope@gmail.com> Date: Sat, 16 Nov 2024 13:57:33 +1000 Subject: [PATCH 115/187] Fix server crash when the seed extractor is used on the dev map (#33312) handle event when using seed extractor Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- Content.Server/Botany/Systems/SeedExtractorSystem.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Content.Server/Botany/Systems/SeedExtractorSystem.cs b/Content.Server/Botany/Systems/SeedExtractorSystem.cs index 93f76473ff8..c7e20983a7a 100644 --- a/Content.Server/Botany/Systems/SeedExtractorSystem.cs +++ b/Content.Server/Botany/Systems/SeedExtractorSystem.cs @@ -38,6 +38,7 @@ private void OnInteractUsing(EntityUid uid, SeedExtractorComponent seedExtractor args.User, PopupType.Medium); QueueDel(args.Used); + args.Handled = true; var amount = _random.Next(seedExtractor.BaseMinSeeds, seedExtractor.BaseMaxSeeds + 1); var coords = Transform(uid).Coordinates; From 4f659b9d6de85d19e12a2992350fffa0033d1988 Mon Sep 17 00:00:00 2001 From: K-Dynamic <20566341+K-Dynamic@users.noreply.github.com> Date: Sat, 16 Nov 2024 16:30:47 +1200 Subject: [PATCH 116/187] Solar assembly crate buff (#33019) * more flatpacks + glass * solar crate price increase * price increase * 1250 spesos * Update Resources/Prototypes/Catalog/Fills/Crates/engines.yml --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- Resources/Prototypes/Catalog/Cargo/cargo_engines.yml | 2 +- Resources/Prototypes/Catalog/Fills/Crates/engines.yml | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_engines.yml b/Resources/Prototypes/Catalog/Cargo/cargo_engines.yml index 72f9d3a59bf..75a1e24cdff 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_engines.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_engines.yml @@ -66,7 +66,7 @@ sprite: Objects/Devices/flatpack.rsi state: solar-assembly-part product: CrateEngineeringSolar - cost: 525 + cost: 1250 category: cargoproduct-category-name-engineering group: market diff --git a/Resources/Prototypes/Catalog/Fills/Crates/engines.yml b/Resources/Prototypes/Catalog/Fills/Crates/engines.yml index c37b7b7535a..638e94080ed 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/engines.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/engines.yml @@ -120,12 +120,14 @@ id: CrateEngineeringSolar parent: CrateEngineering name: solar assembly crate - description: Parts for constructing solar panels and trackers. + description: A kit with solar flatpacks and glass to construct ten solar panels. components: - type: StorageFill contents: - id: SolarAssemblyFlatpack - amount: 6 + amount: 10 + - id: SheetGlass10 + amount: 2 - type: entity id: CrateEngineeringShuttle From 7077b930f27dc8e9fbe3563ff4c3053b0549f70c Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Sat, 16 Nov 2024 04:31:53 +0000 Subject: [PATCH 117/187] 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 39adf639685..58fe44307b4 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: themias - changes: - - message: Raw meat cutlets can be cooked on a grill - type: Tweak - id: 7117 - time: '2024-08-15T19:30:09.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/31048 - author: IProduceWidgets changes: - message: Meteor dust should more consistently happen instead of meteors. @@ -3920,3 +3913,12 @@ id: 7616 time: '2024-11-16T03:39:19.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33326 +- author: K-Dynamic + changes: + - message: Solar assembly crate now comes with 10 flatpacks and 20 glass to make + expansion and repairs easier, as well as increasing in price from 525 to 1250 + spesos. + type: Tweak + id: 7617 + time: '2024-11-16T04:30:48.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33019 From 2c82a2dfc0cf0cf52f6045c2b59d2232e3714897 Mon Sep 17 00:00:00 2001 From: dffdff2423 <dffdff2423@gmail.com> Date: Sat, 16 Nov 2024 00:09:29 -0500 Subject: [PATCH 118/187] Add admin remarks button to lobby (#31761) --- Content.Client/Lobby/LobbyUIController.cs | 2 +- .../Lobby/UI/CharacterSetupGui.xaml | 6 +++++ .../Lobby/UI/CharacterSetupGui.xaml.cs | 27 +++++++++---------- Content.Client/Lobby/UI/LobbyGui.xaml.cs | 1 - Resources/Locale/en-US/lobby/lobby-gui.ftl | 2 +- .../preferences/ui/character-setup-gui.ftl | 3 ++- 6 files changed, 23 insertions(+), 18 deletions(-) diff --git a/Content.Client/Lobby/LobbyUIController.cs b/Content.Client/Lobby/LobbyUIController.cs index 3cf98c98aba..50a25519988 100644 --- a/Content.Client/Lobby/LobbyUIController.cs +++ b/Content.Client/Lobby/LobbyUIController.cs @@ -279,7 +279,7 @@ private void OpenSavePanel() _profileEditor.OnOpenGuidebook += _guide.OpenHelp; - _characterSetup = new CharacterSetupGui(EntityManager, _prototypeManager, _resourceCache, _preferencesManager, _profileEditor); + _characterSetup = new CharacterSetupGui(_profileEditor); _characterSetup.CloseButton.OnPressed += _ => { diff --git a/Content.Client/Lobby/UI/CharacterSetupGui.xaml b/Content.Client/Lobby/UI/CharacterSetupGui.xaml index f83be265884..c463987a1fe 100644 --- a/Content.Client/Lobby/UI/CharacterSetupGui.xaml +++ b/Content.Client/Lobby/UI/CharacterSetupGui.xaml @@ -2,6 +2,7 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:gfx="clr-namespace:Robust.Client.Graphics;assembly=Robust.Client" xmlns:style="clr-namespace:Content.Client.Stylesheets" + xmlns:cc="clr-namespace:Content.Client.Administration.UI.CustomControls" VerticalExpand="True"> <Control> <PanelContainer Name="BackgroundPanel" /> @@ -10,10 +11,15 @@ <Label Text="{Loc 'character-setup-gui-character-setup-label'}" Margin="8 0 0 0" VAlign="Center" StyleClasses="LabelHeadingBigger" /> + <Button Name="StatsButton" HorizontalExpand="True" Text="{Loc 'character-setup-gui-character-setup-stats-button'}" StyleClasses="ButtonBig" HorizontalAlignment="Right" /> + <cc:CommandButton Name="AdminRemarksButton" + Command="adminremarks" + Text="{Loc 'character-setup-gui-character-setup-adminremarks-button'}" + StyleClasses="ButtonBig" /> <Button Name="RulesButton" Text="{Loc 'character-setup-gui-character-setup-rules-button'}" StyleClasses="ButtonBig"/> diff --git a/Content.Client/Lobby/UI/CharacterSetupGui.xaml.cs b/Content.Client/Lobby/UI/CharacterSetupGui.xaml.cs index 777725b9eda..45799161324 100644 --- a/Content.Client/Lobby/UI/CharacterSetupGui.xaml.cs +++ b/Content.Client/Lobby/UI/CharacterSetupGui.xaml.cs @@ -1,6 +1,7 @@ using Content.Client.Info; using Content.Client.Info.PlaytimeStats; using Content.Client.Resources; +using Content.Shared.CCVar; using Content.Shared.Preferences; using Robust.Client.AutoGenerated; using Robust.Client.Graphics; @@ -8,6 +9,7 @@ using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; +using Robust.Shared.Configuration; using Robust.Shared.Prototypes; namespace Content.Client.Lobby.UI @@ -18,28 +20,23 @@ namespace Content.Client.Lobby.UI [GenerateTypedNameReferences] public sealed partial class CharacterSetupGui : Control { - private readonly IClientPreferencesManager _preferencesManager; - private readonly IEntityManager _entManager; - private readonly IPrototypeManager _protomanager; + [Dependency] private readonly IClientPreferencesManager _preferencesManager = default!; + [Dependency] private readonly IEntityManager _entManager = default!; + [Dependency] private readonly IPrototypeManager _protomanager = default!; + [Dependency] private readonly IResourceCache _resourceCache = default!; + [Dependency] private readonly IConfigurationManager _cfg = default!; private readonly Button _createNewCharacterButton; public event Action<int>? SelectCharacter; public event Action<int>? DeleteCharacter; - public CharacterSetupGui( - IEntityManager entManager, - IPrototypeManager protoManager, - IResourceCache resourceCache, - IClientPreferencesManager preferencesManager, - HumanoidProfileEditor profileEditor) + public CharacterSetupGui(HumanoidProfileEditor profileEditor) { RobustXamlLoader.Load(this); - _preferencesManager = preferencesManager; - _entManager = entManager; - _protomanager = protoManager; + IoCManager.InjectDependencies(this); - var panelTex = resourceCache.GetTexture("/Textures/Interface/Nano/button.svg.96dpi.png"); + var panelTex = _resourceCache.GetTexture("/Textures/Interface/Nano/button.svg.96dpi.png"); var back = new StyleBoxTexture { Texture = panelTex, @@ -56,7 +53,7 @@ public CharacterSetupGui( _createNewCharacterButton.OnPressed += args => { - preferencesManager.CreateCharacter(HumanoidCharacterProfile.Random()); + _preferencesManager.CreateCharacter(HumanoidCharacterProfile.Random()); ReloadCharacterPickers(); args.Event.Handle(); }; @@ -65,6 +62,8 @@ public CharacterSetupGui( RulesButton.OnPressed += _ => new RulesAndInfoWindow().Open(); StatsButton.OnPressed += _ => new PlaytimeStatsWindow().OpenCentered(); + + _cfg.OnValueChanged(CCVars.SeeOwnNotes, p => AdminRemarksButton.Visible = p, true); } /// <summary> diff --git a/Content.Client/Lobby/UI/LobbyGui.xaml.cs b/Content.Client/Lobby/UI/LobbyGui.xaml.cs index 81230130a1d..6471edb6f37 100644 --- a/Content.Client/Lobby/UI/LobbyGui.xaml.cs +++ b/Content.Client/Lobby/UI/LobbyGui.xaml.cs @@ -2,7 +2,6 @@ using Content.Client.UserInterface.Systems.EscapeMenu; using Robust.Client.AutoGenerated; using Robust.Client.Console; -using Robust.Client.State; using Robust.Client.UserInterface; using Robust.Client.UserInterface.XAML; diff --git a/Resources/Locale/en-US/lobby/lobby-gui.ftl b/Resources/Locale/en-US/lobby/lobby-gui.ftl index 6407104163f..e7f131e93b0 100644 --- a/Resources/Locale/en-US/lobby/lobby-gui.ftl +++ b/Resources/Locale/en-US/lobby/lobby-gui.ftl @@ -1,4 +1,4 @@ -ui-lobby-title = Lobby +ui-lobby-title = Lobby ui-lobby-ahelp-button = AHelp ui-lobby-options-button = Options ui-lobby-leave-button = Leave diff --git a/Resources/Locale/en-US/preferences/ui/character-setup-gui.ftl b/Resources/Locale/en-US/preferences/ui/character-setup-gui.ftl index 325d7cb538d..5ca4673f6b1 100644 --- a/Resources/Locale/en-US/preferences/ui/character-setup-gui.ftl +++ b/Resources/Locale/en-US/preferences/ui/character-setup-gui.ftl @@ -1,4 +1,5 @@ character-setup-gui-character-setup-label = Character setup +character-setup-gui-character-setup-adminremarks-button = Admin Remarks character-setup-gui-character-setup-stats-button = Stats character-setup-gui-character-setup-rules-button = Rules character-setup-gui-character-setup-close-button = Close @@ -10,4 +11,4 @@ character-setup-gui-character-picker-button-confirm-delete-button = Confirm character-setup-gui-save-panel-title = Unsaved character changes character-setup-gui-save-panel-save = Save character-setup-gui-save-panel-nosave = Don't save -character-setup-gui-save-panel-cancel = Cancel \ No newline at end of file +character-setup-gui-save-panel-cancel = Cancel From 47f94d1139f50425b70e7508970a81685b57171d Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Sat, 16 Nov 2024 05:10:35 +0000 Subject: [PATCH 119/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 58fe44307b4..7e70477996c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: IProduceWidgets - changes: - - message: Meteor dust should more consistently happen instead of meteors. - type: Tweak - id: 7118 - time: '2024-08-15T19:33:17.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/31018 - author: Emisse changes: - message: Atlas, Cluster, Europa, & Saltern removed from the game. @@ -3922,3 +3915,11 @@ id: 7617 time: '2024-11-16T04:30:48.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33019 +- author: Aquif + changes: + - message: There is now a button to view your admin remarks in the character editor, + right next to the stats button. + type: Tweak + id: 7618 + time: '2024-11-16T05:09:29.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/31761 From d9a5ffbef402527689ee2105f9cfa07eba522388 Mon Sep 17 00:00:00 2001 From: Spessmann <156740760+Spessmann@users.noreply.github.com> Date: Fri, 15 Nov 2024 22:29:09 -0800 Subject: [PATCH 120/187] Cog christmas update (#33344) christmas updoot --- Resources/Maps/cog.yml | 235 +++++++++++++++++++++++++++++++---------- 1 file changed, 182 insertions(+), 53 deletions(-) diff --git a/Resources/Maps/cog.yml b/Resources/Maps/cog.yml index 859ee46b1de..833756d3372 100644 --- a/Resources/Maps/cog.yml +++ b/Resources/Maps/cog.yml @@ -173,7 +173,7 @@ entities: version: 6 1,-2: ind: 1,-2 - tiles: SgAAAAAASgAAAAAASgAAAAAAgQAAAAAAYAAAAAACYAAAAAADYAAAAAADYAAAAAABgQAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAAgQAAAAAASgAAAAAASgAAAAAASgAAAAAAgQAAAAAAYAAAAAADYAAAAAADYAAAAAACYAAAAAACgQAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAACYAAAAAAAYAAAAAABYAAAAAABgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAABYAAAAAAAYAAAAAACYAAAAAADYAAAAAABYAAAAAACYAAAAAACYAAAAAABYAAAAAAAYAAAAAACYAAAAAACYAAAAAAAYAAAAAADYAAAAAABYAAAAAAAYAAAAAADYAAAAAAAYAAAAAABYAAAAAABYAAAAAACYAAAAAADYAAAAAADYAAAAAABYAAAAAABYAAAAAADYAAAAAADYAAAAAACYAAAAAACYAAAAAACYAAAAAACYAAAAAADYAAAAAACYAAAAAACYAAAAAAAYAAAAAABYAAAAAABYAAAAAADYAAAAAAAYAAAAAABYAAAAAAAYAAAAAABYAAAAAAAYAAAAAADYAAAAAABYAAAAAACYAAAAAAAYAAAAAACYAAAAAAAYAAAAAADYAAAAAACYAAAAAADgQAAAAAAYAAAAAABYAAAAAADYAAAAAAAYAAAAAAAgQAAAAAAYAAAAAADYAAAAAADYAAAAAABgQAAAAAAYAAAAAACYAAAAAABYAAAAAAAYAAAAAABgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAABgQAAAAAAgQAAAAAAYAAAAAADgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAACYAAAAAABYAAAAAABgQAAAAAAYAAAAAABYAAAAAACYAAAAAACYAAAAAAAgQAAAAAAYAAAAAADYAAAAAABYAAAAAABgQAAAAAAYAAAAAADYAAAAAACYAAAAAADYAAAAAAAYAAAAAADYAAAAAABgQAAAAAAYAAAAAACYAAAAAABYAAAAAABYAAAAAAAgQAAAAAAYAAAAAACYAAAAAACYAAAAAADgQAAAAAAYAAAAAABYAAAAAACYAAAAAABYAAAAAAAYAAAAAACYAAAAAACgQAAAAAAYAAAAAAAYAAAAAAAYAAAAAADYAAAAAACgQAAAAAAYAAAAAACYAAAAAABYAAAAAAAgQAAAAAAYAAAAAADYAAAAAABYAAAAAADgQAAAAAAgQAAAAAAYAAAAAACgQAAAAAAYAAAAAADYAAAAAADYAAAAAAAYAAAAAABgQAAAAAAYAAAAAAAYAAAAAACYAAAAAADgQAAAAAAYAAAAAADYAAAAAACYAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAABgQAAAAAAgQAAAAAAYAAAAAAAgQAAAAAAgQAAAAAAYAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAADYAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAADYAAAAAABYAAAAAAAYAAAAAAAYAAAAAAAgQAAAAAAYAAAAAABYAAAAAADYAAAAAADYAAAAAAAYAAAAAADYAAAAAAAYAAAAAADYAAAAAADYAAAAAACYAAAAAADYAAAAAABYAAAAAAAYAAAAAADYAAAAAADYAAAAAADYAAAAAACYAAAAAADYAAAAAADYAAAAAACYAAAAAACgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAADYAAAAAAAYAAAAAACYAAAAAACYAAAAAAAYAAAAAADYAAAAAABYAAAAAAAYAAAAAACYAAAAAAAYAAAAAAAYAAAAAAAYAAAAAADYAAAAAACYAAAAAACYAAAAAAD + tiles: SgAAAAAASgAAAAAASgAAAAAAgQAAAAAAYAAAAAACYAAAAAADYAAAAAADYAAAAAABgQAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAAgQAAAAAASgAAAAAASgAAAAAASgAAAAAAgQAAAAAAYAAAAAADYAAAAAADYAAAAAACYAAAAAACgQAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAACYAAAAAAAYAAAAAABYAAAAAABgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAABYAAAAAAAYAAAAAACYAAAAAADYAAAAAABYAAAAAACYAAAAAACYAAAAAABYAAAAAAAYAAAAAACYAAAAAACYAAAAAAAYAAAAAADYAAAAAABYAAAAAAAYAAAAAADYAAAAAAAYAAAAAABYAAAAAABYAAAAAACYAAAAAADYAAAAAADYAAAAAABYAAAAAABYAAAAAADYAAAAAADYAAAAAACYAAAAAACYAAAAAACYAAAAAACYAAAAAADYAAAAAACYAAAAAACYAAAAAAAYAAAAAABYAAAAAABYAAAAAADYAAAAAAAYAAAAAABYAAAAAAAYAAAAAABYAAAAAAAYAAAAAADYAAAAAABYAAAAAACYAAAAAAAYAAAAAACYAAAAAAAYAAAAAADYAAAAAACYAAAAAADgQAAAAAAYAAAAAABIwAAAAAAIwAAAAAAYAAAAAAAgQAAAAAAYAAAAAADYAAAAAADYAAAAAABgQAAAAAAYAAAAAACYAAAAAABYAAAAAAAYAAAAAABgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAABgQAAAAAAgQAAAAAAYAAAAAADgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAACYAAAAAABYAAAAAABgQAAAAAAYAAAAAABYAAAAAACYAAAAAACYAAAAAAAgQAAAAAAYAAAAAADYAAAAAABYAAAAAABgQAAAAAAYAAAAAADYAAAAAACYAAAAAADYAAAAAAAYAAAAAADYAAAAAABgQAAAAAAYAAAAAACYAAAAAABYAAAAAABYAAAAAAAgQAAAAAAYAAAAAACYAAAAAACYAAAAAADgQAAAAAAYAAAAAABYAAAAAACYAAAAAABYAAAAAAAYAAAAAACYAAAAAACgQAAAAAAYAAAAAAAYAAAAAAAYAAAAAADYAAAAAACgQAAAAAAYAAAAAACYAAAAAABYAAAAAAAgQAAAAAAYAAAAAADYAAAAAABYAAAAAADgQAAAAAAgQAAAAAAYAAAAAACgQAAAAAAYAAAAAADYAAAAAADYAAAAAAAYAAAAAABgQAAAAAAYAAAAAAAYAAAAAACYAAAAAADgQAAAAAAYAAAAAADYAAAAAACYAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAABgQAAAAAAgQAAAAAAYAAAAAAAgQAAAAAAgQAAAAAAYAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAADYAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAADYAAAAAABYAAAAAAAYAAAAAAAYAAAAAAAgQAAAAAAYAAAAAABYAAAAAADYAAAAAADYAAAAAAAYAAAAAADYAAAAAAAYAAAAAADYAAAAAADYAAAAAACYAAAAAADYAAAAAABYAAAAAAAYAAAAAADYAAAAAADYAAAAAADYAAAAAACYAAAAAADYAAAAAADYAAAAAACYAAAAAACgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAADYAAAAAAAYAAAAAACYAAAAAACYAAAAAAAYAAAAAADYAAAAAABYAAAAAAAYAAAAAACYAAAAAAAYAAAAAAAYAAAAAAAYAAAAAADYAAAAAACYAAAAAACYAAAAAAD version: 6 1,-1: ind: 1,-1 @@ -5708,8 +5708,6 @@ entities: 761: 16,-26 762: 17,-26 763: 18,-26 - 764: 21,-26 - 765: 22,-26 776: 11,-20 777: 12,-20 778: 13,-20 @@ -9215,6 +9213,12 @@ entities: id: grasssnow decals: 4352: -46.01974,-50.080185 + - node: + color: '#FFFFFFFF' + id: grasssnow + decals: + 10162: 21.08367,-26.059422 + 10163: 21.882736,-26.075739 - node: cleanable: True color: '#8600003C' @@ -19872,8 +19876,7 @@ entities: - uid: 28848 components: - type: Transform - rot: -12.566370614359172 rad - pos: 2.6072965,-1.5317864 + pos: 2.3982162,-1.3528447 parent: 12 - proto: AsteroidRock entities: @@ -76658,6 +76661,12 @@ entities: rot: -1.5707963267948966 rad pos: -48.5,27.5 parent: 12 + - uid: 17970 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -49.5,38.5 + parent: 12 - uid: 18156 components: - type: Transform @@ -76952,12 +76961,6 @@ entities: rot: -1.5707963267948966 rad pos: -52.5,37.5 parent: 12 - - uid: 22173 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -49.5,38.5 - parent: 12 - uid: 22376 components: - type: Transform @@ -77738,6 +77741,18 @@ entities: - type: Transform pos: 0.5,-66.5 parent: 12 + - uid: 31688 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 20.408453,-26.829342 + parent: 12 + - uid: 31689 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 22.06586,-28.196033 + parent: 12 - uid: 32101 components: - type: Transform @@ -80078,6 +80093,46 @@ entities: - type: Transform pos: -15.479212,51.570213 parent: 12 +- proto: ClothingHeadHatSantahat + entities: + - uid: 31656 + components: + - type: Transform + rot: -25.132741228718352 rad + pos: -22.599323,38.502403 + parent: 12 + - uid: 31657 + components: + - type: Transform + rot: -25.132741228718352 rad + pos: -41.818073,40.566353 + parent: 12 + - uid: 31669 + components: + - type: Transform + rot: -25.132741228718352 rad + pos: -36.450703,42.555126 + parent: 12 + - uid: 31670 + components: + - type: Transform + pos: -29.275808,38.740208 + parent: 12 + - uid: 31672 + components: + - type: Transform + pos: -37.561886,53.522655 + parent: 12 + - uid: 31673 + components: + - type: Transform + pos: 23.223015,-26.438202 + parent: 12 + - uid: 31674 + components: + - type: Transform + pos: 21.975492,-27.778383 + parent: 12 - proto: ClothingHeadHatSurgcapBlue entities: - uid: 5726 @@ -80652,6 +80707,37 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage +- proto: ClothingOuterSanta + entities: + - uid: 31654 + components: + - type: Transform + rot: -25.132741228718352 rad + pos: -21.505573,38.6744 + parent: 12 + - uid: 31655 + components: + - type: Transform + rot: -25.132741228718352 rad + pos: -41.474323,40.472534 + parent: 12 + - uid: 31667 + components: + - type: Transform + rot: -25.132741228718352 rad + pos: -31.513205,38.489803 + parent: 12 + - uid: 31668 + components: + - type: Transform + rot: -6.217248937900877E-15 rad + pos: -39.52883,36.55096 + parent: 12 + - uid: 31671 + components: + - type: Transform + pos: -37.341736,53.412502 + parent: 12 - proto: ClothingOuterStraightjacket entities: - uid: 19275 @@ -81375,6 +81461,12 @@ entities: - type: Transform pos: -2.5,-66.5 parent: 12 + - uid: 31690 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 25.5,-28.5 + parent: 12 - uid: 31793 components: - type: Transform @@ -81925,6 +82017,12 @@ entities: parent: 12 - proto: ComputerSurveillanceCameraMonitor entities: + - uid: 1116 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -50.5,38.5 + parent: 12 - uid: 5803 components: - type: Transform @@ -81937,12 +82035,6 @@ entities: rot: -1.5707963267948966 rad pos: -38.5,55.5 parent: 12 - - uid: 17970 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -48.5,38.5 - parent: 12 - uid: 20822 components: - type: Transform @@ -83571,6 +83663,12 @@ entities: rot: 3.141592653589793 rad pos: -31.5,50.5 parent: 12 + - uid: 28862 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -48.5,38.5 + parent: 12 - proto: CryogenicSleepUnitSpawnerLateJoin entities: - uid: 17625 @@ -83712,13 +83810,6 @@ entities: - type: Transform pos: 3.5,55.5 parent: 12 -- proto: CutterMachine - entities: - - uid: 1116 - components: - - type: Transform - pos: 13.5,-19.5 - parent: 12 - proto: d6Dice entities: - uid: 929 @@ -95874,6 +95965,13 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage +- proto: DrinkGlassWhite + entities: + - uid: 31687 + components: + - type: Transform + pos: 24.274195,-28.126541 + parent: 12 - proto: DrinkGoldenCup entities: - uid: 10942 @@ -102590,6 +102688,13 @@ entities: - type: Transform pos: -7.8905973,-55.743637 parent: 12 +- proto: FloraTreeChristmas02 + entities: + - uid: 28861 + components: + - type: Transform + pos: 22,-26 + parent: 12 - proto: FloraTreeLarge01 entities: - uid: 16656 @@ -102707,6 +102812,20 @@ entities: - type: Transform pos: -53.30888,54.409172 parent: 12 +- proto: FoodBakedCookie + entities: + - uid: 31677 + components: + - type: Transform + rot: -6.283185307179586 rad + pos: 24.602898,-28.325752 + parent: 12 + - uid: 31678 + components: + - type: Transform + rot: -6.283185307179586 rad + pos: 24.44549,-28.571293 + parent: 12 - proto: FoodBanana entities: - uid: 4201 @@ -102908,6 +103027,13 @@ entities: - type: Transform pos: 10.45153,-49.457336 parent: 12 +- proto: FoodCakeChristmas + entities: + - uid: 22173 + components: + - type: Transform + pos: 21.240437,-26.565382 + parent: 12 - proto: FoodCakeSuppermatterSlice entities: - uid: 15371 @@ -103150,6 +103276,11 @@ entities: - type: Transform pos: 64.56665,50.71139 parent: 12 + - uid: 31653 + components: + - type: Transform + pos: 21.224129,-26.540905 + parent: 12 - proto: FoodPlatePlastic entities: - uid: 31121 @@ -147121,20 +147252,6 @@ entities: - type: Transform pos: 12.6497135,57.214436 parent: 12 -- proto: Intellicard - entities: - - uid: 28861 - components: - - type: Transform - rot: -12.566370614359172 rad - pos: -3.43437,-0.48939347 - parent: 12 - - uid: 28862 - components: - - type: Transform - rot: -12.566370614359172 rad - pos: -2.5072865,-0.47896957 - parent: 12 - proto: IntercomAll entities: - uid: 31057 @@ -149276,14 +149393,12 @@ entities: - uid: 26865 components: - type: Transform - rot: -25.132741228718352 rad - pos: 11.935109,-19.492529 + pos: 13.299763,-19.62316 parent: 12 - uid: 26898 components: - type: Transform - rot: -25.132741228718352 rad - pos: 12.15526,-19.162073 + pos: 13.706013,-19.320866 parent: 12 - proto: MaintenanceFluffSpawner entities: @@ -150620,8 +150735,7 @@ entities: - uid: 28854 components: - type: Transform - rot: -12.566370614359172 rad - pos: 2.3989635,-1.1252534 + pos: -2.6434512,-0.42511737 parent: 12 - proto: NuclearBomb entities: @@ -157210,7 +157324,7 @@ entities: - uid: 21893 components: - type: Transform - pos: -50.5,38.5 + pos: 13.5,-19.5 parent: 12 - uid: 21933 components: @@ -157619,6 +157733,16 @@ entities: - type: Transform pos: -8.5,-66.5 parent: 12 + - uid: 31660 + components: + - type: Transform + pos: -41.5,40.5 + parent: 12 + - uid: 31661 + components: + - type: Transform + pos: -31.5,38.5 + parent: 12 - uid: 32108 components: - type: Transform @@ -157630,13 +157754,12 @@ entities: - uid: 9805 components: - type: Transform - pos: 12.5489435,-19.523338 + pos: 12.226846,-19.550192 parent: 12 - uid: 9807 components: - type: Transform - rot: -37.69911184307754 rad - pos: 12.784136,-19.248148 + pos: 12.581013,-19.393833 parent: 12 - uid: 10410 components: @@ -171484,7 +171607,7 @@ entities: - uid: 30003 components: - type: Transform - pos: 11.470346,-19.382376 + pos: 11.581013,-19.352137 parent: 12 - proto: StairDark entities: @@ -174190,7 +174313,8 @@ entities: - uid: 21948 components: - type: Transform - pos: -50.491573,38.521393 + rot: -18.84955592153876 rad + pos: -49.832508,36.850792 parent: 12 - proto: SurveillanceCameraRouterCommand entities: @@ -178577,6 +178701,11 @@ entities: - type: Transform pos: -14.5,73.5 parent: 12 + - uid: 31686 + components: + - type: Transform + pos: 24.5,-28.5 + parent: 12 - proto: TargetClown entities: - uid: 22647 @@ -178655,7 +178784,8 @@ entities: - uid: 17779 components: - type: Transform - pos: -49.732307,36.55419 + rot: -18.84955592153876 rad + pos: -49.624176,36.475533 parent: 12 - proto: TegCenter entities: @@ -204221,8 +204351,7 @@ entities: - uid: 7197 components: - type: Transform - rot: -12.566370614359172 rad - pos: 2.2218802,-0.60405827 + pos: -3.5080347,-0.46681333 parent: 12 - uid: 9080 components: From f5b63b8393835c464724f78f1b14242d49b760cd Mon Sep 17 00:00:00 2001 From: Southbridge <7013162+southbridge-fur@users.noreply.github.com> Date: Sat, 16 Nov 2024 01:29:23 -0500 Subject: [PATCH 121/187] Box Holiday Update (#33340) Added holiday decorations with presents and various fixes --- Resources/Maps/box.yml | 1065 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 963 insertions(+), 102 deletions(-) diff --git a/Resources/Maps/box.yml b/Resources/Maps/box.yml index a56b0d6471a..22cf2b124f5 100644 --- a/Resources/Maps/box.yml +++ b/Resources/Maps/box.yml @@ -5794,6 +5794,13 @@ entities: id: bushsnowb3 decals: 496: -15.010791,-24.068132 + - node: + angle: -4.71238898038469 rad + color: '#FFFFFFFF' + id: grasssnow + decals: + 3686: 2.9827948,-1.004494 + 3687: -5.0156083,-0.99618006 - node: color: '#A4610606' id: splatter @@ -11584,7 +11591,7 @@ entities: pos: 24.5,16.5 parent: 8364 - type: Door - secondsUntilStateChange: -18318.04 + secondsUntilStateChange: -21879.57 state: Opening - type: DeviceLinkSource lastSignals: @@ -14498,6 +14505,8 @@ entities: parent: 8364 - uid: 19837 components: + - type: MetaData + name: RD's Office APC - type: Transform rot: 3.141592653589793 rad pos: 69.5,-38.5 @@ -14584,6 +14593,13 @@ entities: rot: -1.5707963267948966 rad pos: 40.5,-17.5 parent: 8364 + - uid: 2044 + components: + - type: MetaData + name: Breakroom APC + - type: Transform + pos: 59.5,-38.5 + parent: 8364 - uid: 6692 components: - type: Transform @@ -14648,14 +14664,6 @@ entities: rot: 3.141592653589793 rad pos: 84.5,-46.5 parent: 8364 - - uid: 19836 - components: - - type: MetaData - name: Toxins Storage APC - - type: Transform - rot: -1.5707963267948966 rad - pos: 58.5,-36.5 - parent: 8364 - uid: 20160 components: - type: MetaData @@ -14672,6 +14680,14 @@ entities: rot: 1.5707963267948966 rad pos: 68.5,-25.5 parent: 8364 + - uid: 20586 + components: + - type: MetaData + name: Toxin Storage APC + - type: Transform + rot: 1.5707963267948966 rad + pos: 58.5,-35.5 + parent: 8364 - uid: 22555 components: - type: MetaData @@ -15132,6 +15148,126 @@ entities: - type: Transform pos: 16.5,-50.5 parent: 8364 + - uid: 27997 + components: + - type: Transform + pos: -8.5,-92.5 + parent: 8364 + - uid: 27998 + components: + - type: Transform + pos: 21.5,-80.5 + parent: 8364 + - uid: 27999 + components: + - type: Transform + pos: 22.5,-80.5 + parent: 8364 + - uid: 28000 + components: + - type: Transform + pos: 23.5,-80.5 + parent: 8364 + - uid: 28001 + components: + - type: Transform + pos: 25.5,-80.5 + parent: 8364 + - uid: 28002 + components: + - type: Transform + pos: 24.5,-80.5 + parent: 8364 + - uid: 28003 + components: + - type: Transform + pos: 21.5,-87.5 + parent: 8364 + - uid: 28004 + components: + - type: Transform + pos: 20.5,-87.5 + parent: 8364 + - uid: 28005 + components: + - type: Transform + pos: -7.5,-92.5 + parent: 8364 + - uid: 28006 + components: + - type: Transform + pos: -6.5,-92.5 + parent: 8364 + - uid: 28007 + components: + - type: Transform + pos: -5.5,-92.5 + parent: 8364 + - uid: 28008 + components: + - type: Transform + pos: -4.5,-92.5 + parent: 8364 + - uid: 28009 + components: + - type: Transform + pos: -3.5,-92.5 + parent: 8364 + - uid: 28010 + components: + - type: Transform + pos: -2.5,-92.5 + parent: 8364 + - uid: 28011 + components: + - type: Transform + pos: -1.5,-92.5 + parent: 8364 + - uid: 28012 + components: + - type: Transform + pos: -0.5,-92.5 + parent: 8364 + - uid: 28013 + components: + - type: Transform + pos: 1.5,-92.5 + parent: 8364 + - uid: 28014 + components: + - type: Transform + pos: 2.5,-92.5 + parent: 8364 + - uid: 28015 + components: + - type: Transform + pos: 3.5,-92.5 + parent: 8364 + - uid: 28016 + components: + - type: Transform + pos: 4.5,-92.5 + parent: 8364 + - uid: 28017 + components: + - type: Transform + pos: 5.5,-92.5 + parent: 8364 + - uid: 28018 + components: + - type: Transform + pos: 6.5,-92.5 + parent: 8364 + - uid: 28019 + components: + - type: Transform + pos: 7.5,-92.5 + parent: 8364 + - uid: 28020 + components: + - type: Transform + pos: 0.5,-92.5 + parent: 8364 - proto: AtmosFixFreezerMarker entities: - uid: 2846 @@ -16646,6 +16782,11 @@ entities: - type: Transform pos: -48.5,-16.5 parent: 8364 + - uid: 27996 + components: + - type: Transform + pos: 33.5,-84.5 + parent: 8364 - proto: BoxBeaker entities: - uid: 18896 @@ -36512,6 +36653,16 @@ entities: - type: Transform pos: 82.5,-68.5 parent: 8364 + - uid: 20299 + components: + - type: Transform + pos: 61.5,-36.5 + parent: 8364 + - uid: 20301 + components: + - type: Transform + pos: 60.5,-36.5 + parent: 8364 - uid: 20394 components: - type: Transform @@ -37455,27 +37606,12 @@ entities: - uid: 20585 components: - type: Transform - pos: 58.5,-36.5 - parent: 8364 - - uid: 20586 - components: - - type: Transform - pos: 59.5,-36.5 + pos: 62.5,-36.5 parent: 8364 - uid: 20587 components: - type: Transform - pos: 60.5,-36.5 - parent: 8364 - - uid: 20588 - components: - - type: Transform - pos: 61.5,-36.5 - parent: 8364 - - uid: 20589 - components: - - type: Transform - pos: 62.5,-36.5 + pos: 58.5,-35.5 parent: 8364 - uid: 20590 components: @@ -38142,6 +38278,11 @@ entities: - type: Transform pos: 12.5,-31.5 parent: 8364 + - uid: 21439 + components: + - type: Transform + pos: 59.5,-35.5 + parent: 8364 - uid: 21452 components: - type: Transform @@ -39472,6 +39613,16 @@ entities: - type: Transform pos: 32.5,-79.5 parent: 8364 + - uid: 27971 + components: + - type: Transform + pos: 59.5,-39.5 + parent: 8364 + - uid: 27972 + components: + - type: Transform + pos: 59.5,-38.5 + parent: 8364 - proto: CableApcStack entities: - uid: 1195 @@ -54793,26 +54944,6 @@ entities: - type: Transform pos: 61.5,-35.5 parent: 8364 - - uid: 20299 - components: - - type: Transform - pos: 60.5,-35.5 - parent: 8364 - - uid: 20300 - components: - - type: Transform - pos: 60.5,-36.5 - parent: 8364 - - uid: 20301 - components: - - type: Transform - pos: 59.5,-36.5 - parent: 8364 - - uid: 20302 - components: - - type: Transform - pos: 58.5,-36.5 - parent: 8364 - uid: 20303 components: - type: Transform @@ -55093,6 +55224,11 @@ entities: - type: Transform pos: 55.5,-32.5 parent: 8364 + - uid: 21473 + components: + - type: Transform + pos: 60.5,-35.5 + parent: 8364 - uid: 21580 components: - type: Transform @@ -57038,6 +57174,31 @@ entities: - type: Transform pos: -0.5,-76.5 parent: 8364 + - uid: 27967 + components: + - type: Transform + pos: 59.5,-35.5 + parent: 8364 + - uid: 27968 + components: + - type: Transform + pos: 59.5,-40.5 + parent: 8364 + - uid: 27969 + components: + - type: Transform + pos: 59.5,-39.5 + parent: 8364 + - uid: 27970 + components: + - type: Transform + pos: 59.5,-38.5 + parent: 8364 + - uid: 28060 + components: + - type: Transform + pos: 58.5,-35.5 + parent: 8364 - proto: CableMVStack entities: - uid: 1697 @@ -68762,6 +68923,53 @@ entities: - type: Transform pos: 42.526115,-2.6703405 parent: 8364 +- proto: ClothingHeadHatSantahat + entities: + - uid: 27935 + components: + - type: Transform + pos: 6.358707,35.83203 + parent: 8364 + - uid: 27936 + components: + - type: Transform + pos: 7.838608,35.8216 + parent: 8364 + - uid: 27937 + components: + - type: Transform + pos: 6.327441,35.52973 + parent: 8364 + - uid: 27938 + components: + - type: Transform + pos: 6.3170195,40.752113 + parent: 8364 + - uid: 27941 + components: + - type: Transform + pos: 16.497793,34.50699 + parent: 8364 + - uid: 27943 + components: + - type: Transform + pos: 4.7231474,33.682045 + parent: 8364 + - uid: 27945 + components: + - type: Transform + pos: 5.5495176,37.48842 + parent: 8364 + - uid: 27947 + components: + - type: Transform + pos: 13.0167885,39.623337 + parent: 8364 + - uid: 27974 + components: + - type: Transform + pos: -1.4000072,-5.011914 + parent: 8364 - proto: ClothingHeadHatTophat entities: - uid: 6988 @@ -69291,6 +69499,53 @@ entities: - type: Transform pos: 47.72615,-72.416794 parent: 8364 +- proto: ClothingOuterSanta + entities: + - uid: 27932 + components: + - type: Transform + pos: 6.8381114,35.769485 + parent: 8364 + - uid: 27933 + components: + - type: Transform + pos: 7.1820316,35.779907 + parent: 8364 + - uid: 27934 + components: + - type: Transform + pos: 6.994439,35.759064 + parent: 8364 + - uid: 27939 + components: + - type: Transform + pos: 6.4837685,40.59575 + parent: 8364 + - uid: 27940 + components: + - type: Transform + pos: 16.47695,34.204697 + parent: 8364 + - uid: 27942 + components: + - type: Transform + pos: 4.2958517,33.702896 + parent: 8364 + - uid: 27944 + components: + - type: Transform + pos: 5.5078306,37.571808 + parent: 8364 + - uid: 27946 + components: + - type: Transform + pos: 12.995945,39.717148 + parent: 8364 + - uid: 27973 + components: + - type: Transform + pos: -1.493803,-5.3037834 + parent: 8364 - proto: ClothingOuterSuitFire entities: - uid: 8635 @@ -81564,6 +81819,29 @@ entities: parent: 8364 - proto: EmergencyLight entities: + - uid: 20300 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 31.5,-36.5 + parent: 8364 + - uid: 20588 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 65.5,-43.5 + parent: 8364 + - uid: 20589 + components: + - type: Transform + pos: 19.5,-40.5 + parent: 8364 + - uid: 20820 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 27.5,-20.5 + parent: 8364 - uid: 21308 components: - type: Transform @@ -81599,11 +81877,9 @@ entities: - uid: 21312 components: - type: Transform - pos: 25.5,0.5 + rot: -1.5707963267948966 rad + pos: 1.5,-76.5 parent: 8364 - - type: PointLight - enabled: True - - type: ActiveEmergencyLight - uid: 21313 components: - type: Transform @@ -81654,15 +81930,6 @@ entities: - type: PointLight enabled: True - type: ActiveEmergencyLight - - uid: 21439 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -24.5,-3.5 - parent: 8364 - - type: PointLight - enabled: True - - type: ActiveEmergencyLight - uid: 21440 components: - type: Transform @@ -81714,15 +81981,6 @@ entities: - type: PointLight enabled: True - type: ActiveEmergencyLight - - uid: 21473 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 32.5,-25.5 - parent: 8364 - - type: PointLight - enabled: True - - type: ActiveEmergencyLight - uid: 21474 components: - type: Transform @@ -81757,15 +82015,6 @@ entities: - type: PointLight enabled: True - type: ActiveEmergencyLight - - uid: 21478 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 75.5,-10.5 - parent: 8364 - - type: PointLight - enabled: True - - type: ActiveEmergencyLight - uid: 21483 components: - type: Transform @@ -81783,15 +82032,339 @@ entities: - type: PointLight enabled: True - type: ActiveEmergencyLight - - uid: 21486 + - uid: 28022 + components: + - type: Transform + pos: 31.5,-12.5 + parent: 8364 + - uid: 28023 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 56.5,-14.5 + parent: 8364 + - uid: 28025 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 72.5,-14.5 + parent: 8364 + - uid: 28026 components: - type: Transform rot: 1.5707963267948966 rad - pos: -1.5,-44.5 + pos: 76.5,-2.5 + parent: 8364 + - uid: 28027 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 56.5,-41.5 + parent: 8364 + - uid: 28028 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 67.5,-32.5 + parent: 8364 + - uid: 28029 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 65.5,-18.5 + parent: 8364 + - uid: 28030 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 65.5,-24.5 + parent: 8364 + - uid: 28031 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 71.5,-52.5 + parent: 8364 + - uid: 28032 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 39.5,-52.5 + parent: 8364 + - uid: 28033 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 39.5,-42.5 + parent: 8364 + - uid: 28034 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 43.5,-14.5 + parent: 8364 + - uid: 28035 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 24.5,-28.5 + parent: 8364 + - uid: 28036 + components: + - type: Transform + pos: 33.5,-23.5 + parent: 8364 + - uid: 28037 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 18.5,-19.5 + parent: 8364 + - uid: 28038 + components: + - type: Transform + pos: 13.5,-29.5 + parent: 8364 + - uid: 28039 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 1.5,-31.5 + parent: 8364 + - uid: 28040 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 9.5,7.5 + parent: 8364 + - uid: 28041 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -17.5,-8.5 + parent: 8364 + - uid: 28042 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 16.5,-8.5 + parent: 8364 + - uid: 28043 + components: + - type: Transform + pos: -3.5,-4.5 + parent: 8364 + - uid: 28044 + components: + - type: Transform + pos: 2.5,-4.5 + parent: 8364 + - uid: 28045 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 19.5,13.5 + parent: 8364 + - uid: 28046 + components: + - type: Transform + pos: -9.5,-0.5 + parent: 8364 + - uid: 28047 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -13.5,6.5 + parent: 8364 + - uid: 28048 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -13.5,-25.5 + parent: 8364 + - uid: 28049 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -24.5,-32.5 + parent: 8364 + - uid: 28050 + components: + - type: Transform + pos: -38.5,-20.5 + parent: 8364 + - uid: 28051 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -40.5,-31.5 + parent: 8364 + - uid: 28052 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -65.5,8.5 + parent: 8364 + - uid: 28053 + components: + - type: Transform + pos: -65.5,-3.5 + parent: 8364 + - uid: 28054 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -56.5,4.5 + parent: 8364 + - uid: 28055 + components: + - type: Transform + pos: -56.5,-4.5 + parent: 8364 + - uid: 28056 + components: + - type: Transform + pos: -41.5,-0.5 + parent: 8364 + - uid: 28057 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -29.5,-2.5 + parent: 8364 + - uid: 28058 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 3.5,-54.5 + parent: 8364 + - uid: 28059 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 9.5,-49.5 + parent: 8364 + - uid: 28061 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 0.5,-39.5 + parent: 8364 + - uid: 28062 + components: + - type: Transform + pos: -4.5,-67.5 + parent: 8364 + - uid: 28063 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 5.5,-63.5 + parent: 8364 + - uid: 28064 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 11.5,-71.5 + parent: 8364 + - uid: 28065 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -22.5,-66.5 + parent: 8364 + - uid: 28066 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -5.5,-54.5 + parent: 8364 + - uid: 28067 + components: + - type: Transform + pos: 38.5,-31.5 + parent: 8364 + - uid: 28068 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 16.5,-20.5 + parent: 8364 + - uid: 28071 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -9.5,49.5 + parent: 8364 + - uid: 28072 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -8.5,43.5 + parent: 8364 + - uid: 28073 + components: + - type: Transform + pos: -8.5,36.5 + parent: 8364 + - uid: 28074 + components: + - type: Transform + pos: 10.5,33.5 + parent: 8364 + - uid: 28075 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 6.5,24.5 + parent: 8364 + - uid: 28076 + components: + - type: Transform + pos: -3.5,28.5 + parent: 8364 + - uid: 28077 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -12.5,23.5 + parent: 8364 + - uid: 28078 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,35.5 + parent: 8364 + - uid: 28079 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 0.5,13.5 + parent: 8364 + - uid: 28080 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 0.5,3.5 + parent: 8364 + - uid: 28081 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 49.5,-5.5 + parent: 8364 + - uid: 28082 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 28.5,-10.5 + parent: 8364 + - uid: 28083 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 75.5,-11.5 parent: 8364 - - type: PointLight - enabled: True - - type: ActiveEmergencyLight - proto: EmergencyOxygenTank entities: - uid: 12451 @@ -84438,7 +85011,7 @@ entities: pos: -34.5,-14.5 parent: 8364 - type: Door - secondsUntilStateChange: -12506.576 + secondsUntilStateChange: -16068.107 state: Closing - uid: 15010 components: @@ -84931,7 +85504,7 @@ entities: pos: -4.5,-71.5 parent: 8364 - type: Door - secondsUntilStateChange: -4254.308 + secondsUntilStateChange: -7815.8394 state: Closing - proto: Fireplace entities: @@ -85811,6 +86384,25 @@ entities: - type: Transform pos: 34.5,12.5 parent: 8364 +- proto: FloraTreeChristmas01 + entities: + - uid: 27948 + components: + - type: Transform + pos: -4.5619984,-0.48297754 + parent: 8364 + - uid: 27949 + components: + - type: Transform + pos: 3.4940813,-0.44128227 + parent: 8364 +- proto: FloraTreeChristmas02 + entities: + - uid: 27955 + components: + - type: Transform + pos: 23.93768,-6.3922496 + parent: 8364 - proto: FoodBanana entities: - uid: 6983 @@ -127374,6 +127966,12 @@ entities: - type: Transform pos: 42.5,-22.5 parent: 8364 + - uid: 2045 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 60.5,-37.5 + parent: 8364 - uid: 3215 components: - type: Transform @@ -129319,14 +129917,6 @@ entities: parent: 8364 - type: ApcPowerReceiver powerLoad: 0 - - uid: 20820 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 59.5,-35.5 - parent: 8364 - - type: ApcPowerReceiver - powerLoad: 0 - uid: 20821 components: - type: Transform @@ -129448,6 +130038,11 @@ entities: parent: 8364 - type: ApcPowerReceiver powerLoad: 0 + - uid: 21478 + components: + - type: Transform + pos: 60.5,-33.5 + parent: 8364 - uid: 21610 components: - type: Transform @@ -131568,6 +132163,270 @@ entities: parent: 8364 - type: ApcPowerReceiver powerLoad: 0 +- proto: PresentRandom + entities: + - uid: 21486 + components: + - type: Transform + pos: -54.504784,15.508425 + parent: 8364 + - uid: 27922 + components: + - type: Transform + pos: -0.49470747,-86.45126 + parent: 8364 + - uid: 27923 + components: + - type: Transform + pos: -34.4738,21.467957 + parent: 8364 + - uid: 27924 + components: + - type: Transform + pos: -30.520926,5.542141 + parent: 8364 + - uid: 27925 + components: + - type: Transform + pos: -31.469313,6.4490204 + parent: 8364 + - uid: 27926 + components: + - type: Transform + pos: -32.542763,5.5734124 + parent: 8364 + - uid: 27927 + components: + - type: Transform + pos: -10.9682865,17.654972 + parent: 8364 + - uid: 27928 + components: + - type: Transform + pos: -4.533206,15.455529 + parent: 8364 + - uid: 27929 + components: + - type: Transform + pos: -1.7443311,30.747675 + parent: 8364 + - uid: 27930 + components: + - type: Transform + pos: 16.479553,32.771088 + parent: 8364 + - uid: 27931 + components: + - type: Transform + pos: 13.49891,40.480362 + parent: 8364 + - uid: 27952 + components: + - type: Transform + pos: -5.265177,-0.6308181 + parent: 8364 + - uid: 27953 + components: + - type: Transform + pos: 3.0306053,-0.7559052 + parent: 8364 + - uid: 27954 + components: + - type: Transform + pos: -4.0666656,-0.7890227 + parent: 8364 + - uid: 27958 + components: + - type: Transform + pos: 22.963808,-6.725461 + parent: 8364 + - uid: 27959 + components: + - type: Transform + pos: 25.058596,-5.182723 + parent: 8364 + - uid: 27960 + components: + - type: Transform + pos: 32.503265,0.5198436 + parent: 8364 + - uid: 27961 + components: + - type: Transform + pos: 22.53134,3.5313096 + parent: 8364 + - uid: 27962 + components: + - type: Transform + pos: 22.447966,5.511852 + parent: 8364 + - uid: 27963 + components: + - type: Transform + pos: 16.499254,3.47919 + parent: 8364 + - uid: 27964 + components: + - type: Transform + pos: 20.503527,-21.487644 + parent: 8364 + - uid: 27965 + components: + - type: Transform + pos: 31.480825,-36.348404 + parent: 8364 + - uid: 27966 + components: + - type: Transform + pos: 36.913406,-40.32521 + parent: 8364 + - uid: 27975 + components: + - type: Transform + pos: 9.498493,-13.259819 + parent: 8364 + - uid: 27976 + components: + - type: Transform + pos: 2.4861767,-35.38526 + parent: 8364 + - uid: 27977 + components: + - type: Transform + pos: 12.474101,-36.469345 + parent: 8364 + - uid: 27978 + components: + - type: Transform + pos: 80.45666,-45.398308 + parent: 8364 + - uid: 27979 + components: + - type: Transform + pos: 69.48871,-34.98652 + parent: 8364 + - uid: 27980 + components: + - type: Transform + pos: 62.51061,-7.3934164 + parent: 8364 + - uid: 27981 + components: + - type: Transform + pos: 64.48113,0.57479143 + parent: 8364 + - uid: 27982 + components: + - type: Transform + pos: 50.484615,16.468405 + parent: 8364 + - uid: 27983 + components: + - type: Transform + pos: 86.52836,-53.49038 + parent: 8364 + - uid: 27984 + components: + - type: Transform + pos: -4.484927,-62.871216 + parent: 8364 + - uid: 27985 + components: + - type: Transform + pos: -25.009478,-53.96871 + parent: 8364 + - uid: 27986 + components: + - type: Transform + pos: -10.81077,-27.308935 + parent: 8364 + - uid: 27987 + components: + - type: Transform + pos: -12.467842,-22.511818 + parent: 8364 + - uid: 27988 + components: + - type: Transform + pos: -33.589916,-27.340237 + parent: 8364 + - uid: 27989 + components: + - type: Transform + pos: -32.51471,-14.456967 + parent: 8364 + - uid: 27990 + components: + - type: Transform + pos: -48.52473,-10.569237 + parent: 8364 + - uid: 27991 + components: + - type: Transform + pos: -60.55439,-1.4672434 + parent: 8364 + - uid: 27992 + components: + - type: Transform + pos: 25.485146,18.46381 + parent: 8364 + - uid: 27993 + components: + - type: Transform + pos: 46.464687,-4.5213356 + parent: 8364 + - uid: 27994 + components: + - type: Transform + pos: 37.468975,-6.501878 + parent: 8364 + - uid: 27995 + components: + - type: Transform + pos: 28.470734,-110.599205 + parent: 8364 + - uid: 28021 + components: + - type: Transform + pos: -39.508694,1.5123675 + parent: 8364 + - uid: 28069 + components: + - type: Transform + pos: 68.485176,-66.456276 + parent: 8364 + - uid: 28070 + components: + - type: Transform + pos: -25.506132,-34.44175 + parent: 8364 +- proto: PresentRandomAsh + entities: + - uid: 27950 + components: + - type: Transform + pos: -3.764432,0.02581346 + parent: 8364 + - uid: 27951 + components: + - type: Transform + pos: 4.2812257,-0.64131606 + parent: 8364 + - uid: 27956 + components: + - type: Transform + pos: 22.70326,-5.73519 + parent: 8364 + - uid: 27957 + components: + - type: Transform + pos: 25.089863,-6.527406 + parent: 8364 + - uid: 28024 + components: + - type: Transform + pos: 2.4670389,22.582647 + parent: 8364 - proto: Protolathe entities: - uid: 17802 @@ -154433,16 +155292,6 @@ entities: - type: Transform pos: 64.5,-50.5 parent: 8364 - - uid: 2044 - components: - - type: Transform - pos: 58.5,-36.5 - parent: 8364 - - uid: 2045 - components: - - type: Transform - pos: 58.5,-35.5 - parent: 8364 - uid: 2046 components: - type: Transform @@ -162193,6 +163042,12 @@ entities: - type: Transform pos: 83.5,-49.5 parent: 8364 + - uid: 19836 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 58.5,-35.5 + parent: 8364 - uid: 19858 components: - type: Transform @@ -162273,6 +163128,12 @@ entities: - type: Transform pos: 17.5,-53.5 parent: 8364 + - uid: 20302 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 58.5,-36.5 + parent: 8364 - uid: 21284 components: - type: Transform From f071bf65e0c49759b9321ba565660ce474d8b8f2 Mon Sep 17 00:00:00 2001 From: Southbridge <7013162+southbridge-fur@users.noreply.github.com> Date: Sat, 16 Nov 2024 01:35:23 -0500 Subject: [PATCH 122/187] Marathon holiday update (#33335) * Added holiday decorations, and modified emergency lights to have a better layout. * Added a couple more emergency lights after finding a couple spots that were wway too dark during testing, also gave the warden a crew monitor --- Resources/Maps/marathon.yml | 992 ++++++++++++++++++++++++++++-------- 1 file changed, 791 insertions(+), 201 deletions(-) diff --git a/Resources/Maps/marathon.yml b/Resources/Maps/marathon.yml index 1f1632004b7..93cb4055940 100644 --- a/Resources/Maps/marathon.yml +++ b/Resources/Maps/marathon.yml @@ -2562,7 +2562,6 @@ entities: color: '#334E6DC8' id: HalfTileOverlayGreyscale decals: - 392: -10,27 393: -9,27 394: -11,27 395: -8,27 @@ -2574,6 +2573,8 @@ entities: 898: -1,66 1422: -3,27 1424: -17,27 + 3122: -10,27 + 3125: -10,26 - node: color: '#33666DC8' id: HalfTileOverlayGreyscale @@ -3308,6 +3309,7 @@ entities: 1502: -16,41 1503: -16,40 1504: -16,39 + 3127: -9,26 - node: color: '#52B4E996' id: QuarterTileOverlayGreyscale @@ -3537,6 +3539,7 @@ entities: 2386: 11,38 2387: 12,38 2388: 12,39 + 3123: -11,27 - node: color: '#52B4E996' id: QuarterTileOverlayGreyscale180 @@ -3768,6 +3771,7 @@ entities: 2383: 5,38 2384: 6,38 2385: 7,38 + 3124: -9,27 - node: color: '#52B4E996' id: QuarterTileOverlayGreyscale270 @@ -3975,6 +3979,7 @@ entities: 1510: -22,27 1511: -23,27 1512: -24,27 + 3126: -11,26 - node: color: '#52B4E957' id: QuarterTileOverlayGreyscale90 @@ -5104,6 +5109,12 @@ entities: id: bushsnowb3 decals: 1461: -9,41 + - node: + angle: 1.5707963267948966 rad + color: '#FFFFFFFF' + id: grasssnow + decals: + 3128: -9.993465,26.89989 - type: GridAtmosphere version: 2 data: @@ -12171,8 +12182,6 @@ entities: rot: 3.141592653589793 rad pos: -24.5,-6.5 parent: 30 - - type: Apc - hasAccess: True - uid: 7079 components: - type: MetaData @@ -12196,8 +12205,6 @@ entities: - type: Transform pos: -21.5,-6.5 parent: 30 - - type: Apc - hasAccess: True - uid: 7433 components: - type: MetaData @@ -12214,8 +12221,6 @@ entities: rot: 3.141592653589793 rad pos: -31.5,-14.5 parent: 30 - - type: Apc - hasAccess: True - uid: 7610 components: - type: MetaData @@ -13297,6 +13302,11 @@ entities: - type: Transform pos: 27.5,-34.5 parent: 30 + - uid: 22584 + components: + - type: Transform + pos: 49.5,44.5 + parent: 30 - proto: AtmosFixFreezerMarker entities: - uid: 9178 @@ -43380,56 +43390,49 @@ entities: parent: 30 - proto: Carpet entities: - - uid: 626 - components: - - type: Transform - pos: 0.5,8.5 - parent: 30 - - uid: 627 + - uid: 558 components: - type: Transform - pos: 0.5,9.5 + rot: 3.141592653589793 rad + pos: 1.5,9.5 parent: 30 - - uid: 628 + - uid: 559 components: - type: Transform - pos: -0.5,9.5 + rot: 3.141592653589793 rad + pos: 1.5,8.5 parent: 30 - - uid: 629 + - uid: 560 components: - type: Transform - pos: -0.5,8.5 + rot: 3.141592653589793 rad + pos: -4.5,8.5 parent: 30 - - uid: 630 + - uid: 626 components: - type: Transform - pos: -1.5,8.5 + pos: 0.5,8.5 parent: 30 - - uid: 631 + - uid: 627 components: - type: Transform - pos: -1.5,9.5 + pos: 0.5,9.5 parent: 30 - - uid: 632 + - uid: 628 components: - type: Transform - pos: -3.5,8.5 + pos: -0.5,9.5 parent: 30 - - uid: 633 + - uid: 629 components: - type: Transform - pos: -3.5,9.5 + pos: -0.5,8.5 parent: 30 - uid: 634 components: - type: Transform pos: -4.5,9.5 parent: 30 - - uid: 635 - components: - - type: Transform - pos: -4.5,8.5 - parent: 30 - uid: 636 components: - type: Transform @@ -44019,6 +44022,16 @@ entities: - type: Transform pos: 38.5,38.5 parent: 30 + - uid: 22594 + components: + - type: Transform + pos: -6.5,9.5 + parent: 30 + - uid: 22595 + components: + - type: Transform + pos: -6.5,8.5 + parent: 30 - proto: CarpetBlack entities: - uid: 17600 @@ -49527,53 +49540,23 @@ entities: parent: 30 - proto: ChairWood entities: - - uid: 562 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,8.5 - parent: 30 - - uid: 563 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,9.5 - parent: 30 - - uid: 564 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -3.5,9.5 - parent: 30 - uid: 565 components: - type: Transform rot: -1.5707963267948966 rad - pos: -3.5,8.5 + pos: -4.6988,9.612039 parent: 30 - uid: 566 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,8.5 - parent: 30 - - uid: 567 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,9.5 - parent: 30 - - uid: 568 components: - type: Transform rot: -1.5707963267948966 rad - pos: 0.5,9.5 + pos: -4.6779566,8.5487995 parent: 30 - - uid: 569 + - uid: 568 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,8.5 + rot: 1.5707963267948966 rad + pos: -0.2799418,8.559224 parent: 30 - uid: 573 components: @@ -49910,6 +49893,24 @@ entities: rot: 1.5707963267948966 rad pos: -29.5,-47.5 parent: 30 + - uid: 21379 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 1.5,9.5 + parent: 30 + - uid: 21390 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 1.5,8.5 + parent: 30 + - uid: 21438 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.31120706,9.570343 + parent: 30 - uid: 21518 components: - type: Transform @@ -49934,6 +49935,18 @@ entities: rot: 1.5707963267948966 rad pos: 36.5,38.5 parent: 30 + - uid: 22596 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -6.5,8.5 + parent: 30 + - uid: 22597 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -6.5,9.5 + parent: 30 - proto: ChanterelleSeeds entities: - uid: 10418 @@ -51590,14 +51603,14 @@ entities: - uid: 2163 components: - type: Transform - pos: -31.648214,58.59028 + pos: -31.402626,58.62358 parent: 30 - proto: ClothingBeltSecurityWebbing entities: - uid: 2164 components: - type: Transform - pos: -32.460716,58.62153 + pos: -31.828863,58.459854 parent: 30 - proto: ClothingBeltUtilityEngineering entities: @@ -52017,6 +52030,48 @@ entities: - type: Transform pos: 19.385248,46.62064 parent: 30 +- proto: ClothingHeadHatSantahat + entities: + - uid: 22647 + components: + - type: Transform + pos: -28.484512,57.810516 + parent: 30 + - uid: 22651 + components: + - type: Transform + pos: -32.318687,58.626637 + parent: 30 + - uid: 22652 + components: + - type: Transform + pos: -32.611557,58.550613 + parent: 30 + - uid: 22653 + components: + - type: Transform + pos: -32.486496,58.74867 + parent: 30 + - uid: 22655 + components: + - type: Transform + pos: -42.46656,46.8322 + parent: 30 + - uid: 22657 + components: + - type: Transform + pos: -24.439611,51.525856 + parent: 30 + - uid: 22659 + components: + - type: Transform + pos: -33.486233,53.468388 + parent: 30 + - uid: 22661 + components: + - type: Transform + pos: -17.453934,40.800747 + parent: 30 - proto: ClothingHeadHatTophat entities: - uid: 19620 @@ -52479,6 +52534,48 @@ entities: - type: Transform pos: -75.60953,-47.39969 parent: 30 +- proto: ClothingOuterSanta + entities: + - uid: 22646 + components: + - type: Transform + pos: -28.5262,57.539494 + parent: 30 + - uid: 22648 + components: + - type: Transform + pos: -33.559944,58.70697 + parent: 30 + - uid: 22649 + components: + - type: Transform + pos: -33.330666,58.70697 + parent: 30 + - uid: 22650 + components: + - type: Transform + pos: -33.13159,58.72045 + parent: 30 + - uid: 22654 + components: + - type: Transform + pos: -42.52909,46.582027 + parent: 30 + - uid: 22656 + components: + - type: Transform + pos: -24.470877,50.60855 + parent: 30 + - uid: 22658 + components: + - type: Transform + pos: -32.50658,53.572628 + parent: 30 + - uid: 22660 + components: + - type: Transform + pos: -17.485199,40.560997 + parent: 30 - proto: ClothingOuterSuitChicken entities: - uid: 16151 @@ -53250,6 +53347,12 @@ entities: rot: 3.141592653589793 rad pos: -43.5,29.5 parent: 30 + - uid: 2016 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -41.5,46.5 + parent: 30 - uid: 2129 components: - type: Transform @@ -53357,12 +53460,6 @@ entities: parent: 30 - proto: ComputerMedicalRecords entities: - - uid: 2016 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -41.5,46.5 - parent: 30 - uid: 5801 components: - type: Transform @@ -60846,22 +60943,52 @@ entities: parent: 30 - proto: EmergencyLight entities: + - uid: 631 + components: + - type: Transform + pos: -17.5,-0.5 + parent: 30 + - uid: 632 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -4.5,0.5 + parent: 30 + - uid: 633 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -44.5,-15.5 + parent: 30 + - uid: 635 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -20.5,-44.5 + parent: 30 + - uid: 2233 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,-41.5 + parent: 30 + - uid: 2234 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -45.5,63.5 + parent: 30 - uid: 19589 components: - type: Transform - pos: -8.5,4.5 + rot: 3.141592653589793 rad + pos: -32.5,56.5 parent: 30 - - type: PointLight - enabled: True - - type: ActiveEmergencyLight - uid: 19637 components: - type: Transform - pos: 3.5,4.5 + pos: -51.5,36.5 parent: 30 - - type: PointLight - enabled: True - - type: ActiveEmergencyLight - uid: 19654 components: - type: Transform @@ -60883,29 +61010,20 @@ entities: - uid: 19661 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -46.5,-18.5 + pos: -53.5,-8.5 parent: 30 - - type: PointLight - enabled: True - - type: ActiveEmergencyLight - uid: 19678 components: - type: Transform rot: 3.141592653589793 rad - pos: -55.5,15.5 + pos: 34.5,-7.5 parent: 30 - - type: PointLight - enabled: True - - type: ActiveEmergencyLight - uid: 19679 components: - type: Transform - pos: -51.5,21.5 + rot: 3.141592653589793 rad + pos: 4.5,-20.5 parent: 30 - - type: PointLight - enabled: True - - type: ActiveEmergencyLight - uid: 19681 components: - type: Transform @@ -60928,20 +61046,14 @@ entities: components: - type: Transform rot: 1.5707963267948966 rad - pos: -35.5,49.5 + pos: 3.5,-5.5 parent: 30 - - type: PointLight - enabled: True - - type: ActiveEmergencyLight - uid: 19836 components: - type: Transform rot: -1.5707963267948966 rad - pos: -46.5,47.5 + pos: 25.5,21.5 parent: 30 - - type: PointLight - enabled: True - - type: ActiveEmergencyLight - uid: 19840 components: - type: Transform @@ -60972,11 +61084,8 @@ entities: components: - type: Transform rot: 3.141592653589793 rad - pos: -40.5,35.5 + pos: 38.5,7.5 parent: 30 - - type: PointLight - enabled: True - - type: ActiveEmergencyLight - uid: 20373 components: - type: Transform @@ -60998,11 +61107,9 @@ entities: - uid: 20375 components: - type: Transform - pos: -53.5,10.5 + rot: 3.141592653589793 rad + pos: -9.5,31.5 parent: 30 - - type: PointLight - enabled: True - - type: ActiveEmergencyLight - uid: 21203 components: - type: Transform @@ -61023,11 +61130,9 @@ entities: - uid: 21205 components: - type: Transform - pos: 32.5,-1.5 + rot: 3.141592653589793 rad + pos: -34.5,46.5 parent: 30 - - type: PointLight - enabled: True - - type: ActiveEmergencyLight - uid: 21215 components: - type: Transform @@ -61037,6 +61142,12 @@ entities: - type: PointLight enabled: True - type: ActiveEmergencyLight + - uid: 21236 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 8.5,31.5 + parent: 30 - uid: 21331 components: - type: Transform @@ -61058,124 +61169,324 @@ entities: - uid: 21375 components: - type: Transform - pos: 2.5,-18.5 + pos: 2.5,29.5 parent: 30 - - type: PointLight - enabled: True - - type: ActiveEmergencyLight - - uid: 21378 + - uid: 21380 components: - type: Transform rot: 1.5707963267948966 rad - pos: 8.5,16.5 + pos: -65.5,-42.5 parent: 30 - - type: PointLight - enabled: True - - type: ActiveEmergencyLight - - uid: 21379 + - uid: 21382 components: - type: Transform rot: 3.141592653589793 rad - pos: 24.5,18.5 + pos: 41.5,32.5 + parent: 30 + - uid: 21385 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -15.5,31.5 parent: 30 - type: PointLight enabled: True - type: ActiveEmergencyLight - - uid: 21380 + - uid: 21386 components: - type: Transform rot: -1.5707963267948966 rad - pos: 40.5,8.5 + pos: -3.5,31.5 parent: 30 - type: PointLight enabled: True - type: ActiveEmergencyLight - - uid: 21382 + - uid: 21388 components: - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,25.5 + pos: -20.5,37.5 parent: 30 - type: PointLight enabled: True - type: ActiveEmergencyLight - - uid: 21385 + - uid: 21391 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -15.5,31.5 + pos: 37.5,41.5 parent: 30 - type: PointLight enabled: True - type: ActiveEmergencyLight - - uid: 21386 + - uid: 21437 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -3.5,31.5 + rot: 3.141592653589793 rad + pos: 25.5,33.5 parent: 30 - type: PointLight enabled: True - type: ActiveEmergencyLight - - uid: 21387 + - uid: 22557 components: - type: Transform rot: 1.5707963267948966 rad - pos: -12.5,34.5 + pos: -68.5,-55.5 parent: 30 - - type: PointLight - enabled: True - - type: ActiveEmergencyLight - - uid: 21388 + - uid: 22558 components: - type: Transform - pos: -20.5,37.5 + rot: -1.5707963267948966 rad + pos: -5.5,-28.5 parent: 30 - - type: PointLight - enabled: True - - type: ActiveEmergencyLight - - uid: 21389 + - uid: 22559 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -55.5,-53.5 + parent: 30 + - uid: 22560 + components: + - type: Transform + pos: -0.5,-27.5 + parent: 30 + - uid: 22561 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,-35.5 + parent: 30 + - uid: 22562 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,42.5 + parent: 30 + - uid: 22563 components: - type: Transform rot: 3.141592653589793 rad - pos: -23.5,48.5 + pos: -19.5,1.5 parent: 30 - - type: PointLight - enabled: True - - type: ActiveEmergencyLight - - uid: 21390 + - uid: 22564 components: - type: Transform - pos: 6.5,39.5 + rot: 3.141592653589793 rad + pos: -42.5,5.5 parent: 30 - - type: PointLight - enabled: True - - type: ActiveEmergencyLight - - uid: 21391 + - uid: 22565 components: - type: Transform - pos: 37.5,41.5 + rot: -1.5707963267948966 rad + pos: -43.5,-5.5 parent: 30 - - type: PointLight - enabled: True - - type: ActiveEmergencyLight - - uid: 21437 + - uid: 22566 components: - type: Transform rot: 3.141592653589793 rad - pos: 25.5,33.5 + pos: -53.5,7.5 parent: 30 - - type: PointLight - enabled: True - - type: ActiveEmergencyLight - - uid: 21438 + - uid: 22567 components: - type: Transform - pos: 19.5,27.5 + rot: -1.5707963267948966 rad + pos: -11.5,-5.5 + parent: 30 + - uid: 22568 + components: + - type: Transform + pos: -20.5,-7.5 + parent: 30 + - uid: 22569 + components: + - type: Transform + pos: -0.5,-43.5 + parent: 30 + - uid: 22570 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 21.5,-8.5 + parent: 30 + - uid: 22571 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 10.5,13.5 + parent: 30 + - uid: 22572 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 12.5,20.5 + parent: 30 + - uid: 22573 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 33.5,12.5 + parent: 30 + - uid: 22574 + components: + - type: Transform + pos: 8.5,39.5 + parent: 30 + - uid: 22575 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 5.5,20.5 + parent: 30 + - uid: 22576 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,19.5 + parent: 30 + - uid: 22577 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -17.5,25.5 + parent: 30 + - uid: 22578 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -34.5,31.5 + parent: 30 + - uid: 22579 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -43.5,35.5 + parent: 30 + - uid: 22580 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -31.5,-7.5 + parent: 30 + - uid: 22581 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -51.5,15.5 + parent: 30 + - uid: 22582 + components: + - type: Transform + pos: -55.5,21.5 + parent: 30 + - uid: 22583 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -7.5,-12.5 + parent: 30 + - uid: 22585 + components: + - type: Transform + pos: 0.5,66.5 + parent: 30 + - uid: 22586 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -36.5,39.5 + parent: 30 + - uid: 22587 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -26.5,49.5 + parent: 30 + - uid: 22588 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 3.5,84.5 + parent: 30 + - uid: 22589 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,82.5 + parent: 30 + - uid: 22590 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -49.5,56.5 + parent: 30 + - uid: 22591 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -48.5,47.5 + parent: 30 + - uid: 22592 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -43.5,13.5 + parent: 30 + - uid: 22593 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 20.5,25.5 + parent: 30 + - uid: 22663 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 9.5,1.5 + parent: 30 + - uid: 22664 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 10.5,-11.5 + parent: 30 + - uid: 22665 + components: + - type: Transform + pos: 3.5,8.5 + parent: 30 + - uid: 22666 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -30.5,-15.5 + parent: 30 + - uid: 22667 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -20.5,-17.5 + parent: 30 + - uid: 22668 + components: + - type: Transform + pos: 13.5,-31.5 + parent: 30 + - uid: 22669 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -5.5,25.5 + parent: 30 + - uid: 22670 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 26.5,7.5 + parent: 30 + - uid: 22671 + components: + - type: Transform + pos: 19.5,15.5 parent: 30 - - type: PointLight - enabled: True - - type: ActiveEmergencyLight - proto: EmergencyMedipen entities: - uid: 696 @@ -64455,6 +64766,21 @@ entities: - type: Transform pos: -72.29823,-43.406895 parent: 30 +- proto: FloraTreeChristmas01 + entities: + - uid: 22603 + components: + - type: Transform + pos: -9.5,27.5 + parent: 30 +- proto: FloraTreeChristmas02 + entities: + - uid: 567 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,8.5 + parent: 30 - proto: FloraTreeLarge03 entities: - uid: 22215 @@ -64561,6 +64887,14 @@ entities: - type: Transform pos: -11.54011,18.632044 parent: 30 +- proto: FoodCakeChristmas + entities: + - uid: 561 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 0.5,9.5 + parent: 30 - proto: FoodCartCold entities: - uid: 4453 @@ -101548,7 +101882,7 @@ entities: - uid: 11630 components: - type: Transform - pos: 25.544401,1.679924 + pos: 25.534836,1.7037914 parent: 30 - uid: 11631 components: @@ -107221,6 +107555,267 @@ entities: - type: Transform pos: -42.5,22.5 parent: 30 +- proto: Present + entities: + - uid: 562 + components: + - type: Transform + pos: -2.924169,7.831236 + parent: 30 + - uid: 22606 + components: + - type: Transform + pos: -8.5774555,27.51071 + parent: 30 + - uid: 22607 + components: + - type: Transform + pos: -10.536761,27.687916 + parent: 30 + - uid: 22608 + components: + - type: Transform + pos: -1.4184723,9.5061245 + parent: 30 + - uid: 22627 + components: + - type: Transform + pos: 5.512489,44.484703 + parent: 30 + - uid: 22630 + components: + - type: Transform + pos: 24.481426,36.721195 + parent: 30 + - uid: 22634 + components: + - type: Transform + pos: 4.0067887,-15.3338375 + parent: 30 + - uid: 22662 + components: + - type: Transform + pos: -54.520042,21.45148 + parent: 30 +- proto: PresentRandom + entities: + - uid: 21378 + components: + - type: Transform + pos: -1.579752,8.102257 + parent: 30 + - uid: 21387 + components: + - type: Transform + pos: 26.520187,2.4394562 + parent: 30 + - uid: 21389 + components: + - type: Transform + pos: -3.309777,10.009832 + parent: 30 + - uid: 22556 + components: + - type: Transform + pos: -17.514753,-67.4598 + parent: 30 + - uid: 22598 + components: + - type: Transform + pos: -33.75367,-16.76977 + parent: 30 + - uid: 22599 + components: + - type: Transform + pos: -27.60882,15.614613 + parent: 30 + - uid: 22600 + components: + - type: Transform + pos: -15.4604845,7.6557884 + parent: 30 + - uid: 22601 + components: + - type: Transform + pos: -11.584989,19.223238 + parent: 30 + - uid: 22602 + components: + - type: Transform + pos: 4.947539,34.155647 + parent: 30 + - uid: 22604 + components: + - type: Transform + pos: -10.067778,27.01036 + parent: 30 + - uid: 22610 + components: + - type: Transform + pos: -31.492609,7.4731913 + parent: 30 + - uid: 22611 + components: + - type: Transform + pos: -15.973673,-20.486454 + parent: 30 + - uid: 22612 + components: + - type: Transform + pos: 9.520328,-26.347212 + parent: 30 + - uid: 22613 + components: + - type: Transform + pos: -8.403212,-35.379116 + parent: 30 + - uid: 22614 + components: + - type: Transform + pos: -21.542952,-40.416473 + parent: 30 + - uid: 22615 + components: + - type: Transform + pos: -65.506134,-64.19724 + parent: 30 + - uid: 22616 + components: + - type: Transform + pos: -82.53097,-45.40445 + parent: 30 + - uid: 22618 + components: + - type: Transform + pos: 5.5226407,14.507042 + parent: 30 + - uid: 22619 + components: + - type: Transform + pos: 3.4884644,13.558466 + parent: 30 + - uid: 22620 + components: + - type: Transform + pos: 28.505388,-7.37985 + parent: 30 + - uid: 22621 + components: + - type: Transform + pos: -31.008707,51.68482 + parent: 30 + - uid: 22622 + components: + - type: Transform + pos: -44.68347,46.525394 + parent: 30 + - uid: 22623 + components: + - type: Transform + pos: -23.316933,50.046917 + parent: 30 + - uid: 22624 + components: + - type: Transform + pos: -48.52359,29.68323 + parent: 30 + - uid: 22625 + components: + - type: Transform + pos: -59.50853,44.673046 + parent: 30 + - uid: 22626 + components: + - type: Transform + pos: -0.5203595,35.391735 + parent: 30 + - uid: 22628 + components: + - type: Transform + pos: 6.134218,44.232304 + parent: 30 + - uid: 22629 + components: + - type: Transform + pos: 4.831488,44.19061 + parent: 30 + - uid: 22631 + components: + - type: Transform + pos: 29.476475,27.5537 + parent: 30 + - uid: 22632 + components: + - type: Transform + pos: 27.515238,14.783981 + parent: 30 + - uid: 22633 + components: + - type: Transform + pos: 23.429405,13.939615 + parent: 30 + - uid: 22635 + components: + - type: Transform + pos: 46.497482,36.618343 + parent: 30 + - uid: 22636 + components: + - type: Transform + pos: 15.359613,60.611412 + parent: 30 + - uid: 22637 + components: + - type: Transform + pos: -8.331337,35.65068 + parent: 30 + - uid: 22638 + components: + - type: Transform + pos: -20.475868,30.629063 + parent: 30 + - uid: 22639 + components: + - type: Transform + pos: -29.246494,33.607082 + parent: 30 + - uid: 22640 + components: + - type: Transform + pos: -39.495163,3.4868627 + parent: 30 + - uid: 22641 + components: + - type: Transform + pos: -37.349785,-33.908993 + parent: 30 + - uid: 22642 + components: + - type: Transform + pos: -42.496124,32.501785 + parent: 30 + - uid: 22643 + components: + - type: Transform + pos: -0.48171067,83.517715 + parent: 30 + - uid: 22644 + components: + - type: Transform + pos: -23.524483,-4.499471 + parent: 30 + - uid: 22645 + components: + - type: Transform + pos: 35.999138,0.3531096 + parent: 30 +- proto: PresentRandomAsh + entities: + - uid: 22609 + components: + - type: Transform + pos: -3.6431541,8.850039 + parent: 30 - proto: Protolathe entities: - uid: 12864 @@ -107753,6 +108348,13 @@ entities: - type: Transform pos: 7.5,-8.5 parent: 30 +- proto: RailingRound + entities: + - uid: 22605 + components: + - type: Transform + pos: -9.5,27.5 + parent: 30 - proto: RandomArtifactSpawner entities: - uid: 10151 @@ -107811,15 +108413,10 @@ entities: parent: 30 - proto: RandomFoodSingle entities: - - uid: 2233 - components: - - type: Transform - pos: -4.5,9.5 - parent: 30 - - uid: 2234 + - uid: 22617 components: - type: Transform - pos: -0.5,8.5 + pos: -5.5,8.5 parent: 30 - proto: RandomInstruments entities: @@ -119283,17 +119880,6 @@ entities: - SurveillanceCameraGeneral nameSet: True id: Chapelroid Hall - - uid: 21236 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -44.5,2.5 - parent: 30 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraGeneral - nameSet: True - id: Arrivals - uid: 21237 components: - type: Transform @@ -122395,30 +122981,34 @@ entities: - type: Transform pos: 2.5,9.5 parent: 30 - - uid: 558 + - uid: 563 components: - type: Transform - pos: -4.5,8.5 + rot: 1.5707963267948966 rad + pos: -5.5,9.5 parent: 30 - - uid: 559 + - uid: 564 components: - type: Transform - pos: -4.5,9.5 + rot: 1.5707963267948966 rad + pos: -5.5,8.5 parent: 30 - - uid: 560 + - uid: 569 components: - type: Transform - pos: -0.5,8.5 + rot: 3.141592653589793 rad + pos: 0.5,8.5 parent: 30 - - uid: 561 + - uid: 572 components: - type: Transform - pos: -0.5,9.5 + pos: 39.5,40.5 parent: 30 - - uid: 572 + - uid: 630 components: - type: Transform - pos: 39.5,40.5 + rot: 3.141592653589793 rad + pos: 0.5,9.5 parent: 30 - uid: 656 components: From bdab41248d94c9e65e0114cf5d0485c93924401e Mon Sep 17 00:00:00 2001 From: Emisse <99158783+Emisse@users.noreply.github.com> Date: Sat, 16 Nov 2024 01:42:33 -0700 Subject: [PATCH 123/187] bagel christmas update (#33347) --- Resources/Maps/bagel.yml | 509 ++++++++++++++++++++++++++++++--------- 1 file changed, 391 insertions(+), 118 deletions(-) diff --git a/Resources/Maps/bagel.yml b/Resources/Maps/bagel.yml index 764c03b71bc..3c858a4ff93 100644 --- a/Resources/Maps/bagel.yml +++ b/Resources/Maps/bagel.yml @@ -665,7 +665,6 @@ entities: 1325: 54,12 1326: 53,12 1327: 52,12 - 1374: 6,-20 1486: 30,-23 1516: -48,16 1517: -47,17 @@ -733,6 +732,7 @@ entities: 3954: 13,-14 3979: -56,13 3980: -54,13 + 4774: 6,-20 - node: cleanable: True color: '#FFFFFFFF' @@ -2224,6 +2224,22 @@ entities: 3652: 23,-38 3653: 23,-37 3654: 23,-39 + - node: + color: '#DE3A3A96' + id: CheckerNESW + decals: + 4750: 6,-22 + 4751: 6,-21 + 4752: 6,-20 + 4753: 7,-20 + 4754: 8,-20 + 4755: 9,-20 + 4756: 9,-21 + 4757: 9,-22 + 4758: 8,-22 + 4759: 7,-22 + 4760: 7,-21 + 4761: 8,-21 - node: color: '#334E6DC8' id: CheckerNWSE @@ -2236,6 +2252,22 @@ entities: 620: -68,17 621: -69,17 622: -62,17 + - node: + color: '#43990996' + id: CheckerNWSE + decals: + 4762: 6,-22 + 4763: 6,-21 + 4764: 6,-20 + 4765: 7,-20 + 4766: 7,-21 + 4767: 7,-22 + 4768: 8,-22 + 4769: 8,-21 + 4770: 8,-20 + 4771: 9,-20 + 4772: 9,-21 + 4773: 9,-22 - node: color: '#52B4E996' id: CheckerNWSE @@ -2833,6 +2865,7 @@ entities: 3856: -11,-14 3947: 13,-14 3948: 12,-11 + 4778: 9,-22 - node: color: '#FFFFFFFF' id: DirtLight @@ -2955,11 +2988,6 @@ entities: 830: -8,-25 835: -4,-24 836: -1,-25 - 837: 7,-21 - 889: 7,-20 - 890: 8,-20 - 891: 9,-20 - 892: 9,-21 893: 10,-23 895: -6,-23 896: -25,-23 @@ -2996,7 +3024,6 @@ entities: 1172: 5,8 1173: -7,9 1174: -8,8 - 1213: 7,-22 1214: 5,-23 1215: 4,-23 1216: 7,-24 @@ -3190,6 +3217,9 @@ entities: 4668: 16,-25 4669: 13,-25 4670: 12,-23 + 4775: 6,-22 + 4776: 9,-21 + 4777: 9,-20 - node: angle: 3.141592653589793 rad color: '#FFFFFFFF' @@ -3243,7 +3273,6 @@ entities: 690: -16,6 833: -3,-25 834: -6,-25 - 1212: 6,-22 1985: -40,-8 2215: 0,13 2216: -1,14 @@ -3278,6 +3307,7 @@ entities: 4630: -28,-19 4658: 17,-16 4659: 17,-15 + 4779: 6,-20 - node: angle: 3.141592653589793 rad color: '#FFFFFFFF' @@ -4057,6 +4087,23 @@ entities: 886: -1,-12 887: -1,-11 888: -1,-10 + - node: + color: '#43990996' + id: QuarterTileOverlayGreyscale + decals: + 4685: 6,-23 + 4686: 7,-23 + 4687: 8,-23 + 4688: 9,-23 + 4689: 5,-23 + 4690: 4,-23 + 4691: 3,-23 + 4692: 10,-23 + 4693: 11,-23 + 4694: 12,-23 + 4695: 13,-23 + 4696: 14,-23 + 4697: 15,-23 - node: color: '#52B4E92E' id: QuarterTileOverlayGreyscale @@ -4173,12 +4220,6 @@ entities: 1183: -17,19 1184: -17,20 1185: -17,21 - 1364: 6,-22 - 1365: 6,-21 - 1366: 6,-20 - 1367: 7,-20 - 1368: 8,-20 - 1369: 9,-20 1370: 6,-23 1371: 5,-23 1372: 4,-23 @@ -4352,6 +4393,18 @@ entities: 662: -17,-6 698: -18,1 699: -18,2 + 4813: 29,-23 + 4814: 28,-23 + 4815: 27,-23 + 4816: 26,-23 + 4817: 25,-23 + 4818: 24,-23 + 4819: 23,-23 + 4820: 22,-23 + 4821: 21,-23 + 4822: 20,-23 + 4823: 19,-23 + 4824: 18,-23 - node: color: '#EFCC4196' id: QuarterTileOverlayGreyscale @@ -4395,6 +4448,26 @@ entities: 3886: -29,30 3887: -30,30 3888: -31,30 + - node: + color: '#43990996' + id: QuarterTileOverlayGreyscale180 + decals: + 4718: 17,-25 + 4720: 19,-25 + 4721: 20,-25 + 4723: 21,-25 + 4724: 22,-25 + 4725: 23,-25 + 4726: 24,-25 + 4727: 25,-25 + 4728: 26,-25 + 4729: 27,-25 + 4730: 28,-25 + 4731: 29,-25 + 4732: 30,-25 + 4733: 31,-25 + 4734: 32,-25 + 4826: 18,-25 - node: color: '#52B4E92E' id: QuarterTileOverlayGreyscale180 @@ -4482,9 +4555,6 @@ entities: 1448: -32,7 1449: -33,7 1450: -34,7 - 1465: 9,-20 - 1466: 9,-21 - 1467: 9,-22 1494: -14,-2 1495: -15,-2 1496: -15,-3 @@ -4598,6 +4668,16 @@ entities: 4470: 36,50 4521: 44,20 4522: 45,20 + - node: + color: '#DE3A3A96' + id: QuarterTileOverlayGreyscale180 + decals: + 4792: 14,-25 + 4793: 13,-25 + 4794: 12,-25 + 4795: 11,-25 + 4796: 10,-25 + 4797: 9,-25 - node: color: '#EFB3414A' id: QuarterTileOverlayGreyscale180 @@ -4631,6 +4711,17 @@ entities: 610: -74,16 611: -73,16 612: -72,16 + - node: + color: '#43990996' + id: QuarterTileOverlayGreyscale270 + decals: + 4711: 9,-25 + 4712: 10,-25 + 4713: 11,-25 + 4714: 12,-25 + 4715: 13,-25 + 4716: 14,-25 + 4717: 15,-25 - node: color: '#52B4E92E' id: QuarterTileOverlayGreyscale270 @@ -4855,6 +4946,21 @@ entities: decals: 696: -18,-1 697: -18,0 + 4798: 18,-25 + 4799: 19,-25 + 4800: 20,-25 + 4801: 21,-25 + 4802: 22,-25 + 4803: 23,-25 + 4804: 24,-25 + 4805: 25,-25 + 4806: 26,-25 + 4807: 27,-25 + 4808: 28,-25 + 4809: 29,-25 + 4810: 30,-25 + 4811: 31,-25 + 4812: 32,-25 - node: color: '#EFB3414A' id: QuarterTileOverlayGreyscale270 @@ -4899,6 +5005,23 @@ entities: 874: 1,-19 875: 1,-20 876: 1,-21 + - node: + color: '#43990996' + id: QuarterTileOverlayGreyscale90 + decals: + 4698: 17,-23 + 4700: 19,-23 + 4701: 20,-23 + 4702: 21,-23 + 4703: 22,-23 + 4704: 23,-23 + 4705: 24,-23 + 4706: 25,-23 + 4707: 26,-23 + 4708: 27,-23 + 4709: 28,-23 + 4710: 29,-23 + 4825: 18,-23 - node: color: '#52B4E92E' id: QuarterTileOverlayGreyscale90 @@ -5041,7 +5164,6 @@ entities: 1482: 21,-23 1483: 20,-23 1484: 19,-23 - 1485: 18,-23 1491: -15,1 1492: -15,0 1493: -14,0 @@ -5187,6 +5309,18 @@ entities: 1635: -8,-15 1636: -8,-14 1637: -8,-13 + 4780: 3,-23 + 4781: 4,-23 + 4782: 5,-23 + 4783: 6,-23 + 4784: 7,-23 + 4785: 8,-23 + 4786: 9,-23 + 4787: 10,-23 + 4788: 11,-23 + 4789: 12,-23 + 4790: 13,-23 + 4791: 14,-23 - node: color: '#EFB34160' id: QuarterTileOverlayGreyscale90 @@ -5920,7 +6054,6 @@ entities: 1768: 35,7 1779: 2,-25 1780: -2,-25 - 1781: 18,-25 2543: 39,-35 2994: -41,23 3306: -15,48 @@ -5946,6 +6079,7 @@ entities: 4103: -18,7 4211: -17,32 4243: 38,23 + 4828: 18,-25 - node: color: '#DE3A3A96' id: WarnLineS @@ -6034,7 +6168,6 @@ entities: 1767: 35,9 1777: 2,-23 1778: -2,-23 - 1782: 18,-23 1890: -42,-2 2063: -27,-23 2110: 0,24 @@ -6083,6 +6216,7 @@ entities: 4187: 57,3 4213: -17,34 4244: 38,25 + 4827: 18,-23 - node: angle: -3.141592653589793 rad color: '#FFFFFFFF' @@ -15564,6 +15698,13 @@ entities: - type: Transform pos: 12.5,-25.5 parent: 60 +- proto: BarSpoon + entities: + - uid: 23918 + components: + - type: Transform + pos: 9.20146,-36.4394 + parent: 60 - proto: BaseGasCondenser entities: - uid: 400 @@ -49095,6 +49236,26 @@ entities: - type: Transform pos: -23.5,16.5 parent: 60 + - uid: 23652 + components: + - type: Transform + pos: 8.5,-21.5 + parent: 60 + - uid: 23653 + components: + - type: Transform + pos: 7.5,-20.5 + parent: 60 + - uid: 23914 + components: + - type: Transform + pos: 7.5,-21.5 + parent: 60 + - uid: 23915 + components: + - type: Transform + pos: 8.5,-20.5 + parent: 60 - uid: 24171 components: - type: Transform @@ -49274,6 +49435,31 @@ entities: parent: 60 - proto: CarpetGreen entities: + - uid: 666 + components: + - type: Transform + pos: 20.5,-27.5 + parent: 60 + - uid: 2278 + components: + - type: Transform + pos: 19.5,-26.5 + parent: 60 + - uid: 2569 + components: + - type: Transform + pos: 20.5,-26.5 + parent: 60 + - uid: 2584 + components: + - type: Transform + pos: 19.5,-27.5 + parent: 60 + - uid: 3156 + components: + - type: Transform + pos: 21.5,-26.5 + parent: 60 - uid: 4195 components: - type: Transform @@ -49621,6 +49807,11 @@ entities: - type: Transform pos: 52.5,-44.5 parent: 60 + - uid: 23892 + components: + - type: Transform + pos: 21.5,-27.5 + parent: 60 - proto: CarpetOrange entities: - uid: 1071 @@ -49764,11 +49955,6 @@ entities: - type: Transform pos: -8.5,-12.5 parent: 60 - - uid: 15672 - components: - - type: Transform - pos: 20.5,-28.5 - parent: 60 - uid: 16543 components: - type: Transform @@ -49839,21 +50025,11 @@ entities: - type: Transform pos: 20.5,-30.5 parent: 60 - - uid: 21598 - components: - - type: Transform - pos: 18.5,-28.5 - parent: 60 - uid: 24409 components: - type: Transform pos: 19.5,-31.5 parent: 60 - - uid: 24410 - components: - - type: Transform - pos: 19.5,-28.5 - parent: 60 - uid: 24417 components: - type: Transform @@ -57498,12 +57674,6 @@ entities: rot: -1.5707963267948966 rad pos: -7.5,25.5 parent: 60 - - uid: 14388 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 18.5,-28.5 - parent: 60 - uid: 14389 components: - type: Transform @@ -57639,12 +57809,6 @@ entities: rot: -1.5707963267948966 rad pos: 20.5,-29.5 parent: 60 - - uid: 24414 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 20.5,-28.5 - parent: 60 - proto: CheapLighter entities: - uid: 24688 @@ -59916,6 +60080,46 @@ entities: - type: Transform pos: -15.664602,-30.50866 parent: 60 + - uid: 23905 + components: + - type: Transform + pos: -27.341524,-2.4224424 + parent: 60 + - uid: 23906 + components: + - type: Transform + pos: -27.341524,-2.4224424 + parent: 60 + - uid: 23907 + components: + - type: Transform + pos: -27.341524,-2.4224424 + parent: 60 + - uid: 23908 + components: + - type: Transform + pos: -27.341524,-2.4224424 + parent: 60 + - uid: 23909 + components: + - type: Transform + pos: -27.341524,-2.4224424 + parent: 60 + - uid: 23910 + components: + - type: Transform + pos: -27.341524,-2.4224424 + parent: 60 + - uid: 23911 + components: + - type: Transform + pos: -27.341524,-2.4224424 + parent: 60 + - uid: 23912 + components: + - type: Transform + pos: -27.341524,-2.4224424 + parent: 60 - proto: ClothingHeadHatSkub entities: - uid: 6791 @@ -60609,6 +60813,48 @@ entities: - type: Transform pos: 22.509872,-51.419544 parent: 60 +- proto: ClothingOuterSanta + entities: + - uid: 23897 + components: + - type: Transform + pos: -27.591524,-2.2661924 + parent: 60 + - uid: 23898 + components: + - type: Transform + pos: -27.591524,-2.2661924 + parent: 60 + - uid: 23899 + components: + - type: Transform + pos: -27.591524,-2.2661924 + parent: 60 + - uid: 23900 + components: + - type: Transform + pos: -27.591524,-2.2661924 + parent: 60 + - uid: 23901 + components: + - type: Transform + pos: -27.591524,-2.2661924 + parent: 60 + - uid: 23902 + components: + - type: Transform + pos: -27.591524,-2.2661924 + parent: 60 + - uid: 23903 + components: + - type: Transform + pos: -27.591524,-2.2661924 + parent: 60 + - uid: 23904 + components: + - type: Transform + pos: -27.591524,-2.2661924 + parent: 60 - proto: ClothingOuterSkub entities: - uid: 6793 @@ -61165,12 +61411,6 @@ entities: rot: -1.5707963267948966 rad pos: 24.5,-5.5 parent: 60 - - uid: 24349 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 13.5,-26.5 - parent: 60 - proto: CommandmentCircuitBoard entities: - uid: 24825 @@ -62937,6 +63177,11 @@ entities: - type: Transform pos: -16.5,-29.5 parent: 60 + - uid: 23919 + components: + - type: Transform + pos: 20.5,-26.5 + parent: 60 - proto: DefaultStationBeacon entities: - uid: 20983 @@ -72222,6 +72467,11 @@ entities: - type: Transform pos: -7.5,-2.5 parent: 60 + - uid: 23894 + components: + - type: Transform + pos: 18.5,-26.5 + parent: 60 - proto: Flare entities: - uid: 9525 @@ -73130,6 +73380,13 @@ entities: - type: Transform pos: -65.522354,23.506481 parent: 60 +- proto: FloraTreeChristmas02 + entities: + - uid: 23913 + components: + - type: Transform + pos: 7.9998736,-21.48742 + parent: 60 - proto: FoodApple entities: - uid: 7496 @@ -73262,10 +73519,10 @@ entities: parent: 60 - proto: FoodCondimentBottleHotsauce entities: - - uid: 23671 + - uid: 15672 components: - type: Transform - pos: 21.70029,-26.388956 + pos: 11.203171,-26.288023 parent: 60 - proto: FoodFrozenSandwich entities: @@ -73374,30 +73631,40 @@ entities: parent: 60 - proto: FoodPlateSmall entities: - - uid: 21775 + - uid: 14388 components: - type: Transform - pos: 20.513836,-26.289145 + pos: 12.531296,-26.131773 parent: 60 - - uid: 21789 + - uid: 16144 components: - type: Transform - pos: 20.513836,-26.195395 + pos: 12.531296,-26.506773 parent: 60 - - uid: 23621 + - uid: 21774 components: - type: Transform - pos: 20.513836,-26.382895 + pos: 12.531296,-26.381773 parent: 60 - uid: 23629 components: - type: Transform - pos: 20.513836,-26.507895 + pos: 12.531296,-26.303648 parent: 60 - - uid: 23630 + - uid: 23667 + components: + - type: Transform + pos: 12.531296,-26.178648 + parent: 60 + - uid: 23671 components: - type: Transform - pos: 20.513836,-26.445395 + pos: 12.531296,-26.428648 + parent: 60 + - uid: 23891 + components: + - type: Transform + pos: 12.531296,-26.241148 parent: 60 - proto: FoodPoppy entities: @@ -73512,20 +73779,20 @@ entities: parent: 60 - proto: Fork entities: - - uid: 2584 + - uid: 21598 components: - type: Transform - pos: 21.138836,-26.476645 + pos: 11.828171,-26.428648 parent: 60 - - uid: 23653 + - uid: 21775 components: - type: Transform - pos: 21.138836,-26.476645 + pos: 11.828171,-26.428648 parent: 60 - - uid: 23665 + - uid: 23668 components: - type: Transform - pos: 21.138836,-26.476645 + pos: 11.828171,-26.428648 parent: 60 - proto: FuelDispenser entities: @@ -114793,13 +115060,6 @@ entities: rot: 1.5707963267948966 rad pos: -12.5,19.5 parent: 60 - - uid: 2278 - components: - - type: Transform - pos: 18.5,-26.5 - parent: 60 - - type: ApcPowerReceiver - powerLoad: 0 - uid: 2279 components: - type: Transform @@ -117916,6 +118176,23 @@ entities: parent: 60 - type: ApcPowerReceiver powerLoad: 0 +- proto: PresentRandom + entities: + - uid: 23920 + components: + - type: Transform + pos: 19.509592,-26.607985 + parent: 60 + - uid: 23921 + components: + - type: Transform + pos: 19.650217,-27.232985 + parent: 60 + - uid: 23922 + components: + - type: Transform + pos: 21.337717,-26.654861 + parent: 60 - proto: Protolathe entities: - uid: 7081 @@ -119477,11 +119754,6 @@ entities: parent: 60 - proto: RandomVendingDrinks entities: - - uid: 3156 - components: - - type: Transform - pos: 8.5,-19.5 - parent: 60 - uid: 6319 components: - type: Transform @@ -119507,13 +119779,13 @@ entities: - type: Transform pos: -37.5,26.5 parent: 60 -- proto: RandomVendingSnacks - entities: - - uid: 666 + - uid: 23916 components: - type: Transform pos: 7.5,-19.5 parent: 60 +- proto: RandomVendingSnacks + entities: - uid: 6320 components: - type: Transform @@ -119529,6 +119801,11 @@ entities: - type: Transform pos: -38.5,26.5 parent: 60 + - uid: 23917 + components: + - type: Transform + pos: 8.5,-19.5 + parent: 60 - proto: RCD entities: - uid: 1912 @@ -131513,20 +131790,20 @@ entities: parent: 60 - proto: Spoon entities: - - uid: 23666 + - uid: 5786 components: - type: Transform - pos: 21.43571,-26.476645 + pos: 11.546921,-26.428648 parent: 60 - - uid: 23667 + - uid: 23893 components: - type: Transform - pos: 21.43571,-26.476645 + pos: 11.546921,-26.428648 parent: 60 - - uid: 23668 + - uid: 23895 components: - type: Transform - pos: 21.43571,-26.476645 + pos: 11.546921,-26.428648 parent: 60 - proto: SprayBottle entities: @@ -134805,11 +135082,6 @@ entities: rot: -1.5707963267948966 rad pos: 27.5,-32.5 parent: 60 - - uid: 2569 - components: - - type: Transform - pos: 19.5,-26.5 - parent: 60 - uid: 2681 components: - type: Transform @@ -135421,11 +135693,6 @@ entities: - type: Transform pos: 42.5,-1.5 parent: 60 - - uid: 16144 - components: - - type: Transform - pos: 20.5,-26.5 - parent: 60 - uid: 16410 components: - type: Transform @@ -135699,15 +135966,25 @@ entities: - type: Transform pos: -10.5,-34.5 parent: 60 + - uid: 21789 + components: + - type: Transform + pos: 13.5,-26.5 + parent: 60 - uid: 23424 components: - type: Transform pos: 47.5,12.5 parent: 60 - - uid: 23652 + - uid: 23665 components: - type: Transform - pos: 21.5,-26.5 + pos: 11.5,-26.5 + parent: 60 + - uid: 23666 + components: + - type: Transform + pos: 12.5,-26.5 parent: 60 - uid: 23838 components: @@ -135841,10 +136118,12 @@ entities: - type: Transform pos: 19.5,-31.5 parent: 60 - - uid: 24416 +- proto: TableFancyGreen + entities: + - uid: 23896 components: - type: Transform - pos: 19.5,-28.5 + pos: -27.5,-2.5 parent: 60 - proto: TableGlass entities: @@ -136982,12 +137261,6 @@ entities: - type: Transform pos: -24.5,19.5 parent: 60 - - uid: 24348 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 12.5,-26.5 - parent: 60 - proto: TargetSyndicate entities: - uid: 10824 @@ -138090,11 +138363,6 @@ entities: - type: Transform pos: 29.5,-22.5 parent: 60 - - uid: 5786 - components: - - type: Transform - pos: 18.5,-26.5 - parent: 60 - uid: 6039 components: - type: Transform @@ -138125,6 +138393,11 @@ entities: - type: Transform pos: 26.5,-7.5 parent: 60 + - uid: 23630 + components: + - type: Transform + pos: 15.5,-26.5 + parent: 60 - uid: 25214 components: - type: Transform @@ -138181,10 +138454,10 @@ entities: parent: 60 - proto: VendingMachineCondiments entities: - - uid: 21774 + - uid: 23621 components: - type: Transform - pos: 19.5,-26.5 + pos: 13.5,-26.5 parent: 60 - proto: VendingMachineCuraDrobe entities: From a68c6cb29ea4a3e3d78e16c867366e488c699fff Mon Sep 17 00:00:00 2001 From: Saphire <lattice@saphi.re> Date: Sun, 17 Nov 2024 03:58:15 +0600 Subject: [PATCH 124/187] Temporarily make singularity a bit harder to loose as non-antag --- .../SingularityGeneratorComponent.cs | 49 +++++++++-- .../SingularityGeneratorSystem.cs | 87 +++++++++++++++++-- .../components/generator-component.ftl | 2 + .../Generation/Singularity/generator.yml | 2 +- .../Power/Generation/Tesla/generator.yml | 4 +- 5 files changed, 130 insertions(+), 14 deletions(-) create mode 100644 Resources/Locale/en-US/singularity/components/generator-component.ftl diff --git a/Content.Server/Singularity/Components/SingularityGeneratorComponent.cs b/Content.Server/Singularity/Components/SingularityGeneratorComponent.cs index ea2628e5cb8..180b8499584 100644 --- a/Content.Server/Singularity/Components/SingularityGeneratorComponent.cs +++ b/Content.Server/Singularity/Components/SingularityGeneratorComponent.cs @@ -2,32 +2,69 @@ using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; using Content.Server.Singularity.EntitySystems; +using Content.Shared.Physics; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Server.Singularity.Components; -[RegisterComponent] +[RegisterComponent, AutoGenerateComponentPause] +[Access(typeof(SingularityGeneratorSystem))] public sealed partial class SingularityGeneratorComponent : Component { /// <summary> /// The amount of power this generator has accumulated. /// If you want to set this use <see cref="SingularityGeneratorSystem.SetPower"/> /// </summary> - [DataField("power")] - [Access(friends:typeof(SingularityGeneratorSystem))] + [DataField] public float Power = 0; /// <summary> /// The power threshold at which this generator will spawn a singularity. /// If you want to set this use <see cref="SingularityGeneratorSystem.SetThreshold"/> /// </summary> - [DataField("threshold")] - [Access(friends:typeof(SingularityGeneratorSystem))] + [DataField] public float Threshold = 16; + /// <summary> + /// Allows the generator to ignore all the failsafe stuff, e.g. when emagged + /// </summary> + [DataField] + public bool FailsafeDisabled = false; + + /// <summary> + /// Maximum distance at which the generator will check for a field at + /// </summary> + [DataField] + public float FailsafeDistance = 16; + /// <summary> /// The prototype ID used to spawn a singularity. /// </summary> [DataField("spawnId", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))] - [ViewVariables(VVAccess.ReadWrite)] public string? SpawnPrototype = "Singularity"; + + /// <summary> + /// The masks the raycast should not go through + /// </summary> + [DataField] + public int CollisionMask = (int)CollisionGroup.FullTileMask; + + /// <summary> + /// Message to use when there's no containment field on cardinal directions + /// </summary> + [DataField] + public LocId ContainmentFailsafeMessage; + + /// <summary> + /// For how long the failsafe will cause the generator to stop working and not issue a failsafe warning + /// </summary> + [DataField] + public TimeSpan FailsafeCooldown = TimeSpan.FromSeconds(30); + + /// <summary> + /// How long until the generator can issue a failsafe warning again + /// </summary> + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] + [AutoPausedField] + public TimeSpan NextFailsafe; } diff --git a/Content.Server/Singularity/EntitySystems/SingularityGeneratorSystem.cs b/Content.Server/Singularity/EntitySystems/SingularityGeneratorSystem.cs index a0c02627948..be0c5e49b5f 100644 --- a/Content.Server/Singularity/EntitySystems/SingularityGeneratorSystem.cs +++ b/Content.Server/Singularity/EntitySystems/SingularityGeneratorSystem.cs @@ -1,7 +1,15 @@ +using System.Diagnostics; using Content.Server.ParticleAccelerator.Components; +using Content.Server.Popups; using Content.Server.Singularity.Components; +using Content.Shared.Emag.Systems; +using Content.Shared.Popups; using Content.Shared.Singularity.Components; +using Robust.Server.GameObjects; +using Robust.Shared.Physics; +using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Events; +using Robust.Shared.Timing; namespace Content.Server.Singularity.EntitySystems; @@ -9,6 +17,11 @@ public sealed class SingularityGeneratorSystem : EntitySystem { #region Dependencies [Dependency] private readonly IViewVariablesManager _vvm = default!; + [Dependency] private readonly SharedTransformSystem _transformSystem = default!; + [Dependency] private readonly PhysicsSystem _physics = default!; + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly MetaDataSystem _metadata = default!; + [Dependency] private readonly PopupSystem _popupSystem = default!; #endregion Dependencies public override void Initialize() @@ -16,6 +29,7 @@ public override void Initialize() base.Initialize(); SubscribeLocalEvent<ParticleProjectileComponent, StartCollideEvent>(HandleParticleCollide); + SubscribeLocalEvent<SingularityGeneratorComponent, GotEmaggedEvent>(OnEmagged); var vvHandle = _vvm.GetTypeHandler<SingularityGeneratorComponent>(); vvHandle.AddPath(nameof(SingularityGeneratorComponent.Power), (_, comp) => comp.Power, SetPower); @@ -100,11 +114,33 @@ public void SetThreshold(EntityUid uid, float value, SingularityGeneratorCompone /// <param name="args">The state of the beginning of the collision.</param> private void HandleParticleCollide(EntityUid uid, ParticleProjectileComponent component, ref StartCollideEvent args) { - if (EntityManager.TryGetComponent<SingularityGeneratorComponent>(args.OtherEntity, out var singularityGeneratorComponent)) + if (!EntityManager.TryGetComponent<SingularityGeneratorComponent>(args.OtherEntity, out var generatorComp)) + return; + + if (_timing.CurTime < _metadata.GetPauseTime(uid) + generatorComp.NextFailsafe) + { + EntityManager.QueueDeleteEntity(uid); + return; + } + + var contained = true; + var transform = Transform(args.OtherEntity); + var directions = Enum.GetValues<Direction>().Length; + for (var i = 0; i < directions - 1; i += 2) // Skip every other direction, checking only cardinals + { + if (!CheckContainmentField((Direction)i, new Entity<SingularityGeneratorComponent>(args.OtherEntity, generatorComp), transform)) + contained = false; + } + + if (!contained) { + generatorComp.NextFailsafe = _timing.CurTime + generatorComp.FailsafeCooldown; + _popupSystem.PopupEntity(Loc.GetString("comp-generator-failsafe", ("target", args.OtherEntity)), args.OtherEntity, PopupType.LargeCaution); + } + else SetPower( args.OtherEntity, - singularityGeneratorComponent.Power + component.State switch + generatorComp.Power + component.State switch { ParticleAcceleratorPowerState.Standby => 0, ParticleAcceleratorPowerState.Level0 => 1, @@ -113,10 +149,51 @@ private void HandleParticleCollide(EntityUid uid, ParticleProjectileComponent co ParticleAcceleratorPowerState.Level3 => 8, _ => 0 }, - singularityGeneratorComponent + generatorComp ); - EntityManager.QueueDeleteEntity(uid); - } + EntityManager.QueueDeleteEntity(uid); + } + + private void OnEmagged(EntityUid uid, SingularityGeneratorComponent component, ref GotEmaggedEvent args) + { + _popupSystem.PopupEntity(Loc.GetString("comp-generator-failsafe-disabled", ("target", uid)), uid); + component.FailsafeDisabled = true; + args.Handled = true; } #endregion Event Handlers + + /// <summary> + /// Checks whether there's a containment field in a given direction away from the generator + /// </summary> + /// <param name="transform">The transform component of the singularity generator.</param> + /// <remarks>Mostly copied from <see cref="ContainmentFieldGeneratorSystem"/> </remarks> + private bool CheckContainmentField(Direction dir, Entity<SingularityGeneratorComponent> generator, TransformComponent transform) + { + var component = generator.Comp; + + var (worldPosition, worldRotation) = _transformSystem.GetWorldPositionRotation(transform); + var dirRad = dir.ToAngle() + worldRotation; + + var ray = new CollisionRay(worldPosition, dirRad.ToVec(), component.CollisionMask); + var rayCastResults = _physics.IntersectRay(transform.MapID, ray, component.FailsafeDistance, generator, false); + var genQuery = GetEntityQuery<ContainmentFieldComponent>(); + + RayCastResults? closestResult = null; + + foreach (var result in rayCastResults) + { + if (genQuery.HasComponent(result.HitEntity)) + closestResult = result; + + break; + } + + if (closestResult == null) + return false; + + var ent = closestResult.Value.HitEntity; + + // Check that the field can't be moved. The fields' transform parenting is weird, so skip that + return TryComp<PhysicsComponent>(ent, out var collidableComponent) && collidableComponent.BodyType == BodyType.Static; + } } diff --git a/Resources/Locale/en-US/singularity/components/generator-component.ftl b/Resources/Locale/en-US/singularity/components/generator-component.ftl new file mode 100644 index 00000000000..f3a2254c38d --- /dev/null +++ b/Resources/Locale/en-US/singularity/components/generator-component.ftl @@ -0,0 +1,2 @@ +comp-generator-failsafe = The {$target} shakes as the containment failsafe triggers! +comp-generator-failsafe = Something fizzles out inside of {$target}... \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/generator.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/generator.yml index 647eae27724..45a40bf0faf 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/generator.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/generator.yml @@ -1,7 +1,7 @@ - type: entity id: SingularityGenerator name: gravitational singularity generator - description: An Odd Device which produces a Gravitational Singularity when set up. + description: An Odd Device which produces a Gravitational Singularity when set up. Comes with a temporary shutdown containment failsafe. placement: mode: SnapgridCenter components: diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/Tesla/generator.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/Tesla/generator.yml index d45e6c58ea7..bdd90f2f16a 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/Tesla/generator.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/Tesla/generator.yml @@ -2,12 +2,12 @@ id: TeslaGenerator name: tesla generator parent: BaseStructureDynamic - description: An Odd Device which produces a powerful Tesla ball when set up. + description: An Odd Device which produces a powerful Tesla ball when set up. Comes with a temporary shutdown containment failsafe. components: - type: Sprite noRot: true sprite: Structures/Power/Generation/Tesla/generator.rsi - state: icon + state: icon - type: SingularityGenerator # TODO: rename the generator spawnId: TeslaEnergyBall - type: InteractionOutline From 01d6df3d0ace170438aae3931339be539bd8b38e Mon Sep 17 00:00:00 2001 From: Saphire <lattice@saphi.re> Date: Sun, 17 Nov 2024 04:18:00 +0600 Subject: [PATCH 125/187] Fix Fluent string ID copypaste fail --- .../Locale/en-US/singularity/components/generator-component.ftl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Locale/en-US/singularity/components/generator-component.ftl b/Resources/Locale/en-US/singularity/components/generator-component.ftl index f3a2254c38d..d2a04f9cbc0 100644 --- a/Resources/Locale/en-US/singularity/components/generator-component.ftl +++ b/Resources/Locale/en-US/singularity/components/generator-component.ftl @@ -1,2 +1,2 @@ comp-generator-failsafe = The {$target} shakes as the containment failsafe triggers! -comp-generator-failsafe = Something fizzles out inside of {$target}... \ No newline at end of file +comp-generator-failsafe-disabled = Something fizzles out inside of {$target}... \ No newline at end of file From 476f90df095502089d9f60ad59099f405be36cd2 Mon Sep 17 00:00:00 2001 From: Saphire <lattice@saphi.re> Date: Sun, 17 Nov 2024 04:31:34 +0600 Subject: [PATCH 126/187] Fix the component defaults --- .../Singularity/Components/SingularityGeneratorComponent.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Server/Singularity/Components/SingularityGeneratorComponent.cs b/Content.Server/Singularity/Components/SingularityGeneratorComponent.cs index 180b8499584..8b9b4e74466 100644 --- a/Content.Server/Singularity/Components/SingularityGeneratorComponent.cs +++ b/Content.Server/Singularity/Components/SingularityGeneratorComponent.cs @@ -53,7 +53,7 @@ public sealed partial class SingularityGeneratorComponent : Component /// Message to use when there's no containment field on cardinal directions /// </summary> [DataField] - public LocId ContainmentFailsafeMessage; + public LocId ContainmentFailsafeMessage = "comp-generator-failsafe"; /// <summary> /// For how long the failsafe will cause the generator to stop working and not issue a failsafe warning @@ -66,5 +66,5 @@ public sealed partial class SingularityGeneratorComponent : Component /// </summary> [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] [AutoPausedField] - public TimeSpan NextFailsafe; + public TimeSpan NextFailsafe = TimeSpan.Zero; } From 5cd92431b979eb9535d53fd7630938fa441af942 Mon Sep 17 00:00:00 2001 From: ThatGuyUSA <thatguyusa123@gmail.com> Date: Sat, 16 Nov 2024 17:03:14 -0800 Subject: [PATCH 127/187] Throwing Knife description tweak (#33349) changed description --- Resources/Prototypes/Entities/Objects/Weapons/Melee/knife.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/knife.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/knife.yml index 711b8c49feb..42a78ef077e 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/knife.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/knife.yml @@ -269,7 +269,7 @@ name: throwing knife parent: [BaseKnife, BaseSyndicateContraband] id: ThrowingKnife - description: This bloodred knife is very aerodynamic and easy to throw, but good luck trying to fight someone hand-to-hand. + description: This blood-red knife is very aerodynamic and easy to throw, but good luck trying to fight someone hand-to-hand. components: - type: Tag tags: From 0991b6bbe8184e4fca0acfb9bcb9bce09ba97859 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 17 Nov 2024 13:03:59 +1100 Subject: [PATCH 128/187] Update Credits (#33360) Co-authored-by: PJBot <pieterjan.briers+bot@gmail.com> --- Resources/Credits/GitHub.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Credits/GitHub.txt b/Resources/Credits/GitHub.txt index 362b82c63f4..53c4eb7ea0f 100644 --- a/Resources/Credits/GitHub.txt +++ b/Resources/Credits/GitHub.txt @@ -1 +1 @@ -0x6273, 12rabbits, 13spacemen, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 3nderall, 4310v343k, 4dplanner, 612git, 778b, Ablankmann, abregado, Absolute-Potato, achookh, Acruid, actioninja, actually-reb, ada-please, adamsong, Adeinitas, Admiral-Obvious-001, adrian, Adrian16199, Ady4ik, Aerocrux, Aeshus, Aexolott, Aexxie, africalimedrop, Afrokada, AftrLite, Agoichi, Ahion, aiden, AJCM-git, AjexRose, Alekshhh, alexkar598, AlexMorgan3817, alexumandxgabriel08x, Alithsko, ALMv1, Alpha-Two, AlphaQwerty, Altoids1, amylizzle, ancientpower, Andre19926, AndrewEyeke, AndreyCamper, Anzarot121, Appiah, ar4ill, ArchPigeon, ArchRBX, areitpog, Arendian, arimah, Arkanic, ArkiveDev, armoks, Arteben, ArthurMousatov, ArtisticRoomba, artur, AruMoon, ArZarLordOfMango, as334, AsikKEsel, AsnDen, asperger-sind, aspiringLich, astriloqua, august-sun, AutoOtter, avghdev, Awlod, AzzyIsNotHere, BackeTako, BananaFlambe, Baptr0b0t, BasedUser, beck-thompson, bellwetherlogic, benev0, benjamin-burges, BGare, bhenrich, bhespiritu, bibbly, BIGZi0348, bingojohnson, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, BlitzTheSquishy, bloodrizer, Bloody2372, blueDev2, Boaz1111, BobdaBiscuit, BobTheSleder, boiled-water-tsar, BombasterDS, Boolean-Buckeye, botanySupremist, brainfood1183, BramvanZijp, Brandon-Huu, BriBrooo, Bright0, brndd, bryce0110, BubblegumBlue, buletsponge, buntobaggins, bvelliquette, byondfuckery, c0rigin, c4llv07e, CaasGit, Caconym27, Calecute, Callmore, capnsockless, CaptainSqrBeard, Carbonhell, Carolyn3114, Carou02, carteblanche4me, Catofquestionableethics, CatTheSystem, Centronias, chairbender, Charlese2, charlie, ChaseFlorom, chavonadelal, Cheackraze, cheesePizza2, cheeseplated, Chief-Engineer, chillyconmor, christhirtle, chromiumboy, Chronophylos, Chubbicous, Chubbygummibear, Ciac32, civilCornball, Clement-O, clyf, Clyybber, CMDR-Piboy314, cohanna, Cohnway, Cojoke-dot, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, CookieMasterT, coolboy911, coolmankid12345, Coolsurf6, corentt, CormosLemming, crazybrain23, creadth, CrigCrag, croilbird, Crotalus, CrudeWax, CrzyPotato, cutemoongod, Cyberboss, d34d10cc, d4kii, DadeKuma, Daemon, daerSeebaer, dahnte, dakamakat, DamianX, DangerRevolution, daniel-cr, DanSAussieITS, Daracke, Darkenson, DawBla, Daxxi3, dch-GH, de0rix, Deahaka, dean, DEATHB4DEFEAT, DeathCamel58, Deatherd, deathride58, DebugOk, Decappi, Decortex, Deeeeja, deepdarkdepths, degradka, Delete69, deltanedas, DenisShvalov, DerbyX, derek, dersheppard, Deserty0, Detintinto, DevilishMilk, dexlerxd, dffdff2423, DieselMohawk, digitalic, Dimastra, DinoWattz, DisposableCrewmember42, DjfjdfofdjfjD, doc-michael, docnite, Doctor-Cpu, DoctorBeard, DogZeroX, dolgovmi, dontbetank, Doomsdrayk, Doru991, DoubleRiceEddiedd, DoutorWhite, dragonryan06, drakewill-CRL, Drayff, dreamlyjack, DrEnzyme, dribblydrone, DrMelon, drongood12, DrSingh, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, dukevanity, duskyjay, Dutch-VanDerLinde, dvir001, Dynexust, Easypoller, echo, eclips_e, eden077, EEASAS, Efruit, efzapa, Ekkosangen, ElectroSR, elsie, elthundercloud, Elysium206, Emisse, emmafornash, EmoGarbage404, Endecc, eoineoineoin, eris, erohrs2, ERORR404V1, Errant-4, ertanic, esguard, estacaoespacialpirata, eugene, ewokswagger, exincore, exp111, f0x-n3rd, FacePluslll, Fahasor, FairlySadPanda, FATFSAAM2, Feluk6174, ficcialfaint, Fiftyllama, Fildrance, FillerVK, FinnishPaladin, firenamefn, FirinMaLazors, Fishfish458, FL-OZ, Flareguy, flashgnash, FluffiestFloof, FluffMe, FluidRock, foboscheshir, FoLoKe, fooberticus, ForestNoises, forgotmyotheraccount, forkeyboards, forthbridge, Fortune117, Fouin, foxhorn, freeman2651, freeze2222, Froffy025, Fromoriss, froozigiusz, FrostMando, FungiFellow, FunTust, Futuristic-OK, GalacticChimp, gamer3107, Gaxeer, gbasood, Geekyhobo, genderGeometries, GeneralGaws, Genkail, geraeumig, Ghagliiarghii, Git-Nivrak, githubuser508, gituhabu, GlassEclipse, GNF54, godisdeadLOL, goet, Goldminermac, Golinth, GoodWheatley, Gorox221, gradientvera, graevy, GraniteSidewalk, GreaseMonk, greenrock64, GreyMario, GTRsound, gusxyz, Gyrandola, h3half, hamurlik, Hanzdegloker, HappyRoach, Hardly3D, harikattar, he1acdvv, Hebi, Henry, HerCoyote23, hitomishirichan, hiucko, Hmeister-fake, Hmeister-real, Hobbitmax, hobnob, HoidC, Holinka4ever, holyssss, HoofedEar, Hoolny, hord-brayden, Hreno, hubismal, Hugal31, Huxellberger, Hyenh, hyphenationc, i-justuser-i, iacore, IamVelcroboy, Ian321, icekot8, icesickleone, iczero, iglov, IgorAnt028, igorsaux, ike709, illersaver, Illiux, Ilushkins33, Ilya246, IlyaElDunaev, imrenq, imweax, indeano, Injazz, Insineer, IntegerTempest, Interrobang01, IProduceWidgets, ItsMeThom, Itzbenz, iztokbajcar, Jackal298, Jackrost, jacksonzck, Jackw2As, jacob, jamessimo, janekvap, Jark255, Jarmer123, Jaskanbe, JasperJRoth, jerryimmouse, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JimGamemaster, jimmy12or, JIPDawg, jjtParadox, jmcb, JoeHammad1844, JohnGinnane, johnku1, Jophire, joshepvodka, Jrpl, juliangiebel, JustArt1m, JustCone14, justdie12, justin, justintether, JustinTrotter, justtne, K-Dynamic, k3yw, Kadeo64, Kaga-404, KaiShibaa, kalane15, kalanosh, Kanashi-Panda, katzenminer, kbailey-git, Keelin, Keer-Sar, KEEYNy, keikiru, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, Kimpes, KingFroozy, kira-er, Kirillcas, Kirus59, Kistras, Kit0vras, KittenColony, klaypexx, Kmc2000, Ko4ergaPunk, kognise, kokoc9n, komunre, KonstantinAngelov, kosticia, koteq, KrasnoshchekovPavel, Krunklehorn, Kupie, kxvvv, kyupolaris, kzhanik, lajolico, Lamrr, LankLTE, laok233, lapatison, larryrussian, lawdog4817, Lazzi0706, leander-0, leonardo-dabepis, leonsfriedrich, LeoSantich, LetterN, lettern, Level10Cybermancer, LEVELcat, lever1209, Lgibb18, lgruthes, LightVillet, liltenhead, LinkUyx, LittleBuilderJane, LittleNorthStar, LittleNyanCat, lizelive, localcc, lokachop, Lomcastar, LordCarve, LordEclipse, LucasTheDrgn, luckyshotpictures, LudwigVonChesterfield, luizwritescode, Lukasz825700516, luminight, lunarcomets, luringens, lvvova1, Lyndomen, lyroth001, lzimann, lzk228, M3739, mac6na6na, MACMAN2003, Macoron, Magicalus, magmodius, MagnusCrowe, malchanceux, MaloTV, ManelNavola, Mangohydra, marboww, Markek1, Matz05, max, MaxNox7, maylokana, MehimoNemo, MeltedPixel, MemeProof, MendaxxDev, Menshin, Mephisto72, MerrytheManokit, Mervill, metalgearsloth, MetalSage, MFMessage, mhamsterr, michaelcu, micheel665, MilenVolf, MilonPL, Minemoder5000, Minty642, Mirino97, mirrorcult, misandrie, MishaUnity, MissKay1994, MisterMecky, Mith-randalf, MjrLandWhale, mkanke-real, MLGTASTICa, moderatelyaware, modern-nm, mokiros, Moneyl, Moomoobeef, moony, Morb0, mr-bo-jangles, Mr0maks, MrFippik, mrrobdemo, muburu, MureixloI, musicmanvr, MWKane, Myakot, Myctai, N3X15, nails-n-tape, Nairodian, Naive817, NakataRin, namespace-Memory, Nannek, NazrinNya, neutrino-laser, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, NIXC, NkoKirkto, nmajask, noctyrnal, noelkathegod, nok-ko, NonchalantNoob, NoobyLegion, Nopey, not-gavnaed, notafet, notquitehadouken, NotSoDana, noudoit, noverd, NuclearWinter, nukashimika, nuke-haus, NULL882, nullarmo, nyeogmi, Nylux, Nyranu, och-och, OctoRocket, OldDanceJacket, OliverOtter, OnyxTheBrave, OrangeMoronage9622, osjarw, Ostaf, othymer, OttoMaticode, Owai-Seek, packmore, paigemaeforrest, pali6, Pangogie, panzer-iv1, paolordls, partyaddict, patrikturi, PaulRitter, peccneck, Peptide90, peptron1, PeterFuto, PetMudstone, pewter-wiz, Pgriha, Phantom-Lily, pheenty, Phill101, phunnyguy, PilgrimViis, Pill-U, Pireax, Pissachu, pissdemon, PixeltheAertistContrib, PixelTheKermit, PJB3005, Plasmaguy, plinyvic, Plykiya, poeMota, pofitlo, pointer-to-null, pok27, PolterTzi, PoorMansDreams, PopGamer45, portfiend, potato1234x, PotentiallyTom, ProfanedBane, ProPandaBear, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykzz, PuceTint, PuroSlavKing, PursuitInAshes, Putnam3145, qrtDaniil, quatre, QueerNB, QuietlyWhisper, qwerltaz, RadioMull, Radosvik, Radrark, Rainbeon, Rainfey, Raitononai, Ramlik, RamZ, randy10122, Rane, Ranger6012, Rapidgame7, ravage123321, rbertoche, Redfire1331, Redict, RedlineTriad, redmushie, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, Renlou, retequizzle, rich-dunne, RieBi, riggleprime, RIKELOLDABOSS, rinary1, Rinkashikachi, riolume, RobbyTheFish, Rockdtben, Rohesie, rok-povsic, rolfero, RomanNovo, rosieposieeee, Roudenn, router, RumiTiger, S1rFl0, S1ss3l, Saakra, Sadie-silly, saga3152, saintmuntzer, Salex08, sam, samgithubaccount, SaphireLattice, SapphicOverload, Sarahon, sativaleanne, SaveliyM360, sBasalto, ScalyChimp, ScarKy0, scrato, Scribbles0, scrivoy, scruq445, scuffedjays, ScumbagDog, Segonist, sephtasm, Serkket, sewerpig, sh18rw, ShadeAware, ShadowCommander, Shadowtheprotogen546, shaeone, shampunj, shariathotpatrol, SignalWalker, siigiil, Simyon264, sirdragooon, Sirionaut, Sk1tch, SkaldetSkaeg, Skarletto, Skrauz, Skyedra, SlamBamActionman, slarticodefast, Slava0135, Slyfox333, snebl, snicket, sniperchance, Snowni, snowsignal, SolidusSnek, SonicHDC, SoulFN, SoulSloth, Soundwavesghost, southbridge-fur, Soydium, spacelizard, SpaceLizardSky, SpaceManiac, SpaceRox1244, SpaceyLady, Spanky, spanky-spanky, spartak, SpartanKadence, SpeltIncorrectyl, Spessmann, SphiraI, SplinterGP, spoogemonster, sporekto, sporkyz, ssdaniel24, stalengd, stanberytrask, Stanislav4ix, StanTheCarpenter, Stealthbomber16, stellar-novas, stomf, stopbreaking, stopka-html, StrawberryMoses, Stray-Pyramid, strO0pwafel, Strol20, StStevens, Subversionary, sunbear-dev, superjj18, Supernorn, SweptWasTaken, Sybil, SYNCHRONIC, Szunti, Tainakov, takemysoult, TaralGit, Taran, taurie, Tayrtahn, tday93, teamaki, TekuNut, telyonok, TemporalOroboros, tentekal, terezi4real, Terraspark4941, texcruize, TGODiamond, TGRCdev, tgrkzus, ThatOneGoblin25, thatrandomcanadianguy, TheArturZh, theashtronaut, thecopbennet, TheCze, TheDarkElites, thedraccx, TheEmber, TheIntoxicatedCat, thekilk, themias, theomund, theOperand, TherapyGoth, TheShuEd, thetolbean, thevinter, TheWaffleJesus, Thinbug0, ThunderBear2006, timothyteakettle, TimrodDX, timurjavid, tin-man-tim, Titian3, tk-a369, tkdrg, tmtmtl30, TokenStyle, Tollhouse, Toly65, tom-leys, tomasalves8, Tomeno, Tonydatguy, topy, Tornado-Technology, tosatur, TotallyLemon, Tr1bute, tropicalhibi, truepaintgit, Truoizys, Tryded, TsjipTsjip, Tunguso4ka, TurboTrackerss14, TyAshley, Tyler-IN, Tyzemol, UbaserB, ubis1, UBlueberry, UKNOWH, UltimateJester, Unbelievable-Salmon, underscorex5, UnicornOnLSD, Unisol, Unkn0wnGh0st333, unusualcrow, Uriende, UristMcDorf, user424242420, Vaaankas, valentfingerov, Varen, VasilisThePikachu, veliebm, VelonacepsCalyxEggs, veprolet, veritable-calamity, Veritius, Vermidia, vero5123, Verslebas, VigersRay, violet754, Visne, VMSolidus, voidnull000, volotomite, volundr-, Voomra, Vordenburg, vorkathbruh, vulppine, wafehling, Warentan, WarMechanic, Watermelon914, waylon531, weaversam8, wertanchik, whateverusername0, Willhelm53, WilliamECrew, willicassi, Winkarst-cpu, wirdal, wixoaGit, WlarusFromDaSpace, wrexbe, WTCWR68, xkreksx, xprospero, xRiriq, YanehCheck, yathxyz, Ygg01, YotaXP, youarereadingthis, Yousifb26, youtissoum, YuriyKiss, zach-hill, Zadeon, zamp, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zero, ZeroDiamond, zerorulez, ZeWaka, zionnBE, ZNixian, ZoldorfTheWizard, Zonespace27, Zylofan, Zymem, zzylex +0x6273, 12rabbits, 13spacemen, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 3nderall, 4310v343k, 4dplanner, 612git, 778b, Ablankmann, abregado, Absolute-Potato, achookh, Acruid, actioninja, actually-reb, ada-please, adamsong, Adeinitas, Admiral-Obvious-001, adrian, Adrian16199, Ady4ik, Aerocrux, Aeshus, Aexolott, Aexxie, africalimedrop, afrokada, AftrLite, Agoichi, Ahion, aiden, AJCM-git, AjexRose, Alekshhh, alexkar598, AlexMorgan3817, alexumandxgabriel08x, Alithsko, ALMv1, Alpha-Two, AlphaQwerty, Altoids1, amylizzle, ancientpower, Andre19926, AndrewEyeke, AndreyCamper, Anzarot121, Appiah, ar4ill, ArchPigeon, ArchRBX, areitpog, Arendian, arimah, Arkanic, ArkiveDev, armoks, Arteben, ArthurMousatov, ArtisticRoomba, artur, AruMoon, ArZarLordOfMango, as334, AsikKEsel, AsnDen, asperger-sind, aspiringLich, astriloqua, august-sun, AutoOtter, avghdev, Awlod, AzzyIsNotHere, BackeTako, BananaFlambe, Baptr0b0t, BasedUser, beck-thompson, bellwetherlogic, benev0, benjamin-burges, BGare, bhenrich, bhespiritu, bibbly, BIGZi0348, bingojohnson, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, BlitzTheSquishy, bloodrizer, Bloody2372, blueDev2, Boaz1111, BobdaBiscuit, BobTheSleder, boiled-water-tsar, BombasterDS, Boolean-Buckeye, botanySupremist, brainfood1183, BramvanZijp, Brandon-Huu, BriBrooo, Bright0, brndd, bryce0110, BubblegumBlue, buletsponge, buntobaggins, bvelliquette, byondfuckery, c0rigin, c4llv07e, CaasGit, Caconym27, Calecute, Callmore, capnsockless, CaptainSqrBeard, Carbonhell, Carolyn3114, Carou02, carteblanche4me, Catofquestionableethics, CatTheSystem, Centronias, chairbender, Charlese2, charlie, ChaseFlorom, chavonadelal, Cheackraze, CheddaCheez, cheesePizza2, cheeseplated, Chief-Engineer, chillyconmor, christhirtle, chromiumboy, Chronophylos, Chubbicous, Chubbygummibear, Ciac32, civilCornball, Clement-O, clyf, Clyybber, CMDR-Piboy314, cohanna, Cohnway, Cojoke-dot, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, CookieMasterT, coolboy911, coolmankid12345, Coolsurf6, corentt, CormosLemming, crazybrain23, creadth, CrigCrag, croilbird, Crotalus, CrudeWax, CrzyPotato, cutemoongod, Cyberboss, d34d10cc, d4kii, DadeKuma, Daemon, daerSeebaer, dahnte, dakamakat, DamianX, DangerRevolution, daniel-cr, DanSAussieITS, Daracke, Darkenson, DawBla, Daxxi3, dch-GH, de0rix, Deahaka, dean, DEATHB4DEFEAT, DeathCamel58, Deatherd, deathride58, DebugOk, Decappi, Decortex, Deeeeja, deepdarkdepths, degradka, Delete69, deltanedas, DenisShvalov, DerbyX, derek, dersheppard, Deserty0, Detintinto, DevilishMilk, dexlerxd, dffdff2423, DieselMohawk, digitalic, Dimastra, DinoWattz, DisposableCrewmember42, DjfjdfofdjfjD, doc-michael, docnite, Doctor-Cpu, DoctorBeard, DogZeroX, dolgovmi, dontbetank, Doomsdrayk, Doru991, DoubleRiceEddiedd, DoutorWhite, dragonryan06, drakewill-CRL, Drayff, dreamlyjack, DrEnzyme, dribblydrone, DrMelon, drongood12, DrSingh, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, dukevanity, duskyjay, Dutch-VanDerLinde, dvir001, Dynexust, Easypoller, echo, eclips_e, eden077, EEASAS, Efruit, efzapa, Ekkosangen, ElectroSR, elsie, elthundercloud, Elysium206, Emisse, emmafornash, EmoGarbage404, Endecc, eoineoineoin, eris, erohrs2, ERORR404V1, Errant-4, ertanic, esguard, estacaoespacialpirata, eugene, ewokswagger, exincore, exp111, f0x-n3rd, FacePluslll, Fahasor, FairlySadPanda, FATFSAAM2, Feluk6174, ficcialfaint, Fiftyllama, Fildrance, FillerVK, FinnishPaladin, firenamefn, FirinMaLazors, Fishfish458, FL-OZ, Flareguy, flashgnash, FluffiestFloof, FluffMe, FluidRock, foboscheshir, FoLoKe, fooberticus, ForestNoises, forgotmyotheraccount, forkeyboards, forthbridge, Fortune117, Fouin, foxhorn, freeman2651, freeze2222, Froffy025, Fromoriss, froozigiusz, FrostMando, FungiFellow, FunTust, Futuristic-OK, GalacticChimp, gamer3107, Gaxeer, gbasood, Geekyhobo, genderGeometries, GeneralGaws, Genkail, geraeumig, Ghagliiarghii, Git-Nivrak, githubuser508, gituhabu, GlassEclipse, GNF54, godisdeadLOL, goet, Goldminermac, Golinth, GoodWheatley, Gorox221, gradientvera, graevy, GraniteSidewalk, GreaseMonk, greenrock64, GreyMario, GTRsound, gusxyz, Gyrandola, h3half, hamurlik, Hanzdegloker, HappyRoach, Hardly3D, harikattar, he1acdvv, Hebi, Henry, HerCoyote23, hitomishirichan, hiucko, Hmeister-fake, Hmeister-real, Hobbitmax, hobnob, HoidC, Holinka4ever, holyssss, HoofedEar, Hoolny, hord-brayden, Hreno, hubismal, Hugal31, Huxellberger, Hyenh, hyphenationc, i-justuser-i, iacore, IamVelcroboy, Ian321, icekot8, icesickleone, iczero, iglov, IgorAnt028, igorsaux, ike709, illersaver, Illiux, Ilushkins33, Ilya246, IlyaElDunaev, imrenq, imweax, indeano, Injazz, Insineer, IntegerTempest, Interrobang01, IProduceWidgets, ItsMeThom, Itzbenz, iztokbajcar, Jackal298, Jackrost, jacksonzck, Jackw2As, jacob, jamessimo, janekvap, Jark255, Jarmer123, Jaskanbe, JasperJRoth, JerryImMouse, jerryimmouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JimGamemaster, jimmy12or, JIPDawg, jjtParadox, jmcb, JoeHammad1844, JohnGinnane, johnku1, Jophire, joshepvodka, Jrpl, juliangiebel, JustArt1m, JustCone14, justdie12, justin, justintether, JustinTrotter, justtne, K-Dynamic, k3yw, Kadeo64, Kaga-404, KaiShibaa, kalane15, kalanosh, Kanashi-Panda, katzenminer, kbailey-git, Keelin, Keer-Sar, KEEYNy, keikiru, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, Kimpes, KingFroozy, kira-er, Kirillcas, Kirus59, Kistras, Kit0vras, KittenColony, klaypexx, Kmc2000, Ko4ergaPunk, kognise, kokoc9n, komunre, KonstantinAngelov, kosticia, koteq, KrasnoshchekovPavel, Krunklehorn, Kupie, kxvvv, kyupolaris, kzhanik, lajolico, Lamrr, LankLTE, laok233, lapatison, larryrussian, lawdog4817, Lazzi0706, leander-0, leonardo-dabepis, leonidussaks, leonsfriedrich, LeoSantich, lettern, LetterN, Level10Cybermancer, LEVELcat, lever1209, Lgibb18, lgruthes, LightVillet, liltenhead, LinkUyx, LittleBuilderJane, LittleNorthStar, LittleNyanCat, lizelive, localcc, lokachop, Lomcastar, LordCarve, LordEclipse, LucasTheDrgn, luckyshotpictures, LudwigVonChesterfield, luizwritescode, Lukasz825700516, luminight, lunarcomets, luringens, lvvova1, Lyndomen, lyroth001, lzimann, lzk228, M3739, mac6na6na, MACMAN2003, Macoron, Magicalus, magmodius, MagnusCrowe, malchanceux, MaloTV, ManelNavola, Mangohydra, marboww, Markek1, Matz05, max, MaxNox7, maylokana, MehimoNemo, MeltedPixel, MemeProof, MendaxxDev, Menshin, Mephisto72, MerrytheManokit, Mervill, metalgearsloth, MetalSage, MFMessage, mhamsterr, michaelcu, micheel665, MilenVolf, MilonPL, Minemoder5000, Minty642, Mirino97, mirrorcult, misandrie, MishaUnity, MissKay1994, MisterMecky, Mith-randalf, MjrLandWhale, mkanke-real, MLGTASTICa, moderatelyaware, modern-nm, mokiros, Moneyl, Moomoobeef, moony, Morb0, MossyGreySlope, mr-bo-jangles, Mr0maks, MrFippik, mrrobdemo, muburu, MureixloI, musicmanvr, MWKane, Myakot, Myctai, N3X15, nails-n-tape, Nairodian, Naive817, NakataRin, namespace-Memory, Nannek, NazrinNya, neutrino-laser, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, NIXC, NkoKirkto, nmajask, noctyrnal, noelkathegod, nok-ko, NonchalantNoob, NoobyLegion, Nopey, not-gavnaed, notafet, notquitehadouken, NotSoDana, noudoit, noverd, NuclearWinter, nukashimika, nuke-haus, NULL882, nullarmo, nyeogmi, Nylux, Nyranu, och-och, OctoRocket, OldDanceJacket, OliverOtter, OnyxTheBrave, OrangeMoronage9622, osjarw, Ostaf, othymer, OttoMaticode, Owai-Seek, packmore, paigemaeforrest, pali6, Pangogie, panzer-iv1, paolordls, partyaddict, patrikturi, PaulRitter, peccneck, Peptide90, peptron1, PeterFuto, PetMudstone, pewter-wiz, Pgriha, Phantom-Lily, pheenty, Phill101, phunnyguy, PilgrimViis, Pill-U, Pireax, Pissachu, pissdemon, PixeltheAertistContrib, PixelTheKermit, PJB3005, Plasmaguy, plinyvic, Plykiya, poeMota, pofitlo, pointer-to-null, pok27, PolterTzi, PoorMansDreams, PopGamer45, portfiend, potato1234x, PotentiallyTom, ProfanedBane, ProPandaBear, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykzz, PuceTint, PuroSlavKing, PursuitInAshes, Putnam3145, qrtDaniil, quatre, QueerNB, QuietlyWhisper, qwerltaz, RadioMull, Radosvik, Radrark, Rainbeon, Rainfey, Raitononai, Ramlik, RamZ, randy10122, Rane, Ranger6012, Rapidgame7, ravage123321, rbertoche, RedBookcase, Redfire1331, Redict, RedlineTriad, redmushie, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, Renlou, retequizzle, rich-dunne, RieBi, riggleprime, RIKELOLDABOSS, rinary1, Rinkashikachi, riolume, RobbyTheFish, Rockdtben, Rohesie, rok-povsic, rolfero, RomanNovo, rosieposieeee, Roudenn, router, RumiTiger, S1rFl0, S1ss3l, Saakra, Sadie-silly, saga3152, saintmuntzer, Salex08, sam, samgithubaccount, SaphireLattice, SapphicOverload, Sarahon, sativaleanne, SaveliyM360, sBasalto, ScalyChimp, ScarKy0, scrato, Scribbles0, scrivoy, scruq445, scuffedjays, ScumbagDog, Segonist, sephtasm, Serkket, sewerpig, sh18rw, Shaddap1, ShadeAware, ShadowCommander, Shadowtheprotogen546, shaeone, shampunj, shariathotpatrol, SignalWalker, siigiil, Simyon264, sirdragooon, Sirionaut, Sk1tch, SkaldetSkaeg, Skarletto, Skrauz, Skyedra, SlamBamActionman, slarticodefast, Slava0135, Slyfox333, snebl, snicket, sniperchance, Snowni, snowsignal, SolidusSnek, SonicHDC, SoulFN, SoulSloth, Soundwavesghost, southbridge-fur, Soydium, spacelizard, SpaceLizardSky, SpaceManiac, SpaceRox1244, SpaceyLady, Spanky, spanky-spanky, spartak, SpartanKadence, SpeltIncorrectyl, Spessmann, SphiraI, SplinterGP, spoogemonster, sporekto, sporkyz, ssdaniel24, stalengd, stanberytrask, Stanislav4ix, StanTheCarpenter, Stealthbomber16, stellar-novas, stomf, stopbreaking, stopka-html, StrawberryMoses, Stray-Pyramid, strO0pwafel, Strol20, StStevens, Subversionary, sunbear-dev, superjj18, Supernorn, SweptWasTaken, Sybil, SYNCHRONIC, Szunti, Tainakov, takemysoult, TaralGit, Taran, taurie, Tayrtahn, tday93, teamaki, TekuNut, telyonok, TemporalOroboros, tentekal, terezi4real, Terraspark4941, texcruize, TGODiamond, TGRCdev, tgrkzus, ThatOneGoblin25, thatrandomcanadianguy, TheArturZh, theashtronaut, thecopbennet, TheCze, TheDarkElites, thedraccx, TheEmber, TheIntoxicatedCat, thekilk, themias, theomund, theOperand, TherapyGoth, TheShuEd, thetolbean, thevinter, TheWaffleJesus, Thinbug0, ThunderBear2006, timothyteakettle, TimrodDX, timurjavid, tin-man-tim, Titian3, tk-a369, tkdrg, tmtmtl30, TokenStyle, Tollhouse, Toly65, tom-leys, tomasalves8, Tomeno, Tonydatguy, topy, Tornado-Technology, tosatur, TotallyLemon, Tr1bute, tropicalhibi, truepaintgit, Truoizys, Tryded, TsjipTsjip, Tunguso4ka, TurboTrackerss14, TyAshley, Tyler-IN, Tyzemol, UbaserB, ubis1, UBlueberry, UKNOWH, UltimateJester, Unbelievable-Salmon, underscorex5, UnicornOnLSD, Unisol, Unkn0wnGh0st333, unusualcrow, Uriende, UristMcDorf, user424242420, Vaaankas, valentfingerov, Varen, VasilisThePikachu, veliebm, VelonacepsCalyxEggs, veprolet, veritable-calamity, Veritius, Vermidia, vero5123, Verslebas, VigersRay, violet754, Visne, VMSolidus, voidnull000, volotomite, volundr-, Voomra, Vordenburg, vorkathbruh, vulppine, wafehling, Warentan, WarMechanic, Watermelon914, waylon531, weaversam8, wertanchik, whateverusername0, Willhelm53, WilliamECrew, willicassi, Winkarst-cpu, wirdal, wixoaGit, WlarusFromDaSpace, wrexbe, wtcwr68, xkreksx, xprospero, xRiriq, YanehCheck, yathxyz, Ygg01, YotaXP, youarereadingthis, Yousifb26, youtissoum, YuriyKiss, zach-hill, Zadeon, zamp, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zero, ZeroDiamond, zerorulez, ZeWaka, zionnBE, ZNixian, ZoldorfTheWizard, Zonespace27, Zylofan, Zymem, zzylex From d9c677e91b8796aaa0a63aae6a84c309ed811338 Mon Sep 17 00:00:00 2001 From: SpaceRox1244 <138547931+SpaceRox1244@users.noreply.github.com> Date: Sat, 16 Nov 2024 22:27:29 -0500 Subject: [PATCH 129/187] Adds paper label visuals to closets and lockers (#33318) * Modifies label sprites and adds label visuals to closets * Removes redundant GenericVisualizer component --- .../Closets/Lockers/base_structurelockers.yml | 5 ++++ .../Storage/Closets/base_structureclosets.yml | 19 +++++++++++++++ .../Storage/Crates/labels.rsi/bounty.png | Bin 593 -> 192 bytes .../Crates/labels.rsi/captains_paper.png | Bin 594 -> 192 bytes .../Storage/Crates/labels.rsi/invoice.png | Bin 592 -> 192 bytes .../Storage/Crates/labels.rsi/meta.json | 4 +-- .../Storage/Crates/labels.rsi/paper.png | Bin 592 -> 182 bytes .../Storage/closet_labels.rsi/bounty.png | Bin 0 -> 185 bytes .../closet_labels.rsi/captains_paper.png | Bin 0 -> 185 bytes .../Storage/closet_labels.rsi/invoice.png | Bin 0 -> 185 bytes .../Storage/closet_labels.rsi/meta.json | 23 ++++++++++++++++++ .../Storage/closet_labels.rsi/paper.png | Bin 0 -> 179 bytes 12 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 Resources/Textures/Structures/Storage/closet_labels.rsi/bounty.png create mode 100644 Resources/Textures/Structures/Storage/closet_labels.rsi/captains_paper.png create mode 100644 Resources/Textures/Structures/Storage/closet_labels.rsi/invoice.png create mode 100644 Resources/Textures/Structures/Storage/closet_labels.rsi/meta.json create mode 100644 Resources/Textures/Structures/Storage/closet_labels.rsi/paper.png diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/base_structurelockers.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/base_structurelockers.yml index 7d7bc94bb32..8e2d1a6e54c 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/base_structurelockers.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/base_structurelockers.yml @@ -20,6 +20,11 @@ - state: welded visible: false map: ["enum.WeldableLayers.BaseWelded"] + - state: paper + visible: false + sprite: Structures/Storage/closet_labels.rsi + offset: "-0.065,0" + map: ["enum.PaperLabelVisuals.Layer"] - type: Destructible thresholds: - trigger: diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml index 9351a0d540c..2568c45a6ac 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml @@ -19,6 +19,10 @@ - state: welded visible: false map: ["enum.WeldableLayers.BaseWelded"] + - state: paper + visible: false + sprite: Structures/Storage/closet_labels.rsi + map: ["enum.PaperLabelVisuals.Layer"] - type: MovedByPressure - type: PaperLabel labelSlot: @@ -86,6 +90,21 @@ SheetSteel1: min: 1 max: 1 + - type: GenericVisualizer + visuals: + enum.PaperLabelVisuals.HasLabel: + enum.PaperLabelVisuals.Layer: + True: { visible: true } + False: { visible: false } + enum.StorageVisuals.Open: + enum.PaperLabelVisuals.Layer: + True: { visible: false } + enum.PaperLabelVisuals.LabelType: + enum.PaperLabelVisuals.Layer: + Paper: { state: paper } + Bounty: { state: bounty } + CaptainsPaper: { state: captains_paper } + Invoice: { state: invoice } - type: Appearance - type: EntityStorageVisuals stateBaseClosed: generic diff --git a/Resources/Textures/Structures/Storage/Crates/labels.rsi/bounty.png b/Resources/Textures/Structures/Storage/Crates/labels.rsi/bounty.png index 52e515e39b87c92c9c1601f94221ccaa7b9022d4..1258071a1a61a3784b3c57ccaf2b7661d263dbe0 100644 GIT binary patch delta 165 zcmV;W09yai1i%51BYyygNkl<ZScPL?7zLwX6pVsVFbYP&C>RB!V59>^S{PbaV)-AN zcvH`D4EtDU;ehWy|1o4I8KH<xop%naS|(aJfPsO5;p69@3|DTvVfgs@Cth_la{xat zJA<>GJlrvKcfiNbKN)V_eaG<l>1PIhUUr=7Xp#mP7#QG|@*Zoj6O4vYFtPyvrK2H^ TUNs0}00000NkvXXu0mjfCCEh0 delta 569 zcmV-90>=Ho0nr4IBYy#HX+uL$X=7sm04R}lk-JO7P!z_0wu;3E4myZ9WKeNX5Cw6R z3c6H>wt}xEjZG^wF(fTgTm=`0f`jPdYw$nNRd7`h1Vs>WboRAKiRU&#i_{x#&X4cj z?{M-3Lb04-d5x1`*?BiU6V(<Lm$c?r8i~+J4`JQ#oY};5l7D~K*F6oY-VLi>|KF>- zT36Ga0Syu1al>)*!ZHo9jl83HN4U$#>Z`&>!b7eMD15E-RKPEaGXZ}nc9Zcb2&tZ0 zriN2BY-C+acu=^{$`y>?dDNG*rS18I)E?Qrc*L0@ibje8Yvjl?EY+6G>ib42zB$&# zW60Z~h%1f^S%2{kiCU1ZX{n~@X?b!KRqlWD^vto*pnF>snx1|Cy&sx)p<MF)?_=LD zpFsEtF72v+U2>ZE6unf{`VOIE3(l{qT51n2wxRpc(OtbFg=L3K6W-3CeGxiup=CM9 z>i3+}2S{$pFS>#K0~nC|9V<W6o@e!(8FB{z000SaNPk�XT000XT0n*)m`~Uy| zib+I4R9Hu2U>F6XAut*OqaiRF0;3@?8UmvsFd71*Au!TIfRPpfP?~H0ADg+|lTTvU z$3hDSfXvKJGD0zW>b!GUtzx2;13rHK$#CVy8wL=K575j3{JiW8&UW%(yYV@KW)1*Z zdh6~xhBC)bKQn+FgA33s4J=uG6>jIjV~=PR)1&4NgAf1!GgKe%8rF^q00000NkvXX Hu0mjfjc5Zg diff --git a/Resources/Textures/Structures/Storage/Crates/labels.rsi/captains_paper.png b/Resources/Textures/Structures/Storage/Crates/labels.rsi/captains_paper.png index 961991bf349e71e7be007ec83fd2f148c114ee44..9a2c339936ad14b89c2c1ff6b49678c37922f8b9 100644 GIT binary patch delta 165 zcmcb_a)5Dyay>)4r;B4qL~C+_1nc4ik)EbN11`6N8X(RRX16GbsGv(9<Y!m-`!l!I z>TD@EaDM)M$w`wp1sr*HZgyL!uCT7m0U-GB^K^QfwE23Yntz`p*IUi9Y?$6Y{ouKC ztnVatSwHwZ{X9?k`+G?hzrF}E>+|dTm6~`m^YHK#c$>;y*~;m5SVQ6_1H&ax#kFR? RI(9Gsfv2mV%Q~loCIG;UMbiKP delta 570 zcmV-A0>%Bn0n!AJBYy#IX+uL$X=7sm04R}lk-JO7P!z_0wv`qiIMhKzB!h}W1yK-3 zsbCj%Xe(HCX<{Ejn}#GsimTw_AUKFFz6SpTT?JPKK~Mw{M`vG)lz6TcDpGH_IX}L8 zzr)EF@J$ztq7#^aqUqZ4SX7%&Eoi}K0)z-NPH)<9teM1Al7D~K$1P2&-VCW;|KDr4 zT9-490Zk#{F~hQ5VVQ>MRo7CyDcot~)62pK!Vy~r6uwltUgIalxf;JIwv+Km@Ts0! z?icI7*vQ*O;X&cPVxesO%%i@fEo06lq;|{h!68nJC>lCtRw&>yB-ND68vBO7eY2Fr zW60a0f-R05d4KUnL@i6#jMS{?8F>m+RPKNCbh4u(weD?EXnyp(*M10YLv_pZJ`X*w zdIbIlI5+G5lH@f0F8Wqo>)VHpbvV7KYx)kHZ9vz(mA2F0l3%tjn}wGXXiq`-8d?@> zS^b=Id<V%j`9)W-y9WbuzhmhOPYP%*Fjd-m00009aDPZya{vGf5&!@T5&_cPe*6Fc z0E$UOK~z{rV_+BsqaiRF0;3@?8UmvsFd71*Aut*OqaiTTLx7PM0g#(p{vVsUlP7m# z*vCQ(2Y}2>PRc?tdhWbwSgm5Bl><J1`OI+R=2Zp|jStYw0lYlC40d)dV7u`-f@Tf? zS$g;GEi;CvPaiRW9D@tcEDfw$wHR*a(W3`x71N{U4ucQ?08>aGjJ{g~3IG5A07*qo IM6N<$g7n+^Q2+n{ diff --git a/Resources/Textures/Structures/Storage/Crates/labels.rsi/invoice.png b/Resources/Textures/Structures/Storage/Crates/labels.rsi/invoice.png index 3e00e7d806875df92f79b001cda052714c5c7e6b..30649e06ee8de381fd8a9b052af8b91e80e47ef4 100644 GIT binary patch delta 165 zcmV;W09yah1i%51BYyygNkl<ZScPL?7zLwX6pVsVFbYP&C>RB!V59>^S{NEo*Zd!w z_=cuh4EtDU;eg-YzA?CD=Awx0nLZh-S|(aJfPsO5;rr)L3{S3IVfg;}6JB*Ra{wnV zAA`1&E8H=3cfj}0pBP@;zRB?R@goLKUOt@aXp#mP7#QG|${uLx5R8UVFtPyv+8QCR Tw1rF300000NkvXXu0mjfHQz`d delta 568 zcmV-80>}Np0nh}HBYy#GX+uL$X=7sm04R}lk-JO7P!z_0efU-!bP#dqP{pAIQ4mL| zpi6bA6?`pi`VyKnBq<`Uf{TOTAiDS({10>$TonXC5kwrFeJxVrxs6Z}d&AB7@!k6! zPQHLYUet6uI1akuSc$1vXntWa)bv7-78(f?Nolq@Jv*7C?tl8c!>8(PRQ0NV@88vy z$=VwDnuSL-({hAm8se*tsd!7cTPvh8!iT~UO9m9aQhM6sXT^Ds-xXWQ#02<N&rtps zr+=|luyo-;;jmsTYd`a-FKN#jbF)%=W%pr|V2T(a(v(@Dh(lDWA({Q}8>;$dD2Ydt zx5*loIPw(48-EeCEM2owbE0SEDYB+=|C^_s8yWVxx5uF2$#viQp=k#y+pha{<hqq( z2t2}tQS+B1r?C&ww`*GX06I6|?6Rh%cj0^!dLGP_m8wbs+5TJ(UQeN80lIFWb;--> z=bV#!NUqB-x`w@d7?As&%ikx`XdLfm?K1!X010qNS$}f?01FZT01FZU(%pXi0001r zNkl<ZSVv=E7zLvtFd71*Aut*OqaiRF0;3@?8UmvsFw#SSkrn~qT~hfUo4H$i+A-{7 zp@joLX1ZkNq8Pnr`edwDG11Ba-#>q1cyjFu1Bk{4XyyP;UOonGCs(lD_#8nq2Y@Vn zar-92+cC$F7(kA}1!$HAjxJdUxAVrq{j`edQFDhu2mk=Ne;>F6Bl!gY0000<MNUMn GLSTYLH3K~W diff --git a/Resources/Textures/Structures/Storage/Crates/labels.rsi/meta.json b/Resources/Textures/Structures/Storage/Crates/labels.rsi/meta.json index c180604984c..8ff0cc71798 100644 --- a/Resources/Textures/Structures/Storage/Crates/labels.rsi/meta.json +++ b/Resources/Textures/Structures/Storage/Crates/labels.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Sprites by Vermidia.", + "copyright": "Sprites by Vermidia and modified by SpaceRox1244.", "size": { "x": 32, "y": 32 @@ -20,4 +20,4 @@ "name": "invoice" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Storage/Crates/labels.rsi/paper.png b/Resources/Textures/Structures/Storage/Crates/labels.rsi/paper.png index 8daf7770832d0af33409e26f65458e3e2e460cc3..bd6c7138f62280ce804a4e3f778d50a850e99899 100644 GIT binary patch delta 155 zcmV;M0A&Br1hxT?BYyyWNkl<ZScUD<yA6Oa3<S^vQHMofjI0F81QD!9nzY#<Zc;*r zg!oma;a+K-;*(;4h=_=Y=<h0xN1b!))!ci3+Sh0lD5YQ=hQn-{=gVxZQ2+q42$m3# zMILi%1zKZZt=-FfULcDg#)y;>T4Qc=DmMUNU)p!w>o?H9Z4{StA)ox);{pHx002ov JPDHLkV1hyfMHB!4 delta 568 zcmV-80>}Nf0nh}HBYy#IX+uL$X=7sm04R}lk-JO7P!z_0wu;3E6?Bl|&_TsPK`Mx& zRIp2Rs1<xIY3xI2+K{A3aTQz~3J#)+ufhL7SHV?55EMbg(b?A`63=afinKS}oFCu4 z-{Is7_~Lopu$w2rC^%Lk77Z^fE`?iPXeK}x5ki`7n=^CMNq-uy&pVn_y&X}#8sDqC z+E>%I4ov~!aow~WVVQ>bx??Kd7Vgn=+N$uO@USHV3STKb<?*xPtjF()tz=>fe5z+S z`-fA1SkGC8@Q`r7kuT}L^QbTBNEhbkq=sboVUr+6lrSkutdYlIL~21YtM41F`erGL zN0+xr8A}{la)06-7PTZ@(^4~{r{&30R=NMr)6R@VyzU)QXnAtow*hF~f$xgzejT~) z_c8b%;i6FU7bT~O578?%t^WXmn{akn(^9)|z6HGxre<kX$uHZN$-wI=bS^^o4YVzL zS^b`Kau3N3`9;^Tw-1AIKe+M(GTmq)TFP1j00009aDPZya{vGf5&!@T5&_cPe*6Fc z0EkIMK~z{r?UJz(fFKYAU&k1$q8!YrfLtn|5{i(7ln$f;oi}jC5zRi)yM*j+XL%w7 z24DaNU;qYS00v+H2L5iKlMrC7-CDiQx!c|#0l=M;F_-Gu`{q<H1+dmiOG?D=Tf_iH zrATXiY%#w<hyn0u&Y4On#4t}0yMYkGxfx@W`f2ojz`zd3&mUFfM5z4$0000<MNUMn GLSTX+a|T}k diff --git a/Resources/Textures/Structures/Storage/closet_labels.rsi/bounty.png b/Resources/Textures/Structures/Storage/closet_labels.rsi/bounty.png new file mode 100644 index 0000000000000000000000000000000000000000..8146de6c6ec0800d860a802faad2ff6270d601eb GIT binary patch literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ22U5qkcigg1PRu~2_ijBfd*V| z2R+z(o@8j9HT~c3yQlh-=cKdAipLpwfZ(R5o5r7&pU+K9<rCh?_v6P;^}|!8^Cj%+ z{&}twoMPE9fBM{mH~r+^N$j$I@c8+Bp6&1UC0G3UV$5u>Z+(+b!J7Ag&eQ7&%Ppkb f4r+ibOkrj?WG1)3w5uZq=oSV~S3j3^P6<r_lG8+t literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/closet_labels.rsi/captains_paper.png b/Resources/Textures/Structures/Storage/closet_labels.rsi/captains_paper.png new file mode 100644 index 0000000000000000000000000000000000000000..d6c3de92fdb631864d34d05031e7e4bc143ee4d7 GIT binary patch literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ22U5qkcigg1PRu~2_ijBfd*V| z2R+z(o@AUltNXv-x8~Cmze#746^}FW0KrMmNR2-`KQEh@$|t;&@5i5~#)o@nhfCVk z|MXcWIK{GIdi(T)=gzUdlh|eb;PdqJJmv52B~|?TBFL=IuYZ$I!J7Ag&eeeH%Pgea g4r+ibOkrjyIVg8ziH!L{pj#L`UHx3vIVCg!0Q{##oB#j- literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/closet_labels.rsi/invoice.png b/Resources/Textures/Structures/Storage/closet_labels.rsi/invoice.png new file mode 100644 index 0000000000000000000000000000000000000000..7f1a3795b87cfb5cdd0252d65980a3ce48ea407f GIT binary patch literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ22U5qkcigg1PRu~2_ijBfd*V| z2R+z(o@9K|TluHow<g=)`sA~X6CN|L0m1Y$F(Uuwy_|f~sJ%0Wz2^U)&W9(rYV+K; zuUERxaZ2XE$<xOdynVt|&U07x!{5*9ZQ|SWjrP?3>1dohy+4P2!d$k5X{Rz?2FUP2 c?b^i1Ffmr{L}tBuHqb2$p00i_>zopr0FSFk0{{R3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/closet_labels.rsi/meta.json b/Resources/Textures/Structures/Storage/closet_labels.rsi/meta.json new file mode 100644 index 00000000000..3e64ac931c3 --- /dev/null +++ b/Resources/Textures/Structures/Storage/closet_labels.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Sprites by Vermidia and modified by SpaceRox1244.", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "paper" + }, + { + "name": "bounty" + }, + { + "name": "captains_paper" + }, + { + "name": "invoice" + } + ] +} diff --git a/Resources/Textures/Structures/Storage/closet_labels.rsi/paper.png b/Resources/Textures/Structures/Storage/closet_labels.rsi/paper.png new file mode 100644 index 0000000000000000000000000000000000000000..83b15b95a2bbd4f48c941c1c57ff7a10c0179154 GIT binary patch literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJDo+>3kcif|mp1Y?C<wGZT)wf* zwS?!}!b_4%lFV~6ZZ<?aX#4u)*a%7AyY6`CqdJ3tpkUx@tFwyl|9;#ipZv!r{{joc z0i*N%U!|I|{MPeoDBbub>*`{?Nbi6Y^Yc5hpQ{}N9lba$(<73vFut-ch_&iX{%R~B cxb-cI)?K+>51w;Q1iFI3)78&qol`;+04Nhd>;M1& literal 0 HcmV?d00001 From 96b9d1a714cc8692ca0ad75f952fe807d47d12ca Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Sun, 17 Nov 2024 03:28:38 +0000 Subject: [PATCH 130/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 7e70477996c..5675b73f3f9 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Emisse - changes: - - message: Atlas, Cluster, Europa, & Saltern removed from the game. - type: Remove - id: 7119 - time: '2024-08-15T21:10:07.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/31058 - author: Emisse changes: - message: Origin removed from the game. @@ -3923,3 +3916,10 @@ id: 7618 time: '2024-11-16T05:09:29.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/31761 +- author: SpaceRox1244 + changes: + - message: Closets and lockers now have visuals for being labeled with papers. + type: Add + id: 7619 + time: '2024-11-17T03:27:29.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33318 From f484118e2dfb62ec35b1b68753e71c214b6e2132 Mon Sep 17 00:00:00 2001 From: Spanky <scott@wearejacob.com> Date: Sun, 17 Nov 2024 01:35:41 -0500 Subject: [PATCH 131/187] Omega Update (Christmas Edition) (#33357) * Christmasift Omega station. * Add cryosleeper to bridge. --- Resources/Maps/omega.yml | 885 +++++++++++++++++++++++++++------------ 1 file changed, 621 insertions(+), 264 deletions(-) diff --git a/Resources/Maps/omega.yml b/Resources/Maps/omega.yml index 31e3fc7392a..8b9f9cb6fa3 100644 --- a/Resources/Maps/omega.yml +++ b/Resources/Maps/omega.yml @@ -57,71 +57,71 @@ entities: chunks: -1,0: ind: -1,0 - tiles: PgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADdgAAAAAAdgAAAAACHQAAAAADeQAAAAAADgAAAAADWQAAAAAAWQAAAAACWQAAAAADWQAAAAADWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADdgAAAAACdgAAAAACHQAAAAABeQAAAAAADgAAAAAAWQAAAAAAWQAAAAADWQAAAAADWQAAAAACWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAdgAAAAABeQAAAAAAeQAAAAAADgAAAAAAWQAAAAAAWQAAAAACWQAAAAAAWQAAAAADWQAAAAACaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAHQAAAAACdgAAAAABdgAAAAABdgAAAAAAHQAAAAABDgAAAAABWQAAAAAAWQAAAAADWQAAAAACWQAAAAADWQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAHQAAAAABdgAAAAADdgAAAAACdgAAAAAAHQAAAAADDgAAAAABWQAAAAABWQAAAAACWQAAAAADWQAAAAADWQAAAAACaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAHQAAAAACdgAAAAABdgAAAAABdgAAAAACHQAAAAACDgAAAAACWQAAAAACWQAAAAAAWQAAAAABWQAAAAAAWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAdgAAAAADdgAAAAADdgAAAAAAHQAAAAACDgAAAAAAWQAAAAADWQAAAAAAWQAAAAAAWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAdgAAAAAAdgAAAAACdgAAAAADHQAAAAACDgAAAAADWQAAAAABWQAAAAABWQAAAAADWQAAAAACWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADdgAAAAADdgAAAAAAdgAAAAADHQAAAAAADgAAAAABWQAAAAADWQAAAAABWQAAAAAAWQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAdgAAAAADdgAAAAAAdgAAAAADHQAAAAAADgAAAAACDgAAAAABWQAAAAADWQAAAAAAWQAAAAACDgAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABDgAAAAADWQAAAAACWQAAAAADWQAAAAAADgAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABDgAAAAACDgAAAAAADgAAAAACDgAAAAACDgAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAADgAAAAABDgAAAAABDgAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAAWQAAAAADWQAAAAAAWQAAAAABWQAAAAACWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAAAWQAAAAADWQAAAAACWQAAAAAAeQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAACWQAAAAAAeQAAAAAA + tiles: PgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACdgAAAAAAdgAAAAADHQAAAAABeQAAAAAADgAAAAAAWQAAAAAAWQAAAAADWQAAAAADWQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADdgAAAAADdgAAAAABHQAAAAAAeQAAAAAADgAAAAABWQAAAAABWQAAAAAAWQAAAAACWQAAAAACWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAdgAAAAABeQAAAAAAeQAAAAAADgAAAAACWQAAAAACWQAAAAAAWQAAAAADWQAAAAABWQAAAAACaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAdgAAAAABdgAAAAACdgAAAAACHQAAAAAADgAAAAACWQAAAAACWQAAAAABWQAAAAABWQAAAAAAWQAAAAACaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAHQAAAAADdgAAAAACdgAAAAADdgAAAAABHQAAAAABDgAAAAADWQAAAAAAWQAAAAAAWQAAAAABWQAAAAABWQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAdgAAAAABdgAAAAACdgAAAAABHQAAAAADDgAAAAACWQAAAAADWQAAAAABWQAAAAAAWQAAAAADWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADdgAAAAADdgAAAAADdgAAAAACHQAAAAABDgAAAAAAWQAAAAABWQAAAAACWQAAAAAAWQAAAAACWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACdgAAAAACdgAAAAABdgAAAAAAHQAAAAADDgAAAAADWQAAAAADWQAAAAACWQAAAAACWQAAAAABWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAdgAAAAADdgAAAAABdgAAAAACHQAAAAABDgAAAAACWQAAAAABWQAAAAADWQAAAAACWQAAAAADWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACdgAAAAADdgAAAAADdgAAAAACHQAAAAAADgAAAAADDgAAAAADWQAAAAACWQAAAAACWQAAAAADDgAAAAABaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABDgAAAAABWQAAAAAAWQAAAAADWQAAAAACDgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADDgAAAAACDgAAAAACDgAAAAAADgAAAAAADgAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAADgAAAAAADgAAAAACDgAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAAWQAAAAADWQAAAAABWQAAAAAAWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAACWQAAAAACWQAAAAABWQAAAAACeQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAADWQAAAAACeQAAAAAA version: 6 0,0: ind: 0,0 - tiles: DgAAAAABeQAAAAAAHQAAAAAAHQAAAAADHQAAAAACHQAAAAABHQAAAAADHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAADgAAAAAAeQAAAAAAeQAAAAAAHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAACWQAAAAACeQAAAAAAeQAAAAAADgAAAAABDgAAAAADDgAAAAADDgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAACWQAAAAACeQAAAAAAeQAAAAAADgAAAAABDgAAAAABDgAAAAACDgAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAAWQAAAAAAWQAAAAABWQAAAAADeQAAAAAAeQAAAAAADgAAAAAAHQAAAAAAHQAAAAACHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAAAWQAAAAACeQAAAAAAeQAAAAAADgAAAAABHQAAAAABHQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAADgAAAAADHQAAAAACHQAAAAADHQAAAAACHQAAAAADHQAAAAADHQAAAAADHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAAAeQAAAAAALAAAAAAALAAAAAAADgAAAAAAHQAAAAADHQAAAAADHQAAAAADdgAAAAAAdgAAAAABdgAAAAAAdgAAAAACaQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAAALAAAAAAALAAAAAAALAAAAAAADgAAAAABHQAAAAADHQAAAAAAHQAAAAADeQAAAAAAdgAAAAADdgAAAAABdgAAAAABeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAADeQAAAAAALAAAAAAALAAAAAAADgAAAAACHQAAAAADHQAAAAAAHQAAAAAAeQAAAAAAdgAAAAAAdgAAAAABdgAAAAACeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAABeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAWQAAAAABWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAACeQAAAAAAWQAAAAAAWQAAAAADaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACWQAAAAABWQAAAAAAWQAAAAAAHQAAAAAAeQAAAAAAWQAAAAAAWQAAAAACWQAAAAABWQAAAAACWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADWQAAAAABWQAAAAAAWQAAAAABHQAAAAABeQAAAAAAWQAAAAABWQAAAAADWQAAAAADWQAAAAAAWQAAAAAB + tiles: DgAAAAAAeQAAAAAAHQAAAAADHQAAAAAAHQAAAAABHQAAAAABHQAAAAACHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAADgAAAAAAeQAAAAAAeQAAAAAAHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAAAWQAAAAACeQAAAAAAeQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAACWQAAAAABeQAAAAAAeQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAAWQAAAAACWQAAAAACWQAAAAAAeQAAAAAAeQAAAAAADgAAAAACeQAAAAAAHQAAAAACHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAABWQAAAAABeQAAAAAAeQAAAAAADgAAAAADHQAAAAACHQAAAAACHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAADgAAAAABHQAAAAAAHQAAAAACHQAAAAABHQAAAAADHQAAAAAAHQAAAAACHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAACeQAAAAAALAAAAAAALAAAAAAADgAAAAAAHQAAAAABHQAAAAABHQAAAAACdgAAAAADdgAAAAACdgAAAAABdgAAAAACaQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAADLAAAAAAALAAAAAAALAAAAAAADgAAAAADHQAAAAADHQAAAAACHQAAAAAAeQAAAAAAdgAAAAABdgAAAAAAdgAAAAACeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAABeQAAAAAALAAAAAAALAAAAAAADgAAAAADHQAAAAABHQAAAAABHQAAAAADeQAAAAAAdgAAAAABdgAAAAAAdgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAADeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAWQAAAAACWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAABeQAAAAAAWQAAAAABWQAAAAABaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAWQAAAAADWQAAAAACWQAAAAAAHQAAAAABeQAAAAAAWQAAAAABWQAAAAAAWQAAAAABWQAAAAADWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABWQAAAAACWQAAAAABWQAAAAADHQAAAAACeQAAAAAAWQAAAAADWQAAAAABWQAAAAADWQAAAAACWQAAAAAA version: 6 -1,1: ind: -1,1 - tiles: eQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAWQAAAAADWQAAAAABWQAAAAADWQAAAAACWQAAAAACWQAAAAAAeQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAWQAAAAADWQAAAAACWQAAAAACWQAAAAAAWQAAAAABWQAAAAAAeQAAAAAAeQAAAAAAAQAAAAAAeQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAABWQAAAAABWQAAAAAAWQAAAAACWQAAAAAAWQAAAAABWQAAAAABWQAAAAABWQAAAAAAWQAAAAADWQAAAAABWQAAAAAAWQAAAAACWQAAAAAAWQAAAAAAWQAAAAADWQAAAAABAgAAAAAAAgAAAAAAAgAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAABWQAAAAADWQAAAAADWQAAAAAAWQAAAAADWQAAAAABWQAAAAABWQAAAAACWQAAAAACWQAAAAABWQAAAAABWQAAAAABWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAdgAAAAAAdgAAAAAAdgAAAAAAdgAAAAADdgAAAAABeQAAAAAAHQAAAAABHQAAAAACeQAAAAAAHQAAAAADNgAAAAAANgAAAAAAHQAAAAABNgAAAAAANgAAAAAAHQAAAAABdgAAAAABdgAAAAAAdgAAAAADdgAAAAAAdgAAAAABdgAAAAACHQAAAAADHQAAAAADeQAAAAAAHQAAAAACNgAAAAAAHQAAAAACHQAAAAABHQAAAAADNgAAAAAAHQAAAAABdgAAAAACdgAAAAABdgAAAAAAdgAAAAACdgAAAAABeQAAAAAAHQAAAAAAHQAAAAABeQAAAAAAHQAAAAAANgAAAAAANgAAAAAANgAAAAAANgAAAAAANgAAAAAAHQAAAAABeQAAAAAAdgAAAAAAdgAAAAACdgAAAAAAdgAAAAACeQAAAAAAHQAAAAABHQAAAAABeQAAAAAAHQAAAAADNgAAAAAANgAAAAAANgAAAAAANgAAAAAANgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAdgAAAAABeQAAAAAAeQAAAAAAHQAAAAADHQAAAAAAeQAAAAAAHQAAAAAAHQAAAAACHQAAAAADNgAAAAAAHQAAAAADHQAAAAACUAAAAAAAeQAAAAAAdgAAAAAAdgAAAAAAdgAAAAAAdgAAAAADeQAAAAAAHQAAAAACHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAALAAAAAAALAAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAHQAAAAAAHQAAAAABHQAAAAACHQAAAAACPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAALAAAAAAAeQAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAHQAAAAADHQAAAAABHQAAAAADHQAAAAABPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADHQAAAAABHQAAAAAAHQAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAABwAAAAAABwAAAAAABwAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAHQAAAAABHQAAAAABeQAAAAAAHQAAAAAAHQAAAAACHQAAAAADHQAAAAAAHQAAAAACHQAAAAAD + tiles: eQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAWQAAAAADWQAAAAACWQAAAAACWQAAAAACWQAAAAABWQAAAAADeQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAWQAAAAACWQAAAAACWQAAAAADWQAAAAADWQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAAQAAAAAAeQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAAAWQAAAAAAWQAAAAADWQAAAAACWQAAAAAAWQAAAAAAWQAAAAABWQAAAAABWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAADWQAAAAACWQAAAAADWQAAAAABWQAAAAAAWQAAAAAAAgAAAAABAgAAAAABAgAAAAABWQAAAAACWQAAAAACWQAAAAACWQAAAAAAWQAAAAADWQAAAAADWQAAAAABWQAAAAACWQAAAAACWQAAAAABWQAAAAAAWQAAAAACWQAAAAACWQAAAAAAWQAAAAACWQAAAAABWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABeQAAAAAAeQAAAAAAHQAAAAABdgAAAAACdgAAAAADdgAAAAADdgAAAAAAdgAAAAACeQAAAAAAHQAAAAABHQAAAAADeQAAAAAAHQAAAAADNgAAAAAANgAAAAAAHQAAAAABNgAAAAAANgAAAAAAHQAAAAABdgAAAAABdgAAAAABdgAAAAADdgAAAAADdgAAAAACdgAAAAAAHQAAAAAAHQAAAAACeQAAAAAAHQAAAAAANgAAAAAAHQAAAAACHQAAAAADHQAAAAAANgAAAAAAHQAAAAAAdgAAAAACdgAAAAABdgAAAAABdgAAAAAAdgAAAAAAeQAAAAAAHQAAAAAAHQAAAAABeQAAAAAAHQAAAAAANgAAAAAANgAAAAAANgAAAAAANgAAAAAANgAAAAAAHQAAAAAAeQAAAAAAdgAAAAACdgAAAAACdgAAAAACdgAAAAABeQAAAAAAHQAAAAAAHQAAAAADeQAAAAAAHQAAAAADNgAAAAAANgAAAAAANgAAAAAANgAAAAAANgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAdgAAAAACeQAAAAAAeQAAAAAAHQAAAAABHQAAAAADeQAAAAAAHQAAAAABHQAAAAAAHQAAAAAANgAAAAAAHQAAAAAAHQAAAAABUAAAAAAAeQAAAAAAdgAAAAADdgAAAAABdgAAAAACdgAAAAACeQAAAAAAHQAAAAACHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAALAAAAAAALAAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAHQAAAAADHQAAAAAAHQAAAAADHQAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAALAAAAAAAeQAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAHQAAAAABHQAAAAABHQAAAAACHQAAAAABPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAHQAAAAADHQAAAAABPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAHQAAAAADHQAAAAAAeQAAAAAAHQAAAAACHQAAAAACHQAAAAACHQAAAAADHQAAAAACHQAAAAAA version: 6 0,1: ind: 0,1 - tiles: WQAAAAACeQAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAHQAAAAADWQAAAAADWQAAAAACWQAAAAACHQAAAAAAeQAAAAAAWQAAAAABWQAAAAADeQAAAAAAeQAAAAAAWQAAAAADWQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAHQAAAAAAWQAAAAACWQAAAAADWQAAAAACHQAAAAABeQAAAAAAWQAAAAACWQAAAAACeQAAAAAAWQAAAAABWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABeQAAAAAAWQAAAAACeQAAAAAAeQAAAAAAWQAAAAACWQAAAAAAeQAAAAAAWQAAAAABWQAAAAADWQAAAAACWQAAAAAAWQAAAAABWQAAAAABWQAAAAACWQAAAAABWQAAAAADWQAAAAABWQAAAAACWQAAAAAAWQAAAAAAWQAAAAABWQAAAAADeQAAAAAAWQAAAAADWQAAAAACWQAAAAACWQAAAAADWQAAAAADWQAAAAADWQAAAAABWQAAAAACWQAAAAAAWQAAAAABWQAAAAACWQAAAAACWQAAAAABWQAAAAAAWQAAAAADWQAAAAAAWQAAAAABWQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADHQAAAAAAeQAAAAAAWQAAAAACLwAAAAAALwAAAAAALwAAAAAAWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAACHQAAAAABeQAAAAAAHQAAAAADHQAAAAACeQAAAAAAWQAAAAADWQAAAAADWQAAAAABWQAAAAACWQAAAAADHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABHQAAAAADeQAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAABHQAAAAADeQAAAAAAHQAAAAACHQAAAAAAeQAAAAAAdgAAAAACdgAAAAADdgAAAAADdgAAAAADdgAAAAABHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAABHQAAAAADeQAAAAAAHQAAAAACHQAAAAACHQAAAAADdgAAAAABdgAAAAACdgAAAAADdgAAAAAAdgAAAAADHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAAAHQAAAAADeQAAAAAAHQAAAAACHQAAAAAAeQAAAAAAHQAAAAABHQAAAAAAHQAAAAABHQAAAAABHQAAAAADHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAADeQAAAAAAeQAAAAAAHQAAAAACHQAAAAADeQAAAAAAeQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAADHQAAAAADHQAAAAADHQAAAAAAHQAAAAABeQAAAAAAHQAAAAACdgAAAAABdgAAAAADdgAAAAABUAAAAAAAUAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADHQAAAAADHQAAAAACHQAAAAACHQAAAAACeQAAAAAAHQAAAAAAdgAAAAACdgAAAAACdgAAAAACeQAAAAAAUAAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAWQAAAAACHQAAAAADHQAAAAACHQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAUAAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAWQAAAAADHQAAAAAAeQAAAAAAHQAAAAADHQAAAAACeQAAAAAAHQAAAAADHQAAAAADeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAC + tiles: WQAAAAACeQAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAHQAAAAAAWQAAAAABWQAAAAAAWQAAAAADHQAAAAAAeQAAAAAAWQAAAAACWQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAACeQAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAHQAAAAABWQAAAAACWQAAAAAAWQAAAAADHQAAAAAAeQAAAAAAWQAAAAACWQAAAAADeQAAAAAAWQAAAAADWQAAAAAAWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABeQAAAAAAWQAAAAADeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAeQAAAAAAWQAAAAADWQAAAAADWQAAAAABWQAAAAAAWQAAAAABWQAAAAACWQAAAAAAWQAAAAADWQAAAAADWQAAAAADWQAAAAAAWQAAAAACWQAAAAACWQAAAAABWQAAAAADeQAAAAAAWQAAAAACWQAAAAAAWQAAAAAAWQAAAAADWQAAAAAAWQAAAAAAWQAAAAADWQAAAAAAWQAAAAAAWQAAAAADWQAAAAADWQAAAAACWQAAAAACWQAAAAADWQAAAAABWQAAAAADWQAAAAABWQAAAAABeQAAAAAAeQAAAAAAHQAAAAABHQAAAAAAeQAAAAAAWQAAAAACLwAAAAAALwAAAAAALwAAAAAAWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAACHQAAAAADeQAAAAAAHQAAAAACHQAAAAABeQAAAAAAWQAAAAABWQAAAAACWQAAAAAAWQAAAAAAWQAAAAABHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACHQAAAAABeQAAAAAAHQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAAAHQAAAAACeQAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAdgAAAAABdgAAAAAAdgAAAAAAdgAAAAADdgAAAAAAHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAACHQAAAAACeQAAAAAAHQAAAAADHQAAAAADHQAAAAADdgAAAAABdgAAAAAAdgAAAAACdgAAAAACdgAAAAAAHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAADHQAAAAADeQAAAAAAHQAAAAADHQAAAAABeQAAAAAAHQAAAAACHQAAAAABHQAAAAACHQAAAAAAHQAAAAACHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABHQAAAAABeQAAAAAAeQAAAAAAHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAAAHQAAAAADHQAAAAADHQAAAAACHQAAAAADeQAAAAAAHQAAAAACdgAAAAACdgAAAAACdgAAAAACUAAAAAAAUAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAHQAAAAADHQAAAAAAHQAAAAACHQAAAAAAeQAAAAAAHQAAAAAAdgAAAAADdgAAAAABdgAAAAABeQAAAAAAUAAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAWQAAAAADHQAAAAABHQAAAAABHQAAAAACHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAUAAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAWQAAAAAAHQAAAAAAeQAAAAAAHQAAAAADHQAAAAAAeQAAAAAAHQAAAAABaAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAC version: 6 0,-1: ind: 0,-1 - tiles: WQAAAAADWQAAAAABeQAAAAAAWQAAAAABWQAAAAAAWQAAAAACWQAAAAABHQAAAAAAeQAAAAAAHQAAAAAAHQAAAAADaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAADeQAAAAAAWQAAAAACWQAAAAACWQAAAAAAWQAAAAAAHQAAAAACeQAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABeQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAABWQAAAAADWQAAAAAAWQAAAAAAWQAAAAACWQAAAAABWQAAAAACWQAAAAAAWQAAAAACWQAAAAAAWQAAAAABWQAAAAAAHQAAAAADeQAAAAAAeAAAAAAAWQAAAAADWQAAAAABWQAAAAADWQAAAAACWQAAAAADWQAAAAABWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAADWQAAAAABWQAAAAADWQAAAAABHQAAAAADeQAAAAAAeAAAAAAAeQAAAAAAHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAACWQAAAAACeQAAAAAAeAAAAAAAHQAAAAABaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAAAWQAAAAAAeQAAAAAAeQAAAAAADgAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAALAAAAAAALAAAAAAALAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAACWQAAAAAAaQAAAAAAeQAAAAAADgAAAAABeQAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAABWQAAAAABeQAAAAAAeQAAAAAADgAAAAAAeQAAAAAALAAAAAAALAAAAAAALAAAAAAAWQAAAAACWQAAAAACWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAaAAAAAAADgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAADWQAAAAAAeQAAAAAAeQAAAAAADgAAAAAAeQAAAAAAHQAAAAADHQAAAAACHQAAAAACHQAAAAACHQAAAAAAHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAACWQAAAAADWQAAAAAAWQAAAAABDgAAAAACeQAAAAAAJAAAAAADJAAAAAABJAAAAAACJAAAAAACJAAAAAABJAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAAAWQAAAAACWQAAAAABWQAAAAAADgAAAAADeQAAAAAAJAAAAAADJAAAAAAAJAAAAAADJAAAAAABJAAAAAACJAAAAAABaQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAABWQAAAAAAeQAAAAAAeQAAAAAADgAAAAABeQAAAAAAJAAAAAABJAAAAAADJAAAAAACJAAAAAADJAAAAAAAJAAAAAABeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAACWQAAAAADeQAAAAAAeQAAAAAA + tiles: WQAAAAAAWQAAAAADeQAAAAAAWQAAAAACWQAAAAACWQAAAAAAWQAAAAADHQAAAAABeQAAAAAAHQAAAAAAHQAAAAACaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAADeQAAAAAAWQAAAAABWQAAAAADWQAAAAACWQAAAAABHQAAAAADeQAAAAAAHQAAAAACHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADeQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAACWQAAAAACWQAAAAADWQAAAAADWQAAAAAAWQAAAAACWQAAAAACWQAAAAABWQAAAAACWQAAAAAAWQAAAAAAWQAAAAACHQAAAAAAeQAAAAAAeAAAAAAAWQAAAAABWQAAAAABWQAAAAADWQAAAAADWQAAAAACWQAAAAABWQAAAAABWQAAAAABWQAAAAADWQAAAAAAWQAAAAABWQAAAAACWQAAAAABHQAAAAACeQAAAAAAeAAAAAAAeQAAAAAAHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAABeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAADWQAAAAADeQAAAAAAeAAAAAAAHQAAAAACaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAADWQAAAAACeQAAAAAAeQAAAAAADgAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAALAAAAAAALAAAAAAALAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAABWQAAAAABaQAAAAAAeQAAAAAADgAAAAAAeQAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAABWQAAAAABeQAAAAAAeQAAAAAADgAAAAADeQAAAAAALAAAAAAALAAAAAAALAAAAAAAWQAAAAABWQAAAAACWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAACeQAAAAAAeQAAAAAAaAAAAAAADgAAAAABeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAAAWQAAAAABeQAAAAAAeQAAAAAADgAAAAACeQAAAAAAHQAAAAAAHQAAAAACHQAAAAAAHQAAAAAAHQAAAAADHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAADWQAAAAABWQAAAAACWQAAAAABDgAAAAACeQAAAAAAJAAAAAABJAAAAAADJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAACeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAADWQAAAAABWQAAAAABWQAAAAADDgAAAAACeQAAAAAAJAAAAAACJAAAAAACJAAAAAAAJAAAAAADJAAAAAADJAAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAAAWQAAAAABeQAAAAAAeQAAAAAADgAAAAADeQAAAAAAJAAAAAABJAAAAAABJAAAAAADJAAAAAAAJAAAAAAAJAAAAAACeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAABWQAAAAAAeQAAAAAAeQAAAAAA version: 6 -1,-1: ind: -1,-1 - tiles: bAAAAAADbAAAAAABeQAAAAAAbAAAAAAAbAAAAAABbAAAAAABbAAAAAABbAAAAAAAeQAAAAAAWQAAAAADWQAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAbAAAAAACbAAAAAABbAAAAAAAbAAAAAACbAAAAAAAeQAAAAAAWQAAAAABWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAADWQAAAAABWQAAAAACWQAAAAAAWQAAAAABWQAAAAACWQAAAAAAWQAAAAABWQAAAAABWQAAAAABWQAAAAADWQAAAAADWQAAAAACWQAAAAABWQAAAAACWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAADWQAAAAAAWQAAAAAAWQAAAAADWQAAAAAAWQAAAAAAWQAAAAACWQAAAAABWQAAAAACWQAAAAADWQAAAAACWQAAAAACWQAAAAADWQAAAAADWQAAAAADWQAAAAABWQAAAAABWQAAAAAAWQAAAAABWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAOgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAABWQAAAAABWQAAAAABWQAAAAAAHQAAAAABHQAAAAABHQAAAAABHQAAAAACHQAAAAADOgAAAAAAHQAAAAABLwAAAAAALwAAAAAALwAAAAAAeQAAAAAAeQAAAAAADgAAAAADDgAAAAABDgAAAAAAeQAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAALwAAAAAALwAAAAAAeQAAAAAAeQAAAAAADgAAAAABDgAAAAADDgAAAAADDgAAAAACDgAAAAACHQAAAAADHQAAAAABHQAAAAAAHQAAAAACHQAAAAABOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAWQAAAAABDgAAAAACDgAAAAABWQAAAAADWQAAAAADWQAAAAADDgAAAAACOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAWQAAAAACDgAAAAACWQAAAAACWQAAAAADWQAAAAABWQAAAAABWQAAAAABHQAAAAAAHQAAAAAAHQAAAAACHQAAAAADHQAAAAABHQAAAAADHQAAAAAAHQAAAAADHQAAAAADWQAAAAACDgAAAAADWQAAAAABWQAAAAAAWQAAAAAAWQAAAAABWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAADgAAAAADWQAAAAADWQAAAAACWQAAAAACWQAAAAACWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAADgAAAAACWQAAAAACWQAAAAAAWQAAAAACWQAAAAABWQAAAAACPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAADgAAAAACWQAAAAABWQAAAAACWQAAAAADWQAAAAABWQAAAAABPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABHQAAAAADHQAAAAAAHQAAAAABeQAAAAAADgAAAAAAWQAAAAAAWQAAAAABWQAAAAADWQAAAAABWQAAAAACPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADdgAAAAACdgAAAAACHQAAAAABHQAAAAAADgAAAAABWQAAAAACWQAAAAAAWQAAAAAAWQAAAAADWQAAAAAC + tiles: bAAAAAACbAAAAAACeQAAAAAAbAAAAAACbAAAAAACbAAAAAADbAAAAAACbAAAAAADeQAAAAAAWQAAAAADWQAAAAACPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAbAAAAAAAbAAAAAACbAAAAAABbAAAAAABbAAAAAADeQAAAAAAWQAAAAAAWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAACWQAAAAABWQAAAAADWQAAAAAAWQAAAAABWQAAAAACWQAAAAABWQAAAAACWQAAAAACWQAAAAADWQAAAAAAWQAAAAAAWQAAAAADWQAAAAACWQAAAAACWQAAAAADWQAAAAADWQAAAAACWQAAAAABWQAAAAABWQAAAAADWQAAAAABWQAAAAABWQAAAAACWQAAAAADWQAAAAADWQAAAAADWQAAAAADWQAAAAABWQAAAAABWQAAAAABWQAAAAACWQAAAAACWQAAAAABWQAAAAADWQAAAAACWQAAAAACWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAOgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAACWQAAAAACWQAAAAACWQAAAAAAHQAAAAAAHQAAAAADHQAAAAAAHQAAAAABHQAAAAAAOgAAAAAAHQAAAAABLwAAAAAALwAAAAAALwAAAAAAeQAAAAAAeQAAAAAADgAAAAACDgAAAAADDgAAAAACeQAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAALwAAAAAALwAAAAAAeQAAAAAAeQAAAAAADgAAAAADDgAAAAABDgAAAAAADgAAAAABDgAAAAACHQAAAAACHQAAAAAAHQAAAAADHQAAAAAAHQAAAAADOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAWQAAAAABDgAAAAAADgAAAAAAWQAAAAAAWQAAAAAAWQAAAAAADgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAWQAAAAADDgAAAAAAWQAAAAABWQAAAAAAWQAAAAAAWQAAAAABWQAAAAACHQAAAAACHQAAAAADHQAAAAADHQAAAAADHQAAAAABHQAAAAACHQAAAAACHQAAAAABHQAAAAADWQAAAAABDgAAAAACWQAAAAABWQAAAAABWQAAAAAAWQAAAAABWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAADgAAAAADWQAAAAACWQAAAAACWQAAAAABWQAAAAADWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAADgAAAAACWQAAAAABWQAAAAACWQAAAAACWQAAAAAAWQAAAAACPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAADgAAAAABWQAAAAACWQAAAAADWQAAAAAAWQAAAAADWQAAAAADPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAADHQAAAAACHQAAAAACeQAAAAAADgAAAAABWQAAAAACWQAAAAADWQAAAAACWQAAAAABWQAAAAABPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADdgAAAAACdgAAAAADHQAAAAADHQAAAAABDgAAAAABWQAAAAAAWQAAAAACWQAAAAABWQAAAAADWQAAAAAB version: 6 -2,1: ind: -2,1 - tiles: WQAAAAACWQAAAAADWQAAAAAAWQAAAAACWQAAAAAAWQAAAAAAWQAAAAABeQAAAAAAWQAAAAACWQAAAAABdgAAAAADdgAAAAAAdgAAAAABdgAAAAABdgAAAAADdgAAAAABWQAAAAADWQAAAAACWQAAAAACWQAAAAADeQAAAAAAWQAAAAADWQAAAAACeQAAAAAAWQAAAAADWQAAAAAAeQAAAAAAdgAAAAABdgAAAAABdgAAAAACdgAAAAACdgAAAAACWQAAAAADWQAAAAACWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAdgAAAAABeQAAAAAAWQAAAAABWQAAAAABWQAAAAACWQAAAAADWQAAAAAAWQAAAAABWQAAAAACeQAAAAAAWQAAAAACWQAAAAADWQAAAAABWQAAAAABWQAAAAADWQAAAAABWQAAAAADWQAAAAADWQAAAAACWQAAAAADWQAAAAACWQAAAAACeQAAAAAAWQAAAAAAWQAAAAADeQAAAAAAWQAAAAACWQAAAAAAWQAAAAACWQAAAAACWQAAAAAAWQAAAAADWQAAAAAAWQAAAAABeQAAAAAAHQAAAAACHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABHQAAAAADHQAAAAACHQAAAAABHQAAAAABHQAAAAADHQAAAAADeQAAAAAAHQAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABHQAAAAABHQAAAAABHQAAAAABHQAAAAACHQAAAAAAHQAAAAACHQAAAAADHQAAAAACPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACHQAAAAACHQAAAAAAHQAAAAABHQAAAAABHQAAAAAAHQAAAAADeQAAAAAAHQAAAAABPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAHQAAAAACeQAAAAAAWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACeQAAAAAAeQAAAAAAHQAAAAADdgAAAAAAdgAAAAAAdgAAAAACdgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAAAWQAAAAABeQAAAAAAWQAAAAAAWQAAAAADWQAAAAABeQAAAAAAeQAAAAAAdgAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAABWQAAAAACeQAAAAAAWQAAAAACWQAAAAADWQAAAAAAeQAAAAAAHQAAAAABdgAAAAABdgAAAAADUAAAAAAAUAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACdgAAAAACdgAAAAAAeQAAAAAAUAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAACWQAAAAACWQAAAAABWQAAAAAAWQAAAAADHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAUAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAADHQAAAAACeQAAAAAABwAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAADWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAACHQAAAAABeQAAAAAABwAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAA + tiles: WQAAAAABWQAAAAACWQAAAAAAWQAAAAACWQAAAAABWQAAAAABWQAAAAABeQAAAAAAWQAAAAAAWQAAAAADdgAAAAACdgAAAAAAdgAAAAACdgAAAAAAdgAAAAADdgAAAAAAWQAAAAABWQAAAAABWQAAAAACWQAAAAADeQAAAAAAWQAAAAAAWQAAAAADeQAAAAAAWQAAAAADWQAAAAAAeQAAAAAAdgAAAAABdgAAAAADdgAAAAABdgAAAAADdgAAAAABWQAAAAADWQAAAAABWQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAdgAAAAADeQAAAAAAWQAAAAADWQAAAAADWQAAAAABWQAAAAAAWQAAAAAAWQAAAAABWQAAAAACeQAAAAAAWQAAAAAAWQAAAAACWQAAAAADWQAAAAADWQAAAAABWQAAAAADWQAAAAAAWQAAAAACWQAAAAADWQAAAAADWQAAAAADWQAAAAACeQAAAAAAWQAAAAACWQAAAAADeQAAAAAAWQAAAAADWQAAAAAAWQAAAAADWQAAAAACWQAAAAACWQAAAAACWQAAAAADWQAAAAADeQAAAAAAHQAAAAACHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABHQAAAAACHQAAAAADHQAAAAACHQAAAAAAHQAAAAABHQAAAAAAeQAAAAAAHQAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABHQAAAAABHQAAAAABHQAAAAAAHQAAAAACHQAAAAADHQAAAAABHQAAAAAAHQAAAAABPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABHQAAAAABHQAAAAACHQAAAAAAHQAAAAAAHQAAAAACHQAAAAAAeQAAAAAAHQAAAAADPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAHQAAAAADeQAAAAAAWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAdgAAAAABdgAAAAAAdgAAAAADdgAAAAADeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAACWQAAAAACeQAAAAAAWQAAAAACWQAAAAABWQAAAAAAeQAAAAAAeQAAAAAAdgAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAADWQAAAAACeQAAAAAAWQAAAAACWQAAAAAAWQAAAAABeQAAAAAAHQAAAAADdgAAAAAAdgAAAAAAUAAAAAAAUAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAHQAAAAABdgAAAAABdgAAAAACeQAAAAAAUAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAADWQAAAAADWQAAAAABWQAAAAADWQAAAAABHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAUAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAADWQAAAAACWQAAAAADWQAAAAAAWQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAAAWQAAAAACWQAAAAABWQAAAAACWQAAAAACHQAAAAAAeQAAAAAABwAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAA version: 6 -2,0: ind: -2,0 - tiles: eQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAAAeQAAAAAAWQAAAAAAWQAAAAADWQAAAAADWQAAAAADeQAAAAAAdgAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAACWQAAAAACWQAAAAADeQAAAAAAWQAAAAACWQAAAAABWQAAAAAAWQAAAAACWQAAAAABWQAAAAAAWQAAAAADWQAAAAAAWQAAAAADPQAAAAAAeQAAAAAAWQAAAAACWQAAAAADWQAAAAACWQAAAAADeQAAAAAAWQAAAAACWQAAAAACWQAAAAACWQAAAAABWQAAAAABWQAAAAADWQAAAAABWQAAAAACWQAAAAADPQAAAAAAaQAAAAAAWQAAAAABWQAAAAADWQAAAAADWQAAAAAAeQAAAAAAWQAAAAABWQAAAAADeQAAAAAAHQAAAAADHQAAAAABHQAAAAADKQAAAAAAeQAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAADWQAAAAABWQAAAAABeQAAAAAAWQAAAAADWQAAAAAAeQAAAAAAHQAAAAADHQAAAAAAHQAAAAADKQAAAAAAeQAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAWQAAAAACWQAAAAAAWQAAAAACWQAAAAAAeQAAAAAAWQAAAAADWQAAAAADeQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAeQAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABWQAAAAACWQAAAAADWQAAAAABWQAAAAAAWQAAAAAAeQAAAAAAWQAAAAABWQAAAAABWQAAAAACWQAAAAAAWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADWQAAAAADWQAAAAABWQAAAAAAWQAAAAAAWQAAAAADeQAAAAAAWQAAAAAAWQAAAAABWQAAAAACWQAAAAAAWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAADWQAAAAACWQAAAAAAWQAAAAACWQAAAAABWQAAAAADWQAAAAAAWQAAAAADWQAAAAADWQAAAAADWQAAAAABeQAAAAAAWQAAAAACWQAAAAABeQAAAAAAWQAAAAADWQAAAAACWQAAAAADWQAAAAACWQAAAAAAWQAAAAADWQAAAAADWQAAAAAAWQAAAAACWQAAAAACWQAAAAACWQAAAAAAWQAAAAABWQAAAAABWQAAAAACeQAAAAAAWQAAAAABWQAAAAACeQAAAAAAWQAAAAACWQAAAAACWQAAAAABWQAAAAACWQAAAAADHQAAAAACWQAAAAADWQAAAAADWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAACeQAAAAAAWQAAAAACWQAAAAADWQAAAAABWQAAAAAAWQAAAAADHQAAAAADWQAAAAAAWQAAAAAAWQAAAAADWQAAAAAAWQAAAAACWQAAAAAAWQAAAAAAWQAAAAACWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABWQAAAAAAWQAAAAABWQAAAAADWQAAAAADWQAAAAADWQAAAAAAWQAAAAAAWQAAAAACWQAAAAABeQAAAAAAdgAAAAAAdgAAAAACdgAAAAADdgAAAAAAdgAAAAAAWQAAAAADWQAAAAABWQAAAAADWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAACeQAAAAAAdgAAAAABdgAAAAAAdgAAAAACdgAAAAADdgAAAAAB + tiles: eQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAAAeQAAAAAAWQAAAAABWQAAAAAAWQAAAAAAWQAAAAAAeQAAAAAAdgAAAAADeQAAAAAAeQAAAAAAWQAAAAACWQAAAAACWQAAAAADWQAAAAACeQAAAAAAWQAAAAAAWQAAAAACWQAAAAADWQAAAAAAWQAAAAABWQAAAAADWQAAAAACWQAAAAACWQAAAAADPQAAAAAAeQAAAAAAWQAAAAADWQAAAAABWQAAAAADWQAAAAABeQAAAAAAWQAAAAADWQAAAAABWQAAAAACWQAAAAACWQAAAAABWQAAAAADWQAAAAACWQAAAAAAWQAAAAAAPQAAAAAAaQAAAAAAWQAAAAABWQAAAAAAWQAAAAABWQAAAAACeQAAAAAAWQAAAAABWQAAAAADeQAAAAAAHQAAAAACHQAAAAAAHQAAAAACKQAAAAAAeQAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAACWQAAAAAAWQAAAAADeQAAAAAAWQAAAAABWQAAAAADeQAAAAAAHQAAAAADHQAAAAAAHQAAAAADKQAAAAAAeQAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAWQAAAAADWQAAAAACWQAAAAADWQAAAAABeQAAAAAAWQAAAAACWQAAAAADeQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAeQAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAWQAAAAABWQAAAAAAWQAAAAACWQAAAAACWQAAAAACeQAAAAAAWQAAAAAAWQAAAAADWQAAAAADWQAAAAADWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAWQAAAAABWQAAAAABWQAAAAADWQAAAAABWQAAAAACeQAAAAAAWQAAAAADWQAAAAADWQAAAAABWQAAAAACWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAABWQAAAAADWQAAAAADWQAAAAACWQAAAAACWQAAAAAAWQAAAAAAWQAAAAADWQAAAAACWQAAAAABWQAAAAAAeQAAAAAAWQAAAAAAWQAAAAACeQAAAAAAWQAAAAAAWQAAAAACWQAAAAAAWQAAAAADWQAAAAAAWQAAAAABWQAAAAABWQAAAAABWQAAAAABWQAAAAABWQAAAAAAWQAAAAACWQAAAAAAWQAAAAACWQAAAAAAeQAAAAAAWQAAAAACWQAAAAADeQAAAAAAWQAAAAADWQAAAAABWQAAAAADWQAAAAABWQAAAAADHQAAAAACWQAAAAADWQAAAAACWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAABeQAAAAAAWQAAAAADWQAAAAAAWQAAAAACWQAAAAACWQAAAAADHQAAAAADWQAAAAACWQAAAAABWQAAAAACWQAAAAADWQAAAAACWQAAAAABWQAAAAACWQAAAAADWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAWQAAAAAAWQAAAAABWQAAAAACWQAAAAADWQAAAAACWQAAAAADWQAAAAABWQAAAAADWQAAAAACeQAAAAAAdgAAAAADdgAAAAAAdgAAAAABdgAAAAABdgAAAAACWQAAAAABWQAAAAACWQAAAAABWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAADeQAAAAAAdgAAAAAAdgAAAAADdgAAAAACdgAAAAABdgAAAAAB version: 6 -2,-1: ind: -2,-1 - tiles: HQAAAAAAHQAAAAACHQAAAAAAHQAAAAADHQAAAAABHQAAAAABdgAAAAACdgAAAAADdgAAAAADdgAAAAADeQAAAAAAHQAAAAAAHQAAAAADHQAAAAADeQAAAAAAbAAAAAAAHQAAAAAAHQAAAAADHQAAAAAAHQAAAAABHQAAAAADHQAAAAAAdgAAAAAAdgAAAAABdgAAAAADdgAAAAADeQAAAAAAHQAAAAADHQAAAAAAHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABeQAAAAAAeQAAAAAAHQAAAAABaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAHQAAAAAAWQAAAAABWQAAAAAAWQAAAAAAWQAAAAADWQAAAAAAWQAAAAABWQAAAAAAWQAAAAAAWQAAAAADWQAAAAABWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADWQAAAAACWQAAAAADWQAAAAACWQAAAAACWQAAAAAAWQAAAAADWQAAAAABWQAAAAADWQAAAAABWQAAAAAAWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAOgAAAAAAeQAAAAAAWQAAAAADWQAAAAABWQAAAAABWQAAAAADeQAAAAAAWQAAAAABWQAAAAACeQAAAAAAHQAAAAAAHQAAAAACHQAAAAABHQAAAAACeQAAAAAAHQAAAAAAOgAAAAAAHQAAAAACWQAAAAADWQAAAAACWQAAAAADWQAAAAADeQAAAAAAWQAAAAAAWQAAAAAAeQAAAAAAHQAAAAABWQAAAAABWQAAAAAAHQAAAAACeQAAAAAAHQAAAAAAOgAAAAAAOgAAAAAAWQAAAAABWQAAAAADWQAAAAABWQAAAAAAeQAAAAAAWQAAAAACWQAAAAADeQAAAAAAHQAAAAADWQAAAAACWQAAAAABHQAAAAADeQAAAAAAHQAAAAABOgAAAAAAHQAAAAABWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAADeQAAAAAAWQAAAAACWQAAAAABeQAAAAAAHQAAAAADHQAAAAABHQAAAAAAHQAAAAADeQAAAAAAHQAAAAADOgAAAAAAOgAAAAAAWQAAAAADWQAAAAAAWQAAAAAAWQAAAAABeQAAAAAAWQAAAAACWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACHQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAAAWQAAAAACaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAADWQAAAAAAeQAAAAAAWQAAAAAAWQAAAAACWQAAAAACWQAAAAACeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAABWQAAAAAAWQAAAAACWQAAAAACWQAAAAAAWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAABWQAAAAAAWQAAAAAAWQAAAAACWQAAAAABWQAAAAADeQAAAAAAWQAAAAABWQAAAAADWQAAAAAAWQAAAAACeQAAAAAAdgAAAAADdgAAAAACeQAAAAAAWQAAAAACWQAAAAAAWQAAAAADeQAAAAAAWQAAAAADWQAAAAACWQAAAAADeQAAAAAAWQAAAAADWQAAAAADWQAAAAABWQAAAAAAeQAAAAAAdgAAAAAAdgAAAAACeQAAAAAA + tiles: HQAAAAAAHQAAAAACHQAAAAADHQAAAAABHQAAAAACHQAAAAADdgAAAAACdgAAAAABdgAAAAABdgAAAAABeQAAAAAAHQAAAAADHQAAAAAAHQAAAAACeQAAAAAAbAAAAAAAHQAAAAABHQAAAAACHQAAAAABHQAAAAADHQAAAAAAHQAAAAADdgAAAAADdgAAAAAAdgAAAAABdgAAAAADeQAAAAAAHQAAAAACHQAAAAACHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABeQAAAAAAeQAAAAAAHQAAAAABaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAHQAAAAABWQAAAAACWQAAAAADWQAAAAACWQAAAAAAWQAAAAACWQAAAAAAWQAAAAABWQAAAAACWQAAAAAAWQAAAAACWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAWQAAAAACWQAAAAADWQAAAAAAWQAAAAAAWQAAAAACWQAAAAAAWQAAAAADWQAAAAABWQAAAAADWQAAAAACWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAADeQAAAAAAeQAAAAAAHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAOgAAAAAAeQAAAAAAWQAAAAABWQAAAAADWQAAAAABWQAAAAAAeQAAAAAAWQAAAAADWQAAAAACeQAAAAAAHQAAAAAAHQAAAAADHQAAAAADHQAAAAABeQAAAAAAHQAAAAACOgAAAAAAHQAAAAACWQAAAAABWQAAAAACWQAAAAACWQAAAAACeQAAAAAAWQAAAAABWQAAAAADeQAAAAAAHQAAAAABWQAAAAABWQAAAAAAHQAAAAADeQAAAAAAHQAAAAAAOgAAAAAAOgAAAAAAWQAAAAADWQAAAAACWQAAAAAAWQAAAAACeQAAAAAAWQAAAAAAWQAAAAACeQAAAAAAHQAAAAABWQAAAAAAWQAAAAACHQAAAAAAeQAAAAAAHQAAAAAAOgAAAAAAHQAAAAACWQAAAAACWQAAAAAAWQAAAAADWQAAAAABeQAAAAAAWQAAAAADWQAAAAAAeQAAAAAAHQAAAAADHQAAAAABHQAAAAACHQAAAAAAeQAAAAAAHQAAAAABOgAAAAAAOgAAAAAAWQAAAAACWQAAAAACWQAAAAAAWQAAAAACeQAAAAAAWQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAADHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAADWQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAACWQAAAAADeQAAAAAAWQAAAAAAWQAAAAADWQAAAAAAWQAAAAADeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAADWQAAAAACWQAAAAACWQAAAAADWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAAAWQAAAAACWQAAAAACWQAAAAACWQAAAAACWQAAAAADeQAAAAAAWQAAAAABWQAAAAABWQAAAAACWQAAAAACeQAAAAAAdgAAAAACdgAAAAADeQAAAAAAWQAAAAABWQAAAAAAWQAAAAABeQAAAAAAWQAAAAADWQAAAAADWQAAAAABeQAAAAAAWQAAAAADWQAAAAACWQAAAAACWQAAAAAAeQAAAAAAdgAAAAADdgAAAAACeQAAAAAA version: 6 -1,2: ind: -1,2 - tiles: BwAAAAAABwAAAAAABwAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAHQAAAAAAHQAAAAACHQAAAAACHQAAAAABHQAAAAACHQAAAAABHQAAAAADHQAAAAACHQAAAAADBwAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAHQAAAAAAHQAAAAADHQAAAAAAHQAAAAAAHQAAAAABHQAAAAAAHQAAAAABHQAAAAAAHQAAAAABBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAHQAAAAAAHQAAAAACHQAAAAABHQAAAAADHQAAAAACHQAAAAADHQAAAAADHQAAAAABHQAAAAADeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACHQAAAAACHQAAAAAAHQAAAAAAHQAAAAACHQAAAAADeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: eQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAHQAAAAABHQAAAAABHQAAAAACHQAAAAABHQAAAAAAHQAAAAADHQAAAAAAHQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAHQAAAAABHQAAAAADHQAAAAADHQAAAAABHQAAAAACHQAAAAAAHQAAAAACHQAAAAAAHQAAAAACBwAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAHQAAAAABHQAAAAACHQAAAAAAHQAAAAABHQAAAAAAHQAAAAABHQAAAAACHQAAAAACHQAAAAACeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABHQAAAAAAHQAAAAAAHQAAAAABHQAAAAAAHQAAAAACeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 0,2: ind: 0,2 - tiles: HQAAAAADHQAAAAADHQAAAAABHQAAAAADHQAAAAABHQAAAAAAHQAAAAABeQAAAAAAAAAAAAAAAAAAAAAABwAAAAAGeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAHQAAAAAAHQAAAAABHQAAAAADHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABHQAAAAACHQAAAAAAHQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAegAAAAAAegAAAAAABwAAAAAAeQAAAAAAWQAAAAADHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAegAAAAAABwAAAAAAeQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACHQAAAAABHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABHQAAAAABHQAAAAACeQAAAAAAHQAAAAABHQAAAAADHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABHQAAAAAAHQAAAAADHQAAAAAAHQAAAAADHQAAAAADHQAAAAACHQAAAAABHQAAAAACHQAAAAACHQAAAAABBwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAHQAAAAACeQAAAAAAHQAAAAAAHQAAAAAAHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACHQAAAAACHQAAAAABeQAAAAAAeQAAAAAAHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAA + tiles: HQAAAAABHQAAAAABHQAAAAADHQAAAAACHQAAAAADHQAAAAACaAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAHQAAAAABHQAAAAADHQAAAAADHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADHQAAAAAAHQAAAAADHQAAAAABeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAegAAAAAAegAAAAAAeQAAAAAAeQAAAAAAWQAAAAADHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAegAAAAAAeQAAAAAAeQAAAAAAWQAAAAACeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAABwAAAAAEeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAABwAAAAAABwAAAAAAeQAAAAAABwAAAAABeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAALeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABHQAAAAAAHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACHQAAAAADHQAAAAADeQAAAAAAHQAAAAABHQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAABHQAAAAACHQAAAAADHQAAAAAAHQAAAAAAHQAAAAACHQAAAAABHQAAAAAAHQAAAAAAHQAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADHQAAAAABHQAAAAADeQAAAAAAHQAAAAACHQAAAAABHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACHQAAAAABHQAAAAADeQAAAAAAeQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAA version: 6 1,2: ind: 1,2 - tiles: WQAAAAAAWQAAAAACeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAABWQAAAAACeQAAAAAALAAAAAAAeQAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAADWQAAAAACLAAAAAAALAAAAAAAeQAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAALAAAAAAAeQAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAABwAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAACwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: WQAAAAABWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAACWQAAAAAAeQAAAAAALAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAABWQAAAAADLAAAAAAALAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAALAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAABwAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAABwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAACwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 1,1: ind: 1,1 - tiles: eQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAADWQAAAAAAWQAAAAABWQAAAAACeQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAADWQAAAAACWQAAAAAAWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAWQAAAAACWQAAAAADWQAAAAABWQAAAAADWQAAAAADeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAADWQAAAAADWQAAAAACWQAAAAACWQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAADWQAAAAADWQAAAAABWQAAAAAAWQAAAAABeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAWQAAAAADWQAAAAACWQAAAAABWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAACWQAAAAAAWQAAAAACWQAAAAADWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAACWQAAAAABWQAAAAAAWQAAAAABWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAWQAAAAADWQAAAAACWQAAAAABWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAABWQAAAAABWQAAAAADWQAAAAAAWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAABWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAABWQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAADWQAAAAADeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: eQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAADWQAAAAADWQAAAAABWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAAAWQAAAAABWQAAAAADWQAAAAACeQAAAAAAHQAAAAABHQAAAAABHQAAAAACHQAAAAABHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAAAWQAAAAABWQAAAAADWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAWQAAAAABWQAAAAABWQAAAAABWQAAAAACWQAAAAACeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAADWQAAAAACWQAAAAACWQAAAAACWQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAADWQAAAAACWQAAAAADWQAAAAACWQAAAAABeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAABWQAAAAAAWQAAAAACWQAAAAACWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAABWQAAAAABWQAAAAADWQAAAAABWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAWQAAAAADWQAAAAABWQAAAAACWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAWQAAAAADWQAAAAADWQAAAAABWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAWQAAAAADWQAAAAAAWQAAAAACWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAADWQAAAAABeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAWQAAAAADeQAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 1,0: ind: 1,0 - tiles: eQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAWQAAAAADWQAAAAACeQAAAAAAWQAAAAACWQAAAAABWQAAAAAAWQAAAAADWQAAAAAAeQAAAAAAHQAAAAAAHQAAAAACHQAAAAACHQAAAAACeQAAAAAAaAAAAAAAeQAAAAAAWQAAAAABWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADeQAAAAAAeQAAAAAAHQAAAAABHQAAAAADHQAAAAABHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACeQAAAAAAeQAAAAAAWQAAAAACWQAAAAADWQAAAAAAWQAAAAADWQAAAAADeQAAAAAAeQAAAAAAHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAADWQAAAAACWQAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAADWQAAAAABWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAADWQAAAAADWQAAAAACWQAAAAAAeQAAAAAAWQAAAAABWQAAAAABWQAAAAABWQAAAAADWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAALAAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAHQAAAAABeQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeAAAAAAAeAAAAAAALAAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeAAAAAAALAAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAegAAAAAAegAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAABWQAAAAACWQAAAAAAWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAADWQAAAAADWQAAAAABWQAAAAAAeQAAAAAAWQAAAAAAWQAAAAADWQAAAAABWQAAAAAAWQAAAAAAWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAADWQAAAAADWQAAAAACWQAAAAACWQAAAAACWQAAAAADWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAABWQAAAAABWQAAAAADWQAAAAADeQAAAAAAWQAAAAADWQAAAAADWQAAAAACWQAAAAAAWQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAA + tiles: eQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAWQAAAAABWQAAAAABeQAAAAAAWQAAAAACWQAAAAAAWQAAAAABWQAAAAACWQAAAAAAeQAAAAAAHQAAAAADHQAAAAACHQAAAAADHQAAAAADeQAAAAAAaAAAAAAAeQAAAAAAWQAAAAAAWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADeQAAAAAAeQAAAAAAHQAAAAABHQAAAAABHQAAAAACHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAWQAAAAACWQAAAAADWQAAAAACWQAAAAAAWQAAAAACeQAAAAAAeQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAAAWQAAAAACWQAAAAADeQAAAAAAWQAAAAACWQAAAAAAWQAAAAABWQAAAAACWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAACWQAAAAAAWQAAAAAAWQAAAAACeQAAAAAAWQAAAAAAWQAAAAABWQAAAAAAWQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAABWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAALAAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAAeAAAAAAAeAAAAAAALAAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAEBwAAAAAAeAAAAAAALAAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAIBwAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAegAAAAAAegAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAIaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAJeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAADWQAAAAAAWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAACWQAAAAACWQAAAAABWQAAAAADeQAAAAAAWQAAAAADWQAAAAABWQAAAAACWQAAAAABWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAACWQAAAAABWQAAAAADWQAAAAADWQAAAAABWQAAAAACWQAAAAACWQAAAAABWQAAAAABWQAAAAADWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAABWQAAAAACWQAAAAADWQAAAAACeQAAAAAAWQAAAAAAWQAAAAACWQAAAAADWQAAAAAAWQAAAAADaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAA version: 6 0,3: ind: 0,3 - tiles: BwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADHQAAAAABHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAHQAAAAABNgAAAAAANgAAAAAAHQAAAAAANgAAAAAANgAAAAAAHQAAAAACeQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAANgAAAAAAHQAAAAAANgAAAAAAHQAAAAADNgAAAAAAHQAAAAACNgAAAAAAeQAAAAAAeQAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAANgAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACNgAAAAAAeQAAAAAAeQAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAANgAAAAAAHQAAAAAAeQAAAAAANgAAAAAAeQAAAAAAHQAAAAADNgAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAANgAAAAAAHQAAAAADHQAAAAABNgAAAAAAHQAAAAACHQAAAAABNgAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAANgAAAAAAHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAANgAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAHQAAAAACNgAAAAAANgAAAAAANgAAAAAANgAAAAAANgAAAAAAHQAAAAACeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABHQAAAAACHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: eQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAACHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADNgAAAAAANgAAAAAAHQAAAAAANgAAAAAANgAAAAAAHQAAAAACeQAAAAAAeQAAAAAABwAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAANgAAAAAAHQAAAAACNgAAAAAAHQAAAAABNgAAAAAAHQAAAAADNgAAAAAAeQAAAAAAeQAAAAAAAAAAAAAABwAAAAACeQAAAAAAeQAAAAAABwAAAAAAeQAAAAAAeQAAAAAANgAAAAAAHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAANgAAAAAAeQAAAAAAeQAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAANgAAAAAAHQAAAAADeQAAAAAANgAAAAAAeQAAAAAAHQAAAAAANgAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAANgAAAAAAHQAAAAACHQAAAAACNgAAAAAAHQAAAAABHQAAAAACNgAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAANgAAAAAAHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABNgAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADNgAAAAAANgAAAAAANgAAAAAANgAAAAAANgAAAAAAHQAAAAABeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACHQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 1,3: ind: 1,3 - tiles: eQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: eQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAABwAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 -2,2: ind: -2,2 - tiles: WQAAAAACWQAAAAABWQAAAAACWQAAAAACWQAAAAAAWQAAAAAAHQAAAAACeQAAAAAABwAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAABwAAAAAFBwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAFBwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAHBwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: WQAAAAADWQAAAAADWQAAAAABWQAAAAABWQAAAAABWQAAAAADHQAAAAADeQAAAAAABwAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAABwAAAAAAeQAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAIeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAABwAAAAAAeQAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAABwAAAAAABwAAAAAMBwAAAAAABwAAAAAABwAAAAADeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAMBwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAKeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 2,0: ind: 2,0 @@ -129,91 +129,91 @@ entities: version: 6 2,-1: ind: 2,-1 - tiles: BwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAA + tiles: BwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADHQAAAAACHQAAAAABHQAAAAABHQAAAAACeQAAAAAAHQAAAAACHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAWQAAAAAAWQAAAAADWQAAAAABWQAAAAADWQAAAAABWQAAAAADWQAAAAACWQAAAAAAWQAAAAABWQAAAAABWQAAAAADWQAAAAADWQAAAAAAWQAAAAADWQAAAAACWQAAAAACWQAAAAACWQAAAAACWQAAAAADWQAAAAAAWQAAAAABWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAACWQAAAAADWQAAAAACWQAAAAADWQAAAAACWQAAAAABWQAAAAAAWQAAAAABWQAAAAAAWQAAAAABWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAADWQAAAAACWQAAAAAAWQAAAAABWQAAAAABWQAAAAADWQAAAAAAWQAAAAACWQAAAAABWQAAAAACWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAA version: 6 1,-1: ind: 1,-1 - tiles: eQAAAAAAeQAAAAAAdgAAAAADdgAAAAACdgAAAAACeQAAAAAABwAAAAAABwAAAAAHBwAAAAAABwAAAAABBwAAAAADBwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAdgAAAAAAdgAAAAACdgAAAAACeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAAHQAAAAADWQAAAAABWQAAAAAAeQAAAAAAWQAAAAACWQAAAAABWQAAAAACWQAAAAABWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAHQAAAAAAWQAAAAACWQAAAAADeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAABWQAAAAADWQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACWQAAAAABWQAAAAADeQAAAAAAWQAAAAAAWQAAAAACWQAAAAACWQAAAAABWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAWQAAAAADWQAAAAADeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAADWQAAAAAAWQAAAAAAWQAAAAADWQAAAAACWQAAAAABWQAAAAACWQAAAAADWQAAAAADWQAAAAABWQAAAAABWQAAAAAAWQAAAAABWQAAAAAAWQAAAAABWQAAAAADWQAAAAABWQAAAAACWQAAAAAAWQAAAAACWQAAAAABWQAAAAABWQAAAAACWQAAAAABWQAAAAAAWQAAAAADWQAAAAACWQAAAAABWQAAAAABWQAAAAAAWQAAAAABWQAAAAAAAgAAAAAAWQAAAAABWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAAAWQAAAAACWQAAAAAAWQAAAAADWQAAAAACWQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAACeQAAAAAAWQAAAAADWQAAAAABWQAAAAADWQAAAAAAWQAAAAAA + tiles: eQAAAAAAeQAAAAAAdgAAAAABdgAAAAAAdgAAAAABeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAdgAAAAACdgAAAAADdgAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAHBwAAAAAABwAAAAAABwAAAAAABwAAAAAIBwAAAAAKeQAAAAAAeQAAAAAAeQAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAAHQAAAAAAWQAAAAABWQAAAAACeQAAAAAAWQAAAAACWQAAAAACWQAAAAAAWQAAAAADWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAHQAAAAAAWQAAAAACWQAAAAABeQAAAAAAWQAAAAADWQAAAAAAWQAAAAADWQAAAAACWQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADWQAAAAADWQAAAAADeQAAAAAAWQAAAAAAWQAAAAACWQAAAAABWQAAAAAAWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAABeQAAAAAAWQAAAAABWQAAAAADWQAAAAACWQAAAAABWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAADWQAAAAAAWQAAAAADWQAAAAADWQAAAAABWQAAAAACWQAAAAACWQAAAAAAWQAAAAABWQAAAAABWQAAAAAAWQAAAAABWQAAAAADWQAAAAACWQAAAAADWQAAAAAAWQAAAAACWQAAAAADWQAAAAADWQAAAAABWQAAAAAAWQAAAAABWQAAAAADWQAAAAACWQAAAAADWQAAAAACWQAAAAADAgAAAAADWQAAAAABWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAACWQAAAAABWQAAAAACWQAAAAABWQAAAAABWQAAAAACWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAACeQAAAAAAWQAAAAADWQAAAAACWQAAAAACWQAAAAABWQAAAAAA version: 6 0,-2: ind: 0,-2 - tiles: WQAAAAAAWQAAAAABWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAWQAAAAADWQAAAAABWQAAAAABaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAWQAAAAACWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAACeQAAAAAAWQAAAAABNgAAAAAAWQAAAAADWQAAAAADeQAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAHQAAAAACHQAAAAAAHQAAAAABbAAAAAACbAAAAAADWQAAAAADWQAAAAAAWQAAAAABWQAAAAADNgAAAAAANgAAAAAANgAAAAAAeQAAAAAAHQAAAAABHQAAAAAAeQAAAAAAHQAAAAABHQAAAAAAHQAAAAADbAAAAAAAbAAAAAABWQAAAAACWQAAAAAAWQAAAAADWQAAAAACEQAAAAAAEQAAAAAAEQAAAAAAeQAAAAAAHQAAAAABHQAAAAACeQAAAAAAWQAAAAADWQAAAAABWQAAAAACWQAAAAACWQAAAAACWQAAAAADWQAAAAACWQAAAAABWQAAAAABEQAAAAAAWQAAAAACWQAAAAADeQAAAAAAHQAAAAACHQAAAAAAWQAAAAAAWQAAAAABWQAAAAABWQAAAAABWQAAAAADWQAAAAACWQAAAAABWQAAAAABeQAAAAAAWQAAAAADWQAAAAADWQAAAAACWQAAAAABWQAAAAACHQAAAAABHQAAAAABeQAAAAAAWQAAAAAAWQAAAAADWQAAAAACWQAAAAADWQAAAAAAWQAAAAABWQAAAAABeQAAAAAAHQAAAAADHQAAAAACHQAAAAAAHQAAAAACeQAAAAAAHQAAAAAAHQAAAAADeQAAAAAAHQAAAAADHQAAAAAAHQAAAAADHQAAAAACHQAAAAADWQAAAAADWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAWQAAAAADWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAACWQAAAAAAWQAAAAACHQAAAAABHQAAAAACHQAAAAABHQAAAAAAHQAAAAACHQAAAAACHQAAAAAAHQAAAAAAHQAAAAABHQAAAAAAHQAAAAACHQAAAAACWQAAAAACWQAAAAADWQAAAAABWQAAAAAAHQAAAAACHQAAAAABHQAAAAACHQAAAAADHQAAAAABHQAAAAAAHQAAAAABHQAAAAADHQAAAAACHQAAAAADHQAAAAACHQAAAAAAWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABHQAAAAABeQAAAAAAeQAAAAAAHQAAAAACeQAAAAAAeQAAAAAAWQAAAAABWQAAAAABeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAADHQAAAAABeQAAAAAAHQAAAAADHQAAAAABeQAAAAAAEQAAAAAAHQAAAAABEQAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAeQAAAAAAHQAAAAAAHQAAAAACHQAAAAACWQAAAAABHQAAAAADeQAAAAAAHQAAAAABHQAAAAABeQAAAAAAEQAAAAAAHQAAAAACEQAAAAAAeQAAAAAAWQAAAAACWQAAAAACeQAAAAAAHQAAAAAAHQAAAAAAHQAAAAACWQAAAAAAHQAAAAAAeQAAAAAAHQAAAAABHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAA + tiles: WQAAAAADWQAAAAADWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAWQAAAAABWQAAAAADWQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAWQAAAAADWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAADeQAAAAAAWQAAAAABNgAAAAAAWQAAAAACWQAAAAAAeQAAAAAAHQAAAAADHQAAAAAAeQAAAAAAHQAAAAACHQAAAAAAHQAAAAABbAAAAAADbAAAAAAAWQAAAAACWQAAAAAAWQAAAAABWQAAAAACNgAAAAAANgAAAAAANgAAAAAAeQAAAAAAHQAAAAABHQAAAAAAeQAAAAAAHQAAAAAAHQAAAAADHQAAAAAAbAAAAAABbAAAAAACWQAAAAAAWQAAAAABWQAAAAACWQAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAeQAAAAAAHQAAAAABHQAAAAACeQAAAAAAWQAAAAACWQAAAAAAWQAAAAABWQAAAAADWQAAAAABWQAAAAACWQAAAAACWQAAAAADWQAAAAADEQAAAAAAWQAAAAAAWQAAAAABeQAAAAAAHQAAAAAAHQAAAAAAWQAAAAABWQAAAAACWQAAAAACWQAAAAABWQAAAAACWQAAAAACWQAAAAADWQAAAAACeQAAAAAAWQAAAAABWQAAAAABWQAAAAACWQAAAAACWQAAAAADHQAAAAADHQAAAAABeQAAAAAAWQAAAAACWQAAAAAAWQAAAAAAWQAAAAADWQAAAAABWQAAAAACWQAAAAADeQAAAAAAHQAAAAADHQAAAAADHQAAAAACHQAAAAADeQAAAAAAHQAAAAACHQAAAAADeQAAAAAAHQAAAAADHQAAAAADHQAAAAAAHQAAAAACHQAAAAADWQAAAAADWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAACHQAAAAADHQAAAAADHQAAAAABHQAAAAAAHQAAAAACHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAABHQAAAAAAHQAAAAACHQAAAAABWQAAAAAAWQAAAAAAWQAAAAABWQAAAAACHQAAAAADHQAAAAAAHQAAAAAAHQAAAAACHQAAAAABHQAAAAADHQAAAAABHQAAAAACHQAAAAADHQAAAAACHQAAAAABHQAAAAADWQAAAAACWQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADHQAAAAADeQAAAAAAeQAAAAAAHQAAAAACeQAAAAAAeQAAAAAAWQAAAAADWQAAAAADeQAAAAAAWQAAAAABWQAAAAADWQAAAAAAWQAAAAACHQAAAAAAeQAAAAAAHQAAAAAAHQAAAAADeQAAAAAAEQAAAAAAHQAAAAADEQAAAAAAeQAAAAAAWQAAAAACWQAAAAABeQAAAAAAHQAAAAACHQAAAAADHQAAAAACWQAAAAADHQAAAAACeQAAAAAAHQAAAAABHQAAAAADeQAAAAAAEQAAAAAAHQAAAAACEQAAAAAAeQAAAAAAWQAAAAABWQAAAAAAeQAAAAAAHQAAAAACHQAAAAACHQAAAAAAWQAAAAADHQAAAAABeQAAAAAAHQAAAAADHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAA version: 6 -1,-2: ind: -1,-2 - tiles: eQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAADWQAAAAABWQAAAAACWQAAAAABWQAAAAAAWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAACeQAAAAAAeQAAAAAAWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAABeQAAAAAAWQAAAAABWQAAAAADWQAAAAABeQAAAAAAbAAAAAACWQAAAAACWQAAAAACWQAAAAADeQAAAAAAbAAAAAADbAAAAAABbAAAAAAAeQAAAAAAWQAAAAACWQAAAAADeQAAAAAAWQAAAAAAWQAAAAACWQAAAAABeQAAAAAAbAAAAAACbAAAAAADbAAAAAABbAAAAAADeQAAAAAAbAAAAAACbAAAAAACbAAAAAAAeQAAAAAAWQAAAAABWQAAAAABeQAAAAAAWQAAAAACWQAAAAABWQAAAAACeQAAAAAAbAAAAAABbAAAAAACbAAAAAADbAAAAAABbAAAAAAAbAAAAAACbAAAAAABbAAAAAAAeQAAAAAAWQAAAAABWQAAAAAAeQAAAAAAWQAAAAACWQAAAAACWQAAAAAAeQAAAAAAWQAAAAABbAAAAAABWQAAAAABbAAAAAADeQAAAAAAbAAAAAADbAAAAAAAbAAAAAAAeQAAAAAAWQAAAAADWQAAAAACWQAAAAADWQAAAAACWQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAbAAAAAAAeQAAAAAAbAAAAAAAbAAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAAAeQAAAAAAWQAAAAACWQAAAAADWQAAAAACeQAAAAAAbAAAAAAAbAAAAAADeQAAAAAAbAAAAAABbAAAAAAAbAAAAAACbAAAAAAAbAAAAAAAeQAAAAAAWQAAAAACWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAbAAAAAABbAAAAAADbAAAAAADbAAAAAAAbAAAAAADbAAAAAADbAAAAAACbAAAAAAAbAAAAAACWQAAAAAAWQAAAAACWQAAAAADWQAAAAADWQAAAAACWQAAAAADWQAAAAACbAAAAAABbAAAAAABbAAAAAAAbAAAAAABbAAAAAADbAAAAAADbAAAAAAAbAAAAAADbAAAAAADWQAAAAABWQAAAAACWQAAAAACWQAAAAADWQAAAAACWQAAAAACWQAAAAAAbAAAAAABbAAAAAABeQAAAAAAbAAAAAAAbAAAAAACbAAAAAADbAAAAAABbAAAAAABeQAAAAAAWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAbAAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAACPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAbAAAAAABbAAAAAADeQAAAAAAbAAAAAAAbAAAAAACbAAAAAABbAAAAAAAbAAAAAABeQAAAAAAWQAAAAADWQAAAAADPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAWQAAAAACbAAAAAADbAAAAAAAbAAAAAACbAAAAAAAbAAAAAADbAAAAAACbAAAAAACeQAAAAAAWQAAAAADWQAAAAABPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAWQAAAAAAbAAAAAACeQAAAAAAbAAAAAACbAAAAAADbAAAAAADbAAAAAACbAAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAA + tiles: eQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAADWQAAAAAAWQAAAAACWQAAAAAAWQAAAAABWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAeQAAAAAAWQAAAAABWQAAAAAAWQAAAAADeQAAAAAAbAAAAAABWQAAAAAAWQAAAAADWQAAAAABeQAAAAAAbAAAAAADbAAAAAAAbAAAAAADeQAAAAAAWQAAAAABWQAAAAADeQAAAAAAWQAAAAABWQAAAAAAWQAAAAABeQAAAAAAbAAAAAAAbAAAAAACbAAAAAADbAAAAAADeQAAAAAAbAAAAAABbAAAAAACbAAAAAABeQAAAAAAWQAAAAAAWQAAAAABeQAAAAAAWQAAAAABWQAAAAACWQAAAAABeQAAAAAAbAAAAAABbAAAAAABbAAAAAADbAAAAAACbAAAAAABbAAAAAADbAAAAAADbAAAAAABeQAAAAAAWQAAAAAAWQAAAAABeQAAAAAAWQAAAAABWQAAAAACWQAAAAABeQAAAAAAWQAAAAABbAAAAAADWQAAAAADbAAAAAAAeQAAAAAAbAAAAAABbAAAAAAAbAAAAAACeQAAAAAAWQAAAAADWQAAAAAAWQAAAAABWQAAAAADWQAAAAACWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAbAAAAAABeQAAAAAAbAAAAAAAbAAAAAACeQAAAAAAeQAAAAAAWQAAAAABWQAAAAACeQAAAAAAWQAAAAABWQAAAAAAWQAAAAAAeQAAAAAAbAAAAAACbAAAAAABeQAAAAAAbAAAAAAAbAAAAAAAbAAAAAAAbAAAAAABbAAAAAAAeQAAAAAAWQAAAAADWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAbAAAAAAAbAAAAAABbAAAAAACbAAAAAACbAAAAAABbAAAAAACbAAAAAABbAAAAAABbAAAAAAAWQAAAAADWQAAAAABWQAAAAABWQAAAAADWQAAAAADWQAAAAABWQAAAAADbAAAAAACbAAAAAACbAAAAAABbAAAAAABbAAAAAAAbAAAAAACbAAAAAABbAAAAAABbAAAAAADWQAAAAACWQAAAAAAWQAAAAAAWQAAAAACWQAAAAACWQAAAAADWQAAAAABbAAAAAABbAAAAAABeQAAAAAAbAAAAAAAbAAAAAADbAAAAAACbAAAAAABbAAAAAADeQAAAAAAWQAAAAABWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAbAAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAACPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAbAAAAAABbAAAAAADeQAAAAAAbAAAAAABbAAAAAACbAAAAAAAbAAAAAABbAAAAAADeQAAAAAAWQAAAAACWQAAAAADPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAWQAAAAADbAAAAAABbAAAAAACbAAAAAADbAAAAAAAbAAAAAABbAAAAAABbAAAAAABeQAAAAAAWQAAAAADWQAAAAABPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAWQAAAAADbAAAAAADeQAAAAAAbAAAAAABbAAAAAAAbAAAAAAAbAAAAAABbAAAAAADeQAAAAAAWQAAAAABWQAAAAABPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAA version: 6 -1,-3: ind: -1,-3 - tiles: AAAAAAAAeAAAAAAALwAAAAAAWQAAAAADWQAAAAABWQAAAAACWQAAAAADLwAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAALwAAAAAAWQAAAAAAWQAAAAADWQAAAAAAWQAAAAABLwAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAALwAAAAAAWQAAAAACWQAAAAACWQAAAAADWQAAAAACLwAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAWQAAAAACWQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAWQAAAAABWQAAAAACeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAABeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAHQAAAAAAWQAAAAABWQAAAAADeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAHQAAAAAAWQAAAAABWQAAAAABeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAACeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAACHQAAAAADHQAAAAAAeQAAAAAAWQAAAAACWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAACHQAAAAACeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAACWQAAAAABWQAAAAAAWQAAAAAAWQAAAAABWQAAAAABWQAAAAABWQAAAAADWQAAAAABWQAAAAADPgAAAAAAPgAAAAAAHQAAAAAAHQAAAAAAWQAAAAABWQAAAAAAWQAAAAACWQAAAAAAWQAAAAADWQAAAAABWQAAAAADWQAAAAADWQAAAAADWQAAAAAAWQAAAAABWQAAAAABHQAAAAADHQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADHQAAAAADHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAACWQAAAAABWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAD + tiles: AAAAAAAAeAAAAAAALwAAAAAAWQAAAAABWQAAAAADWQAAAAABWQAAAAACLwAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAALwAAAAAAWQAAAAABWQAAAAACWQAAAAABWQAAAAABLwAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAALwAAAAAAWQAAAAABWQAAAAABWQAAAAACWQAAAAAALwAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAWQAAAAACWQAAAAACaAAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAWQAAAAADWQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAABeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAHQAAAAADWQAAAAADWQAAAAADeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAHQAAAAABWQAAAAABWQAAAAADeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAADeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAACHQAAAAACHQAAAAAAeQAAAAAAWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADHQAAAAABHQAAAAAAeQAAAAAAWQAAAAAAWQAAAAABWQAAAAABWQAAAAADWQAAAAADWQAAAAACWQAAAAAAWQAAAAADWQAAAAACWQAAAAABWQAAAAACWQAAAAADPgAAAAAAPgAAAAAAHQAAAAABHQAAAAACWQAAAAAAWQAAAAADWQAAAAACWQAAAAAAWQAAAAACWQAAAAADWQAAAAADWQAAAAABWQAAAAAAWQAAAAABWQAAAAABWQAAAAADHQAAAAADHQAAAAADHQAAAAADeQAAAAAAeQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABHQAAAAACHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAACWQAAAAADWQAAAAAAWQAAAAABWQAAAAABWQAAAAAD version: 6 0,-3: ind: 0,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAbAAAAAADbAAAAAAAbAAAAAAAeQAAAAAABwAAAAAHBwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAbAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACHQAAAAACeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAHQAAAAADNgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADHQAAAAADeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADeQAAAAAAeQAAAAAAbAAAAAADeQAAAAAAHQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAHQAAAAABHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAADWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAAAWQAAAAADeQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAABeQAAAAAAeQAAAAAAHQAAAAADNgAAAAAAeQAAAAAAWQAAAAACWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAADWQAAAAABeQAAAAAAHQAAAAAAHQAAAAABeQAAAAAAWQAAAAACWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAbAAAAAADbAAAAAADbAAAAAABeQAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAbAAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAACeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAHQAAAAADNgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAACeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADeQAAAAAAeQAAAAAAbAAAAAAAeQAAAAAAHQAAAAACHQAAAAACeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAABeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAHQAAAAABHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAABWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAADeQAAAAAAHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAHQAAAAABNgAAAAAAeQAAAAAAWQAAAAACWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAADWQAAAAADeQAAAAAAHQAAAAABHQAAAAABeQAAAAAAWQAAAAAAWQAAAAADWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAA version: 6 -1,-4: ind: -1,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAWQAAAAADWQAAAAACeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAWQAAAAADWQAAAAADeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAWQAAAAADWQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAWQAAAAACWQAAAAADeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAWQAAAAACWQAAAAABaAAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAALwAAAAAAWQAAAAAAWQAAAAACWQAAAAADWQAAAAACLwAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAWQAAAAACWQAAAAADeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAWQAAAAACWQAAAAABeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAWQAAAAAAWQAAAAACaAAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAALwAAAAAAWQAAAAADWQAAAAAAWQAAAAAAWQAAAAABLwAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 1,-2: ind: 1,-2 - tiles: eQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAAWQAAAAADWQAAAAACWQAAAAADeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAAWQAAAAACWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAAWQAAAAADWQAAAAADWQAAAAADeQAAAAAAHQAAAAADHQAAAAACeQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAAAWQAAAAAAeQAAAAAAWQAAAAABHQAAAAADeQAAAAAAWQAAAAACWQAAAAABeQAAAAAAWQAAAAABbAAAAAACbAAAAAADbAAAAAAAWQAAAAABWQAAAAACWQAAAAACWQAAAAADWQAAAAABeQAAAAAAWQAAAAAAHQAAAAADeQAAAAAAWQAAAAABWQAAAAACeQAAAAAAWQAAAAACbAAAAAAAbAAAAAADbAAAAAADWQAAAAACWQAAAAABWQAAAAADWQAAAAABWQAAAAABWQAAAAADWQAAAAADHQAAAAAAHQAAAAADWQAAAAACWQAAAAAAWQAAAAAAWQAAAAADWQAAAAACWQAAAAACWQAAAAACWQAAAAABWQAAAAAAWQAAAAABWQAAAAABWQAAAAADeQAAAAAAHQAAAAADHQAAAAACeQAAAAAAWQAAAAAAWQAAAAACeQAAAAAAWQAAAAAAWQAAAAADWQAAAAADWQAAAAACWQAAAAACWQAAAAAAWQAAAAADWQAAAAAAWQAAAAACeQAAAAAAHQAAAAABeQAAAAAAeQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAABHQAAAAABHQAAAAAAHQAAAAACHQAAAAADHQAAAAABHQAAAAACHQAAAAACeQAAAAAAeQAAAAAAHQAAAAACHQAAAAACHQAAAAAAHQAAAAABWQAAAAAAWQAAAAADWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAAHQAAAAABHQAAAAACHQAAAAACHQAAAAADWQAAAAAAWQAAAAABWQAAAAABdgAAAAAAdgAAAAABdgAAAAABdgAAAAAAdgAAAAAAdgAAAAABeQAAAAAABwAAAAAABwAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAdgAAAAACdgAAAAACdgAAAAAAdgAAAAADdgAAAAACeQAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAdgAAAAACdgAAAAAAdgAAAAADeQAAAAAABwAAAAAAeQAAAAAAdgAAAAABdgAAAAADdgAAAAAAdgAAAAADdgAAAAACeQAAAAAABwAAAAAHBwAAAAAAeQAAAAAAaQAAAAAAdgAAAAABdgAAAAAAdgAAAAADeQAAAAAABwAAAAAAeQAAAAAAdgAAAAAAdgAAAAADdgAAAAADdgAAAAADeQAAAAAAeQAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAdgAAAAADdgAAAAAAdgAAAAAAeQAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAACBwAAAAAA + tiles: eQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAAeQAAAAAATQAAAAAAeQAAAAAAWQAAAAAAWQAAAAADWQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAAWQAAAAAAWQAAAAABWQAAAAADeQAAAAAAeQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAAeQAAAAAATQAAAAAAeQAAAAAAWQAAAAACWQAAAAAAWQAAAAADeQAAAAAAHQAAAAACHQAAAAABeQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAACWQAAAAACeQAAAAAAWQAAAAADHQAAAAACeQAAAAAAWQAAAAADWQAAAAAAeQAAAAAAWQAAAAACbAAAAAACbAAAAAACbAAAAAADWQAAAAABWQAAAAAAWQAAAAABWQAAAAAAWQAAAAABeQAAAAAAWQAAAAACHQAAAAAAeQAAAAAAWQAAAAAAWQAAAAADeQAAAAAAWQAAAAADbAAAAAABbAAAAAAAbAAAAAADWQAAAAACWQAAAAADWQAAAAADWQAAAAABWQAAAAABWQAAAAABWQAAAAADHQAAAAABHQAAAAADWQAAAAABWQAAAAABWQAAAAAAWQAAAAABWQAAAAAAWQAAAAABWQAAAAAAWQAAAAAAWQAAAAACWQAAAAADWQAAAAADWQAAAAABeQAAAAAAHQAAAAAAHQAAAAABeQAAAAAAWQAAAAADWQAAAAABeQAAAAAAWQAAAAABWQAAAAAAWQAAAAADWQAAAAAAWQAAAAABWQAAAAADWQAAAAADWQAAAAAAWQAAAAADeQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAADHQAAAAACHQAAAAACHQAAAAABHQAAAAAAHQAAAAAAHQAAAAACHQAAAAABeQAAAAAAeQAAAAAAHQAAAAACHQAAAAAAHQAAAAACHQAAAAAAWQAAAAABWQAAAAABWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAADHQAAAAABHQAAAAADWQAAAAABWQAAAAABWQAAAAABdgAAAAADdgAAAAABdgAAAAAAdgAAAAACdgAAAAACdgAAAAABeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAdgAAAAACdgAAAAAAdgAAAAACdgAAAAABdgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAdgAAAAABdgAAAAABdgAAAAABeQAAAAAAeQAAAAAAeQAAAAAAdgAAAAABdgAAAAACdgAAAAADdgAAAAAAdgAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAAdgAAAAADdgAAAAADdgAAAAABeQAAAAAAeQAAAAAAeQAAAAAAdgAAAAABdgAAAAACdgAAAAACdgAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAdgAAAAAAdgAAAAACdgAAAAABeQAAAAAABwAAAAAJeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAGeQAAAAAAeQAAAAAA version: 6 2,-2: ind: 2,-2 - tiles: eQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAHBwAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAACHQAAAAAAHQAAAAACHQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAADBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAACWQAAAAADWQAAAAABWQAAAAACeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAACWQAAAAAAWQAAAAABWQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAWQAAAAABWQAAAAAAWQAAAAACWQAAAAADeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAHQAAAAADHQAAAAADHQAAAAABHQAAAAADeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAHQAAAAABHQAAAAADHQAAAAACHQAAAAABeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAFegAAAAAAegAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAACBwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: eQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAMeQAAAAAABwAAAAAABwAAAAAABwAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAaQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAHQAAAAADHQAAAAACHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAABWQAAAAACWQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAADWQAAAAADWQAAAAADWQAAAAABeQAAAAAAeQAAAAAABwAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAWQAAAAAAWQAAAAACWQAAAAAAWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAHQAAAAABHQAAAAABHQAAAAABHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAHQAAAAABHQAAAAABHQAAAAACHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAIBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAegAAAAAAegAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAKBwAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 2,-3: ind: 2,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAABBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAADBwAAAAACBwAAAAADeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAADBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABHQAAAAADHQAAAAACHQAAAAACeQAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACHQAAAAABHQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADHQAAAAACHQAAAAAAeQAAAAAABwAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAABwAAAAAKBwAAAAAEBwAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAABHQAAAAADHQAAAAACeQAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADHQAAAAABHQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACHQAAAAACHQAAAAABeQAAAAAABwAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAA version: 6 1,-3: ind: 1,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAADBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAACBwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAACBwAAAAAABwAAAAAABwAAAAAHBwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAGBwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAHBwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAACBwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAADBwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAADBwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAACwAAAAAACwAAAAAACwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAACwAAAAAACwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACHQAAAAADHQAAAAACHQAAAAACHQAAAAADHQAAAAABHQAAAAABeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABHQAAAAABHQAAAAADeQAAAAAAHQAAAAABHQAAAAADHQAAAAADeQAAAAAAWQAAAAAAWQAAAAADWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAADBwAAAAACBwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAIBwAAAAAABwAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAAeQAAAAAABwAAAAAFBwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAACwAAAAAACwAAAAAACwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAHCwAAAAAACwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAACHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAACHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACHQAAAAADHQAAAAABeQAAAAAAHQAAAAABHQAAAAAAHQAAAAAAeQAAAAAAWQAAAAACWQAAAAACWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAA version: 6 -3,-1: ind: -3,-1 - tiles: aAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAADeQAAAAAAWQAAAAABWQAAAAADeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAACeQAAAAAAWQAAAAADWQAAAAACeQAAAAAAWQAAAAADWQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAHQAAAAACWQAAAAAAeQAAAAAAWQAAAAADWQAAAAAAeQAAAAAAWQAAAAACWQAAAAAAeQAAAAAAWQAAAAACWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAACWQAAAAACWQAAAAAAWQAAAAAAWQAAAAACeQAAAAAAWQAAAAABWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAWQAAAAADeQAAAAAAWQAAAAADWQAAAAAAeQAAAAAAWQAAAAADWQAAAAACeQAAAAAAWQAAAAAAWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAeQAAAAAAWQAAAAAAWQAAAAADWQAAAAACWQAAAAABWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAABeQAAAAAAWQAAAAAAWQAAAAADeQAAAAAAWQAAAAACWQAAAAAAWQAAAAABWQAAAAAAWQAAAAADWQAAAAABWQAAAAACWQAAAAAAWQAAAAABWQAAAAAAWQAAAAAAWQAAAAABWQAAAAAAWQAAAAACWQAAAAADeQAAAAAAWQAAAAABWQAAAAAAWQAAAAACWQAAAAACWQAAAAADWQAAAAACWQAAAAACWQAAAAABWQAAAAABeQAAAAAAWQAAAAAAWQAAAAACeQAAAAAAWQAAAAADWQAAAAABeQAAAAAAWQAAAAADWQAAAAABWQAAAAADWQAAAAADWQAAAAABWQAAAAABWQAAAAACWQAAAAACWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAADeQAAAAAAeQAAAAAAWQAAAAACWQAAAAACWQAAAAADWQAAAAABWQAAAAAAWQAAAAAAWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAADWQAAAAABWQAAAAABWQAAAAAAeQAAAAAAWQAAAAABWQAAAAABWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAADeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAACWQAAAAAAWQAAAAABeQAAAAAAWQAAAAADWQAAAAABWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAABWQAAAAABeQAAAAAAWQAAAAAAWQAAAAADWQAAAAACWQAAAAAAWQAAAAABeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAADWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAACWQAAAAAD + tiles: aAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAACeQAAAAAAWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAWQAAAAADWQAAAAACeQAAAAAAWQAAAAAAWQAAAAABeQAAAAAAWQAAAAACWQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAHQAAAAACWQAAAAABeQAAAAAAWQAAAAACWQAAAAACeQAAAAAAWQAAAAAAWQAAAAADeQAAAAAAWQAAAAABWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAACWQAAAAABWQAAAAACWQAAAAADWQAAAAADWQAAAAACeQAAAAAAWQAAAAADWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAWQAAAAACeQAAAAAAWQAAAAACWQAAAAAAeQAAAAAAWQAAAAADWQAAAAADeQAAAAAAWQAAAAABWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAABeQAAAAAAWQAAAAACWQAAAAACWQAAAAABWQAAAAAAWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAAAWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAADeQAAAAAAWQAAAAABWQAAAAAAeQAAAAAAWQAAAAABWQAAAAAAWQAAAAAAWQAAAAADWQAAAAADWQAAAAADWQAAAAAAWQAAAAACWQAAAAABWQAAAAABWQAAAAADWQAAAAABWQAAAAACWQAAAAADWQAAAAAAeQAAAAAAWQAAAAABWQAAAAADWQAAAAADWQAAAAACWQAAAAADWQAAAAABWQAAAAADWQAAAAACWQAAAAABeQAAAAAAWQAAAAAAWQAAAAADeQAAAAAAWQAAAAADWQAAAAADeQAAAAAAWQAAAAADWQAAAAACWQAAAAACWQAAAAACWQAAAAACWQAAAAAAWQAAAAADWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAWQAAAAABWQAAAAAAWQAAAAACWQAAAAACWQAAAAACWQAAAAADWQAAAAADWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAAAWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAWQAAAAACWQAAAAADWQAAAAACWQAAAAABWQAAAAAAeQAAAAAAWQAAAAAAWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAABWQAAAAACeQAAAAAAWQAAAAADWQAAAAACWQAAAAAAWQAAAAADWQAAAAADeQAAAAAAWQAAAAACWQAAAAAAWQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAADWQAAAAADWQAAAAABeQAAAAAAWQAAAAABWQAAAAABWQAAAAAAWQAAAAADWQAAAAACeQAAAAAAWQAAAAACWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAACWQAAAAAB version: 6 -3,-2: ind: -3,-2 - tiles: AAAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAABwAAAAAAeQAAAAAAOgAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAOgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAdgAAAAABdgAAAAACeQAAAAAAdgAAAAACdgAAAAABdgAAAAADdgAAAAABAAAAAAAAAAAAAAAAeQAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAdgAAAAAAdgAAAAADdgAAAAABeQAAAAAAdgAAAAADdgAAAAACdgAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAdgAAAAADdgAAAAACdgAAAAADdgAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAdgAAAAADdgAAAAAAdgAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADHQAAAAACHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAHQAAAAABHQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAIgAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAHQAAAAAAaAAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAHQAAAAAAHQAAAAAAIgAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAHQAAAAABaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAHQAAAAAA + tiles: AAAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAABwAAAAAAeQAAAAAAOgAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAOgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAdgAAAAABdgAAAAACeQAAAAAAdgAAAAACdgAAAAABdgAAAAADdgAAAAABAAAAAAAAAAAAAAAAeQAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAdgAAAAACdgAAAAADdgAAAAABeQAAAAAAdgAAAAABdgAAAAAAdgAAAAACAAAAAAAAAAAAAAAAeQAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAdgAAAAABdgAAAAABdgAAAAACdgAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAdgAAAAACdgAAAAADdgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADHQAAAAADHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAABHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAHQAAAAABeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAHQAAAAADHQAAAAACIgAAAAABeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAHQAAAAAAaAAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAHQAAAAAAHQAAAAACIgAAAAACeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAHQAAAAADaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAHQAAAAAC version: 6 -2,-2: ind: -2,-2 - tiles: eQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABHQAAAAABHQAAAAACeQAAAAAAHQAAAAABHQAAAAAAHQAAAAABeQAAAAAAHQAAAAACHQAAAAACHQAAAAACHQAAAAABeQAAAAAAbAAAAAABbAAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAABeQAAAAAAHQAAAAABHQAAAAABHQAAAAACeQAAAAAAbAAAAAABbAAAAAAAbAAAAAADbAAAAAAAbAAAAAACbAAAAAADbAAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAADHQAAAAADeQAAAAAAbAAAAAACbAAAAAABbAAAAAABbAAAAAADeQAAAAAAbAAAAAACbAAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABHQAAAAACHQAAAAABeQAAAAAAHQAAAAAAHQAAAAABHQAAAAADHQAAAAAAeQAAAAAAbAAAAAACbAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAbAAAAAACPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAbAAAAAADbAAAAAABbAAAAAACbAAAAAABbAAAAAACbAAAAAACbAAAAAACbAAAAAADbAAAAAABbAAAAAACbAAAAAABPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAbAAAAAACbAAAAAADbAAAAAABeQAAAAAAbAAAAAACbAAAAAAAbAAAAAAAbAAAAAADbAAAAAABbAAAAAAAbAAAAAABPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAbAAAAAABbAAAAAABbAAAAAADbAAAAAABbAAAAAACPgAAAAAAeQAAAAAAeQAAAAAAdgAAAAADdgAAAAADdgAAAAABdgAAAAACdgAAAAACdgAAAAABdgAAAAAAeQAAAAAAbAAAAAADbAAAAAACbAAAAAAAbAAAAAACbAAAAAADHQAAAAAAHQAAAAAAHQAAAAABdgAAAAACdgAAAAACdgAAAAABdgAAAAABdgAAAAADdgAAAAABdgAAAAABeQAAAAAAeQAAAAAAHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADHQAAAAAAHQAAAAACdgAAAAACdgAAAAAAdgAAAAACdgAAAAACdgAAAAADdgAAAAACdgAAAAAAeQAAAAAAHQAAAAACHQAAAAACHQAAAAADeQAAAAAAbAAAAAADHQAAAAABHQAAAAAAHQAAAAAAdgAAAAABdgAAAAABdgAAAAADdgAAAAABdgAAAAADdgAAAAACdgAAAAACeQAAAAAAHQAAAAABHQAAAAADHQAAAAAAHQAAAAABbAAAAAADHQAAAAACHQAAAAAAHQAAAAACHQAAAAABHQAAAAABHQAAAAADdgAAAAADdgAAAAABdgAAAAABdgAAAAAAeQAAAAAAHQAAAAACHQAAAAADHQAAAAACeQAAAAAAbAAAAAAD + tiles: eQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACHQAAAAABHQAAAAADeQAAAAAAHQAAAAAAHQAAAAADHQAAAAADeQAAAAAAHQAAAAADHQAAAAABHQAAAAACHQAAAAAAeQAAAAAAbAAAAAACbAAAAAACeQAAAAAAeQAAAAAAHQAAAAABHQAAAAABeQAAAAAAHQAAAAAAHQAAAAADHQAAAAADeQAAAAAAbAAAAAAAbAAAAAABbAAAAAADbAAAAAABbAAAAAADbAAAAAADbAAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAACHQAAAAACeQAAAAAAbAAAAAADbAAAAAAAbAAAAAADbAAAAAAAeQAAAAAAbAAAAAACbAAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADHQAAAAAAHQAAAAABeQAAAAAAHQAAAAAAHQAAAAACHQAAAAACHQAAAAAAeQAAAAAAbAAAAAADbAAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAbAAAAAABPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAbAAAAAABbAAAAAABbAAAAAADbAAAAAADbAAAAAABbAAAAAACbAAAAAADbAAAAAACbAAAAAABbAAAAAAAbAAAAAABPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAbAAAAAAAbAAAAAADbAAAAAACeQAAAAAAbAAAAAADbAAAAAAAbAAAAAAAbAAAAAACbAAAAAABbAAAAAACbAAAAAACPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAbAAAAAABbAAAAAADbAAAAAACbAAAAAACbAAAAAABPgAAAAAAeQAAAAAAeQAAAAAAdgAAAAACdgAAAAAAdgAAAAAAdgAAAAADdgAAAAADdgAAAAADdgAAAAAAeQAAAAAAbAAAAAAAbAAAAAABbAAAAAADbAAAAAADbAAAAAAAHQAAAAAAHQAAAAADHQAAAAADdgAAAAABdgAAAAABdgAAAAACdgAAAAACdgAAAAACdgAAAAACdgAAAAAAeQAAAAAAeQAAAAAAHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAdgAAAAADdgAAAAADdgAAAAADdgAAAAACdgAAAAACdgAAAAACdgAAAAACeQAAAAAAHQAAAAAAHQAAAAAAHQAAAAACeQAAAAAAbAAAAAAAHQAAAAADHQAAAAACHQAAAAACdgAAAAADdgAAAAABdgAAAAAAdgAAAAAAdgAAAAACdgAAAAADdgAAAAAAeQAAAAAAHQAAAAAAHQAAAAADHQAAAAABHQAAAAAAbAAAAAABHQAAAAADHQAAAAACHQAAAAAAHQAAAAAAHQAAAAABHQAAAAABdgAAAAACdgAAAAAAdgAAAAACdgAAAAAAeQAAAAAAHQAAAAACHQAAAAACHQAAAAAAeQAAAAAAbAAAAAAB version: 6 -2,-3: ind: -2,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAADgAAAAABeQAAAAAADgAAAAADDgAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAADgAAAAACDgAAAAACDgAAAAAADgAAAAAADgAAAAACDgAAAAADeQAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAHQAAAAACIQAAAAACIQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAADgAAAAADDgAAAAACDgAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAIQAAAAAAIQAAAAADeQAAAAAAAAAAAAAAAAAAAAAAdgAAAAADdgAAAAAAdgAAAAADeQAAAAAAHQAAAAAAHQAAAAACeQAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAdgAAAAADdgAAAAABdgAAAAACeQAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAHQAAAAABHQAAAAABHQAAAAACHQAAAAABHQAAAAADHQAAAAAAdgAAAAABdgAAAAACdgAAAAADeQAAAAAAdgAAAAAAdgAAAAACeQAAAAAAdgAAAAADdgAAAAAAdgAAAAAAHQAAAAADeQAAAAAAPgAAAAAAPgAAAAAAHQAAAAADHQAAAAADeQAAAAAAdgAAAAACeQAAAAAAeQAAAAAAeQAAAAAAUAAAAAAAeQAAAAAAdgAAAAADeQAAAAAAeQAAAAAAHQAAAAAAeQAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAUAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAIgAAAAADHQAAAAABeQAAAAAAPgAAAAAAPgAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAUAAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAIgAAAAADHQAAAAABeQAAAAAAHQAAAAACHQAAAAACHQAAAAACHQAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAABDgAAAAAADgAAAAACeQAAAAAADgAAAAADDgAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAABDgAAAAACDgAAAAADDgAAAAACDgAAAAAAeQAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAHQAAAAABIQAAAAADIQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAADgAAAAACDgAAAAAADgAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAIQAAAAACIQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAdgAAAAACdgAAAAAAdgAAAAADeQAAAAAAHQAAAAAAHQAAAAADeQAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAdgAAAAAAdgAAAAADdgAAAAADeQAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAHQAAAAABHQAAAAABHQAAAAABHQAAAAAAHQAAAAAAHQAAAAADdgAAAAACdgAAAAAAdgAAAAACeQAAAAAAdgAAAAAAdgAAAAAAeQAAAAAAdgAAAAADdgAAAAACdgAAAAADHQAAAAABeQAAAAAAPgAAAAAAPgAAAAAAHQAAAAACHQAAAAABeQAAAAAAdgAAAAADeQAAAAAAeQAAAAAAeQAAAAAAUAAAAAAAeQAAAAAAdgAAAAACeQAAAAAAeQAAAAAAHQAAAAACeQAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAUAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAIgAAAAABHQAAAAADeQAAAAAAPgAAAAAAPgAAAAAAHQAAAAADHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAUAAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAIgAAAAACHQAAAAABeQAAAAAAHQAAAAACHQAAAAABHQAAAAADHQAAAAAA version: 6 -3,2: ind: -3,2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAFBwAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 -3,1: ind: -3,1 - tiles: eQAAAAAATQAAAAAAeQAAAAAATQAAAAAAeQAAAAAATQAAAAAAeQAAAAAABwAAAAAABwAAAAAAeQAAAAAATQAAAAAAHQAAAAACHQAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAATQAAAAAAeQAAAAAATQAAAAAAeQAAAAAATQAAAAAAeQAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAATQAAAAAAeQAAAAAATQAAAAAAeQAAAAAATQAAAAAAeQAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAATQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAAeQAAAAAAeQAAAAAATQAAAAAAHQAAAAAATQAAAAAAHQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAATQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAABBwAAAAAABwAAAAAABwAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAFBwAAAAAABwAAAAAABwAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAHBwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAFBwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAaAAAAAAA + tiles: eQAAAAAATQAAAAAAeQAAAAAATQAAAAAAeQAAAAAATQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAATQAAAAAAHQAAAAABHQAAAAADHQAAAAABHQAAAAABeQAAAAAAeQAAAAAATQAAAAAAeQAAAAAATQAAAAAAeQAAAAAATQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAATQAAAAAAeQAAAAAATQAAAAAAeQAAAAAATQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAATQAAAAAAHQAAAAABHQAAAAABHQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAATQAAAAAAHQAAAAADTQAAAAAAHQAAAAADTQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAATQAAAAAAHQAAAAADHQAAAAABHQAAAAACTQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAACBwAAAAAABwAAAAAFBwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAA version: 6 -3,0: ind: -3,0 - tiles: aAAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAABaAAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAWQAAAAABeQAAAAAAWQAAAAACWQAAAAAAWQAAAAAAaAAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAWQAAAAADWQAAAAABWQAAAAAAWQAAAAACWQAAAAABaAAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAACWQAAAAACeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAWQAAAAACWQAAAAAAWQAAAAADWQAAAAADWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAWQAAAAABWQAAAAAAWQAAAAAAWQAAAAACWQAAAAADaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAADHQAAAAAAHQAAAAACHQAAAAACHQAAAAABHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACHQAAAAACHQAAAAABHQAAAAABHQAAAAADHQAAAAACHQAAAAACHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACHQAAAAADHQAAAAAAHQAAAAAAHQAAAAACHQAAAAAAHQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAUAAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAABwAAAAAABwAAAAAAeQAAAAAATQAAAAAAHQAAAAABHQAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAHBwAAAAAAeQAAAAAATQAAAAAAHQAAAAABHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAA + tiles: aAAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAACaAAAAAAAeQAAAAAAHQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAWQAAAAADeQAAAAAAWQAAAAADWQAAAAABWQAAAAABaAAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAWQAAAAAAWQAAAAABWQAAAAAAWQAAAAABWQAAAAADaAAAAAAAeQAAAAAAHQAAAAABHQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAACWQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAADWQAAAAACWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAWQAAAAADWQAAAAADWQAAAAACWQAAAAACWQAAAAABaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACHQAAAAAAHQAAAAAAHQAAAAABHQAAAAADHQAAAAADHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAABHQAAAAABHQAAAAAAHQAAAAAAHQAAAAABHQAAAAAAHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADHQAAAAACHQAAAAADHQAAAAACHQAAAAACHQAAAAADHQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAUAAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAABwAAAAAABwAAAAAAeQAAAAAATQAAAAAAHQAAAAAAHQAAAAACHQAAAAACHQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAAeQAAAAAAeQAAAAAATQAAAAAAHQAAAAABHQAAAAACHQAAAAACHQAAAAABHQAAAAAC version: 6 -3,-3: ind: -3,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAALAAAAAAALAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAALAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAbAAAAAAAbAAAAAABbAAAAAAAWQAAAAACWQAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAeQAAAAAAbAAAAAADbAAAAAADbAAAAAADWQAAAAADWQAAAAAAeQAAAAAAbAAAAAAAbAAAAAADeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAAeQAAAAAAbAAAAAABbAAAAAACbAAAAAAAWQAAAAAAWQAAAAABbAAAAAADbAAAAAACbAAAAAACbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAACeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAAAAAAAAABwAAAAAABwAAAAABeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAALAAAAAAALAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAALAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAbAAAAAAAbAAAAAABbAAAAAABWQAAAAACWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAbAAAAAABbAAAAAABbAAAAAACWQAAAAAAWQAAAAACeQAAAAAAbAAAAAADbAAAAAADeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAbAAAAAACbAAAAAAAbAAAAAABWQAAAAAAWQAAAAADbAAAAAACbAAAAAAAbAAAAAABbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAA version: 6 -4,0: ind: -4,0 - tiles: eAAAAAAAeAAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeAAAAAAAAwAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAAwAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAA + tiles: eAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeAAAAAAAAwAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAAwAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAA version: 6 -4,-1: ind: -4,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAHQAAAAADHQAAAAAAHQAAAAACeQAAAAAAWQAAAAACWQAAAAABWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAHQAAAAACHQAAAAACHQAAAAADHQAAAAACWQAAAAADWQAAAAABWQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAHQAAAAADHQAAAAAAHQAAAAAAeQAAAAAAWQAAAAACWQAAAAAAWQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAHQAAAAACHQAAAAABHQAAAAACeQAAAAAAeQAAAAAAWQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAHQAAAAADHQAAAAAAHQAAAAAAeQAAAAAAWQAAAAAAWQAAAAACWQAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAHQAAAAACHQAAAAADHQAAAAADeQAAAAAAWQAAAAAAWQAAAAABWQAAAAACAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAABBwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAAAWQAAAAACAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAGBwAAAAAABwAAAAAABwAAAAAABwAAAAABBwAAAAAAeQAAAAAAHQAAAAABHQAAAAAAHQAAAAADAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAegAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAACBwAAAAAAegAAAAAAegAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAABwAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAADHQAAAAACHQAAAAAAeQAAAAAAWQAAAAADWQAAAAACWQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAABwAAAAAJeQAAAAAAeQAAAAAAHQAAAAACHQAAAAADHQAAAAABHQAAAAABWQAAAAABWQAAAAACWQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAABHQAAAAABHQAAAAADeQAAAAAAWQAAAAAAWQAAAAACWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAAeQAAAAAABwAAAAAAeQAAAAAAeQAAAAAAHQAAAAABHQAAAAAAHQAAAAABeQAAAAAAWQAAAAABWQAAAAACWQAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAGBwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAACHQAAAAAAHQAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAABAAAAAAAAAAAAAAAABwAAAAALBwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAACWQAAAAAAWQAAAAADAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAALBwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAHBwAAAAAFeQAAAAAAHQAAAAAAHQAAAAACHQAAAAAAAAAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAJegAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAIegAAAAAAegAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAA version: 6 -4,-2: ind: -4,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAeQAAAAAAaAAAAAAAaAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAGBwAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAA version: 6 -5,-2: ind: -5,-2 @@ -225,7 +225,7 @@ entities: version: 6 3,-2: ind: 3,-2 - tiles: AAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 -4,1: ind: -4,1 @@ -233,7 +233,7 @@ entities: version: 6 3,-1: ind: 3,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAALwAAAAAALwAAAAAALwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAaAAAAAAAAgAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAAgAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAAgAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAaAAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAALwAAAAAALwAAAAAALwAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAWQAAAAABWQAAAAABWQAAAAACeQAAAAAAaAAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABWQAAAAADWQAAAAABWQAAAAACWQAAAAABWQAAAAAAWQAAAAADWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAABWQAAAAACWQAAAAABWQAAAAACWQAAAAAAaAAAAAAAAgAAAAADWQAAAAABWQAAAAACWQAAAAABAgAAAAACWQAAAAAAWQAAAAAAWQAAAAACAgAAAAAAWQAAAAABWQAAAAACWQAAAAABWQAAAAABWQAAAAABWQAAAAABeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAACWQAAAAACWQAAAAADWQAAAAADWQAAAAABWQAAAAADWQAAAAADWQAAAAADWQAAAAABWQAAAAAAWQAAAAABWQAAAAADWQAAAAACaAAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAWQAAAAACWQAAAAAAWQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAA version: 6 4,-1: ind: 4,-1 @@ -241,7 +241,7 @@ entities: version: 6 4,-2: ind: 4,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAABwAAAAAEeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAABwAAAAAABwAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAABwAAAAACBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 3,0: ind: 3,0 @@ -261,7 +261,7 @@ entities: version: 6 -5,-1: ind: -5,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAABwAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAA version: 6 -5,0: ind: -5,0 @@ -831,6 +831,68 @@ entities: id: Bushn1 decals: 53: 7.034272,20.954395 + - node: + color: '#2B7F0993' + id: CheckerNESW + decals: + 2189: -6,9 + 2190: -5,9 + 2191: -5,10 + 2192: -5,11 + 2193: -4,11 + 2194: -3,11 + 2195: -2,11 + 2196: -1,11 + 2197: -1,10 + 2198: -1,9 + 2199: 0,9 + 2200: 0,8 + 2201: 0,7 + 2202: 0,6 + 2203: 0,5 + 2204: 0,4 + 2205: 0,3 + 2206: 0,2 + 2207: 1,2 + 2208: 2,2 + 2209: 3,2 + 2210: 3,3 + 2211: 2,3 + 2212: 1,3 + 2213: 0,1 + 2214: 0,0 + 2215: 0,-1 + 2216: 0,-2 + 2217: 0,-3 + 2218: 0,-4 + 2219: 0,-5 + 2220: 0,-6 + 2221: 0,-7 + 2222: 0,-8 + 2223: -1,-8 + 2224: -1,-9 + 2225: -2,-9 + 2226: -3,-9 + 2227: -4,-9 + 2228: -5,-9 + 2229: -5,-8 + 2230: -6,-8 + 2231: -6,-7 + 2232: -6,-6 + 2233: -6,-5 + 2234: -6,-4 + 2235: -6,-3 + 2236: -6,-2 + 2237: -6,-1 + 2238: -6,0 + 2239: -6,1 + 2240: -6,2 + 2241: -6,3 + 2242: -6,4 + 2243: -6,5 + 2244: -6,6 + 2245: -6,7 + 2246: -6,8 - node: color: '#52B4E996' id: CheckerNESW @@ -1035,6 +1097,10 @@ entities: 2121: -50,0 2125: -48,6 2127: -57,0 + 2265: 23,-3 + 2266: 23,-4 + 2267: 14,-3 + 2268: 14,-4 - node: angle: 1.5707963267948966 rad color: '#FFFFFFFF' @@ -1148,7 +1214,6 @@ entities: 839: -23,8 840: -25,7 841: -23,13 - 842: 0,-19 843: -6,-28 844: -6,-33 845: -11,-38 @@ -1799,6 +1864,15 @@ entities: 1746: -35,3 1747: -34,3 1898: 26,13 + - node: + color: '#2E820993' + id: QuarterTileOverlayGreyscale + decals: + 2285: 0,-20 + 2286: 0,-19 + 2287: 0,-18 + 2288: 0,-17 + 2289: 0,-16 - node: color: '#334E6DC8' id: QuarterTileOverlayGreyscale @@ -1929,12 +2003,6 @@ entities: 1449: 9,-12 1450: 10,-12 1451: 11,-12 - 1452: 0,-16 - 1453: 0,-17 - 1454: 0,-18 - 1455: 0,-19 - 1456: 0,-20 - 1457: 0,-21 1458: 0,-22 1459: -1,-22 1460: -2,-22 @@ -1945,6 +2013,14 @@ entities: 1512: -8,-35 1516: -4,-35 1517: -5,-35 + 2271: 24,-8 + 2272: 24,-7 + 2273: 24,-6 + 2274: 24,-5 + 2275: 24,-2 + 2276: 24,-1 + 2277: 24,0 + 2303: 0,-21 - node: color: '#D4D4D496' id: QuarterTileOverlayGreyscale @@ -1957,6 +2033,13 @@ entities: 1316: -12,-40 1317: -12,-39 1318: -12,-38 + 2258: 21,-3 + 2259: 20,-3 + 2260: 19,-3 + 2261: 18,-3 + 2262: 17,-3 + 2263: 16,-3 + 2270: 22,-3 - node: color: '#DE3A3A96' id: QuarterTileOverlayGreyscale @@ -1989,6 +2072,15 @@ entities: 628: -21,10 680: -29,5 682: -31,3 + - node: + color: '#2E820993' + id: QuarterTileOverlayGreyscale180 + decals: + 2279: -6,-20 + 2280: -6,-19 + 2281: -6,-18 + 2282: -6,-17 + 2283: -6,-16 - node: color: '#334E6DC8' id: QuarterTileOverlayGreyscale180 @@ -2094,6 +2186,13 @@ entities: 1331: -11,-52 1332: -11,-51 1333: -11,-50 + 2248: 16,-4 + 2249: 17,-4 + 2250: 18,-4 + 2251: 19,-4 + 2252: 20,-4 + 2253: 21,-4 + 2269: 15,-4 - node: color: '#DE3A3A96' id: QuarterTileOverlayGreyscale180 @@ -2159,13 +2258,6 @@ entities: 177: 16,13 178: 15,13 179: 14,13 - 278: 24,-8 - 279: 24,-6 - 280: 24,-4 - 281: 22,-4 - 282: 20,-4 - 283: 18,-4 - 284: 16,-4 - node: color: '#BAFF79B4' id: QuarterTileOverlayGreyscale270 @@ -2256,8 +2348,6 @@ entities: color: '#DE3A3A96' id: QuarterTileOverlayGreyscale270 decals: - 308: 24,-2 - 309: 24,0 531: -27,16 532: -27,19 542: -32,10 @@ -2279,6 +2369,15 @@ entities: 758: -38,-9 2001: -47,-3 2002: -47,-4 + - node: + color: '#F53A3A93' + id: QuarterTileOverlayGreyscale270 + decals: + 2297: 0,-20 + 2298: 0,-19 + 2299: 0,-18 + 2300: 0,-17 + 2301: 0,-16 - node: color: '#334E6DC8' id: QuarterTileOverlayGreyscale90 @@ -2383,15 +2482,10 @@ entities: 1461: -4,-22 1462: -5,-22 1463: -6,-22 - 1464: -6,-21 - 1465: -6,-20 - 1466: -6,-19 - 1467: -6,-18 - 1468: -6,-17 - 1469: -6,-16 1513: 2,-35 1514: -1,-35 1515: -2,-35 + 2302: -6,-21 - node: color: '#D4D4D496' id: QuarterTileOverlayGreyscale90 @@ -2436,12 +2530,6 @@ entities: 299: 28,0 300: 29,0 301: 30,0 - 302: 23,-3 - 303: 21,-3 - 304: 19,-3 - 305: 17,-3 - 306: 15,-3 - 307: 25,-1 529: -26,20 530: -26,17 538: -29,12 @@ -2466,6 +2554,15 @@ entities: 787: -32,-1 788: -31,-1 789: -30,-1 + - node: + color: '#F53A3A93' + id: QuarterTileOverlayGreyscale90 + decals: + 2290: -6,-16 + 2291: -6,-17 + 2292: -6,-18 + 2293: -6,-19 + 2294: -6,-20 - node: cleanable: True color: '#FFFFFFFF' @@ -4648,13 +4745,9 @@ entities: - uid: 6692 components: - type: Transform - rot: 3.141592653589793 rad - pos: -25.5,-29.5 + rot: -1.5707963267948966 rad + pos: -23.5,-26.5 parent: 4812 - - type: DeviceList - devices: - - 6253 - - 5033 - uid: 7234 components: - type: Transform @@ -6489,6 +6582,11 @@ entities: parent: 4812 - proto: AirlockGlass entities: + - uid: 153 + components: + - type: Transform + pos: 14.5,-2.5 + parent: 4812 - uid: 333 components: - type: Transform @@ -6539,11 +6637,6 @@ entities: - type: Transform pos: 14.5,-3.5 parent: 4812 - - uid: 4379 - components: - - type: Transform - pos: 14.5,-2.5 - parent: 4812 - uid: 4714 components: - type: Transform @@ -27844,6 +27937,16 @@ entities: - type: Transform pos: -8.5,4.5 parent: 4812 + - uid: 2924 + components: + - type: Transform + pos: -2.5,-15.5 + parent: 4812 + - uid: 2926 + components: + - type: Transform + pos: -3.5,-15.5 + parent: 4812 - uid: 5377 components: - type: Transform @@ -27959,6 +28062,41 @@ entities: - type: Transform pos: -29.5,-39.5 parent: 4812 + - uid: 13710 + components: + - type: Transform + pos: -1.5,-15.5 + parent: 4812 + - uid: 13718 + components: + - type: Transform + pos: -2.5,-0.5 + parent: 4812 + - uid: 13719 + components: + - type: Transform + pos: -3.5,0.5 + parent: 4812 + - uid: 13720 + components: + - type: Transform + pos: -3.5,-0.5 + parent: 4812 + - uid: 13721 + components: + - type: Transform + pos: -2.5,0.5 + parent: 4812 + - uid: 13722 + components: + - type: Transform + pos: -1.5,0.5 + parent: 4812 + - uid: 13723 + components: + - type: Transform + pos: -1.5,-0.5 + parent: 4812 - proto: CarpetBlack entities: - uid: 11360 @@ -30460,6 +30598,18 @@ entities: rot: 3.141592653589793 rad pos: -44.5,2.5 parent: 4812 + - uid: 13737 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -25.5,19.5 + parent: 4812 + - uid: 13738 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -25.5,16.5 + parent: 4812 - proto: ChairOfficeDark entities: - uid: 310 @@ -32971,6 +33121,33 @@ entities: - type: Transform pos: 37.580452,-32.58558 parent: 4812 +- proto: ClothingOuterSanta + entities: + - uid: 13729 + components: + - type: Transform + pos: -31.658846,17.553913 + parent: 4812 + - uid: 13730 + components: + - type: Transform + pos: -31.568567,17.58866 + parent: 4812 + - uid: 13731 + components: + - type: Transform + pos: -31.47829,17.616457 + parent: 4812 + - uid: 13732 + components: + - type: Transform + pos: -31.35329,17.658152 + parent: 4812 + - uid: 13733 + components: + - type: Transform + pos: -31.269957,17.706797 + parent: 4812 - proto: ClothingOuterSuitEmergency entities: - uid: 11671 @@ -33270,16 +33447,6 @@ entities: rot: 3.141592653589793 rad pos: 9.5,-17.5 parent: 4812 - - uid: 6392 - components: - - type: Transform - pos: -3.5,-15.5 - parent: 4812 - - uid: 6393 - components: - - type: Transform - pos: -1.5,-15.5 - parent: 4812 - uid: 6394 components: - type: Transform @@ -34400,6 +34567,12 @@ entities: parent: 4812 - proto: CryogenicSleepUnit entities: + - uid: 2578 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 5.5,31.5 + parent: 4812 - uid: 10854 components: - type: Transform @@ -34465,6 +34638,13 @@ entities: - type: Transform pos: -9.581426,-1.3989067 parent: 4812 +- proto: DecoratedFirTree + entities: + - uid: 13717 + components: + - type: Transform + pos: -2.5,0.5 + parent: 4812 - proto: DefaultStationBeaconAICore entities: - uid: 12477 @@ -37940,6 +38120,13 @@ entities: - type: Transform pos: -5.405396,24.535454 parent: 4812 +- proto: DrinkGlassWhite + entities: + - uid: 13714 + components: + - type: Transform + pos: 1.2934761,-1.34864 + parent: 4812 - proto: DrinkGoldenCup entities: - uid: 2713 @@ -38123,6 +38310,12 @@ entities: rot: 3.141592653589793 rad pos: -3.5,22.5 parent: 4812 + - uid: 9479 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 8.5,-12.5 + parent: 4812 - uid: 9492 components: - type: Transform @@ -38146,6 +38339,11 @@ entities: rot: 1.5707963267948966 rad pos: -20.5,-21.5 parent: 4812 + - uid: 10974 + components: + - type: Transform + pos: -20.5,-11.5 + parent: 4812 - uid: 12093 components: - type: Transform @@ -38285,6 +38483,17 @@ entities: rot: 3.141592653589793 rad pos: -37.5,10.5 parent: 4812 + - uid: 13734 + components: + - type: Transform + pos: -14.5,-5.5 + parent: 4812 + - uid: 13736 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -12.5,-14.5 + parent: 4812 - proto: EncryptionKeyCargo entities: - uid: 4992 @@ -38444,6 +38653,11 @@ entities: - type: Transform pos: -40.5,7.5 parent: 4812 + - uid: 13749 + components: + - type: Transform + pos: 10.5,-6.5 + parent: 4812 - proto: FaxMachineBase entities: - uid: 2493 @@ -40622,6 +40836,13 @@ entities: - type: Transform pos: -35.581154,26.517508 parent: 4812 +- proto: FloraTreeChristmas02 + entities: + - uid: 13709 + components: + - type: Transform + pos: -2.5,-16.5 + parent: 4812 - proto: FlyAmanitaSeeds entities: - uid: 9620 @@ -40629,6 +40850,27 @@ entities: - type: Transform pos: -43.497864,-29.674786 parent: 4812 +- proto: FoodBakedCookie + entities: + - uid: 13713 + components: + - type: Transform + pos: 1.2622261,-1.7134762 + parent: 4812 +- proto: FoodBakedCookieRaisin + entities: + - uid: 13715 + components: + - type: Transform + pos: 1.6580591,-1.6509328 + parent: 4812 +- proto: FoodBakedCookieSugar + entities: + - uid: 13716 + components: + - type: Transform + pos: 1.4601426,-1.5571182 + parent: 4812 - proto: FoodBanana entities: - uid: 1708 @@ -40787,6 +41029,13 @@ entities: - type: Transform pos: -43.00348,-7.268787 parent: 4812 +- proto: FoodPlate + entities: + - uid: 13712 + components: + - type: Transform + pos: 1.5,-1.5 + parent: 4812 - proto: FoodPlateTrash entities: - uid: 11241 @@ -41818,6 +42067,22 @@ entities: parent: 4812 - type: AtmosPipeColor color: '#947507FF' + - uid: 13739 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -55.5,3.5 + parent: 4812 + - type: AtmosPipeColor + color: '#947507FF' + - uid: 13740 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -51.5,3.5 + parent: 4812 + - type: AtmosPipeColor + color: '#947507FF' - proto: GasPipeFourway entities: - uid: 402 @@ -41897,6 +42162,13 @@ entities: parent: 4812 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 4081 + components: + - type: Transform + pos: -51.5,4.5 + parent: 4812 + - type: AtmosPipeColor + color: '#947507FF' - uid: 5086 components: - type: Transform @@ -45340,6 +45612,14 @@ entities: parent: 4812 - type: AtmosPipeColor color: '#990000FF' + - uid: 2929 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -56.5,5.5 + parent: 4812 + - type: AtmosPipeColor + color: '#947507FF' - uid: 2943 components: - type: Transform @@ -45969,6 +46249,14 @@ entities: parent: 4812 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 4082 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -55.5,5.5 + parent: 4812 + - type: AtmosPipeColor + color: '#947507FF' - uid: 4144 components: - type: Transform @@ -52024,11 +52312,19 @@ entities: parent: 4812 - type: AtmosPipeColor color: '#03FCD3FF' - - uid: 13549 + - uid: 13741 components: - type: Transform rot: -1.5707963267948966 rad - pos: -52.5,5.5 + pos: -52.5,3.5 + parent: 4812 + - type: AtmosPipeColor + color: '#947507FF' + - uid: 13742 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -53.5,3.5 parent: 4812 - type: AtmosPipeColor color: '#947507FF' @@ -52734,6 +53030,13 @@ entities: parent: 4812 - type: AtmosPipeColor color: '#990000FF' + - uid: 2928 + components: + - type: Transform + pos: -55.5,4.5 + parent: 4812 + - type: AtmosPipeColor + color: '#947507FF' - uid: 2972 components: - type: Transform @@ -53602,21 +53905,6 @@ entities: parent: 4812 - type: AtmosPipeColor color: '#990000FF' - - uid: 9311 - components: - - type: Transform - pos: -55.5,5.5 - parent: 4812 - - type: AtmosPipeColor - color: '#947507FF' - - uid: 9320 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -55.5,4.5 - parent: 4812 - - type: AtmosPipeColor - color: '#947507FF' - uid: 9528 components: - type: Transform @@ -53763,14 +54051,6 @@ entities: parent: 4812 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 13425 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -51.5,4.5 - parent: 4812 - - type: AtmosPipeColor - color: '#947507FF' - uid: 13445 components: - type: Transform @@ -54069,6 +54349,14 @@ entities: parent: 4812 - proto: GasValve entities: + - uid: 2927 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -52.5,5.5 + parent: 4812 + - type: AtmosPipeColor + color: '#947507FF' - uid: 5591 components: - type: Transform @@ -54089,16 +54377,6 @@ entities: parent: 4812 - type: GasValve open: False - - uid: 9328 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -56.5,5.5 - parent: 4812 - - type: GasValve - open: False - - type: AtmosPipeColor - color: '#947507FF' - uid: 9924 components: - type: Transform @@ -54551,9 +54829,6 @@ entities: rot: 3.141592653589793 rad pos: -24.5,-27.5 parent: 4812 - - type: DeviceNetwork - deviceLists: - - 6692 - type: AtmosPipeColor color: '#0055CCFF' - uid: 5222 @@ -55496,9 +55771,6 @@ entities: rot: 3.141592653589793 rad pos: -26.5,-26.5 parent: 4812 - - type: DeviceNetwork - deviceLists: - - 6692 - type: AtmosPipeColor color: '#990000FF' - uid: 6417 @@ -55948,6 +56220,14 @@ entities: parent: 4812 - type: AtmosPipeColor color: '#947507FF' + - uid: 13743 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -54.5,3.5 + parent: 4812 + - type: AtmosPipeColor + color: '#947507FF' - proto: GeneratorBasic15kW entities: - uid: 1729 @@ -59888,6 +60168,16 @@ entities: rot: 1.5707963267948966 rad pos: -32.5,16.5 parent: 4812 + - uid: 13745 + components: + - type: Transform + pos: 19.5,-4.5 + parent: 4812 + - uid: 13746 + components: + - type: Transform + pos: 17.5,-4.5 + parent: 4812 - proto: GrilleBroken entities: - uid: 1544 @@ -60378,21 +60668,6 @@ entities: parent: 4812 - proto: hydroponicsSoil entities: - - uid: 8385 - components: - - type: Transform - pos: -32.5,29.5 - parent: 4812 - - uid: 8386 - components: - - type: Transform - pos: -32.5,30.5 - parent: 4812 - - uid: 8387 - components: - - type: Transform - pos: -32.5,31.5 - parent: 4812 - uid: 9610 components: - type: Transform @@ -60555,6 +60830,24 @@ entities: - type: Transform pos: -16.5,-5.5 parent: 4812 + - uid: 4379 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -32.5,31.5 + parent: 4812 + - uid: 4470 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -32.5,30.5 + parent: 4812 + - uid: 6391 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -32.5,29.5 + parent: 4812 - proto: IDComputerCircuitboard entities: - uid: 8335 @@ -60705,6 +60998,12 @@ entities: rot: -1.5707963267948966 rad pos: 26.5,-4.5 parent: 4812 + - uid: 13750 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 10.5,8.5 + parent: 4812 - proto: IntercomEngineering entities: - uid: 9468 @@ -61388,29 +61687,6 @@ entities: - 0 - proto: LockerElectricalSuppliesFilled entities: - - uid: 2578 - components: - - type: Transform - pos: 5.5,31.5 - parent: 4812 - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.14957 - moles: - - 1.6033952 - - 6.031821 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - uid: 4491 components: - type: Transform @@ -63651,6 +63927,14 @@ entities: - type: Transform pos: -27.5,-5.5 parent: 4812 +- proto: PosterLegitSafetyMothSSD + entities: + - uid: 13751 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 10.5,-1.5 + parent: 4812 - proto: PosterLegitScience entities: - uid: 6367 @@ -63910,14 +64194,6 @@ entities: - type: ContainerContainer containers: stash: !type:ContainerSlot {} - - uid: 6391 - components: - - type: Transform - pos: -2.5,-15.5 - parent: 4812 - - type: ContainerContainer - containers: - stash: !type:ContainerSlot {} - uid: 6438 components: - type: Transform @@ -64557,14 +64833,6 @@ entities: parent: 4812 - type: ApcPowerReceiver powerLoad: 0 - - uid: 4470 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 11.5,-5.5 - parent: 4812 - - type: ApcPowerReceiver - powerLoad: 0 - uid: 4471 components: - type: Transform @@ -64829,6 +65097,11 @@ entities: parent: 4812 - type: ApcPowerReceiver powerLoad: 0 + - uid: 6491 + components: + - type: Transform + pos: -35.5,22.5 + parent: 4812 - uid: 6778 components: - type: Transform @@ -65025,11 +65298,6 @@ entities: parent: 4812 - type: ApcPowerReceiver powerLoad: 0 - - uid: 8359 - components: - - type: Transform - pos: -35.5,22.5 - parent: 4812 - uid: 8603 components: - type: Transform @@ -65446,6 +65714,18 @@ entities: rot: 1.5707963267948966 rad pos: -31.5,17.5 parent: 4812 + - uid: 13755 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 11.5,-2.5 + parent: 4812 + - uid: 13756 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 13.5,-8.5 + parent: 4812 - proto: PoweredlightEmpty entities: - uid: 11249 @@ -66260,6 +66540,33 @@ entities: rot: -1.5707963267948966 rad pos: -50.5,-1.5 parent: 4812 +- proto: PresentRandom + entities: + - uid: 6392 + components: + - type: Transform + pos: -3.5,-16.5 + parent: 4812 + - uid: 13711 + components: + - type: Transform + pos: -1.5,-16.5 + parent: 4812 + - uid: 13724 + components: + - type: Transform + pos: -3.5,-0.5 + parent: 4812 + - uid: 13725 + components: + - type: Transform + pos: -1.5,-0.5 + parent: 4812 + - uid: 13744 + components: + - type: Transform + pos: -3.5,26.5 + parent: 4812 - proto: Protolathe entities: - uid: 6182 @@ -66512,6 +66819,11 @@ entities: rot: 1.5707963267948966 rad pos: 29.5,16.5 parent: 4812 + - uid: 13726 + components: + - type: Transform + pos: -31.5,17.5 + parent: 4812 - proto: RadioHandheld entities: - uid: 4582 @@ -66916,6 +67228,12 @@ entities: - type: Transform pos: 15.5,-4.5 parent: 4812 + - uid: 6393 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 10.5,-4.5 + parent: 4812 - uid: 6489 components: - type: Transform @@ -66926,11 +67244,6 @@ entities: - type: Transform pos: 5.5,-10.5 parent: 4812 - - uid: 6491 - components: - - type: Transform - pos: 10.5,-3.5 - parent: 4812 - uid: 9509 components: - type: Transform @@ -66959,6 +67272,11 @@ entities: - type: Transform pos: 34.5,-0.5 parent: 4812 + - uid: 13748 + components: + - type: Transform + pos: 10.5,10.5 + parent: 4812 - proto: RandomSoap entities: - uid: 1754 @@ -69388,6 +69706,11 @@ entities: rot: -1.5707963267948966 rad pos: -50.5,7.5 parent: 4812 + - uid: 12574 + components: + - type: Transform + pos: 17.5,-4.5 + parent: 4812 - uid: 12657 components: - type: Transform @@ -69669,6 +69992,11 @@ entities: - type: Transform pos: 35.5,-5.5 parent: 4812 + - uid: 13425 + components: + - type: Transform + pos: 19.5,-4.5 + parent: 4812 - uid: 13476 components: - type: Transform @@ -69877,11 +70205,6 @@ entities: - type: Transform pos: -12.5,-37.5 parent: 4812 - - uid: 12574 - components: - - type: Transform - pos: 19.5,-1.5 - parent: 4812 - uid: 12575 components: - type: Transform @@ -69897,6 +70220,12 @@ entities: - type: Transform pos: 32.5,0.5 parent: 4812 + - uid: 13549 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 10.5,-3.5 + parent: 4812 - proto: SecurityTechFab entities: - uid: 10945 @@ -70384,6 +70713,12 @@ entities: - type: Transform pos: 11.5,47.5 parent: 4812 + - uid: 13757 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 7.5,32.5 + parent: 4812 - proto: SignalButton entities: - uid: 712 @@ -70727,12 +71062,6 @@ entities: parent: 4812 - proto: SignDirectionalBridge entities: - - uid: 2928 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.4962993,18.70066 - parent: 4812 - uid: 3346 components: - type: Transform @@ -70753,12 +71082,6 @@ entities: rot: -1.5707963267948966 rad pos: -5.4997582,-10.299582 parent: 4812 - - uid: 2926 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -6.493349,18.685036 - parent: 4812 - uid: 5279 components: - type: Transform @@ -70776,6 +71099,12 @@ entities: rot: -1.5707963267948966 rad pos: -27.507013,-4.2984185 parent: 4812 + - uid: 9320 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -6.5007553,18.686073 + parent: 4812 - proto: SignDirectionalEvac entities: - uid: 1468 @@ -70790,6 +71119,12 @@ entities: rot: 3.141592653589793 rad pos: 2.5034294,-33.300663 parent: 4812 + - uid: 8386 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 1.5008216,18.689163 + parent: 4812 - uid: 13179 components: - type: Transform @@ -70801,6 +71136,12 @@ entities: - type: Transform pos: 10.500242,18.291374 parent: 4812 + - uid: 13753 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 13.498532,-10.313093 + parent: 4812 - proto: SignDirectionalHop entities: - uid: 12369 @@ -70830,22 +71171,33 @@ entities: - type: Transform pos: -5.504419,-10.705832 parent: 4812 - - uid: 2927 - components: - - type: Transform - pos: -6.493349,18.29441 - parent: 4812 - uid: 5280 components: - type: Transform rot: 3.141592653589793 rad pos: -7.4988046,-33.706913 parent: 4812 + - uid: 8441 + components: + - type: Transform + pos: -6.5007553,18.312357 + parent: 4812 - uid: 8693 components: - type: Transform pos: -27.507013,-4.7046685 parent: 4812 + - uid: 13752 + components: + - type: Transform + pos: 14.50098,-1.6919532 + parent: 4812 + - uid: 13754 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 13.498532,-10.692987 + parent: 4812 - proto: SignDirectionalSci entities: - uid: 1469 @@ -70853,11 +71205,6 @@ entities: - type: Transform pos: 0.49738908,-10.690207 parent: 4812 - - uid: 2929 - components: - - type: Transform - pos: 1.4962993,18.278786 - parent: 4812 - uid: 3347 components: - type: Transform @@ -70869,6 +71216,11 @@ entities: rot: 3.141592653589793 rad pos: 2.5034294,-33.706913 parent: 4812 + - uid: 9311 + components: + - type: Transform + pos: 1.5008216,18.306181 + parent: 4812 - proto: SignDirectionalSec entities: - uid: 1464 @@ -70877,12 +71229,6 @@ entities: rot: -1.5707963267948966 rad pos: -5.5,-10.5 parent: 4812 - - uid: 2924 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -6.5,18.5 - parent: 4812 - uid: 5277 components: - type: Transform @@ -70895,6 +71241,12 @@ entities: rot: -1.5707963267948966 rad pos: -24.5,15.5 parent: 4812 + - uid: 8387 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -6.5,18.5 + parent: 4812 - uid: 8692 components: - type: Transform @@ -70933,6 +71285,12 @@ entities: rot: 3.141592653589793 rad pos: 2.5,-33.5 parent: 4812 + - uid: 8385 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 14.504066,-1.3089712 + parent: 4812 - proto: SignDisposalSpace entities: - uid: 6779 @@ -72696,18 +73054,28 @@ entities: - type: Transform pos: -34.5,11.5 parent: 4812 -- proto: SpawnPointSecurityOfficer - entities: - - uid: 8441 + - uid: 9328 components: - type: Transform pos: -35.5,11.5 parent: 4812 +- proto: SpawnPointSecurityOfficer + entities: - uid: 8442 components: - type: Transform pos: -36.5,11.5 parent: 4812 + - uid: 13727 + components: + - type: Transform + pos: -37.5,11.5 + parent: 4812 + - uid: 13728 + components: + - type: Transform + pos: -38.5,11.5 + parent: 4812 - proto: SpawnPointServiceWorker entities: - uid: 12386 @@ -72825,6 +73193,12 @@ entities: - type: Transform pos: 61.5,-0.5 parent: 4812 + - uid: 13747 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 10.5,-7.5 + parent: 4812 - proto: Stool entities: - uid: 1752 @@ -73638,14 +74012,6 @@ entities: parent: 4812 - type: SurveillanceCamera id: EVAC Hallway - - uid: 9479 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 33.5,-5.5 - parent: 4812 - - type: SurveillanceCamera - id: EVAC Bar - uid: 9483 components: - type: Transform @@ -74160,14 +74526,6 @@ entities: id: Anomaly Generator - proto: SurveillanceCameraSecurity entities: - - uid: 10974 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -35.5,22.5 - parent: 4812 - - type: SurveillanceCamera - id: Armory - uid: 12059 components: - type: Transform @@ -74303,6 +74661,14 @@ entities: - SurveillanceCameraSecurity nameSet: True id: Perma Cell 2 + - uid: 13735 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -37.5,21.5 + parent: 4812 + - type: SurveillanceCamera + id: Armory - proto: SurveillanceCameraService entities: - uid: 12546 @@ -78881,16 +79247,6 @@ entities: - type: Transform pos: 38.5,-4.5 parent: 4812 - - uid: 4081 - components: - - type: Transform - pos: 17.5,-4.5 - parent: 4812 - - uid: 4082 - components: - - type: Transform - pos: 19.5,-4.5 - parent: 4812 - uid: 4083 components: - type: Transform @@ -83298,11 +83654,6 @@ entities: - type: Transform pos: 10.5,-4.5 parent: 4812 - - uid: 153 - components: - - type: Transform - pos: 10.5,-3.5 - parent: 4812 - uid: 154 components: - type: Transform @@ -85248,6 +85599,12 @@ entities: - type: Transform pos: -20.5,28.5 parent: 4812 + - uid: 8359 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 10.5,-3.5 + parent: 4812 - uid: 8457 components: - type: Transform From c7f83523ef5cc4119dc7e1073fa041129f7e7b37 Mon Sep 17 00:00:00 2001 From: Spanky <scott@wearejacob.com> Date: Sun, 17 Nov 2024 01:35:57 -0500 Subject: [PATCH 132/187] Packed Update (Christmas Edition) (#33356) Christmasified Packed station. --- Resources/Maps/packed.yml | 1030 +++++++++++++++++++++++++++++-------- 1 file changed, 808 insertions(+), 222 deletions(-) diff --git a/Resources/Maps/packed.yml b/Resources/Maps/packed.yml index 5ad509170dd..9def0c32c10 100644 --- a/Resources/Maps/packed.yml +++ b/Resources/Maps/packed.yml @@ -47,71 +47,71 @@ entities: chunks: -1,-1: ind: -1,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAAAWwAAAAACWwAAAAACewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAADewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAAAewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAewAAAAAAIgAAAAAAWwAAAAABWwAAAAAAewAAAAAAeAAAAAADeAAAAAABeAAAAAACewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAACewAAAAAAeAAAAAADeAAAAAAAeAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAADWwAAAAABHQAAAAACeAAAAAADeAAAAAABeAAAAAABeAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAAAWwAAAAAAewAAAAAAWwAAAAADWwAAAAAAWwAAAAADWwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAABWwAAAAADewAAAAAAWwAAAAAAWwAAAAAAWwAAAAADWwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAABWwAAAAADewAAAAAAWwAAAAACWwAAAAACWwAAAAACWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAADWwAAAAAAWwAAAAADWwAAAAACWwAAAAADWwAAAAABWwAAAAACWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAABWwAAAAAAWwAAAAADWwAAAAADWwAAAAADWwAAAAACWwAAAAAC + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAACewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAABWwAAAAABWwAAAAACewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAACWwAAAAABWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAABWwAAAAADWwAAAAAAewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAABWwAAAAACWwAAAAADewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAAAewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAewAAAAAAIgAAAAADWwAAAAABWwAAAAADewAAAAAAeAAAAAADeAAAAAABeAAAAAABewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAACewAAAAAAeAAAAAADeAAAAAACeAAAAAADewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAADWwAAAAADHQAAAAADeAAAAAAAeAAAAAADeAAAAAABeAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAACWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAABWwAAAAADewAAAAAAWwAAAAADWwAAAAABWwAAAAAAWwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAACWwAAAAAAewAAAAAAWwAAAAADWwAAAAACWwAAAAABWwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAACWwAAAAADewAAAAAAWwAAAAADWwAAAAACWwAAAAADWwAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAADWwAAAAABWwAAAAABWwAAAAABWwAAAAACWwAAAAAAWwAAAAAAWwAAAAADWwAAAAADWwAAAAACWwAAAAACWwAAAAADWwAAAAAAWwAAAAAAWwAAAAABWwAAAAABWwAAAAADWwAAAAABWwAAAAADWwAAAAADWwAAAAADWwAAAAADWwAAAAADWwAAAAAAWwAAAAADWwAAAAAAWwAAAAABWwAAAAAAWwAAAAACWwAAAAACWwAAAAACWwAAAAAB version: 6 -1,0: ind: -1,0 - tiles: WwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAADWwAAAAADWwAAAAACewAAAAAAWwAAAAACWwAAAAABWwAAAAADewAAAAAAewAAAAAAewAAAAAAWwAAAAAAewAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAewAAAAAAWwAAAAACewAAAAAAewAAAAAAegAAAAAAegAAAAAAewAAAAAAagAAAAAAewAAAAAAagAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAagAAAAAAewAAAAAAagAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAA + tiles: WwAAAAAAWwAAAAACWwAAAAADWwAAAAAAewAAAAAAWwAAAAADWwAAAAAAWwAAAAABWwAAAAADWwAAAAACWwAAAAABWwAAAAADewAAAAAAWwAAAAABWwAAAAABWwAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAABewAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACewAAAAAAWwAAAAABewAAAAAAewAAAAAAegAAAAAAegAAAAAAewAAAAAAagAAAAAAewAAAAAAagAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAagAAAAAAewAAAAAAagAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAA version: 6 0,0: ind: 0,0 - tiles: WwAAAAAAWwAAAAACWwAAAAAAWwAAAAADWwAAAAAAWwAAAAABWwAAAAAAWwAAAAAAWwAAAAABWwAAAAACWwAAAAACWwAAAAADWwAAAAACWwAAAAACWwAAAAADWwAAAAACewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAABWwAAAAAAWwAAAAAAWwAAAAACWwAAAAADWwAAAAACWwAAAAACWwAAAAAAWwAAAAAAWwAAAAABWwAAAAAAWwAAAAABegAAAAAAegAAAAAAewAAAAAAWwAAAAACWwAAAAABWwAAAAACWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAACWwAAAAABWwAAAAADWwAAAAADewAAAAAAeAAAAAAAeAAAAAACeAAAAAABeAAAAAABeAAAAAADeAAAAAACewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAACWwAAAAACWwAAAAABWwAAAAADewAAAAAAeAAAAAAAeAAAAAADeAAAAAAAeAAAAAABeAAAAAACeAAAAAABewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAAAWwAAAAACWwAAAAABWwAAAAABewAAAAAAeAAAAAABeAAAAAAAeAAAAAACeAAAAAABeAAAAAABeAAAAAADawAAAAAAewAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAABWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAeAAAAAABeAAAAAADeAAAAAADeAAAAAAAeAAAAAADewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAACWwAAAAADWwAAAAAAWwAAAAACewAAAAAAeAAAAAADeAAAAAABeAAAAAADeAAAAAACeAAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAACWwAAAAABWwAAAAADWwAAAAABewAAAAAAewAAAAAAHQAAAAAAewAAAAAAHQAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAADWwAAAAACWwAAAAACWwAAAAABWwAAAAABWwAAAAAAWwAAAAADWwAAAAAAWwAAAAAAWwAAAAADWwAAAAAAWwAAAAADWwAAAAABAAAAAAAAAAAAAAAAewAAAAAAWwAAAAACWwAAAAAAWwAAAAABWwAAAAABWwAAAAACWwAAAAAAWwAAAAABWwAAAAABWwAAAAAAWwAAAAABWwAAAAACWwAAAAADWwAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAADWwAAAAACWwAAAAADWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAADWwAAAAADWwAAAAADWwAAAAABewAAAAAALAAAAAAAUAAAAAAALAAAAAAAUAAAAAAALAAAAAAAewAAAAAAeAAAAAADeAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAAAWwAAAAABWwAAAAABWwAAAAACewAAAAAALAAAAAAAUAAAAAAALAAAAAAALAAAAAAAUAAAAAAAewAAAAAAeAAAAAABeAAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAeAAAAAAAeAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAeAAAAAAAeAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAeAAAAAADeAAAAAAA + tiles: WwAAAAAAWwAAAAABWwAAAAAAWwAAAAAAWwAAAAACWwAAAAAAWwAAAAAAWwAAAAACWwAAAAACWwAAAAABWwAAAAADWwAAAAAAWwAAAAADWwAAAAACWwAAAAAAWwAAAAADewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAAAWwAAAAAAWwAAAAACWwAAAAABWwAAAAADWwAAAAABWwAAAAABWwAAAAACWwAAAAACWwAAAAACWwAAAAACWwAAAAADegAAAAAAegAAAAAAewAAAAAAWwAAAAACWwAAAAAAWwAAAAACWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAADWwAAAAAAWwAAAAABWwAAAAACewAAAAAAeAAAAAABeAAAAAABeAAAAAACeAAAAAABeAAAAAAAeAAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAADWwAAAAAAWwAAAAABWwAAAAADewAAAAAAeAAAAAADeAAAAAADeAAAAAACeAAAAAADeAAAAAAAeAAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAABWwAAAAACWwAAAAABWwAAAAACewAAAAAAeAAAAAACeAAAAAACeAAAAAADeAAAAAADeAAAAAABeAAAAAABawAAAAAAewAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAACWwAAAAAAWwAAAAACWwAAAAACewAAAAAAeAAAAAABeAAAAAACeAAAAAAAeAAAAAACeAAAAAABewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAADWwAAAAACWwAAAAACWwAAAAABewAAAAAAeAAAAAADeAAAAAABeAAAAAADeAAAAAAAeAAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAACWwAAAAAAWwAAAAADWwAAAAAAewAAAAAAewAAAAAAHQAAAAADewAAAAAAHQAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAACWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAADWwAAAAABWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAADWwAAAAACWwAAAAACWwAAAAACAAAAAAAAAAAAAAAAewAAAAAAWwAAAAAAWwAAAAADWwAAAAABWwAAAAABWwAAAAABWwAAAAABWwAAAAADWwAAAAADWwAAAAACWwAAAAAAWwAAAAAAWwAAAAADWwAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAABWwAAAAACWwAAAAADWwAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAADWwAAAAADWwAAAAABWwAAAAABewAAAAAALAAAAAAAUAAAAAAALAAAAAAAUAAAAAAALAAAAAAAewAAAAAAeAAAAAABeAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAACWwAAAAACWwAAAAAAWwAAAAADewAAAAAALAAAAAAAUAAAAAAALAAAAAAALAAAAAAAUAAAAAAAewAAAAAAeAAAAAACeAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAeAAAAAACeAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAeAAAAAAAeAAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAeAAAAAAAeAAAAAAD version: 6 0,-1: ind: 0,-1 - tiles: ewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAABHQAAAAAAHQAAAAABHQAAAAABHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAADHQAAAAADHQAAAAACHQAAAAAAHQAAAAABHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAHQAAAAADHQAAAAABHQAAAAABHQAAAAAAHQAAAAABHQAAAAACHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAHQAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAADHQAAAAAAHQAAAAACHQAAAAACHQAAAAADewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAADHQAAAAACHQAAAAABHQAAAAADHQAAAAADewAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAWwAAAAACHQAAAAADHQAAAAABHQAAAAAAHQAAAAADHQAAAAACewAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAWwAAAAADWwAAAAACWwAAAAAAWwAAAAADewAAAAAAHQAAAAACHQAAAAAAHQAAAAADHQAAAAADHQAAAAABewAAAAAAHQAAAAACHQAAAAAAawAAAAAAewAAAAAAewAAAAAAOgAAAAAAWwAAAAADWwAAAAABWwAAAAACewAAAAAAHQAAAAABHQAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAADHQAAAAABewAAAAAAewAAAAAAewAAAAAAOgAAAAAAWwAAAAABWwAAAAACWwAAAAABewAAAAAAHQAAAAABHQAAAAADewAAAAAAWwAAAAADWwAAAAABHQAAAAAAHQAAAAAAHQAAAAACewAAAAAAawAAAAAAewAAAAAAewAAAAAAWwAAAAACewAAAAAAewAAAAAAewAAAAAAHQAAAAAAHQAAAAADewAAAAAAWwAAAAADWwAAAAABewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAACWwAAAAAAWwAAAAABWwAAAAABWwAAAAADWwAAAAACWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAACWwAAAAAAWwAAAAADWwAAAAABWwAAAAACWwAAAAADWwAAAAAAWwAAAAAAWwAAAAACWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAACWwAAAAAAWwAAAAABWwAAAAAAWwAAAAACWwAAAAACWwAAAAAAWwAAAAADWwAAAAAAWwAAAAAB + tiles: ewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAHQAAAAACHQAAAAABHQAAAAACHQAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAACHQAAAAABHQAAAAADHQAAAAACHQAAAAADHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAHQAAAAABHQAAAAAAHQAAAAABHQAAAAADHQAAAAABHQAAAAABHQAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAABewAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAADHQAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAACHQAAAAABHQAAAAAAHQAAAAADHQAAAAADewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAHQAAAAACHQAAAAACHQAAAAADHQAAAAABewAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAWwAAAAADHQAAAAABHQAAAAAAHQAAAAABHQAAAAACHQAAAAABewAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAWwAAAAADWwAAAAABWwAAAAAAWwAAAAABewAAAAAAHQAAAAADHQAAAAAAHQAAAAAAHQAAAAADHQAAAAACewAAAAAAHQAAAAAAHQAAAAAAawAAAAAAewAAAAAAewAAAAAAOgAAAAAAWwAAAAAAWwAAAAADWwAAAAADewAAAAAAHQAAAAABHQAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAABHQAAAAAAewAAAAAAewAAAAAAewAAAAAAOgAAAAAAWwAAAAACWwAAAAABWwAAAAABewAAAAAAHQAAAAABHQAAAAADewAAAAAAWwAAAAADWwAAAAADHQAAAAAAHQAAAAABHQAAAAADewAAAAAAawAAAAAAewAAAAAAewAAAAAAWwAAAAABewAAAAAAewAAAAAAewAAAAAAHQAAAAADHQAAAAADewAAAAAAWwAAAAAAWwAAAAADewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAADWwAAAAABWwAAAAABWwAAAAADWwAAAAACWwAAAAAAWwAAAAACWwAAAAABWwAAAAADWwAAAAAAWwAAAAADWwAAAAADWwAAAAAAWwAAAAACWwAAAAADWwAAAAADWwAAAAADWwAAAAAAWwAAAAABWwAAAAAAWwAAAAABWwAAAAACWwAAAAAAWwAAAAADWwAAAAACWwAAAAABWwAAAAAAWwAAAAAA version: 6 -1,-2: ind: -1,-2 - tiles: AAAAAAAAAAAAAAAAewAAAAAAegAAAAAAewAAAAAAAAAAAAAAewAAAAAAegAAAAAAewAAAAAAegAAAAAAewAAAAAAegAAAAAAewAAAAAAAAAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAegAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAagAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAAAWwAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAAAWwAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAewAAAAAAIgAAAAAAWwAAAAAAWwAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAA + tiles: AAAAAAAAAAAAAAAAewAAAAAAegAAAAAAewAAAAAAAAAAAAAAewAAAAAAegAAAAAAewAAAAAAegAAAAAAewAAAAAAegAAAAAAewAAAAAAAAAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAegAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAagAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAADWwAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAACWwAAAAACewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAewAAAAAAIgAAAAABWwAAAAABWwAAAAACewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAA version: 6 0,-2: ind: 0,-2 - tiles: ewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAABWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAADWwAAAAAAWwAAAAACegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAADWwAAAAADWwAAAAABegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAACWwAAAAADegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAABWwAAAAABegAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAAAWwAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAagAAAAAAawAAAAAAagAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAawAAAAAAawAAAAAAawAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAewAAAAAAagAAAAAAawAAAAAAagAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAEQAAAAAAEQAAAAAAEQAAAAAA + tiles: ewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAADWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAADWwAAAAAAWwAAAAADegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAACWwAAAAABWwAAAAACegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAACWwAAAAADegAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAAAWwAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAagAAAAAAawAAAAAAagAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAawAAAAAAawAAAAAAawAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAewAAAAAAagAAAAAAawAAAAAAagAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAEQAAAAAAEQAAAAAAEQAAAAAA version: 6 0,1: ind: 0,1 - tiles: egAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAeAAAAAAAeAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAACWwAAAAAAWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAACWwAAAAACWwAAAAADWwAAAAAAWwAAAAACWwAAAAAAWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAACWwAAAAADWwAAAAACWwAAAAACWwAAAAACWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAADWwAAAAADWwAAAAAAWwAAAAABWwAAAAADWwAAAAACWwAAAAAAWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAADWwAAAAABWwAAAAACWwAAAAACWwAAAAAAWwAAAAAAWwAAAAABWwAAAAADWwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAABWwAAAAAAWwAAAAACWwAAAAADWwAAAAABWwAAAAAAWwAAAAADWwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAACWwAAAAAAWwAAAAABWwAAAAAAWwAAAAAAWwAAAAABWwAAAAABewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAACWwAAAAABWwAAAAACWwAAAAACWwAAAAADWwAAAAADWwAAAAADewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAABWwAAAAAAWwAAAAAAWwAAAAACWwAAAAACWwAAAAABWwAAAAAAawAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAHQAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAewAAAAAAewAAAAAA + tiles: egAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAeAAAAAACeAAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAHQAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAeAAAAAABeAAAAAABeAAAAAAAeAAAAAABeAAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAeAAAAAADeAAAAAABeAAAAAAAeAAAAAABeAAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAADewAAAAAAewAAAAAAWwAAAAADWwAAAAABWwAAAAAAWwAAAAAAWwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAADWwAAAAADWwAAAAAAWwAAAAAAWwAAAAACWwAAAAADWwAAAAABWwAAAAACWwAAAAAAWwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAABWwAAAAACWwAAAAACWwAAAAAAWwAAAAACWwAAAAAAWwAAAAAAWwAAAAADWwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAACWwAAAAAAWwAAAAADWwAAAAAAWwAAAAABWwAAAAACWwAAAAACWwAAAAACWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAACWwAAAAABWwAAAAADWwAAAAACWwAAAAADWwAAAAAAWwAAAAAAWwAAAAADWwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAADWwAAAAADWwAAAAACWwAAAAAAWwAAAAACWwAAAAABWwAAAAAAWwAAAAADWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAACWwAAAAAAWwAAAAADWwAAAAACWwAAAAACWwAAAAADWwAAAAACewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAADWwAAAAAAWwAAAAADWwAAAAAAWwAAAAABWwAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAACWwAAAAADWwAAAAACWwAAAAAAWwAAAAADWwAAAAABWwAAAAADawAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAHQAAAAABewAAAAAAHQAAAAAAHQAAAAAAHQAAAAACewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAACWwAAAAADWwAAAAADewAAAAAAIgAAAAAAIgAAAAABIgAAAAACewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAABWwAAAAACWwAAAAABWwAAAAAAWwAAAAACewAAAAAAIgAAAAACIgAAAAADIgAAAAABewAAAAAAewAAAAAA version: 6 1,0: ind: 1,0 - tiles: WwAAAAABWwAAAAACWwAAAAAAWwAAAAADWwAAAAAAWwAAAAACWwAAAAABWwAAAAACWwAAAAACWwAAAAAAWwAAAAAAWwAAAAADWwAAAAABWwAAAAAAWwAAAAAAWwAAAAACWwAAAAAAWwAAAAACWwAAAAACWwAAAAACWwAAAAAAWwAAAAADWwAAAAADWwAAAAADWwAAAAACWwAAAAABWwAAAAAAWwAAAAAAWwAAAAADWwAAAAABWwAAAAABWwAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAACWwAAAAACewAAAAAAHQAAAAAAHQAAAAAAHQAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAAAWwAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAWwAAAAADewAAAAAAewAAAAAAHQAAAAADHQAAAAACHQAAAAABewAAAAAAPQAAAAAAbgAAAAADbgAAAAABPQAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAbgAAAAADbgAAAAADbgAAAAAAewAAAAAAHQAAAAABHQAAAAAAHQAAAAABewAAAAAAPQAAAAAAbgAAAAACbgAAAAACPQAAAAAAawAAAAAAewAAAAAAagAAAAAAewAAAAAAbgAAAAADbgAAAAADbgAAAAABewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAewAAAAAAPQAAAAAAbgAAAAADbgAAAAADPQAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAbgAAAAABbgAAAAAAbgAAAAADewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAewAAAAAAPQAAAAAAbgAAAAADbgAAAAABPQAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAbgAAAAABbgAAAAACbgAAAAACewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAWwAAAAADWwAAAAAAWwAAAAAAWwAAAAACDgAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAHQAAAAABWwAAAAADWwAAAAACWwAAAAADWwAAAAAADgAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAAAewAAAAAAWwAAAAADWwAAAAAAWwAAAAADWwAAAAABWwAAAAADWwAAAAACewAAAAAAWwAAAAAAWwAAAAADWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAABeAAAAAACWwAAAAADWwAAAAABWwAAAAAAWwAAAAACWwAAAAABWwAAAAACWwAAAAACWwAAAAADWwAAAAABWwAAAAADWwAAAAABWwAAAAABWwAAAAACWwAAAAABeAAAAAADewAAAAAAWwAAAAABWwAAAAAAWwAAAAADWwAAAAAAWwAAAAABWwAAAAABWwAAAAAAWwAAAAACWwAAAAAAWwAAAAABWwAAAAABWwAAAAABWwAAAAACWwAAAAAAeAAAAAADeAAAAAACWwAAAAADWwAAAAACWwAAAAADWwAAAAAAWwAAAAABWwAAAAADewAAAAAAWwAAAAABWwAAAAABWwAAAAAAWwAAAAAAWwAAAAACWwAAAAAAWwAAAAAB + tiles: WwAAAAAAWwAAAAACWwAAAAADWwAAAAADWwAAAAABWwAAAAACWwAAAAABWwAAAAADWwAAAAABWwAAAAACWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAACWwAAAAABWwAAAAABWwAAAAACWwAAAAADWwAAAAAAWwAAAAABWwAAAAABWwAAAAADWwAAAAACWwAAAAACWwAAAAAAWwAAAAABWwAAAAABWwAAAAABewAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAACWwAAAAABewAAAAAAHQAAAAAAHQAAAAAAHQAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAACWwAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAWwAAAAAAewAAAAAAewAAAAAAHQAAAAAAHQAAAAABHQAAAAADewAAAAAAPQAAAAAAbgAAAAADbgAAAAABPQAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAbgAAAAAAbgAAAAACbgAAAAAAewAAAAAAHQAAAAACHQAAAAAAHQAAAAACewAAAAAAPQAAAAAAbgAAAAACbgAAAAAAPQAAAAAAawAAAAAAewAAAAAAagAAAAAAewAAAAAAbgAAAAABbgAAAAABbgAAAAACewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAewAAAAAAPQAAAAAAbgAAAAADbgAAAAADPQAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAbgAAAAADbgAAAAAAbgAAAAABewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAewAAAAAAPQAAAAAAbgAAAAACbgAAAAABPQAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAbgAAAAABbgAAAAABbgAAAAACewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAWwAAAAABWwAAAAADWwAAAAACWwAAAAACDgAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAHQAAAAABWwAAAAAAWwAAAAADWwAAAAAAWwAAAAABDgAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAAAewAAAAAAWwAAAAABWwAAAAAAWwAAAAADWwAAAAAAWwAAAAABWwAAAAABewAAAAAAWwAAAAACWwAAAAACWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAADeAAAAAAAWwAAAAADWwAAAAADWwAAAAACWwAAAAABWwAAAAADWwAAAAABWwAAAAABWwAAAAAAWwAAAAABWwAAAAACWwAAAAAAWwAAAAACWwAAAAADWwAAAAADeAAAAAACewAAAAAAWwAAAAAAWwAAAAACWwAAAAABWwAAAAACWwAAAAABWwAAAAACWwAAAAAAWwAAAAAAWwAAAAADWwAAAAACWwAAAAADWwAAAAAAWwAAAAACWwAAAAABeAAAAAADeAAAAAACWwAAAAABWwAAAAADWwAAAAAAWwAAAAACWwAAAAABWwAAAAACewAAAAAAWwAAAAABWwAAAAAAWwAAAAABWwAAAAABWwAAAAAAWwAAAAAAWwAAAAAA version: 6 1,-1: ind: 1,-1 - tiles: ewAAAAAAewAAAAAAawAAAAAAbgAAAAABWwAAAAADWwAAAAACWwAAAAAAHQAAAAADewAAAAAAWwAAAAABWwAAAAADWwAAAAABWwAAAAAAWwAAAAACWwAAAAADWwAAAAADewAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAABWwAAAAADewAAAAAAWwAAAAACWwAAAAABWwAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAABeAAAAAADeAAAAAADHQAAAAACHQAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAABewAAAAAALAAAAAAALAAAAAAALAAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAAAeAAAAAADeAAAAAADHQAAAAAAHQAAAAADHQAAAAAAWwAAAAAAWwAAAAACWwAAAAAAewAAAAAALAAAAAAALAAAAAAALAAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAABeAAAAAADeAAAAAABHQAAAAADHQAAAAADHQAAAAAAWwAAAAAAWwAAAAADWwAAAAABHQAAAAABLAAAAAAALAAAAAAALAAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAACeAAAAAADeAAAAAADHQAAAAABHQAAAAACewAAAAAAWwAAAAABWwAAAAACWwAAAAADewAAAAAALAAAAAAALAAAAAAALAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAABWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAABWwAAAAABewAAAAAAPgAAAAAAPgAAAAAADgAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAADWwAAAAADewAAAAAAPgAAAAAAPgAAAAAADgAAAAACHQAAAAADHQAAAAAAeAAAAAAAeAAAAAACeAAAAAACewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAAAWwAAAAACWwAAAAACWwAAAAAADgAAAAAADgAAAAAADgAAAAAAHQAAAAACHQAAAAAAeAAAAAAAeAAAAAADeAAAAAADewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAADWwAAAAABWwAAAAABewAAAAAADgAAAAAADgAAAAAADgAAAAAAHQAAAAACHQAAAAABeAAAAAABeAAAAAACeAAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAACWwAAAAABewAAAAAADgAAAAACDgAAAAADDgAAAAADWwAAAAABewAAAAAAeAAAAAABeAAAAAABeAAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAACWwAAAAACewAAAAAADgAAAAABDgAAAAADDgAAAAACWwAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAABWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAACWwAAAAADWwAAAAAAWwAAAAABWwAAAAACWwAAAAABWwAAAAADWwAAAAABWwAAAAABWwAAAAABWwAAAAAAWwAAAAADWwAAAAADWwAAAAAB + tiles: ewAAAAAAewAAAAAAawAAAAAAbgAAAAACWwAAAAABWwAAAAABWwAAAAABHQAAAAABewAAAAAAWwAAAAADWwAAAAABWwAAAAAAWwAAAAACWwAAAAABWwAAAAABWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAABWwAAAAADewAAAAAAWwAAAAAAWwAAAAACWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAACWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAADeAAAAAABeAAAAAABHQAAAAAAHQAAAAAAewAAAAAAWwAAAAABWwAAAAAAWwAAAAABewAAAAAALAAAAAAALAAAAAAALAAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAACeAAAAAABeAAAAAADHQAAAAABHQAAAAACHQAAAAACWwAAAAABWwAAAAADWwAAAAAAewAAAAAALAAAAAAALAAAAAAALAAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAAAeAAAAAADeAAAAAABHQAAAAAAHQAAAAADHQAAAAADWwAAAAABWwAAAAACWwAAAAAAHQAAAAABLAAAAAAALAAAAAAALAAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAABeAAAAAABeAAAAAADHQAAAAAAHQAAAAADewAAAAAAWwAAAAABWwAAAAACWwAAAAABewAAAAAALAAAAAAALAAAAAAALAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAACWwAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAABWwAAAAABewAAAAAAPgAAAAAAPgAAAAAADgAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAADWwAAAAAAewAAAAAAPgAAAAAAPgAAAAAADgAAAAADHQAAAAAAHQAAAAADeAAAAAABeAAAAAADeAAAAAABewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAADWwAAAAAAWwAAAAABWwAAAAAADgAAAAADDgAAAAACDgAAAAADHQAAAAABHQAAAAABeAAAAAADeAAAAAAAeAAAAAACewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAABWwAAAAACWwAAAAACewAAAAAADgAAAAADDgAAAAABDgAAAAABHQAAAAABHQAAAAABeAAAAAAAeAAAAAACeAAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAADWwAAAAAAewAAAAAADgAAAAABDgAAAAAADgAAAAAAWwAAAAADewAAAAAAeAAAAAABeAAAAAADeAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAAAWwAAAAAAewAAAAAADgAAAAACDgAAAAACDgAAAAACWwAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAACWwAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAABWwAAAAACWwAAAAABWwAAAAABWwAAAAACWwAAAAACWwAAAAACWwAAAAADWwAAAAAAWwAAAAACWwAAAAACWwAAAAADWwAAAAADWwAAAAAAWwAAAAAD version: 6 1,-2: ind: 1,-2 - tiles: awAAAAAAWwAAAAABWwAAAAADewAAAAAAZAAAAAAAZAAAAAAAZAAAAAAAZAAAAAAAZAAAAAAAZAAAAAAAZAAAAAAAZAAAAAAAZAAAAAAAZAAAAAAAZAAAAAAAZAAAAAAAewAAAAAAWwAAAAAAWwAAAAABewAAAAAAZAAAAAAAZAAAAAAAZAAAAAAAZAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAZAAAAAAAZAAAAAAAZAAAAAAAewAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAACWwAAAAACewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAABWwAAAAADWwAAAAACWwAAAAACWwAAAAABWwAAAAAAWwAAAAAAWwAAAAACWwAAAAACWwAAAAABWwAAAAACWwAAAAACWwAAAAACWwAAAAAAagAAAAAAewAAAAAAWwAAAAAAWwAAAAADWwAAAAADWwAAAAADWwAAAAACWwAAAAACWwAAAAACWwAAAAAAewAAAAAAWwAAAAABWwAAAAADWwAAAAADewAAAAAAWwAAAAAAagAAAAAAewAAAAAAWwAAAAABWwAAAAACWwAAAAADWwAAAAADWwAAAAABWwAAAAABWwAAAAABWwAAAAADewAAAAAAewAAAAAAWwAAAAACewAAAAAAewAAAAAAWwAAAAAAagAAAAAAewAAAAAAWwAAAAACWwAAAAADWwAAAAADWwAAAAADWwAAAAAAWwAAAAAAWwAAAAADewAAAAAAewAAAAAAWwAAAAABWwAAAAAAWwAAAAACewAAAAAAewAAAAAAagAAAAAAewAAAAAAWwAAAAABWwAAAAAAWwAAAAADWwAAAAABWwAAAAACWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAADWwAAAAACWwAAAAACWwAAAAADWwAAAAACWwAAAAAAagAAAAAAewAAAAAAWwAAAAAAWwAAAAABWwAAAAAAWwAAAAACWwAAAAADWwAAAAACWwAAAAACWwAAAAAAWwAAAAABWwAAAAAAWwAAAAACWwAAAAADWwAAAAADWwAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAACWwAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAWwAAAAACWwAAAAACWwAAAAACawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAACWwAAAAACewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAABWwAAAAAAHQAAAAACewAAAAAAWwAAAAAAWwAAAAADWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAEQAAAAAAewAAAAAAHQAAAAAAewAAAAAAWwAAAAABWwAAAAAAWwAAAAADHQAAAAAAewAAAAAAWwAAAAAAWwAAAAACWwAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAEQAAAAAAawAAAAAAHQAAAAADewAAAAAAWwAAAAAAWwAAAAACWwAAAAACHQAAAAACHQAAAAAAWwAAAAADWwAAAAADWwAAAAABewAAAAAAWwAAAAACWwAAAAACWwAAAAADEQAAAAAAewAAAAAAHQAAAAAAewAAAAAAWwAAAAACWwAAAAABWwAAAAACHQAAAAADewAAAAAAWwAAAAADWwAAAAABWwAAAAAAWwAAAAACWwAAAAABWwAAAAACWwAAAAAA + tiles: awAAAAAAWwAAAAADWwAAAAABewAAAAAAZAAAAAADZAAAAAABZAAAAAABZAAAAAABZAAAAAADZAAAAAAAZAAAAAAAZAAAAAACZAAAAAABZAAAAAACZAAAAAABZAAAAAADewAAAAAAWwAAAAABWwAAAAADewAAAAAAZAAAAAAAZAAAAAABZAAAAAAAZAAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAZAAAAAABZAAAAAABZAAAAAACewAAAAAAWwAAAAABWwAAAAAAewAAAAAAewAAAAAAWwAAAAACewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAABWwAAAAACewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAACWwAAAAADWwAAAAAAWwAAAAAAWwAAAAACWwAAAAADWwAAAAAAWwAAAAADWwAAAAABWwAAAAABWwAAAAABWwAAAAABWwAAAAABWwAAAAACagAAAAAAewAAAAAAWwAAAAAAWwAAAAADWwAAAAAAWwAAAAABWwAAAAABWwAAAAAAWwAAAAABWwAAAAAAewAAAAAAWwAAAAABWwAAAAADWwAAAAADewAAAAAAWwAAAAADagAAAAAAewAAAAAAWwAAAAAAWwAAAAABWwAAAAADWwAAAAACWwAAAAACWwAAAAADWwAAAAADWwAAAAADewAAAAAAewAAAAAAWwAAAAAAewAAAAAAewAAAAAAWwAAAAAAagAAAAAAewAAAAAAWwAAAAABWwAAAAADWwAAAAAAWwAAAAAAWwAAAAADWwAAAAAAWwAAAAADewAAAAAAewAAAAAAWwAAAAABWwAAAAAAWwAAAAACewAAAAAAewAAAAAAagAAAAAAewAAAAAAWwAAAAABWwAAAAADWwAAAAAAWwAAAAADWwAAAAACWwAAAAACWwAAAAAAWwAAAAACWwAAAAACWwAAAAADWwAAAAAAWwAAAAACWwAAAAADWwAAAAABagAAAAAAewAAAAAAWwAAAAADWwAAAAADWwAAAAABWwAAAAADWwAAAAACWwAAAAACWwAAAAADWwAAAAAAWwAAAAADWwAAAAADWwAAAAACWwAAAAACWwAAAAAAWwAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAADWwAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAWwAAAAABWwAAAAAAWwAAAAACawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAADWwAAAAACewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAACWwAAAAACHQAAAAAAewAAAAAAWwAAAAADWwAAAAAAWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAEQAAAAAAewAAAAAAHQAAAAAAewAAAAAAWwAAAAAAWwAAAAADWwAAAAADHQAAAAABewAAAAAAWwAAAAACWwAAAAACWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAEQAAAAAAawAAAAAAHQAAAAACewAAAAAAWwAAAAACWwAAAAABWwAAAAABHQAAAAABHQAAAAABWwAAAAACWwAAAAADWwAAAAAAewAAAAAAWwAAAAADWwAAAAADWwAAAAABEQAAAAAAewAAAAAAHQAAAAAAewAAAAAAWwAAAAAAWwAAAAABWwAAAAADHQAAAAADewAAAAAAWwAAAAABWwAAAAADWwAAAAAAWwAAAAACWwAAAAACWwAAAAADWwAAAAAD version: 6 0,-3: ind: 0,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAewAAAAAAegAAAAAAewAAAAAAWwAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAHQAAAAAAegAAAAAAegAAAAAAewAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAHQAAAAACHQAAAAACHQAAAAABHQAAAAAAewAAAAAAWwAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAHQAAAAAAHQAAAAADHQAAAAADHQAAAAABewAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAHQAAAAACHQAAAAADHQAAAAABHQAAAAADWwAAAAACWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAHQAAAAADHQAAAAAAHQAAAAADHQAAAAADewAAAAAAWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAeAAAAAABeAAAAAACeAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAeAAAAAAAeAAAAAABeAAAAAABewAAAAAAewAAAAAAewAAAAAAagAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAeAAAAAACeAAAAAADeAAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAewAAAAAAegAAAAAAewAAAAAAWwAAAAACegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAHQAAAAAAegAAAAAAegAAAAAAewAAAAAAWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAHQAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAHQAAAAADHQAAAAADHQAAAAADHQAAAAABewAAAAAAWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAHQAAAAACHQAAAAAAHQAAAAADHQAAAAACewAAAAAAWwAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAHQAAAAABHQAAAAAAHQAAAAABHQAAAAACWwAAAAAAWwAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAHQAAAAAAHQAAAAADHQAAAAABHQAAAAABewAAAAAAWwAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAA version: 6 1,-3: ind: 1,-3 - tiles: AAAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAACHQAAAAABHQAAAAABHQAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAAAWwAAAAACWwAAAAABWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAHQAAAAAAewAAAAAAHQAAAAACWwAAAAAAWwAAAAAAewAAAAAAWwAAAAADewAAAAAAewAAAAAAewAAAAAAWwAAAAADewAAAAAAHQAAAAAAHQAAAAAAewAAAAAAHQAAAAABHQAAAAABewAAAAAAHQAAAAAAWwAAAAAAWwAAAAABewAAAAAAWwAAAAAAHQAAAAACewAAAAAAHQAAAAADWwAAAAAAewAAAAAAHQAAAAAAHQAAAAAAewAAAAAAHQAAAAADHQAAAAABewAAAAAAHQAAAAACWwAAAAACWwAAAAADWwAAAAACWwAAAAAAHQAAAAABewAAAAAAHQAAAAACWwAAAAACewAAAAAAHQAAAAAAHQAAAAAAewAAAAAAHQAAAAAAHQAAAAACewAAAAAAHQAAAAACWwAAAAADWwAAAAADHQAAAAAAWwAAAAAAHQAAAAABewAAAAAAHQAAAAABWwAAAAABHQAAAAAAHQAAAAAAHQAAAAAAewAAAAAAHQAAAAABHQAAAAABewAAAAAAHQAAAAACWwAAAAABWwAAAAACewAAAAAAWwAAAAACWwAAAAABWwAAAAACWwAAAAADWwAAAAADewAAAAAAHQAAAAAAHQAAAAAAewAAAAAAHQAAAAAAHQAAAAACHQAAAAAAHQAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAACWwAAAAADWwAAAAADWwAAAAADWwAAAAAAWwAAAAACWwAAAAACWwAAAAAAWwAAAAADWwAAAAACWwAAAAACWwAAAAAAWwAAAAACWwAAAAAAWwAAAAACWwAAAAADWwAAAAADWwAAAAAAWwAAAAACWwAAAAABWwAAAAABWwAAAAABWwAAAAABWwAAAAAAWwAAAAADWwAAAAABWwAAAAADWwAAAAAAWwAAAAACWwAAAAABWwAAAAADWwAAAAAAWwAAAAACWwAAAAACWwAAAAACWwAAAAABWwAAAAADWwAAAAAAWwAAAAACWwAAAAACewAAAAAAewAAAAAAewAAAAAAWwAAAAADewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAADWwAAAAADWwAAAAAAWwAAAAADewAAAAAAewAAAAAAWwAAAAADewAAAAAAewAAAAAAZAAAAAAAZAAAAAAAZAAAAAAAZAAAAAAAZAAAAAAAewAAAAAAewAAAAAAWwAAAAACewAAAAAAWwAAAAADWwAAAAADewAAAAAAZAAAAAAAZAAAAAAAZAAAAAAAZAAAAAAAZAAAAAAAZAAAAAAAZAAAAAAAZAAAAAAAZAAAAAAAZAAAAAAAZAAAAAAAZAAAAAAA + tiles: AAAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAADHQAAAAADHQAAAAAAHQAAAAADewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAADWwAAAAADWwAAAAAAWwAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAHQAAAAABewAAAAAAHQAAAAABWwAAAAAAWwAAAAAAewAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACewAAAAAAHQAAAAABHQAAAAADewAAAAAAHQAAAAACHQAAAAADewAAAAAAHQAAAAAAWwAAAAABWwAAAAADewAAAAAAWwAAAAABHQAAAAACewAAAAAAHQAAAAACWwAAAAAAewAAAAAAHQAAAAACHQAAAAAAewAAAAAAHQAAAAACHQAAAAABewAAAAAAHQAAAAACWwAAAAACWwAAAAACWwAAAAACWwAAAAABHQAAAAAAewAAAAAAHQAAAAADWwAAAAADewAAAAAAHQAAAAACHQAAAAABewAAAAAAHQAAAAAAHQAAAAACewAAAAAAHQAAAAACWwAAAAAAWwAAAAACHQAAAAACWwAAAAABHQAAAAABewAAAAAAHQAAAAAAWwAAAAAAHQAAAAACHQAAAAACHQAAAAACewAAAAAAHQAAAAAAHQAAAAADewAAAAAAHQAAAAAAWwAAAAACWwAAAAAAewAAAAAAWwAAAAAAWwAAAAABWwAAAAACWwAAAAACWwAAAAABewAAAAAAHQAAAAADHQAAAAACewAAAAAAHQAAAAACHQAAAAAAHQAAAAADHQAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAABWwAAAAADWwAAAAAAWwAAAAACWwAAAAACWwAAAAACWwAAAAABWwAAAAABWwAAAAACWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAADWwAAAAABWwAAAAADWwAAAAACWwAAAAADWwAAAAADWwAAAAADWwAAAAADWwAAAAACWwAAAAACWwAAAAAAWwAAAAABWwAAAAABWwAAAAACWwAAAAAAWwAAAAAAWwAAAAACWwAAAAADWwAAAAABWwAAAAABWwAAAAAAWwAAAAAAWwAAAAABWwAAAAABWwAAAAAAWwAAAAACWwAAAAAAWwAAAAABewAAAAAAewAAAAAAewAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAAAWwAAAAABWwAAAAABWwAAAAADewAAAAAAewAAAAAAWwAAAAAAewAAAAAAewAAAAAAZAAAAAADZAAAAAACZAAAAAADZAAAAAABZAAAAAAAewAAAAAAewAAAAAAWwAAAAADewAAAAAAWwAAAAACWwAAAAAAewAAAAAAZAAAAAAAZAAAAAADZAAAAAACZAAAAAACZAAAAAACZAAAAAABZAAAAAACZAAAAAABZAAAAAACZAAAAAACZAAAAAADZAAAAAAD version: 6 2,-2: ind: 2,-2 - tiles: ZAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAZAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAABewAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAHQAAAAADTQAAAAAAewAAAAAAegAAAAAAAAAAAAAAewAAAAAAagAAAAAAewAAAAAA + tiles: ZAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAZAAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAACewAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAHQAAAAAATQAAAAAAewAAAAAAegAAAAAAAAAAAAAAewAAAAAAagAAAAAAewAAAAAA version: 6 2,-3: ind: 2,-3 - tiles: ewAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATQAAAAAATQAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATQAAAAAATQAAAAAAewAAAAAAewAAAAAATwAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATQAAAAAATQAAAAAAHQAAAAACewAAAAAATwAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATQAAAAAATQAAAAAAHQAAAAACewAAAAAATwAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAABewAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAegAAAAAAegAAAAAAHQAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAACWwAAAAABWwAAAAACWwAAAAADWwAAAAABWwAAAAADWwAAAAADWwAAAAAAewAAAAAAHQAAAAABawAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAWwAAAAADWwAAAAAAWwAAAAABWwAAAAACWwAAAAACWwAAAAADWwAAAAABWwAAAAAAWwAAAAABewAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAABWwAAAAADTwAAAAAATwAAAAAATwAAAAAATwAAAAAATwAAAAAAewAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAawAAAAAAawAAAAAAewAAAAAATwAAAAAATwAAAAAATwAAAAAATwAAAAAATwAAAAAAewAAAAAAWwAAAAACewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAWwAAAAADewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAZAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAA + tiles: ewAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATQAAAAAATQAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATQAAAAAATQAAAAAAewAAAAAAewAAAAAATwAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATQAAAAAATQAAAAAAHQAAAAABewAAAAAATwAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATQAAAAAATQAAAAAAHQAAAAADewAAAAAATwAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAABewAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAegAAAAAAegAAAAAAHQAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAABWwAAAAAAWwAAAAACWwAAAAACWwAAAAADWwAAAAABWwAAAAAAWwAAAAAAewAAAAAAHQAAAAADawAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAWwAAAAAAWwAAAAAAWwAAAAABWwAAAAAAWwAAAAACWwAAAAACWwAAAAAAWwAAAAAAWwAAAAADewAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAACWwAAAAACWwAAAAADTwAAAAAATwAAAAAATwAAAAAATwAAAAAATwAAAAAAewAAAAAAHQAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAawAAAAAAawAAAAAAewAAAAAATwAAAAAATwAAAAAATwAAAAAATwAAAAAATwAAAAAAewAAAAAAWwAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAWwAAAAACewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAZAAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAA version: 6 1,1: ind: 1,1 - tiles: eAAAAAAAewAAAAAAZQAAAAADewAAAAAAewAAAAAALAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAADWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAALAAAAAAALAAAAAAALAAAAAAAewAAAAAAWwAAAAAAWwAAAAACWwAAAAABWwAAAAAAewAAAAAAWwAAAAACWwAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAAewAAAAAAWwAAAAABWwAAAAADWwAAAAAAWwAAAAACewAAAAAAWwAAAAADWwAAAAACWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAABWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAABWwAAAAADWwAAAAAAWwAAAAADWwAAAAACWwAAAAAAWwAAAAAAWwAAAAABWwAAAAABWwAAAAABWwAAAAABewAAAAAAWwAAAAABWwAAAAACWwAAAAADWwAAAAAAWwAAAAACWwAAAAADWwAAAAADWwAAAAADWwAAAAACWwAAAAADWwAAAAABWwAAAAABWwAAAAAAWwAAAAADWwAAAAACewAAAAAAWwAAAAABWwAAAAACewAAAAAAewAAAAAAWwAAAAADWwAAAAAAWwAAAAACWwAAAAADWwAAAAACWwAAAAABWwAAAAAAWwAAAAABWwAAAAACWwAAAAABWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAADWwAAAAADWwAAAAACewAAAAAAWwAAAAABWwAAAAABWwAAAAADWwAAAAACWwAAAAACWwAAAAADWwAAAAACWwAAAAABWwAAAAABWwAAAAADewAAAAAAWwAAAAADWwAAAAACWwAAAAABWwAAAAAAewAAAAAAWwAAAAAAWwAAAAADWwAAAAADWwAAAAABWwAAAAACWwAAAAABWwAAAAADWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAABWwAAAAABWwAAAAAAWwAAAAADWwAAAAACWwAAAAADHQAAAAACHQAAAAADHQAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAAAWwAAAAAAewAAAAAAHQAAAAABHQAAAAAAHQAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAWwAAAAAAWwAAAAAAWwAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAABWwAAAAADewAAAAAAHQAAAAADHQAAAAAAHQAAAAAAewAAAAAAeAAAAAAAeAAAAAADeAAAAAABeAAAAAADeAAAAAAAewAAAAAAeAAAAAABeAAAAAADWwAAAAAAWwAAAAACWwAAAAABewAAAAAAHQAAAAAAHQAAAAACHQAAAAADewAAAAAAeAAAAAACeAAAAAAAeAAAAAACeAAAAAACeAAAAAAAewAAAAAAeAAAAAAAeAAAAAABWwAAAAADWwAAAAADWwAAAAABewAAAAAAHQAAAAADHQAAAAACHQAAAAAAewAAAAAAeAAAAAACeAAAAAACeAAAAAACeAAAAAABeAAAAAABeAAAAAACeAAAAAADeAAAAAAAWwAAAAACWwAAAAACWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAA + tiles: eAAAAAACewAAAAAAZQAAAAADewAAAAAAewAAAAAALAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAADWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAALAAAAAAALAAAAAAALAAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAACWwAAAAABewAAAAAAWwAAAAADWwAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAAewAAAAAAWwAAAAABWwAAAAACWwAAAAACWwAAAAAAewAAAAAAWwAAAAACWwAAAAAAWwAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAAAWwAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAADWwAAAAABWwAAAAABWwAAAAADWwAAAAABWwAAAAADWwAAAAAAWwAAAAABWwAAAAAAWwAAAAADWwAAAAACewAAAAAAWwAAAAABWwAAAAADWwAAAAADWwAAAAAAWwAAAAABWwAAAAACWwAAAAADWwAAAAADWwAAAAACWwAAAAACWwAAAAACWwAAAAAAWwAAAAACWwAAAAADWwAAAAACewAAAAAAWwAAAAACWwAAAAADewAAAAAAewAAAAAAWwAAAAADWwAAAAACWwAAAAABWwAAAAABWwAAAAABWwAAAAABWwAAAAADWwAAAAABWwAAAAAAWwAAAAADWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAADWwAAAAAAWwAAAAABewAAAAAAWwAAAAABWwAAAAABWwAAAAADWwAAAAACWwAAAAABWwAAAAAAWwAAAAADWwAAAAABWwAAAAABWwAAAAAAewAAAAAAWwAAAAACWwAAAAAAWwAAAAAAWwAAAAACewAAAAAAWwAAAAABWwAAAAADWwAAAAADWwAAAAAAWwAAAAABWwAAAAACWwAAAAAAWwAAAAACWwAAAAABWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAADWwAAAAACWwAAAAACWwAAAAADWwAAAAADWwAAAAABHQAAAAACHQAAAAADHQAAAAABewAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAAAWwAAAAADewAAAAAAHQAAAAACHQAAAAACHQAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAWwAAAAABWwAAAAAAWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAABWwAAAAADewAAAAAAHQAAAAADHQAAAAAAHQAAAAAAewAAAAAAeAAAAAABeAAAAAACeAAAAAAAeAAAAAAAeAAAAAADewAAAAAAeAAAAAADeAAAAAADWwAAAAACWwAAAAAAWwAAAAAAewAAAAAAHQAAAAADHQAAAAACHQAAAAAAewAAAAAAeAAAAAAAeAAAAAABeAAAAAABeAAAAAADeAAAAAAAewAAAAAAeAAAAAABeAAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAHQAAAAAAHQAAAAACHQAAAAAAewAAAAAAeAAAAAABeAAAAAAAeAAAAAADeAAAAAABeAAAAAABeAAAAAABeAAAAAADeAAAAAACWwAAAAABWwAAAAAAWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAA version: 6 2,0: ind: 2,0 - tiles: WwAAAAACWwAAAAADWwAAAAADWwAAAAADWwAAAAAAWwAAAAADWwAAAAABWwAAAAADWwAAAAADWwAAAAACWwAAAAABWwAAAAABWwAAAAAAWwAAAAABWwAAAAADWwAAAAACWwAAAAABWwAAAAADWwAAAAAAWwAAAAADWwAAAAADWwAAAAACWwAAAAABWwAAAAAAWwAAAAABWwAAAAACWwAAAAAAewAAAAAAewAAAAAAWwAAAAADewAAAAAAewAAAAAAHQAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAACWwAAAAABewAAAAAAbgAAAAAAbgAAAAACbgAAAAABbgAAAAACewAAAAAAewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAewAAAAAAPgAAAAAAewAAAAAAWwAAAAADWwAAAAABWwAAAAACewAAAAAAbgAAAAADbgAAAAAAbgAAAAACbgAAAAACHQAAAAAAewAAAAAAHQAAAAACWwAAAAAAHQAAAAACewAAAAAAPgAAAAAAewAAAAAAWwAAAAADWwAAAAABWwAAAAAAewAAAAAAbgAAAAADbgAAAAADbgAAAAAAbgAAAAAAHQAAAAABewAAAAAAHQAAAAADHQAAAAACHQAAAAADHQAAAAAAHQAAAAADewAAAAAAWwAAAAADWwAAAAABWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAPgAAAAAAHQAAAAACHQAAAAABHQAAAAAAHQAAAAABHQAAAAACHQAAAAACewAAAAAAWwAAAAABWwAAAAADWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAPgAAAAAAewAAAAAAHQAAAAACHQAAAAABHQAAAAACHQAAAAADHQAAAAADHQAAAAADWwAAAAABWwAAAAACWwAAAAADawAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAPgAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAADHQAAAAABewAAAAAAWwAAAAACWwAAAAABWwAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAACewAAAAAAHQAAAAABHQAAAAADHQAAAAACHQAAAAADHQAAAAABewAAAAAAWwAAAAAAWwAAAAAAWwAAAAADewAAAAAAWwAAAAADWwAAAAADNgAAAAAAbgAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAADWwAAAAADewAAAAAANgAAAAAANgAAAAAANgAAAAAAbgAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAWwAAAAADWwAAAAABWwAAAAABewAAAAAAWwAAAAACWwAAAAADNgAAAAAAbgAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAABWwAAAAABewAAAAAAWwAAAAACWwAAAAAAewAAAAAAbgAAAAACWwAAAAADWwAAAAAAWwAAAAADWwAAAAACWwAAAAACWwAAAAAAWwAAAAABWwAAAAAAWwAAAAACWwAAAAADWwAAAAADWwAAAAACWwAAAAAAWwAAAAADWwAAAAAAWwAAAAAAWwAAAAABWwAAAAACWwAAAAABWwAAAAAAWwAAAAACWwAAAAADWwAAAAADWwAAAAABWwAAAAACWwAAAAACWwAAAAABWwAAAAADWwAAAAABWwAAAAACWwAAAAACWwAAAAADWwAAAAADWwAAAAABWwAAAAADWwAAAAACWwAAAAAAWwAAAAADWwAAAAADWwAAAAAAWwAAAAADWwAAAAABWwAAAAAAWwAAAAADWwAAAAABWwAAAAABWwAAAAACWwAAAAAB + tiles: WwAAAAAAWwAAAAACWwAAAAAAWwAAAAADWwAAAAACWwAAAAADWwAAAAAAWwAAAAAAWwAAAAACWwAAAAACWwAAAAABWwAAAAABWwAAAAAAWwAAAAABWwAAAAADWwAAAAAAWwAAAAABWwAAAAACWwAAAAACWwAAAAADWwAAAAACWwAAAAACWwAAAAABWwAAAAAAWwAAAAABWwAAAAADWwAAAAADewAAAAAAewAAAAAAWwAAAAAAewAAAAAAewAAAAAAHQAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAACWwAAAAADewAAAAAAbgAAAAAAbgAAAAAAbgAAAAABbgAAAAACewAAAAAAewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAewAAAAAAPgAAAAAAewAAAAAAWwAAAAACWwAAAAAAWwAAAAADewAAAAAAbgAAAAAAbgAAAAADbgAAAAACbgAAAAABHQAAAAABewAAAAAAHQAAAAABWwAAAAADHQAAAAABewAAAAAAPgAAAAAAewAAAAAAWwAAAAABWwAAAAACWwAAAAACewAAAAAAbgAAAAADbgAAAAAAbgAAAAAAbgAAAAADHQAAAAADewAAAAAAHQAAAAAAHQAAAAADHQAAAAACHQAAAAABHQAAAAACewAAAAAAWwAAAAABWwAAAAAAWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAPgAAAAAAHQAAAAACHQAAAAAAHQAAAAABHQAAAAAAHQAAAAACHQAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAPgAAAAAAewAAAAAAHQAAAAABHQAAAAADHQAAAAACHQAAAAABHQAAAAADHQAAAAACWwAAAAADWwAAAAACWwAAAAABawAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAPgAAAAAAewAAAAAAHQAAAAABHQAAAAACHQAAAAABHQAAAAABHQAAAAADewAAAAAAWwAAAAABWwAAAAABWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAADewAAAAAAHQAAAAACHQAAAAADHQAAAAAAHQAAAAACHQAAAAADewAAAAAAWwAAAAAAWwAAAAADWwAAAAAAewAAAAAAWwAAAAAAWwAAAAACNgAAAAAAbgAAAAADewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAADWwAAAAADewAAAAAANgAAAAAANgAAAAAANgAAAAAAbgAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAWwAAAAAAWwAAAAADWwAAAAAAewAAAAAAWwAAAAABWwAAAAAANgAAAAAAbgAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAADWwAAAAAAewAAAAAAWwAAAAAAWwAAAAABewAAAAAAbgAAAAAAWwAAAAAAWwAAAAABWwAAAAACWwAAAAADWwAAAAACWwAAAAACWwAAAAABWwAAAAACWwAAAAABWwAAAAACWwAAAAABWwAAAAAAWwAAAAABWwAAAAACWwAAAAACWwAAAAAAWwAAAAABWwAAAAACWwAAAAACWwAAAAABWwAAAAAAWwAAAAADWwAAAAACWwAAAAAAWwAAAAABWwAAAAABWwAAAAABWwAAAAADWwAAAAACWwAAAAACWwAAAAACWwAAAAABWwAAAAADWwAAAAAAWwAAAAACWwAAAAACWwAAAAADWwAAAAABWwAAAAACWwAAAAACWwAAAAAAWwAAAAACWwAAAAABWwAAAAADWwAAAAABWwAAAAADWwAAAAAAWwAAAAAD version: 6 2,-1: ind: 2,-1 - tiles: WwAAAAADWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAATQAAAAAAewAAAAAAegAAAAAAAAAAAAAAewAAAAAAagAAAAAAewAAAAAAWwAAAAACWwAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAHQAAAAADTQAAAAAAewAAAAAAegAAAAAAAAAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAAAWwAAAAAAWwAAAAACWwAAAAACawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAACWwAAAAADWwAAAAAAWwAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAADHQAAAAADHQAAAAACWwAAAAADWwAAAAADWwAAAAAAWwAAAAACWwAAAAABewAAAAAAeAAAAAAAeAAAAAAAewAAAAAAWwAAAAADWwAAAAAAWwAAAAAAewAAAAAALwAAAAAALwAAAAAAewAAAAAAWwAAAAAAWwAAAAABWwAAAAAAWwAAAAAAWwAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAewAAAAAAWwAAAAADWwAAAAAAWwAAAAADewAAAAAALwAAAAAALwAAAAAAewAAAAAAHQAAAAADHQAAAAACHQAAAAAAHQAAAAAAewAAAAAAHQAAAAABHQAAAAADewAAAAAAewAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAALwAAAAAALwAAAAAADgAAAAABDgAAAAACDgAAAAACDgAAAAACDgAAAAADHQAAAAAAHQAAAAACHQAAAAAAHQAAAAABWwAAAAAAWwAAAAACWwAAAAADWwAAAAADWwAAAAAAWwAAAAABWwAAAAAADgAAAAABDgAAAAAADgAAAAADDgAAAAADDgAAAAADHQAAAAACHQAAAAABHQAAAAADHQAAAAAAWwAAAAACOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAWwAAAAACDgAAAAABDgAAAAADDgAAAAABDgAAAAADDgAAAAACHQAAAAACHQAAAAAAHQAAAAAAewAAAAAAWwAAAAADOgAAAAAAWwAAAAAAWwAAAAACWwAAAAAAOgAAAAAAWwAAAAAADgAAAAACDgAAAAAADgAAAAADDgAAAAAADgAAAAACHQAAAAAAHQAAAAADHQAAAAABewAAAAAAWwAAAAAAOgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAOgAAAAAAWwAAAAABDgAAAAADDgAAAAABDgAAAAADDgAAAAADDgAAAAABHQAAAAAAHQAAAAADHQAAAAADHQAAAAADWwAAAAADOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAWwAAAAAADgAAAAACDgAAAAAADgAAAAABDgAAAAACDgAAAAAAewAAAAAAHQAAAAABHQAAAAABewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAAAewAAAAAAOgAAAAAAewAAAAAAewAAAAAAWwAAAAABewAAAAAAWwAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAACWwAAAAABWwAAAAABWwAAAAAAWwAAAAACWwAAAAAAWwAAAAACWwAAAAABWwAAAAAAWwAAAAACWwAAAAACWwAAAAACWwAAAAABWwAAAAABWwAAAAAAWwAAAAABWwAAAAACWwAAAAACWwAAAAABWwAAAAAAWwAAAAAAWwAAAAAA + tiles: WwAAAAADWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAABTQAAAAAAewAAAAAAegAAAAAAAAAAAAAAewAAAAAAagAAAAAAewAAAAAAWwAAAAABWwAAAAABewAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAHQAAAAAATQAAAAAAewAAAAAAegAAAAAAAAAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAADWwAAAAACWwAAAAABWwAAAAADawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAACWwAAAAACWwAAAAADWwAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAACHQAAAAADHQAAAAAAWwAAAAAAWwAAAAABWwAAAAACWwAAAAAAWwAAAAABewAAAAAAeAAAAAABeAAAAAADewAAAAAAWwAAAAABWwAAAAAAWwAAAAACewAAAAAALwAAAAAALwAAAAAAewAAAAAAWwAAAAAAWwAAAAADWwAAAAABWwAAAAABWwAAAAACeAAAAAACeAAAAAAAeAAAAAADewAAAAAAWwAAAAAAWwAAAAADWwAAAAACewAAAAAALwAAAAAALwAAAAAAewAAAAAAHQAAAAABHQAAAAABHQAAAAACHQAAAAAAewAAAAAAHQAAAAACHQAAAAABewAAAAAAewAAAAAAWwAAAAABewAAAAAAewAAAAAAewAAAAAALwAAAAAALwAAAAAADgAAAAABDgAAAAACDgAAAAABDgAAAAABDgAAAAADHQAAAAABHQAAAAABHQAAAAABHQAAAAADWwAAAAADWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAADWwAAAAADWwAAAAACDgAAAAADDgAAAAADDgAAAAADDgAAAAACDgAAAAABHQAAAAADHQAAAAACHQAAAAABHQAAAAACWwAAAAADOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAWwAAAAACDgAAAAADDgAAAAABDgAAAAAADgAAAAACDgAAAAAAHQAAAAABHQAAAAABHQAAAAABewAAAAAAWwAAAAACOgAAAAAAWwAAAAADWwAAAAACWwAAAAADOgAAAAAAWwAAAAACDgAAAAADDgAAAAABDgAAAAAADgAAAAACDgAAAAACHQAAAAABHQAAAAADHQAAAAADewAAAAAAWwAAAAABOgAAAAAAHQAAAAADHQAAAAAAHQAAAAACOgAAAAAAWwAAAAADDgAAAAACDgAAAAADDgAAAAACDgAAAAADDgAAAAADHQAAAAAAHQAAAAAAHQAAAAADHQAAAAACWwAAAAACOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAOgAAAAAAWwAAAAAADgAAAAACDgAAAAABDgAAAAABDgAAAAACDgAAAAACewAAAAAAHQAAAAADHQAAAAADewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAACewAAAAAAOgAAAAAAewAAAAAAewAAAAAAWwAAAAAAewAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAADWwAAAAAAWwAAAAAAWwAAAAACWwAAAAABWwAAAAADWwAAAAACWwAAAAADWwAAAAADWwAAAAADWwAAAAACWwAAAAADWwAAAAADWwAAAAADWwAAAAABWwAAAAABWwAAAAABWwAAAAAAWwAAAAADWwAAAAABWwAAAAABWwAAAAAB version: 6 1,-4: ind: 1,-4 @@ -135,59 +135,59 @@ entities: version: 6 3,-1: ind: 3,-1 - tiles: ewAAAAAAAwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAewAAAAAAeAAAAAACeAAAAAADeAAAAAAAeAAAAAACeAAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAADbgAAAAAAbgAAAAACbgAAAAABbgAAAAAAewAAAAAAbgAAAAAAbgAAAAACbgAAAAADbgAAAAADewAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAABbgAAAAAAbgAAAAABbgAAAAADbgAAAAABewAAAAAAbgAAAAABbgAAAAACbgAAAAADbgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAADbgAAAAAAbgAAAAABbgAAAAABbgAAAAADewAAAAAAbgAAAAACbgAAAAADbgAAAAACbgAAAAADewAAAAAAbgAAAAAAbgAAAAACbgAAAAABbgAAAAACewAAAAAAewAAAAAAewAAAAAAbgAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAAAbgAAAAAAbgAAAAACbgAAAAACbgAAAAAAewAAAAAAbgAAAAABbgAAAAABbgAAAAACewAAAAAAbgAAAAACbgAAAAACbgAAAAACbgAAAAACewAAAAAAewAAAAAAbgAAAAABbgAAAAACbgAAAAADbgAAAAAAbgAAAAABbgAAAAAAbgAAAAAAbgAAAAABbgAAAAAAbgAAAAABbgAAAAABbgAAAAACbgAAAAACbgAAAAACewAAAAAAewAAAAAAbgAAAAADbgAAAAABbgAAAAABbgAAAAABbgAAAAABbgAAAAAAbgAAAAABbgAAAAACbgAAAAACbgAAAAABbgAAAAACbgAAAAACbgAAAAACbgAAAAABUAAAAAAAewAAAAAAbgAAAAAAbgAAAAABbgAAAAABbgAAAAADbgAAAAADbgAAAAACbgAAAAAAbgAAAAACbgAAAAABewAAAAAAbgAAAAACbgAAAAACbgAAAAABbgAAAAADewAAAAAAewAAAAAAewAAAAAAbgAAAAABewAAAAAAbgAAAAACbgAAAAADewAAAAAAbgAAAAACbgAAAAABbgAAAAAAewAAAAAAbgAAAAADbgAAAAADbgAAAAACbgAAAAABewAAAAAAewAAAAAAbgAAAAADbgAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAABbgAAAAAAbgAAAAAAbgAAAAADbgAAAAACbgAAAAAAbgAAAAACbgAAAAACewAAAAAAbgAAAAACbgAAAAADbgAAAAADbgAAAAACbgAAAAADbgAAAAADbgAAAAACbgAAAAABbgAAAAACHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAbgAAAAABewAAAAAAbgAAAAABbgAAAAAAbgAAAAABbgAAAAAAbgAAAAADewAAAAAAbgAAAAACbgAAAAABbgAAAAABHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAbgAAAAACewAAAAAA + tiles: ewAAAAAAAwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAewAAAAAAeAAAAAAAeAAAAAACeAAAAAADeAAAAAAAeAAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAADewAAAAAAewAAAAAAewAAAAAAbgAAAAAAbgAAAAABbgAAAAABbgAAAAAAbgAAAAACewAAAAAAbgAAAAACbgAAAAACbgAAAAADbgAAAAADewAAAAAAWwAAAAAAWwAAAAADewAAAAAAewAAAAAAewAAAAAAbgAAAAADbgAAAAABbgAAAAACbgAAAAABbgAAAAADewAAAAAAbgAAAAACbgAAAAABbgAAAAADbgAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAACbgAAAAABbgAAAAADbgAAAAABbgAAAAABewAAAAAAbgAAAAABbgAAAAACbgAAAAADbgAAAAAAewAAAAAAbgAAAAACbgAAAAAAbgAAAAADbgAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAACewAAAAAAewAAAAAAewAAAAAAbgAAAAACbgAAAAABbgAAAAACbgAAAAABbgAAAAACewAAAAAAbgAAAAACbgAAAAABbgAAAAAAewAAAAAAbgAAAAADbgAAAAAAbgAAAAAAbgAAAAACewAAAAAAewAAAAAAbgAAAAACbgAAAAAAbgAAAAADbgAAAAAAbgAAAAAAbgAAAAABbgAAAAABbgAAAAACbgAAAAACbgAAAAADbgAAAAADbgAAAAABbgAAAAADbgAAAAADewAAAAAAewAAAAAAbgAAAAADbgAAAAABbgAAAAAAbgAAAAACbgAAAAABbgAAAAADbgAAAAADbgAAAAACbgAAAAAAbgAAAAADbgAAAAABbgAAAAACbgAAAAAAbgAAAAABUAAAAAAAewAAAAAAbgAAAAAAbgAAAAAAbgAAAAAAbgAAAAABbgAAAAAAbgAAAAAAbgAAAAABbgAAAAACbgAAAAAAewAAAAAAbgAAAAAAbgAAAAAAbgAAAAABbgAAAAABewAAAAAAewAAAAAAewAAAAAAbgAAAAADewAAAAAAbgAAAAAAbgAAAAABewAAAAAAbgAAAAAAbgAAAAACbgAAAAAAewAAAAAAbgAAAAADbgAAAAAAbgAAAAADbgAAAAAAewAAAAAAewAAAAAAbgAAAAADbgAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAADbgAAAAAAbgAAAAAAbgAAAAAAbgAAAAAAbgAAAAACbgAAAAADbgAAAAABewAAAAAAbgAAAAABbgAAAAADbgAAAAABbgAAAAACbgAAAAAAbgAAAAAAbgAAAAACbgAAAAAAbgAAAAABHQAAAAAAHQAAAAADHQAAAAADHQAAAAADHQAAAAACbgAAAAACewAAAAAAbgAAAAAAbgAAAAABbgAAAAADbgAAAAACbgAAAAABewAAAAAAbgAAAAACbgAAAAAAbgAAAAACHQAAAAABHQAAAAABHQAAAAAAHQAAAAABHQAAAAACbgAAAAABewAAAAAA version: 6 3,-2: ind: 3,-2 - tiles: TQAAAAAATQAAAAAATQAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATQAAAAAATQAAAAAATQAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATQAAAAAATQAAAAAATQAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATQAAAAAATQAAAAAATQAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAATQAAAAAATQAAAAAATQAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAAAewAAAAAAewAAAAAAewAAAAAAAwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAABeAAAAAADeAAAAAADewAAAAAAeAAAAAAA + tiles: TQAAAAAATQAAAAAATQAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATQAAAAAATQAAAAAATQAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATQAAAAAATQAAAAAATQAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATQAAAAAATQAAAAAATQAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAATQAAAAAATQAAAAAATQAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAABewAAAAAAewAAAAAAewAAAAAAAwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAABeAAAAAABeAAAAAAAewAAAAAAeAAAAAAC version: 6 0,2: ind: 0,2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAACWwAAAAABAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAagAAAAAAewAAAAAAWwAAAAADWwAAAAAAWwAAAAADAAAAAAAAegAAAAAAegAAAAAAewAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAWwAAAAAAWwAAAAABWwAAAAADAAAAAAAAegAAAAAAegAAAAAAewAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAewAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAHQAAAAACHQAAAAACHQAAAAADAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAewAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAHQAAAAACHQAAAAADHQAAAAABAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAHQAAAAAAHQAAAAACHQAAAAAAAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAHQAAAAACHQAAAAACHQAAAAADAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAADWwAAAAACWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAADWwAAAAABWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAHQAAAAAAHQAAAAABHQAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAAAWwAAAAABAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAagAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAABAAAAAAAAegAAAAAAegAAAAAAewAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAWwAAAAAAWwAAAAACWwAAAAACAAAAAAAAegAAAAAAegAAAAAAewAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAewAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAHQAAAAADHQAAAAAAHQAAAAACAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAewAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAHQAAAAABHQAAAAACHQAAAAABAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAHQAAAAADHQAAAAABHQAAAAABAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAHQAAAAABHQAAAAABHQAAAAACAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAA version: 6 1,2: ind: 1,2 - tiles: ewAAAAAAeAAAAAABeAAAAAADeAAAAAABeAAAAAACeAAAAAACewAAAAAAeAAAAAAAeAAAAAABWwAAAAACWwAAAAACWwAAAAADawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAAAeAAAAAACeAAAAAACeAAAAAABeAAAAAADewAAAAAAeAAAAAADeAAAAAACWwAAAAADWwAAAAABWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAABWwAAAAABWwAAAAADewAAAAAANgAAAAAANgAAAAAAewAAAAAAWwAAAAADWwAAAAABWwAAAAADWwAAAAACWwAAAAACWwAAAAACWwAAAAACWwAAAAABWwAAAAADWwAAAAADWwAAAAADWwAAAAABewAAAAAANgAAAAAANgAAAAAAWwAAAAACWwAAAAADWwAAAAABWwAAAAACWwAAAAACWwAAAAAAWwAAAAADWwAAAAAAWwAAAAADWwAAAAACWwAAAAADWwAAAAABWwAAAAACHQAAAAACHQAAAAACHQAAAAACewAAAAAAWwAAAAAAWwAAAAADWwAAAAAAWwAAAAACWwAAAAAAWwAAAAADWwAAAAABWwAAAAACWwAAAAAAWwAAAAAAWwAAAAADWwAAAAADewAAAAAAEQAAAAAAEQAAAAAAewAAAAAAewAAAAAAHQAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAACewAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAALAAAAAAAHQAAAAACHQAAAAACewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAewAAAAAAHQAAAAAAHQAAAAADHQAAAAAAewAAAAAAHQAAAAABeAAAAAACewAAAAAAHQAAAAABHQAAAAACHQAAAAABewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAewAAAAAAHQAAAAADHQAAAAAAHQAAAAABewAAAAAAHQAAAAAAeAAAAAAAewAAAAAAHQAAAAACHQAAAAAAHQAAAAAAewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAHQAAAAADHQAAAAADHQAAAAADHQAAAAADewAAAAAAHQAAAAABeAAAAAACewAAAAAAewAAAAAANgAAAAAAewAAAAAAewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAewAAAAAAHQAAAAADHQAAAAAAHQAAAAADewAAAAAAHQAAAAADeAAAAAABAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAHQAAAAABewAAAAAAewAAAAAAHQAAAAABewAAAAAAHQAAAAADHQAAAAABHQAAAAABewAAAAAAAAAAAAAAegAAAAAAewAAAAAAHQAAAAACHQAAAAABHQAAAAACHQAAAAABHQAAAAAAHQAAAAADHQAAAAAAHQAAAAACHQAAAAADHQAAAAAAHQAAAAAAHQAAAAABewAAAAAAegAAAAAAegAAAAAAewAAAAAAHQAAAAACHQAAAAAAHQAAAAADHQAAAAADHQAAAAAAHQAAAAADHQAAAAACHQAAAAACHQAAAAACHQAAAAACHQAAAAACHQAAAAADHQAAAAACAAAAAAAAegAAAAAAewAAAAAAHQAAAAAAHQAAAAABHQAAAAACHQAAAAABHQAAAAAAHQAAAAACHQAAAAACHQAAAAAAHQAAAAAAHQAAAAADHQAAAAADHQAAAAACHQAAAAADegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAACHQAAAAABHQAAAAAAHQAAAAABHQAAAAABHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAACHQAAAAAC + tiles: ewAAAAAAeAAAAAAAeAAAAAADeAAAAAABeAAAAAABeAAAAAABewAAAAAAeAAAAAADeAAAAAADWwAAAAACWwAAAAACWwAAAAADawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAABeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAewAAAAAAeAAAAAABeAAAAAADWwAAAAABWwAAAAACWwAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAACWwAAAAADWwAAAAAAewAAAAAANgAAAAAANgAAAAAAewAAAAAAWwAAAAABWwAAAAACWwAAAAAAWwAAAAABWwAAAAACWwAAAAACWwAAAAACWwAAAAADWwAAAAACWwAAAAADWwAAAAABWwAAAAACewAAAAAANgAAAAAANgAAAAAAWwAAAAADWwAAAAACWwAAAAABWwAAAAAAWwAAAAABWwAAAAADWwAAAAAAWwAAAAADWwAAAAADWwAAAAADWwAAAAABWwAAAAAAWwAAAAADHQAAAAACHQAAAAAAHQAAAAACewAAAAAAWwAAAAADWwAAAAABWwAAAAAAWwAAAAABWwAAAAACWwAAAAACWwAAAAADWwAAAAABWwAAAAACWwAAAAADWwAAAAABWwAAAAACewAAAAAAEQAAAAAAEQAAAAAAewAAAAAAewAAAAAAHQAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAADewAAAAAAHQAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAALAAAAAAAHQAAAAACHQAAAAADewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAewAAAAAAHQAAAAADHQAAAAACHQAAAAACewAAAAAAHQAAAAABeAAAAAABewAAAAAAHQAAAAADHQAAAAAAHQAAAAABewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAewAAAAAAHQAAAAADHQAAAAABHQAAAAAAewAAAAAAHQAAAAACeAAAAAABewAAAAAAHQAAAAADHQAAAAACHQAAAAAAewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAHQAAAAACHQAAAAABHQAAAAACHQAAAAACewAAAAAAHQAAAAABeAAAAAABewAAAAAAewAAAAAANgAAAAAAewAAAAAAewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAewAAAAAAHQAAAAABHQAAAAABHQAAAAACewAAAAAAHQAAAAABeAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAADHQAAAAACewAAAAAAewAAAAAAHQAAAAACewAAAAAAHQAAAAADHQAAAAAAHQAAAAACewAAAAAAAAAAAAAAegAAAAAAewAAAAAAHQAAAAADHQAAAAACHQAAAAAAHQAAAAACHQAAAAADHQAAAAABHQAAAAAAHQAAAAABHQAAAAAAHQAAAAABHQAAAAACHQAAAAAAewAAAAAAegAAAAAAegAAAAAAewAAAAAAHQAAAAABHQAAAAAAHQAAAAADHQAAAAABHQAAAAACHQAAAAACHQAAAAABHQAAAAADHQAAAAACHQAAAAAAHQAAAAAAHQAAAAADHQAAAAABAAAAAAAAegAAAAAAewAAAAAAHQAAAAAAHQAAAAACHQAAAAACHQAAAAADHQAAAAADHQAAAAABHQAAAAABHQAAAAAAHQAAAAAAHQAAAAADHQAAAAAAHQAAAAAAHQAAAAACegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAADHQAAAAABHQAAAAADHQAAAAAAHQAAAAACHQAAAAADHQAAAAACHQAAAAADHQAAAAACHQAAAAAC version: 6 2,1: ind: 2,1 - tiles: ewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAACWwAAAAACWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAADHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAewAAAAAAWwAAAAABWwAAAAAAWwAAAAADWwAAAAACWwAAAAAAWwAAAAACWwAAAAADHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAewAAAAAAWwAAAAABWwAAAAACWwAAAAABWwAAAAAAWwAAAAACWwAAAAADWwAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAewAAAAAAWwAAAAAAWwAAAAABWwAAAAABWwAAAAABWwAAAAAAWwAAAAADWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAewAAAAAAWwAAAAABewAAAAAAawAAAAAAWwAAAAABWwAAAAACWwAAAAAAWwAAAAADWwAAAAACewAAAAAAHQAAAAAAHQAAAAAAewAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAACWwAAAAADWwAAAAACWwAAAAADHQAAAAAAHQAAAAAAHQAAAAACHQAAAAACHQAAAAAAewAAAAAAHQAAAAABHQAAAAACHQAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAABWwAAAAADWwAAAAABWwAAAAABewAAAAAAHQAAAAABHQAAAAADHQAAAAABHQAAAAABHQAAAAABHQAAAAADHQAAAAAAHQAAAAACewAAAAAAewAAAAAAWwAAAAABWwAAAAADWwAAAAADWwAAAAACWwAAAAACewAAAAAATQAAAAAAHQAAAAABHQAAAAACTQAAAAAAewAAAAAAHQAAAAADHQAAAAACHQAAAAADewAAAAAAewAAAAAAHQAAAAAAWwAAAAADWwAAAAACWwAAAAABWwAAAAAAewAAAAAAewAAAAAAHQAAAAACHQAAAAACewAAAAAAewAAAAAAHQAAAAACHQAAAAAAHQAAAAACewAAAAAAewAAAAAAHQAAAAABWwAAAAACWwAAAAACWwAAAAACWwAAAAADewAAAAAATQAAAAAAHQAAAAACHQAAAAAATQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAACWwAAAAABWwAAAAABWwAAAAABewAAAAAATQAAAAAAHQAAAAAAHQAAAAADTQAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAagAAAAAAewAAAAAAWwAAAAADWwAAAAABWwAAAAADWwAAAAADWwAAAAAAewAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAagAAAAAAewAAAAAAWwAAAAABWwAAAAABWwAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAABWwAAAAACWwAAAAADWwAAAAACWwAAAAACWwAAAAACWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAagAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAABWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAagAAAAAAewAAAAAA + tiles: ewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAACewAAAAAAewAAAAAAWwAAAAAAWwAAAAABWwAAAAADWwAAAAAAWwAAAAABWwAAAAABWwAAAAADHQAAAAAAHQAAAAADHQAAAAACHQAAAAADewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAABWwAAAAACWwAAAAACWwAAAAADWwAAAAACHQAAAAADHQAAAAAAHQAAAAAAHQAAAAABewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAewAAAAAAWwAAAAADWwAAAAABWwAAAAADWwAAAAACWwAAAAAAWwAAAAADWwAAAAABHQAAAAACHQAAAAACHQAAAAAAHQAAAAAAewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAewAAAAAAWwAAAAADWwAAAAACWwAAAAABWwAAAAABWwAAAAABWwAAAAAAWwAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAewAAAAAAWwAAAAABewAAAAAAawAAAAAAWwAAAAADWwAAAAABWwAAAAABWwAAAAADWwAAAAABewAAAAAAHQAAAAAAHQAAAAAAewAAAAAAHQAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAABWwAAAAAAWwAAAAACWwAAAAADHQAAAAABHQAAAAADHQAAAAABHQAAAAADHQAAAAAAewAAAAAAHQAAAAABHQAAAAAAHQAAAAABewAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAABWwAAAAACewAAAAAAHQAAAAACHQAAAAAAHQAAAAACHQAAAAADHQAAAAABHQAAAAAAHQAAAAACHQAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAADWwAAAAADWwAAAAADWwAAAAAAewAAAAAATQAAAAAAHQAAAAABHQAAAAADTQAAAAAAewAAAAAAHQAAAAADHQAAAAADHQAAAAADewAAAAAAewAAAAAAHQAAAAACWwAAAAAAWwAAAAABWwAAAAABWwAAAAACewAAAAAAewAAAAAAHQAAAAABHQAAAAACewAAAAAAewAAAAAAHQAAAAABHQAAAAACHQAAAAABewAAAAAAewAAAAAAHQAAAAADWwAAAAAAWwAAAAABWwAAAAABWwAAAAADewAAAAAATQAAAAAAHQAAAAABHQAAAAADTQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAATQAAAAAAHQAAAAABHQAAAAADTQAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAagAAAAAAewAAAAAAWwAAAAABWwAAAAACWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAagAAAAAAewAAAAAAWwAAAAABWwAAAAABWwAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAWwAAAAAAWwAAAAADWwAAAAADWwAAAAABWwAAAAABWwAAAAACWwAAAAABWwAAAAADWwAAAAAAWwAAAAAAWwAAAAABWwAAAAABWwAAAAABewAAAAAAagAAAAAAewAAAAAAWwAAAAABWwAAAAACWwAAAAABWwAAAAAAWwAAAAADWwAAAAAAWwAAAAAAWwAAAAADWwAAAAABWwAAAAADWwAAAAAAWwAAAAACWwAAAAAAewAAAAAAagAAAAAAewAAAAAA version: 6 2,2: ind: 2,2 - tiles: ewAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAANgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAagAAAAAAHQAAAAAANgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAagAAAAAAHQAAAAAAHQAAAAABewAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAEQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAAAeAAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAACeAAAAAADeAAAAAABeAAAAAABeAAAAAABeAAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAABeAAAAAAAeAAAAAAAewAAAAAAeAAAAAACeAAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAeAAAAAAAeAAAAAACeAAAAAACewAAAAAAeAAAAAACeAAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAeAAAAAACeAAAAAADeAAAAAADewAAAAAAHQAAAAAAeAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAegAAAAAAHQAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAegAAAAAAegAAAAAAHQAAAAAAHQAAAAAAHQAAAAABHQAAAAADewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAABHQAAAAADHQAAAAADHQAAAAABewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAHQAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAA + tiles: ewAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAACHQAAAAACHQAAAAABewAAAAAAegAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAANgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAACHQAAAAADHQAAAAACewAAAAAAegAAAAAAewAAAAAAewAAAAAAagAAAAAAHQAAAAACNgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAADHQAAAAAAHQAAAAADewAAAAAAegAAAAAAewAAAAAAewAAAAAAagAAAAAAHQAAAAACHQAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAHQAAAAABHQAAAAACHQAAAAABewAAAAAAegAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAEQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAACeAAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAABeAAAAAACeAAAAAADeAAAAAACeAAAAAAAeAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAABeAAAAAADeAAAAAABewAAAAAAeAAAAAACeAAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAeAAAAAADeAAAAAABeAAAAAACewAAAAAAeAAAAAABeAAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAeAAAAAACeAAAAAABeAAAAAABewAAAAAAHQAAAAADeAAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAegAAAAAAHQAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAegAAAAAAegAAAAAAHQAAAAADHQAAAAAAHQAAAAABHQAAAAACewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAABHQAAAAACHQAAAAACHQAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAHQAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAA version: 6 1,3: ind: 1,3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAHQAAAAAAHQAAAAADHQAAAAACHQAAAAACHQAAAAADHQAAAAADHQAAAAADHQAAAAACHQAAAAABHQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAHQAAAAACHQAAAAACHQAAAAAAHQAAAAABHQAAAAAAHQAAAAAAHQAAAAADHQAAAAACHQAAAAABHQAAAAACAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 2,3: ind: 2,3 - tiles: HQAAAAABewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: HQAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 4,-1: ind: 4,-1 - tiles: ewAAAAAAeAAAAAACeAAAAAADeAAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAACeAAAAAACeAAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAADeAAAAAACeAAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAawAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAewAAAAAAbgAAAAABbgAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAUAAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAADbgAAAAADbgAAAAACbgAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAACbgAAAAAAbgAAAAABbgAAAAACUAAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAACbgAAAAACbgAAAAACbgAAAAABUAAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAABbgAAAAACbgAAAAAAbgAAAAABUAAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAewAAAAAAHQAAAAACHQAAAAACHQAAAAACHQAAAAAAHQAAAAAAHQAAAAADewAAAAAAbgAAAAABbgAAAAAAbgAAAAADbgAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAABHQAAAAADHQAAAAAAHQAAAAADHQAAAAADHQAAAAAAewAAAAAAewAAAAAAbgAAAAACewAAAAAAewAAAAAAHQAAAAACHQAAAAAAHQAAAAAAHQAAAAADewAAAAAAHQAAAAADHQAAAAABHQAAAAACHQAAAAACHQAAAAAAHQAAAAADHQAAAAABewAAAAAAbgAAAAABagAAAAAAewAAAAAAewAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAABHQAAAAABHQAAAAAAHQAAAAADHQAAAAAAewAAAAAAbgAAAAABagAAAAAAewAAAAAA + tiles: ewAAAAAAeAAAAAADeAAAAAADeAAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAACeAAAAAACeAAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAADeAAAAAADeAAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAawAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAewAAAAAAbgAAAAABbgAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAUAAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAAAbgAAAAABbgAAAAAAbgAAAAACUAAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAABbgAAAAABbgAAAAABbgAAAAADUAAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAewAAAAAAHQAAAAABHQAAAAADHQAAAAADHQAAAAABewAAAAAAewAAAAAAewAAAAAAbgAAAAAAbgAAAAABbgAAAAABbgAAAAADUAAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAewAAAAAAHQAAAAACHQAAAAADHQAAAAACHQAAAAACewAAAAAAewAAAAAAewAAAAAAbgAAAAABbgAAAAABbgAAAAABbgAAAAABUAAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAewAAAAAAHQAAAAACHQAAAAADHQAAAAADHQAAAAACHQAAAAACHQAAAAACewAAAAAAbgAAAAADbgAAAAABbgAAAAADbgAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAHQAAAAABHQAAAAACHQAAAAADHQAAAAADHQAAAAABewAAAAAAewAAAAAAbgAAAAAAewAAAAAAewAAAAAAHQAAAAABHQAAAAADHQAAAAADHQAAAAABewAAAAAAHQAAAAACHQAAAAADHQAAAAACHQAAAAABHQAAAAACHQAAAAADHQAAAAACewAAAAAAbgAAAAABagAAAAAAewAAAAAAewAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAHQAAAAABHQAAAAABHQAAAAABHQAAAAADewAAAAAAbgAAAAADagAAAAAAewAAAAAA version: 6 4,-2: ind: 4,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAeAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAACeAAAAAADeAAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAewAAAAAAagAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAeAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAADeAAAAAABeAAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAewAAAAAAagAAAAAA version: 6 3,0: ind: 3,0 - tiles: bgAAAAABbgAAAAACbgAAAAACbgAAAAADbgAAAAABbgAAAAACbgAAAAAAbgAAAAABbgAAAAABHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAbgAAAAABbgAAAAAAewAAAAAAbgAAAAACbgAAAAAAbgAAAAAAewAAAAAAewAAAAAAbgAAAAADbgAAAAADbgAAAAACbgAAAAACbgAAAAADbgAAAAACbgAAAAACbgAAAAABbgAAAAACbgAAAAACewAAAAAAbgAAAAAAbgAAAAAAbgAAAAABbgAAAAABbgAAAAADbgAAAAAAbgAAAAADbgAAAAAAbgAAAAACbgAAAAADbgAAAAABbgAAAAADbgAAAAACbgAAAAAAbgAAAAADbgAAAAADbgAAAAACbgAAAAACbgAAAAADbgAAAAABbgAAAAADbgAAAAADbgAAAAADbgAAAAADbgAAAAABbgAAAAAAbgAAAAAAbgAAAAABbgAAAAADbgAAAAAAbgAAAAABewAAAAAAbgAAAAACbgAAAAAAbgAAAAACbgAAAAACbgAAAAACewAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAbgAAAAACbgAAAAADbgAAAAABbgAAAAAAbgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAABHQAAAAABHQAAAAADWwAAAAADWwAAAAADWwAAAAACWwAAAAABewAAAAAAbgAAAAACbgAAAAABewAAAAAAbgAAAAACbgAAAAACbgAAAAABbgAAAAABbgAAAAADHQAAAAAAHQAAAAAAHQAAAAACWwAAAAADWwAAAAABWwAAAAADWwAAAAADewAAAAAAbgAAAAACWwAAAAABewAAAAAAbgAAAAABbgAAAAACbgAAAAADbgAAAAADbgAAAAADbgAAAAABbgAAAAAAbgAAAAACbgAAAAADbgAAAAADbgAAAAABWwAAAAADewAAAAAAbgAAAAACWwAAAAADewAAAAAAbgAAAAADbgAAAAAAbgAAAAADbgAAAAACbgAAAAACbgAAAAADbgAAAAADbgAAAAACbgAAAAACbgAAAAABbgAAAAADbgAAAAABewAAAAAAbgAAAAACWwAAAAADewAAAAAAbgAAAAADbgAAAAAAbgAAAAABbgAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAADewAAAAAAewAAAAAAbgAAAAACbgAAAAADewAAAAAAewAAAAAAewAAAAAAWwAAAAACewAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAWwAAAAABbgAAAAABbgAAAAABbgAAAAAAbgAAAAABbgAAAAABbgAAAAAAbgAAAAACbgAAAAABbgAAAAACbgAAAAAAbgAAAAADbgAAAAADbgAAAAABbgAAAAAAbgAAAAADWwAAAAADbgAAAAAAbgAAAAABbgAAAAACbgAAAAADbgAAAAAAbgAAAAAAbgAAAAACbgAAAAACbgAAAAABbgAAAAACewAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAWwAAAAAAbgAAAAAAbgAAAAAAbgAAAAABbgAAAAABbgAAAAADbgAAAAADbgAAAAAAbgAAAAAAbgAAAAAAbgAAAAAD + tiles: bgAAAAAAbgAAAAADbgAAAAACbgAAAAABbgAAAAADbgAAAAABbgAAAAABbgAAAAABbgAAAAAAHQAAAAADHQAAAAADHQAAAAADHQAAAAAAHQAAAAABbgAAAAAAbgAAAAACewAAAAAAbgAAAAABbgAAAAABbgAAAAABewAAAAAAewAAAAAAbgAAAAADbgAAAAADbgAAAAADbgAAAAACbgAAAAAAbgAAAAACbgAAAAACbgAAAAACbgAAAAADbgAAAAACewAAAAAAbgAAAAACbgAAAAADbgAAAAADbgAAAAABbgAAAAAAbgAAAAABbgAAAAAAbgAAAAABbgAAAAAAbgAAAAAAbgAAAAAAbgAAAAACbgAAAAADbgAAAAACbgAAAAABbgAAAAABbgAAAAADbgAAAAABbgAAAAACbgAAAAADbgAAAAABbgAAAAABbgAAAAAAbgAAAAAAbgAAAAABbgAAAAAAbgAAAAADbgAAAAABbgAAAAABbgAAAAABbgAAAAACewAAAAAAbgAAAAAAbgAAAAABbgAAAAABbgAAAAAAbgAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAbgAAAAADbgAAAAADbgAAAAACbgAAAAABbgAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAADHQAAAAAAHQAAAAABWwAAAAACWwAAAAABWwAAAAAAWwAAAAADewAAAAAAbgAAAAADbgAAAAABewAAAAAAbgAAAAABbgAAAAABbgAAAAACbgAAAAAAbgAAAAABHQAAAAACHQAAAAACHQAAAAAAWwAAAAAAWwAAAAACWwAAAAADWwAAAAABewAAAAAAbgAAAAABWwAAAAACewAAAAAAbgAAAAADbgAAAAAAbgAAAAACbgAAAAACbgAAAAADbgAAAAAAbgAAAAABbgAAAAACbgAAAAAAbgAAAAABbgAAAAACWwAAAAADewAAAAAAbgAAAAADWwAAAAABewAAAAAAbgAAAAAAbgAAAAADbgAAAAAAbgAAAAADbgAAAAAAbgAAAAACbgAAAAAAbgAAAAABbgAAAAABbgAAAAAAbgAAAAACbgAAAAADewAAAAAAbgAAAAABWwAAAAAAewAAAAAAbgAAAAACbgAAAAACbgAAAAACbgAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAADewAAAAAAewAAAAAAbgAAAAAAbgAAAAACewAAAAAAewAAAAAAewAAAAAAWwAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAWwAAAAAAbgAAAAACbgAAAAACbgAAAAADbgAAAAADbgAAAAABbgAAAAADbgAAAAABbgAAAAAAbgAAAAADbgAAAAADbgAAAAABbgAAAAADbgAAAAACbgAAAAABbgAAAAABWwAAAAADbgAAAAACbgAAAAACbgAAAAABbgAAAAACbgAAAAAAbgAAAAADbgAAAAADbgAAAAACbgAAAAADbgAAAAACewAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAWwAAAAAAbgAAAAABbgAAAAAAbgAAAAAAbgAAAAABbgAAAAABbgAAAAAAbgAAAAAAbgAAAAADbgAAAAACbgAAAAAD version: 6 4,0: ind: 4,0 - tiles: bgAAAAACbgAAAAAAbgAAAAADbgAAAAABbgAAAAADbgAAAAACewAAAAAAewAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAABewAAAAAAewAAAAAAbgAAAAACbgAAAAAAbgAAAAAAbgAAAAADbgAAAAADbgAAAAABHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAbgAAAAACbgAAAAADbgAAAAABbgAAAAABbgAAAAAAbgAAAAABHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAbgAAAAADbgAAAAAAbgAAAAADbgAAAAAAbgAAAAABewAAAAAAewAAAAAAbgAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAewAAAAAAbgAAAAAAbgAAAAAAbgAAAAADbgAAAAAAbgAAAAAAewAAAAAAbgAAAAACbgAAAAAAbgAAAAACbgAAAAABbgAAAAABewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAbgAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAACewAAAAAAbgAAAAACbgAAAAABbgAAAAADbgAAAAADbgAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAbgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAAAewAAAAAAbgAAAAADbgAAAAACbgAAAAAAbgAAAAADbgAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAbgAAAAADbgAAAAAAbgAAAAADbgAAAAABbgAAAAAAbgAAAAACWwAAAAACbgAAAAAAbgAAAAAAbgAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAACbgAAAAABbgAAAAACbgAAAAABbgAAAAADbgAAAAAAewAAAAAAbgAAAAAAbgAAAAAAWwAAAAABewAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAbgAAAAAAbgAAAAAAWwAAAAABewAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAAAbgAAAAAAWwAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAABewAAAAAAWwAAAAACWwAAAAACWwAAAAADHQAAAAADHQAAAAABHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAADewAAAAAAHQAAAAACHQAAAAABHQAAAAADHQAAAAAAHQAAAAABHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAbgAAAAAAbgAAAAAAHQAAAAABHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAA + tiles: bgAAAAABbgAAAAACbgAAAAADbgAAAAAAbgAAAAABbgAAAAAAewAAAAAAewAAAAAAHQAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAAAewAAAAAAewAAAAAAbgAAAAACbgAAAAACbgAAAAACbgAAAAADbgAAAAABbgAAAAACHQAAAAACHQAAAAABHQAAAAADHQAAAAADHQAAAAAAHQAAAAACHQAAAAADHQAAAAABHQAAAAACHQAAAAADbgAAAAACbgAAAAADbgAAAAADbgAAAAADbgAAAAABbgAAAAADHQAAAAABHQAAAAACHQAAAAABHQAAAAAAHQAAAAADHQAAAAACHQAAAAAAHQAAAAADHQAAAAACHQAAAAAAbgAAAAABbgAAAAABbgAAAAADbgAAAAABbgAAAAACewAAAAAAewAAAAAAbgAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAACHQAAAAABHQAAAAABewAAAAAAbgAAAAACbgAAAAACbgAAAAACbgAAAAABbgAAAAABewAAAAAAbgAAAAACbgAAAAABbgAAAAAAbgAAAAABbgAAAAAAewAAAAAAHQAAAAABHQAAAAADHQAAAAADbgAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAADewAAAAAAbgAAAAAAbgAAAAADbgAAAAAAbgAAAAABbgAAAAADewAAAAAAHQAAAAAAHQAAAAACHQAAAAABbgAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAABewAAAAAAbgAAAAABbgAAAAAAbgAAAAACbgAAAAADbgAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAbgAAAAACbgAAAAADbgAAAAABbgAAAAABbgAAAAACbgAAAAABWwAAAAAAbgAAAAADbgAAAAADbgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAADbgAAAAACbgAAAAACbgAAAAADbgAAAAAAbgAAAAABewAAAAAAbgAAAAAAbgAAAAACWwAAAAABewAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAewAAAAAAbgAAAAACbgAAAAACWwAAAAAAewAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAABbgAAAAADWwAAAAADewAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAACewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAHQAAAAADHQAAAAACHQAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAAAewAAAAAAHQAAAAAAHQAAAAACHQAAAAACHQAAAAABHQAAAAADHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAbgAAAAACbgAAAAACHQAAAAAAHQAAAAAAHQAAAAADHQAAAAACHQAAAAACHQAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAA version: 6 5,0: ind: 5,0 - tiles: ewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAawAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAACewAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAABewAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAAAeAAAAAACeAAAAAABAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAAAewAAAAAAeAAAAAABewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAABewAAAAAAeAAAAAADewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: ewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAHQAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAACHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAawAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAACewAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAAAeAAAAAADeAAAAAABAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAADewAAAAAAeAAAAAACewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAAAewAAAAAAeAAAAAABewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 3,1: ind: 3,1 - tiles: ewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAABbgAAAAADbgAAAAABewAAAAAAbgAAAAAAbgAAAAABewAAAAAAbgAAAAABbgAAAAADEQAAAAAAHQAAAAADEQAAAAAAbgAAAAAAbgAAAAADbgAAAAADbgAAAAAAbgAAAAABbgAAAAADbgAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAABbgAAAAACbgAAAAAAEQAAAAAAHQAAAAAAEQAAAAAAbgAAAAADbgAAAAABbgAAAAADbgAAAAADbgAAAAABbgAAAAACbgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAADbgAAAAAAbgAAAAACbgAAAAAAbgAAAAABbgAAAAACbgAAAAADbgAAAAABbgAAAAAAbgAAAAAAbgAAAAABbgAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAAAbgAAAAACbgAAAAAAbgAAAAAAbgAAAAABbgAAAAAAbgAAAAACbgAAAAAAbgAAAAAAbgAAAAACbgAAAAAAbgAAAAABewAAAAAAewAAAAAAewAAAAAAawAAAAAAbgAAAAABbgAAAAACbgAAAAAAEQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAAAbgAAAAABbgAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAACbgAAAAAAbgAAAAABbgAAAAADbgAAAAAAbgAAAAADbgAAAAAAewAAAAAAbgAAAAADbgAAAAACewAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAewAAAAAAbgAAAAADbgAAAAAAbgAAAAAAbgAAAAAAbgAAAAADbgAAAAACbgAAAAABbgAAAAADbgAAAAACbgAAAAACbgAAAAACewAAAAAAHQAAAAADHQAAAAADHQAAAAAAHQAAAAADbgAAAAACbgAAAAACbgAAAAACbgAAAAABbgAAAAAAbgAAAAADbgAAAAADbgAAAAACbgAAAAADbgAAAAADbgAAAAADewAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAewAAAAAAbgAAAAADbgAAAAABbgAAAAAAbgAAAAAAbgAAAAADbgAAAAADbgAAAAAAbgAAAAABbgAAAAAAbgAAAAABbgAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAATQAAAAAATQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAATQAAAAAATQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAA + tiles: ewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAADbgAAAAADbgAAAAAAewAAAAAAbgAAAAAAbgAAAAABewAAAAAAbgAAAAACbgAAAAACEQAAAAAAHQAAAAADEQAAAAAAbgAAAAAAbgAAAAAAbgAAAAABbgAAAAACbgAAAAADbgAAAAAAbgAAAAADewAAAAAAewAAAAAAewAAAAAAWwAAAAAAbgAAAAAAbgAAAAACEQAAAAAAHQAAAAACEQAAAAAAbgAAAAACbgAAAAACbgAAAAAAbgAAAAACbgAAAAACbgAAAAABbgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAADbgAAAAABbgAAAAABbgAAAAACbgAAAAACbgAAAAADbgAAAAAAbgAAAAAAbgAAAAABbgAAAAAAbgAAAAADbgAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAACbgAAAAABbgAAAAADbgAAAAACbgAAAAAAbgAAAAADbgAAAAAAbgAAAAABbgAAAAACbgAAAAABbgAAAAABbgAAAAAAewAAAAAAewAAAAAAewAAAAAAawAAAAAAbgAAAAAAbgAAAAAAbgAAAAACEQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAAAbgAAAAADbgAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAABbgAAAAACbgAAAAADbgAAAAADbgAAAAACbgAAAAACbgAAAAABewAAAAAAbgAAAAADbgAAAAADewAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAewAAAAAAbgAAAAADbgAAAAADbgAAAAABbgAAAAAAbgAAAAAAbgAAAAADbgAAAAADbgAAAAAAbgAAAAACbgAAAAAAbgAAAAACewAAAAAAHQAAAAADHQAAAAAAHQAAAAAAHQAAAAADbgAAAAABbgAAAAAAbgAAAAACbgAAAAADbgAAAAABbgAAAAAAbgAAAAABbgAAAAADbgAAAAABbgAAAAAAbgAAAAACewAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAewAAAAAAbgAAAAABbgAAAAABbgAAAAAAbgAAAAABbgAAAAADbgAAAAADbgAAAAACbgAAAAABbgAAAAABbgAAAAACbgAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAATQAAAAAATQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAATQAAAAAATQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAHQAAAAACHQAAAAABHQAAAAADHQAAAAAAHQAAAAABewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAA version: 6 3,3: ind: 3,3 @@ -195,35 +195,35 @@ entities: version: 6 3,2: ind: 3,2 - tiles: egAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAHQAAAAAAHQAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAHQAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAAgAAAAAAWwAAAAAAewAAAAAAHQAAAAAAewAAAAAAegAAAAAAegAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAWwAAAAAAWwAAAAAAHQAAAAAAHQAAAAAAewAAAAAAegAAAAAAegAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAWwAAAAAAWwAAAAAAewAAAAAAHQAAAAAAewAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAWwAAAAAAWwAAAAAAewAAAAAAHQAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAWwAAAAAAWwAAAAAAHQAAAAAAHQAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAewAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAA + tiles: egAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAWwAAAAADWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAADHQAAAAABHQAAAAABewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAAAWwAAAAAAWwAAAAADWwAAAAACewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAHQAAAAABHQAAAAADHQAAAAADHQAAAAAAHQAAAAAAWwAAAAACWwAAAAADWwAAAAAAWwAAAAAAWwAAAAADewAAAAAAHQAAAAABewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAHQAAAAADHQAAAAABHQAAAAACHQAAAAADHQAAAAABWwAAAAAAWwAAAAACWwAAAAACAgAAAAACWwAAAAAAewAAAAAAHQAAAAACewAAAAAAegAAAAAAegAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAACHQAAAAADHQAAAAAAWwAAAAADWwAAAAAAHQAAAAAAHQAAAAACewAAAAAAegAAAAAAegAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAHQAAAAAAHQAAAAADHQAAAAAAWwAAAAABWwAAAAAAewAAAAAAHQAAAAAAewAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAHQAAAAACHQAAAAABHQAAAAAAWwAAAAADWwAAAAADewAAAAAAHQAAAAACewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAHQAAAAACHQAAAAACHQAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAHQAAAAAAHQAAAAADHQAAAAABWwAAAAAAWwAAAAADHQAAAAAAHQAAAAADegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAHQAAAAABHQAAAAAAHQAAAAACHQAAAAAAHQAAAAABewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAewAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAA version: 6 4,1: ind: 4,1 - tiles: bgAAAAABewAAAAAAWwAAAAABWwAAAAACWwAAAAADHQAAAAADHQAAAAAAHQAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAYgAAAAAAewAAAAAAewAAAAAAYgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAWwAAAAAAWwAAAAAAewAAAAAAYgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAagAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAYgAAAAAAewAAAAAAewAAAAAAHQAAAAAAewAAAAAAHQAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAbgAAAAACewAAAAAAWwAAAAAAWwAAAAAAewAAAAAAHQAAAAAAewAAAAAAHQAAAAAAHQAAAAAAAQAAAAAAAQAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAbgAAAAABewAAAAAAewAAAAAAYgAAAAAAHQAAAAAAHQAAAAAAewAAAAAAHQAAAAAAHQAAAAAAAQAAAAAAAQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAAAewAAAAAAewAAAAAAYgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAbgAAAAAAewAAAAAAYgAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAYgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAAAewAAAAAAeAAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAATQAAAAAAewAAAAAAYgAAAAAAewAAAAAAewAAAAAAeAAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAYgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAHQAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAAegAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAHQAAAAAA + tiles: bgAAAAADewAAAAAAWwAAAAAAWwAAAAADWwAAAAAAHQAAAAABHQAAAAABHQAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAawAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAYgAAAAAAewAAAAAAewAAAAAAYgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAWwAAAAADWwAAAAADewAAAAAAYgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAACHQAAAAAAHQAAAAABHQAAAAABagAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAYgAAAAAAewAAAAAAewAAAAAAHQAAAAAAewAAAAAAHQAAAAACHQAAAAACewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAbgAAAAACewAAAAAAWwAAAAABWwAAAAABewAAAAAAHQAAAAACewAAAAAAHQAAAAACHQAAAAADAQAAAAABAQAAAAABewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAbgAAAAADewAAAAAAewAAAAAAYgAAAAAAHQAAAAADHQAAAAAAewAAAAAAHQAAAAADHQAAAAADAQAAAAADAQAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAAAewAAAAAAewAAAAAAYgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAbgAAAAAAewAAAAAAYgAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAYgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAACewAAAAAAeAAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAATQAAAAAAewAAAAAAYgAAAAAAewAAAAAAewAAAAAAeAAAAAACewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAYgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAACewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAHQAAAAABegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAACeAAAAAADeAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAACegAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAABewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAHQAAAAAD version: 6 4,2: ind: 4,2 - tiles: AAAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAeAAAAAABeAAAAAABeAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAAAAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAeAAAAAADewAAAAAAeAAAAAABewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAAAAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAAAeAAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAAAAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAACewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAAAAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAeAAAAAABewAAAAAAeAAAAAACewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAeAAAAAABeAAAAAABewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAADeAAAAAABewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAABegAAAAAATAAAAAACegAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAegAAAAAATAAAAAACewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAADegAAAAAATAAAAAACewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAegAAAAAATAAAAAAA + tiles: AAAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAeAAAAAAAeAAAAAADeAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAAAAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAeAAAAAABewAAAAAAeAAAAAADewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAAAAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAABeAAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAAAAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAACewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAAAAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAeAAAAAAAewAAAAAAeAAAAAACewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAeAAAAAACeAAAAAADewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAeAAAAAABeAAAAAABewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAADegAAAAAATAAAAAAAegAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAABegAAAAAATAAAAAADewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAegAAAAAATAAAAAACewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAagAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAegAAAAAATAAAAAAD version: 6 4,3: ind: 4,3 - tiles: ewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAABegAAAAAATAAAAAADewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAegAAAAAATAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: ewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAACegAAAAAATAAAAAABewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAABegAAAAAATAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 5,-1: ind: 5,-1 - tiles: ewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbgAAAAABbgAAAAABbgAAAAABewAAAAAAegAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbgAAAAAAbgAAAAADbgAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbgAAAAAAbgAAAAADbgAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbgAAAAAAbgAAAAABbgAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbgAAAAABbgAAAAADbgAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbgAAAAAAbgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbgAAAAACbgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbgAAAAADbgAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: ewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbgAAAAABbgAAAAAAbgAAAAACewAAAAAAegAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbgAAAAACbgAAAAAAbgAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbgAAAAADbgAAAAACbgAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbgAAAAADbgAAAAABbgAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbgAAAAACbgAAAAABbgAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbgAAAAAAbgAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbgAAAAABbgAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbgAAAAADbgAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 5,-2: ind: 5,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATAAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATAAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 5,2: ind: 5,2 - tiles: ewAAAAAAHQAAAAAAewAAAAAAewAAAAAATQAAAAAANgAAAAAATQAAAAAAewAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAewAAAAAAHQAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAewAAAAAAHQAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAACegAAAAAATAAAAAACegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAADegAAAAAATAAAAAACAAAAAAAATAAAAAABegAAAAAATAAAAAAAAAAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAABegAAAAAATAAAAAADegAAAAAATAAAAAACegAAAAAATAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAADegAAAAAATAAAAAABegAAAAAATAAAAAADegAAAAAATAAAAAADegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAADegAAAAAATAAAAAABAAAAAAAATAAAAAABegAAAAAATAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: ewAAAAAAHQAAAAAAewAAAAAAewAAAAAATQAAAAAANgAAAAAATQAAAAAAewAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAABHQAAAAACEQAAAAAAEQAAAAAAEQAAAAAAewAAAAAAHQAAAAADHQAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATQAAAAAAHQAAAAADHQAAAAACHQAAAAAAewAAAAAAHQAAAAADHQAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAABegAAAAAATAAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAABegAAAAAATAAAAAABAAAAAAAATAAAAAACegAAAAAATAAAAAABAAAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAABegAAAAAATAAAAAACegAAAAAATAAAAAABegAAAAAATAAAAAADAAAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAACegAAAAAATAAAAAADegAAAAAATAAAAAABegAAAAAATAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAABegAAAAAATAAAAAAAAAAAAAAATAAAAAAAegAAAAAATAAAAAADegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 5,3: ind: 5,3 - tiles: egAAAAAATAAAAAABegAAAAAATAAAAAACegAAAAAATAAAAAADegAAAAAATAAAAAADAAAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAATAAAAAAAegAAAAAATAAAAAABAAAAAAAATAAAAAABegAAAAAATAAAAAAAAAAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAATAAAAAABegAAAAAATAAAAAADegAAAAAAegAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: egAAAAAATAAAAAADegAAAAAATAAAAAADegAAAAAATAAAAAAAegAAAAAATAAAAAACAAAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAATAAAAAADegAAAAAATAAAAAABAAAAAAAATAAAAAACegAAAAAATAAAAAACAAAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAATAAAAAABegAAAAAATAAAAAABegAAAAAAegAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 3,-3: ind: 3,-3 @@ -231,23 +231,23 @@ entities: version: 6 6,-2: ind: 6,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAewAAAAAAAAAAAAAAegAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAewAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAewAAAAAAAAAAAAAAegAAAAAAewAAAAAATAAAAAABTAAAAAACTAAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAewAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAAAbgAAAAACewAAAAAAewAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAACbgAAAAAAbgAAAAAAbgAAAAACbgAAAAADbgAAAAACbgAAAAABewAAAAAAewAAAAAAewAAAAAATAAAAAABTAAAAAAATAAAAAADewAAAAAAewAAAAAAewAAAAAAbgAAAAAAbgAAAAADbgAAAAADbgAAAAADbgAAAAADbgAAAAACbgAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAABbgAAAAABbgAAAAAAbgAAAAABbgAAAAACbgAAAAADbgAAAAAAHQAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAbgAAAAACbgAAAAABbgAAAAAAbgAAAAACbgAAAAABbgAAAAACbgAAAAACewAAAAAAewAAAAAAewAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAewAAAAAAAAAAAAAAegAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAewAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAewAAAAAAAAAAAAAAegAAAAAAewAAAAAATAAAAAABTAAAAAABTAAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAewAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAACbgAAAAABewAAAAAAewAAAAAAHQAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAADbgAAAAADbgAAAAADbgAAAAABbgAAAAABbgAAAAADbgAAAAAAewAAAAAAewAAAAAAewAAAAAATAAAAAADTAAAAAABTAAAAAADewAAAAAAewAAAAAAewAAAAAAbgAAAAABbgAAAAADbgAAAAADbgAAAAADbgAAAAADbgAAAAADbgAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAbgAAAAABbgAAAAABbgAAAAAAbgAAAAABbgAAAAAAbgAAAAAAbgAAAAABHQAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAbgAAAAADbgAAAAADbgAAAAACbgAAAAABbgAAAAAAbgAAAAABbgAAAAADewAAAAAAewAAAAAAewAAAAAA version: 6 6,-1: ind: 6,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAbgAAAAAAbgAAAAACbgAAAAACbgAAAAAAbgAAAAADbgAAAAAAbgAAAAACewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAUAAAAAAAUAAAAAAAewAAAAAAFQAAAAAAFQAAAAAAFQAAAAAAewAAAAAAAAAAAAAAegAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAUAAAAAAAUAAAAAAAWwAAAAADFQAAAAAAFQAAAAAAFQAAAAAAewAAAAAAAAAAAAAAegAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAFQAAAAAAFQAAAAAAFQAAAAAAewAAAAAAAAAAAAAAegAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAFQAAAAAAFQAAAAAAFQAAAAAAewAAAAAAAAAAAAAAegAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAbgAAAAACbgAAAAADbgAAAAACbgAAAAADbgAAAAAAbgAAAAABbgAAAAABewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAUAAAAAAAUAAAAAAAewAAAAAAFQAAAAAAFQAAAAAAFQAAAAAAewAAAAAAAAAAAAAAegAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAUAAAAAAAUAAAAAAAWwAAAAAAFQAAAAAAFQAAAAAAFQAAAAAAewAAAAAAAAAAAAAAegAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAFQAAAAAAFQAAAAAAFQAAAAAAewAAAAAAAAAAAAAAegAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAFQAAAAAAFQAAAAAAFQAAAAAAewAAAAAAAAAAAAAAegAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 7,-2: ind: 7,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAegAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAegAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAegAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAegAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAHQAAAAACHQAAAAAAHQAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAHQAAAAAAHQAAAAADHQAAAAACewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAHQAAAAACHQAAAAADHQAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAHQAAAAAAHQAAAAABHQAAAAACewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAegAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAegAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAegAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAegAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAHQAAAAAAHQAAAAADHQAAAAABewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAHQAAAAACHQAAAAACHQAAAAABewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAHQAAAAAAHQAAAAACHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAHQAAAAABHQAAAAABHQAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 7,-1: ind: 7,-1 - tiles: ewAAAAAAHQAAAAADHQAAAAADHQAAAAACewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAegAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAegAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAegAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAegAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: ewAAAAAAHQAAAAABHQAAAAABHQAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAegAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAegAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAegAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAegAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 5,1: ind: 5,1 - tiles: egAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAEQAAAAAANgAAAAAAEQAAAAAAewAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAHQAAAAAAHQAAAAAATQAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAewAAAAAAEQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAANgAAAAAAewAAAAAAewAAAAAAewAAAAAAIgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAANgAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAEQAAAAAAewAAAAAAewAAAAAANgAAAAAAHQAAAAAAHQAAAAAATQAAAAAAewAAAAAAEQAAAAAAHQAAAAAAEQAAAAAAewAAAAAAEQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAANgAAAAAAewAAAAAAewAAAAAAewAAAAAA + tiles: egAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAagAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATQAAAAAAHQAAAAACHQAAAAAAHQAAAAABewAAAAAAagAAAAAAewAAAAAAewAAAAAAEQAAAAAANgAAAAAAEQAAAAAAewAAAAAAewAAAAAAHQAAAAAAHQAAAAADHQAAAAAAHQAAAAADEQAAAAAAEQAAAAAAEQAAAAAAHQAAAAAAHQAAAAADTQAAAAAAewAAAAAAHQAAAAABHQAAAAACHQAAAAACewAAAAAAEQAAAAAAHQAAAAADHQAAAAADHQAAAAABNgAAAAAAewAAAAAAewAAAAAAewAAAAAAIgAAAAABHQAAAAACHQAAAAADHQAAAAACHQAAAAACHQAAAAAAHQAAAAAAHQAAAAABNgAAAAAAHQAAAAABIgAAAAAAHQAAAAAAEQAAAAAAewAAAAAAewAAAAAANgAAAAAAHQAAAAABHQAAAAADTQAAAAAAewAAAAAAEQAAAAAAHQAAAAACEQAAAAAAewAAAAAAEQAAAAAAHQAAAAACHQAAAAACHQAAAAACNgAAAAAAewAAAAAAewAAAAAAewAAAAAA version: 6 3,-4: ind: 3,-4 @@ -255,15 +255,15 @@ entities: version: 6 -2,-2: ind: -2,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAewAAAAAAIgAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAewAAAAAAIgAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAIgAAAAAAewAAAAAAagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAewAAAAAAIgAAAAADWwAAAAACWwAAAAADWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAABWwAAAAAAWwAAAAADewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAewAAAAAAIgAAAAAAWwAAAAABWwAAAAADWwAAAAACewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAAAWwAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAAAWwAAAAABWwAAAAACewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAABWwAAAAADWwAAAAACIgAAAAACewAAAAAAagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 -2,-1: ind: -2,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAIgAAAAAAewAAAAAAagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAewAAAAAAIgAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAADewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAACWwAAAAABWwAAAAABWwAAAAAAWwAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAADWwAAAAABWwAAAAABWwAAAAADWwAAAAADewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAAAWwAAAAABWwAAAAACWwAAAAADWwAAAAACewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAWwAAAAACWwAAAAAAWwAAAAABWwAAAAACWwAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAADWwAAAAABewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAADWwAAAAABWwAAAAABIgAAAAABewAAAAAAagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAABWwAAAAACWwAAAAABewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAAAWwAAAAABWwAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAABWwAAAAACWwAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAABWwAAAAADWwAAAAADewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAADWwAAAAACWwAAAAACewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAewAAAAAAWwAAAAABWwAAAAADWwAAAAACewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAACWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAewAAAAAAIgAAAAADWwAAAAADWwAAAAABWwAAAAADWwAAAAAAWwAAAAADWwAAAAADWwAAAAACWwAAAAAAWwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAWwAAAAADWwAAAAADWwAAAAAAWwAAAAACWwAAAAAAWwAAAAACWwAAAAACWwAAAAADWwAAAAAC version: 6 -2,0: ind: -2,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAewAAAAAAIgAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAewAAAAAAIgAAAAABWwAAAAABWwAAAAADWwAAAAAAWwAAAAADWwAAAAABWwAAAAACWwAAAAACWwAAAAADWwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAA version: 6 -2,1: ind: -2,1 @@ -275,12 +275,16 @@ entities: version: 6 6,1: ind: 6,1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATQAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANgAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIgAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATQAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANgAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIgAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAABewAAAAAAewAAAAAAewAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 6,2: ind: 6,2 tiles: NgAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATQAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 + 0,3: + ind: 0,3 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 - type: Broadphase - type: Physics bodyStatus: InAir @@ -550,7 +554,7 @@ entities: 4,-6: 0: 3855 4,-5: - 0: 22288 + 0: 22352 0,6: 0: 2056 1,6: @@ -719,26 +723,26 @@ entities: 1: 273 0: 3276 2,-12: - 1: 5905 + 1: 8021 2,-13: - 1: 4401 + 1: 21877 2,-11: 0: 61152 - 3,-12: - 0: 61047 - 1: 136 3,-10: 1: 50 0: 45192 3,-9: 0: 3067 - 3,-13: - 0: 30583 - 1: 34952 + 3,-12: + 0: 60966 + 1: 192 3,-11: 0: 3682 + 3,-13: + 0: 9830 + 1: 51200 4,-12: - 1: 253 + 1: 252 0: 16130 4,-11: 0: 48056 @@ -755,26 +759,28 @@ entities: 5,-10: 0: 62207 5,-13: - 1: 8751 + 1: 8749 + 0: 2 6,-12: - 1: 253 + 1: 241 0: 26370 6,-10: 0: 61543 6,-11: 0: 26208 6,-13: - 1: 61165 + 1: 61029 0: 2 7,-12: - 0: 61627 + 1: 16 + 0: 61611 7,-11: 0: 65535 7,-10: 0: 63743 7,-13: - 0: 45875 - 1: 136 + 1: 4232 + 0: 41779 8,-12: 0: 56543 8,-11: @@ -824,12 +830,10 @@ entities: 1: 3140 11,-5: 0: 51455 - 1: 4096 11,-9: 0: 4369 1: 17484 11,-4: - 1: 17 0: 63692 12,-8: 3: 7 @@ -984,22 +988,23 @@ entities: 12,-1: 0: 65380 4,-16: - 1: 4592 + 1: 61680 3,-16: - 1: 4336 + 1: 39152 4,-15: 0: 4095 1: 61440 3,-15: - 0: 65526 + 0: 12006 + 1: 49152 4,-14: - 1: 13117 + 1: 13116 0: 2 3,-14: - 1: 34952 - 0: 30583 + 1: 2240 + 0: 26150 5,-16: - 1: 29424 + 1: 63472 5,-15: 0: 4088 1: 61440 @@ -1007,21 +1012,21 @@ entities: 1: 8749 0: 2 6,-16: - 1: 8944 + 1: 29936 6,-15: - 0: 36859 - 1: 28672 + 0: 4091 + 1: 61440 6,-14: - 1: 61165 + 1: 28385 0: 2 7,-16: 1: 28272 7,-15: - 0: 13105 - 1: 34816 + 0: 9009 + 1: 38912 7,-14: - 0: 13107 - 1: 34952 + 1: 34968 + 0: 13091 8,-16: 1: 3840 8,-15: @@ -1058,15 +1063,15 @@ entities: 1,-16: 1: 50368 1,-15: - 1: 68 + 1: 17476 1,-14: - 1: 17472 + 1: 17476 2,-16: - 1: 57280 + 1: 57328 2,-15: - 1: 4369 + 1: 56797 2,-14: - 1: 4371 + 1: 24023 -4,-11: 1: 62448 -5,-11: @@ -1188,8 +1193,12 @@ entities: 4,11: 1: 12850 0: 2184 + 3,12: + 1: 34952 4,10: 0: 1262 + 4,12: + 1: 61986 5,9: 0: 57599 5,11: @@ -1198,7 +1207,7 @@ entities: 0: 52974 5,12: 0: 12 - 1: 57856 + 1: 61952 6,9: 0: 54527 6,10: @@ -1257,7 +1266,7 @@ entities: 12,6: 0: 28910 12,7: - 1: 36608 + 1: 3840 0: 6 8,12: 0: 1 @@ -1364,6 +1373,8 @@ entities: 0: 32754 20,-4: 0: 65359 + 20,-3: + 1: 3840 20,-2: 0: 30583 20,-1: @@ -1484,7 +1495,7 @@ entities: 0: 239 1: 61440 13,7: - 1: 305 + 1: 273 0: 49152 13,8: 0: 65518 @@ -1495,7 +1506,6 @@ entities: 1: 61440 14,7: 0: 28672 - 1: 128 14,8: 0: 47935 15,5: @@ -1532,7 +1542,7 @@ entities: 1: 256 15,11: 0: 34816 - 1: 773 + 1: 769 13,10: 1: 12544 0: 206 @@ -1633,12 +1643,14 @@ entities: 0: 2730 21,-4: 0: 54479 + 21,-3: + 1: 4352 + 0: 52428 21,-2: + 1: 1 0: 52672 21,-5: 0: 61440 - 21,-3: - 0: 52428 22,-4: 0: 8243 22,-3: @@ -2652,6 +2664,54 @@ entities: decals: 2224: 78,-2 2225: 78,-1 + - node: + color: '#1F820993' + id: CheckerNESW + decals: + 3958: 29,-3 + 3959: 30,-3 + 3960: 31,-3 + 3961: 32,-3 + 3962: 33,-3 + 3963: 34,-3 + 3964: 35,-3 + 3965: 36,-3 + 3966: 36,-4 + 3967: 36,-5 + 3968: 36,-6 + 3969: 36,-7 + 3970: 36,-8 + 3971: 35,-8 + 3972: 34,-8 + 3973: 33,-8 + 3974: 32,-8 + 3975: 31,-8 + 3976: 31,-7 + 3977: 31,-6 + 3978: 29,-6 + 3979: 30,-6 + 3980: 29,-5 + 3981: 30,-5 + 3982: 31,-5 + 3984: 29,-4 + 3985: 30,-4 + 3986: 31,-4 + 3987: 32,-4 + 3988: 33,-4 + 3989: 34,-4 + 3990: 35,-4 + 3991: 35,-5 + 3992: 34,-5 + 3993: 33,-5 + 3994: 32,-5 + 3995: 32,-6 + 3996: 33,-6 + 3997: 34,-6 + 3998: 35,-6 + 3999: 35,-7 + 4000: 34,-7 + 4001: 33,-7 + 4002: 32,-7 - node: color: '#52B4E996' id: CheckerNESW @@ -2866,6 +2926,11 @@ entities: 3182: 11,30 3183: 12,30 3184: 13,30 + 3924: -6,-3 + 3925: -7,-3 + 3926: -22,-2 + 3927: -22,-1 + 3928: -22,0 - node: cleanable: True color: '#FFFFFFFF' @@ -3111,6 +3176,12 @@ entities: 3892: 29,-29 3898: 4,38 3909: 30,-27 + 3931: 35,31 + 3934: 31,23 + 3937: 31,29 + 3948: 47,35 + 3949: 52,34 + 3952: 46,35 - node: cleanable: True angle: 1.5707963267948966 rad @@ -3186,6 +3257,13 @@ entities: 3904: 6,32 3905: 8,30 3908: 29,-27 + 3932: 35,30 + 3933: 28,24 + 3938: 29,30 + 3942: 29,28 + 3950: 47,34 + 3951: 52,35 + 3953: 46,36 - node: cleanable: True angle: 1.5707963267948966 rad @@ -3375,6 +3453,11 @@ entities: 3902: 4,37 3903: 5,33 3906: 8,32 + 3935: 31,24 + 3936: 28,23 + 3940: 31,30 + 3941: 30,29 + 3943: 29,29 - node: cleanable: True angle: 3.141592653589793 rad @@ -3460,6 +3543,8 @@ entities: 3882: 74,-4 3894: 30,-24 3895: 30,-29 + 3939: 30,28 + 3954: 46,34 - node: cleanable: True angle: 1.5707963267948966 rad @@ -3581,6 +3666,10 @@ entities: 93: 31,20 1613: 27,23 1614: 27,24 + 3944: 47,34 + 3945: 47,35 + 3946: 52,35 + 3947: 52,34 - node: color: '#EFCC4125' id: FullTileOverlayGreyscale @@ -3758,6 +3847,7 @@ entities: 2826: 39,19 2939: 36,31 2940: 43,31 + 3930: 35,31 - node: color: '#EFB34128' id: HalfTileOverlayGreyscale @@ -3887,6 +3977,7 @@ entities: 2822: 39,17 2937: 36,30 2938: 43,30 + 3929: 35,30 - node: color: '#EFCC4193' id: HalfTileOverlayGreyscale180 @@ -4520,6 +4611,24 @@ entities: 3412: 9,31 3413: 9,32 3535: 9,33 + - node: + color: '#92000093' + id: QuarterTileOverlayGreyscale180 + decals: + 4021: 36,-1 + 4023: 34,-1 + 4025: 32,-1 + 4026: 31,-1 + 4027: 30,-1 + 4028: 29,-1 + 4029: 28,-1 + 4030: 27,-1 + 4031: 27,-2 + 4032: 27,-3 + 4033: 27,-4 + 4034: 27,-5 + 4036: 27,-7 + 4037: 27,-8 - node: color: '#951710FF' id: QuarterTileOverlayGreyscale180 @@ -4556,7 +4665,6 @@ entities: 944: 27,-9 945: 27,-8 946: 27,-7 - 947: 27,-6 948: 27,-5 1123: -6,-14 1124: -6,-13 @@ -4583,12 +4691,9 @@ entities: 1756: 28,34 1757: 28,35 1758: 28,36 - 1971: 38,-1 1972: 37,-1 1973: 36,-1 - 1974: 35,-1 1975: 34,-1 - 1976: 33,-1 1977: 32,-1 1978: 32,-1 1979: 31,-1 @@ -4600,6 +4705,7 @@ entities: 1993: 14,-1 1994: 16,-1 1995: 15,-1 + 4038: 38,-1 - node: color: '#D4D4D496' id: QuarterTileOverlayGreyscale180 @@ -4712,6 +4818,18 @@ entities: 2514: 105,-20 2515: 102,-20 2516: 102,-17 + - node: + color: '#1F820993' + id: QuarterTileOverlayGreyscale270 + decals: + 4003: 37,-1 + 4004: 36,-1 + 4006: 34,-1 + 4008: 32,-1 + 4009: 31,-1 + 4010: 30,-1 + 4011: 29,-1 + 4012: 28,-1 - node: color: '#334E6DC8' id: QuarterTileOverlayGreyscale270 @@ -4962,6 +5080,17 @@ entities: 2518: 104,-17 2519: 107,-18 2520: 106,-20 + - node: + color: '#1F820993' + id: QuarterTileOverlayGreyscale90 + decals: + 4013: 27,-2 + 4014: 27,-3 + 4015: 27,-4 + 4016: 27,-5 + 4018: 27,-7 + 4019: 27,-8 + 4020: 27,-9 - node: color: '#334E6DC8' id: QuarterTileOverlayGreyscale90 @@ -7579,6 +7708,16 @@ entities: parent: 2 - proto: AirlockBrigGlassLocked entities: + - uid: 1152 + components: + - type: Transform + pos: 35.5,30.5 + parent: 2 + - uid: 1153 + components: + - type: Transform + pos: 35.5,31.5 + parent: 2 - uid: 2186 components: - type: Transform @@ -9274,34 +9413,28 @@ entities: parent: 2 - proto: AirlockSecurityGlassLocked entities: - - uid: 2402 + - uid: 613 components: - type: Transform - pos: 37.5,22.5 + pos: 52.5,34.5 parent: 2 - - uid: 3215 + - uid: 2402 components: - type: Transform - pos: 52.5,34.5 + pos: 37.5,22.5 parent: 2 - uid: 4132 components: - type: Transform pos: 52.5,35.5 parent: 2 - - uid: 7774 - components: - - type: Transform - pos: 35.5,30.5 - parent: 2 - - uid: 8408 +- proto: AirlockSecurityLocked + entities: + - uid: 1660 components: - type: Transform - rot: 3.141592653589793 rad - pos: 35.5,31.5 + pos: 47.5,34.5 parent: 2 -- proto: AirlockSecurityLocked - entities: - uid: 1831 components: - type: Transform @@ -9327,11 +9460,6 @@ entities: - type: Transform pos: 44.5,31.5 parent: 2 - - uid: 13572 - components: - - type: Transform - pos: 47.5,34.5 - parent: 2 - proto: AirlockServiceLocked entities: - uid: 555 @@ -11846,6 +11974,20 @@ entities: rot: 1.5707963267948966 rad pos: 4.5,15.5 parent: 2 + - uid: 15103 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 31.5,44.5 + parent: 2 +- proto: ButtonFrameExit + entities: + - uid: 15128 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 53.5,-0.5 + parent: 2 - proto: ButtonFrameGrey entities: - uid: 6862 @@ -11865,6 +12007,12 @@ entities: rot: 1.5707963267948966 rad pos: 5.5,22.5 parent: 2 + - uid: 11145 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 30.5,27.5 + parent: 2 - proto: CableApcExtension entities: - uid: 42 @@ -32451,6 +32599,21 @@ entities: - type: Transform pos: 36.5,-6.5 parent: 2 + - uid: 1661 + components: + - type: Transform + pos: 29.5,-3.5 + parent: 2 + - uid: 1662 + components: + - type: Transform + pos: 30.5,-2.5 + parent: 2 + - uid: 1664 + components: + - type: Transform + pos: 29.5,-2.5 + parent: 2 - uid: 2516 components: - type: Transform @@ -32775,6 +32938,21 @@ entities: - type: Transform pos: 14.5,15.5 parent: 2 + - uid: 12374 + components: + - type: Transform + pos: 31.5,-3.5 + parent: 2 + - uid: 12793 + components: + - type: Transform + pos: 31.5,-2.5 + parent: 2 + - uid: 15085 + components: + - type: Transform + pos: 30.5,-3.5 + parent: 2 - proto: CarpetBlack entities: - uid: 430 @@ -35923,6 +36101,30 @@ entities: rot: -1.5707963267948966 rad pos: 29.5,-46.5 parent: 2 + - uid: 15156 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 19.5,-14.5 + parent: 2 + - uid: 15157 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 18.5,-14.5 + parent: 2 + - uid: 15158 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 20.5,-14.5 + parent: 2 + - uid: 15159 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 21.5,-14.5 + parent: 2 - proto: Cautery entities: - uid: 7791 @@ -36673,16 +36875,6 @@ entities: parent: 2 - proto: ChairWood entities: - - uid: 1152 - components: - - type: Transform - pos: 29.5,-2.5 - parent: 2 - - uid: 1153 - components: - - type: Transform - pos: 30.5,-2.5 - parent: 2 - uid: 1155 components: - type: Transform @@ -36707,18 +36899,6 @@ entities: rot: -1.5707963267948966 rad pos: 22.5,-10.5 parent: 2 - - uid: 1662 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 29.5,-4.5 - parent: 2 - - uid: 1664 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 30.5,-4.5 - parent: 2 - uid: 2689 components: - type: Transform @@ -38070,6 +38250,33 @@ entities: - type: Transform pos: 70.51337,28.554468 parent: 2 +- proto: ClothingOuterSanta + entities: + - uid: 15114 + components: + - type: Transform + pos: 40.61844,22.747278 + parent: 2 + - uid: 15115 + components: + - type: Transform + pos: 40.708717,22.802872 + parent: 2 + - uid: 15116 + components: + - type: Transform + pos: 40.52816,22.677786 + parent: 2 + - uid: 15117 + components: + - type: Transform + pos: 40.43094,22.615242 + parent: 2 + - uid: 15118 + components: + - type: Transform + pos: 40.326775,22.566597 + parent: 2 - proto: ClothingOuterSkub entities: - uid: 13075 @@ -39482,6 +39689,12 @@ entities: - type: Transform pos: 22.5,17.5 parent: 2 + - uid: 13171 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 21.5,42.5 + parent: 2 - proto: CryogenicSleepUnitSpawner entities: - uid: 6935 @@ -39840,11 +40053,6 @@ entities: - type: Transform pos: 31.5,36.5 parent: 2 - - uid: 13171 - components: - - type: Transform - pos: 31.5,35.5 - parent: 2 - uid: 13172 components: - type: Transform @@ -43053,6 +43261,13 @@ entities: - type: Transform pos: 67.6423,-14.594364 parent: 2 +- proto: DrinkGlassWhite + entities: + - uid: 15126 + components: + - type: Transform + pos: 36.1319,-8.358889 + parent: 2 - proto: DrinkGoldenCup entities: - uid: 12097 @@ -43217,17 +43432,23 @@ entities: rot: 1.5707963267948966 rad pos: 25.5,-14.5 parent: 2 - - uid: 11333 + - uid: 3215 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 14.5,-4.5 + parent: 2 + - uid: 8408 components: - type: Transform rot: -1.5707963267948966 rad - pos: 27.5,33.5 + pos: 42.5,8.5 parent: 2 - - type: ActiveEmergencyLight - - uid: 12374 + - uid: 11333 components: - type: Transform - pos: 10.5,1.5 + rot: -1.5707963267948966 rad + pos: 27.5,33.5 parent: 2 - type: ActiveEmergencyLight - uid: 12375 @@ -43310,6 +43531,157 @@ entities: rot: 1.5707963267948966 rad pos: 53.5,36.5 parent: 2 + - uid: 15131 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 29.5,-2.5 + parent: 2 + - uid: 15132 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 20.5,-28.5 + parent: 2 + - uid: 15133 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 25.5,-36.5 + parent: 2 + - uid: 15134 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 38.5,-48.5 + parent: 2 + - uid: 15135 + components: + - type: Transform + pos: 34.5,-22.5 + parent: 2 + - uid: 15136 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 31.5,-17.5 + parent: 2 + - uid: 15137 + components: + - type: Transform + pos: 72.5,8.5 + parent: 2 + - uid: 15138 + components: + - type: Transform + pos: 78.5,-3.5 + parent: 2 + - uid: 15139 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 49.5,-5.5 + parent: 2 + - uid: 15140 + components: + - type: Transform + pos: 49.5,11.5 + parent: 2 + - uid: 15141 + components: + - type: Transform + pos: 55.5,20.5 + parent: 2 + - uid: 15142 + components: + - type: Transform + pos: 67.5,16.5 + parent: 2 + - uid: 15143 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 37.5,17.5 + parent: 2 + - uid: 15144 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 32.5,39.5 + parent: 2 + - uid: 15145 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 17.5,41.5 + parent: 2 + - uid: 15146 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 14.5,35.5 + parent: 2 + - uid: 15147 + components: + - type: Transform + pos: 20.5,18.5 + parent: 2 + - uid: 15148 + components: + - type: Transform + pos: 10.5,10.5 + parent: 2 + - uid: 15149 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 3.5,5.5 + parent: 2 + - uid: 15150 + components: + - type: Transform + pos: 15.5,1.5 + parent: 2 + - uid: 15151 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 8.5,-6.5 + parent: 2 + - uid: 15152 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -8.5,-1.5 + parent: 2 + - uid: 15153 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -22.5,-8.5 + parent: 2 + - uid: 15154 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -6.5,-17.5 + parent: 2 + - uid: 15155 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 22.5,-19.5 + parent: 2 + - uid: 15160 + components: + - type: Transform + pos: 79.5,2.5 + parent: 2 + - uid: 15161 + components: + - type: Transform + pos: 46.5,4.5 + parent: 2 - proto: EmergencyRollerBedSpawnFolded entities: - uid: 9622 @@ -45893,6 +46265,41 @@ entities: parent: 2 - type: Fixtures fixtures: {} +- proto: FloraTreeChristmas02 + entities: + - uid: 2566 + components: + - type: Transform + pos: 30.5,-3.5 + parent: 2 +- proto: FoodBakedCookie + entities: + - uid: 15122 + components: + - type: Transform + pos: 35.204815,-8.44228 + parent: 2 +- proto: FoodBakedCookieOatmeal + entities: + - uid: 15123 + components: + - type: Transform + pos: 35.392315,-8.525671 + parent: 2 +- proto: FoodBakedCookieRaisin + entities: + - uid: 15124 + components: + - type: Transform + pos: 35.558983,-8.400584 + parent: 2 +- proto: FoodBakedCookieSugar + entities: + - uid: 15125 + components: + - type: Transform + pos: 35.3819,-8.296345 + parent: 2 - proto: FoodBanana entities: - uid: 9595 @@ -46093,6 +46500,13 @@ entities: - type: Transform pos: 27.383966,6.5099545 parent: 2 +- proto: FoodPlate + entities: + - uid: 15119 + components: + - type: Transform + pos: 35.454815,-8.306768 + parent: 2 - proto: FoodPlateSmallTrash entities: - uid: 5882 @@ -62416,11 +62830,6 @@ entities: - type: Transform pos: 23.5,53.5 parent: 2 - - uid: 5754 - components: - - type: Transform - pos: 24.5,53.5 - parent: 2 - uid: 5755 components: - type: Transform @@ -64738,6 +65147,12 @@ entities: rot: -1.5707963267948966 rad pos: 57.5,42.5 parent: 2 + - uid: 13654 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 15.5,51.5 + parent: 2 - uid: 13658 components: - type: Transform @@ -65504,6 +65919,34 @@ entities: rot: 1.5707963267948966 rad pos: 1.5,43.5 parent: 2 + - uid: 15105 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 16.5,51.5 + parent: 2 + - uid: 15106 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 17.5,51.5 + parent: 2 + - uid: 15107 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 18.5,51.5 + parent: 2 + - uid: 15110 + components: + - type: Transform + pos: 15.5,49.5 + parent: 2 + - uid: 15112 + components: + - type: Transform + pos: 19.5,51.5 + parent: 2 - proto: GrilleBroken entities: - uid: 1247 @@ -65687,6 +66130,21 @@ entities: - type: Transform pos: 5.5,43.5 parent: 2 + - uid: 15108 + components: + - type: Transform + pos: 15.5,50.5 + parent: 2 + - uid: 15109 + components: + - type: Transform + pos: 15.5,48.5 + parent: 2 + - uid: 15111 + components: + - type: Transform + pos: 24.5,53.5 + parent: 2 - proto: GunSafeLaserCarbine entities: - uid: 2126 @@ -66413,6 +66871,60 @@ entities: - type: Transform pos: 84.53704,28.473265 parent: 2 +- proto: LockableButtonCommand + entities: + - uid: 15104 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 31.5,44.5 + parent: 2 + - type: DeviceLinkSource + linkedPorts: + 15098: + - Pressed: Toggle + 15096: + - Pressed: Toggle + 15095: + - Pressed: Toggle + 15094: + - Pressed: Toggle + 15093: + - Pressed: Toggle + 15092: + - Pressed: Toggle + 15091: + - Pressed: Toggle + 15097: + - Pressed: Toggle + 15090: + - Pressed: Toggle + 15089: + - Pressed: Toggle + 15088: + - Pressed: Toggle + 15099: + - Pressed: Toggle + 15100: + - Pressed: Toggle + 15101: + - Pressed: Toggle + 15102: + - Pressed: Toggle +- proto: LockableButtonMedical + entities: + - uid: 15129 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 53.5,-0.5 + parent: 2 + - type: DeviceLinkSource + linkedPorts: + 599: + - Pressed: Open + 600: + - Pressed: Open - proto: LockerAtmosphericsFilledHardsuit entities: - uid: 1458 @@ -68367,11 +68879,6 @@ entities: - type: Transform pos: 37.5,2.5 parent: 2 - - uid: 12316 - components: - - type: Transform - pos: 33.5,16.5 - parent: 2 - uid: 12317 components: - type: Transform @@ -68382,6 +68889,11 @@ entities: - type: Transform pos: 30.5,-13.5 parent: 2 + - uid: 13572 + components: + - type: Transform + pos: 30.5,12.5 + parent: 2 - proto: PottedPlant1 entities: - uid: 6619 @@ -68405,11 +68917,6 @@ entities: parent: 2 - proto: PottedPlant22 entities: - - uid: 2909 - components: - - type: Transform - pos: 19.5,44.5 - parent: 2 - uid: 12726 components: - type: Transform @@ -71030,6 +71537,18 @@ entities: rot: 3.141592653589793 rad pos: 41.5,-12.5 parent: 2 +- proto: PresentRandom + entities: + - uid: 15086 + components: + - type: Transform + pos: 29.5,-3.5 + parent: 2 + - uid: 15087 + components: + - type: Transform + pos: 31.5,-3.5 + parent: 2 - proto: Protolathe entities: - uid: 5305 @@ -71289,6 +71808,11 @@ entities: rot: 3.141592653589793 rad pos: 82.5,34.5 parent: 2 + - uid: 15113 + components: + - type: Transform + pos: 40.5,22.5 + parent: 2 - proto: RadiationCollectorFullTank entities: - uid: 8166 @@ -71537,10 +72061,10 @@ entities: parent: 2 - proto: RandomPosterLegit entities: - - uid: 2566 + - uid: 5754 components: - type: Transform - pos: 34.5,12.5 + pos: 33.5,12.5 parent: 2 - uid: 7573 components: @@ -71592,6 +72116,11 @@ entities: - type: Transform pos: 75.5,5.5 parent: 2 + - uid: 15130 + components: + - type: Transform + pos: 36.5,12.5 + parent: 2 - proto: RandomSoap entities: - uid: 8162 @@ -75357,6 +75886,87 @@ entities: - type: Transform pos: 17.5,-43.5 parent: 2 +- proto: ShuttersWindowOpen + entities: + - uid: 15088 + components: + - type: Transform + pos: 22.5,49.5 + parent: 2 + - uid: 15089 + components: + - type: Transform + pos: 23.5,49.5 + parent: 2 + - uid: 15090 + components: + - type: Transform + pos: 24.5,49.5 + parent: 2 + - uid: 15091 + components: + - type: Transform + pos: 26.5,49.5 + parent: 2 + - uid: 15092 + components: + - type: Transform + pos: 27.5,49.5 + parent: 2 + - uid: 15093 + components: + - type: Transform + pos: 28.5,49.5 + parent: 2 + - uid: 15094 + components: + - type: Transform + pos: 29.5,49.5 + parent: 2 + - uid: 15095 + components: + - type: Transform + pos: 30.5,49.5 + parent: 2 + - uid: 15096 + components: + - type: Transform + pos: 31.5,49.5 + parent: 2 + - uid: 15097 + components: + - type: Transform + pos: 25.5,49.5 + parent: 2 + - uid: 15098 + components: + - type: Transform + pos: 32.5,49.5 + parent: 2 + - uid: 15099 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 36.5,46.5 + parent: 2 + - uid: 15100 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 36.5,45.5 + parent: 2 + - uid: 15101 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 18.5,45.5 + parent: 2 + - uid: 15102 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 18.5,44.5 + parent: 2 - proto: SignAi entities: - uid: 3417 @@ -75627,16 +76237,6 @@ entities: - Pressed: Toggle 4503: - Pressed: Toggle - - uid: 13654 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 30.5,27.5 - parent: 2 - - type: DeviceLinkSource - linkedPorts: - 13915: - - Pressed: Toggle - uid: 13655 components: - type: MetaData @@ -75688,6 +76288,16 @@ entities: - Pressed: Toggle 12824: - Pressed: Toggle + - uid: 15127 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 30.5,27.5 + parent: 2 + - type: DeviceLinkSource + linkedPorts: + 13915: + - Pressed: Toggle - proto: SignAnomaly entities: - uid: 5066 @@ -77947,15 +78557,15 @@ entities: parent: 2 - proto: SpawnPointServiceWorker entities: - - uid: 12792 + - uid: 12316 components: - type: Transform - pos: 32.5,-5.5 + pos: 32.5,-4.5 parent: 2 - - uid: 12793 + - uid: 12792 components: - type: Transform - pos: 32.5,-4.5 + pos: 32.5,-5.5 parent: 2 - uid: 12794 components: @@ -78195,6 +78805,18 @@ entities: - type: Transform pos: 54.5,37.5 parent: 2 + - uid: 15120 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 29.777733,-4.241445 + parent: 2 + - uid: 15121 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 31.173567,-4.241445 + parent: 2 - proto: StoolBar entities: - uid: 1615 @@ -80130,16 +80752,6 @@ entities: - type: Transform pos: 33.5,-5.5 parent: 2 - - uid: 1660 - components: - - type: Transform - pos: 29.5,-3.5 - parent: 2 - - uid: 1661 - components: - - type: Transform - pos: 30.5,-3.5 - parent: 2 - uid: 1758 components: - type: Transform @@ -82251,13 +82863,6 @@ entities: - type: Transform pos: 11.5,-3.5 parent: 2 - - uid: 613 - components: - - type: MetaData - name: Hot drinks machine - - type: Transform - pos: 21.5,42.5 - parent: 2 - uid: 5350 components: - type: MetaData @@ -82272,6 +82877,11 @@ entities: - type: Transform pos: 67.5,41.5 parent: 2 + - uid: 7774 + components: + - type: Transform + pos: 19.5,44.5 + parent: 2 - uid: 8864 components: - type: MetaData @@ -93523,35 +94133,11 @@ entities: parent: 2 - proto: WallWeaponCapacitorRecharger entities: - - uid: 11145 + - uid: 2909 components: - type: Transform - pos: 39.5,20.5 + pos: 36.5,20.5 parent: 2 - - type: ContainerContainer - containers: - WeaponCapacitorCharger-powerCellContainer: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - charger-slot: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - charger_slot: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - machine_board: !type:Container - showEnts: False - occludes: True - ents: [] - machine_parts: !type:Container - showEnts: False - occludes: True - ents: [] - - type: Physics - canCollide: False - proto: WardrobeAtmosphericsFilled entities: - uid: 4267 From 22987fc77f5ab508604be215cedc8bb59f7fb947 Mon Sep 17 00:00:00 2001 From: ActiveMammmoth <140334666+ActiveMammmoth@users.noreply.github.com> Date: Sun, 17 Nov 2024 11:46:31 -0500 Subject: [PATCH 133/187] Wizard Summon Guns/Magic (#32692) * mostly done but there's a bug with spawning * RandomGlobalSpawnSpellEvent now actually works * Summon Guns/Magic is working * Added sound, cap gun, and auto pick up * Added all requested changes/fixes from reviews * Halving cooldowns --- .../Systems/KillPersonConditionSystem.cs | 6 +- .../Store/Systems/StoreSystem.Ui.cs | 5 + .../Events/RandomGlobalSpawnSpellEvent.cs | 23 +++ Content.Shared/Magic/SharedMagicSystem.cs | 43 +++- Content.Shared/Mind/SharedMindSystem.cs | 19 +- Content.Shared/Store/ListingPrototype.cs | 16 +- .../Locale/en-US/magic/spells-actions.ftl | 4 +- .../Locale/en-US/store/spellbook-catalog.ftl | 8 +- .../Prototypes/Catalog/spellbook_catalog.yml | 30 ++- Resources/Prototypes/Magic/event_spells.yml | 194 +++++++++++++++++- 10 files changed, 326 insertions(+), 22 deletions(-) create mode 100644 Content.Shared/Magic/Events/RandomGlobalSpawnSpellEvent.cs diff --git a/Content.Server/Objectives/Systems/KillPersonConditionSystem.cs b/Content.Server/Objectives/Systems/KillPersonConditionSystem.cs index 8dcbf191b36..f662d6a578c 100644 --- a/Content.Server/Objectives/Systems/KillPersonConditionSystem.cs +++ b/Content.Server/Objectives/Systems/KillPersonConditionSystem.cs @@ -53,7 +53,7 @@ private void OnPersonAssigned(EntityUid uid, PickRandomPersonComponent comp, ref return; // no other humans to kill - var allHumans = _mind.GetAliveHumansExcept(args.MindId); + var allHumans = _mind.GetAliveHumans(args.MindId); if (allHumans.Count == 0) { args.Cancelled = true; @@ -77,14 +77,14 @@ private void OnHeadAssigned(EntityUid uid, PickRandomHeadComponent comp, ref Obj return; // no other humans to kill - var allHumans = _mind.GetAliveHumansExcept(args.MindId); + var allHumans = _mind.GetAliveHumans(args.MindId); if (allHumans.Count == 0) { args.Cancelled = true; return; } - var allHeads = new List<EntityUid>(); + var allHeads = new HashSet<Entity<MindComponent>>(); foreach (var person in allHumans) { if (TryComp<MindComponent>(person, out var mind) && mind.OwnedEntity is { } ent && HasComp<CommandStaffComponent>(ent)) diff --git a/Content.Server/Store/Systems/StoreSystem.Ui.cs b/Content.Server/Store/Systems/StoreSystem.Ui.cs index f1c0cb1e906..5af6ce1c975 100644 --- a/Content.Server/Store/Systems/StoreSystem.Ui.cs +++ b/Content.Server/Store/Systems/StoreSystem.Ui.cs @@ -256,6 +256,11 @@ private void OnBuyRequest(EntityUid uid, StoreComponent component, StoreBuyListi RaiseLocalEvent(buyer, listing.ProductEvent); } + if (listing.DisableRefund) + { + component.RefundAllowed = false; + } + //log dat shit. _admin.Add(LogType.StorePurchase, LogImpact.Low, diff --git a/Content.Shared/Magic/Events/RandomGlobalSpawnSpellEvent.cs b/Content.Shared/Magic/Events/RandomGlobalSpawnSpellEvent.cs new file mode 100644 index 00000000000..c77607562a4 --- /dev/null +++ b/Content.Shared/Magic/Events/RandomGlobalSpawnSpellEvent.cs @@ -0,0 +1,23 @@ +using Content.Shared.Actions; +using Content.Shared.Storage; +using Robust.Shared.Audio; + +namespace Content.Shared.Magic.Events; + +public sealed partial class RandomGlobalSpawnSpellEvent : InstantActionEvent, ISpeakSpell +{ + /// <summary> + /// The list of prototypes this spell can spawn, will select one randomly + /// </summary> + [DataField] + public List<EntitySpawnEntry> Spawns = new(); + + /// <summary> + /// Sound that will play globally when cast + /// </summary> + [DataField] + public SoundSpecifier Sound = new SoundPathSpecifier("/Audio/Magic/staff_animation.ogg"); + + [DataField] + public string? Speech { get; private set; } +} diff --git a/Content.Shared/Magic/SharedMagicSystem.cs b/Content.Shared/Magic/SharedMagicSystem.cs index 02d483c0a3f..21e137346ef 100644 --- a/Content.Shared/Magic/SharedMagicSystem.cs +++ b/Content.Shared/Magic/SharedMagicSystem.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Content.Shared.Actions; using Content.Shared.Body.Components; using Content.Shared.Body.Systems; @@ -7,12 +7,17 @@ using Content.Shared.Doors.Systems; using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; +using Content.Shared.Humanoid; using Content.Shared.Interaction; using Content.Shared.Inventory; using Content.Shared.Lock; using Content.Shared.Magic.Components; using Content.Shared.Magic.Events; using Content.Shared.Maps; +using Content.Shared.Mind; +using Content.Shared.Mind.Components; +using Content.Shared.Mobs.Components; +using Content.Shared.Mobs.Systems; using Content.Shared.Physics; using Content.Shared.Popups; using Content.Shared.Speech.Muting; @@ -20,6 +25,7 @@ using Content.Shared.Tag; using Content.Shared.Weapons.Ranged.Components; using Content.Shared.Weapons.Ranged.Systems; +using Robust.Shared.Audio.Systems; using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Network; @@ -53,6 +59,9 @@ public abstract class SharedMagicSystem : EntitySystem [Dependency] private readonly LockSystem _lock = default!; [Dependency] private readonly SharedHandsSystem _hands = default!; [Dependency] private readonly TagSystem _tag = default!; + [Dependency] private readonly MobStateSystem _mobState = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedMindSystem _mind = default!; public override void Initialize() { @@ -67,6 +76,7 @@ public override void Initialize() SubscribeLocalEvent<SmiteSpellEvent>(OnSmiteSpell); SubscribeLocalEvent<KnockSpellEvent>(OnKnockSpell); SubscribeLocalEvent<ChargeSpellEvent>(OnChargeSpell); + SubscribeLocalEvent<RandomGlobalSpawnSpellEvent>(OnRandomGlobalSpawnSpell); // Spell wishlist // A wishlish of spells that I'd like to implement or planning on implementing in a future PR @@ -501,6 +511,37 @@ private void OnChargeSpell(ChargeSpellEvent ev) _gunSystem.UpdateBasicEntityAmmoCount(wand.Value, basicAmmoComp.Count.Value + ev.Charge, basicAmmoComp); } // End Charge Spells + #endregion + #region Global Spells + + private void OnRandomGlobalSpawnSpell(RandomGlobalSpawnSpellEvent ev) + { + if (!_net.IsServer || ev.Handled || !PassesSpellPrerequisites(ev.Action, ev.Performer) || ev.Spawns is not { } spawns) + return; + + ev.Handled = true; + Speak(ev); + + var allHumans = _mind.GetAliveHumans(); + + foreach (var human in allHumans) + { + if (!human.Comp.OwnedEntity.HasValue) + continue; + + var ent = human.Comp.OwnedEntity.Value; + + var mapCoords = _transform.GetMapCoordinates(ent); + foreach (var spawn in EntitySpawnCollection.GetSpawns(spawns, _random)) + { + var spawned = Spawn(spawn, mapCoords); + _hands.PickupOrDrop(ent, spawned); + } + } + + _audio.PlayGlobal(ev.Sound, ev.Performer); + } + #endregion // End Spells #endregion diff --git a/Content.Shared/Mind/SharedMindSystem.cs b/Content.Shared/Mind/SharedMindSystem.cs index bf0b5f650ad..0f5f9172cc6 100644 --- a/Content.Shared/Mind/SharedMindSystem.cs +++ b/Content.Shared/Mind/SharedMindSystem.cs @@ -532,22 +532,19 @@ public string MindOwnerLoggingString(MindComponent mind) /// <summary> /// Returns a list of every living humanoid player's minds, except for a single one which is exluded. /// </summary> - public List<EntityUid> GetAliveHumansExcept(EntityUid exclude) + public HashSet<Entity<MindComponent>> GetAliveHumans(EntityUid? exclude = null) { - var mindQuery = EntityQuery<MindComponent>(); - - var allHumans = new List<EntityUid>(); + var allHumans = new HashSet<Entity<MindComponent>>(); // HumanoidAppearanceComponent is used to prevent mice, pAIs, etc from being chosen - var query = EntityQueryEnumerator<MindContainerComponent, MobStateComponent, HumanoidAppearanceComponent>(); - while (query.MoveNext(out var uid, out var mc, out var mobState, out _)) + var query = EntityQueryEnumerator<MobStateComponent, HumanoidAppearanceComponent>(); + while (query.MoveNext(out var uid, out var mobState, out _)) { - // the player needs to have a mind and not be the excluded one - if (mc.Mind == null || mc.Mind == exclude) + // the player needs to have a mind and not be the excluded one + + // the player has to be alive + if (!TryGetMind(uid, out var mind, out var mindComp) || mind == exclude || !_mobState.IsAlive(uid, mobState)) continue; - // the player has to be alive - if (_mobState.IsAlive(uid, mobState)) - allHumans.Add(mc.Mind.Value); + allHumans.Add(new Entity<MindComponent>(mind, mindComp)); } return allHumans; diff --git a/Content.Shared/Store/ListingPrototype.cs b/Content.Shared/Store/ListingPrototype.cs index 05ac5cc4cd5..e2339b72c67 100644 --- a/Content.Shared/Store/ListingPrototype.cs +++ b/Content.Shared/Store/ListingPrototype.cs @@ -39,7 +39,8 @@ public ListingData(ListingData other) : this( other.Categories, other.OriginalCost, other.RestockTime, - other.DiscountDownTo + other.DiscountDownTo, + other.DisableRefund ) { @@ -63,7 +64,8 @@ public ListingData( HashSet<ProtoId<StoreCategoryPrototype>> categories, IReadOnlyDictionary<ProtoId<CurrencyPrototype>, FixedPoint2> originalCost, TimeSpan restockTime, - Dictionary<ProtoId<CurrencyPrototype>, FixedPoint2> dataDiscountDownTo + Dictionary<ProtoId<CurrencyPrototype>, FixedPoint2> dataDiscountDownTo, + bool disableRefund ) { Name = name; @@ -84,6 +86,7 @@ Dictionary<ProtoId<CurrencyPrototype>, FixedPoint2> dataDiscountDownTo OriginalCost = originalCost; RestockTime = restockTime; DiscountDownTo = new Dictionary<ProtoId<CurrencyPrototype>, FixedPoint2>(dataDiscountDownTo); + DisableRefund = disableRefund; } [ViewVariables] @@ -194,6 +197,12 @@ Dictionary<ProtoId<CurrencyPrototype>, FixedPoint2> dataDiscountDownTo [DataField] public Dictionary<ProtoId<CurrencyPrototype>, FixedPoint2> DiscountDownTo = new(); + /// <summary> + /// Whether or not to disable refunding for the store when the listing is purchased from it. + /// </summary> + [DataField] + public bool DisableRefund = false; + public bool Equals(ListingData? listing) { if (listing == null) @@ -287,7 +296,8 @@ public ListingDataWithCostModifiers(ListingData listingData) listingData.Categories, listingData.OriginalCost, listingData.RestockTime, - listingData.DiscountDownTo + listingData.DiscountDownTo, + listingData.DisableRefund ) { } diff --git a/Resources/Locale/en-US/magic/spells-actions.ftl b/Resources/Locale/en-US/magic/spells-actions.ftl index 40757cd694f..21109066d3d 100644 --- a/Resources/Locale/en-US/magic/spells-actions.ftl +++ b/Resources/Locale/en-US/magic/spells-actions.ftl @@ -1,5 +1,7 @@ -action-speech-spell-forcewall = TARCOL MINTI ZHERI +action-speech-spell-forcewall = TARCOL MINTI ZHERI action-speech-spell-knock = AULIE OXIN FIERA action-speech-spell-smite = EI NATH! action-speech-spell-summon-magicarp = AIE KHUSE EU action-speech-spell-fireball = ONI'SOMA! +action-speech-spell-summon-guns = YOR'NEE VES-KORFA +action-speech-spell-summon-magic = RYGOIN FEMA-VERECO diff --git a/Resources/Locale/en-US/store/spellbook-catalog.ftl b/Resources/Locale/en-US/store/spellbook-catalog.ftl index 1d970f6e3ac..ed62c6fa82b 100644 --- a/Resources/Locale/en-US/store/spellbook-catalog.ftl +++ b/Resources/Locale/en-US/store/spellbook-catalog.ftl @@ -1,4 +1,4 @@ -# Spells +# Spells spellbook-fireball-name = Fireball spellbook-fireball-desc = Get most crew exploding with rage when they see this fireball heading toward them! @@ -33,6 +33,12 @@ spellbook-wand-polymorph-carp-description = For when you need a carp filet quick spellbook-event-summon-ghosts-name = Summon Ghosts spellbook-event-summon-ghosts-description = Who ya gonna call? +spellbook-event-summon-guns-name = Summon Guns +spellbook-event-summon-guns-description = AK47s for everyone! Places a random gun in front of everybody. Disables refunds when bought! + +spellbook-event-summon-magic-name = Summon Magic +spellbook-event-summon-magic-description = Places a random magical item in front of everybody. Nothing could go wrong! Disables refunds when bought! + # Upgrades spellbook-upgrade-fireball-name = Upgrade Fireball spellbook-upgrade-fireball-description = Upgrades Fireball to a maximum of level 3! diff --git a/Resources/Prototypes/Catalog/spellbook_catalog.yml b/Resources/Prototypes/Catalog/spellbook_catalog.yml index 805c157f1e3..6e9bba87a6a 100644 --- a/Resources/Prototypes/Catalog/spellbook_catalog.yml +++ b/Resources/Prototypes/Catalog/spellbook_catalog.yml @@ -1,4 +1,4 @@ -# Offensive +# Offensive - type: listing id: SpellbookFireball name: spellbook-fireball-name @@ -132,6 +132,34 @@ - !type:ListingLimitedStockCondition stock: 1 +- type: listing + id: SpellbookEventSummonGuns + name: spellbook-event-summon-guns-name + description: spellbook-event-summon-guns-description + productAction: ActionSummonGuns + cost: + WizCoin: 2 + categories: + - SpellbookEvents + conditions: + - !type:ListingLimitedStockCondition + stock: 1 + disableRefund: true + +- type: listing + id: SpellbookEventSummonMagic + name: spellbook-event-summon-magic-name + description: spellbook-event-summon-magic-description + productAction: ActionSummonMagic + cost: + WizCoin: 2 + categories: + - SpellbookEvents + conditions: + - !type:ListingLimitedStockCondition + stock: 1 + disableRefund: true + # Upgrades - type: listing id: SpellbookFireballUpgrade diff --git a/Resources/Prototypes/Magic/event_spells.yml b/Resources/Prototypes/Magic/event_spells.yml index 01006b4ffe0..5aad8925a60 100644 --- a/Resources/Prototypes/Magic/event_spells.yml +++ b/Resources/Prototypes/Magic/event_spells.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: ActionSummonGhosts name: Summon Ghosts description: Makes all current ghosts permanently invisible @@ -10,3 +10,195 @@ sprite: Mobs/Ghosts/ghost_human.rsi state: icon event: !type:ToggleGhostVisibilityToAllEvent + +# TODO: Add Whitelist/Blacklist and Component support to EntitySpawnLists (to avoid making huge hardcoded lists like below). + +- type: entity + id: ActionSummonGuns + name: Summon Guns + description: AK47s for everyone! Places a random gun in front of everybody. + components: + - type: Magic + - type: InstantAction + useDelay: 300 + itemIconStyle: BigAction + icon: + sprite: Objects/Weapons/Guns/Rifles/ak.rsi + state: base + event: !type:RandomGlobalSpawnSpellEvent + spawns: + - id: WeaponPistolViper + orGroup: Guns + - id: WeaponPistolCobra + orGroup: Guns + - id: WeaponPistolMk58 + orGroup: Guns + - id: WeaponPistolN1984 + orGroup: Guns + - id: WeaponRevolverDeckard + orGroup: Guns + - id: WeaponRevolverInspector + orGroup: Guns + - id: WeaponRevolverMateba + orGroup: Guns + - id: WeaponRevolverPython + orGroup: Guns + - id: WeaponRevolverPirate + orGroup: Guns + - id: WeaponRifleAk + orGroup: Guns + - id: WeaponRifleM90GrenadeLauncher + orGroup: Guns + - id: WeaponRifleLecter + orGroup: Guns + - id: WeaponShotgunBulldog + orGroup: Guns + - id: WeaponShotgunDoubleBarreled + orGroup: Guns + - id: WeaponShotgunEnforcer + orGroup: Guns + - id: WeaponShotgunKammerer + orGroup: Guns + - id: WeaponShotgunSawn + orGroup: Guns + - id: WeaponShotgunHandmade + orGroup: Guns + - id: WeaponShotgunBlunderbuss + orGroup: Guns + - id: WeaponShotgunImprovised + orGroup: Guns + - id: WeaponSubMachineGunAtreides + orGroup: Guns + - id: WeaponSubMachineGunC20r + orGroup: Guns + - id: WeaponSubMachineGunDrozd + orGroup: Guns + - id: WeaponSubMachineGunWt550 + orGroup: Guns + - id: WeaponSniperMosin + orGroup: Guns + - id: WeaponSniperHristov + orGroup: Guns + - id: Musket + orGroup: Guns + - id: WeaponPistolFlintlock + orGroup: Guns + - id: WeaponLauncherChinaLake + orGroup: Guns + - id: WeaponLauncherRocket + orGroup: Guns + - id: WeaponLauncherPirateCannon + orGroup: Guns + - id: WeaponTetherGun + orGroup: Guns + - id: WeaponForceGun + orGroup: Guns + - id: WeaponGrapplingGun + orGroup: Guns + - id: WeaponLightMachineGunL6 + orGroup: Guns + - id: WeaponLaserSvalinn + orGroup: Guns + - id: WeaponLaserGun + orGroup: Guns + - id: WeaponMakeshiftLaser + orGroup: Guns + - id: WeaponTeslaGun + orGroup: Guns + - id: WeaponLaserCarbinePractice + orGroup: Guns + - id: WeaponLaserCarbine + orGroup: Guns + - id: WeaponPulsePistol + orGroup: Guns + - id: WeaponPulseCarbine + orGroup: Guns + - id: WeaponPulseRifle + orGroup: Guns + - id: WeaponLaserCannon + orGroup: Guns + - id: WeaponParticleDecelerator + orGroup: Guns + - id: WeaponXrayCannon + orGroup: Guns + - id: WeaponDisablerPractice + orGroup: Guns + - id: WeaponDisabler + orGroup: Guns + - id: WeaponDisablerSMG + orGroup: Guns + - id: WeaponTaser + orGroup: Guns + - id: WeaponAntiqueLaser + orGroup: Guns + - id: WeaponAdvancedLaser + orGroup: Guns + - id: WeaponPistolCHIMP + orGroup: Guns + - id: WeaponBehonkerLaser + orGroup: Guns + - id: WeaponEnergyShotgun + orGroup: Guns + - id: WeaponMinigun + orGroup: Guns + - id: BowImprovised + orGroup: Guns + - id: WeaponFlareGun + orGroup: Guns + - id: WeaponImprovisedPneumaticCannon + orGroup: Guns + - id: WeaponWaterPistol + orGroup: Guns + - id: WeaponWaterBlaster + orGroup: Guns + - id: WeaponWaterBlasterSuper + orGroup: Guns + - id: RevolverCapGun + orGroup: Guns + - id: RevolverCapGunFake + orGroup: Guns + speech: action-speech-spell-summon-guns + +- type: entity + id: ActionSummonMagic + name: Summon Magic + description: Places a random magical item in front of everybody. Nothing could go wrong! + components: + - type: Magic + - type: InstantAction + useDelay: 300 + itemIconStyle: BigAction + icon: + sprite: Objects/Magic/magicactions.rsi + state: magicmissile + event: !type:RandomGlobalSpawnSpellEvent + spawns: + - id: SpawnSpellbook + orGroup: Magics + - id: ForceWallSpellbook + orGroup: Magics + - id: BlinkBook + orGroup: Magics + - id: SmiteBook + orGroup: Magics + - id: KnockSpellbook + orGroup: Magics + - id: FireballSpellbook + orGroup: Magics + - id: WeaponWandPolymorphCarp + orGroup: Magics + - id: WeaponWandPolymorphMonkey + orGroup: Magics + - id: WeaponWandFireball + orGroup: Magics + - id: WeaponWandPolymorphDoor + orGroup: Magics + - id: WeaponWandCluwne + orGroup: Magics + - id: WeaponWandPolymorphBread + orGroup: Magics + - id: WeaponStaffHealing + orGroup: Magics + - id: WeaponStaffPolymorphDoor + orGroup: Magics + speech: action-speech-spell-summon-magic From e290588624169c5bfe043797ac4a1e5af6c6c0a1 Mon Sep 17 00:00:00 2001 From: ScarKy0 <scarky0@onet.eu> Date: Sun, 17 Nov 2024 20:23:45 +0100 Subject: [PATCH 134/187] Changes + Cleanup --- Content.Server/Silicons/Laws/SiliconLawSystem.cs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Content.Server/Silicons/Laws/SiliconLawSystem.cs b/Content.Server/Silicons/Laws/SiliconLawSystem.cs index 3bf0297c40e..8341e3185cb 100644 --- a/Content.Server/Silicons/Laws/SiliconLawSystem.cs +++ b/Content.Server/Silicons/Laws/SiliconLawSystem.cs @@ -1,4 +1,3 @@ -using System.Diagnostics; using System.Linq; using Content.Server.Administration; using Content.Server.Chat.Managers; @@ -67,8 +66,7 @@ private void OnMindAdded(EntityUid uid, SiliconLawBoundComponent component, Mind var msg = Loc.GetString("laws-notify"); var wrappedMessage = Loc.GetString("chat-manager-server-wrap-message", ("message", msg)); - _chatManager.ChatMessageToOne(ChatChannel.Server, msg, wrappedMessage, default, false, - actor.PlayerSession.Channel, colorOverride: Color.FromHex("#2ed2fd")); + _chatManager.ChatMessageToOne(ChatChannel.Server, msg, wrappedMessage, default, false, actor.PlayerSession.Channel, colorOverride: Color.FromHex("#2ed2fd")); if (!TryComp<SiliconLawProviderComponent>(uid, out var lawcomp)) return; @@ -78,8 +76,7 @@ private void OnMindAdded(EntityUid uid, SiliconLawBoundComponent component, Mind var modifedLawMsg = Loc.GetString("laws-notify-subverted"); var modifiedLawWrappedMessage = Loc.GetString("chat-manager-server-wrap-message", ("message", modifedLawMsg)); - _chatManager.ChatMessageToOne(ChatChannel.Server, modifedLawMsg, modifiedLawWrappedMessage, default, false, - actor.PlayerSession.Channel, colorOverride: Color.Red); + _chatManager.ChatMessageToOne(ChatChannel.Server, modifedLawMsg, modifiedLawWrappedMessage, default, false, actor.PlayerSession.Channel, colorOverride: Color.Red); } private void OnLawProviderMindAdded(Entity<SiliconLawProviderComponent> ent, ref MindAddedMessage args) @@ -185,7 +182,8 @@ protected override void OnGotEmagged(EntityUid uid, EmagSiliconLawComponent comp base.OnGotEmagged(uid, component, ref args); NotifyLawsChanged(uid, component.EmaggedSound); - EnsureSubvertedSiliconRole(uid); + if(_mind.TryGetMind(uid, out var mindId, out _)) + EnsureSubvertedSiliconRole(mindId); _stunSystem.TryParalyze(uid, component.StunTime, true); From 31d5a668669cf14558e25c6607a446aac0927b5d Mon Sep 17 00:00:00 2001 From: ThatGuyUSA <thatguyusa123@gmail.com> Date: Sun, 17 Nov 2024 14:08:20 -0800 Subject: [PATCH 135/187] Chemical synthesis kit tweak (#33345) * butcherable surgery caps * readded cardboard box * butcherable now? * butcherable now? * one day ill figure this out * changed label of hyperzine syringe * removed the thing in hats.yml that wasn't supposed to be here * Update Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- Resources/Prototypes/Catalog/Fills/Boxes/syndicate.yml | 2 +- .../Prototypes/Entities/Objects/Specific/Medical/healing.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Catalog/Fills/Boxes/syndicate.yml b/Resources/Prototypes/Catalog/Fills/Boxes/syndicate.yml index 0f99ae77d47..839848725e3 100644 --- a/Resources/Prototypes/Catalog/Fills/Boxes/syndicate.yml +++ b/Resources/Prototypes/Catalog/Fills/Boxes/syndicate.yml @@ -84,4 +84,4 @@ amount: 2 - id: WeaponBaguette - id: SyndicateMicrowaveMachineCircuitboard - - id: PaperWrittenCombatBakeryKit \ No newline at end of file + - id: PaperWrittenCombatBakeryKit diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml index f28548a8d1c..46410a01643 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml @@ -1036,7 +1036,7 @@ id: SyringeStimulants components: - type: Label - currentLabel: reagent-name-hyperzine + currentLabel: reagent-name-stimulants - type: SolutionContainerManager solutions: injector: From 97be261631d90f418874844a0063d9b74a8ee43d Mon Sep 17 00:00:00 2001 From: Justice League <the.justice.league.of.canada@gmail.com> Date: Sun, 17 Nov 2024 18:55:57 -0500 Subject: [PATCH 136/187] Reduced cost of coloured light fixtures --- .../Recipes/Construction/Graphs/utilities/lighting.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/lighting.yml b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/lighting.yml index 378feb1cf80..977be3f4d69 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/lighting.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/lighting.yml @@ -28,7 +28,7 @@ - to: icon steps: - material: Glass - amount: 2 + amount: 1 doAfter: 1 - tag: CrystalBlue name: blue crystal shard @@ -48,7 +48,7 @@ - to: icon steps: - material: Glass - amount: 2 + amount: 1 doAfter: 1 - tag: CrystalPink name: pink crystal shard @@ -68,7 +68,7 @@ - to: icon steps: - material: Glass - amount: 2 + amount: 1 doAfter: 1 - tag: CrystalOrange name: orange crystal shard @@ -88,7 +88,7 @@ - to: icon steps: - material: Glass - amount: 2 + amount: 1 doAfter: 1 - tag: CrystalRed name: red crystal shard @@ -108,7 +108,7 @@ - to: icon steps: - material: Glass - amount: 2 + amount: 1 doAfter: 1 - tag: CrystalGreen name: green crystal shard From 824efd4b25b3d24b2d767dd649841e244b045483 Mon Sep 17 00:00:00 2001 From: Ubaser <134914314+UbaserB@users.noreply.github.com> Date: Mon, 18 Nov 2024 17:32:07 +1100 Subject: [PATCH 137/187] Dim light bulbs (#33383) add --- .../Entities/Objects/Power/lights.yml | 17 +++++++++++++++ .../Structures/Lighting/base_lighting.yml | 21 +++++++++++++++++++ .../Entities/Structures/Machines/lathe.yml | 1 + Resources/Prototypes/Recipes/Lathes/misc.yml | 9 ++++++++ 4 files changed, 48 insertions(+) diff --git a/Resources/Prototypes/Entities/Objects/Power/lights.yml b/Resources/Prototypes/Entities/Objects/Power/lights.yml index e0ae055e7d8..bb52000a860 100644 --- a/Resources/Prototypes/Entities/Objects/Power/lights.yml +++ b/Resources/Prototypes/Entities/Objects/Power/lights.yml @@ -150,6 +150,23 @@ - LightBulb - Trash +- type: entity + parent: BaseLightbulb + name: dim light bulb + id: DimLightBulb + description: A dim light bulb for populating the darkness of maintenance. + components: + - type: LightBulb + bulb: Bulb + color: "#ba473f" + lightEnergy: 0.5 + lightRadius: 5 + lightSoftness: 3 + - type: Tag + tags: + - LightBulb + - Trash + - type: entity parent: LightBulb name: old incandescent light bulb diff --git a/Resources/Prototypes/Entities/Structures/Lighting/base_lighting.yml b/Resources/Prototypes/Entities/Structures/Lighting/base_lighting.yml index 99973845a9f..c079975e8ba 100644 --- a/Resources/Prototypes/Entities/Structures/Lighting/base_lighting.yml +++ b/Resources/Prototypes/Entities/Structures/Lighting/base_lighting.yml @@ -346,6 +346,27 @@ Heat: 1 popupText: powered-light-component-burn-hand +- type: entity + id: PoweredDimSmallLight + suffix: Dim + parent: PoweredSmallLightEmpty + components: + - type: Sprite + state: base + - type: PointLight + enabled: true + radius: 5 + energy: 0.5 + softness: 3 + color: "#ba473f" + - type: PoweredLight + hasLampOnSpawn: DimLightBulb + - type: DamageOnInteract + damage: + types: + Heat: 1 + popupText: powered-light-component-burn-hand + - type: entity id: PoweredSmallLight suffix: "" diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 6a94891d127..e828fe784ec 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -150,6 +150,7 @@ - ExteriorLightTube - LightBulb - LedLightBulb + - DimLightBulb - Bucket - DrinkMug - DrinkMugMetal diff --git a/Resources/Prototypes/Recipes/Lathes/misc.yml b/Resources/Prototypes/Recipes/Lathes/misc.yml index a0e74fc34e2..7dc77997839 100644 --- a/Resources/Prototypes/Recipes/Lathes/misc.yml +++ b/Resources/Prototypes/Recipes/Lathes/misc.yml @@ -52,6 +52,15 @@ Steel: 50 Glass: 50 +- type: latheRecipe + id: DimLightBulb + result: DimLightBulb + category: Lights + completetime: 2 + materials: + Steel: 50 + Glass: 50 + - type: latheRecipe id: GlowstickRed result: GlowstickRed From b0fd9d5a555e3bb36a7047030b0a597580b08f83 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Mon, 18 Nov 2024 06:33:17 +0000 Subject: [PATCH 138/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 5675b73f3f9..c70024b7115 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Emisse - changes: - - message: Origin removed from the game. - type: Remove - id: 7120 - time: '2024-08-15T22:22:02.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/31059 - author: Psychpsyo changes: - message: You can now be German on ze space station! (added German accent) @@ -3923,3 +3916,10 @@ id: 7619 time: '2024-11-17T03:27:29.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33318 +- author: Ubaser + changes: + - message: You can now craft dim light bulbs at an autolathe. + type: Add + id: 7620 + time: '2024-11-18T06:32:08.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33383 From 647db6aa878ce3ae6c10ec2bbf5b8b99665935ff Mon Sep 17 00:00:00 2001 From: SpaceManiac <tad@platymuus.com> Date: Mon, 18 Nov 2024 01:51:08 -0800 Subject: [PATCH 139/187] Shift air alarm sprites to better reflect their direction (#33379) * Shift Air Alarm sprites to better reflect their direction * Fix two frames of west-facing sprite being one pixel off * Indicate that sprites are no longer exactly tgstation's --- .../Wallmounts/air_monitors.rsi/alarm0.png | Bin 2670 -> 7073 bytes .../Wallmounts/air_monitors.rsi/alarm1.png | Bin 2102 -> 6210 bytes .../Wallmounts/air_monitors.rsi/alarm2.png | Bin 2144 -> 6253 bytes .../Wallmounts/air_monitors.rsi/alarm_b1.png | Bin 1309 -> 5459 bytes .../Wallmounts/air_monitors.rsi/alarm_b2.png | Bin 1383 -> 5524 bytes .../air_monitors.rsi/alarm_bitem.png | Bin 387 -> 4537 bytes .../Wallmounts/air_monitors.rsi/alarmp.png | Bin 1250 -> 5349 bytes .../Wallmounts/air_monitors.rsi/alarmx.png | Bin 1597 -> 5714 bytes .../Wallmounts/air_monitors.rsi/meta.json | 2 +- 9 files changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm0.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm0.png index 3b714153de9e189d4fba46e1421acbc2f47e034a..995aaabb329695f3c0e4c15cb23e5cf68e4473d9 100644 GIT binary patch literal 7073 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 Dr^qne literal 2670 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 IJm;10H|b(f;s5{u diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm1.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm1.png index e7a2301488820d59d8a4128a5a14a37aa0f7257a..03c7cfa26820c12915216f04edf4c5a67e9cd83b 100644 GIT binary patch literal 6210 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 delta 2090 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 UOy{l88vp<R07*qoM6N<$g0W%>e*gdg diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm2.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm2.png index 716536cfcb233c6bd547f22334953d753b228ca4..684898f1b63ce00e580127b7637395ee70efdd62 100644 GIT binary patch literal 6253 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 delta 2132 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 KMNUMnLSTZ}{vhuF diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm_b1.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm_b1.png index fc185734afd81918fbd5b81766ef3fda10b30cd8..50211ca0daa66bce56de17b7750a89c0ff3af25f 100644 GIT binary patch literal 5459 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 W>x-n0<Tg+aA-=~v-jTUWSN#Vkv-?N@ delta 1291 zcmV+m1@!vUDxC_DBYy<sNkl<Zc%1E9UuY9a82`l+Q9Msk9|}iH>)&?sAO-L8aN!;f z3R?Og<gpN`wStyHOA)ISPPwA>K`MBsP?cgKk9jN6qaY{&iTawg{*9y*`cUe5T9ksU z59w@YXJ=+-lXf#9`N6WuOm=qWH{X2UeBU<#YN$a7BNDfCXn&(DFd}j5(UTWeDFaxG zHr5*<wqU(GYi1^0?<^-a(qD{7+<N@r&bq$v_am@$B4Hz2@Ot(OE)Ja$K5%jLCIFzj zr_V0Cd;5mxcU`eTRymVR+ZPY?z{qD_na+?BK!ZmDJ<B|J)$0Hu0is!_p)$j|OM#Gp z=5W+?$v|dXrhf}`ghLw}k+^mD_6?-ci^2!mqdQA_VRuiTR;JKp1<2r2y$4)BZvW?% zl$^CjePhd->`7+dzYr4cAYf%?tl05O!p4&K{w%38erLa-$v{457Ig=Je9n}%?~(vB zGZ{L2;VPH;?LYotlO$+w%|-iQID&l6#J=XkzU~LZ5q|)y1dN`7H8k$-pNjwhsN21X z+nMm*tzKfut&@qM7k=8l0|4-5=DE`S+T}su^5AL%fA!n_8X9+xi`%h<56i+qwzeKp z7Q<NQ0FsHZq6sKQ2aG4u7>?Gt%16@kIQrWzH3_(LZWD&a5vp%&vD!Mi007fd6Zqq3 z8~~KX@PGf0|M~5|0}|qdOECL(iCZ_nu*`jcO8~uAUS>0PxvChFJN>LGO7uppkDtGB zE8fk0g%OFn95JbA24RM17?HTt0;xh|!hwPnqe<XO06{6rt5}q}(MqKk?ZNWePTq5t zNeL)7x_kQU?X<|{rtbjobZS`GUVHSWt4wPGWPgK}f#=AHd>LhTxExS%q*Q(*bL6xp z0PuFFdG%hND-G=lpl6upa*HHD)s5H2Ed_!K%ARzXL9GY?sxK@rM71Plq^RoDTn#nU zP(u*l+C(qSsjDq5rr$1aknF}@&wk-HvXU3jD#Z<~22(`wg#GnfxT$%q-C-F<Pr*8Q zb$=Pp%ukqKSjM}#uK)@Y#ES_e5)<5Z9L`WBZ5l}2ayVLtzmGK_)qB7Z3KJ!F*)eXQ zD{fssZ&!5p^w}5r&Z54t#bU3LMx_8h@8X?pxOM%!g9MuZGcy@F-G9aLW8!PeqA;<} z0km~=*{P@?(9mRngzNp{bpI8HGIT5fR)0aL_}$6G7^bHtJacfmKv@Z@9&Bi6GO(}t zFy72O4~&F-&MdsEkoJ<oD<C2yfE9buGO#-nAPDI|A?1~Qy972Nq8b*Hnn9I-V>u<D z_5LJ)LjHo@2k^q*B1j2fC4hlNcP2=1NH5y@DC+=`PAIDm5P&DSqFAF;2e8mh2Y-l2 zXU(^4DSIvfuS|^Y65yrBl$0R3SDFN<ptAP?0`N?@Zylh35CBUP32+_UQazw4B!G8f z{MU{V06^^cC7kFTvBG<|;um8Z1}|LGN&)~+6K=y(0*E(7c2?}^i+>lF@Ni{A5)}OE z0NHYu5}<Nm8UWfly6`fa(MAIN?0*9)G9W_S;aKMYw_f(21?7N<9|Y|V=W`~erzVh0 zjB)E}E5J$v8xXOVKp`OF)TCtHdo6_^4^yeUi}&vp0yZGxIxNjw2DEEQPGIf%d9!__ zR&)+mM<@qG$e*KFq|%G7vv!q?s!xp6P(zjDI}isk7V&XRpa1{>07*qoL<FuvV1kJS BXx0D# diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm_b2.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm_b2.png index 0cdb0466062d852115d9646e370966a321920523..b735b57c30878ccf297b73684777a0c687da73d9 100644 GIT binary patch literal 5524 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 b@3B0R?444Hv3U*hDJ1lm?|yvF%DDdkl`R?* delta 1365 zcmV-b1*-a#E9VN3BYy=hNkl<Zc%1E<O=ufO6vzKcLug6cl-37Bv9X&pkyi&{NUK9c z4i$#R7+TQLpx`<Vq{d)lLLFmhLXG1bf&=*iC&9#^qYeS1wwNun2#VTVa*(1lA1X2d z9~QSsYZ44)dyr?nJ3BKwlI+zO=?BYdXLe_2-oAM=@68Bk(tm`D7D<>Ylu;M7NW%R2 z*N0{;4cLw{cA5a4u+x>zXBS=XtS5Wz7g{7?{_?}^9ev^P&ta-0guQga<CRx9Kk+s9 zf%CIB004tSBUaj-TUR}=Rb`JTvyjVJ2Mc?{$ZuAf%D6PZPRnEq03e(VL)Uc#Ls3V* z{VTKZ%2xrd0DlU(43I1T)}b@+p;euCkIHbnKrj?_9U_PzM7BUh9M)KiB+NUvt|FaT z<37+EeZQs`4i1edH59tK0BL-B_^|8d-s^t|g|pqXb#!gZoMh$Chg^X>1hDyK%=pO* z+`>|Kzpbe<m45y9P7S4EzN#|-l!|#_`7RB}XBPu!Cx0(7C4b=UH!LA>%G-9;J`#$c zRLtX0@MuNnBcTX@Edk7)hB-0st{-z0Xl>cYtW4<OelN9T=806$i+2ya2LO0dxG#0S zJTnf=jBge2-KbTsiFtRsm=!br+Tb>_yE`nchVlL}q>^)03!oYsFrUm|D%$EwpU$k} z#IX<LG=JdsH~TO#k3d^Tm)X-d003BCTEJ%~5&$5rhA&_IU1|Lt2n5INg1M*b%)C`& zgZThc0QSD}D3`U;Wz~?J?a#_mqc>{4`1e0%#<S<Ip+yodM@*=iehfo)v`9iY0?EP~ z!h!NAW*36c7pTQ}RZFcCt#oG1YAmbl)LmzqP=5gRW^ic4nojdvZu=Pkep{O2me(7- z;Yw3l0HQ{VV7c!+Uq)#G$T(8Gdt$K|9z-4h09x(^xz7s&A}ZkZwORSWP!zhZ!<aE( z%oxJwl^1~h3$t8qo(9Oe@yfWRfL}q`Q;uO!DFFbD7nbMJC<`+}8hUB2Ns}f`{D3(o zdVg6?Rmak5>g{rd$ZYKK$}46eo9hBfEpY=|!4zIR;p4Wqm`n3YdxIioPs2QQX#>CK z|G}!UfoIQO11NtWR!kt7Tws>taE5l%q=CdOr=qR6_GLTL!-pNAFy4|r-NrrkjGI@^ zSs8;vBi2E#Y1%rvO!}y)RT5P4F5`=WOMehIubguT!4g0|yBIh#deLz+@wG)!n0Wsf zdin;er6@mW@6<rT^_6mF^rFKUI=TRDAY}aRRB{f>OADTBaP=UZ4ZG5$jiBtthW1Vk zhk{4(q;TIiA(V>w^1I5*UR+qaT4=Zepw*t&4Xn!e2oX9^Uh>L4T?f4&;?;11aDNz- z2};&e1G>Lo1W;bTu+IZn;cp&70ni#iVcIL>Ck&xiJ^D!70G>^#s}115(p+AwQD_5b zRI>p*q0_^+s4IJR0k4%9)iuD&j!79oa^7tkAj9sS2XJ5w;T78e2?792MKr**aZ7fC zCRYHg9pj(&O#=YpCokZu;b}8;aDP8O(cZ!M<YlEa0Pq~bEj%@VcvEC%Men}&acvzx zZB9u1qEZ_m>dry|6ml8FVln7Cd$Tm5r*8m{a#>|GpptojXF!Ckv8x1ehvWTY%zV** z7Ni3rmEgBKTq@?VytIH+a*mmA9|dS_paUXS7bpiroR%~giURil1MKh;!A{T3R5I^k z{d<K#2Si+(rCHs;?pl%^SRZ}(rnRM(w+~lEqyr-4&rvk#%$jSj-EOAg7e<;iX>k4r X_^(KM>TE{r00000NkvXXu0mjfi(`ja diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm_bitem.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm_bitem.png index 192c589f26c1d67a16e0ee1076fdba92eece8b80..27655f277139384da3e1c9733e3d5de093efdf91 100644 GIT binary patch literal 4537 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 BFt7js delta 361 zcmV-v0ha!`BZC8wBYy!(Nkl<Zc${Nk7zKEMmU-O&0W(9(JnsL&<JbRF;s|2QV8o`0 zTnmW-*G?`%v6BVe@<Ti3(9(VeI}e8c$c|t^S8)6BcZP<FESgx}&@l}|48sA);KtP> z7-AaQHdw{+0S#>%oN`PgnS{epl<2`30;E`k>_bu=h|>Z1f`5%z$B^v+GoKc+EGGwG zIAGh6cMv*Tjj9%TO}zy-8yTP^!fPiNF|J)$PgRSN!P<rO7zGhVF1U7b5u=hc2h}a- z=V4~}`r@Dfx;WNsC?Uc|bq8oGb7K|9ng~s`co}xS`$~035Dhxg82&RbFfhm}X#P*i z>H43P)Ae6gL1OcNd}cdIG)y1NTzPqUetCI$eq_6_hCszEL@jyq>Pfixof~IJqLKA7 zFfcGYeE9Gqx?LF6F)~1QJtg4rgX?(h83m(Y6pVsVFtPyvJ_C-rVTCof00000NkvXX Hu0mjf@C2Z| diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarmp.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarmp.png index 793babbbe6af81f08609452ccf43b8bf00dd145f..3da599f9b13ab32457e250961f5dc7a2f7a4bd26 100644 GIT binary patch literal 5349 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 F{s%|;tPTJG delta 1231 zcmV;=1Tg#MDdGu`BYy;`Nkl<Zc%1E9Pe>F|82@cb6k0}f2xMhV`?Dj99f~<5-K3Bp zWKSV%gn5Xt@|Xn?1RV_|JeY`r$7K;jicUokq8Aaz%4%aJ@DQPGVF)oDbf!0N-h1<A zc6NQX`-5S2-n_rR`QG>5_kC}H3M$}2(^IAjb?gW<J!QUnyMJUBGJr7ZC^jN=La{q* z%#6F*+(}fE51O7bUq63V)CSLAgsBn<)pWx0$_A$2eCHPEXgdr5=<eyY(?*5|J)c#@ z9^Q-Tn<rcs4RT=CZ&sSh;1VDM@+${<uL76^9IM~Q%v@Jn<#?9)!m3LFlYpZ~_A)cK zG}Uk`vc9%R7k{V-hc?#qlsPgyh~v@y+ycuh8wEAk-P5boQs`O*L@Pk45sk$|*^{h% zS>h7zAYl8;D76u4Xw;C)8iDQrkjomv`dt!W%#248mow(VWT&X3Jd(I&GKp5Rb75Y3 z@R>xbc`Lt(lPx-OSp&_d&iJ~YY|#O15g;0mivSV<M1PQ(UnGJoSY$<Gar0o^AppR~ zcXPh(RyhDznC#?!RL^}tva1itu08;;#Y*;Wl`914i2(rrL|OKpo*1ypiolcri?Ox& ze*9Qpv(x>Gp;gwe_*)Q2j_)bRgRnp}7B@*{5>z4inF6J@Mm-4#qfuD`G(BY|uRaW; zNiNc34}Tma2$i5;<rM}jYcnXkHgV}OXIeqVP_aR8ue*DC?Thsu0A`ImE*!3LU9(1> z*@n^t@carQ18ecqFJ}7cw@qfc(gesDQgoj6pMRM7K7akqOjnu!z}uWI)Z7*-K@~uL zVRFt}17}G|$I}ne^($kR0;O`wUUw{mN)Z5*pMP7Pi*gCf2vOFdxe6+%pn_6>xh8sP zPF2^^ApLf2g{|EfF95O~H&80X4g7Pa@caqKqx+em`M|b7CedoM9mL-k1`?Mub|3z% zW&msrbk@jY_1mVy0=#{to>_<MfP`%0<e-B(JqrQt<|g}ozwM|aFKHZUddeXMd&n0< zPk-*(8F}6p646-PjK<>Tt^B6_yTEaI!fI!2zCTc#Lr?BH$g&AAX2v5o?mTv6CQVMB z-JR^}L;Iy`b}XP2XlT^Xe(74ExWkP*kHM4xz^x@&wm6OS!~kASje5r5RDrY-l=ZYU zG-_x*bp{{b&6SLVT-FG!EiM7H*z=}An17v-g%|0M-mGHr(=V=nkc4m<lyOR`CIQPU z8#r{J8s|>eN!2AJfR+FXrdMZ*1qSJXS08B|z|#q;NdUl>T%NB{r~_#179Bt@-=eAP zIR!*}0GZAd1AZjHOOHt@LF>NTBtQoL<vxJ5g!|S35{LjW6_Ehf={DH|np^_N^M8VM zwN+?os=-<9fJ|qK4jIxtmT((F37}7izxeJBJu4ys4#+OyKnTInWLF=4tgqqy;*2s9 z;AbD;um*Qa6vfLN7X4>|9wXNwB8#0chjUp2FQ-Pi=Kw|FbJ`(dPk}9mh`&9xb%;vh zXl-b)+7!9rL`P|8hluO2G|7(TOGrCbzt8m_0@5K_s=<@!T$qoLj@f&X<)j@VEcY_$ tD&L7g(;y{4(^~`Sud)w}R8T>g<1c>5J!obXi8=rP002ovPDHLkV1i-TLKy%6 diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarmx.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarmx.png index 0f3e60bc0e83a54ed8996159b86c6caf567dcf7a..d6647e410793ea308a775e63041ecd27ae572341 100644 GIT binary patch literal 5714 zcmeHKdsK{D8-J%MjY&6!q{A4u#N20^i>A^|Q|6!s3F)1gcWP>G%}h1wM7p?>OD-wI z2`Sei6e4m@iBLoxcc;=3%8B~+ObP2dYkkXF-}%q9_Uz|<_HY08vw!>9&-AXC{_7NT ztUVTjAakCtR{-eU^$pVxeCJ7{9)Ye33F1k3JSPYP9sm+$459QG&`{slMkq9d2EL`B z4Ft9xqi^;o6GOim*u#45bYMI7VvK-IK^Z~jpw9x03T#`@=Yb|&*0a`GVCz2^!=Ep( z^vqxSDLnpk9F<5R6KO0kpG>85C=?Ebfg^)&XAa#Npi$XhBhoXOzdR=bEGbe?&*?l* zPn=4vlt^U=1nII8)^mL?xI2_DnCpFTlSPbG)RpPmn|AMBdmQVXYZZ|?>zAp-&q-s= zc`H}_-Vm&66&-!u@W+At<a``vQ6g&+YkaZqif(@_LFmG2xm*&TRuY?7Is?wD9b_t~ zpjKZ^Syyoo%RT&Zid_Om=p)?gI&S57-P*(P9UXB)p3HglqRRp8_eh*L4Y!t7e`Gmx z`93CLdz))i%BIn&9a*}E*=7UX)bnFLuF>3r-6~hxWxR8VN(pj|Ir8xQ0deldz>71y zYaAc%jGohYx_r*TJ3)W$_>{WqbWy>L=xw8Xh1UL7Bi((>5kcrkpM0N{E9lMRTs~b` zyI}N|sfVa`?7`Dhu~+{}?mquUQBn3ZCDYaqswWkFreNPS8C4X^7ms)l(`JluLC+3; zus{wK?##LOAov{yqeKt6C+9yx6Jry1jhjy$Jq26!ZV2{V=g@>e3%k=MNs$WW!GtVV zXy|LFXtaZak;wa6NV_gp8K&&sA${MD-Xc{W&)kFF1WrXK6$EL6_)|F|rJM+hl|qE5 zldJRx2D!NDRIn%#(c*+im{h^VzbPrj<D_CPel~+o=BqrBaH(&c8VQX1RUnFs6tTs4 zH&?8Sjspnfh!)1_<T8bZqvPTYyc}Tb-6TBD0MSNr@j)PuJe6t$M<>#WWP-O&8bigq zVsS2Nv4j)g<<m<6p1AmMtyaY$kz!+GiLo@IQXNL3u-R-9nM$Hk2>?OREL3P=9YLWP zrKjlO@Io{qwN#~*Dit_ACoEJ(Yq@wl7{`5yPp;zg`{)&#UKM~IBps|GQHW%cTu%CS zhDPfh14w!U`o|d>!9o>63P3c<XtfCOjzJXKQQuOCMSb&C(Q27tJ7N(Dks)#b)qqtg z-z}-XaeXuN5`;<RD#I)w_IF6FRPt4<?_$%B7`F3mAYghQ?|0}gdpCdqiqGeGDMiux z@OWNayncO-SSgZ<IR=wKW+4<dolFohMGOL+B4iO@D$F8~X>=-?O%*v)$nZB*JcULJ zD@2H%3Xl_}fQL$>QK(FqMxaSpGy<LJEF`dCXC{G05hFB-Ga{iN$Tt+z)KZX@u<YBY z^i*O%#bnW828~4~AXGA-f<cC`$#e#R4O7G-8l5d<Q<(-Tv54cNRLfy-oKiU)hLBW> zFvEaeaL(lEJT9I}B!Bfxm%&;In83wPl`5ijUk3zIITEOa^=eX>G>Wq`l}cu^nM?+Q z{S`C|QENaZ>NyRy(=ehx77o}95Ej<wDIhTT!Cp9?Y6R9Q)dHnb#>Mwl-M(QyxK3hN z3wyy@1d#UCVZoO=Odzv3<eu>LbbO^)Dp~ly(E7`Ra{+j8<i1i3Sbw3x)pMf)k*J=h zo=2I~aFuX4!=>QBqMj{i;21<~h!b%242i;FMHm9AM{l}*@k{?96(kf`B4JR-1e!CI zNuY~qbOPI1#3D#2LNcAshMlRRo>b^#*C-|0SXhlr4g)#@tw4GjexY!VhJzaaeJruz zi2f9SU<3+<Kw*3ljM*y~sdvL9ea-l?V;9nYY2so4d{bn=ydEDYUZ56|`ifz%W+2{w z^V544|K<`n+|NaRNZ+4w{gms66!;<V&+Pgs*AFT1L*Sp;^?#EK`}K7SQGow~V!_MO zlLJHUf)}lRLjNgVP$yImmFIT&DS@ZI%6E<ig3N664Fzq>vI9<2EsyVQ`qIp@zZI#y zpkEpUnY`h7O%~|tn&-~<b(n3(-5C79Du*9A8RIA05aA=Xp0Z{7)l6A&$H3ogopWz_ zCwuqLd7kEYJUkmt&4$;^nbEq-5^qxL6Y#f{aczv}eY+F4=tms`<_1P(`c*U3oku2J zXllCA^r^V;qUF+z+DV$QmJCg4XMJ0}$;9x43S7zi0|~Q?v%~KeMOI!*N+oo+MtN>M z^0xD^z=x8kG)X=7oEx7NHNWBAyye>_9=C=ZosOcRwS#GSAH2uJw1lurJ?5M-yK^@> zRQNDC$;1A-e`9**GE2`5@1G67v6pHA9d947rn13rW=QoLE-kX-kG8b^tJO)=oBmk4 zh_2er;k9+E!X>MXj@9qE+_v#b>7?Bzm9rNl7nS(3$UbuhLv=0q<6*`8e7BHTBg|$| zV&Usi^V>VaoEsd1(htN7@02C%C@Q(q^gHIn(HEb%B`Y>nx~{ZZR=Adx6>W?ei1STy z95*@L1~^J)MLA>_y1hR1<YsebxGch-_2SJQS>59$xQCcB^L`=Z);!CU@RC&zUzg_Q zqvHN-V1`sMCZD9-4^4hxmL6Xp9&RUa9nw%L^N&B=a@g^J=gZWZ0(Tx8O-gcQ+AV0h z{vh4R{lWaFUG;Ea=f|soxCr+K=31^o7V)Hbi5<&gpXrtv1590@#2Ut+!t?tk9ImRV zbz0~-`*CP>a{1qRL62t&FTZWqTrNvn|Jnh%ba~3^42u!h;w@blOt`ntPS>c48~y6? z@U~%@E6;kEnO@4>xbMawPl1WYvk)c}N)Gj`dT|M{%~uCR*pq&ne0NFFvG%+V!#u`K zoV{!`1UMR2B_!Z%MUYFLLwfMvW=q1QvtN*o-5JRqfW16p<mWwSi?T>n{<CSXvs2Pf zX*$P#q7B=dnzx28UrN70=dY8W?tU0{b<K#Nbdzy51pgFb0j*%gt;oFr)dQX1ejbsN z6~~lz#>g^Sjr$)Z6b?NX9HJ<CSw3cpMb3u(%l(jX&0{%OK^1%Jqx*h!PA?sxYkOYR z6<b`Vx!Wc-9xhlPPtJ6jP}o>jvuNJQy0il7u$v2tQSPVcpQnj!pmTl?XB~^ZxaiYg zsA5z@vZdRrxWZq`AOD%ZTy{tl7B;u0t0KmBeMR&Dg6rO~{_>|KrCm)$_E15>?JIZg zi1)9_+F>?hXrnRh{KAaa=o?2;ZALcL?r6?<Hg(HJ|1q2G2eoH@%$mq0MR&K5cN{uB zkdRhszaqryzBc0y{Zmlaq8g9<kx)2ek>I2XpK^1T*WeF~<g7Ep%Snw}g5s^q+iLDP zWV=n9&&!*35EFrcg4>LF=d0$uWo-A%z8PX_{k&s4dR51zZsP%`=j|3nH<zZwR+l9u z1lupp?-nMNT~IWg3i8TW+`;<z7D=D9x!8yIZfL<WR{1u@!J&>d(8ZKXk5V3Y@UY{p zj};w4*D&4}m~FvgrGk5R{5R8DFL~FAZ|4n<TxpzYIq>?U(c^hfhCj@-KmRr$=){Pl zCNiFTPDOvGO=rxoQU`*h^})vM(HL+=gKF<J?|ueya<$uzcANFDZW|@8`w&o{7@1|X zF7f{Ey&uEoS`imoKmS~9k?7EToSNOVjG}P9mWIxnnOrjIm%G*GUgvNTL(ieFYR6nv zjley#5qyLOO}(9Yvyz(J6_=1`>s!`1Yg%1JD-kyYz4bga%3gWW=IP-<<c+A!A5apS z`%BgB7PM`Ih1V#wW20}V?R#^yyNo*n;ZK{`<#v0`QVlof=@k@68P?)gONsp)?bNp~ zKrt|W@yJy28P_vMQ+NJ>T06t_9A;-I25Kt1m|bap>5VtCrXw0i6tvYc$jPFLKFs!J z$xxkj!Jqd&*S<O;2$*@&r~<Rz=LBxI_N)c&nO3)O{Ob6?QCscWa~w=kWK~Yfb6bp> zu1)AtnwuxPpId4=zGajD@uP^E?RBcWI@rXT?}~G<`@JK)u+Cx9%!8{Vbx`Z8UG1k# zhJZpU#5;DUZ3wo>mD+gS-&5$(Rw)Y=z6-uKWEE<|+0%`4ciPn!a^tTzFMh?pmZjKV S^BMdaKs@hXy$*SVCjAGhZfu_b delta 1581 zcmV+|2GaS`EWHenBYy@2Nkl<Zc%1E9TSy#N82&a5X-nFsq<s*=iZ*H06&WO3mr&_L zL2MQwh<OvXxKW2}Ft|vmNra?m5`72;f`&24io!lFzAW2{P-qdt+Vx=&H)<{xMexDc zrdE<Jl<C7d<6O>}nY}npa6edPch1bYeCI#^IsavW0t%qQ<$v)BcBo@t;PUu{Umrga zav4BA>ey>I)Hn9Jv&s0lrp^7tVfhc2$0z*u^TR!D@au0O*olP0>Kjj2U*kr1fcnCX z{$T*Xg|-gq-lGTi41e1dhiC;Sir&R!EQrZi5I18Bn2ZHA&&UTReka|tGc*z)$7zlQ z01U?&Btk5%p?_RaE}vx*jLPi*ssw~W0nD--I2H(mc(}o7o-s4Sc9#Mw0ST~3fQ1_z z+~82}9n`HzoNYZ_U>5!Dux#5@Xk(YhCp>y^53%V@>I>f5<2f~Wp{>JkE1alegvL4E zlAS`M1H{3{E`6bS*gLeOOHRJwEUCzgB&`1Ngi5A@fPbBt5t_dHky=?~?0Qa}$@C0R zT<XHgax$wc0IV!0b?etiKr%k=`2Okuk@;gEyd#lBsV^^L+c?KNCaM_W@>U9El^(1t zCvmFWozb<d(gR?Zfc|y}-6Pum5x2pjPmd5gR(bNMkysMT^hA(`#yQ^MEU6GaI`%OD z;MqdL)PMEPtuEkJ*KS3<ol?KLN3`Q2c5LI%6m^i*)r@H|Y-$c75+2No03bUZFcO|d zPi>Lre&6&u&VKcYISF|9!x40kz~L;Z5b7FQ002|bQG9dO2LPtU@b6cD0mxpf>kvm> zg7eR}iDl~>DdG!60_1CDaXv2HH!FtXReV=m(|=}2$k7@VUj6eQvEaqp8@N0^jUlFc z6b6)9RQ#Ul)ht{dpY9HnD|YHukf2LIwre*R<a*GGO>e?Gv_!2tGN!yoJqqU=i)Z+Z z-%%g0FSK<?A5u90%tU)I6YW87;3awkFL5q#9_Iq*F%#_}wqY3oq&?UOG{1t8fi)Qm zYJY4Q8Vq&7e!`3)MS3Oy7Q=o9yobkWuwdd0*4D}ITP6Y7!f3Wh<!*2Ygm}!d9A;Vi z>;pEJ06;mz@-;6GoFoDD-a%YLIqH!%;c2rE<mv35FIeN0ZB-a#wjuyHcy4(r4oYA~ z7Y8~tS3m&;6kr92d!mu%wCi4)O}{lqVSn*7_H^|%v67v*fUQE@z^*fe=1=(C`93i; zpEp}zqKc8&Up&KSW&UP@{&onh11bET+`{@s3NO~)07y>|$@UM2M~U@l5+t(ejK<$L zmrX61p?d_5)&U4=53qM=2{&U4aD#*2pU!1iTmM%oSNjDI$qVk^y&^qG^S;R8EPtsG zoFx^)<*k(TJzoQ)L2SoNTfB!yD5OmGxPSMGVxlDilJRlJ#m?J`hvg<G%`R_h4x+B1 zMG8e(f#OmZM0Y(2Zg5C|C6-<6ybYoR09q|cvc=Viga<Jd9nIJSYz3G&qanhy5;U9G zP+aQ5sd6`-EhH=>VP!d)ZYv%3(tn`dI|z4-Ln4&+35t#p5~u{I#h$hdq|R6fk#ry( z@|u6X4Rt_7?G>UycN;Y0l-y4VsQzgjKstUQKL>bghfUX|OMqGeR1oByu@VH*v)+A7 z>j0Wg*jF7u0ZDRczD8XgpoZOa0F89@_N}*+4VQr48Nf_u_5ztmfRP?ErGEs)>)R#) zX7F~O11KPE;Th`y6L0_!Y$5@g#4WQ4np6Tv8RIn#eE`yl2L4NZLgmS$_|o+ux~|@_ zl>`8WTet*W2@u1~@>E%M0_Ei9Hh$STkXVIGb%5S-)+Im;GbchU+%XO{4dmzQ8d|V8 zAGeJJWO5ErSc7VZh#MSuPk-i_9eWMY9ByjX{)Yk3|IdPYj8un+9D4RO0L#tcmE|O+ zqN9j}$%c+z_+0G}k(NN(A)?fze*Z8KXE1BfAuE%q#J2R(?(|Y=)D96%vb3BX(U&Hg zmNkHsf%Vym_oS3sS{`mb(cccC>@g$#&NiLiv_nMvbCepf=}kn&t|nU^8%PtJe|>b| f10w|#aKQ0D-kGr<b2!L200000NkvXXu0mjf(WT=o diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/meta.json b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/meta.json index 62e0a281bf0..7d2da746e02 100644 --- a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/meta.json +++ b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/meta.json @@ -4,7 +4,7 @@ "x": 32, "y": 32 }, - "copyright": "Taken from tgstation", + "copyright": "Taken from tgstation, modified for SS14", "license": "CC-BY-SA-3.0", "states": [ { From 79ff990ddf7c7af40f70bcc7ba2d3220730852ab Mon Sep 17 00:00:00 2001 From: faint <46868845+ficcialfaint@users.noreply.github.com> Date: Mon, 18 Nov 2024 21:57:50 +0300 Subject: [PATCH 140/187] Replace direct uses of GameTicker dictionary with `TryGetValue` (#33222) Fix station events schedulers, antag selection and possibly other systems acting weird in a rare scenario --- Content.Server/Antag/AntagSelectionSystem.cs | 2 +- Content.Server/GameTicking/GameTicker.Lobby.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Server/Antag/AntagSelectionSystem.cs b/Content.Server/Antag/AntagSelectionSystem.cs index 610c0ad182a..45daa7a312f 100644 --- a/Content.Server/Antag/AntagSelectionSystem.cs +++ b/Content.Server/Antag/AntagSelectionSystem.cs @@ -184,7 +184,7 @@ protected override void Started(EntityUid uid, AntagSelectionComponent component return; var players = _playerManager.Sessions - .Where(x => GameTicker.PlayerGameStatuses[x.UserId] == PlayerGameStatus.JoinedGame) + .Where(x => GameTicker.PlayerGameStatuses.TryGetValue(x.UserId, out var status) && status == PlayerGameStatus.JoinedGame) .ToList(); ChooseAntags((uid, component), players, midround: true); diff --git a/Content.Server/GameTicking/GameTicker.Lobby.cs b/Content.Server/GameTicking/GameTicker.Lobby.cs index 61d9fd99cae..9a9eb61b673 100644 --- a/Content.Server/GameTicking/GameTicker.Lobby.cs +++ b/Content.Server/GameTicking/GameTicker.Lobby.cs @@ -184,6 +184,6 @@ public bool UserHasJoinedGame(ICommonSession session) => UserHasJoinedGame(session.UserId); public bool UserHasJoinedGame(NetUserId userId) - => PlayerGameStatuses[userId] == PlayerGameStatus.JoinedGame; + => PlayerGameStatuses.TryGetValue(userId, out var status) && status == PlayerGameStatus.JoinedGame; } } From 96d2fe477da4ef2c138fd569f51a08657339af6c Mon Sep 17 00:00:00 2001 From: Spanky <scott@wearejacob.com> Date: Mon, 18 Nov 2024 17:37:34 -0500 Subject: [PATCH 141/187] Service Worker Job Icon Change (#33361) * Changes the Server Worker job icon to a bowtie. * Removes grey from icon to better fit existing art. * Updated ID card sprite. * Edit respective meta.json files. --- .../Misc/job_icons.rsi/ServiceWorker.png | Bin 189 -> 209 bytes .../Interface/Misc/job_icons.rsi/meta.json | 2 +- .../Misc/id_cards.rsi/idintern-service.png | Bin 199 -> 200 bytes .../Objects/Misc/id_cards.rsi/meta.json | 2 +- 4 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Textures/Interface/Misc/job_icons.rsi/ServiceWorker.png b/Resources/Textures/Interface/Misc/job_icons.rsi/ServiceWorker.png index 6dece6fb58c39b84f9eee4c37980855fcd9dcc3c..205002b98f65b2769dcd8f149c8ceec7a66c59ce 100644 GIT binary patch delta 168 zcmdnXc#&~}VZCL5Plzi614GSr*ZFTF{{R0EWCIyMwCB~NRqt{R{_Q&Xf9He$*SEcG zy6|?(-M8m<zwP<{{rm0Pw?BRQbn^-)Gf;zYNswPKQ15?+JY5h414eQFw}8^>o-U3d z95a&>5?PqV*xb|%5>gUU($bQW(%2LY8$^V)nAKQ=c`oxY2zf9x-tkxd4%EZo>FVdQ I&MBb@09aH}Gynhq delta 148 zcmcb}xR-H)VLeN_qpu?a!^VE@KZ&di3=I4MJ|V6^x@NoU{I?PR|NjTFd%6E80V&p! zAirRs$bW|4+xUWk0-OaNk;M!Qe1}1p@p%4<6riA*r;B5VM0j#SA`7z^o10piLPAnX r0?Q;HpEC(;91FS@7%JS7jARh@VrVzc+Qa(`sD;7P)z4*}Q$iB};QcOg diff --git a/Resources/Textures/Interface/Misc/job_icons.rsi/meta.json b/Resources/Textures/Interface/Misc/job_icons.rsi/meta.json index 1f76743a9d5..da01eb11e86 100644 --- a/Resources/Textures/Interface/Misc/job_icons.rsi/meta.json +++ b/Resources/Textures/Interface/Misc/job_icons.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/blob/e71d6c4fba5a51f99b81c295dcaec4fc2f58fb19/icons/mob/screen1.dmi | Brigmedic icon made by PuroSlavKing (Github) | Zombie icon made by RamZ | Zookeper by netwy (discort) | Rev and Head Rev icon taken from https://tgstation13.org/wiki/HUD and edited by coolmankid12345 (Discord) | Mindshield icon taken from https://github.com/tgstation/tgstation/blob/ce6beb8a4d61235d9a597a7126c407160ed674ea/icons/mob/huds/hud.dmi | Admin recolored from MedicalIntern by TsjipTsjip | StationAi resprite to 8x8 size by lunarcomets", + "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/blob/e71d6c4fba5a51f99b81c295dcaec4fc2f58fb19/icons/mob/screen1.dmi | Brigmedic icon made by PuroSlavKing (Github) | Zombie icon made by RamZ | Zookeper by netwy (discort) | Rev and Head Rev icon taken from https://tgstation13.org/wiki/HUD and edited by coolmankid12345 (Discord) | Mindshield icon taken from https://github.com/tgstation/tgstation/blob/ce6beb8a4d61235d9a597a7126c407160ed674ea/icons/mob/huds/hud.dmi | Admin recolored from MedicalIntern by TsjipTsjip | StationAi resprite to 8x8 size by lunarcomets | Service Worker resprite by anno_midi (Discord) and spanky-spanky (Github)", "size": { "x": 8, diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/idintern-service.png b/Resources/Textures/Objects/Misc/id_cards.rsi/idintern-service.png index 5fc1f43c05b745a8005c63e4da5c4d8f3da32340..72d4cd44d38761f4414c5a9366faa80455fd1445 100644 GIT binary patch delta 159 zcmV;Q0AT;e0muQ6F@J(dL_t(og=1hC1*2dTjDnF47>QNrHkaW)y4bE{;`LMH0Jpge z|An+M#ot|}jw6V201QN&K(Mie3aNmJ6vdGz85x$F|7VCiNj*=K<N#U#k{kf@{c>}P zLmm!Th*gLj?9_~c0ndh`fTDs3A0W1nq9_gE1Ec9<6pVsVFc=Dm1pq5nG$|oF+T#EK N002ovPDHLkV1k>AL2Up4 delta 158 zcmV;P0Ac^g0mlK5F@J$cL_t(og=1hC1*2dTjDnF47>QNrHkaW)y4bE{;`LJm+~zX; zk2t~b9~nfPVEB*CQKSMEVihho|IZM4k`aaPewFe7Ald;iOQ{V=asYY=Py;Yg#gw7! zfT58MhczH72;Jr~{1?(D&ER)eiHjnN(f~d%nm$IsC>RB!fEQQ*0MpYf;+^p!pa1{> M07*qoM6N<$f<jb6H~;_u diff --git a/Resources/Textures/Objects/Misc/id_cards.rsi/meta.json b/Resources/Textures/Objects/Misc/id_cards.rsi/meta.json index 93e8fbe1f3c..a87925420ad 100644 --- a/Resources/Textures/Objects/Misc/id_cards.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/id_cards.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/d917f4c2a088419d5c3aec7656b7ff8cebd1822e idcluwne made by brainfood1183 (github) for ss14, idbrigmedic made by PuroSlavKing (Github), pirate made by brainfood1183 (github), idadmin made by Arimah (github), idvisitor by IProduceWidgets (Github)", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/d917f4c2a088419d5c3aec7656b7ff8cebd1822e idcluwne made by brainfood1183 (github) for ss14, idbrigmedic made by PuroSlavKing (Github), pirate made by brainfood1183 (github), idadmin made by Arimah (github), idvisitor by IProduceWidgets (Github), idintern-service by spanky-spanky (Github)", "size": { "x": 32, "y": 32 From 68eaf6ff254e49789696f5a79691c119e26cbb18 Mon Sep 17 00:00:00 2001 From: Saphire <lattice@saphi.re> Date: Tue, 19 Nov 2024 08:11:10 +0600 Subject: [PATCH 142/187] Bump the failsafe timer down --- .../Singularity/Components/SingularityGeneratorComponent.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Server/Singularity/Components/SingularityGeneratorComponent.cs b/Content.Server/Singularity/Components/SingularityGeneratorComponent.cs index 8b9b4e74466..c8feeb5d5db 100644 --- a/Content.Server/Singularity/Components/SingularityGeneratorComponent.cs +++ b/Content.Server/Singularity/Components/SingularityGeneratorComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; using Content.Server.Singularity.EntitySystems; @@ -59,7 +59,7 @@ public sealed partial class SingularityGeneratorComponent : Component /// For how long the failsafe will cause the generator to stop working and not issue a failsafe warning /// </summary> [DataField] - public TimeSpan FailsafeCooldown = TimeSpan.FromSeconds(30); + public TimeSpan FailsafeCooldown = TimeSpan.FromSeconds(10); /// <summary> /// How long until the generator can issue a failsafe warning again From dffece473ad83cdc5acdcf82d6c2381b34d929f5 Mon Sep 17 00:00:00 2001 From: Spessmann <156740760+Spessmann@users.noreply.github.com> Date: Mon, 18 Nov 2024 18:17:57 -0800 Subject: [PATCH 143/187] Cog update (#33410) removed fun --- Resources/Maps/cog.yml | 471 +++++++++++++++++------------------------ 1 file changed, 191 insertions(+), 280 deletions(-) diff --git a/Resources/Maps/cog.yml b/Resources/Maps/cog.yml index 833756d3372..d770924a72f 100644 --- a/Resources/Maps/cog.yml +++ b/Resources/Maps/cog.yml @@ -8795,6 +8795,19 @@ entities: 9036: 11,-17 9037: 11,-16 9038: 11,-15 + 10175: -1,43 + 10176: -1,44 + 10177: -1,45 + 10178: -14,27 + 10179: -14,28 + 10190: 14,-28 + 10191: 14,-27 + 10192: 28,-28 + 10193: 28,-27 + 10198: 47,-29 + 10199: 47,-28 + 10216: 35,11 + 10217: 35,12 - node: color: '#FFFFFFFF' id: WarnLineN @@ -8858,12 +8871,23 @@ entities: 9002: 10,-12 9003: 9,-12 9545: 34,4 + 10164: 34,38 + 10165: 35,38 - node: zIndex: 1 color: '#FFFFFFFF' id: WarnLineN decals: 9035: 8,-15 + 10170: 50,50 + 10171: 51,50 + 10182: -18,30 + 10183: -17,30 + 10184: -16,30 + 10206: 30,-43 + 10207: 31,-43 + 10208: 12,-43 + 10209: 13,-43 - node: zIndex: 2 color: '#FFFFFFFF' @@ -8946,6 +8970,23 @@ entities: 8717: -33,68 9032: 9,-17 9033: 9,-16 + 10172: -1,43 + 10173: -1,44 + 10174: -1,45 + 10180: -14,27 + 10181: -14,28 + 10188: 14,-28 + 10189: 14,-27 + 10194: 28,-28 + 10195: 28,-27 + 10196: 47,-29 + 10197: 47,-28 + 10202: 55,-22 + 10203: 55,-21 + 10204: 55,-20 + 10205: 55,-19 + 10214: 35,11 + 10215: 35,12 - node: color: '#FFFFFFFF' id: WarnLineW @@ -8988,6 +9029,22 @@ entities: 8310: 19,4 8311: 20,4 9544: 34,0 + 10166: 34,38 + 10167: 35,38 + - node: + zIndex: 1 + color: '#FFFFFFFF' + id: WarnLineW + decals: + 10168: 51,50 + 10169: 50,50 + 10185: -18,30 + 10186: -17,30 + 10187: -16,30 + 10210: 12,-43 + 10211: 13,-43 + 10212: 30,-43 + 10213: 31,-43 - node: color: '#FFFFFFFF' id: WoodTrimThinCornerNe @@ -15466,7 +15523,7 @@ entities: pos: 28.5,17.5 parent: 12 - type: DeviceLinkSink - invokeCounter: 4 + invokeCounter: 5 - type: DeviceLinkSource linkedPorts: 27864: @@ -15501,12 +15558,17 @@ entities: rot: -1.5707963267948966 rad pos: 26.5,17.5 parent: 12 + - type: Door + secondsUntilStateChange: -1165.2125 + state: Opening - type: DeviceLinkSink invokeCounter: 1 - type: DeviceLinkSource linkedPorts: 11947: - DoorStatus: DoorBolt + lastSignals: + DoorStatus: True - uid: 28369 components: - type: Transform @@ -153521,8 +153583,104 @@ entities: - type: Transform pos: -35.5364,-21.362114 parent: 12 +- proto: PoweredDimSmallLight + entities: + - uid: 2424 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -24.5,-16.5 + parent: 12 + - uid: 2855 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 5.5,-47.5 + parent: 12 + - uid: 4980 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 43.5,62.5 + parent: 12 + - uid: 5881 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 39.5,-23.5 + parent: 12 + - uid: 8827 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 51.5,24.5 + parent: 12 + - uid: 12078 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -58.5,-24.5 + parent: 12 + - uid: 12163 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 28.5,23.5 + parent: 12 + - uid: 12922 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -53.5,61.5 + parent: 12 + - uid: 12923 + components: + - type: Transform + pos: -28.5,75.5 + parent: 12 + - uid: 12925 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 38.5,6.5 + parent: 12 + - uid: 12944 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 32.5,16.5 + parent: 12 + - uid: 14912 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -30.5,-59.5 + parent: 12 + - uid: 16796 + components: + - type: Transform + pos: -13.5,-68.5 + parent: 12 + - uid: 16843 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 44.5,-15.5 + parent: 12 + - uid: 21083 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -53.5,57.5 + parent: 12 - proto: Poweredlight entities: + - uid: 17 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 40.5,-30.5 + parent: 12 - uid: 111 components: - type: Transform @@ -153657,6 +153815,11 @@ entities: rot: 1.5707963267948966 rad pos: -33.5,-23.5 parent: 12 + - uid: 2264 + components: + - type: Transform + pos: 54.5,58.5 + parent: 12 - uid: 2326 components: - type: Transform @@ -154206,16 +154369,11 @@ entities: rot: 1.5707963267948966 rad pos: 46.5,-24.5 parent: 12 - - uid: 8824 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 43.5,-32.5 - parent: 12 - uid: 8828 components: - type: Transform - pos: 45.5,-26.5 + rot: -1.5707963267948966 rad + pos: 46.5,-30.5 parent: 12 - uid: 8830 components: @@ -155081,11 +155239,6 @@ entities: rot: 1.5707963267948966 rad pos: 50.5,51.5 parent: 12 - - uid: 16843 - components: - - type: Transform - pos: 54.5,58.5 - parent: 12 - uid: 16845 components: - type: Transform @@ -155629,12 +155782,6 @@ entities: rot: -1.5707963267948966 rad pos: -3.5,74.5 parent: 12 - - uid: 26943 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 33.5,-43.5 - parent: 12 - uid: 26976 components: - type: Transform @@ -155707,12 +155854,6 @@ entities: - type: Transform pos: -10.5,78.5 parent: 12 - - uid: 30502 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 56.5,60.5 - parent: 12 - uid: 31027 components: - type: Transform @@ -155747,18 +155888,6 @@ entities: - type: Transform pos: 24.5,-34.5 parent: 12 - - uid: 31706 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -62.5,-28.5 - parent: 12 - - uid: 31707 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -62.5,-20.5 - parent: 12 - uid: 31739 components: - type: Transform @@ -155865,12 +155994,6 @@ entities: parent: 12 - proto: PoweredSmallLight entities: - - uid: 17 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -3.5,67.5 - parent: 12 - uid: 26 components: - type: Transform @@ -155912,17 +156035,11 @@ entities: rot: -1.5707963267948966 rad pos: 25.5,-6.5 parent: 12 - - uid: 2264 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 36.5,61.5 - parent: 12 - uid: 2265 components: - type: Transform rot: 1.5707963267948966 rad - pos: -2.5,54.5 + pos: 45.5,-39.5 parent: 12 - uid: 2291 components: @@ -155930,18 +156047,6 @@ entities: rot: -1.5707963267948966 rad pos: 62.5,11.5 parent: 12 - - uid: 2424 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -57.5,-15.5 - parent: 12 - - uid: 2855 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -21.5,-17.5 - parent: 12 - uid: 3471 components: - type: Transform @@ -155978,12 +156083,6 @@ entities: rot: -1.5707963267948966 rad pos: 25.5,-0.5 parent: 12 - - uid: 4980 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 46.5,-40.5 - parent: 12 - uid: 5045 components: - type: Transform @@ -156044,12 +156143,6 @@ entities: rot: -1.5707963267948966 rad pos: 25.5,-10.5 parent: 12 - - uid: 5881 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -28.5,-15.5 - parent: 12 - uid: 6183 components: - type: Transform @@ -156059,7 +156152,8 @@ entities: - uid: 6759 components: - type: Transform - pos: 5.5,-47.5 + rot: -1.5707963267948966 rad + pos: 35.5,29.5 parent: 12 - uid: 6834 components: @@ -156088,7 +156182,7 @@ entities: - uid: 7431 components: - type: Transform - pos: 39.5,63.5 + pos: 50.5,19.5 parent: 12 - uid: 8809 components: @@ -156102,23 +156196,23 @@ entities: rot: 1.5707963267948966 rad pos: 51.5,-32.5 parent: 12 - - uid: 8825 + - uid: 8824 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 49.5,-8.5 + rot: 1.5707963267948966 rad + pos: 37.5,19.5 parent: 12 - - uid: 8827 + - uid: 8825 components: - type: Transform - rot: 3.141592653589793 rad - pos: 39.5,-23.5 + rot: -1.5707963267948966 rad + pos: 49.5,-8.5 parent: 12 - uid: 8829 components: - type: Transform rot: 1.5707963267948966 rad - pos: 37.5,-18.5 + pos: 33.5,36.5 parent: 12 - uid: 8838 components: @@ -156157,8 +156251,8 @@ entities: - uid: 8850 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 6.5,-7.5 + rot: 3.141592653589793 rad + pos: 49.5,62.5 parent: 12 - uid: 8925 components: @@ -156191,7 +156285,7 @@ entities: - uid: 9139 components: - type: Transform - pos: 46.5,-38.5 + pos: -50.5,-42.5 parent: 12 - uid: 9231 components: @@ -156230,7 +156324,8 @@ entities: - uid: 9473 components: - type: Transform - pos: 2.5,68.5 + rot: 1.5707963267948966 rad + pos: 55.5,-7.5 parent: 12 - uid: 9540 components: @@ -156247,7 +156342,8 @@ entities: - uid: 9907 components: - type: Transform - pos: -50.5,-42.5 + rot: 3.141592653589793 rad + pos: 9.5,65.5 parent: 12 - uid: 10403 components: @@ -156287,78 +156383,38 @@ entities: - uid: 12005 components: - type: Transform - pos: 40.5,25.5 - parent: 12 - - uid: 12078 - components: - - type: Transform - pos: 50.5,20.5 - parent: 12 - - uid: 12163 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -14.5,-71.5 + rot: 1.5707963267948966 rad + pos: -19.5,52.5 parent: 12 - uid: 12291 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 37.5,16.5 + rot: -1.5707963267948966 rad + pos: -52.5,-14.5 parent: 12 - uid: 12710 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 38.5,9.5 + rot: 1.5707963267948966 rad + pos: -50.5,-13.5 parent: 12 - uid: 12711 components: - type: Transform pos: 38.5,-4.5 parent: 12 - - uid: 12922 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 51.5,24.5 - parent: 12 - - uid: 12923 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 34.5,27.5 - parent: 12 - - uid: 12925 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 34.5,34.5 - parent: 12 - uid: 12928 components: - type: Transform rot: -1.5707963267948966 rad pos: 24.5,27.5 parent: 12 - - uid: 12944 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 28.5,23.5 - parent: 12 - uid: 14911 components: - type: Transform rot: 3.141592653589793 rad pos: 34.5,65.5 parent: 12 - - uid: 14912 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 43.5,62.5 - parent: 12 - uid: 14938 components: - type: Transform @@ -156399,12 +156455,6 @@ entities: rot: 3.141592653589793 rad pos: -10.5,23.5 parent: 12 - - uid: 16796 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 48.5,65.5 - parent: 12 - uid: 16887 components: - type: Transform @@ -156509,12 +156559,6 @@ entities: rot: 1.5707963267948966 rad pos: -22.5,32.5 parent: 12 - - uid: 21083 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -60.5,-14.5 - parent: 12 - uid: 21274 components: - type: Transform @@ -156565,13 +156609,7 @@ entities: components: - type: Transform rot: 1.5707963267948966 rad - pos: 55.5,-7.5 - parent: 12 - - uid: 22296 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 41.5,11.5 + pos: -60.5,-14.5 parent: 12 - uid: 22336 components: @@ -156579,24 +156617,6 @@ entities: rot: 3.141592653589793 rad pos: 36.5,-32.5 parent: 12 - - uid: 22709 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 9.5,65.5 - parent: 12 - - uid: 22714 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -20.5,62.5 - parent: 12 - - uid: 22715 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -19.5,52.5 - parent: 12 - uid: 22716 components: - type: Transform @@ -156619,12 +156639,6 @@ entities: - type: Transform pos: 40.5,49.5 parent: 12 - - uid: 24497 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 48.5,62.5 - parent: 12 - uid: 25090 components: - type: Transform @@ -156647,12 +156661,6 @@ entities: rot: 1.5707963267948966 rad pos: -52.5,47.5 parent: 12 - - uid: 25586 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -58.5,-24.5 - parent: 12 - uid: 26109 components: - type: Transform @@ -156686,18 +156694,6 @@ entities: rot: 1.5707963267948966 rad pos: 7.5,-3.5 parent: 12 - - uid: 27019 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -57.5,-35.5 - parent: 12 - - uid: 27059 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 10.5,-53.5 - parent: 12 - uid: 27067 components: - type: Transform @@ -156734,23 +156730,6 @@ entities: rot: 1.5707963267948966 rad pos: -39.5,-50.5 parent: 12 - - uid: 28074 - components: - - type: Transform - pos: 33.5,25.5 - parent: 12 - - uid: 28182 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -52.5,-13.5 - parent: 12 - - uid: 28279 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -50.5,-13.5 - parent: 12 - uid: 28298 components: - type: Transform @@ -156763,22 +156742,6 @@ entities: rot: -1.5707963267948966 rad pos: 5.5,-4.5 parent: 12 - - uid: 28523 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 42.5,-7.5 - parent: 12 - - uid: 28531 - components: - - type: Transform - pos: -6.5,7.5 - parent: 12 - - uid: 28655 - components: - - type: Transform - pos: -0.5,-22.5 - parent: 12 - uid: 28745 components: - type: Transform @@ -156795,24 +156758,12 @@ entities: rot: -1.5707963267948966 rad pos: -22.5,64.5 parent: 12 - - uid: 29626 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -53.5,61.5 - parent: 12 - uid: 29643 components: - type: Transform rot: 1.5707963267948966 rad pos: -51.5,65.5 parent: 12 - - uid: 29656 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -17.5,72.5 - parent: 12 - uid: 29836 components: - type: Transform @@ -156830,11 +156781,6 @@ entities: rot: 3.141592653589793 rad pos: -30.5,-39.5 parent: 12 - - uid: 30133 - components: - - type: Transform - pos: -28.5,75.5 - parent: 12 - uid: 30269 components: - type: Transform @@ -156846,40 +156792,17 @@ entities: rot: 3.141592653589793 rad pos: -6.5,71.5 parent: 12 - - uid: 30455 - components: - - type: Transform - pos: 43.5,8.5 - parent: 12 - - uid: 30456 - components: - - type: Transform - 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 - rot: 3.141592653589793 rad - pos: -30.5,-59.5 - parent: 12 - uid: 31185 components: - type: Transform pos: 5.5,-59.5 parent: 12 - - uid: 31354 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -11.5,-70.5 - parent: 12 - uid: 31508 components: - type: Transform @@ -156892,20 +156815,8 @@ entities: rot: -1.5707963267948966 rad pos: -11.5,-13.5 parent: 12 - - uid: 32073 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 44.5,-15.5 - parent: 12 - proto: PoweredSmallLightEmpty entities: - - uid: 28973 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -53.5,57.5 - parent: 12 - uid: 31337 components: - type: Transform From 909235cdbe474a00265d8b7a9f6955591cfaa423 Mon Sep 17 00:00:00 2001 From: Ilya246 <57039557+Ilya246@users.noreply.github.com> Date: Tue, 19 Nov 2024 06:59:42 +0400 Subject: [PATCH 144/187] fix viewing nav slowing shuttle down (#32381) fix --- .../Physics/Controllers/MoverController.cs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/Content.Server/Physics/Controllers/MoverController.cs b/Content.Server/Physics/Controllers/MoverController.cs index f927e717a9d..d0605e916e7 100644 --- a/Content.Server/Physics/Controllers/MoverController.cs +++ b/Content.Server/Physics/Controllers/MoverController.cs @@ -314,6 +314,9 @@ private void HandleShuttleMovement(float frameTime) var linearInput = Vector2.Zero; var brakeInput = 0f; var angularInput = 0f; + var linearCount = 0; + var brakeCount = 0; + var angularCount = 0; foreach (var (pilotUid, pilot, _, consoleXform) in pilots) { @@ -322,24 +325,27 @@ private void HandleShuttleMovement(float frameTime) if (brakes > 0f) { brakeInput += brakes; + brakeCount++; } if (strafe.Length() > 0f) { var offsetRotation = consoleXform.LocalRotation; linearInput += offsetRotation.RotateVec(strafe); + linearCount++; } if (rotation != 0f) { angularInput += rotation; + angularCount++; } } - var count = pilots.Count; - linearInput /= count; - angularInput /= count; - brakeInput /= count; + // Don't slow down the shuttle if there's someone just looking at the console + linearInput /= Math.Max(1, linearCount); + angularInput /= Math.Max(1, angularCount); + brakeInput /= Math.Max(1, brakeCount); // Handle shuttle movement if (brakeInput > 0f) From 10ee37a47c8bced95ae1e0f0860c815df703b28e Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Tue, 19 Nov 2024 03:00:50 +0000 Subject: [PATCH 145/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index c70024b7115..1cf40ba7787 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Psychpsyo - changes: - - message: You can now be German on ze space station! (added German accent) - type: Add - id: 7121 - time: '2024-08-15T23:30:21.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30541 - author: EmoGarbage404 changes: - message: Reduced the amount of ore on the mining asteroid and expeditions. @@ -3923,3 +3916,11 @@ id: 7620 time: '2024-11-18T06:32:08.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33383 +- author: Ilya246 + changes: + - message: Multiple people using one shuttle console will no longer cause the shuttle + to slow down. + type: Fix + id: 7621 + time: '2024-11-19T02:59:42.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32381 From 437a586906f6d67b60d018592d62bab5f9608091 Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Tue, 19 Nov 2024 06:07:02 +0100 Subject: [PATCH 146/187] Welded secret doors no longer say they are welded shut. (#33365) Init --- .../Entities/Structures/Doors/SecretDoor/secret_door.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/Entities/Structures/Doors/SecretDoor/secret_door.yml b/Resources/Prototypes/Entities/Structures/Doors/SecretDoor/secret_door.yml index 2f1ad217ceb..14d99f3adf7 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/SecretDoor/secret_door.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/SecretDoor/secret_door.yml @@ -37,6 +37,7 @@ - type: Appearance - type: Weldable time: 2 + weldedExamineMessage: null - type: Airtight - type: Damageable damageContainer: StructuralInorganic From 0e2e6a001fdd603d510aa33315ff68622599a969 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Tue, 19 Nov 2024 05:08:09 +0000 Subject: [PATCH 147/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 1cf40ba7787..dbe7ac5b284 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,17 +1,4 @@ Entries: -- author: EmoGarbage404 - changes: - - message: Reduced the amount of ore on the mining asteroid and expeditions. - type: Tweak - - message: Increased the amount of ore on magnet asteroids. - type: Tweak - - message: Each piece of ore now only has enough material to create 1 sheet. - type: Tweak - - message: The salvage magnet now accurately reports the contents of asteroids. - type: Fix - id: 7122 - time: '2024-08-16T01:43:54.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30920 - author: metalgearsloth changes: - message: Fix mains light on wires not being lit. @@ -3924,3 +3911,10 @@ id: 7621 time: '2024-11-19T02:59:42.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/32381 +- author: ScarKy0 + changes: + - message: Secret doors no longer tell you if they're welded shut on examine. + type: Tweak + id: 7622 + time: '2024-11-19T05:07:02.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33365 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 148/187] 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 2b059ca40e3..28bab5d4c76 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 From a949cf33e92384d209886874c2727e22611aca12 Mon Sep 17 00:00:00 2001 From: ArZarLordOfMango <96249677+ArZarLordOfMango@users.noreply.github.com> Date: Tue, 19 Nov 2024 21:31:37 +0100 Subject: [PATCH 149/187] Toggle clothing fix (#32826) * toggle clothing fix * some adding --- .../Clothing/Components/ToggleClothingComponent.cs | 6 ++++++ .../Clothing/EntitySystems/ToggleClothingSystem.cs | 4 ++++ Resources/Prototypes/Entities/Clothing/Hands/gloves.yml | 1 + Resources/Prototypes/Entities/Clothing/Head/helmets.yml | 1 + .../Prototypes/Entities/Clothing/OuterClothing/suits.yml | 1 + Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml | 1 + 6 files changed, 14 insertions(+) diff --git a/Content.Shared/Clothing/Components/ToggleClothingComponent.cs b/Content.Shared/Clothing/Components/ToggleClothingComponent.cs index 04bc3ed4e83..f827cbfea8d 100644 --- a/Content.Shared/Clothing/Components/ToggleClothingComponent.cs +++ b/Content.Shared/Clothing/Components/ToggleClothingComponent.cs @@ -33,6 +33,12 @@ public sealed partial class ToggleClothingComponent : Component /// </summary> [DataField] public bool DisableOnUnequip; + + /// <summary> + /// If true, the clothes must equip for adding action. + /// </summary> + [DataField] + public bool MustEquip = true; } /// <summary> diff --git a/Content.Shared/Clothing/EntitySystems/ToggleClothingSystem.cs b/Content.Shared/Clothing/EntitySystems/ToggleClothingSystem.cs index 9889376c9d4..8d6e3e3de65 100644 --- a/Content.Shared/Clothing/EntitySystems/ToggleClothingSystem.cs +++ b/Content.Shared/Clothing/EntitySystems/ToggleClothingSystem.cs @@ -39,8 +39,12 @@ private void OnMapInit(Entity<ToggleClothingComponent> ent, ref MapInitEvent arg private void OnGetActions(Entity<ToggleClothingComponent> ent, ref GetItemActionsEvent args) { + if (args.InHands && ent.Comp.MustEquip) + return; + var ev = new ToggleClothingCheckEvent(args.User); RaiseLocalEvent(ent, ref ev); + if (!ev.Cancelled) args.AddAction(ent.Comp.ActionEntity); } diff --git a/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml b/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml index 16777cd6900..1dd1e0ba042 100644 --- a/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml +++ b/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml @@ -230,6 +230,7 @@ stealthy: true - type: ToggleClothing action: ActionToggleNinjaGloves + disableOnUnequip: true - type: NinjaGloves abilities: - components: diff --git a/Resources/Prototypes/Entities/Clothing/Head/helmets.yml b/Resources/Prototypes/Entities/Clothing/Head/helmets.yml index 11643c076d8..f06f20249b4 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/helmets.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/helmets.yml @@ -452,6 +452,7 @@ delay: 1.0 - type: ToggleClothing action: ActionToggleJusticeHelm + mustEquip: false - type: ItemTogglePointLight - type: ToggleableLightVisuals clothingVisuals: diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml index a58c2a3fdd4..f78694a0fab 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml @@ -155,6 +155,7 @@ # phase cloak - type: ToggleClothing action: ActionTogglePhaseCloak + disableOnUnequip: true - type: ComponentToggler parent: true components: diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml b/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml index 0250671acfc..ab8084c91c0 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml @@ -14,6 +14,7 @@ sprite: Clothing/Shoes/Boots/magboots.rsi - type: ToggleClothing action: ActionToggleMagboots + mustEquip: false - type: ToggleVerb text: toggle-magboots-verb-get-data-text - type: ComponentToggler From 42ee90e53e7ee541ebdff85215f5ebf95cb19373 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Tue, 19 Nov 2024 20:32:47 +0000 Subject: [PATCH 150/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index dbe7ac5b284..b33d4b00be7 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: metalgearsloth - changes: - - message: Fix mains light on wires not being lit. - type: Fix - id: 7123 - time: '2024-08-16T03:59:46.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/31066 - author: IgorAnt028 changes: - message: The dead and knocked down now stop holding objects @@ -3918,3 +3911,10 @@ id: 7622 time: '2024-11-19T05:07:02.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33365 +- author: ArZarLordOfMango + changes: + - message: Most toggleable clothing must now be equipped to toggle their actions. + type: Fix + id: 7623 + time: '2024-11-19T20:31:38.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32826 From c4e2eb9d0250aebed6e7f7048f93820701b4b22d Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers <pieterjan.briers+git@gmail.com> Date: Wed, 20 Nov 2024 01:17:45 +0100 Subject: [PATCH 151/187] .NET 9 forward compatibility changes (#33421) This doesn't switch the projects over to .NET 9, but it does make them work on .NET 9 when we decide to switch in the future. --- Content.Server/Announcements/AnnounceCommand.cs | 3 ++- Content.Server/Cargo/Systems/PricingSystem.cs | 2 +- .../NPC/Pathfinding/PathfindingSystem.Breadth.cs | 4 ++-- .../NPC/Pathfinding/PathfindingSystem.Splines.cs | 2 +- .../NPC/Pathfinding/PathfindingSystem.Widen.cs | 2 +- Content.Shared/Forensics/Events.cs | 2 +- .../Silicons/StationAi/StationAiVisionSystem.cs | 11 ++++++----- 7 files changed, 14 insertions(+), 12 deletions(-) diff --git a/Content.Server/Announcements/AnnounceCommand.cs b/Content.Server/Announcements/AnnounceCommand.cs index 2307f36a5d0..3249fcc95d2 100644 --- a/Content.Server/Announcements/AnnounceCommand.cs +++ b/Content.Server/Announcements/AnnounceCommand.cs @@ -28,7 +28,8 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) } else { - var message = string.Join(' ', new ArraySegment<string>(args, 1, args.Length-1)); + // Explicit IEnumerable<string> due to overload ambiguity on .NET 9 + var message = string.Join(' ', (IEnumerable<string>)new ArraySegment<string>(args, 1, args.Length-1)); chat.DispatchGlobalAnnouncement(message, args[0], colorOverride: Color.Gold); } shell.WriteLine("Sent!"); diff --git a/Content.Server/Cargo/Systems/PricingSystem.cs b/Content.Server/Cargo/Systems/PricingSystem.cs index 830368baa3c..edc273b3c1f 100644 --- a/Content.Server/Cargo/Systems/PricingSystem.cs +++ b/Content.Server/Cargo/Systems/PricingSystem.cs @@ -424,7 +424,7 @@ public record struct PriceCalculationEvent() [ByRefEvent] public record struct EstimatedPriceCalculationEvent() { - public EntityPrototype Prototype; + public required EntityPrototype Prototype; /// <summary> /// The total price of the entity. diff --git a/Content.Server/NPC/Pathfinding/PathfindingSystem.Breadth.cs b/Content.Server/NPC/Pathfinding/PathfindingSystem.Breadth.cs index ee8eaa9ad1a..1504894b4a8 100644 --- a/Content.Server/NPC/Pathfinding/PathfindingSystem.Breadth.cs +++ b/Content.Server/NPC/Pathfinding/PathfindingSystem.Breadth.cs @@ -11,8 +11,8 @@ public sealed partial class PathfindingSystem /// </summary> public record struct BreadthPathArgs() { - public Vector2i Start; - public List<Vector2i> Ends; + public required Vector2i Start; + public required List<Vector2i> Ends; public bool Diagonals = false; diff --git a/Content.Server/NPC/Pathfinding/PathfindingSystem.Splines.cs b/Content.Server/NPC/Pathfinding/PathfindingSystem.Splines.cs index 9979755f995..91c42e651c1 100644 --- a/Content.Server/NPC/Pathfinding/PathfindingSystem.Splines.cs +++ b/Content.Server/NPC/Pathfinding/PathfindingSystem.Splines.cs @@ -19,7 +19,7 @@ public record struct SplinePathResult() public List<Vector2i> Points = new(); public List<Vector2i> Path = new(); - public Dictionary<Vector2i, Vector2i> CameFrom; + public Dictionary<Vector2i, Vector2i>? CameFrom; } public record struct SplinePathArgs(SimplePathArgs Args) diff --git a/Content.Server/NPC/Pathfinding/PathfindingSystem.Widen.cs b/Content.Server/NPC/Pathfinding/PathfindingSystem.Widen.cs index f7bcd019f5f..11ac93876ef 100644 --- a/Content.Server/NPC/Pathfinding/PathfindingSystem.Widen.cs +++ b/Content.Server/NPC/Pathfinding/PathfindingSystem.Widen.cs @@ -84,6 +84,6 @@ public record struct WidenArgs() public float MaxWiden = 7f; - public List<Vector2i> Path; + public required List<Vector2i> Path; } } diff --git a/Content.Shared/Forensics/Events.cs b/Content.Shared/Forensics/Events.cs index f7b9475cb57..c346d08536d 100644 --- a/Content.Shared/Forensics/Events.cs +++ b/Content.Shared/Forensics/Events.cs @@ -66,5 +66,5 @@ public record struct GenerateDnaEvent() /// <summary> /// The generated DNA. /// </summary> - public string DNA; + public required string DNA; } diff --git a/Content.Shared/Silicons/StationAi/StationAiVisionSystem.cs b/Content.Shared/Silicons/StationAi/StationAiVisionSystem.cs index bdc62a6bb37..d3416949d53 100644 --- a/Content.Shared/Silicons/StationAi/StationAiVisionSystem.cs +++ b/Content.Shared/Silicons/StationAi/StationAiVisionSystem.cs @@ -56,6 +56,7 @@ public override void Initialize() EntManager = EntityManager, Maps = _maps, System = this, + VisibleTiles = _singleTiles, }; } @@ -278,7 +279,7 @@ private bool IsCorner( /// </summary> private record struct SeedJob() : IRobustJob { - public StationAiVisionSystem System; + public required StationAiVisionSystem System; public Entity<MapGridComponent> Grid; public Box2 ExpandedBounds; @@ -293,14 +294,14 @@ private record struct ViewJob() : IParallelRobustJob { public int BatchSize => 1; - public IEntityManager EntManager; - public SharedMapSystem Maps; - public StationAiVisionSystem System; + public required IEntityManager EntManager; + public required SharedMapSystem Maps; + public required StationAiVisionSystem System; public Entity<MapGridComponent> Grid; public List<Entity<StationAiVisionComponent>> Data = new(); - public HashSet<Vector2i> VisibleTiles; + public required HashSet<Vector2i> VisibleTiles; public readonly List<Dictionary<Vector2i, int>> Vis1 = new(); public readonly List<Dictionary<Vector2i, int>> Vis2 = new(); From 7f5bae99bb72878ef139f4c5cfbbafcf9b609720 Mon Sep 17 00:00:00 2001 From: Plykiya <58439124+Plykiya@users.noreply.github.com> Date: Tue, 19 Nov 2024 16:57:01 -0800 Subject: [PATCH 152/187] Fix security riot crate (#33415) * move riot crate from security to armory category * Move riot crate to armory, actually make it require armory access to unlock --- .../Prototypes/Catalog/Cargo/cargo_armory.yml | 10 ++++++++++ .../Catalog/Cargo/cargo_security.yml | 10 ---------- .../Catalog/Fills/Crates/armory.yml | 19 ++++++++++++++++++ .../Catalog/Fills/Crates/security.yml | 20 ------------------- 4 files changed, 29 insertions(+), 30 deletions(-) diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_armory.yml b/Resources/Prototypes/Catalog/Cargo/cargo_armory.yml index 6341042bf89..26748e82268 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_armory.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_armory.yml @@ -18,6 +18,16 @@ category: cargoproduct-category-name-armory group: market +- type: cargoProduct + id: SecurityRiot + icon: + sprite: Clothing/OuterClothing/Armor/riot.rsi + state: icon + product: CrateSecurityRiot + cost: 7500 + category: cargoproduct-category-name-armory + group: market + - type: cargoProduct id: TrackingImplant icon: diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_security.yml b/Resources/Prototypes/Catalog/Cargo/cargo_security.yml index a5d4e5f70a1..3fa03ea2e39 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_security.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_security.yml @@ -28,16 +28,6 @@ category: cargoproduct-category-name-security group: market -- type: cargoProduct - id: SecurityRiot - icon: - sprite: Clothing/OuterClothing/Armor/riot.rsi - state: icon - product: CrateSecurityRiot - cost: 7500 - category: cargoproduct-category-name-security - group: market - - type: cargoProduct id: SecuritySupplies icon: diff --git a/Resources/Prototypes/Catalog/Fills/Crates/armory.yml b/Resources/Prototypes/Catalog/Fills/Crates/armory.yml index bc5377fe81f..fadaf2f01ed 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/armory.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/armory.yml @@ -69,3 +69,22 @@ amount: 2 - id: MagazinePistol amount: 4 + +- type: entity + id: CrateSecurityRiot + parent: [ CrateWeaponSecure, BaseRestrictedContraband ] + name: swat crate + description: Contains two sets of riot armor, helmets, shields, and enforcers loaded with beanbags. Extra ammo is included. Requires Armory access to open. + components: + - type: StorageFill + contents: + - id: ClothingOuterArmorRiot + amount: 2 + - id: ClothingHeadHelmetRiot + amount: 2 + - id: WeaponShotgunEnforcerRubber + amount: 2 + - id: BoxBeanbag + amount: 2 + - id: RiotShield + amount: 2 diff --git a/Resources/Prototypes/Catalog/Fills/Crates/security.yml b/Resources/Prototypes/Catalog/Fills/Crates/security.yml index 38597adb1ee..a0351968498 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/security.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/security.yml @@ -38,26 +38,6 @@ # - Pepperspray # - GrenadeTeargas -- type: entity - id: CrateSecurityRiot - parent: CrateSecgear - name: swat crate - description: Contains two sets of riot armor, helmets, shields, and enforcers loaded with beanbags. Extra ammo is included. Requires Armory access to open. - components: - - type: StorageFill - contents: - - id: ClothingOuterArmorRiot - amount: 2 - - id: ClothingHeadHelmetRiot - amount: 2 - - id: WeaponShotgunEnforcerRubber - amount: 2 - - id: BoxBeanbag - amount: 2 - - id: RiotShield - amount: 2 -# - SecGasmask - - type: entity id: CrateSecuritySupplies parent: CrateSecgear From 2002de9bb01e53e70b00fea5b3f4ffeed55a3cfa Mon Sep 17 00:00:00 2001 From: MilenVolf <63782763+MilenVolf@users.noreply.github.com> Date: Wed, 20 Nov 2024 03:57:43 +0300 Subject: [PATCH 153/187] Localize planet dataset names (#33398) * Localize planet names (borer) * DatasetPrototype -> LocalizedDatasetPrototype * Apply requested changes --- .../Gateway/Systems/GatewayGeneratorSystem.cs | 7 +- .../SalvageSystem.ExpeditionConsole.cs | 2 +- .../Salvage/SpawnSalvageMissionJob.cs | 4 +- .../Shuttles/Components/GridSpawnComponent.cs | 6 +- .../Systems/ShuttleSystem.GridFill.cs | 2 +- .../Shuttles/Systems/ShuttleSystem.cs | 2 + Content.Shared/Salvage/SharedSalvageSystem.cs | 4 +- .../Locale/en-US/datasets/names/borer.ftl | 69 +++++++++++++++++ Resources/Prototypes/Datasets/Names/borer.yml | 75 +------------------ .../Prototypes/Entities/Stations/base.yml | 2 +- 10 files changed, 90 insertions(+), 83 deletions(-) create mode 100644 Resources/Locale/en-US/datasets/names/borer.ftl diff --git a/Content.Server/Gateway/Systems/GatewayGeneratorSystem.cs b/Content.Server/Gateway/Systems/GatewayGeneratorSystem.cs index 7dcd42e06fa..666d1045174 100644 --- a/Content.Server/Gateway/Systems/GatewayGeneratorSystem.cs +++ b/Content.Server/Gateway/Systems/GatewayGeneratorSystem.cs @@ -34,10 +34,11 @@ public sealed class GatewayGeneratorSystem : EntitySystem [Dependency] private readonly GatewaySystem _gateway = default!; [Dependency] private readonly MetaDataSystem _metadata = default!; [Dependency] private readonly SharedMapSystem _maps = default!; + [Dependency] private readonly SharedSalvageSystem _salvage = default!; [Dependency] private readonly TileSystem _tile = default!; - [ValidatePrototypeId<DatasetPrototype>] - private const string PlanetNames = "names_borer"; + [ValidatePrototypeId<LocalizedDatasetPrototype>] + private const string PlanetNames = "NamesBorer"; // TODO: // Fix shader some more @@ -102,7 +103,7 @@ private void GenerateDestination(EntityUid uid, GatewayGeneratorComponent? gener var mapId = _mapManager.CreateMap(); var mapUid = _mapManager.GetMapEntityId(mapId); - var gatewayName = SharedSalvageSystem.GetFTLName(_protoManager.Index<DatasetPrototype>(PlanetNames), seed); + var gatewayName = _salvage.GetFTLName(_protoManager.Index<LocalizedDatasetPrototype>(PlanetNames), seed); _metadata.SetEntityName(mapUid, gatewayName); var origin = new Vector2i(random.Next(-MaxOffset, MaxOffset), random.Next(-MaxOffset, MaxOffset)); diff --git a/Content.Server/Salvage/SalvageSystem.ExpeditionConsole.cs b/Content.Server/Salvage/SalvageSystem.ExpeditionConsole.cs index d0314184767..a9d8314f57c 100644 --- a/Content.Server/Salvage/SalvageSystem.ExpeditionConsole.cs +++ b/Content.Server/Salvage/SalvageSystem.ExpeditionConsole.cs @@ -28,7 +28,7 @@ private void OnSalvageClaimMessage(EntityUid uid, SalvageExpeditionConsoleCompon var mission = GetMission(_prototypeManager.Index<SalvageDifficultyPrototype>(missionparams.Difficulty), missionparams.Seed); data.NextOffer = _timing.CurTime + mission.Duration + TimeSpan.FromSeconds(1); - _labelSystem.Label(cdUid, GetFTLName(_prototypeManager.Index<DatasetPrototype>("names_borer"), missionparams.Seed)); + _labelSystem.Label(cdUid, GetFTLName(_prototypeManager.Index<LocalizedDatasetPrototype>("NamesBorer"), missionparams.Seed)); _audio.PlayPvs(component.PrintSound, uid); UpdateConsoles((station.Value, data)); diff --git a/Content.Server/Salvage/SpawnSalvageMissionJob.cs b/Content.Server/Salvage/SpawnSalvageMissionJob.cs index 525fe01a1f8..31c6b73253d 100644 --- a/Content.Server/Salvage/SpawnSalvageMissionJob.cs +++ b/Content.Server/Salvage/SpawnSalvageMissionJob.cs @@ -104,7 +104,9 @@ protected override async Task<bool> Process() destComp.BeaconsOnly = true; destComp.RequireCoordinateDisk = true; destComp.Enabled = true; - _metaData.SetEntityName(mapUid, SharedSalvageSystem.GetFTLName(_prototypeManager.Index<DatasetPrototype>("names_borer"), _missionParams.Seed)); + _metaData.SetEntityName( + mapUid, + _entManager.System<SharedSalvageSystem>().GetFTLName(_prototypeManager.Index<LocalizedDatasetPrototype>("NamesBorer"), _missionParams.Seed)); _entManager.AddComponent<FTLBeaconComponent>(mapUid); // Saving the mission mapUid to a CD is made optional, in case one is somehow made in a process without a CD entity diff --git a/Content.Server/Shuttles/Components/GridSpawnComponent.cs b/Content.Server/Shuttles/Components/GridSpawnComponent.cs index 430c9c8df28..18959dd7f37 100644 --- a/Content.Server/Shuttles/Components/GridSpawnComponent.cs +++ b/Content.Server/Shuttles/Components/GridSpawnComponent.cs @@ -32,7 +32,7 @@ public interface IGridSpawnGroup public float MaximumDistance { get; } /// <inheritdoc /> - public ProtoId<DatasetPrototype>? NameDataset { get; } + public ProtoId<LocalizedDatasetPrototype>? NameDataset { get; } /// <inheritdoc /> int MinCount { get; set; } @@ -75,7 +75,7 @@ public sealed class DungeonSpawnGroup : IGridSpawnGroup public float MaximumDistance { get; } /// <inheritdoc /> - public ProtoId<DatasetPrototype>? NameDataset { get; } + public ProtoId<LocalizedDatasetPrototype>? NameDataset { get; } /// <inheritdoc /> public int MinCount { get; set; } = 1; @@ -106,7 +106,7 @@ public sealed class GridSpawnGroup : IGridSpawnGroup /// <inheritdoc /> public float MaximumDistance { get; } - public ProtoId<DatasetPrototype>? NameDataset { get; } + public ProtoId<LocalizedDatasetPrototype>? NameDataset { get; } public int MinCount { get; set; } = 1; public int MaxCount { get; set; } = 1; public ComponentRegistry AddComponents { get; set; } = new(); diff --git a/Content.Server/Shuttles/Systems/ShuttleSystem.GridFill.cs b/Content.Server/Shuttles/Systems/ShuttleSystem.GridFill.cs index 5ad94699bed..de0593b26f0 100644 --- a/Content.Server/Shuttles/Systems/ShuttleSystem.GridFill.cs +++ b/Content.Server/Shuttles/Systems/ShuttleSystem.GridFill.cs @@ -208,7 +208,7 @@ private void GridSpawns(EntityUid uid, GridSpawnComponent component) if (_protoManager.TryIndex(group.NameDataset, out var dataset)) { - _metadata.SetEntityName(spawned, SharedSalvageSystem.GetFTLName(dataset, _random.Next())); + _metadata.SetEntityName(spawned, _salvage.GetFTLName(dataset, _random.Next())); } if (group.Hide) diff --git a/Content.Server/Shuttles/Systems/ShuttleSystem.cs b/Content.Server/Shuttles/Systems/ShuttleSystem.cs index 054c42f934a..6e8c1a9e204 100644 --- a/Content.Server/Shuttles/Systems/ShuttleSystem.cs +++ b/Content.Server/Shuttles/Systems/ShuttleSystem.cs @@ -8,6 +8,7 @@ using Content.Server.Stunnable; using Content.Shared.GameTicking; using Content.Shared.Mobs.Systems; +using Content.Shared.Salvage; using Content.Shared.Shuttles.Systems; using Content.Shared.Throwing; using JetBrains.Annotations; @@ -51,6 +52,7 @@ public sealed partial class ShuttleSystem : SharedShuttleSystem [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedPhysicsSystem _physics = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; + [Dependency] private readonly SharedSalvageSystem _salvage = default!; [Dependency] private readonly ShuttleConsoleSystem _console = default!; [Dependency] private readonly StationSystem _station = default!; [Dependency] private readonly StunSystem _stuns = default!; diff --git a/Content.Shared/Salvage/SharedSalvageSystem.cs b/Content.Shared/Salvage/SharedSalvageSystem.cs index 0c56f4f556e..12d0a26449c 100644 --- a/Content.Shared/Salvage/SharedSalvageSystem.cs +++ b/Content.Shared/Salvage/SharedSalvageSystem.cs @@ -26,10 +26,10 @@ public abstract partial class SharedSalvageSystem : EntitySystem [ValidatePrototypeId<SalvageLootPrototype>] public const string ExpeditionsLootProto = "SalvageLoot"; - public static string GetFTLName(DatasetPrototype dataset, int seed) + public string GetFTLName(LocalizedDatasetPrototype dataset, int seed) { var random = new System.Random(seed); - return $"{dataset.Values[random.Next(dataset.Values.Count)]}-{random.Next(10, 100)}-{(char) (65 + random.Next(26))}"; + return $"{Loc.GetString(dataset.Values[random.Next(dataset.Values.Count)])}-{random.Next(10, 100)}-{(char) (65 + random.Next(26))}"; } public SalvageMission GetMission(SalvageDifficultyPrototype difficulty, int seed) diff --git a/Resources/Locale/en-US/datasets/names/borer.ftl b/Resources/Locale/en-US/datasets/names/borer.ftl new file mode 100644 index 00000000000..17cae851b9e --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/borer.ftl @@ -0,0 +1,69 @@ +names-borer-dataset-1 = Alcyonium +names-borer-dataset-2 = Anomia +names-borer-dataset-3 = Aphrodita +names-borer-dataset-4 = Arca +names-borer-dataset-5 = Argonauta +names-borer-dataset-6 = Ascaris +names-borer-dataset-7 = Asterias +names-borer-dataset-8 = Buccinum +names-borer-dataset-9 = Bulla +names-borer-dataset-10 = Cardium +names-borer-dataset-11 = Chama +names-borer-dataset-12 = Chiton +names-borer-dataset-13 = Conus +names-borer-dataset-14 = Corallina +names-borer-dataset-15 = Cypraea +names-borer-dataset-16 = Dentalium +names-borer-dataset-17 = Donax +names-borer-dataset-18 = Doris +names-borer-dataset-19 = Echinus +names-borer-dataset-20 = Eschara +names-borer-dataset-21 = Fasciola +names-borer-dataset-22 = Furia +names-borer-dataset-23 = Gordius +names-borer-dataset-24 = Gorgonia +names-borer-dataset-25 = Haliotis +names-borer-dataset-26 = Helix +names-borer-dataset-27 = Hirudo +names-borer-dataset-28 = Holothuria +names-borer-dataset-29 = Hydra +names-borer-dataset-30 = Isis +names-borer-dataset-31 = Lepas +names-borer-dataset-32 = Lernaea +names-borer-dataset-33 = Limax +names-borer-dataset-34 = Lumbricus +names-borer-dataset-35 = Madrepora +names-borer-dataset-36 = Medusa +names-borer-dataset-37 = Millepora +names-borer-dataset-38 = Murex +names-borer-dataset-39 = Myes +names-borer-dataset-40 = Mytilus +names-borer-dataset-41 = Myxine +names-borer-dataset-42 = Nautilus +names-borer-dataset-43 = Nereis +names-borer-dataset-44 = Neritha +names-borer-dataset-45 = Ostrea +names-borer-dataset-46 = Patella +names-borer-dataset-47 = Pennatula +names-borer-dataset-48 = Pholas +names-borer-dataset-49 = Pinna +names-borer-dataset-50 = Priapus +names-borer-dataset-51 = Scyllaea +names-borer-dataset-52 = Sepia +names-borer-dataset-53 = Serpula +names-borer-dataset-54 = Sertularia +names-borer-dataset-55 = Solen +names-borer-dataset-56 = Spondylus +names-borer-dataset-57 = Strombus +names-borer-dataset-58 = Taenia +names-borer-dataset-59 = Tellina +names-borer-dataset-60 = Teredo +names-borer-dataset-61 = Tethys +names-borer-dataset-62 = Triton +names-borer-dataset-63 = Trochus +names-borer-dataset-64 = Tubipora +names-borer-dataset-65 = Tubularia +names-borer-dataset-66 = Turbo +names-borer-dataset-67 = Venus +names-borer-dataset-68 = Voluta +names-borer-dataset-69 = Volvox diff --git a/Resources/Prototypes/Datasets/Names/borer.yml b/Resources/Prototypes/Datasets/Names/borer.yml index 03667f67a7a..e8d741e6a96 100644 --- a/Resources/Prototypes/Datasets/Names/borer.yml +++ b/Resources/Prototypes/Datasets/Names/borer.yml @@ -1,72 +1,5 @@ -- type: dataset - id: names_borer +- type: localizedDataset + id: NamesBorer values: - - Alcyonium - - Anomia - - Aphrodita - - Arca - - Argonauta - - Ascaris - - Asterias - - Buccinum - - Bulla - - Cardium - - Chama - - Chiton - - Conus - - Corallina - - Cypraea - - Dentalium - - Donax - - Doris - - Echinus - - Eschara - - Fasciola - - Furia - - Gordius - - Gorgonia - - Haliotis - - Helix - - Hirudo - - Holothuria - - Hydra - - Isis - - Lepas - - Lernaea - - Limax - - Lumbricus - - Madrepora - - Medusa - - Millepora - - Murex - - Myes - - Mytilus - - Myxine - - Nautilus - - Nereis - - Neritha - - Ostrea - - Patella - - Pennatula - - Pholas - - Pinna - - Priapus - - Scyllaea - - Sepia - - Serpula - - Sertularia - - Solen - - Spondylus - - Strombus - - Taenia - - Tellina - - Teredo - - Tethys - - Triton - - Trochus - - Tubipora - - Tubularia - - Turbo - - Venus - - Voluta - - Volvox + prefix: names-borer-dataset- + count: 69 diff --git a/Resources/Prototypes/Entities/Stations/base.yml b/Resources/Prototypes/Entities/Stations/base.yml index effb391404d..5d95e7cbe06 100644 --- a/Resources/Prototypes/Entities/Stations/base.yml +++ b/Resources/Prototypes/Entities/Stations/base.yml @@ -73,7 +73,7 @@ vgroid: !type:DungeonSpawnGroup minimumDistance: 300 maximumDistance: 350 - nameDataset: names_borer + nameDataset: NamesBorer stationGrid: false addComponents: - type: Gravity From efa28fc650076ddef317903aed5ff1a2b664cf68 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Wed, 20 Nov 2024 00:58:08 +0000 Subject: [PATCH 154/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index b33d4b00be7..b2f63bb5964 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: IgorAnt028 - changes: - - message: The dead and knocked down now stop holding objects - type: Fix - id: 7124 - time: '2024-08-16T04:53:34.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/31009 - author: SlamBamActionman changes: - message: Nar'Sie is satiated; moppable blood will no longer duplicate. @@ -3918,3 +3911,10 @@ id: 7623 time: '2024-11-19T20:31:38.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/32826 +- author: Plykiya + changes: + - message: The SWAT crate from cargo now requires armory access to open. + type: Fix + id: 7624 + time: '2024-11-20T00:57:01.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33415 From 89392e2424a4d428fbb6996dec6615dfe0c05f41 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Wed, 20 Nov 2024 02:00:38 +0100 Subject: [PATCH 155/187] Remove drag & drop dropping items from containers (#32706) * Initial commit * Update based on maintainer discussion * Forgot to remove this woops --- .../Systems/Storage/StorageUIController.cs | 6 ------ .../Storage/EntitySystems/SharedStorageSystem.cs | 14 -------------- Content.Shared/Storage/StorageComponent.cs | 14 -------------- 3 files changed, 34 deletions(-) diff --git a/Content.Client/UserInterface/Systems/Storage/StorageUIController.cs b/Content.Client/UserInterface/Systems/Storage/StorageUIController.cs index 97c9d8b7959..1e61ad98380 100644 --- a/Content.Client/UserInterface/Systems/Storage/StorageUIController.cs +++ b/Content.Client/UserInterface/Systems/Storage/StorageUIController.cs @@ -307,12 +307,6 @@ private void OnPieceUnpressed(GUIBoundKeyEventArgs args, ItemGridPiece control) _entity.GetNetEntity(storageEnt), new ItemStorageLocation(DraggingRotation, position))); } - else - { - _entity.RaisePredictiveEvent(new StorageRemoveItemEvent( - _entity.GetNetEntity(draggingGhost.Entity), - _entity.GetNetEntity(storageEnt))); - } _menuDragHelper.EndDrag(); _container?.BuildItemPieces(); diff --git a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs index fee4c1a0fb6..183420db9d1 100644 --- a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs +++ b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs @@ -129,7 +129,6 @@ public override void Initialize() SubscribeAllEvent<StorageInteractWithItemEvent>(OnInteractWithItem); SubscribeAllEvent<StorageSetItemLocationEvent>(OnSetItemLocation); SubscribeAllEvent<StorageInsertItemIntoLocationEvent>(OnInsertItemIntoLocation); - SubscribeAllEvent<StorageRemoveItemEvent>(OnRemoveItem); SubscribeAllEvent<StorageSaveItemLocationEvent>(OnSaveItemLocation); SubscribeLocalEvent<StorageComponent, GotReclaimedEvent>(OnReclaimed); @@ -639,19 +638,6 @@ private void OnSetItemLocation(StorageSetItemLocationEvent msg, EntitySessionEve TrySetItemStorageLocation(item!, storage!, msg.Location); } - private void OnRemoveItem(StorageRemoveItemEvent msg, EntitySessionEventArgs args) - { - if (!ValidateInput(args, msg.StorageEnt, msg.ItemEnt, out var player, out var storage, out var item)) - return; - - _adminLog.Add( - LogType.Storage, - LogImpact.Low, - $"{ToPrettyString(player):player} is removing {ToPrettyString(item):item} from {ToPrettyString(storage):storage}"); - TransformSystem.DropNextTo(item.Owner, player.Owner); - Audio.PlayPredicted(storage.Comp.StorageRemoveSound, storage, player, _audioParams); - } - private void OnInsertItemIntoLocation(StorageInsertItemIntoLocationEvent msg, EntitySessionEventArgs args) { if (!ValidateInput(args, msg.StorageEnt, msg.ItemEnt, out var player, out var storage, out var item, held: true)) diff --git a/Content.Shared/Storage/StorageComponent.cs b/Content.Shared/Storage/StorageComponent.cs index d2c607e57f7..5683ae95a71 100644 --- a/Content.Shared/Storage/StorageComponent.cs +++ b/Content.Shared/Storage/StorageComponent.cs @@ -169,20 +169,6 @@ public StorageSetItemLocationEvent(NetEntity itemEnt, NetEntity storageEnt, Item } } - [Serializable, NetSerializable] - public sealed class StorageRemoveItemEvent : EntityEventArgs - { - public readonly NetEntity ItemEnt; - - public readonly NetEntity StorageEnt; - - public StorageRemoveItemEvent(NetEntity itemEnt, NetEntity storageEnt) - { - ItemEnt = itemEnt; - StorageEnt = storageEnt; - } - } - [Serializable, NetSerializable] public sealed class StorageInsertItemIntoLocationEvent : EntityEventArgs { From ed1ae96fa22cb9ad8af2b21efb8abe4aadfeeed7 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Wed, 20 Nov 2024 01:01:45 +0000 Subject: [PATCH 156/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index b2f63bb5964..a578659a004 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: SlamBamActionman - changes: - - message: Nar'Sie is satiated; moppable blood will no longer duplicate. - type: Fix - id: 7125 - time: '2024-08-16T10:47:53.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30983 - author: Blackern5000 changes: - message: Disabler SMGs no longer fit in combat boots @@ -3918,3 +3911,11 @@ id: 7624 time: '2024-11-20T00:57:01.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33415 +- author: SlamBamActionman + changes: + - message: It's no longer possible to drag an item out of a container's UI to drop + it. + type: Tweak + id: 7625 + time: '2024-11-20T01:00:38.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32706 From eebf06d9d611063410233efae983efbe52c8b493 Mon Sep 17 00:00:00 2001 From: Saphire Lattice <lattice@saphi.re> Date: Wed, 20 Nov 2024 08:03:52 +0700 Subject: [PATCH 157/187] Automatically add "Approved" to maintainer PRs (#33337) * Add an Approved labeler for maintainer PRs * Be extra safe with conditions --- .github/workflows/labeler-review.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 .github/workflows/labeler-review.yml diff --git a/.github/workflows/labeler-review.yml b/.github/workflows/labeler-review.yml new file mode 100644 index 00000000000..79be86a005a --- /dev/null +++ b/.github/workflows/labeler-review.yml @@ -0,0 +1,23 @@ +name: "Labels: Approved" +on: + pull_request_review: + types: [submitted] +jobs: + add_label: + # Change the repository name after you've made sure the team name is correct for your fork! + if: ${{ (github.repository == 'space-wizards/space-station-14') && (github.event.review.state == 'APPROVED') }} + permissions: + contents: read + pull-requests: write + runs-on: ubuntu-latest + steps: + - uses: tspascoal/get-user-teams-membership@v3 + id: checkUserMember + with: + username: ${{ github.actor }} + team: "content-maintainers,junior-maintainers" # CHANGE TEAM NAME HERE PLEASE <------ + GITHUB_TOKEN: ${{ secrets.PAT }} + - if: ${{ steps.checkUserMember.outputs.isTeamMember == 'true' }} + uses: actions-ecosystem/action-add-labels@v1 + with: + labels: "PR: Approved" \ No newline at end of file From fdf3df9fbdf4687794961038c7b9433c9ff8c104 Mon Sep 17 00:00:00 2001 From: Plykiya <58439124+Plykiya@users.noreply.github.com> Date: Tue, 19 Nov 2024 17:05:20 -0800 Subject: [PATCH 158/187] Crew monitoring crate updated to contain flatpacks, science access instead of engi (#33417) * Make a crew monitoring crate with flatpacks * fix image * migration --- .../Catalog/Cargo/cargo_circuitboards.yml | 9 --------- .../Catalog/Cargo/cargo_science.yml | 10 ++++++++++ .../Catalog/Fills/Crates/circuitboards.yml | 12 ----------- .../Catalog/Fills/Crates/science.yml | 12 +++++++++++ .../Entities/Objects/Devices/flatpack.yml | 20 ++++++++++++++++++- Resources/migration.yml | 3 +++ 6 files changed, 44 insertions(+), 22 deletions(-) delete mode 100644 Resources/Prototypes/Catalog/Cargo/cargo_circuitboards.yml delete mode 100644 Resources/Prototypes/Catalog/Fills/Crates/circuitboards.yml diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_circuitboards.yml b/Resources/Prototypes/Catalog/Cargo/cargo_circuitboards.yml deleted file mode 100644 index a96780fc3ed..00000000000 --- a/Resources/Prototypes/Catalog/Cargo/cargo_circuitboards.yml +++ /dev/null @@ -1,9 +0,0 @@ -- type: cargoProduct - id: CrewMonitoringBoards - icon: - sprite: Objects/Misc/module.rsi - state: cpuboard - product: CrateCrewMonitoringBoards - cost: 2000 - category: cargoproduct-category-name-circuitboards - group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_science.yml b/Resources/Prototypes/Catalog/Cargo/cargo_science.yml index 756a223e74d..cb7f8af8224 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_science.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_science.yml @@ -27,3 +27,13 @@ cost: 800 category: cargoproduct-category-name-science group: market + +- type: cargoProduct + id: CrewMonitoring + icon: + sprite: Structures/Machines/server.rsi + state: server + product: CrateCrewMonitoring + cost: 2000 + category: cargoproduct-category-name-science + group: market diff --git a/Resources/Prototypes/Catalog/Fills/Crates/circuitboards.yml b/Resources/Prototypes/Catalog/Fills/Crates/circuitboards.yml deleted file mode 100644 index 899db4c37c7..00000000000 --- a/Resources/Prototypes/Catalog/Fills/Crates/circuitboards.yml +++ /dev/null @@ -1,12 +0,0 @@ -- type: entity - id: CrateCrewMonitoringBoards - parent: CrateEngineeringSecure - name: crew monitoring boards - description: Has two crew monitoring console and server replacements. Requires engineering access to open. - components: - - type: StorageFill - contents: - - id: CrewMonitoringComputerCircuitboard - amount: 2 - - id: CrewMonitoringServerMachineCircuitboard - amount: 2 diff --git a/Resources/Prototypes/Catalog/Fills/Crates/science.yml b/Resources/Prototypes/Catalog/Fills/Crates/science.yml index 15ce05708e3..6adf5942a43 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/science.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/science.yml @@ -12,3 +12,15 @@ amount: 2 - id: ClothingMaskSterile amount: 2 + +- type: entity + id: CrateCrewMonitoring + parent: CrateScienceSecure + name: crew monitoring crate + description: Contains a flatpack of a crew monitoring server and a few crew monitoring computers. Requires Science access to open. + components: + - type: StorageFill + contents: + - id: CrewMonitoringServerFlatpack + - id: CrewMonitoringComputerFlatpack + amount: 3 diff --git a/Resources/Prototypes/Entities/Objects/Devices/flatpack.yml b/Resources/Prototypes/Entities/Objects/Devices/flatpack.yml index 5fb81aa6d48..82d43cf7d82 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/flatpack.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/flatpack.yml @@ -215,4 +215,22 @@ layers: - state: fax-machine - type: Flatpack - entity: FaxMachineBase \ No newline at end of file + entity: FaxMachineBase + +- type: entity + parent: BaseFlatpack + id: CrewMonitoringServerFlatpack + name: crew monitoring server flatpack + description: A flatpack used for constructing a crew monitoring server. + components: + - type: Flatpack + entity: CrewMonitoringServer + +- type: entity + parent: BaseFlatpack + id: CrewMonitoringComputerFlatpack + name: crew monitoring computer flatpack + description: A flatpack used for constructing a crew monitoring console. + components: + - type: Flatpack + entity: ComputerCrewMonitoring diff --git a/Resources/migration.yml b/Resources/migration.yml index 8940df2b65e..a09986ebd86 100644 --- a/Resources/migration.yml +++ b/Resources/migration.yml @@ -475,3 +475,6 @@ LeftLegBorgJanitor: LeftLegBorg RightLegBorgJanitor: RightLegBorg HeadBorgJanitor: LightHeadBorg TorsoBorgJanitor: TorsoBorg + +# 2024-11-19 +CrateCrewMonitoringBoards: CrateCrewMonitoring From 35e2c641c1960195509c52fd6350cff720f76868 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Wed, 20 Nov 2024 01:06:27 +0000 Subject: [PATCH 159/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index a578659a004..0eaa287ba93 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Blackern5000 - changes: - - message: Disabler SMGs no longer fit in combat boots - type: Fix - id: 7126 - time: '2024-08-17T01:00:21.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/31110 - author: Mervill changes: - message: Fixed suffocation alerts not appearing. @@ -3919,3 +3912,11 @@ id: 7625 time: '2024-11-20T01:00:38.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/32706 +- author: Plykiya + changes: + - message: The crew monitoring crate now contains a flatpack of the server and computers, + and can be opened with science access instead of engineering access now. + type: Tweak + id: 7626 + time: '2024-11-20T01:05:20.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33417 From 6e53cd98a400466640586bf19b41ec281944795e Mon Sep 17 00:00:00 2001 From: SlamBamActionman <slambamactionman@gmail.com> Date: Tue, 19 Nov 2024 16:28:58 +0100 Subject: [PATCH 160/187] Add emag functionality --- .../SingularityGeneratorSystem.cs | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/Content.Server/Singularity/EntitySystems/SingularityGeneratorSystem.cs b/Content.Server/Singularity/EntitySystems/SingularityGeneratorSystem.cs index be0c5e49b5f..cfca86bf4af 100644 --- a/Content.Server/Singularity/EntitySystems/SingularityGeneratorSystem.cs +++ b/Content.Server/Singularity/EntitySystems/SingularityGeneratorSystem.cs @@ -117,27 +117,31 @@ private void HandleParticleCollide(EntityUid uid, ParticleProjectileComponent co if (!EntityManager.TryGetComponent<SingularityGeneratorComponent>(args.OtherEntity, out var generatorComp)) return; - if (_timing.CurTime < _metadata.GetPauseTime(uid) + generatorComp.NextFailsafe) + if (_timing.CurTime < _metadata.GetPauseTime(uid) + generatorComp.NextFailsafe && !generatorComp.FailsafeDisabled) { EntityManager.QueueDeleteEntity(uid); return; } var contained = true; - var transform = Transform(args.OtherEntity); - var directions = Enum.GetValues<Direction>().Length; - for (var i = 0; i < directions - 1; i += 2) // Skip every other direction, checking only cardinals + if (!generatorComp.FailsafeDisabled) { - if (!CheckContainmentField((Direction)i, new Entity<SingularityGeneratorComponent>(args.OtherEntity, generatorComp), transform)) - contained = false; + var transform = Transform(args.OtherEntity); + var directions = Enum.GetValues<Direction>().Length; + for (var i = 0; i < directions - 1; i += 2) // Skip every other direction, checking only cardinals + { + if (!CheckContainmentField((Direction)i, new Entity<SingularityGeneratorComponent>(args.OtherEntity, generatorComp), transform)) + contained = false; + } } - if (!contained) + if (!contained && !generatorComp.FailsafeDisabled) { generatorComp.NextFailsafe = _timing.CurTime + generatorComp.FailsafeCooldown; _popupSystem.PopupEntity(Loc.GetString("comp-generator-failsafe", ("target", args.OtherEntity)), args.OtherEntity, PopupType.LargeCaution); } else + { SetPower( args.OtherEntity, generatorComp.Power + component.State switch @@ -151,6 +155,8 @@ private void HandleParticleCollide(EntityUid uid, ParticleProjectileComponent co }, generatorComp ); + } + EntityManager.QueueDeleteEntity(uid); } From 9c666457c2c13505725b7d3c336cae50f0666460 Mon Sep 17 00:00:00 2001 From: Saphire <lattice@saphi.re> Date: Wed, 20 Nov 2024 07:49:45 +0600 Subject: [PATCH 161/187] Move some of the new singularity code into shared Hopefully without explosions yay --- .../SingularityGeneratorSystem.cs | 18 ++---------- .../SingularityGeneratorComponent.cs | 8 ++--- .../SharedSingularityGeneratorSystem.cs | 29 +++++++++++++++++++ 3 files changed, 35 insertions(+), 20 deletions(-) rename {Content.Server => Content.Shared}/Singularity/Components/SingularityGeneratorComponent.cs (91%) create mode 100644 Content.Shared/Singularity/EntitySystems/SharedSingularityGeneratorSystem.cs diff --git a/Content.Server/Singularity/EntitySystems/SingularityGeneratorSystem.cs b/Content.Server/Singularity/EntitySystems/SingularityGeneratorSystem.cs index cfca86bf4af..95722449b87 100644 --- a/Content.Server/Singularity/EntitySystems/SingularityGeneratorSystem.cs +++ b/Content.Server/Singularity/EntitySystems/SingularityGeneratorSystem.cs @@ -1,10 +1,7 @@ -using System.Diagnostics; using Content.Server.ParticleAccelerator.Components; -using Content.Server.Popups; -using Content.Server.Singularity.Components; -using Content.Shared.Emag.Systems; using Content.Shared.Popups; using Content.Shared.Singularity.Components; +using Content.Shared.Singularity.EntitySystems; using Robust.Server.GameObjects; using Robust.Shared.Physics; using Robust.Shared.Physics.Components; @@ -13,7 +10,7 @@ namespace Content.Server.Singularity.EntitySystems; -public sealed class SingularityGeneratorSystem : EntitySystem +public sealed class SingularityGeneratorSystem : SharedSingularityGeneratorSystem { #region Dependencies [Dependency] private readonly IViewVariablesManager _vvm = default!; @@ -21,7 +18,6 @@ public sealed class SingularityGeneratorSystem : EntitySystem [Dependency] private readonly PhysicsSystem _physics = default!; [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly MetaDataSystem _metadata = default!; - [Dependency] private readonly PopupSystem _popupSystem = default!; #endregion Dependencies public override void Initialize() @@ -29,7 +25,6 @@ public override void Initialize() base.Initialize(); SubscribeLocalEvent<ParticleProjectileComponent, StartCollideEvent>(HandleParticleCollide); - SubscribeLocalEvent<SingularityGeneratorComponent, GotEmaggedEvent>(OnEmagged); var vvHandle = _vvm.GetTypeHandler<SingularityGeneratorComponent>(); vvHandle.AddPath(nameof(SingularityGeneratorComponent.Power), (_, comp) => comp.Power, SetPower); @@ -138,7 +133,7 @@ private void HandleParticleCollide(EntityUid uid, ParticleProjectileComponent co if (!contained && !generatorComp.FailsafeDisabled) { generatorComp.NextFailsafe = _timing.CurTime + generatorComp.FailsafeCooldown; - _popupSystem.PopupEntity(Loc.GetString("comp-generator-failsafe", ("target", args.OtherEntity)), args.OtherEntity, PopupType.LargeCaution); + PopupSystem.PopupEntity(Loc.GetString("comp-generator-failsafe", ("target", args.OtherEntity)), args.OtherEntity, PopupType.LargeCaution); } else { @@ -159,13 +154,6 @@ private void HandleParticleCollide(EntityUid uid, ParticleProjectileComponent co EntityManager.QueueDeleteEntity(uid); } - - private void OnEmagged(EntityUid uid, SingularityGeneratorComponent component, ref GotEmaggedEvent args) - { - _popupSystem.PopupEntity(Loc.GetString("comp-generator-failsafe-disabled", ("target", uid)), uid); - component.FailsafeDisabled = true; - args.Handled = true; - } #endregion Event Handlers /// <summary> diff --git a/Content.Server/Singularity/Components/SingularityGeneratorComponent.cs b/Content.Shared/Singularity/Components/SingularityGeneratorComponent.cs similarity index 91% rename from Content.Server/Singularity/Components/SingularityGeneratorComponent.cs rename to Content.Shared/Singularity/Components/SingularityGeneratorComponent.cs index c8feeb5d5db..3643ed31a6f 100644 --- a/Content.Server/Singularity/Components/SingularityGeneratorComponent.cs +++ b/Content.Shared/Singularity/Components/SingularityGeneratorComponent.cs @@ -1,14 +1,12 @@ using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; -using Content.Server.Singularity.EntitySystems; using Content.Shared.Physics; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; -namespace Content.Server.Singularity.Components; +namespace Content.Shared.Singularity.Components; -[RegisterComponent, AutoGenerateComponentPause] -[Access(typeof(SingularityGeneratorSystem))] +[RegisterComponent, AutoGenerateComponentPause, AutoGenerateComponentState] public sealed partial class SingularityGeneratorComponent : Component { /// <summary> @@ -28,7 +26,7 @@ public sealed partial class SingularityGeneratorComponent : Component /// <summary> /// Allows the generator to ignore all the failsafe stuff, e.g. when emagged /// </summary> - [DataField] + [DataField, AutoNetworkedField] public bool FailsafeDisabled = false; /// <summary> diff --git a/Content.Shared/Singularity/EntitySystems/SharedSingularityGeneratorSystem.cs b/Content.Shared/Singularity/EntitySystems/SharedSingularityGeneratorSystem.cs new file mode 100644 index 00000000000..8830cb0624c --- /dev/null +++ b/Content.Shared/Singularity/EntitySystems/SharedSingularityGeneratorSystem.cs @@ -0,0 +1,29 @@ +using Content.Shared.Emag.Systems; +using Content.Shared.Popups; +using Content.Shared.Singularity.Components; + +namespace Content.Shared.Singularity.EntitySystems; + +/// <summary> +/// Shared part of SingularitySingularityGeneratorSystem +/// </summary> +public abstract class SharedSingularityGeneratorSystem : EntitySystem +{ + #region Dependencies + [Dependency] protected readonly SharedPopupSystem PopupSystem = default!; + #endregion Dependencies + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent<SingularityGeneratorComponent, GotEmaggedEvent>(OnEmagged); + } + + private void OnEmagged(EntityUid uid, SingularityGeneratorComponent component, ref GotEmaggedEvent args) + { + PopupSystem.PopupEntity(Loc.GetString("comp-generator-failsafe-disabled", ("target", uid)), uid); + component.FailsafeDisabled = true; + args.Handled = true; + } +} \ No newline at end of file From 1fa1975e60d35b788c57ab2479f6f962f99d53fc Mon Sep 17 00:00:00 2001 From: beck-thompson <107373427+beck-thompson@users.noreply.github.com> Date: Tue, 19 Nov 2024 17:53:52 -0800 Subject: [PATCH 162/187] Fix toggle verbs (#32138) First commit Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> --- .../Components/ItemToggleComponent.cs | 12 +++++++ .../Components/ToggleVerbComponent.cs | 18 ---------- .../Item/ItemToggle/ItemToggleSystem.cs | 2 +- .../Item/ItemToggle/ToggleVerbSystem.cs | 34 ------------------- .../components/magboots-component.ftl | 3 -- .../fire-extinguisher-component.ftl | 3 +- .../Entities/Clothing/Shoes/magboots.yml | 2 -- .../Objects/Misc/fire_extinguisher.yml | 4 +-- 8 files changed, 17 insertions(+), 61 deletions(-) delete mode 100644 Content.Shared/Item/ItemToggle/Components/ToggleVerbComponent.cs delete mode 100644 Content.Shared/Item/ItemToggle/ToggleVerbSystem.cs delete mode 100644 Resources/Locale/en-US/clothing/components/magboots-component.ftl diff --git a/Content.Shared/Item/ItemToggle/Components/ItemToggleComponent.cs b/Content.Shared/Item/ItemToggle/Components/ItemToggleComponent.cs index 47edec135d8..110ae80626e 100644 --- a/Content.Shared/Item/ItemToggle/Components/ItemToggleComponent.cs +++ b/Content.Shared/Item/ItemToggle/Components/ItemToggleComponent.cs @@ -32,6 +32,18 @@ public sealed partial class ItemToggleComponent : Component [DataField] public bool OnUse = true; + /// <summary> + /// The localized text to display in the verb to activate. + /// </summary> + [DataField] + public string VerbToggleOn = "item-toggle-activate"; + + /// <summary> + /// The localized text to display in the verb to de-activate. + /// </summary> + [DataField] + public string VerbToggleOff = "item-toggle-deactivate"; + /// <summary> /// Whether the item's toggle can be predicted by the client. /// </summary> diff --git a/Content.Shared/Item/ItemToggle/Components/ToggleVerbComponent.cs b/Content.Shared/Item/ItemToggle/Components/ToggleVerbComponent.cs deleted file mode 100644 index b673c55e0f1..00000000000 --- a/Content.Shared/Item/ItemToggle/Components/ToggleVerbComponent.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Content.Shared.Item.ItemToggle; -using Robust.Shared.GameStates; - -namespace Content.Shared.Item.ItemToggle.Components; - -/// <summary> -/// Adds a verb for toggling something, requires <see cref="ItemToggleComponent"/>. -/// </summary> -[RegisterComponent, NetworkedComponent, Access(typeof(ToggleVerbSystem))] -public sealed partial class ToggleVerbComponent : Component -{ - /// <summary> - /// Text the verb will have. - /// Gets passed "entity" as the entity's identity string. - /// </summary> - [DataField(required: true)] - public LocId Text = string.Empty; -} diff --git a/Content.Shared/Item/ItemToggle/ItemToggleSystem.cs b/Content.Shared/Item/ItemToggle/ItemToggleSystem.cs index d5bbaac12c3..f6752a67f61 100644 --- a/Content.Shared/Item/ItemToggle/ItemToggleSystem.cs +++ b/Content.Shared/Item/ItemToggle/ItemToggleSystem.cs @@ -78,7 +78,7 @@ private void OnActivateVerb(Entity<ItemToggleComponent> ent, ref GetVerbsEvent<A args.Verbs.Add(new ActivationVerb() { - Text = !ent.Comp.Activated ? Loc.GetString("item-toggle-activate") : Loc.GetString("item-toggle-deactivate"), + Text = !ent.Comp.Activated ? Loc.GetString(ent.Comp.VerbToggleOn) : Loc.GetString(ent.Comp.VerbToggleOff), Act = () => { Toggle((ent.Owner, ent.Comp), user, predicted: ent.Comp.Predictable); diff --git a/Content.Shared/Item/ItemToggle/ToggleVerbSystem.cs b/Content.Shared/Item/ItemToggle/ToggleVerbSystem.cs deleted file mode 100644 index 858cd9bc111..00000000000 --- a/Content.Shared/Item/ItemToggle/ToggleVerbSystem.cs +++ /dev/null @@ -1,34 +0,0 @@ -using Content.Shared.IdentityManagement; -using Content.Shared.Item.ItemToggle.Components; -using Content.Shared.Verbs; - -namespace Content.Shared.Item.ItemToggle; - -/// <summary> -/// Adds a verb for toggling something with <see cref="ToggleVerbComponent"/>. -/// </summary> -public sealed class ToggleVerbSystem : EntitySystem -{ - [Dependency] private readonly ItemToggleSystem _toggle = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent<ToggleVerbComponent, GetVerbsEvent<ActivationVerb>>(OnGetVerbs); - } - - private void OnGetVerbs(Entity<ToggleVerbComponent> ent, ref GetVerbsEvent<ActivationVerb> args) - { - if (!args.CanAccess || !args.CanInteract) - return; - - var name = Identity.Entity(ent, EntityManager); - var user = args.User; - args.Verbs.Add(new ActivationVerb() - { - Text = Loc.GetString(ent.Comp.Text, ("entity", name)), - Act = () => _toggle.Toggle(ent.Owner, user) - }); - } -} diff --git a/Resources/Locale/en-US/clothing/components/magboots-component.ftl b/Resources/Locale/en-US/clothing/components/magboots-component.ftl deleted file mode 100644 index 4113a748620..00000000000 --- a/Resources/Locale/en-US/clothing/components/magboots-component.ftl +++ /dev/null @@ -1,3 +0,0 @@ - -# Toggle Magboots Verb -toggle-magboots-verb-get-data-text = Toggle Magboots \ No newline at end of file diff --git a/Resources/Locale/en-US/fire-extinguisher/fire-extinguisher-component.ftl b/Resources/Locale/en-US/fire-extinguisher/fire-extinguisher-component.ftl index f6418793918..de1fcd7d4e3 100644 --- a/Resources/Locale/en-US/fire-extinguisher/fire-extinguisher-component.ftl +++ b/Resources/Locale/en-US/fire-extinguisher/fire-extinguisher-component.ftl @@ -1,3 +1,4 @@ fire-extinguisher-component-after-interact-refilled-message = {$owner} is now refilled fire-extinguisher-component-safety-on-message = Its safety is on! -fire-extinguisher-component-verb-text = Toggle safety +fire-extinguisher-component-verb-remove = Remove safety +fire-extinguisher-component-verb-engage = Engage safety diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml b/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml index ab8084c91c0..6610ae87ccf 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml @@ -15,8 +15,6 @@ - type: ToggleClothing action: ActionToggleMagboots mustEquip: false - - type: ToggleVerb - text: toggle-magboots-verb-get-data-text - type: ComponentToggler components: - type: NoSlip diff --git a/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml b/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml index b0c586fc753..4b4200fed8f 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml @@ -47,8 +47,8 @@ params: variation: 0.125 volume: -4 - - type: ToggleVerb - text: fire-extinguisher-component-verb-text + verbToggleOn: fire-extinguisher-component-verb-remove + verbToggleOff: fire-extinguisher-component-verb-engage - type: SpraySafety - type: MeleeWeapon wideAnimationRotation: 180 From e98383d572c8d6ba251c7914777becc681ebac91 Mon Sep 17 00:00:00 2001 From: qwerltaz <69696513+qwerltaz@users.noreply.github.com> Date: Wed, 20 Nov 2024 02:54:49 +0100 Subject: [PATCH 163/187] Construction menu grid view (#32577) * button * implement populate grid view * tweak min width * Make grid button toggle visible * tweak min window size * fix missing recipe button when mirroring item * make grid buttons toggleable * align button texture vertically * selected grid item has plain color background * tweak window width so all buttons look good * rename select method, defer colouring * get icon better * whoops * simpler button toggle * spritesys frame0, move spritesys * delete old sprite system refs --- .../Construction/UI/ConstructionMenu.xaml | 13 ++- .../Construction/UI/ConstructionMenu.xaml.cs | 17 ++- .../UI/ConstructionMenuPresenter.cs | 102 +++++++++++++++--- .../construction/ui/construction-menu.ftl | 1 + 4 files changed, 114 insertions(+), 19 deletions(-) diff --git a/Content.Client/Construction/UI/ConstructionMenu.xaml b/Content.Client/Construction/UI/ConstructionMenu.xaml index 6e4438cf6fd..a934967a533 100644 --- a/Content.Client/Construction/UI/ConstructionMenu.xaml +++ b/Content.Client/Construction/UI/ConstructionMenu.xaml @@ -1,15 +1,20 @@ <DefaultWindow xmlns="https://spacestation14.io"> <BoxContainer Orientation="Horizontal" HorizontalExpand="True"> - <BoxContainer Orientation="Vertical" HorizontalExpand="True" SizeFlagsStretchRatio="0.4" Margin="0 0 5 0"> + <BoxContainer Orientation="Vertical" MinWidth="243" Margin="0 0 5 0"> <BoxContainer Orientation="Horizontal" HorizontalExpand="True" Margin="0 0 0 5"> <LineEdit Name="SearchBar" PlaceHolder="Search" HorizontalExpand="True"/> <OptionButton Name="OptionCategories" Access="Public" MinSize="130 0"/> </BoxContainer> <ItemList Name="Recipes" Access="Public" SelectMode="Single" VerticalExpand="True"/> + <ScrollContainer Name="RecipesGridScrollContainer" VerticalExpand="True" Access="Public" Visible="False"> + <GridContainer Name="RecipesGrid" Columns="5" Access="Public"/> + </ScrollContainer> </BoxContainer> - <BoxContainer Orientation="Vertical" HorizontalExpand="True" SizeFlagsStretchRatio="0.6"> - <Button Name="FavoriteButton" Visible="false" HorizontalExpand="False" - HorizontalAlignment="Right" Margin="0 0 0 15"/> + <BoxContainer Orientation="Vertical" HorizontalExpand="True"> + <BoxContainer Orientation="Horizontal"> + <Button Name="MenuGridViewButton" ToggleMode="True" Text="{Loc construction-menu-grid-view}"/> + <Button Name="FavoriteButton" Visible="false"/> + </BoxContainer> <Control> <BoxContainer Orientation="Vertical" HorizontalExpand="True" Margin="0 0 0 5"> <BoxContainer Orientation="Horizontal" Align="Center"> diff --git a/Content.Client/Construction/UI/ConstructionMenu.xaml.cs b/Content.Client/Construction/UI/ConstructionMenu.xaml.cs index f0cb8148762..9ab8a156005 100644 --- a/Content.Client/Construction/UI/ConstructionMenu.xaml.cs +++ b/Content.Client/Construction/UI/ConstructionMenu.xaml.cs @@ -25,11 +25,16 @@ public interface IConstructionMenuView : IDisposable OptionButton OptionCategories { get; } bool EraseButtonPressed { get; set; } + bool GridViewButtonPressed { get; set; } bool BuildButtonPressed { get; set; } ItemList Recipes { get; } ItemList RecipeStepList { get; } + + ScrollContainer RecipesGridScrollContainer { get; } + GridContainer RecipesGrid { get; } + event EventHandler<(string search, string catagory)> PopulateRecipes; event EventHandler<ItemList.Item?> RecipeSelected; event EventHandler RecipeFavorited; @@ -72,9 +77,16 @@ public bool EraseButtonPressed set => EraseButton.Pressed = value; } + public bool GridViewButtonPressed + { + get => MenuGridViewButton.Pressed; + set => MenuGridViewButton.Pressed = value; + } + public ConstructionMenu() { - SetSize = MinSize = new Vector2(720, 320); + SetSize = new Vector2(560, 450); + MinSize = new Vector2(560, 320); IoCManager.InjectDependencies(this); RobustXamlLoader.Load(this); @@ -102,6 +114,9 @@ public ConstructionMenu() EraseButton.OnToggled += args => EraseButtonToggled?.Invoke(this, args.Pressed); FavoriteButton.OnPressed += args => RecipeFavorited?.Invoke(this, EventArgs.Empty); + + MenuGridViewButton.OnPressed += _ => + PopulateRecipes?.Invoke(this, (SearchBar.Text, Categories[OptionCategories.SelectedId])); } public event EventHandler? ClearAllGhosts; diff --git a/Content.Client/Construction/UI/ConstructionMenuPresenter.cs b/Content.Client/Construction/UI/ConstructionMenuPresenter.cs index c315cdedb2c..d35e8fbe769 100644 --- a/Content.Client/Construction/UI/ConstructionMenuPresenter.cs +++ b/Content.Client/Construction/UI/ConstructionMenuPresenter.cs @@ -1,7 +1,8 @@ using System.Linq; +using System.Numerics; +using Content.Client.Stylesheets; using Content.Client.UserInterface.Systems.MenuBar.Widgets; using Content.Shared.Construction.Prototypes; -using Content.Shared.Tag; using Content.Shared.Whitelist; using Robust.Client.GameObjects; using Robust.Client.Graphics; @@ -11,7 +12,6 @@ using Robust.Client.UserInterface.Controls; using Robust.Client.Utility; using Robust.Shared.Enums; -using Robust.Shared.Graphics; using Robust.Shared.Prototypes; using static Robust.Client.UserInterface.Controls.BaseButton; @@ -33,10 +33,12 @@ internal sealed class ConstructionMenuPresenter : IDisposable private readonly IConstructionMenuView _constructionView; private readonly EntityWhitelistSystem _whitelistSystem; + private readonly SpriteSystem _spriteSystem; private ConstructionSystem? _constructionSystem; private ConstructionPrototype? _selected; private List<ConstructionPrototype> _favoritedRecipes = []; + private Dictionary<string, TextureButton> _recipeButtons = new(); private string _selectedCategory = string.Empty; private string _favoriteCatName = "construction-category-favorites"; private string _forAllCategoryName = "construction-category-all"; @@ -85,6 +87,7 @@ public ConstructionMenuPresenter() IoCManager.InjectDependencies(this); _constructionView = new ConstructionMenu(); _whitelistSystem = _entManager.System<EntityWhitelistSystem>(); + _spriteSystem = _entManager.System<SpriteSystem>(); // This is required so that if we load after the system is initialized, we can bind to it immediately if (_systemManager.TryGetEntitySystem<ConstructionSystem>(out var constructionSystem)) @@ -150,12 +153,24 @@ private void OnViewRecipeSelected(object? sender, ItemList.Item? item) PopulateInfo(_selected); } + private void OnGridViewRecipeSelected(object? sender, ConstructionPrototype? recipe) + { + if (recipe is null) + { + _selected = null; + _constructionView.ClearRecipeInfo(); + return; + } + + _selected = recipe; + if (_placementManager.IsActive && !_placementManager.Eraser) UpdateGhostPlacement(); + PopulateInfo(_selected); + } + private void OnViewPopulateRecipes(object? sender, (string search, string catagory) args) { var (search, category) = args; - var recipesList = _constructionView.Recipes; - recipesList.Clear(); var recipes = new List<ConstructionPrototype>(); var isEmptyCategory = string.IsNullOrEmpty(category) || category == _forAllCategoryName; @@ -201,12 +216,73 @@ private void OnViewPopulateRecipes(object? sender, (string search, string catago recipes.Sort((a, b) => string.Compare(a.Name, b.Name, StringComparison.InvariantCulture)); - foreach (var recipe in recipes) + var recipesList = _constructionView.Recipes; + recipesList.Clear(); + + var recipesGrid = _constructionView.RecipesGrid; + recipesGrid.RemoveAllChildren(); + + _constructionView.RecipesGridScrollContainer.Visible = _constructionView.GridViewButtonPressed; + _constructionView.Recipes.Visible = !_constructionView.GridViewButtonPressed; + + if (_constructionView.GridViewButtonPressed) + { + foreach (var recipe in recipes) + { + var itemButton = new TextureButton + { + TextureNormal = _spriteSystem.Frame0(recipe.Icon), + VerticalAlignment = Control.VAlignment.Center, + Name = recipe.Name, + ToolTip = recipe.Name, + Scale = new Vector2(1.35f), + ToggleMode = true, + }; + var itemButtonPanelContainer = new PanelContainer + { + PanelOverride = new StyleBoxFlat { BackgroundColor = StyleNano.ButtonColorDefault }, + Children = { itemButton }, + }; + + itemButton.OnToggled += buttonToggledEventArgs => + { + SelectGridButton(itemButton, buttonToggledEventArgs.Pressed); + + if (buttonToggledEventArgs.Pressed && + _selected != null && + _recipeButtons.TryGetValue(_selected.Name, out var oldButton)) + { + oldButton.Pressed = false; + SelectGridButton(oldButton, false); + } + + OnGridViewRecipeSelected(this, buttonToggledEventArgs.Pressed ? recipe : null); + }; + + recipesGrid.AddChild(itemButtonPanelContainer); + _recipeButtons[recipe.Name] = itemButton; + var isCurrentButtonSelected = _selected == recipe; + itemButton.Pressed = isCurrentButtonSelected; + SelectGridButton(itemButton, isCurrentButtonSelected); + } + } + else { - recipesList.Add(GetItem(recipe, recipesList)); + foreach (var recipe in recipes) + { + recipesList.Add(GetItem(recipe, recipesList)); + } } + } + + private void SelectGridButton(TextureButton button, bool select) + { + if (button.Parent is not PanelContainer buttonPanel) + return; - // There is apparently no way to set which + button.Modulate = select ? Color.Green : Color.White; + var buttonColor = select ? StyleNano.ButtonColorDefault : Color.Transparent; + buttonPanel.PanelOverride = new StyleBoxFlat { BackgroundColor = buttonColor }; } private void PopulateCategories(string? selectCategory = null) @@ -257,11 +333,10 @@ private void PopulateCategories(string? selectCategory = null) private void PopulateInfo(ConstructionPrototype prototype) { - var spriteSys = _systemManager.GetEntitySystem<SpriteSystem>(); _constructionView.ClearRecipeInfo(); _constructionView.SetRecipeInfo( - prototype.Name, prototype.Description, spriteSys.Frame0(prototype.Icon), + prototype.Name, prototype.Description, _spriteSystem.Frame0(prototype.Icon), prototype.Type != ConstructionType.Item, !_favoritedRecipes.Contains(prototype)); @@ -274,7 +349,6 @@ private void GenerateStepList(ConstructionPrototype prototype, ItemList stepList if (_constructionSystem?.GetGuide(prototype) is not { } guide) return; - var spriteSys = _systemManager.GetEntitySystem<SpriteSystem>(); foreach (var entry in guide.Entries) { @@ -290,20 +364,20 @@ private void GenerateStepList(ConstructionPrototype prototype, ItemList stepList // The padding needs to be applied regardless of text length... (See PadLeft documentation) text = text.PadLeft(text.Length + entry.Padding); - var icon = entry.Icon != null ? spriteSys.Frame0(entry.Icon) : Texture.Transparent; + var icon = entry.Icon != null ? _spriteSystem.Frame0(entry.Icon) : Texture.Transparent; stepList.AddItem(text, icon, false); } } - private static ItemList.Item GetItem(ConstructionPrototype recipe, ItemList itemList) + private ItemList.Item GetItem(ConstructionPrototype recipe, ItemList itemList) { return new(itemList) { Metadata = recipe, Text = recipe.Name, - Icon = recipe.Icon.Frame0(), + Icon = _spriteSystem.Frame0(recipe.Icon), TooltipEnabled = true, - TooltipText = recipe.Description + TooltipText = recipe.Description, }; } diff --git a/Resources/Locale/en-US/construction/ui/construction-menu.ftl b/Resources/Locale/en-US/construction/ui/construction-menu.ftl index 82ebc01bc99..4d100247856 100644 --- a/Resources/Locale/en-US/construction/ui/construction-menu.ftl +++ b/Resources/Locale/en-US/construction/ui/construction-menu.ftl @@ -5,3 +5,4 @@ construction-menu-place-ghost = Place construction ghost construction-menu-clear-all = Clear All construction-menu-eraser-mode = Eraser Mode construction-menu-craft = Craft +construction-menu-grid-view = Grid View From 7e8e2c72128459f2d90999e818421d5225f1b0b4 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Wed, 20 Nov 2024 01:55:55 +0000 Subject: [PATCH 164/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 0eaa287ba93..d244f1dba13 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,18 +1,4 @@ Entries: -- author: Mervill - changes: - - message: Fixed suffocation alerts not appearing. - type: Fix - id: 7127 - time: '2024-08-17T02:02:51.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/31115 -- author: TokenStyle - changes: - - message: Plant's scream mutation now have 10+ scream varieties. - type: Add - id: 7128 - time: '2024-08-17T02:09:25.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30862 - author: Boaz1111 changes: - message: Phlogiston now also ignites people who consume it. @@ -3920,3 +3906,20 @@ id: 7626 time: '2024-11-20T01:05:20.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33417 +- author: Beck Thompson + changes: + - message: Toggle verbs are no longer duplicated on magboots and fire extinguishers! + type: Fix + id: 7627 + time: '2024-11-20T01:53:53.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32138 +- author: qwerltaz + changes: + - message: A new grid item view is available in the construction menu, togglable + with a button. + type: Add + - message: Construction menu default window size was tweaked. + type: Tweak + id: 7628 + time: '2024-11-20T01:54:49.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32577 From a13a4f7a99b6c0e5c99965d7694c917c830ed43f Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Wed, 20 Nov 2024 02:00:37 +0000 Subject: [PATCH 165/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index d244f1dba13..a8b4ecff28f 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Boaz1111 - changes: - - message: Phlogiston now also ignites people who consume it. - type: Add - id: 7129 - time: '2024-08-17T02:49:11.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30955 - author: slarticodefast changes: - message: Fixed borgs brains being teleported outside their chassis and PAIs outside @@ -3923,3 +3916,10 @@ id: 7628 time: '2024-11-20T01:54:49.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/32577 +- author: SpaceLizard24 + changes: + - message: Reduced crafting costs of colored light tubes. + type: Tweak + id: 7629 + time: '2024-11-20T01:59:31.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33376 From 1b3672e0950176d8fb26e6c933f9c6ddb1d7bc79 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Wed, 20 Nov 2024 02:06:21 +0000 Subject: [PATCH 166/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index a8b4ecff28f..a5471160244 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: slarticodefast - changes: - - message: Fixed borgs brains being teleported outside their chassis and PAIs outside - a PDA or pocket by the bluespace anomaly. - type: Fix - id: 7130 - time: '2024-08-17T04:58:23.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30744 - author: EmoGarbage404 changes: - message: You can no longer see wreck names in the salvage magnet UI. @@ -3923,3 +3915,10 @@ id: 7629 time: '2024-11-20T01:59:31.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33376 +- author: thetolbean + changes: + - message: Items with a damage of 0 now have correct damage examination text. + type: Fix + id: 7630 + time: '2024-11-20T02:05:15.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33064 From 44db676b24c8781e3290d499c7233125d7789cf6 Mon Sep 17 00:00:00 2001 From: Saphire <lattice@saphi.re> Date: Wed, 20 Nov 2024 09:32:50 +0600 Subject: [PATCH 167/187] Actually make the emagging popup work properly --- .../Singularity/Systems/EventHorizonSystem.cs | 2 +- .../Systems/SingularityGeneratorSystem.cs | 12 ++++++++++++ .../Singularity/Systems/SingularitySystem.cs | 2 +- Content.Shared/Emag/Systems/EmagSystem.cs | 7 +++++++ .../Components/SingularityGeneratorComponent.cs | 3 ++- .../SharedSingularityGeneratorSystem.cs | 1 - 6 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 Content.Client/Singularity/Systems/SingularityGeneratorSystem.cs diff --git a/Content.Client/Singularity/Systems/EventHorizonSystem.cs b/Content.Client/Singularity/Systems/EventHorizonSystem.cs index 3dd63a0c9c8..606116fced4 100644 --- a/Content.Client/Singularity/Systems/EventHorizonSystem.cs +++ b/Content.Client/Singularity/Systems/EventHorizonSystem.cs @@ -1,7 +1,7 @@ using Content.Shared.Singularity.EntitySystems; using Content.Shared.Singularity.Components; -namespace Content.Client.Singularity.EntitySystems; +namespace Content.Client.Singularity.Systems; /// <summary> /// The client-side version of <see cref="SharedEventHorizonSystem"/>. diff --git a/Content.Client/Singularity/Systems/SingularityGeneratorSystem.cs b/Content.Client/Singularity/Systems/SingularityGeneratorSystem.cs new file mode 100644 index 00000000000..f5b85f8b3cf --- /dev/null +++ b/Content.Client/Singularity/Systems/SingularityGeneratorSystem.cs @@ -0,0 +1,12 @@ +using Content.Shared.Singularity.EntitySystems; +using Content.Shared.Singularity.Components; + +namespace Content.Client.Singularity.Systems; + +/// <summary> +/// The client-side version of <see cref="SharedSingularityGeneratorSystem"/>. +/// Manages <see cref="SingularityGeneratorComponent"/>s. +/// Exists to make relevant signal handlers (ie: <see cref="SharedSingularityGeneratorSystem.OnEmagged"/>) work on the client. +/// </summary> +public sealed class SingularityGeneratorSystem : SharedSingularityGeneratorSystem +{} diff --git a/Content.Client/Singularity/Systems/SingularitySystem.cs b/Content.Client/Singularity/Systems/SingularitySystem.cs index 5293ad499d0..50a12466be1 100644 --- a/Content.Client/Singularity/Systems/SingularitySystem.cs +++ b/Content.Client/Singularity/Systems/SingularitySystem.cs @@ -5,7 +5,7 @@ using Robust.Shared.GameStates; using Robust.Shared.Utility; -namespace Content.Client.Singularity.EntitySystems; +namespace Content.Client.Singularity.Systems; /// <summary> /// The client-side version of <see cref="SharedSingularitySystem"/>. diff --git a/Content.Shared/Emag/Systems/EmagSystem.cs b/Content.Shared/Emag/Systems/EmagSystem.cs index 4d3bbcbb8e9..3a556b47063 100644 --- a/Content.Shared/Emag/Systems/EmagSystem.cs +++ b/Content.Shared/Emag/Systems/EmagSystem.cs @@ -96,6 +96,13 @@ public bool DoEmagEffect(EntityUid user, EntityUid target) } } +/// <summary> +/// Shows a popup to emag user (client side only!) and adds <see cref="EmaggedComponent"/> to the entity when handled +/// </summary> +/// <param name="UserUid">Emag user</param> +/// <param name="Handled">Did the emagging succeed? Causes a user-only popup to show on client side</param> +/// <param name="Repeatable">Can the entity be emagged more than once? Prevents adding of <see cref="EmaggedComponent"/></param> +/// <remarks>Needs to be handled in shared/client, not just the server, to actually show the emagging popup</remarks> [ByRefEvent] public record struct GotEmaggedEvent(EntityUid UserUid, bool Handled = false, bool Repeatable = false); diff --git a/Content.Shared/Singularity/Components/SingularityGeneratorComponent.cs b/Content.Shared/Singularity/Components/SingularityGeneratorComponent.cs index 3643ed31a6f..715584b5bc6 100644 --- a/Content.Shared/Singularity/Components/SingularityGeneratorComponent.cs +++ b/Content.Shared/Singularity/Components/SingularityGeneratorComponent.cs @@ -3,10 +3,11 @@ using Content.Shared.Physics; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; +using Robust.Shared.GameStates; namespace Content.Shared.Singularity.Components; -[RegisterComponent, AutoGenerateComponentPause, AutoGenerateComponentState] +[RegisterComponent, AutoGenerateComponentPause, NetworkedComponent, AutoGenerateComponentState] public sealed partial class SingularityGeneratorComponent : Component { /// <summary> diff --git a/Content.Shared/Singularity/EntitySystems/SharedSingularityGeneratorSystem.cs b/Content.Shared/Singularity/EntitySystems/SharedSingularityGeneratorSystem.cs index 8830cb0624c..ee6dc89bb84 100644 --- a/Content.Shared/Singularity/EntitySystems/SharedSingularityGeneratorSystem.cs +++ b/Content.Shared/Singularity/EntitySystems/SharedSingularityGeneratorSystem.cs @@ -22,7 +22,6 @@ public override void Initialize() private void OnEmagged(EntityUid uid, SingularityGeneratorComponent component, ref GotEmaggedEvent args) { - PopupSystem.PopupEntity(Loc.GetString("comp-generator-failsafe-disabled", ("target", uid)), uid); component.FailsafeDisabled = true; args.Handled = true; } From b8b33b97af4920aef77ed055096f5fb81096dc3d Mon Sep 17 00:00:00 2001 From: DrSmugleaf <drsmugleaf@gmail.com> Date: Tue, 19 Nov 2024 21:15:15 -0800 Subject: [PATCH 168/187] Move PlayerBeforeSpawnEvent and PlayerSpawnCompleteEvent to Shared --- .../GameTicking/GameTicker.Spawning.cs | 69 +------------------ .../GameTicking/PlayerBeforeSpawnEvent.cs | 33 +++++++++ .../GameTicking/PlayerSpawnCompleteEvent.cs | 44 ++++++++++++ 3 files changed, 78 insertions(+), 68 deletions(-) create mode 100644 Content.Shared/GameTicking/PlayerBeforeSpawnEvent.cs create mode 100644 Content.Shared/GameTicking/PlayerSpawnCompleteEvent.cs diff --git a/Content.Server/GameTicking/GameTicker.Spawning.cs b/Content.Server/GameTicking/GameTicker.Spawning.cs index 9c8b04770fd..4bda391ae27 100644 --- a/Content.Server/GameTicking/GameTicker.Spawning.cs +++ b/Content.Server/GameTicking/GameTicker.Spawning.cs @@ -7,12 +7,12 @@ using Content.Server.Speech.Components; using Content.Server.Station.Components; using Content.Shared.Database; +using Content.Shared.GameTicking; using Content.Shared.Mind; using Content.Shared.Players; using Content.Shared.Preferences; using Content.Shared.Roles; using Content.Shared.Roles.Jobs; -using JetBrains.Annotations; using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Network; @@ -455,71 +455,4 @@ public EntityCoordinates GetObserverSpawnPoint() #endregion } - - /// <summary> - /// Event raised broadcast before a player is spawned by the GameTicker. - /// You can use this event to spawn a player off-station on late-join but also at round start. - /// When this event is handled, the GameTicker will not perform its own player-spawning logic. - /// </summary> - [PublicAPI] - public sealed class PlayerBeforeSpawnEvent : HandledEntityEventArgs - { - public ICommonSession Player { get; } - public HumanoidCharacterProfile Profile { get; } - public string? JobId { get; } - public bool LateJoin { get; } - public EntityUid Station { get; } - - public PlayerBeforeSpawnEvent(ICommonSession player, - HumanoidCharacterProfile profile, - string? jobId, - bool lateJoin, - EntityUid station) - { - Player = player; - Profile = profile; - JobId = jobId; - LateJoin = lateJoin; - Station = station; - } - } - - /// <summary> - /// Event raised both directed and broadcast when a player has been spawned by the GameTicker. - /// You can use this to handle people late-joining, or to handle people being spawned at round start. - /// Can be used to give random players a role, modify their equipment, etc. - /// </summary> - [PublicAPI] - public sealed class PlayerSpawnCompleteEvent : EntityEventArgs - { - public EntityUid Mob { get; } - public ICommonSession Player { get; } - public string? JobId { get; } - public bool LateJoin { get; } - public bool Silent { get; } - public EntityUid Station { get; } - public HumanoidCharacterProfile Profile { get; } - - // Ex. If this is the 27th person to join, this will be 27. - public int JoinOrder { get; } - - public PlayerSpawnCompleteEvent(EntityUid mob, - ICommonSession player, - string? jobId, - bool lateJoin, - bool silent, - int joinOrder, - EntityUid station, - HumanoidCharacterProfile profile) - { - Mob = mob; - Player = player; - JobId = jobId; - LateJoin = lateJoin; - Silent = silent; - Station = station; - Profile = profile; - JoinOrder = joinOrder; - } - } } diff --git a/Content.Shared/GameTicking/PlayerBeforeSpawnEvent.cs b/Content.Shared/GameTicking/PlayerBeforeSpawnEvent.cs new file mode 100644 index 00000000000..48623ecf8e0 --- /dev/null +++ b/Content.Shared/GameTicking/PlayerBeforeSpawnEvent.cs @@ -0,0 +1,33 @@ +using Content.Shared.Preferences; +using JetBrains.Annotations; +using Robust.Shared.Player; + +namespace Content.Shared.GameTicking; + +/// <summary> +/// Event raised broadcast before a player is spawned by the GameTicker. +/// You can use this event to spawn a player off-station on late-join but also at round start. +/// When this event is handled, the GameTicker will not perform its own player-spawning logic. +/// </summary> +[PublicAPI] +public sealed class PlayerBeforeSpawnEvent : HandledEntityEventArgs +{ + public ICommonSession Player { get; } + public HumanoidCharacterProfile Profile { get; } + public string? JobId { get; } + public bool LateJoin { get; } + public EntityUid Station { get; } + + public PlayerBeforeSpawnEvent(ICommonSession player, + HumanoidCharacterProfile profile, + string? jobId, + bool lateJoin, + EntityUid station) + { + Player = player; + Profile = profile; + JobId = jobId; + LateJoin = lateJoin; + Station = station; + } +} diff --git a/Content.Shared/GameTicking/PlayerSpawnCompleteEvent.cs b/Content.Shared/GameTicking/PlayerSpawnCompleteEvent.cs new file mode 100644 index 00000000000..034b76beeb0 --- /dev/null +++ b/Content.Shared/GameTicking/PlayerSpawnCompleteEvent.cs @@ -0,0 +1,44 @@ +using Content.Shared.Preferences; +using JetBrains.Annotations; +using Robust.Shared.Player; + +namespace Content.Shared.GameTicking; + +/// <summary> +/// Event raised both directed and broadcast when a player has been spawned by the GameTicker. +/// You can use this to handle people late-joining, or to handle people being spawned at round start. +/// Can be used to give random players a role, modify their equipment, etc. +/// </summary> +[PublicAPI] +public sealed class PlayerSpawnCompleteEvent : EntityEventArgs +{ + public EntityUid Mob { get; } + public ICommonSession Player { get; } + public string? JobId { get; } + public bool LateJoin { get; } + public bool Silent { get; } + public EntityUid Station { get; } + public HumanoidCharacterProfile Profile { get; } + + // Ex. If this is the 27th person to join, this will be 27. + public int JoinOrder { get; } + + public PlayerSpawnCompleteEvent(EntityUid mob, + ICommonSession player, + string? jobId, + bool lateJoin, + bool silent, + int joinOrder, + EntityUid station, + HumanoidCharacterProfile profile) + { + Mob = mob; + Player = player; + JobId = jobId; + LateJoin = lateJoin; + Silent = silent; + Station = station; + Profile = profile; + JoinOrder = joinOrder; + } +} From f5d0e955e326529cfda7fd3894c5164f6cdda1ca Mon Sep 17 00:00:00 2001 From: DrSmugleaf <drsmugleaf@gmail.com> Date: Tue, 19 Nov 2024 21:16:49 -0800 Subject: [PATCH 169/187] Fix imports --- Content.Server/Bed/Cryostorage/CryostorageSystem.cs | 4 ++-- Content.Server/GameTicking/Rules/DeathMatchRuleSystem.cs | 1 + Content.Server/Medical/SuitSensors/SuitSensorSystem.cs | 5 +++-- Content.Server/Shuttles/Systems/ArrivalsSystem.cs | 2 +- Content.Server/Silicons/Laws/SiliconLawSystem.cs | 5 ++--- .../StationRecords/Systems/StationRecordsSystem.cs | 3 +-- Content.Server/Traits/TraitSystem.cs | 3 +-- 7 files changed, 11 insertions(+), 12 deletions(-) diff --git a/Content.Server/Bed/Cryostorage/CryostorageSystem.cs b/Content.Server/Bed/Cryostorage/CryostorageSystem.cs index 345f51783ca..21f43c31956 100644 --- a/Content.Server/Bed/Cryostorage/CryostorageSystem.cs +++ b/Content.Server/Bed/Cryostorage/CryostorageSystem.cs @@ -1,6 +1,6 @@ +using System.Globalization; using Content.Server.Chat.Managers; using Content.Server.Chat.Systems; -using Content.Server.GameTicking; using Content.Server.Ghost; using Content.Server.Hands.Systems; using Content.Server.Inventory; @@ -14,6 +14,7 @@ using Content.Shared.Chat; using Content.Shared.Climbing.Systems; using Content.Shared.Database; +using Content.Shared.GameTicking; using Content.Shared.Hands.Components; using Content.Shared.Mind.Components; using Content.Shared.StationRecords; @@ -26,7 +27,6 @@ using Robust.Shared.Enums; using Robust.Shared.Network; using Robust.Shared.Player; -using System.Globalization; namespace Content.Server.Bed.Cryostorage; diff --git a/Content.Server/GameTicking/Rules/DeathMatchRuleSystem.cs b/Content.Server/GameTicking/Rules/DeathMatchRuleSystem.cs index 557e44f0952..2e97a72f3b5 100644 --- a/Content.Server/GameTicking/Rules/DeathMatchRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/DeathMatchRuleSystem.cs @@ -6,6 +6,7 @@ using Content.Server.Points; using Content.Server.RoundEnd; using Content.Server.Station.Systems; +using Content.Shared.GameTicking; using Content.Shared.GameTicking.Components; using Content.Shared.Points; using Content.Shared.Storage; diff --git a/Content.Server/Medical/SuitSensors/SuitSensorSystem.cs b/Content.Server/Medical/SuitSensors/SuitSensorSystem.cs index f56b16432e1..51974d7036c 100644 --- a/Content.Server/Medical/SuitSensors/SuitSensorSystem.cs +++ b/Content.Server/Medical/SuitSensors/SuitSensorSystem.cs @@ -4,7 +4,6 @@ using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; using Content.Server.Emp; -using Content.Server.GameTicking; using Content.Server.Medical.CrewMonitoring; using Content.Server.Popups; using Content.Server.Station.Systems; @@ -14,8 +13,10 @@ using Content.Shared.DeviceNetwork; using Content.Shared.DoAfter; using Content.Shared.Examine; +using Content.Shared.GameTicking; using Content.Shared.Interaction; using Content.Shared.Medical.SuitSensor; +using Content.Shared.Mobs; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; using Content.Shared.Verbs; @@ -383,7 +384,7 @@ public void SetSensor(Entity<SuitSensorComponent> sensors, SuitSensorMode mode, // Get mob total damage crit threshold int? totalDamageThreshold = null; - if (_mobThresholdSystem.TryGetThresholdForState(sensor.User.Value, Shared.Mobs.MobState.Critical, out var critThreshold)) + if (_mobThresholdSystem.TryGetThresholdForState(sensor.User.Value, MobState.Critical, out var critThreshold)) totalDamageThreshold = critThreshold.Value.Int(); // finally, form suit sensor status diff --git a/Content.Server/Shuttles/Systems/ArrivalsSystem.cs b/Content.Server/Shuttles/Systems/ArrivalsSystem.cs index 46d2cd69b91..1f972d96756 100644 --- a/Content.Server/Shuttles/Systems/ArrivalsSystem.cs +++ b/Content.Server/Shuttles/Systems/ArrivalsSystem.cs @@ -19,10 +19,10 @@ using Content.Shared.CCVar; using Content.Shared.Damage.Components; using Content.Shared.DeviceNetwork; +using Content.Shared.GameTicking; using Content.Shared.Mobs.Components; using Content.Shared.Movement.Components; using Content.Shared.Parallax.Biomes; -using Content.Shared.Preferences; using Content.Shared.Salvage; using Content.Shared.Shuttles.Components; using Content.Shared.Tiles; diff --git a/Content.Server/Silicons/Laws/SiliconLawSystem.cs b/Content.Server/Silicons/Laws/SiliconLawSystem.cs index 9a361132a5c..db78cc0ac7a 100644 --- a/Content.Server/Silicons/Laws/SiliconLawSystem.cs +++ b/Content.Server/Silicons/Laws/SiliconLawSystem.cs @@ -1,7 +1,6 @@ using System.Linq; using Content.Server.Administration; using Content.Server.Chat.Managers; -using Content.Server.GameTicking; using Content.Server.Radio.Components; using Content.Server.Roles; using Content.Server.Station.Systems; @@ -9,6 +8,7 @@ using Content.Shared.Chat; using Content.Shared.Emag.Components; using Content.Shared.Emag.Systems; +using Content.Shared.GameTicking; using Content.Shared.Mind; using Content.Shared.Mind.Components; using Content.Shared.Roles; @@ -17,12 +17,11 @@ using Content.Shared.Stunnable; using Content.Shared.Wires; using Robust.Server.GameObjects; +using Robust.Shared.Audio; using Robust.Shared.Containers; using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Toolshed; -using Robust.Shared.Audio; -using Robust.Shared.GameObjects; namespace Content.Server.Silicons.Laws; diff --git a/Content.Server/StationRecords/Systems/StationRecordsSystem.cs b/Content.Server/StationRecords/Systems/StationRecordsSystem.cs index e941e65c415..6dbc58f4d38 100644 --- a/Content.Server/StationRecords/Systems/StationRecordsSystem.cs +++ b/Content.Server/StationRecords/Systems/StationRecordsSystem.cs @@ -1,9 +1,8 @@ using System.Diagnostics.CodeAnalysis; -using System.IO; using Content.Server.Access.Systems; using Content.Server.Forensics; -using Content.Server.GameTicking; using Content.Shared.Access.Components; +using Content.Shared.GameTicking; using Content.Shared.Inventory; using Content.Shared.PDA; using Content.Shared.Preferences; diff --git a/Content.Server/Traits/TraitSystem.cs b/Content.Server/Traits/TraitSystem.cs index e19f736f067..38cbc1859cb 100644 --- a/Content.Server/Traits/TraitSystem.cs +++ b/Content.Server/Traits/TraitSystem.cs @@ -1,11 +1,10 @@ -using Content.Server.GameTicking; +using Content.Shared.GameTicking; using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; using Content.Shared.Roles; using Content.Shared.Traits; using Content.Shared.Whitelist; using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.Manager; namespace Content.Server.Traits; From a7003acd77424da8034630dbc4b13adbf8b727d7 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Wed, 20 Nov 2024 05:57:05 +0000 Subject: [PATCH 170/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index a5471160244..8bdfdfc8a1e 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: EmoGarbage404 - changes: - - message: You can no longer see wreck names in the salvage magnet UI. - type: Tweak - id: 7131 - time: '2024-08-17T05:09:21.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/31087 - author: EmoGarbage404 changes: - message: You can now smelt ores in intervals smaller than 30. @@ -3922,3 +3915,11 @@ id: 7630 time: '2024-11-20T02:05:15.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33064 +- author: SaphireLattice + changes: + - message: The Singularity/Tesla generator now requires being surrounded by containment + fields to activate. This can be disabled with an Emag. + type: Tweak + id: 7631 + time: '2024-11-20T05:55:58.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33358 From 4f3ac3ea683c1c1c13de6d413af6d99863432a08 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Wed, 20 Nov 2024 07:19:45 +0000 Subject: [PATCH 171/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 8bdfdfc8a1e..62e7b185d33 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: EmoGarbage404 - changes: - - message: You can now smelt ores in intervals smaller than 30. - type: Add - id: 7132 - time: '2024-08-17T05:12:55.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/31074 - author: themias changes: - message: Added a recipe for croissants @@ -3923,3 +3916,11 @@ id: 7631 time: '2024-11-20T05:55:58.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33358 +- author: TheWaffleJesus + changes: + - message: You can now craft items with stacks of capacitors without it eating it + all! + type: Fix + id: 7632 + time: '2024-11-20T07:18:38.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/31966 From f9533a637a54b4a27f4c7dc4b5becbde99e169e6 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Wed, 20 Nov 2024 07:56:20 +0000 Subject: [PATCH 172/187] Automatic changelog update --- Resources/Changelog/Admin.yml | 8 +++++++ Resources/Changelog/Changelog.yml | 36 +++++++++++++++++++------------ 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index fc25d313aa7..d0f393c2655 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -612,5 +612,13 @@ Entries: id: 76 time: '2024-11-15T03:24:27.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33262 +- author: ScarKy0, GoldenCan + changes: + - message: Players that take over emagged/ion stormed borgs now correctly get assigned + the antag role. + type: Fix + id: 77 + time: '2024-11-20T07:55:12.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33311 Name: Admin Order: 1 diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 62e7b185d33..dc08dbe207c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,18 +1,4 @@ Entries: -- author: themias - changes: - - message: Added a recipe for croissants - type: Add - id: 7133 - time: '2024-08-17T14:09:42.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30825 -- author: Ubaser - changes: - - message: Red crowbars no longer fit in pockets. - type: Fix - id: 7134 - time: '2024-08-17T14:32:04.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30939 - author: iztokbajcar changes: - message: Fixed some typos in the guidebook. @@ -3924,3 +3910,25 @@ id: 7632 time: '2024-11-20T07:18:38.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/31966 +- author: ScarKy0, GoldenCan + changes: + - message: Ion stormed lawsets no longer persist between shifts. + type: Fix + - message: Cyborgs are now notified when inserted into a chassis with modified laws. + type: Tweak + id: 7633 + time: '2024-11-20T07:55:12.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33311 +- author: ScarKy0, GoldenCan + changes: + - message: The Derelict Cyborg - a broken cyborg with altered laws due to year of + exposure to ion storms - can now appear as a ghost role through a new midround + event. + type: Add + - message: An ion storm affecting a Cyborg can no longer alter the law order of + the AI, cyborgs created later in the round or AI's and cyborgs in subsequent + rounds. + type: Fix + id: 7634 + time: '2024-11-20T07:55:13.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32499 From cb246f5d7d79ba8c8b7a250a063abf17f0e6d969 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Wed, 20 Nov 2024 19:10:05 +1100 Subject: [PATCH 173/187] Set airlock unlit layers as invisible (#32484) Doesn't really affect anything due to appearance bulldozing this but this aligns with their actual normal states so. --- .../Structures/Doors/Airlocks/base_structureairlocks.yml | 1 + .../Entities/Structures/Doors/Airlocks/highsec.yml | 1 + .../Entities/Structures/Doors/Airlocks/shuttle.yml | 1 + .../Structures/Doors/Windoors/base_structurewindoors.yml | 6 ++++++ 4 files changed, 9 insertions(+) diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml index fe725b06841..fbaa570f2e0 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml @@ -20,6 +20,7 @@ - state: closed_unlit shader: unshaded map: ["enum.DoorVisualLayers.BaseUnlit"] + visible: false - state: welded map: ["enum.WeldableLayers.BaseWelded"] - state: bolted_unlit diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/highsec.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/highsec.yml index e5470f27811..2338b66f873 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/highsec.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/highsec.yml @@ -16,6 +16,7 @@ - state: closed_unlit shader: unshaded map: ["enum.DoorVisualLayers.BaseUnlit"] + visible: false - state: welded map: ["enum.WeldableLayers.BaseWelded"] - state: bolted_unlit diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml index 81653e99ff2..e6905d61cc1 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml @@ -37,6 +37,7 @@ - state: closed_unlit shader: unshaded map: ["enum.DoorVisualLayers.BaseUnlit"] + visible: false - state: welded map: ["enum.WeldableLayers.BaseWelded"] - state: bolted_unlit diff --git a/Resources/Prototypes/Entities/Structures/Doors/Windoors/base_structurewindoors.yml b/Resources/Prototypes/Entities/Structures/Doors/Windoors/base_structurewindoors.yml index 800affffbb8..c011d6424cc 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Windoors/base_structurewindoors.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Windoors/base_structurewindoors.yml @@ -32,6 +32,7 @@ - state: closed_unlit shader: unshaded map: ["enum.DoorVisualLayers.BaseUnlit"] + visible: false - state: welded map: ["enum.WeldableLayers.BaseWelded"] - state: bolted_unlit @@ -164,6 +165,7 @@ - state: closed_unlit shader: unshaded map: [ "enum.DoorVisualLayers.BaseUnlit" ] + visible: false - state: welded map: [ "enum.WeldableLayers.BaseWelded" ] - state: bolted_unlit @@ -224,6 +226,7 @@ - state: closed_unlit shader: unshaded map: [ "enum.DoorVisualLayers.BaseUnlit" ] + visible: false - state: welded map: [ "enum.WeldableLayers.BaseWelded" ] - state: bolted_unlit @@ -279,6 +282,7 @@ - state: closed_unlit shader: unshaded map: [ "enum.DoorVisualLayers.BaseUnlit" ] + visible: false - state: welded map: [ "enum.WeldableLayers.BaseWelded" ] - state: bolted_unlit @@ -339,6 +343,7 @@ - state: closed_unlit shader: unshaded map: [ "enum.DoorVisualLayers.BaseUnlit" ] + visible: false - state: welded map: [ "enum.WeldableLayers.BaseWelded" ] - state: bolted_unlit @@ -394,6 +399,7 @@ - state: closed_unlit shader: unshaded map: [ "enum.DoorVisualLayers.BaseUnlit" ] + visible: false - state: welded map: [ "enum.WeldableLayers.BaseWelded" ] - state: bolted_unlit From 5c0a32b8b84367a5f14351abda4829e607a977ca Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers <pieterjan.briers+git@gmail.com> Date: Thu, 21 Nov 2024 00:07:12 +0100 Subject: [PATCH 174/187] Update to Robust v237.2.0 --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 32bca7cfd41..92b0e7f1a85 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 32bca7cfd417edcad9a60c2b1703eba8675f56af +Subproject commit 92b0e7f1a853979a1361ed24d2fb5ffc11f43f66 From 0f0b141f218008b41d95945355720f9fcb082622 Mon Sep 17 00:00:00 2001 From: ThatGuyUSA <thatguyusa123@gmail.com> Date: Thu, 21 Nov 2024 05:22:57 -0800 Subject: [PATCH 175/187] Syndicate item fix ups (#33435) tweaks and fixes --- Resources/Locale/en-US/contraband/contraband-severity.ftl | 2 +- Resources/Locale/en-US/store/uplink-catalog.ftl | 6 +++--- Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml | 2 +- Resources/Prototypes/Entities/Mobs/Player/silicon.yml | 2 +- Resources/Prototypes/Entities/Objects/Fun/darts.yml | 2 +- .../Entities/Objects/Specific/Medical/hypospray.yml | 2 +- .../Entities/Objects/Specific/Robotics/borg_modules.yml | 6 +++--- .../Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml | 2 +- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Resources/Locale/en-US/contraband/contraband-severity.ftl b/Resources/Locale/en-US/contraband/contraband-severity.ftl index 37d83c4575a..303cb7c1d51 100644 --- a/Resources/Locale/en-US/contraband/contraband-severity.ftl +++ b/Resources/Locale/en-US/contraband/contraband-severity.ftl @@ -1,4 +1,4 @@ -contraband-examine-text-Minor = [color=yellow]This item is considered minor contraband.[/color] +contraband-examine-text-Minor = [color=yellow]This item is considered minor contraband.[/color] contraband-examine-text-Restricted = [color=yellow]This item is departmentally restricted.[/color] contraband-examine-text-Restricted-department = [color=yellow]This item is restricted to {$departments}, and may be considered contraband.[/color] contraband-examine-text-Major = [color=red]This item is considered major contraband.[/color] diff --git a/Resources/Locale/en-US/store/uplink-catalog.ftl b/Resources/Locale/en-US/store/uplink-catalog.ftl index a78f39d5696..82c80dab1f4 100644 --- a/Resources/Locale/en-US/store/uplink-catalog.ftl +++ b/Resources/Locale/en-US/store/uplink-catalog.ftl @@ -28,7 +28,7 @@ uplink-gloves-north-star-desc = A pair of gloves that reduce your punching coold # Explosives uplink-explosive-grenade-name = Explosive Grenade -uplink-explosive-grenade-desc = A simplistic grenade with a three-and-a-half-second long fuse that is geared towards injuring personnel. Causes minimal hull damage. +uplink-explosive-grenade-desc = A simplistic grenade with a 3.5 second long fuse that is geared towards injuring personnel. Causes minimal hull damage. uplink-flash-grenade-name = Flashbang uplink-flash-grenade-desc = A standard-issue flashbang, capable of blinding and slowing down anyone without proper protection. This, of course, includes you; make sure you're properly equipped before using it. @@ -37,7 +37,7 @@ uplink-smoke-grenade-name = Smoke Grenade uplink-smoke-grenade-desc = A grenade that releases a huge cloud of smoke, perfect for killing someone in the shadows or making a sneaky getaway. uplink-mini-bomb-name = Minibomb -uplink-mini-bomb-desc = A low-yield, high-impact precision sabotage explosive with a five-second long fuse. Perfect for quickly destroying a machine, dead body, or whatever else needs to go. +uplink-mini-bomb-desc = A low-yield, high-impact precision sabotage explosive with a 5 second long fuse. Perfect for quickly destroying a machine, dead body, or whatever else needs to go. uplink-supermatter-grenade-name = Supermatter Grenade uplink-supermatter-grenade-desc = Grenade that simulates delamination of a suppermatter engine, generates powerful gravity well. Explosion comparable to a Mini Bomb. @@ -405,7 +405,7 @@ uplink-outlaw-glasses-name = Outlaw Glasses uplink-outlaw-glasses-desc = A must for every self-respecting undercover agent. uplink-costume-pyjama-name = Syndicate Pyjama Duffel Bag -uplink-costume-pyjama-desc = Contains 3 pairs of syndicate pyjamas and 3 plushies for the ultimate sleepover. +uplink-costume-pyjama-desc = Contains 3 pairs of syndicate pyjamas and 4 plushies for the ultimate sleepover. uplink-costume-clown-name = Clown Costume Duffel Bag uplink-costume-clown-desc = Contains a complete Clown outfit. Includes PDA and service radio. diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml index 75b3a290659..bc4b6411d1f 100644 --- a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml @@ -159,7 +159,7 @@ parent: ClothingBackpackDuffelSyndicateBundle id: ClothingBackpackDuffelSyndicatePyjamaBundle name: syndicate pyjama duffel bag - description: Contains 3 pairs of syndicate pyjamas and 3 plushies for the ultimate sleepover. + description: Contains 3 pairs of syndicate pyjamas and 4 plushies for the ultimate sleepover. components: - type: Storage grid: diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index bcac46ed842..611f73a3dd6 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -251,7 +251,7 @@ - type: entity id: AntimovCircuitBoard - parent: BaseElectronics + parent: [BaseElectronics, BaseSyndicateContraband] name: law board (Antimov) description: An electronics board containing the Antimov lawset. components: diff --git a/Resources/Prototypes/Entities/Objects/Fun/darts.yml b/Resources/Prototypes/Entities/Objects/Fun/darts.yml index a127930feaf..4230a361084 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/darts.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/darts.yml @@ -195,7 +195,7 @@ id: HypoDartBox name: hypodart box suffix: HypoDart - description: A small box containing an hypodart. Packaging disintegrates when opened, leaving no evidence behind. + description: A small box containing a hypodart. Packaging disintegrates when opened, leaving no evidence behind. components: - type: Sprite sprite: Objects/Fun/Darts/dartbox.rsi diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml index 93eeef2073c..067d40bbfff 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml @@ -448,7 +448,7 @@ name: hyperzine microinjector parent: [ChemicalMedipen, BaseSyndicateContraband] id: StimpackMini - description: A microinjector of hyperzine that give you about fifteen seconds of the chemical's effects. + description: A microinjector of hyperzine that give you about 15 seconds of the chemical's effects. components: - type: Sprite sprite: Objects/Specific/Medical/medipen.rsi diff --git a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml index 0ac1171c5d7..5cc3adef900 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml @@ -568,7 +568,7 @@ - type: entity id: BorgModuleOperative - parent: [ BaseBorgModuleSyndicate, BaseProviderBorgModule ] + parent: [ BaseBorgModuleSyndicate, BaseProviderBorgModule, BaseSyndicateContraband ] name: operative cyborg module description: A module that comes with a crowbar, an Emag and a syndicate pinpointer. components: @@ -586,7 +586,7 @@ - type: entity id: BorgModuleEsword - parent: [ BaseBorgModuleSyndicate, BaseProviderBorgModule ] + parent: [ BaseBorgModuleSyndicate, BaseProviderBorgModule, BaseSyndicateContraband ] name: energy sword cyborg module description: A module that comes with a double energy sword. components: @@ -603,7 +603,7 @@ - type: entity id: BorgModuleL6C - parent: [ BaseBorgModuleSyndicateAssault, BaseProviderBorgModule ] + parent: [ BaseBorgModuleSyndicateAssault, BaseProviderBorgModule, BaseSyndicateContraband ] name: L6C ROW cyborg module description: A module that comes with a L6C. components: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml index 5140a358e10..d23e34a1ecb 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml @@ -82,7 +82,7 @@ - type: Appearance - type: entity - name: C-20r sub machine gun + name: C-20r submachine gun parent: [BaseWeaponSubMachineGun, BaseSyndicateContraband] id: WeaponSubMachineGunC20r description: A firearm that is often used by the infamous nuclear operatives. Uses .35 auto ammo. From f5930bb5662362233d88f6e01733a25551aeab1a Mon Sep 17 00:00:00 2001 From: IProduceWidgets <107586145+IProduceWidgets@users.noreply.github.com> Date: Thu, 21 Nov 2024 09:20:11 -0500 Subject: [PATCH 176/187] Coal presents and chrimmas tree options. Presents no longer itemify (#33147) * Dont ensure ItemComp because it could lead to weirds, and also PickupOrDrop handles non-items already. * presents and tree * woops * reviews a --- .../Holiday/Christmas/RandomGiftSystem.cs | 1 - .../Entities/Objects/Decoration/flora.yml | 25 ++++++++++++++++--- .../Entities/Objects/Decoration/present.yml | 15 ++++++++--- .../Entities/Objects/Materials/ore.yml | 24 ++++++++++++++++++ Resources/migration.yml | 2 ++ 5 files changed, 59 insertions(+), 8 deletions(-) diff --git a/Content.Server/Holiday/Christmas/RandomGiftSystem.cs b/Content.Server/Holiday/Christmas/RandomGiftSystem.cs index 4603f45ed81..0816c2c36ce 100644 --- a/Content.Server/Holiday/Christmas/RandomGiftSystem.cs +++ b/Content.Server/Holiday/Christmas/RandomGiftSystem.cs @@ -60,7 +60,6 @@ private void OnUseInHand(EntityUid uid, RandomGiftComponent component, UseInHand var coords = Transform(args.User).Coordinates; var handsEnt = Spawn(component.SelectedEntity, coords); _adminLogger.Add(LogType.EntitySpawn, LogImpact.Low, $"{ToPrettyString(args.User)} used {ToPrettyString(uid)} which spawned {ToPrettyString(handsEnt)}"); - EnsureComp<ItemComponent>(handsEnt); // For insane mode. if (component.Wrapper is not null) Spawn(component.Wrapper, coords); diff --git a/Resources/Prototypes/Entities/Objects/Decoration/flora.yml b/Resources/Prototypes/Entities/Objects/Decoration/flora.yml index 25ff782108a..31bc24cca63 100644 --- a/Resources/Prototypes/Entities/Objects/Decoration/flora.yml +++ b/Resources/Prototypes/Entities/Objects/Decoration/flora.yml @@ -463,7 +463,7 @@ - type: entity parent: BaseTreeConifer id: FloraTreeChristmas02 - suffix: PresentsGiver + suffix: Safe Presents name: christmas tree components: - type: Sprite @@ -481,16 +481,33 @@ spawnEntries: - id: PresentRandom orGroup: present - - id: PresentRandomCash - prob: 0.20 + - id: PresentRandomCash # buy your own. + prob: 0.1 orGroup: present - - id: PresentRandomAsh + - id: PresentRandomCoal # naughty prob: 0.05 orGroup: present receivedPopup: christmas-tree-got-gift deniedPopup: christmas-tree-no-gift requiredHoliday: FestiveSeason +- type: entity + parent: FloraTreeChristmas02 + id: FloraTreeChristmas03 + suffix: Insane Presents + name: christmas tree + components: + - type: LimitedItemGiver + spawnEntries: + - id: PresentRandom + orGroup: present + - id: PresentRandomUnsafe + prob: 0.5 + orGroup: present + - id: PresentRandomInsane + prob: 0.2 + orGroup: present + - type: entity parent: BaseTreeConifer id: FloraTreeStumpConifer diff --git a/Resources/Prototypes/Entities/Objects/Decoration/present.yml b/Resources/Prototypes/Entities/Objects/Decoration/present.yml index 861caddd064..e9ddd3b517d 100644 --- a/Resources/Prototypes/Entities/Objects/Decoration/present.yml +++ b/Resources/Prototypes/Entities/Objects/Decoration/present.yml @@ -374,14 +374,23 @@ path: /Audio/Effects/unwrap.ogg - type: entity - id: PresentRandomAsh + id: PresentRandomCoal parent: [PresentBase, BaseItem] - suffix: Filled Ash + suffix: Filled Coal components: - type: SpawnItemsOnUse items: - id: PresentTrash - - id: Ash # No coal yet! + - id: Coal1 + orGroup: GiftPool + - id: Coal5 + prob: .4 + orGroup: GiftPool + - id: Coal10 + prob: .2 + orGroup: GiftPool + - id: Coal15 + prob: .1 orGroup: GiftPool sound: path: /Audio/Effects/unwrap.ogg diff --git a/Resources/Prototypes/Entities/Objects/Materials/ore.yml b/Resources/Prototypes/Entities/Objects/Materials/ore.yml index a5cd959c47a..fd46fb40be2 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/ore.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/ore.yml @@ -333,6 +333,30 @@ - type: Stack count: 1 +- type: entity + parent: Coal + id: Coal5 + suffix: Five + components: + - type: Stack + count: 5 + +- type: entity + parent: Coal + id: Coal10 + suffix: Ten + components: + - type: Stack + count: 10 + +- type: entity + parent: Coal + id: Coal15 + suffix: Fifteen + components: + - type: Stack + count: 15 + - type: entity parent: OreBase id: SaltOre diff --git a/Resources/migration.yml b/Resources/migration.yml index a09986ebd86..ab3193e4c92 100644 --- a/Resources/migration.yml +++ b/Resources/migration.yml @@ -476,5 +476,7 @@ RightLegBorgJanitor: RightLegBorg HeadBorgJanitor: LightHeadBorg TorsoBorgJanitor: TorsoBorg +# 2024-11-17 +PresentRandomAsh: PresentRandomCoal # 2024-11-19 CrateCrewMonitoringBoards: CrateCrewMonitoring From 11ee2f9a3724b5d7a6a92015c9996d3007640b11 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Thu, 21 Nov 2024 14:21:21 +0000 Subject: [PATCH 177/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index dc08dbe207c..37b488b0fa2 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: iztokbajcar - changes: - - message: Fixed some typos in the guidebook. - type: Fix - id: 7135 - time: '2024-08-18T15:31:48.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/31159 - author: Unkn0wnGh0st333 changes: - message: changed human male coughing @@ -3932,3 +3925,10 @@ id: 7634 time: '2024-11-20T07:55:13.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/32499 +- author: IProduceWidgets + changes: + - message: Presents no longer make non-items into items + type: Tweak + id: 7635 + time: '2024-11-21T14:20:11.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33147 From 4f703ae9ceca7f9f4f1a5cca845b0ae1e18e6305 Mon Sep 17 00:00:00 2001 From: Vasilis <vasilis@pikachu.systems> Date: Thu, 21 Nov 2024 16:51:18 +0000 Subject: [PATCH 178/187] Fix approval labeler (#33440) * Fix approval labeler * Update labeler-review.yml * Update labeler-review.yml --- .github/workflows/labeler-review.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/labeler-review.yml b/.github/workflows/labeler-review.yml index 79be86a005a..a0341e42a18 100644 --- a/.github/workflows/labeler-review.yml +++ b/.github/workflows/labeler-review.yml @@ -15,9 +15,9 @@ jobs: id: checkUserMember with: username: ${{ github.actor }} - team: "content-maintainers,junior-maintainers" # CHANGE TEAM NAME HERE PLEASE <------ - GITHUB_TOKEN: ${{ secrets.PAT }} + team: "content-maintainers,junior-maintainers" + GITHUB_TOKEN: ${{ secrets.GH_PAT }} - if: ${{ steps.checkUserMember.outputs.isTeamMember == 'true' }} uses: actions-ecosystem/action-add-labels@v1 with: - labels: "PR: Approved" \ No newline at end of file + labels: "S: Approved" From 5a751a820a980c92369ab8d256bb2e1dedb94e64 Mon Sep 17 00:00:00 2001 From: DrSmugleaf <10968691+DrSmugleaf@users.noreply.github.com> Date: Thu, 21 Nov 2024 18:56:05 -0800 Subject: [PATCH 179/187] Fix admin ghosts not being able to see items in pockets or interact with them (#31076) * Fix admin ghosts not being able to see items in pouches or interact with them * fix * oops --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- .../Inventory/StrippableBoundUserInterface.cs | 9 ++++++++- .../Interaction/SharedInteractionSystem.cs | 4 +++- Content.Shared/Inventory/InventorySystem.Equip.cs | 2 ++ Content.Shared/Inventory/InventorySystem.Relay.cs | 2 +- .../Inventory/InventoryTemplatePrototype.cs | 5 +++++ Content.Shared/Strip/SharedStrippableSystem.cs | 14 +++++++++++++- 6 files changed, 32 insertions(+), 4 deletions(-) diff --git a/Content.Client/Inventory/StrippableBoundUserInterface.cs b/Content.Client/Inventory/StrippableBoundUserInterface.cs index 2ce07758c96..af7815935dd 100644 --- a/Content.Client/Inventory/StrippableBoundUserInterface.cs +++ b/Content.Client/Inventory/StrippableBoundUserInterface.cs @@ -17,6 +17,7 @@ using Content.Shared.Strip.Components; using JetBrains.Annotations; using Robust.Client.GameObjects; +using Robust.Client.Player; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Shared.Input; @@ -29,10 +30,13 @@ namespace Content.Client.Inventory [UsedImplicitly] public sealed class StrippableBoundUserInterface : BoundUserInterface { + [Dependency] private readonly IPlayerManager _player = default!; [Dependency] private readonly IUserInterfaceManager _ui = default!; + private readonly ExamineSystem _examine; private readonly InventorySystem _inv; private readonly SharedCuffableSystem _cuffable; + private readonly StrippableSystem _strippable; [ViewVariables] private const int ButtonSeparation = 4; @@ -51,6 +55,8 @@ public StrippableBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, u _examine = EntMan.System<ExamineSystem>(); _inv = EntMan.System<InventorySystem>(); _cuffable = EntMan.System<SharedCuffableSystem>(); + _strippable = EntMan.System<StrippableSystem>(); + _virtualHiddenEntity = EntMan.SpawnEntity(HiddenPocketEntityId, MapCoordinates.Nullspace); } @@ -198,7 +204,8 @@ private void AddInventoryButton(EntityUid invUid, string slotId, InventoryCompon var entity = container.ContainedEntity; // If this is a full pocket, obscure the real entity - if (entity != null && slotDef.StripHidden) + // this does not work for modified clients because they are still sent the real entity + if (entity != null && _strippable.IsStripHidden(slotDef, _player.LocalEntity)) entity = _virtualHiddenEntity; var button = new SlotButton(new SlotData(slotDef, container)); diff --git a/Content.Shared/Interaction/SharedInteractionSystem.cs b/Content.Shared/Interaction/SharedInteractionSystem.cs index 7f2ecb50f88..2926e1d1b38 100644 --- a/Content.Shared/Interaction/SharedInteractionSystem.cs +++ b/Content.Shared/Interaction/SharedInteractionSystem.cs @@ -21,6 +21,7 @@ using Content.Shared.Players.RateLimiting; using Content.Shared.Popups; using Content.Shared.Storage; +using Content.Shared.Strip; using Content.Shared.Tag; using Content.Shared.Timing; using Content.Shared.UserInterface; @@ -67,6 +68,7 @@ public abstract partial class SharedInteractionSystem : EntitySystem [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly TagSystem _tagSystem = default!; [Dependency] private readonly SharedUserInterfaceSystem _ui = default!; + [Dependency] private readonly SharedStrippableSystem _strippable = default!; [Dependency] private readonly SharedPlayerRateLimitManager _rateLimit = default!; [Dependency] private readonly IConfigurationManager _cfg = default!; [Dependency] private readonly ISharedChatManager _chat = default!; @@ -1321,7 +1323,7 @@ public bool CanAccessEquipment(EntityUid user, EntityUid target) if (wearer == user) return true; - if (slotDef.StripHidden) + if (_strippable.IsStripHidden(slotDef, user)) return false; return InRangeUnobstructed(user, wearer) && _containerSystem.IsInSameOrParentContainer(user, wearer); diff --git a/Content.Shared/Inventory/InventorySystem.Equip.cs b/Content.Shared/Inventory/InventorySystem.Equip.cs index f089dfaf238..8158b8c2f62 100644 --- a/Content.Shared/Inventory/InventorySystem.Equip.cs +++ b/Content.Shared/Inventory/InventorySystem.Equip.cs @@ -10,6 +10,7 @@ using Content.Shared.Item; using Content.Shared.Movement.Systems; using Content.Shared.Popups; +using Content.Shared.Strip; using Content.Shared.Strip.Components; using Content.Shared.Whitelist; using Robust.Shared.Audio.Systems; @@ -32,6 +33,7 @@ public abstract partial class InventorySystem [Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; + [Dependency] private readonly SharedStrippableSystem _strippable = default!; [ValidatePrototypeId<ItemSizePrototype>] private const string PocketableItemSize = "Small"; diff --git a/Content.Shared/Inventory/InventorySystem.Relay.cs b/Content.Shared/Inventory/InventorySystem.Relay.cs index 9573f9b43d9..d431195a816 100644 --- a/Content.Shared/Inventory/InventorySystem.Relay.cs +++ b/Content.Shared/Inventory/InventorySystem.Relay.cs @@ -114,7 +114,7 @@ private void OnGetEquipmentVerbs(EntityUid uid, InventoryComponent component, Ge var enumerator = new InventorySlotEnumerator(component); while (enumerator.NextItem(out var item, out var slotDef)) { - if (!slotDef.StripHidden || args.User == uid) + if (!_strippable.IsStripHidden(slotDef, args.User) || args.User == uid) RaiseLocalEvent(item, ev); } } diff --git a/Content.Shared/Inventory/InventoryTemplatePrototype.cs b/Content.Shared/Inventory/InventoryTemplatePrototype.cs index a4d77767e37..91accec8c93 100644 --- a/Content.Shared/Inventory/InventoryTemplatePrototype.cs +++ b/Content.Shared/Inventory/InventoryTemplatePrototype.cs @@ -1,4 +1,5 @@ using System.Numerics; +using Content.Shared.Strip; using Content.Shared.Whitelist; using Robust.Shared.Prototypes; @@ -39,6 +40,10 @@ public sealed partial class SlotDefinition [DataField("displayName", required: true)] public string DisplayName { get; private set; } = string.Empty; + /// <summary> + /// Whether or not this slot will have its item hidden in the strip menu, and block interactions. + /// <seealso cref="SharedStrippableSystem.IsStripHidden"/> + /// </summary> [DataField("stripHidden")] public bool StripHidden { get; private set; } /// <summary> diff --git a/Content.Shared/Strip/SharedStrippableSystem.cs b/Content.Shared/Strip/SharedStrippableSystem.cs index 7afe503275a..e4b31debc66 100644 --- a/Content.Shared/Strip/SharedStrippableSystem.cs +++ b/Content.Shared/Strip/SharedStrippableSystem.cs @@ -10,6 +10,7 @@ using Content.Shared.Hands.EntitySystems; using Content.Shared.IdentityManagement; using Content.Shared.Interaction; +using Content.Shared.Interaction.Components; using Content.Shared.Interaction.Events; using Content.Shared.Inventory; using Content.Shared.Inventory.VirtualItem; @@ -294,7 +295,7 @@ private void StartStripRemoveInventory( if (!stealth) { - if (slotDef.StripHidden) + if (IsStripHidden(slotDef, user)) _popupSystem.PopupEntity(Loc.GetString("strippable-component-alert-owner-hidden", ("slot", slot)), target, target, PopupType.Large); else _popupSystem.PopupEntity(Loc.GetString("strippable-component-alert-owner", ("user", Identity.Entity(user, EntityManager)), ("item", item)), target, target, PopupType.Large); @@ -660,4 +661,15 @@ private void OnCanDrop(EntityUid uid, StrippableComponent component, ref CanDrop if (args.CanDrop) args.Handled = true; } + + public bool IsStripHidden(SlotDefinition definition, EntityUid? viewer) + { + if (!definition.StripHidden) + return false; + + if (viewer == null) + return true; + + return !HasComp<BypassInteractionChecksComponent>(viewer); + } } From 38c70d6c9bb5e4e4b44a3bcc880886c01c1056d3 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Fri, 22 Nov 2024 02:57:12 +0000 Subject: [PATCH 180/187] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 37b488b0fa2..6bc25079ce7 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Unkn0wnGh0st333 - changes: - - message: changed human male coughing - type: Tweak - id: 7136 - time: '2024-08-18T16:00:42.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30893 - author: EmoGarbage404 changes: - message: Legends tell of horrifying Goliaths that roam the mining asteroid. @@ -3932,3 +3925,11 @@ id: 7635 time: '2024-11-21T14:20:11.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33147 +- author: DrSmugleaf + changes: + - message: Fixed admin ghosts not being able to see or interact with items in pouches + in the stripping menu. + type: Fix + id: 7636 + time: '2024-11-22T02:56:05.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/31076 From 403528cbf344531fedd3b5038f6463ba12eea41a Mon Sep 17 00:00:00 2001 From: chromiumboy <50505512+chromiumboy@users.noreply.github.com> Date: Thu, 21 Nov 2024 21:46:10 -0600 Subject: [PATCH 181/187] Gas pipe sensors (#33128) * Initial commit * Monitored pipe node is now referenced by name * Review changes * Simplified construction * Tweaked deconstruction to match other binary atmos devices * Helper function removal * Updated attribution --- .../Components/AtmosMonitorComponent.cs | 19 +++- .../Monitor/Systems/AtmosMonitoringSystem.cs | 17 +++- .../Locale/en-US/atmos/gas-pipe-sensor.ftl | 5 ++ .../Piping/Atmospherics/gas_pipe_sensor.yml | 84 ++++++++++++++++++ .../Graphs/utilities/gas_pipe_sensor.yml | 29 ++++++ .../Recipes/Construction/utilities.yml | 15 ++++ .../Atmospherics/gas_pipe_sensor.rsi/base.png | Bin 0 -> 248 bytes .../gas_pipe_sensor.rsi/blank.png | Bin 0 -> 83 bytes .../Atmospherics/gas_pipe_sensor.rsi/icon.png | Bin 0 -> 523 bytes .../gas_pipe_sensor.rsi/lights.png | Bin 0 -> 183 bytes .../gas_pipe_sensor.rsi/meta.json | 29 ++++++ 11 files changed, 196 insertions(+), 2 deletions(-) create mode 100644 Resources/Locale/en-US/atmos/gas-pipe-sensor.ftl create mode 100644 Resources/Prototypes/Entities/Structures/Piping/Atmospherics/gas_pipe_sensor.yml create mode 100644 Resources/Prototypes/Recipes/Construction/Graphs/utilities/gas_pipe_sensor.yml create mode 100644 Resources/Textures/Structures/Piping/Atmospherics/gas_pipe_sensor.rsi/base.png create mode 100644 Resources/Textures/Structures/Piping/Atmospherics/gas_pipe_sensor.rsi/blank.png create mode 100644 Resources/Textures/Structures/Piping/Atmospherics/gas_pipe_sensor.rsi/icon.png create mode 100644 Resources/Textures/Structures/Piping/Atmospherics/gas_pipe_sensor.rsi/lights.png create mode 100644 Resources/Textures/Structures/Piping/Atmospherics/gas_pipe_sensor.rsi/meta.json diff --git a/Content.Server/Atmos/Monitor/Components/AtmosMonitorComponent.cs b/Content.Server/Atmos/Monitor/Components/AtmosMonitorComponent.cs index cb6d4d16301..830479561de 100644 --- a/Content.Server/Atmos/Monitor/Components/AtmosMonitorComponent.cs +++ b/Content.Server/Atmos/Monitor/Components/AtmosMonitorComponent.cs @@ -48,7 +48,9 @@ public sealed partial class AtmosMonitorComponent : Component [DataField("gasThresholds")] public Dictionary<Gas, AtmosAlarmThreshold>? GasThresholds; - // Stores a reference to the gas on the tile this is on. + /// <summary> + /// Stores a reference to the gas on the tile this entity is on (or the pipe network it monitors; see <see cref="MonitorsPipeNet"/>). + /// </summary> [ViewVariables] public GasMixture? TileGas; @@ -65,4 +67,19 @@ public sealed partial class AtmosMonitorComponent : Component /// </summary> [DataField("registeredDevices")] public HashSet<string> RegisteredDevices = new(); + + /// <summary> + /// Specifies whether this device monitors its own internal pipe network rather than the surrounding atmosphere. + /// </summary> + /// <remarks> + /// If 'true', the entity will require a NodeContainerComponent with one or more PipeNodes to function. + /// </remarks> + [DataField] + public bool MonitorsPipeNet = false; + + /// <summary> + /// Specifies the name of the pipe node that this device is monitoring. + /// </summary> + [DataField] + public string NodeNameMonitoredPipe = "monitored"; } diff --git a/Content.Server/Atmos/Monitor/Systems/AtmosMonitoringSystem.cs b/Content.Server/Atmos/Monitor/Systems/AtmosMonitoringSystem.cs index fbe74cbab7f..17a24b1b0cb 100644 --- a/Content.Server/Atmos/Monitor/Systems/AtmosMonitoringSystem.cs +++ b/Content.Server/Atmos/Monitor/Systems/AtmosMonitoringSystem.cs @@ -4,6 +4,9 @@ using Content.Server.Atmos.Piping.EntitySystems; using Content.Server.DeviceNetwork; using Content.Server.DeviceNetwork.Systems; +using Content.Server.NodeContainer; +using Content.Server.NodeContainer.EntitySystems; +using Content.Server.NodeContainer.Nodes; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Shared.Atmos; @@ -25,6 +28,7 @@ public sealed class AtmosMonitorSystem : EntitySystem [Dependency] private readonly AtmosDeviceSystem _atmosDeviceSystem = default!; [Dependency] private readonly DeviceNetworkSystem _deviceNetSystem = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly NodeContainerSystem _nodeContainerSystem = default!; // Commands public const string AtmosMonitorSetThresholdCmd = "atmos_monitor_set_threshold"; @@ -56,8 +60,15 @@ private void OnAtmosDeviceLeaveAtmosphere(EntityUid uid, AtmosMonitorComponent a private void OnAtmosDeviceEnterAtmosphere(EntityUid uid, AtmosMonitorComponent atmosMonitor, ref AtmosDeviceEnabledEvent args) { + if (atmosMonitor.MonitorsPipeNet && _nodeContainerSystem.TryGetNode<PipeNode>(uid, atmosMonitor.NodeNameMonitoredPipe, out var pipeNode)) + { + atmosMonitor.TileGas = pipeNode.Air; + return; + } + atmosMonitor.TileGas = _atmosphereSystem.GetContainingMixture(uid, true); } + private void OnMapInit(EntityUid uid, AtmosMonitorComponent component, MapInitEvent args) { if (component.TemperatureThresholdId != null) @@ -206,7 +217,7 @@ private void OnAtmosUpdate(EntityUid uid, AtmosMonitorComponent component, ref A if (!this.IsPowered(uid, EntityManager)) return; - if (args.Grid == null) + if (args.Grid == null) return; // if we're not monitoring atmos, don't bother @@ -215,6 +226,10 @@ private void OnAtmosUpdate(EntityUid uid, AtmosMonitorComponent component, ref A && component.GasThresholds == null) return; + // If monitoring a pipe network, get its most recent gas mixture + if (component.MonitorsPipeNet && _nodeContainerSystem.TryGetNode<PipeNode>(uid, component.NodeNameMonitoredPipe, out var pipeNode)) + component.TileGas = pipeNode.Air; + UpdateState(uid, component.TileGas, component); } diff --git a/Resources/Locale/en-US/atmos/gas-pipe-sensor.ftl b/Resources/Locale/en-US/atmos/gas-pipe-sensor.ftl new file mode 100644 index 00000000000..8c3b8962e32 --- /dev/null +++ b/Resources/Locale/en-US/atmos/gas-pipe-sensor.ftl @@ -0,0 +1,5 @@ +gas-pipe-sensor-distribution-loop = Distribution loop +gas-pipe-sensor-waste-loop = Waste loop +gas-pipe-sensor-mixed-air = Mixed air +gas-pipe-sensor-teg-hot-loop = TEG hot loop +gas-pipe-sensor-teg-cold-loop = TEG cold loop diff --git a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/gas_pipe_sensor.yml b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/gas_pipe_sensor.yml new file mode 100644 index 00000000000..08015abe7d6 --- /dev/null +++ b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/gas_pipe_sensor.yml @@ -0,0 +1,84 @@ +- type: entity + parent: [AirSensorBase, GasPipeBase] + id: GasPipeSensor + name: gas pipe sensor + description: Reports on the status of the gas in the attached pipe network. + placement: + mode: SnapgridCenter + components: + - type: Sprite + sprite: Structures/Piping/Atmospherics/gas_pipe_sensor.rsi + drawdepth: BelowFloor + layers: + - sprite: Structures/Piping/Atmospherics/pipe.rsi + map: [ "enum.PipeVisualLayers.Pipe" ] + state: pipeStraight + - map: ["base"] + state: base + - map: [ "enum.PowerDeviceVisualLayers.Powered" ] + state: lights + shader: unshaded + - type: Appearance + - type: GenericVisualizer + visuals: + enum.PowerDeviceVisuals.Powered: + enum.PowerDeviceVisualLayers.Powered: + False: { state: blank } + True: { state: lights } + - type: AtmosMonitor + monitorsPipeNet: true + - type: ApcPowerReceiver + - type: ExtensionCableReceiver + - type: Construction + graph: GasPipeSensor + node: sensor + - type: NodeContainer + nodes: + monitored: + !type:PipeNode + nodeGroupID: Pipe + pipeDirection: Longitudinal + - type: Tag + tags: + - AirSensor + - Unstackable + +- type: entity + parent: GasPipeSensor + id: GasPipeSensorDistribution + suffix: Distribution + components: + - type: Label + currentLabel: gas-pipe-sensor-distribution-loop + +- type: entity + parent: GasPipeSensor + id: GasPipeSensorWaste + suffix: Waste + components: + - type: Label + currentLabel: gas-pipe-sensor-waste-loop + +- type: entity + parent: GasPipeSensor + id: GasPipeSensorMixedAir + suffix: Mixed air + components: + - type: Label + currentLabel: gas-pipe-sensor-mixed-air + +- type: entity + parent: GasPipeSensor + id: GasPipeSensorTEGHot + suffix: TEG hot + components: + - type: Label + currentLabel: gas-pipe-sensor-teg-hot-loop + +- type: entity + parent: GasPipeSensor + id: GasPipeSensorTEGCold + suffix: TEG cold + components: + - type: Label + currentLabel: gas-pipe-sensor-teg-cold-loop \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/gas_pipe_sensor.yml b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/gas_pipe_sensor.yml new file mode 100644 index 00000000000..bda6d036e9b --- /dev/null +++ b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/gas_pipe_sensor.yml @@ -0,0 +1,29 @@ +- type: constructionGraph + id: GasPipeSensor + start: start + graph: + - node: start + edges: + - to: sensor + steps: + - material: Steel + amount: 2 + doAfter: 1 + + - node: sensor + entity: GasPipeSensor + actions: + - !type:SetAnchor + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 2 + - !type:DeleteEntity + conditions: + - !type:EntityAnchored + anchored: false + steps: + - tool: Welding + doAfter: 1 \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Construction/utilities.yml b/Resources/Prototypes/Recipes/Construction/utilities.yml index 5dc0168fd36..2dec0e4a7d5 100644 --- a/Resources/Prototypes/Recipes/Construction/utilities.yml +++ b/Resources/Prototypes/Recipes/Construction/utilities.yml @@ -366,6 +366,21 @@ objectType: Structure canRotate: true +- type: construction + name: gas pipe sensor + id: GasPipeSensor + graph: GasPipeSensor + startNode: start + targetNode: sensor + category: construction-category-structures + description: Reports on the status of the gas within the attached pipe network. + icon: + sprite: Structures/Piping/Atmospherics/gas_pipe_sensor.rsi + state: icon + placementMode: SnapgridCenter + objectType: Structure + canRotate: true + # ATMOS PIPES - type: construction name: gas pipe half diff --git a/Resources/Textures/Structures/Piping/Atmospherics/gas_pipe_sensor.rsi/base.png b/Resources/Textures/Structures/Piping/Atmospherics/gas_pipe_sensor.rsi/base.png new file mode 100644 index 0000000000000000000000000000000000000000..4a9a8f6f2069490a67965a5fdf60019008341678 GIT binary patch literal 248 zcmV<U00;kxP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80002LNkl<ZSi|j< zF$%*l3`KuR)<C<-XK0S06Sa^FWXsSK=?ocybB1{9kOQPkYf@SY3O0eFHyXkJ{`v?o z4CCK8Rn@Yq_!U?*CJw1h9NShkpWMLcy=uPPd&i|#{L(ZK5jdjwK7{~g#;xn}8UO$h z0W-fv?uZ~F`4a#DNAz{ijtIjujjRR$;9S?6OP9pJFVUgzai8ZRn}I2WSip4>uMTL$ yH{Ahdj(Z-x$LRe>F*Ot^?|}CAhG7_n0RRt>*hN^}z=Wm%0000<MNUMnLSTZVpJopL literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Piping/Atmospherics/gas_pipe_sensor.rsi/blank.png b/Resources/Textures/Structures/Piping/Atmospherics/gas_pipe_sensor.rsi/blank.png new file mode 100644 index 0000000000000000000000000000000000000000..7bee0a002b75fb20e9b790068b7950121cdf779e GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzDNh&2kch)?4>B?Wc})uc*XMaS cfSB*u1QZw;r+*K>4&*R+y85}Sb4q9e0KdKysQ>@~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Piping/Atmospherics/gas_pipe_sensor.rsi/icon.png b/Resources/Textures/Structures/Piping/Atmospherics/gas_pipe_sensor.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4ac9e76480361a744196e09cbc3edcfaa05f737d GIT binary patch literal 523 zcmV+m0`&cfP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80005fNkl<ZSi{AZ zK}sV*6o$X<SV>4QFfKyZoFJf(g^&|8Oe4&~^=#%085CT*bCFYwkP}FRIzbjfqyss? zpdlL<4S}TSs#$0PPK2?mwfilrdG-JGzrWvm;1E(u8%2=?h@!|!DJ_n%=bG5-^#E+U z-6l`?u8Bej`u#q6!<oQjG6A5|=}@g!izQI0RGyQ4pEOO2SHKv95P~#KbG_b~fVCDO z1jd;1JfOA4^SqrBeA(Z(g%R+5e+PV=B$-HjxCw`sm&KT{(P-d#-p;pa9A~=A%L@KK zdB2^UaC>vZQ<A*v?!Bzw{qu8_Qph0Ko<Gj#gki|w>gw}nfl`X&pTC|7{h2V0V`LDZ zlqzNz$spiibPd46Kj-%^YJB=M{2Kjur9hr=BJh?1o4CKbd$$3d2t3Z`TLT^*9li1f zkO|zW4}@X3t@AXFnZ_|nDZ(&xD#3^Lfvm50Qs5~`yhf|V_tR5;4~LvxT+li=a01WO ziZ^4ql!c^TucNi5*=&}x4`{6sLSU^ehrmYm)oNAVMg+V$jte2M0nTecX9B+Ovs^Bz z)oSH>z!<Y#&kFZIx7!6^Hk+|tugh7>2ZKR*f5CV>W;7aki^U=rfxil~y+@Q(CfWc1 N002ovPDHLkV1lGg_D%o* literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Piping/Atmospherics/gas_pipe_sensor.rsi/lights.png b/Resources/Textures/Structures/Piping/Atmospherics/gas_pipe_sensor.rsi/lights.png new file mode 100644 index 0000000000000000000000000000000000000000..6108d2b99492134bbeeb0d5f7bfc64256627e5a9 GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQgxm#jv*QM-d^6w+n^xQ^6+xR zZ7W7;i<#UTnTvNc3g6hpAm-(ybA_$*L;YE9(VgWAj0~@?P7z9(SmoK=x6?D~tYLmB z>r}}@+Ozt(GlWeZ8tW>w%+r6KFP`wJcJ+mCKeqi<;XaYk>y-ao(j#%xIsa=vqu#UY d11$!EKR5Zp#g)Ie6~!okxSp<lF6*2UngGf~LQ((# literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Piping/Atmospherics/gas_pipe_sensor.rsi/meta.json b/Resources/Textures/Structures/Piping/Atmospherics/gas_pipe_sensor.rsi/meta.json new file mode 100644 index 00000000000..878c7817a2b --- /dev/null +++ b/Resources/Textures/Structures/Piping/Atmospherics/gas_pipe_sensor.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Created by chromiumboy (github) for SS14, based on the digital valve from /tg/, taken from https://github.com/tgstation/tgstation at commit 57cd1d59ca019dd0e7811ac451f295f818e573da.", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "base" + }, + { + "name": "blank" + }, + { + "name": "lights", + "delays": [ + [ + 1.0, + 0.25 + ] + ] + } + ] +} From a3edf04dd3f7cf34bc77bf953722ddc1d8b2a8f0 Mon Sep 17 00:00:00 2001 From: PJBot <pieterjan.briers+bot@gmail.com> Date: Fri, 22 Nov 2024 03:47:17 +0000 Subject: [PATCH 182/187] 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 6bc25079ce7..70963d8ba25 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: EmoGarbage404 - changes: - - message: Legends tell of horrifying Goliaths that roam the mining asteroid. - type: Add - id: 7137 - time: '2024-08-18T16:22:36.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30839 - author: Beck Thompson changes: - message: Cutting food now moves the sliced pieces a small amount! @@ -3933,3 +3926,12 @@ id: 7636 time: '2024-11-22T02:56:05.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/31076 +- author: chromiumboy + changes: + - message: Added the gas pipe sensor. These sensors monitor the mixture of gases + passing through their pipe sub-network and report this information to any connected + air alarms + type: Add + id: 7637 + time: '2024-11-22T03:46:10.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33128 From b4ec946bd9f5af7bbc27dd676f294c0c5f4c6847 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers <pieterjan.briers+git@gmail.com> Date: Fri, 22 Nov 2024 18:14:46 +0100 Subject: [PATCH 183/187] Fix sandbox error with new HWID code. (#33461) Oops --- Content.Shared.Database/TypedHwid.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Content.Shared.Database/TypedHwid.cs b/Content.Shared.Database/TypedHwid.cs index 6e4a7763b3a..253375e9dbc 100644 --- a/Content.Shared.Database/TypedHwid.cs +++ b/Content.Shared.Database/TypedHwid.cs @@ -34,7 +34,9 @@ public static bool TryParse(string value, [NotNullWhen(true)] out ImmutableTyped return false; } - hwid = new ImmutableTypedHwid([..array], type); + // ReSharper disable once UseCollectionExpression + // Do not use collection expression, C# compiler is weird and it fails sandbox. + hwid = new ImmutableTypedHwid(ImmutableArray.Create(array), type); return true; } From 86a3d1636fadd89c800e64c946995e8dc18a8991 Mon Sep 17 00:00:00 2001 From: IProduceWidgets <107586145+IProduceWidgets@users.noreply.github.com> Date: Fri, 22 Nov 2024 17:50:41 -0500 Subject: [PATCH 184/187] baby proof the terminal (#33281) * baby proof the terminal * Make a couple exceptions for items that you might take with you. * alwayspoweredlights * Uncuttable cables since cablecomp is a snowflake construction system * chairs and vendors * rerun heisentests * rerun tests again --- .../Power/Components/CableComponent.cs | 5 +- .../Power/EntitySystems/CableSystem.cs | 5 +- Resources/Maps/Misc/terminal.yml | 4527 +++++++++++++++-- .../Structures/Power/cable_terminal.yml | 8 + .../Entities/Structures/Power/cables.yml | 24 + 5 files changed, 4102 insertions(+), 467 deletions(-) diff --git a/Content.Server/Power/Components/CableComponent.cs b/Content.Server/Power/Components/CableComponent.cs index 7398bc0616e..63899735b58 100644 --- a/Content.Server/Power/Components/CableComponent.cs +++ b/Content.Server/Power/Components/CableComponent.cs @@ -18,8 +18,11 @@ public sealed partial class CableComponent : Component [DataField] public EntProtoId CableDroppedOnCutPrototype = "CableHVStack1"; + /// <summary> + /// The tool quality needed to cut the cable. Setting to null prevents cutting. + /// </summary> [DataField] - public ProtoId<ToolQualityPrototype> CuttingQuality = SharedToolSystem.CutQuality; + public ProtoId<ToolQualityPrototype>? CuttingQuality = SharedToolSystem.CutQuality; /// <summary> /// Checked by <see cref="CablePlacerComponent"/> to determine if there is diff --git a/Content.Server/Power/EntitySystems/CableSystem.cs b/Content.Server/Power/EntitySystems/CableSystem.cs index d0f45b54fcf..db44323007a 100644 --- a/Content.Server/Power/EntitySystems/CableSystem.cs +++ b/Content.Server/Power/EntitySystems/CableSystem.cs @@ -35,7 +35,10 @@ private void OnInteractUsing(EntityUid uid, CableComponent cable, InteractUsingE if (args.Handled) return; - args.Handled = _toolSystem.UseTool(args.Used, args.User, uid, cable.CuttingDelay, cable.CuttingQuality, new CableCuttingFinishedEvent()); + if (cable.CuttingQuality != null) + { + args.Handled = _toolSystem.UseTool(args.Used, args.User, uid, cable.CuttingDelay, cable.CuttingQuality, new CableCuttingFinishedEvent()); + } } private void OnCableCut(EntityUid uid, CableComponent cable, DoAfterEvent args) diff --git a/Resources/Maps/Misc/terminal.yml b/Resources/Maps/Misc/terminal.yml index d32a53856ef..8ca17b4ebcf 100644 --- a/Resources/Maps/Misc/terminal.yml +++ b/Resources/Maps/Misc/terminal.yml @@ -948,6 +948,7 @@ entities: - type: RadiationGridResistance - type: SpreaderGrid - type: GridPathfinding + - type: Godmode - proto: AirlockExternalGlass entities: - uid: 2 @@ -955,54 +956,187 @@ entities: - type: Transform pos: 6.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 3 components: - type: Transform pos: -7.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 4 components: - type: Transform pos: -7.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 5 components: - type: Transform pos: 6.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 11 components: - type: Transform rot: -1.5707963267948966 rad pos: 12.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 12 components: - type: Transform rot: -1.5707963267948966 rad pos: 12.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 13 components: - type: Transform rot: -1.5707963267948966 rad pos: -13.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 14 components: - type: Transform rot: -1.5707963267948966 rad pos: -13.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction +- proto: AirlockExternalGlassShuttleLocked + entities: + - uid: 1 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -15.5,-10.5 + parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible + - uid: 6 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -15.5,-17.5 + parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible + - uid: 7 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 14.5,-10.5 + parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible + - uid: 8 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 14.5,-17.5 + parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible + - uid: 9 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,-10.5 + parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible + - uid: 15 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,-17.5 + parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible + - uid: 16 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -5.5,-10.5 + parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible + - uid: 17 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -5.5,-17.5 + parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - proto: AirlockExternalLocked entities: - uid: 589 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 4.5,8.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - proto: AirlockGlass entities: - uid: 252 @@ -1010,90 +1144,237 @@ entities: - type: Transform pos: -9.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 253 components: - type: Transform pos: -10.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 254 components: - type: Transform pos: -11.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 255 components: - type: Transform pos: 8.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 256 components: - type: Transform pos: 9.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 257 components: - type: Transform pos: 10.5,-4.5 parent: 818 -- proto: AirlockGlassShuttleEasyPryLocked + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible +- proto: AirlockMaint entities: - - uid: 1 + - uid: 146 + components: + - type: Transform + pos: 3.5,3.5 + parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction +- proto: AlwaysPoweredWallLight + entities: + - uid: 150 components: - type: Transform rot: -1.5707963267948966 rad - pos: -15.5,-10.5 + pos: -8.5,-5.5 parent: 818 - - uid: 6 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible + - uid: 188 components: - type: Transform rot: -1.5707963267948966 rad - pos: -15.5,-17.5 + pos: 11.5,2.5 parent: 818 - - uid: 7 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible + - uid: 195 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 14.5,-10.5 + rot: 3.141592653589793 rad + pos: -2.5,-1.5 parent: 818 - - uid: 8 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible + - uid: 209 components: - type: Transform rot: 1.5707963267948966 rad - pos: 14.5,-17.5 + pos: 7.5,-5.5 parent: 818 - - uid: 9 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible + - uid: 341 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,-10.5 + rot: 3.141592653589793 rad + pos: 1.5,-1.5 parent: 818 - - uid: 15 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible + - uid: 634 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,-17.5 + pos: 9.5,-16.5 parent: 818 - - uid: 16 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible + - uid: 636 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-10.5 + rot: 3.141592653589793 rad + pos: 9.5,-11.5 parent: 818 - - uid: 17 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible + - uid: 649 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -10.5,-11.5 + parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible + - uid: 650 + components: + - type: Transform + pos: -10.5,-16.5 + parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible + - uid: 687 components: - type: Transform rot: 1.5707963267948966 rad - pos: -5.5,-17.5 + pos: -13.5,1.5 parent: 818 -- proto: AirlockMaint - entities: - - uid: 146 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible + - uid: 701 components: - - type: MetaData - flags: PvsPriority - type: Transform - pos: 3.5,3.5 + rot: 3.141592653589793 rad + pos: -6.5,3.5 + parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible + - uid: 702 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 5.5,3.5 + parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible + - uid: 715 + components: + - type: Transform + pos: -0.5,5.5 + parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible + - uid: 717 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -7.5,-3.5 + parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible + - uid: 742 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 6.5,-3.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - proto: APCBasic entities: - uid: 205 @@ -1101,32 +1382,92 @@ entities: - type: Transform pos: 6.5,2.5 parent: 818 + - type: AccessReader + access: + - - CentralCommand + - type: Godmode + - type: BatterySelfRecharger + autoRechargeRate: 50000 + autoRecharge: True + missingComponents: + - Construction + - Destructible - uid: 206 components: - type: Transform pos: -13.5,2.5 parent: 818 + - type: AccessReader + access: + - - CentralCommand + - type: Godmode + - type: BatterySelfRecharger + autoRechargeRate: 50000 + autoRecharge: True + missingComponents: + - Construction + - Destructible - uid: 211 components: - type: Transform pos: -13.5,-11.5 parent: 818 + - type: AccessReader + access: + - - CentralCommand + - type: Godmode + - type: BatterySelfRecharger + autoRechargeRate: 50000 + autoRecharge: True + missingComponents: + - Construction + - Destructible - uid: 212 components: - type: Transform pos: 6.5,-11.5 parent: 818 + - type: AccessReader + access: + - - CentralCommand + - type: Godmode + - type: BatterySelfRecharger + autoRechargeRate: 50000 + autoRecharge: True + missingComponents: + - Construction + - Destructible - uid: 355 components: - type: Transform rot: 3.141592653589793 rad pos: 1.5,6.5 parent: 818 + - type: AccessReader + access: + - - CentralCommand + - type: Godmode + - type: BatterySelfRecharger + autoRechargeRate: 50000 + autoRecharge: True + missingComponents: + - Construction + - Destructible - uid: 846 components: - type: Transform pos: 2.5,3.5 parent: 818 + - type: AccessReader + access: + - - CentralCommand + - type: Godmode + - type: BatterySelfRecharger + autoRechargeRate: 50000 + autoRecharge: True + missingComponents: + - Construction + - Destructible - proto: ArrivalsShuttleTimer entities: - uid: 597 @@ -1134,21 +1475,33 @@ entities: - type: Transform pos: -7.5,-5.5 parent: 818 + - type: Godmode + missingComponents: + - Construction - uid: 633 components: - type: Transform pos: 6.5,-5.5 parent: 818 + - type: Godmode + missingComponents: + - Construction - uid: 928 components: - type: Transform pos: -6.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - Construction - uid: 929 components: - type: Transform pos: 5.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - Construction - proto: AtmosDeviceFanTiny entities: - uid: 296 @@ -1156,46 +1509,55 @@ entities: - type: Transform pos: -6.5,-10.5 parent: 818 + - type: Godmode - uid: 297 components: - type: Transform pos: -14.5,-10.5 parent: 818 + - type: Godmode - uid: 298 components: - type: Transform pos: -14.5,-17.5 parent: 818 + - type: Godmode - uid: 299 components: - type: Transform pos: -6.5,-17.5 parent: 818 + - type: Godmode - uid: 300 components: - type: Transform pos: 5.5,-17.5 parent: 818 + - type: Godmode - uid: 301 components: - type: Transform pos: 5.5,-10.5 parent: 818 + - type: Godmode - uid: 302 components: - type: Transform pos: 13.5,-10.5 parent: 818 + - type: Godmode - uid: 303 components: - type: Transform pos: 13.5,-17.5 parent: 818 + - type: Godmode - uid: 809 components: - type: Transform pos: 4.5,8.5 parent: 818 + - type: Godmode - proto: BarSignEngineChange entities: - uid: 215 @@ -1203,6 +1565,10 @@ entities: - type: Transform pos: -10.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - ApcPowerReceiver + - Destructible - proto: BlockGameArcade entities: - uid: 727 @@ -1211,28 +1577,46 @@ entities: rot: 1.5707963267948966 rad pos: -13.5,-1.5 parent: 818 + - type: Godmode + missingComponents: + - ApcPowerReceiver + - Anchorable + - Construction + - Destructible - uid: 728 components: - type: Transform rot: 1.5707963267948966 rad pos: -13.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - ApcPowerReceiver + - Anchorable + - Construction + - Destructible - proto: BookshelfFilled entities: - uid: 442 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 7.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Anchorable + - Construction - uid: 752 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 11.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Anchorable + - Construction - proto: BoozeDispenser entities: - uid: 710 @@ -1240,1198 +1624,2152 @@ entities: - type: Transform pos: -11.5,4.5 parent: 818 -- proto: CableApcExtension + - type: Godmode + missingComponents: + - ApcPowerReceiver + - Anchorable + - Destructible + - Construction +- proto: CableApcExtensionUncuttable entities: - uid: 203 components: - type: Transform pos: 1.5,6.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 208 components: - type: Transform pos: -3.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 218 components: - type: Transform pos: -4.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 402 components: - type: Transform pos: -4.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 404 components: - type: Transform pos: 2.5,1.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 410 components: - type: Transform pos: 2.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 411 components: - type: Transform pos: 3.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 412 components: - type: Transform pos: 3.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 426 components: - type: Transform pos: -2.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 427 components: - type: Transform pos: -1.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 428 components: - type: Transform pos: -0.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 429 components: - type: Transform pos: 0.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 430 components: - type: Transform pos: 1.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 431 components: - type: Transform pos: 1.5,-1.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 434 components: - type: Transform pos: 0.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 435 components: - type: Transform pos: -0.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 436 components: - type: Transform pos: -1.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 437 components: - type: Transform pos: -2.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 438 components: - type: Transform pos: -3.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 439 components: - type: Transform pos: -4.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 440 components: - type: Transform pos: -2.5,-1.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 443 components: - type: Transform pos: 2.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 444 components: - type: Transform pos: 3.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 445 components: - type: Transform pos: 4.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 446 components: - type: Transform pos: -5.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 447 components: - type: Transform pos: -13.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 448 components: - type: Transform pos: -13.5,1.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 449 components: - type: Transform pos: -13.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 450 components: - type: Transform pos: -13.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 451 components: - type: Transform pos: -12.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 452 components: - type: Transform pos: -11.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 453 components: - type: Transform pos: -10.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 454 components: - type: Transform pos: -9.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 455 components: - type: Transform pos: -8.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 456 components: - type: Transform pos: -7.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 457 components: - type: Transform pos: -10.5,-1.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 458 components: - type: Transform pos: -10.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 459 components: - type: Transform pos: -10.5,-3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 460 components: - type: Transform pos: -10.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 461 components: - type: Transform pos: -10.5,1.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 462 components: - type: Transform pos: -10.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 463 components: - type: Transform pos: -10.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 464 components: - type: Transform pos: -11.5,-3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 465 components: - type: Transform pos: -9.5,-3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 466 components: - type: Transform pos: -11.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 467 components: - type: Transform pos: -9.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 468 components: - type: Transform pos: -13.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 469 components: - type: Transform pos: -12.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 470 components: - type: Transform pos: -11.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 471 components: - type: Transform pos: -11.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 472 components: - type: Transform pos: 10.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 473 components: - type: Transform pos: 10.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 474 components: - type: Transform pos: 10.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 475 components: - type: Transform pos: 10.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 476 components: - type: Transform pos: -11.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 477 components: - type: Transform pos: -10.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 478 components: - type: Transform pos: -10.5,-18.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 479 components: - type: Transform pos: -10.5,-19.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 480 components: - type: Transform pos: -10.5,-20.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 481 components: - type: Transform pos: -11.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 482 components: - type: Transform pos: -12.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 483 components: - type: Transform pos: -13.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 484 components: - type: Transform pos: -14.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 485 components: - type: Transform pos: -9.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 486 components: - type: Transform pos: -8.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 487 components: - type: Transform pos: -7.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 488 components: - type: Transform pos: -6.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 489 components: - type: Transform pos: -10.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 490 components: - type: Transform pos: -9.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 491 components: - type: Transform pos: -8.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 492 components: - type: Transform pos: -7.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 493 components: - type: Transform pos: -6.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 494 components: - type: Transform pos: -12.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 495 components: - type: Transform pos: -13.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 496 components: - type: Transform pos: -14.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 497 components: - type: Transform pos: -11.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 498 components: - type: Transform pos: -12.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 499 components: - type: Transform pos: -9.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 500 components: - type: Transform pos: -8.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 501 components: - type: Transform pos: -10.5,-9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 502 components: - type: Transform pos: -10.5,-8.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 503 components: - type: Transform pos: -10.5,-7.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 504 components: - type: Transform pos: -10.5,-6.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 505 components: - type: Transform pos: 6.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 506 components: - type: Transform pos: 7.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 507 components: - type: Transform pos: 7.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 508 components: - type: Transform pos: 6.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 509 components: - type: Transform pos: 5.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 510 components: - type: Transform pos: 8.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 511 components: - type: Transform pos: 8.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 512 components: - type: Transform pos: 9.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 513 components: - type: Transform pos: 10.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 514 components: - type: Transform pos: 11.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 515 components: - type: Transform pos: 12.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 516 components: - type: Transform pos: 13.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 517 components: - type: Transform pos: 8.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 518 components: - type: Transform pos: 8.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 519 components: - type: Transform pos: 8.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 520 components: - type: Transform pos: 8.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 521 components: - type: Transform pos: -11.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 522 components: - type: Transform pos: 9.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 523 components: - type: Transform pos: 9.5,-18.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 524 components: - type: Transform pos: 9.5,-19.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 525 components: - type: Transform pos: 9.5,-20.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 526 components: - type: Transform pos: 8.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 527 components: - type: Transform pos: 7.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 528 components: - type: Transform pos: 6.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 529 components: - type: Transform pos: 5.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 530 components: - type: Transform pos: 10.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 531 components: - type: Transform pos: 11.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 532 components: - type: Transform pos: 12.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 533 components: - type: Transform pos: 13.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 534 components: - type: Transform pos: 8.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 535 components: - type: Transform pos: 7.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 536 components: - type: Transform pos: 10.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 537 components: - type: Transform pos: 11.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 538 components: - type: Transform pos: 9.5,-9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 539 components: - type: Transform pos: 9.5,-8.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 540 components: - type: Transform pos: 9.5,-7.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 541 components: - type: Transform pos: 9.5,-6.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 542 components: - type: Transform pos: 6.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 543 components: - type: Transform pos: 6.5,1.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 544 components: - type: Transform pos: 6.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 545 components: - type: Transform pos: 6.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 546 components: - type: Transform pos: 7.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 547 components: - type: Transform pos: 8.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 548 components: - type: Transform pos: 9.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 549 components: - type: Transform pos: 9.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 550 components: - type: Transform pos: 9.5,1.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 551 components: - type: Transform pos: 9.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 552 components: - type: Transform pos: 9.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 553 components: - type: Transform pos: 10.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 554 components: - type: Transform pos: 8.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 555 components: - type: Transform pos: 10.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 556 components: - type: Transform pos: 11.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 557 components: - type: Transform pos: 12.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 558 components: - type: Transform pos: 9.5,-1.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 559 components: - type: Transform pos: 9.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 560 components: - type: Transform pos: 9.5,-3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 561 components: - type: Transform pos: 8.5,-3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 562 components: - type: Transform pos: 10.5,-3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 563 components: - type: Transform pos: 1.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 564 components: - type: Transform pos: 2.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 565 components: - type: Transform pos: 3.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 566 components: - type: Transform pos: 3.5,6.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 579 components: - type: Transform pos: 2.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 599 components: - type: Transform pos: -4.5,6.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 601 components: - type: Transform pos: -4.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 651 components: - type: Transform pos: 10.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 652 components: - type: Transform pos: -11.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 653 components: - type: Transform pos: -11.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 654 components: - type: Transform pos: -9.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 655 components: - type: Transform pos: -9.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 656 components: - type: Transform pos: -9.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 657 components: - type: Transform pos: -9.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 658 components: - type: Transform pos: -9.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 842 components: - type: Transform pos: -4.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 843 components: - type: Transform pos: -4.5,1.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 844 components: - type: Transform pos: 2.5,3.5 parent: 818 -- proto: CableHV + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable +- proto: CableHVUncuttable entities: - uid: 413 components: - type: Transform pos: -3.5,8.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 415 components: - type: Transform pos: -4.5,8.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 416 components: - type: Transform pos: -2.5,8.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 734 components: - type: Transform pos: -0.5,8.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 735 components: - type: Transform pos: -1.5,8.5 parent: 818 -- proto: CableMV + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable +- proto: CableMVUncuttable entities: - uid: 177 components: - type: Transform pos: 3.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 201 components: - type: Transform pos: 6.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 210 components: - type: Transform pos: 6.5,1.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 214 components: - type: Transform pos: 6.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 219 components: - type: Transform pos: 7.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 221 components: - type: Transform pos: 3.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 224 components: - type: Transform pos: 1.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 226 components: - type: Transform pos: 6.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 227 components: - type: Transform pos: 8.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 228 components: - type: Transform pos: 9.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 349 components: - type: Transform pos: 9.5,-1.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 350 components: - type: Transform pos: 5.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 352 components: - type: Transform pos: 2.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 353 components: - type: Transform pos: 4.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 354 components: - type: Transform pos: 1.5,6.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 356 components: - type: Transform pos: 9.5,-7.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 357 components: - type: Transform pos: 9.5,-6.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 358 components: - type: Transform pos: 9.5,-5.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 359 components: - type: Transform pos: 9.5,-3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 360 components: - type: Transform pos: 9.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 361 components: - type: Transform pos: 9.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 362 components: - type: Transform pos: 9.5,-8.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 363 components: - type: Transform pos: 9.5,-9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 364 components: - type: Transform pos: 9.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 365 components: - type: Transform pos: 9.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 366 components: - type: Transform pos: 8.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 367 components: - type: Transform pos: 7.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 368 components: - type: Transform pos: 6.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 369 components: - type: Transform pos: 0.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 370 components: - type: Transform pos: -0.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 371 components: - type: Transform pos: -1.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 372 components: - type: Transform pos: -2.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 373 components: - type: Transform pos: -3.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 374 components: - type: Transform pos: -4.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 375 components: - type: Transform pos: -5.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 376 components: - type: Transform pos: -6.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 377 components: - type: Transform pos: -7.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 378 components: - type: Transform pos: -8.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 379 components: - type: Transform pos: -9.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 380 components: - type: Transform pos: -10.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 381 components: - type: Transform pos: -11.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 382 components: - type: Transform pos: -12.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 383 components: - type: Transform pos: -13.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 384 components: - type: Transform pos: -13.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 385 components: - type: Transform pos: -13.5,1.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 386 components: - type: Transform pos: -13.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 387 components: - type: Transform pos: -10.5,-1.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 388 components: - type: Transform pos: -10.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 389 components: - type: Transform pos: -10.5,-3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 390 components: - type: Transform pos: -10.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 391 components: - type: Transform pos: -10.5,-5.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 392 components: - type: Transform pos: -10.5,-6.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 393 components: - type: Transform pos: -10.5,-7.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 394 components: - type: Transform pos: -10.5,-8.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 395 components: - type: Transform pos: -10.5,-9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 396 components: - type: Transform pos: -10.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 397 components: - type: Transform pos: -10.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 398 components: - type: Transform pos: -11.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 399 components: - type: Transform pos: -12.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 400 components: - type: Transform pos: -13.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 418 components: - type: Transform pos: 3.5,1.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 419 components: - type: Transform pos: 3.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 421 components: - type: Transform pos: -0.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 422 components: - type: Transform pos: 0.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 423 components: - type: Transform pos: 1.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 424 components: - type: Transform pos: 2.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 425 components: - type: Transform pos: 3.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 567 components: - type: Transform pos: 3.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 568 components: - type: Transform pos: 3.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 569 components: - type: Transform pos: 3.5,6.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 570 components: - type: Transform pos: -0.5,8.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 803 components: - type: Transform pos: 3.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 845 components: - type: Transform pos: 2.5,3.5 parent: 818 -- proto: CableTerminal + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable +- proto: CableTerminalUncuttable entities: - uid: 417 components: @@ -2439,6 +3777,11 @@ entities: rot: 1.5707963267948966 rad pos: -3.5,8.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - proto: Catwalk entities: - uid: 580 @@ -2446,56 +3789,111 @@ entities: - type: Transform pos: 3.5,6.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Destructible + - RCDDeconstructable - uid: 584 components: - type: Transform pos: 2.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Destructible + - RCDDeconstructable - uid: 590 components: - type: Transform pos: 3.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Destructible + - RCDDeconstructable - uid: 596 components: - type: Transform pos: 1.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Destructible + - RCDDeconstructable - uid: 747 components: - type: Transform pos: 3.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Destructible + - RCDDeconstructable - uid: 810 components: - type: Transform pos: 0.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Destructible + - RCDDeconstructable - uid: 811 components: - type: Transform pos: -0.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Destructible + - RCDDeconstructable - uid: 812 components: - type: Transform pos: -1.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Destructible + - RCDDeconstructable - uid: 813 components: - type: Transform pos: -2.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Destructible + - RCDDeconstructable - uid: 814 components: - type: Transform pos: -3.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Destructible + - RCDDeconstructable - uid: 815 components: - type: Transform pos: -4.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Destructible + - RCDDeconstructable - proto: Chair entities: - uid: 592 @@ -2504,254 +3902,475 @@ entities: rot: -1.5707963267948966 rad pos: -7.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 593 components: - type: Transform rot: -1.5707963267948966 rad pos: -7.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 603 components: - type: Transform rot: -1.5707963267948966 rad pos: -7.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 604 components: - type: Transform rot: -1.5707963267948966 rad pos: -7.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 605 components: - type: Transform rot: -1.5707963267948966 rad pos: -11.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 606 components: - type: Transform rot: -1.5707963267948966 rad pos: -11.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 607 components: - type: Transform rot: -1.5707963267948966 rad pos: -11.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 608 components: - type: Transform rot: -1.5707963267948966 rad pos: -11.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 609 components: - type: Transform rot: 1.5707963267948966 rad pos: -13.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 610 components: - type: Transform rot: 1.5707963267948966 rad pos: -13.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 611 components: - type: Transform rot: 1.5707963267948966 rad pos: -13.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 612 components: - type: Transform rot: 1.5707963267948966 rad pos: -13.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 613 components: - type: Transform rot: 1.5707963267948966 rad pos: -9.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 614 components: - type: Transform rot: 1.5707963267948966 rad pos: -9.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 615 components: - type: Transform rot: 1.5707963267948966 rad pos: -9.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 616 components: - type: Transform rot: 1.5707963267948966 rad pos: -9.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 617 components: - type: Transform rot: 1.5707963267948966 rad pos: 6.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 618 components: - type: Transform rot: 1.5707963267948966 rad pos: 6.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 619 components: - type: Transform rot: 1.5707963267948966 rad pos: 6.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 620 components: - type: Transform rot: 1.5707963267948966 rad pos: 6.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 621 components: - type: Transform rot: 1.5707963267948966 rad pos: 10.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 622 components: - type: Transform rot: 1.5707963267948966 rad pos: 10.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 623 components: - type: Transform rot: 1.5707963267948966 rad pos: 10.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 624 components: - type: Transform rot: 1.5707963267948966 rad pos: 10.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 625 components: - type: Transform rot: -1.5707963267948966 rad pos: 8.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 626 components: - type: Transform rot: -1.5707963267948966 rad pos: 8.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 627 components: - type: Transform rot: -1.5707963267948966 rad pos: 8.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 628 components: - type: Transform rot: -1.5707963267948966 rad pos: 8.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 629 components: - type: Transform rot: -1.5707963267948966 rad pos: 12.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 630 components: - type: Transform rot: -1.5707963267948966 rad pos: 12.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 631 components: - type: Transform rot: -1.5707963267948966 rad pos: 12.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 632 components: - type: Transform rot: -1.5707963267948966 rad pos: 12.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 847 components: - type: Transform rot: 1.5707963267948966 rad pos: -12.5,-8.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 848 components: - type: Transform rot: -1.5707963267948966 rad pos: -8.5,-8.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 849 components: - type: Transform rot: -1.5707963267948966 rad pos: -8.5,-7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 850 components: - type: Transform rot: -1.5707963267948966 rad pos: -8.5,-6.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - proto: ChairOfficeDark entities: - - uid: 591 + - uid: 18 components: - type: Transform + anchored: True rot: 3.141592653589793 rad pos: 9.5,3.5 parent: 818 + - type: Physics + bodyType: Static + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - proto: ChairWood entities: - uid: 577 components: - type: Transform + anchored: True pos: 10.5,1.5 parent: 818 - - uid: 703 + - type: Physics + bodyType: Static + - type: Godmode + missingComponents: + - Construction + - Destructible + - Anchorable + - uid: 591 components: - type: Transform + anchored: True rot: 1.5707963267948966 rad pos: 8.5,0.5 parent: 818 - - uid: 704 + - type: Physics + bodyType: Static + - type: Godmode + missingComponents: + - Construction + - Destructible + - Anchorable + - uid: 703 components: - type: Transform + anchored: True pos: 9.5,1.5 parent: 818 - - uid: 714 + - type: Physics + bodyType: Static + - type: Godmode + missingComponents: + - Construction + - Destructible + - Anchorable + - uid: 704 components: - type: Transform + anchored: True rot: 1.5707963267948966 rad pos: 8.5,-0.5 parent: 818 + - type: Physics + bodyType: Static + - type: Godmode + missingComponents: + - Construction + - Destructible + - Anchorable - proto: ChessBoard entities: - - uid: 918 + - uid: 714 components: - type: Transform - pos: 12.503689,-2.3981738 + rot: 3.141592653589793 rad + pos: 12.5093775,-2.403601 parent: 818 - proto: ClosetWallEmergencyFilledRandom entities: @@ -2760,6 +4379,10 @@ entities: - type: Transform pos: -5.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction - proto: ClosetWallFireFilledRandom entities: - uid: 432 @@ -2767,6 +4390,10 @@ entities: - type: Transform pos: 4.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction - proto: ComfyChair entities: - uid: 595 @@ -2775,28 +4402,53 @@ entities: rot: 3.141592653589793 rad pos: 6.5,-3.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 718 components: - type: Transform pos: 12.5,-1.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 749 components: - type: Transform pos: 12.5,1.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 759 components: - type: Transform rot: 3.141592653589793 rad pos: 12.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 760 components: - type: Transform rot: 3.141592653589793 rad pos: 12.5,-3.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - proto: DisposalBend entities: - uid: 853 @@ -2805,40 +4457,75 @@ entities: rot: -1.5707963267948966 rad pos: -10.5,-7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 862 components: - type: Transform rot: 1.5707963267948966 rad pos: -10.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 891 components: - type: Transform pos: 3.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 893 components: - type: Transform rot: 1.5707963267948966 rad pos: -4.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 898 components: - type: Transform rot: 3.141592653589793 rad pos: 9.5,-7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 899 components: - type: Transform pos: 9.5,-1.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 900 components: - type: Transform rot: 3.141592653589793 rad pos: 3.5,-1.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - proto: DisposalJunctionFlipped entities: - uid: 892 @@ -2847,6 +4534,11 @@ entities: rot: 3.141592653589793 rad pos: 3.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - proto: DisposalPipe entities: - uid: 854 @@ -2855,277 +4547,517 @@ entities: rot: -1.5707963267948966 rad pos: -11.5,-7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 855 components: - type: Transform rot: 3.141592653589793 rad pos: -10.5,-6.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 856 components: - type: Transform rot: 3.141592653589793 rad pos: -10.5,-5.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 857 components: - type: Transform rot: 3.141592653589793 rad pos: -10.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 858 components: - type: Transform rot: 3.141592653589793 rad pos: -10.5,-3.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 859 components: - type: Transform rot: 3.141592653589793 rad pos: -10.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 860 components: - type: Transform rot: 3.141592653589793 rad pos: -10.5,-1.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 861 components: - type: Transform rot: 3.141592653589793 rad pos: -10.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 863 components: - type: Transform rot: 1.5707963267948966 rad pos: -9.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 864 components: - type: Transform rot: 1.5707963267948966 rad pos: -8.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 865 components: - type: Transform rot: 1.5707963267948966 rad pos: -7.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 866 components: - type: Transform rot: 1.5707963267948966 rad pos: -6.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 867 components: - type: Transform rot: 1.5707963267948966 rad pos: -5.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 868 components: - type: Transform rot: 1.5707963267948966 rad pos: -4.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 869 components: - type: Transform rot: 1.5707963267948966 rad pos: -3.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 870 components: - type: Transform rot: 1.5707963267948966 rad pos: -2.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 871 components: - type: Transform rot: 1.5707963267948966 rad pos: -1.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 872 components: - type: Transform rot: 1.5707963267948966 rad pos: -0.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 873 components: - type: Transform rot: 1.5707963267948966 rad pos: 0.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 874 components: - type: Transform rot: 1.5707963267948966 rad pos: 1.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 875 components: - type: Transform rot: 1.5707963267948966 rad pos: 2.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 876 components: - type: Transform pos: 3.5,1.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 877 components: - type: Transform pos: 3.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 878 components: - type: Transform pos: 3.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 879 components: - type: Transform pos: 3.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 880 components: - type: Transform pos: 3.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 881 components: - type: Transform pos: 3.5,6.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 882 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 883 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 884 components: - type: Transform rot: -1.5707963267948966 rad pos: 0.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 885 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 886 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 887 components: - type: Transform rot: -1.5707963267948966 rad pos: -2.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 888 components: - type: Transform rot: -1.5707963267948966 rad pos: -3.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 889 components: - type: Transform rot: 3.141592653589793 rad pos: -4.5,6.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 890 components: - type: Transform rot: 3.141592653589793 rad pos: -4.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 901 components: - type: Transform rot: 1.5707963267948966 rad pos: 10.5,-7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 902 components: - type: Transform pos: 9.5,-6.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 903 components: - type: Transform pos: 9.5,-5.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 904 components: - type: Transform pos: 9.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 905 components: - type: Transform pos: 9.5,-3.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 906 components: - type: Transform pos: 9.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 907 components: - type: Transform rot: -1.5707963267948966 rad pos: 8.5,-1.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 908 components: - type: Transform rot: -1.5707963267948966 rad pos: 7.5,-1.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 909 components: - type: Transform rot: -1.5707963267948966 rad pos: 6.5,-1.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 910 components: - type: Transform rot: -1.5707963267948966 rad pos: 5.5,-1.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 911 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,-1.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 912 components: - type: Transform rot: 3.141592653589793 rad pos: 3.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - proto: DisposalTrunk entities: - uid: 852 @@ -3134,18 +5066,33 @@ entities: rot: 1.5707963267948966 rad pos: -12.5,-7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 894 components: - type: Transform rot: 3.141592653589793 rad pos: -4.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 897 components: - type: Transform rot: -1.5707963267948966 rad pos: 11.5,-7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - proto: DisposalUnit entities: - uid: 851 @@ -3153,29 +5100,39 @@ entities: - type: Transform pos: -12.5,-7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Destructible + - Anchorable - uid: 896 components: - type: Transform pos: 11.5,-7.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Destructible + - Anchorable - proto: DrinkGlass entities: - - uid: 915 + - uid: 723 components: - type: Transform - pos: -12.587411,2.5765429 + pos: -12.618602,2.5336328 parent: 818 - - uid: 916 + - uid: 915 components: - type: Transform - pos: -12.321786,2.7171679 + pos: -12.399852,2.6273828 parent: 818 - proto: DrinkShaker entities: - - uid: 914 + - uid: 724 components: - type: Transform - pos: -12.649911,2.7640429 + pos: -12.722768,2.7627993 parent: 818 - proto: ExtinguisherCabinetFilled entities: @@ -3184,11 +5141,17 @@ entities: - type: Transform pos: -6.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 816 components: - type: Transform pos: 5.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - proto: FirelockEdge entities: - uid: 690 @@ -3196,111 +5159,211 @@ entities: - type: Transform pos: -8.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 694 components: - type: Transform pos: -12.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 695 components: - type: Transform rot: 3.141592653589793 rad pos: -8.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 696 components: - type: Transform rot: 3.141592653589793 rad pos: -12.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 697 components: - type: Transform rot: 3.141592653589793 rad pos: 7.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 698 components: - type: Transform rot: 3.141592653589793 rad pos: 11.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 699 components: - type: Transform pos: 11.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 700 components: - type: Transform pos: 7.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 822 components: - type: Transform pos: 10.5,-3.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 823 components: - type: Transform pos: 9.5,-3.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 824 components: - type: Transform pos: 8.5,-3.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 825 components: - type: Transform rot: 3.141592653589793 rad pos: 8.5,-5.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 826 components: - type: Transform rot: 3.141592653589793 rad pos: 9.5,-5.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 827 components: - type: Transform rot: 3.141592653589793 rad pos: 10.5,-5.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 828 components: - type: Transform pos: -9.5,-3.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 829 components: - type: Transform pos: -10.5,-3.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 830 components: - type: Transform pos: -11.5,-3.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 831 components: - type: Transform rot: 3.141592653589793 rad pos: -11.5,-5.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 832 components: - type: Transform rot: 3.141592653589793 rad pos: -10.5,-5.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 833 components: - type: Transform rot: 3.141592653589793 rad pos: -9.5,-5.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - proto: FirelockGlass entities: - uid: 194 @@ -3308,51 +5371,101 @@ entities: - type: Transform pos: 5.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 216 components: - type: Transform pos: -10.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 220 components: - type: Transform pos: -9.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 305 components: - type: Transform pos: -6.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 345 components: - type: Transform pos: 5.5,-1.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 346 components: - type: Transform pos: 5.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 347 components: - type: Transform pos: -6.5,-1.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 348 components: - type: Transform pos: -6.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 586 components: - type: Transform pos: -11.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 716 components: - type: Transform pos: -12.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - proto: GeneratorBasic15kW entities: - uid: 124 @@ -3360,6 +5473,10 @@ entities: - type: Transform pos: -4.5,8.5 parent: 818 + - type: Godmode + missingComponents: + - Anchorable + - Destructible - proto: GravityGeneratorMini entities: - uid: 808 @@ -3367,6 +5484,11 @@ entities: - type: Transform pos: 1.5,8.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Anchorable + - Construction - proto: Grille entities: - uid: 96 @@ -3374,479 +5496,918 @@ entities: - type: Transform pos: -14.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 97 components: - type: Transform pos: -14.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 98 components: - type: Transform pos: -14.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 99 components: - type: Transform pos: -6.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 101 components: - type: Transform pos: 5.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 102 components: - type: Transform pos: 5.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 103 components: - type: Transform pos: 13.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 104 components: - type: Transform pos: 13.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 125 components: - type: Transform rot: 1.5707963267948966 rad pos: -7.5,-19.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 126 components: - type: Transform rot: 1.5707963267948966 rad pos: -7.5,-20.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 127 components: - type: Transform rot: 1.5707963267948966 rad pos: -8.5,-20.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 128 components: - type: Transform rot: 1.5707963267948966 rad pos: -8.5,-21.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 129 components: - type: Transform rot: 1.5707963267948966 rad pos: -9.5,-21.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 130 components: - type: Transform rot: 1.5707963267948966 rad pos: -11.5,-21.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 131 components: - type: Transform rot: 1.5707963267948966 rad pos: -12.5,-21.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 132 components: - type: Transform rot: 1.5707963267948966 rad pos: -12.5,-20.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 133 components: - type: Transform rot: 1.5707963267948966 rad pos: -13.5,-20.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 134 components: - type: Transform rot: 1.5707963267948966 rad pos: -13.5,-19.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 135 components: - type: Transform pos: 5.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 136 components: - type: Transform pos: 5.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 137 components: - type: Transform pos: 13.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 138 components: - type: Transform pos: 13.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 139 components: - type: Transform pos: -14.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 140 components: - type: Transform pos: -6.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 141 components: - type: Transform pos: -6.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 142 components: - type: Transform pos: -6.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 143 components: - type: Transform rot: 1.5707963267948966 rad pos: -7.5,-8.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 144 components: - type: Transform rot: 1.5707963267948966 rad pos: -7.5,-7.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 145 components: - type: Transform rot: 1.5707963267948966 rad pos: -7.5,-6.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 147 components: - type: Transform rot: 1.5707963267948966 rad pos: -13.5,-8.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 148 components: - type: Transform rot: 1.5707963267948966 rad pos: -13.5,-7.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 149 components: - type: Transform rot: 1.5707963267948966 rad pos: -13.5,-6.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 151 components: - type: Transform rot: 1.5707963267948966 rad pos: 12.5,-8.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 152 components: - type: Transform rot: 1.5707963267948966 rad pos: 12.5,-7.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 153 components: - type: Transform rot: 1.5707963267948966 rad pos: 12.5,-6.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 155 components: - type: Transform rot: 1.5707963267948966 rad pos: 6.5,-8.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 156 components: - type: Transform rot: 1.5707963267948966 rad pos: 6.5,-7.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 157 components: - type: Transform rot: 1.5707963267948966 rad pos: 6.5,-6.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 167 components: - type: Transform rot: 1.5707963267948966 rad pos: 12.5,-19.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 168 components: - type: Transform rot: 1.5707963267948966 rad pos: 12.5,-20.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 169 components: - type: Transform rot: 1.5707963267948966 rad pos: 11.5,-20.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 170 components: - type: Transform rot: 1.5707963267948966 rad pos: 11.5,-21.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 171 components: - type: Transform rot: 1.5707963267948966 rad pos: 10.5,-21.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 172 components: - type: Transform rot: 1.5707963267948966 rad pos: 8.5,-21.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 173 components: - type: Transform rot: 1.5707963267948966 rad pos: 7.5,-21.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 174 components: - type: Transform rot: 1.5707963267948966 rad pos: 7.5,-20.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 175 components: - type: Transform rot: 1.5707963267948966 rad pos: 6.5,-20.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 176 components: - type: Transform rot: 1.5707963267948966 rad pos: 6.5,-19.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 178 components: - type: Transform pos: 3.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 183 components: - type: Transform pos: -3.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 184 components: - type: Transform pos: 4.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 191 components: - type: Transform pos: -5.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 197 components: - type: Transform pos: -4.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 229 components: - type: Transform pos: 2.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 233 components: - type: Transform pos: -8.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 234 components: - type: Transform pos: 11.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 235 components: - type: Transform pos: 7.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 244 components: - type: Transform pos: -12.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 276 components: - type: Transform pos: 13.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 277 components: - type: Transform pos: 13.5,-1.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 278 components: - type: Transform pos: 13.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 279 components: - type: Transform pos: 13.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 280 components: - type: Transform pos: -14.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 281 components: - type: Transform pos: -14.5,-1.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 282 components: - type: Transform pos: -14.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 283 components: - type: Transform pos: -14.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 318 components: - type: Transform pos: -13.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 319 components: - type: Transform pos: -13.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 320 components: - type: Transform pos: -12.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 321 components: - type: Transform pos: -12.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 322 components: - type: Transform pos: -11.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 323 components: - type: Transform pos: -10.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 324 components: - type: Transform pos: -9.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 325 components: - type: Transform pos: -8.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 326 components: - type: Transform pos: -8.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 327 components: - type: Transform pos: -7.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 328 components: - type: Transform pos: -7.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 329 components: - type: Transform pos: 6.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 330 components: - type: Transform pos: 6.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 331 components: - type: Transform pos: 7.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 332 components: - type: Transform pos: 7.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 333 components: - type: Transform pos: 8.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 334 components: - type: Transform pos: 9.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 335 components: - type: Transform pos: 10.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 336 components: - type: Transform pos: 11.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 337 components: - type: Transform pos: 11.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 338 components: - type: Transform pos: 12.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 339 components: - type: Transform pos: 12.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - proto: PaperBin10 entities: - - uid: 737 + - uid: 729 components: - type: Transform - rot: 3.141592653589793 rad pos: 8.5,4.5 parent: 818 - proto: PosterLegitCohibaRobustoAd @@ -3856,6 +6417,9 @@ entities: - type: Transform pos: -6.5,1.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - proto: PosterLegitEnlist entities: - uid: 926 @@ -3863,6 +6427,9 @@ entities: - type: Transform pos: -14.5,1.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - proto: PosterLegitHighClassMartini entities: - uid: 925 @@ -3870,6 +6437,9 @@ entities: - type: Transform pos: -6.5,-3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - proto: PosterLegitJustAWeekAway entities: - uid: 821 @@ -3877,6 +6447,9 @@ entities: - type: Transform pos: 5.5,1.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - proto: PosterLegitNanomichiAd entities: - uid: 820 @@ -3884,6 +6457,9 @@ entities: - type: Transform pos: -4.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - proto: PosterLegitNanotrasenLogo entities: - uid: 246 @@ -3891,36 +6467,57 @@ entities: - type: Transform pos: -7.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 247 components: - type: Transform pos: -13.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 248 components: - type: Transform pos: 12.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 249 components: - type: Transform pos: 6.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 250 components: - type: Transform pos: -13.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 251 components: - type: Transform pos: 12.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 922 components: - type: Transform pos: -0.5,6.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - proto: PosterLegitNTTGC entities: - uid: 924 @@ -3928,6 +6525,9 @@ entities: - type: Transform pos: 5.5,-3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - proto: PosterLegitPDAAd entities: - uid: 920 @@ -3935,6 +6535,9 @@ entities: - type: Transform pos: 12.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - proto: PosterLegitVacation entities: - uid: 921 @@ -3942,6 +6545,9 @@ entities: - type: Transform pos: -7.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - proto: PosterLegitWorkForAFuture entities: - uid: 923 @@ -3949,6 +6555,9 @@ entities: - type: Transform pos: 12.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - proto: PottedPlantRandom entities: - uid: 236 @@ -3956,31 +6565,37 @@ entities: - type: Transform pos: 7.5,-19.5 parent: 818 + - type: Godmode - uid: 237 components: - type: Transform pos: -12.5,-19.5 parent: 818 + - type: Godmode - uid: 238 components: - type: Transform pos: 11.5,-19.5 parent: 818 + - type: Godmode - uid: 239 components: - type: Transform pos: -8.5,-19.5 parent: 818 + - type: Godmode - uid: 733 components: - type: Transform pos: -8.5,-5.5 parent: 818 + - type: Godmode - uid: 741 components: - type: Transform pos: -7.5,-3.5 parent: 818 + - type: Godmode - proto: PottedPlantRandomPlastic entities: - uid: 708 @@ -3988,130 +6603,13 @@ entities: - type: Transform pos: -13.5,1.5 parent: 818 + - type: Godmode - uid: 755 components: - type: Transform pos: -13.5,-3.5 parent: 818 -- proto: Poweredlight - entities: - - uid: 150 - components: - - type: MetaData - flags: PvsPriority - - type: Transform - rot: -1.5707963267948966 rad - pos: -8.5,-5.5 - parent: 818 - - uid: 188 - components: - - type: MetaData - flags: PvsPriority - - type: Transform - rot: -1.5707963267948966 rad - pos: 11.5,2.5 - parent: 818 - - uid: 195 - components: - - type: MetaData - flags: PvsPriority - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-1.5 - parent: 818 - - uid: 209 - components: - - type: MetaData - flags: PvsPriority - - type: Transform - rot: 1.5707963267948966 rad - pos: 7.5,-5.5 - parent: 818 - - uid: 341 - components: - - type: MetaData - flags: PvsPriority - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-1.5 - parent: 818 - - uid: 634 - components: - - type: MetaData - flags: PvsPriority - - type: Transform - pos: 9.5,-16.5 - parent: 818 - - uid: 636 - components: - - type: MetaData - flags: PvsPriority - - type: Transform - rot: 3.141592653589793 rad - pos: 9.5,-11.5 - parent: 818 - - uid: 649 - components: - - type: MetaData - flags: PvsPriority - - type: Transform - rot: 3.141592653589793 rad - pos: -10.5,-11.5 - parent: 818 - - uid: 650 - components: - - type: MetaData - flags: PvsPriority - - type: Transform - pos: -10.5,-16.5 - parent: 818 - - uid: 687 - components: - - type: MetaData - flags: PvsPriority - - type: Transform - rot: 1.5707963267948966 rad - pos: -13.5,1.5 - parent: 818 - - uid: 701 - components: - - type: MetaData - flags: PvsPriority - - type: Transform - rot: 3.141592653589793 rad - pos: -6.5,3.5 - parent: 818 - - uid: 702 - components: - - type: MetaData - flags: PvsPriority - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,3.5 - parent: 818 - - uid: 715 - components: - - type: MetaData - flags: PvsPriority - - type: Transform - pos: -0.5,5.5 - parent: 818 - - uid: 717 - components: - - type: MetaData - flags: PvsPriority - - type: Transform - rot: -1.5707963267948966 rad - pos: -7.5,-3.5 - parent: 818 - - uid: 742 - components: - - type: MetaData - flags: PvsPriority - - type: Transform - rot: 1.5707963267948966 rad - pos: 6.5,-3.5 - parent: 818 + - type: Godmode - proto: RandomSpawner entities: - uid: 895 @@ -4119,32 +6617,7 @@ entities: - type: Transform pos: -4.5,4.5 parent: 818 -- proto: RandomVending - entities: - - uid: 835 - components: - - type: Transform - pos: 9.5,-20.5 - parent: 818 - - uid: 836 - components: - - type: Transform - pos: -10.5,-20.5 - parent: 818 -- proto: RandomVendingDrinks - entities: - - uid: 692 - components: - - type: Transform - pos: 11.5,-5.5 - parent: 818 -- proto: RandomVendingSnacks - entities: - - uid: 834 - components: - - type: Transform - pos: 11.5,-6.5 - parent: 818 + - type: Godmode - proto: ReinforcedWindow entities: - uid: 19 @@ -4153,472 +6626,912 @@ entities: rot: 1.5707963267948966 rad pos: -7.5,-20.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 20 components: - type: Transform rot: 1.5707963267948966 rad pos: -8.5,-20.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 21 components: - type: Transform rot: 1.5707963267948966 rad pos: -8.5,-21.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 22 components: - type: Transform rot: 1.5707963267948966 rad pos: -9.5,-21.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 24 components: - type: Transform rot: 1.5707963267948966 rad pos: -7.5,-19.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 25 components: - type: Transform rot: 1.5707963267948966 rad pos: -11.5,-21.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 26 components: - type: Transform rot: 1.5707963267948966 rad pos: -12.5,-21.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 27 components: - type: Transform rot: 1.5707963267948966 rad pos: -12.5,-20.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 28 components: - type: Transform rot: 1.5707963267948966 rad pos: -13.5,-20.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 29 components: - type: Transform rot: 1.5707963267948966 rad pos: -13.5,-19.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 30 components: - type: Transform rot: 1.5707963267948966 rad pos: 8.5,-21.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 31 components: - type: Transform rot: 1.5707963267948966 rad pos: 7.5,-21.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 32 components: - type: Transform rot: 1.5707963267948966 rad pos: 7.5,-20.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 33 components: - type: Transform rot: 1.5707963267948966 rad pos: 6.5,-20.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 34 components: - type: Transform rot: 1.5707963267948966 rad pos: 6.5,-19.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 35 components: - type: Transform rot: 1.5707963267948966 rad pos: 10.5,-21.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 36 components: - type: Transform rot: 1.5707963267948966 rad pos: 11.5,-21.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 37 components: - type: Transform rot: 1.5707963267948966 rad pos: 11.5,-20.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 38 components: - type: Transform rot: 1.5707963267948966 rad pos: 12.5,-20.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 39 components: - type: Transform rot: 1.5707963267948966 rad pos: 12.5,-19.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 91 components: - type: Transform pos: -14.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 93 components: - type: Transform pos: -14.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 94 components: - type: Transform pos: -6.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 95 components: - type: Transform pos: -6.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 100 components: - type: Transform rot: 1.5707963267948966 rad pos: -7.5,-8.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 105 components: - type: Transform pos: 5.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 106 components: - type: Transform pos: 5.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 107 components: - type: Transform pos: 13.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 108 components: - type: Transform pos: 13.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 109 components: - type: Transform rot: 1.5707963267948966 rad pos: 12.5,-8.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 110 components: - type: Transform rot: 1.5707963267948966 rad pos: 12.5,-7.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 111 components: - type: Transform rot: 1.5707963267948966 rad pos: 12.5,-6.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 113 components: - type: Transform rot: 1.5707963267948966 rad pos: 6.5,-6.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 115 components: - type: Transform rot: 1.5707963267948966 rad pos: 6.5,-7.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 116 components: - type: Transform rot: 1.5707963267948966 rad pos: 6.5,-8.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 117 components: - type: Transform rot: 1.5707963267948966 rad pos: -7.5,-7.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 118 components: - type: Transform rot: 1.5707963267948966 rad pos: -7.5,-6.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 121 components: - type: Transform rot: 1.5707963267948966 rad pos: -13.5,-8.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 122 components: - type: Transform rot: 1.5707963267948966 rad pos: -13.5,-7.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 123 components: - type: Transform rot: 1.5707963267948966 rad pos: -13.5,-6.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 159 components: - type: Transform pos: -14.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 160 components: - type: Transform pos: -14.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 161 components: - type: Transform pos: -6.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 162 components: - type: Transform pos: -6.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 163 components: - type: Transform pos: 5.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 164 components: - type: Transform pos: 13.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 165 components: - type: Transform pos: 5.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 166 components: - type: Transform pos: 13.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 185 components: - type: Transform pos: -5.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 186 components: - type: Transform pos: 2.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 192 components: - type: Transform pos: 4.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 196 components: - type: Transform pos: 3.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 198 components: - type: Transform pos: -3.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 232 components: - type: Transform pos: -4.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 240 components: - type: Transform pos: -12.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 241 components: - type: Transform pos: 11.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 242 components: - type: Transform pos: 7.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 243 components: - type: Transform pos: -8.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 268 components: - type: Transform pos: -14.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 269 components: - type: Transform pos: -14.5,-1.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 270 components: - type: Transform pos: -14.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 271 components: - type: Transform pos: -14.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 272 components: - type: Transform pos: 13.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 273 components: - type: Transform pos: 13.5,-1.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 274 components: - type: Transform pos: 13.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 275 components: - type: Transform pos: 13.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 284 components: - type: Transform pos: -13.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 285 components: - type: Transform pos: -12.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 286 components: - type: Transform pos: -10.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 287 components: - type: Transform pos: -11.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 288 components: - type: Transform pos: -8.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 289 components: - type: Transform pos: -8.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 290 components: - type: Transform pos: -12.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 291 components: - type: Transform pos: -13.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 292 components: - type: Transform pos: -9.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 293 components: - type: Transform pos: 6.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 294 components: - type: Transform pos: -7.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 295 components: - type: Transform pos: -7.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 308 components: - type: Transform pos: 6.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 309 components: - type: Transform pos: 7.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 310 components: - type: Transform pos: 7.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 311 components: - type: Transform pos: 8.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 312 components: - type: Transform pos: 9.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 313 components: - type: Transform pos: 10.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 314 components: - type: Transform pos: 11.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 315 components: - type: Transform pos: 11.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 316 components: - type: Transform pos: 12.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 317 components: - type: Transform pos: 12.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - proto: SignNanotrasen1 entities: - uid: 721 @@ -4626,6 +7539,9 @@ entities: - type: Transform pos: -2.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - proto: SignNanotrasen2 entities: - uid: 722 @@ -4633,6 +7549,9 @@ entities: - type: Transform pos: -1.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - proto: SignNanotrasen3 entities: - uid: 719 @@ -4640,6 +7559,9 @@ entities: - type: Transform pos: -0.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - proto: SignNanotrasen4 entities: - uid: 801 @@ -4647,6 +7569,9 @@ entities: - type: Transform pos: 0.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - proto: SignNanotrasen5 entities: - uid: 802 @@ -4654,6 +7579,9 @@ entities: - type: Transform pos: 1.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - proto: SignNosmoking entities: - uid: 720 @@ -4661,6 +7589,9 @@ entities: - type: Transform pos: -7.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - proto: SignShipDock entities: - uid: 200 @@ -4668,11 +7599,17 @@ entities: - type: Transform pos: 6.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 245 components: - type: Transform pos: -7.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - proto: SignSpace entities: - uid: 571 @@ -4680,46 +7617,73 @@ entities: - type: Transform pos: 12.5,-18.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 640 components: - type: Transform pos: -7.5,-18.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 688 components: - type: Transform pos: -13.5,-18.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 689 components: - type: Transform pos: -7.5,-9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 691 components: - type: Transform pos: -13.5,-9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 705 components: - type: Transform pos: 12.5,-9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 709 components: - type: Transform pos: 6.5,-9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 817 components: - type: Transform pos: 6.5,-18.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 819 components: - type: Transform pos: 4.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - proto: SinkWide entities: - uid: 913 @@ -4728,6 +7692,9 @@ entities: rot: 1.5707963267948966 rad pos: -12.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - proto: SmallLight entities: - uid: 598 @@ -4736,52 +7703,102 @@ entities: rot: -1.5707963267948966 rad pos: -8.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 641 components: - type: Transform pos: -14.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 642 components: - type: Transform pos: -6.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 643 components: - type: Transform pos: -14.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 644 components: - type: Transform pos: -6.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 645 components: - type: Transform pos: 5.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 646 components: - type: Transform pos: 13.5,-10.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 647 components: - type: Transform pos: 13.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 648 components: - type: Transform pos: 5.5,-17.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 917 components: - type: Transform rot: 3.141592653589793 rad pos: -0.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - proto: SMESBasic entities: - uid: 805 @@ -4789,13 +7806,24 @@ entities: - type: Transform pos: -2.5,8.5 parent: 818 -- proto: soda_dispenser + - type: Godmode + missingComponents: + - Anchorable + - Destructible + - Construction +- proto: SodaDispenser entities: - uid: 795 components: - type: Transform pos: -10.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - ApcPowerReceiver + - Anchorable + - Destructible + - Construction - proto: SpaceVillainArcadeFilled entities: - uid: 731 @@ -4804,12 +7832,24 @@ entities: rot: 1.5707963267948966 rad pos: -13.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - ApcPowerReceiver + - Anchorable + - Construction + - Destructible - uid: 732 components: - type: Transform rot: 1.5707963267948966 rad pos: -13.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - ApcPowerReceiver + - Anchorable + - Construction + - Destructible - proto: SpawnPointLatejoin entities: - uid: 763 @@ -4817,161 +7857,193 @@ entities: - type: Transform pos: -7.5,-15.5 parent: 818 + - type: Godmode - uid: 764 components: - type: Transform pos: -7.5,-14.5 parent: 818 + - type: Godmode - uid: 765 components: - type: Transform pos: -7.5,-13.5 parent: 818 + - type: Godmode - uid: 766 components: - type: Transform pos: -7.5,-12.5 parent: 818 + - type: Godmode - uid: 767 components: - type: Transform pos: -9.5,-15.5 parent: 818 + - type: Godmode - uid: 768 components: - type: Transform pos: -9.5,-14.5 parent: 818 + - type: Godmode - uid: 769 components: - type: Transform pos: -9.5,-13.5 parent: 818 + - type: Godmode - uid: 770 components: - type: Transform pos: -9.5,-12.5 parent: 818 + - type: Godmode - uid: 771 components: - type: Transform pos: -11.5,-15.5 parent: 818 + - type: Godmode - uid: 772 components: - type: Transform pos: -11.5,-14.5 parent: 818 + - type: Godmode - uid: 773 components: - type: Transform pos: -11.5,-13.5 parent: 818 + - type: Godmode - uid: 774 components: - type: Transform pos: -11.5,-12.5 parent: 818 + - type: Godmode - uid: 775 components: - type: Transform pos: -13.5,-15.5 parent: 818 + - type: Godmode - uid: 776 components: - type: Transform pos: -13.5,-14.5 parent: 818 + - type: Godmode - uid: 777 components: - type: Transform pos: -13.5,-13.5 parent: 818 + - type: Godmode - uid: 778 components: - type: Transform pos: -13.5,-12.5 parent: 818 + - type: Godmode - uid: 779 components: - type: Transform pos: 6.5,-15.5 parent: 818 + - type: Godmode - uid: 780 components: - type: Transform pos: 6.5,-14.5 parent: 818 + - type: Godmode - uid: 781 components: - type: Transform pos: 6.5,-13.5 parent: 818 + - type: Godmode - uid: 782 components: - type: Transform pos: 6.5,-12.5 parent: 818 + - type: Godmode - uid: 783 components: - type: Transform pos: 8.5,-15.5 parent: 818 + - type: Godmode - uid: 784 components: - type: Transform pos: 8.5,-14.5 parent: 818 + - type: Godmode - uid: 785 components: - type: Transform pos: 8.5,-13.5 parent: 818 + - type: Godmode - uid: 786 components: - type: Transform pos: 8.5,-12.5 parent: 818 + - type: Godmode - uid: 787 components: - type: Transform pos: 10.5,-15.5 parent: 818 + - type: Godmode - uid: 788 components: - type: Transform pos: 10.5,-14.5 parent: 818 + - type: Godmode - uid: 789 components: - type: Transform pos: 10.5,-13.5 parent: 818 + - type: Godmode - uid: 790 components: - type: Transform pos: 10.5,-12.5 parent: 818 + - type: Godmode - uid: 791 components: - type: Transform pos: 12.5,-15.5 parent: 818 + - type: Godmode - uid: 792 components: - type: Transform pos: 12.5,-14.5 parent: 818 + - type: Godmode - uid: 793 components: - type: Transform pos: 12.5,-13.5 parent: 818 + - type: Godmode - uid: 794 components: - type: Transform pos: 12.5,-12.5 parent: 818 + - type: Godmode - proto: SS13Memorial entities: - uid: 594 @@ -4979,56 +8051,121 @@ entities: - type: Transform pos: -0.5,4.5 parent: 818 + - type: Godmode - proto: Stool entities: - uid: 119 components: - type: Transform + anchored: True rot: 3.141592653589793 rad pos: -11.5,-20.5 parent: 818 + - type: Physics + bodyType: Static + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 639 components: - type: Transform + anchored: True rot: 3.141592653589793 rad pos: -9.5,-20.5 parent: 818 - - uid: 723 + - type: Physics + bodyType: Static + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible + - uid: 730 components: - type: Transform + anchored: True rot: 3.141592653589793 rad - pos: 10.5,-20.5 + pos: 8.5,-20.5 parent: 818 - - uid: 724 + - type: Physics + bodyType: Static + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible + - uid: 737 components: - type: Transform + anchored: True rot: 3.141592653589793 rad - pos: 8.5,-20.5 + pos: 10.5,-20.5 parent: 818 - - uid: 729 + - type: Physics + bodyType: Static + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible + - uid: 738 components: - type: Transform + anchored: True rot: -1.5707963267948966 rad - pos: -12.5,-1.5 + pos: -12.5,-0.5 parent: 818 - - uid: 730 + - type: Physics + bodyType: Static + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible + - uid: 740 components: - type: Transform + anchored: True rot: -1.5707963267948966 rad - pos: -12.5,-2.5 + pos: -12.5,0.5 parent: 818 - - uid: 738 + - type: Physics + bodyType: Static + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible + - uid: 761 components: - type: Transform + anchored: True rot: -1.5707963267948966 rad - pos: -12.5,-0.5 + pos: -12.5,-1.5 parent: 818 - - uid: 740 + - type: Physics + bodyType: Static + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible + - uid: 914 components: - type: Transform + anchored: True rot: -1.5707963267948966 rad - pos: -12.5,0.5 + pos: -12.5,-2.5 parent: 818 + - type: Physics + bodyType: Static + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - proto: StoolBar entities: - uid: 230 @@ -5037,18 +8174,33 @@ entities: rot: 3.141592653589793 rad pos: -9.5,1.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 342 components: - type: Transform rot: 3.141592653589793 rad pos: -11.5,1.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 433 components: - type: Transform rot: 3.141592653589793 rad pos: -10.5,1.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - proto: SubstationBasic entities: - uid: 807 @@ -5056,6 +8208,11 @@ entities: - type: Transform pos: -0.5,8.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Anchorable + - Construction - proto: TableCarpet entities: - uid: 572 @@ -5063,21 +8220,37 @@ entities: - type: Transform pos: 9.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 573 components: - type: Transform pos: 9.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 574 components: - type: Transform pos: 10.5,-0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 576 components: - type: Transform pos: 10.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction - proto: TableReinforced entities: - uid: 585 @@ -5086,36 +8259,60 @@ entities: rot: 1.5707963267948966 rad pos: -9.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 707 components: - type: Transform rot: -1.5707963267948966 rad pos: -10.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 751 components: - type: Transform rot: -1.5707963267948966 rad pos: -11.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 796 components: - type: Transform rot: -1.5707963267948966 rad pos: -10.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 797 components: - type: Transform rot: -1.5707963267948966 rad pos: -12.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 798 components: - type: Transform rot: -1.5707963267948966 rad pos: -11.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction - proto: TableWood entities: - uid: 441 @@ -5123,31 +8320,55 @@ entities: - type: Transform pos: 12.5,0.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 575 components: - type: Transform pos: 6.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 587 components: - type: Transform pos: 12.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 706 components: - type: Transform pos: 9.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 750 components: - type: Transform pos: 10.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 756 components: - type: Transform pos: 8.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Construction - proto: TelecomServerFilled entities: - uid: 919 @@ -5155,972 +8376,1162 @@ entities: - type: Transform pos: -1.5,8.5 parent: 818 + - type: EncryptionKeyHolder + keysUnlocked: False + - type: Godmode + missingComponents: + - Destructible + - ApcPowerReceiver + - Anchorable + - Construction - proto: VendingMachineBooze entities: - uid: 753 components: - - type: MetaData - flags: SessionSpecific - type: Transform pos: -9.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Anchorable + - ApcPowerReceiver +- proto: VendingMachineChang + entities: + - uid: 692 + components: + - type: Transform + pos: 9.5,-20.5 + parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Anchorable - proto: VendingMachineCigs entities: - uid: 744 components: - - type: MetaData - flags: SessionSpecific - type: Transform pos: -7.5,1.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Anchorable + - ApcPowerReceiver - proto: VendingMachineCola entities: - uid: 635 components: - - type: MetaData - flags: SessionSpecific - type: Transform pos: -12.5,-5.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Anchorable + - ApcPowerReceiver +- proto: VendingMachineColaBlack + entities: + - uid: 834 + components: + - type: Transform + pos: -10.5,-20.5 + parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Anchorable +- proto: VendingMachineDiscount + entities: + - uid: 836 + components: + - type: Transform + pos: 11.5,-6.5 + parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Anchorable +- proto: VendingMachineDrGibb + entities: + - uid: 835 + components: + - type: Transform + pos: 11.5,-5.5 + parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Anchorable - proto: VendingMachineGames entities: - uid: 748 components: - - type: MetaData - flags: SessionSpecific - type: Transform pos: 6.5,1.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Anchorable + - ApcPowerReceiver - proto: VendingMachineSnack entities: - uid: 637 components: - - type: MetaData - flags: SessionSpecific - type: Transform pos: -12.5,-6.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible + - Anchorable + - ApcPowerReceiver - proto: WallRiveted entities: - uid: 10 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 6.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 23 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -10.5,-21.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 40 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 9.5,-21.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 41 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 6.5,-18.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 42 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 5.5,-18.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 43 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 4.5,-18.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 44 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 12.5,-18.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 45 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 13.5,-18.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 46 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 14.5,-18.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 47 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -5.5,-18.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 48 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -6.5,-18.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 49 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -7.5,-18.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 50 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -13.5,-18.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 51 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -14.5,-18.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 52 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -15.5,-18.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 53 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -13.5,-9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 54 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -14.5,-9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 55 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -15.5,-9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 56 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -7.5,-9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 57 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -6.5,-9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 58 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -5.5,-9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 59 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -5.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 60 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -6.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 61 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -7.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 62 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -13.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 63 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -14.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 64 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -15.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 65 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -13.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 66 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -14.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 67 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -15.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 68 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -7.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 69 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -6.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 70 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -5.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 71 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 12.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 72 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 13.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 73 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 14.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 74 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 14.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 75 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 13.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 76 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 12.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 77 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 14.5,-9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 78 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 13.5,-9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 79 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 12.5,-9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 80 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 6.5,-9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 81 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 5.5,-9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 82 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 4.5,-9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 83 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 6.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 84 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 5.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 85 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 4.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 86 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 6.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 87 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 5.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 88 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 4.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 89 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -7.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 90 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: -13.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 92 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: 1.5707963267948966 rad pos: 12.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 112 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: -1.5707963267948966 rad pos: 6.5,-5.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 114 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: -1.5707963267948966 rad pos: -13.5,-5.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 120 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 5.5,1.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 154 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: -1.5707963267948966 rad pos: 12.5,-5.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 158 components: - - type: MetaData - flags: PvsPriority - type: Transform rot: -1.5707963267948966 rad pos: -7.5,-5.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 179 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -2.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 180 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 5.5,-3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 182 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 1.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 187 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -6.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 189 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 5.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 190 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 1.5,9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 193 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 5.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 199 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -6.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 202 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -6.5,1.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 207 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -6.5,-3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 217 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -4.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 222 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -2.5,9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 223 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -0.5,9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 225 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -1.5,9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 231 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -4.5,9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 258 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -14.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 259 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 13.5,-3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 260 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 13.5,-4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 261 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -14.5,-3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 262 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 13.5,1.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 263 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 13.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 264 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 12.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 265 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -14.5,1.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 266 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -14.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 267 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -13.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 304 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -7.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 306 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -6.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 307 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 6.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 340 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 5.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 343 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 0.5,9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 351 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -3.5,9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 401 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -5.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 403 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 4.5,9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 405 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -1.5,6.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 406 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 4.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 407 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 2.5,6.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 408 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 2.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 409 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 2.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 414 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 3.5,9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 420 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 2.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 578 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -3.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 581 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -3.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 582 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -3.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 583 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -3.5,6.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 588 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -2.5,6.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 602 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 0.5,6.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 693 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 1.5,6.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 711 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -1.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 712 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -0.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 713 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 0.5,-2.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 725 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -5.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 726 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -5.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 736 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -5.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 739 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -5.5,6.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 743 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -5.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 745 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -5.5,8.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 746 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 2.5,9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 754 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 4.5,7.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 757 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 4.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 758 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 4.5,6.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 762 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 4.5,5.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 799 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: 4.5,4.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 800 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -5.5,9.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - uid: 804 components: - - type: MetaData - flags: PvsPriority - type: Transform pos: -0.5,6.5 parent: 818 + - type: Godmode + missingComponents: + - Destructible - proto: WarpPoint entities: - uid: 638 @@ -6130,6 +9541,7 @@ entities: parent: 818 - type: WarpPoint location: Terminal + - type: Godmode - proto: Windoor entities: - uid: 806 @@ -6137,11 +9549,21 @@ entities: - type: Transform pos: -8.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - uid: 841 components: - type: Transform pos: -2.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - proto: WindowReinforcedDirectional entities: - uid: 181 @@ -6150,198 +9572,373 @@ entities: rot: 1.5707963267948966 rad pos: -9.5,2.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 204 components: - type: Transform rot: 1.5707963267948966 rad pos: 0.5,8.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 600 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,8.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 659 components: - type: Transform pos: 9.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 660 components: - type: Transform rot: 3.141592653589793 rad pos: 9.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 661 components: - type: Transform rot: 1.5707963267948966 rad pos: 9.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 662 components: - type: Transform rot: 1.5707963267948966 rad pos: 9.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 663 components: - type: Transform rot: 1.5707963267948966 rad pos: 9.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 664 components: - type: Transform rot: 1.5707963267948966 rad pos: 9.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 665 components: - type: Transform rot: -1.5707963267948966 rad pos: 9.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 666 components: - type: Transform rot: -1.5707963267948966 rad pos: 9.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 667 components: - type: Transform rot: -1.5707963267948966 rad pos: 9.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 668 components: - type: Transform rot: -1.5707963267948966 rad pos: 9.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 669 components: - type: Transform rot: 3.141592653589793 rad pos: -10.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 670 components: - type: Transform pos: -10.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 671 components: - type: Transform rot: -1.5707963267948966 rad pos: -10.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 672 components: - type: Transform rot: -1.5707963267948966 rad pos: -10.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 673 components: - type: Transform rot: -1.5707963267948966 rad pos: -10.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 674 components: - type: Transform rot: -1.5707963267948966 rad pos: -10.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 675 components: - type: Transform rot: 1.5707963267948966 rad pos: -10.5,-12.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 676 components: - type: Transform rot: 1.5707963267948966 rad pos: -10.5,-13.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 677 components: - type: Transform rot: 1.5707963267948966 rad pos: -10.5,-14.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 678 components: - type: Transform rot: 1.5707963267948966 rad pos: -10.5,-15.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 679 components: - type: Transform rot: 3.141592653589793 rad pos: -9.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 680 components: - type: Transform rot: 3.141592653589793 rad pos: -11.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 681 components: - type: Transform pos: -11.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 682 components: - type: Transform pos: -9.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 683 components: - type: Transform pos: 10.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 684 components: - type: Transform pos: 8.5,-11.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 685 components: - type: Transform rot: 3.141592653589793 rad pos: 8.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 686 components: - type: Transform rot: 3.141592653589793 rad pos: 10.5,-16.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 837 components: - type: Transform pos: 1.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 838 components: - type: Transform pos: 0.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 839 components: - type: Transform pos: -0.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 840 components: - type: Transform pos: -1.5,3.5 parent: 818 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible ... diff --git a/Resources/Prototypes/Entities/Structures/Power/cable_terminal.yml b/Resources/Prototypes/Entities/Structures/Power/cable_terminal.yml index 8c7ee9e2194..cc6abce25ed 100644 --- a/Resources/Prototypes/Entities/Structures/Power/cable_terminal.yml +++ b/Resources/Prototypes/Entities/Structures/Power/cable_terminal.yml @@ -45,3 +45,11 @@ powerMV: !type:CableTerminalNode nodeGroupID: MVPower + +- type: entity + id: CableTerminalUncuttable + parent: CableTerminal + suffix: uncuttable + components: + - type: Cable + cuttingQuality: null \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Power/cables.yml b/Resources/Prototypes/Entities/Structures/Power/cables.yml index ac855a54606..f1ae038bc15 100644 --- a/Resources/Prototypes/Entities/Structures/Power/cables.yml +++ b/Resources/Prototypes/Entities/Structures/Power/cables.yml @@ -98,6 +98,14 @@ sound: path: /Audio/Ambience/Objects/emf_buzz.ogg +- type: entity + id: CableHVUncuttable + parent: CableHV + suffix: uncuttable + components: + - type: Cable + cuttingQuality: null + - type: entity parent: CableBase id: CableMV @@ -142,6 +150,14 @@ - type: CableVisualizer statePrefix: mvcable_ +- type: entity + id: CableMVUncuttable + parent: CableMV + suffix: uncuttable + components: + - type: Cable + cuttingQuality: null + - type: entity parent: CableBase id: CableApcExtension @@ -188,3 +204,11 @@ acts: [ "Destruction" ] - type: CableVisualizer statePrefix: lvcable_ + +- type: entity + id: CableApcExtensionUncuttable + parent: CableApcExtension + suffix: uncuttable + components: + - type: Cable + cuttingQuality: null From 9a898bb98ed6527f17fc95019aaaeaca941900fb Mon Sep 17 00:00:00 2001 From: IProduceWidgets <107586145+IProduceWidgets@users.noreply.github.com> Date: Sat, 23 Nov 2024 10:14:13 -0500 Subject: [PATCH 185/187] babyproof arrivals shuttle (#33284) * babyproof arrivals shuttle * always powered lights * uncuttable cables from terminal PR. --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- Resources/Maps/Shuttles/arrivals.yml | 1363 ++++++++++++++++++++++++-- 1 file changed, 1260 insertions(+), 103 deletions(-) diff --git a/Resources/Maps/Shuttles/arrivals.yml b/Resources/Maps/Shuttles/arrivals.yml index b4609e1b0ae..3c853ef7395 100644 --- a/Resources/Maps/Shuttles/arrivals.yml +++ b/Resources/Maps/Shuttles/arrivals.yml @@ -192,13 +192,17 @@ entities: - type: RadiationGridResistance - type: SpreaderGrid - type: GridPathfinding + - type: Godmode - proto: AirCanister entities: - uid: 214 components: - type: Transform + anchored: True pos: -1.5,7.5 parent: 292 + - type: Physics + bodyType: Static - proto: AirlockCommandGlassLocked entities: - uid: 278 @@ -208,6 +212,11 @@ entities: - type: Transform pos: -0.5,6.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - proto: AirlockGlassShuttle entities: - uid: 177 @@ -217,11 +226,16 @@ entities: pos: 3.5,-2.5 parent: 292 - type: Door - secondsUntilStateChange: -336.60016 + secondsUntilStateChange: -623.03485 state: Opening - type: DeviceLinkSource lastSignals: DoorStatus: True + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 178 components: - type: Transform @@ -229,11 +243,16 @@ entities: pos: 3.5,4.5 parent: 292 - type: Door - secondsUntilStateChange: -338.3335 + secondsUntilStateChange: -624.7682 state: Opening - type: DeviceLinkSource lastSignals: DoorStatus: True + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 179 components: - type: Transform @@ -241,11 +260,16 @@ entities: pos: -4.5,4.5 parent: 292 - type: Door - secondsUntilStateChange: -332.80017 + secondsUntilStateChange: -619.23486 state: Opening - type: DeviceLinkSource lastSignals: DoorStatus: True + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 180 components: - type: Transform @@ -253,11 +277,16 @@ entities: pos: -4.5,-2.5 parent: 292 - type: Door - secondsUntilStateChange: -334.70016 + secondsUntilStateChange: -621.1349 state: Opening - type: DeviceLinkSource lastSignals: DoorStatus: True + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - proto: APCBasic entities: - uid: 116 @@ -266,6 +295,13 @@ entities: rot: 3.141592653589793 rad pos: -0.5,3.5 parent: 292 + - type: BatterySelfRecharger + autoRechargeRate: 50000 + autoRecharge: True + - type: Godmode + missingComponents: + - Construction + - Destructible - proto: ArrivalsShuttleTimer entities: - uid: 294 @@ -273,11 +309,17 @@ entities: - type: Transform pos: -4.5,3.5 parent: 292 + - type: Godmode + missingComponents: + - Construction - uid: 295 components: - type: Transform pos: 3.5,3.5 parent: 292 + - type: Godmode + missingComponents: + - Construction - proto: AtmosDeviceFanDirectional entities: - uid: 164 @@ -286,24 +328,28 @@ entities: rot: -1.5707963267948966 rad pos: -4.5,4.5 parent: 292 + - type: Godmode - uid: 165 components: - type: Transform rot: 1.5707963267948966 rad pos: 3.5,4.5 parent: 292 + - type: Godmode - uid: 166 components: - type: Transform rot: 1.5707963267948966 rad pos: 3.5,-2.5 parent: 292 + - type: Godmode - uid: 167 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,-2.5 parent: 292 + - type: Godmode - proto: BlockGameArcade entities: - uid: 258 @@ -312,418 +358,747 @@ entities: rot: -1.5707963267948966 rad pos: -1.5,-1.5 parent: 292 -- proto: CableApcExtension + - type: Godmode + missingComponents: + - Anchorable + - Construction + - Destructible +- proto: CableApcExtensionUncuttable entities: - uid: 123 components: - type: Transform pos: -0.5,3.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 124 components: - type: Transform pos: -0.5,4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 125 components: - type: Transform pos: -1.5,4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 126 components: - type: Transform pos: -2.5,4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 127 components: - type: Transform pos: -2.5,3.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 128 components: - type: Transform pos: -2.5,2.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 129 components: - type: Transform pos: -2.5,1.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 130 components: - type: Transform pos: -2.5,0.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 131 components: - type: Transform pos: -2.5,-0.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 132 components: - type: Transform pos: -2.5,-1.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 133 components: - type: Transform pos: -2.5,-2.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 134 components: - type: Transform pos: -1.5,-2.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 135 components: - type: Transform pos: -0.5,-2.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 136 components: - type: Transform pos: 0.5,-2.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 137 components: - type: Transform pos: 1.5,-2.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 138 components: - type: Transform pos: 1.5,-1.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 139 components: - type: Transform pos: 1.5,-0.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 140 components: - type: Transform pos: 1.5,0.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 141 components: - type: Transform pos: 1.5,1.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 142 components: - type: Transform pos: 1.5,2.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 143 components: - type: Transform pos: 1.5,3.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 144 components: - type: Transform pos: 1.5,4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 145 components: - type: Transform pos: 0.5,4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 146 components: - type: Transform pos: -0.5,5.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 147 components: - type: Transform pos: -0.5,6.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 148 components: - type: Transform pos: -0.5,7.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 149 components: - type: Transform pos: -0.5,8.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 150 components: - type: Transform pos: -1.5,-3.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 151 components: - type: Transform pos: 0.5,-3.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 152 components: - type: Transform pos: 0.5,-4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 153 components: - type: Transform pos: 1.5,-4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 154 components: - type: Transform pos: -1.5,-4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 155 components: - type: Transform pos: -2.5,-4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 156 components: - type: Transform pos: -2.5,-5.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 157 components: - type: Transform pos: 1.5,-5.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 158 components: - type: Transform pos: -1.5,8.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 159 components: - type: Transform pos: 0.5,8.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 160 components: - type: Transform pos: -3.5,4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 161 components: - type: Transform pos: 2.5,4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 162 components: - type: Transform pos: 2.5,-2.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 163 components: - type: Transform pos: -3.5,-2.5 parent: 292 -- proto: CableHV + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable +- proto: CableHVUncuttable entities: - uid: 79 components: - type: Transform pos: 0.5,7.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 80 components: - type: Transform pos: 1.5,7.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 81 components: - type: Transform pos: 1.5,6.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 82 components: - type: Transform pos: -0.5,7.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 83 components: - type: Transform pos: -0.5,6.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 85 components: - type: Transform pos: -0.5,5.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 86 components: - type: Transform pos: -0.5,4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 87 components: - type: Transform pos: -1.5,4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 88 components: - type: Transform pos: -2.5,4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 89 components: - type: Transform pos: -2.5,3.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 90 components: - type: Transform pos: -2.5,2.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 91 components: - type: Transform pos: -2.5,1.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 92 components: - type: Transform pos: -2.5,0.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 93 components: - type: Transform pos: -2.5,-0.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 94 components: - type: Transform pos: -2.5,-1.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 95 components: - type: Transform pos: -2.5,-2.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 96 components: - type: Transform pos: -1.5,-2.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 97 components: - type: Transform pos: -0.5,-2.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 98 components: - type: Transform pos: 0.5,-2.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 99 components: - type: Transform pos: 1.5,-2.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 100 components: - type: Transform pos: 1.5,-1.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 101 components: - type: Transform pos: 1.5,-0.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 102 components: - type: Transform pos: 1.5,0.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 103 components: - type: Transform pos: 1.5,1.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 104 components: - type: Transform pos: 1.5,2.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 105 components: - type: Transform pos: 1.5,3.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 106 components: - type: Transform pos: 1.5,4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 107 components: - type: Transform pos: 0.5,4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 108 components: - type: Transform pos: -1.5,-3.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 109 components: - type: Transform pos: -1.5,-4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 110 components: - type: Transform pos: -1.5,-5.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 111 components: - type: Transform pos: 0.5,-5.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 112 components: - type: Transform pos: 0.5,-4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 113 components: - type: Transform pos: 0.5,-3.5 parent: 292 -- proto: CableMV + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable +- proto: CableMVUncuttable entities: - uid: 117 components: - type: Transform pos: 1.5,6.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 118 components: - type: Transform pos: 1.5,5.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 119 components: - type: Transform pos: 1.5,4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 120 components: - type: Transform pos: 0.5,4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 121 components: - type: Transform pos: -0.5,4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable - uid: 122 components: - type: Transform pos: -0.5,3.5 parent: 292 -- proto: CableTerminal + - type: Godmode + missingComponents: + - Destructible + - RCDDeconstructable +- proto: CableTerminalUncuttable entities: - uid: 84 components: @@ -731,6 +1106,11 @@ entities: rot: 1.5707963267948966 rad pos: -0.5,7.5 parent: 292 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Destructible + - Construction - proto: ChairPilotSeat entities: - uid: 223 @@ -739,112 +1119,207 @@ entities: rot: -1.5707963267948966 rad pos: 2.5,-0.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 224 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,0.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 225 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,1.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 226 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,2.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 227 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,-0.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 228 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,0.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 229 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,1.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 230 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,2.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 231 components: - type: Transform rot: 1.5707963267948966 rad pos: 0.5,-0.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 232 components: - type: Transform rot: 1.5707963267948966 rad pos: 0.5,0.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 233 components: - type: Transform rot: 1.5707963267948966 rad pos: 0.5,1.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 234 components: - type: Transform rot: 1.5707963267948966 rad pos: 0.5,2.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 235 components: - type: Transform rot: 1.5707963267948966 rad pos: -3.5,-0.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 236 components: - type: Transform rot: 1.5707963267948966 rad pos: -3.5,0.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 237 components: - type: Transform rot: 1.5707963267948966 rad pos: -3.5,1.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 238 components: - type: Transform rot: 1.5707963267948966 rad pos: -3.5,2.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 239 components: - type: Transform pos: 1.5,5.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 240 components: - type: Transform pos: -2.5,5.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 241 components: - type: Transform rot: 3.141592653589793 rad pos: -0.5,8.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - proto: ClosetEmergencyFilledRandom entities: - uid: 252 @@ -852,72 +1327,18 @@ entities: - type: Transform pos: 0.5,5.5 parent: 292 - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 1.7459903 - - 6.568249 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - uid: 260 + - uid: 253 components: - type: Transform pos: -2.5,-3.5 parent: 292 - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 1.7459903 - - 6.568249 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - proto: ClosetFireFilled entities: - - uid: 253 + - uid: 260 components: - type: Transform pos: -1.5,5.5 parent: 292 - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 1.7459903 - - 6.568249 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - proto: ClosetWallEmergencyFilledRandom entities: - uid: 288 @@ -944,6 +1365,10 @@ entities: - 0 - 0 - 0 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 289 components: - type: Transform @@ -967,6 +1392,10 @@ entities: - 0 - 0 - 0 + - type: Godmode + missingComponents: + - Destructible + - Construction - proto: ClosetWallFireFilledRandom entities: - uid: 286 @@ -992,6 +1421,10 @@ entities: - 0 - 0 - 0 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 287 components: - type: Transform @@ -1016,40 +1449,28 @@ entities: - 0 - 0 - 0 + - type: Godmode + missingComponents: + - Destructible + - Construction - proto: ClothingBackpack entities: - - uid: 275 + - uid: 266 components: - type: Transform - pos: 2.5,5.5 + pos: 2.5277145,5.600461 parent: 292 - - type: GroupExamine - group: - - hoverMessage: "" - contextText: verb-examine-group-other - icon: /Textures/Interface/examine-star.png - components: - - Armor - - ClothingSpeedModifier - entries: - - message: >- - It provides the following protection: - - - [color=orange]Explosion[/color] damage [color=white]to contents[/color] reduced by [color=lightblue]10%[/color]. - priority: 0 - component: Armor - title: null - proto: ClothingMaskBreath entities: - - uid: 272 + - uid: 267 components: - type: Transform - pos: 2.5,-3.5 + pos: 2.4086668,-3.4828715 parent: 292 - - uid: 273 + - uid: 274 components: - type: Transform - pos: -3.5,-3.5 + pos: -3.6032372,-3.4947772 parent: 292 - proto: ComputerShuttle entities: @@ -1058,24 +1479,29 @@ entities: - type: Transform pos: -0.5,9.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - proto: CrowbarRed entities: - - uid: 274 + - uid: 293 components: - type: Transform - pos: 0.5,-3.5 + pos: 0.45628688,-3.5066814 parent: 292 - proto: EmergencyOxygenTankFilled entities: - - uid: 270 + - uid: 268 components: - type: Transform - pos: 2.5708976,-3.5851696 + pos: -3.2460945,-3.6614437 parent: 292 - - uid: 271 + - uid: 269 components: - type: Transform - pos: -3.4291024,-3.5851696 + pos: 2.7300956,-3.6138248 parent: 292 - proto: ExtinguisherCabinetFilled entities: @@ -1084,6 +1510,9 @@ entities: - type: Transform pos: -0.5,-4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible - proto: GasPassiveGate entities: - uid: 184 @@ -1091,6 +1520,11 @@ entities: - type: Transform pos: -0.5,7.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - proto: GasPipeBend entities: - uid: 182 @@ -1099,34 +1533,64 @@ entities: rot: 1.5707963267948966 rad pos: -1.5,8.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 183 components: - type: Transform pos: -0.5,8.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 187 components: - type: Transform rot: 1.5707963267948966 rad pos: -2.5,5.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 188 components: - type: Transform pos: 1.5,5.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 189 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-3.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 190 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,-3.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - proto: GasPipeFourway entities: - uid: 186 @@ -1134,6 +1598,11 @@ entities: - type: Transform pos: -0.5,5.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - proto: GasPipeStraight entities: - uid: 185 @@ -1141,110 +1610,215 @@ entities: - type: Transform pos: -0.5,6.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 192 components: - type: Transform rot: 1.5707963267948966 rad pos: 0.5,5.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 193 components: - type: Transform rot: 1.5707963267948966 rad pos: -1.5,5.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 194 components: - type: Transform rot: 1.5707963267948966 rad pos: -1.5,-3.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 195 components: - type: Transform rot: 1.5707963267948966 rad pos: 0.5,-3.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 196 components: - type: Transform pos: 1.5,-2.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 197 components: - type: Transform pos: 1.5,-1.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 198 components: - type: Transform pos: 1.5,-0.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 199 components: - type: Transform pos: 1.5,0.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 200 components: - type: Transform pos: 1.5,1.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 201 components: - type: Transform pos: 1.5,2.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 202 components: - type: Transform pos: 1.5,3.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 203 components: - type: Transform pos: 1.5,4.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 204 components: - type: Transform pos: -2.5,-2.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 205 components: - type: Transform pos: -2.5,-1.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 206 components: - type: Transform pos: -2.5,-0.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 207 components: - type: Transform pos: -2.5,0.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 208 components: - type: Transform pos: -2.5,1.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 209 components: - type: Transform pos: -2.5,2.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 210 components: - type: Transform pos: -2.5,3.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 211 components: - type: Transform pos: -2.5,4.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - proto: GasPipeTJunction entities: - uid: 191 @@ -1253,6 +1827,11 @@ entities: rot: 3.141592653589793 rad pos: -0.5,-3.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - proto: GasPort entities: - uid: 181 @@ -1261,6 +1840,11 @@ entities: rot: 3.141592653589793 rad pos: -1.5,7.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - proto: GasVentPump entities: - uid: 212 @@ -1268,12 +1852,22 @@ entities: - type: Transform pos: -0.5,-2.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 213 components: - type: Transform rot: 3.141592653589793 rad pos: -0.5,4.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - proto: GeneratorBasic15kW entities: - uid: 114 @@ -1281,11 +1875,19 @@ entities: - type: Transform pos: -1.5,-5.5 parent: 292 + - type: Godmode + missingComponents: + - Anchorable + - Destructible - uid: 115 components: - type: Transform pos: 0.5,-5.5 parent: 292 + - type: Godmode + missingComponents: + - Anchorable + - Destructible - proto: GeneratorWallmountAPU entities: - uid: 78 @@ -1293,6 +1895,11 @@ entities: - type: Transform pos: 1.5,7.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - proto: GravityGeneratorMini entities: - uid: 291 @@ -1300,6 +1907,11 @@ entities: - type: Transform pos: -2.5,-5.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Anchorable + - Construction - proto: Grille entities: - uid: 44 @@ -1307,116 +1919,231 @@ entities: - type: Transform pos: 3.5,-0.5 parent: 292 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 52 components: - type: Transform pos: 3.5,0.5 parent: 292 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 53 components: - type: Transform pos: 3.5,1.5 parent: 292 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 54 components: - type: Transform pos: 3.5,2.5 parent: 292 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 55 components: - type: Transform pos: -4.5,-0.5 parent: 292 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 56 components: - type: Transform pos: -4.5,0.5 parent: 292 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 57 components: - type: Transform pos: -4.5,1.5 parent: 292 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 58 components: - type: Transform pos: -4.5,2.5 parent: 292 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 59 components: - type: Transform pos: -1.5,-4.5 parent: 292 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 60 components: - type: Transform pos: -2.5,-4.5 parent: 292 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 61 components: - type: Transform pos: 1.5,-4.5 parent: 292 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 62 components: - type: Transform pos: 0.5,-4.5 parent: 292 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 63 components: - type: Transform pos: 0.5,6.5 parent: 292 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 64 components: - type: Transform pos: -1.5,6.5 parent: 292 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 65 components: - type: Transform pos: -2.5,8.5 parent: 292 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 66 components: - type: Transform pos: -2.5,9.5 parent: 292 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 67 components: - type: Transform pos: -1.5,9.5 parent: 292 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 68 components: - type: Transform pos: -1.5,10.5 parent: 292 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 69 components: - type: Transform pos: -0.5,10.5 parent: 292 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 70 components: - type: Transform pos: 0.5,10.5 parent: 292 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 71 components: - type: Transform pos: 0.5,9.5 parent: 292 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 72 components: - type: Transform pos: 1.5,9.5 parent: 292 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - uid: 73 components: - type: Transform pos: 1.5,8.5 parent: 292 + - type: Godmode + missingComponents: + - RCDDeconstructable + - Construction + - Destructible - proto: Gyroscope entities: - uid: 168 @@ -1424,6 +2151,11 @@ entities: - type: Transform pos: 1.5,-5.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Anchorable + - Construction - proto: IntercomCommon entities: - uid: 264 @@ -1431,6 +2163,12 @@ entities: - type: Transform pos: -0.5,-1.5 parent: 292 + - type: EncryptionKeyHolder + keysUnlocked: False + - type: Godmode + missingComponents: + - Construction + - Destructible - proto: MaintenanceFluffSpawner entities: - uid: 284 @@ -1438,29 +2176,31 @@ entities: - type: Transform pos: 0.5,3.5 parent: 292 + - type: Godmode - uid: 285 components: - type: Transform pos: -1.5,3.5 parent: 292 + - type: Godmode - proto: MedkitFilled entities: - - uid: 266 + - uid: 276 components: - type: Transform - pos: -0.5,-3.5 + pos: -0.4960943,-3.4828715 parent: 292 - proto: NitrogenTankFilled entities: - - uid: 268 + - uid: 271 components: - type: Transform - pos: -3.5,-3.5 + pos: -3.4365704,-3.590015 parent: 292 - - uid: 269 + - uid: 273 components: - type: Transform - pos: 2.5,-3.5 + pos: 2.563429,-3.566205 parent: 292 - proto: PosterLegitNanotrasenLogo entities: @@ -1469,6 +2209,9 @@ entities: - type: Transform pos: -2.5,6.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible - proto: PottedPlantRandom entities: - uid: 254 @@ -1476,21 +2219,25 @@ entities: - type: Transform pos: 2.5,-1.5 parent: 292 + - type: Godmode - uid: 255 components: - type: Transform pos: 2.5,3.5 parent: 292 + - type: Godmode - uid: 256 components: - type: Transform pos: -3.5,3.5 parent: 292 + - type: Godmode - uid: 257 components: - type: Transform pos: -3.5,-1.5 parent: 292 + - type: Godmode - proto: PowerCellRecharger entities: - uid: 265 @@ -1498,7 +2245,12 @@ entities: - type: Transform pos: 0.5,-3.5 parent: 292 -- proto: Poweredlight + - type: Godmode + missingComponents: + - Anchorable + - Destructible + - Construction +- proto: AlwaysPoweredWallLight entities: - uid: 279 components: @@ -1508,6 +2260,11 @@ entities: parent: 292 - type: ApcPowerReceiver powerLoad: 0 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 280 components: - type: Transform @@ -1516,6 +2273,11 @@ entities: parent: 292 - type: ApcPowerReceiver powerLoad: 0 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 281 components: - type: Transform @@ -1524,6 +2286,11 @@ entities: parent: 292 - type: ApcPowerReceiver powerLoad: 0 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 282 components: - type: Transform @@ -1532,6 +2299,11 @@ entities: parent: 292 - type: ApcPowerReceiver powerLoad: 0 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 283 components: - type: Transform @@ -1540,6 +2312,11 @@ entities: parent: 292 - type: ApcPowerReceiver powerLoad: 0 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - proto: Rack entities: - uid: 262 @@ -1547,11 +2324,21 @@ entities: - type: Transform pos: 2.5,-3.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - uid: 263 components: - type: Transform pos: -3.5,-3.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - Anchorable + - Destructible - proto: ShuttleWindow entities: - uid: 28 @@ -1559,116 +2346,231 @@ entities: - type: Transform pos: 3.5,-0.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 29 components: - type: Transform pos: 3.5,0.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 30 components: - type: Transform pos: 3.5,1.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 31 components: - type: Transform pos: 3.5,2.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 32 components: - type: Transform pos: -4.5,-0.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 33 components: - type: Transform pos: -4.5,0.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 34 components: - type: Transform pos: -4.5,1.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 35 components: - type: Transform pos: -4.5,2.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 36 components: - type: Transform pos: -1.5,-4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 37 components: - type: Transform pos: -2.5,-4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 38 components: - type: Transform pos: 0.5,-4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 39 components: - type: Transform pos: 1.5,-4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 40 components: - type: Transform pos: 0.5,6.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 41 components: - type: Transform pos: -1.5,6.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 42 components: - type: Transform pos: -2.5,8.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 43 components: - type: Transform pos: -1.5,9.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 45 components: - type: Transform pos: -2.5,9.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 46 components: - type: Transform pos: -1.5,10.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 47 components: - type: Transform pos: -0.5,10.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 48 components: - type: Transform pos: 0.5,10.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 49 components: - type: Transform pos: 0.5,9.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 50 components: - type: Transform pos: 1.5,9.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - uid: 51 components: - type: Transform pos: 1.5,8.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction + - RCDDeconstructable - proto: SMESBasic entities: - uid: 76 @@ -1676,6 +2578,11 @@ entities: - type: Transform pos: 0.5,7.5 parent: 292 + - type: Godmode + missingComponents: + - Anchorable + - Destructible + - Construction - proto: SpaceVillainArcadeFilled entities: - uid: 259 @@ -1684,6 +2591,11 @@ entities: rot: 1.5707963267948966 rad pos: 0.5,-1.5 parent: 292 + - type: Godmode + missingComponents: + - Anchorable + - Construction + - Destructible - proto: SubstationWallBasic entities: - uid: 77 @@ -1691,6 +2603,10 @@ entities: - type: Transform pos: 1.5,6.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - proto: TableReinforced entities: - uid: 243 @@ -1698,46 +2614,82 @@ entities: - type: Transform pos: 0.5,-3.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 244 components: - type: Transform pos: -1.5,8.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 245 components: - type: Transform pos: 0.5,8.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 246 components: - type: Transform pos: -0.5,-3.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 247 components: - type: Transform pos: -1.5,-3.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 248 components: - type: Transform pos: 0.5,3.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 249 components: - type: Transform pos: -1.5,3.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 250 components: - type: Transform pos: 2.5,5.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 251 components: - type: Transform pos: -3.5,5.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - proto: Thruster entities: - uid: 169 @@ -1745,58 +2697,103 @@ entities: - type: Transform pos: 2.5,7.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Anchorable + - Construction - uid: 170 components: - type: Transform pos: -3.5,7.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Anchorable + - Construction - uid: 171 components: - type: Transform rot: 3.141592653589793 rad pos: -1.5,-6.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Anchorable + - Construction - uid: 172 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,-6.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Anchorable + - Construction - uid: 173 components: - type: Transform rot: 3.141592653589793 rad pos: 1.5,-6.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Anchorable + - Construction - uid: 174 components: - type: Transform rot: 3.141592653589793 rad pos: 0.5,-6.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Anchorable + - Construction - uid: 175 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,-6.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Anchorable + - Construction - uid: 176 components: - type: Transform rot: 1.5707963267948966 rad pos: -3.5,-6.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Anchorable + - Construction - proto: ToolboxEmergencyFilled entities: - - uid: 267 + - uid: 270 components: - type: Transform - pos: -1.5,-3.5 + pos: -1.4722855,-3.4471583 parent: 292 - - uid: 276 + - uid: 272 components: - type: Transform - pos: -3.5,5.5 + pos: -1.4722855,-3.4471583 + parent: 292 + - uid: 275 + components: + - type: Transform + pos: -3.5079994,5.600461 parent: 292 - proto: VendingMachineClothing entities: @@ -1805,6 +2802,10 @@ entities: - type: Transform pos: 1.5,-3.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Anchorable - proto: WallShuttle entities: - uid: 1 @@ -1812,146 +2813,262 @@ entities: - type: Transform pos: 3.5,-3.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 2 components: - type: Transform pos: 3.5,-1.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 3 components: - type: Transform pos: -4.5,-3.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 4 components: - type: Transform pos: -4.5,-1.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 5 components: - type: Transform pos: -4.5,3.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 6 components: - type: Transform pos: -4.5,5.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 7 components: - type: Transform pos: 3.5,3.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 8 components: - type: Transform pos: 3.5,5.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 9 components: - type: Transform pos: 3.5,6.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 10 components: - type: Transform pos: 2.5,6.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 11 components: - type: Transform pos: -4.5,6.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 12 components: - type: Transform pos: -3.5,6.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 13 components: - type: Transform pos: -2.5,6.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 14 components: - type: Transform pos: -2.5,7.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 15 components: - type: Transform pos: 1.5,6.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 16 components: - type: Transform pos: 1.5,7.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 17 components: - type: Transform pos: 3.5,-4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 18 components: - type: Transform pos: 2.5,-4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 19 components: - type: Transform pos: -4.5,-4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 20 components: - type: Transform pos: -3.5,-4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 21 components: - type: Transform pos: -0.5,-4.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 22 components: - type: Transform pos: 2.5,-5.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 23 components: - type: Transform pos: 3.5,-5.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 24 components: - type: Transform pos: -3.5,-5.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 25 components: - type: Transform pos: -4.5,-5.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 26 components: - type: Transform pos: -0.5,-6.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 27 components: - type: Transform pos: -0.5,-5.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 74 components: - type: Transform pos: -0.5,-1.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - uid: 75 components: - type: Transform pos: -0.5,3.5 parent: 292 + - type: Godmode + missingComponents: + - Destructible + - Construction - proto: WindowReinforcedDirectional entities: - uid: 215 @@ -1960,46 +3077,86 @@ entities: rot: -1.5707963267948966 rad pos: -0.5,-0.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 216 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,0.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 217 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,1.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 218 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,2.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 219 components: - type: Transform rot: 1.5707963267948966 rad pos: -0.5,2.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 220 components: - type: Transform rot: 1.5707963267948966 rad pos: -0.5,1.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 221 components: - type: Transform rot: 1.5707963267948966 rad pos: -0.5,0.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible - uid: 222 components: - type: Transform rot: 1.5707963267948966 rad pos: -0.5,-0.5 parent: 292 + - type: Godmode + missingComponents: + - Construction + - RCDDeconstructable + - Destructible ... From b8a98eac1fa08090c86f3124751fa7b5c54de58d Mon Sep 17 00:00:00 2001 From: Timothy Lowe <twlowe06@gmail.com> Date: Wed, 27 Nov 2024 12:04:04 -0800 Subject: [PATCH 186/187] Fix CCVars. --- .../Systems/Ghost/GhostUIController.cs | 4 +++- .../Systems/Ghost/Widgets/GhostGui.xaml.cs | 5 +++-- .../GameTicking/Commands/GhostRespawnCommand.cs | 7 +++++-- Content.Shared/_CD/CCVars/CDCCVars.cs | 16 ++++++++++++++++ 4 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 Content.Shared/_CD/CCVars/CDCCVars.cs diff --git a/Content.Client/UserInterface/Systems/Ghost/GhostUIController.cs b/Content.Client/UserInterface/Systems/Ghost/GhostUIController.cs index 2aeb74d8528..219fac5db3c 100644 --- a/Content.Client/UserInterface/Systems/Ghost/GhostUIController.cs +++ b/Content.Client/UserInterface/Systems/Ghost/GhostUIController.cs @@ -7,6 +7,8 @@ using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controllers; using Robust.Shared.Console; +// CD +using Content.Shared._CD.CCVars; namespace Content.Client.UserInterface.Systems.Ghost; @@ -68,7 +70,7 @@ public void UpdateGui() } Gui.Visible = _system?.IsGhost ?? false; - Gui.Update(_system?.AvailableGhostRoleCount, _system?.Player?.CanReturnToBody, _system?.Player?.TimeOfDeath, _cfg.GetCVar(CCVars.RespawnTime)); + Gui.Update(_system?.AvailableGhostRoleCount, _system?.Player?.CanReturnToBody, _system?.Player?.TimeOfDeath, _cfg.GetCVar(CDCCVars.RespawnTime)); } private void OnPlayerRemoved(GhostComponent component) diff --git a/Content.Client/UserInterface/Systems/Ghost/Widgets/GhostGui.xaml.cs b/Content.Client/UserInterface/Systems/Ghost/Widgets/GhostGui.xaml.cs index 63713c2488a..e2fd9b119c8 100644 --- a/Content.Client/UserInterface/Systems/Ghost/Widgets/GhostGui.xaml.cs +++ b/Content.Client/UserInterface/Systems/Ghost/Widgets/GhostGui.xaml.cs @@ -5,7 +5,8 @@ using Robust.Client.UserInterface.XAML; using Robust.Shared.Timing; using Robust.Shared.Configuration; -using Content.Shared.CCVar; +// CD +using Content.Shared._CD.CCVars; namespace Content.Client.UserInterface.Systems.Ghost.Widgets; @@ -53,7 +54,7 @@ public void UpdateRespawn(TimeSpan? todd) if (todd != null) { _timeOfDeath = todd; - _minTimeToRespawn = _configurationManager.GetCVar(CCVars.RespawnTime); + _minTimeToRespawn = _configurationManager.GetCVar(CDCCVars.RespawnTime); } } diff --git a/Content.Server/GameTicking/Commands/GhostRespawnCommand.cs b/Content.Server/GameTicking/Commands/GhostRespawnCommand.cs index 396a23ef55f..686374a32ad 100644 --- a/Content.Server/GameTicking/Commands/GhostRespawnCommand.cs +++ b/Content.Server/GameTicking/Commands/GhostRespawnCommand.cs @@ -6,6 +6,9 @@ using Robust.Shared.Configuration; using Robust.Shared.Console; using Robust.Shared.Timing; +// This really should be namespaced anyways but, later +// CD +using Content.Shared._CD.CCVars; namespace Content.Server.GameTicking.Commands; @@ -22,7 +25,7 @@ public sealed class GhostRespawnCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (_configurationManager.GetCVar(CCVars.RespawnTime) == 0) + if (_configurationManager.GetCVar(CDCCVars.RespawnTime) == 0) { shell.WriteLine("Respawning is disabled, ask an admin to respawn you."); return; @@ -53,7 +56,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) return; } var time = (_gameTiming.CurTime - ghost.TimeOfDeath); - var respawnTime = _configurationManager.GetCVar(CCVars.RespawnTime); + var respawnTime = _configurationManager.GetCVar(CDCCVars.RespawnTime); if (respawnTime > time.TotalSeconds) { diff --git a/Content.Shared/_CD/CCVars/CDCCVars.cs b/Content.Shared/_CD/CCVars/CDCCVars.cs new file mode 100644 index 00000000000..a36561cbe96 --- /dev/null +++ b/Content.Shared/_CD/CCVars/CDCCVars.cs @@ -0,0 +1,16 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared._CD.CCVars; + +/// <summary> +/// CD Specific Cvars +/// </summary> +[CVarDefs] +public sealed class CDCCVars +{ + /// <summary> + /// Respawn time, how long the player has to wait in seconds after death before they can respawn. + /// </summary> + public static readonly CVarDef<float> RespawnTime = + CVarDef.Create("game.respawn_time", 300.0f, CVar.SERVER | CVar.REPLICATED); +} From 94ae909e4fb760e6edc2b5e5810fea0944a810bd Mon Sep 17 00:00:00 2001 From: Timothy Lowe <twlowe06@gmail.com> Date: Wed, 27 Nov 2024 14:57:22 -0800 Subject: [PATCH 187/187] Fix merge issue. --- .../Inventory/ClientInventorySystem.cs | 14 - .../StationEvents/Events/IonStormRule.cs | 1 + Content.Server/_CD/Loadouts/RenameIdSystem.cs | 1 + .../_CD/Records/CharacterRecordsSystem.cs | 1 + .../_CD/Spawners/ArrivalsSpawnPointSystem.cs | 1 + .../BypassInteractionChecksComponent.cs | 6 + .../Inventory/InventorySystem.Slots.cs | 2 - Resources/Maps/Shuttles/arrivals.yml | 1363 ++--------------- 8 files changed, 113 insertions(+), 1276 deletions(-) create mode 100644 Content.Shared/Interaction/Components/BypassInteractionChecksComponent.cs diff --git a/Content.Client/Inventory/ClientInventorySystem.cs b/Content.Client/Inventory/ClientInventorySystem.cs index 802f85cbd22..a5ad2595fba 100644 --- a/Content.Client/Inventory/ClientInventorySystem.cs +++ b/Content.Client/Inventory/ClientInventorySystem.cs @@ -235,20 +235,6 @@ public void UIInventoryAltActivateItem(string slot, EntityUid uid) EntityManager.RaisePredictiveEvent(new InteractInventorySlotEvent(GetNetEntity(item.Value), altInteract: true)); } - protected override void UpdateInventoryTemplate(Entity<InventoryComponent> ent) - { - base.UpdateInventoryTemplate(ent); - - if (TryComp(ent, out InventorySlotsComponent? inventorySlots)) - { - foreach (var slot in ent.Comp.Slots) - { - if (inventorySlots.SlotData.TryGetValue(slot.Name, out var slotData)) - slotData.SlotDef = slot; - } - } - } - public sealed class SlotData { public SlotDefinition SlotDef; diff --git a/Content.Server/StationEvents/Events/IonStormRule.cs b/Content.Server/StationEvents/Events/IonStormRule.cs index da6f8e41d09..9ed8a0cfc63 100644 --- a/Content.Server/StationEvents/Events/IonStormRule.cs +++ b/Content.Server/StationEvents/Events/IonStormRule.cs @@ -15,6 +15,7 @@ namespace Content.Server.StationEvents.Events; public sealed class IonStormRule : StationEventSystem<IonStormRuleComponent> { [Dependency] private readonly IonStormSystem _ionStorm = default!; + [Dependency] private readonly IChatManager _chatManager = default!; // Used for CD's System protected override void Started(EntityUid uid, IonStormRuleComponent comp, GameRuleComponent gameRule, GameRuleStartedEvent args) { diff --git a/Content.Server/_CD/Loadouts/RenameIdSystem.cs b/Content.Server/_CD/Loadouts/RenameIdSystem.cs index 96ed777f075..296b9f9b997 100644 --- a/Content.Server/_CD/Loadouts/RenameIdSystem.cs +++ b/Content.Server/_CD/Loadouts/RenameIdSystem.cs @@ -2,6 +2,7 @@ using Content.Server.GameTicking; using Content.Shared.Access.Components; using Content.Shared.Access.Systems; +using Content.Shared.GameTicking; using Content.Shared.Inventory; using Content.Shared.PDA; diff --git a/Content.Server/_CD/Records/CharacterRecordsSystem.cs b/Content.Server/_CD/Records/CharacterRecordsSystem.cs index 16fe53f718f..8ec980b4484 100644 --- a/Content.Server/_CD/Records/CharacterRecordsSystem.cs +++ b/Content.Server/_CD/Records/CharacterRecordsSystem.cs @@ -7,6 +7,7 @@ using Content.Shared.Roles; using Content.Shared.StationRecords; using Content.Shared._CD.Records; +using Content.Shared.GameTicking; using Robust.Shared.Prototypes; namespace Content.Server._CD.Records; diff --git a/Content.Server/_CD/Spawners/ArrivalsSpawnPointSystem.cs b/Content.Server/_CD/Spawners/ArrivalsSpawnPointSystem.cs index 3fe1876aed5..db399a121b3 100644 --- a/Content.Server/_CD/Spawners/ArrivalsSpawnPointSystem.cs +++ b/Content.Server/_CD/Spawners/ArrivalsSpawnPointSystem.cs @@ -1,5 +1,6 @@ using System.Linq; using Content.Server.GameTicking; +using Content.Shared.GameTicking; using Robust.Shared.Map; using Robust.Shared.Random; diff --git a/Content.Shared/Interaction/Components/BypassInteractionChecksComponent.cs b/Content.Shared/Interaction/Components/BypassInteractionChecksComponent.cs new file mode 100644 index 00000000000..ca0ff963151 --- /dev/null +++ b/Content.Shared/Interaction/Components/BypassInteractionChecksComponent.cs @@ -0,0 +1,6 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Interaction.Components; + +[RegisterComponent, NetworkedComponent] +public sealed partial class BypassInteractionChecksComponent : Component; diff --git a/Content.Shared/Inventory/InventorySystem.Slots.cs b/Content.Shared/Inventory/InventorySystem.Slots.cs index 572fd865cb4..7a6c2f5507d 100644 --- a/Content.Shared/Inventory/InventorySystem.Slots.cs +++ b/Content.Shared/Inventory/InventorySystem.Slots.cs @@ -19,8 +19,6 @@ private void InitializeSlots() _vvm.GetTypeHandler<InventoryComponent>() .AddHandler(HandleViewVariablesSlots, ListViewVariablesSlots); - - SubscribeLocalEvent<InventoryComponent, AfterAutoHandleStateEvent>(AfterAutoState); } private void ShutdownSlots() diff --git a/Resources/Maps/Shuttles/arrivals.yml b/Resources/Maps/Shuttles/arrivals.yml index 3c853ef7395..b4609e1b0ae 100644 --- a/Resources/Maps/Shuttles/arrivals.yml +++ b/Resources/Maps/Shuttles/arrivals.yml @@ -192,17 +192,13 @@ entities: - type: RadiationGridResistance - type: SpreaderGrid - type: GridPathfinding - - type: Godmode - proto: AirCanister entities: - uid: 214 components: - type: Transform - anchored: True pos: -1.5,7.5 parent: 292 - - type: Physics - bodyType: Static - proto: AirlockCommandGlassLocked entities: - uid: 278 @@ -212,11 +208,6 @@ entities: - type: Transform pos: -0.5,6.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - RCDDeconstructable - - Destructible - proto: AirlockGlassShuttle entities: - uid: 177 @@ -226,16 +217,11 @@ entities: pos: 3.5,-2.5 parent: 292 - type: Door - secondsUntilStateChange: -623.03485 + secondsUntilStateChange: -336.60016 state: Opening - type: DeviceLinkSource lastSignals: DoorStatus: True - - type: Godmode - missingComponents: - - Construction - - RCDDeconstructable - - Destructible - uid: 178 components: - type: Transform @@ -243,16 +229,11 @@ entities: pos: 3.5,4.5 parent: 292 - type: Door - secondsUntilStateChange: -624.7682 + secondsUntilStateChange: -338.3335 state: Opening - type: DeviceLinkSource lastSignals: DoorStatus: True - - type: Godmode - missingComponents: - - Construction - - RCDDeconstructable - - Destructible - uid: 179 components: - type: Transform @@ -260,16 +241,11 @@ entities: pos: -4.5,4.5 parent: 292 - type: Door - secondsUntilStateChange: -619.23486 + secondsUntilStateChange: -332.80017 state: Opening - type: DeviceLinkSource lastSignals: DoorStatus: True - - type: Godmode - missingComponents: - - Construction - - RCDDeconstructable - - Destructible - uid: 180 components: - type: Transform @@ -277,16 +253,11 @@ entities: pos: -4.5,-2.5 parent: 292 - type: Door - secondsUntilStateChange: -621.1349 + secondsUntilStateChange: -334.70016 state: Opening - type: DeviceLinkSource lastSignals: DoorStatus: True - - type: Godmode - missingComponents: - - Construction - - RCDDeconstructable - - Destructible - proto: APCBasic entities: - uid: 116 @@ -295,13 +266,6 @@ entities: rot: 3.141592653589793 rad pos: -0.5,3.5 parent: 292 - - type: BatterySelfRecharger - autoRechargeRate: 50000 - autoRecharge: True - - type: Godmode - missingComponents: - - Construction - - Destructible - proto: ArrivalsShuttleTimer entities: - uid: 294 @@ -309,17 +273,11 @@ entities: - type: Transform pos: -4.5,3.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - uid: 295 components: - type: Transform pos: 3.5,3.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - proto: AtmosDeviceFanDirectional entities: - uid: 164 @@ -328,28 +286,24 @@ entities: rot: -1.5707963267948966 rad pos: -4.5,4.5 parent: 292 - - type: Godmode - uid: 165 components: - type: Transform rot: 1.5707963267948966 rad pos: 3.5,4.5 parent: 292 - - type: Godmode - uid: 166 components: - type: Transform rot: 1.5707963267948966 rad pos: 3.5,-2.5 parent: 292 - - type: Godmode - uid: 167 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,-2.5 parent: 292 - - type: Godmode - proto: BlockGameArcade entities: - uid: 258 @@ -358,747 +312,418 @@ entities: rot: -1.5707963267948966 rad pos: -1.5,-1.5 parent: 292 - - type: Godmode - missingComponents: - - Anchorable - - Construction - - Destructible -- proto: CableApcExtensionUncuttable +- proto: CableApcExtension entities: - uid: 123 components: - type: Transform pos: -0.5,3.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 124 components: - type: Transform pos: -0.5,4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 125 components: - type: Transform pos: -1.5,4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 126 components: - type: Transform pos: -2.5,4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 127 components: - type: Transform pos: -2.5,3.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 128 components: - type: Transform pos: -2.5,2.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 129 components: - type: Transform pos: -2.5,1.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 130 components: - type: Transform pos: -2.5,0.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 131 components: - type: Transform pos: -2.5,-0.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 132 components: - type: Transform pos: -2.5,-1.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 133 components: - type: Transform pos: -2.5,-2.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 134 components: - type: Transform pos: -1.5,-2.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 135 components: - type: Transform pos: -0.5,-2.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 136 components: - type: Transform pos: 0.5,-2.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 137 components: - type: Transform pos: 1.5,-2.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 138 components: - type: Transform pos: 1.5,-1.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 139 components: - type: Transform pos: 1.5,-0.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 140 components: - type: Transform pos: 1.5,0.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 141 components: - type: Transform pos: 1.5,1.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 142 components: - type: Transform pos: 1.5,2.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 143 components: - type: Transform pos: 1.5,3.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 144 components: - type: Transform pos: 1.5,4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 145 components: - type: Transform pos: 0.5,4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 146 components: - type: Transform pos: -0.5,5.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 147 components: - type: Transform pos: -0.5,6.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 148 components: - type: Transform pos: -0.5,7.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 149 components: - type: Transform pos: -0.5,8.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 150 components: - type: Transform pos: -1.5,-3.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 151 components: - type: Transform pos: 0.5,-3.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 152 components: - type: Transform pos: 0.5,-4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 153 components: - type: Transform pos: 1.5,-4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 154 components: - type: Transform pos: -1.5,-4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 155 components: - type: Transform pos: -2.5,-4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 156 components: - type: Transform pos: -2.5,-5.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 157 components: - type: Transform pos: 1.5,-5.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 158 components: - type: Transform pos: -1.5,8.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 159 components: - type: Transform pos: 0.5,8.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 160 components: - type: Transform pos: -3.5,4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 161 components: - type: Transform pos: 2.5,4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 162 components: - type: Transform pos: 2.5,-2.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 163 components: - type: Transform pos: -3.5,-2.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable -- proto: CableHVUncuttable +- proto: CableHV entities: - uid: 79 components: - type: Transform pos: 0.5,7.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 80 components: - type: Transform pos: 1.5,7.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 81 components: - type: Transform pos: 1.5,6.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 82 components: - type: Transform pos: -0.5,7.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 83 components: - type: Transform pos: -0.5,6.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 85 components: - type: Transform pos: -0.5,5.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 86 components: - type: Transform pos: -0.5,4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 87 components: - type: Transform pos: -1.5,4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 88 components: - type: Transform pos: -2.5,4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 89 components: - type: Transform pos: -2.5,3.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 90 components: - type: Transform pos: -2.5,2.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 91 components: - type: Transform pos: -2.5,1.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 92 components: - type: Transform pos: -2.5,0.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 93 components: - type: Transform pos: -2.5,-0.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 94 components: - type: Transform pos: -2.5,-1.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 95 components: - type: Transform pos: -2.5,-2.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 96 components: - type: Transform pos: -1.5,-2.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 97 components: - type: Transform pos: -0.5,-2.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 98 components: - type: Transform pos: 0.5,-2.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 99 components: - type: Transform pos: 1.5,-2.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 100 components: - type: Transform pos: 1.5,-1.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 101 components: - type: Transform pos: 1.5,-0.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 102 components: - type: Transform pos: 1.5,0.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 103 components: - type: Transform pos: 1.5,1.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 104 components: - type: Transform pos: 1.5,2.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 105 components: - type: Transform pos: 1.5,3.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 106 components: - type: Transform pos: 1.5,4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 107 components: - type: Transform pos: 0.5,4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 108 components: - type: Transform pos: -1.5,-3.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 109 components: - type: Transform pos: -1.5,-4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 110 components: - type: Transform pos: -1.5,-5.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 111 components: - type: Transform pos: 0.5,-5.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 112 components: - type: Transform pos: 0.5,-4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 113 components: - type: Transform pos: 0.5,-3.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable -- proto: CableMVUncuttable +- proto: CableMV entities: - uid: 117 components: - type: Transform pos: 1.5,6.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 118 components: - type: Transform pos: 1.5,5.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 119 components: - type: Transform pos: 1.5,4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 120 components: - type: Transform pos: 0.5,4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 121 components: - type: Transform pos: -0.5,4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable - uid: 122 components: - type: Transform pos: -0.5,3.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - RCDDeconstructable -- proto: CableTerminalUncuttable +- proto: CableTerminal entities: - uid: 84 components: @@ -1106,11 +731,6 @@ entities: rot: 1.5707963267948966 rad pos: -0.5,7.5 parent: 292 - - type: Godmode - missingComponents: - - RCDDeconstructable - - Destructible - - Construction - proto: ChairPilotSeat entities: - uid: 223 @@ -1119,207 +739,112 @@ entities: rot: -1.5707963267948966 rad pos: 2.5,-0.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 224 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,0.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 225 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,1.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 226 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,2.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 227 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,-0.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 228 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,0.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 229 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,1.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 230 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,2.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 231 components: - type: Transform rot: 1.5707963267948966 rad pos: 0.5,-0.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 232 components: - type: Transform rot: 1.5707963267948966 rad pos: 0.5,0.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 233 components: - type: Transform rot: 1.5707963267948966 rad pos: 0.5,1.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 234 components: - type: Transform rot: 1.5707963267948966 rad pos: 0.5,2.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 235 components: - type: Transform rot: 1.5707963267948966 rad pos: -3.5,-0.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 236 components: - type: Transform rot: 1.5707963267948966 rad pos: -3.5,0.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 237 components: - type: Transform rot: 1.5707963267948966 rad pos: -3.5,1.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 238 components: - type: Transform rot: 1.5707963267948966 rad pos: -3.5,2.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 239 components: - type: Transform pos: 1.5,5.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 240 components: - type: Transform pos: -2.5,5.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 241 components: - type: Transform rot: 3.141592653589793 rad pos: -0.5,8.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - proto: ClosetEmergencyFilledRandom entities: - uid: 252 @@ -1327,18 +852,72 @@ entities: - type: Transform pos: 0.5,5.5 parent: 292 - - uid: 253 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - uid: 260 components: - type: Transform pos: -2.5,-3.5 parent: 292 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 - proto: ClosetFireFilled entities: - - uid: 260 + - uid: 253 components: - type: Transform pos: -1.5,5.5 parent: 292 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 - proto: ClosetWallEmergencyFilledRandom entities: - uid: 288 @@ -1365,10 +944,6 @@ entities: - 0 - 0 - 0 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 289 components: - type: Transform @@ -1392,10 +967,6 @@ entities: - 0 - 0 - 0 - - type: Godmode - missingComponents: - - Destructible - - Construction - proto: ClosetWallFireFilledRandom entities: - uid: 286 @@ -1421,10 +992,6 @@ entities: - 0 - 0 - 0 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 287 components: - type: Transform @@ -1449,28 +1016,40 @@ entities: - 0 - 0 - 0 - - type: Godmode - missingComponents: - - Destructible - - Construction - proto: ClothingBackpack entities: - - uid: 266 + - uid: 275 components: - type: Transform - pos: 2.5277145,5.600461 + pos: 2.5,5.5 parent: 292 + - type: GroupExamine + group: + - hoverMessage: "" + contextText: verb-examine-group-other + icon: /Textures/Interface/examine-star.png + components: + - Armor + - ClothingSpeedModifier + entries: + - message: >- + It provides the following protection: + + - [color=orange]Explosion[/color] damage [color=white]to contents[/color] reduced by [color=lightblue]10%[/color]. + priority: 0 + component: Armor + title: null - proto: ClothingMaskBreath entities: - - uid: 267 + - uid: 272 components: - type: Transform - pos: 2.4086668,-3.4828715 + pos: 2.5,-3.5 parent: 292 - - uid: 274 + - uid: 273 components: - type: Transform - pos: -3.6032372,-3.4947772 + pos: -3.5,-3.5 parent: 292 - proto: ComputerShuttle entities: @@ -1479,29 +1058,24 @@ entities: - type: Transform pos: -0.5,9.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - proto: CrowbarRed entities: - - uid: 293 + - uid: 274 components: - type: Transform - pos: 0.45628688,-3.5066814 + pos: 0.5,-3.5 parent: 292 - proto: EmergencyOxygenTankFilled entities: - - uid: 268 + - uid: 270 components: - type: Transform - pos: -3.2460945,-3.6614437 + pos: 2.5708976,-3.5851696 parent: 292 - - uid: 269 + - uid: 271 components: - type: Transform - pos: 2.7300956,-3.6138248 + pos: -3.4291024,-3.5851696 parent: 292 - proto: ExtinguisherCabinetFilled entities: @@ -1510,9 +1084,6 @@ entities: - type: Transform pos: -0.5,-4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - proto: GasPassiveGate entities: - uid: 184 @@ -1520,11 +1091,6 @@ entities: - type: Transform pos: -0.5,7.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - proto: GasPipeBend entities: - uid: 182 @@ -1533,64 +1099,34 @@ entities: rot: 1.5707963267948966 rad pos: -1.5,8.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 183 components: - type: Transform pos: -0.5,8.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 187 components: - type: Transform rot: 1.5707963267948966 rad pos: -2.5,5.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 188 components: - type: Transform pos: 1.5,5.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 189 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-3.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 190 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,-3.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - proto: GasPipeFourway entities: - uid: 186 @@ -1598,11 +1134,6 @@ entities: - type: Transform pos: -0.5,5.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - proto: GasPipeStraight entities: - uid: 185 @@ -1610,215 +1141,110 @@ entities: - type: Transform pos: -0.5,6.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 192 components: - type: Transform rot: 1.5707963267948966 rad pos: 0.5,5.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 193 components: - type: Transform rot: 1.5707963267948966 rad pos: -1.5,5.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 194 components: - type: Transform rot: 1.5707963267948966 rad pos: -1.5,-3.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 195 components: - type: Transform rot: 1.5707963267948966 rad pos: 0.5,-3.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 196 components: - type: Transform pos: 1.5,-2.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 197 components: - type: Transform pos: 1.5,-1.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 198 components: - type: Transform pos: 1.5,-0.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 199 components: - type: Transform pos: 1.5,0.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 200 components: - type: Transform pos: 1.5,1.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 201 components: - type: Transform pos: 1.5,2.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 202 components: - type: Transform pos: 1.5,3.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 203 components: - type: Transform pos: 1.5,4.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 204 components: - type: Transform pos: -2.5,-2.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 205 components: - type: Transform pos: -2.5,-1.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 206 components: - type: Transform pos: -2.5,-0.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 207 components: - type: Transform pos: -2.5,0.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 208 components: - type: Transform pos: -2.5,1.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 209 components: - type: Transform pos: -2.5,2.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 210 components: - type: Transform pos: -2.5,3.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 211 components: - type: Transform pos: -2.5,4.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - proto: GasPipeTJunction entities: - uid: 191 @@ -1827,11 +1253,6 @@ entities: rot: 3.141592653589793 rad pos: -0.5,-3.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - proto: GasPort entities: - uid: 181 @@ -1840,11 +1261,6 @@ entities: rot: 3.141592653589793 rad pos: -1.5,7.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - proto: GasVentPump entities: - uid: 212 @@ -1852,22 +1268,12 @@ entities: - type: Transform pos: -0.5,-2.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 213 components: - type: Transform rot: 3.141592653589793 rad pos: -0.5,4.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - proto: GeneratorBasic15kW entities: - uid: 114 @@ -1875,19 +1281,11 @@ entities: - type: Transform pos: -1.5,-5.5 parent: 292 - - type: Godmode - missingComponents: - - Anchorable - - Destructible - uid: 115 components: - type: Transform pos: 0.5,-5.5 parent: 292 - - type: Godmode - missingComponents: - - Anchorable - - Destructible - proto: GeneratorWallmountAPU entities: - uid: 78 @@ -1895,11 +1293,6 @@ entities: - type: Transform pos: 1.5,7.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - proto: GravityGeneratorMini entities: - uid: 291 @@ -1907,11 +1300,6 @@ entities: - type: Transform pos: -2.5,-5.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Anchorable - - Construction - proto: Grille entities: - uid: 44 @@ -1919,231 +1307,116 @@ entities: - type: Transform pos: 3.5,-0.5 parent: 292 - - type: Godmode - missingComponents: - - RCDDeconstructable - - Construction - - Destructible - uid: 52 components: - type: Transform pos: 3.5,0.5 parent: 292 - - type: Godmode - missingComponents: - - RCDDeconstructable - - Construction - - Destructible - uid: 53 components: - type: Transform pos: 3.5,1.5 parent: 292 - - type: Godmode - missingComponents: - - RCDDeconstructable - - Construction - - Destructible - uid: 54 components: - type: Transform pos: 3.5,2.5 parent: 292 - - type: Godmode - missingComponents: - - RCDDeconstructable - - Construction - - Destructible - uid: 55 components: - type: Transform pos: -4.5,-0.5 parent: 292 - - type: Godmode - missingComponents: - - RCDDeconstructable - - Construction - - Destructible - uid: 56 components: - type: Transform pos: -4.5,0.5 parent: 292 - - type: Godmode - missingComponents: - - RCDDeconstructable - - Construction - - Destructible - uid: 57 components: - type: Transform pos: -4.5,1.5 parent: 292 - - type: Godmode - missingComponents: - - RCDDeconstructable - - Construction - - Destructible - uid: 58 components: - type: Transform pos: -4.5,2.5 parent: 292 - - type: Godmode - missingComponents: - - RCDDeconstructable - - Construction - - Destructible - uid: 59 components: - type: Transform pos: -1.5,-4.5 parent: 292 - - type: Godmode - missingComponents: - - RCDDeconstructable - - Construction - - Destructible - uid: 60 components: - type: Transform pos: -2.5,-4.5 parent: 292 - - type: Godmode - missingComponents: - - RCDDeconstructable - - Construction - - Destructible - uid: 61 components: - type: Transform pos: 1.5,-4.5 parent: 292 - - type: Godmode - missingComponents: - - RCDDeconstructable - - Construction - - Destructible - uid: 62 components: - type: Transform pos: 0.5,-4.5 parent: 292 - - type: Godmode - missingComponents: - - RCDDeconstructable - - Construction - - Destructible - uid: 63 components: - type: Transform pos: 0.5,6.5 parent: 292 - - type: Godmode - missingComponents: - - RCDDeconstructable - - Construction - - Destructible - uid: 64 components: - type: Transform pos: -1.5,6.5 parent: 292 - - type: Godmode - missingComponents: - - RCDDeconstructable - - Construction - - Destructible - uid: 65 components: - type: Transform pos: -2.5,8.5 parent: 292 - - type: Godmode - missingComponents: - - RCDDeconstructable - - Construction - - Destructible - uid: 66 components: - type: Transform pos: -2.5,9.5 parent: 292 - - type: Godmode - missingComponents: - - RCDDeconstructable - - Construction - - Destructible - uid: 67 components: - type: Transform pos: -1.5,9.5 parent: 292 - - type: Godmode - missingComponents: - - RCDDeconstructable - - Construction - - Destructible - uid: 68 components: - type: Transform pos: -1.5,10.5 parent: 292 - - type: Godmode - missingComponents: - - RCDDeconstructable - - Construction - - Destructible - uid: 69 components: - type: Transform pos: -0.5,10.5 parent: 292 - - type: Godmode - missingComponents: - - RCDDeconstructable - - Construction - - Destructible - uid: 70 components: - type: Transform pos: 0.5,10.5 parent: 292 - - type: Godmode - missingComponents: - - RCDDeconstructable - - Construction - - Destructible - uid: 71 components: - type: Transform pos: 0.5,9.5 parent: 292 - - type: Godmode - missingComponents: - - RCDDeconstructable - - Construction - - Destructible - uid: 72 components: - type: Transform pos: 1.5,9.5 parent: 292 - - type: Godmode - missingComponents: - - RCDDeconstructable - - Construction - - Destructible - uid: 73 components: - type: Transform pos: 1.5,8.5 parent: 292 - - type: Godmode - missingComponents: - - RCDDeconstructable - - Construction - - Destructible - proto: Gyroscope entities: - uid: 168 @@ -2151,11 +1424,6 @@ entities: - type: Transform pos: 1.5,-5.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Anchorable - - Construction - proto: IntercomCommon entities: - uid: 264 @@ -2163,12 +1431,6 @@ entities: - type: Transform pos: -0.5,-1.5 parent: 292 - - type: EncryptionKeyHolder - keysUnlocked: False - - type: Godmode - missingComponents: - - Construction - - Destructible - proto: MaintenanceFluffSpawner entities: - uid: 284 @@ -2176,31 +1438,29 @@ entities: - type: Transform pos: 0.5,3.5 parent: 292 - - type: Godmode - uid: 285 components: - type: Transform pos: -1.5,3.5 parent: 292 - - type: Godmode - proto: MedkitFilled entities: - - uid: 276 + - uid: 266 components: - type: Transform - pos: -0.4960943,-3.4828715 + pos: -0.5,-3.5 parent: 292 - proto: NitrogenTankFilled entities: - - uid: 271 + - uid: 268 components: - type: Transform - pos: -3.4365704,-3.590015 + pos: -3.5,-3.5 parent: 292 - - uid: 273 + - uid: 269 components: - type: Transform - pos: 2.563429,-3.566205 + pos: 2.5,-3.5 parent: 292 - proto: PosterLegitNanotrasenLogo entities: @@ -2209,9 +1469,6 @@ entities: - type: Transform pos: -2.5,6.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - proto: PottedPlantRandom entities: - uid: 254 @@ -2219,25 +1476,21 @@ entities: - type: Transform pos: 2.5,-1.5 parent: 292 - - type: Godmode - uid: 255 components: - type: Transform pos: 2.5,3.5 parent: 292 - - type: Godmode - uid: 256 components: - type: Transform pos: -3.5,3.5 parent: 292 - - type: Godmode - uid: 257 components: - type: Transform pos: -3.5,-1.5 parent: 292 - - type: Godmode - proto: PowerCellRecharger entities: - uid: 265 @@ -2245,12 +1498,7 @@ entities: - type: Transform pos: 0.5,-3.5 parent: 292 - - type: Godmode - missingComponents: - - Anchorable - - Destructible - - Construction -- proto: AlwaysPoweredWallLight +- proto: Poweredlight entities: - uid: 279 components: @@ -2260,11 +1508,6 @@ entities: parent: 292 - type: ApcPowerReceiver powerLoad: 0 - - type: Godmode - missingComponents: - - Construction - - RCDDeconstructable - - Destructible - uid: 280 components: - type: Transform @@ -2273,11 +1516,6 @@ entities: parent: 292 - type: ApcPowerReceiver powerLoad: 0 - - type: Godmode - missingComponents: - - Construction - - RCDDeconstructable - - Destructible - uid: 281 components: - type: Transform @@ -2286,11 +1524,6 @@ entities: parent: 292 - type: ApcPowerReceiver powerLoad: 0 - - type: Godmode - missingComponents: - - Construction - - RCDDeconstructable - - Destructible - uid: 282 components: - type: Transform @@ -2299,11 +1532,6 @@ entities: parent: 292 - type: ApcPowerReceiver powerLoad: 0 - - type: Godmode - missingComponents: - - Construction - - RCDDeconstructable - - Destructible - uid: 283 components: - type: Transform @@ -2312,11 +1540,6 @@ entities: parent: 292 - type: ApcPowerReceiver powerLoad: 0 - - type: Godmode - missingComponents: - - Construction - - RCDDeconstructable - - Destructible - proto: Rack entities: - uid: 262 @@ -2324,21 +1547,11 @@ entities: - type: Transform pos: 2.5,-3.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - uid: 263 components: - type: Transform pos: -3.5,-3.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - Anchorable - - Destructible - proto: ShuttleWindow entities: - uid: 28 @@ -2346,231 +1559,116 @@ entities: - type: Transform pos: 3.5,-0.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - - RCDDeconstructable - uid: 29 components: - type: Transform pos: 3.5,0.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - - RCDDeconstructable - uid: 30 components: - type: Transform pos: 3.5,1.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - - RCDDeconstructable - uid: 31 components: - type: Transform pos: 3.5,2.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - - RCDDeconstructable - uid: 32 components: - type: Transform pos: -4.5,-0.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - - RCDDeconstructable - uid: 33 components: - type: Transform pos: -4.5,0.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - - RCDDeconstructable - uid: 34 components: - type: Transform pos: -4.5,1.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - - RCDDeconstructable - uid: 35 components: - type: Transform pos: -4.5,2.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - - RCDDeconstructable - uid: 36 components: - type: Transform pos: -1.5,-4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - - RCDDeconstructable - uid: 37 components: - type: Transform pos: -2.5,-4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - - RCDDeconstructable - uid: 38 components: - type: Transform pos: 0.5,-4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - - RCDDeconstructable - uid: 39 components: - type: Transform pos: 1.5,-4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - - RCDDeconstructable - uid: 40 components: - type: Transform pos: 0.5,6.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - - RCDDeconstructable - uid: 41 components: - type: Transform pos: -1.5,6.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - - RCDDeconstructable - uid: 42 components: - type: Transform pos: -2.5,8.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - - RCDDeconstructable - uid: 43 components: - type: Transform pos: -1.5,9.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - - RCDDeconstructable - uid: 45 components: - type: Transform pos: -2.5,9.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - - RCDDeconstructable - uid: 46 components: - type: Transform pos: -1.5,10.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - - RCDDeconstructable - uid: 47 components: - type: Transform pos: -0.5,10.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - - RCDDeconstructable - uid: 48 components: - type: Transform pos: 0.5,10.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - - RCDDeconstructable - uid: 49 components: - type: Transform pos: 0.5,9.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - - RCDDeconstructable - uid: 50 components: - type: Transform pos: 1.5,9.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - - RCDDeconstructable - uid: 51 components: - type: Transform pos: 1.5,8.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - - RCDDeconstructable - proto: SMESBasic entities: - uid: 76 @@ -2578,11 +1676,6 @@ entities: - type: Transform pos: 0.5,7.5 parent: 292 - - type: Godmode - missingComponents: - - Anchorable - - Destructible - - Construction - proto: SpaceVillainArcadeFilled entities: - uid: 259 @@ -2591,11 +1684,6 @@ entities: rot: 1.5707963267948966 rad pos: 0.5,-1.5 parent: 292 - - type: Godmode - missingComponents: - - Anchorable - - Construction - - Destructible - proto: SubstationWallBasic entities: - uid: 77 @@ -2603,10 +1691,6 @@ entities: - type: Transform pos: 1.5,6.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - proto: TableReinforced entities: - uid: 243 @@ -2614,82 +1698,46 @@ entities: - type: Transform pos: 0.5,-3.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 244 components: - type: Transform pos: -1.5,8.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 245 components: - type: Transform pos: 0.5,8.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 246 components: - type: Transform pos: -0.5,-3.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 247 components: - type: Transform pos: -1.5,-3.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 248 components: - type: Transform pos: 0.5,3.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 249 components: - type: Transform pos: -1.5,3.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 250 components: - type: Transform pos: 2.5,5.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 251 components: - type: Transform pos: -3.5,5.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - proto: Thruster entities: - uid: 169 @@ -2697,103 +1745,58 @@ entities: - type: Transform pos: 2.5,7.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Anchorable - - Construction - uid: 170 components: - type: Transform pos: -3.5,7.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Anchorable - - Construction - uid: 171 components: - type: Transform rot: 3.141592653589793 rad pos: -1.5,-6.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Anchorable - - Construction - uid: 172 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,-6.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Anchorable - - Construction - uid: 173 components: - type: Transform rot: 3.141592653589793 rad pos: 1.5,-6.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Anchorable - - Construction - uid: 174 components: - type: Transform rot: 3.141592653589793 rad pos: 0.5,-6.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Anchorable - - Construction - uid: 175 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,-6.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Anchorable - - Construction - uid: 176 components: - type: Transform rot: 1.5707963267948966 rad pos: -3.5,-6.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Anchorable - - Construction - proto: ToolboxEmergencyFilled entities: - - uid: 270 - components: - - type: Transform - pos: -1.4722855,-3.4471583 - parent: 292 - - uid: 272 + - uid: 267 components: - type: Transform - pos: -1.4722855,-3.4471583 + pos: -1.5,-3.5 parent: 292 - - uid: 275 + - uid: 276 components: - type: Transform - pos: -3.5079994,5.600461 + pos: -3.5,5.5 parent: 292 - proto: VendingMachineClothing entities: @@ -2802,10 +1805,6 @@ entities: - type: Transform pos: 1.5,-3.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Anchorable - proto: WallShuttle entities: - uid: 1 @@ -2813,262 +1812,146 @@ entities: - type: Transform pos: 3.5,-3.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 2 components: - type: Transform pos: 3.5,-1.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 3 components: - type: Transform pos: -4.5,-3.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 4 components: - type: Transform pos: -4.5,-1.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 5 components: - type: Transform pos: -4.5,3.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 6 components: - type: Transform pos: -4.5,5.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 7 components: - type: Transform pos: 3.5,3.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 8 components: - type: Transform pos: 3.5,5.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 9 components: - type: Transform pos: 3.5,6.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 10 components: - type: Transform pos: 2.5,6.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 11 components: - type: Transform pos: -4.5,6.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 12 components: - type: Transform pos: -3.5,6.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 13 components: - type: Transform pos: -2.5,6.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 14 components: - type: Transform pos: -2.5,7.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 15 components: - type: Transform pos: 1.5,6.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 16 components: - type: Transform pos: 1.5,7.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 17 components: - type: Transform pos: 3.5,-4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 18 components: - type: Transform pos: 2.5,-4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 19 components: - type: Transform pos: -4.5,-4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 20 components: - type: Transform pos: -3.5,-4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 21 components: - type: Transform pos: -0.5,-4.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 22 components: - type: Transform pos: 2.5,-5.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 23 components: - type: Transform pos: 3.5,-5.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 24 components: - type: Transform pos: -3.5,-5.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 25 components: - type: Transform pos: -4.5,-5.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 26 components: - type: Transform pos: -0.5,-6.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 27 components: - type: Transform pos: -0.5,-5.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 74 components: - type: Transform pos: -0.5,-1.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - uid: 75 components: - type: Transform pos: -0.5,3.5 parent: 292 - - type: Godmode - missingComponents: - - Destructible - - Construction - proto: WindowReinforcedDirectional entities: - uid: 215 @@ -3077,86 +1960,46 @@ entities: rot: -1.5707963267948966 rad pos: -0.5,-0.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - RCDDeconstructable - - Destructible - uid: 216 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,0.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - RCDDeconstructable - - Destructible - uid: 217 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,1.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - RCDDeconstructable - - Destructible - uid: 218 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,2.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - RCDDeconstructable - - Destructible - uid: 219 components: - type: Transform rot: 1.5707963267948966 rad pos: -0.5,2.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - RCDDeconstructable - - Destructible - uid: 220 components: - type: Transform rot: 1.5707963267948966 rad pos: -0.5,1.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - RCDDeconstructable - - Destructible - uid: 221 components: - type: Transform rot: 1.5707963267948966 rad pos: -0.5,0.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - RCDDeconstructable - - Destructible - uid: 222 components: - type: Transform rot: 1.5707963267948966 rad pos: -0.5,-0.5 parent: 292 - - type: Godmode - missingComponents: - - Construction - - RCDDeconstructable - - Destructible ...