From 1e4201aba066df063a491211e282ce2b00fe8c20 Mon Sep 17 00:00:00 2001 From: Theos Date: Mon, 22 Jan 2024 15:05:22 -0500 Subject: [PATCH 001/150] Fixes 2647 (#2648) ## About The Pull Request Arcane machine tried to smelt up to 10 sheets of material but the alloy smelting proc didn't get a smelting number passed so it just spawned 1 sheet and called it a day. ## Why It's Good For The Game fixes #2647 ## Changelog :cl: fix: ore smelter no longer obliterates materials when smelting alloys /:cl: Signed-off-by: Theos --- code/modules/mining/machine_processing.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index 10f43aad458..bbc84ec7ee6 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -253,7 +253,7 @@ var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.use_materials(alloy.materials, amount) - generate_mineral(alloy.build_path) + generate_mineral(alloy.build_path, amount) /obj/machinery/mineral/processing_unit/proc/can_smelt(datum/design/D) if(D.make_reagents.len) @@ -271,8 +271,8 @@ return build_amount -/obj/machinery/mineral/processing_unit/proc/generate_mineral(P) - var/O = new P(src) +/obj/machinery/mineral/processing_unit/proc/generate_mineral(P, amount) + var/O = new P(src, amount) unload_mineral(O) /obj/machinery/mineral/processing_unit/on_deconstruction() From 929b143d3f313dcfe9947a939f0f878da83976d0 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Mon, 22 Jan 2024 14:19:51 -0600 Subject: [PATCH 002/150] Automatic changelog generation for PR #2648 [ci skip] --- html/changelogs/AutoChangeLog-pr-2648.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2648.yml diff --git a/html/changelogs/AutoChangeLog-pr-2648.yml b/html/changelogs/AutoChangeLog-pr-2648.yml new file mode 100644 index 00000000000..3349aabe7c9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2648.yml @@ -0,0 +1,4 @@ +author: SomeguyManperson +changes: + - {bugfix: ore smelter no longer obliterates materials when smelting alloys} +delete-after: true From 808526d1a274dc52e4c5e407cccb5d536eccd181 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 23 Jan 2024 00:52:20 +0000 Subject: [PATCH 003/150] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-2648.yml | 4 ---- html/changelogs/archive/2024-01.yml | 3 +++ 2 files changed, 3 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-2648.yml diff --git a/html/changelogs/AutoChangeLog-pr-2648.yml b/html/changelogs/AutoChangeLog-pr-2648.yml deleted file mode 100644 index 3349aabe7c9..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2648.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: SomeguyManperson -changes: - - {bugfix: ore smelter no longer obliterates materials when smelting alloys} -delete-after: true diff --git a/html/changelogs/archive/2024-01.yml b/html/changelogs/archive/2024-01.yml index 59fdbb9e32b..71fd490bb99 100644 --- a/html/changelogs/archive/2024-01.yml +++ b/html/changelogs/archive/2024-01.yml @@ -59,3 +59,6 @@ SomeguyManperson: - tweak: tend brute/burns can no longer attempt to (very ineffectively) heal the other damage type +2024-01-23: + SomeguyManperson: + - bugfix: ore smelter no longer obliterates materials when smelting alloys From 4b6c1abe16e10fe5d3be97021182bab2217a1641 Mon Sep 17 00:00:00 2001 From: Apogee-dev <60533805+Apogee-dev@users.noreply.github.com> Date: Wed, 24 Jan 2024 19:44:11 -0800 Subject: [PATCH 004/150] Updates syndicate ship prefixes (#2665) ## About The Pull Request Changes the prefixes on Syndicate ships to reflect subfaction more strongly. - 2nd Battlegroup uses NGRV (New Gorlex Republic Vessel) - Hardliners use ISV (They don't have a unique registration because they aren't an organized group and aren't officially part of Cybersun. this puts them in a similar position to non-Frontiersman pirates, using ISV while not being normal independents.) - Cybersun uses CSSV (CyberSun Space Vessel) - SUNS uses SUNS (SUNS, lol) - ACLF still uses SSV - The Lugol, as GEC's only ship and an adminspawn ship, uses XSV (Experimental Space Vessel) ## Why It's Good For The Game the syndicate kind of Isn't anymore and pushing faction distinctions is good, especially between the gorlex splinters ## Changelog :cl: tweak: Changed prefixes on Syndicate ships to reflect subfaction /:cl: --- _maps/configs/syndicate_aegis.json | 2 +- _maps/configs/syndicate_cybersun_kansatsu.json | 2 +- _maps/configs/syndicate_gorlex_hyena.json | 2 +- _maps/configs/syndicate_gorlex_komodo.json | 2 +- _maps/configs/syndicate_litieguai.json | 2 +- _maps/configs/syndicate_lugol.json | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/_maps/configs/syndicate_aegis.json b/_maps/configs/syndicate_aegis.json index 9dc307f7f09..6863c4e1127 100644 --- a/_maps/configs/syndicate_aegis.json +++ b/_maps/configs/syndicate_aegis.json @@ -1,5 +1,5 @@ { - "prefix": "SSV", + "prefix": "SUNS", "map_name": "Aegis-class Long Term Care Ship", "map_short_name": "Aegis-class", "map_path": "_maps/shuttles/syndicate/syndicate_aegis.dmm", diff --git a/_maps/configs/syndicate_cybersun_kansatsu.json b/_maps/configs/syndicate_cybersun_kansatsu.json index fbde6dc608d..a9c9fcb9434 100644 --- a/_maps/configs/syndicate_cybersun_kansatsu.json +++ b/_maps/configs/syndicate_cybersun_kansatsu.json @@ -1,6 +1,6 @@ { "$schema": "https://raw.githubusercontent.com/shiptest-ss13/Shiptest/master/_maps/ship_config_schema.json", - "prefix": "SSV", + "prefix": "CSSV", "namelists": [ "CYBERSUN", "SPACE", diff --git a/_maps/configs/syndicate_gorlex_hyena.json b/_maps/configs/syndicate_gorlex_hyena.json index 4e908613927..51b046d114b 100644 --- a/_maps/configs/syndicate_gorlex_hyena.json +++ b/_maps/configs/syndicate_gorlex_hyena.json @@ -1,6 +1,6 @@ { "$schema": "https://raw.githubusercontent.com/shiptest-ss13/Shiptest/master/_maps/ship_config_schema.json", - "prefix": "SSV", + "prefix": "NGRV", "namelists": [ "GORLEX", "NATURAL_AGGRESSIVE", diff --git a/_maps/configs/syndicate_gorlex_komodo.json b/_maps/configs/syndicate_gorlex_komodo.json index 5692eaf44a1..595b61b079d 100644 --- a/_maps/configs/syndicate_gorlex_komodo.json +++ b/_maps/configs/syndicate_gorlex_komodo.json @@ -1,5 +1,5 @@ { - "prefix": "SSV", + "prefix": "ISV", "namelists": [ "GORLEX", "NATURAL_AGGRESSIVE", diff --git a/_maps/configs/syndicate_litieguai.json b/_maps/configs/syndicate_litieguai.json index 887828e2817..685a5318742 100644 --- a/_maps/configs/syndicate_litieguai.json +++ b/_maps/configs/syndicate_litieguai.json @@ -1,7 +1,7 @@ { "$schema": "https://raw.githubusercontent.com/shiptest-ss13/Shiptest/master/_maps/ship_config_schema.json", "map_name": "Li Tieguai-class Rescue Ship", - "prefix": "SSV", + "prefix": "CSSV", "map_short_name": "Li Tieguai-class", "description": "A small, nimble, and exceptionally well-built medical response vessel, the Li Tieguai is a recent addition to Cybersun’s fleet, forming a critical component of their Frontier stabilization program. Li Tieguais come equipped with high-end medical equipment, including a selection of Cybersun augments and prosthetics, as well as weaponry and armor sufficient to protect its personnel in the often-dangerous Frontier sectors, so that they can offer premium healthcare (at premium prices) in even the most dangerous of scenarios.", "tags": [ diff --git a/_maps/configs/syndicate_lugol.json b/_maps/configs/syndicate_lugol.json index 26599d93a8e..673d9be16ff 100644 --- a/_maps/configs/syndicate_lugol.json +++ b/_maps/configs/syndicate_lugol.json @@ -1,6 +1,6 @@ { "map_name": "Lugol-class GEC Engineering Project", - "prefix": "SEV", + "prefix": "XSV", "map_short_name": "Lugol-class", "description": "The Lugol is effectively an enormous Galactic Engineers Concordat research barge, used as a test bed for refinements to power systems, new technologies, and so on. As it offers freedom from the usual constraints of working aboard vessels belonging to other Syndicate factions, Lugols are especially popular among the GEC’s more radical members. Accordingly, they have a reputation for either accomplishing the impossible or generating the equivalent of a new star when they inevitably melt down. Lugols are generally only found on the Frontier, where the collateral damage from potential accidents can be kept to a minimum and secrecy, when needed, can be better maintained.", "tags": [ @@ -14,7 +14,7 @@ ], "map_path": "_maps/shuttles/syndicate/syndicate_gec_lugol.dmm", "map_id": "gec_lugol", - "limit": 2, + "limit": 1, "job_slots": { "Project Overseer": { "outfit": "/datum/outfit/job/syndicate/ce/gec", From 73362102eb1900409702861556bfa5289e28d6f8 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Wed, 24 Jan 2024 21:58:19 -0600 Subject: [PATCH 005/150] Automatic changelog generation for PR #2665 [ci skip] --- html/changelogs/AutoChangeLog-pr-2665.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2665.yml diff --git a/html/changelogs/AutoChangeLog-pr-2665.yml b/html/changelogs/AutoChangeLog-pr-2665.yml new file mode 100644 index 00000000000..a025323feb5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2665.yml @@ -0,0 +1,4 @@ +author: Apogee-dev +changes: + - {tweak: Changed prefixes on Syndicate ships to reflect subfaction} +delete-after: true From 236cbef3127759829bb5debad678e8ce15f994c2 Mon Sep 17 00:00:00 2001 From: Theos Date: Wed, 24 Jan 2024 23:10:07 -0500 Subject: [PATCH 006/150] fixes crusher loot for icemoon ruin dragon not dropping a key (#2650) ## About The Pull Request adds the key to the crusher loot list since the default loot list is overridden by that ## Why It's Good For The Game Dragon lair could be locked off without admin intervention if the dragon is killed with a crusher ## Changelog :cl: fix: you can no longer lock yourself out of the icemoon dragon lair by killing the dragon with a crusher /:cl: --- _maps/RandomRuins/IceRuins/icemoon_underground_drakelair.dmm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_drakelair.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_drakelair.dmm index 4c8ccc99dfc..f089a09b8fb 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_drakelair.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_drakelair.dmm @@ -127,7 +127,8 @@ "iT" = ( /obj/structure/stone_tile/slab, /mob/living/simple_animal/hostile/megafauna/dragon/icemoon{ - loot = list(/obj/structure/closet/crate/necropolis/dragon,/obj/item/keycard/gatedrop/drakelair) + loot = list(/obj/structure/closet/crate/necropolis/dragon,/obj/item/keycard/gatedrop/drakelair); + crusher_loot = list(/obj/structure/closet/crate/necropolis/dragon/crusher,/obj/item/keycard/gatedrop/drakelair) }, /turf/open/indestructible/boss, /area/ruin) From 709a12c14b45d875f89dfef89bb363b9222c9485 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Wed, 24 Jan 2024 22:23:47 -0600 Subject: [PATCH 007/150] Automatic changelog generation for PR #2650 [ci skip] --- html/changelogs/AutoChangeLog-pr-2650.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2650.yml diff --git a/html/changelogs/AutoChangeLog-pr-2650.yml b/html/changelogs/AutoChangeLog-pr-2650.yml new file mode 100644 index 00000000000..be0a14f8ee0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2650.yml @@ -0,0 +1,5 @@ +author: SomeguyManperson +changes: + - {bugfix: you can no longer lock yourself out of the icemoon dragon lair by killing + the dragon with a crusher} +delete-after: true From 286941e4258ecf39b4bc2c6562f5f6cc9a147299 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Fri, 26 Jan 2024 00:47:37 +0000 Subject: [PATCH 008/150] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-2650.yml | 5 ----- html/changelogs/AutoChangeLog-pr-2665.yml | 4 ---- html/changelogs/archive/2024-01.yml | 6 ++++++ 3 files changed, 6 insertions(+), 9 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-2650.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2665.yml diff --git a/html/changelogs/AutoChangeLog-pr-2650.yml b/html/changelogs/AutoChangeLog-pr-2650.yml deleted file mode 100644 index be0a14f8ee0..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2650.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: SomeguyManperson -changes: - - {bugfix: you can no longer lock yourself out of the icemoon dragon lair by killing - the dragon with a crusher} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-2665.yml b/html/changelogs/AutoChangeLog-pr-2665.yml deleted file mode 100644 index a025323feb5..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2665.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Apogee-dev -changes: - - {tweak: Changed prefixes on Syndicate ships to reflect subfaction} -delete-after: true diff --git a/html/changelogs/archive/2024-01.yml b/html/changelogs/archive/2024-01.yml index 71fd490bb99..9ee67f626bd 100644 --- a/html/changelogs/archive/2024-01.yml +++ b/html/changelogs/archive/2024-01.yml @@ -62,3 +62,9 @@ 2024-01-23: SomeguyManperson: - bugfix: ore smelter no longer obliterates materials when smelting alloys +2024-01-26: + Apogee-dev: + - tweak: Changed prefixes on Syndicate ships to reflect subfaction + SomeguyManperson: + - bugfix: you can no longer lock yourself out of the icemoon dragon lair by killing + the dragon with a crusher From 7096415fac7fe84112a68a77918fda48492d0396 Mon Sep 17 00:00:00 2001 From: Skies-Of-Blue <86762641+Skies-Of-Blue@users.noreply.github.com> Date: Fri, 26 Jan 2024 21:59:28 -0800 Subject: [PATCH 009/150] Murders The Devil from The Bible in the form of a bee (#2672) ## About The Pull Request Removes chem bees from the jungle and beach spawn pools, replacing them with normal bees. ## Why It's Good For The Game Walking off of a ship onto one of the relatively "peaceful" planets, only to be loaded up with admin chemicals was a pretty awful experience. We inherited these little guys from Voidcrew, honestly that should be enough reason to remove them. ## Changelog :cl: balance: planetary chem bees have been replaced with the garden variety /:cl: --- code/datums/mapgen/planetary/BeachGenerator.dm | 2 +- code/datums/mapgen/planetary/JungleGenerator.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/datums/mapgen/planetary/BeachGenerator.dm b/code/datums/mapgen/planetary/BeachGenerator.dm index ca1d70b929f..7999d76f3a1 100644 --- a/code/datums/mapgen/planetary/BeachGenerator.dm +++ b/code/datums/mapgen/planetary/BeachGenerator.dm @@ -119,7 +119,7 @@ /mob/living/simple_animal/butterfly = 4, /mob/living/simple_animal/hostile/retaliate/poison/snake = 5, - /mob/living/simple_animal/hostile/poison/bees/toxin = 3, + /mob/living/simple_animal/hostile/poison/bees = 3, ) mob_spawn_chance = 2 feature_spawn_chance = 0.1 diff --git a/code/datums/mapgen/planetary/JungleGenerator.dm b/code/datums/mapgen/planetary/JungleGenerator.dm index dd5635d4841..45ae4a7120c 100644 --- a/code/datums/mapgen/planetary/JungleGenerator.dm +++ b/code/datums/mapgen/planetary/JungleGenerator.dm @@ -228,7 +228,7 @@ ) mob_spawn_chance = 1 mob_spawn_list = list( - /mob/living/simple_animal/hostile/poison/bees/toxin = 1, + /mob/living/simple_animal/hostile/poison/bees = 1, /mob/living/simple_animal/hostile/mushroom = 1, /mob/living/simple_animal/pet/dog/corgi/capybara = 1 ) From 7eb3bdfa7643c681a466ed0c0f042f062a5e09c3 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sat, 27 Jan 2024 00:13:07 -0600 Subject: [PATCH 010/150] Automatic changelog generation for PR #2672 [ci skip] --- html/changelogs/AutoChangeLog-pr-2672.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2672.yml diff --git a/html/changelogs/AutoChangeLog-pr-2672.yml b/html/changelogs/AutoChangeLog-pr-2672.yml new file mode 100644 index 00000000000..88151cbed8c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2672.yml @@ -0,0 +1,4 @@ +author: Skies-Of-Blue +changes: + - {balance: planetary chem bees have been replaced with the garden variety} +delete-after: true From 36aefeb9fcc036f171de1cf5b7aeb72984378f02 Mon Sep 17 00:00:00 2001 From: Fest1v3 <154591738+Fest1v3@users.noreply.github.com> Date: Sat, 27 Jan 2024 02:40:41 -0700 Subject: [PATCH 011/150] Vox Sprite Update (#2668) ## About The Pull Request Updates a few Vox sprites, mostly backpacks. Adds a proper icon for the tail hold action. ## Why It's Good For The Game We love vox in this house ## Changelog :cl: imageadd: Added vox sprites & a tailhold icon. /:cl: --- .../living/carbon/human/species_types/vox.dm | 1 + icons/mob/actions.dmi | Bin 11110 -> 11861 bytes icons/mob/species/vox/onmob_back_vox.dmi | Bin 45978 -> 48271 bytes icons/mob/species/vox/onmob_belt_vox.dmi | Bin 8617 -> 11722 bytes 4 files changed, 1 insertion(+) diff --git a/code/modules/mob/living/carbon/human/species_types/vox.dm b/code/modules/mob/living/carbon/human/species_types/vox.dm index e1a0107bc0a..1f3a00e8641 100644 --- a/code/modules/mob/living/carbon/human/species_types/vox.dm +++ b/code/modules/mob/living/carbon/human/species_types/vox.dm @@ -118,6 +118,7 @@ /datum/action/innate/tail_hold name = "Tail Hold" desc = "Store an item in your tail's grip." + button_icon_state = "tail_hold" var/obj/item/held_item var/mutable_appearance/held_item_overlay diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index ea2c5c556db0d3e5dccda0403f27787cfda11486..bc600528d82591e2fda135a58196bcd1c7af4a12 100644 GIT binary patch literal 11861 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 literal 11110 zcmWj}RX`g$uz0ai+-(f^;V|5W40k9p+}&M=yA6iJaCdhYFeor|xD6@p&g=VVu1PP~ z+$E<;l!}rpCK?GE006+0`z)mfgZZ#e5D*#G#+rU5g@H#O4IMWrb5~OrYbQ5rM+X4F z>qpvbzs(>A2J)usGhShL#Ei!zXGYRT7b~OwOr0ocaz^*#i0+qn;SK!}f3guNL*8Wd z@A>^(2(6~7J4`d>h-~x=6GV)daWVMyywqfa=IHX0hQg!@;c&4Z> z9nbf%bgqbr#peo%N5foG%lu|1Wb0jbE{L99#3%)kO*btOx9xkxZ7G`rt*9T^!}Am$PlCXb^hB&}Ussc|dqr}A=%*Lt}tW4i}P zsY-#ugpor{5|4d8`fWUC@`8+qzDVAUuk4woQZ3M@5!Uo-zR{>j+)O4|Bgn3DyPZX5 zN1VR=8*K{y7#lyz^Pv?kbxqkrq=dAk!dw9q7Ce>nkzh3)v z``n*zWv8TA5-8`12%{gU`p2;v!YG8Y3kWRNgf1`rBh1)LfiMrEv@KvQB@Ui&6NPzo z8^$g|r71h}ML`8KR&F~Z%KtWlUy4`=6eiGnePy~IA7NF;?hypAIlnX zY!UG92qx|p>BiFu=o(?OU>WJ}>!@FGn&FTa@rDdw1 znuW8hX(Tx8N(L9Uvrk25J>Lcf3Z+0UoZkZv9TdVs@6B~mZ-qun*#y?0l#1$f(%>a}@ zKkd4jvR^dv%n5kB?sYjo$37wwxhenn@gv}1zLJobm>3ZSY5Dd<)D4(FqokAZ#E4Hy zN{W=2o14pJ_A60oD*o_p^HR^4!q2>CtzG{sxe7I$cp~!eMpvba)!BXT>ocL=}6#;BR(kI=Q?mx<<4 zHem8RX`*0Qd`s0kU+rKR?br<2Uyx=brDpAT2Yg=$WD?(uKAm9+e4ur4g%JDUpX`pM zP_pXXGt8*2fe;HifVaXCSR&jI0;z~9?OMa@qxl$m+dgPak`aBX6oDbNYww5I@O%esmVZGjT)IZ_V zWu)@gl9Ccy+7BO!*^KHxae6P<1-uEb?cemFP-fA~$avIsZ?xEx)@y^2#2)KSF-Uo1 z?N?ghIP8`{iD+R=)-tDm-=3r|XoVu!2@~HN9x| z$9(fUdC{zRCBnJBnPho|iOBfVf5}%o#StSx=JP0dYVqgd6K-OvC2Cvy`;c5=(XSjt zey4u%$<%n#YN77bQ7}6ZBwqqgsR?xNprSCkX3vNRU#_YnB0*Q<3kcss$>O;py*+|X zR$6Pdl1K;%Em0PWc5<-Ja`^g%^5!}5_D^(KMV$K4@~6Mnr~Y*CGxFS)S|I#_na4sb z5hrtH{Vy;+u0e;TM9k!d=TYig0+~mL|HEndZ_2LtHaKUB9Bp=~)2-0Tqjk|J;g4ZY zwL$De2Q%x4R!y@?(aAUSa;mn}TX)6OT z_zmk#6P5aNoj`@8c3|fnFTkIt6q3!RBMhnerI7ItUlStBQXcT2A;0tw%h1vnLb@cr zOf)vlD1Kd{=Ow!NmJS<6aikJIK)5$+N6R}7aJTMDjD&e4`SQLyt}Okt{Hxql&?CHv zZv1d97c02qdg}4^?HRmfXsJ-5M_w1sz`-%y!X~+7aBjcWaU)pg*;lRKYPhfS2A!Vo zU6@cMvC0zqt9O=lWl&OLo~cMzbL!h{uMftIpPl{K3ULHoAs^D4Y}mhVjix7WbRQfV z9(GSBCDCtn5Y}HiZ=0&ue14W0%>Q3}KQ_RP)wX4GtNdWQdT508B<3Hc(gycQ27p`Y zDkVec!4hHFT+_^>Fj$fY=HbWP55s>6yZ4vQ_4q$cEuiGFn7`#!X#w=-t8DDUnvC(u zZ6CVPSnWR)Yl;o54!`d^n6eQOVy<>HdXP%txlC7{k4e(A23JOKRth^B!yGfZIt;C_ z!V#Vl@&#dYr`@{jk!~sfx|w%sE~a~sT93Z_J%Y)E9VDj>zmK58J+JJ$k1{?~#QN_L zNRQ`$Y<%*U7^0))0e$pJT8=Q+TI(RU(k;FkbqYaWlmhiibX>K_)*jcs*RRb1ih0D)xo}g%p;$;! zHw~FDimg?*r|nlDHQFh-XtY!C4y;YuS$(Xjb{8XT-W$BJdvFp4kirjUp9spcCT3?( zthT#)+s&@E+^C^zXg!KB8{s}zxH4@sfHZ>e)QXH7~Y#ak21Ud_EnGA=slpF z5KTA)OApRXS02T!Win%W?dcrnVw@D&H7;>NR+Q3ma893*g%N49pmRG4IKyeO#-^sG zHncIM^lbU&Afk8MwrHX#Cx`uXcLu=+3;x|kFqkQ!fqA3tU<8!U^71y-2#*pCD`W2B z541vgwMXH1B3)9yH+ti2!wfu5{z{ML*2jXgM~;;PXx~eX!hrelUv9zMSo6giumR0( za&I6hY{pO}`5#6`#;+b8yafdXb|UEtt?y1EfipAJl0v+c6SUmismI55tq>>=%Ja6L zX19@-28w%3E*3*)4i`P*hQOxm1O?&WjiCGcFSbk4j#aX=z+VvA*rU-f_f7zi-xJSP zQv}fcyfFP5VPfdsH+hBe)o=g9LS^p$cgx%@%C~!zGygZ?z|)P;yLV>J6RfT0zqueF za`G>yu93b|B%cimJQ;hm0jsI%bn$Dwe|g z6E5N?usLo=b5Z&Z?csMlZ@K?Nr5r(QTwF1MDZ>dkZg z&|sj1XCCzKBNvx$vkg9%zgu**?*e`Zc)BmPn;SDMg1gw6r zymQ67-gjk?YruGGxv8pRdAvJwTrpIoUP}oqWC&#*@NM4>QG$DJ8>DdnH&F#OAK?V- z<>4&SMEUD74&8i)ud5F9ZyQeU0eFDfJd5LZE1iw_to;UOod=GWH=+Ql^@}d2UV=~& z)t$35W!O3Ug-VQ}FpByZUT$a`l&Xb?kk}@{{^{-6kP{|)SfpiIKX?7j9WJRbLGxFV$$I#7f@LFzLXvF%eDWC{vF{+JiwgH%es|$qg4X8s{&rLrl3oOkqES z2^z*rlD@638b}Bk${t{bJ_Lvwcn@wKo$%ZtnfE^Ps)lkuLyc&;>GUs_lgXyi`6qd% zN)$5eCR*%QI-Uh&y^+M=K*Kmx-^z>yuuLX>;<2CSSUX2Y>uE@ARzZFUdrM1MYDM$yL)Y@(hu&*4fb+(?gl|8xb9@lg5YHfa{*~TKL{KXS^G*x~@ zcsvr!ZrCJRX;|Aj41w7?GQJ|=HNmExR#7EhqCo|Bu?H}o#tY!c!2_z=ud1Q-z?=O{ zC=-aSI-bc?dW0{{=a#cn}c=EF%~GQWeklJX<%2eO3a6c_j%M1>YiYJeOQ3e~bYpHQ1Y5T3*2vY3YPi z$fJr?L~Ll&7N*qBN6$zZQzvPHR3SlBVaCnRLGrJ~7+>cZRS?>=5RG1TQ#{To10Jnc zn*B5hsPwAeYt2MA;qB4;T+JSc&$Gq4v1(?hln-*GYhT(1U>hA<8}O+}N;>yA4GgMN zyuXebjU*`+C%S3kr=vrj4BuGtZpefQaj;H1Gyr)O?C+SaxhyoGc)t)@u0}e+&pQm6l?9QE%bD)Q(ebEUMey^ z5=0(8T!NXqVe2{UuU3p>L@}Sy_%KmXP#J-xv13ww(lAnN%#F;-k(0FHHWSd9A zysGky}1xu9e^vH|7iL$Ty8)eB|P^GS` zN)}vorB8|pHUY0=wcNY(A3qe;)ROZ9FM>Wl!3~jvt^BsahfnFzH9oWX_{NdZ6Ja3F za1!2xq2k&>-=6nHXP`GBmt2@R8@4pmg$!!p6$E~2&Z}NXNQf$$)?1^iF10@(;IVh5 zskNjuJSpfbeaTr4#QCWucKC5lmXnRxi)7EC#UCnSY|-o5W)?Srs-;Ri35a8plhW44 zmmNa5xLs-}h&H*LP+(ry`saDR@mV~ZBZmy1c|&=M*FB@AkXLZywf)A2rbcD)?oy)e_(T=~QO(+mSjRqZ=|kyBYgo7b`z>hO5|(;Cm-(yaC) za)4nT*JO)f#{YnR(YVw!4`HWxPt)^3BsUb6zx`rn<+U&~L*)DS@WGHdM3V_lbsm#n zvy;d}Qht++woLGI9BCQcO254?Q%@3~iH5}dhoELac({P_AT+)UB|pEg;XR6`7+yet zSNA(0l^!HC58jUU;8IYa7Ad9aO%W%EEIto6(801we(?!rYL}Oe&uTrS>GXo@6p`)wcD2BV}V64>mQ|2k=mE_30%+*Mn_X5A(1!C zpyvj(fq{WvD>}hE40&#sW9*fHZr}ZD8<)cWj~N41zE)^|4qN8qQP9mHX^Ix2^-xK} zcr?R}1WlQSj(jXjn|01)T!JNrZBmUH$HB05D+&(JXLaFEcg@o@#>EW1f&2QnKHX=R z96cZRSUWf9gwOLi7v|V?+E4m#{;XxoPG^x?lqzM*c(rl!HFR}VFj0wBBQr2DeO(heYa{P9$C`dkI9N)e z`MM2D(kVV=?yKJ>Yugynz-V}jn6rnXV9_}r>%@}_Y|kIwkKYT;&N471|C4EP+!({a z@q=|gMQ<%bu2RSl-d!Wp51dlqeikDRF>z!>S(nK3XuJ5o(J)yA>uR@1c{UpLi#u2i<(ZG z;kz=Lj)scpvR_s;pW0(!fT_~PVoyZqYZ&CUZ^ZvwcW$0iI+v$SIfyCn-nsF&;t%$( zyx*shxxcV637yL%i2vY6wN<4Ko6G%ivVgB!O=6lhOhWcJLBJ@wT7uI-03I+?gXc=|`0hsP-`Exp|rj1V3hB49YF?AiXSAk%bw@IC&Xrq%OYYBm#a7OBDTi1EtK zCL#M`m@yDeofy%oU>B!?_XM=itIymcOFkpFLmzo2%!a@7c7Lv*WMQ7t;2a7Gd@d|} z&-v-oYI>g1LKN3N36hb&dm}NIMWnBw`&X447Guw5j}yJp{TnTRm4`uPJt{Q^CP`8v zDew00Ra|<7Lc|wXz!5cTI`=PBVwR!(o68y2R6YFGA2o-i%LWIq*})ROgul@?AY@H* z49((bB8cZl8*m2ql;Z5g}DTD9F^kK zomU%l81Q6qjf(7?1tuUDKWV9}sdeEPMJT7!gDfm8;MYT^>oc?YjfT{8(U}1zA%P53h?DccEGQTHZ55F@GkwQNN%XUjzqrl{R0sag8|D6u!x>RSShZ2wq)kz zIflNY5;Yp1YWKOZG4Z`LxIm-a4PMsHffIoR=OTmOLWrlxo?;_K{@AS)6%{R8@)jX3 zknkjBj~@wG&UgX4Lc_(Bj861uBSiQs~PEGg|Dh#=HT>WhW=Eo2!8C$6Fu^3z_Z ztV#-hU8dp+A5VN;U^-l4k__2wIF#^MlZ5RHZUdBJyGc(7Wz~}R4-B7`&EO_2g4p7-$|88#e%wv|rLf@+*y)gFi5}oJAZ$|pF_hvcVN$&EJ;pJp$ zdeW`$=rlr*8_VIFNfc#pNdhs?0;nmqIku%rJHp z9q{4)0$9@U5fPD0nzgnFK|#$8$xPIs%4W2}P0qT(`@SdtUap zKSDzrNNf@hZhQib*KV;8G0I;v<1C)JZGM}}XxIcYDbjJ1@Pre_5lsf9X2`ks0MeQ^ zzVa3l@eU-M1wu22?GS6Zo$U*XvBgLs1~U| zl6S(T#rlynIymZ5C0A~Z%caQ4=uQ^HgO?4~u&ktj2~Lawq0)71{FyB$e`l&~we<;q zhd=wRF!S(ej$?UVGb}GJyFve^!G0}3_wcCkX~LDc=NE z2n^bOKW$a4K(#Bhl5{JC;l! zdENifX_VX(go`@}LuvQwf1&JU8+$lJi%}rPaf;7FHh@6wY3~1Z1UwrU*bxSP?i0{g z>HyLsY)tL)3*@r_Nh_cNp>-nnWRCz?^)Fv|v-JL#>IcyIqP%%2&uTq#$&B| z?gvWlZwUIomWMYS$udWl5C{%?6n2~N@#PPkLrwm|8I>yN7R6Ht%e%OIY;PxwGk%B6 z@x3Az)9=EERy0G=@Xa2I?3~LMiZz8d@ZBH+DoNB@LihUP)!xQ`B&98W_#(Tu%_FO& zZ&-iFnmG=*Tppa1sJ6)u3PzORzok+!;oTw3rX&PuoH6G*+)N*bW z38TP%HN)4cdt(oLUs)Fd>vg%7^&MJ%O2Q~u?eNgF_dMC&u5SG+elWnXD!qxai3dVA z2p0yH2D}K?tpus!A4r7i-koLrp;g2yZ}|KYl!l)M8!9i8D_An#8Jxc#m?>Ht3V4}r zf(F&q&Uic5P9Bo*kS1I7aaMwzkZz8 z3v-vZihCVX`{Rg+;WXqZm%;KjB#5#(ep2h66+YX+3jTpTkw(H7eS7x~Nw{l$M7EMo zZ!3GYK;g_Vy)b`18Co0=eL0+Dc~Ku>+w|St2F?a6pcQYoUf5u?EM;_AEzxp?_h{F- zQ(wnIi4JBEvBfKiI-Ji21xmWC_5Xm6}@XBPbU9dp3vMkDWF0 zYyV=6O$h7lRY?2p(6sgBNW`E2`RVL5cbvxmK^D7rKl`}lCD(C#LbU6STft~8cK6h> zg8TzYxkN9@5|ZDyxv!eM1ZE(`&vk8|PAb}WI#+>midElrU5S<($zPtWQ z%*z;!Z{l_!6`VsZAPbb$BY{<;ni67nZ!{~1Dj#oe(88v>#-eu9t^J?ys1C{^itC-T znR*mFhri^0YS(f$<0e_|@@{lm1baqJHI($e_1rxIvxP)+)v6DdyDE|4eq0QYwL&Fq z-yAie3DZm&8kX2Bp{={2ly)nH67Q1LXA{a2L)~*ZlK)^(vii5+4{7myCA|ZQ<3&9?Q2mHi%?SxRrCL|b90SA~1 z8AO)QOeT_Y5MKATGKPPAKoz-QE+7c|=;tn87N)ExPgb?@;`kFo2`761wUT-$8}u$V z&VB)9-eBs&{vAXAT_L$&Jcwz_6-h!DwOwWVjqjA?Dse@Lh?25b%&-=nY565}rE4$j zk}FhrW?;FI6tjPi!U*AJurzEMTSOKJ4RQ3PkG#sa9LHwy{4q(Yw6uhx<*9oiXgP}& zl`C=H3)*5=9cL^ko*crm+MbJTtw|GO?1a(-Xp@7J?Oo6h1~tuGr<8~FCx z^>|cyeYQa<4l+~~EWG6ReC5csn)n7?zTEQZdl;5u87`DP3M>)p~V;`7s=R)Y=(T0ha(dzwE#zwE%0X0ey4^wd-- zdHLv*Za!$JDc#?H?K~5MmF$c6Ei#cjFMx`rSFsn+>n95y^ijLi{FIyV-c9+Xj&oFi z!*N$cDMV&@Q{h*5s962-P@k_*gV`9_#lj$ zeHw|&Srp?5L;1poz~OF2COo)JbT@;O!FD=KXw)Q-SClI4tfqzoyT#b6AEl^t|Iuoo zatN4edH9)z7=1UQ#jkDswAXL}8bEq)v%0vNBsg0NGN`#A&1rtj z@fZ7_tl?OGSxw^trk#)JwK-9%s;X8Qv^OZVUPqvhznx6| z0Ax)Cv$ftg1F9yF_O@HugjMy%e^yT$l{5(CbG82k1(N`C1;D>KN9o4i?!u0^-5CI4iMHh2XHDr2xzH=hMHCl7A~Om_CZ zriI?(W*ia|$ku!3=@T+^rZ-H{4=(lw20CH6heZ(THN= zt}}4+X-#zLL@2E3LTrLvnKR|Bq$PdY)<^Tb0T#Z%dg`>VEKs zl7B%&QxSbmbeYlr_iT>uTA4#&Iw}zQ_sc=0*t%w;jS&- zm_7g0`~$s~QT@sv`%-eIGcIrMTH)>wg%rX%ONH4+ohs;c);|vw`1mBP5 z=G8ln#C}}ay+Xf#p-5QoYuh1UpQHN0E=<4Zy;YtiY~Y>3491tOfS&tTk2|D^xTFZT z=UI`T@v)W7V4FSpFB|A-1zq(fWGlTsNxb$0w&c+AEL@RMrKO*9i0VmTh1T-D%Cob} zxI?)e2fK5kWpZ=io_+b5=;^mnY&2AFGz&@JXc7Xg7~iS=ybHAO+(Ct~=*Y+PQVIha?) zH)6Q`6Vvu-lP|HJ<67z*?X6ydh%ensqP7EC$B&)PRMHVJaPQF=Tmw9X1M;L`A0fAf=EGd?b=Q zLkbSFVjYhli141b&LdYjD;Eprr_WrUIypj+XG-=+qvHfWH8eZsP0nf%^VK~yCp_-! zy=oC7k z%-yq+in)-h)&ifE+RM3+hs^TkW;)s4G9gJ8zh$T#d_ zMCjw5huaCGtTBCB>P$g5dzAt|-x3g1wW%O+;xCnWX~UHDKK+p_g}zzqv+Kd%eUpSg zjV()LWq+Eef7yLw_`$si(%8$FW9&`z#FQ=zc_N%lohE#(OSgBeUi&9j9Ijt7hT55$ksTt79oK#1 zUgz@??<<=K8)?7z%xX6J6(NuPv@rxl3|hlyy)NS*hy{8ecTdMNWqr!WQwKRFyzS#7 zL#!PnLw$z$$1S=nYI%(;wX+(Q_etq!u+UB>>wMmT&|67{Li#56rV=0BrJ+d-B7!t8`eEY~ z^GZHmS1DzNx+x1vK5VKKC5DFfd?5(P3;Zh7#W>1xK$l%!f1#U}x zgz1ryS+AU&Ty#6QkpSGd%e0wY$}tOC)ys?2A2FV2+dE!+SW>hmc&5{^W>sBI&ixl8 zqoa-lw-WYQeUCE;+#1>2TGvTFmTfFmKHa~rKkQ~(WyNE>&%w%C{|sU&$X!iZu))+T z-EG8<8&=sTx-F-A=v~orwXF)Wt3~xm1T!&(u{z9$HxD?Pjg+xFvtRw3Q@~CM$+^Cg z*lN)3%n{q(Qv0YKRIJUjpi=%tDXmVUhl?qzF6Aybyj;jXNAkfsNa2YER#u{;gip@a z(#k58CMWT(we8rm1RXn;+ONj(3TnB!(=EqVnS6HVitcV(h$G?j;v+>a4wg;e1#L#^ zZwBsIl$YQ?zxl4CFRRvyNe?3m2+GdQ4Zjye`s?&?M$z8>HoIz)B>_xmyiRcB%YIL) zguafB&TQRUiLAGGU1xv)NJd}MP!;E}n^0rUaS#~+>reP%_Z-XlH&R7)?-?lGNWC!# z4&qmyfAY5HD<;HxCpI9JTT05L!e$`jA&U7HH@9-$HNvk*mXH7 zjnnO*jULV-EPP43%1PhkVWnjd)9U>}C2X>dKqGcFD?2+Zj>jkiO!}iwW`RO3ODZ^{ zyun_bXxUG`M&JzF8YPoi=qjt%>iy?+epCn)5tNvisOP8_;hxw{Vbhb=EH+)Yx6Azu zT*P?|$hoy)M&9H?VxzeF#Y-5h6GHZcg7Lmu^v=$Xd%VsX!!8O{Jau{;hV%H&lVIth z>PFK*XsV&X@`{4-lDjS6ty_7!FZCKPq}*c zjc31t>CM+i%dCe)fw68g`-+ zaOrZGGcCJ|-wRV8*&f%}l8}(F-nbzP#d5psQb2d^+>v`mlv}v(B*}NMQRu%fDI}ze zru~q^aIi5E0nR$LTKEsDiu_9Tn9e_Nnf6+~I_Wy7Dy*yHu`ymL3uJ;IlX~~!UF+G7 z(EIr-%b90kuy0er-?HilkMv;^)%&IXNek%Y`C{dXYN5?r5UP}Hso9-X9J&o}GH%#u zXGHq0E+xPFX}k!sz9= z;|nTwudl+ex*~tVUv^&DCC{~>2iKAd^I=PHz8*v`=uB2t)}!8Jk&Zmg%=@n_hw?Nt zyiiL@4;~CGeW4PxALTE6I+z0mI8N1F7Z9KsSy-O`F{nPDWLH7}2|A4HOpx-9e%3cB zsC!9z_c`+gTH3V=6A_<-^?P7=KRL}v&!4;}iknHw;1#_f`fu7~s4a5mzNhXLFxy03kESTEmo7R9Zur{eR@*t8?lIL;GUW&zf#m+*tMd?CMQKz)EOKlk(Xfvrb3PENGZr&}LX( zO{k&Dp=t@7o2b$?x!;KSRoXV1F#Nq{op=Hqj=#afb>lTTdYZj~IC8!a01uKX$Ej6j zLeNDPOH{MlnjSzDfIWBSs_e%IAoo z84_Lv>R{ZcnVGi`G4w;P>ZlWLX=rL{rdF-Z1=>v<;jll~Hnv+T9W=BI8Js0FMSEb0 ztXzr^820G6xF`E7gJjnt$^4G@?im^;S#=Xn78{8)>~?b>9ZZyBoJt#Z$)#1)JEXRn z3hN{@@|2X7Y4N@O^)2K%*qp2YZP?h@Lf^h^3#K;>{T4!%X*W{RAjGEoeTeRdHMWx8 zPK$DWCKJ|*Q#K94f1iFk9W~*${1U0&RpIv-i@eKo7a6wH1V%#i*=zvfr{7lN;q1Qm z&a}@KL0(D#6_Y6S3f~pF8UGWy%`1M4Ny1XhL}Yud)ieIVcDtxkMWWEJW7SS@(AzAx zwPEZN=A#u#8RuL4i-PQ09Yb^)(B*Q>{XIix3V+-%H5BlvguK?oTFrOocFaK-TK{`i z(U4xn0jDh=F}wOnv?AeGlgmY)nvGB5~&W_F`Y^(e^hgFAAu(n=^O*_YEJ`xLA6#&}_ow=Sd9*~=PComz2V z<#@_4Nw}Xsd-iN+Pmi3M8l|r^bCR&bYwI*Gg%fsG4h}_~VV~~ijnOifA0K7OEG;c< z;IMpcfP4k@{VuA^9CuPNX!LwPLb=K5Yk&XB-6x?46H%g(YiYr+WkY_HTPd&4G&7g= zCf##Pm$Hi+K9R8%z*)Y|I}ZV?hn+#fy(j^OXrkLxNAASx5%lDYw9?Sx<3`2LH1XLImND(c!?lVFf?VG{9KF|L}e#2mnuqcFK!F)c9L! z&yYd*J6P#~(S*Naf%VV(Lqm;U{=a(3?0rT!=B%f z4?2qS3xLt0+!??I41p(flv*ZzSHR)^?ocq{57gO*Pht`o#9i|q9UWdqE~Y&GHDkf= z`decuJ>vzML*yU(X%+wQw72=2?79dIOOq~b`qx+D^GjZ(*!=$S(R_auX}AO*76Q)+ zEGZz7QM3ZMg(p3@L{H)tl7#|X%jmZP<@^C~(2XFa7J6^I|KQ<6Et7|D-@SWRP((^2 zbP=WQ*p3P5AZYo8$J$&Y_xrhPPWPTX$%&1L$=skCPDx>kPE362R)@Wm;y4y23ki*a znU|k$e@oDkfFY6rAI69^gZ?y&*cXLFAA#=8xt?6B0j9+^rg!I(2Kr_va{ECPBQlE z45IJ;VSk~otBd9e>{a@$@dSkP-9OiG4_e6rUc7i=%RHJST@v(6|8cUb2O(}1aZ-gv zB4Q*FE)8x^PpaCll9*xlS@aRz-Q6G7g5gMmM(;{pJ-sKBT(|HF9Zsr&WR{Gi;WQr#9w9UB{C9df7jMA!K0_>0Qc{*m z3+`yIx(7gchlX#ysPPn5Q0dwiIr&w!#sy3`yxtq|DbaW1q!{)op$AG)@1%o?ABJ;A zW?6JZ)Etc4ox;|?IgB8|ptfNeBqx2g8Vi)4egX%26l%BPZ=Ko9(9?V^0XH7rEd+&y zg}IHFd_Jmj(2dvNLmb%&2ru~%8MIt7}p;CmkJ61*|-v-J%=zWyW3^5UYw zUF&{56NOZM+^PU>_0PYRw6O#q^78W3Cfs&_V!|L0EBo%Av*W_IIC&^)Q*SY8qhJ6j zaWmXpT>Rj}`}c9LCeg^7xS4gj4?i|9D8rNO`J^WE3OSaC*+djH8uX&(* z1?#he=pU6LIck8YGnuzikF4AoddwZYl3^%Cxkyj@H->+Fp#J6_n>lsHUV8 z3ffP&{++LNrD_DKA+?@I*iM#YR;OK_PuNyw--zi#r;GUr^Va=l#hrYuBd4$C60@l9 zQ)yU}RaF`1Sc3D!lxrD*`(k$CgYH)o-^Y%>9+uv5gKU3jqBw4A3Qh@>e_p*1`u;Jt zt9KM9%19Q#;Jdq$TcFIM_3F=_@9OI#Kd}5?g2|RR&5s&i#bN&Kx*$_%P3r8Ij3Nf0$=7bRs^8byi zSe!;CCMGsl%yFmK2hK+WUq52PD*&({Y4;ht0K}(xNgCLX9bN@+t`o17nU!@D{|$e3 z;z26#YX69%hks^p!{;a&0RgpM;q2mE(WUR$BC`wNc{n>B9tbYBMBE@?f|xcFJ7U^8 zB<2WoNMVYZvt;K|dSKHu{cyq|vmRLO6_mPb&Uw|eb3iIq*e+l71b3f{@E>@M}beB3^>$MTJ|n}ffMRD{q?Nl68zL@X1EzRK7TZU!_078Cd338 zE5)zqYe|vB)br!D7c7`ol1VK|@PW?ZbJ~}7ShpHV7Gnx`irX~I5IH${0fmw(^T@rL zdg=s#^|i+?sD-#6`(H~}i%c8G>%5$m=k>rYm*U6S^5eYCutg zQb@n}3hrY}YAVlt2azvF2hH#83Wubd(c5d+_essiP_ z`0SuGSs>7k`Y1q2yOj^iI)8gK&Ej~!rdeFA8wUB-TBomGSe3ih$nUie9|xkoUTSLr z=J4y+uU9Kf=&#mGKWjf>%g(-DO&k2}?~RbN1WRejgxW>x;BF+*v~7N2-P{EFA_VD@ zUUwMacUay14$i+e@0k0B5blVUC5wKvbH0HQA@doIL%rF!EU4sGi#%rc584?l-BZPo zLR~-~2`#~;mf%-87MXuDdP|_37?)=JS2$&9Jh8P;>4zM9YT5+QGYQYb>56YaK)QnD z0NM)|GIrQ*mvDK>R+nB#%vkC&>K0+uc*Ue555p_rc258PTxoX*LAEYTXFc z3Aa{Ep_MZ>8?#vW93eB9-s~&nf7p6Cm<~A&;#1EJv6)rszE=YnCjS$rt2B}Zj&x5>7e5ElA!^odt=L@y85o9K{2gKw`&==G$-X2=h7SC2z8!u|kx zm_GwypSaG~rJ0X-h{t?OgJHUW$&R|3 zbMPo?0^Zr2Yt`^Hzle>A*7oMz#3&y8p*QhvM|v?Cv#-W?`$UZ!iJV(af{3biKEn@I zRXRhRHz3|mEY;053mMGYKON|=^USMq1C-}rfFy27+>gVor1fJ!&%dd4d= zpaGY95^v1S&GCbPisaF3(D)MW3mJ0-aPMCAf#Bs8(ohCg(8zOia9P4|HW9ul2W$tQ zp_%I1Pl9;(Wh1N0q3qw+_Q!YJl%h#$Pvx}=nfc2+lp7Fe2Aob}a?Fi8ckWguyaaJv z#}4Y9J+hOX=VN2WXR}H1_6ELjagWV6n^W~Sq@|}rG4b!;hpNL)FHTfDEk{GPQ4J?Q z_aX5RD*vf}6$7DKDK)PBumvuVOEw16JRMknUC-Au_GppBjk`bT}^9s<2_ zdvY~*bGq60tq>6CX60NywGIL-B!e0xVydm9!)U7BV>w@Dh~<|a&h4=GNQGPMfN9T` zk$GP`P!uBWDt^pWv@$PFK7z5d{j__bgfxahnBy^aqYbmhCOQLRU>A^n#vUVx3U+%` zsS9>~e!h4OW@zCdRn>>IAX(+&K4#vv;U!mPapTMi7c};=B&C!#8jt=>>ev?rDo@yDcW|f?^pF(K6!=38-4fW*a-`<8gGcy;XD zyY0O&b<9@tj|#GDI*+KLr{-|)A{R!xFAWs!BMNx_#6a#{a=Q`%HoSh5w#J95%d8n^ zK!EAL_!e}VmkjEn_+CAC42=XTC5(2)f2|qL`$yaKaH6S#(YZZ$ zS+f6lvRbmaj~vO*z!_Hib~uR$)0W5O)}3e7{}ZZO(2(G*xo1CKN3whqtKh~d zB+juTGFsslZb2r%n)(cS_R(q$CY@DB$|{kalk<9LNM|FNTzj>MZ%RMIt+Z5Hjqa3L zxUr5f_nie;k(t_EWwDjJw;;`-=ipJIlLOy6`_qn)X3;duHZH{5Nox2U$t|$B*%{MHey>%=QsH=$-aO^^zm^AsHO@)FQqZ zcl0CB&qrF<ok}Kw~#Pm8GRPPm~5sL;=IQ{PX9^qkGBV zlezf*cGJOfu2ktM`suHI@5;PFVJ&U#;IqAK(GT&0-e!Kq}xE?$z&K}%|* z3Y+LCqAtI~sgN>@4smR)%z(()JPoHT!^h|A4^r}MbQUcZ;pxjbrm0tugk5=qY3WsX z$7Nb(ukv~14^ zBsHd#h{ex!ZCKUqtl^MZeAl(eyp{JCr#h2V3nX+<%|6yDvHf1%Yn7My^mJw;3w%`4 zcfE^;hLY4D+uovt+%690hv>Ue?9-H>M}F<4&pHHFCRO=O9{s}w5F|GC+ea!0CG9`f zLcvqP_E8QQbaWNJ@R!x0H_BCa-wFY-iLF^VohGe0yqH-^BH@}L)uO8mtCCIr`_+D;O|tkwHd{81#wvsl3T_j+ORsewO1RAQv%TMPsb&) z6z=56(ACXURYe+)0T1BD41m^+-EOIt^Ioy3#$t=f2|bBfI*So0zl&E~9yVc0IgVrH+6Pk8Jp(3yS6DoLo|S!)PRV&Z8lp``WE_wB zmEVOt1hd7@KNcS{Hl2hSoBb=>VDX3g?6U1QN1`t z=0pKclJNT9^?A&Vv(PMm;q>%@-*y%D^n~$b`~bfz!*U4;mZ%7FgmG$;4(*&L@6*ys zPW@{ZSvo2}5*@G7aB9uZVM?|g4#(VgJ1gY;T?mr< zNL(sTMnzob4OX-Cao+A$Iam#S%oue}ppDrJPHcI8rXh0;xMnjIirY zMjXc8jgulV3H-#w!ijj%ZH~V^@8;i5$6*xR&dObUWxNqz{p0*3smuv#)ryE`M#UD( zCP8)ugkG$?QOru4;bFbaS!>kPlNw3m7^2wyoSYo;!Q=&v1^>hYsk3qE=}s%Y3>qg2 z6Ci~}I=EkvFizeuwG779y6E`((o9LX&e}X@>Bu{$0=s;^dQ$LWOJa`mf&?C9~GQe>5ChWU?8aKNDjno=&RcMbENasyH` z?_l{x5YVXrqa-jCa{i)P?zoSXx3w*ZqPS~z&_q0p?Y&yfDAhy!j*m3whR9TW+AWP) z^s>xvm=(%tbwx;rjx0d@&VJSVERI+T+gV`o3S*3Puh3K%Y`q;WXc7@$ijNsQP_zaa zc9*Hfm9VVw^LW!Bh>uuLQ6SaZlZtWgzL^{{x^S_yF(F8ov@}kcz4U0Lwd*A3Txz5m z_1G`a--1m;Qej-*W3NV2q>zop+zs{DN6P-2#VaWMvR__N%-w!~Hx2yR8?<<7TC@Xf zzmt340Li0*j2t>wR+H^BGErfXk_Pj%@r5{W-$lwu;;7AkGfnCQe=<$~JCaeIzuKpz z!$P75VhRCGYST+dHp#dp%LP+vt{j+9iG{92(@{Su?uLSSgaz)+A z(u}QUJm~;HD@P z46fdhte$;PxS(N$`s}Ol%H8dI(nCt!*;*2HLkB~XS0{rxHu~1LfRqB}bdo;_lM%Ek zNrGK78sA?Tkp)%~58IG|T`UB&e15(RdSv;Rocs;J2&pi5R`cVo>gHyziyIPGoYF))S0b8WB5F`90XD?qYr3zuQ) zoW(OhvaYk}8NW~EA8(H#m}C~o(Fu>eMcVf1CfB#5AAKx%Z)hNWL-u^roECoE5Zc8P z)YK(tgyWZ(;aP58WJde=vt#P0ckkwA__UJ{&}f}oAqYA4MvOba2tTYnKGa|bM$}He z1Ivs`o)4Ho$8}~G1=L{E;J{sJec^ireL->DslTL~e5~KZaaRCVl_EXLDILvMQg)D< z*V05whka7Bpg}U1EVh={a;^}|y5L5+8``lM6nj$q`5Dn`URjx%C0JCStlqZR)~@6c z@Y#9NOZVB5aqr(>#M>Y{7~J#u_Au_!hC2%#<>lpazP=5;bg7)u($ecIO8TZ=Rzs15 zqtejJWBHv`+J!-Y;ZI zVqZ$XUOEBy8$>-szz&FGA|^~McQ#_g9pX$&cCjZDhxbj1i`If$b`68y8`NH3JI6$* zlb?@PPmHx&@ptI@&ev?;wWKeM0}h(n6+$g7t(RMGr=WnXX52Lpedz%6KG5jnfoobD z#gLJE2si*d-mUwFH0vN~3FsvXSf#73i{cKOXqKFHVt2*L8>h|=GP_>jJ;#&W_5o;c z3N3bW`3+*e)E@&lV|B%e;t1aS7M z+u9;^<)Cp>!OO2DNizPn9}4>l+1GGK!(dLSK$Ja@`R41Pj_XL)5Ny~2|@}+ z;hu*|N;3EF69U$l^*S{kNy--aj0QHS^yk8+>dWSGk}=GKjp%qvz+X8Sx|!-o#846! z5BDE?eE@x{he)Ei(*sr2fzb?cCBLSnd;7-VY;12ouvrE?Nn>(lqWlsNehDdvm=MTo z2GeL2Jo*_00WizxD1JKXar9o`5L@~-iIli{h?+-UUY>u)^#gvL6&nGEgVU(m-1g*P zw90`Ix|@WkHFsP-XDc5*8DevlWEP@kne5IrR((G)&wH%4#;#Q2nN+oVR>#DI7k4Zf zn_WYRDou;ob(*7QQAdv%>4kE~kj|RrQ{myM8e9J8gg%FmYt3m|m>{xGX|QQ{+}l+l z3EANAB3h9Ey6kpSMmTAAZj7U};ett>>%DkhlTW^A=gd1+BVKzTu;d5YzrS5z^h`FZ zFt@>UEi;k}$D7PNs0Uk=UWd63{Z{C+#HSCwBWkY896sUA*FDE{XUaCte-pAc=^T+Aog z5gLp58OcQGkNyt-x{P`})8tp6OwRoY4SO~#6WgBN+w46so(lqqb!nG0jLHWH0>CWx zJ=%ZYtN#7Taa!`p`w_b?5oG01eEwS|ROvNTY5MH-*)$r&4_m~hdNM0$vwH>;zYZ(e zm-^jx9;EeA%ME#XXF#TG{M7$UgGFB;5gC5jLrcZS+Eb~SbH$?MDt5v;7N z7@jBkvW)qR_F$%j?%56!m!YrcnqxV~2_uQ|z^pv&0w)>6FyG#Pj19ND?G=d-#$9|G zI6|xhl&-$`dHbol*xb{a%jyK=e_2w-j>517OVIYj*B3&=c+IV2YQ`NYz0SkE5Zq)L z-eN}>a2I}WRIOk7q(}&Cu3xR;Px9UW%0#;YARoOMWh8*NqOv~cr4Z^2lCws~{PW#} zsD(Wg@IU~8nbkyo@!}tn59?3bEkbbr|2l`~e;EGx&uk*+h*d%mZp!G%SkDjLII=hO675>i#GLxOvT7cr^ow)-iYPiWNToeJaD_R|HS-MeEIr2poKnv z_6H`P&W*^98~(l$#dUFYo|v7ELQF=Im`e`ZjO%4WymV%&fz0PhO!V0WNuv3^_iP3V zbh!ZsTjuceZFo2c@CGI5z)+>kF}t*{P4-? z`*U$|{Q%DvC%g)>d(R#??h_zjrKR<*>cq&@v;=TV1+x8@;QgmUY_MOWx-dRM z_SaF&`W-wmYEyX>K+es^LsLl{28HiEl(GoILYObi-AH}-Tc_sJs_v?yB9K64F3rnG zZ|&$fi6kU;q|*KDh@VW5J^$n|A>~;`*1hP1NMT^al14ZoOGwpAiO_;wgFU@z)PG z5CS3Zl9CDtoujZEaUHo%m^2t+D%7_x%ej6i+2dLh}Ma1Zdm4(fa%0;Naj} zgR7+x_Sh|x_vBE`uUCwKMR+fhVJJs6`FKX<@xxyHk|CTSggrTSnFZ{5`eb2;`+(#X z-P_+8eWUpGYjWS6HhMhw?)l8Q|7b}66ogh;EkPz)59mgaRovbiRA)St<prxr@HtZy$cCd|5a~tmaACfWw}ckCd1Ieozb87pEa} zKKrZL8)E$*UDroxcnm9A0tkrS*uPLIN=J``grUz`D*kEJ=1=|`ME|dYwA#YL!sWvt zYt&L?>)niUG|V3(I_-br&;a-@*g=0420|4BRVqvK-oO{>L5g-%;kg_|UU)nu}hTthw|vC}%Lln>TvgSRsM3Cr`&Ko)YFAGx4+G z26I$tX*tx0q1N{H4A49g>G>AGdoHu=x}Yq4kG*!i{QGUF-IV&N;VGaAsC-xdWHZuF z5O9l}kdF}1qwa%6anMZ6m5i&_1Or@HT1U>UUqZY+Xa^(=>!Jk1+>8x!<^@>=QMo7#ZnfNF z1bANa)j1vG6! zs6Y^=9M5ZolGXfzzn2&=NbT|b)`j8=y4<&KUj(#XWAx1leq7c$yiaUd4@UO7lS}Tq zku^H7ylU1;>fevt-vkfa;?okHdZwlN&nlxQU!ys${!36bC06-As=EFq!s5f~njZ!- z6~kK&<8K?7=NANbI{r=0dE$W;gG5upU>Y&+-cf@p6krzT@dls&ht$-Ar+3!KH2a@I zEeXtde`&AId;fAVsXztGknFZjemz(QKnp++P!Sa+et4);QF()VpnUuon;C*0VMZ}a z^)zFFmMN3K(J(?P=j8p~UXwE1TN~;BecB63C&XbiU^@TSN^a)P*H&MkBc+$%@E*jT z0Pffvo7vxoQCztAp+zI%S%mJNrz>oc1m!$z-=@5f^26q*s8^bm3O@F6h%z-1Ln2)_c$KB$qjVF zo6#AyRPm46xoRM88?(FXjAX-SVR6_yxPfn&wdQ6Z6+iBHix0(Y8WaJ&0bRMt#`YMf zFHz5J7U*tCc}Zal2Uvx@0N0lggJZu3GUZiN&bx0;dbQKCfI1_fkhlwqo`5af3cwJ= zS$USy(UF&y;LJVEr@(XI#~pm;#!*O<+}eJ<$fg|k2xPf|5qtga-N7S{`+sYW^N6QU zIRU}-jrTidDQ`iL0=RZeUhy9~m3H(X4IZ|?Ho|xXo2?xG8c!7fUAUXGBm)rXA_%jza-{pd00{(! zGAdxSCLm70)R@8-UKodDzuJ&#v%L5k@1#Vc5#Y>ME`(}-I+ z`lY4{DJW8imR*HEqi+?j4~TMAWtZSsd|rmJ42GwwB82`EnahrYtCR@OpE!r79Yw{& zSPY5G5k@K&8GI%MlMm_^NFXNBXONYZ)h%9L;kgH(^q_6_OVH!py>k%2{ZtZ&`Shsi zK{GM51g8Up&HwmqK46uGRFZ{NA(_9_00gzGdz^JSj*dP8OWF+Rsz>$iJaJ&_ zba4ds#qpYOy$%omwd47QvU%_Ah@C+=y&d9S0-z27XXLM6z#;PRlKx!AfXOt3oyBA5PwCT(Qgt4R{b^FCzu?XOQVEeUGH9-5HD$8@A7%X(wOcinTSXood`b^2DJ%voL4ZZb$Lb;VUFhu0Oc z`zpy_bv90y<-cN3B=1tQH=e$BFmi_bC^>W9QZKdT*saJ9pbZu>0r@@b@d6d2i7lnB zdd+z1OLQb};zzQ1g)bBS^_u9z_08K$?@OT;%v$$L4D7N9IrOFn2K8{lzhLZMqa)A9 zqG23{xaX=bzBR98M(V_B@v*DM;T}~};%yzA-<687NGWz5*x9eh?MSz^?X_e_EzNg4 z0L{)n629Ph^cZ)-zJO>cj|Mx6hjtfdHhBxYI}lN1WNnE>_zkMYev_ywyv0)h)R_g= z?#T(K44{pCeYs6cE`8DBYm9!0Kh|PO+<|?nE&;p!Z5TFOOr)`I6R-ld6HrFx*o`tT z)RXJU%rPift}h9y^fJl`R=?|XLK6U#&acVO{R#$NV(wdG^D|BE8-~Tr4+7N*r_vkL zjsrOzrW*`Ie`)ZenEiU1oBjx}--c04xAw3Otm%UQR^`?ty^7A|e=H(5`&1>`{6q-C zmoZ34OfX1#e)=J`C$mVE2D%b*RbC$A`c`@pGqQ*5m-)=>qtdAzn6iDYr2^yQ?s17I z?yV)34pevj3p20Xu?|v%EZ?Yp(SW;2>fZpZx9nk>qdgd$wh(goM_$E6z7Cx4H^(}dd1KSj=@GYZp6{#N zh82x}lJB%QdB{uRG@H*+e{+fiG2iD4oitDjXyJ8Xm}ITGVg%CwwoQ>x0C#Yv2eDdv zb?6c;iE}y_dFT6BvIu?baT*QBVHjAUUO2B96b`(OvxI$jL0VoMrzu5fW_YA}`iqa^ zn&czsNecWCbIt}c%874qS5yDL`!q1xoJRqj|3kY5MLKvKvwV@q#4X5!*^MIqrXJn$ zFSaGJW+*~{Akh|yV4z{Rg85EM`?e0rvGNx+6VJWBqbdg{Yk5CQ_UPk0N_~G0l)Nw@F8%ch1d})>OwXw3?{Hy`h#T{}-Y* zTmPxfN;!NN_y;jB{!b$&nT;LmKU{$S*@CZta6Hic+5ICled`_9Xu-xEA6CT2l!yT- zo%K`M@bfcgia^a1s2$VX17w|OFs`SFk*DA++b4yL<6Te5uk$-LG0#D03Qy(<#HR@+ zAF2Nr=)6Yqf%IgN4{?@~0KD4zr#WQy*_tmk3Go0F78skBj(CF#d{N@4HOajnvaBAC zB^GzmB}DY`-y+7CSxs&+Lkp`FYPnfM!JFTd^N zeND3-K^<@h97YeFkT=1I*R}?m>G(}Y{lEQjU6f-^hO)*|=Tob#+>t|%1fuPIZKwVUX z2XvQieKP>Sx>fjbwLAVsWhBnzmUud9aetV$#t&Rc&~74h4j72Ff8l0&Hj)&dI;wf- zMnHM+Lze1nZmP2u<8H;pRK2lzKF1)&*#1Xj!xGn4&$52eg6=@%+2G(5b$ zcRgdUpYKaJuKptax>~BV!_<#M(pLDSg4nkU_lR(1@haIq7v&!xO&E>V zD*Yg!fN9tT`vYI7%L_dA9Bc6UjF$;$8MWkC?7zVO4UFt4xK^cZRytyrD*Bwz5kxL* zv3%Q}trJNjHW`z(wdQ>(#sa`?IDbv@48-)j`+-B}>H8CDYqgSHf?Hs5C@CpzH_zm% z!`FgS*z^n@)PiiLX&>AoHun8I{!F^G-|0Tb&6_g&7OG1}^LaEG9zW>{zMrvM8X{|3 z<6btOI;MKI{`)%jT9{Z|s%(pxyKl5is<_)%K<|HBzU#a`{kfyr57fpR;-biz2wj;? zCF>>5wYrf)=Uc?vkb-Y;XIdOXTLu$c=k~pM#x6>XaYZUlesX40d5R6}M&hb<>3{L> z>d<=Gl0wGM+vseDi)s(NZ1QFYwF0{RKzOb{8Z7QSaVfTE`>ry-1U7)geEjr&@8+gn2%6=JE0hhx_jzB@`D7MYK&6lNJkh~N5$vdHaUdE{ZVh2 z7vyQkh{|mx}zt>rd4DG>j+j zT*{AmVp9#Plbo))MiA8t`v4zg>c($ACVK@_&1eJ?4n!N?%0eQ#US>jS%R8Q}QP*Xk z?I#IQ-%y-$2o|AY5gNsSwBAQO7D_A04?E@f}gLRoOxK>~m-RkA=m>D}$hJ^W@41ep6lkWS_ND z2r3FHA!o#Re+?*UD!G}A1F^G~wSB{5lb!qS&y_Q;ve&b;PH&i|=g)y!M#`Hat$wcHp)465LeA&Je}Nr?z>t zWE5e8&0e8`*}M6oc$$O*2*32=C>pYJxEK3+=?1T*d|hfL%~eaU%8?RnJ2_baLvcY|00mLN)86KMZXCeyIS|r>0!&V0 z==5p5oYO(M_Sfqz>|c6e&~}9Q=0f`fU-uGX8PQyXYO8ScZTPK%U=q6TYBNGw2uG-& zfR4(xwDDL}HU~eswJR{+6*l9r7gCru}^I6_OAsb zZsvTgf$?ZYJ}xe?9LQT&uKRk%uLb<4?4r3`HHhkP!ggA9Z9d-KeQzFBVE6!{Pp2_ zZh7wz_LK4zkA2p9?9(Fic-IL)*cXNH@ld44BI-8$0-PHRfKy%g4E_& zo&)tEXjufq6i5X#JxS_-Q$k0BF_AX)aQs+wiW7;g_*~$mX{4}mcdt6y zQNMA`%!?Pj7#0Rzygv%ej?*Wdy&0#AI}uKRZNBhb3(0o0qN6M;DY&RPz*o!czQNUA zk}7d^&;|=|U73=AN8J5>N5s|bAMX`|OJrqGN8bm^w5?L#4K{H^Ul`C10JaMc!0iXZ zry|GhL}n=U%~n8jwg(DiAk#_2*JsbDLj(tXvY&RgJN~R4n|?vybSyukDc4}dW~9Wt zVQnhl=TuvPa#$X$^pTar;nmjqX^PRx!bfgmkKbN?UL6&AT4K_6bh;6Q*^k@gZ4agK z;O=iwW4#06-KcryA+TD;FfrU^Xb!qpxl{vlhYGV({wYImhOhzP{vKl1wi#`@TUg^S7 za=52$5Eqx>P0vEx`75{=RM-H03dT}RJmuu-DCWBaM1xes&c(}tG5YkYxcdfFsMq*A zPZBS?%|sK?!c(=Cd=Hyi#0`Z>9`H7a`HLSs8X1`mrJm-6ni83@qF)$*mHz^~nJyVo zo@{)2HBDMB&$el7PdjUUyp|S(Yh*gqQkgu+qi*VB7s=}*^oqR)yluKOS!)!8an{bK zG@vwIYrgL+=Nu*hRkmFwk6Bb{_W?J24Fmtzh$Q)kHIfz`krEilQOVh+NO}=+P^D>@ zkZQ__HVU|}n$7FsvsZZAiB;2w&Fl~P=_l3yE)V#RtNs71Xg}&wQoA5+_;TNcnDz)z z)_J|$2*7p*hAr}uL>H*XS`&Qxl>O3MCHhDV?^`s-$Ww+vmD|l|q3B;-pM`M14wN~} zsjFD8smZdCQ1M;hbZxq6dg9%6yG{go2X}Q47qsU68_t&~f0$#qg!sRxdk?6nnr&Tl zkwig2ML|fPje{S_DMNIYYM*l#C*hg9=ELoM}XI&N)cVu}KY0uUqZE z_dffKckX>}jCbCRT_|f7LEy<<2}}E&jZV z?MU~47qG340lIBnZZ775E3>I!f}FZf@sw(oAxsj&s$l+2Gse{MWYR5txn{0)_DLO( zB@#1xwyL^nFcB`5t7P|v8S5?^x*-cNP$HyM}^t{t!2r((_?Q!Nf658(BHzxzJYnCy%1e_Dq)*)YVL^ zO^v#rv^A8-n{|^RmyXQAxj*UkG^V>;y$|(UynaN8xOv)ZQOF11*~5p6Qbs>qia}kG zjJNG5=*n5T3UU-aQz@_P z>P%6h%dkua)xQ2=UFFP-o$>XzrCVfy;82wn{o3s)oH|>#&5C_t8~nS>WMu~RiSxU? z;YZADB^OC~Sq|lZ>W6pc{F?zssH$R;ehTy^+Q44GZk4Zy9E&6kM*vr zx)N}!y`M&j_evXFR^u|#!FMF{K3q-25FYUGyrZW}w z;7a=spCek+#~XV<56b2e$ZGb4)kWM1Hw3K%-`4ahxU{3jSR<8dlKj`N`JLKK}U zzd9{GF!nbF#Q<3VL6s1k@swjd4=y0c7b_3xAa4x4$4(@L!2l!8i!|@W82IC$ebJqe zOZE1-8&C0P!ls((jbq*VoIqiUa>dkT6I(6T1r`t>=d!S`4*1nex%Ql138r&nL6F

%UNP!*i#qWqVd24(|?%gULyVEWLGq8JL2&#NaXqIh48NO=(B%9q`V$z52_UL z=ou1C!E$envG$j)L_FI#}GRq_!)s4 zkgmZ1Q8T%KZ`$ZliNy-o>cZoH{rYfa8pUX)f)#G&xJ;tSejJ)ZoqQdprs)<(ru zdaxqrPiu~<1&b%65>^?CNB~2FCvimqbei>16n6+SY1|LG)Ub9;^MV&$!b;HuO#YwJ z5Qi+J`wX|?2;2%YMq)~5GC^v#T=EEnyy_<;_k~gdP zP<^F*L}ZL#=<^WUDEs(R7Z6O%;WN&6UGQLjX?(=Qi2BjM(b1S;$I$xMjoV*Uc1|kI z*E*||-1l{G+%G=Jzg=v0vAu?igvs4L(C*9O0VOMIy!RY6L3S<{zy;a&!faQkz3FN? zh2H-<9z7wK+I?F7+-5=G^qEO-XgctwRV;keSfc8)L2|2fns3$QV&H53oEyZ;<{XyYnc{p?7rQ9S0wO;Us6@(XJ*3AL2_LA{c2qnvTTr);5yUEkcs*B|^H zeJ58~_Z7Ok-%goy7Z~2$S?{NaXJ4BBtR}X3OKHQzxCRCD*HubQ*oNIJu|Oph%QXkgy4!r5dM#9d+pI9>Y;*!>gq<$jSq$k0_n2^0*%j z6D8VBjn(*qCtr&vrgQgWwG@929Ti(0)k%!IQhTSYd{yI}ETg%?x0fk&CFMltuEBog zAmyA~Niz6FTW8Sq+Osy7@EvnXm-xPu{?#L|BIpKYx^%s}Tpw`#b&T3uR}gBs2D8H} zCK8)rN&&x1X6SWFb<9i8CY$#BYeiV# zsq@U1W8Ugwm^p7OCGEw>e9wvpH|WY6SmKyZn3m>RuMc9kKKr+i(N_!m1a9oRmM)ap zm0Hx!w4o6CX9pPV<5^y9VBLOqCD*jTX}WC^k`(NX`<`-}17)ImX9otB!^SR3t+R1p z_T{MErqaF$<`q0QLO(~@u1~`aPzuiT%}}MU)Hari1OoYgVVS9;VIGYU=+edTcgDG>mov|i zDcesiANoD#el)RKw^b;dx3a6{@JuDOf6AlJY*mAIqL{8MJ~idBZhLP1=w5Q;P;XRy z`cfexjq47zb9bJ%z)NMWEZVeY3V*dEvwgjfjPohSGOXFOjbB2>%^VLF9)OhTo`v${ zLJ=l^l#puUdY+CyV;3jqmrdUZTBE)Sy4qi4!tk$OTn_g)6b}^bDZx)!;PybT{pTO+x?WrvutFl&F}<+UEMv+iZ( z2=#}(Je=MSg}`-Q*@h4?Gq`%t%VWSA<76PY%XHd!TSBv1KJO{T<(lR8uu#@#B_#+0 zAx{c!oX*Xei8!2Z5M_ko*~Z>#74uw14+?wEbAtC?-o11iL*+cbKXvXid%ck-+57Ec z@-Yzpb@20(oJx|pdW8O^U~l$z?*U@3rvQPd?6dv$s;WG=LX^W7&(3S`@nUC5NL>`t zhuMK2f{e@#vDsY41SnR;s9VWJ z1?^f7nsz0v>-hJ6oozb=sV?mqne%ylTWV@vskby@1MuB4*oAd#OeiEOCtw8d-*8 zomBTy$9hdlc>l7Hz!{_0@qayh?X!AvD0-eU!Y!aBHr@l9`i?|K(JJos_W~7HRs9;q z*pj;*M&$l#kB6PS185E4pUrEUzvFHN{~-B8$;&@02@w|nDw6+Qg?#MVTNM#~LU`u5_E73%rWuEo zooy#AJza;f;5l}$cQ~!$UXURVA$VP&+VVU$(I#ze*z}3{@)J=XBejBg1PjD+uPS{) z*Xgd21EFl_pb6uklU5KJ8nu(+bzcw*_usU?IrJv4rBU7MepUJ>9LjWlp;R&d&GuG= zNlZn$9d9(8XrT}w86F=iVIm2UtdFGGond7))$yO|4#0h>=fdqj?q3*|K2$Hu<6BaA zr2$Dq*7=*9%Nv}0>Ux1qLE62@V+CQ6gHMd~dG(VA9n&)Ht@e&`=4CeRuP?{XPfbsU zuDi~m7IrL7#6nhlzZxw9_VRp*KZbt~tbb*n<30x;F~3uDmL&Nk4jtVIxr&RDI}_MZ zARAB92uZ-CL7x!@W3uxP9<9p16AHIIjVreyC5_C$u?MJHf`%=6PT)XY2VObrQaAo) z$wO)RW#gkXl#(7uz+`!gm5TWkoYQahSl=2R^`3h@vuD~ger)}(9NLLj>BPAnG6in( z3;k+-MQJ^Uu_29lHRU23J0}$}lEBI%Bn=y79m-b>BxUnhw(z?p)Mb3#|M)IbRIQC& z@P?Vev~A;POYoI5n91sU67bwz96d?YP0Yo95EY^Or5^)WV$)wN_BB95D@>9PWv~Y^MF#T z00Mk!p*xy!z#d($H+Ik$duJYwQT^Tkq}83TOc`|7xD6Br#*d@4d&OM4PJsk8zs7bG zbyb%S_f7lu1~Y@4*7SgAl+`48y8ICxbcGiGvPdgi=b9u+#C{*h%#wTZ@#^FUI?#JX z_N0#zjw#XG>`r+HbN-P*?d)x%3Xj_1j-}S1v2jeT1%7T=&6}&DzQx+cRIkbAur-suYk9Idno1`NmxBhsSba^ z2W^0U45Ir)xOv3$yY2-ti}okK93$Kj3_tQ~aM#(UdFwob0QG4>H5JK{=dSAEQrNCtYKBk4j?hfELRK z4Lg#eWLt~)b#i@|PdI|tv*^%|lFxYGtCe|YtTW15H;YGcC*ov%a5|H0Jh7T<)7(y%-zqLWeEZg!B+3MG?;T_%$RHtg{eQ>4`6$|sD41kkHL!M ziOyT%v z>GH68Oow+BJ<`w=h{Lc(oaBYb3FD?|WMtKZ<&*Z5M>BfOgukkUuFb;dp&Yq{ja^1Vg99i`v;}*EGLgLk3W6>b{R&567ob$6b zbVAx3DoOkrAGP-`ZTN?W>AqXS{kEh|PE@KxneM!a%HHxFo_k7{ZbUyz57{!<~M zhu^d!JCpmubrV0qFM689zws!LIaFZXrY>|bHLoRJ2MX)-#XjSeS*Z{F7p-}GUY7YM zzIJYPv)K6Y0n~I_D3qw-M6VucwuN}p1LQ@rZ$V+%#XOC8H9*=U;~n+H_hHnXjVTDalcgI)M%@RSWv4FePcc3s{4gArTm6iM z-v{k)x-LJP$53jNlZuqJ7u>RgPZI%=-&%PpzUPzSQJ>YXEvy3(9F-l5eIA?F&s26= z!3Dj!;kSXsQf>Y0fiEL+&pyH5#W5B*8ilfj=mxy*D;e0L zw-&#TmKH_do7{UtFOTfvcYN2r8jO3<6E6DrR;E5e^!90G8fD-2XOvkkF~e3*cmm?#6n~AV>`lPhfUH@$i`vGGE~AX~081 z!vl|r7aJ9yG;sC#Qgg(-paGJQe46nMXYi{47u;vsV4B$!Q$4roFW{jl&G98tUEP|%$?b3Mi|CVs|FMlh(HU#t`XPCB<4 zw*uh*Rcs?TIY}WA6v2nvneXb=+mMpJe)LLFB)={nGyf8hBdacS>s0d$z3QU8f0K6; z$1+Ol{xK-N4s3UU9mB^^&4BGF6vtPn&1n`P+EUt1bNaqAC^;}aofmjSl1OXoHQi9= zb`4}_E-6EES)H6m9hZ_mCiA3|QQ3%!zvET~iI|Q2CCVvuvBZ+ho=%`v_dP&H!=;X9 z+0i=;ftG>bL#?etYQBZwbBqw>%bS-Nt~?{5d_}8Q8Q<3$dGHm*l zXC)Z1lVUj#d1lqw${@x>LyXeFP!OicU78l`yHNUSwSFe;z4IwOx)lq`GOambIkme zp$qDGLHyYnB100;83p&dEiEjV0ReGwxZuhOnu~QjHKg-`a4u-B#ZnK%W%9_N#VNvopblRG=1LqUk(`Dv*MlD*UbL-9SZ%T_BdK@qjO<;UuVw z`-INJdxos)#>Af5uU6`gcx5;9Q1mG>T_kf=7;se^taGbURYfmey0p4`xDy>HfTRd3 zfO{>4wqsUygH^ft+A?tJj~<<$Sm{>}e6katFkyL5C&%bHP9Qz*I4f5v(_Vo1;!gR? zB$@)+D_ibL1Z-Gr^OMe55o>t5eFS>l;T*sny6$ef|Ey!OLeZH?NRrrvJyWA+WkW}` z@M|pzHL&*>{Fc{!&%C~NvM8_z5f?D6{O&1M@cK`l}PBh69r%i_x%ff^V_b#vlib zls~e;%wdo$kbb~&>G+o?FMBp3OoHmH{fP84B}kps-k!9lL3h++`i?BpwzRMR{u_BMj*)-1JaUb3?PzJa2FTa% zK-;sYb3!kLE|2E6xd^>%D~NaB7&bG$Oj8KFJ-+1UpVQXXPS4252bLzT#xI9^^aV<- zs50(b7H#lbu{cd&IZ_z36;E>?$#LDXe`@!X;OW+G6PH05{UXN0BJSyn9m|x!w`_Zb z5ja}eZ94=7#-6+D`5uz(V?X!A;i7y3m@^$0yEuqP3E+m>6RWRoxN(;BEM7aJi<9L| zSFhad_LOgf=hK|4OJ_Q_#GjK9CuqmUV6r^VMxpcgN69YXWB2k;d3>3BY&4KYIdQlk z)e>UgP9AD12L6Fm^j|S6=FTW`3XunDHnO+TwFjI<*wWH>`s1YyVL|o~lFr-Xc_P zYh=()(`Y~mC20xji{01@n@7`s&7sgw!K_=^DUbVw$6+HoVW2B75--WHiI4ie8lv00 z=fvo4^6x*#1V_p%-oI;uB=4t_x)Q2&o@+WqYm~H*uY&hC;cgS6Ef}(do9)`(oUueS z+kJ-jy1w#5uzZDZ?IB%V&Zi3WY6?J%EyTLi9`4j2=zLyH=upo5BU^6RTy2 z=!LWW$07hF-O2!*lu%;EC>9%iBS{Qxc)%l>Tux1y8W8tIdmem{`rA_SRp|d~hy~A2 zRH<-CKmY_0Lp=TvxGW4@AjqMQk&$I4hGkCQBJv{G?7R>3bqOU@!&H#RQS;oL`M$Nz zF&^mmU<)B<@DpaIl$Z%X6C)gAHa`JE-+%YvW7~Hke1P;YWi`77Ko=0RRFAsXM#Aa~ z@)Xc5EiK(^X+1qX04I6=zB*{lTGAYij?<02p~ha0KX77oZ;iKR{_zwvkPr&4aGlIg=^( zota#d<6yhstU&xgNf{YbHQ&JluJJH`2^t-%IUv)8Y?4Y#O9$?H0awIZ077JBkvC0G zUJA7_3AmW~J671b{p%#5&31av(vJS$f3pUW(Tkq;=n5nV>VVH9{Zn9honCjlA-yhU z&>VZCPtW<2Ur1m@oJCul484*@Ui_y|Jb!XwWD;c55ls1xTUTv1lKK@{4{NO)S%Rw1!xBGkjn= zQSxkf-iC;%0JFS_5)yEfE<7k8vf832ef_(0E1gD)Kqm%ej}~9eJNM&1u$UTVo9Y_o zC?peNJhYoU#len_DOgzdDcN|vcxIS+Bd1+q%>bOnb6;EgTb&;0T@`KZ$Whzd;0IOz zrVc-2ir-XdCRfX3i~HHK%nJY`rDSFO6C+K}%&4lUkn=E}zYJusC`}vRAOEI$ZOXDf zhQfLi#5>TtpnXgnif3J~3qwjFnsovD0py6PRjx&=%{82nYT@!Ho4z@ z^sC;u<68A-39@c-Rw->S?{mS9^Hiv#IF1TURnS5>$G|{TNj*>0WG~h%&&es6Ai;M1?KUcIU^NmO(W|5GIDuuatji}`0h&&O@Mr8_<9$JN4B zSI0#6k&AuRk&P>2mK}vY3`!k@&N!J~GlIL-B$a#Han$6K%~r;wQM+Eu$?d{7^WfZ# z0$$EZ;xd65ll$Ow>HH-@OZXdcCMC;}p@c+~zho^=x{0=ydKd7$%#^5mO zIZi#4r5-VW$9FF&ZPI^ee10}fDxtXRk*==c`EdKTOvdsKg1WxGz8W}50($0p*<*XQ z*`RJII89KTk`}hQuTqTzgJw(HLZhX%3TE_oX%Jd>`Xp+(v;d)V`DifWCh}yze+F$k z;cdO!_bWFYnYxMk8zIy_#Da?diN*mT`PMws<{JJmI=8+qac>^C|D zMufWrDZ|ZBL*`Gq`AUBLIN8Jr`#C8{2&xwt18aoP3oJ z;w^0%sZx7#pX&-n$4lqO|BNmqf6$BcGE>WqA@i_| zcV(Pd8t$DA@WBGKTr{rwiv34T!i-6Qqlt)jL>5x5g|Gk-e&{~vdw?UW*`A2S)yR8tx$uGEW# zsockumR{iC;2;JiV&mtnnJlLM28K6yS8Kg7Qo_|gp4_FuDX_@0WiC}xJ)Ss1Znj4~ z8&mwJ6E6k+$=N;mSw3g)>%yj`Oy_OT>_f@wS(5mQa*q_PQvh!#WeIH!++5fa-}#Xi+2-CA?tWBe z-OUMgS^XOX{u>@w!};im(y~;7j9xx6b{OS(PbbP_1z_HTDiTOjf&}_#N51U0$#k#x zBzU}1<_UBkXDn0`v&K`Mar6_Zq`~E|S!0rY5qc14Lkd|J#~x&?Q=&*Df@_Qe8K3t< zVFu>(kY2%fovth5fI9s-xul&?R|d)DNr_gD$7QU%VAX}AqspxCO$8CG1PI^n&$=ZI z#J~CoC;ccNwR9Oh(pnB5eQ~(Il7^>z(?72GWpo1dAasnj4;;-khu{@}YtGKHOHX@E zeD~#Ngh{gWbs!hclGr9g6ls^$hRl7lrZt}Jfkdcq#9OoPf>Xu2%H1na_Fe+L#M?1D zPW$6iN;pGQPqZ1??-w|-G(G%>@y`f{_w|V3;D5hF{eJS#O*s5zkv|l>{~g;PzSzH?`KR7ArayJn0AQsqI=HZP}(la&HpA~M%i+*8E_}oqVU*WlXfCZTX zRv#C@$~){0<~>epmhSrX>(iryAau%wG!AOm`jhNu*ql25AU8c-#C(eV;>8v`%nG&& zKNFhH8Yw)F6!o3w{^BXa7s-cuop_-HTs6%C;ImR=M-L+L}O#@50f{}z<869kzrL; zY#P*C!&nrH2KKM195k2pl8$smD~KvWWwtRUj0wSo)T|QObi#-;ikQeogb3>g74-ePzcWAhw zto)NliM5;ohJXrt;(9W;7F@~_^ns<=di#XZoPJS**Aq24ql<2@80(+iYy4)CtCd*R zw5@+n<_G}s-=q4mFyMFJnZ+P=Akryz zDJ{ciAyFZD0K_zDQ$rqGZzv1^=+M8Bkj*oVK0o-!RzAR;B`Avw}+(gq8Qb@A$Ya^=*h_C|M{t`H|Uqbj9Reh%H zn|)Ve)a|-gTs^HRHIE;hqm|8AK!MN}L@%)^LERWGxQwDHP;@_p@}6^mjwC5&-QM)S zh8HKvo!GseJxkZAe+J}3JR1*~I~TSTbaK)E(C&2eqaR{`xsn-#+9tAsx7x%yH|5b3 z;IJd3BZmstm8Xv4)znl}=S&}VULWdnman$_r9O~AHYC#U{4w;nTH*UJh*}XGFXzt5 z$4AxO-7Qb|n8cZ|(ibGybfo>YvY>ut6$OIg2`Es4)8$NE)IdHDtRb|^4Kn%dq z#dZ`V0i#v=%mXlJ*x4$@n3Xin%C5AR-RaC|9Y!HzA=ak6ro8V0XSUhXucnv*Y0=Zq z@DW@`K1`%)uoOQ3viFG_n|)j16g9Onkh!ee>X4DC#Cw5N7bL|=P;p>34x>w&S4tLo zv-l!yZ>Hwq5!m|X|8vW!Q`f=KiD#mmRGr`S^XC8P^<}us%iFYzMey*PKr7-f1@*3< z9jyg`G_q*x|J)OfODyY0xU0@mq3H}<3GGDV7T4%{?NFnyu+Qw>XGC;@fP#E0X+mr& zS`#_CH_W$?CMG5;$*p`!U>$JZz`$T*k3G`~libqU3a+eNFBF4qz0=}W3NHE-(th|- zVjzu_6wcgH_E|pk_KAyKOZYeIpcG?cV`3>a>Y^+@EvPc8q;k1=LaRM;R2W#H3X*`O ztCwBoCFRClHSnV3^b_}J+b@ogABcWbgA-_&1F2j(P|jPzmWjV=Yd5C@h07`gmOuD+bspumyU&Pw8!4)tC?Yx`2~5e??VwW+XmO&&fGa zeV;ID97u#9(-;u2z+?86k;`)5sea6H?tr(z>Fz7l^Tb~N*a??JAT~eUBoeJ8)nl!^xmKIw2thSk0h&e%2aEVf@6w z`DpucffT?c7oPQ~&3h7duiue*Uw-Mjhi> zZMKd%Gg2IEt)+m)c!IsU>WOT81pKylX{T|}_4%Ty7Ju|c64%CF!A}1hD5-xHBhQ=p zw>eC94)L4N>)cL^7?fvrQyw?_!63*#%eDQ1e+}cVWehi#RjbX=5A+H!90IEWh#~S^ zlr3Keylg`i?z!7y?GMKB81Vc}oo&}P7@FHZ0ZD6J#KFB-<)JdI>LPEJlHeN3;kcTWmt)%1sk z$io!++F|Yxdx{z!^eVvd*P$BrC;sIoD`&dHHEK3WDR|K!dcwQ%+L#FNq}F$R=Xx=2oevo`ws=H1Lne25HNo! z@AccaRPHc3yy%kpE??aE9Hw_l{0DN42aU^3^=FkUIuvt^g570=MT_YkRWpFIfIdBjtSQQk?o-ZMu zLb-dSudV$CL{^%oN^Aa;jfizt@{oqCZ#y4#!iOgsYF-FOof-_&ovM zm3UY_k7+4r2@c=eJJDTbDV+IhQy)m`*=X_F^Gsw$dT#W{F5!~2rNV3Djm|CWOMdz! z>A9u7!FW@uMQ0C5Fbjj;03kLSfRc#}ECYvxg0nCKHb3!~cbF_mKU@!%f#c0~q~$Zc z2w$8v5m64P3E`Gz`ia0bX=icYwa%b+ANr6BiDL3y5Knm+g zVs5K?-Nm+sU|d}Uv0Li%Em}W31;O4oIMEhR7B_$z zsgo(_{0Tl=2W$%$tUF1hSvASxNw90T+rdV5uMC_PS3v%-Lw|ZpL0HBNC{2eb?71)O z8KywdGGiybK+QS9@Fb_CoQZv-b?7Tu{{51I*ZKIj$27^haQ%#TmLlb5N8u?o|9}va zNoNq9tI&3o(RQ?W*O0zzmInPVttcug`bR59(jo%fic4w5?1EMA-3#ka_Rt1Hv#%rt zMB#c#Jc!qMC48PL^S-%h+7X`;$Po}2_zK|8Sp>9-u}ADpmP{^-R65DVsri<0MdDEP zE4t#kdcmC3a^t!rE}bwuins`upbGmlRPs*DJ=i2Fc+3M_)b)}BQHWgU$)hw(lp~Yn<&c``@Yj>ppKB)`+65rv_jYsc0jcjfZ=fm<_4Ox z!LWHypH=PEB3R-J5sVEV$&$T+CnpRx@&uIFaWU}U`t|MSTzp9d@> zh<>loHynp`gLvKJyUMPv64ht-|D&k6RcBy*As+oQ=)GQv)tqZAvKhVxR5r25Fcd9e zdQgj$mWGA_1n1SRZW8}MSq{V9=4E+m_qxh75H1 z{f$#DCs%bbP2xlls9WjxW;Dea#Eof#pQbt!gdKhO!Mudy>?K0#uSR*}w%vf2;wQU+ zYT@Uv|C#^5_G!$Em=i=B#+nTr&UN#iv2iePfSukQL=HZ^3v8h|c-OGuTtl>r$tf`7 zxU|b-B7NfXOCD0YRCkzvzcm<%9{*mE2ZG}n=CNz(b z5Cpjv^ESptuOqeXzu&e@{aeGnUUCxlO-X%HJ#Oyn?#DqTK0m54;J(0=qGVP*{&o4N zqggQ~`)?vD=gO9b-c#Lwasech{;)&-+gPdpXUpIJJN($^&t0Kel-6CgE5O#U;H3!Y z52mKlD(zN7Ro$f79pSGuBT^j=BCopFBrLe z$XrC`c@+OqpVFb@eC0bf@2K~Mq@c$`$Ac%)8qn}72kE+4Y3&_hM`?1PSxG0&um)6+ zbiOP9eA~ts?P^3=p>pBMBs;W;fBnHPFrG#U@|JM@4B}j ze*z+E?8}#E&r&=-Va0^EA?58-kj(wI=)J&B0)3lY`>Ca_)>ls0j`O@TM^L7_duD!N zVWNnNRe1dbG(?!k91oCho>n4jp4PvDK*6`O7yh|a_7WgA2z(w&Dpp){voF*^@fdp* z*Hyp#P-Jqn8cB1)Z+ymz{Lzl`;OJ|c$G2GXJqCUvW!>sFu^qn}K^!`-W1+O(p;JYT zoR?@h&WD8dX_p*K?jBz8@a&NPg-TJt)l|L9jj33csvAj);bVlJ|v zPjuy7w(ZB6AKO3Z!{5AOg;St=^k+THs@S!B=HeR-v}{7xkIS}$Ir04*ae2Ib;-or_ z-Dh?gKJhUmtT!F7#ST8`^ZlHgnX^-&kV9%<_f7QSH?RkU8XvT1n|C}=2AhC$AQ$1S;NXcUst0NBGfR7a4usX6B)XK*UOg zodk1Y-1Xce4;vHpZ!=LLHse$f(aoX41g_gPx^lDFu0CfFaeb@UH)nzHJBk6V#J_GX zO0!sC@7JAWUbyUY?zXV`^h8kS$G|dRXCWGJz|z;nxT?!Bb&N&-E?JFbF5}fG^>rgp z)k`VAD4!sI-j*KmNiu26E;j|ExYjUdvD_>9AKIRCc^@9InDhZgM&c>=M3o5$C=Z3^ zFZ{jOw%xtaG3zygG?{eGtdh4($jjN@0380gLj8rFjlIhmNT#ezd`13NY;!H_F%l)6 zu=lNhO8j$>p(H7xR#3^L$#)UU9-po)dT6yQl6Sb0Nc<>NTY?>wPYGm1BN36Fk$F}x z&%-VI>2J`iAV<0m5JTt6lgGG5;*xnG&(Qd&%aukr zZM6~U%3x_Lxgz0Qh^skRUa@gm8je^X5r_ba6R2tx2L}Vwn@4GH;Bv-yJb*8e6S$LJfWtZkbKikJKm4MDH#Akcr^wE-DxO(F4bHHe=npMb{~sYjvO0(CIvxvL zDzIQdpIH&7`K6j6avglX&i#=_cZK;JGgoK7FVA`F*GxS8NU9N=EIGxTA}kT$C1l>w za*D{K8)j6Ule-y9cY0w^BKUpD8X~dE!2EOtQwx&|v9n{aOze8B?**HtG3x}J+uBHS zdHG06x=#sE;mVSH6UFddcUceQEsOZ%&$qH(@H>h|>Rw-r$i43fT!$ij zOd{+}A1hu!itDQESxxaJ+(hjnPNNo2wNf9yE#FAK60}&d5U}ruVjIq+XjtfEp#Jh9 z)-G1s$ z;jYxJ2p1EIbZvaevW{5bLjbL5Q+!PPSV+^Vj*k_?*SE#4`hu$ERIb7u~zqiLRgEbJHFPaV8JzV7Jj>^X{xum z?P39Ic1BM&hAo^2li%{7R`+hn!j-rz2}YDpOx`5olm{?VKUpcZZRr$OpO+)tvJSjs ze6;kzq>22uuQg4$_$tAg+;98~{%(PJ^-QST_TI;NtpVD}EcjE3U5vuGxaoC9kT>+f?Y|-vQ^KQm08giNSmY{NsS` zQhN^s6(KI)jq+ZimtX*fhLs8|_5CDZdw4)h8jdbwe%#Ie`QJd&s~RGd`G3Qa=f4p$ z85poaxXzo@iRYmod=)1l5%;Mlzk1L<9|6G!stG842Gt18BzAM!Jy0ilK9zri;`#Qb zfqR(2To-Tvtbfs!b3rT#kTjQbv{%2rB@*b5d&{I9wBLQgO)jq^?a zyQ7B}E+Oa!ufg#PSwDM^6ZfqN1tcf$u?zY<0CX$=6&xT#%__{E(cR1PG!gyzy$>1C zdV@n$4LQW3D z4{g0cc~G_yZWa!vxbgZErwaA4^gUFkNQr)9kWv!D+3(tF5D16AkYAu0QY`D*7d zG3GYZ_H7`6&z`G}Hld^IEwJ|YB5J}}>`iLz7|1=Z37@F2r?E5M!}P&9VOO0Xg=0no zo^gukpf-^t$5GOGi`Y-Z`T}a5uGOoQ-~_&;%6=vsdmGLB z(zN}3@y)i2u9?jTfBIy55?@|)c0gxEvfZyt+kG_G8(4mrV<@=6;eW6&?E6pNU!N`M zda2{(r*~ujvcp@*Jqkh|IwAp|a6u{u9_S7|;@g_3zGKwIO-_OE{ZcQ@7FS^aJeyk0 z?&|^&)qDUPLf)8d249HnYIU_mjmBj2@-^D)5R`$h=>C(YBIRt_xuB*}u^zGeCOYpl z0ik0n!*fQ9Juqjjb5F0Y-<>EbFq%cTGpYkvyuYj%?2RxsHD7%s>sQcES#0Kfn1gPD zl_^6wD(zVUxiTh!qnzrqyXv8;#=e8uJTpWde@RH$d9xWiH{;Qf6=N_U_*gOe-wQ4= zBP~y;5Te+GDPQ8TN8&&d0`C*4wkadZHC=GbUu{y``#NBUb^-smXrs!_nzW$IlR`h?6Axo z_(ZGT5j4IS_z0Rg#aaSCP=PqZ;=%Iyv3yogn3nDQ4$WZ;zq0CtGfq zXRWxm`A{``5Rk3Ap2*z+)bMam>5FCqJN5LGhflQK!W)ONF=QnJ+vk6Qe$NB*q1L6v zKvC;MPOL-WiV>J7!6*)^y2_-~elEiYQUV?!f}f`8Ub|)QzCtZAQk<)L(I(nx%oa$N zY%Cbmph(IAlk~N~8;Ko7A`xO{A^HoPno=*q;11`3zLx0chU^6*F(6q6v|YMWe*1uI6*b;dd>NUnkA)jV}X747I5V$H`#EJK1Vr_)5{49$GBx2G=qD= z*mXNnWYD=LU*A=9Je-54voJRRIW%Mb0g^JR*xtlpkbrp{smotK25n0@ zB+vj(s{f3hEa|e7T&8ICd+(RD{P!o{g^#%G&+AuvYf$t3E(<(?@B}qC2+! zZa4(^pQr(I90gE2^n%-%CkxGL#=6(7MpWXYH`TKf;q9_zqPNeT_&JYq7)$I5Fc5x? zhLjYw!X>QsEWO2wZ&x+Sh(GeWemdeNZi4=Wbr7d285F+?21XrF%IEE2e`}uOOwuF= z@AjidPfdPySncPz*_)t+0;6nm5I~ypoteQ z)5qBL#UozI9=%6bEaL|4N2#IDzVNLv2~SxdjapY|Rq5H_jjW^0)x7>_5@R}(Rv=BU zK_a-79Hp``xgle(xXHai2-DShS1*ic!>6Hl(#?ubvYR+}db;CK&)P*Rf5+8_=kX;jx(!`6WDn^CYNQFRDexQ=U9d0XLV8~*|A~y3# zHfuoKNk-!NFDhT<{^dnJiatm5<@(?1f*ugSi>?$g`}9NhZR)vOW*iSr{U?9;^GYpu z-e=P$HyOAZy5;v5I9;pIbN zZnL5hGT#W@D+%%zqE{LaB=;VFaU1o%z=6A7O zbN}$8{8YN|+Yjz>=JZJ?$BR?ULlb#*UKiCTD_cNl5L}^`)4w6O;wGd7q6Vl%vQyNK z7_gpup1zVGR~LyDQg&6SGxsP0o@%8}JC%`ILKViDOR^!Vn*yhSGfc9!f%Sb|tLkf&b@r=LU zTI^44b{5p-gHw-o!+<%n1;7wtzwppX)lgDsz1sQOMCS!0{|mKLA;t`GlJzIew>r-w zF*5W}m-iU;XHrlhF9n=squ{Ut+Mlf^F;l3{AChN;bvg;&fj`TBKEHgC6guHQ-6^~; zjhj-gxKtvKO~!ti4-Rt?vuJrF>N1oFK`VFOZ+&xS{UqdDrIQfM;vV`3CAWSSHB*gR z4-cp?htM&iRR`0~ck0xw)IZCrtL*1A$9^0$yl))tZSWJ-`nvHAp9Z=@&n|ki^cD`M zqq48aWO{#r(=-DWgXY0d-y4q}duvh>6J!rOp@9qVqSt3+iDd2D=1zW>qeI|-{Wr|? zcyDaMzuj8pr$saeHX^pQ))154@nLlCgW5Yzp)o1&9NU2dcHSODHtCkMC!`L1&I(CW ze3+`ZCV^P4uq(RyF!lZF7JYrG<9-0~`|~dm^&hW3{BwPO?xrYcF)%H<`BYHIRgb?6 zXySEQI_EjE3&xt*a!0x0&xc&#+>pOOq!Xi=F4fvc8;Sb&0J7q~8_!+7UZy;DZOSoR z#Pt)e@${Kf4=vvr^2iGj)6>~7k4*6NErF;TN6xaG(&E#FE5ukM>2fP}6k5Tz9G;Pn zB=&Yo(4wCAoOt{XU+_>>r+>lDDP5zt#NZ$bwYjCI!TWQkQ8*i{S(G$L;=>c3JBnKh z{g2+h1FETRTQ`b=f`E#Of`S4fN>i$UfJ&2&(n|oPMoOf2f(;Z@nl$Os6oeok9ik## z2+|@QBoJzV076K}ek-2;Klj}??l^DUJKlL2dt|p{ueH~n>-*+hd(Aod75fJEwOx7d zsuo&f2KVn@3^L*5F|IuLfXZ)k(l}yI+ORr5Z`r}ig>1rO`>s{6fV@~1Mn<{cM6f9_ zA8}{m3-fhCEYc<#>RS0Qbd6KOq0rgT?0KAJIG7x~*AyOdoVdtr<+EvgfIa$pyJ*vo z{L(vQLEDMOqcCZw6P3FJOPp8w(unCJH;6pwL%bPrrQcOye(qx%dZl)NF6ZVSc_)9r z*3ru!-LM(m~*vTFc1lZel+Gdh8?KGMbx{pV5b@Q9be?e41pL1z^V5+&`7pt zKj?vQE4CA90|$X-LO&YM#15Q|_0>0-i+qw&YVnJtkU|eyani%bYVPbkwQs^6t4XgI z_Dk~0D@Ue|9_1G9&lKGnXkiXMDO+>iXo9x>%d79uI-0e?{S&86aQF5_{660kOP)a? zPG7{R$2|ASyQ;-LMJ0*F()Ica(}^#`*zhM<^)038;^%->bbbMC@hWy-P2z-}tUIk6XrrGJ z@+&TzrrxUsx8}XX!}1wbPM`_c$wW8t`X8u%^|$g&dQfCB;-tsp{*)da2N-dpFS=#v zpe4){e%#EvwayEXY@Ts`5GG-m1@E+Or$3=dMCT znvb4t>RjNQM2-@OK%mw_v8iUBU2Ii)ubMq!0GN#n7ael+dRK=wI79dOztpg0&>OJ- zdSTGEQ31mzI+HfZsY64kcDWYBoF_}q*wb-#BF+zfoL+AVttWpFE$@G~MPx1W#$$So zgX5RK5qUj7{VX%WMTsjpEz!<#PS`6P0jH==J!k7Lt1LGVU<;x#K0;X!4JEO&5o~xl zmiOQxM2Twqhz1dFG}Ujm+Bj)c?|=8|#TEu;Ah~!5hRTpf4|)Z_jU&9O_eZF-yjS&H;FRT=IQ@Dw?A;30oxlJiMZ7?776qpZ9o7Yrf>c%2YaGd@ z37Ov}S5V&yNpA*n%i`{VqZdOCRD;k@NwfGY`z})e96g?tXzw`#^RB5yX`89uw9{@T zHs0r>ob+`&K)>HLc_x!La4?gvp>MC-8&M=1WEHug$5JXkWrzt5`AZAF^+(;Mt@j5w z4`nmx@mzaG=V`hUzZMmocFo^l-h7iFd7_r~NGVa?dgy9M_J|pA*BkwFb0WljWkt!J zDEMQ#Ud(?}AD(cg)h7teQL-$#uFDyBKNKNXecn6erQrQ%9@E4lWzK8>=~BOH;Xc`o zsaT&dLBG@Y2nPcdb z$1dNjcJZ=E9m`+rj0i`+WLz8aCT*MNRh> z)d39y1wvMVR;Ci7Lg=--Z)4PV(G|9EQb|mu%}sKa0Yf4xFNO-)t?Bc~(PG8x#{|n8 z7cV^!@i}0=nks5my8mHCRYqGpolHLx&y^6|n1$sSbSrPyemi%^6X~Ofjoke#F4eNr{woR&6SY`Iykv_}$A(SKtE`^|6GpELY^BK^u4 zX(|g0cB)HL^@b7D-kl6>+A$o?ii?j|8xxQ)oM*c4=~;HUH9k362xM`4{Os8QRdw~Z z!1q^qcO(AJmH1&WTiglET9cf`ApIF94}n~3mi>^}qQHdv;I=qOJ4|cjW zsLg%ooRG@QFnO&jSmmtkoqM?tKMU%8%473*abNw|-0pM+CBn~W=;QhG2^(@61TyT% zBGV5_auOa(@lxV_&quOR#!sNyP`fcG=p1NAc}NN-`kfWKu&UiV)fAyPupeDeULN0v z@#n+y-cY9YW@4KfVQ#lqLD2ersh-;(S6Z=2s6xA>q9`%G8uyP@$z34Up)u>|H<_*+3eZ(2lu*$H?)tLl|wRMruk1h4|MnEb+^ zNgLWXT_B6qQdd_G_BmY~2aPEzGGn_Ce)`cyB8eo3)G5wgQXzw%cwy2G1+GANObsaZ zLpS90Sdlq`urX>IEkG~Yp2pn^a|M}1%gf7!nSo=4=jceohlU1tZ-*?!i_l$Mjb(R& zQGe$TX|-Vj@Dry=NFK6m1T|HI=F%6#_*q&?3jf;gbLj2Hagcw&C2vxL@5n^j-p2ud z%M!0Ou7}aqhiSBpP#7UQ?%x!fh^tfMJL2Qxb1}6GG~+x-a-C=RCDeTHzH$%}f5>&v zIenFh6n&N-TCEM2g88kCCu}$~EsYZ$X5hqzpe>Up6CrzG2^F5Sl>IlQ|CBSu$%=rP zpiy1{4J@yk?=29CgHKsF2Sap#fP#&U^-QS#dBPWc3pq%^cWJem%OF{WF6g|WKVp!3 zt&t4jI9W&VE?5d5u5g+SU5#yM1P}ekkK6jZOyBR%P_bC-B1iz2p~RM~_K*MF-eSxm z*i4+<$=ym#?3|I3m*=7j!`H8m%7#9SW@>0?sOT#W^tf@X)|g;XVo8#4zH2Y2{B3Q@ z)LdfD5Xg%aQbf`9!klq$Fb~B92c7I*zUW3oNN^7$ZGnBxIm zJ-s(2dsro|UY&bwv$C|*zq(p_fr-OqV4)TTDLp=WO@T#riyi@{1SHGz zzoZWmMC*wq#S4gviYB;kEi4|VU8f1#9W;mn!BD*A6%=Nyb7vlYo1Dxl4=lYq4Ax%s zf`bCKSF=aWdrC^g6e&yP(T8HfwAz#(b)TV{CFX(tNuz~=3tmj>L^wLOT;x5S^1%aa zw9j|~AAvh46z1zxsYvIgF=Vys_AxU0)%olClTGZ(-rybd!h5!|QBchKQaN@ZXo8YK z9IGp!Y^^K;c-+~Zj#in8UhDYqD>`%|=QvK8wmsb=9=gUtpzTr?78WFojt{EP7Ne*+ zw?#VdWE&WKH0!VNB4|lQR=RQXQmgO0e|_}1>a88e&xS(B?9CG;QeF)GnsmWqB)VbO z9ukS}edqgKi@!u~%w;vb{_^DpVRfo0`p~!0K4qgjFI^Z!^06G)3!|3P?l5zQrDVq!sWtRakcLUiMc#r&zT7Wj{ z;X9^r0GR=i-Yxr9sF!i=lqc>wnx=XL{a&h6E`Ve|mlLfNh&Q}l{~>{dTKlEuHdba_ zg{dwctMk(aGy!O%%5B6$-!ch%pZuH>;R|M<#N}F6xogJ7wdV@VgV+&Tg7L4CWD923 z16bMFwc})5f0h!bK~p;i2ajIyxCUBgetEgL_LO9T)m-He= z`ioxLA}Jl{36S$8KrMs?_=y-Zo$UHR(0qEcQK)=|gz@P#8QcC?0aherj15U#ai?+q z0ufeXCbAHX;p$_8s8PSxss#}D?`s(v8Uidbxq4d03gPg>*{E0cai(4Ct77i6elI;F zlWtaHjS(T`^yfyr5^#nr8%?hpYnVd09Pn4074K^p>y*r5VPOGO1CTOOiDSTa4kf&! zW7K@__S6G2;?g@D8PQ|VZn2otPzczq6Km5GZ4(npCbQrt4lBNrKsH-mayytO`cl2)Lp{C7b_~;N)q;Y8T1odlI#>60kjTM^mIuK3|Cb%dbJcfM zRi;rEd-dZGF*`;u1YR(bty)Qn{#K zbAZzm2xsH0gStRo=!e52Bb%5;O61oG)}py%d2jy^STBeL;9A`~yp32jXm4wKhJKY} zOoDK@T<8E4LEFKhwD_R>ZBaXtn??68hcCNW~G|~QRH3b;LR#O z_d$>e#@K)6c>1$u0ZolEbH$L~ACxFdlA681Z&x?btlWZ>i6tC=sSet?civmFV7Wt}(i=(xN8B?WYaSqDHN_x^Z>_`)Q z*qV&+v^~{9TP3*~PS?jq8bpphe`h9A2>JuKZDB@b;^zbJo=_P&%d^PA?G z*8Jyl*tg*ILYUqqA%%Dz2uKD$sHbOIM62`j=W z*VQYra78uukBt?xaEg7PB!e6o+xJ+dzMq2*6p~*0#A&&}J7t@L5RBiY6%>kU>h^DH z2JS4Gvr=6K*Y6J5g-1jjf3E61({Y?%`YVM_#^+c+2QI$p@RJVu0aEO$@P=+@^Uud( zYkictJVHaQ!8G;FQI?bAH)uzUT--hcrRgFCtF>iFy_)izK3=6la;cG|?? zn;)M3&Ihf=*UG{`r?enZjQwN#=F>sEARpdQ$hLx3#EzlRnv<`^N)!tsfex!2R z{eu@1C()-bb$rm!?eeskUmIaPLy<9AgEn;`yS=@=mKI@WXQ!7ZE??-YJn4kzg~9yc zW88G!hm8;Pto%^~CPk&_``5#I=quQsn;;1%47Tq8D}8nN?7#QqHHTW5l!-)&_h_bq zyu5(sNEH&7p%`?tCDNj4d%HTmb4EZ@TU$GCBqAb0(f9)O=^s7l(F>|+%c-yvv*8nE zB2Sy{Zfl6vH*Ci|E44Y8!Y-rl$!3gtLkgoC-sd}!18uLYp_{wPx@ zpR_&B9*GX`4TONiEr8ye_o}zjZFEM_DEcwKn zv^3W_j?Zb8l`@1rePz+7&YSbODJiE2@%l>1-}bm&mcxvkk7&dN>4Q_v4wy8>HVThDN`#_I^C1FZIu zou*E)qaM)Vcfiy}GY$wXfXizXg`_r&X$(rT4I}&4H#9u3d+55r(f3=ZAt@qD_5Y2^ zW~P!V+_%ps=tWC=sl1?AB@9;8NY}Ma^2Fm}QR{6OIsC*m5|Zt2Lc7ivdjQ@TY|g;I zkTGn3y9k(4ATM1 zNF@3MCui#IHv$L`kJ}9m4aQEIqr;uit)2gI6aTm&XjmF=80J1&{o@%_iP+iM=?BaK z6595*9kPV?k>*?71ay^xR10nJSjweHPWfySs*gzQByGf6MVP zSz!K_Oi=+gW56jhL{M|M#;c(HsEdiVEogsG0uV;|ba!?0JOa>l&=M&+1KorANa|7Y z7BdM6B!Tg-Z=2Nc5at-(I$OdNDLe{XR-$3zwqU$y!(oB>o@^DZygM1n`%Q#pt>(Rl zZ!uX}s}!w;&?LaqVth?T+vt71{|S$Hk(`>oF9 zHzOk>FkA{*Fk^3HXoeazYCiBL$)BG`h>D1`m5IPHq422(KRH|XOHwnSC``jy4M+t^ zBP-x}ffC8z1`dM1@-?hpXdurXAx(Vc+EIi7zBW+G+@gk`9H~tAzh=ENR}{i2-XZS~ z|M)oZ-UYqaJV`o&fD3^t474OdG>aoy4*K|bkmM3Zojw?g+Lw~KjyzK@))^TKoiN=} zgw1dZ3nUE6*QB1hcM)^jE@mTM~H zpQdN%oh?S&;+Myx%jduB^PARF%EY}lv?(Sh)3wYvF?g*2g3KaOzkM^@{6GHF8>0ww zPabvm+uW>GzROWvP)A*T`Q&oc-#xxboU8KSNdT*1TT~1n zXBogWBast6AU0y}i??ng8K=y0|H9s`umS@iAV&@or^=hZ-~ebZr29>H3Cwq5P}!1B zdXxp7UfM2Gx>F-YEpCG{vD;$$i6Qg|KxQd816OWwaTj@`Phb1-vw_Zoj*gCL`by+) zKP4X9OU#3G;n%T>TUO4S%e|z@WxD?p&IZ-R3;Sbp1`@`$(%`#w0-9AwRJKdJsmbWd zr*K<{_E?yU#A!2}S8Q2zE3Sl!JN^ciwa09)5kKh2TlZ=c?*p?4SUPF0GDSDDvtGS= zCCw!F-l#)0z}V#^4-Xqa^mhhALaAMaplY0$EfaMb_hV|#_#hWGQ_f4?DAZhWQU(Ev z>0a0=(Y5}uJYsVz&UbU=QhFE6K-mYrmrnN?mA?82%FBOY(hvaj{dY~8)b;MV6}bdQ zm!dJ`8-wg)5x3vi#2=u`(Nkh=hGFf2Umff-T{y+7s;p$q8eCk>5jvBetho= zCwduMOe_s9@jMRFvDTn<@k5UF>%^e$L0+ou*wFC(t<*{sbc4{GwV3wFHJJ$L`DOIk)rr5Ma5$^|D0auxE7BZVh68s5X8Ayxq7k(=CM_ z+V{PS>?pVc8Y@LCTWoYX>mY0aP5jd+^vjfIg<7zTjn|li!A+B?1XFLm6Y&CP+8s9m zDDHq!3;|8x$l>7gK4hOr5W=1!=F5vH~|l}9dZs}Ep7pm;T_969Lw>TJz&I*_-6S+!vxD{-Uac- ziXv|hbWnO7_Nz~jdw02Z$tCjcN+`!AY-G~bD_H12>B^o5PB-+^qn&TKsJ9gG@b&1GeR$QU{x#{r&NxUbH zNc-&0jZktU49%|EU_CMIoM*SEKA*_?*@AnK$Eh#%AhD$@SP5-d&}gxK1w7kC0eG#q zW-p0TAi(1+Q+b>6q|FRNHwjB|I?J3jAZ5=UrjY!=Nx{?xP2rGvST}ku6I(UfqS((# xW`e=22TOH7(;2P4AUidTZdv%V{J%0Gs3?JOWaGIUq7uCTO*K8$lAE@V{uc!4Co=#5 literal 45978 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 R5cn0KuWPJRal`)EzX1_IqlEwf From 1050716d724129a252a2195c8e5be0374ecb8d23 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sat, 27 Jan 2024 03:54:33 -0600 Subject: [PATCH 012/150] Automatic changelog generation for PR #2668 [ci skip] --- html/changelogs/AutoChangeLog-pr-2668.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2668.yml diff --git a/html/changelogs/AutoChangeLog-pr-2668.yml b/html/changelogs/AutoChangeLog-pr-2668.yml new file mode 100644 index 00000000000..8b719168401 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2668.yml @@ -0,0 +1,4 @@ +author: Fest1v3 +changes: + - {imageadd: Added vox sprites & a tailhold icon.} +delete-after: true From 7d193fc3d239aec5091e98b664b2e2076b8a5d14 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sun, 28 Jan 2024 00:50:30 +0000 Subject: [PATCH 013/150] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-2668.yml | 4 ---- html/changelogs/AutoChangeLog-pr-2672.yml | 4 ---- html/changelogs/archive/2024-01.yml | 5 +++++ 3 files changed, 5 insertions(+), 8 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-2668.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2672.yml diff --git a/html/changelogs/AutoChangeLog-pr-2668.yml b/html/changelogs/AutoChangeLog-pr-2668.yml deleted file mode 100644 index 8b719168401..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2668.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Fest1v3 -changes: - - {imageadd: Added vox sprites & a tailhold icon.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-2672.yml b/html/changelogs/AutoChangeLog-pr-2672.yml deleted file mode 100644 index 88151cbed8c..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2672.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Skies-Of-Blue -changes: - - {balance: planetary chem bees have been replaced with the garden variety} -delete-after: true diff --git a/html/changelogs/archive/2024-01.yml b/html/changelogs/archive/2024-01.yml index 9ee67f626bd..bdd50c40a64 100644 --- a/html/changelogs/archive/2024-01.yml +++ b/html/changelogs/archive/2024-01.yml @@ -68,3 +68,8 @@ SomeguyManperson: - bugfix: you can no longer lock yourself out of the icemoon dragon lair by killing the dragon with a crusher +2024-01-28: + Fest1v3: + - imageadd: Added vox sprites & a tailhold icon. + Skies-Of-Blue: + - balance: planetary chem bees have been replaced with the garden variety From dada3c6c1f417089ba3012d01eb1b23824fa2bbf Mon Sep 17 00:00:00 2001 From: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> Date: Mon, 29 Jan 2024 15:21:54 -0600 Subject: [PATCH 014/150] Syndi suit balance (#2600) ## About The Pull Request Reverts an unintended buff to some ruins with syndicate hard suits and makes them the lesser hard suit again Cleans up some redundant code Fixes the description for the Ramzi Clique hardsuit Kills the owl suit cause he looked at my funny (and also cruft) ## Why It's Good For The Game Blood red hard suit should mostly be reserved for its faction. ## Changelog :cl: balance: reverts some blood red hard suits back to ramzi /:cl: --- .../RandomRuins/JungleRuins/jungle_demon.dmm | 2 +- .../whitesands_surface_starfurycrash.dmm | 2 +- _maps/RandomRuins/SpaceRuins/onehalf.dmm | 2 +- code/modules/clothing/spacesuits/hardsuit.dm | 39 ++----------------- 4 files changed, 7 insertions(+), 38 deletions(-) diff --git a/_maps/RandomRuins/JungleRuins/jungle_demon.dmm b/_maps/RandomRuins/JungleRuins/jungle_demon.dmm index adbb037af38..523c618d224 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_demon.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_demon.dmm @@ -515,7 +515,7 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/suit_storage_unit/inherit, /obj/item/tank/internals/oxygen/red, -/obj/item/clothing/suit/space/hardsuit/syndi, +/obj/item/clothing/suit/space/hardsuit/syndi/ramzi, /obj/item/clothing/mask/gas/syndicate, /turf/open/floor/plasteel/dark, /area/ruin/powered) diff --git a/_maps/RandomRuins/SandRuins/whitesands_surface_starfurycrash.dmm b/_maps/RandomRuins/SandRuins/whitesands_surface_starfurycrash.dmm index 00a0e830f8c..bc861602805 100644 --- a/_maps/RandomRuins/SandRuins/whitesands_surface_starfurycrash.dmm +++ b/_maps/RandomRuins/SandRuins/whitesands_surface_starfurycrash.dmm @@ -637,7 +637,7 @@ /area/overmap_encounter/planetoid/cave/explored) "KT" = ( /obj/structure/safe/floor, -/obj/item/clothing/suit/space/hardsuit/syndi, +/obj/item/clothing/suit/space/hardsuit/syndi/ramzi, /obj/item/documents/syndicate, /turf/open/floor/plating{ icon_state = "panelscorched"; diff --git a/_maps/RandomRuins/SpaceRuins/onehalf.dmm b/_maps/RandomRuins/SpaceRuins/onehalf.dmm index d613f4bcf8f..ed19285b586 100644 --- a/_maps/RandomRuins/SpaceRuins/onehalf.dmm +++ b/_maps/RandomRuins/SpaceRuins/onehalf.dmm @@ -920,7 +920,7 @@ /obj/structure/safe/floor, /obj/item/tank/internals/oxygen/red, /obj/item/clothing/mask/gas/syndicate, -/obj/item/clothing/suit/space/hardsuit/syndi, +/obj/item/clothing/suit/space/hardsuit/syndi/ramzi, /obj/item/reagent_containers/food/drinks/bottle/rum, /obj/item/reagent_containers/food/drinks/bottle/rum, /obj/item/folder/syndicate/mining, diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index aa153b233c4..517a51982e7 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -423,8 +423,8 @@ //Ramzi Syndie suit /obj/item/clothing/head/helmet/space/hardsuit/syndi/ramzi name = "rusted-red hardsuit helmet" - desc = "A beat-up standardized dual-mode helmet derived from more advanced special operations helmets, its red rusted into a dirty brown. It is in EVA mode. Manufactured by Gorlex Marauders." - alt_desc = "A beat-up standardized dual-mode helmet derived from more advanced special operations helmets, its red rusted into a dirty brown. It is in combat mode. Manufactured by Gorlex Marauders." + desc = "A beat-up standardized dual-mode helmet derived from more advanced special operations helmets, its red rusted into a dirty brown. It is in EVA mode. Manufactured by Ramzi Clique." + alt_desc = "A beat-up standardized dual-mode helmet derived from more advanced special operations helmets, its red rusted into a dirty brown. It is in combat mode. Manufactured by Ramzi Clique." icon_state = "hardsuit1-ramzi" item_state = "hardsuit1-ramzi" hardsuit_type = "ramzi" @@ -432,8 +432,8 @@ /obj/item/clothing/suit/space/hardsuit/syndi/ramzi name = "rusted-red hardsuit" - desc = "A beat-up standardized dual-mode hardsuit derived from more advanced special operations hardsuits, its red rusted into a dirty brown. It is in EVA mode. Manufactured by Gorlex Marauders." - alt_desc = "A beat-up standardized dual-mode hardsuit derived from more advanced special operations hardsuits, its red rusted into a dirty brown. It is in combat mode. Manufactured by Gorlex Marauders." + desc = "A beat-up standardized dual-mode hardsuit derived from more advanced special operations hardsuits, its red rusted into a dirty brown. It is in EVA mode. Manufactured by Ramzi Clique." + alt_desc = "A beat-up standardized dual-mode hardsuit derived from more advanced special operations hardsuits, its red rusted into a dirty brown. It is in combat mode. Manufactured by Ramzi Clique." icon_state = "hardsuit1-ramzi" item_state = "hardsuit1-ramzi" hardsuit_type = "ramzi" @@ -452,7 +452,6 @@ icon_state = "hardsuit1-sbg" item_state = "hardsuit1-sbg" hardsuit_type = "sbg" - armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 90) /obj/item/clothing/suit/space/hardsuit/syndi/sbg name = "beige-red hardsuit" @@ -464,10 +463,6 @@ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/sbg lightweight = 1 jetpack = null - armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 90) - combat_slowdown = 0 - jetpack = null - //Hardliner Syndie suit /obj/item/clothing/head/helmet/space/hardsuit/syndi/hl @@ -477,7 +472,6 @@ icon_state = "hardsuit1-hl" item_state = "hardsuit1-hl" hardsuit_type = "hl" - armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 90) /obj/item/clothing/suit/space/hardsuit/syndi/hl name = "white-red hardsuit" @@ -489,9 +483,6 @@ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/hl lightweight = 1 jetpack = null - armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 90) - combat_slowdown = 0 - jetpack = null //Elite Syndie suit @@ -530,28 +521,6 @@ /obj/item/clothing/suit/space/hardsuit/syndi/elite/debug helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite/debug -//The Owl Hardsuit -/obj/item/clothing/head/helmet/space/hardsuit/syndi/owl - name = "owl hardsuit helmet" - desc = "A dual-mode advanced helmet designed for any crime-fighting situation. It is in travel mode." - alt_desc = "A dual-mode advanced helmet designed for any crime-fighting situation. It is in combat mode." - icon_state = "hardsuit0-owl" - item_state = "s_helmet" - hardsuit_type = "owl" - visor_flags_inv = 0 - visor_flags = 0 - on = FALSE - full_retraction = TRUE - -/obj/item/clothing/suit/space/hardsuit/syndi/owl - name = "owl hardsuit" - desc = "A dual-mode advanced hardsuit designed for any crime-fighting situation. It is in travel mode." - alt_desc = "A dual-mode advanced hardsuit designed for any crime-fighting situation. It is in combat mode." - icon_state = "hardsuit1-owl" - item_state = "s_suit" - hardsuit_type = "owl" - helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/owl - //Cybersun Hardsuit /obj/item/clothing/suit/space/hardsuit/syndi/cybersun name = "neutron-star combat hardsuit" From 449dfa806b08e2b3b64595a31de50547d8110d60 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Mon, 29 Jan 2024 15:35:17 -0600 Subject: [PATCH 015/150] Automatic changelog generation for PR #2600 [ci skip] --- html/changelogs/AutoChangeLog-pr-2600.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2600.yml diff --git a/html/changelogs/AutoChangeLog-pr-2600.yml b/html/changelogs/AutoChangeLog-pr-2600.yml new file mode 100644 index 00000000000..87f8cfbab00 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2600.yml @@ -0,0 +1,4 @@ +author: FalloutFalcon +changes: + - {balance: reverts some blood red hard suits back to ramzi} +delete-after: true From 86d819395fefac976aff483de486b6b6f489ffee Mon Sep 17 00:00:00 2001 From: goober3 <118859017+goober3@users.noreply.github.com> Date: Mon, 29 Jan 2024 21:34:39 +0000 Subject: [PATCH 016/150] Mudskipper Tweaks (#2355) ## About The Pull Request some little fixes. ## Why It's Good For The Game yeah it's some little tweaks and fixes. ## Changelog :cl: tweak: Added more light switches to the Mudskipper. fix: The Mudskipper bridge now has proper access applied. /:cl: Co-authored-by: spockye <79304582+spockye@users.noreply.github.com> Co-authored-by: meem <75212565+meemofcourse@users.noreply.github.com> --- _maps/shuttles/independent/independent_mudskipper.dmm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/_maps/shuttles/independent/independent_mudskipper.dmm b/_maps/shuttles/independent/independent_mudskipper.dmm index 4c67eadac91..e3ff8985e3d 100644 --- a/_maps/shuttles/independent/independent_mudskipper.dmm +++ b/_maps/shuttles/independent/independent_mudskipper.dmm @@ -171,6 +171,10 @@ dir = 8 }, /obj/effect/turf_decal/corner/transparent/neutral, +/obj/machinery/light_switch{ + pixel_y = 23; + pixel_x = -3 + }, /turf/open/floor/plasteel/dark, /area/ship/bridge) "dQ" = ( @@ -970,7 +974,7 @@ "uW" = ( /obj/machinery/door/airlock/grunge{ name = "Bridge"; - req_one_access_txt = "7" + req_one_access_txt = "20" }, /obj/effect/turf_decal/industrial/warning, /obj/effect/turf_decal/industrial/warning{ @@ -1058,6 +1062,11 @@ /obj/structure/dresser, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 22; + pixel_y = -6 + }, /turf/open/floor/wood/walnut{ icon_state = "wood-broken7" }, From 2ba968553b2df6db7dcf3062a626044e6fa0a61b Mon Sep 17 00:00:00 2001 From: Changelogs Date: Mon, 29 Jan 2024 15:52:17 -0600 Subject: [PATCH 017/150] Automatic changelog generation for PR #2355 [ci skip] --- html/changelogs/AutoChangeLog-pr-2355.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2355.yml diff --git a/html/changelogs/AutoChangeLog-pr-2355.yml b/html/changelogs/AutoChangeLog-pr-2355.yml new file mode 100644 index 00000000000..2b815500475 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2355.yml @@ -0,0 +1,5 @@ +author: goober3 +changes: + - {tweak: Added more light switches to the Mudskipper.} + - {bugfix: The Mudskipper bridge now has proper access applied.} +delete-after: true From d41cb1f70da3f416bae6ed687c992aecc761a3dc Mon Sep 17 00:00:00 2001 From: Moon <64121399+MoonTheBird@users.noreply.github.com> Date: Mon, 29 Jan 2024 15:27:31 -0700 Subject: [PATCH 018/150] Poster Printer (#2557) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## About The Pull Request Adds poster printers. Currently unmapped, so there's no way to get them at the moment, and I recommend one gets added to the outpost. HOW TO USE: get a sheet of paper and a printer ![image](https://github.com/shiptest-ss13/Shiptest/assets/64121399/44bf348e-3971-4bba-8f90-8166ca893ece) put the paper in the printer ![image](https://github.com/shiptest-ss13/Shiptest/assets/64121399/7b157f7d-35f0-4d7b-a3aa-1a66c734c75b) click on the printer and select the kind of poster you want to print ![image](https://github.com/shiptest-ss13/Shiptest/assets/64121399/ecab5df3-9536-464b-a0db-b3dc4ae49320) print the poster, and then remove it ![image](https://github.com/shiptest-ss13/Shiptest/assets/64121399/b59950ab-a68a-4fd2-921b-f0baeeb0f0f0) tada! free* poster! ![image](https://github.com/shiptest-ss13/Shiptest/assets/64121399/ba917741-2b3a-494a-923f-bee6aec7ea5a) *actually uses some toner with each use, as well as a sheet of paper ## Why It's Good For The Game A lot of people were complaining about how there's no easy way to get posters at the moment, so I made a convenient printing device. ## Changelog 🆑 add: Added a poster printer. Please map this later, I didn't want to mess with mapping for now so /🆑 --------- Signed-off-by: Moon <64121399+MoonTheBird@users.noreply.github.com> Signed-off-by: meem <75212565+meemofcourse@users.noreply.github.com> Co-authored-by: meem <75212565+meemofcourse@users.noreply.github.com> --- .../circuitboards/machine_circuitboards.dm | 9 + code/game/objects/structures/printer.dm | 185 ++++++++++++++++++ code/modules/library/lib_machines.dm | 7 - icons/obj/printer.dmi | Bin 0 -> 1003 bytes shiptest.dme | 1 + .../packages/tgui/interfaces/PosterPrinter.js | 126 ++++++++++++ 6 files changed, 321 insertions(+), 7 deletions(-) create mode 100644 code/game/objects/structures/printer.dm create mode 100644 icons/obj/printer.dmi create mode 100644 tgui/packages/tgui/interfaces/PosterPrinter.js diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index faa366f893b..7056c7a38d9 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -1496,6 +1496,15 @@ /obj/item/stock_parts/capacitor = 2 ) +/obj/item/circuitboard/machine/printer + name = "Poster Printer (Machine Board)" + build_path = /obj/machinery/printer + req_components = list( + /obj/item/stock_parts/scanning_module = 2, + /obj/item/stock_parts/micro_laser = 1, + /obj/item/stock_parts/manipulator = 2, + ) + /obj/item/circuitboard/machine/coffeemaker name = "Modello 3 Coffeemaker" build_path = /obj/machinery/coffeemaker diff --git a/code/game/objects/structures/printer.dm b/code/game/objects/structures/printer.dm new file mode 100644 index 00000000000..c4c1abea9cf --- /dev/null +++ b/code/game/objects/structures/printer.dm @@ -0,0 +1,185 @@ +/obj/machinery/printer + name = "poster printer" + desc = "Used to print out various posters using toner cartridges." + icon = 'icons/obj/printer.dmi' + icon_state = "printer" + density = TRUE + power_channel = AREA_USAGE_EQUIP + max_integrity = 100 + pass_flags = PASSTABLE + circuit = /obj/item/circuitboard/machine/printer + var/busy = FALSE + var/datum/weakref/loaded_item_ref + var/datum/weakref/printed_poster + var/obj/item/toner/toner_cartridge + var/poster_type + +/obj/machinery/printer/Initialize() + . = ..() + toner_cartridge = new(src) + +/obj/machinery/printer/update_overlays() + . = ..() + if(panel_open) + . += mutable_appearance(icon, "printer_panel") + var/obj/item/loaded = loaded_item_ref?.resolve() + var/obj/item/poster = printed_poster?.resolve() + if(loaded) + . += mutable_appearance(icon, "contain_paper") + if(poster) + . += mutable_appearance(icon, "contain_poster") + +/obj/machinery/printer/screwdriver_act(mob/living/user, obj/item/screwdriver) + . = ..() + default_deconstruction_screwdriver(user, icon_state, icon_state, screwdriver) + update_icon() + return TRUE + +/obj/machinery/printer/Destroy() + QDEL_NULL(toner_cartridge) + QDEL_NULL(loaded_item_ref) + QDEL_NULL(printed_poster) + return ..() + +/obj/machinery/printer/attackby(obj/item/item, mob/user, params) + if(panel_open) + if(is_wire_tool(item)) + wires.interact(user) + return + if(can_load_item(item)) + if(!loaded_item_ref?.resolve()) + loaded_item_ref = WEAKREF(item) + item.forceMove(src) + update_icon() + return + else if(istype(item, /obj/item/toner)) + if(toner_cartridge) + to_chat(user, "[src] already has a toner cartridge inserted. Remove that one first.") + return + item.forceMove(src) + toner_cartridge = item + to_chat(user, "You insert [item] into [src].") + else return ..() + +/obj/machinery/printer/proc/can_load_item(obj/item/item) + if(busy) + return FALSE //no loading the printer if there's already a print job happening! + if(!istype(item, /obj/item/paper)) + return FALSE + if(!istype(item, /obj/item/stack)) + return TRUE + var/obj/item/stack/stack_item = item + return stack_item.amount == 1 + +/obj/machinery/printer/ui_data(mob/user) + var/list/data = list() + data["has_paper"] = !!loaded_item_ref?.resolve() + data["has_poster"] = !!printed_poster?.resolve() + + if(toner_cartridge) + data["has_toner"] = TRUE + data["current_toner"] = toner_cartridge.charges + data["max_toner"] = toner_cartridge.max_charges + data["has_enough_toner"] = has_enough_toner() + else + data["has_toner"] = FALSE + data["has_enough_toner"] = FALSE + + return data + +/obj/machinery/printer/proc/has_enough_toner() + return toner_cartridge.charges >= 1 + +/obj/machinery/printer/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "PosterPrinter") + ui.open() + +/obj/machinery/printer/ui_act(action, list/params) + . = ..() + if(.) + return + var/obj/item/poster = printed_poster?.resolve() + var/obj/item/loaded = loaded_item_ref?.resolve() + switch(action) + if("remove") + if(!loaded) + return + loaded.forceMove(drop_location()) + loaded_item_ref = null + update_icon() + return TRUE + if("remove_poster") + if(!poster) + to_chat(usr, span_warning("No poster! waddaheeeeell")) + return + if(busy) + to_chat(usr, span_warning("[src] is still printing your poster! Please wait until it is finished.")) + return FALSE + poster.forceMove(drop_location()) + printed_poster = null + update_icon() + return TRUE + if("choose_type") + poster_type = params["poster_type"] + return TRUE + if("print") + if(busy) + to_chat(usr, span_warning("[src] is currently busy printing a poster. Please wait until it is finished.")) + return FALSE + if(toner_cartridge.charges - 1 < 0) + to_chat(usr, span_warning("There is not enough toner in [src] to print the poster, please replace the cartridge.")) + return FALSE + if(!loaded) + to_chat(usr, span_warning("[src] has no paper in it! Please insert a sheet of paper.")) + return FALSE + if(!poster_type) + to_chat(usr, span_warning("[src] has no poster type selected! Please select a type first!")) + return FALSE + if(poster) + to_chat(usr, span_warning("[src] ejects its current poster before printing a new one.")) + poster.forceMove(drop_location()) + printed_poster = null + update_icon() + print_poster() + return TRUE + if("remove_toner") + if(issilicon(usr) || (ishuman(usr) && !usr.put_in_hands(toner_cartridge))) + toner_cartridge.forceMove(drop_location()) + toner_cartridge = null + return TRUE + +/obj/machinery/printer/proc/print_poster() + busy = TRUE + loaded_item_ref = null + playsound(src, 'sound/items/poster_being_created.ogg', 20, FALSE) + toner_cartridge.charges -= 1 + icon_state = "print" + var/mutable_appearance/overlay = mutable_appearance(icon, "print_poster") + overlays += overlay + update_icon() + addtimer(CALLBACK(src, PROC_REF(print_complete), overlay), 2.6 SECONDS) + +/obj/machinery/printer/proc/print_complete(mutable_appearance/remove_overlay) + icon_state = "printer" + overlays -= remove_overlay + switch(poster_type) + if("Syndicate") + var/obj/item/poster/random_contraband/poster = new() + printed_poster = WEAKREF(poster) + if("SolGov") + var/obj/item/poster/random_solgov/poster = new() + printed_poster = WEAKREF(poster) + if("Nanotrasen") + var/obj/item/poster/random_official/poster = new() + printed_poster = WEAKREF(poster) + if("RILENA") + var/obj/item/poster/random_rilena/poster = new() + printed_poster = WEAKREF(poster) + if("Nanotrasen (Retro)") + var/obj/item/poster/random_retro/poster = new() + printed_poster = WEAKREF(poster) + update_icon() + busy = FALSE + poster_type = null diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index c8265205cac..71de02b3ca1 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -341,7 +341,6 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums dat += "

NTGanda(tm) Universal Printing Module

" dat += "What would you like to print?
" dat += "
\[Bible\]
" - dat += "\[Poster\]
" dat += "(Return to main menu)
" if(8) dat += "

Accessing Forbidden Lore Vault v 1.3

" @@ -524,12 +523,6 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums cooldown = world.time + PRINTER_COOLDOWN else say("Printer currently unavailable, please wait a moment.") - if(href_list["printposter"]) - if(cooldown < world.time) - new /obj/item/poster/random_official(src.loc) - cooldown = world.time + PRINTER_COOLDOWN - else - say("Printer currently unavailable, please wait a moment.") add_fingerprint(usr) updateUsrDialog() diff --git a/icons/obj/printer.dmi b/icons/obj/printer.dmi new file mode 100644 index 0000000000000000000000000000000000000000..6b0ea97e29f4fe321788460f499bb2ceff9f8d49 GIT binary patch literal 1003 zcmV005u}0{{R3yb+fl0000vP)t-sz`($- zudo0A|6XB$j*_dav%)<+R3xESP~}|>fKVeLGfglJ&)3=j000>o880s{5D*YbN=j8# zRRTHkY5)KL0d!JMQvg8b*k%9#0JwToSad{Xb7OL8aCB*JZU6vyoPCkO3c@f9hR@AY zlA{=S{Eh^$jyoeesu^9IEirocnSFOB|D!5JR5L@i-jdn>YRz<9`*eVWW(%K|&woWW~)?GYuuwpLAY17s7BR=(j zaABgGi6Q_10-Q-iK~#90?VQ_k!Y~X(X&sU#v;q46AKRqE#g;FMk!2UUhrYm0XO115 zA$r)|t`cvA++1Jq-N6@R@|_{%=Gua$+dFh7FIN}rJ3^nA*ATQXU`Q~TR}s9w3k#<5 z|1C%lC_SoNu8rA8FR*@OBD1=g+&%1aoyP zf%U3cf1Y44uPGS2#L2vZ;Ae!ZU^-XF`>98M^l^C|!QR6aOyrdWCju3W=amGF>F;;o z^&Jt6=amGPTk-w7WqvF7W(<+9O=CVCxyQcm&*f0b(#jZw-d%&EZPR zv~$)^*iWe5Zz%02RPQ&G_7kf28%pc{)awKPv>-iT^r&g)te>#H)>fwp?bfew4YGD-%#35Sg7AH{#+{UCoI%&7=N;t z_7fKBH{=8#? { + const { act, data } = useBackend(context); + const { has_paper, has_toner, has_poster } = data; + + return ( + + + {has_toner ? ( + + ) : ( +
+ No inserted toner cartridge. +
+ )} + {has_paper ? ( + + ) : ( +
+ No inserted paper. +
+ )} + {has_poster ? ( +
+ +
+ ) : ( +
+ No poster printed! +
+ )} +
+
+ ); +}; + +const Toner = (props, context) => { + const { act, data } = useBackend(context); + const { has_toner, max_toner, current_toner } = data; + + const average_toner = max_toner * 0.66; + const bad_toner = max_toner * 0.33; + + return ( +
act('remove_toner')} + icon="eject" + > + Eject + + } + > + +
+ ); +}; + +const Options = (props, context) => { + const { act, data } = useBackend(context); + const { has_toner, poster_type } = data; + + const posterTypes = [ + 'Syndicate', + 'Nanotrasen', + 'Nanotrasen (Retro)', + 'RILENA', + 'SolGov', + ]; + const selectedType = poster_type ?? 'No Poster Selected'; + + return ( +
+ + act('choose_type', { + poster_type: value, + }) + } + /> + + +
+ ); +}; From a8c38dfba528b080aeaf5687f10518eb6bb45f35 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 30 Jan 2024 00:47:14 +0000 Subject: [PATCH 019/150] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-2355.yml | 5 ----- html/changelogs/AutoChangeLog-pr-2600.yml | 4 ---- html/changelogs/archive/2024-01.yml | 6 ++++++ 3 files changed, 6 insertions(+), 9 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-2355.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2600.yml diff --git a/html/changelogs/AutoChangeLog-pr-2355.yml b/html/changelogs/AutoChangeLog-pr-2355.yml deleted file mode 100644 index 2b815500475..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2355.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: goober3 -changes: - - {tweak: Added more light switches to the Mudskipper.} - - {bugfix: The Mudskipper bridge now has proper access applied.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-2600.yml b/html/changelogs/AutoChangeLog-pr-2600.yml deleted file mode 100644 index 87f8cfbab00..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2600.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: FalloutFalcon -changes: - - {balance: reverts some blood red hard suits back to ramzi} -delete-after: true diff --git a/html/changelogs/archive/2024-01.yml b/html/changelogs/archive/2024-01.yml index bdd50c40a64..f2a29eb77d4 100644 --- a/html/changelogs/archive/2024-01.yml +++ b/html/changelogs/archive/2024-01.yml @@ -73,3 +73,9 @@ - imageadd: Added vox sprites & a tailhold icon. Skies-Of-Blue: - balance: planetary chem bees have been replaced with the garden variety +2024-01-30: + FalloutFalcon: + - balance: reverts some blood red hard suits back to ramzi + goober3: + - tweak: Added more light switches to the Mudskipper. + - bugfix: The Mudskipper bridge now has proper access applied. From 0ab62db4c77c3dd8818c7cb90ddb5ab7cc30ef74 Mon Sep 17 00:00:00 2001 From: Martinpachu <86135885+Martinpachu@users.noreply.github.com> Date: Thu, 1 Feb 2024 02:38:17 -0300 Subject: [PATCH 020/150] Updates shotgun ammo boxes in ships to the new version. (#2676) ## About The Pull Request Updates shotgun ammo boxes in ships to the new version. Hyena, Halftrack, Cepheus and Twinkleshine. ## Why It's Good For The Game The new version is a lot better to use and this probably overdue. ## Changelog :cl: fix: updated ship shotgun ammo boxes /:cl: --- .../independent/independent_halftrack.dmm | 20 +++++++++---------- .../shuttles/minutemen/minutemen_cepheus.dmm | 10 ++-------- .../syndicate/syndicate_gorlex_hyena.dmm | 2 +- .../syndicate/syndicate_twinkleshine.dmm | 6 +++--- 4 files changed, 16 insertions(+), 22 deletions(-) diff --git a/_maps/shuttles/independent/independent_halftrack.dmm b/_maps/shuttles/independent/independent_halftrack.dmm index f82d26ffd66..50988838c65 100644 --- a/_maps/shuttles/independent/independent_halftrack.dmm +++ b/_maps/shuttles/independent/independent_halftrack.dmm @@ -200,16 +200,16 @@ /obj/machinery/airalarm/directional/south, /obj/machinery/firealarm/directional/west, /obj/structure/closet/crate/secure/weapon, -/obj/item/storage/box/lethalshot, -/obj/item/storage/box/lethalshot, -/obj/item/storage/box/lethalshot, -/obj/item/storage/box/lethalshot, -/obj/item/storage/box/lethalshot, -/obj/item/storage/box/beanbag, -/obj/item/storage/box/beanbag, -/obj/item/storage/box/beanbag, -/obj/item/storage/box/beanbag, -/obj/item/storage/box/beanbag, +/obj/item/ammo_box/a12g, +/obj/item/ammo_box/a12g, +/obj/item/ammo_box/a12g, +/obj/item/ammo_box/a12g, +/obj/item/ammo_box/a12g, +/obj/item/ammo_box/a12g/beanbag, +/obj/item/ammo_box/a12g/beanbag, +/obj/item/ammo_box/a12g/beanbag, +/obj/item/ammo_box/a12g/beanbag, +/obj/item/ammo_box/a12g/beanbag, /obj/effect/turf_decal/box/red, /turf/open/floor/plasteel/dark, /area/ship/security) diff --git a/_maps/shuttles/minutemen/minutemen_cepheus.dmm b/_maps/shuttles/minutemen/minutemen_cepheus.dmm index 9686aff5303..0a77ee2ca4e 100644 --- a/_maps/shuttles/minutemen/minutemen_cepheus.dmm +++ b/_maps/shuttles/minutemen/minutemen_cepheus.dmm @@ -4108,15 +4108,9 @@ /obj/item/ammo_box/magazine/m45{ pixel_x = 6 }, -/obj/item/storage/box/rubbershot{ - pixel_x = 3; - pixel_y = -3 - }, +/obj/item/ammo_box/a12g/rubbershot, /obj/item/ammo_box/magazine/cm15_mag, -/obj/item/storage/box/rubbershot{ - pixel_x = 3; - pixel_y = -3 - }, +/obj/item/ammo_box/a12g/rubbershot, /turf/open/floor/plasteel/tech/grid, /area/ship/security) "RN" = ( diff --git a/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm b/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm index dae3f0a86b9..46bd016425f 100644 --- a/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm +++ b/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm @@ -300,7 +300,7 @@ /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/airalarm/directional/north, /obj/effect/turf_decal/industrial/outline, -/obj/item/storage/box/lethalshot, +/obj/item/ammo_box/a12g, /obj/item/ammo_box/c10mm, /turf/open/floor/mineral/plastitanium, /area/ship/security/armory) diff --git a/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm b/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm index 6c14c950377..7914b314998 100644 --- a/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm +++ b/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm @@ -3719,9 +3719,9 @@ /obj/item/ammo_casing/caseless/rocket, /obj/item/ammo_casing/caseless/rocket/hedp, /obj/item/ammo_casing/caseless/rocket/hedp, -/obj/item/storage/box/lethalshot, -/obj/item/storage/box/lethalshot, -/obj/item/storage/box/lethalshot, +/obj/item/ammo_box/a12g, +/obj/item/ammo_box/a12g, +/obj/item/ammo_box/a12g, /obj/item/gun/ballistic/rocketlauncher, /obj/item/gun/ballistic/automatic/ebr, /obj/item/gun/ballistic/automatic/ebr{ From 05bf997b5ab0896e239a738cac5f177d0bd2f4db Mon Sep 17 00:00:00 2001 From: Changelogs Date: Wed, 31 Jan 2024 23:52:26 -0600 Subject: [PATCH 021/150] Automatic changelog generation for PR #2676 [ci skip] --- html/changelogs/AutoChangeLog-pr-2676.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2676.yml diff --git a/html/changelogs/AutoChangeLog-pr-2676.yml b/html/changelogs/AutoChangeLog-pr-2676.yml new file mode 100644 index 00000000000..59fda4e6215 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2676.yml @@ -0,0 +1,4 @@ +author: Martinpachu +changes: + - {bugfix: updated ship shotgun ammo boxes} +delete-after: true From 9d329c914b00a2f6d7ca03eb7dddc46e82fc7985 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Fri, 2 Feb 2024 00:46:53 +0000 Subject: [PATCH 022/150] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-2676.yml | 4 ---- html/changelogs/archive/2024-02.yml | 3 +++ 2 files changed, 3 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-2676.yml create mode 100644 html/changelogs/archive/2024-02.yml diff --git a/html/changelogs/AutoChangeLog-pr-2676.yml b/html/changelogs/AutoChangeLog-pr-2676.yml deleted file mode 100644 index 59fda4e6215..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2676.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Martinpachu -changes: - - {bugfix: updated ship shotgun ammo boxes} -delete-after: true diff --git a/html/changelogs/archive/2024-02.yml b/html/changelogs/archive/2024-02.yml new file mode 100644 index 00000000000..855c28c0800 --- /dev/null +++ b/html/changelogs/archive/2024-02.yml @@ -0,0 +1,3 @@ +2024-02-02: + Martinpachu: + - bugfix: updated ship shotgun ammo boxes From 7ef9bda6706a773a5ac2446a3a24e45e99ab015e Mon Sep 17 00:00:00 2001 From: Theos Date: Fri, 2 Feb 2024 08:09:35 -0500 Subject: [PATCH 023/150] Adds co-op cigarette lighting (#2686) ## About The Pull Request If you have a cigarette equipped, and someone else has an un-lit cigarette equipped, you can light theirs via help intent+target mouth ![image](https://github.com/shiptest-ss13/Shiptest/assets/24857008/c1a352a4-5ae5-41e3-91c7-37780cbb8535) ## Why It's Good For The Game New co-op interaction ## Changelog :cl: add: If you are smoking a cigarette, you can light someone else's cigarette via help intent while targeting the mouth /:cl: --- code/modules/mob/living/carbon/carbon_defense.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index df9b5c22704..9b50d182772 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -391,6 +391,14 @@ if(M == src && check_self_for_injuries()) return + if(M.zone_selected == BODY_ZONE_PRECISE_MOUTH) + var/obj/item/clothing/mask/cigarette/theircig = wear_mask + var/obj/item/clothing/mask/cigarette/ourcig = M.wear_mask + if(istype(ourcig) && istype(theircig)) + if(ourcig.lit && !theircig.lit) + theircig.light(span_notice("[M] leans towards [src], lighting [p_their()] [theircig.name] with [M.p_their()] own.")) + return + if(body_position == LYING_DOWN) if(buckled) to_chat(M, "You need to unbuckle [src] first to do that!") From 197fb53ce9f5613a31d7ffde2b5bb6e8e0b39bc0 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Fri, 2 Feb 2024 07:24:02 -0600 Subject: [PATCH 024/150] Automatic changelog generation for PR #2686 [ci skip] --- html/changelogs/AutoChangeLog-pr-2686.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2686.yml diff --git a/html/changelogs/AutoChangeLog-pr-2686.yml b/html/changelogs/AutoChangeLog-pr-2686.yml new file mode 100644 index 00000000000..dbc6db844c3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2686.yml @@ -0,0 +1,5 @@ +author: SomeguyManperson +changes: + - {rscadd: "If you are smoking a cigarette, you can light someone else's cigarette + via help intent while targeting the mouth"} +delete-after: true From e19bc3b001d99c73939db40d466653ed4a01f728 Mon Sep 17 00:00:00 2001 From: GenericDM <34109002+GenericDM@users.noreply.github.com> Date: Fri, 2 Feb 2024 05:11:23 -0800 Subject: [PATCH 025/150] Kills Mutation Toxin (#2659) ## About The Pull Request Kills mutation toxin. Simple as. ## Why It's Good For The Game 1. Xenobio content. Ew. 2. I've only seen this used for griefing or accidentally. 3. Admins already have a dedicated species change button if need be. ## Changelog :cl: del: mutation toxin /:cl: --- .../carbon/human/species_types/spider.dm | 15 -- .../hostile/mining_mobs/hivelord.dm | 1 - .../chemistry/reagents/other_reagents.dm | 223 ------------------ .../reagents/chemistry/recipes/others.dm | 6 - .../chemistry/recipes/slime_extracts.dm | 4 +- .../reagents/reagent_containers/pill.dm | 8 - code/modules/research/experimentor.dm | 2 +- .../xenobiology/crossbreeding/regenerative.dm | 2 - 8 files changed, 3 insertions(+), 258 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species_types/spider.dm b/code/modules/mob/living/carbon/human/species_types/spider.dm index f7ae4f6bef1..e93ef5baaea 100644 --- a/code/modules/mob/living/carbon/human/species_types/spider.dm +++ b/code/modules/mob/living/carbon/human/species_types/spider.dm @@ -228,18 +228,3 @@ GLOBAL_LIST_INIT(spider_last, world.file2list("strings/names/spider_last.txt")) A.forceMove(C) H.visible_message("[H] wraps [A] into a cocoon!") return - -/datum/reagent/mutationtoxin/arachnid - name = "Arachnid Mutation Toxin" - description = "A glowing toxin." - color = "#5EFF3B" //RGB: 94, 255, 59 - race = /datum/species/spider - process_flags = ORGANIC | SYNTHETIC //WS Edit - IPCs - taste_description = "silk" - -/datum/chemical_reaction/mutationtoxin/arachnid - results = list(/datum/reagent/mutationtoxin/arachnid = 1) - required_reagents = list( - /datum/reagent/mutationtoxin/unstable = 1, - /datum/reagent/toxin/heparin = 10 - ) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm index 474c9c5d9ca..087c538a8c3 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm @@ -885,7 +885,6 @@ ) if("Shadow") mob_species = /datum/species/shadow - r_pocket = /obj/item/reagent_containers/pill/shadowtoxin neck = /obj/item/clothing/accessory/medal/plasma/nobel_science uniform = /obj/item/clothing/under/color/black shoes = /obj/item/clothing/shoes/sneakers/black diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 05d91f17fe4..d727cbfd0fa 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -505,221 +505,6 @@ ..() return -#define MUT_MSG_IMMEDIATE 1 -#define MUT_MSG_EXTENDED 2 -#define MUT_MSG_ABOUT2TURN 3 - -/datum/reagent/mutationtoxin - name = "Stable Mutation Toxin" - description = "A humanizing toxin." - color = "#5EFF3B" //RGB: 94, 255, 59 - metabolization_rate = 0.2 //metabolizes to prevent micro-dosage - taste_description = "slime" - var/race = /datum/species/human - var/list/mutationtexts = list( "You don't feel very well." = MUT_MSG_IMMEDIATE, - "Your skin feels a bit abnormal." = MUT_MSG_IMMEDIATE, - "Your limbs begin to take on a different shape." = MUT_MSG_EXTENDED, - "Your appendages begin morphing." = MUT_MSG_EXTENDED, - "You feel as though you're about to change at any moment!" = MUT_MSG_ABOUT2TURN) - var/cycles_to_turn = 20 //the current_cycle threshold / iterations needed before one can transform - process_flags = ORGANIC | SYNTHETIC //WS Edit - IPCs - -/datum/reagent/mutationtoxin/on_mob_life(mob/living/carbon/human/H) - . = TRUE - if(!istype(H)) - return - if(!(H.dna?.species) || !(H.mob_biotypes & MOB_ORGANIC)) - return - var/datum/species/mutation = pick(race) //I honestly feel extremely uncomfortable. I do not like the fact that this works. - var/current_species = H.dna.species.type - if(mutation && mutation != current_species) - H.set_species(mutation) - else - to_chat(H, "The pain vanishes suddenly. You feel no different.") - H.reagents.del_reagent(type) - - if(prob(10)) - var/list/pick_ur_fav = list() - var/filter = NONE - if(current_cycle <= (cycles_to_turn*0.3)) - filter = MUT_MSG_IMMEDIATE - else if(current_cycle <= (cycles_to_turn*0.8)) - filter = MUT_MSG_EXTENDED - else - filter = MUT_MSG_ABOUT2TURN - - for(var/i in mutationtexts) - if(mutationtexts[i] == filter) - pick_ur_fav += i - to_chat(H, "[pick(pick_ur_fav)]") - - if(current_cycle >= cycles_to_turn) - var/datum/species/species_type = race - H.set_species(species_type) - H.reagents.del_reagent(type) - to_chat(H, "You've become \a [lowertext(initial(species_type.name))]!") - ..() - -/datum/reagent/mutationtoxin/classic //The one from plasma on green slimes - name = "Mutation Toxin" - description = "A corruptive toxin." - color = "#13BC5E" // rgb: 19, 188, 94 - race = /datum/species/jelly/slime - process_flags = ORGANIC | SYNTHETIC //WS Edit - IPCs - -/datum/reagent/mutationtoxin/unstable - name = "Unstable Mutation Toxin" - description = "A mostly safe mutation toxin." - color = "#13BC5E" // rgb: 19, 188, 94 - race = list(/datum/species/jelly/slime, - /datum/species/human, - /datum/species/lizard, - /datum/species/fly, - /datum/species/moth, - /datum/species/pod, - /datum/species/jelly, - /datum/species/abductor - ) - process_flags = ORGANIC | SYNTHETIC - -/datum/reagent/mutationtoxin/lizard - name = "Sarathi Mutation Toxin" - description = "A lizarding toxin." - color = "#5EFF3B" //RGB: 94, 255, 59 - race = /datum/species/lizard - process_flags = ORGANIC | SYNTHETIC //WS Edit - IPCs - taste_description = "dragon's breath but not as cool" - -/datum/reagent/mutationtoxin/fly - name = "Fly Mutation Toxin" - description = "An insectifying toxin." - color = "#5EFF3B" //RGB: 94, 255, 59 - race = /datum/species/fly - process_flags = ORGANIC | SYNTHETIC //WS Edit - IPCs - taste_description = "trash" - -/datum/reagent/mutationtoxin/moth - name = "Moth Mutation Toxin" - description = "A glowing toxin." - color = "#5EFF3B" //RGB: 94, 255, 59 - race = /datum/species/moth - process_flags = ORGANIC | SYNTHETIC //WS Edit - IPCs - taste_description = "clothing" - -/datum/reagent/mutationtoxin/pod - name = "Podperson Mutation Toxin" - description = "A vegetalizing toxin." - color = "#5EFF3B" //RGB: 94, 255, 59 - race = /datum/species/pod - process_flags = ORGANIC | SYNTHETIC //WS Edit - IPCs - taste_description = "flowers" - -/datum/reagent/mutationtoxin/jelly - name = "Imperfect Mutation Toxin" - description = "A jellyfying toxin." - color = "#5EFF3B" //RGB: 94, 255, 59 - race = /datum/species/jelly - process_flags = ORGANIC | SYNTHETIC //WS Edit - IPCs - taste_description = "grandma's gelatin" - -/datum/reagent/mutationtoxin/jelly/on_mob_life(mob/living/carbon/human/H) - if(isjellyperson(H)) - to_chat(H, "Your jelly shifts and morphs, turning you into another subspecies!") - var/species_type = pick(subtypesof(/datum/species/jelly)) - H.set_species(species_type) - H.reagents.del_reagent(type) - return TRUE - if(current_cycle >= cycles_to_turn) //overwrite since we want subtypes of jelly - var/datum/species/species_type = pick(subtypesof(race)) - H.set_species(species_type) - H.reagents.del_reagent(type) - to_chat(H, "You've become \a [initial(species_type.name)]!") - return TRUE - return ..() - -/datum/reagent/mutationtoxin/abductor - name = "Abductor Mutation Toxin" - description = "An alien toxin." - color = "#5EFF3B" //RGB: 94, 255, 59 - race = /datum/species/abductor - process_flags = ORGANIC | SYNTHETIC //WS Edit - IPCs - taste_description = "something out of this world... no, universe!" - -/datum/reagent/mutationtoxin/android - name = "Android Mutation Toxin" - description = "A robotic toxin." - color = "#5EFF3B" //RGB: 94, 255, 59 - race = /datum/species/android - process_flags = ORGANIC | SYNTHETIC //WS Edit - IPCs - taste_description = "circuitry and steel" - -/datum/reagent/mutationtoxin/ipc - name = "IPC Mutation Toxin" - description = "An integrated positronic toxin." - color = "#5EFF3B" //RGB: 94, 255, 59 - race = /datum/species/ipc - process_flags = ORGANIC | SYNTHETIC - -/datum/reagent/mutationtoxin/kepi //crying - name = "Kepori Mutation Toxin" - description = "A feathery toxin." - race = /datum/species/kepori - process_flags = ORGANIC | SYNTHETIC - taste_description = "a familiar white meat" - -//BLACKLISTED RACES -/datum/reagent/mutationtoxin/skeleton - name = "Skeleton Mutation Toxin" - description = "A scary toxin." - color = "#5EFF3B" //RGB: 94, 255, 59 - race = /datum/species/skeleton - process_flags = ORGANIC | SYNTHETIC //WS Edit - IPCs - taste_description = "milk... and lots of it" - -/datum/reagent/mutationtoxin/zombie - name = "Zombie Mutation Toxin" - description = "An undead toxin." - color = "#5EFF3B" //RGB: 94, 255, 59 - race = /datum/species/zombie //Not the infectious kind. The days of xenobio zombie outbreaks are long past. - process_flags = ORGANIC | SYNTHETIC //WS Edit - IPCs - taste_description = "brai...nothing in particular" - -/datum/reagent/mutationtoxin/goofzombie - name = "Krokodil Zombie Mutation Toxin" - description = "An undead toxin... kinda..." - color = "#5EFF3B" //RGB: 94, 255, 59 - race = /datum/species/human/krokodil_addict //Not the infectious kind. The days of xenobio zombie outbreaks are long past. - process_flags = ORGANIC | SYNTHETIC - -/datum/reagent/mutationtoxin/ash - name = "Ash Mutation Toxin" - description = "An ashen toxin." - color = "#5EFF3B" //RGB: 94, 255, 59 - race = /datum/species/lizard/ashwalker - process_flags = ORGANIC | SYNTHETIC //WS Edit - IPCs - taste_description = "savagery" - -//DANGEROUS RACES -/datum/reagent/mutationtoxin/shadow - name = "Shadow Mutation Toxin" - description = "A dark toxin." - color = "#5EFF3B" //RGB: 94, 255, 59 - race = /datum/species/shadow - process_flags = ORGANIC | SYNTHETIC //WS Edit - IPCs - taste_description = "the night" - -/datum/reagent/mutationtoxin/plasma - name = "Plasma Mutation Toxin" - description = "A plasma-based toxin." - color = "#5EFF3B" //RGB: 94, 255, 59 - race = /datum/species/plasmaman - process_flags = ORGANIC | SYNTHETIC //WS Edit - IPCs - taste_description = "plasma" - -#undef MUT_MSG_IMMEDIATE -#undef MUT_MSG_EXTENDED -#undef MUT_MSG_ABOUT2TURN - /datum/reagent/mulligan name = "Mulligan Toxin" description = "This toxin will rapidly change the DNA of human beings. Commonly used by Syndicate spies and assassins in need of an emergency ID change." @@ -2765,14 +2550,6 @@ if(prob(min(current_cycle/4, 10))) M.adjustOrganLoss(ORGAN_SLOT_STOMACH,3*REM) -/datum/reagent/mutationtoxin/kobold - name = "Kobold Mutation Toxin" - description = "An ashen toxin. Something about this seems lesser." - color = "#5EFF3B" //RGB: 94, 255, 59 - race = /datum/species/lizard/ashwalker/kobold - process_flags = ORGANIC | SYNTHETIC //WS Edit - IPCs - taste_description = "short savagery" - /datum/reagent/polar_bear_fur //used for icewine crafting name = "Polar Bear Fur" description = "Fur obtained from griding up a polar bears hide" diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index d50605dcd7f..10cd8ffc72e 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -149,12 +149,6 @@ required_reagents = list(/datum/reagent/ammonia = 2, /datum/reagent/nitrogen = 1, /datum/reagent/oxygen = 2) required_temp = 525 -//Technically a mutation toxin -/datum/chemical_reaction/mulligan - results = list(/datum/reagent/mulligan = 1) - required_reagents = list(/datum/reagent/mutationtoxin/jelly = 1, /datum/reagent/toxin/mutagen = 1) - - ////////////////////////////////// VIROLOGY ////////////////////////////////////////// /datum/chemical_reaction/virus_food diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index 07753cea4a1..97290d54213 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -44,13 +44,13 @@ //Green /datum/chemical_reaction/slime/slimemutate - results = list(/datum/reagent/mutationtoxin/jelly = 1) + results = list(/datum/reagent/consumable/berryjuice = 1) // Removal of mutation toxins. This used to be jellyperson toxin, but is now just jelly. required_reagents = list(/datum/reagent/toxin/plasma = 1) required_other = TRUE required_container = /obj/item/slime_extract/green /datum/chemical_reaction/slime/unstabletoxin - results = list(/datum/reagent/mutationtoxin/unstable = 1) + results = list(/datum/reagent/toxin/mutagen = 1) // Removal of mutation toxins. This used to be unstable toxin, but is now unstable mutagen. required_reagents = list(/datum/reagent/uranium/radium = 1) required_other = TRUE required_container = /obj/item/slime_extract/green diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 187935fa0b2..58476c42327 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -182,14 +182,6 @@ icon_state = "pill22" rename_with_volume = TRUE -///////////////////////////////////////// this pill is used only in a legion mob drop -/obj/item/reagent_containers/pill/shadowtoxin - name = "black pill" - desc = "I wouldn't eat this if I were you." - icon_state = "pill9" - color = "#454545" - list_reagents = list(/datum/reagent/mutationtoxin/shadow = 5) - ///////////////////////////////////////// Psychologist inventory pills /obj/item/reagent_containers/pill/happinesspsych name = "mood stabilizer pill" diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index f714f65f154..9016d60515e 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -322,7 +322,7 @@ ejectItem(TRUE) else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) visible_message("[src]'s chemical chamber has sprung a leak!") - chosenchem = pick(/datum/reagent/mutationtoxin/classic,/datum/reagent/nanomachines,/datum/reagent/toxin/acid) + chosenchem = pick(/datum/reagent/nanomachines,/datum/reagent/toxin/acid) var/datum/reagents/R = new/datum/reagents(50) R.my_atom = src R.add_reagent(chosenchem , 50) diff --git a/code/modules/research/xenobiology/crossbreeding/regenerative.dm b/code/modules/research/xenobiology/crossbreeding/regenerative.dm index 8e71efc3177..7cb7f867740 100644 --- a/code/modules/research/xenobiology/crossbreeding/regenerative.dm +++ b/code/modules/research/xenobiology/crossbreeding/regenerative.dm @@ -265,8 +265,6 @@ Regenerative extracts: target.visible_message("The [target] suddenly changes color!") var/mob/living/simple_animal/slime/S = target S.random_colour() - if(isjellyperson(target)) - target.reagents.add_reagent(/datum/reagent/mutationtoxin/jelly,5) organ_loss += 17 From 8d3186dae51896ec98d13aa36e0325951c75c9f4 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Fri, 2 Feb 2024 07:40:47 -0600 Subject: [PATCH 026/150] Automatic changelog generation for PR #2659 [ci skip] --- html/changelogs/AutoChangeLog-pr-2659.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2659.yml diff --git a/html/changelogs/AutoChangeLog-pr-2659.yml b/html/changelogs/AutoChangeLog-pr-2659.yml new file mode 100644 index 00000000000..38e82309d6b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2659.yml @@ -0,0 +1,4 @@ +author: GenericDM +changes: + - {rscdel: mutation toxin} +delete-after: true From 22610d687448b8dc1312eb05467b22e4cc6f4569 Mon Sep 17 00:00:00 2001 From: meem <75212565+meemofcourse@users.noreply.github.com> Date: Fri, 2 Feb 2024 10:14:04 -0300 Subject: [PATCH 027/150] Fixes #2628 (#2674) ## About The Pull Request Continuation of #2628, which was merged without a testmerge. This fixes some ERT outfits, adds a Syndicate Inspector ERT (which had the outfit defined but not the ERT), and fixes the independent sechud background. Also messes with the CMM Inspector's icon. ![imagen](https://github.com/shiptest-ss13/Shiptest/assets/75212565/a3ac82d6-e5c2-4028-9992-f2565604ac0b) ## Why It's Good For The Game blame zephyr ## Changelog :cl: add: ACLF Syndicate Inspector ERT fix: Independent background icons fix: ERT Outfits not having access and proper names /:cl: --- code/datums/ert.dm | 11 +++++++++++ code/modules/antagonists/ert/ert.dm | 12 ++++++++++++ .../modules/clothing/outfits/ert/indie_ert.dm | 12 ++++++++++++ .../modules/clothing/outfits/ert/inteq_ert.dm | 6 ++++++ .../clothing/outfits/ert/minutemen_ert.dm | 11 +++++++++++ .../clothing/outfits/ert/nanotrasen_ert.dm | 4 ++++ .../clothing/outfits/ert/solgov_ert.dm | 3 ++- .../clothing/outfits/ert/syndicate_ert.dm | 18 ++++++++++++++---- .../clothing/outfits/factions/independent.dm | 2 +- .../clothing/outfits/factions/nanotrasen.dm | 1 + icons/mob/hud.dmi | Bin 19255 -> 19376 bytes 11 files changed, 74 insertions(+), 6 deletions(-) diff --git a/code/datums/ert.dm b/code/datums/ert.dm index 2c84f254cd6..84454874882 100644 --- a/code/datums/ert.dm +++ b/code/datums/ert.dm @@ -210,6 +210,17 @@ rename_team = "Cybersun Medical Intervention Team" polldesc = "a Cybersun paramedic team" +/datum/ert/syndicate/inspector + teamsize = 1 + leader_role = /datum/antagonist/ert/official/syndicate + roles = list(/datum/antagonist/ert/official/syndicate) + rename_team = "Syndicate Inspector" + polldesc = "a syndicate inspector" + spawn_at_outpost = FALSE + +/datum/ert/syndicate/inspector/New() + mission = "Conduct a routine review on [station_name()]'s vessels." + // Frontiersmen /datum/ert/frontier teamsize = 4 diff --git a/code/modules/antagonists/ert/ert.dm b/code/modules/antagonists/ert/ert.dm index f529c19901a..f9741d39e57 100644 --- a/code/modules/antagonists/ert/ert.dm +++ b/code/modules/antagonists/ert/ert.dm @@ -461,6 +461,18 @@ outfit = /datum/outfit/job/syndicate/ert/cybersun/medic/leader role = "Lead Medical Technician" +/datum/antagonist/ert/official/syndicate + name = "Syndicate Inspector" + outfit = /datum/outfit/job/syndicate/ert/inspector + role = "Syndicate Inspector" + +/datum/antagonist/ert/official/solgov/greet() + to_chat(owner, "You are a Syndicate Inspector.") + if (ert_team) + to_chat(owner, "The Syndicate Coalition is sending you to [station_name()] with the task: [ert_team.mission.explanation_text]") + else + to_chat(owner, "The Syndicate Coalition is sending you to [station_name()] with the task: [mission.explanation_text]") + // ******************************************************************** // ** Frontiersmen ** // ******************************************************************** diff --git a/code/modules/clothing/outfits/ert/indie_ert.dm b/code/modules/clothing/outfits/ert/indie_ert.dm index f64e7f86a99..6a8b228aec9 100644 --- a/code/modules/clothing/outfits/ert/indie_ert.dm +++ b/code/modules/clothing/outfits/ert/indie_ert.dm @@ -1,5 +1,7 @@ /datum/outfit/job/independent/ert name = "ERT - Independent Security Officer" + jobtype = /datum/job/officer + job_icon = "securityofficer" head = /obj/item/clothing/head/helmet/sec ears = /obj/item/radio/headset/alt @@ -14,6 +16,8 @@ /datum/outfit/job/independent/ert/emt name = "ERT - Independent Paramedic" + jobtype = /datum/job/paramedic + job_icon = "paramedic" head = /obj/item/clothing/head/soft/paramedic mask = null @@ -27,6 +31,8 @@ /datum/outfit/job/independent/ert/firefighter name = "ERT - Independent Firefighter (Standard)" + jobtype = /datum/job/atmos + job_icon = "atmospherictechnician" head = /obj/item/clothing/head/hardhat/red uniform = /obj/item/clothing/under/utility @@ -43,6 +49,8 @@ /datum/outfit/job/independent/ert/firefighter/medic name = "ERT - Independent Firefighter (Medic)" + jobtype = /datum/job/paramedic + job_icon = "paramedic" mask = /obj/item/clothing/mask/breath/medical back = /obj/item/storage/backpack/fireproof @@ -56,6 +64,8 @@ /datum/outfit/job/independent/ert/firefighter/leader name = "ERT - Independent Firefighter (Group Captain)" + jobtype = /datum/job/chief_engineer + job_icon = "chiefengineer" back = /obj/item/fireaxe suit = /obj/item/clothing/suit/space/hardsuit/engine @@ -66,6 +76,8 @@ /datum/outfit/job/independent/ert/technician name = "ERT - Independent Technician" + jobtype = /datum/job/engineer + job_icon = "stationengineer" head = /obj/item/clothing/head/hardhat uniform = /obj/item/clothing/under/rank/engineering/engineer diff --git a/code/modules/clothing/outfits/ert/inteq_ert.dm b/code/modules/clothing/outfits/ert/inteq_ert.dm index f9a0aec2dc5..5a39d3ea3da 100644 --- a/code/modules/clothing/outfits/ert/inteq_ert.dm +++ b/code/modules/clothing/outfits/ert/inteq_ert.dm @@ -1,5 +1,7 @@ /datum/outfit/job/inteq/ert name = "ERT - Inteq Rifleman" + jobtype = /datum/job/officer + job_icon = "securityofficer" mask = /obj/item/clothing/mask/gas/sechailer/inteq glasses = /obj/item/clothing/glasses/hud/security/sunglasses/inteq @@ -28,6 +30,8 @@ /datum/outfit/job/inteq/ert/medic name = "ERT - Inteq Corpsman" + jobtype = /datum/job/paramedic + job_icon = "paramedic" uniform = /obj/item/clothing/under/syndicate/inteq/corpsman belt = /obj/item/storage/belt/medical/webbing/paramedic @@ -39,6 +43,8 @@ /datum/outfit/job/inteq/ert/leader name = "ERT - Inteq Vanguard" + jobtype = /datum/job/hos + job_icon = "headofsecurity" ears = /obj/item/radio/headset/inteq/alt/captain back = /obj/item/storage/backpack/messenger/inteq diff --git a/code/modules/clothing/outfits/ert/minutemen_ert.dm b/code/modules/clothing/outfits/ert/minutemen_ert.dm index 6fc4821784b..8acb733e48f 100644 --- a/code/modules/clothing/outfits/ert/minutemen_ert.dm +++ b/code/modules/clothing/outfits/ert/minutemen_ert.dm @@ -1,5 +1,7 @@ /datum/outfit/job/minutemen/ert name = "ERT - Minuteman" + jobtype = /datum/job/officer + job_icon = "securityofficerOld" head = /obj/item/clothing/head/helmet/bulletproof/minutemen uniform = /obj/item/clothing/under/rank/security/officer/minutemen @@ -17,6 +19,7 @@ /datum/outfit/job/minutemen/ert/leader name = "ERT - Minuteman Sergeant" + job_icon = "lieutenant" ears = /obj/item/radio/headset/minutemen/alt/captain back = /obj/item/storage/backpack/satchel/sec/cmm @@ -24,6 +27,7 @@ /datum/outfit/job/minutemen/ert/bard name = "ERT - Minuteman (BARD)" + job_icon = "securityofficerOld" suit = /obj/item/clothing/suit/armor/vest/marine/medium suit_store = /obj/item/gun/ballistic/automatic/smg/cm5 @@ -43,6 +47,7 @@ /datum/outfit/job/minutemen/ert/bard/leader name = "ERT - Minuteman Sergeant (BARD)" + job_icon = "lieutenant" belt = /obj/item/storage/belt/military/assault/minutemen uniform = /obj/item/clothing/under/rank/command/minutemen @@ -60,6 +65,7 @@ /datum/outfit/job/minutemen/ert/riot name = "ERT - Minuteman (Riot Officer)" + job_icon = "securityofficerOld" suit = /obj/item/clothing/suit/armor/riot/minutemen head = /obj/item/clothing/head/helmet/riot/minutemen @@ -74,12 +80,15 @@ /datum/outfit/job/minutemen/ert/riot/leader name = "ERT - Minutemen Sergeant (Riot Officer)" + job_icon = "lieutenant" ears = /obj/item/radio/headset/minutemen/alt/captain back = /obj/item/shield/riot/flash /datum/outfit/job/minutemen/ert/inspector name = "ERT - Inspector (Minutemen GOLD)" + jobtype = /datum/job/head_of_personnel + job_icon = "minutemen" head = /obj/item/clothing/head/cowboy/sec/minutemen mask = null @@ -97,12 +106,14 @@ /datum/outfit/job/minutemen/ert/pirate_hunter name = "ERT - Minuteman (Pirate Hunter)" + job_icon = "securityofficerOld" head = null suit = /obj/item/clothing/suit/space/hardsuit/security/independent/minutemen /datum/outfit/job/minutemen/ert/pirate_hunter/leader name = "ERT - Minutemen Sergeant (Pirate Hunter)" + job_icon = "lieutenant" uniform = /obj/item/clothing/under/rank/command/minutemen ears = /obj/item/radio/headset/minutemen/alt/captain diff --git a/code/modules/clothing/outfits/ert/nanotrasen_ert.dm b/code/modules/clothing/outfits/ert/nanotrasen_ert.dm index 2d397b8de82..97c4756bee9 100644 --- a/code/modules/clothing/outfits/ert/nanotrasen_ert.dm +++ b/code/modules/clothing/outfits/ert/nanotrasen_ert.dm @@ -382,6 +382,7 @@ /datum/outfit/job/nanotrasen/ert/lp name = "ERT - Loss Prevention Security Specialist" jobtype = /datum/job/officer + job_icon = "securityresponseofficer" head = null implants = list(/obj/item/implant/mindshield) @@ -406,6 +407,7 @@ /datum/outfit/job/nanotrasen/ert/lp/medic name = "ERT - Loss Prevention Medical Specialist" jobtype = /datum/job/doctor + job_icon = "medicalresponseofficer" head = null uniform = /obj/item/clothing/under/rank/medical/paramedic/lp @@ -425,6 +427,7 @@ /datum/outfit/job/nanotrasen/ert/lp/engineer name = "ERT - Loss Prevention Engineering Specialist" jobtype = /datum/job/engineer + job_icon = "engineeringresponseofficer" head = null uniform = /obj/item/clothing/under/rank/engineering/engineer/nt/lp @@ -444,6 +447,7 @@ /datum/outfit/job/nanotrasen/ert/lp/lieutenant name = "ERT - Loss Prevention Lieutenant" jobtype = /datum/job/captain + job_icon = "emergencyresponseteamcommander" head = null ears = /obj/item/radio/headset/nanotrasen/alt/captain diff --git a/code/modules/clothing/outfits/ert/solgov_ert.dm b/code/modules/clothing/outfits/ert/solgov_ert.dm index 9962f1d9c74..bc09a74c178 100644 --- a/code/modules/clothing/outfits/ert/solgov_ert.dm +++ b/code/modules/clothing/outfits/ert/solgov_ert.dm @@ -18,8 +18,9 @@ /datum/outfit/job/solgov/ert/inspector - name = "ERT - SolGov Inspector" + name = "ERT - Inspector (SolGov)" jobtype = /datum/job/head_of_personnel + job_icon = "solgovrepresentative" uniform = /obj/item/clothing/under/solgov/formal belt = /obj/item/clipboard diff --git a/code/modules/clothing/outfits/ert/syndicate_ert.dm b/code/modules/clothing/outfits/ert/syndicate_ert.dm index 3ef6cea0e53..ab256d094a3 100644 --- a/code/modules/clothing/outfits/ert/syndicate_ert.dm +++ b/code/modules/clothing/outfits/ert/syndicate_ert.dm @@ -1,5 +1,7 @@ /datum/outfit/job/syndicate/ert name = "ERT - Syndicate Basic" + jobtype = /datum/job/officer + job_icon = "securityofficer" suit = /obj/item/clothing/suit/armor/vest/syndie suit_store = /obj/item/gun/ballistic/automatic/smg/c20r @@ -18,10 +20,9 @@ implants = list(/obj/item/implant/weapons_auth) backpack_contents = list(/obj/item/radio=1) - jobtype = /datum/job/officer // most of these are Shooty Shooty People anyway - /datum/outfit/job/syndicate/ert/leader name = "ERT - Syndicate Basic Leader" + job_icon = "lieutenant" head = /obj/item/clothing/head/HoS/beret/syndicate ears = /obj/item/radio/headset/syndicate/captain @@ -48,6 +49,8 @@ /datum/outfit/job/syndicate/ert/gorlex/medic name = "ERT - Syndicate Gorlex Loyalist Medic" + jobtype = /datum/job/paramedic + job_icon = "paramedic" head = /obj/item/clothing/head/soft/black mask = null @@ -79,6 +82,7 @@ /datum/outfit/job/syndicate/ert/gorlex/leader name = "ERT - Syndicate Gorlex Loyalist Sergeant" + job_icon = "lieutenant" uniform = /obj/item/clothing/under/syndicate/gorlex head = /obj/item/clothing/head/HoS/beret/syndicate @@ -93,6 +97,7 @@ /datum/outfit/job/syndicate/ert/cybersun name = "ERT - Syndicate Cybersun Commando" + job_icon = "syndicate" head = null uniform = /obj/item/clothing/under/syndicate/combat @@ -117,6 +122,7 @@ /datum/outfit/job/syndicate/ert/cybersun/medic name = "ERT - Syndicate Cybersun Paramedic" + job_icon = "paramedic" uniform = /obj/item/clothing/under/syndicate/medic suit = /obj/item/clothing/suit/space/hardsuit/syndi/cybersun/paramed @@ -138,6 +144,7 @@ /datum/outfit/job/syndicate/ert/cybersun/medic/leader name = "ERT - Syndicate Cybersun Lead Paramedic" + job_icon = "chiefmedicalofficer" head = /obj/item/clothing/head/beret/cmo glasses = /obj/item/clothing/glasses/hud/security/night @@ -150,6 +157,8 @@ /datum/outfit/job/syndicate/ert/inspector name = "ERT - Inspector (Syndicate)" + jobtype = /datum/job/head_of_personnel + job_icon = "syndicate" uniform = /obj/item/clothing/under/syndicate/officer head = /obj/item/clothing/head/HoS/beret/syndicate @@ -160,10 +169,11 @@ shoes = /obj/item/clothing/shoes/laceup gloves = /obj/item/clothing/gloves/color/white suit = /obj/item/clothing/suit/armor/hos + l_pocket = null + r_pocket = null suit_store = null - job_icon = "syndicate" - jobtype = /datum/job/head_of_personnel + backpack_contents = list(/obj/item/stamp/syndicate) /datum/outfit/job/syndicate/ert/inspector/post_equip(mob/living/carbon/human/H, visualsOnly) . = ..() diff --git a/code/modules/clothing/outfits/factions/independent.dm b/code/modules/clothing/outfits/factions/independent.dm index 97b806ec4b5..e31e03e10eb 100644 --- a/code/modules/clothing/outfits/factions/independent.dm +++ b/code/modules/clothing/outfits/factions/independent.dm @@ -1,6 +1,6 @@ /datum/outfit/job/independent name = "Independent - Base Outfit" - faction_icon = "bg_independent" + faction_icon = "bg_indie" uniform = /obj/item/clothing/under/utility box = /obj/item/storage/box/survival diff --git a/code/modules/clothing/outfits/factions/nanotrasen.dm b/code/modules/clothing/outfits/factions/nanotrasen.dm index 409a8dd55d4..28ff486e4dc 100644 --- a/code/modules/clothing/outfits/factions/nanotrasen.dm +++ b/code/modules/clothing/outfits/factions/nanotrasen.dm @@ -380,6 +380,7 @@ job_icon = "medicaldoctor" jobtype = /datum/job/doctor + belt = /obj/item/pda/medical ears = /obj/item/radio/headset/headset_med uniform = /obj/item/clothing/under/rank/medical/doctor shoes = /obj/item/clothing/shoes/sneakers/white diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index e55252e102df1a662d6e79fe8f94cea0f6670b8b..a54640fc17ba2ed2726a844b480cc944463acac5 100644 GIT binary patch literal 19376 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 NJzf1=);T3K0RYFqDaHT* literal 19255 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 From 3fa7f15d81536777bda395c1135f48f875865707 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Fri, 2 Feb 2024 07:57:02 -0600 Subject: [PATCH 028/150] Automatic changelog generation for PR #2674 [ci skip] --- html/changelogs/AutoChangeLog-pr-2674.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2674.yml diff --git a/html/changelogs/AutoChangeLog-pr-2674.yml b/html/changelogs/AutoChangeLog-pr-2674.yml new file mode 100644 index 00000000000..110fc871e17 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2674.yml @@ -0,0 +1,6 @@ +author: meemofcourse +changes: + - {rscadd: ACLF Syndicate Inspector ERT} + - {bugfix: Independent background icons} + - {bugfix: ERT Outfits not having access and proper names} +delete-after: true From 559c6ca075e7f189f3abc3146c85f1c389765931 Mon Sep 17 00:00:00 2001 From: Bokkiewokkie <43698041+Bokkiewokkie@users.noreply.github.com> Date: Fri, 2 Feb 2024 14:17:41 +0100 Subject: [PATCH 029/150] Adds more underwear for Kepori and digitigrades (#2690) ## About The Pull Request Adds a bunch of new socks and shirts for Kepori, and digitigrade versions of the pride and grayscale thigh-highs. I also updated some of the already existing socks (like bee and bisexual socks) to use the sprites of their grayscale counterparts as a base so they're not just a flat sprite. On top of this I noticed Kepori their left arms and legs also had right arm and leg sprites and vice versa when facing east/west, so I removed the extra parts from those. In practice there will be no noticeable difference in this outside of amputees now showing their sides correctly. ## Why It's Good For The Game Now you can express your pride as a Kepori or with digitigrade legs! ## Images Kepori with the tank top and the bee socks ![image](https://github.com/shiptest-ss13/Shiptest/assets/43698041/413f292b-10c2-4423-9fa2-fec28ace4efb) Kepori with a polo shirt and nonbinary socks ![image](https://github.com/shiptest-ss13/Shiptest/assets/43698041/750a5ce0-e162-4d5a-9507-47f026e7cc59) Lizard with the trans socks ![image](https://github.com/shiptest-ss13/Shiptest/assets/43698041/c296e97a-e636-4257-b50a-6743b60dc4c3) ## Changelog :cl: imageadd: Added more Kepori socks imageadd: Added more Kepori shirts imageadd: Added digitigrade pride thigh-highs fix: Fixed Kepori arms having both left and right sprites per single arm /:cl: --- .../species/underwear_socks_kepori.dmi | Bin 1636 -> 2905 bytes .../species/underwear_torso_kepori.dmi | Bin 1241 -> 1514 bytes .../clothing/underwear/underwear_socks.dmi | Bin 20805 -> 27123 bytes icons/mob/species/kepori/bodyparts.dmi | Bin 1375 -> 1368 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/clothing/underwear/species/underwear_socks_kepori.dmi b/icons/mob/clothing/underwear/species/underwear_socks_kepori.dmi index d182ee4c238a4baa02893209ec62893efc856e65..7548aeb3a70243b3bd08e61788cd61aa0a6975e6 100644 GIT binary patch literal 2905 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 diff --git a/icons/mob/clothing/underwear/species/underwear_torso_kepori.dmi b/icons/mob/clothing/underwear/species/underwear_torso_kepori.dmi index 5574cfb965b7e63121580f08c58f90c5246955ac..19813d4e29462c2bdbfa412239f4f4023e165de9 100644 GIT binary patch delta 1432 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%0DNiLUhMQ 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 MboFyt=akR{0PE`WU;qFB diff --git a/icons/mob/species/kepori/bodyparts.dmi b/icons/mob/species/kepori/bodyparts.dmi index 177efcbbf51ab3b3067421c686061f579a580192..f19aaeacbe08ebafdf5c90f7fe8fd985e6ba2dfc 100644 GIT binary patch delta 1108 zcmV-a1grbs3fKy;6ajxPNkl`*^AS z64VgS##i-uMcX}!)agB3t{-ZU=i;mS6m6C$@A0bWkIEe+#MgiIC5m!~B7l?7I>k6i zqqX)NpZf6=Yx=b4Re~5`meMO4W<`S-U)7fkD>$K>65**Sx3kn<;iB}X)a9zaenZeFPy8t* zko9W`5D|X{e)!ffark61xef!+Ev9%A637{_CL%xh@{Q8^d(RXT-PrQXK7^mBJ?R^Inyw~*s001~K!}kBd zgmWkGalM51qeaL#*}MC=UgO`+VBFt7m~nsqV8;FZgBkbtk7n54Kb&EI9{>OV004jk z5vmZo7bxC1C}mQmy+FNE>MvASD6mo{mD_6{?(`wOz&8q)I;c>{(b_9Sol0sRymyt6 zYaLfeKxuz3)LL+F1=J$(Af-+ngk8>#h}>g)Ej`|a_4Pkwuo`8h&M&lct+e+OaJ79M zq3jqg_4z7i(cim??-`W7Wz5z+)tdhy0q*_MVhNCkhp-M%V&+xhMb7eDf^Gs!b4{7^ za*E4soPR~BB};!Pnw9nT-OaIj(gMoY1g{Pc)VN}oC{ZUxhJZ00hT>JaR zNTPqg?>ZT5sLpgsRMfJA*Z#gKy6o@A)IP7ag{wbNfc`;Cr^%iZ+%)wss_I}?`zfz7>i(i{AXOW!)jMEY3=>-=qs z{cijOocPjBSB?CZzpqLdT7gnPFn$1DK1R_o@^?4)?f(7ge?$+T9{>OV00000002w? z0MMr8?;D54^aAH}VE%=czi%As!wX7e1M@Gm{C(rlm|jrq9GHKhQr aS@;KFB^A&t%D~~ delta 1115 zcmV-h1f=`e3f~H_6ajxWNkl;dYxa425ecxT%5W{oi)7X||Htl8B)+=iKin zvZbpSHjprVdjkLf00000006+t6Nnt6h{B;N+Wt*_fn5o(n!v^3;z|FezJVMW$e2O1 zU!rD>+~MEUHyGOPUbI2)@pAo8=0@xMQ~aCy3~e4S@9EmspCf-zGBQy7+xkXI`T!yE zs92|zCT+H57ys1uKeDCI@?IpU4rVRAtYJ1ZsQyiTqhkeBg_GqWjn)ci{!M+|D=^6l zC6HyYRXJyRO##-3;P zE{18I=c)bJCr^}u_1Idn9M`x0X&lSpJydE8ax<*y8ytW7^Ho68<2}0^prfyV%rMyc z0002IFx}<ZqLM9Ed19+Dq&4F08Hp zA%oQ{FD1TW=hA6!ClHE#?IE8rocr@d&Z56{5#KY&WAmJ?=Tt5JLjv4-(_(QT)8oV2 z&)KJ}3NLb&cL|yaEas9j%W|sA?To)7_mZ`LDXM>+_AH)4`1(n;tK_daFPO~8No>*o z)dSb;qEI_Ase0muA~=*B7J&^};hur04<(_kTPdvTrY`WCU03Y@*Aw{`#$vgerROi>(0pR#&)s1!K{+Oy1wrTVbu52SQp^j#TGbM zxvP6AS#(yGU{&AugfQy+L$OxE_`XY&mDKv2Ia-cdoARx`?+Ibl_tVI=lZd_D0GS*r zHGC?Ebr;UUy*aEFKMQc~krVf|2#v#sP`!VaJev@IIWM08000000000006>FRuk1VP z-&UP}bA5j|e6?MrgHhO8-`@}SyV&X`l+E@1-4Oqd&rW}hY#X=N_y3J>#%~194FX^F zGH74$f1ihos{mZ{Zk2*g9002_} z000000001>POZN0oSMcRDyJRs7i#r==hPwY@HeYE;xE+d`_8Fp+@aao5r3gp-+x-o h6Pz6%006+N@CTMX7MS%pB*y>%002ovPDHLkV1j!_Kehk> From 05e51b4c184d0590b61f35ba9f355738e36e44a3 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Fri, 2 Feb 2024 08:13:05 -0600 Subject: [PATCH 030/150] Automatic changelog generation for PR #2690 [ci skip] --- html/changelogs/AutoChangeLog-pr-2690.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2690.yml diff --git a/html/changelogs/AutoChangeLog-pr-2690.yml b/html/changelogs/AutoChangeLog-pr-2690.yml new file mode 100644 index 00000000000..fe04b30d40f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2690.yml @@ -0,0 +1,7 @@ +author: Bokkiewokkie +changes: + - {imageadd: Added more Kepori socks} + - {imageadd: Added more Kepori shirts} + - {imageadd: Added digitigrade pride thigh-highs} + - {bugfix: Fixed Kepori arms having both left and right sprites per single arm} +delete-after: true From 878a80ddc83dda69a2c8c9702643de0f9026c2f5 Mon Sep 17 00:00:00 2001 From: meem <75212565+meemofcourse@users.noreply.github.com> Date: Fri, 2 Feb 2024 11:36:16 -0300 Subject: [PATCH 031/150] Ports the Requests Manager, Minor Fax QOL, Adds factional offices to CentCom (#2653) ## About The Pull Request This pull requests ports: * https://github.com/BeeStation/BeeStation-Hornet/pull/9408 * https://github.com/BeeStation/BeeStation-Hornet/pull/9236 This pull request reverts: * https://github.com/tgstation/tgstation/pull/70072 The requests manager is now a thing. ![264860380-6d27a710-8ac1-4864-9abe-4c13f4885cba](https://github.com/shiptest-ss13/Shiptest/assets/75212565/dc3277d3-9770-4450-97a8-6b4b918cf25b) It also adds little offices with fax machines for factions to CentCom, which recieve the physical paper and can send faxes back (though admins can still make use of the fax panel). ![imagen](https://github.com/shiptest-ss13/Shiptest/assets/75212565/1abb223f-1914-4ab9-8240-e2969a4e47f5) They can also fax each other, if ever needed. ![imagen](https://github.com/shiptest-ss13/Shiptest/assets/75212565/1d551e8e-cbea-4116-a608-f319411484b6) ## Why It's Good For The Game * Gives admins the ability to see a very easy to use recap of all requests that occur in a round. This system is readily extendible to support other types of requests, should someone care to add it. * Better admin tools, admins can now send faxes directly via the new Fax Manager verb, and faxes are show in the request panel instead of its own panel. * You can now LARP as a Cybersun minimum wage intern handling faxes. ## Changelog :cl: bobbahbrown, itsmeow, meemofcourse add: CentCom now has some small offices, which recieve physical faxes. add: Fax machines now announce that they have received a fax over radio. add: Fax machines announce important faxes VERY LOUDLY. balance: Faxes no longer require a subspace ansible crystal. code: Faxes now use typepath instead of varedit. tweak: Changed how special/faction faxes work. Login is no longer required to use special faxes. admin: Add Requests Manager to view all fax messages/prayers/centcom and syndicate requests/and nuke code requests within a round. admin: Removed old fax manager in favor of Requests Manager, added "Send Fax Message" verb to send admin faxes via a menu. fix: Fixed runtime when ghosts tried to view paper. /:cl: --- .../JungleRuins/jungle_cavecrew.dmm | 2 +- .../JungleRuins/jungle_syndicate.dmm | 2 +- .../SpaceRuins/corporate_mining.dmm | 2 +- .../wasteplanet_fortress_of_solitide.dmm | 2 +- _maps/map_files/generic/CentCom.dmm | 1711 ++++++++++++++--- _maps/outpost/hangar/nt_asteroid_20x20.dmm | 2 +- _maps/outpost/hangar/nt_asteroid_40x20.dmm | 2 +- _maps/outpost/nanotrasen_asteroid.dmm | 2 +- _maps/outpost/nanotrasen_ice.dmm | 2 +- code/__DEFINES/admin.dm | 2 + code/_globalvars/lists/faxes.dm | 26 - code/_globalvars/lists/objects.dm | 1 + .../machinery/telecomms/machines/relay.dm | 30 + .../circuitboards/machine_circuitboards.dm | 1 - code/game/turfs/closed/_closed.dm | 2 +- code/modules/admin/admin_fax_panel.dm | 145 ++ code/modules/admin/admin_verbs.dm | 6 +- code/modules/admin/topic.dm | 8 +- code/modules/admin/verbs/fax_manager.dm | 9 - code/modules/admin/verbs/pray.dm | 8 +- code/modules/admin/verbs/requests.dm | 7 + code/modules/client/client_procs.dm | 2 + code/modules/paperwork/fax.dm | 200 +- code/modules/paperwork/fax_manager.dm | 154 -- code/modules/paperwork/paper.dm | 20 +- code/modules/requests/request.dm | 37 + code/modules/requests/requests_manager.dm | 249 +++ shiptest.dme | 7 +- tgui/packages/tgui/interfaces/AdminFax.js | 263 +++ tgui/packages/tgui/interfaces/Fax.tsx | 86 +- tgui/packages/tgui/interfaces/FaxManager.tsx | 317 --- tgui/packages/tgui/interfaces/PaperSheet.tsx | 133 +- .../tgui/interfaces/RequestManager.js | 184 ++ 33 files changed, 2546 insertions(+), 1078 deletions(-) delete mode 100644 code/_globalvars/lists/faxes.dm create mode 100644 code/modules/admin/admin_fax_panel.dm delete mode 100644 code/modules/admin/verbs/fax_manager.dm create mode 100644 code/modules/admin/verbs/requests.dm delete mode 100644 code/modules/paperwork/fax_manager.dm create mode 100644 code/modules/requests/request.dm create mode 100644 code/modules/requests/requests_manager.dm create mode 100644 tgui/packages/tgui/interfaces/AdminFax.js delete mode 100644 tgui/packages/tgui/interfaces/FaxManager.tsx create mode 100644 tgui/packages/tgui/interfaces/RequestManager.js diff --git a/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm b/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm index cca97a317ce..afa21c752a7 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm @@ -3119,7 +3119,7 @@ /obj/structure/table/reinforced{ color = "#c1b6a5" }, -/obj/machinery/fax/frontiersmen, +/obj/machinery/fax/ruin, /turf/open/floor/plasteel/tech, /area/ruin/jungle/cavecrew/bridge) "Ls" = ( diff --git a/_maps/RandomRuins/JungleRuins/jungle_syndicate.dmm b/_maps/RandomRuins/JungleRuins/jungle_syndicate.dmm index 018739e20dc..ebd33328938 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_syndicate.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_syndicate.dmm @@ -1330,7 +1330,7 @@ "OW" = ( /obj/structure/table/reinforced, /obj/item/trash/syndi_cakes, -/obj/machinery/fax, +/obj/machinery/fax/ruin, /turf/open/floor/plating, /area/ruin/jungle/syndifort/jerry) "Ph" = ( diff --git a/_maps/RandomRuins/SpaceRuins/corporate_mining.dmm b/_maps/RandomRuins/SpaceRuins/corporate_mining.dmm index 6ed5ed67825..3585b4dcc1e 100644 --- a/_maps/RandomRuins/SpaceRuins/corporate_mining.dmm +++ b/_maps/RandomRuins/SpaceRuins/corporate_mining.dmm @@ -956,7 +956,7 @@ /area/ruin/space) "xK" = ( /obj/structure/table/wood, -/obj/machinery/fax, +/obj/machinery/fax/ruin, /turf/open/floor/wood, /area/ruin/space/has_grav/corporatemine/crewquarters) "xT" = ( diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm index 66ab48f18a9..e931e0091d2 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm @@ -401,7 +401,7 @@ /area/ruin/powered) "dT" = ( /obj/structure/table/wood, -/obj/machinery/fax, +/obj/machinery/fax/ruin, /turf/open/floor/plating, /area/ruin/powered) "dU" = ( diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index e2b1ff97158..0eccbd8fc0d 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -1096,6 +1096,18 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/control) +"apm" = ( +/obj/structure/rack, +/obj/item/gun/ballistic/automatic/gal/inteq{ + pixel_x = 1; + pixel_y = 4 + }, +/obj/item/gun/ballistic/automatic/gal/inteq{ + pixel_x = -4; + pixel_y = -2 + }, +/turf/open/floor/plasteel, +/area/centcom) "apt" = ( /obj/structure/closet/secure_closet/security, /obj/item/storage/belt/security/full, @@ -3419,6 +3431,17 @@ /obj/machinery/light/directional/west, /turf/open/floor/plating/asteroid, /area/tdome/tdomeadmin) +"aIF" = ( +/obj/structure/table/reinforced, +/obj/item/storage/ration/crayons{ + pixel_x = 9; + pixel_y = 5 + }, +/obj/item/storage/ration/shredded_beef{ + pixel_x = -2 + }, +/turf/open/floor/plasteel, +/area/centcom) "aIH" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/corner/transparent/neutral{ @@ -4560,6 +4583,9 @@ }, /turf/open/floor/plasteel, /area/tdome/arena) +"aPu" = ( +/turf/closed/indestructible/reinforced, +/area/centcom) "aPw" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; @@ -6202,6 +6228,13 @@ }, /turf/open/floor/plasteel, /area/centcom/control) +"bbf" = ( +/obj/machinery/door/airlock/command{ + dir = 4; + req_access_txt = "109" + }, +/turf/open/floor/plasteel, +/area/centcom) "bbL" = ( /obj/structure/table/wood, /obj/item/folder/red, @@ -6470,6 +6503,13 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/supply) +"bFc" = ( +/obj/structure/table/reinforced, +/obj/item/radio/intercom/wideband/table{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/centcom) "bIh" = ( /obj/structure/chair{ dir = 4 @@ -6484,6 +6524,16 @@ /obj/effect/turf_decal/industrial/warning, /turf/open/floor/plasteel, /area/centcom/control) +"bIJ" = ( +/obj/structure/sign/minutemen{ + pixel_y = -28 + }, +/obj/machinery/light/directional/west, +/obj/machinery/telecomms/relay/preset/minutemen{ + autolinkers = list("relay") + }, +/turf/open/floor/plasteel, +/area/centcom) "bMY" = ( /obj/effect/turf_decal/corner/opaque/green{ dir = 1 @@ -6526,6 +6576,28 @@ }, /turf/open/floor/plasteel, /area/centcom/control) +"bRF" = ( +/obj/structure/table/reinforced, +/obj/structure/sign/poster/minutemen/bard{ + pixel_y = -32 + }, +/obj/item/ammo_box/magazine/p16{ + pixel_x = -5; + pixel_y = 6 + }, +/obj/item/ammo_box/magazine/p16{ + pixel_x = 1; + pixel_y = 2 + }, +/obj/item/ammo_casing{ + pixel_x = 7; + pixel_y = 7 + }, +/obj/item/ammo_casing{ + pixel_x = 11 + }, +/turf/open/floor/plasteel, +/area/centcom) "bRK" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, @@ -6542,6 +6614,26 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/ferry) +"bSy" = ( +/obj/structure/table/wood/fancy/blue, +/obj/structure/sign/solgov_seal{ + pixel_y = 28 + }, +/obj/item/clothing/head/beret/solgov{ + pixel_x = 11; + pixel_y = -1 + }, +/turf/open/floor/carpet/royalblue, +/area/centcom) +"bUH" = ( +/obj/effect/turf_decal/minutemen/corner{ + dir = 1 + }, +/obj/structure/chair/comfy{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/centcom) "bVe" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs/cable/zipties, @@ -6664,6 +6756,21 @@ }, /turf/open/floor/plasteel, /area/centcom/control) +"ciU" = ( +/obj/structure/table/reinforced, +/obj/structure/sign/poster/contraband/gec{ + pixel_x = 32 + }, +/obj/item/paper_bin/construction, +/obj/item/pen, +/turf/open/floor/mineral/plastitanium, +/area/centcom) +"cjo" = ( +/obj/effect/turf_decal/corner/opaque/yellow{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/centcom) "ckq" = ( /obj/effect/turf_decal/corner/transparent/neutral{ dir = 1 @@ -6813,6 +6920,16 @@ }, /turf/open/floor/plasteel, /area/centcom/ferry) +"cxm" = ( +/obj/effect/turf_decal/corner/opaque/yellow{ + dir = 10 + }, +/obj/effect/turf_decal/steeldecal/steel_decals_central6, +/obj/structure/chair/comfy{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/centcom) "cyx" = ( /obj/effect/turf_decal/corner/transparent/neutral{ dir = 1 @@ -6848,6 +6965,12 @@ }, /turf/open/floor/plasteel/white, /area/tdome/tdomeobserve) +"cCK" = ( +/obj/machinery/telecomms/relay/preset/syndicate{ + autolinkers = list("relay") + }, +/turf/open/floor/mineral/plastitanium, +/area/centcom) "cDe" = ( /obj/effect/turf_decal/corner/transparent/neutral{ dir = 1 @@ -6937,6 +7060,15 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/evac) +"cIS" = ( +/obj/structure/rack, +/obj/item/gun/ballistic/shotgun/bulldog/inteq, +/obj/item/gun/ballistic/shotgun/bulldog/inteq{ + pixel_x = -5; + pixel_y = -5 + }, +/turf/open/floor/plasteel, +/area/centcom) "cKk" = ( /obj/effect/turf_decal/corner/opaque/green{ dir = 8 @@ -6980,6 +7112,15 @@ }, /turf/open/floor/plasteel, /area/syndicate_mothership/control) +"cUG" = ( +/obj/structure/sign/poster/contraband/syndicate_recruitment{ + pixel_x = -32 + }, +/obj/machinery/computer/secure_data/syndie{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/centcom) "cVC" = ( /obj/structure/noticeboard{ dir = 8; @@ -7047,6 +7188,11 @@ }, /turf/open/floor/plasteel/dark, /area/tdome/tdomeobserve) +"cZi" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/centcom) "dhD" = ( /obj/effect/turf_decal/corner/transparent/neutral{ dir = 1 @@ -7115,6 +7261,16 @@ }, /turf/open/floor/plasteel, /area/centcom/supply) +"dom" = ( +/obj/structure/sign/solgov_seal{ + pixel_y = 28 + }, +/obj/structure/table/wood/fancy/blue, +/obj/item/flashlight/lamp/green{ + pixel_y = 3 + }, +/turf/open/floor/carpet/royalblue, +/area/centcom) "dop" = ( /obj/structure/table/reinforced, /obj/item/storage/firstaid/regular, @@ -7185,6 +7341,18 @@ }, /turf/open/floor/plasteel, /area/centcom/evac) +"duw" = ( +/obj/effect/decal/cleanable/blood{ + icon_state = "floor5-old"; + pixel_y = -6; + pixel_x = -3 + }, +/obj/item/restraints/handcuffs/cable/zipties/used{ + pixel_x = -3; + pixel_y = -4 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/centcom) "dvo" = ( /obj/effect/turf_decal/industrial/warning, /turf/open/floor/plasteel/dark, @@ -7205,6 +7373,9 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/control) +"dER" = ( +/turf/open/floor/carpet/royalblue, +/area/centcom) "dGb" = ( /obj/effect/turf_decal/corner/transparent/neutral{ dir = 1 @@ -7270,6 +7441,15 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/control) +"dKW" = ( +/obj/structure/closet/crate/bin, +/obj/structure/sign/minutemen{ + pixel_y = 28 + }, +/obj/machinery/light/directional/east, +/obj/item/reagent_containers/food/snacks/pancakes/blueberry, +/turf/open/floor/plasteel, +/area/centcom) "dMa" = ( /obj/item/radio{ pixel_x = 5; @@ -7582,6 +7762,10 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/control) +"emF" = ( +/obj/effect/turf_decal/corner/opaque/yellow/full, +/turf/open/floor/plasteel, +/area/centcom) "enx" = ( /obj/item/kirbyplants{ icon_state = "plant-21"; @@ -7620,6 +7804,19 @@ }, /turf/open/floor/plasteel/white, /area/centcom/holding) +"eqM" = ( +/obj/effect/turf_decal/solgov/wood/bottom_left, +/obj/effect/turf_decal/siding/wood{ + color = "#543C30" + }, +/turf/open/floor/wood/walnut, +/area/centcom) +"etl" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood/mahogany, +/area/centcom) "etp" = ( /obj/structure/table, /obj/item/paper_bin, @@ -7730,6 +7927,9 @@ }, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) +"eAJ" = ( +/turf/closed/indestructible/wood, +/area/centcom) "eCK" = ( /obj/effect/turf_decal/corner/opaque/red{ dir = 1 @@ -7862,6 +8062,13 @@ heat_capacity = 1e+006 }, /area/tdome/tdomeobserve) +"eLy" = ( +/obj/machinery/door/airlock/hatch{ + dir = 4; + req_access = "109" + }, +/turf/open/floor/plasteel/patterned/grid, +/area/centcom) "eSx" = ( /obj/structure/noticeboard{ dir = 8; @@ -7961,6 +8168,13 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/control) +"eWz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/catwalk/over, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/centcom) "eYx" = ( /obj/item/kirbyplants{ icon_state = "plant-21" @@ -8005,6 +8219,12 @@ }, /turf/open/floor/plasteel, /area/centcom/supply) +"fau" = ( +/obj/effect/decal/cleanable/generic, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/centcom) "fda" = ( /obj/machinery/modular_computer/console/preset/command{ dir = 8 @@ -8242,6 +8462,12 @@ }, /turf/open/floor/plasteel, /area/centcom/supply) +"fKt" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/obj/item/pen/edagger, +/turf/open/floor/mineral/plastitanium, +/area/centcom) "fLD" = ( /obj/structure/closet/secure_closet/courtroom, /obj/effect/turf_decal/corner/transparent/neutral{ @@ -8385,6 +8611,16 @@ }, /turf/open/floor/plasteel, /area/centcom/control) +"fTU" = ( +/obj/effect/turf_decal/corner/opaque/yellow/three_quarters{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/centcom) +"fUc" = ( +/obj/machinery/door/airlock/security, +/turf/open/floor/mineral/plastitanium/red, +/area/centcom) "fUK" = ( /obj/machinery/light/directional/west, /obj/effect/turf_decal/corner/transparent/bar, @@ -8449,6 +8685,12 @@ }, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) +"gaU" = ( +/obj/effect/turf_decal/minutemen/corner{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/centcom) "gba" = ( /obj/structure/table/reinforced, /obj/machinery/recharger, @@ -8485,6 +8727,12 @@ }, /turf/open/floor/plasteel, /area/centcom/supply) +"gfJ" = ( +/obj/structure/chair/office{ + dir = 1 + }, +/turf/open/floor/carpet/royalblue, +/area/centcom) "ggX" = ( /obj/machinery/pdapainter, /obj/effect/turf_decal/corner/transparent/neutral{ @@ -8596,6 +8844,16 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/control) +"gsx" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/structure/sign/solgov_seal{ + pixel_y = -28 + }, +/obj/structure/closet/crate/bin, +/turf/open/floor/wood/walnut, +/area/centcom) "gwE" = ( /obj/effect/turf_decal/corner/opaque/blue{ dir = 1 @@ -8653,6 +8911,13 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/control) +"gDV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/catwalk/over, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/centcom) "gFU" = ( /obj/machinery/computer/helm, /obj/effect/turf_decal/industrial/warning{ @@ -8805,6 +9070,12 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/control) +"gTo" = ( +/obj/structure/table/wood/fancy/blue, +/obj/machinery/light/directional/north, +/obj/machinery/fax/admin/solgov, +/turf/open/floor/carpet/royalblue, +/area/centcom) "gUp" = ( /obj/structure/chair{ dir = 1 @@ -8845,6 +9116,20 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/plasteel, /area/centcom/supply) +"hba" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_x = 5 + }, +/obj/item/clothing/head/cowboy/sec/minutemen{ + pixel_y = 8; + pixel_x = -4 + }, +/obj/item/pen/fourcolor{ + pixel_x = 5 + }, +/turf/open/floor/plasteel, +/area/centcom) "hbh" = ( /obj/structure/table/wood, /obj/item/phone{ @@ -9008,6 +9293,9 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/ferry) +"hzJ" = ( +/turf/closed/indestructible/riveted, +/area/centcom) "hzR" = ( /obj/structure/table/wood, /obj/item/folder/red, @@ -9043,6 +9331,12 @@ }, /turf/open/floor/plasteel/dark, /area/tdome/tdomeadmin) +"hBf" = ( +/obj/effect/turf_decal/minutemen/edge{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/centcom) "hDn" = ( /obj/effect/turf_decal/corner/opaque/blue{ dir = 1 @@ -9200,6 +9494,10 @@ /obj/machinery/vending/wardrobe/cent_wardrobe, /turf/open/floor/plasteel/dark, /area/centcom/ferry) +"hYV" = ( +/obj/item/kirbyplants/random, +/turf/open/floor/ship/dirt, +/area/centcom) "hZs" = ( /obj/structure/table/reinforced, /obj/item/folder/red{ @@ -9246,6 +9544,26 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/plasteel/dark, /area/centcom/supply) +"ibc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/fluff/paper/stack{ + dir = 5; + pixel_y = 25; + layer = 2.89 + }, +/obj/structure/fluff/paper/stack{ + dir = 4; + pixel_y = -4; + pixel_x = 11 + }, +/obj/structure/fluff/paper/stack{ + dir = 1; + pixel_x = -16; + pixel_y = -2 + }, +/obj/effect/turf_decal/steeldecal/steel_decals_central4, +/turf/open/floor/plasteel/patterned/grid, +/area/centcom) "ieA" = ( /obj/item/kirbyplants{ icon_state = "plant-22" @@ -9302,6 +9620,26 @@ }, /turf/open/floor/plasteel, /area/centcom/control) +"igC" = ( +/obj/structure/sign/minutemen{ + pixel_y = -28 + }, +/obj/structure/table/reinforced, +/obj/item/clothing/head/helmet/bulletproof/minutemen{ + pixel_x = -1; + pixel_y = 8 + }, +/obj/item/clothing/head/helmet/bulletproof/minutemen{ + pixel_x = 3; + pixel_y = 11 + }, +/obj/machinery/light/directional/east, +/obj/item/reagent_containers/food/drinks/bottle/rum{ + pixel_x = -9; + pixel_y = 3 + }, +/turf/open/floor/plasteel, +/area/centcom) "igW" = ( /obj/structure/bed/roller, /obj/machinery/iv_drip, @@ -9431,6 +9769,16 @@ }, /turf/open/floor/plasteel/white, /area/tdome/tdomeobserve) +"iti" = ( +/obj/effect/decal/fakelattice{ + color = "#808080"; + layer = 2.038 + }, +/obj/effect/turf_decal/corner_steel_grid/full, +/turf/open/floor/plasteel/elevatorshaft{ + color = "#808080" + }, +/area/centcom) "iuo" = ( /obj/machinery/computer/auxillary_base{ pixel_y = 32 @@ -9472,6 +9820,14 @@ }, /turf/open/floor/plasteel, /area/centcom/supplypod) +"iwJ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9; + color = "#543C30" + }, +/obj/machinery/light/directional/west, +/turf/open/floor/wood/walnut, +/area/centcom) "iyp" = ( /obj/effect/turf_decal/corner/opaque/green{ dir = 1 @@ -9521,6 +9877,15 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/control) +"iyJ" = ( +/obj/structure/table/reinforced, +/obj/item/clothing/head/hardhat{ + pixel_x = -5; + pixel_y = 6 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/mineral/plastitanium, +/area/centcom) "izl" = ( /obj/machinery/computer/secure_data{ dir = 1 @@ -9573,6 +9938,9 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/plasteel/dark, /area/centcom/control) +"iDo" = ( +/turf/open/floor/ship/dirt, +/area/centcom) "iDE" = ( /obj/effect/turf_decal/corner/transparent/bar, /obj/effect/turf_decal/corner/transparent/bar{ @@ -9627,6 +9995,27 @@ }, /turf/open/floor/plasteel, /area/tdome/arena) +"iRP" = ( +/obj/structure/table/glass, +/obj/item/desk_flag{ + pixel_x = -7; + pixel_y = 6; + name = "white flag"; + desc = "Show in case of Minutemen patrols." + }, +/obj/item/radio/intercom/wideband/directional/north, +/turf/open/floor/plasteel/patterned/grid, +/area/centcom) +"iSo" = ( +/obj/machinery/door/airlock/solgov{ + req_access_txt = "109" + }, +/turf/open/floor/wood/walnut, +/area/centcom) +"iWI" = ( +/obj/effect/turf_decal/minutemen/middle, +/turf/open/floor/mineral/plastitanium, +/area/centcom) "iWU" = ( /obj/effect/turf_decal/corner/opaque/brown{ dir = 8 @@ -9650,6 +10039,9 @@ }, /turf/open/floor/plasteel/white, /area/centcom/holding) +"iZr" = ( +/turf/open/floor/mineral/plastitanium, +/area/centcom) "iZH" = ( /obj/machinery/vending/snack, /obj/effect/turf_decal/corner/transparent/neutral{ @@ -9747,6 +10139,14 @@ }, /turf/open/floor/plasteel, /area/centcom/control) +"jja" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9; + color = "#543C30" + }, +/obj/effect/turf_decal/solgov/wood/center_left, +/turf/open/floor/wood/walnut, +/area/centcom) "jjE" = ( /obj/effect/turf_decal/corner/transparent/neutral{ dir = 1 @@ -9760,6 +10160,12 @@ }, /turf/open/floor/plasteel, /area/centcom/supplypod/loading/ert) +"jly" = ( +/obj/machinery/computer/med_data/syndie{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/centcom) "jlB" = ( /obj/item/cardboard_cutout{ desc = "They seem to be ignoring you... Typical."; @@ -9870,6 +10276,17 @@ }, /turf/open/floor/plasteel, /area/centcom/control) +"jyy" = ( +/obj/structure/table/wood, +/obj/item/paper_bin/bundlenatural{ + pixel_y = 4 + }, +/obj/item/pen/charcoal{ + pixel_x = -5; + pixel_y = -4 + }, +/turf/open/floor/wood/mahogany, +/area/centcom) "jCA" = ( /obj/effect/turf_decal/industrial/warning{ dir = 5 @@ -9898,6 +10315,26 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/ferry) +"jDt" = ( +/obj/item/shard{ + icon_state = "small"; + pixel_x = 9; + pixel_y = -7 + }, +/obj/item/shard{ + icon_state = "medium"; + pixel_x = -10; + pixel_y = 11 + }, +/obj/machinery/fax/admin/frontiersmen, +/obj/structure/table_frame, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plasteel/patterned/grid, +/area/centcom) +"jEn" = ( +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood/mahogany, +/area/centcom) "jEB" = ( /obj/item/kirbyplants{ icon_state = "plant-22" @@ -9910,6 +10347,14 @@ }, /turf/open/floor/plasteel, /area/centcom/control) +"jFa" = ( +/obj/structure/table/reinforced, +/obj/item/clothing/head/HoS/cybersun{ + pixel_x = 2 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/mineral/plastitanium/red, +/area/centcom) "jGz" = ( /obj/item/clipboard, /obj/item/folder/red, @@ -9966,6 +10411,10 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/supply) +"jPn" = ( +/obj/effect/turf_decal/syndicateemblem/middle/middle, +/turf/open/floor/mineral/plastitanium/red, +/area/centcom) "jPL" = ( /obj/machinery/vending/cola, /obj/effect/turf_decal/corner/transparent/bar, @@ -10196,6 +10645,12 @@ }, /turf/open/floor/plasteel, /area/centcom/control) +"kiC" = ( +/obj/effect/turf_decal/minutemen/edge{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium, +/area/centcom) "kjt" = ( /obj/machinery/computer/communications{ dir = 8 @@ -10243,12 +10698,27 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/control) +"kkC" = ( +/obj/structure/table/reinforced, +/obj/structure/sign/poster/minutemen/gold{ + pixel_y = 32 + }, +/obj/machinery/fax/admin/minutemen, +/turf/open/floor/plasteel, +/area/centcom) "kkV" = ( /obj/effect/turf_decal/corner/opaque/green{ dir = 4 }, /turf/open/floor/plasteel, /area/tdome/arena_source) +"kmQ" = ( +/obj/effect/turf_decal/syndicateemblem/middle/right, +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/centcom) "kqM" = ( /obj/machinery/shower{ dir = 4 @@ -10346,6 +10816,14 @@ /obj/machinery/light/directional/south, /turf/open/floor/plasteel, /area/centcom/control) +"kFX" = ( +/obj/item/clothing/head/intern{ + pixel_x = 7; + pixel_y = 5 + }, +/obj/machinery/light/directional/west, +/turf/open/floor/plasteel/patterned/grid, +/area/centcom) "kHH" = ( /obj/effect/turf_decal/corner/opaque/red{ dir = 1 @@ -10458,6 +10936,10 @@ }, /turf/open/floor/plasteel/grimy, /area/centcom/control) +"kXn" = ( +/obj/effect/turf_decal/syndicateemblem/bottom/left, +/turf/open/floor/mineral/plastitanium/red, +/area/centcom) "laX" = ( /obj/structure/chair/office/light{ dir = 8 @@ -10525,6 +11007,11 @@ }, /turf/open/floor/plasteel/dark, /area/ctf) +"lfi" = ( +/obj/structure/table/wood, +/obj/machinery/fax/admin/roumain, +/turf/open/floor/wood/mahogany, +/area/centcom) "lfw" = ( /obj/structure/table/reinforced, /obj/item/paper_bin, @@ -10542,6 +11029,10 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/control) +"lfK" = ( +/obj/structure/closet/crate/bin, +/turf/open/floor/mineral/plastitanium, +/area/centcom) "lfS" = ( /obj/effect/turf_decal/corner/opaque/green, /turf/open/floor/plasteel, @@ -10659,6 +11150,11 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/ferry) +"lmY" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/centcom) "lnt" = ( /obj/effect/turf_decal/industrial/warning{ dir = 6 @@ -10875,6 +11371,19 @@ }, /turf/open/floor/plasteel/dark, /area/tdome/tdomeobserve) +"lHR" = ( +/obj/item/paper_bin, +/obj/item/clothing/head/beret/sec/frontier/officer{ + pixel_y = 12; + pixel_x = -6 + }, +/obj/item/pen{ + pixel_x = -8; + pixel_y = -3 + }, +/obj/structure/table/glass, +/turf/open/floor/plasteel/patterned/grid, +/area/centcom) "lIm" = ( /obj/structure/table, /obj/item/paper/pamphlet/centcom/visitor_info, @@ -10903,6 +11412,23 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/ferry) +"lJp" = ( +/turf/closed/indestructible/syndicate, +/area/centcom) +"lKP" = ( +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/yellow, +/obj/effect/turf_decal/corner/opaque/yellow{ + dir = 1 + }, +/obj/machinery/light/directional/north, +/obj/machinery/telecomms/relay/preset/inteq{ + autolinkers = list("relay") + }, +/turf/open/floor/plasteel, +/area/centcom) "lMB" = ( /obj/effect/turf_decal/industrial/warning, /turf/open/floor/plasteel, @@ -10933,6 +11459,18 @@ }, /turf/open/floor/plasteel, /area/tdome/arena_source) +"lQr" = ( +/obj/structure/table/reinforced, +/obj/item/flashlight/lamp{ + pixel_x = 8; + pixel_y = 3 + }, +/obj/structure/sign/minutemen{ + pixel_y = 28 + }, +/obj/machinery/light/directional/west, +/turf/open/floor/plasteel, +/area/centcom) "lQv" = ( /obj/effect/turf_decal/corner/opaque/brown, /obj/effect/turf_decal/corner/opaque/brown{ @@ -10995,6 +11533,28 @@ }, /turf/open/floor/plasteel/dark, /area/tdome/tdomeadmin) +"lXI" = ( +/obj/item/ammo_casing/spent{ + pixel_x = -6; + pixel_y = -10 + }, +/obj/item/ammo_casing/spent{ + pixel_x = 9; + pixel_y = -6 + }, +/obj/item/ammo_casing/spent{ + pixel_x = 3 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/centcom) +"lXQ" = ( +/obj/effect/decal/cleanable/blood{ + icon_state = "floor3-old"; + pixel_x = -9; + pixel_y = -11 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/centcom) "lYC" = ( /obj/effect/turf_decal/industrial/warning{ dir = 4 @@ -11004,6 +11564,12 @@ }, /turf/open/floor/plasteel/dark, /area/ctf) +"lYF" = ( +/obj/effect/turf_decal/corner/opaque/yellow{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/centcom) "mbm" = ( /obj/effect/turf_decal/corner/transparent/neutral{ dir = 1 @@ -11130,6 +11696,22 @@ }, /turf/open/floor/plasteel/dark, /area/ctf) +"moE" = ( +/obj/structure/table/reinforced, +/obj/machinery/computer/secure_data/laptop{ + dir = 4; + pixel_y = 6; + pixel_x = -4 + }, +/turf/open/floor/plasteel, +/area/centcom) +"mpi" = ( +/obj/machinery/door/airlock/hatch{ + dir = 4; + req_access_txt = "109" + }, +/turf/open/floor/plasteel/patterned/grid, +/area/centcom) "mpw" = ( /obj/effect/landmark/prisonwarp, /obj/effect/turf_decal/corner/transparent/neutral{ @@ -11161,6 +11743,15 @@ /obj/machinery/light/directional/west, /turf/open/floor/plasteel, /area/centcom/control) +"msQ" = ( +/obj/structure/table/reinforced, +/obj/structure/sign/poster/contraband/cybersun{ + pixel_y = -32 + }, +/obj/item/paper_bin/carbon, +/obj/item/pen/fountain, +/turf/open/floor/mineral/plastitanium/red, +/area/centcom) "mtq" = ( /obj/effect/turf_decal/corner/transparent/bar, /obj/effect/turf_decal/corner/transparent/bar{ @@ -11222,6 +11813,13 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/ferry) +"myU" = ( +/obj/effect/turf_decal/syndicateemblem/middle/left, +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/centcom) "mzM" = ( /obj/structure/fans/tiny, /obj/effect/turf_decal/corner/transparent/neutral{ @@ -11236,6 +11834,12 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/supply) +"mAL" = ( +/obj/structure/table/reinforced, +/obj/machinery/fax/admin/syndicate, +/obj/machinery/light/directional/west, +/turf/open/floor/mineral/plastitanium, +/area/centcom) "mBc" = ( /obj/structure/table/reinforced, /obj/item/stack/packageWrap, @@ -11259,6 +11863,21 @@ }, /turf/open/floor/plasteel/dark, /area/tdome/tdomeadmin) +"mDT" = ( +/obj/effect/decal/fakelattice{ + color = "#808080"; + layer = 2.038 + }, +/obj/effect/turf_decal/corner_steel_grid/diagonal, +/obj/machinery/light/directional/east, +/obj/effect/decal/cleanable/garbage{ + pixel_x = 5; + pixel_y = -5 + }, +/turf/open/floor/plasteel/elevatorshaft{ + color = "#808080" + }, +/area/centcom) "mEC" = ( /obj/structure/sink{ dir = 8; @@ -11293,6 +11912,32 @@ luminosity = 2 }, /area/ctf) +"mGE" = ( +/obj/effect/turf_decal/corner/opaque/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/centcom) +"mJl" = ( +/obj/effect/turf_decal/syndicateemblem/top/left, +/turf/open/floor/mineral/plastitanium/red, +/area/centcom) +"mJP" = ( +/obj/effect/decal/fakelattice{ + color = "#808080"; + layer = 2.038 + }, +/obj/effect/turf_decal/corner_steel_grid/full{ + dir = 4 + }, +/obj/machinery/light/broken/directional/west, +/turf/open/floor/plasteel/elevatorshaft{ + color = "#808080" + }, +/area/centcom) "mKb" = ( /obj/machinery/button/door/indestructible{ id = "thunderdomegen"; @@ -11365,6 +12010,10 @@ }, /turf/open/floor/plasteel, /area/tdome/arena) +"mPN" = ( +/obj/effect/turf_decal/syndicateemblem/top/right, +/turf/open/floor/mineral/plastitanium/red, +/area/centcom) "mUb" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -11409,6 +12058,10 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/plasteel/dark, /area/centcom/ferry) +"mVC" = ( +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/wood/mahogany, +/area/centcom) "mYG" = ( /obj/machinery/airalarm/directional/east, /obj/structure/filingcabinet/filingcabinet, @@ -11442,6 +12095,14 @@ /obj/machinery/newscaster/directional/west, /turf/open/floor/plasteel/dark, /area/centcom/ferry) +"naB" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5; + color = "#543C30" + }, +/obj/machinery/light/directional/east, +/turf/open/floor/wood/walnut, +/area/centcom) "ncR" = ( /obj/machinery/door/poddoor{ id = "XCCQMLoaddoor2"; @@ -11515,6 +12176,13 @@ }, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) +"njp" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8; + color = "#543C30" + }, +/turf/open/floor/wood/walnut, +/area/centcom) "njY" = ( /obj/machinery/status_display/evac{ pixel_y = 32 @@ -11553,6 +12221,12 @@ }, /turf/open/floor/plasteel, /area/centcom/supplypod/loading/three) +"nos" = ( +/obj/structure/catwalk/over, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/centcom) "noV" = ( /obj/structure/table/reinforced, /obj/item/storage/fancy/donut_box, @@ -11824,6 +12498,41 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/ferry) +"nYl" = ( +/obj/structure/table/wood/fancy/blue, +/obj/item/paper_bin/carbon, +/obj/item/pen/solgov, +/obj/item/pen/fourcolor{ + pixel_x = -9; + pixel_y = -3 + }, +/obj/item/desk_flag/solgov{ + pixel_y = 12; + pixel_x = -8 + }, +/turf/open/floor/carpet/royalblue, +/area/centcom) +"nYZ" = ( +/obj/effect/turf_decal/corner/opaque/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 8 + }, +/obj/machinery/computer/secure_data, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel, +/area/centcom) +"oaQ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4; + color = "#543C30" + }, +/turf/open/floor/wood/walnut, +/area/centcom) "oba" = ( /obj/structure/table/wood, /obj/structure/safe/floor, @@ -11883,6 +12592,24 @@ }, /turf/open/floor/plasteel/dark, /area/tdome/tdomeobserve) +"odH" = ( +/obj/effect/turf_decal/corner/opaque/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 8 + }, +/obj/structure/rack, +/obj/item/gun/ballistic/automatic/assault/ak47/inteq{ + pixel_y = 3 + }, +/obj/item/gun/ballistic/automatic/assault/ak47/inteq{ + pixel_y = -1; + pixel_x = -5 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel, +/area/centcom) "odV" = ( /obj/structure/chair/office{ dir = 8 @@ -12028,6 +12755,12 @@ }, /turf/open/floor/plasteel, /area/centcom/control) +"ouD" = ( +/obj/machinery/door/airlock/grunge{ + req_access = "109" + }, +/turf/open/floor/plasteel, +/area/centcom) "ouO" = ( /obj/effect/turf_decal/corner/opaque/green, /turf/open/floor/plasteel, @@ -12160,6 +12893,13 @@ }, /turf/open/floor/plasteel, /area/centcom/supply) +"oHB" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/wood/mahogany, +/area/centcom) "oHU" = ( /obj/machinery/computer/communications{ dir = 8 @@ -12338,6 +13078,16 @@ /obj/effect/turf_decal/corner/opaque/blue, /turf/open/floor/plasteel, /area/centcom/control) +"phf" = ( +/obj/structure/table/wood/fancy/blue, +/obj/structure/sign/poster/solgov/paperwork{ + pixel_y = 32 + }, +/obj/item/radio/intercom/wideband/table{ + dir = 1 + }, +/turf/open/floor/carpet/royalblue, +/area/centcom) "phB" = ( /obj/machinery/light/directional/north, /obj/effect/turf_decal/corner/transparent/neutral{ @@ -12428,6 +13178,10 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/ferry) +"plP" = ( +/obj/effect/turf_decal/corner/opaque/yellow/three_quarters, +/turf/open/floor/plasteel, +/area/centcom) "pmP" = ( /obj/effect/turf_decal/corner/opaque/green, /obj/effect/turf_decal/corner/opaque/green{ @@ -12435,6 +13189,19 @@ }, /turf/open/floor/plasteel, /area/centcom/ferry) +"psm" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10; + color = "#543C30" + }, +/obj/structure/sign/solgov_seal{ + pixel_y = -28 + }, +/obj/machinery/telecomms/relay/preset/solgov{ + autolinkers = list("relay") + }, +/turf/open/floor/wood/walnut, +/area/centcom) "psp" = ( /obj/structure/chair{ dir = 8 @@ -12496,11 +13263,30 @@ /obj/effect/spawner/xmastree, /turf/open/floor/plasteel, /area/syndicate_mothership/control) +"pvN" = ( +/obj/machinery/light/directional/east, +/obj/machinery/telecomms/relay/preset/frontiersmen{ + autolinkers = list("relay") + }, +/turf/open/floor/plasteel/patterned/grid, +/area/centcom) "pvV" = ( /obj/machinery/igniter/on, /obj/effect/turf_decal/industrial/hatch/yellow, /turf/open/floor/plasteel, /area/tdome/arena_source) +"pvW" = ( +/obj/effect/turf_decal/minutemen/edge, +/turf/open/floor/mineral/plastitanium, +/area/centcom) +"pwr" = ( +/obj/effect/turf_decal/solgov/wood/top_right, +/obj/effect/turf_decal/siding/wood{ + color = "#543C30"; + dir = 1 + }, +/turf/open/floor/wood/walnut, +/area/centcom) "pwJ" = ( /obj/structure/chair/comfy/brown{ color = "#596479" @@ -12724,6 +13510,13 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/control) +"pLM" = ( +/obj/effect/turf_decal/siding/wood{ + color = "#543C30" + }, +/obj/effect/turf_decal/solgov/wood/bottom_right, +/turf/open/floor/wood/walnut, +/area/centcom) "pOL" = ( /obj/effect/turf_decal/industrial/warning{ dir = 9 @@ -12819,6 +13612,12 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/control) +"pTR" = ( +/obj/effect/turf_decal/minutemen/edge{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/centcom) "pVF" = ( /obj/machinery/computer/card/centcom{ dir = 8 @@ -12896,6 +13695,11 @@ /obj/effect/turf_decal/corner/opaque/red, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) +"qju" = ( +/obj/structure/table/wood/fancy/blue, +/obj/item/papercutter, +/turf/open/floor/carpet/royalblue, +/area/centcom) "qkb" = ( /obj/item/kirbyplants{ icon_state = "plant-21" @@ -12913,6 +13717,16 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/ferry) +"qkP" = ( +/obj/effect/turf_decal/solgov/wood/bottom_left{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + color = "#543C30"; + dir = 1 + }, +/turf/open/floor/wood/walnut, +/area/centcom) "qmm" = ( /obj/effect/turf_decal/industrial/warning{ dir = 4 @@ -12927,6 +13741,13 @@ }, /turf/open/floor/plasteel, /area/centcom/control) +"qoL" = ( +/turf/open/floor/wood/mahogany, +/area/centcom) +"qqj" = ( +/obj/machinery/light/directional/north, +/turf/open/floor/mineral/plastitanium/red, +/area/centcom) "qsu" = ( /obj/structure/sink{ dir = 4; @@ -13048,6 +13869,27 @@ }, /turf/open/floor/plasteel/dark, /area/tdome/tdomeobserve) +"qLN" = ( +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/yellow{ + dir = 1 + }, +/obj/structure/table, +/obj/structure/sign/poster/contraband/inteq{ + pixel_y = 32 + }, +/obj/item/desk_flag/trans{ + pixel_x = 12; + pixel_y = 2 + }, +/obj/item/radio/intercom/wideband/table{ + dir = 1; + pixel_x = -1 + }, +/turf/open/floor/plasteel, +/area/centcom) "qNc" = ( /obj/effect/turf_decal/corner/transparent/neutral{ dir = 1 @@ -13064,6 +13906,14 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/ferry) +"qQe" = ( +/obj/machinery/hydroponics/soil, +/turf/open/floor/ship/dirt, +/area/centcom) +"qQA" = ( +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood/mahogany, +/area/centcom) "qSb" = ( /obj/machinery/keycard_auth{ pixel_y = -25 @@ -13094,6 +13944,9 @@ }, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) +"qVq" = ( +/turf/open/floor/plasteel, +/area/centcom) "qXd" = ( /obj/structure/table/wood, /obj/item/taperecorder, @@ -13324,6 +14177,14 @@ /obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/plasteel/dark, /area/centcom/control) +"rjV" = ( +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/yellow, +/obj/item/kirbyplants/random, +/turf/open/floor/plasteel, +/area/centcom) "rln" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Supply"; @@ -13347,6 +14208,16 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/ferry) +"rmj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/fluff/paper/stack, +/obj/item/chair/plastic{ + dir = 1; + pixel_x = -9; + pixel_y = 6 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/centcom) "roJ" = ( /obj/effect/turf_decal/corner/transparent/neutral{ dir = 1 @@ -13451,6 +14322,14 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/control) +"rvC" = ( +/obj/structure/table/reinforced, +/obj/item/radio/headset/minutemen/alt/captain{ + pixel_y = 2; + pixel_x = 1 + }, +/turf/open/floor/plasteel, +/area/centcom) "rvW" = ( /obj/structure/sink{ dir = 4; @@ -13684,6 +14563,16 @@ }, /turf/open/floor/plasteel, /area/tdome/arena_source) +"rUa" = ( +/obj/effect/turf_decal/corner/opaque/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 8 + }, +/obj/item/kirbyplants/random, +/turf/open/floor/plasteel, +/area/centcom) "rUH" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/food/snacks/mint, @@ -13967,6 +14856,10 @@ /obj/effect/turf_decal/corner/opaque/blue, /turf/open/floor/plasteel/dark, /area/ctf) +"sMn" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/grid, +/area/centcom) "sMK" = ( /obj/effect/turf_decal/corner/opaque/brown, /obj/effect/turf_decal/corner/opaque/brown{ @@ -13991,6 +14884,13 @@ }, /turf/open/floor/plasteel/white, /area/centcom/holding) +"sQw" = ( +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/yellow, +/turf/open/floor/plasteel, +/area/centcom) "sRB" = ( /obj/machinery/light/directional/east, /obj/effect/turf_decal/corner/transparent/bar, @@ -14051,6 +14951,12 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/control) +"sVJ" = ( +/obj/effect/turf_decal/corner/opaque/yellow{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/centcom) "sWb" = ( /obj/item/storage/briefcase{ pixel_x = -3; @@ -14070,6 +14976,22 @@ }, /turf/open/floor/plasteel/dark, /area/tdome/tdomeadmin) +"sZJ" = ( +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/yellow{ + dir = 1 + }, +/obj/structure/table, +/obj/item/clothing/head/helmet/inteq{ + pixel_x = -12; + pixel_y = 7 + }, +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/plasteel, +/area/centcom) "sZS" = ( /obj/effect/turf_decal/industrial/hatch/yellow, /turf/open/floor/plasteel, @@ -14272,12 +15194,44 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/evac) +"ttK" = ( +/obj/effect/decal/fakelattice{ + color = "#808080"; + layer = 2.038 + }, +/obj/effect/turf_decal/corner_steel_grid/full{ + dir = 8 + }, +/obj/item/trash/can{ + pixel_x = -6; + pixel_y = 10 + }, +/turf/open/floor/plasteel/elevatorshaft{ + color = "#808080" + }, +/area/centcom) "tuw" = ( /obj/effect/turf_decal/industrial/loading{ dir = 8 }, /turf/open/floor/plasteel, /area/centcom/supply) +"tvO" = ( +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/yellow, +/obj/structure/rack, +/obj/item/gun/ballistic/automatic/smg/inteq{ + pixel_x = 2 + }, +/obj/item/gun/ballistic/automatic/smg/inteq{ + pixel_x = -1; + pixel_y = -6 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel, +/area/centcom) "tyg" = ( /obj/effect/turf_decal/corner/opaque/blue{ dir = 1 @@ -14307,6 +15261,25 @@ }, /turf/open/floor/plasteel/dark, /area/tdome/tdomeadmin) +"tAe" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood{ + icon_state = "floor1-old"; + pixel_y = 10; + pixel_x = -8 + }, +/obj/effect/decal/cleanable/blood{ + icon_state = "floor2-old" + }, +/obj/effect/decal/cleanable/shreds{ + pixel_y = 11; + pixel_x = 4 + }, +/obj/effect/turf_decal/steeldecal/steel_decals_central5, +/turf/open/floor/plasteel/patterned/grid, +/area/centcom) "tAB" = ( /obj/structure/filingcabinet/medical, /obj/effect/turf_decal/corner/transparent/neutral{ @@ -14321,6 +15294,21 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/control) +"tBa" = ( +/obj/structure/table/wood, +/obj/item/book/manual/srmlore{ + pixel_y = 4; + pixel_x = -4 + }, +/obj/item/flashlight/lantern{ + pixel_x = 8; + pixel_y = 13 + }, +/obj/item/book/manual/trickwines_4_brewers{ + pixel_x = -1 + }, +/turf/open/floor/wood/mahogany, +/area/centcom) "tBL" = ( /obj/structure/table/reinforced, /obj/item/storage/fancy/donut_box, @@ -14378,6 +15366,12 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/control) +"tGR" = ( +/obj/effect/turf_decal/minutemen/corner{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium, +/area/centcom) "tHd" = ( /obj/effect/turf_decal/industrial/warning{ dir = 5 @@ -14410,6 +15404,11 @@ }, /turf/open/floor/plasteel, /area/centcom/evac) +"tOf" = ( +/obj/effect/turf_decal/solgov/wood/center, +/obj/machinery/light/floor, +/turf/open/floor/wood/walnut, +/area/centcom) "tOg" = ( /obj/machinery/computer/prisoner/management{ dir = 1 @@ -14481,6 +15480,10 @@ }, /turf/open/floor/plasteel, /area/tdome/arena_source) +"tUy" = ( +/obj/structure/catwalk/over, +/turf/open/floor/plating, +/area/centcom) "tWM" = ( /obj/structure/table/reinforced, /obj/item/radio{ @@ -14573,6 +15576,34 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/control) +"unc" = ( +/obj/effect/turf_decal/siding/wood{ + color = "#543C30" + }, +/obj/effect/turf_decal/solgov/wood/bottom_center, +/obj/effect/turf_decal/siding/wood{ + color = "#543C30" + }, +/turf/open/floor/wood/walnut, +/area/centcom) +"unP" = ( +/obj/structure/table, +/obj/item/crowbar{ + pixel_y = 8; + pixel_x = -4 + }, +/obj/item/electropack{ + pixel_x = 7; + pixel_y = -2 + }, +/obj/item/kitchen/knife{ + pixel_y = -5; + pixel_x = -5 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/centcom) "uqL" = ( /obj/effect/turf_decal/industrial/warning{ dir = 1 @@ -14586,6 +15617,10 @@ }, /turf/open/floor/plasteel, /area/centcom/control) +"uuY" = ( +/obj/effect/turf_decal/syndicateemblem/bottom/right, +/turf/open/floor/mineral/plastitanium/red, +/area/centcom) "uzX" = ( /obj/structure/table, /obj/item/toy/katana, @@ -14709,6 +15744,9 @@ heat_capacity = 1e+006 }, /area/tdome/tdomeobserve) +"uKW" = ( +/turf/open/floor/mineral/plastitanium/red, +/area/centcom) "uLr" = ( /obj/item/storage/firstaid/toxin, /obj/item/storage/firstaid/o2{ @@ -14751,6 +15789,11 @@ }, /turf/open/floor/plasteel, /area/centcom/supplypod/loading/four) +"uOa" = ( +/obj/effect/turf_decal/syndicateemblem/bottom/middle, +/obj/structure/chair/office/dark, +/turf/open/floor/mineral/plastitanium/red, +/area/centcom) "uRu" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -14847,6 +15890,10 @@ }, /turf/open/floor/plasteel, /area/syndicate_mothership/control) +"veN" = ( +/obj/structure/sign/syndicate, +/turf/closed/indestructible/syndicate, +/area/centcom) "veT" = ( /obj/machinery/vending/coffee, /obj/effect/turf_decal/corner/transparent/bar, @@ -15124,6 +16171,10 @@ }, /turf/open/floor/plasteel/dark, /area/ctf) +"vFM" = ( +/obj/machinery/telecomms/hub/preset, +/turf/open/floor/plasteel, +/area/centcom) "vGf" = ( /obj/effect/turf_decal/industrial/warning{ dir = 10 @@ -15133,6 +16184,18 @@ }, /turf/open/floor/plasteel/dark, /area/ctf) +"vIg" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9; + color = "#543C30" + }, +/obj/effect/turf_decal/solgov/wood/top, +/obj/effect/turf_decal/siding/wood{ + color = "#543C30"; + dir = 1 + }, +/turf/open/floor/wood/walnut, +/area/centcom) "vKH" = ( /obj/structure/table, /obj/machinery/reagentgrinder, @@ -15164,6 +16227,12 @@ }, /turf/open/floor/plasteel/dark, /area/tdome/tdomeobserve) +"vQk" = ( +/obj/structure/chair/wood/wings{ + dir = 1 + }, +/turf/open/floor/wood/mahogany, +/area/centcom) "vQM" = ( /obj/structure/table/wood, /obj/machinery/recharger, @@ -15196,6 +16265,13 @@ }, /turf/open/floor/plasteel, /area/centcom/evac) +"wad" = ( +/obj/effect/turf_decal/minutemen/corner, +/obj/structure/chair/comfy{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium, +/area/centcom) "wbj" = ( /obj/effect/turf_decal/corner/transparent/neutral, /obj/effect/turf_decal/corner/transparent/neutral{ @@ -15255,6 +16331,15 @@ }, /turf/open/floor/circuit/red, /area/ctf) +"weV" = ( +/obj/structure/fluff/paper/stack{ + dir = 6; + pixel_y = 11; + pixel_x = 7 + }, +/obj/structure/catwalk/over, +/turf/open/floor/plating, +/area/centcom) "wfQ" = ( /obj/structure/trap/ctf/red, /obj/effect/turf_decal/corner/opaque/red{ @@ -15399,6 +16484,28 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/ferry) +"wAh" = ( +/obj/machinery/fax/admin/inteq, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/yellow{ + dir = 1 + }, +/obj/structure/table, +/turf/open/floor/plasteel, +/area/centcom) +"wCp" = ( +/obj/structure/table/wood/fancy/blue, +/obj/item/folder/solgov/red{ + pixel_x = -3 + }, +/obj/item/folder/solgov{ + pixel_y = 5; + pixel_x = 2 + }, +/turf/open/floor/carpet/royalblue, +/area/centcom) "wEF" = ( /obj/effect/turf_decal/corner/opaque/red, /obj/effect/turf_decal/corner/opaque/red{ @@ -15553,6 +16660,7 @@ name = "CentCom Stand"; req_access_txt = "109" }, +/obj/machinery/fax/admin, /turf/open/floor/plasteel/grimy, /area/centcom/control) "xaO" = ( @@ -15680,6 +16788,10 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/control) +"xxi" = ( +/obj/effect/turf_decal/syndicateemblem/top/middle, +/turf/open/floor/mineral/plastitanium/red, +/area/centcom) "xEx" = ( /obj/structure/chair, /obj/effect/turf_decal/industrial/warning{ @@ -15779,6 +16891,10 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/ferry) +"xTt" = ( +/obj/effect/turf_decal/solgov/wood/center_right, +/turf/open/floor/wood/walnut, +/area/centcom) "xWv" = ( /obj/effect/turf_decal/corner/opaque/green{ dir = 1 @@ -15829,6 +16945,13 @@ dir = 1 }, /area/centcom/supply) +"yhk" = ( +/obj/machinery/door/airlock/wood{ + dir = 4; + req_access = "109" + }, +/turf/open/floor/wood/mahogany, +/area/centcom) "yhL" = ( /obj/effect/turf_decal/corner/opaque/red{ dir = 1 @@ -25311,21 +26434,21 @@ aaa aaa aaa aaa +aPu +aPu +aPu +aPu +aPu +aPu +aPu aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +hzJ +hzJ +hzJ +hzJ +bbf +hzJ +hzJ aaa aaa aaa @@ -25568,21 +26691,21 @@ aaa aaa aaa aaa +aPu +bSy +wCp +iwJ +njp +psm +aPu aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +hzJ +lQr +moE +qVq +qVq +bIJ +hzJ aaa aaa aaa @@ -25825,21 +26948,21 @@ aaa aaa aaa aaa +aPu +nYl +dER +qkP +jja +eqM +aPu aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +hzJ +hba +wad +pTR +gaU +vFM +hzJ aaa aaa aaa @@ -26082,21 +27205,21 @@ aaa aaa aaa aaa +aPu +gTo +gfJ +vIg +tOf +unc +iSo aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +hzJ +kkC +pvW +iWI +hBf +rvC +hzJ aaa aaa aaa @@ -26339,21 +27462,21 @@ aaa aaa aaa aaa +aPu +phf +dER +pwr +xTt +pLM +aPu aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +hzJ +qVq +tGR +kiC +bUH +bRF +hzJ aaa aaa aaa @@ -26596,21 +27719,21 @@ aaa aaa aaa aaa +aPu +dom +qju +naB +oaQ +gsx +aPu aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +hzJ +dKW +qVq +qVq +aIF +igC +hzJ aaa aaa aaa @@ -26853,21 +27976,21 @@ aaa aaa aaa aaa +aPu +aPu +aPu +aPu +aPu +aPu +aPu aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +hzJ +hzJ +hzJ +hzJ +hzJ +hzJ +hzJ aaa aaa aaa @@ -27367,21 +28490,21 @@ aaa aaa aaa aaa +lJp +lJp +lJp +lJp +lJp +lJp +lJp aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +hzJ +hzJ +hzJ +mpi +hzJ +hzJ +hzJ aaa aaa aaa @@ -27624,21 +28747,21 @@ aaa aaa aaa aaa +veN +cCK +cUG +mAL +fKt +iZr +veN aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +hzJ +mJP +lmY +tUy +sMn +kFX +hzJ aaa aaa aaa @@ -27881,21 +29004,21 @@ aaa aaa aaa aaa +fUc +uKW +mJl +myU +kXn +msQ +lJp aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +hzJ +lHR +rmj +weV +lXI +tAe +hzJ aaa aaa aaa @@ -28138,21 +29261,21 @@ aaa aaa aaa aaa +lJp +qqj +xxi +jPn +uOa +jFa +lJp aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +hzJ +jDt +ibc +eWz +lXQ +duw +hzJ aaa aaa aaa @@ -28395,21 +29518,21 @@ aaa aaa aaa aaa +fUc +uKW +mPN +kmQ +uuY +jly +lJp aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +hzJ +iRP +fau +gDV +iti +unP +hzJ aaa aaa aaa @@ -28652,21 +29775,21 @@ aaa aaa aaa aaa +veN +lfK +ciU +iyJ +bFc +iZr +veN aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +hzJ +mDT +ttK +nos +cZi +pvN +hzJ aaa aaa aaa @@ -28909,21 +30032,21 @@ aaa aaa aaa aaa +lJp +lJp +lJp +lJp +lJp +lJp +lJp aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +hzJ +hzJ +hzJ +eLy +hzJ +hzJ +hzJ aaa aaa aaa @@ -29423,21 +30546,21 @@ aaa aaa aaa aaa +aPu +aPu +aPu +aPu +aPu +aPu +aPu aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +eAJ +eAJ +eAJ +eAJ +eAJ +eAJ +eAJ aaa aaa aaa @@ -29680,21 +30803,21 @@ aaa aaa aaa aaa +aPu +nYZ +mGE +rUa +mGE +odH +aPu aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +eAJ +mVC +qoL +jEn +etl +oHB +eAJ aaa aaa aaa @@ -29937,21 +31060,21 @@ aaa aaa aaa aaa +aPu +qLN +fTU +emF +sVJ +apm +aPu aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +eAJ +tBa +qoL +qQA +iDo +hYV +eAJ aaa aaa aaa @@ -30194,21 +31317,21 @@ aaa aaa aaa aaa +aPu +wAh +cxm +emF +emF +cjo +ouD aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +eAJ +lfi +vQk +qQA +iDo +qQe +eAJ aaa aaa aaa @@ -30451,21 +31574,21 @@ aaa aaa aaa aaa +aPu +sZJ +plP +emF +lYF +cIS +aPu aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +eAJ +jyy +qoL +qQA +iDo +qQe +eAJ aaa aaa aaa @@ -30708,21 +31831,21 @@ aaa aaa aaa aaa +aPu +lKP +sQw +rjV +sQw +tvO +aPu aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +eAJ +mVC +qoL +qQA +iDo +hYV +eAJ aaa aaa aaa @@ -30965,21 +32088,21 @@ aaa aaa aaa aaa +aPu +aPu +aPu +aPu +aPu +aPu +aPu aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +eAJ +eAJ +eAJ +yhk +eAJ +eAJ +eAJ aaa aaa aaa diff --git a/_maps/outpost/hangar/nt_asteroid_20x20.dmm b/_maps/outpost/hangar/nt_asteroid_20x20.dmm index c3d35afcea1..159af62d17c 100644 --- a/_maps/outpost/hangar/nt_asteroid_20x20.dmm +++ b/_maps/outpost/hangar/nt_asteroid_20x20.dmm @@ -1037,7 +1037,7 @@ /obj/structure/table/reinforced{ color = "#c1b6a5" }, -/obj/machinery/fax, +/obj/machinery/fax/ruin, /turf/open/floor/plasteel/dark{ planetary_atmos = 1 }, diff --git a/_maps/outpost/hangar/nt_asteroid_40x20.dmm b/_maps/outpost/hangar/nt_asteroid_40x20.dmm index 959b27a5dd9..0d229e5d7af 100644 --- a/_maps/outpost/hangar/nt_asteroid_40x20.dmm +++ b/_maps/outpost/hangar/nt_asteroid_40x20.dmm @@ -1233,7 +1233,7 @@ /obj/structure/table/reinforced{ color = "#c1b6a5" }, -/obj/machinery/fax, +/obj/machinery/fax/ruin, /obj/effect/turf_decal/techfloor{ dir = 4 }, diff --git a/_maps/outpost/nanotrasen_asteroid.dmm b/_maps/outpost/nanotrasen_asteroid.dmm index 8f5c38ded0e..d5ccb5e0af6 100644 --- a/_maps/outpost/nanotrasen_asteroid.dmm +++ b/_maps/outpost/nanotrasen_asteroid.dmm @@ -3558,7 +3558,7 @@ /area/outpost/crew/library) "mZ" = ( /obj/structure/table/wood, -/obj/machinery/fax, +/obj/machinery/fax/ruin, /turf/open/floor/plasteel, /area/outpost/crew/canteen) "na" = ( diff --git a/_maps/outpost/nanotrasen_ice.dmm b/_maps/outpost/nanotrasen_ice.dmm index bc92fdbc20c..04b8040a627 100644 --- a/_maps/outpost/nanotrasen_ice.dmm +++ b/_maps/outpost/nanotrasen_ice.dmm @@ -7463,7 +7463,7 @@ /area/outpost/security/armory) "XG" = ( /obj/structure/table/reinforced, -/obj/machinery/fax, +/obj/machinery/fax/ruin, /obj/machinery/light/directional/south, /turf/open/floor/plasteel/telecomms_floor, /area/outpost/security) diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index 1adec75b74a..44f0893cd9a 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -67,6 +67,8 @@ #define ADMIN_COORDJMP(src) "[src ? "[COORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]" #define ADMIN_VERBOSEJMP(src) "[src ? "[AREACOORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]" #define ADMIN_INDIVIDUALLOG(user) "(LOGS)" +/// Displays "(SHOW)" in the chat, when clicked it tries to show atom(paper). First you need to set the request_state variable to TRUE for the paper. +#define ADMIN_SHOW_PAPER(atom) "(SHOW)" #define ADMIN_PUNISHMENT_BREAK_BONES "Break all bones" #define ADMIN_PUNISHMENT_LIGHTNING "Lightning bolt" diff --git a/code/_globalvars/lists/faxes.dm b/code/_globalvars/lists/faxes.dm deleted file mode 100644 index 5c78629de28..00000000000 --- a/code/_globalvars/lists/faxes.dm +++ /dev/null @@ -1,26 +0,0 @@ -/** - * This defines the list of faxes managed by the server administrators. They are not physically present in - * the game, but are shown in the fax list as existing. - * Lists: - * * additional_faxes_list - A list of "legal" faxes available with authorization. - * * frontier_faxes_list - List of faxes available after hacking. - * - * The list consists of the following elements: - * * fax_name - The name displayed in the fax list. - * * button_color - The color of this fax button in the list of all faxes. - */ -GLOBAL_LIST_INIT(additional_faxes_list, list( - list("fax_name" = "Nanotrasen Central Command", "button_color" = "#46B946"), - list("fax_name" = "Inteq Management Field Command", "button_color" = "#FACE65"), - list("fax_name" = "Colonial Minutemen Headquarters", "button_color" = "#538ACF"), - list("fax_name" = "Saint-Roumain Council of Huntsmen", "button_color" = "#6B443D"), - list("fax_name" = "SolGov Department of Administrative Affairs", "button_color" = "#536380"), - list("fax_name" = "Syndicate Coordination Center", "button_color" = "#B22C20"), - list("fax_name" = "Outpost Administration", "button_color" = "#dddfc9"), -)) - -GLOBAL_LIST_INIT(frontier_faxes_list, list( - list("fax_name" = "Frontiersmen Communications Outpost", "button_color" = "#70654C") -)) - -GLOBAL_LIST_EMPTY(fax_machines) //list of all fax machines diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index 82258dfdcd4..ac54c7a39b3 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -11,6 +11,7 @@ GLOBAL_LIST_EMPTY(wayfindingbeacons) //list of all navigation beacons used GLOBAL_LIST_EMPTY(nuke_list) GLOBAL_LIST_EMPTY(alarmdisplay) //list of all machines or programs that can display station alerts GLOBAL_LIST_EMPTY(singularities) //list of all singularities on the station (actually technically all engines) +GLOBAL_LIST_EMPTY(fax_machines) //list of all fax machines GLOBAL_LIST(chemical_reactions_list) //list of all /datum/chemical_reaction datums. Used during chemical reactions GLOBAL_LIST(chemical_reagents_list) //list of all /datum/reagent datums indexed by reagent id. Used by chemistry stuff diff --git a/code/game/machinery/telecomms/machines/relay.dm b/code/game/machinery/telecomms/machines/relay.dm index 15f96e69022..773faec875f 100644 --- a/code/game/machinery/telecomms/machines/relay.dm +++ b/code/game/machinery/telecomms/machines/relay.dm @@ -73,6 +73,36 @@ toggled = FALSE autolinkers = list("r_relay") +/obj/machinery/telecomms/relay/preset/nanotrasen + freq_listening = list(FREQ_COMMAND, FREQ_NANOTRASEN, FREQ_COMMON) + id = "Nanotrasen Relay" + network = "nt_commnet" + +/obj/machinery/telecomms/relay/preset/inteq + freq_listening = list(FREQ_COMMAND, FREQ_INTEQ, FREQ_COMMON) + id = "IRMG Relay" + network = "irmg_commnet" + +/obj/machinery/telecomms/relay/preset/minutemen + freq_listening = list(FREQ_COMMAND, FREQ_MINUTEMEN, FREQ_COMMON) + id = "CMM Relay" + network = "cmm_commnet" + +/obj/machinery/telecomms/relay/preset/solgov + freq_listening = list(FREQ_COMMAND, FREQ_SOLGOV, FREQ_COMMON) + id = "SolGov Relay" + network = "solgov_commnet" + +/obj/machinery/telecomms/relay/preset/syndicate + freq_listening = list(FREQ_COMMAND, FREQ_SYNDICATE, FREQ_COMMON) + id = "Syndicate Relay" + network = "synd_commnet" + +/obj/machinery/telecomms/relay/preset/frontiersmen + freq_listening = list(FREQ_COMMAND, FREQ_PIRATE, FREQ_COMMON) + id = "Frontiersmen Relay" + network = "frontier_commnet" + //Generic preset relay /obj/machinery/telecomms/relay/preset/auto hide = TRUE diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index 7056c7a38d9..306634a639f 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -687,7 +687,6 @@ name = "Fax Machine" build_path = /obj/machinery/fax req_components = list( - /obj/item/stock_parts/subspace/crystal = 1, /obj/item/stock_parts/scanning_module = 1, /obj/item/stock_parts/micro_laser = 1, /obj/item/stock_parts/manipulator = 1,) diff --git a/code/game/turfs/closed/_closed.dm b/code/game/turfs/closed/_closed.dm index d179a2930d2..c7a1d9dd6f2 100644 --- a/code/game/turfs/closed/_closed.dm +++ b/code/game/turfs/closed/_closed.dm @@ -230,7 +230,7 @@ /turf/closed/indestructible/fakedoor name = "CentCom Access" icon = 'icons/obj/doors/airlocks/centcom/centcom.dmi' - icon_state = "fake_door" + icon_state = "fakedoor" /turf/closed/indestructible/rock name = "dense rock" diff --git a/code/modules/admin/admin_fax_panel.dm b/code/modules/admin/admin_fax_panel.dm new file mode 100644 index 00000000000..32f523584a3 --- /dev/null +++ b/code/modules/admin/admin_fax_panel.dm @@ -0,0 +1,145 @@ +/** + * If client have R_ADMIN flag, opens an admin fax panel. + */ +/client/proc/fax_panel() + set name = "Send Fax Message" + set category = "Admin" + + if(!check_rights(R_ADMIN)) + return + + var/datum/fax_panel_interface/ui = new(usr) + ui.ui_interact(usr) + +/// Admin Fax Panel. Tool for sending fax messages faster. +/datum/fax_panel_interface + /// All faxes in from machinery list() + var/available_faxes = list() + /// List with available stamps + var/stamp_list = list() + + /// Paper which admin edit and send. + var/obj/item/paper/fax_paper = new /obj/item/paper(null) + + /// Default name of fax. Used when field with fax name not edited. + var/sending_fax_name = "Secret" + /// Default name of paper. paper - bluh-bluh. Used when field with paper name not edited. + var/default_paper_name = "Standard Report" + +/datum/fax_panel_interface/New() + //Get all faxes, and save them to our list. + for(var/obj/machinery/fax/fax as anything in GLOB.fax_machines) + available_faxes += WEAKREF(fax) + + //Get all stamps + for(var/stamp in subtypesof(/obj/item/stamp)) + var/obj/item/stamp/real_stamp = new stamp() + if(!istype(real_stamp, /obj/item/stamp/chameleon)) + var/stamp_detail = real_stamp.get_writing_implement_details() + stamp_list += list(list(real_stamp.name, real_stamp.icon_state, stamp_detail["stamp_class"])) + + //Give our paper special status, to read everywhere. + fax_paper.request_state = TRUE + +/** + * Return fax if name exists + * Arguments: + * * name - Name of fax what we try to find. + */ +/datum/fax_panel_interface/proc/get_fax_by_name(name) + if(!length(available_faxes)) + return null + + for(var/datum/weakref/weakrefed_fax as anything in available_faxes) + var/obj/machinery/fax/potential_fax = weakrefed_fax.resolve() + if(potential_fax && istype(potential_fax)) + if(potential_fax.fax_name == name) + return potential_fax + return null + +/datum/fax_panel_interface/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "AdminFax") + ui.open() + +/datum/fax_panel_interface/ui_state(mob/user) + return GLOB.admin_state + +/datum/fax_panel_interface/ui_static_data(mob/user) + var/list/data = list() + + data["faxes"] = list() + data["stamps"] = list() + + for(var/stamp in stamp_list) + data["stamps"] += list(stamp[1]) // send only names. + + for(var/datum/weakref/weakrefed_fax as anything in available_faxes) + var/obj/machinery/fax/another_fax = weakrefed_fax.resolve() + if(another_fax && istype(another_fax)) + data["faxes"] += list(another_fax.fax_name) + + return data + +/datum/fax_panel_interface/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + if(..()) + return + + if(!check_rights(R_ADMIN)) + return + + var/obj/machinery/fax/action_fax + + if(params["faxName"]) + action_fax = get_fax_by_name(params["faxName"]) + + switch(action) + + if("follow") + if(!isobserver(usr)) + usr.client?.admin_ghost() + + usr.client?.holder?.admin_follow(action_fax) + + if("preview") // see saved variant + if(!fax_paper) + return + fax_paper.ui_interact(usr) + + if("save") // save paper + if(params["paperName"]) + default_paper_name = params["paperName"] + if(params["fromWho"]) + sending_fax_name = params["fromWho"] + + fax_paper.clear_paper() + var/stamp + var/stamp_class + + for(var/needed_stamp in stamp_list) + if(needed_stamp[1] == params["stamp"]) + stamp = needed_stamp[2] + stamp_class = needed_stamp[3] + break + + fax_paper.name = "paper — [default_paper_name]" + fax_paper.add_raw_text(params["rawText"], advanced_html = TRUE) + + if(stamp) + fax_paper.add_stamp(stamp_class, params["stampX"], params["stampY"], params["stampAngle"], stamp) + + fax_paper.update_static_data(usr) // OK, it's work, and update UI. + + if("send") + //copy + var/obj/item/paper/our_fax = fax_paper.copy(/obj/item/paper) + our_fax.name = fax_paper.name + //send + action_fax.receive(our_fax, sending_fax_name, important = TRUE) + message_admins("[key_name_admin(usr)] has sent a custom fax message to [action_fax.name][ADMIN_FLW(action_fax)][ADMIN_SHOW_PAPER(fax_paper)].") + log_admin("[key_name(usr)] has sent a custom fax message to [action_fax.name]") + + if("createPaper") + var/obj/item/paper/our_paper = fax_paper.copy(/obj/item/paper, usr.loc) + our_paper.name = fax_paper.name diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 929cf33f331..a853f66963a 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -26,7 +26,9 @@ GLOBAL_PROTECT(admin_verbs_default) /client/proc/resetasaycolor, /client/proc/fix_air, /*resets air in designated radius to its default atmos composition*/ /client/proc/addbunkerbypass, - /client/proc/revokebunkerbypass + /client/proc/revokebunkerbypass, + /client/proc/requests, + /client/proc/fax_panel, /*send a paper to fax*/ ) GLOBAL_LIST_INIT(admin_verbs_admin, world.AVerbsAdmin()) GLOBAL_PROTECT(admin_verbs_admin) @@ -119,7 +121,6 @@ GLOBAL_LIST_INIT(admin_verbs_fun, list( /client/proc/polymorph_all, /client/proc/show_tip, /client/proc/smite, - /client/proc/fax_manager, /client/proc/spawn_ruin, )) GLOBAL_PROTECT(admin_verbs_fun) @@ -283,7 +284,6 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list( /client/proc/cmd_display_del_log, /client/proc/toggle_combo_hud, /client/proc/debug_huds, - /client/proc/fax_manager )) GLOBAL_PROTECT(admin_verbs_hideable) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index bb46d7250b0..b917501d0bb 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -2218,10 +2218,14 @@ return GLOB.interviews.ui_interact(usr) - else if(href_list["open_fax_manager"]) + else if(href_list["show_paper"]) if(!check_rights(R_ADMIN)) return - usr.client.fax_manager() + + var/obj/item/paper/paper_to_show = locate(href_list["show_paper"]) + if(!istype(paper_to_show)) + return + paper_to_show.ui_interact(usr) /datum/admins/proc/HandleCMode() if(!check_rights(R_ADMIN)) diff --git a/code/modules/admin/verbs/fax_manager.dm b/code/modules/admin/verbs/fax_manager.dm deleted file mode 100644 index 6c6de9d5d10..00000000000 --- a/code/modules/admin/verbs/fax_manager.dm +++ /dev/null @@ -1,9 +0,0 @@ -/client/proc/fax_manager() - set category = "Fun" - set name = "Fax Manager" - set desc = "Open the manager panel to view all requests during the round in progress." - if(!check_rights(R_ADMIN)) - return - - SSblackbox.record_feedback("tally", "admin_verb", 1, "Fax Manager") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - GLOB.fax_manager.ui_interact(usr) diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index 05dccfc0ca7..c2be9649d7c 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -44,23 +44,21 @@ deity = "Ashen Hunter" var/msg_tmp = msg + GLOB.requests.pray(usr.client, msg, usr.job == "Chaplain") msg = "[icon2html(cross, GLOB.admins)][prayer_type][deity ? " (to [deity])" : ""]: [ADMIN_FULLMONTY(src)] [ADMIN_SC(src)]: [msg]" for(var/client/C in GLOB.admins) if(C.prefs.chat_toggles & CHAT_PRAYER) to_chat(C, msg, confidential = TRUE) - if(C.prefs.toggles & SOUND_PRAYERS) - if(usr.job == "Chaplain") - SEND_SOUND(C, sound('sound/effects/pray.ogg')) to_chat(usr, "You pray to the gods: \"[msg_tmp]\"", confidential = TRUE) SSredbot.send_discord_message("admin", "Prayer from [src.key]/([src.name]): [msg]") SSblackbox.record_feedback("tally", "admin_verb", 1, "Prayer") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - //log_admin("HELP: [key_name(src)]: [msg]") /// Used by communications consoles to message CentCom /proc/message_centcom(text, mob/sender) var/msg = copytext_char(sanitize(text), 1, MAX_MESSAGE_LEN) + GLOB.requests.message_centcom(sender.client, msg) msg = "CENTCOM:[ADMIN_FULLMONTY(sender)] [ADMIN_CENTCOM_REPLY(sender)]: [msg]" to_chat(GLOB.admins, msg, confidential = TRUE) for(var/obj/machinery/computer/communications/console in GLOB.machines) @@ -69,6 +67,7 @@ /// Used by communications consoles to message the Syndicate /proc/message_syndicate(text, mob/sender) var/msg = copytext_char(sanitize(text), 1, MAX_MESSAGE_LEN) + GLOB.requests.message_syndicate(sender.client, msg) msg = "SYNDICATE:[ADMIN_FULLMONTY(sender)] [ADMIN_SYNDICATE_REPLY(sender)]: [msg]" to_chat(GLOB.admins, msg, confidential = TRUE) for(var/obj/machinery/computer/communications/console in GLOB.machines) @@ -77,6 +76,7 @@ /// Used by communications consoles to request the nuclear launch codes /proc/nuke_request(text, mob/sender) var/msg = copytext_char(sanitize(text), 1, MAX_MESSAGE_LEN) + GLOB.requests.nuke_request(sender.client, msg) msg = "NUKE CODE REQUEST:[ADMIN_FULLMONTY(sender)] [ADMIN_CENTCOM_REPLY(sender)] [ADMIN_SET_SD_CODE]: [msg]" to_chat(GLOB.admins, msg, confidential = TRUE) for(var/obj/machinery/computer/communications/console in GLOB.machines) diff --git a/code/modules/admin/verbs/requests.dm b/code/modules/admin/verbs/requests.dm new file mode 100644 index 00000000000..94aa976dbd1 --- /dev/null +++ b/code/modules/admin/verbs/requests.dm @@ -0,0 +1,7 @@ +/// Verb for opening the requests manager panel +/client/proc/requests() + set name = "Requests Manager" + set desc = "Open the request manager panel to view all requests during this round" + set category = "Admin" + SSblackbox.record_feedback("tally", "admin_verb", 1, "Request Manager") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + GLOB.requests.ui_interact(usr) diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 06d96d7229c..8db2e845482 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -231,6 +231,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( GLOB.ahelp_tickets.client_login(src) GLOB.interviews.client_login(src) + GLOB.requests.client_login(src) var/connecting_admin = FALSE //because de-admined admins connecting should be treated like admins. //Admin Authorisation holder = GLOB.admin_datums[ckey] @@ -501,6 +502,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( log_access("Logout: [key_name(src)]") GLOB.ahelp_tickets.client_logout(src) GLOB.interviews.client_logout(src) + GLOB.requests.client_logout(src) SSserver_maint.UpdateHubStatus() if(credits) QDEL_LIST(credits) diff --git a/code/modules/paperwork/fax.dm b/code/modules/paperwork/fax.dm index b1696a27fca..a4881fdfee3 100644 --- a/code/modules/paperwork/fax.dm +++ b/code/modules/paperwork/fax.dm @@ -18,10 +18,6 @@ var/seconds_electrified = MACHINE_NOT_ELECTRIFIED /// If true, the fax machine is jammed and needs cleaning var/jammed = FALSE - /// Determines the possibility of sending papers to the additional faxes. - var/access_additional_faxes = FALSE - /// Defines a list of accesses whose owners can open a connection with the additional faxes. - var/static/access_additional_faxes_required = list(ACCESS_HEADS, ACCESS_LAWYER, ACCESS_SECURITY) /// Necessary to hide syndicate faxes from the general list. Doesn't mean he's EMAGGED! var/frontier_network = FALSE /// True if the fax machine should be visible to other fax machines in general. @@ -53,23 +49,47 @@ /obj/item/holochip, /obj/item/card, ) + /// Internal radio for announcing over comms + var/obj/item/radio/radio + /// Radio channel to speak into + var/radio_channel + /// Cooldown for aformentioned radio, prevents radio spam + COOLDOWN_DECLARE(radio_cooldown) + + /// List with a fake-networks(not a fax actually), for request manager. + var/list/special_networks = list( + list(fax_name = "Nanotrasen Central Command", fax_id = "nanotrasen", color = "green", emag_needed = FALSE), + list(fax_name = "IRMG Mothership", fax_id = "inteq", color = "yellow", emag_needed = FALSE), + list(fax_name = "Solarian Confederation Frontier Affairs", fax_id = "solgov", color = "teal", emag_needed = FALSE), + list(fax_name = "Roumain Council of Huntsmen", fax_id = "roumain", color = "brown", emag_needed = FALSE), + list(fax_name = "Colonial League Leadership", fax_id = "minutemen", color = "blue", emag_needed = FALSE), + list(fax_name = "Syndicate Coalition Coordination Center", fax_id = "syndicate", color = "red", emag_needed = FALSE), + list(fax_name = "Frontiersmen Communications Quartermaster", fax_id = "frontiersmen", color = "black", emag_needed = TRUE) + ) + // should we make our message be important and be recieved in admin faxes + var/admin_fax_id /obj/machinery/fax/Initialize(mapload) . = ..() GLOB.fax_machines += src if(!fax_id) fax_id = SSnetworks.make_address() - if(fax_name == initial(fax_name)) + if(fax_name == initial(fax_name) && !admin_fax_id) fax_name = "[get_area_name(src)] Fax Machine" wires = new /datum/wires/fax(src) -/obj/machinery/fax/hacked - set_obj_flags = "EMAGGED" - allow_exotic_faxes = TRUE - access_additional_faxes = TRUE + radio = new(src) + radio.subspace_transmission = TRUE + radio.canhear_range = 0 + // Override in subtypes // no + radio.on = TRUE -/obj/machinery/fax/frontiersmen - frontier_network = TRUE +/obj/machinery/fax/ruin + visible_to_network = FALSE + +/obj/machinery/fax/ruin/Initialize(mapload) + . = ..() + fax_name = "Unregistered Fax Machine " + fax_id /obj/machinery/fax/Destroy() GLOB.fax_machines -= src @@ -113,6 +133,20 @@ obj_flags |= EMAGGED to_chat(user, "The screen of the [src] flickers!") +/** + * EMP Interaction + */ +/obj/machinery/fax/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return + allow_exotic_faxes = !allow_exotic_faxes + visible_message("[src] [allow_exotic_faxes ? "starts beeping" : "stops beeping"] ominously[allow_exotic_faxes ? "..." : "."]") + +/** + * Unanchor/anchor + */ + /obj/machinery/fax/wrench_act(mob/living/user, obj/item/tool) . = ..() default_unfasten_wrench(user, tool) @@ -161,27 +195,6 @@ return return ..() -// Checks if the card has access to switch "legal" faxes of administrators. -/obj/machinery/fax/proc/access_additional_faxes_check(mob/living/user) - if(isAdminObserver(user)) - return TRUE - - var/obj/item/card/id/used_card = user.get_idcard(TRUE) - if(used_card) - // We check if it makes sense to check access at all. - if(!access_additional_faxes_required || !used_card.access) - return FALSE - - for(var/requested_access in access_additional_faxes_required) - if(requested_access in used_card.access) - return TRUE - return FALSE - -// Switches access to the "legal" administrator's fax list. Access to the "illegal" is switched by hacking. -/obj/machinery/fax/proc/access_additional_faxes_toggle() - access_additional_faxes = !access_additional_faxes - say("Bluespace channel communication [access_additional_faxes ? "opened" : "closed"].") - /** * Attempts to clean out a jammed machine using a passed item. * Returns true if successful. @@ -237,12 +250,6 @@ ui.open() ui.set_autoupdate(TRUE) -/obj/machinery/fax/ui_static_data(mob/user) - var/list/data = list() - data["additional_faxes_list"] = GLOB.additional_faxes_list - data["frontier_faxes_list"] = GLOB.frontier_faxes_list - return data - /obj/machinery/fax/ui_data(mob/user) var/list/data = list() //Record a list of all existing faxes. @@ -264,12 +271,11 @@ data["fax_id"] = fax_id data["fax_name"] = fax_name data["visible"] = visible_to_network - data["access_additional_faxes"] = access_additional_faxes - data["сan_switch_access"] = access_additional_faxes_check(user) // In this case, we don't care if the fax is hacked or in the syndicate's network. The main thing is to check the visibility of other faxes. data["frontier_network"] = (frontier_network || (obj_flags & EMAGGED)) data["has_paper"] = !!loaded_item_ref?.resolve() data["fax_history"] = fax_history + data["special_faxes"] = special_networks return data /obj/machinery/fax/ui_act(action, list/params) @@ -287,8 +293,6 @@ loaded_item_ref = null update_icon() return TRUE - if("access_additional_faxes_toggle") - access_additional_faxes_toggle() if("send") var/obj/item/loaded = loaded_item_ref?.resolve() if(!loaded) @@ -299,17 +303,31 @@ loaded_item_ref = null update_icon() return TRUE - if("send_to_additional_fax") - var/obj/item/loaded = loaded_item_ref?.resolve() - if(!loaded) + if("send_special") + var/obj/item/paper/fax_paper = loaded_item_ref?.resolve() + if(!fax_paper) + return + if(!istype(fax_paper)) + to_chat(usr, icon2html(src.icon, usr) + "ERROR: Failed to send fax.") return - if(istype(loaded, /obj/item/paper)) - if(send_to_additional_faxes(loaded, usr, params["name"], params["color"])) - loaded_item_ref = null - update_icon() - return TRUE - else - say("The destination fax blocks the reception of this item.") + + fax_paper.request_state = TRUE + fax_paper.loc = null + + INVOKE_ASYNC(src, PROC_REF(animate_object_travel), fax_paper, "fax_receive", find_overlay_state(fax_paper, "send")) + history_add("Send", params["name"]) + + GLOB.requests.fax_request(usr.client, "sent a fax message from [fax_name]/[fax_id] to [params["name"]]", fax_paper) + to_chat(GLOB.admins, "[icon2html(src.icon, GLOB.admins)]FAX REQUEST: [ADMIN_FULLMONTY(usr)]: sent a fax message from [fax_name]/[fax_id][ADMIN_FLW(src)] to [html_encode(params["name"])] [ADMIN_SHOW_PAPER(fax_paper)]") + log_fax(fax_paper, params["id"], params["name"]) + loaded_item_ref = null + + for(var/obj/machinery/fax/fax as anything in GLOB.fax_machines) + if(fax.admin_fax_id == params["id"]) + fax.receive(fax_paper, fax_name) + break + update_appearance() + if("history_clear") history_clear() return TRUE @@ -349,40 +367,12 @@ balloon_alert(usr, "destination port jammed") playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, -9) return FALSE - fax.receive(loaded, fax_name) - playback_sending(loaded, fax.fax_name) + fax.receive(loaded, fax_name, important = admin_fax_id) + history_add("Send", fax.fax_name) + INVOKE_ASYNC(src, PROC_REF(animate_object_travel), loaded, "fax_receive", find_overlay_state(loaded, "send")) return TRUE return FALSE -/** - * The procedure for sending a item to virtual admins fax machine. - * - * This procedure is similar to the send procedure except that it sends the item to - * a "virtual" fax to a special administrator list. - * Arguments: - * * loaded - The item to be sent. - * * sender - Reference to the sender's substance. - * * receiver_name - The recipient's fax name, which will be displayed in the administrator's list. - * * receiver_color - The color the receiver_name will be colored in. - */ -/obj/machinery/fax/proc/send_to_additional_faxes(obj/item/loaded, mob/sender, receiver_name, receiver_color) - GLOB.fax_manager.receive_request(sender, src, receiver_name, loaded, receiver_color) - playback_sending(loaded, receiver_name) - log_fax(loaded, "ADDITIONAL", receiver_name) - return TRUE - -/** - * The procedure for playing the animation. - * - * Procedure called to add to the history of sending messages, playing the sending animation. - * Arguments: - * * loaded - Sending item to determine the animation.. - * * receiver_name - Recipient's name to be added to the message history. - */ -/obj/machinery/fax/proc/playback_sending(obj/item/loaded, receiver_name) - history_add("Send", receiver_name) - INVOKE_ASYNC(src, PROC_REF(animate_object_travel), loaded, "fax_receive", find_overlay_state(loaded, "send")) - /** * Procedure for accepting papers from another fax machine. * @@ -391,7 +381,7 @@ * * loaded - The object to be printed. * * sender_name - The sender's name, which will be displayed in the message and recorded in the history of operations. */ -/obj/machinery/fax/proc/receive(obj/item/loaded, sender_name) +/obj/machinery/fax/proc/receive(obj/item/loaded, sender_name, important = FALSE) playsound(src, 'sound/items/poster_being_created.ogg', 20, FALSE) INVOKE_ASYNC(src, PROC_REF(animate_object_travel), loaded, "fax_receive", find_overlay_state(loaded, "receive")) say("Received correspondence from [sender_name].") @@ -504,3 +494,45 @@ do_sparks(5, TRUE, src) var/check_range = TRUE return electrocute_mob(user, get_area(src), src, 0.7, check_range) + +/obj/machinery/fax/frontiersmen + frontier_network = TRUE + visible_to_network = FALSE + +/obj/machinery/fax/admin + name = "Central Command Fax Machine" + fax_name = "Nanotrasen Central Command" + radio_channel = RADIO_CHANNEL_CENTCOM + visible_to_network = FALSE + admin_fax_id = "nanotrasen" + +/obj/machinery/fax/admin/solgov + name = "SolGov Frontier Affairs Fax Machine" + fax_name = "Solarian Confederation Frontier Affairs" + admin_fax_id = "solgov" + +/obj/machinery/fax/admin/syndicate + name = "Syndicate Coordination Fax Machine" + fax_name = "Syndicate Coordination Center" + admin_fax_id = "syndicate" + +/obj/machinery/fax/admin/inteq + name = "IRMG Fax Machine" + fax_name = "IRMG Mothership" + admin_fax_id = "inteq" + +/obj/machinery/fax/admin/minutemen + name = "CLIP HiComm Fax Machine" + fax_name = "Colonial League Leadership" + admin_fax_id = "minutemen" + +/obj/machinery/fax/admin/roumain + name = "Huntsman Council Fax Machine" + fax_name = "Saint-Roumain Council of Huntsmen" + admin_fax_id = "roumain" + +/obj/machinery/fax/admin/frontiersmen + name = "old fax machine" + fax_name = "Frontiersmen Communications Quartermaster" + admin_fax_id = "frontiersmen" + frontier_network = TRUE diff --git a/code/modules/paperwork/fax_manager.dm b/code/modules/paperwork/fax_manager.dm deleted file mode 100644 index 0107e440bec..00000000000 --- a/code/modules/paperwork/fax_manager.dm +++ /dev/null @@ -1,154 +0,0 @@ -GLOBAL_DATUM_INIT(fax_manager, /datum/fax_manager, new) - -/** - * Fax Request Manager - * - * In its functionality it is similar to the usual Request Manager, but respectively for faxes. - * This manager allows you to send faxes on behalf of certain virtual faxes to all existing faxes, - * as well as receive faxes in their name from the players. - */ -/datum/fax_manager - /// A list that contains faxes from players and other related information. You can view the filling of its fields in the procedure receive_request. - var/list/requests = list() - -/datum/fax_manager/Destroy(force, ...) - QDEL_LIST(requests) - return ..() - -/datum/fax_manager/ui_interact(mob/user, datum/tgui/ui = null) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "FaxManager") - ui.open() - ui.set_autoupdate(TRUE) - -/datum/fax_manager/ui_state(mob/user) - return GLOB.admin_state - -/datum/fax_manager/ui_static_data(mob/user) - var/list/data = list() - //Record additional faxes on a separate list - data["additional_faxes"] = GLOB.additional_faxes_list + GLOB.frontier_faxes_list - return data - -/datum/fax_manager/ui_data(mob/user) - var/list/data = list() - //Record a list of all existing faxes. - for(var/obj/machinery/fax/fax as anything in GLOB.fax_machines) - var/list/fax_data = list() - fax_data["fax_name"] = fax.fax_name - fax_data["fax_id"] = fax.fax_id - fax_data["frontier_network"] = fax.frontier_network - data["faxes"] += list(fax_data) - for(var/list/requested in requests) - var/list/request = list() - request["id_message"] = requested["id_message"] - request["time"] = requested["time"] - var/mob/sender = requested["sender"] - request["sender_name"] = sender.name - request["sender_fax_id"] = requested["sender_fax_id"] - request["sender_fax_name"] = requested["sender_fax_name"] - request["receiver_fax_name"] = requested["receiver_fax_name"] - data["requests"] += list(request) - return data - -/datum/fax_manager/ui_act(action, list/params) - . = ..() - if(.) - return - var/datum/admins/admin_datum = GLOB.admin_datums[usr.ckey] - - switch(action) - if("send") - for(var/obj/machinery/fax/fax as anything in GLOB.fax_machines) - if(fax.fax_id == params["fax_id"]) - var/obj/item/paper/paper = new() - paper.add_raw_text(params["message"]) - paper.update_appearance() - fax.receive(paper, params["fax_name"]) - return TRUE - if("flw_fax") - for(var/obj/machinery/fax/fax as anything in GLOB.fax_machines) - if(fax.fax_id == params["fax_id"]) - admin_datum.admin_follow(fax) - return TRUE - if("read_message") - var/list/request = get_request(params["id_message"]) - var/obj/item/paper/request/paper = request["paper"] - paper.ui_interact(usr) - return TRUE - if("flw") - var/list/request = get_request(params["id_message"]) - admin_datum.admin_follow(request["sender"]) - return TRUE - if("pp") - var/list/request = get_request(params["id_message"]) - usr.client.holder.show_player_panel(request["sender"]) - return TRUE - if("vv") - var/list/request = get_request(params["id_message"]) - usr.client.debug_variables(request["sender"]) - return TRUE - if("sm") - var/list/request = get_request(params["id_message"]) - usr.client.cmd_admin_subtle_message(request["sender"]) - return TRUE - if("logs") - var/list/request = get_request(params["id_message"]) - if(!ismob(request["sender"])) - to_chat(usr, "This can only be used on instances of type /mob.") - return TRUE - show_individual_logging_panel(request["sender"], null, null) - return TRUE - if("smite") - var/list/request = get_request(params["id_message"]) - if(!check_rights(R_FUN)) - to_chat(usr, "Insufficient permissions to smite, you require +FUN") - return TRUE - var/mob/living/carbon/human/H = request["sender"] - if (!H || !istype(H)) - to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") - return TRUE - usr.client.smite(H) - return TRUE - -/datum/fax_manager/proc/get_request(id_message) - for(var/list/request in requests) - if(request["id_message"] == id_message) - return request - -/datum/fax_manager/proc/receive_request(mob/sender, obj/machinery/fax/sender_fax, receiver_fax_name, obj/item/paper/paper, receiver_color) - var/list/request = list() - var/obj/item/paper/request/message = new() - request["id_message"] = requests.len - request["time"] = game_timestamp() - request["sender"] = sender - request["sender_fax_id"] = sender_fax.fax_id - request["sender_fax_name"] = sender_fax.fax_name - request["receiver_fax_name"] = receiver_fax_name - message.copy_properties(paper) - request["paper"] = message - requests += list(request) - var/msg = "\"[sanitize(receiver_fax_name)]\" fax received a message from \"[sanitize(sender_fax.fax_name)]\" fax SENT BY [ADMIN_FULLMONTY(sender)] (Open Fax Manager)" - for(var/client/C in GLOB.admins) - if(C.prefs.chat_toggles & CHAT_PRAYER) - to_chat(C, msg) - for(var/client/admin in GLOB.admins) - if((admin.prefs.chat_toggles & CHAT_PRAYER) && (admin.prefs.toggles & SOUND_PRAYERS)) - SEND_SOUND(admin, sound('sound/items/poster_being_created.ogg')) - -// A special piece of paper for the administrator that will open the interface no matter what. -/obj/item/paper/request/ui_status() - return UI_INTERACTIVE - -// I'm sure there's a better way to transfer it, I just couldn't find it -/obj/item/paper/request/proc/copy_properties(obj/item/paper/paper) - raw_text_inputs = paper.raw_text_inputs - raw_stamp_data = paper.raw_stamp_data - raw_field_input_data = paper.raw_field_input_data - show_written_words = paper.show_written_words - stamp_cache = paper.stamp_cache - contact_poison = paper.contact_poison - contact_poison_volume = paper.contact_poison_volume - default_raw_text = paper.default_raw_text - input_field_count = paper.input_field_count diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 4080f68c5d7..e30a2bdd973 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -60,6 +60,9 @@ /// state checking on if it should be shown to a viewer. var/datum/weakref/camera_holder + ///If TRUE, staff can read paper everywhere, but usually from requests panel. + var/request_state = FALSE + /// The (text for the) stamps on the paper. var/list/stamps /// Positioning for the stamp in tgui var/list/stamped /// Overlay info @@ -161,12 +164,13 @@ * * bold - Whether this text should be rendered completely bold. */ -/obj/item/paper/proc/add_raw_text(text, font, color, bold) +/obj/item/paper/proc/add_raw_text(text, font, color, bold, advanced_html) var/new_input_datum = new /datum/paper_input( text, font, color, bold, + advanced_html, ) input_field_count += get_input_field_count(text) @@ -320,7 +324,7 @@ // Are we on fire? Hard to read if so if(resistance_flags & ON_FIRE) return UI_CLOSE - if(camera_holder && can_show_to_mob_through_camera(user)) + if(camera_holder && can_show_to_mob_through_camera(user) || request_state) return UI_UPDATE if(!in_range(user, src) && !isobserver(user)) return UI_CLOSE @@ -373,7 +377,7 @@ return // Handle writing items. - var/writing_stats = attacking_item.get_writing_implement_details() + var/writing_stats = istype(attacking_item) ? attacking_item.get_writing_implement_details() : null if(!writing_stats) ui_interact(user) @@ -576,7 +580,7 @@ // Safe to assume there are writing implement details as user.can_write(...) fails with an invalid writing implement. var/writing_implement_data = holding.get_writing_implement_details() - add_raw_text(paper_input, writing_implement_data["font"], writing_implement_data["color"], writing_implement_data["use_bold"]) + add_raw_text(paper_input, writing_implement_data["font"], writing_implement_data["color"], writing_implement_data["use_bold"], check_rights_for(user?.client, R_FUN)) log_paper("[key_name(user)] wrote to [name]: \"[paper_input]\"") to_chat(user, "You have added to your paper masterpiece!"); @@ -663,15 +667,18 @@ var/colour = "" /// Whether to render the font bold or not. var/bold = FALSE + /// Whether the creator of this input field has the R_FUN permission, thus allowing less sanitization + var/advanced_html = FALSE -/datum/paper_input/New(_raw_text, _font, _colour, _bold) +/datum/paper_input/New(_raw_text, _font, _colour, _bold, _advanced_html) raw_text = _raw_text font = _font colour = _colour bold = _bold + advanced_html = _advanced_html /datum/paper_input/proc/make_copy() - return new /datum/paper_input(raw_text, font, colour, bold); + return new /datum/paper_input(raw_text, font, colour, bold, advanced_html); /datum/paper_input/proc/to_list() return list( @@ -679,6 +686,7 @@ font = font, color = colour, bold = bold, + advanced_html = advanced_html, ) /// A single instance of a saved stamp on paper. diff --git a/code/modules/requests/request.dm b/code/modules/requests/request.dm new file mode 100644 index 00000000000..0ac37f63187 --- /dev/null +++ b/code/modules/requests/request.dm @@ -0,0 +1,37 @@ +/** + * # Request + * + * A representation of an in-game request, such as a prayer. + */ +/datum/request + /// Unique ID of the request + var/id + /// Atomic ID for increment unique request IDs + var/static/atomic_id = 0 + /// The type of request + var/req_type + /// The owner of the request, the player who created it + var/client/owner + /// The ckey of the owner, used for re-binding variables on login + var/owner_ckey + /// The name of the owner, in format /, assigned at time of request creation + var/owner_name + /// The message associated with the request + var/message + /// Just any information, which you can to send with request. For example paper datum. + var/additional_information + /// When the request was created + var/timestamp + +/datum/request/New(client/requestee, type, request, additional_info) + if (!requestee) + qdel(src) + return + id = ++atomic_id + owner = requestee + owner_ckey = owner.ckey + req_type = type + message = request + timestamp = world.time + additional_information = additional_info + owner_name = key_name(requestee, FALSE) diff --git a/code/modules/requests/requests_manager.dm b/code/modules/requests/requests_manager.dm new file mode 100644 index 00000000000..e33da846d4d --- /dev/null +++ b/code/modules/requests/requests_manager.dm @@ -0,0 +1,249 @@ +/// Requests from prayers +#define REQUEST_PRAYER "request_prayer" +/// Requests for Centcom +#define REQUEST_CENTCOM "request_centcom" +/// Requests for the Syndicate +#define REQUEST_SYNDICATE "request_syndicate" +/// Requests for the nuke code +#define REQUEST_NUKE "request_nuke" +/// Requests somebody from fax +#define REQUEST_FAX "request_fax" + +GLOBAL_DATUM_INIT(requests, /datum/request_manager, new) + +/** + * # Request Manager + * + * Handles all player requests (prayers, centcom requests, syndicate requests) + * that occur in the duration of a round. + */ +/datum/request_manager + /// Associative list of ckey -> list of requests + var/list/requests = list() + /// List where requests can be accessed by ID + var/list/requests_by_id = list() + +/datum/request_manager/Destroy(force, ...) + QDEL_LIST(requests) + return ..() + +/** + * Used in the new client pipeline to catch when clients are reconnecting and need to have their + * reference re-assigned to the 'owner' variable of any requests + * + * Arguments: + * * C - The client who is logging in + */ +/datum/request_manager/proc/client_login(client/C) + if (!requests[C.ckey]) + return + for (var/datum/request/request as anything in requests[C.ckey]) + request.owner = C + +/** + * Used in the destroy client pipeline to catch when clients are disconnecting and need to have their + * reference nulled on the 'owner' variable of any requests + * + * Arguments: + * * C - The client who is logging out + */ +/datum/request_manager/proc/client_logout(client/C) + if (!requests[C.ckey]) + return + for (var/datum/request/request as anything in requests[C.ckey]) + request.owner = null + +/** + * Creates a request for a prayer, and notifies admins who have the sound notifications enabled when appropriate + * + * Arguments: + * * C - The client who is praying + * * message - The prayer + * * is_chaplain - Boolean operator describing if the prayer is from a chaplain + */ +/datum/request_manager/proc/pray(client/C, message, is_chaplain) + request_for_client(C, REQUEST_PRAYER, message) + for(var/client/admin in GLOB.admins) + if(is_chaplain && admin.prefs.chat_toggles & CHAT_PRAYER && admin.prefs.toggles & SOUND_PRAYERS) + SEND_SOUND(admin, sound('sound/effects/pray.ogg')) + +/** + * Creates a request for a Centcom message + * + * Arguments: + * * C - The client who is sending the request + * * message - The message + */ +/datum/request_manager/proc/message_centcom(client/C, message) + request_for_client(C, REQUEST_CENTCOM, message) + +/** + * Creates a request for a Syndicate message + * + * Arguments: + * * C - The client who is sending the request + * * message - The message + */ +/datum/request_manager/proc/message_syndicate(client/C, message) + request_for_client(C, REQUEST_SYNDICATE, message) + +/** + * Creates a request for the nuclear self destruct codes + * + * Arguments: + * * C - The client who is sending the request + * * message - The message + */ +/datum/request_manager/proc/nuke_request(client/C, message) + request_for_client(C, REQUEST_NUKE, message) + +/** + * Creates a request for fax answer + * + * Arguments: + * * requester - The client who is sending the request + * * message - Paper with text.. some stamps.. and another things. + */ +/datum/request_manager/proc/fax_request(client/requester, message, additional_info) + request_for_client(requester, REQUEST_FAX, message, additional_info) + +/** + * Creates a request and registers the request with all necessary internal tracking lists + * + * Arguments: + * * C - The client who is sending the request + * * type - The type of request, see defines + * * message - The message + */ +/datum/request_manager/proc/request_for_client(client/C, type, message, additional_info) + var/datum/request/request = new(C, type, message, additional_info) + if (!requests[C.ckey]) + requests[C.ckey] = list() + requests[C.ckey] += request + requests_by_id.len++ + requests_by_id[request.id] = request + +/datum/request_manager/ui_interact(mob/user, datum/tgui/ui = null) + ui = SStgui.try_update_ui(user, src, ui) + if (!ui) + ui = new(user, src, "RequestManager") + ui.open() + +/datum/request_manager/ui_state(mob/user) + return GLOB.admin_state + +/datum/request_manager/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + if (..()) + return + + // Only admins should be sending actions + if (!check_rights(R_ADMIN)) + to_chat(usr, "You do not have permission to do this, you require +ADMIN") + return + + // Get the request this relates to + var/id = params["id"] != null ? text2num(params["id"]) : null + if (!id) + to_chat(usr, "Failed to find a request ID in your action, please report this") + CRASH("Received an action without a request ID, this shouldn't happen!") + var/datum/request/request = !id ? null : requests_by_id[id] + var/datum/admins/admin_datum = GLOB.admin_datums[usr.ckey] + + switch(action) + if ("pp") + var/mob/M = request.owner?.mob + usr.client.holder.show_player_panel(M) + return TRUE + if ("vv") + var/mob/M = request.owner?.mob + usr.client.debug_variables(M) + return TRUE + if ("sm") + var/mob/M = request.owner?.mob + usr.client.cmd_admin_subtle_message(M) + return TRUE + if ("flw") + var/mob/M = request.owner?.mob + admin_datum.admin_follow(M) + return TRUE + if ("tp") + if(!SSticker.HasRoundStarted()) + to_chat(usr,"The game hasn't started yet!") + return TRUE + var/mob/M = request.owner?.mob + if(!ismob(M)) + var/datum/mind/D = M + if(!istype(D)) + to_chat(usr, "This can only be used on instances of type /mob and /mind") + return TRUE + else + D.traitor_panel() + return TRUE + else + usr.client.holder.show_traitor_panel(M) + return TRUE + if ("logs") + var/mob/M = request.owner?.mob + if(!ismob(M)) + to_chat(usr, "This can only be used on instances of type /mob.") + return TRUE + show_individual_logging_panel(M, null, null) + return TRUE + if ("smite") + if(!check_rights(R_FUN)) + to_chat(usr, "Insufficient permissions to smite, you require +FUN") + return TRUE + var/mob/living/carbon/human/H = request.owner?.mob + if (!H || !istype(H)) + to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") + return TRUE + usr.client.smite(H) + return TRUE + if ("rply") + if (request.req_type == REQUEST_PRAYER) + to_chat(usr, "Cannot reply to a prayer") + return TRUE + var/mob/M = request.owner?.mob + usr.client.admin_headset_message(M, request.req_type == REQUEST_SYNDICATE ? RADIO_CHANNEL_SYNDICATE : RADIO_CHANNEL_CENTCOM) + return TRUE + if ("setcode") + if (request.req_type != REQUEST_NUKE) + to_chat(usr, "You cannot set the nuke code for a non-nuke-code-request request!") + return TRUE + var/code = random_nukecode() + for(var/obj/machinery/nuclearbomb/selfdestruct/SD in GLOB.nuke_list) + SD.r_code = code + message_admins("[key_name_admin(usr)] has set the self-destruct code to \"[code]\".") + return TRUE + if ("show") + if(request.req_type != REQUEST_FAX) + to_chat(usr, "Request doesn't have a paper to read.") + return TRUE + var/obj/item/paper/request_message = request.additional_information + request_message.ui_interact(usr) + return TRUE + +/datum/request_manager/ui_data(mob/user) + . = list( + "requests" = list() + ) + for (var/ckey in requests) + for (var/datum/request/request as anything in requests[ckey]) + var/list/data = list( + "id" = request.id, + "req_type" = request.req_type, + "owner" = request.owner ? "[REF(request.owner)]" : null, + "owner_ckey" = request.owner_ckey, + "owner_name" = request.owner_name, + "message" = request.message, + "additional_info" = request.additional_information, + "timestamp" = request.timestamp, + "timestamp_str" = station_time_timestamp(wtime = request.timestamp) + ) + .["requests"] += list(data) + +#undef REQUEST_PRAYER +#undef REQUEST_CENTCOM +#undef REQUEST_SYNDICATE +#undef REQUEST_NUKE +#undef REQUEST_FAX diff --git a/shiptest.dme b/shiptest.dme index 23e855ca620..4f42a582878 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -222,7 +222,6 @@ #include "code\_globalvars\lists\achievements.dm" #include "code\_globalvars\lists\admin.dm" #include "code\_globalvars\lists\client.dm" -#include "code\_globalvars\lists\faxes.dm" #include "code\_globalvars\lists\flavor_misc.dm" #include "code\_globalvars\lists\jobs.dm" #include "code\_globalvars\lists\keybindings.dm" @@ -1466,6 +1465,7 @@ #include "code\game\turfs\open\space\space.dm" #include "code\game\turfs\open\space\transit.dm" #include "code\modules\admin\admin.dm" +#include "code\modules\admin\admin_fax_panel.dm" #include "code\modules\admin\admin_follow.dm" #include "code\modules\admin\admin_investigate.dm" #include "code\modules\admin\admin_ranks.dm" @@ -1510,7 +1510,6 @@ #include "code\modules\admin\verbs\deadsay.dm" #include "code\modules\admin\verbs\debug.dm" #include "code\modules\admin\verbs\diagnostics.dm" -#include "code\modules\admin\verbs\fax_manager.dm" #include "code\modules\admin\verbs\fix_air.dm" #include "code\modules\admin\verbs\fps.dm" #include "code\modules\admin\verbs\getlogs.dm" @@ -1531,6 +1530,7 @@ #include "code\modules\admin\verbs\randomverbs.dm" #include "code\modules\admin\verbs\reestablish_db_connection.dm" #include "code\modules\admin\verbs\rejuvenate.dm" +#include "code\modules\admin\verbs\requests.dm" #include "code\modules\admin\verbs\secrets.dm" #include "code\modules\admin\verbs\selectequipment.dm" #include "code\modules\admin\verbs\shuttlepanel.dm" @@ -2863,7 +2863,6 @@ #include "code\modules\paperwork\clipboard.dm" #include "code\modules\paperwork\contract.dm" #include "code\modules\paperwork\fax.dm" -#include "code\modules\paperwork\fax_manager.dm" #include "code\modules\paperwork\filingcabinet.dm" #include "code\modules\paperwork\folders.dm" #include "code\modules\paperwork\handlabeler.dm" @@ -3121,6 +3120,8 @@ #include "code\modules\religion\religion_sects.dm" #include "code\modules\religion\religion_structures.dm" #include "code\modules\religion\rites.dm" +#include "code\modules\requests\request.dm" +#include "code\modules\requests\requests_manager.dm" #include "code\modules\research\bepis.dm" #include "code\modules\research\designs.dm" #include "code\modules\research\destructive_analyzer.dm" diff --git a/tgui/packages/tgui/interfaces/AdminFax.js b/tgui/packages/tgui/interfaces/AdminFax.js new file mode 100644 index 00000000000..8245bc4a9ad --- /dev/null +++ b/tgui/packages/tgui/interfaces/AdminFax.js @@ -0,0 +1,263 @@ +import { useBackend, useLocalState } from '../backend'; +import { + Section, + Box, + Dropdown, + Button, + Input, + TextArea, + Divider, + NumberInput, + Tooltip, + Knob, +} from '../components'; +import { Window } from '../layouts'; + +export const AdminFax = (props, context) => { + return ( + + + + + + ); +}; + +export const FaxMainPanel = (props, context) => { + const { act, data } = useBackend(context); + + const [fax, setFax] = useLocalState(context, 'fax', ''); + const [saved, setSaved] = useLocalState(context, 'saved', false); + const [paperName, setPaperName] = useLocalState(context, 'paperName', ''); + const [fromWho, setFromWho] = useLocalState(context, 'fromWho', ''); + const [rawText, setRawText] = useLocalState(context, 'rawText', ''); + const [stamp, setStamp] = useLocalState(context, 'stampType', ''); + const [stampCoordX, setStampCoordX] = useLocalState( + context, + 'stampCoordX', + 0 + ); + const [stampCoordY, setStampCoordY] = useLocalState( + context, + 'stampCoordY', + 0 + ); + const [stampAngle, setStampAngle] = useLocalState(context, 'stampAngle', 0); + if (stamp && data.stamps[0] !== 'None') { + data.stamps.unshift('None'); + } + return ( + <> +

+ + + } + > + + setFax(value)} + /> + +
+
+ act('preview', { + faxName: fax, + }) + } + > + Preview + + } + > + + setPaperName(v)} + /> + + + + + + + setFromWho(v)} + /> + + + + + + +