From bc0b195b2d59356f2a93d965ebeeb13c50f56aca Mon Sep 17 00:00:00 2001 From: Changelogs Date: Mon, 14 Oct 2024 01:04:19 +0000 Subject: [PATCH 01/62] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3549.yml | 4 ---- html/changelogs/archive/2024-10.yml | 3 +++ 2 files changed, 3 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3549.yml diff --git a/html/changelogs/AutoChangeLog-pr-3549.yml b/html/changelogs/AutoChangeLog-pr-3549.yml deleted file mode 100644 index da4bd6703ea6..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3549.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Spooky, PositiveEntropy -changes: - - {imageadd: Smartfridges and Booze-O-Mats have been resprited!} -delete-after: true diff --git a/html/changelogs/archive/2024-10.yml b/html/changelogs/archive/2024-10.yml index 296752b6b3b7..b6c26721ca43 100644 --- a/html/changelogs/archive/2024-10.yml +++ b/html/changelogs/archive/2024-10.yml @@ -153,3 +153,6 @@ - balance: Changed old ammo boxes into storage items containing stacks of bullets zimon9: - bugfix: fixed halved throw range +2024-10-14: + Spooky, PositiveEntropy: + - imageadd: Smartfridges and Booze-O-Mats have been resprited! From be60401201f032fd9fbf22b9c0933deb0a1c8006 Mon Sep 17 00:00:00 2001 From: Sadhorizon <108196626+Sadhorizon@users.noreply.github.com> Date: Mon, 14 Oct 2024 06:28:16 +0200 Subject: [PATCH 02/62] Maps inteq stamps in. (#3533) ## About The Pull Request Replaces the HOS, Law and CE stamps with the inteq stamps that actually exist already. Also repaths IRMG and CLIP stamps. ## Why It's Good For The Game Feels like an oversight. I think someone added them and forgot to actually make them player-accessible. Repathing because factional stamps together are nice. ## Changelog :cl: add: Added a honorable corpsman stamp and tweaked honorable arti one. add: Inteq ships now use inteq stamps. code: Repathed IRMG and CLIP stamps. /:cl: --- _maps/shuttles/inteq/inteq_colossus.dmm | 8 ++---- _maps/shuttles/inteq/inteq_hound.dmm | 4 +-- _maps/shuttles/inteq/inteq_talos.dmm | 12 +++------ _maps/shuttles/inteq/inteq_valor.dmm | 2 ++ _maps/shuttles/inteq/inteq_vaquero.dmm | 9 +++---- code/modules/asset_cache/asset_list_items.dm | 7 ++--- code/modules/paperwork/stamps.dm | 25 +++++++++--------- icons/obj/bureaucracy.dmi | Bin 36944 -> 36547 bytes icons/stamp_icons/large_stamp-artificer.png | Bin 3405 -> 0 bytes .../large_stamp-inteq_artificer.png | Bin 0 -> 3371 bytes .../large_stamp-inteq_corpsman.png | Bin 0 -> 1652 bytes ...tamp-maa.png => large_stamp-inteq_maa.png} | Bin ...ard.png => large_stamp-inteq_vanguard.png} | Bin 13 files changed, 28 insertions(+), 39 deletions(-) delete mode 100644 icons/stamp_icons/large_stamp-artificer.png create mode 100644 icons/stamp_icons/large_stamp-inteq_artificer.png create mode 100644 icons/stamp_icons/large_stamp-inteq_corpsman.png rename icons/stamp_icons/{large_stamp-maa.png => large_stamp-inteq_maa.png} (100%) rename icons/stamp_icons/{large_stamp-vanguard.png => large_stamp-inteq_vanguard.png} (100%) diff --git a/_maps/shuttles/inteq/inteq_colossus.dmm b/_maps/shuttles/inteq/inteq_colossus.dmm index 74ac142692c6..70f32bfb60f2 100644 --- a/_maps/shuttles/inteq/inteq_colossus.dmm +++ b/_maps/shuttles/inteq/inteq_colossus.dmm @@ -2224,9 +2224,7 @@ name = "folder" }, /obj/item/pen/fourcolor, -/obj/item/stamp/hos{ - name = "vanguard's rubber stamp" - }, +/obj/item/stamp/inteq/vanguard, /obj/item/reagent_containers/food/drinks/coffee{ pixel_y = 20 }, @@ -4212,9 +4210,7 @@ desc = "A slick black folder stamped 'Property of Inteq Risk Management Group.'"; name = "folder" }, -/obj/item/stamp/law{ - name = "master at arms' rubber stamp" - }, +/obj/item/stamp/inteq/maa, /obj/item/table_bell{ pixel_y = 13 }, diff --git a/_maps/shuttles/inteq/inteq_hound.dmm b/_maps/shuttles/inteq/inteq_hound.dmm index 42c34c5a418e..c6f9e34a653d 100644 --- a/_maps/shuttles/inteq/inteq_hound.dmm +++ b/_maps/shuttles/inteq/inteq_hound.dmm @@ -2343,9 +2343,7 @@ /obj/item/gps{ pixel_x = 12 }, -/obj/item/stamp/hos{ - name = "vanguard's rubber stamp" - }, +/obj/item/stamp/inteq/vanguard, /obj/item/pen/fountain, /turf/open/floor/plasteel/dark, /area/ship/bridge) diff --git a/_maps/shuttles/inteq/inteq_talos.dmm b/_maps/shuttles/inteq/inteq_talos.dmm index 2ab9a9405507..79ec309513f8 100644 --- a/_maps/shuttles/inteq/inteq_talos.dmm +++ b/_maps/shuttles/inteq/inteq_talos.dmm @@ -2529,9 +2529,7 @@ /obj/effect/turf_decal/corner/opaque/yellow{ dir = 1 }, -/obj/item/stamp/hos{ - name = "vanguard's rubber stamp" - }, +/obj/item/stamp/inteq/vanguard, /obj/machinery/airalarm/directional/north, /turf/open/floor/plasteel/dark, /area/ship/bridge) @@ -5797,9 +5795,7 @@ desc = "A slick black folder stamped 'Property of Inteq Risk Management Group.'"; name = "folder" }, -/obj/item/stamp/law{ - name = "master at arms' rubber stamp" - }, +/obj/item/stamp/inteq/maa, /obj/item/table_bell{ pixel_x = -15 }, @@ -7830,9 +7826,7 @@ /obj/item/megaphone/cargo{ name = "engineering megaphone" }, -/obj/item/stamp/ce{ - name = "honorable artificer's rubber stamp" - }, +/obj/item/stamp/inteq/artificer, /obj/item/clothing/glasses/meson/engine, /obj/item/clothing/glasses/welding, /obj/item/pipe_dispenser, diff --git a/_maps/shuttles/inteq/inteq_valor.dmm b/_maps/shuttles/inteq/inteq_valor.dmm index d35bcb7a808a..247743c165bf 100644 --- a/_maps/shuttles/inteq/inteq_valor.dmm +++ b/_maps/shuttles/inteq/inteq_valor.dmm @@ -4430,6 +4430,7 @@ /obj/item/storage/lockbox/medal/sec, /obj/item/clothing/glasses/hud/security/sunglasses/inteq, /obj/item/clothing/head/inteq_peaked, +/obj/item/stamp/inteq/vanguard, /turf/open/floor/carpet/orange, /area/ship/bridge) "Od" = ( @@ -4805,6 +4806,7 @@ /obj/item/clothing/glasses/hud/health/sunglasses, /obj/item/storage/box/hypospray/CMO, /obj/item/clothing/gloves/color/latex/nitrile, +/obj/item/stamp/inteq/corpsman, /turf/open/floor/carpet/blue, /area/ship/bridge) "RT" = ( diff --git a/_maps/shuttles/inteq/inteq_vaquero.dmm b/_maps/shuttles/inteq/inteq_vaquero.dmm index 92e024ba7bf6..662ce9c5e3d6 100644 --- a/_maps/shuttles/inteq/inteq_vaquero.dmm +++ b/_maps/shuttles/inteq/inteq_vaquero.dmm @@ -684,9 +684,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, -/obj/item/stamp/hos{ - name = "vanguard's rubber stamp" - }, +/obj/item/stamp/inteq/vanguard, /obj/structure/cable{ icon_state = "1-8" }, @@ -3367,9 +3365,8 @@ name = "folder"; pixel_x = 5 }, -/obj/item/stamp/law{ - name = "master at arms' rubber stamp"; - pixel_x = 5 +/obj/item/stamp/inteq/maa{ + pixel_x = 6 }, /obj/item/table_bell{ pixel_x = -4; diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index 4920de28e364..43d1d46f329c 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -114,9 +114,10 @@ "stamp-syndicate" = 'icons/stamp_icons/large_stamp-syndicate.png', "stamp-solgov" = 'icons/stamp_icons/large_stamp-solgov.png', "stamp-inteq" = 'icons/stamp_icons/large_stamp-inteq.png', - "stamp-vanguard" = 'icons/stamp_icons/large_stamp-vanguard.png', - "stamp-maa" = 'icons/stamp_icons/large_stamp-maa.png', - "stamp-artificer" = 'icons/stamp_icons/large_stamp-artificer.png', + "stamp-inteq_vanguard" = 'icons/stamp_icons/large_stamp-inteq_vanguard.png', + "stamp-inteq_maa" = 'icons/stamp_icons/large_stamp-inteq_maa.png', + "stamp-inteq_artificer" = 'icons/stamp_icons/large_stamp-inteq_artificer.png', + "stamp-inteq_corpsman" = 'icons/stamp_icons/large_stamp-inteq_corpsman.png', "stamp-clip" = 'icons/stamp_icons/large_stamp-clip.png', "stamp-bard" = 'icons/stamp_icons/large_stamp-bard.png', "stamp-gold" = 'icons/stamp_icons/large_stamp-gold.png', diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index 22e9a722634b..4311eb080cf2 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -115,32 +115,33 @@ icon_state = "stamp-inteq" dye_color = DYE_QM -/obj/item/stamp/vanguard +/obj/item/stamp/inteq/vanguard name = "Vanguard's rubber stamp" - icon_state = "stamp-vanguard" - dye_color = DYE_QM + icon_state = "stamp-inteq_vanguard" -/obj/item/stamp/maa +/obj/item/stamp/inteq/maa name = "Master at Arms' rubber stamp" - icon_state = "stamp-maa" - dye_color = DYE_QM + icon_state = "stamp-inteq_maa" -/obj/item/stamp/artificer - name = "Class II Artificer's rubber stamp" - icon_state = "stamp-artificer" - dye_color = DYE_QM +/obj/item/stamp/inteq/artificer + name = "Honorable Artificer's rubber stamp" + icon_state = "stamp-inteq_artificer" + +/obj/item/stamp/inteq/corpsman + name = "Honorable Corpsman's rubber stamp" + icon_state = "stamp-inteq_corpsman" /obj/item/stamp/clip name = "CLIP Minutemen rubber stamp" icon_state = "stamp-cmm" dye_color = DYE_FO -/obj/item/stamp/gold +/obj/item/stamp/clip/gold name = "GOLD rubber stamp" icon_state = "stamp-gold" dye_color = DYE_FO -/obj/item/stamp/bard +/obj/item/stamp/clip/bard name = "BARD rubber stamp" icon_state = "stamp-bard" dye_color = DYE_FO diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi index 68fef79c160b5c6abd6d9d67d33b21da2f7fea34..b56a287cc21b324674f7506442a6e5c2df17ded1 100644 GIT binary patch literal 36547 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�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⁣aJ^iZB5mR5cr*O}4A1xx(S$eAs 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�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 wEQbW0p7Xr#`~S^;XNsMQqJ|<0 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 yYX Date: Sun, 13 Oct 2024 23:57:18 -0500 Subject: [PATCH 03/62] Automatic changelog generation for PR #3533 [ci skip] --- html/changelogs/AutoChangeLog-pr-3533.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3533.yml diff --git a/html/changelogs/AutoChangeLog-pr-3533.yml b/html/changelogs/AutoChangeLog-pr-3533.yml new file mode 100644 index 000000000000..d8c9009eef50 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3533.yml @@ -0,0 +1,6 @@ +author: Sadhorizon +changes: + - {rscadd: Added a honorable corpsman stamp and tweaked honorable arti one.} + - {rscadd: Inteq ships now use inteq stamps.} + - {code_imp: Repathed IRMG and CLIP stamps.} +delete-after: true From e023672d3888f1fabb11fcf3c377f3bfdfb20470 Mon Sep 17 00:00:00 2001 From: firebudgy <153147550+firebudgy@users.noreply.github.com> Date: Mon, 14 Oct 2024 00:29:11 -0400 Subject: [PATCH 04/62] Fixed the CLIP War Correspondent sprite for Vox (#3540) ## About The Pull Request This helmet has a Vox sprite available that used to work (but doesn't anymore for some reason), this PR makes it correctly show up now. ## Why It's Good For The Game Fixes species support for an item that should have it. ## Changelog :cl: fix: War Correspondent helmet has a proper sprite for Vox. /:cl: --- code/modules/clothing/factions/clip.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/clothing/factions/clip.dm b/code/modules/clothing/factions/clip.dm index 7ac3668aaf77..6371b5c14f12 100644 --- a/code/modules/clothing/factions/clip.dm +++ b/code/modules/clothing/factions/clip.dm @@ -330,6 +330,8 @@ icon_state = "clip_m10_correspondant" item_state = "clip_m10_correspondant" + supports_variations = VOX_VARIATION + /obj/item/clothing/head/helmet/riot/clip name = "\improper Minutemen riot helmet" desc = "Designed to protect against close range attacks. Mainly used by the CMM-BARD against hostile xenofauna, it also sees prolific use on some Minutemen member worlds." From 411dfb7599f4d3932ab856c07239ed6100f3dde0 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Mon, 14 Oct 2024 00:09:43 -0500 Subject: [PATCH 05/62] Automatic changelog generation for PR #3540 [ci skip] --- html/changelogs/AutoChangeLog-pr-3540.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3540.yml diff --git a/html/changelogs/AutoChangeLog-pr-3540.yml b/html/changelogs/AutoChangeLog-pr-3540.yml new file mode 100644 index 000000000000..64d5268de008 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3540.yml @@ -0,0 +1,4 @@ +author: firebudgy +changes: + - {bugfix: War Correspondent helmet has a proper sprite for Vox.} +delete-after: true From 63e6a801b3032152fcfd98b51f47509c25c7add4 Mon Sep 17 00:00:00 2001 From: Gristlebee <56049844+Gristlebee@users.noreply.github.com> Date: Sun, 13 Oct 2024 21:35:00 -0700 Subject: [PATCH 06/62] Puts the correct revolver type in the Abandoned Miskilamo Shipbreaking Yard (#3544) ## About The Pull Request The ruin had the base revolver type mapped. Replaces it with a Viper. ![image](https://github.com/user-attachments/assets/0c153e7b-df5b-4973-ba1d-6c2bb72772bb) ## Why It's Good For The Game I DEMAND- ## Changelog :cl: fix: Abandoned Miskilamo Shipbreaking Yard ruin has the correct revolver subtype. /:cl: --- _maps/RandomRuins/WasteRuins/wasteplanet_yard.dmm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_yard.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_yard.dmm index 60325851692d..a53934c91013 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_yard.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_yard.dmm @@ -3042,10 +3042,10 @@ icon_state = "0-2" }, /obj/structure/closet/wall/directional/west, -/obj/item/gun/ballistic/revolver, /obj/item/clothing/suit/hooded/wintercoat/captain, /obj/item/storage/firstaid/o2, /obj/machinery/light/small/broken/directional/north, +/obj/item/gun/ballistic/revolver/viper/indie, /turf/open/floor/plasteel/wasteplanet, /area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) "Mf" = ( From f5f6d5e11b0f2c580cbabc8f40c9bed97e83fc12 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Mon, 14 Oct 2024 00:22:19 -0500 Subject: [PATCH 07/62] Automatic changelog generation for PR #3544 [ci skip] --- html/changelogs/AutoChangeLog-pr-3544.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3544.yml diff --git a/html/changelogs/AutoChangeLog-pr-3544.yml b/html/changelogs/AutoChangeLog-pr-3544.yml new file mode 100644 index 000000000000..cfdbae12314b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3544.yml @@ -0,0 +1,4 @@ +author: Gristlebee +changes: + - {bugfix: Abandoned Miskilamo Shipbreaking Yard ruin has the correct revolver subtype.} +delete-after: true From 36555a4d2c76ee61a6800ea191d390fd58fe98e7 Mon Sep 17 00:00:00 2001 From: Gristlebee <56049844+Gristlebee@users.noreply.github.com> Date: Sun, 13 Oct 2024 21:35:28 -0700 Subject: [PATCH 08/62] Rock Planet Shipping Dock has the correct gun (#3545) ## About The Pull Request Rock Planet shipping dock ruin has a rattlesnake instead of the ringneck case. ![image](https://github.com/user-attachments/assets/24637f48-0658-4efd-9a57-446cb3b48e22) ## Why It's Good For The Game Seems like the ringneck got mapped in by mistake, since the crate had two rattlesnake mags, and the gun there before was the TEC-9, which the rattlesnake was supposed to replace. ## Changelog :cl: fix: Shipping dock ruin correctly has a rattlesnake instead of a ringneck case /:cl: --- _maps/RandomRuins/RockRuins/rockplanet_shippingdock.dmm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_maps/RandomRuins/RockRuins/rockplanet_shippingdock.dmm b/_maps/RandomRuins/RockRuins/rockplanet_shippingdock.dmm index 3394913e2d2d..f18742a8aadb 100644 --- a/_maps/RandomRuins/RockRuins/rockplanet_shippingdock.dmm +++ b/_maps/RandomRuins/RockRuins/rockplanet_shippingdock.dmm @@ -2002,7 +2002,7 @@ }, /obj/item/ammo_box/magazine/m9mm_rattlesnake, /obj/item/ammo_box/magazine/m9mm_rattlesnake, -/obj/item/storage/pistolcase/ringneck, +/obj/item/gun/ballistic/automatic/pistol/rattlesnake/no_mag, /turf/open/floor/plasteel/mono/dark, /area/ruin/rockplanet/shippingdocksecure) "rK" = ( From 14e809afd507cddeb8e7b9abd78ffde0b03d1b68 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Mon, 14 Oct 2024 00:34:48 -0500 Subject: [PATCH 09/62] Automatic changelog generation for PR #3545 [ci skip] --- html/changelogs/AutoChangeLog-pr-3545.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3545.yml diff --git a/html/changelogs/AutoChangeLog-pr-3545.yml b/html/changelogs/AutoChangeLog-pr-3545.yml new file mode 100644 index 000000000000..b9d02077a666 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3545.yml @@ -0,0 +1,5 @@ +author: Gristlebee +changes: + - {bugfix: Shipping dock ruin correctly has a rattlesnake instead of a ringneck + case} +delete-after: true From 3e5fefe24efbdd639f5611a2a279c5fe8c41419b Mon Sep 17 00:00:00 2001 From: rye-rice <58402542+rye-rice@users.noreply.github.com> Date: Sun, 13 Oct 2024 22:54:25 -0700 Subject: [PATCH 10/62] various HP sprite improvments (#3500) ## About The Pull Request I shouldnt have to explain every god damn detail but here: - Resprites the Candor - Resprites the Ashhand - Removes the Shadow skins nobody used - Adds Shadow skins people will use - Gives the Shadow and Ashand inhands - Redoes the flaming arrow inhands - Fixes the boomslang fitting on the belt ## Why It's Good For The Game ![image](https://github.com/user-attachments/assets/00ef5f85-501c-4395-86de-2911a9db4ebc) ## Changelog :cl: add: Various sprite improvemnts fix: Boomslang no longer fits on the belt /:cl: --------- Co-authored-by: retlaw34 <58402542+retlaw34@users.noreply.github.com> --- .../projectiles/guns/ballistic/pistol.dm | 1 + .../projectiles/guns/ballistic/revolver.dm | 21 +++++++++++++----- .../manufacturer/scarborough/ballistics.dm | 2 ++ .../guns/manufacturer/hunterspride/48x32.dmi | Bin 26014 -> 26791 bytes .../manufacturer/hunterspride/lefthand.dmi | Bin 6371 -> 7622 bytes .../guns/manufacturer/hunterspride/onmob.dmi | Bin 7568 -> 7496 bytes .../manufacturer/hunterspride/righthand.dmi | Bin 6376 -> 7606 bytes 7 files changed, 18 insertions(+), 6 deletions(-) diff --git a/code/modules/projectiles/guns/ballistic/pistol.dm b/code/modules/projectiles/guns/ballistic/pistol.dm index e81b57d43f37..4fcc4cf56b14 100644 --- a/code/modules/projectiles/guns/ballistic/pistol.dm +++ b/code/modules/projectiles/guns/ballistic/pistol.dm @@ -39,6 +39,7 @@ load_empty_sound = 'sound/weapons/gun/pistol/candor_reload.ogg' eject_sound = 'sound/weapons/gun/pistol/candor_unload.ogg' eject_empty_sound = 'sound/weapons/gun/pistol/candor_unload.ogg' + show_magazine_on_sprite = TRUE EMPTY_GUN_HELPER(automatic/pistol/candor) diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index e0e389ce7f4a..648ad96640f2 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -594,8 +594,10 @@ EMPTY_GUN_HELPER(revolver/detective) mob_overlay_icon = 'icons/obj/guns/manufacturer/hunterspride/onmob.dmi' icon_state = "ashhand" + item_state = "ashhand" mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rev4570 fire_sound = 'sound/weapons/gun/revolver/shot_hunting.ogg' + rack_sound = 'sound/weapons/gun/revolver/viper_prime.ogg' manufacturer = MANUFACTURER_HUNTERSPRIDE gate_loaded = TRUE fire_delay = 0.6 SECONDS @@ -640,20 +642,22 @@ EMPTY_GUN_HELPER(revolver/detective) righthand_file = 'icons/obj/guns/manufacturer/hunterspride/righthand.dmi' mob_overlay_icon = 'icons/obj/guns/manufacturer/hunterspride/onmob.dmi' icon_state = "shadow" - item_state = "hp_generic" + item_state = "shadow" mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rev44 manufacturer = MANUFACTURER_HUNTERSPRIDE obj_flags = UNIQUE_RENAME gate_loaded = TRUE - unique_reskin = list("Shadow" = "shadow", - "Army" = "shadow_army", + unique_reskin = list(\ + "Shadow" = "shadow", + "Cattleman" = "shadow_cattleman", "General" = "shadow_general", - "Frontier Scout" = "shadow_frontier", - "Nanotrasen Special" = "shadow_nanotrasen", + "Sheriff" = "shadow_sheriff", + "Cobra" = "shadow_cobra", "Hired Gun" = "shadow_hiredgun", "Buntline" = "shadow_buntline", - "Cavalry Special" = "shadow_cavalry" + "Cavalry" = "shadow_cavalry", + "Lanchester Special" = "shadow_lanchester" ) recoil = 0 //weaker than normal revolver, no recoil @@ -665,3 +669,8 @@ EMPTY_GUN_HELPER(revolver/detective) /obj/item/gun/ballistic/revolver/shadow/no_mag spawnwithmagazine = FALSE + +/obj/item/gun/ballistic/revolver/shadow/reskin_obj(mob/M) + . = ..() + if(current_skin) + item_state = unique_reskin[current_skin] diff --git a/code/modules/projectiles/guns/manufacturer/scarborough/ballistics.dm b/code/modules/projectiles/guns/manufacturer/scarborough/ballistics.dm index 18239e94dd7e..c6755bc808fb 100644 --- a/code/modules/projectiles/guns/manufacturer/scarborough/ballistics.dm +++ b/code/modules/projectiles/guns/manufacturer/scarborough/ballistics.dm @@ -531,6 +531,8 @@ EMPTY_GUN_HELPER(automatic/smg/sidewinder) fire_delay = 1 SECONDS + slot_flags = ITEM_SLOT_BACK + show_magazine_on_sprite = TRUE unique_mag_sprites_for_variants = TRUE show_ammo_capacity_on_magazine_sprite = TRUE diff --git a/icons/obj/guns/manufacturer/hunterspride/48x32.dmi b/icons/obj/guns/manufacturer/hunterspride/48x32.dmi index 70bbef00e1af1a4ed286d05e5eba1aabc3630540..6c3851f0ca7f8f43799f8e90b7b978e3ded6f034 100644 GIT binary patch literal 26791 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 KE0oKdhW`(w`lRIm literal 26014 zcmbrm1yogC+cvrY>6S)PMGzzvq(Kma5D^3Og5N&Hsz4TY-$;uhPE$HlD z@=L^1GkBC<^6{1RpUcyyWv@+7p~#urb55P3Po$`;ef_sS)%kYxIJ;*Ng*X&>Ue<6P zj(0}AZb9Ag=r&A{{YLU=?h@`K8;3=1dAKE?)}Qbh)yP(VxEf30awKNX^)rT^PnO&* z6B?8k;y=_BBX~o17+e&G?k{TI@+H9eOf6Gg6W=FIa`(~PrmH=c>fq(B%!L2);h{5J zyU>1bFM{1epEENeLV~LxqmlXW_hf_@^Se%(K=~E!bgLL$QlpOs)-v@?3<^)yA`FIC zGZ>VV7TF}T`lC~VmNAt&{TnoD_xN6qO*tP+FP49LBH*m2D@;Kfv;8^2Ph!3!-*()vSS~Uue+FBs6v`7@|~#Z|z3t&=jC>J{3@s z))2H6MGt=RjM3rZ1Ka*jxwI1Fwkw}fp10B(Ust{S)^hNfZI^&N*R#`+u}8*J>Zn3rsv)Dc z|7E5Yd-Xn<8WHOYgu|m#e7zXAqDQH;%A`q?YHqI5I0H7eytN+{&h2X*G7roa++JuZ z?5HShYc_x3R_aTGy~Ah9qteg&7KfVYOc9}yDB7Ff_r7hrS{^5-u0Ym2a=6${!+0+v zUgLRA*UUhI>YHK{xe+>9N-=7~Z~^wuIeG`d_Z%4GFZ*wO>GV&KU*T1D+MWGq<{d0W zUcR#RjqnYZF$T^^)MN_K%Y<9jEeEZy?8;`2YbLxflpyfL=d;rsSBkHSMOMxH^rAkpG#_|BQCI zi9z&v6#0kJhZFf1rN{Q7qZ8%i)3uu{Q8lM|v_>_kCZjRc)#q<>OVoC?J$~qISF={n z2nJ=0D8!fLepVNh4H74neD^AWan5qHws4kyUoa^$$>-LAC4uW~Aw}W+)ubei)urF( zNt=Qy0ofTDsPj*j&S_5i@TC%p$UhTF1Z+&*-a#djz+$X>hVlZ7@p&{$BNn62kK5>! zj6Ou~GoX7uL>bbgFdrfbrB9ZXxM{Z}Q~GpfRtC8|B(M}xP{vX39JmrJden2!Z}AXI zVD0yL8hI%|U+YybBPB4PNp1F_y^e{>=V4vy>ODl94WDedZIa2Q$zIOrL0m4KlGF%( zC+m`qi+%&D&pNG=DTZL$>q_b zR|-Kw9-7!t<-`C1dD3Nyr~c_8^W1AFY&+K1rdg zsdl#(2#TxGCSHbnjDN)?bgAV^r1V&Wsg*k4%88?nD52=Sb90kX zUJFT;{6c$!pz88|WE`&t2WwcW&w%P`g{ic330Ep+s-sA0tWVz9XF`N=i%f$PMx(&V zL9U9D3Sy#K`D!j_7v+bJ-{SkR;zI$-P?hwG0y4;QBMTb}kBAExTH>eSfA9TrMOJDu zestVRkr(nreqyG{X3&eLS!Kp2M9!||`RC6&`yEr>Y&rRss?y=2@h$VN_V#wHL#I6_ zHA4pc0LW%}mp9*18|`vAM$>en>B;w00|&W;&+-<2F`Ig$ z%Y~^Ly+@@_EX9O_1#v?Sr6N)jh#?wdc7 z)s#cW#wa_Fq=G0a*6MB?o6H`{~l3#ZHMpJ8dr-#+!^R#Aw_uu{AyOq4HE;Q#0o9b&9B5}1!gU4rBy4y;})_P zWfpcXp0k^GH@4O=!f}mkf)S}HL;a=|(rRy4dzEod&G=lx=7&uys(p2|k82L&tvK$!m|XY^NJ9JJWW~FmWM$ zUQbELbD@MfPYC99e8n-onk?WzHftwF?(556%kQr3D$r^S6pJiFa%`<1;S=qwqC9^JAx35)0D5=NFZ z2ge_$QENF=H`z@$GE9yQ?i=i%mTCZH4o&TY5iezeG32J z_@+`F=4-+eXWsp4Eh0n5*s{^K>Kzuhb~RcwkyddrcfT3IAhvbW=Ve~vh7hGb@QE5 zxQ)CokySV)>yCHOF`qDxA*((8&qjxL4{$SyLJUf|eiK=SzQ8kd?2Mi?F2}M9*xcIk zeDgh07FQpPg{x8Hocf7$y*+Xm_k#mb3n&MyO>jhWMZ$>h=~)?Wkg6v3^oPE=MW6h` z=h>YC!LHj@qgfAsTs$PI8Vi2BTA;g9My%@4h$_kC4aR9FdGe_sRihwaq;#_>axjD{ zkR%m8_fC-(;cz3A@ba+c-_4j2?^O)t)9QZXpCGi z{o0|m&G-tf5UGN@#icg>vI9Pf`JYx*#w@U3Mw7-b?r+Ql@g@cv?(b&NrTVoSb50 zo_XA`kKep#p(iGG!-SS&JiuT&7lX3dny;rABUWsGzZu)GKKU9>bT5 zKh~Y?8rd?|7(<(voO6gLt4%Yu-|$22*D1cj8`OS`msQ2N+3t`={kgb(1NZs)^Kt*W zEtHhmDkvm$zpGd4AiVvLYFEXsBZ>5$;}15ot66QF20(CncBKfy=Xs2Rw;c zHUzsj!-c<#EjvF#jcv|%)M)-(i&?KICNQd;lq5G4Jg-#OMnt&)Qj!38i0b=cDxcD0 zbi6sp=9?eqQ}qH{*wz{`i$-J@VRROJL9-L8B?fgs zJ@dz1|B2s|cbIA%iX*0L#+W^R!cwnt?waaHU*EN9`+7KY0HWUATWbg zJ#$RE+RCm?z{S=?N#M7vU!#ejcsLqdo6ql$P|$ZQIF-6+dgGER8SAzNd_zI(sV#2i@cGU8k&A&8vF_*8`a%!i**QBE0 zaB2HpU4v3GC_L_mRQqBs?pU5$Vo!{Sc+|bxw91xQOi&toRI>EUc2S#F3$E91rtszGTj{9S#IBJQQLn$t`j)-A zeFkc04tB)qefc*pTo+UeH=}dC(^)wQA8GAa#ypMNkrCW2M|g~JF|8fnT+`?2CeEt* zRYwlLN=aO?51PFpUMS)}ytH3E`lMJ}FzUErsKdrdI29$Z*rGL)lBZo2#ng&NMyI}| z=?EKto|P5c{>25l&SHe1mNpND^IUw>)P0%Om;5fY3nU#GZBzGM`C3ogP_1a9@ry8H z*_#rDW;{2?*8tP6W>*J8RqK`mRKH-BvtWqO0We*y)jq9*w*k@_qDZMzy3*&%G2j&b zlsXw@&iS&7y|8gWm0fr@R$XhqvX|T@^6u|00qWcq<(aoXCRMlGypEEextN))Q^#n8 zhg2kDx-90%{57ze^T_W^eUln<`rlT26`kCal1e|z(cJNO`5qc6>v8mQF+J6mcA{n{ zQg(D^xmK>~j8SW9KYP^fu#XZ-Vb3cRu`EHc2ec+#ADv$;{Doffo~o-Sh5T;dCg!A~ zgIuKo++eo{tgZ)~Ph;0_llT?mucu! zRfSUXqsFNtG;PAvO z?{3!*yn0Q=E;}e+P0-SY)p=dFdo#H^y1iLE#NLQA`Vq^bouqFGdytS;c)^P4;loY| zOW(t}Uc%?KImSHdd*vSR*D-I~B|yf)fH zd)P2yoy|^-dC%`vj1znF#$dGuCe1)C9#7ml6?ce1^tC5hK_|?{KnV9QuJ%n1$<^LQ_45$>t9E_E4WCTe7C9QW7RG8R z*W6U$(68mJuFoMOccDP1+?S@&mDe7XC>%wD@|1B+`Glyo61{4fZ`StD6KBr|mqgBA znz}EFS*}%iJMK|*g`Y0bw~X*GG^y-wgiWi33)en6;dsJd4M8S1n;eCk=hN$Vv{r)( zy->Ua3UEe|bHp_r_jQ^xW@#&EdHtce*WSqMN;RgLJq{Wx_?%Y@{ruN&r)kwEHZ+2c zw-Oz;`cyvzDYc~VWuYOYwt~X|{&mN3lRSvT z_D>NCxb!%!U#V}{)uDG6k;!D&Y=Ks}EM^uK&d(NW|Adbd_nOPOlOo>92&I=Cch2;K z+3bEc(c9eAo>9}8Vo60%UXcIaYj{gOLGhpzT{xWngLBxV>kN}1(w6w5cwK{EorT@Js7MwP5Kxcypj2wjUUqq=)0fJt-1bv(zm!bOu9_siB ztp)2r+HMFS9mE6o-m930o=TGZxs#ks+c-DrY{zaQ&xP}x)Zah0u$flNvl89D^wLtP z^*xjct6rd~Q#l&p#%G{4&O0Ld1>i7;hh6$xth($KyW_qQgM{+|f>615jC)!##fgFe zzm=hYbu+2sg*$C9A^D+gv#|cSNx~s!s{NfKZt!279ChS<>ZtuJt?3__x$8rbR^Z)W za+-`icdb$7E;WdrMON4Z;w^qrGi`^OCiqm zs%)DI&EA~1^N&?G>iXMb*lIHcr*=bg(|@F)#=1cZm0=g1%`bRoqS#LwJP1tz>3YP( zMD;?C_T9UP>6JSnc8d^SG>HrtVN-Tf(GHHGOg1FOwWT=Icfp{HD8%7Z8rXowUG z4B(N7h-QmLi)MN(o$%Io2=CGM@(8TNcUqhCp) zmrR%L7mw2MptK`#A{k1t_zxVK{d<#^u`fflQIxHgL}G*msP+T(_E$omPJPCKW~TQ2 zmWn$~_jARY&XzyYeKf{Fk9Rvj!uK9W-qC_;8le-y%D>&4$y|8kZGv-0_u*=r|!S z)h<*xo7(W)Wv2TmjgKNwQShq$)GWZYa0?@uj^(W#E6d5K)-?HxCbFy~W%-fMj z?l{hO=M!5KYA>IX?m&YdoW1T&5TgKOXq#d>5X@z*6q>CAW3`{MsVQFB#I5<_VOEdZ zA4|uJ4K1wtPXl`l2v1~gkrGbX80K=DIa32Wa}!($X3;SSV{J#m7N5P&9pha+_Zvsk zt4aN^O_z;*%+K}m8eRFey^YDi4l-=}*GC`Dz?@zUk7fPZdES63JC(o_&;CQ${dQ+$ zu`=VGA5dd$=w{Ap0vZfdO|8g4WwT{QY2aI(cdg4{E}mOL9m&$V3` ziK=Tu-qP2D5UaDczC+*jzPci8Fc>^PR^+uuDtaWk{(d#2_4AjzIUV%N7h6u9Wt)LrOpGh}c5SPei_YW< zJg&?3^+3d@@2u3^E(52+1+7L~_3drmA?UpeDVtuZKvA2AJ)fB`P1i8c#NeM1EZ6-Xz&}SOmo-J90Y*^?4xri zoVTO~BUM9FZ_5>n@lkP8WP{S027I4MCbg_Msdkn(vXo&|3~|FK4{71+7B@Rwf*HFg z^rD2n!Z@<}sU3YF5_qjFK0&2DV?sCi>rGZbi}xFE&oZM$RxZDv9l{yqXzlGKc)e-t zbb-^3CgYllC;POUUZ&Z^Vt}L5)g_4P`R0ru|M)d0Gijm8Ud1(=!g3vtJN|mP*kQiSfxrcyYhMqi)QjB?&*uVmwx*|)DiT&h ze?arrw_%JaM~u_}E%qbP%Y3p|$Mct=q^i$*t=PC`{VycFq?WP@XM8E#`M-56vlL-D z1XW({RWI7;ya3MWMIg$bdse6O{RIA8Zr8uRDS5mKYn}G5RxiXF6mznm7^eS|seWc8 zspyUNDaQeVZ1rCFmC8PsIx}jy$X4!_wkNnH9iY&8)6J;EjA%Ys$!?Y*4mz*H!%V-~}8AP)Glye!NtbZtJK<70bxd5Y|35iwOVO`$UYz;yQh590p6 z!NI>^rK-cWDDdk5PXUlZo-%*|27Yw=a6R*PN+&~o1!DUjAaj~5}7fpzwRQR zijH`I4F?SrB#f>^{`U0i29sA3?*NP_2r|a;L3Z1~fQOMN$V}uO0r$eE7rni`ZAK|N zbsf7nIXTG%h7@60qkG=0Hx_tZeo+eE<3h#0#3Fn8A;97&IxJoPQ1?bUjU!F`27Cvn zr86=ZQj>%FPn^n6eses#nKrsP{dpY}?QHp!TM)m?{9R!FU9t8f{e)ohHKTmc^!wLaA`Jm=vp zJ~Ivj*I5j~u@?PnHlYt?_V>Z_kXWV{vj^Dv<7%-ZqQk60xj`$_aX0k8u(fa(@ehW- za<^lo4zZhKr-mdPX#spcij9Z}2K4G|b&e2%lyjx*-2jfdoRDL>byUWvuRG2u(}@KF z7NZN=Y}Xk=0|?X;UY8ri|? zu60pvSbJk?VS#2b08MKK6r}UIp1pc*Vo}k%LrLgg-m`e2HGSpUfBM>`=4z9TjBu(! z*~1Uab|Co38AF0>_s1QA3{V%7gw*l#`A~w$If=6A+1dODR51b2zE2&xRgmR2q-!qG z>@#FZ(ZcL{19*aVDX4`f0FmhmpZ*N256?u%Kg5~25 zum2qA!1&V(tRNaeXUJlA`kT`e8(tUCjuf?PVoe5D8<@0d=ZZ;!88^7@aPV1=_PC-1 z%f`sU;;`nJOtuzR0e@n0^6hy?*#5@KDz8}QWFzt$T{k}CV-{)#0Qj5}{sD^q+HI0> zFy~LDXMEqRBGS3yWgU4IFOk68Beaybh}`=Bj<^0H;@#W(l|xGY`+AYnDJ|c%jej1F z(ViKt7?XdAp%^gt^#4~D0Grdj4%d_D)jhpME-=GSc!zXMBV4ZM2NS6`gzYgA_bt$H zrMiM{rJCX*s|#>Lq25hZXs<>86fL}>S@yws>ATG0-p!zQj>i_MTBaZU4$D=`jEcFo zx0r{ato$Mwxr5`Z?;Jung$OefgiPMBK??&ky43@D&OddLZ_WRijd6Z4s2EG@t8z0x zg4)%`22(Tp{4oJ^8&PFL`HLJIos8YSBDM#ELQF4)9!7ksacE$_6-Q$Q+xNt6hv8+o zsvm0W25QHKzRAzIyyNGzj-bFKC#;0wwKM#__sPp_R{1_Qr|4NmX(`&@)Z4e{HoTP| zC*OFYybXF^~KCVbTDSjnJ86UD?8`mta`t3 z>FX8vxEfP_?pF6dmpzj3tnyPaH1ywcC_y?=t*0ttiSlIrjl8w>MHO@LQ#(47eM<&t zmIRG+gGO8!^A-6&+ehvN?HASKi3xF$pNx=iiCXvPn_q#4MKb$+^8?x>yJzX~vS7<3 z#h08msaDatu{C9n*7@ZxY8uZ?!BfD4Qa-$UARCFx8Tt<}!!9fC0s(Wlv5wmgT&@T- za^LYra$?@kDAS|0c&jG+sa^DY)UbsPfW4FTAr?i3F;PuJw@BUM{FD>%6HjXAc^g~9 z9(H4JbTSZ}^l=#Z;cf4~MnW@g-wmGF?4ER3mjaAfMLq0Mdtjf~OKFY1u6Hov9dZE3 zOat(?Ql8RvW{kf8xzwPSIQz!_hW-a4oNj+d5`tCicu>Wp9^d~LLgxf*TV?pl_9zRMn$bb$|vYnYny2R&E%$OS3APsVl-2>4>= zsBcmkB(Ah|mMV$`fLi+e+65_M18)D{hfw|-B>qpyl`n)v`9fc)uKDk-2O(J%VqRI| z)eTqWQ~8C4W+Ar?((&_Ap#qE}=7wX%cl+yYFYHINu-)^Y-Zj33<~dz6iveA&9$+dR zD=yWI8}PnD7^9&<+nTr^S3Sf zGgOyP`c4>U9y{f?5QoGY-*WUrioUNtlVH)(we-@1owcokbq!{IY%xp>r|~>92z=cu z0hJNlNX?AZ`@e-GzsKIEma22FDte#SmwYk{zv2ntxju~Toyzu_7|C2P@o3EKcT(7p`NjN9_ykF zCrpGqyuOVmW>Ues>K+n_M7;aCxcj&!{|k#0CLGtkXW@k5ubPMy?8Z-RrFj&AEqCjZ z3H1x+&d#*O;(iBx8<>kPrM#=}XOoSd@aZ+Ru=#deK`v!^8YLRizm3+IH9P#}7Eu5W zUcC+nlaW%_1|W?uQDlsh_^q%dl9`mPe~RN138^M|-LRzM8K|z<(?h;BbIo@Ip7vE= z3URiDqdpsQuj87?G^%U6SyikE?<727oNC+aq!=ML1z%0+>={A+>w+-sgMm6&Ib+2; zC50RJ?*QkZjVq+4OpsYj_2S;!_xf0R*xwu}GN^$p1fm;xUkPCGRT%Am_OxrdopE2Q zhUom51Cn3}p-c7zQ=yb96jt_WXSDq6Xv1bz#QxN5TA^EF;Nb3jbaZ^rnO#9FeUR_K z*rT$7`tm=}Us5iz(`UBU^=WXsf$WEq1XEgMdlzUrVu>iZ3Ur_ZK7ZKKggpHc2P5iF zwUKB5-dJB{;_qtTzS-vpaluicqsV%ESXqBHYLX69hmq+?wL4H*J+meef13wugHTd^ z$`jwr?xu{a>)jDlwtv%RAF#Lt78(~&MiZOJpI-|Pr^03GxAz77f{2^l=(JMQw0)pn z?+o}kz?2S?@AciMS)ATFs2^4={S)7vG-RPG0|%N3Gxg%Z>bMP1J}u@1iK{wH4sJmb zCa^vYSDAQFPM}8zu%&fI{&a}c)7{`;YJY$CTX>?y`Ex$Mp|6elU0V_JF0MoL`>lAs zo7n8o*zNMOk&qyMAT}Qo<{z9ngA4&!zQs+dBkHdsHD3832GyN*%VkGSp=o4tCh_1M&Y$>zf*5}$s@ZqfbN84TL|(Q(JgAl*EyWP7 z8o}tNHD4f_Yj@vfqs058@YA`DPW;s4O&}c|;mexRj$aCFbsVz-XVhQ-pEKa0$5n{^ zl4K6I_~f5PKGeS-Js6chjUzH&m|JMSDJ}0Xd;Nv(i(evRyG7MAT8ybZ%iz5Zm^h-^ z7fyCa9?ReTt8v-ldY-)i?2VsdXd0l!ECa4zEnf$8`bYhUk?jxI>Wb?zFWWhHFs;<^JQ05VL$>eQd zf7EHwN0``pqpXkH$Rl^Na56ka1bmFxhP#yj080%MU@r<*B%X zt?WbybTg*%m0?u_`7^`nl3qqxlGG$W7xnwz{2b4-bPw##ZxR?^0QE})M?G{qtAB(} zZq-J35%Ec70)j&A4dGN4#fRSd?pi2{%?-b9$7-_c+cP;FJamoTFi=Uo4VOCnA*!{8 z7zE;w&`$F3N%d$yS@ALaNBxPBAMmmAgGxxValhGlv(R zC8W6je1tXRto04BeZv#CV!;Fyrlw}v-AhqFo0qxQ4u|d-yR8Bu+DQ z=@6@Pz8F;O;Xw7q?QO7>)u@jXsIbk~LBxXa(Sg4bY4^iW8ev@Gg`+Jnt|Mo$J>~GJ z&cr5Iqh3(QoRZYNmF|?eQD^!0Pcqi&;m(>brWWUID0IQjO5_viS$!M}+7sEs4}7v- zuNPXH%2-tAYjmZxUZ)mY(#d?;5oKX+#cOLVwu;byGpa$}OB!U8G@1r{#uo5e<(MFz z_-TAGKa2D!ePb}y;{hPP4fTh#3 zzs*aDr$zX@I?D+1%xUsE&FuwE9WaY%wdieBco;fr@|b!#Ooycs)7<{0Xh(<}rD%UcAljmQ~dtZ>)X` zKIE=AiC(7_2GURwXf$GjJn^!W6Y~%h&=O%{X^VYYlaWPFuH9?`tUTEq{muM{kg8_G zXnOHC;MrIj2Kx0mh!hRQHE`5$fY#*Y4&} z*+zB0T*1f9)YLX;p)7ViEqa%(@8pzXkEMKi7mqzbK1Defy``H%nC^#ZpqlGuyVRD* zdHm=mPE#vdAASq;3<@;Q7l-M<8=cRLOj=grhR}B}6KvQR$P>j- z^sQoM;O38t)W5OIry4F7KiYHbv<1D?rD8F|z5*ppiUo5ii+EOD~ECZ7ay$$9E`kvm}jqbFt}Xmn-`PacJ- zGkJf#m>66tY@)(lE&kBiD`80SS}bni0Vkw1JTaY+2?#n01PmBYu#G65_VKgZuTsHP zk?i1UVk7wC*OZi*Rs1<{Th0^YU~yc?ccs_m*0|_i`T-x-Bvm`m&3~4-H)XlP7t?QG zEI3pD#dyhnsqMcJl^Io!6OXhmnt6Afc_W`v0X8Q`A>7Of#DelvoognA-NSEMnm{z5n06-Z~Oc&3@$B*uz06A$|T{Idh1zb0ZGLzG1_FK2GU)?bm1!NwpS+@g9~)7uE2NIfk?SdOZlCN7cN8ULpFtzqvaT7S*Qx$NM^zMjQ!clG@vB}fL zhQiZwrIC$DOw}*9u#|a54MlpEoOkyI!@ta>Rq>Q7m1D>J?eC`7o%)-vLC0c6u)2%4 ztkrRpW|rfd>GyYC!z9|9Vxx+bzBP91YW~nCk$2LTRtZ+b@RARm1LlSV)?}})P#lse z-Yj?#d0u`9kAVBeYRc*FurbjmMQQK}Tm{D+9z&T!+e*e&7i^+91B$SR$p#v&`FP6&M(0=DBEhq#Oxb=D-znyAL&G>akqV>S~2 zz5y2{YK16M!%L-`=x=KC;2?ks&Y_|9|fy> zS)eidSOpYK(4Q`zy?oQTOFZmhM{IGAut3Bmh!c*yxC<28{B+vI9x4Rq6^h zb$#B9aYC?S2c5H{s%M*CP<5ePfo5!`)%I`v<;yv87}Fga{lsl5bfG5;`atS)@$$o} z|2!y@ZoPYBM!pl|eRm8~&7PuW1<5M)tZ zp4lzW%={Lxa1%ZvfWa4MJH52O)I2;eqN7UcAm>O=`C4Z-#uv>hOplo3j^3;yi+|MzU9+*7v*PV5a z_=~UFr!YEiM*Os}PEksQ|w5u&v}3FbiEq;Yxd)ahS#HV%~!~(>hXF&@++wb zDM%1Lusu{B5$K;=!+D+S)HkCWa=RI~avas=N-{V!}NRW23MCi6V|aP#KS6s1Fx!>_*Me{^;K|Js~FrKo?nR%!r2in3|K4k^D!AuXn_0KJx-v7|jgl?A)3}XE8|v_=%K6 z2?M6}Scd1`#JXOr>inRLI=duit)-XTL)VnVT_a#ah&-BU&Vn{+;owLaIYqbluMg$n zQiNe0K;!+Se3tdVbvCvq{=g;9uzeougj{%wnc%mA1A*Yta{BvcW`Tj2 z*1vpX*vf4;e|mA@a4UH+`8T8k7K-H@>5+zgQooFeU4AQujVUU1!(-1!clIFWURpu* zEd9|%P`6h*Tf)Q*Z}4q>ke-1dR&V`rP`dH<-|)Ek76+lN$wuLsD&1i3hh@0;N1S4U zwj$>BM~KSk2ZCgQUaGv2e?NZh?|jY=bzeM6gM<&mms9 zv`WVHx9tFYU>#=*4@O?GLh-ZR`KGh!^uNU_?T_2Z$*pW zW01?$V_Xh--tWKqHoEC+hc5W*jPNjLy&>{&4!<42;Dcw1R)TJS-K=a-I&KAAaeH?| zLrjoS4Ft;nNn$=_@(*;V^EzdZ3oi=%xb_wW_P_jO0C>QI1b-uemGq-excEL>Bk)8% zSk#O~-38fq*~>jtSP-#uo!0GFz+*)kmiIDYT$JEX|M)m@`yWBzy<|-&2RFgQL39g1 zG{~41))-+kwnq192K-Z7z{$*lpWgk)xa#rlf9#BQ)fnRGJVwd0I6ZDb_t}eqeZFQZ zxVI_ixjI5h8;*@#e{kSj0c(1GkwpAd6yAsoQ2ogHYj_oN^Ov4NyJ(QA*fzmKI)kf= z*h(hl>Kh2~hT7AcUI>c1K}cThF-3ly{`yscRO9}A3}?8Blaq)#;!JmIR`Uhp2<~+q z;*2-IJM4kt1%UwQqg0%nM?+anZB!gD=KML`P?O(aLJ=d%Al!MivRuPxULFnJ^SP}1 zi{eQci6BDR^JgPAkmu6St_mk3t?Nd9*OZ~aKt(klg$)i4 zUjK|_SGh+8T`ey*h|B3TcCnL-Whg$r%N>u>SmJalz4GvSDPlu@?u--$l7e}*Hz=KD zKn0N&qZByfaHa`0wmQbe%RXRiJfTJ0W{a6YhSzb5P_jSjaiBrKbs^n(G!XE8JtAY^ zb7ur`o;7$xJ2iTg02oUSXT>IcI|nrBR?(0&qq$n+ctxDucz|VvVTc|X)XyE$dfFS!yG) zrk_%STjG#i)oHbG)32li={YK-A3kRGpiTu43~&~Vl&;G+FsBIx+-i5cNYkRTaksWZ zjk5F2Q951hQ(peP`PI?Au?22AZ9?e98(FkD;Yos_Q)oTm-Q3@2Gi)3BtaaXjgjG-- z?&%xaRVxt>swbWKh(}*)R;pKp z>7QmTOVgkV=@HG3{G98-1`bx$qDL}kWB4!a&-&l5qV;_6(&2Tg&Eu%bY>%lg#oCwB zJUt*v>@+37Kj6ehjh{O-6XsV)7TvpRtHK}j=@83if zd~agZGzcI0P=QeMxEMZd)aY|3*eXN|$4e6mI1`U@@X%~@lzAuTt@!F}uYcj$eS*Z^ zrX9nsVdc^&qJ`amWdXLFzsv}}urq@e(%ZaW(eQZ-PSu>%7YR;fqlkm*t>j_8@f2lc z;$k7%SM6=}hdMrP7B5_=%Ag_Q7Ei^D|r2CzibY)#3d^8^xR9B>p2n z;r$dt`D1}9n+MJeWXG6{73~IeNH<-21E+KP1^-vCwsI4B;hu7t!nJ%oYAwUoOqI^Y zWxVgo@t<}yok1S$?KO6qyA6Kc!Z3a5Q^eF4<_6kPJe#)20ONCW=$$`8b?7Y$fkGj5IxdDzuwI#9nJZZHvt;jqL!Ok(tVKm(9|BpZa9 zsW|!W#4xf#gz69R+S&1;h1wr)7=gKb9l7Dre{fDFGu4di*?$}SCW1d=IqpRM=Nn?h zfN;%oU@-cG6KzsxB6Sc3-LM1WZJ<%&{*!+BAKT3T>$e{KHw|Zu%aXUqB2xs*crfP6 zxFKcdbA&#eI`<3o;=mKREZ2?&Z3V$(f&_SVhv%~Wi{hsxY(C~Unqhn?zl=P0%@>yhAE5ULEx7K^lu*1jp~)FA?fa9Vt7glU6k3< zcSOU&;%v7`_hNH(N zM45K$LuoQ!Uf@2!wWwsq@J2bE=EehN>G=6>>h|Xz1BXPqZo+)qYNdQd**PMYD z#y>}(UlX-0qArls#O82&Oy`#fS2zZD*dXRwS6p^1p6MlKdr{qS>E%?B&+3WW?0WFHp+=tOl@BLr<<3m4S4^3OkM6$@G>G zEB(hsH6H~0l_^Zf?(y_SU)JUy!m2ioeEC?vR)y>J4o8(zAkwY}m*qb$0q@wc;UY+@ zVdqCcF0g4@^u&QynwQwL({Zvm4)u?%GzCqs#h}f5Tzc)Yov%j^Yz+yez6=Zj?Eq~d{tS!r(_eawU=oFuyxdi=4Qzt zOa<>up>Pa4%Bhq~-}ea965#NFhM#BWN6@E%KsZ@8b!*bb9OG6$+>;2zojU3g=a-Ev znh@`1Lv?@z>1UFXQTqZ;x(+^)*KPu0eE?9aBBcF*Y}?hRcp|+XBn57XPV9iiPKwiN zUrOOV0=FF#qH5Q#gmbqvg)j;ed0Wq@B9u*iJ5uzDbl9yRXLBJm(+fwgUBeHl$Koc38Av79~`dZilAy&`a%sRb1 z>Xqp2b7mMSpfM$v{uRkW?`D*u-bl~#j{(D_iv3GjmjA;*{d-gR(F&VRv5aZKXtZ2C zc1w0Bb4@m->H8U;WDf zX|F0+I@CKM)3|T(xM>trk@*Jc1FZrAkXHc#bY`n$_S>@nc5^m!^tq(AaZ82d3&J4i z3y`s>T+I(-02aG!B?#U>*bO~546=P0~P39mgnUI`^kOiC)--SwQQ{}S*(=p=L7 z?8T9i=_Y-~q|GI^okkM?6M>axPz9=vwvy3>-hAi}KOO=XP~oW$PC%yZsT|)(blx>U z;1S-u;(5CFQ4CN}H-a&VdiWVaYJ?LgO8zF1jv#SGM;-)t?(S@(9gJt^aN9361C&3B zQA}b;sh{VJ0flW^`D5+e7mSG9$iixc8!LePB}xjU5zM3eX6h;R`+im8#gSWmJFE~? zZz(3M1fpXgkC8)H*;IijH%eK=ACZIvn_8c$fDOXV!G%0A)f+6I%gb+7_Yx_82Wd@! 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 Z5n19o<jYV`mB diff --git a/icons/obj/guns/manufacturer/hunterspride/lefthand.dmi b/icons/obj/guns/manufacturer/hunterspride/lefthand.dmi index 6471cef8b5ebd61594a152dfe360bc6ec62566df..febc543be1b5940402c5a3556c70c983c876d6ea 100644 GIT binary patch literal 7622 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 Ilr;p1JO8Cc(s5mzL@d6%i2;t-hYNDG?E| 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 diff --git a/icons/obj/guns/manufacturer/hunterspride/onmob.dmi b/icons/obj/guns/manufacturer/hunterspride/onmob.dmi index 361899e3c5235f1f1912ff3d255b31ffa0faaed9..539b811aacd6dfdcb690fccae80b4c8fcbd9639d 100644 GIT binary patch delta 7166 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 V^doYw*7g7Z002ovPDHLkV1j^^3^)J) diff --git a/icons/obj/guns/manufacturer/hunterspride/righthand.dmi b/icons/obj/guns/manufacturer/hunterspride/righthand.dmi index fbf4f7cf3fbf806a4d2f02b597c6cb134671efba..ec9a8a53ba7ff704aadd98ee2b2ff9824cf1386b 100644 GIT binary patch literal 7606 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 literal 6376 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 Date: Mon, 14 Oct 2024 01:05:02 -0500 Subject: [PATCH 11/62] Automatic changelog generation for PR #3500 [ci skip] --- html/changelogs/AutoChangeLog-pr-3500.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3500.yml diff --git a/html/changelogs/AutoChangeLog-pr-3500.yml b/html/changelogs/AutoChangeLog-pr-3500.yml new file mode 100644 index 000000000000..2e24245d05ce --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3500.yml @@ -0,0 +1,5 @@ +author: rye-rice +changes: + - {rscadd: Various sprite improvemnts} + - {bugfix: Boomslang no longer fits on the belt} +delete-after: true From 56c392f33f8dfe8fa27095710c8b4c12cf34a312 Mon Sep 17 00:00:00 2001 From: Erika Fox <94164348+Bjarl@users.noreply.github.com> Date: Mon, 14 Oct 2024 01:56:48 -0400 Subject: [PATCH 12/62] Anomaly Edits / Improvements (#3365) ## About The Pull Request Reformats anomaly code to be mildly less 2023. Anomalies now only have one core instead of aCore and bCore (what was i smoking). This core can receive multiple codes on the *same* frequency. Some anomaly cores now have unique detonation effects for when they are activated outside of an anomaly. A few samples of this include: setting things on fire, radiation poisoning, disappearing. Includes a new anomaly to try and balance out positive vs negative. The new anomaly is called the Transfusion. It steals blood until it is no longer hungry, at which point it will give blood to those lacking in it. ## Why It's Good For The Game More sandboxy nature + decision making in conflict around anomalies. ## Changelog :cl: Erika Fox add: Transfusion anomaly; yum! Blood! add: Anomaly cores now have an effect when detonated out of the anomaly add: new anomaly description fluff /:cl: --------- Signed-off-by: Erika Fox <94164348+Bjarl@users.noreply.github.com> Co-authored-by: Theos --- .../objects/effects/anomalies/_anomalies.dm | 46 ++-- .../effects/anomalies/anomalies_bluespace.dm | 4 +- .../effects/anomalies/anomalies_flux.dm | 11 +- .../effects/anomalies/anomalies_gravity.dm | 5 +- .../anomalies/anomalies_hallucination.dm | 5 +- .../effects/anomalies/anomalies_heartbeat.dm | 4 +- .../effects/anomalies/anomalies_melter.dm | 6 +- .../effects/anomalies/anomalies_phantom.dm | 4 +- .../effects/anomalies/anomalies_plasmasoul.dm | 4 +- .../effects/anomalies/anomalies_pulsar.dm | 4 +- .../anomalies/anomalies_pyroclastic.dm | 10 +- .../effects/anomalies/anomalies_sparkler.dm | 4 +- .../effects/anomalies/anomalies_static.dm | 56 ++-- .../anomalies/anomalies_transfusion.dm | 69 +++++ .../effects/anomalies/anomalies_veins.dm | 4 +- .../effects/anomalies/anomalies_vortex.dm | 5 +- .../game/objects/effects/spawners/lootdrop.dm | 6 +- code/modules/assembly/anomalies.dm | 248 ++++++++++++++++++ code/modules/assembly/signaler.dm | 120 --------- icons/effects/anomalies.dmi | Bin 139228 -> 153916 bytes shiptest.dme | 2 + 21 files changed, 400 insertions(+), 217 deletions(-) create mode 100644 code/game/objects/effects/anomalies/anomalies_transfusion.dm create mode 100644 code/modules/assembly/anomalies.dm diff --git a/code/game/objects/effects/anomalies/_anomalies.dm b/code/game/objects/effects/anomalies/_anomalies.dm index 4a85f9321154..6477446a2b72 100644 --- a/code/game/objects/effects/anomalies/_anomalies.dm +++ b/code/game/objects/effects/anomalies/_anomalies.dm @@ -8,9 +8,7 @@ anchored = TRUE light_range = 3 - //aSignal drops as the core, bSignal allows people to signal to detonate - var/obj/item/assembly/signaler/anomaly/aSignal = /obj/item/assembly/signaler/anomaly - var/obj/item/assembly/signaler/anomaly/bSignal = /obj/item/assembly/signaler/anomaly/det_signal + var/obj/item/assembly/signaler/anomaly/core = /obj/item/assembly/signaler/anomaly var/area/impact_area var/lifespan = 990 @@ -46,27 +44,17 @@ pulse_delay = rand(pulse_delay*0.5, pulse_delay*1.5) src.drops_core = drops_core - if(aSignal) - aSignal = new aSignal(src) - aSignal.code = rand(1,100) - aSignal.anomaly_type = type - aSignal.research = research_value + if(core) + core = new core(src) + core.code = rand(1,100) + core.code_b = rand(1,100) + core.anomaly_type = type + core.research = research_value var/frequency = rand(MIN_FREE_FREQ, MAX_FREE_FREQ) if(ISMULTIPLE(frequency, 2))//signaller frequencies are always uneven! frequency++ - aSignal.set_frequency(frequency) - - if(bSignal) - bSignal = new bSignal(src) - bSignal.code = rand(1,100) - bSignal.anomaly_type = type - var/frequency = rand(MIN_FREE_FREQ, MAX_FREE_FREQ) - if(ISMULTIPLE(frequency, 2))//signaller frequencies are always uneven! - frequency++ - bSignal.set_frequency(frequency) - - + core.set_frequency(frequency) if(lifespan) if(new_lifespan) @@ -97,7 +85,7 @@ /obj/effect/anomaly/Destroy() STOP_PROCESSING(SSobj, src) QDEL_NULL(countdown) - QDEL_NULL(aSignal) + QDEL_NULL(core) return ..() /obj/effect/anomaly/proc/anomalyEffect(seconds_per_tick) @@ -118,30 +106,26 @@ /obj/effect/anomaly/proc/anomalyNeutralize() new /obj/effect/particle_effect/smoke/bad(loc) - if(drops_core) - if(isnull(aSignal)) + if(isnull(core)) stack_trace("An anomaly ([src]) exists that drops a core, yet has no core!") else - aSignal.forceMove(drop_location()) - aSignal = null + core.forceMove(drop_location()) + core = null // else, anomaly core gets deleted by qdel(src). qdel(src) /obj/effect/anomaly/attackby(obj/item/weapon, mob/user, params) - if(weapon.tool_behaviour == TOOL_ANALYZER && aSignal) + if(weapon.tool_behaviour == TOOL_ANALYZER && core) to_chat(user, span_notice("You start analyzing [src].")) if(do_after(user, 20, src, hidden = TRUE)) - to_chat(user, span_notice("[src]'s primary field is fluctuating along frequency [format_frequency(aSignal.frequency)], code [aSignal.code].")) - if(bSignal) - to_chat(user, span_notice("A second field is fluctuating along [format_frequency(bSignal.frequency)], code [bSignal.code]. It is highly unstable." )) - return TRUE + to_chat(user, span_notice("[src]'s primary field is fluctuating along frequency [format_frequency(core.frequency)], code [core.code].")) + return TRUE return ..() - /obj/effect/anomaly/examine(mob/user) . = ..() if(user.research_scanner == TRUE) diff --git a/code/game/objects/effects/anomalies/anomalies_bluespace.dm b/code/game/objects/effects/anomalies/anomalies_bluespace.dm index f7012e532944..d5825181295c 100644 --- a/code/game/objects/effects/anomalies/anomalies_bluespace.dm +++ b/code/game/objects/effects/anomalies/anomalies_bluespace.dm @@ -2,9 +2,9 @@ /obj/effect/anomaly/bluespace name = "jumper" icon_state = "bluespace" - desc = "A mysterious anomaly that causes teleportation around it." + desc = "A hole in the fabric of bluespace, perforating reality around it." density = TRUE - aSignal = /obj/item/assembly/signaler/anomaly/bluespace + core = /obj/item/assembly/signaler/anomaly/bluespace ///range from which we can teleport someone effectrange = 3 var/reagent_amount = 3 diff --git a/code/game/objects/effects/anomalies/anomalies_flux.dm b/code/game/objects/effects/anomalies/anomalies_flux.dm index b1318953f4a6..4eaddefdcae0 100644 --- a/code/game/objects/effects/anomalies/anomalies_flux.dm +++ b/code/game/objects/effects/anomalies/anomalies_flux.dm @@ -1,9 +1,10 @@ /obj/effect/anomaly/flux name = "tesla" - icon_state = "flux" - desc = "A mysterious anomaly that sends out a near constant stream of electrical arcs." + icon_state = "tesla" + //double-check that these only happen in atmosphere now + desc = "A break in the atmosphere, small yet potent lightning arcs flashing off it." density = TRUE - aSignal = /obj/item/assembly/signaler/anomaly/flux + core = /obj/item/assembly/signaler/anomaly/flux pulse_delay = 2 SECONDS effectrange = 0 var/canshock = FALSE @@ -99,3 +100,7 @@ /obj/effect/anomaly/flux/big/planetary immortal = TRUE immobile = TRUE + +/obj/effect/anomaly/flux/storm + drops_core = FALSE + explosive = FLUX_LOW_EXPLOSIVE diff --git a/code/game/objects/effects/anomalies/anomalies_gravity.dm b/code/game/objects/effects/anomalies/anomalies_gravity.dm index 1dea7049fc97..20cc30dcc74d 100644 --- a/code/game/objects/effects/anomalies/anomalies_gravity.dm +++ b/code/game/objects/effects/anomalies/anomalies_gravity.dm @@ -9,10 +9,9 @@ /obj/effect/anomaly/grav name = "throngler" icon_state = "gravity" - desc = "A mysterious anomaly that sucks things towards it with a gravitational field, ending in what has been termed a 'throngling'." + desc = "A miniature gravity well, constantly pulling the world around it into a 'throngling'." density = FALSE - aSignal = /obj/item/assembly/signaler/anomaly/grav - bSignal = null + core = /obj/item/assembly/signaler/anomaly/grav effectrange = 4 var/boing = 0 ///Warp effect holder for displacement filter to "pulse" the anomaly diff --git a/code/game/objects/effects/anomalies/anomalies_hallucination.dm b/code/game/objects/effects/anomalies/anomalies_hallucination.dm index ab859a3b3215..e48a1879f257 100644 --- a/code/game/objects/effects/anomalies/anomalies_hallucination.dm +++ b/code/game/objects/effects/anomalies/anomalies_hallucination.dm @@ -2,7 +2,8 @@ /obj/effect/anomaly/hallucination name = "hallucination anomaly" icon_state = "hallucination" - aSignal = /obj/item/assembly/signaler/anomaly/hallucination + desc = "A shimmering mirage suspended above the ground, never in the same place as it was a second ago." + core = /obj/item/assembly/signaler/anomaly/hallucination /// Time passed since the last effect, increased by delta_time of the SSobj var/ticks = 0 /// How many seconds between each small hallucination pulses @@ -18,6 +19,8 @@ var/turf/open/our_turf = get_turf(src) if(istype(our_turf)) hallucination_pulse(our_turf, 5) + pixel_x = pixel_x + clamp(rand(-5, 5), -16, 16) + pixel_y = pixel_y + clamp(rand(-5, 5), -16, 16) /obj/effect/anomaly/hallucination/detonate() var/turf/open/our_turf = get_turf(src) diff --git a/code/game/objects/effects/anomalies/anomalies_heartbeat.dm b/code/game/objects/effects/anomalies/anomalies_heartbeat.dm index 1b691d898436..ff111fe4882c 100644 --- a/code/game/objects/effects/anomalies/anomalies_heartbeat.dm +++ b/code/game/objects/effects/anomalies/anomalies_heartbeat.dm @@ -1,9 +1,9 @@ /obj/effect/anomaly/heartbeat name = "heartbeat" icon_state = "heartbeat" - desc = "A mysterious anomaly, it ionizes the world around it." + desc = "A throbbing vertex, spreading a cancer to the world around itself." density = TRUE - aSignal = /obj/item/assembly/signaler/anomaly/heartbeat + core = /obj/item/assembly/signaler/anomaly/heartbeat effectrange = 3 pulse_delay = 6 SECONDS var/reagent_amount = 5 diff --git a/code/game/objects/effects/anomalies/anomalies_melter.dm b/code/game/objects/effects/anomalies/anomalies_melter.dm index d906d4f4bad2..3c99fd7eab5a 100644 --- a/code/game/objects/effects/anomalies/anomalies_melter.dm +++ b/code/game/objects/effects/anomalies/anomalies_melter.dm @@ -1,10 +1,10 @@ /obj/effect/anomaly/melter name = "melter" icon_state = "melter" - desc = "A mysterious anomaly. Everburning green flames with a horrid sizzle, melting what's near" + desc = "Everburning green flames, eager to lash out at anything that intrudes near." effectrange = 2 pulse_delay = 10 SECONDS - aSignal = /obj/item/assembly/signaler/anomaly/melter + core = /obj/item/assembly/signaler/anomaly/melter /obj/effect/anomaly/melter/anomalyEffect(seconds_per_tick) ..() @@ -20,7 +20,7 @@ I.acid_act(20, 20) I.update_appearance() for (var/obj/item/melt in range(effectrange, src)) - + //don't melt yourself if(istype(melt, /obj/item/assembly/signaler/anomaly)) return else diff --git a/code/game/objects/effects/anomalies/anomalies_phantom.dm b/code/game/objects/effects/anomalies/anomalies_phantom.dm index 9407bbcbf920..e2225c4c843e 100644 --- a/code/game/objects/effects/anomalies/anomalies_phantom.dm +++ b/code/game/objects/effects/anomalies/anomalies_phantom.dm @@ -1,9 +1,9 @@ /obj/effect/anomaly/phantom name = "phantom" icon_state = "phantom" - desc = "A mysterious anomaly, the outline of a humanoid, endlessly screaming in agony." + desc = "A familiar outline, it calls out for companionship. It screams for you." density = FALSE - aSignal = /obj/item/assembly/signaler/anomaly/phantom + core = /obj/item/assembly/signaler/anomaly/phantom effectrange = 3 pulse_delay = 2 SECONDS diff --git a/code/game/objects/effects/anomalies/anomalies_plasmasoul.dm b/code/game/objects/effects/anomalies/anomalies_plasmasoul.dm index 006d42ac28d3..f2d9bf6308a5 100644 --- a/code/game/objects/effects/anomalies/anomalies_plasmasoul.dm +++ b/code/game/objects/effects/anomalies/anomalies_plasmasoul.dm @@ -1,9 +1,9 @@ /obj/effect/anomaly/plasmasoul name = "plasma soul" icon_state = "plasmasoul" - desc = "A mysterious anomaly, it slowly leaks plasma into the world around it." + desc = "A plasmatic pool, small crystals growing around it, spreading into the ground." density = TRUE - aSignal = /obj/item/assembly/signaler/anomaly/plasmasoul + core = /obj/item/assembly/signaler/anomaly/plasmasoul effectrange = 3 pulse_delay = 6 SECONDS var/reagent_amount = 5 diff --git a/code/game/objects/effects/anomalies/anomalies_pulsar.dm b/code/game/objects/effects/anomalies/anomalies_pulsar.dm index 1f75acee56b8..360e004b2adf 100644 --- a/code/game/objects/effects/anomalies/anomalies_pulsar.dm +++ b/code/game/objects/effects/anomalies/anomalies_pulsar.dm @@ -1,9 +1,9 @@ /obj/effect/anomaly/pulsar name = "pulsar" icon_state = "pulsar" - desc = "A mysterious anomaly, endless electromagnetic disturbances roll out from it" + desc = "A near transparent shell hovering, containing a near constant electromagnetic turmoil." density = TRUE - aSignal = /obj/item/assembly/signaler/anomaly/pulsar + core = /obj/item/assembly/signaler/anomaly/pulsar effectrange = 4 pulse_delay = 15 SECONDS diff --git a/code/game/objects/effects/anomalies/anomalies_pyroclastic.dm b/code/game/objects/effects/anomalies/anomalies_pyroclastic.dm index b4c93868e670..fef1c8b38a0b 100644 --- a/code/game/objects/effects/anomalies/anomalies_pyroclastic.dm +++ b/code/game/objects/effects/anomalies/anomalies_pyroclastic.dm @@ -2,17 +2,16 @@ /obj/effect/anomaly/pyro name = "plasmaball" icon_state = "pyroclastic" - desc = "A mysterious anomaly, made of an everburning gas. Those who approach it tend to absorb it's heat, or even ignite." + desc = "A floating orb of everburning gas, not unlike a sun. It radiates a dangerous amount of heat." effectrange = 4 pulse_delay = 10 SECONDS - aSignal = /obj/item/assembly/signaler/anomaly/pyro + core = /obj/item/assembly/signaler/anomaly/pyro /obj/effect/anomaly/pyro/anomalyEffect(seconds_per_tick) ..() for(var/mob/living/carbon/nearby in range(effectrange, src)) nearby.adjust_bodytemperature(20) - visible_message("[src] pulses!") if(!COOLDOWN_FINISHED(src, pulse_cooldown)) return @@ -21,7 +20,7 @@ for(var/mob/living/carbon/nearby in range(effectrange/2, src)) nearby.fire_stacks += 3 nearby.IgniteMob() - visible_message("[src] ignites [nearby]!") + visible_message("[src] lets out a flare, igniting [nearby]!") /obj/effect/anomaly/pyro/Bumped(atom/movable/AM) @@ -84,3 +83,6 @@ /obj/effect/anomaly/pyro/big/planetary immortal = TRUE immobile = TRUE + +/obj/effect/anomaly/pyro/storm + drops_core = FALSE diff --git a/code/game/objects/effects/anomalies/anomalies_sparkler.dm b/code/game/objects/effects/anomalies/anomalies_sparkler.dm index 0b26e6fd6a1c..79dd55cf21a7 100644 --- a/code/game/objects/effects/anomalies/anomalies_sparkler.dm +++ b/code/game/objects/effects/anomalies/anomalies_sparkler.dm @@ -1,9 +1,9 @@ /obj/effect/anomaly/sparkler name = "sparkler" icon_state = "sparkler" - desc = "A mysterious anomaly, constantly throwing sparks into its vicinity." + desc = "A series of shimmering sparks flying to and fro. They try to spread, yet fail." density = TRUE - aSignal = /obj/item/assembly/signaler/anomaly/sparkler + core = /obj/item/assembly/signaler/anomaly/sparkler effectrange = 4 pulse_delay = 1 SECONDS diff --git a/code/game/objects/effects/anomalies/anomalies_static.dm b/code/game/objects/effects/anomalies/anomalies_static.dm index ab574ee475dd..5b5bb76badf2 100644 --- a/code/game/objects/effects/anomalies/anomalies_static.dm +++ b/code/game/objects/effects/anomalies/anomalies_static.dm @@ -1,9 +1,25 @@ +GLOBAL_LIST_INIT(tvstatic_sayings, list( + "... Help me...", + "... I need to get out ...", + "...No hope....", + "...Let me loose...", + "...stay with me...", + "...Not like this...", + "...please don't go...", + "...don't forget me...", + "...Are you there...?", + "...it hurts...", + "...the eyes...", + "...need to run...", + "...is anyone there..." +)) + /obj/effect/anomaly/tvstatic name = "static" icon_state = "static" - desc = "A mysterious anomaly. A hole in the world, endless buzzing emitting from it." + desc = "A hole in the world emitting an endless buzzing. It hides something precious." density = TRUE - aSignal = /obj/item/assembly/signaler/anomaly/tvstatic + core = /obj/item/assembly/signaler/anomaly/tvstatic effectrange = 4 pulse_delay = 4 SECONDS verb_say = "pleads" @@ -48,7 +64,7 @@ var/mob/living/carbon/victim = looking var/obj/effect/anomaly/tvstatic/planetary/expansion expansion = new(get_turf(victim)) - visible_message(span_warning("The static overtakes [victim], [expansion] taking their place!")) + visible_message(span_warning("[src] overtakes [victim], [expansion] taking their place!")) victim.death() expansion.stored_mob = victim victim.forceMove(expansion) @@ -58,44 +74,18 @@ anomalyEffect() /obj/effect/anomaly/tvstatic/proc/say_fucky_things() - switch(rand(1, 13)) - if(1) - say("... Help me...") - if(2) - say("... I need to get out ...") - if(3) - say("...No hope....") - if(4) - say("....Let me loose...") - if(5) - say("...stay with me...") - if(6) - say("...I hope I live...") - if(7) - say("...please don't go...") - if(8) - say("...don't forget me...") - if(9) - say("...Are you there...?") - if(10) - say("...it hurts...") - if(11) - say("...the eyes...") - if(12) - say("...need to run...") - if(13) - say("...don't become like me...") + say(pick(GLOB.tvstatic_sayings)) return /obj/effect/anomaly/tvstatic/detonate() for(var/mob/living/carbon/human/looking in range(effectrange, src)) - visible_message(span_boldwarning(" The static lashes out, agony filling your mind as its tendrils scrape your thoughts!")) + visible_message(span_boldwarning("[src] lashes out, agony filling your mind as its tendrils scrape your thoughts!")) if (!HAS_TRAIT(looking, TRAIT_MINDSHIELD) && looking.stat != DEAD) looking.adjustOrganLoss(ORGAN_SLOT_BRAIN, 100, 200) playsound(src, 'sound/effects/stall.ogg', 100) if(stored_mob) mangle_corpse() - visible_message(span_warning("The static sputters out [stored_mob], their body coming out in a burst of blood and gore!")) + visible_message(span_warning("[src] sputters out [stored_mob], their body coming out in a burst of blood and gore!")) new /obj/effect/gibspawner/human(loc) stored_mob.forceMove(get_turf(src)) stored_mob = null @@ -111,7 +101,7 @@ var/turf/T = get_turf(src) if(T) if(stored_mob) - visible_message(span_warning("The static spits out [stored_mob], their body coming out in a burst!")) + visible_message(span_warning("[src] spits out [stored_mob], their body coming out in a burst!")) stored_mob.forceMove(get_turf(src)) stored_mob = null . = ..() diff --git a/code/game/objects/effects/anomalies/anomalies_transfusion.dm b/code/game/objects/effects/anomalies/anomalies_transfusion.dm new file mode 100644 index 000000000000..f233f9c0a3c4 --- /dev/null +++ b/code/game/objects/effects/anomalies/anomalies_transfusion.dm @@ -0,0 +1,69 @@ +/obj/effect/anomaly/transfusion + name = "transfusion" + icon_state = "transfusion" + desc = "A throbbing field floating mid-air, crimson particulate hovering within it." + density = TRUE + core = /obj/item/assembly/signaler/anomaly/transfusion + effectrange = 3 + pulse_delay = 5 SECONDS + +/obj/effect/anomaly/transfusion/anomalyEffect() + ..() + + if(!COOLDOWN_FINISHED(src, pulse_cooldown)) + return + + COOLDOWN_START(src, pulse_cooldown, pulse_delay) + blood_music() + return + +/obj/effect/anomaly/transfusion/proc/blood_music() //by greg bear + //this is hacky *because* in an ideal world - it would involve making the core have a reagent container for the blood + //however - I am a lazy bitch + for(var/mob/living/carbon/victim in range(effectrange, src)) + //if we're not hungry, we're not hungry. + if (core?:get_blood_max() < core?:get_blood_stored()) + new /obj/effect/temp_visual/dir_setting/bloodsplatter(src.loc, rand(1, 8)) + visible_message(span_boldwarning("[src] vomits up blood, seemingly satiated!")) + core?:set_blood_stored(core?:get_blood_max()) + return + //if there's blood to take, take it + if (victim.blood_volume > BLOOD_VOLUME_SAFE) + var/bleeder + bleeder = rand(10,30) + victim.bleed(bleeder) + victim.spray_blood(get_dir(victim, src), splatter_strength = 1) //slurp + visible_message(span_boldwarning("Ichor flows out of [victim], and into [src]!")) + core?:set_blood_stored(bleeder) + break + //but if there's blood to give, share. + if(victim.blood_volume < BLOOD_VOLUME_SAFE && core?:get_blood_stored() > (core?:get_blood_max() / 2)) + var/present_time + present_time = rand((core?:get_blood_stored() / 10), (core?:get_blood_stored() / 2)) + visible_message(span_boldwarning("Globules of ichor fly away from [src], and into [victim]!")) + core?:set_blood_stored(-present_time) + victim.blood_volume += present_time + break + return + +/obj/effect/anomaly/transfusion/Bumped(atom/movable/AM) + if(!COOLDOWN_FINISHED(src, pulse_secondary_cooldown)) + return + COOLDOWN_START(src, pulse_secondary_cooldown, 10) + if(istype(AM, /mob/living/carbon)) + var/mob/living/carbon/victim = AM + visible_message(span_boldwarning("[victim] touches [src], and as they pull away their blood flows away from them!")) + var/amount = rand(50, 200) + victim.bleed(amount) + core?:set_blood_stored(amount) + +/obj/effect/anomaly/transfusion/detonate() + for(var/mob/living/carbon/victim in range(effectrange, src)) + victim.bleed(rand(100, 250)) + victim.spray_blood(get_dir(src, victim), splatter_strength = 3) //slurp + visible_message(span_boldwarning("[src] screams as it tries to pull all the blood around into itself!")) + . = ..() + +/obj/effect/anomaly/transfusion/planetary + immortal = TRUE + immobile = TRUE diff --git a/code/game/objects/effects/anomalies/anomalies_veins.dm b/code/game/objects/effects/anomalies/anomalies_veins.dm index 416e325ccdbd..b148f2d01666 100644 --- a/code/game/objects/effects/anomalies/anomalies_veins.dm +++ b/code/game/objects/effects/anomalies/anomalies_veins.dm @@ -1,9 +1,9 @@ /obj/effect/anomaly/veins name = "veins" icon_state = "veins" - desc = "A mysterious anomaly, throbbing purple veins, suspended midair." + desc = "Throbbing purple veins, an exposed artery of the world. It thirsts." density = TRUE - aSignal = /obj/item/assembly/signaler/anomaly/veins + core = /obj/item/assembly/signaler/anomaly/veins effectrange = 3 pulse_delay = 4 SECONDS diff --git a/code/game/objects/effects/anomalies/anomalies_vortex.dm b/code/game/objects/effects/anomalies/anomalies_vortex.dm index 16a30cbaa9c6..5e5875077660 100644 --- a/code/game/objects/effects/anomalies/anomalies_vortex.dm +++ b/code/game/objects/effects/anomalies/anomalies_vortex.dm @@ -2,9 +2,8 @@ /obj/effect/anomaly/vortex name = "vortex" icon_state = "vortex" - desc = "A mysterious anomaly, this one destroys everything around it." - aSignal = /obj/item/assembly/signaler/anomaly/vortex - bSignal = null + desc = "An incredibly compact black orb, its hunger unquenchable." + core = /obj/item/assembly/signaler/anomaly/vortex /obj/effect/anomaly/vortex/anomalyEffect() ..() diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index 364ddeb72298..1163a5520631 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -805,6 +805,7 @@ /obj/effect/anomaly/plasmasoul/planetary, /obj/effect/anomaly/phantom/planetary, /obj/effect/anomaly/melter/planetary, + /obj/effect/anomaly/transfusion/planetary, ) /obj/effect/spawner/lootdrop/anomaly/safe @@ -815,6 +816,7 @@ /obj/effect/anomaly/sparkler/planetary, /obj/effect/anomaly/veins/planetary, /obj/effect/anomaly/phantom/planetary, + /obj/effect/anomaly/transfusion/planetary, ) /obj/effect/spawner/lootdrop/anomaly/dangerous @@ -999,8 +1001,8 @@ /obj/effect/spawner/lootdrop/anomaly/storm loot = list( - /obj/effect/anomaly/flux, - /obj/effect/anomaly/pyro, + /obj/effect/anomaly/flux/storm, + /obj/effect/anomaly/pyro/storm, /obj/effect/anomaly/sparkler, /obj/effect/anomaly/veins, /obj/effect/anomaly/phantom, diff --git a/code/modules/assembly/anomalies.dm b/code/modules/assembly/anomalies.dm new file mode 100644 index 000000000000..0b390b39e8b4 --- /dev/null +++ b/code/modules/assembly/anomalies.dm @@ -0,0 +1,248 @@ +///Base anomaly signaller +// Embedded signaller used in anomalies. +/obj/item/assembly/signaler/anomaly + name = "anomaly core" + desc = "The stabilized core of an anomaly. It'd probably be valuable for research." + icon_state = "anomaly core" + item_state = "electronic" + lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' + resistance_flags = FIRE_PROOF + //allows anomaly cores to recieve multiple signals + var/code_b = DEFAULT_SIGNALER_CODE + var/anomaly_type = /obj/effect/anomaly + var/research + +/obj/item/assembly/signaler/anomaly/Initialize() + . = ..() + set_frequency(frequency) + +/obj/item/assembly/signaler/anomaly/attack_self() + return + +/obj/item/assembly/signaler/anomaly/receive_signal(datum/signal/signal) + if(!signal) + return FALSE + if(signal.data["code"] == code) + for(var/obj/effect/anomaly/Anomaly in get_turf(src)) + Anomaly.anomalyNeutralize() + return TRUE + if(signal.data["code"] == code_b ) + for(var/obj/effect/anomaly/Anomaly in get_turf(src)) + Anomaly.detonate() + anomaly_core_detonation() + return TRUE + return FALSE + +//extend this on a per anomaly basis. +/obj/item/assembly/signaler/anomaly/proc/anomaly_core_detonation() + new /obj/effect/particle_effect/smoke/bad(loc) + qdel(src) + +/obj/item/assembly/signaler/anomaly/attackby(obj/item/I, mob/user, params) + if(I.tool_behaviour == TOOL_ANALYZER) + to_chat(user, "Analyzing... [src]'s stabilized field is fluctuating along frequency [format_frequency(frequency)], code [code]. An unstable frequency is present at code [code_b].") + ..() + +///Bluespace Anomaly +/obj/item/assembly/signaler/anomaly/bluespace + name = "\improper bluespace anomaly core" + desc = "The stabilized core of a bluespace anomaly. It keeps phasing in and out of view." + icon_state = "anomaly core" + +/obj/item/assembly/signaler/anomaly/bluespace/anomaly_core_detonation() + //just teleports people + visible_message(span_warning("[src] creates a bluespace fracture around itself!")) + for(var/mob/living/Mob in range(1,src)) + do_teleport(Mob, locate(Mob.x, Mob.y, Mob.z), 8, channel = TELEPORT_CHANNEL_BLUESPACE) + ..() + +//Flux Anomaly +/obj/item/assembly/signaler/anomaly/flux + name = "\improper flux anomaly core" + desc = "The stabilized core of a flux anomaly. Touching it makes your skin tingle." + icon_state = "flux core" + +/obj/item/assembly/signaler/anomaly/flux/anomaly_core_detonation() + //zap + visible_message(span_warning("Electrical arcs flash off of [src] as it fizzles out!")) + tesla_zap(src, 3, 1000, ZAP_FUSION_FLAGS) + ..() + +///Gravity Anomaly +/obj/item/assembly/signaler/anomaly/grav + name = "\improper gravitational anomaly core" + desc = "The stabilized core of a gravitational anomaly. It feels much heavier than it looks." + icon_state = "grav core" + +/obj/item/assembly/signaler/anomaly/grav/anomaly_core_detonation() + //throngles u cutely + visible_message(span_warning("[src] implodes into itself, light itself bending for a split second!")) + for(var/mob/living/carbon/carbon in range(1,src)) + if(carbon.run_armor_check(attack_flag = "melee") >= 20) + carbon.break_random_bone() + else if(carbon.run_armor_check(attack_flag = "melee") >= 40) + carbon.break_all_bones() //crunch + carbon.apply_damage(20, BRUTE) + +///Hallucination Anomaly +/obj/item/assembly/signaler/anomaly/hallucination + name = "\improper hallucination anomaly core" + desc = "The stabilized core of a hallucination anomaly. It's never entirely there." + icon_state = "hallucination_core" + +///Heartbeat Anomaly +/obj/item/assembly/signaler/anomaly/heartbeat + name = "\improper heartbeat anomaly core" + desc = "The stabilized core of a heartbeat anomaly. Pulses of heat run across its shell." + +/obj/item/assembly/signaler/anomaly/heartbeat/anomaly_core_detonation() + visible_message(span_warning("[src] expands and throbs, before shattering into dozens of fragments!")) + radiation_pulse(src, 500, 2) + new /obj/effect/decal/cleanable/glass/strange(src) + ..() + +///Melter Anomaly +/obj/item/assembly/signaler/anomaly/melter + name = "\improper melter anomaly core" + desc = "The stabilized core of a melter anomaly. It sizzles and crackles." + icon_state = "pyro core" + +/obj/item/assembly/signaler/anomaly/melter/anomaly_core_detonation() + visible_message(span_warning("[src] melts into a glowing residue!")) + new /obj/effect/decal/cleanable/greenglow(src.loc) + ..() + +///Phantom Anomaly +/obj/item/assembly/signaler/anomaly/phantom + name = "\improper phantom anomaly core" + desc = "The stabilized core of a phantom anomaly. It quietly screams." + +/obj/item/assembly/signaler/anomaly/phantom/anomaly_core_detonation() + playsound(src,'sound/hallucinations/far_noise.ogg', 100, 0, 50, TRUE, TRUE) + visible_message(span_warning("[src] screams as it disappates!")) + ..() + +///Plasmasoul Anomaly +/obj/item/assembly/signaler/anomaly/plasmasoul + name = "\improper plasmasoul anomaly core" + desc = "The stabilized core of a plasmasoul anomaly. The air around it hisses." + +/obj/item/assembly/signaler/anomaly/plasmasoul/anomaly_core_detonation() + visible_message(span_warning("[src] rapidly delaminates, leaving behind trace vapors!")) + ..() + +///Pulsar Anomaly +/obj/item/assembly/signaler/anomaly/pulsar + name = "\improper pulsar anomaly core" + desc = "The stabilized core of a pulsar anomaly. Electromagnetic crackles come off it." + +/obj/item/assembly/signaler/anomaly/pulsar/anomaly_core_detonation() + visible_message(span_warning("[src] gives off one last pulse as it melts!")) + empulse(loc, 3, 1) + ..() + +///Pyroclastic Anomaly +/obj/item/assembly/signaler/anomaly/pyro + name = "\improper pyroclastic anomaly core" + desc = "The stabilized core of a pyroclastic anomaly. It almost burns to touch." + icon_state = "pyro core" + +//glorified molotov +/obj/item/assembly/signaler/anomaly/pyro/anomaly_core_detonation() + //this is tg's ash heretic ash heretic ascenscion power tuned down a bit. + visible_message(span_warning("[src] loses coherence, bursting into brilliant flames!")) + for(var/i in 0 to 3) + for(var/turf/nearby_turf as anything in spiral_range_turfs(i + 1, src.loc)) + var/obj/effect/hotspot/flame_tile = locate(nearby_turf) || new(nearby_turf) + flame_tile.alpha = 125 + nearby_turf.hotspot_expose(750, 25, 1) + qdel(src) + +///Sparkler Anomaly +/obj/item/assembly/signaler/anomaly/sparkler + name = "\improper sparkler anomaly core" + desc = "The stabilized core of a sparkler anomaly. Tiny electrical sparks arc off it." + +/obj/item/assembly/signaler/anomaly/sparkler/anomaly_core_detonation() + visible_message(span_warning("[src] shoots out one last assortment of sparks!")) + tesla_zap(src, 2, 5000, ZAP_FUSION_FLAGS) + ..() + +///Static Anomaly +/obj/item/assembly/signaler/anomaly/tvstatic + name = "\improper static anomaly core" + desc = "The stabilized core of a static anomaly. Your head hurts just staring at it" + +/obj/item/assembly/signaler/anomaly/tvstatic/anomaly_core_detonation() + visible_message(span_warning("[src] withdraws into itself, one last message escaping it!")) + say(pick(GLOB.tvstatic_sayings)) + for(var/mob/living/carbon/human/looking in range(4, src)) + if (!HAS_TRAIT(looking, TRAIT_MINDSHIELD) && looking.stat != DEAD) + looking.adjustOrganLoss(ORGAN_SLOT_BRAIN, 20, 40) + playsound(src, 'sound/effects/stall.ogg', 100) + ..() + +///Transfusion Anomaly +/obj/item/assembly/signaler/anomaly/transfusion + name = "\improper transfusion anomaly core" + desc = "The stabilized core of a tranfusion anomaly. Crimson slowly seeps out of the containment unit." + icon_state = "pyro core" + var/blood_stored + var/blood_max + +/obj/item/assembly/signaler/anomaly/transfusion/Initialize() + . = ..() + blood_max = rand(400, 1200) + +/obj/item/assembly/signaler/anomaly/transfusion/proc/set_blood_stored(int) + blood_stored += int + +/obj/item/assembly/signaler/anomaly/transfusion/proc/set_blood_max(int) + blood_max = int + +/obj/item/assembly/signaler/anomaly/transfusion/proc/get_blood_stored() + return blood_stored + +/obj/item/assembly/signaler/anomaly/transfusion/proc/get_blood_max() + return blood_max + +/obj/item/assembly/signaler/anomaly/transfusion/anomaly_core_detonation() + visible_message(span_warning("Ichor flies out of [src], trying to force itself into everything around!")) + while(blood_stored > 0) + for(var/mob/living/carbon/victim in range(2, src)) + var/present_time + present_time = rand((blood_stored / 10), (blood_stored / 2)) + visible_message(span_boldwarning("[victim] finds themselves transfused with the crimson ichor!")) + victim.blood_volume += present_time + blood_stored += -present_time + ..() + +///Veins Anomaly +/obj/item/assembly/signaler/anomaly/veins + name = "\improper fountain anomaly core" + desc = "The stabilized core of a fountain anomaly. It's slippery, like an intestine." + +/obj/item/assembly/signaler/anomaly/veins/anomaly_core_detonation() + //goreshit + var/obj/effect/gibspawner/mess = pick(list( + /obj/effect/gibspawner/human, + /obj/effect/gibspawner/xeno, + /obj/effect/gibspawner/generic/animal + )) + visible_message(span_warning("[src] erupts into a fountain of gore and viserca!")) + new mess(src.loc) + ..() + +///Vortex Anomaly +/obj/item/assembly/signaler/anomaly/vortex + name = "\improper vortex anomaly core" + desc = "The stabilized core of a vortex anomaly. It won't sit still, as if some invisible force is acting on it." + icon_state = "vortex core" + +/obj/item/assembly/signaler/anomaly/vortex/anomaly_core_detonation() + //disappears bigly + playsound(src,'sound/effects/phasein.ogg', 100, 0, 50, TRUE, TRUE) + new /obj/effect/particle_effect/sparks/quantum(loc) + visible_message(span_warning("[src] shakes violently and - hey, where'd it go?")) + ..() diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm index 0bfac86ee0df..b1203d358e7f 100644 --- a/code/modules/assembly/signaler.dm +++ b/code/modules/assembly/signaler.dm @@ -144,126 +144,6 @@ return return ..(signal) -// Embedded signaller used in anomalies. -/obj/item/assembly/signaler/anomaly - name = "anomaly core" - desc = "The neutralized core of an anomaly. It'd probably be valuable for research." - icon_state = "anomaly core" - item_state = "electronic" - lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - resistance_flags = FIRE_PROOF - var/anomaly_type = /obj/effect/anomaly - var/research - -/obj/item/assembly/signaler/anomaly/receive_signal(datum/signal/signal) - if(!signal) - return FALSE - if(signal.data["code"] != code) - return FALSE - for(var/obj/effect/anomaly/Anomaly in get_turf(src)) - Anomaly.anomalyNeutralize() - return TRUE - -/obj/item/assembly/signaler/anomaly/attackby(obj/item/I, mob/user, params) - if(I.tool_behaviour == TOOL_ANALYZER) - to_chat(user, "Analyzing... [src]'s stabilized field is fluctuating along frequency [format_frequency(frequency)], code [code].") - ..() - -/obj/item/assembly/signaler/anomaly/det_signal - name = "anomaly field" - research = null - anomaly_type = null - -/obj/item/assembly/signaler/anomaly/det_signal/receive_signal(datum/signal/signal) - if(!signal) - return FALSE - if(signal.data["code"] != code) - return FALSE - for(var/obj/effect/anomaly/Anomaly in get_turf(src)) - Anomaly.detonate() - return TRUE - - -//Anomaly cores - -/obj/item/assembly/signaler/anomaly/pyro - name = "\improper pyroclastic anomaly core" - desc = "The neutralized core of a pyroclastic anomaly. It feels warm to the touch. It'd probably be valuable for research." - icon_state = "pyro core" - anomaly_type = /obj/effect/anomaly/pyro - -/obj/item/assembly/signaler/anomaly/grav - name = "\improper gravitational anomaly core" - desc = "The neutralized core of a gravitational anomaly. It feels much heavier than it looks. It'd probably be valuable for research." - icon_state = "grav core" - anomaly_type = /obj/effect/anomaly/grav - -/obj/item/assembly/signaler/anomaly/flux - name = "\improper flux anomaly core" - desc = "The neutralized core of a flux anomaly. Touching it makes your skin tingle. It'd probably be valuable for research." - icon_state = "flux core" - anomaly_type = /obj/effect/anomaly/flux - -/obj/item/assembly/signaler/anomaly/bluespace - name = "\improper bluespace anomaly core" - desc = "The neutralized core of a bluespace anomaly. It keeps phasing in and out of view. It'd probably be valuable for research." - icon_state = "anomaly core" - anomaly_type = /obj/effect/anomaly/bluespace - -/obj/item/assembly/signaler/anomaly/vortex - name = "\improper vortex anomaly core" - desc = "The neutralized core of a vortex anomaly. It won't sit still, as if some invisible force is acting on it. It'd probably be valuable for research." - icon_state = "vortex core" - anomaly_type = /obj/effect/anomaly/vortex - -/obj/item/assembly/signaler/anomaly/hallucination - name = "\improper hallucination anomaly core" - desc = "The neutralized core of a hallucination anomaly. It seems to be moving, but it's probably your imagination. It'd probably be valuable for research." - icon_state = "hallucination_core" - anomaly_type = /obj/effect/anomaly/hallucination - -/obj/item/assembly/signaler/anomaly/sparkler - name = "\improper sparkler anomaly core" - desc = "The neutralized core of a sparkler anomaly. Tiny electrical sparks arc off it." - anomaly_type = /obj/effect/anomaly/sparkler - -/obj/item/assembly/signaler/anomaly/veins - name = "\improper fountain anomaly core" - desc = "The neutralized core of a fountain anomaly. Blood drips off of it." - anomaly_type = /obj/effect/anomaly/sparkler - -/obj/item/assembly/signaler/anomaly/phantom - name = "\improper phantom anomaly core" - desc = "The neutralized core of a phantom anomaly. It quietly screams." - anomaly_type = /obj/effect/anomaly/phantom - -/obj/item/assembly/signaler/anomaly/pulsar - name = "\improper pulsar anomaly core" - desc = "The neutralized core of a pulsar anomaly. Electromagnetic crackles come off it." - -/obj/item/assembly/signaler/anomaly/plasmasoul - name = "\improper plasmasoul anomaly core" - desc = "The neutralized core of a plasmasoul anomaly. The air around it hisses." - -/obj/item/assembly/signaler/anomaly/heartbeat - name = "\improper heartbeat anomaly core" - desc = "The neutralized core of a heartbeat anomaly. It's concerningly warm to the touch." - -/obj/item/assembly/signaler/anomaly/tvstatic - name = "\improper static anomaly core" - desc = "The neutralized core of a static anomaly. Your head hurts just staring at it" - -/obj/item/assembly/signaler/anomaly/melter - name = "\improper melter anomaly core" - desc = "The neutralized core of a melter anomaly. It sizzles and crackles. It'd probably be valuable for research." - icon_state = "pyro core" - - - -/obj/item/assembly/signaler/anomaly/attack_self() - return - /obj/item/assembly/signaler/cyborg /obj/item/assembly/signaler/cyborg/attackby(obj/item/W, mob/user, params) diff --git a/icons/effects/anomalies.dmi b/icons/effects/anomalies.dmi index e1671b816ec558ca3bc0723dead6cc12c26a4d36..c716fc7990975ab067f798cae77b4d1297d497de 100644 GIT binary patch delta 30807 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

YWQ@7U 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 Date: Mon, 14 Oct 2024 01:18:38 -0500 Subject: [PATCH 13/62] Automatic changelog generation for PR #3365 [ci skip] --- html/changelogs/AutoChangeLog-pr-3365.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3365.yml diff --git a/html/changelogs/AutoChangeLog-pr-3365.yml b/html/changelogs/AutoChangeLog-pr-3365.yml new file mode 100644 index 000000000000..a2954f6d1f42 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3365.yml @@ -0,0 +1,6 @@ +author: Erika Fox +changes: + - {rscadd: Transfusion anomaly; yum! Blood!} + - {rscadd: Anomaly cores now have an effect when detonated out of the anomaly} + - {rscadd: new anomaly description fluff} +delete-after: true From 02eb67871aa3601247429ed264f078541c6fdc48 Mon Sep 17 00:00:00 2001 From: Sadhorizon <108196626+Sadhorizon@users.noreply.github.com> Date: Mon, 14 Oct 2024 07:57:55 +0200 Subject: [PATCH 14/62] Adds NGR stamps and secret docs. (#3550) ## About The Pull Request ![obraz](https://github.com/user-attachments/assets/1d16e84a-c00b-49ad-8a50-d469bc1d598f) ![obraz](https://github.com/user-attachments/assets/38fa6b7a-65ec-4f8a-a7c4-51a12059a1e8) Adds that stuff to the Hyena. ## Why It's Good For The Game There is an NGR combat ship and a Hyena replacement in the works rn. Good time to add some fluff. ## Changelog :cl: add: Added stamps for New Gorlex Republic. add: Added secret documents for New Gorlex Republic. /:cl: --- .../syndicate/syndicate_gorlex_hyena.dmm | 21 ++++++++------- code/game/objects/items/documents.dm | 5 ++++ code/modules/asset_cache/asset_list_items.dm | 7 ++++- code/modules/paperwork/folders_premade.dm | 4 +++ code/modules/paperwork/stamps.dm | 25 ++++++++++++++++++ icons/obj/bureaucracy.dmi | Bin 36547 -> 36504 bytes icons/stamp_icons/large_stamp-ngr.png | Bin 0 -> 3293 bytes icons/stamp_icons/large_stamp-ngr_captain.png | Bin 0 -> 1397 bytes icons/stamp_icons/large_stamp-ngr_ensign.png | Bin 0 -> 1311 bytes icons/stamp_icons/large_stamp-ngr_foreman.png | Bin 0 -> 1411 bytes .../large_stamp-ngr_lieutenant.png | Bin 0 -> 1436 bytes 11 files changed, 52 insertions(+), 10 deletions(-) create mode 100644 icons/stamp_icons/large_stamp-ngr.png create mode 100644 icons/stamp_icons/large_stamp-ngr_captain.png create mode 100644 icons/stamp_icons/large_stamp-ngr_ensign.png create mode 100644 icons/stamp_icons/large_stamp-ngr_foreman.png create mode 100644 icons/stamp_icons/large_stamp-ngr_lieutenant.png diff --git a/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm b/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm index 84ace94a70a2..7d0278f8b906 100644 --- a/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm +++ b/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm @@ -762,9 +762,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, -/obj/item/stamp/qm{ - name = "foreman's rubber stamp" - }, +/obj/item/stamp/ngr/foreman, /obj/machinery/button/shieldwallgen{ dir = 1; id = "hyena_cargo"; @@ -795,10 +793,12 @@ /area/ship/bridge) "oF" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/item/documents/syndicate/mining, -/obj/structure/filingcabinet, +/obj/structure/filingcabinet{ + dir = 1 + }, /obj/machinery/firealarm/directional/west, /obj/effect/turf_decal/borderfloorblack, +/obj/item/folder/documents/syndicate/ngr, /turf/open/floor/plasteel/tech/grid, /area/ship/bridge) "oJ" = ( @@ -1870,14 +1870,17 @@ }, /obj/effect/decal/cleanable/dirt/dust, /obj/item/paper_bin/carbon, -/obj/item/folder/documents/syndicate/red, /obj/item/pen/fountain/captain, -/obj/item/stamp/hos{ - name = "captain's rubber stamp" - }, /obj/effect/turf_decal/borderfloorblack{ dir = 1 }, +/obj/item/stamp/ngr{ + pixel_x = 13; + pixel_y = 7 + }, +/obj/item/stamp/ngr/captain{ + pixel_x = 13 + }, /turf/open/floor/plasteel/tech/grid, /area/ship/bridge) "Ge" = ( diff --git a/code/game/objects/items/documents.dm b/code/game/objects/items/documents.dm index 2fb225fd2fb9..e7e78abb4abc 100644 --- a/code/game/objects/items/documents.dm +++ b/code/game/objects/items/documents.dm @@ -49,6 +49,11 @@ /obj/item/documents/syndicate/mining desc = "\"Top Secret\" documents detailing Syndicate plasma mining operations." +/obj/item/documents/syndicate/ngr + name = "Second Battlegroup secret documents" + desc = "\"Top Secret\" documents belonging to the Second Battlegroup of New Gorlex Republic. They are filled with sensitive operational intelligence. These documents are verified with a red wax seal." + icon_state = "docs_red" + /obj/item/documents/photocopy desc = "A copy of some top-secret documents. Nobody will notice they aren't the originals... right?" var/forgedseal = 0 diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index 43d1d46f329c..d233b74ee69c 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -123,7 +123,12 @@ "stamp-gold" = 'icons/stamp_icons/large_stamp-gold.png', "stamp-cybersun" = 'icons/stamp_icons/large_stamp-cybersun.png', "stamp-biodynamics" = 'icons/stamp_icons/large_stamp-biodynamics.png', - "stamp-donk" = 'icons/stamp_icons/large_stamp-donk.png' + "stamp-donk" = 'icons/stamp_icons/large_stamp-donk.png', + "stamp-ngr" = 'icons/stamp_icons/large_stamp-ngr.png', + "stamp-ngr_cap" = 'icons/stamp_icons/large_stamp-ngr_captain.png', + "stamp-ngr_fore" = 'icons/stamp_icons/large_stamp-ngr_foreman.png', + "stamp-ngr_lieu" = 'icons/stamp_icons/large_stamp-ngr_lieutenant.png', + "stamp-ngr_ensign" = 'icons/stamp_icons/large_stamp-ngr_ensign.png' ) /datum/asset/simple/fuckywucky diff --git a/code/modules/paperwork/folders_premade.dm b/code/modules/paperwork/folders_premade.dm index 48b7cb763785..5237358e34b1 100644 --- a/code/modules/paperwork/folders_premade.dm +++ b/code/modules/paperwork/folders_premade.dm @@ -61,6 +61,10 @@ /obj/item/folder/documents/syndicate/mining document = /obj/item/documents/syndicate/mining +/obj/item/folder/documents/syndicate/ngr + document = /obj/item/documents/syndicate/ngr + icon_state = "folder_ngr" + /obj/item/folder/documents/solgov document = /obj/item/documents/solgov desc = "A blue folder with a SolGov seal." diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index 4311eb080cf2..fecf2b17dac6 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -106,6 +106,31 @@ icon_state = "stamp-biodynamics" dye_color = DYE_CMO +/obj/item/stamp/ngr + name = "New Gorlex Republic rubber stamp" + icon_state = "stamp-ngr" + dye_color = DYE_REDCOAT + +/obj/item/stamp/ngr/captain + name = "Captain's rubber stamp" + icon_state = "stamp-ngr_cap" + dye_color = DYE_QM + +/obj/item/stamp/ngr/foreman + name = "Foreman's rubber stamp" + icon_state = "stamp-ngr_fore" + dye_color = DYE_QM + +/obj/item/stamp/ngr/lieutenant + name = "Lieutenant's rubber stamp" + icon_state = "stamp-ngr_lieu" + dye_color = DYE_QM + +/obj/item/stamp/ngr/ensign + name = "Ensign's rubber stamp" + icon_state = "stamp-ngr_ensign" + dye_color = DYE_QM + /obj/item/stamp/solgov name = "SolGov rubber stamp" icon_state = "stamp-solgov" diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi index b56a287cc21b324674f7506442a6e5c2df17ded1..ab9af894d43e0ab9248a1f356650debfd67401a2 100644 GIT binary patch literal 36504 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 literal 36547 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�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⁣aJ^iZB5mR5cr*O}4A1xx(S$eAs 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 DJ9e#A literal 0 HcmV?d00001 diff --git a/icons/stamp_icons/large_stamp-ngr_ensign.png b/icons/stamp_icons/large_stamp-ngr_ensign.png new file mode 100644 index 0000000000000000000000000000000000000000..9e7bc9056789ba2c09666fad6836862c51307a63 GIT binary patch literal 1311 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 R8Iu42002ovPDHLkV1f&wlL`O; literal 0 HcmV?d00001 diff --git a/icons/stamp_icons/large_stamp-ngr_lieutenant.png b/icons/stamp_icons/large_stamp-ngr_lieutenant.png new file mode 100644 index 0000000000000000000000000000000000000000..f96be7a5ee5642131ead531ec26d9dd67ac5e046 GIT binary patch literal 1436 zcmV;N1!MY&P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1u;oPK~#8N?VBx( zB}EX&ch8(8r!F~xL?Upw%^CD5g2AqWwr^Je;&OkRIgcXd@)chB3m=XZB^XN`69D1J6pOmp%EXinY$&B+^} zIe7!9x9fj@`}t+}@%kZ`#Z~v9Jw6GNr#cRA2T0Z$Q>&+Pt52_QkFoNk6W4ESKS{YK z&%Zd2$s|@J*BFFkX;LZBhChTSBcb-H5h7Nd2OpypnqQ7=N&kJ@E+BU?D3c^3S&3qF zsu_v~tT80P`%3lOPflS99XwJxSUOH^mn2$5Yfj$9q`MU~j!TZOvYmW!aS`&3Wk7z* zadNv|ZvfZHh~O5*%R~6Zyr;O^^^5P{RG-Pee0SMjvy*LB<1Z8w*`ubA)0#`dPo5C!u6!)+ z$?5-_`@e#{kdI=$9NN*`QnI;Y$D#q6t)WZmXqB``E`&Q6bk2d3zU|6i#iFCZ9nKl$ zWUMUySxUFU&+#CQRorp&>DwPs)~{qLr?#@*f@F}Mqkk?N3JRd{kk)kLl-RmOav?Pl zx}@j^Sx&|(;!i9NSaqikIV)z17%OYp)2g#rY$U@-9f*eA@1K9Qn>s3T`;YBLQ6oDg znv)0bUAWn4H)$fL&063KBos`@2wR))$Ut*4y>sn3J0=HsN{xXoCAg%NT#9n>`j7Ra zsF5W`*jjaV(RQt!110CfiE$G@2k-?F3eqHHb1AfS)i+-1wQfuU z7<@M1Bzo3}XKVI#v>C-f`|f)0&sXhFjmv`kR`cC8tqymUG>(pW=>pbYp@Q%fk<5Ql z2(%Svv80_OWit=?#{>N8G$u#EA{o1GfP5txeY-9JPUVipgz1Szt0Xl~X^RPfkLXEq zkVuweSkBc9K;w72Lh5(TAUE&*E?TQc^aWdJk<7;01AWJ2pmt{xksKT>#~=<8$r31| zDFj2&6N@Cl0r8V4$*1HwUi|=1Uu&)t;p*wWLSe8B z*yRUjsK{$)u6ITwA6S|#K+gX{ot%>!LzeUpZ;d13IvJ6!y)rb82lGofnk?MyTH68| z%OJ;Bu9J@dtxW4SdWbz70000%wmU literal 0 HcmV?d00001 From b0477952fa0da9c86830af230550955ad234c037 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Mon, 14 Oct 2024 01:31:39 -0500 Subject: [PATCH 15/62] Automatic changelog generation for PR #3550 [ci skip] --- html/changelogs/AutoChangeLog-pr-3550.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3550.yml diff --git a/html/changelogs/AutoChangeLog-pr-3550.yml b/html/changelogs/AutoChangeLog-pr-3550.yml new file mode 100644 index 000000000000..516084369d50 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3550.yml @@ -0,0 +1,5 @@ +author: Sadhorizon +changes: + - {rscadd: Added stamps for New Gorlex Republic.} + - {rscadd: Added secret documents for New Gorlex Republic.} +delete-after: true From aa4adcc039030e3540769ba1ca153a4489103389 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 15 Oct 2024 01:03:15 +0000 Subject: [PATCH 16/62] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3365.yml | 6 ------ html/changelogs/AutoChangeLog-pr-3500.yml | 5 ----- html/changelogs/AutoChangeLog-pr-3533.yml | 6 ------ html/changelogs/AutoChangeLog-pr-3540.yml | 4 ---- html/changelogs/AutoChangeLog-pr-3544.yml | 4 ---- html/changelogs/AutoChangeLog-pr-3545.yml | 5 ----- html/changelogs/AutoChangeLog-pr-3550.yml | 5 ----- html/changelogs/archive/2024-10.yml | 19 +++++++++++++++++++ 8 files changed, 19 insertions(+), 35 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3365.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3500.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3533.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3540.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3544.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3545.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3550.yml diff --git a/html/changelogs/AutoChangeLog-pr-3365.yml b/html/changelogs/AutoChangeLog-pr-3365.yml deleted file mode 100644 index a2954f6d1f42..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3365.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: Erika Fox -changes: - - {rscadd: Transfusion anomaly; yum! Blood!} - - {rscadd: Anomaly cores now have an effect when detonated out of the anomaly} - - {rscadd: new anomaly description fluff} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3500.yml b/html/changelogs/AutoChangeLog-pr-3500.yml deleted file mode 100644 index 2e24245d05ce..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3500.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: rye-rice -changes: - - {rscadd: Various sprite improvemnts} - - {bugfix: Boomslang no longer fits on the belt} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3533.yml b/html/changelogs/AutoChangeLog-pr-3533.yml deleted file mode 100644 index d8c9009eef50..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3533.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: Sadhorizon -changes: - - {rscadd: Added a honorable corpsman stamp and tweaked honorable arti one.} - - {rscadd: Inteq ships now use inteq stamps.} - - {code_imp: Repathed IRMG and CLIP stamps.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3540.yml b/html/changelogs/AutoChangeLog-pr-3540.yml deleted file mode 100644 index 64d5268de008..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3540.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: firebudgy -changes: - - {bugfix: War Correspondent helmet has a proper sprite for Vox.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3544.yml b/html/changelogs/AutoChangeLog-pr-3544.yml deleted file mode 100644 index cfdbae12314b..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3544.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Gristlebee -changes: - - {bugfix: Abandoned Miskilamo Shipbreaking Yard ruin has the correct revolver subtype.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3545.yml b/html/changelogs/AutoChangeLog-pr-3545.yml deleted file mode 100644 index b9d02077a666..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3545.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: Gristlebee -changes: - - {bugfix: Shipping dock ruin correctly has a rattlesnake instead of a ringneck - case} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3550.yml b/html/changelogs/AutoChangeLog-pr-3550.yml deleted file mode 100644 index 516084369d50..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3550.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: Sadhorizon -changes: - - {rscadd: Added stamps for New Gorlex Republic.} - - {rscadd: Added secret documents for New Gorlex Republic.} -delete-after: true diff --git a/html/changelogs/archive/2024-10.yml b/html/changelogs/archive/2024-10.yml index b6c26721ca43..c8e9f015aef7 100644 --- a/html/changelogs/archive/2024-10.yml +++ b/html/changelogs/archive/2024-10.yml @@ -156,3 +156,22 @@ 2024-10-14: Spooky, PositiveEntropy: - imageadd: Smartfridges and Booze-O-Mats have been resprited! +2024-10-15: + Erika Fox: + - rscadd: Transfusion anomaly; yum! Blood! + - rscadd: Anomaly cores now have an effect when detonated out of the anomaly + - rscadd: new anomaly description fluff + Gristlebee: + - bugfix: Abandoned Miskilamo Shipbreaking Yard ruin has the correct revolver subtype. + - bugfix: Shipping dock ruin correctly has a rattlesnake instead of a ringneck case + Sadhorizon: + - rscadd: Added stamps for New Gorlex Republic. + - rscadd: Added secret documents for New Gorlex Republic. + - rscadd: Added a honorable corpsman stamp and tweaked honorable arti one. + - rscadd: Inteq ships now use inteq stamps. + - code_imp: Repathed IRMG and CLIP stamps. + firebudgy: + - bugfix: War Correspondent helmet has a proper sprite for Vox. + rye-rice: + - rscadd: Various sprite improvemnts + - bugfix: Boomslang no longer fits on the belt From 231185e763a5819049880ebb5ddcfbe74ed681f4 Mon Sep 17 00:00:00 2001 From: Sadhorizon <108196626+Sadhorizon@users.noreply.github.com> Date: Tue, 15 Oct 2024 12:43:12 +0200 Subject: [PATCH 17/62] Syndicate tools and soap are no longer better. (#3556) ## About The Pull Request - syndicate soap clean speed swapped from 5 to 27 (1 better than NT soap, because I find that funny). Also it's uses are tripled. - "suspicious toolbox" renamed to "black and red toolbox", lost it's damage buff. - syndicate tools have lost the "suspicious" names, their descriptions, and their toolspeed buff. ## Why It's Good For The Game Cruft. Syndi items were better on stations because of rarity. On shiptest, it feels kinda weird to map those in knowing they are just upgrades. Soap is especially awkward in that regard. ## Changelog :cl: tweak: Syndicate soap is now in-line with NT soap. del: Syndicate tools are no longer faster. They are just reskinned normal tools now. del: Syndicate toolbox lost it's damage buff. /:cl: --- code/game/objects/items/clown_items.dm | 3 ++- code/game/objects/items/devices/multitool.dm | 2 -- code/game/objects/items/storage/toolbox.dm | 10 ++++------ code/game/objects/items/theft_tools.dm | 4 ---- code/game/objects/items/tools/crowbar.dm | 3 --- code/game/objects/items/tools/wirecutters.dm | 3 --- code/game/objects/items/tools/wrench.dm | 3 --- .../cargo/blackmarket/blackmarket_items/tools.dm | 11 ----------- 8 files changed, 6 insertions(+), 33 deletions(-) diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm index 631eb7d2fc8f..62c33aa9665a 100644 --- a/code/game/objects/items/clown_items.dm +++ b/code/game/objects/items/clown_items.dm @@ -71,7 +71,8 @@ /obj/item/soap/syndie desc = "An untrustworthy bar of soap made of strong chemical agents that dissolve blood faster." icon_state = "soapsyndie" - cleanspeed = 5 //faster than mop so it is useful for traitors who want to clean crime scenes + cleanspeed = 27 // ever so slightly better than NT + uses = 300 /obj/item/soap/omega name = "omega soap" diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index 204371ca0e51..50b8e3958043 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -170,10 +170,8 @@ toolspeed = 0.5 /obj/item/multitool/syndie - name = "suspicious-looking multitool" desc = "A darkened multitool with a matte finish and an ominous glowing screen." icon_state = "multitool_syndie" - toolspeed = 0.5 /obj/item/multitool/old desc = "Used for pulsing wires to test which to cut. This one looks... 'retro'. It wasn't recommended by doctors then and won't be recommended by doctors now." diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index 0ee29e08e052..6a47c8544bb9 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -158,11 +158,9 @@ new /obj/item/stack/cable_coil(src,MAXCOIL,pickedcolor) /obj/item/storage/toolbox/syndicate - name = "suspicious looking toolbox" + name = "black and red toolbox" icon_state = "syndicate" item_state = "toolbox_syndi" - force = 15 - throwforce = 18 material_flags = NONE /obj/item/storage/toolbox/syndicate/ComponentInitialize() @@ -172,11 +170,11 @@ /obj/item/storage/toolbox/syndicate/PopulateContents() new /obj/item/screwdriver/nuke(src) - new /obj/item/wrench/syndie(src) //WS Edit - Cool Syndie Tools + new /obj/item/wrench/syndie(src) new /obj/item/weldingtool/largetank(src) - new /obj/item/crowbar/syndie(src) //WS Begin - Cool Syndie Tools + new /obj/item/crowbar/syndie(src) new /obj/item/wirecutters/syndie(src) - new /obj/item/multitool/syndie(src) //WS End + new /obj/item/multitool/syndie(src) new /obj/item/clothing/gloves/color/yellow(src) /obj/item/storage/toolbox/syndicate/empty diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm index fd9b3859cd3b..5b9da6611bd9 100644 --- a/code/game/objects/items/theft_tools.dm +++ b/code/game/objects/items/theft_tools.dm @@ -80,12 +80,8 @@ //snowflake screwdriver, works as a key to start nuke theft, traitor only /obj/item/screwdriver/nuke - name = "screwdriver" - desc = "A screwdriver with an ultra thin tip that's carefully designed to boost screwing speed." -// icon = 'icons/obj/nuke_tools.dmi' WS edit - better tool sprites icon_state = "screwdriver_nuke" item_state = "screwdriver_nuke" - toolspeed = 0.5 random_color = FALSE /obj/item/paper/guides/antag/nuke_instructions diff --git a/code/game/objects/items/tools/crowbar.dm b/code/game/objects/items/tools/crowbar.dm index 26509776dd16..c53fb57a8bd3 100644 --- a/code/game/objects/items/tools/crowbar.dm +++ b/code/game/objects/items/tools/crowbar.dm @@ -117,10 +117,7 @@ toolspeed = 0.5 /obj/item/crowbar/syndie - name = "suspicious-looking crowbar" - desc = "It has special counterweights that adjust to the amount of pressure put on it by using a complex array of springs and screws." icon_state = "crowbar_syndie" - toolspeed = 0.5 force = 8 /obj/item/crowbar/old diff --git a/code/game/objects/items/tools/wirecutters.dm b/code/game/objects/items/tools/wirecutters.dm index e2dfc9a81dc3..383cbd027395 100644 --- a/code/game/objects/items/tools/wirecutters.dm +++ b/code/game/objects/items/tools/wirecutters.dm @@ -85,10 +85,7 @@ random_color = FALSE /obj/item/wirecutters/syndie - name = "suspicious-looking wirecutters" - desc = "The blades of these wirecutters have suspiciously fine serrated teeth." icon_state = "cutters_syndie" - toolspeed = 0.5 random_color = FALSE /obj/item/wirecutters/old diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm index 3e9898d87508..b6b99c7c8282 100644 --- a/code/game/objects/items/tools/wrench.dm +++ b/code/game/objects/items/tools/wrench.dm @@ -95,10 +95,7 @@ return ..() /obj/item/wrench/syndie - name = "suspicious-looking wrench" - desc = "It's one of those fancy wrenches that you turn backward without twisting the bolt for faster action." icon_state = "wrench_syndie" - toolspeed = 0.5 /obj/item/wrench/crescent name = "crescent wrench" diff --git a/code/modules/cargo/blackmarket/blackmarket_items/tools.dm b/code/modules/cargo/blackmarket/blackmarket_items/tools.dm index 412ba303b977..f361f4e758ff 100644 --- a/code/modules/cargo/blackmarket/blackmarket_items/tools.dm +++ b/code/modules/cargo/blackmarket/blackmarket_items/tools.dm @@ -11,17 +11,6 @@ stock = 1 availability_prob = 20 -/datum/blackmarket_item/tool/syndi_toolbox - name = "Syndicate Toolbox" - desc = "A set of specialized tools, built to precision perfection and certified by the GEC." - item = /obj/item/storage/toolbox/syndicate - - price_min = 500 - price_max = 2000 - stock_min = 1 - stock_max = 3 - availability_prob = 40 - /datum/blackmarket_item/tool/surgery_duffel name = "Cybersun Advanced Surgical Kit" desc = "You might say it's morally wrong to steal. I say it's justified when it's Cybersun." From 463b2b455c8205ffe28773539bb176c282802daa Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 15 Oct 2024 05:53:35 -0500 Subject: [PATCH 18/62] Automatic changelog generation for PR #3556 [ci skip] --- html/changelogs/AutoChangeLog-pr-3556.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3556.yml diff --git a/html/changelogs/AutoChangeLog-pr-3556.yml b/html/changelogs/AutoChangeLog-pr-3556.yml new file mode 100644 index 000000000000..80ef9859ead2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3556.yml @@ -0,0 +1,7 @@ +author: Sadhorizon +changes: + - {tweak: Syndicate soap is now in-line with NT soap.} + - {rscdel: Syndicate tools are no longer faster. They are just reskinned normal + tools now.} + - {rscdel: Syndicate toolbox lost it's damage buff.} +delete-after: true From 5a5bd7bec266156477899e7c3387569b11b23c0f Mon Sep 17 00:00:00 2001 From: Erika Fox <94164348+Bjarl@users.noreply.github.com> Date: Tue, 15 Oct 2024 06:58:12 -0400 Subject: [PATCH 19/62] NGR Turrets (#3555) ## About The Pull Request Subtypes NGR turrets. They're midline ballistics ## Why It's Good For The Game told apogee i would do it for her ## Changelog :cl: add: NGR turrets /:cl: --- .../machinery/porta_turret/portable_turret.dm | 33 +++++++++++++++++++ .../projectiles/projectile/bullets/rifle.dm | 5 +++ .../projectiles/projectile/bullets/smg.dm | 5 +++ 3 files changed, 43 insertions(+) diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index c3c39c72e34a..c370b3697e9d 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -908,6 +908,39 @@ DEFINE_BITFIELD(turret_flags, list( lethal_projectile_sound = 'sound/weapons/lasercannonfire.ogg' max_integrity = 300 +/* New Gorlex Republic Turrets */ +// Midline ballistic turrets + +/obj/machinery/porta_turret/ship/ngr + name = "Oasis Turret" + desc = "A turret manufactured by the New Gorlex Republic for its ships and installations. Proudly manufactured within the nation!" + stun_projectile = /obj/projectile/bullet/c45/rubber + stun_projectile_sound = 'sound/weapons/gun/smg/cobra.ogg' + lethal_projectile = /obj/projectile/bullet/c45 + lethal_projectile_sound = 'sound/weapons/gun/smg/cobra.ogg' + faction = list(FACTION_NGR, FACTION_PLAYER_SYNDICATE, "turret") //player_syndicate is just to be safe + +/obj/machinery/porta_turret/ship/ngr/light + name = "Sonoran Turret" + desc = "A light turret manufactured by the New Gorlex Republic for its ships and installations. Proudly manufactured within the Nation, using locally produced munitions!" + stun_projectile = /obj/projectile/bullet/c57x39mm/rubber + stun_projectile_sound = 'sound/weapons/gun/smg/sidewinder.ogg' + lethal_projectile = /obj/projectile/bullet/c57x39mm + lethal_projectile_sound = 'sound/weapons/gun/smg/sidewinder.ogg' + scan_range = 7 + shot_delay = 10 + +/obj/machinery/porta_turret/ship/ngr/heavy + name = "Cliff Turret" + desc = "A heavy turret manufactured by the New Gorlex Republic for its ships and installations. Has a reputation of being extremely dangerous." + stun_projectile = /obj/projectile/bullet/a65clip/rubber + stun_projectile_sound = 'sound/weapons/gun/sniper/cmf90.ogg' + lethal_projectile = /obj/projectile/bullet/a65clip + lethal_projectile_sound = 'sound/weapons/gun/sniper/cmf90.ogg' + scan_range = 14 + shot_delay = 30 + + /* Inteq Turrets */ //slower rof, higher damage + range diff --git a/code/modules/projectiles/projectile/bullets/rifle.dm b/code/modules/projectiles/projectile/bullets/rifle.dm index 1d5d48c9b826..7955c2b41557 100644 --- a/code/modules/projectiles/projectile/bullets/rifle.dm +++ b/code/modules/projectiles/projectile/bullets/rifle.dm @@ -100,3 +100,8 @@ light_system = MOVABLE_LIGHT light_color = COLOR_SOFT_RED light_range = 2 + +/obj/projectile/bullet/a65clip/rubber //"rubber" + name = "6.5x57mm CLIP rubber bullet" + damage = 10 + stamina = 40 diff --git a/code/modules/projectiles/projectile/bullets/smg.dm b/code/modules/projectiles/projectile/bullets/smg.dm index 9b11c74e4c1d..5e838b61161c 100644 --- a/code/modules/projectiles/projectile/bullets/smg.dm +++ b/code/modules/projectiles/projectile/bullets/smg.dm @@ -4,6 +4,11 @@ name = "5.7x39mm bullet" damage = 20 +/obj/projectile/bullet/c57x39mm/rubber + name = "5.7x39mm rubber bullet" + damage = 5 + stamina = 20 + // 4.6x30mm (WT-550 Automatic Rifle & NT-SVG) /obj/projectile/bullet/c46x30mm From 1cba699fc066b794222fa1fb9abd55dd12b06d14 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 15 Oct 2024 06:18:42 -0500 Subject: [PATCH 20/62] Automatic changelog generation for PR #3555 [ci skip] --- html/changelogs/AutoChangeLog-pr-3555.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3555.yml diff --git a/html/changelogs/AutoChangeLog-pr-3555.yml b/html/changelogs/AutoChangeLog-pr-3555.yml new file mode 100644 index 000000000000..7fe288c72bed --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3555.yml @@ -0,0 +1,4 @@ +author: Bjarl +changes: + - {rscadd: NGR turrets} +delete-after: true From a5efed4a6b00e7777f2d9aa9e78cefebf2f7ac87 Mon Sep 17 00:00:00 2001 From: zimon9 <122945887+zimon9@users.noreply.github.com> Date: Tue, 15 Oct 2024 07:00:19 -0400 Subject: [PATCH 21/62] Increases the moles in the plasma belt tank cargo pack (#3548) ## About The Pull Request This change swaps the type of plasma belt tank sold in the crate from tanks filled only to 303 kPa, to tanks filled to 1013 kPa. ## Why It's Good For The Game The amount of plasma offered in these tanks is only 0.75 moles. It would benefit gameplay to increase this to 2.2 moles. ## Changelog :cl: balance: increased amount of plasma in plasma internals cargo crate /:cl: --- code/modules/cargo/packs/emergency.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/cargo/packs/emergency.dm b/code/modules/cargo/packs/emergency.dm index 3759dc6d8d11..41401dbce477 100644 --- a/code/modules/cargo/packs/emergency.dm +++ b/code/modules/cargo/packs/emergency.dm @@ -24,8 +24,8 @@ name = "Plasmaman Internals Crate" desc = "Contains two plasmaman belt tanks, for when you just can't bear to refill a normal tank with plasma. Plasma canisters sold separately." cost = 100 - contains = list(/obj/item/tank/internals/plasmaman/belt, - /obj/item/tank/internals/plasmaman/belt) + contains = list(/obj/item/tank/internals/plasmaman/belt/full, + /obj/item/tank/internals/plasmaman/belt/full) crate_name = "plasmaman internals crate" /datum/supply_pack/emergency/plasmaman_suit From 60bee7942c13f7ec717434c9e6cfb5213f04c563 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 15 Oct 2024 06:31:59 -0500 Subject: [PATCH 22/62] Automatic changelog generation for PR #3548 [ci skip] --- html/changelogs/AutoChangeLog-pr-3548.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3548.yml diff --git a/html/changelogs/AutoChangeLog-pr-3548.yml b/html/changelogs/AutoChangeLog-pr-3548.yml new file mode 100644 index 000000000000..ba0e3f8a1706 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3548.yml @@ -0,0 +1,4 @@ +author: zimon9 +changes: + - {balance: increased amount of plasma in plasma internals cargo crate} +delete-after: true From 631d3daf41a6f822dfcd802e350a8cb1c2bd3f42 Mon Sep 17 00:00:00 2001 From: Erika Fox <94164348+Bjarl@users.noreply.github.com> Date: Tue, 15 Oct 2024 07:00:43 -0400 Subject: [PATCH 23/62] Syndicate Cig Change (#3532) ## About The Pull Request Syndie smokes no longer have omnizine in them - they are now filled with stimulants. ## Why It's Good For The Game talk in loredev about them ## Changelog :cl: balance: Syndicate smokes are now laced with stimulants instead of omnizine. /:cl: --- code/game/objects/items/cigs_lighters.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 6b7b364118d4..7e0cf768de5d 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -333,11 +333,11 @@ CIGARETTE PACKETS ARE IN FANCY.DM reagents?.add_reagent(/datum/reagent/toxin/carpotoxin , 3) // They lied /obj/item/clothing/mask/cigarette/syndicate - desc = "An unknown brand cigarette." + desc = "An obscure brand of cigarette." chem_volume = 60 smoketime = 60 smoke_all = TRUE - list_reagents = list(/datum/reagent/drug/nicotine = 10, /datum/reagent/medicine/omnizine = 15) + list_reagents = list(/datum/reagent/drug/nicotine = 10, /datum/reagent/drug/aranesp = 5, /datum/reagent/medicine/synaptizine = 5) /obj/item/clothing/mask/cigarette/xeno desc = "A Xeno Filtered brand cigarette." From c3f7f5e3627ace215fe8441ef90efd4a593f92bf Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 15 Oct 2024 06:49:21 -0500 Subject: [PATCH 24/62] Automatic changelog generation for PR #3532 [ci skip] --- html/changelogs/AutoChangeLog-pr-3532.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3532.yml diff --git a/html/changelogs/AutoChangeLog-pr-3532.yml b/html/changelogs/AutoChangeLog-pr-3532.yml new file mode 100644 index 000000000000..bf3de808dd72 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3532.yml @@ -0,0 +1,4 @@ +author: Bjarl +changes: + - {balance: Syndicate smokes are now laced with stimulants instead of omnizine.} +delete-after: true From 91decc134b1ed2dc406337b09fc01ca4f205aff3 Mon Sep 17 00:00:00 2001 From: Erika Fox <94164348+Bjarl@users.noreply.github.com> Date: Tue, 15 Oct 2024 07:01:39 -0400 Subject: [PATCH 25/62] Frontiersmen Turrets (#3523) ## About The Pull Request Adds Frontiersmen Coded Turrets Spitter - Pounder - Shredder ## Why It's Good For The Game TurretQuest ## Changelog :cl: add: The Frontiersmen have duct taped some turrets of their own together /:cl: --- .../machinery/porta_turret/portable_turret.dm | 43 ++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index c370b3697e9d..1e4fde83ae56 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -826,7 +826,7 @@ DEFINE_BITFIELD(turret_flags, list( . = ..() if(in_range(user, src) || isobserver(user)) if(!(machine_stat & BROKEN)) - . += "[src] reports its integrity is currently [round(obj_integrity / max_integrity) * 100] percent." + . += "[src] reports its integrity is currently [round((obj_integrity / max_integrity) * 100)] percent." /obj/machinery/porta_turret/ship/weak max_integrity = 120 @@ -1013,6 +1013,47 @@ DEFINE_BITFIELD(turret_flags, list( lethal_projectile = /obj/projectile/beam/hitscan/kalix/pgf/sniper //fwoom lethal_projectile_sound = 'sound/weapons/gun/laser/heavy_laser.ogg' +/// Frontiersmen Turrets + +// fast and spitty + +/obj/machinery/porta_turret/ship/frontiersmen + name = "Spitter Turret" + desc = "A juryrigged mishmash of a 9mm SMG and targetting system. Stand clear!" + faction = list(FACTION_FRONTIER, "Turret") + subsystem_type = /datum/controller/subsystem/processing/fastprocess + integrity_failure = 0.6 + max_integrity = 180 + + icon_state = "standard_lethal" + base_icon_state = "standard" + + stun_projectile = /obj/projectile/bullet/c9mm + stun_projectile_sound = 'sound/weapons/gun/smg/spitter.ogg' + lethal_projectile = /obj/projectile/bullet/c9mm + lethal_projectile_sound = 'sound/weapons/gun/smg/spitter.ogg' + shot_delay = 2 + scan_range = 6 + +/obj/machinery/porta_turret/ship/frontiersmen/light + name = "Pounder Turret" + desc = "A low caliber SMG with an atrociously high cycle rate, frankensteined together with a targetting assembly." + stun_projectile = /obj/projectile/bullet/c22lr + stun_projectile_sound = 'sound/weapons/gun/smg/pounder.ogg' + lethal_projectile = /obj/projectile/bullet/c22lr + lethal_projectile_sound = 'sound/weapons/gun/smg/pounder.ogg' + shot_delay = 1 + +/obj/machinery/porta_turret/ship/frontiersmen/heavy + name = "Mulcher Turret" + desc = "An abombination made out of the components of a Shredder and an automatic targetting system. Careful now." + stun_projectile = /obj/projectile/bullet/slug/beanbag + stun_projectile_sound = 'sound/weapons/gun/hmg/shredder.ogg' + lethal_projectile = /obj/projectile/bullet/slug + lethal_projectile_sound = 'sound/weapons/gun/hmg/shredder.ogg' + shot_delay = 3 + scan_range = 8 + //////////////////////// //Turret Control Panel// //////////////////////// From c8c9e573daf81685916f70bc5e2eaeac1ba1e4f5 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 15 Oct 2024 07:04:20 -0500 Subject: [PATCH 26/62] Automatic changelog generation for PR #3523 [ci skip] --- html/changelogs/AutoChangeLog-pr-3523.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3523.yml diff --git a/html/changelogs/AutoChangeLog-pr-3523.yml b/html/changelogs/AutoChangeLog-pr-3523.yml new file mode 100644 index 000000000000..15efc1037556 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3523.yml @@ -0,0 +1,4 @@ +author: Bjarl +changes: + - {rscadd: The Frontiersmen have duct taped some turrets of their own together} +delete-after: true From d4bbd1f4697ae37d7975ce52c13753d791285447 Mon Sep 17 00:00:00 2001 From: Erika Fox <94164348+Bjarl@users.noreply.github.com> Date: Tue, 15 Oct 2024 07:01:53 -0400 Subject: [PATCH 27/62] Shield Generators Make An Alarm When Shutting Down (#3491) ## About The Pull Request As Title. Requested by Zevo ## Why It's Good For The Game No more immediate FWOOSH ## Changelog :cl: add: Holofans now have a small window before shutting down if they are deactivated by lack of power /:cl: --------- Signed-off-by: Erika Fox <94164348+Bjarl@users.noreply.github.com> Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- code/game/machinery/shieldgen.dm | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index e6e754c4b807..5dc0117b634c 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -205,6 +205,7 @@ var/locked = TRUE var/shield_range = 8 var/shocked = FALSE + var/crashing = FALSE var/obj/structure/cable/attached // the attached cable /obj/machinery/power/shieldwallgen/xenobiologyaccess //use in xenobiology containment @@ -252,16 +253,25 @@ if(!active_power_usage || surplus() >= active_power_usage) add_load(active_power_usage) else - visible_message(span_danger("The [src.name] shuts down due to lack of power!"), "If this message is ever seen, something is wrong.",span_hear("You hear heavy droning fade out. Date: Tue, 15 Oct 2024 07:17:30 -0500 Subject: [PATCH 28/62] Automatic changelog generation for PR #3491 [ci skip] --- html/changelogs/AutoChangeLog-pr-3491.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3491.yml diff --git a/html/changelogs/AutoChangeLog-pr-3491.yml b/html/changelogs/AutoChangeLog-pr-3491.yml new file mode 100644 index 000000000000..6004c4799e6f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3491.yml @@ -0,0 +1,5 @@ +author: Bjarl +changes: + - {rscadd: Holofans now have a small window before shutting down if they are deactivated + by lack of power} +delete-after: true From 3da7e1b9f432246cfbf93a86d202d5033fd4ddc6 Mon Sep 17 00:00:00 2001 From: Erika Fox <94164348+Bjarl@users.noreply.github.com> Date: Tue, 15 Oct 2024 07:02:58 -0400 Subject: [PATCH 29/62] Remove holoparasite code (#3478) ## About The Pull Request as title ## Why It's Good For The Game cruft crusade 2022 ## Changelog :cl: del: Holoparasites /:cl: --------- Signed-off-by: Erika Fox <94164348+Bjarl@users.noreply.github.com> --- code/__DEFINES/is_helpers.dm | 2 - code/_onclick/hud/alert.dm | 20 - code/_onclick/hud/guardian.dm | 179 ---- code/_onclick/hud/screen_objects.dm | 6 - code/controllers/subsystem/traumas.dm | 1 - .../proximity_monitor/fields/timestop.dm | 3 - .../temporary_visuals/miscellaneous.dm | 10 - .../antagonists/wizard/equipment/spellbook.dm | 12 - code/modules/cargo/exports/lavaland.dm | 4 +- .../mining/lavaland/necropolis_chests.dm | 10 +- code/modules/mob/living/living.dm | 7 - .../living/simple_animal/guardian/guardian.dm | 786 ------------------ .../simple_animal/guardian/types/assassin.dm | 101 --- .../simple_animal/guardian/types/charger.dm | 77 -- .../simple_animal/guardian/types/dextrous.dm | 85 -- .../simple_animal/guardian/types/explosive.dm | 78 -- .../simple_animal/guardian/types/fire.dm | 50 -- .../guardian/types/gravitokinetic.dm | 68 -- .../simple_animal/guardian/types/lightning.dm | 113 --- .../simple_animal/guardian/types/protector.dm | 72 -- .../simple_animal/guardian/types/ranged.dm | 154 ---- .../simple_animal/guardian/types/slime.dm | 73 -- .../simple_animal/guardian/types/standard.dm | 36 - .../simple_animal/guardian/types/support.dm | 148 ---- .../xenobiology/crossbreeding/mutative.dm | 5 - code/modules/shuttle/supply.dm | 1 - .../spell_types/pointed/mind_transfer.dm | 11 - code/modules/uplink/uplink_items.dm | 10 - shiptest.dme | 14 - 29 files changed, 3 insertions(+), 2133 deletions(-) delete mode 100644 code/_onclick/hud/guardian.dm delete mode 100644 code/modules/mob/living/simple_animal/guardian/guardian.dm delete mode 100644 code/modules/mob/living/simple_animal/guardian/types/assassin.dm delete mode 100644 code/modules/mob/living/simple_animal/guardian/types/charger.dm delete mode 100644 code/modules/mob/living/simple_animal/guardian/types/dextrous.dm delete mode 100644 code/modules/mob/living/simple_animal/guardian/types/explosive.dm delete mode 100644 code/modules/mob/living/simple_animal/guardian/types/fire.dm delete mode 100644 code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm delete mode 100644 code/modules/mob/living/simple_animal/guardian/types/lightning.dm delete mode 100644 code/modules/mob/living/simple_animal/guardian/types/protector.dm delete mode 100644 code/modules/mob/living/simple_animal/guardian/types/ranged.dm delete mode 100644 code/modules/mob/living/simple_animal/guardian/types/slime.dm delete mode 100644 code/modules/mob/living/simple_animal/guardian/types/standard.dm delete mode 100644 code/modules/mob/living/simple_animal/guardian/types/support.dm diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 7120afd8cf45..5bf9e3add6ad 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -136,8 +136,6 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list( #define ishostile(A) (istype(A, /mob/living/simple_animal/hostile)) -#define isguardian(A) (istype(A, /mob/living/simple_animal/hostile/guardian)) - #define isconstruct(A) (istype(A, /mob/living/simple_animal/hostile/construct)) #define ismegafauna(A) (istype(A, /mob/living/simple_animal/hostile/megafauna)) diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index 3eefdb7c2f02..61d6ebf7f4ef 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -445,26 +445,6 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." icon_state = "alien_noqueen" alerttooltipstyle = "alien" -//GUARDIANS - -/atom/movable/screen/alert/cancharge - name = "Charge Ready" - desc = "You are ready to charge at a location!" - icon_state = "guardian_charge" - alerttooltipstyle = "parasite" - -/atom/movable/screen/alert/canstealth - name = "Stealth Ready" - desc = "You are ready to enter stealth!" - icon_state = "guardian_canstealth" - alerttooltipstyle = "parasite" - -/atom/movable/screen/alert/instealth - name = "In Stealth" - desc = "You are in stealth and your next attack will do bonus damage!" - icon_state = "guardian_instealth" - alerttooltipstyle = "parasite" - //SILICONS /atom/movable/screen/alert/nocell diff --git a/code/_onclick/hud/guardian.dm b/code/_onclick/hud/guardian.dm deleted file mode 100644 index 8f79bfedf1bf..000000000000 --- a/code/_onclick/hud/guardian.dm +++ /dev/null @@ -1,179 +0,0 @@ -/datum/hud/guardian - ui_style = 'icons/mob/guardian.dmi' - -/datum/hud/guardian/New(mob/living/simple_animal/hostile/guardian/owner) - ..() - var/atom/movable/screen/using - - pull_icon = new /atom/movable/screen/pull() - pull_icon.icon = ui_style - pull_icon.update_appearance() - pull_icon.screen_loc = ui_living_pull - pull_icon.hud = src - static_inventory += pull_icon - - healths = new /atom/movable/screen/healths/guardian() - healths.hud = src - infodisplay += healths - - using = new /atom/movable/screen/guardian/Manifest() - using.screen_loc = ui_hand_position(2) - using.hud = src - static_inventory += using - - using = new /atom/movable/screen/guardian/Recall() - using.screen_loc = ui_hand_position(1) - using.hud = src - static_inventory += using - - using = new owner.toggle_button_type() - using.screen_loc = ui_storage1 - using.hud = src - static_inventory += using - - using = new /atom/movable/screen/guardian/ToggleLight() - using.screen_loc = ui_inventory - using.hud = src - static_inventory += using - - using = new /atom/movable/screen/guardian/Communicate() - using.screen_loc = ui_back - using.hud = src - static_inventory += using - -/datum/hud/dextrous/guardian/New(mob/living/simple_animal/hostile/guardian/owner) //for a dextrous guardian - ..() - var/atom/movable/screen/using - if(istype(owner, /mob/living/simple_animal/hostile/guardian/dextrous)) - var/atom/movable/screen/inventory/inv_box - - inv_box = new /atom/movable/screen/inventory() - inv_box.name = "internal storage" - inv_box.icon = ui_style - inv_box.icon_state = "suit_storage" - inv_box.screen_loc = ui_id - inv_box.slot_id = ITEM_SLOT_DEX_STORAGE - inv_box.hud = src - static_inventory += inv_box - - using = new /atom/movable/screen/guardian/Communicate() - using.screen_loc = ui_sstore1 - using.hud = src - static_inventory += using - - else - - using = new /atom/movable/screen/guardian/Communicate() - using.screen_loc = ui_id - using.hud = src - static_inventory += using - - pull_icon = new /atom/movable/screen/pull() - pull_icon.icon = 'icons/mob/guardian.dmi' - pull_icon.update_appearance() - pull_icon.screen_loc = ui_living_pull - pull_icon.hud = src - static_inventory += pull_icon - - healths = new /atom/movable/screen/healths/guardian() - healths.hud = src - infodisplay += healths - - using = new /atom/movable/screen/guardian/Manifest() - using.screen_loc = ui_belt - using.hud = src - static_inventory += using - - using = new /atom/movable/screen/guardian/Recall() - using.screen_loc = ui_back - using.hud = src - static_inventory += using - - using = new owner.toggle_button_type() - using.screen_loc = ui_storage2 - using.hud = src - static_inventory += using - - using = new /atom/movable/screen/guardian/ToggleLight() - using.screen_loc = ui_inventory - using.hud = src - static_inventory += using - -/datum/hud/dextrous/guardian/persistent_inventory_update() - if(!mymob) - return - if(istype(mymob, /mob/living/simple_animal/hostile/guardian/dextrous)) - var/mob/living/simple_animal/hostile/guardian/dextrous/D = mymob - - if(hud_shown) - if(D.internal_storage) - D.internal_storage.screen_loc = ui_id - D.client.screen += D.internal_storage - else - if(D.internal_storage) - D.internal_storage.screen_loc = null - - ..() - -/atom/movable/screen/guardian - icon = 'icons/mob/guardian.dmi' - -/atom/movable/screen/guardian/Manifest - icon_state = "manifest" - name = "Manifest" - desc = "Spring forth into battle!" - -/atom/movable/screen/guardian/Manifest/Click() - if(isguardian(usr)) - var/mob/living/simple_animal/hostile/guardian/G = usr - G.Manifest() - - -/atom/movable/screen/guardian/Recall - icon_state = "recall" - name = "Recall" - desc = "Return to your user." - -/atom/movable/screen/guardian/Recall/Click() - if(isguardian(usr)) - var/mob/living/simple_animal/hostile/guardian/G = usr - G.Recall() - -/atom/movable/screen/guardian/ToggleMode - icon_state = "toggle" - name = "Toggle Mode" - desc = "Switch between ability modes." - -/atom/movable/screen/guardian/ToggleMode/Click() - if(isguardian(usr)) - var/mob/living/simple_animal/hostile/guardian/G = usr - G.ToggleMode() - -/atom/movable/screen/guardian/ToggleMode/Inactive - icon_state = "notoggle" //greyed out so it doesn't look like it'll work - -/atom/movable/screen/guardian/ToggleMode/Assassin - icon_state = "stealth" - name = "Toggle Stealth" - desc = "Enter or exit stealth." - -/atom/movable/screen/guardian/Communicate - icon_state = "communicate" - name = "Communicate" - desc = "Communicate telepathically with your user." - -/atom/movable/screen/guardian/Communicate/Click() - if(isguardian(usr)) - var/mob/living/simple_animal/hostile/guardian/G = usr - G.Communicate() - - -/atom/movable/screen/guardian/ToggleLight - icon_state = "light" - name = "Toggle Light" - desc = "Glow like star dust." - -/atom/movable/screen/guardian/ToggleLight/Click() - if(isguardian(usr)) - var/mob/living/simple_animal/hostile/guardian/G = usr - G.ToggleLight() diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index bf171d339912..81b614c2af43 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -597,12 +597,6 @@ icon = 'icons/hud/screen_cyborg.dmi' screen_loc = ui_borg_health -/atom/movable/screen/healths/guardian - name = "summoner health" - icon = 'icons/mob/guardian.dmi' - icon_state = "base" - mouse_opacity = MOUSE_OPACITY_TRANSPARENT - /atom/movable/screen/healths/revenant name = "essence" icon = 'icons/mob/actions/backgrounds.dmi' diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm index 9688f008ffba..1b31fc270700 100644 --- a/code/controllers/subsystem/traumas.dm +++ b/code/controllers/subsystem/traumas.dm @@ -52,7 +52,6 @@ SUBSYSTEM_DEF(traumas) /mob/living/simple_animal/pet/penguin)), "birds" = typecacheof(list(/mob/living/simple_animal/parrot, /mob/living/simple_animal/chick, /mob/living/simple_animal/chicken, /mob/living/simple_animal/pet/penguin)), - "anime" = typecacheof(list(/mob/living/simple_animal/hostile/guardian)) ) phobia_objs = list( diff --git a/code/datums/proximity_monitor/fields/timestop.dm b/code/datums/proximity_monitor/fields/timestop.dm index 40a8c1cc947b..84adc6f9666f 100644 --- a/code/datums/proximity_monitor/fields/timestop.dm +++ b/code/datums/proximity_monitor/fields/timestop.dm @@ -29,9 +29,6 @@ for(var/mob/living/L in GLOB.player_list) if(locate(/obj/effect/proc_holder/spell/aoe_turf/timestop) in L.mind.spell_list) //People who can stop time are immune to its effects immune[L] = TRUE - for(var/mob/living/simple_animal/hostile/guardian/G in GLOB.parasites) - if(G.summoner && locate(/obj/effect/proc_holder/spell/aoe_turf/timestop) in G.summoner.mind.spell_list) //It would only make sense that a person's stand would also be immune. - immune[G] = TRUE if(start) INVOKE_ASYNC(src, PROC_REF(timestop)) diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm index 2b82f656ac48..92c92655cb8c 100644 --- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm +++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm @@ -207,16 +207,6 @@ icon_state = "blspell" duration = 5 -/obj/effect/temp_visual/guardian - randomdir = 0 - -/obj/effect/temp_visual/guardian/phase - duration = 5 - icon_state = "phasein" - -/obj/effect/temp_visual/guardian/phase/out - icon_state = "phaseout" - /obj/effect/temp_visual/decoy desc = "It's a decoy!" duration = 15 diff --git a/code/modules/antagonists/wizard/equipment/spellbook.dm b/code/modules/antagonists/wizard/equipment/spellbook.dm index 4bd2f5c8a525..378aa7dbe14a 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook.dm @@ -306,18 +306,6 @@ item_path = /obj/item/antag_spawner/contract category = "Assistance" -/datum/spellbook_entry/item/guardian - name = "Guardian Deck" - desc = "A deck of guardian tarot cards, capable of binding a personal guardian to your body. There are multiple types of guardian available, but all of them will transfer some amount of damage to you. \ - It would be wise to avoid buying these with anything capable of causing you to swap bodies with others." - item_path = /obj/item/guardiancreator/choose/wizard - category = "Assistance" - -/datum/spellbook_entry/item/guardian/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) - . = ..() - if(.) - new /obj/item/paper/guides/antag/guardian/wizard(get_turf(user)) - /datum/spellbook_entry/item/bloodbottle name = "Bottle of Blood" desc = "A bottle of magically infused blood, the smell of which will attract extradimensional beings when broken. Be careful though, the kinds of creatures summoned by blood magic are indiscriminate in their killing, and you yourself may become a victim." diff --git a/code/modules/cargo/exports/lavaland.dm b/code/modules/cargo/exports/lavaland.dm index c585ecb25a98..722333fac2db 100644 --- a/code/modules/cargo/exports/lavaland.dm +++ b/code/modules/cargo/exports/lavaland.dm @@ -23,8 +23,7 @@ /datum/export/lavaland/major //valuable chest/ruin loot and staff of storms cost = 10000 unit_name = "lava planet artifact" - export_types = list(/obj/item/guardiancreator, - /obj/item/rod_of_asclepius, + export_types = list(/obj/item/rod_of_asclepius, /obj/item/clothing/suit/space/hardsuit/ert/paranormal, /obj/item/prisoncube, /obj/item/staff/storm, @@ -45,7 +44,6 @@ /obj/machinery/anomalous_crystal, /obj/item/mayhem, /obj/item/blood_contract, - /obj/item/guardiancreator/miner/choose//this is basically the most valulable mining loot so good luck getting a miner to part ways ) /* /datum/export/lavaland/trophycommon diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 60debde823ef..5ead7fcb9296 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -47,10 +47,7 @@ if(15) new /obj/item/book_of_babel(src) if(16) - if(prob(75)) - new /obj/item/guardiancreator/miner(src) - else - new /obj/item/guardiancreator/miner/choose (src) + new /obj/item/ship_in_a_bottle(src) if(17) if(prob(50)) new /obj/item/disk/design_disk/modkit_disc/mob_and_turf_aoe(src) @@ -118,10 +115,7 @@ if(15) new /obj/item/book_of_babel(src) if(16) - if(prob(75)) - new /obj/item/guardiancreator/miner(src) - else - new /obj/item/guardiancreator/miner/choose (src) + new /obj/item/ship_in_a_bottle(src) if(17) if(prob(50)) new /obj/item/disk/design_disk/modkit_disc/mob_and_turf_aoe(src) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 76800ce87b1f..741dfcc16015 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1147,13 +1147,6 @@ mind.transfer_to(new_mob) else new_mob.key = key - - for(var/para in hasparasites()) - var/mob/living/simple_animal/hostile/guardian/G = para - G.summoner = new_mob - G.Recall() - to_chat(G, "Your summoner has changed form!") - /mob/living/rad_act(amount) . = ..() diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm deleted file mode 100644 index 538a015c163b..000000000000 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ /dev/null @@ -1,786 +0,0 @@ - -GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians - -#define GUARDIAN_HANDS_LAYER 1 -#define GUARDIAN_TOTAL_LAYERS 1 - -/mob/living/simple_animal/hostile/guardian - name = "Guardian Spirit" - real_name = "Guardian Spirit" - desc = "A mysterious being that stands by its charge, ever vigilant." - speak_emote = list("hisses") - gender = NEUTER - mob_biotypes = NONE - bubble_icon = "guardian" - response_help_continuous = "passes through" - response_help_simple = "pass through" - response_disarm_continuous = "flails at" - response_disarm_simple = "flail at" - response_harm_continuous = "punches" - response_harm_simple = "punch" - icon = 'icons/mob/guardian.dmi' - icon_state = "magicbase" - icon_living = "magicbase" - icon_dead = "magicbase" - speed = 0 - a_intent = INTENT_HARM - stop_automated_movement = 1 - movement_type = FLYING // Immunity to chasms and landmines, etc. - attack_sound = 'sound/weapons/punch1.ogg' - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - minbodytemp = 0 - maxbodytemp = INFINITY - attack_verb_continuous = "punches" - attack_verb_simple = "punch" - maxHealth = INFINITY //The spirit itself is invincible - health = INFINITY - healable = FALSE //don't brusepack the guardian - damage_coeff = list(BRUTE = 0.4, BURN = 0.4, TOX = 0.5, CLONE = 0.5, STAMINA = 0, OXY = 0.5) //how much damage from each damage type we transfer to the owner - environment_smash = ENVIRONMENT_SMASH_STRUCTURES - obj_damage = 40 - melee_damage_lower = 15 - melee_damage_upper = 15 - butcher_results = list(/obj/item/ectoplasm = 1) - AIStatus = AI_OFF - light_system = MOVABLE_LIGHT - light_range = 3 - light_on = FALSE - hud_type = /datum/hud/guardian - dextrous_hud_type = /datum/hud/dextrous/guardian //if we're set to dextrous, account for it. - var/mutable_appearance/cooloverlay - var/guardiancolor - var/recolorentiresprite - var/theme - var/list/guardian_overlays[GUARDIAN_TOTAL_LAYERS] - var/reset = 0 //if the summoner has reset the guardian already - var/cooldown = 0 - var/mob/living/summoner - var/range = 10 //how far from the user the spirit can be - var/toggle_button_type = /atom/movable/screen/guardian/ToggleMode/Inactive //what sort of toggle button the hud uses - var/playstyle_string = "You are a Guardian without any type. You shouldn't exist!" - var/magic_fluff_string = "You draw the Coder, symbolizing bugs and errors. This shouldn't happen! Submit a bug report!" - var/tech_fluff_string = "BOOT SEQUENCE COMPLETE. ERROR MODULE LOADED. THIS SHOULDN'T HAPPEN. Submit a bug report!" - var/carp_fluff_string = "CARP CARP CARP SOME SORT OF HORRIFIC BUG BLAME THE CODERS CARP CARP CARP" - var/miner_fluff_string = "You encounter... Mythril, it shouldn't exist... Submit a bug report!" - var/slime_fluff_string = "The crystal grows and creaks, then glitches terribly! Tell a coder if you've seen this!" - -/mob/living/simple_animal/hostile/guardian/Initialize(mapload, theme) - GLOB.parasites += src - updatetheme(theme) - ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT)//local flying mob drifts in space, more news at six - . = ..() - -/mob/living/simple_animal/hostile/guardian/med_hud_set_health() - if(summoner) - var/image/holder = hud_list[HEALTH_HUD] - holder.icon_state = "hud[RoundHealth(summoner)]" - -/mob/living/simple_animal/hostile/guardian/med_hud_set_status() - if(summoner) - var/image/holder = hud_list[STATUS_HUD] - var/icon/I = icon(icon, icon_state, dir) - holder.pixel_y = I.Height() - world.icon_size - if(summoner.stat == DEAD) - holder.icon_state = "huddead" - else - holder.icon_state = "hudhealthy" - -/mob/living/simple_animal/hostile/guardian/Destroy() - GLOB.parasites -= src - return ..() - -/mob/living/simple_animal/hostile/guardian/proc/updatetheme(theme) //update the guardian's theme - if(!theme) - theme = pick("magic", "tech", "carp", "miner") - switch(theme)//should make it easier to create new stand designs in the future if anyone likes that - if("magic") - name = "Guardian Spirit" - real_name = "Guardian Spirit" - bubble_icon = "guardian" - icon_state = "magicbase" - icon_living = "magicbase" - icon_dead = "magicbase" - if("tech") - name = "Holoparasite" - real_name = "Holoparasite" - bubble_icon = "holo" - icon_state = "techbase" - icon_living = "techbase" - icon_dead = "techbase" - if("miner") - name = "Power Miner" - real_name = "Power Miner" - bubble_icon = "guardian" - icon_state = "minerbase" - icon_living = "minerbase" - icon_dead = "minerbase" - if("carp") - name = "Holocarp" - real_name = "Holocarp" - bubble_icon = "holo" - icon_state = "holocarp" - icon_living = "holocarp" - icon_dead = "holocarp" - speak_emote = list("gnashes") - desc = "A mysterious fish that stands by its charge, ever vigilant." - attack_verb_continuous = "bites" - attack_verb_simple = "bite" - attack_sound = 'sound/weapons/bite.ogg' - recolorentiresprite = TRUE - if("slime") - bubble_icon = "guardian" - icon_state = "slimebase" - icon_living = "slimebase" - icon_dead = "slimebase" - friendly_verb_continuous = "nourishes" - friendly_verb_simple = "nourish" - attack_verb_continuous = "glomps" - attack_verb_simple = "glomp" - speak_emote = list("blorbles") - attack_sound = 'sound/effects/blobattack.ogg' - desc = "A mysterious slime that stands by its charge, ever vigilant." - attack_sound = 'sound/weapons/bite.ogg' - - if(!recolorentiresprite) //we want this to proc before stand logs in, so the overlay isnt gone for some reason - cooloverlay = mutable_appearance(icon, theme) - add_overlay(cooloverlay) - -/mob/living/simple_animal/hostile/guardian/Login() //if we have a mind, set its name to ours when it logs in - . = ..() - if(!. || !client) - return FALSE - if(mind) - mind.name = "[real_name]" - if(!summoner) - to_chat(src, "For some reason, somehow, you have no summoner. Please report this bug immediately.") - return - to_chat(src, "You are a [real_name], bound to serve [summoner.real_name].") - to_chat(src, "You are capable of manifesting or recalling to your master with the buttons on your HUD. You will also find a button to communicate with [summoner.p_them()] privately there.") - to_chat(src, "While personally invincible, you will die if [summoner.real_name] does, and any damage dealt to you will have a portion passed on to [summoner.p_them()] as you feed upon [summoner.p_them()] to sustain yourself.") - to_chat(src, playstyle_string) - if(!guardiancolor) - guardianrename() - guardianrecolor() - -/mob/living/simple_animal/hostile/guardian/proc/guardianrecolor() - guardiancolor = input(src,"What would you like your color to be?","Choose Your Color","#ffffff") as color|null - if(!guardiancolor) //redo proc until we get a color - to_chat(src, "Not a valid color, please try again.") - guardianrecolor() - return - if(!recolorentiresprite) - cooloverlay.color = guardiancolor - cut_overlay(cooloverlay) //we need to get our new color - add_overlay(cooloverlay) - else - add_atom_colour(guardiancolor, FIXED_COLOUR_PRIORITY) - -/mob/living/simple_animal/hostile/guardian/proc/guardianrename() - var/new_name = sanitize_name(reject_bad_text(stripped_input(src, "What would you like your name to be?", "Choose Your Name", real_name, MAX_NAME_LEN))) - if(!new_name) //redo proc until we get a good name - to_chat(src, "Not a valid name, please try again.") - guardianrename() - return - visible_message("Your new name [new_name] anchors itself in your mind.") - fully_replace_character_name(null, new_name) - -/mob/living/simple_animal/hostile/guardian/Life() //Dies if the summoner dies - . = ..() - update_health_hud() //we need to update all of our health displays to match our summoner and we can't practically give the summoner a hook to do it - med_hud_set_health() - med_hud_set_status() - if(!QDELETED(summoner)) - if(summoner.stat == DEAD) - forceMove(summoner.loc) - to_chat(src, "Your summoner has died!") - visible_message("\The [src] dies along with its user!") - summoner.visible_message("[summoner]'s body is completely consumed by the strain of sustaining [src]!") - for(var/obj/item/W in summoner) - if(!summoner.dropItemToGround(W)) - qdel(W) - summoner.dust() - death(TRUE) - qdel(src) - else - to_chat(src, "Your summoner has died!") - visible_message("[src] dies along with its user!") - death(TRUE) - qdel(src) - snapback() - -/mob/living/simple_animal/hostile/guardian/get_status_tab_items() - . += ..() - if(summoner) - var/resulthealth - if(iscarbon(summoner)) - resulthealth = round((abs(HEALTH_THRESHOLD_DEAD - summoner.health) / abs(HEALTH_THRESHOLD_DEAD - summoner.maxHealth)) * 100) - else - resulthealth = round((summoner.health / summoner.maxHealth) * 100, 0.5) - . += "Summoner Health: [resulthealth]%" - if(cooldown >= world.time) - . += "Manifest/Recall Cooldown Remaining: [DisplayTimeText(cooldown - world.time)]" - -/mob/living/simple_animal/hostile/guardian/Move() //Returns to summoner if they move out of range - . = ..() - snapback() - -/mob/living/simple_animal/hostile/guardian/proc/snapback() - if(summoner) - if(get_dist(get_turf(summoner),get_turf(src)) <= range) - return - else - to_chat(src, "You moved out of range, and were pulled back! You can only move [range] meters from [summoner.real_name]!") - visible_message("\The [src] jumps back to its user.") - if(istype(summoner.loc, /obj/effect)) - Recall(TRUE) - else - new /obj/effect/temp_visual/guardian/phase/out(loc) - forceMove(summoner.loc) - new /obj/effect/temp_visual/guardian/phase(loc) - -/mob/living/simple_animal/hostile/guardian/proc/is_deployed() - return loc != summoner - -/mob/living/simple_animal/hostile/guardian/AttackingTarget() - if(!is_deployed()) - to_chat(src, "You must be manifested to attack!") - return FALSE - else - return ..() - -/mob/living/simple_animal/hostile/guardian/death() - drop_all_held_items() - ..() - if(summoner) - to_chat(summoner, "Your [name] died somehow!") - summoner.dust() - -/mob/living/simple_animal/hostile/guardian/update_health_hud() - if(summoner && hud_used && hud_used.healths) - var/resulthealth - if(iscarbon(summoner)) - resulthealth = round((abs(HEALTH_THRESHOLD_DEAD - summoner.health) / abs(HEALTH_THRESHOLD_DEAD - summoner.maxHealth)) * 100) - else - resulthealth = round((summoner.health / summoner.maxHealth) * 100, 0.5) - hud_used.healths.maptext = "

" - -/mob/living/simple_animal/hostile/guardian/adjustHealth(amount, updating_health = TRUE, forced = FALSE) //The spirit is invincible, but passes on damage to the summoner - . = amount - if(summoner) - if(loc == summoner) - return FALSE - summoner.adjustBruteLoss(amount) - if(amount > 0) - to_chat(summoner, "Your [name] is under attack! You take damage!") - summoner.visible_message("Blood sprays from [summoner] as [src] takes damage!") - switch(summoner.stat) - if(UNCONSCIOUS, HARD_CRIT) - to_chat(summoner, "Your body can't take the strain of sustaining [src] in this condition, it begins to fall apart!") - summoner.adjustCloneLoss(amount * 0.5) //dying hosts take 50% bonus damage as cloneloss - update_health_hud() - -/mob/living/simple_animal/hostile/guardian/ex_act(severity, target) - switch(severity) - if(1) - gib() - return - if(2) - adjustBruteLoss(60) - if(3) - adjustBruteLoss(30) - -/mob/living/simple_animal/hostile/guardian/gib() - if(summoner) - to_chat(summoner, "Your [src] was blown up!") - summoner.gib() - ghostize() - qdel(src) - -//HAND HANDLING - -/mob/living/simple_animal/hostile/guardian/equip_to_slot(obj/item/I, slot) - if(!slot) - return FALSE - if(!istype(I)) - return FALSE - - . = TRUE - var/index = get_held_index_of_item(I) - if(index) - held_items[index] = null - update_inv_hands() - - if(I.pulledby) - I.pulledby.stop_pulling() - - I.screen_loc = null // will get moved if inventory is visible - I.forceMove(src) - I.equipped(src, slot) - I.layer = ABOVE_HUD_LAYER - I.plane = ABOVE_HUD_PLANE - -/mob/living/simple_animal/hostile/guardian/proc/apply_overlay(cache_index) - if((. = guardian_overlays[cache_index])) - add_overlay(.) - -/mob/living/simple_animal/hostile/guardian/proc/remove_overlay(cache_index) - var/I = guardian_overlays[cache_index] - if(I) - cut_overlay(I) - guardian_overlays[cache_index] = null - -/mob/living/simple_animal/hostile/guardian/update_inv_hands() - remove_overlay(GUARDIAN_HANDS_LAYER) - var/list/hands_overlays = list() - var/obj/item/l_hand = get_item_for_held_index(1) - var/obj/item/r_hand = get_item_for_held_index(2) - - if(r_hand) - hands_overlays += r_hand.build_worn_icon(default_layer = GUARDIAN_HANDS_LAYER, default_icon_file = r_hand.righthand_file, isinhands = TRUE) - - if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD) - r_hand.layer = ABOVE_HUD_LAYER - r_hand.plane = ABOVE_HUD_PLANE - r_hand.screen_loc = ui_hand_position(get_held_index_of_item(r_hand)) - client.screen |= r_hand - - if(l_hand) - hands_overlays += l_hand.build_worn_icon(default_layer = GUARDIAN_HANDS_LAYER, default_icon_file = l_hand.lefthand_file, isinhands = TRUE) - - if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD) - l_hand.layer = ABOVE_HUD_LAYER - l_hand.plane = ABOVE_HUD_PLANE - l_hand.screen_loc = ui_hand_position(get_held_index_of_item(l_hand)) - client.screen |= l_hand - - if(hands_overlays.len) - guardian_overlays[GUARDIAN_HANDS_LAYER] = hands_overlays - apply_overlay(GUARDIAN_HANDS_LAYER) - -/mob/living/simple_animal/hostile/guardian/regenerate_icons() - update_inv_hands() - -//MANIFEST, RECALL, TOGGLE MODE/LIGHT, SHOW TYPE - -/mob/living/simple_animal/hostile/guardian/proc/Manifest(forced) - if(istype(summoner.loc, /obj/effect) || (cooldown > world.time && !forced)) - return FALSE - if(loc == summoner) - forceMove(summoner.loc) - new /obj/effect/temp_visual/guardian/phase(loc) - cooldown = world.time + 10 - reset_perspective() - return TRUE - return FALSE - -/mob/living/simple_animal/hostile/guardian/proc/Recall(forced) - if(!summoner || loc == summoner || (cooldown > world.time && !forced)) - return FALSE - new /obj/effect/temp_visual/guardian/phase/out(loc) - - forceMove(summoner) - cooldown = world.time + 10 - return TRUE - -/mob/living/simple_animal/hostile/guardian/proc/ToggleMode() - to_chat(src, "You don't have another mode!") - - -/mob/living/simple_animal/hostile/guardian/proc/ToggleLight() - if(!light_on) - to_chat(src, "You activate your light.") - set_light_on(TRUE) - else - to_chat(src, "You deactivate your light.") - set_light_on(FALSE) - - -/mob/living/simple_animal/hostile/guardian/verb/ShowType() - set name = "Check Guardian Type" - set category = "Guardian" - set desc = "Check what type you are." - to_chat(src, playstyle_string) - -//COMMUNICATION - -/mob/living/simple_animal/hostile/guardian/proc/Communicate() - if(summoner) - var/sender_key = key - var/input = stripped_input(src, "Please enter a message to tell your summoner.", "Guardian", "") - if(sender_key != key || !input) //guardian got reset, or did not enter anything - return - - var/preliminary_message = "[input]" //apply basic color/bolding - var/my_message = "[src]: [preliminary_message]" //add source, color source with the guardian's color - - to_chat(summoner, my_message) - var/list/guardians = summoner.hasparasites() - for(var/para in guardians) - to_chat(para, my_message) - for(var/M in GLOB.dead_mob_list) - var/link = FOLLOW_LINK(M, src) - to_chat(M, "[link] [my_message]") - - src.log_talk(input, LOG_SAY, tag="guardian") - -/mob/living/proc/guardian_comm() - set name = "Communicate" - set category = "Guardian" - set desc = "Communicate telepathically with your guardian." - var/input = stripped_input(src, "Please enter a message to tell your guardian.", "Message", "") - if(!input) - return - - var/preliminary_message = "[input]" //apply basic color/bolding - var/my_message = "[src]: [preliminary_message]" //add source, color source with default grey... - - to_chat(src, my_message) - var/list/guardians = hasparasites() - for(var/para in guardians) - var/mob/living/simple_animal/hostile/guardian/G = para - to_chat(G, "[src]: [preliminary_message]" ) - for(var/M in GLOB.dead_mob_list) - var/link = FOLLOW_LINK(M, src) - to_chat(M, "[link] [my_message]") - - src.log_talk(input, LOG_SAY, tag="guardian") - -//FORCE RECALL/RESET - -/mob/living/proc/guardian_recall() - set name = "Recall Guardian" - set category = "Guardian" - set desc = "Forcibly recall your guardian." - var/list/guardians = hasparasites() - for(var/para in guardians) - var/mob/living/simple_animal/hostile/guardian/G = para - G.Recall() - -/mob/living/proc/guardian_reset() - set name = "Reset Guardian Player (One Use)" - set category = "Guardian" - set desc = "Re-rolls which ghost will control your Guardian. One use per Guardian." - - var/list/guardians = hasparasites() - for(var/para in guardians) - var/mob/living/simple_animal/hostile/guardian/P = para - if(P.reset) - guardians -= P //clear out guardians that are already reset - if(guardians.len) - var/mob/living/simple_animal/hostile/guardian/G = input(src, "Pick the guardian you wish to reset", "Guardian Reset") as null|anything in sortNames(guardians) - if(G) - to_chat(src, "You attempt to reset [G.real_name]'s personality...") - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as [src.real_name]'s [G.real_name]?", ROLE_PAI, null, FALSE, 100) - if(LAZYLEN(candidates)) - var/mob/dead/observer/C = pick(candidates) - to_chat(G, "Your user reset you, and your body was taken over by a ghost. Looks like they weren't happy with your performance.") - to_chat(src, "Your [G.real_name] has been successfully reset.") - message_admins("[key_name_admin(C)] has taken control of ([ADMIN_LOOKUPFLW(G)])") - G.ghostize(0) - G.guardianrecolor() - G.guardianrename() //give it a new color and name, to show it's a new person - G.key = C.key - G.reset = 1 - switch(G.theme) - if("tech") - to_chat(src, "[G.real_name] is now online!") - if("magic") - to_chat(src, "[G.real_name] has been summoned!") - if("carp") - to_chat(src, "[G.real_name] has been caught!") - if("miner") - to_chat(src, "[G.real_name] has appeared!") - if("slime") - to_chat(src, "[G.real_name] has taken shape!") - guardians -= G - if(!guardians.len) - remove_verb(src, /mob/living/proc/guardian_reset) - else - to_chat(src, "There were no ghosts willing to take control of [G.real_name]. Looks like you're stuck with it for now.") - else - to_chat(src, "You decide not to reset [guardians.len > 1 ? "any of your guardians":"your guardian"].") - else - remove_verb(src, /mob/living/proc/guardian_reset) - -////////parasite tracking/finding procs - -/mob/living/proc/hasparasites() //returns a list of guardians the mob is a summoner for - . = list() - for(var/P in GLOB.parasites) - var/mob/living/simple_animal/hostile/guardian/G = P - if(G.summoner == src) - . += G - -/mob/living/simple_animal/hostile/guardian/proc/hasmatchingsummoner(mob/living/simple_animal/hostile/guardian/G) //returns 1 if the summoner matches the target's summoner - return (istype(G) && G.summoner == summoner) - - -////////Creation - -/obj/item/guardiancreator - name = "enchanted deck of tarot cards" - desc = "An enchanted deck of tarot cards, rumored to be a source of unimaginable power." - icon = 'icons/obj/toy.dmi' - icon_state = "deck_tarot_full" - var/used = FALSE - var/theme = "magic" - var/mob_name = "Guardian Spirit" - var/use_message = "You shuffle the deck..." - var/used_message = "All the cards seem to be blank now." - var/failure_message = "..And draw a card! It's...blank? Maybe you should try again later." - var/ling_failure = "The deck refuses to respond to a souless creature such as you." - var/list/possible_guardians = list("Assassin", "Chaos", "Charger", "Explosive", "Lightning", "Protector", "Ranged", "Standard", "Support", "Gravitokinetic") - var/random = TRUE - var/allowmultiple = FALSE - var/allowling = TRUE - var/allowguardian = FALSE - -/obj/item/guardiancreator/attack_self(mob/living/user) - if(isguardian(user) && !allowguardian) - to_chat(user, "[mob_name] chains are not allowed.") - return - var/list/guardians = user.hasparasites() - if(guardians.len && !allowmultiple) - to_chat(user, "You already have a [mob_name]!") - return - if(user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling) && !allowling) - to_chat(user, "[ling_failure]") - return - if(used == TRUE) - to_chat(user, "[used_message]") - return - used = TRUE - to_chat(user, "[use_message]") - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the [mob_name] of [user.real_name]?", ROLE_PAI, null, FALSE, 100, POLL_IGNORE_HOLOPARASITE) - - if(LAZYLEN(candidates)) - var/mob/dead/observer/C = pick(candidates) - spawn_guardian(user, C.key) - else - to_chat(user, "[failure_message]") - used = FALSE - - -/obj/item/guardiancreator/proc/spawn_guardian(mob/living/user, key) - var/guardiantype = "Standard" - if(random) - guardiantype = pick(possible_guardians) - else - guardiantype = input(user, "Pick the type of [mob_name]", "[mob_name] Creation") as null|anything in sortList(possible_guardians) - if(!guardiantype) - to_chat(user, "[failure_message]" ) - used = FALSE - return - var/pickedtype = /mob/living/simple_animal/hostile/guardian/punch - switch(guardiantype) - - if("Chaos") - pickedtype = /mob/living/simple_animal/hostile/guardian/fire - - if("Standard") - pickedtype = /mob/living/simple_animal/hostile/guardian/punch - - if("Ranged") - pickedtype = /mob/living/simple_animal/hostile/guardian/ranged - - if("Support") - pickedtype = /mob/living/simple_animal/hostile/guardian/healer - - if("Explosive") - pickedtype = /mob/living/simple_animal/hostile/guardian/bomb - - if("Lightning") - pickedtype = /mob/living/simple_animal/hostile/guardian/beam - - if("Protector") - pickedtype = /mob/living/simple_animal/hostile/guardian/protector - - if("Charger") - pickedtype = /mob/living/simple_animal/hostile/guardian/charger - - if("Assassin") - pickedtype = /mob/living/simple_animal/hostile/guardian/assassin - - if("Dextrous") - pickedtype = /mob/living/simple_animal/hostile/guardian/dextrous - - if("Gravitokinetic") - pickedtype = /mob/living/simple_animal/hostile/guardian/gravitokinetic - - if("Slime") - pickedtype = /mob/living/simple_animal/hostile/guardian/slime - - var/list/guardians = user.hasparasites() - if(guardians.len && !allowmultiple) - to_chat(user, "You already have a [mob_name]!" ) - used = FALSE - return - var/mob/living/simple_animal/hostile/guardian/G = new pickedtype(user, theme) - G.name = mob_name - G.summoner = user - G.key = key - G.mind.enslave_mind_to_creator(user) - log_game("[key_name(user)] has summoned [key_name(G)], a [guardiantype] holoparasite.") - switch(theme) - if("tech") - to_chat(user, "[G.tech_fluff_string]") - to_chat(user, "[G.real_name] is now online!") - if("magic") - to_chat(user, "[G.magic_fluff_string]") - to_chat(user, "[G.real_name] has been summoned!") - if("carp") - to_chat(user, "[G.carp_fluff_string]") - to_chat(user, "[G.real_name] has been caught!") - if("miner") - to_chat(user, "[G.miner_fluff_string]") - to_chat(user, "[G.real_name] has appeared!") - if("slime") - to_chat(user, "[G.slime_fluff_string]") - to_chat(user, "[G.real_name] was created using slime science!") - add_verb(user, list(/mob/living/proc/guardian_comm, \ - /mob/living/proc/guardian_recall, \ - /mob/living/proc/guardian_reset)) - G?.client.init_verbs() - -/obj/item/guardiancreator/choose - random = FALSE - -/obj/item/guardiancreator/choose/dextrous - possible_guardians = list("Assassin", "Chaos", "Charger", "Dextrous", "Explosive", "Lightning", "Protector", "Ranged", "Standard", "Support") - -/obj/item/guardiancreator/choose/wizard - possible_guardians = list("Assassin", "Chaos", "Charger", "Dextrous", "Explosive", "Lightning", "Protector", "Ranged", "Standard",) - allowmultiple = TRUE - -/obj/item/guardiancreator/tech - name = "holoparasite injector" - desc = "It contains an alien nanoswarm of unknown origin. Though capable of near sorcerous feats via use of hardlight holograms and nanomachines, it requires an organic host as a home base and source of fuel." - icon = 'icons/obj/syringe.dmi' - icon_state = "combat_hypo" - theme = "tech" - mob_name = "Holoparasite" - use_message = "You start to power on the injector..." - used_message = "The injector has already been used." - failure_message = "...ERROR. BOOT SEQUENCE ABORTED. AI FAILED TO INTIALIZE. PLEASE CONTACT SUPPORT OR TRY AGAIN LATER." - ling_failure = "The holoparasites recoil in horror. They want nothing to do with a creature like you." - -/obj/item/guardiancreator/tech/choose/traitor - possible_guardians = list("Assassin", "Chaos", "Charger", "Explosive", "Lightning", "Protector", "Ranged", "Standard", "Support") - allowling = FALSE - -/obj/item/guardiancreator/tech/choose - random = FALSE - -/obj/item/guardiancreator/tech/choose/dextrous - possible_guardians = list("Assassin", "Chaos", "Charger", "Dextrous", "Explosive", "Lightning", "Protector", "Ranged", "Standard", "Support")//"Gravokinetic" to re-add guardians to lists like this one - -/obj/item/paper/guides/antag/guardian - name = "Holoparasite Guide" - default_raw_text = {"A list of Holoparasite Types
- -
-Assassin: Does medium damage and takes full damage, but can enter stealth, causing its next attack to do massive damage and ignore armor. However, it becomes briefly unable to recall after attacking from stealth.
-
-Chaos: Ignites enemies on touch and causes them to hallucinate all nearby people as the parasite. Automatically extinguishes the user if they catch on fire.
-
-Charger: Moves extremely fast, does medium damage on attack, and can charge at targets, damaging the first target hit and forcing them to drop any items they are holding.
-
-Dexterous: Does low damage on attack, but is capable of holding items and storing a single item within it. It will drop items held in its hands when it recalls, but it will retain the stored item.
-
-Explosive: High damage resist and medium power attack that may explosively teleport targets. Can turn any object, including objects too large to pick up, into a bomb, dealing explosive damage to the next person to touch it. The object will return to normal after the trap is triggered or after a delay.
-
-Lightning: Attacks apply lightning chains to targets. Has a lightning chain to the user. Lightning chains shock everything near them, doing constant damage.
-
-Protector: Causes you to teleport to it when out of range, unlike other parasites. Has two modes; Combat, where it does and takes medium damage, and Protection, where it does and takes almost no damage but moves slightly slower.
-
-Ranged: Has two modes. Ranged; which fires a constant stream of weak, armor-ignoring projectiles. Scout; Cannot attack, but can move through walls and is quite hard to see. Can lay surveillance snares, which alert it when crossed, in either mode.
-
-Standard: Devastating close combat attacks and high damage resist. Can smash through weak walls.
-
-Gravitokinetic: Attacks will apply crushing gravity to the target. Can target the ground as well to slow targets advancing on you, but this will affect the user.
-
-"} - -/obj/item/paper/guides/antag/guardian/wizard - name = "Guardian Guide" - default_raw_text = {"A list of Guardian Types
- -
-Assassin: Does medium damage and takes full damage, but can enter stealth, causing its next attack to do massive damage and ignore armor. However, it becomes briefly unable to recall after attacking from stealth.
-
-Chaos: Ignites enemies on touch and causes them to hallucinate all nearby people as the guardian. Automatically extinguishes the user if they catch on fire.
-
-Charger: Moves extremely fast, does medium damage on attack, and can charge at targets, damaging the first target hit and forcing them to drop any items they are holding.
-
-Dexterous: Does low damage on attack, but is capable of holding items and storing a single item within it. It will drop items held in its hands when it recalls, but it will retain the stored item.
-
-Explosive: High damage resist and medium power attack that may explosively teleport targets. Can turn any object, including objects too large to pick up, into a bomb, dealing explosive damage to the next person to touch it. The object will return to normal after the trap is triggered or after a delay.
-
-Lightning: Attacks apply lightning chains to targets. Has a lightning chain to the user. Lightning chains shock everything near them, doing constant damage.
-
-Protector: Causes you to teleport to it when out of range, unlike other parasites. Has two modes; Combat, where it does and takes medium damage, and Protection, where it does and takes almost no damage but moves slightly slower.
-
-Ranged: Has two modes. Ranged; which fires a constant stream of weak, armor-ignoring projectiles. Scout; Cannot attack, but can move through walls and is quite hard to see. Can lay surveillance snares, which alert it when crossed, in either mode.
-
-Standard: Devastating close combat attacks and high damage resist. Can smash through weak walls.
-
-Gravitokinetic: Attacks will apply crushing gravity to the target. Can target the ground as well to slow targets advancing on you, but this will affect the user.
-
-"} - - -/obj/item/storage/box/syndie_kit/guardian - name = "holoparasite injector kit" - -/obj/item/storage/box/syndie_kit/guardian/PopulateContents() - new /obj/item/guardiancreator/tech/choose/dextrous(src) //WS Edit - Dextrous Guardians - new /obj/item/paper/guides/antag/guardian(src) - -/obj/item/guardiancreator/carp - name = "holocarp fishsticks" - desc = "Using the power of Carp'sie, you can catch a carp from byond the veil of Carpthulu, and bind it to your fleshy flesh form." - icon = 'icons/obj/food/food.dmi' - icon_state = "fishfingers" - theme = "carp" - mob_name = "Holocarp" - use_message = "You put the fishsticks in your mouth..." - used_message = "Someone's already taken a bite out of these fishsticks! Ew." - failure_message = "You couldn't catch any carp spirits from the seas of Lake Carp. Maybe there are none, maybe you fucked up." - ling_failure = "Carp'sie seems to not have taken you as the chosen one. Maybe it's because of your horrifying origin." - allowmultiple = TRUE - -/obj/item/guardiancreator/carp/choose - random = FALSE - -/obj/item/guardiancreator/miner - name = "dusty shard" - desc = "Seems to be a very old rock, may have originated from a strange meteor." - icon = 'icons/obj/lavaland/artefacts.dmi' - icon_state = "dustyshard" - theme = "miner" - mob_name = "Power Miner" - use_message = "You pierce your skin with the shard..." - used_message = "This shard seems to have lost all its' power..." - failure_message = "The shard hasn't reacted at all. Maybe try again later..." - ling_failure = "The power of the shard seems to not react with your horrifying, mutated body." - -/obj/item/guardiancreator/miner/choose - random = FALSE - name = "glimmering shard" - desc = "Seems to be a very old rock, may have originated from a strange meteor. This one looks exceptionally pure." - possible_guardians = list("Assassin", "Chaos", "Charger", "Dextrous", "Explosive", "Lightning", "Protector", "Ranged", "Standard", "Support") - allowmultiple = TRUE//if you *somehow* get the extremely rare minerchoose guardian(25% chance to spawn, for an item in a table of around 30 options) while you already have a guardian, you can stack it. The ultimate gambling. - -/obj/item/guardiancreator/slime - name = "slime shard" - desc = "A shard of crystallized slime." - icon = 'icons/obj/lavaland/artefacts.dmi' - icon_state = "dustyshard" - color = "#00ff15" - theme = "slime" - mob_name = "Standing Slime" - use_message = "You squeeze the shard inhand, and it grows warm..." - used_message = "You squeeze the shard, but nothing happens. Maybe it's been used already." - failure_message = "The shard grows cold. Maybe try again later?" - ling_failure = "The shard seems to quiver and twist away from you." - possible_guardians = list("Slime") diff --git a/code/modules/mob/living/simple_animal/guardian/types/assassin.dm b/code/modules/mob/living/simple_animal/guardian/types/assassin.dm deleted file mode 100644 index 7cfed9d167db..000000000000 --- a/code/modules/mob/living/simple_animal/guardian/types/assassin.dm +++ /dev/null @@ -1,101 +0,0 @@ -//Assassin -/mob/living/simple_animal/hostile/guardian/assassin - melee_damage_lower = 15 - melee_damage_upper = 15 - attack_verb_continuous = "slashes" - attack_verb_simple = "slash" - attack_sound = 'sound/weapons/bladeslice.ogg' - damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1) - playstyle_string = "As an assassin type you do medium damage and have no damage resistance, but can enter stealth, massively increasing the damage of your next attack and causing it to ignore armor. Stealth is broken when you attack or take damage." - magic_fluff_string = "..And draw the Space Ninja, a lethal, invisible assassin." - tech_fluff_string = "Boot sequence complete. Assassin modules loaded. Holoparasite swarm online." - carp_fluff_string = "CARP CARP CARP! Caught one! It's an assassin carp! Just when you thought it was safe to go back to the water... which is unhelpful, because we're in space." - miner_fluff_string = "You encounter... Glass, a sharp, fragile attacker." - toggle_button_type = /atom/movable/screen/guardian/ToggleMode/Assassin - var/toggle = FALSE - var/stealthcooldown = 100 - var/atom/movable/screen/alert/canstealthalert - var/atom/movable/screen/alert/instealthalert - speed = -1 - -/mob/living/simple_animal/hostile/guardian/assassin/Initialize() - . = ..() - stealthcooldown = 0 - -/mob/living/simple_animal/hostile/guardian/assassin/Life() - . = ..() - updatestealthalert() - if(loc == summoner && toggle) - ToggleMode(0) - -/mob/living/simple_animal/hostile/guardian/assassin/get_status_tab_items() - . = ..() - if(stealthcooldown >= world.time) - . += "Stealth Cooldown Remaining: [DisplayTimeText(stealthcooldown - world.time)]" - -/mob/living/simple_animal/hostile/guardian/assassin/AttackingTarget() - . = ..() - if(.) - if(toggle && (isliving(target) || istype(target, /obj/structure/window) || istype(target, /obj/structure/grille))) - ToggleMode(1) - -/mob/living/simple_animal/hostile/guardian/assassin/adjustHealth(amount, updating_health = TRUE, forced = FALSE) - . = ..() - if(. > 0 && toggle) - ToggleMode(1) - -/mob/living/simple_animal/hostile/guardian/assassin/Recall() - if(..() && toggle) - ToggleMode(0) - -/mob/living/simple_animal/hostile/guardian/assassin/ToggleMode(forced = 0) - if(toggle) - melee_damage_lower = initial(melee_damage_lower) - melee_damage_upper = initial(melee_damage_upper) - armour_penetration = initial(armour_penetration) - obj_damage = initial(obj_damage) - environment_smash = initial(environment_smash) - alpha = initial(alpha) - if(!forced) - to_chat(src, "You exit stealth.") - else - visible_message("\The [src] suddenly appears!") - stealthcooldown = world.time + initial(stealthcooldown) //we were forced out of stealth and go on cooldown - cooldown = world.time + 40 //can't recall for 4 seconds - updatestealthalert() - toggle = FALSE - else if(stealthcooldown <= world.time) - if(src.loc == summoner) - to_chat(src, "You have to be manifested to enter stealth!") - return - melee_damage_lower = 50 - melee_damage_upper = 50 - armour_penetration = 100 - obj_damage = 0 - environment_smash = ENVIRONMENT_SMASH_NONE - new /obj/effect/temp_visual/guardian/phase/out(get_turf(src)) - alpha = 20 - if(!forced) - to_chat(src, "You enter stealth, empowering your next attack.") - updatestealthalert() - toggle = TRUE - else if(!forced) - to_chat(src, "You cannot yet enter stealth, wait another [DisplayTimeText(stealthcooldown - world.time)]!") - -/mob/living/simple_animal/hostile/guardian/assassin/proc/updatestealthalert() - if(stealthcooldown <= world.time) - if(toggle) - if(!instealthalert) - instealthalert = throw_alert("instealth", /atom/movable/screen/alert/instealth) - clear_alert("canstealth") - canstealthalert = null - else - if(!canstealthalert) - canstealthalert = throw_alert("canstealth", /atom/movable/screen/alert/canstealth) - clear_alert("instealth") - instealthalert = null - else - clear_alert("instealth") - instealthalert = null - clear_alert("canstealth") - canstealthalert = null diff --git a/code/modules/mob/living/simple_animal/guardian/types/charger.dm b/code/modules/mob/living/simple_animal/guardian/types/charger.dm deleted file mode 100644 index 7ebd3c8b3cca..000000000000 --- a/code/modules/mob/living/simple_animal/guardian/types/charger.dm +++ /dev/null @@ -1,77 +0,0 @@ -//Charger -/mob/living/simple_animal/hostile/guardian/charger - melee_damage_lower = 15 - melee_damage_upper = 15 - ranged = 1 //technically - ranged_message = "charges" - ranged_cooldown_time = 10 - speed = 2//slow when not charging - damage_coeff = list(BRUTE = 0.5, BURN = 0.5, TOX = 0.6, CLONE = 0.6, STAMINA = 0, OXY = 0.6) - playstyle_string = "As a charger type you are a formidable close range fighter, but move slowly when not charging. You can charge at a location, damaging any target hit and potentially knocking them flat." - magic_fluff_string = "..And draw the Hunter, an alien master of rapid assault." - tech_fluff_string = "Boot sequence complete. Charge modules loaded. Holoparasite swarm online." - carp_fluff_string = "CARP CARP CARP! Caught one! It's a charger carp, that likes running at people. But it doesn't have any legs..." - miner_fluff_string = "You encounter... Titanium, a lightweight, agile fighter." - var/charging = 0 - var/atom/movable/screen/alert/chargealert - -/mob/living/simple_animal/hostile/guardian/charger/Life() - . = ..() - if(ranged_cooldown <= world.time) - if(!chargealert) - chargealert = throw_alert("charge", /atom/movable/screen/alert/cancharge) - else - clear_alert("charge") - chargealert = null - -/mob/living/simple_animal/hostile/guardian/charger/OpenFire(atom/A) - if(!charging) - visible_message("[src] [ranged_message] at [A]!") - ranged_cooldown = world.time + ranged_cooldown_time - clear_alert("charge") - chargealert = null - Shoot(A) - -/mob/living/simple_animal/hostile/guardian/charger/Shoot(atom/targeted_atom) - charging = 1 - throw_at(targeted_atom, range, 1, src, FALSE, TRUE, callback = CALLBACK(src, PROC_REF(charging_end))) - -/mob/living/simple_animal/hostile/guardian/charger/proc/charging_end() - charging = 0 - -/mob/living/simple_animal/hostile/guardian/charger/Move() - if(charging) - new /obj/effect/temp_visual/decoy/fading(loc,src) - . = ..() - -/mob/living/simple_animal/hostile/guardian/charger/snapback() - if(!charging) - ..() - -/mob/living/simple_animal/hostile/guardian/charger/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) - if(!charging) - return ..() - - else if(hit_atom) - if(isliving(hit_atom) && hit_atom != summoner) - var/mob/living/L = hit_atom - var/blocked = FALSE - if(hasmatchingsummoner(hit_atom)) //if the summoner matches don't hurt them - blocked = TRUE - if(ishuman(hit_atom)) - var/mob/living/carbon/human/H = hit_atom - if(H.check_shields(src, 90, "[name]", attack_type = THROWN_PROJECTILE_ATTACK)) - blocked = TRUE - if(!blocked) - L.visible_message("[src] slams into [L]!", "[src] slams into you!") - if(prob(25)) - L.drop_all_held_items() - L.Knockdown(10) - L.visible_message("[L] is knocked clean over!", "You are flung to the ground by the impact!") - L.apply_damage(30, BRUTE) - playsound(get_turf(L), 'sound/effects/meteorimpact.ogg', 100, TRUE) - shake_camera(L, 4, 3) - shake_camera(src, 2, 3) - - charging = 0 - diff --git a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm deleted file mode 100644 index 48fb3db7b7bd..000000000000 --- a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm +++ /dev/null @@ -1,85 +0,0 @@ -//Dextrous -/mob/living/simple_animal/hostile/guardian/dextrous//very few buffs needed, this is arguably the most "powerful" holoparasite for the reason that is: GUN. - melee_damage_lower = 10 - melee_damage_upper = 10 - damage_coeff = list(BRUTE = 0.5, BURN = 0.5, TOX = 0.75, CLONE = 0.75, STAMINA = 0, OXY = 0.75) - playstyle_string = "As a dextrous type you can hold items, store an item within yourself, and have medium damage resistance, but do low damage on attacks. Recalling and leashing will force you to drop unstored items!" - magic_fluff_string = "..And draw the Drone, a dextrous master of construction and repair." - tech_fluff_string = "Boot sequence complete. Dextrous combat modules loaded. Holoparasite swarm online." - carp_fluff_string = "CARP CARP CARP! You caught one! It can hold stuff in its fins, sort of." - miner_fluff_string = "You encounter... Gold, a malleable constructor." - dextrous = TRUE - held_items = list(null, null) - var/obj/item/internal_storage //what we're storing within ourself - -/mob/living/simple_animal/hostile/guardian/dextrous/death(gibbed) - ..() - if(internal_storage) - dropItemToGround(internal_storage) - -/mob/living/simple_animal/hostile/guardian/dextrous/examine(mob/user) - if(dextrous) - . = list("This is [icon2html(src)] \a [src]!\n[desc]") - for(var/obj/item/I in held_items) - if(!(I.item_flags & ABSTRACT)) - . += "It has [I.get_examine_string(user)] in its [get_held_index_name(get_held_index_of_item(I))]." - if(internal_storage && !(internal_storage.item_flags & ABSTRACT)) - . += "It is holding [internal_storage.get_examine_string(user)] in its internal storage." - . += "" - else - return ..() - -/mob/living/simple_animal/hostile/guardian/dextrous/Recall(forced) - if(!summoner || loc == summoner || (cooldown > world.time && !forced)) - return FALSE - drop_all_held_items() - return ..() //lose items, then return - -/mob/living/simple_animal/hostile/guardian/dextrous/snapback() - if(summoner && !(get_dist(get_turf(summoner),get_turf(src)) <= range)) - drop_all_held_items() - ..() //lose items, then return - -//SLOT HANDLING BULLSHIT FOR INTERNAL STORAGE -/mob/living/simple_animal/hostile/guardian/dextrous/doUnEquip(obj/item/I, force, newloc, no_move, invdrop = TRUE, silent = FALSE) - if(..()) - update_inv_hands() - if(I == internal_storage) - internal_storage = null - update_inv_internal_storage() - return TRUE - return FALSE - -/mob/living/simple_animal/hostile/guardian/dextrous/can_equip(obj/item/I, slot, disable_warning = FALSE, bypass_equip_delay_self = FALSE) - switch(slot) - if(ITEM_SLOT_DEX_STORAGE) - if(internal_storage) - return FALSE - return TRUE - ..() - -/mob/living/simple_animal/hostile/guardian/dextrous/equip_to_slot(obj/item/I, slot) - if(!..()) - return - - switch(slot) - if(ITEM_SLOT_DEX_STORAGE) - internal_storage = I - update_inv_internal_storage() - else - to_chat(src, "You are trying to equip this item to an unsupported inventory slot. Report this to a coder!") - -/mob/living/simple_animal/hostile/guardian/dextrous/getBackSlot() - return ITEM_SLOT_DEX_STORAGE - -/mob/living/simple_animal/hostile/guardian/dextrous/getBeltSlot() - return ITEM_SLOT_DEX_STORAGE - -/mob/living/simple_animal/hostile/guardian/dextrous/proc/update_inv_internal_storage() - if(internal_storage && client && hud_used && hud_used.hud_shown) - internal_storage.screen_loc = ui_id - client.screen += internal_storage - -/mob/living/simple_animal/hostile/guardian/dextrous/regenerate_icons() - ..() - update_inv_internal_storage() diff --git a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm deleted file mode 100644 index f93f70d8ffb3..000000000000 --- a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm +++ /dev/null @@ -1,78 +0,0 @@ -#define UNREGISTER_BOMB_SIGNALS(A) \ - do { \ - UnregisterSignal(A, boom_signals); \ - UnregisterSignal(A, COMSIG_PARENT_EXAMINE); \ - } while (0) - -//Bomb -/mob/living/simple_animal/hostile/guardian/bomb - melee_damage_lower = 35 - melee_damage_upper = 35 - next_move_modifier = 1.5//attacks are 50% slower - damage_coeff = list(BRUTE = 0.6, BURN = 0.6, TOX = 0.6, CLONE = 0.6, STAMINA = 0, OXY = 0.6)//relatively delicate, for a holopara - attack_sound = 'sound/effects/gravhit.ogg' - range = 5//tiny range - speed = 4//slow af - playstyle_string = "As an explosive type, you have powerful but slow blasting punches, may explode targets for bonus damage on attack, and are capable of converting nearby items and objects into disguised bombs via alt click. However, you are slow, and your range is very low. Make it count!" - magic_fluff_string = "..And draw the Scientist, master of explosive death." - tech_fluff_string = "Boot sequence complete. Explosive modules active. Holoparasite swarm online." - carp_fluff_string = "CARP CARP CARP! Caught one! It's an explosive carp! Boom goes the fishy." - miner_fluff_string = "You encounter... Gibtonite, an explosive fighter." - var/bomb_cooldown = 0 - var/static/list/boom_signals = list(COMSIG_PARENT_ATTACKBY, COMSIG_ATOM_BUMPED, COMSIG_ATOM_ATTACK_HAND) - -/mob/living/simple_animal/hostile/guardian/bomb/get_status_tab_items() - . = ..() - if(bomb_cooldown >= world.time) - . += "Bomb Cooldown Remaining: [DisplayTimeText(bomb_cooldown - world.time)]" - -/mob/living/simple_animal/hostile/guardian/bomb/AttackingTarget() - . = ..() - if(. && prob(65) && isliving(target)) - var/mob/living/M = target - if(!M.anchored && M != summoner && !hasmatchingsummoner(M)) - new /obj/effect/temp_visual/guardian/phase/out(get_turf(M)) - for(var/mob/living/L in range(1, M)) - if(hasmatchingsummoner(L)) //if the summoner matches don't hurt them - continue - if(L != src && L != summoner) - L.apply_damage(20, BRUTE) - new /obj/effect/temp_visual/explosion(get_turf(M)) - -/mob/living/simple_animal/hostile/guardian/bomb/AltClickOn(atom/movable/A) - if(!istype(A)) - return - if(loc == summoner) - to_chat(src, "You must be manifested to create bombs!") - return - if(isobj(A) && Adjacent(A)) - if(bomb_cooldown <= world.time && !stat) - to_chat(src, "Success! Bomb armed!") - bomb_cooldown = world.time + 200 - RegisterSignal(A, COMSIG_PARENT_EXAMINE, PROC_REF(display_examine)) - RegisterSignal(A, boom_signals, PROC_REF(kaboom)) - addtimer(CALLBACK(src, PROC_REF(disable), A), 600, TIMER_UNIQUE|TIMER_OVERRIDE) - else - to_chat(src, "Your powers are on cooldown! You must wait 20 seconds between bombs.") - -/mob/living/simple_animal/hostile/guardian/bomb/proc/kaboom(atom/source, mob/living/explodee) - if(!istype(explodee)) - return - if(explodee == src || explodee == summoner || hasmatchingsummoner(explodee)) - return - to_chat(explodee, "[source] was boobytrapped!") - to_chat(src, "Success! Your trap caught [explodee]") - var/turf/T = get_turf(source) - playsound(T,'sound/effects/explosion2.ogg', 200, TRUE) - new /obj/effect/temp_visual/explosion(T) - explodee.ex_act(EXPLODE_HEAVY) - UNREGISTER_BOMB_SIGNALS(source) - -/mob/living/simple_animal/hostile/guardian/bomb/proc/disable(atom/A) - to_chat(src, "Failure! Your trap didn't catch anyone this time.") - UNREGISTER_BOMB_SIGNALS(A) - -/mob/living/simple_animal/hostile/guardian/bomb/proc/display_examine(datum/source, mob/user, text) - text += "It glows with a strange light!" - -#undef UNREGISTER_BOMB_SIGNALS diff --git a/code/modules/mob/living/simple_animal/guardian/types/fire.dm b/code/modules/mob/living/simple_animal/guardian/types/fire.dm deleted file mode 100644 index 2d7a34a8bbf8..000000000000 --- a/code/modules/mob/living/simple_animal/guardian/types/fire.dm +++ /dev/null @@ -1,50 +0,0 @@ -//Fire -/mob/living/simple_animal/hostile/guardian/fire - a_intent = INTENT_HELP - melee_damage_lower = 7 - melee_damage_upper = 7 - attack_sound = 'sound/items/welder.ogg' - attack_verb_continuous = "ignites" - attack_verb_simple = "ignite" - damage_coeff = list(BRUTE = 0.6, BURN = 0.4, TOX = 0.6, CLONE = 0.7, STAMINA = 0, OXY = 0.7) - range = 7 - playstyle_string = "As a chaos type, you have only light damage resistance, but will ignite any enemy you bump into. In addition, your melee attacks will cause human targets to see everyone as you, and will cook simple animals from the inside, doing bonus damage." - magic_fluff_string = "..And draw the Wizard, bringer of endless chaos!" - tech_fluff_string = "Boot sequence complete. Crowd control modules activated. Holoparasite swarm online." - carp_fluff_string = "CARP CARP CARP! You caught one! OH GOD, EVERYTHING'S ON FIRE. Except you and the fish." - miner_fluff_string = "You encounter... Plasma, the bringer of fire." - -/mob/living/simple_animal/hostile/guardian/fire/Life() - . = ..() - if(summoner) - summoner.ExtinguishMob() - summoner.adjust_fire_stacks(-20) - -/mob/living/simple_animal/hostile/guardian/fire/AttackingTarget() - . = ..() - if(. && ishuman(target) && target != summoner) - new /datum/hallucination/delusion(target,TRUE,"custom",200,0, icon_state,icon) - melee_damage_lower = 7 - melee_damage_upper = 7 - if(. && isanimal(target) && target != summoner) - melee_damage_lower = 40 - melee_damage_upper = 40 - -/mob/living/simple_animal/hostile/guardian/fire/on_entered(datum/source, AM as mob|obj) - . = ..() - collision_ignite(AM) - -/mob/living/simple_animal/hostile/guardian/fire/Bumped(atom/movable/AM) - ..() - collision_ignite(AM) - -/mob/living/simple_animal/hostile/guardian/fire/Bump(AM as mob|obj) - ..() - collision_ignite(AM) - -/mob/living/simple_animal/hostile/guardian/fire/proc/collision_ignite(AM as mob|obj) - if(isliving(AM)) - var/mob/living/M = AM - if(!hasmatchingsummoner(M) && M != summoner && M.fire_stacks < 7) - M.fire_stacks = 7 - M.IgniteMob() diff --git a/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm b/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm deleted file mode 100644 index a86e38db7772..000000000000 --- a/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm +++ /dev/null @@ -1,68 +0,0 @@ -//gravitokinetic -/mob/living/simple_animal/hostile/guardian/gravitokinetic - melee_damage_lower = 15 - melee_damage_upper = 15 - damage_coeff = list(BRUTE = 0.75, BURN = 0.75, TOX = 0.75, CLONE = 0.75, STAMINA = 0, OXY = 0.75) - playstyle_string = "As a gravitokinetic type, you can alt click to make the gravity on the ground stronger, and punching applies this effect to a target." - magic_fluff_string = "..And draw the Singularity, an anomalous force of terror." - tech_fluff_string = "Boot sequence complete. Gravitokinetic modules loaded. Holoparasite swarm online." - carp_fluff_string = "CARP CARP CARP! Caught one! It's a gravitokinetic carp! Now do you understand the gravity of the situation?" - miner_fluff_string = "You encounter... Bananium, a master of gravity business." - var/list/gravito_targets = list() - var/gravity_power_range = 10 //how close the stand must stay to the target to keep the heavy gravity - -///Removes gravity from affected mobs upon guardian death to prevent permanent effects -/mob/living/simple_animal/hostile/guardian/gravitokinetic/death() - . = ..() - for(var/i in gravito_targets) - remove_gravity(i) - -/mob/living/simple_animal/hostile/guardian/gravitokinetic/AttackingTarget() - . = ..() - if(isliving(target) && target != src) - to_chat(src, "Your punch has applied heavy gravity to [target]!") - add_gravity(target, 2) - to_chat(target, "Everything feels really heavy!") - -/mob/living/simple_animal/hostile/guardian/gravitokinetic/AltClickOn(atom/A) - if(isopenturf(A) && is_deployed() && stat != DEAD && in_range(src, A) && !incapacitated()) - var/turf/T = A - if(isspaceturf(T)) - to_chat(src, "You cannot add gravity to space!") - return - visible_message("[src] slams their fist into the [T]!", "You modify the gravity of the [T].") - do_attack_animation(T) - add_gravity(T, 4) - return - return ..() - -/mob/living/simple_animal/hostile/guardian/gravitokinetic/Recall(forced) - . = ..() - to_chat(src, "You have released your gravitokinetic powers!") - for(var/i in gravito_targets) - remove_gravity(i) - -/mob/living/simple_animal/hostile/guardian/gravitokinetic/Moved(oldLoc, dir) - . = ..() - for(var/i in gravito_targets) - if(get_dist(src, i) > gravity_power_range) - remove_gravity(i) - -/mob/living/simple_animal/hostile/guardian/gravitokinetic/proc/add_gravity(atom/A, new_gravity = 2) - if(gravito_targets[A]) - return - A.AddElement(/datum/element/forced_gravity, new_gravity) - gravito_targets[A] = new_gravity - RegisterSignal(A, COMSIG_MOVABLE_MOVED, PROC_REF(__distance_check)) - playsound(src, 'sound/effects/gravhit.ogg', 100, TRUE) - -/mob/living/simple_animal/hostile/guardian/gravitokinetic/proc/remove_gravity(atom/target) - if(isnull(gravito_targets[target])) - return - UnregisterSignal(target, COMSIG_MOVABLE_MOVED) - target.RemoveElement(/datum/element/forced_gravity, gravito_targets[target]) - gravito_targets -= target - -/mob/living/simple_animal/hostile/guardian/gravitokinetic/proc/__distance_check(atom/movable/AM, OldLoc, Dir, Forced) - if(get_dist(src, AM) > gravity_power_range) - remove_gravity(AM) diff --git a/code/modules/mob/living/simple_animal/guardian/types/lightning.dm b/code/modules/mob/living/simple_animal/guardian/types/lightning.dm deleted file mode 100644 index a70bf4edae24..000000000000 --- a/code/modules/mob/living/simple_animal/guardian/types/lightning.dm +++ /dev/null @@ -1,113 +0,0 @@ -//Beam -/obj/effect/ebeam/chain - name = "lightning chain" - layer = LYING_MOB_LAYER - -/mob/living/simple_animal/hostile/guardian/beam - melee_damage_lower = 7 - melee_damage_upper = 7 - attack_verb_continuous = "shocks" - attack_verb_simple = "shock" - melee_damage_type = BURN - attack_sound = 'sound/machines/defib_zap.ogg' - damage_coeff = list(BRUTE = 0.7, BURN = 0.7, TOX = 0.7, CLONE = 0.7, STAMINA = 0, OXY = 0.7) - range = 7 - playstyle_string = "As a lightning type, you will apply lightning chains to targets on attack and have a lightning chain to your summoner. Lightning chains will shock anyone near them." - magic_fluff_string = "..And draw the Tesla, a shocking, lethal source of power." - tech_fluff_string = "Boot sequence complete. Lightning modules active. Holoparasite swarm online." - carp_fluff_string = "CARP CARP CARP! Caught one! It's a lightning carp! Everyone else goes zap zap." - miner_fluff_string = "You encounter... Iron, a conductive master of lightning." - var/datum/beam/summonerchain - var/list/enemychains = list() - var/successfulshocks = 0 - -/mob/living/simple_animal/hostile/guardian/beam/AttackingTarget() - . = ..() - if(. && isliving(target) && target != src && target != summoner) - cleardeletedchains() - for(var/chain in enemychains) - var/datum/beam/B = chain - if(B.target == target) - return //oh this guy already HAS a chain, let's not chain again - if(enemychains.len > 2) - var/datum/beam/C = pick(enemychains) - qdel(C) - enemychains -= C - enemychains += Beam(target, "lightning[rand(1,12)]", time=70, maxdistance=7, beam_type=/obj/effect/ebeam/chain) - -/mob/living/simple_animal/hostile/guardian/beam/Destroy() - removechains() - return ..() - -/mob/living/simple_animal/hostile/guardian/beam/Manifest() - . = ..() - if(.) - if(summoner) - summonerchain = Beam(summoner, "lightning[rand(1,12)]", time=INFINITY, maxdistance=INFINITY, beam_type=/obj/effect/ebeam/chain) - while(loc != summoner) - if(successfulshocks > 5) - successfulshocks = 0 - if(shockallchains()) - successfulshocks++ - SLEEP_CHECK_DEATH(3) - -/mob/living/simple_animal/hostile/guardian/beam/Recall() - . = ..() - if(.) - removechains() - -/mob/living/simple_animal/hostile/guardian/beam/proc/cleardeletedchains() - if(summonerchain && QDELETED(summonerchain)) - summonerchain = null - if(enemychains.len) - for(var/chain in enemychains) - var/datum/cd = chain - if(!chain || QDELETED(cd)) - enemychains -= chain - -/mob/living/simple_animal/hostile/guardian/beam/proc/shockallchains() - . = 0 - cleardeletedchains() - if(summoner) - if(!summonerchain) - summonerchain = Beam(summoner, "lightning[rand(1,12)]", time=INFINITY, maxdistance=INFINITY, beam_type=/obj/effect/ebeam/chain) - . += chainshock(summonerchain) - if(enemychains.len) - for(var/chain in enemychains) - . += chainshock(chain) - -/mob/living/simple_animal/hostile/guardian/beam/proc/removechains() - if(summonerchain) - qdel(summonerchain) - summonerchain = null - if(enemychains.len) - for(var/chain in enemychains) - qdel(chain) - enemychains = list() - -/mob/living/simple_animal/hostile/guardian/beam/proc/chainshock(datum/beam/B) - . = 0 - var/list/turfs = list() - for(var/E in B.elements) - var/obj/effect/ebeam/chainpart = E - if(chainpart && chainpart.x && chainpart.y && chainpart.z) - var/turf/T = get_turf_pixel(chainpart) - turfs |= T - if(T != get_turf(B.origin) && T != get_turf(B.target)) - for(var/turf/TU in circlerange(T, 1)) - turfs |= TU - for(var/turf in turfs) - var/turf/T = turf - for(var/mob/living/L in T) - if(L.stat != DEAD && L != src && L != summoner) - if(hasmatchingsummoner(L)) //if the summoner matches don't hurt them - continue - if(successfulshocks > 4) - L.electrocute_act(0) - L.visible_message( - "[L] was shocked by the lightning chain!", \ - "You are shocked by the lightning chain!", \ - "You hear a heavy electrical crack." \ - ) - L.adjustFireLoss(1.2) //adds up very rapidly - . = 1 diff --git a/code/modules/mob/living/simple_animal/guardian/types/protector.dm b/code/modules/mob/living/simple_animal/guardian/types/protector.dm deleted file mode 100644 index e42dcb62e2ef..000000000000 --- a/code/modules/mob/living/simple_animal/guardian/types/protector.dm +++ /dev/null @@ -1,72 +0,0 @@ -//Protector -/mob/living/simple_animal/hostile/guardian/protector - melee_damage_lower = 30 - melee_damage_upper = 30 - range = 20 - damage_coeff = list(BRUTE = 0.4, BURN = 0.4, TOX = 0.4, CLONE = 0.4, STAMINA = 0, OXY = 0.4) - playstyle_string = "As a protector type you cause your summoner to leash to you instead of you leashing to them and have two modes; Combat Mode, where you do and take medium damage, and Protection Mode, where you take almost no damage and have reduced damage. While in protection mode, you move significantly slower, and have extremely low range." - magic_fluff_string = "..And draw the Guardian, a stalwart protector that never leaves the side of its charge." - tech_fluff_string = "Boot sequence complete. Protector modules loaded. Holoparasite swarm online." - carp_fluff_string = "CARP CARP CARP! You caught one! Wait, no... it caught you! The fisher has become the fishy." - miner_fluff_string = "You encounter... Uranium, a very resistant guardian." - toggle_button_type = /atom/movable/screen/guardian/ToggleMode - var/toggle = FALSE - -/mob/living/simple_animal/hostile/guardian/protector/ex_act(severity) - if(severity == 1) - adjustBruteLoss(400) //if in protector mode, will do 20 damage and not actually necessarily kill the summoner - else - ..() - if(QDELETED(src)) - return - if(toggle) - visible_message("The explosion glances off [src]'s energy shielding!") - -/mob/living/simple_animal/hostile/guardian/protector/adjustHealth(amount, updating_health = TRUE, forced = FALSE) - . = ..() - if(. > 0 && toggle) - var/image/I = new('icons/effects/effects.dmi', src, "shield-flash", MOB_LAYER+0.01, dir = pick(GLOB.cardinals)) - if(guardiancolor) - I.color = guardiancolor - flick_overlay_view(I, src, 5) - -/mob/living/simple_animal/hostile/guardian/protector/ToggleMode() - if(cooldown > world.time) - return 0 - cooldown = world.time + 10 - if(toggle) - cut_overlays() - melee_damage_lower = initial(melee_damage_lower) - melee_damage_upper = initial(melee_damage_upper) - speed = initial(speed) - damage_coeff = list(BRUTE = 0.4, BURN = 0.4, TOX = 0.4, CLONE = 0.4, STAMINA = 0, OXY = 0.4) - to_chat(src, "You switch to combat mode.") - toggle = FALSE - else - var/mutable_appearance/shield_overlay = mutable_appearance('icons/effects/effects.dmi', "shield-grey") - if(guardiancolor) - shield_overlay.color = guardiancolor - add_overlay(shield_overlay) - melee_damage_lower = 15 - melee_damage_upper = 15 - speed = 4 - range = 5 - damage_coeff = list(BRUTE = 0.05, BURN = 0.05, TOX = 0.05, CLONE = 0.05, STAMINA = 0, OXY = 0.05) //damage? what's damage? - to_chat(src, "You switch to protection mode.") - toggle = TRUE - -/mob/living/simple_animal/hostile/guardian/protector/snapback() //snap to what? snap to the guardian! - if(summoner) - if(get_dist(get_turf(summoner),get_turf(src)) <= range) - return - else - if(istype(summoner.loc, /obj/effect)) - to_chat(src, "You moved out of range, and were pulled back! You can only move [range] meters from [summoner.real_name]!") - visible_message("\The [src] jumps back to its user.") - Recall(TRUE) - else - to_chat(summoner, "You moved out of range, and were pulled back! You can only move [range] meters from [real_name]!") - summoner.visible_message("\The [summoner] jumps back to [summoner.p_their()] protector.") - new /obj/effect/temp_visual/guardian/phase/out(get_turf(summoner)) - summoner.forceMove(get_turf(src)) - new /obj/effect/temp_visual/guardian/phase(get_turf(summoner)) diff --git a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm deleted file mode 100644 index 105ae8b35ec8..000000000000 --- a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm +++ /dev/null @@ -1,154 +0,0 @@ -//Ranged -/obj/projectile/guardian//now featuring anime-accurate unpredictable richochet. Hit your master! Hit yourself! Salt in dchat when your own richochet puts you into crit. - name = "crystal spray" - icon_state = "guardian" - damage = 15 - damage_type = BRUTE - armour_penetration = 100 - ricochets_max = 2 - ricochet_chance = 65 - ricochet_auto_aim_range = 0 - ricochet_incidence_leeway = 50 - projectile_piercing = PASSMOB - -/mob/living/simple_animal/hostile/guardian/ranged - a_intent = INTENT_HELP - friendly_verb_continuous = "quietly assesses" - friendly_verb_simple = "quietly assess" - melee_damage_lower = 10 - melee_damage_upper = 10 - damage_coeff = list(BRUTE = 0.9, BURN = 0.9, TOX = 0.9, CLONE = 0.9, STAMINA = 0, OXY = 0.9) - projectiletype = /obj/projectile/guardian - ranged_cooldown_time = 1 //fast! - projectilesound = 'sound/effects/hit_on_shattered_glass.ogg' - ranged = 1 - range = 13 - playstyle_string = "As a ranged type, you have only light damage resistance, but are capable of spraying shards of crystal at incredibly high speed. You can also deploy surveillance snares to monitor enemy movement. Finally, you can switch to scout mode, in which you can't attack, but can move without limit." - magic_fluff_string = "..And draw the Sentinel, an alien master of ranged combat." - tech_fluff_string = "Boot sequence complete. Ranged combat modules active. Holoparasite swarm online." - carp_fluff_string = "CARP CARP CARP! Caught one, it's a ranged carp. This fishy can watch people pee in the ocean." - miner_fluff_string = "You encounter... Diamond, a powerful projectile thrower." - see_invisible = SEE_INVISIBLE_LIVING - see_in_dark = 8 - toggle_button_type = /atom/movable/screen/guardian/ToggleMode - var/list/snares = list() - var/toggle = FALSE - speed = -2//very fast! - -/mob/living/simple_animal/hostile/guardian/ranged/ToggleMode() - if(loc == summoner) - if(toggle) - ranged = initial(ranged) - melee_damage_lower = initial(melee_damage_lower) - melee_damage_upper = initial(melee_damage_upper) - obj_damage = initial(obj_damage) - environment_smash = initial(environment_smash) - alpha = 255 - range = initial(range) - to_chat(src, "You switch to combat mode.") - toggle = FALSE - else - ranged = 0 - melee_damage_lower = 0 - melee_damage_upper = 0 - obj_damage = 0 - environment_smash = ENVIRONMENT_SMASH_NONE - alpha = 45 - range = 255 - to_chat(src, "You switch to scout mode.") - toggle = TRUE - else - to_chat(src, "You have to be recalled to toggle modes!") - -/mob/living/simple_animal/hostile/guardian/ranged/Shoot(atom/targeted_atom) - . = ..() - if(istype(., /obj/projectile)) - var/obj/projectile/P = . - if(guardiancolor) - P.color = guardiancolor - -/mob/living/simple_animal/hostile/guardian/ranged/ToggleLight() - var/msg - switch(lighting_alpha) - if (LIGHTING_PLANE_ALPHA_VISIBLE) - lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE - msg = "You activate your night vision." - if (LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE) - lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE - msg = "You increase your night vision." - if (LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE) - lighting_alpha = LIGHTING_PLANE_ALPHA_INVISIBLE - msg = "You maximize your night vision." - else - lighting_alpha = LIGHTING_PLANE_ALPHA_VISIBLE - msg = "You deactivate your night vision." - - to_chat(src, "[msg]") - - -/mob/living/simple_animal/hostile/guardian/ranged/verb/Snare() - set name = "Set Surveillance Snare" - set category = "Guardian" - set desc = "Set an invisible snare that will alert you when living creatures walk over it. Max of 5" - if(snares.len <6) - var/turf/snare_loc = get_turf(loc) - var/obj/effect/snare/S = new /obj/effect/snare(snare_loc) - S.spawner = src - S.name = "[get_area(snare_loc)] snare ([rand(1, 1000)])" - snares |= S - to_chat(src, "Surveillance snare deployed!") - else - to_chat(src, "You have too many snares deployed. Remove some first.") - -/mob/living/simple_animal/hostile/guardian/ranged/verb/DisarmSnare() - set name = "Remove Surveillance Snare" - set category = "Guardian" - set desc = "Disarm unwanted surveillance snares." - var/picked_snare = input(src, "Pick which snare to remove", "Remove Snare") as null|anything in sortNames(snares) - if(picked_snare) - snares -= picked_snare - qdel(picked_snare) - to_chat(src, "Snare disarmed.") - -/obj/effect/snare - name = "snare" - desc = "You shouldn't be seeing this!" - var/mob/living/simple_animal/hostile/guardian/spawner - invisibility = INVISIBILITY_ABSTRACT - -/obj/effect/snare/Initialize() - . = ..() - var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = PROC_REF(on_entered), - ) - AddElement(/datum/element/connect_loc, loc_connections) - - -/obj/effect/snare/proc/on_entered(datum/source, AM as mob|obj) - SIGNAL_HANDLER - if(isliving(AM) && spawner && spawner.summoner && AM != spawner && !spawner.hasmatchingsummoner(AM)) - to_chat(spawner.summoner, "[AM] has crossed surveillance snare, [name].") - var/list/guardians = spawner.summoner.hasparasites() - for(var/para in guardians) - to_chat(para, "[AM] has crossed surveillance snare, [name].") - -/obj/effect/snare/singularity_act() - return - -/obj/effect/snare/singularity_pull() - return - -/mob/living/simple_animal/hostile/guardian/ranged/Manifest(forced) - if (toggle) - incorporeal_move = INCORPOREAL_MOVE_BASIC - . = ..() - -/mob/living/simple_animal/hostile/guardian/ranged/Recall(forced) - // To stop scout mode from moving when recalled - incorporeal_move = FALSE - . = ..() - -/mob/living/simple_animal/hostile/guardian/ranged/AttackingTarget() - if(toggle) - return - ..() diff --git a/code/modules/mob/living/simple_animal/guardian/types/slime.dm b/code/modules/mob/living/simple_animal/guardian/types/slime.dm deleted file mode 100644 index bf38ffed2ef2..000000000000 --- a/code/modules/mob/living/simple_animal/guardian/types/slime.dm +++ /dev/null @@ -1,73 +0,0 @@ -//Slime guardian- modified support guardian who has higher utility but is less potent in battle -/mob/living/simple_animal/hostile/guardian/slime - a_intent = INTENT_HARM - speed = 0 - damage_coeff = list(BRUTE = 0.7, BURN = 0.7, TOX = 0.7, CLONE = 0.7, STAMINA = 0, OXY = 0.7) - melee_damage_lower = 10 - melee_damage_upper = 10 - melee_damage_type = TOX - playstyle_string = "As a slime type, you can toggle between a weak combat mode, and a strong healing mode that nourishes and repairs damage. This mode also works on slimes. Be warned: You are more vulnerable to damage then most holoparasites." - magic_fluff_string = "..And draw the Xenobiologist, a purveyor of godlike power." - carp_fluff_string = "CARP CARP CARP! You caught a slimy carp. Gross, maybe you should throw this one back." - tech_fluff_string = "Boot sequence complete. Xenobiological support module active. Holoparasite swarm online." - miner_fluff_string = "You encounter... Slime, the master of xenobiology." - slime_fluff_string = "The crystal in your hand shatters into mist, which forms a strange, slimy figure!" - toggle_button_type = /atom/movable/screen/guardian/ToggleMode - var/toggle = FALSE - -/mob/living/simple_animal/hostile/guardian/slime/Initialize() - . = ..() - var/datum/atom_hud/medsensor = GLOB.huds[DATA_HUD_MEDICAL_ADVANCED] - medsensor.add_hud_to(src) - -/mob/living/simple_animal/hostile/guardian/slime/AttackingTarget() - . = ..() - if(is_deployed() && toggle && isslime(target)) - var/mob/living/simple_animal/slime/slime = target - slime.add_nutrition(rand(14, 30)) - slime.adjustHealth(10) - return - - if(is_deployed() && toggle && iscarbon(target)) - var/mob/living/carbon/C = target - C.adjustBruteLoss(-7) - C.adjustFireLoss(-7) - C.adjustOxyLoss(-7) - C.adjustToxLoss(-7) - C.adjustCloneLoss(-0.5) - C.adjust_nutrition(10) - var/obj/effect/temp_visual/heal/H = new /obj/effect/temp_visual/heal(get_turf(C)) - if(guardiancolor) - H.color = guardiancolor - if(C == summoner) - update_health_hud() - med_hud_set_health() - med_hud_set_status() - - if(is_deployed() && toggle == FALSE && iscarbon(target)) - if(prob(20)) - var/mob/living/carbon/D = target - D.Paralyze(25) - D.visible_message("\The [src] knocks down \the [D]!", \ - "\The [src] knocks you down!") - -/mob/living/simple_animal/hostile/guardian/slime/ToggleMode() - if(src.loc == summoner) - if(toggle) - a_intent = INTENT_HARM - speed = -1 - damage_coeff = list(BRUTE = 0.7, BURN = 0.7, TOX = 0.2, CLONE = 0.7, STAMINA = 0, OXY = 0.7) - melee_damage_lower = 15 - melee_damage_upper = 15 - to_chat(src, "Blorble... You switch to combat mode.") - toggle = FALSE - else - a_intent = INTENT_HELP - speed = 2 - damage_coeff = list(BRUTE = 1.2, BURN = 1.2, TOX = 0.7, CLONE = 1.2, STAMINA = 0, OXY = 1.2) - melee_damage_lower = 0 - melee_damage_upper = 0 - to_chat(src, "You switch to nourshing mode. Yummy.") - toggle = TRUE - else - to_chat(src, "You have to be recalled to toggle modes!") diff --git a/code/modules/mob/living/simple_animal/guardian/types/standard.dm b/code/modules/mob/living/simple_animal/guardian/types/standard.dm deleted file mode 100644 index 2528a0914717..000000000000 --- a/code/modules/mob/living/simple_animal/guardian/types/standard.dm +++ /dev/null @@ -1,36 +0,0 @@ -//Standard -/mob/living/simple_animal/hostile/guardian/punch - melee_damage_lower = 20 - melee_damage_upper = 20 - obj_damage = 80 - next_move_modifier = 0.6 //attacks 40% faster - environment_smash = ENVIRONMENT_SMASH_WALLS - playstyle_string = "As a standard type you have no special abilities, but have a high damage resistance and a powerful attack capable of smashing through walls." - magic_fluff_string = "..And draw the Assistant, faceless and generic, but never to be underestimated." - tech_fluff_string = "Boot sequence complete. Standard combat modules loaded. Holoparasite swarm online." - carp_fluff_string = "CARP CARP CARP! You caught one! It's really boring and standard. Better punch some walls to ease the tension." - miner_fluff_string = "You encounter... Adamantine, a powerful attacker." - var/battlecry = "AT" - speed = 4//unlike funny jojo man, the punch ghost is actually balanced by their low mobility - -/mob/living/simple_animal/hostile/guardian/punch/verb/Battlecry() - set name = "Set Battlecry" - set category = "Guardian" - set desc = "Choose what you shout as you punch people." - var/input = stripped_input(src,"What do you want your battlecry to be? Max length of 6 characters.", ,"", 7) - if(input) - battlecry = input - - - -/mob/living/simple_animal/hostile/guardian/punch/AttackingTarget() - . = ..() - if(isliving(target)) - say("[battlecry][battlecry][battlecry][battlecry][battlecry][battlecry][battlecry][battlecry][battlecry][battlecry]!!", ignore_spam = TRUE) - playsound(loc, src.attack_sound, 50, TRUE, TRUE) - playsound(loc, src.attack_sound, 50, TRUE, TRUE) - playsound(loc, src.attack_sound, 50, TRUE, TRUE) - playsound(loc, src.attack_sound, 50, TRUE, TRUE) - if(isanimal(target)) - var/mob/living/C = target - C.apply_damage(35, BRUTE) diff --git a/code/modules/mob/living/simple_animal/guardian/types/support.dm b/code/modules/mob/living/simple_animal/guardian/types/support.dm deleted file mode 100644 index 57f1b1892f9d..000000000000 --- a/code/modules/mob/living/simple_animal/guardian/types/support.dm +++ /dev/null @@ -1,148 +0,0 @@ -//Healer -/mob/living/simple_animal/hostile/guardian/healer - a_intent = INTENT_HARM - friendly_verb_continuous = "heals" - friendly_verb_simple = "heal" - speed = 0 - damage_coeff = list(BRUTE = 0.7, BURN = 0.7, TOX = 0.7, CLONE = 0.7, STAMINA = 0, OXY = 0.7) - melee_damage_lower = 15 - melee_damage_upper = 15 - playstyle_string = "As a support type, you may toggle your basic attacks to a healing mode. In addition, Alt-Clicking on an adjacent object or mob will warp them to your bluespace beacon after a short delay." - magic_fluff_string = "..And draw the CMO, a potent force of life... and death." - carp_fluff_string = "CARP CARP CARP! You caught a support carp. It's a kleptocarp!" - tech_fluff_string = "Boot sequence complete. Support modules active. Holoparasite swarm online." - miner_fluff_string = "You encounter... Bluespace, the master of support." - toggle_button_type = /atom/movable/screen/guardian/ToggleMode - var/obj/structure/receiving_pad/beacon - var/beacon_cooldown = 0 - var/toggle = FALSE - -/mob/living/simple_animal/hostile/guardian/healer/Initialize() - . = ..() - var/datum/atom_hud/medsensor = GLOB.huds[DATA_HUD_MEDICAL_ADVANCED] - medsensor.add_hud_to(src) - -/mob/living/simple_animal/hostile/guardian/healer/get_status_tab_items() - . = ..() - if(beacon_cooldown >= world.time) - . += "Beacon Cooldown Remaining: [DisplayTimeText(beacon_cooldown - world.time)]" - -/mob/living/simple_animal/hostile/guardian/healer/AttackingTarget() - . = ..() - if(is_deployed() && toggle && iscarbon(target)) - var/mob/living/carbon/C = target - C.adjustBruteLoss(-5) - C.adjustFireLoss(-5) - C.adjustOxyLoss(-5) - C.adjustToxLoss(-5) - var/obj/effect/temp_visual/heal/H = new /obj/effect/temp_visual/heal(get_turf(C)) - if(guardiancolor) - H.color = guardiancolor - if(C == summoner) - update_health_hud() - med_hud_set_health() - med_hud_set_status() - -/mob/living/simple_animal/hostile/guardian/healer/ToggleMode() - if(src.loc == summoner) - if(toggle) - a_intent = INTENT_HARM - speed = -2 - damage_coeff = list(BRUTE = 0.7, BURN = 0.7, TOX = 0.7, CLONE = 0.7, STAMINA = 0, OXY = 0.7) - melee_damage_lower = 5 - melee_damage_upper = 5 - next_move_modifier = 0.3///attack as fast as you can click, but your actual hits are basically tickle damage :)) - to_chat(src, "You switch to combat mode.") - toggle = FALSE - else - a_intent = INTENT_HELP - speed = 1 - damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1) - melee_damage_lower = 0 - melee_damage_upper = 0 - to_chat(src, "You switch to healing mode.") - toggle = TRUE - else - to_chat(src, "You have to be recalled to toggle modes!") - - -/mob/living/simple_animal/hostile/guardian/healer/verb/Beacon() - set name = "Place Bluespace Beacon" - set category = "Guardian" - set desc = "Mark a floor as your beacon point, allowing you to warp targets to it. Your beacon will not work at extreme distances." - - if(beacon_cooldown >= world.time) - to_chat(src, "Your power is on cooldown. You must wait five minutes between placing beacons.") - return - - var/turf/beacon_loc = get_turf(src.loc) - if(!isfloorturf(beacon_loc)) - return - - if(beacon) - beacon.disappear() - beacon = null - - beacon = new(beacon_loc, src) - - to_chat(src, "Beacon placed! You may now warp targets and objects to it, including your user, via Alt+Click.") - - beacon_cooldown = world.time + 3000 - -/obj/structure/receiving_pad - name = "bluespace receiving pad" - icon = 'icons/turf/floors.dmi' - desc = "A receiving zone for bluespace teleportations." - icon_state = "light_on_flicker-1" - light_range = MINIMUM_USEFUL_LIGHT_RANGE - density = FALSE - anchored = TRUE - layer = ABOVE_OPEN_TURF_LAYER - -/obj/structure/receiving_pad/New(loc, mob/living/simple_animal/hostile/guardian/healer/G) - . = ..() - if(G?.guardiancolor) - add_atom_colour(G.guardiancolor, FIXED_COLOUR_PRIORITY) - -/obj/structure/receiving_pad/proc/disappear() - visible_message("[src] vanishes!") - qdel(src) - -/mob/living/simple_animal/hostile/guardian/healer/AltClickOn(atom/movable/A) - if(!istype(A)) - return - if(src.loc == summoner) - to_chat(src, "You must be manifested to warp a target!") - return - if(!beacon) - to_chat(src, "You need a beacon placed to warp things!") - return - if(!Adjacent(A)) - to_chat(src, "You must be adjacent to your target!") - return - if(A.anchored) - to_chat(src, "Your target cannot be anchored!") - return - - var/turf/T = get_turf(A) - if(beacon.virtual_z() != T.virtual_z()) - to_chat(src, "The beacon is too far away to warp to!") - return - - to_chat(src, "You begin to warp [A].") - A.visible_message("[A] starts to glow faintly!", \ - "You start to faintly glow, and you feel strangely weightless!") - do_attack_animation(A) - - if(!do_after(src, 6 SECONDS, A)) //now start the channel - to_chat(src, "You need to hold still!") - return - - new /obj/effect/temp_visual/guardian/phase/out(T) - if(isliving(A)) - var/mob/living/L = A - L.flash_act() - A.visible_message("[A] disappears in a flash of light!", \ - "Your vision is obscured by a flash of light!") - do_teleport(A, beacon, 0, channel = TELEPORT_CHANNEL_BLUESPACE) - new /obj/effect/temp_visual/guardian/phase(get_turf(A)) diff --git a/code/modules/research/xenobiology/crossbreeding/mutative.dm b/code/modules/research/xenobiology/crossbreeding/mutative.dm index 6b58a7aa0c93..043e124641ab 100644 --- a/code/modules/research/xenobiology/crossbreeding/mutative.dm +++ b/code/modules/research/xenobiology/crossbreeding/mutative.dm @@ -25,8 +25,3 @@ /obj/item/slimecross/mutative/rainbow colour = "rainbow" effect_desc = "Hardens into a shard of slimy crystal. Prick yourself with it to bring forth a Slime Guardian." - -/obj/item/slimecross/mutative/rainbow/do_effect(mob/user) - user.visible_message("[src] collapses in a chromatic flash, transforming into jagged crystal!") - new /obj/item/guardiancreator/slime(get_turf(user)) - ..() diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 5bf2107a998b..e41da1eccfa5 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -10,7 +10,6 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( /obj/machinery/quantumpad, /obj/effect/mob_spawn, /obj/effect/hierophant, - /obj/structure/receiving_pad, /obj/item/warp_cube, /obj/machinery/rnd/production, //print tracking beacons, send shuttle /obj/machinery/autolathe, //same diff --git a/code/modules/spells/spell_types/pointed/mind_transfer.dm b/code/modules/spells/spell_types/pointed/mind_transfer.dm index 5b069756864d..04a91f09b5e4 100644 --- a/code/modules/spells/spell_types/pointed/mind_transfer.dm +++ b/code/modules/spells/spell_types/pointed/mind_transfer.dm @@ -34,10 +34,6 @@ if(!silent) to_chat(user, "[victim.p_their(TRUE)] mind is resisting your spell!") return FALSE - if(istype(victim, /mob/living/simple_animal/hostile/guardian)) - var/mob/living/simple_animal/hostile/guardian/stand = victim - if(stand.summoner) - victim = stand.summoner //MIND TRANSFER BEGIN var/mob/dead/observer/ghost = victim.ghostize() @@ -84,11 +80,4 @@ if(!silent) to_chat(user, "[t_He] appear[victim.p_s()] to be catatonic! Not even magic can affect [victim.p_their()] vacant mind.") return FALSE - if(istype(victim, /mob/living/simple_animal/hostile/guardian)) - var/mob/living/simple_animal/hostile/guardian/stand = victim - if(stand.summoner) - if(stand.summoner == user) - if(!silent) - to_chat(user, "Swapping minds with your own guardian would just put you back into your own head!") - return FALSE return TRUE diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index 5566c11f7575..4bfe534940f1 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -445,16 +445,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/clothing/gloves/rapid cost = 8 -/datum/uplink_item/dangerous/guardian - name = "Holoparasites" - desc = "Though capable of near sorcerous feats via use of hardlight holograms and nanomachines, they require an \ - organic host as a home base and source of fuel. Holoparasites come in various types and share damage with their host." - item = /obj/item/storage/box/syndie_kit/guardian - cost = 18 - surplus = 0 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) - restricted = TRUE - /datum/uplink_item/dangerous/machinegun name = "L6 Squad Automatic Weapon" desc = "A fully-loaded Aussec Armoury belt-fed machine gun. \ diff --git a/shiptest.dme b/shiptest.dme index 2acafb939991..86b9c524989a 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -286,7 +286,6 @@ #include "code\_onclick\hud\fullscreen.dm" #include "code\_onclick\hud\generic_dextrous.dm" #include "code\_onclick\hud\ghost.dm" -#include "code\_onclick\hud\guardian.dm" #include "code\_onclick\hud\holograms.dm" #include "code\_onclick\hud\hud.dm" #include "code\_onclick\hud\human.dm" @@ -2681,19 +2680,6 @@ #include "code\modules\mob\living\simple_animal\friendly\drone\inventory.dm" #include "code\modules\mob\living\simple_animal\friendly\drone\verbs.dm" #include "code\modules\mob\living\simple_animal\friendly\drone\visuals_icons.dm" -#include "code\modules\mob\living\simple_animal\guardian\guardian.dm" -#include "code\modules\mob\living\simple_animal\guardian\types\assassin.dm" -#include "code\modules\mob\living\simple_animal\guardian\types\charger.dm" -#include "code\modules\mob\living\simple_animal\guardian\types\dextrous.dm" -#include "code\modules\mob\living\simple_animal\guardian\types\explosive.dm" -#include "code\modules\mob\living\simple_animal\guardian\types\fire.dm" -#include "code\modules\mob\living\simple_animal\guardian\types\gravitokinetic.dm" -#include "code\modules\mob\living\simple_animal\guardian\types\lightning.dm" -#include "code\modules\mob\living\simple_animal\guardian\types\protector.dm" -#include "code\modules\mob\living\simple_animal\guardian\types\ranged.dm" -#include "code\modules\mob\living\simple_animal\guardian\types\slime.dm" -#include "code\modules\mob\living\simple_animal\guardian\types\standard.dm" -#include "code\modules\mob\living\simple_animal\guardian\types\support.dm" #include "code\modules\mob\living\simple_animal\hostile\abandoned_minebot.dm" #include "code\modules\mob\living\simple_animal\hostile\alien.dm" #include "code\modules\mob\living\simple_animal\hostile\bear.dm" From 0dddb6f0344742c441d0d12272ed1b9ac004249d Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 15 Oct 2024 07:30:32 -0500 Subject: [PATCH 30/62] Automatic changelog generation for PR #3478 [ci skip] --- html/changelogs/AutoChangeLog-pr-3478.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3478.yml diff --git a/html/changelogs/AutoChangeLog-pr-3478.yml b/html/changelogs/AutoChangeLog-pr-3478.yml new file mode 100644 index 000000000000..b909ce469d5f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3478.yml @@ -0,0 +1,4 @@ +author: Bjarl +changes: + - {rscdel: Holoparasites} +delete-after: true From 0001c066e7436582c2c1349cb8b10b7d4232031c Mon Sep 17 00:00:00 2001 From: firebudgy <153147550+firebudgy@users.noreply.github.com> Date: Tue, 15 Oct 2024 07:06:05 -0400 Subject: [PATCH 31/62] Smoking Pipe On Sprites for Vox (#3557) ## About The Pull Request Adds compatibility for smoking pipes for Vox. https://github.com/user-attachments/assets/b573f58a-8481-4f51-8c5a-e4ae24b783aa ## Why It's Good For The Game These already had sprites for wearing them while unlit, it was jarring to light your smoking pipe and have it levitate a foot away from your face. ## Changelog :cl: add: Active smoking pipe sprites for Vox. /:cl: --- icons/mob/species/vox/onmob_mask_vox.dmi | Bin 38542 -> 34172 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/species/vox/onmob_mask_vox.dmi b/icons/mob/species/vox/onmob_mask_vox.dmi index 7aa3dfb2e046a2f7eb5b1e62873eec50a82b0bfa..cbc8eed5c4ac1b27e382195d113646d233ea2211 100644 GIT binary patch literal 34172 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 z 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 literal 38542 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 Rd Date: Tue, 15 Oct 2024 07:44:39 -0500 Subject: [PATCH 32/62] Automatic changelog generation for PR #3557 [ci skip] --- html/changelogs/AutoChangeLog-pr-3557.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3557.yml diff --git a/html/changelogs/AutoChangeLog-pr-3557.yml b/html/changelogs/AutoChangeLog-pr-3557.yml new file mode 100644 index 000000000000..63c3a04a151c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3557.yml @@ -0,0 +1,4 @@ +author: firebudgy +changes: + - {rscadd: Active smoking pipe sprites for Vox.} +delete-after: true From de9fb7a03046ae4a06c6b5a2fa006a13c6521833 Mon Sep 17 00:00:00 2001 From: zimon9 <122945887+zimon9@users.noreply.github.com> Date: Tue, 15 Oct 2024 07:06:11 -0400 Subject: [PATCH 33/62] Reduces the chance for grenades to go off in your hands (#3441) ## About The Pull Request This change reduces the probability of a grenade blowing up in one's hands from 15% down to 5%. Please let me know if this probability is too low. I just chose an oddball low number to use. The check was also modified so that the dice roll is only made if a projectile hits a hand holding a grenade. ## Why It's Good For The Game It always felt a little too high of a chance to me. The probability roll happens for _each_ projectile that one gets hit with, and with how often and how rapidly one can be hit in a firefight here, the chance of it blowing up in ones hands goes from being somewhat unlikely to being more likely to happen than not. ![image](https://github.com/user-attachments/assets/4a88545b-768d-480d-b8a1-38df915e1ea2) This calculator gives the probability of the event occurring as being 68% likely, if one were shot 7 times. This is around how many shots it takes to bring someone down, on average, from my anecdotal experience. This currently has the effect of making grenades useful in only a few very specific scenarios. If the probability of this were to go down, it would encourage the use of grenades more, which I feel can enhance fights. ## Changelog :cl: balance: rebalanced the probability of a grenade going off in one's hands /:cl: --- code/game/objects/items/grenades/grenade.dm | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/grenades/grenade.dm b/code/game/objects/items/grenades/grenade.dm index f0198b7f1a0b..fb19cfe31700 100644 --- a/code/game/objects/items/grenades/grenade.dm +++ b/code/game/objects/items/grenades/grenade.dm @@ -150,7 +150,18 @@ /obj/item/grenade/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) var/obj/projectile/P = hitby - if(damage && attack_type == PROJECTILE_ATTACK && P.damage_type != STAMINA && prob(15)) + var/list/valid_hands = list(FALSE, FALSE) + + //checks if the projectile hits an arm holding a grenade + if (istype(owner.held_items[1], (/obj/item/grenade))) + if (P.def_zone == "l_arm") + valid_hands[1] = TRUE + + if (istype(owner.held_items[2], (/obj/item/grenade))) + if (P.def_zone == "r_arm") + valid_hands[2] = TRUE + + if(damage && attack_type == PROJECTILE_ATTACK && P.damage_type != STAMINA && (valid_hands[1] || valid_hands[2]) && prob(5)) //5% chance to go off owner.visible_message("[attack_text] hits [owner]'s [src], setting it off! What a shot!") var/turf/T = get_turf(src) log_game("A projectile ([hitby]) detonated a grenade held by [key_name(owner)] at [COORD(T)]") From 76e9d1221e2af8c8d7a23f0ca834bc27ba51bdf7 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 15 Oct 2024 07:57:56 -0500 Subject: [PATCH 34/62] Automatic changelog generation for PR #3441 [ci skip] --- html/changelogs/AutoChangeLog-pr-3441.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3441.yml diff --git a/html/changelogs/AutoChangeLog-pr-3441.yml b/html/changelogs/AutoChangeLog-pr-3441.yml new file mode 100644 index 000000000000..0299fb36df34 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3441.yml @@ -0,0 +1,4 @@ +author: zimon9 +changes: + - {balance: rebalanced the probability of a grenade going off in one's hands} +delete-after: true From 44534d387e17fb78626806cd8625a99c010741f8 Mon Sep 17 00:00:00 2001 From: Apogee-dev <60533805+Apogee-dev@users.noreply.github.com> Date: Tue, 15 Oct 2024 04:06:47 -0700 Subject: [PATCH 35/62] IRMG Enforcers get hardsuits (#3508) ## About The Pull Request ![vaquero](https://github.com/user-attachments/assets/1271256e-c9ea-45fd-b543-19ff8618eed6) ![valor_closet](https://github.com/user-attachments/assets/20da7bef-ce7a-4dd2-819b-b61e68d80e8e) Adds enough hardsuits for every Enforcer on the Valor and the Vaquero. Also, improves the Vaquero's dorm room layout. ## Why It's Good For The Game enforcers should probably have space armor ## Changelog :cl: balance: Valor and Vaquero have combat hardsuits for their enforcers now /:cl: --- _maps/shuttles/inteq/inteq_valor.dmm | 131 ++-- _maps/shuttles/inteq/inteq_vaquero.dmm | 801 ++++++++++++++----------- 2 files changed, 531 insertions(+), 401 deletions(-) diff --git a/_maps/shuttles/inteq/inteq_valor.dmm b/_maps/shuttles/inteq/inteq_valor.dmm index 247743c165bf..00b25f936eab 100644 --- a/_maps/shuttles/inteq/inteq_valor.dmm +++ b/_maps/shuttles/inteq/inteq_valor.dmm @@ -100,6 +100,8 @@ /obj/machinery/suit_storage_unit/inherit, /obj/effect/turf_decal/industrial/outline/yellow, /obj/machinery/light/small/directional/north, +/obj/item/clothing/suit/space/inteq, +/obj/item/clothing/head/helmet/space/inteq, /turf/open/floor/plasteel, /area/ship/crew/office) "bx" = ( @@ -663,6 +665,7 @@ /obj/item/clothing/glasses/hud/security/sunglasses/inteq, /obj/item/clothing/head/helmet/swat/inteq, /obj/item/clothing/mask/gas/sechailer, +/obj/item/radio/intercom/directional/north, /turf/open/floor/plasteel, /area/ship/crew/office) "gb" = ( @@ -746,8 +749,8 @@ "gq" = ( /obj/machinery/light_switch{ dir = 1; - pixel_y = -20; - pixel_x = -3 + pixel_x = -3; + pixel_y = -20 }, /turf/open/floor/plasteel/mono/dark, /area/ship/cargo) @@ -1042,14 +1045,32 @@ /turf/open/floor/plating, /area/ship/medical/surgery) "jN" = ( -/obj/structure/chair/office, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable{ - icon_state = "0-4" +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 }, -/obj/effect/turf_decal/corner/transparent/inteqbrown/half, -/turf/open/floor/plasteel, -/area/ship/crew/office) +/obj/effect/turf_decal/corner/opaque/yellow, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 8 + }, +/obj/machinery/airalarm/directional/east, +/obj/structure/rack, +/obj/item/storage/belt/security/webbing/inteq{ + pixel_x = 6; + pixel_y = 8 + }, +/obj/item/storage/belt/security/webbing/inteq{ + pixel_x = 8; + pixel_y = 4 + }, +/obj/item/clothing/head/helmet/inteq{ + pixel_x = -9; + pixel_y = 6 + }, +/obj/item/clothing/head/helmet/inteq{ + pixel_x = -7 + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) "jQ" = ( /obj/structure/catwalk/over/plated_catwalk, /obj/machinery/light/directional/east, @@ -1087,8 +1108,8 @@ }, /obj/machinery/light_switch{ dir = 1; - pixel_y = -20; - pixel_x = 4 + pixel_x = 4; + pixel_y = -20 }, /turf/open/floor/plasteel/patterned/ridged, /area/ship/medical) @@ -1178,22 +1199,8 @@ /obj/structure/reagent_dispensers/peppertank{ pixel_y = 28 }, -/obj/structure/rack, -/obj/item/storage/belt/security/webbing/inteq{ - pixel_x = 6; - pixel_y = 8 - }, -/obj/item/storage/belt/security/webbing/inteq{ - pixel_x = 8; - pixel_y = 4 - }, -/obj/item/clothing/head/helmet/inteq{ - pixel_x = -9; - pixel_y = 6 - }, -/obj/item/clothing/head/helmet/inteq{ - pixel_x = -7 - }, +/obj/machinery/suit_storage_unit/inherit, +/obj/item/clothing/suit/space/hardsuit/security/independent/inteq, /turf/open/floor/plasteel/dark, /area/ship/security) "kL" = ( @@ -1296,15 +1303,18 @@ /area/ship/crew/canteen) "lN" = ( /obj/structure/table, -/obj/machinery/door/window/southleft, +/obj/item/paper_bin, +/obj/structure/window/reinforced, /obj/structure/window/reinforced{ - dir = 8 + dir = 4 }, /obj/machinery/door/firedoor/border_only, /obj/machinery/door/firedoor/border_only{ dir = 1 }, /obj/effect/turf_decal/corner/transparent/inteqbrown/full, +/obj/item/folder/yellow, +/obj/item/pen, /turf/open/floor/plasteel/patterned, /area/ship/crew/office) "lW" = ( @@ -1995,9 +2005,6 @@ /area/ship/maintenance/port) "rY" = ( /obj/effect/turf_decal/corner/opaque/yellow, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 4 - }, /obj/effect/turf_decal/corner/opaque/brown{ dir = 8 }, @@ -2008,7 +2015,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, -/obj/machinery/airalarm/directional/east, /turf/open/floor/plasteel/dark, /area/ship/security) "sb" = ( @@ -2598,11 +2604,9 @@ /area/ship/medical) "xr" = ( /obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/obj/structure/window/reinforced, +/obj/machinery/door/window/southleft, /obj/structure/window/reinforced{ - dir = 4 + dir = 8 }, /obj/machinery/door/firedoor/border_only, /obj/machinery/door/firedoor/border_only{ @@ -2938,7 +2942,6 @@ dir = 1 }, /obj/effect/turf_decal/steeldecal/steel_decals_central7, -/obj/machinery/airalarm/directional/north, /obj/structure/cable{ icon_state = "4-8" }, @@ -3092,14 +3095,10 @@ /turf/template_noop, /area/template_noop) "BC" = ( -/obj/structure/filingcabinet/double, /obj/structure/sign/poster/official/help_others{ pixel_y = 32 }, -/obj/effect/turf_decal/corner/transparent/inteqbrown/border{ - dir = 1 - }, -/turf/open/floor/plasteel, +/turf/closed/wall/mineral/plastitanium, /area/ship/crew/office) "BL" = ( /obj/effect/turf_decal/corner/opaque/brown{ @@ -3592,10 +3591,11 @@ /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) "Gm" = ( +/obj/effect/turf_decal/corner/transparent/inteqbrown/half, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "0-4" }, -/obj/effect/turf_decal/corner/transparent/inteqbrown/half, +/obj/machinery/power/apc/auto_name/directional/west, /turf/open/floor/plasteel, /area/ship/crew/office) "Go" = ( @@ -4671,8 +4671,8 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, -/obj/item/radio/intercom/directional/south, /obj/effect/turf_decal/corner/transparent/inteqbrown/half, +/obj/structure/chair/office, /turf/open/floor/plasteel, /area/ship/crew/office) "Qw" = ( @@ -4754,7 +4754,26 @@ /turf/open/floor/plasteel/dark, /area/ship/medical/surgery) "Rh" = ( -/turf/closed/wall/mineral/plastitanium, +/obj/structure/sign/poster/official/safety_report{ + pixel_x = 32 + }, +/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/structure/rack, +/obj/item/storage/box/ammo/c9mm_rubber{ + pixel_x = 5; + pixel_y = 10 + }, +/obj/item/storage/box/ammo/c9mm{ + pixel_x = -2; + pixel_y = 2 + }, +/turf/open/floor/plasteel/dark, /area/ship/security) "RA" = ( /obj/item/storage/backpack/messenger/inteq, @@ -4834,6 +4853,7 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/airalarm/directional/north, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/port) "Sh" = ( @@ -5073,15 +5093,10 @@ /obj/effect/turf_decal/corner/opaque/brown{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/yellow, -/obj/structure/rack, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/obj/item/storage/box/ammo/c9mm_rubber, -/obj/item/storage/box/ammo/c9mm, /obj/machinery/light/small/directional/north, -/obj/structure/sign/poster/official/safety_report{ - pixel_x = 32 - }, +/obj/machinery/suit_storage_unit/inherit, +/obj/item/clothing/suit/space/hardsuit/security/independent/inteq, /turf/open/floor/plasteel/dark, /area/ship/security) "Vy" = ( @@ -5897,7 +5912,7 @@ SL (11,1,1) = {" Zu Rh -Rh +jN Zu uB ua @@ -5930,8 +5945,8 @@ SL (12,1,1) = {" tZ BC -jN -lN +oO +oO gh zs fN @@ -5997,7 +6012,7 @@ SL tZ mG Qo -tZ +lN An Sd HC diff --git a/_maps/shuttles/inteq/inteq_vaquero.dmm b/_maps/shuttles/inteq/inteq_vaquero.dmm index 662ce9c5e3d6..9ea8b60d9b89 100644 --- a/_maps/shuttles/inteq/inteq_vaquero.dmm +++ b/_maps/shuttles/inteq/inteq_vaquero.dmm @@ -51,12 +51,13 @@ /turf/open/floor/plasteel/dark, /area/ship/security) "bg" = ( -/obj/structure/railing{ - dir = 8 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/effect/turf_decal/box/corners{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel/stairs, +/obj/structure/weightmachine/weightlifter, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/patterned, /area/ship/cargo) "bi" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ @@ -72,6 +73,19 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/plasteel/tech, /area/ship/maintenance/starboard) +"bl" = ( +/obj/structure/closet/crate/freezer/blood, +/obj/machinery/iv_drip, +/obj/machinery/light/small/directional/south, +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 5 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 6 + }, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/medical) "bn" = ( /obj/machinery/power/smes/shuttle/precharged{ dir = 4 @@ -87,14 +101,13 @@ /turf/open/floor/engine/hull/reinforced, /area/ship/maintenance/port) "bq" = ( -/obj/effect/turf_decal/box/corners, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 - }, /obj/item/trash/energybar, +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "bt" = ( @@ -110,7 +123,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/computer/helm/viewscreen/directional/south, /turf/open/floor/plasteel/grimy, /area/ship/crew) "bz" = ( @@ -136,12 +148,15 @@ /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) "bL" = ( -/obj/structure/bed, -/obj/structure/curtain/bounty, -/obj/item/bedsheet/brown, /obj/structure/sign/poster/clip/lanchester{ pixel_y = -32 }, +/obj/machinery/light/small/directional/east, +/obj/effect/spawner/bunk_bed, +/obj/structure/curtain/bounty, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, /turf/open/floor/carpet/black, /area/ship/crew) "ce" = ( @@ -173,12 +188,17 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/dark, /area/ship/security) -"dq" = ( -/obj/effect/turf_decal/industrial/traffic{ - dir = 8 +"cH" = ( +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/effect/turf_decal/siding/thinplating/dark, +/turf/open/floor/plasteel/tech, +/area/ship/security) +"dq" = ( +/obj/effect/turf_decal/box/corners{ + dir = 4 }, /turf/open/floor/plasteel/patterned, /area/ship/cargo) @@ -268,9 +288,6 @@ /obj/item/gun/ballistic/automatic/pistol/commander/inteq{ pixel_y = -5 }, -/obj/structure/sign/poster/contraband/peacemaker{ - pixel_x = 32 - }, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/tech/grid, /area/ship/security) @@ -323,6 +340,7 @@ dir = 10 }, /obj/effect/decal/cleanable/oil/streak, +/obj/effect/turf_decal/box/corners, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "fI" = ( @@ -344,7 +362,7 @@ /area/ship/security) "fJ" = ( /turf/closed/wall/mineral/plastitanium, -/area/ship/security) +/area/ship/medical) "fV" = ( /obj/structure/catwalk/over/plated_catwalk, /obj/structure/cable{ @@ -362,6 +380,13 @@ /obj/structure/railing/corner, /turf/open/floor/plasteel/tech/grid, /area/ship/cargo) +"fZ" = ( +/obj/structure/marker_beacon{ + picked_color = "Yellow" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine/hull/reinforced, +/area/ship/external/dark) "gh" = ( /obj/machinery/photocopier, /obj/effect/turf_decal/corner/opaque/brown{ @@ -385,27 +410,11 @@ /obj/effect/turf_decal/industrial/traffic{ dir = 1 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/obj/machinery/button/shieldwallgen{ - dir = 1; - id = "vaquero_cargo"; - pixel_x = 5; - pixel_y = -19 - }, -/obj/machinery/button/door{ - dir = 1; - id = "vaquero_cargo"; - name = "Cargo Door Control"; - pixel_x = -4; - pixel_y = -20 + dir = 4 }, -/obj/effect/turf_decal/industrial/caution{ - dir = 1 +/obj/structure/cable{ + icon_state = "4-8" }, /turf/open/floor/plasteel/patterned, /area/ship/cargo) @@ -425,17 +434,9 @@ /obj/item/pickaxe/mini, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/siding/thinplating/dark, -/obj/structure/extinguisher_cabinet/directional/north, +/obj/item/radio/intercom/directional/north, /turf/open/floor/plasteel/tech, /area/ship/cargo) -"gO" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/warning, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine/hull/reinforced, -/area/ship/external/dark) "gY" = ( /obj/structure/table/reinforced, /obj/item/spacecash/bundle/c500, @@ -568,13 +569,12 @@ /turf/open/floor/plasteel/dark, /area/ship/crew/office) "if" = ( -/obj/effect/turf_decal/industrial/traffic{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel/patterned, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/machinery/airalarm/directional/east, +/obj/machinery/suit_storage_unit/inherit, +/obj/item/clothing/suit/space/inteq, +/obj/item/clothing/head/helmet/space/inteq, +/turf/open/floor/plasteel/tech, /area/ship/cargo) "iu" = ( /obj/structure/cable{ @@ -658,6 +658,9 @@ /turf/open/floor/plasteel/dark, /area/ship/security) "jg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, /turf/open/floor/carpet/black, /area/ship/crew) "jw" = ( @@ -702,12 +705,9 @@ /turf/open/floor/plasteel/dark, /area/ship/bridge) "jE" = ( -/obj/structure/bed, -/obj/structure/curtain/bounty, -/obj/item/bedsheet/brown, -/obj/machinery/light/small/directional/east, -/obj/machinery/airalarm/directional/north, /obj/effect/decal/cleanable/dirt/dust, +/obj/effect/spawner/bunk_bed, +/obj/structure/curtain/bounty, /turf/open/floor/carpet/black, /area/ship/crew) "jI" = ( @@ -814,7 +814,7 @@ /obj/item/clothing/suit/space/inteq, /obj/item/clothing/head/helmet/space/inteq, /obj/effect/turf_decal/siding/thinplating/dark, -/obj/item/radio/intercom/directional/north, +/obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/plasteel/tech, /area/ship/cargo) "lm" = ( @@ -862,16 +862,23 @@ /turf/open/floor/plasteel/tech, /area/ship/maintenance/starboard) "lL" = ( -/obj/structure/closet/crate/freezer/blood, -/obj/machinery/iv_drip, -/obj/machinery/light/small/directional/south, -/obj/item/radio/intercom/directional/east, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/obj/item/storage/backpack/duffelbag/med/surgery, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -20; + pixel_y = 10 + }, +/obj/machinery/firealarm/directional/west, /obj/effect/turf_decal/steeldecal/steel_decals10{ dir = 5 }, /obj/effect/turf_decal/steeldecal/steel_decals10{ dir = 6 }, +/obj/structure/bed, /turf/open/floor/plasteel/patterned/brushed, /area/ship/medical) "lU" = ( @@ -934,7 +941,6 @@ /obj/machinery/suit_storage_unit/inherit, /obj/item/clothing/suit/space/inteq, /obj/item/clothing/head/helmet/space/inteq, -/obj/machinery/airalarm/directional/east, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/siding/thinplating/dark, /turf/open/floor/plasteel/tech, @@ -957,10 +963,22 @@ /obj/effect/turf_decal/trimline/opaque/yellow/warning{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, /turf/open/floor/engine/hull/reinforced, /area/ship/external/dark) "nm" = ( +/obj/docking_port/mobile{ + dir = 2; + launch_status = 0; + port_direction = 8; + preferred_direction = 4 + }, +/obj/machinery/porta_turret/ship/inteq{ + dir = 5; + id = "vaquero_grid" + }, /turf/closed/wall/mineral/plastitanium, /area/ship/medical) "ox" = ( @@ -1073,12 +1091,21 @@ /turf/closed/wall/mineral/plastitanium, /area/ship/crew/office) "qE" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 +/obj/effect/turf_decal/industrial/warning/fulltile, +/obj/structure/cable{ + icon_state = "0-8" }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine/hull/reinforced, -/area/ship/external/dark) +/obj/machinery/power/shieldwallgen/atmos{ + anchored = 1; + id = "vaquero_cargo"; + locked = 1 + }, +/obj/machinery/door/poddoor{ + dir = 4; + id = "vaquero_cargo" + }, +/turf/open/floor/engine/hull/reinforced/interior, +/area/ship/cargo) "qQ" = ( /obj/structure/cable{ icon_state = "1-2" @@ -1130,6 +1157,11 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/machinery/light/small/directional/east, /obj/item/trash/chips, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 20; + pixel_y = -10 + }, /turf/open/floor/plasteel/grimy, /area/ship/crew) "rD" = ( @@ -1143,6 +1175,13 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/carpet/orange, /area/ship/bridge) +"rP" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/warning{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine/hull/reinforced, +/area/ship/external/dark) "sm" = ( /obj/structure/cable{ icon_state = "1-2" @@ -1270,11 +1309,29 @@ }, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/security) +"vs" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/effect/turf_decal/box/corners, +/obj/structure/closet/crate, +/obj/item/stack/sheet/glass/twenty, +/obj/item/stack/sheet/metal/twenty, +/turf/open/floor/plasteel/patterned, +/area/ship/cargo) +"vw" = ( +/obj/structure/marker_beacon{ + picked_color = "Yellow" + }, +/turf/open/floor/engine/hull/reinforced, +/area/ship/external/dark) "vN" = ( /turf/open/floor/plasteel/patterned, /area/ship/cargo) "vT" = ( /obj/effect/turf_decal/trimline/opaque/yellow/warning, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/engine/hull/reinforced, /area/ship/external/dark) "vU" = ( @@ -1307,20 +1364,17 @@ /turf/template_noop, /area/template_noop) "wy" = ( -/obj/effect/turf_decal/box/corners, -/obj/structure/closet/crate, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/obj/item/stack/sheet/metal/twenty, -/obj/item/stack/sheet/glass/twenty, +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "wI" = ( -/obj/effect/turf_decal/box/corners{ - dir = 4 - }, /obj/structure/weightmachine/weightlifter, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "wU" = ( @@ -1485,27 +1539,23 @@ /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "zr" = ( -/obj/effect/turf_decal/industrial/traffic{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 + dir = 8 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 + dir = 5 }, -/obj/machinery/light/directional/east, +/obj/effect/turf_decal/box/corners, /turf/open/floor/plasteel/patterned, /area/ship/cargo) "zG" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/warning{ - dir = 1 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 +/obj/effect/turf_decal/industrial/warning/fulltile, +/obj/machinery/door/poddoor{ + dir = 4; + id = "vaquero_cargo" }, -/turf/open/floor/engine/hull/reinforced, -/area/ship/external/dark) +/turf/open/floor/engine/hull/reinforced/interior, +/area/ship/cargo) "zM" = ( /obj/machinery/power/terminal{ dir = 8 @@ -1586,13 +1636,12 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 }, -/obj/machinery/newscaster/directional/south, /turf/open/floor/plasteel/grimy, /area/ship/crew) "Am" = ( @@ -1666,22 +1715,33 @@ /turf/open/floor/plasteel/tech, /area/ship/maintenance/port) "Bj" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/turf/open/floor/engine/hull/reinforced, -/area/ship/external/dark) -"Bl" = ( +/obj/effect/turf_decal/industrial/warning/fulltile, /obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/corner/opaque/yellow, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 8 + icon_state = "0-8" }, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/plasteel/dark, -/area/ship/security) +/obj/machinery/power/shieldwallgen/atmos{ + anchored = 1; + dir = 1; + id = "vaquero_cargo"; + locked = 1 + }, +/obj/machinery/door/poddoor{ + dir = 4; + id = "vaquero_cargo" + }, +/turf/open/floor/engine/hull/reinforced/interior, +/area/ship/cargo) +"Bl" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/corner/opaque/yellow, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 8 + }, +/obj/machinery/newscaster/directional/south, +/turf/open/floor/plasteel/dark, +/area/ship/security) "Bu" = ( /obj/structure/closet/wall/directional/north{ icon_door = "grey_wall" @@ -1756,6 +1816,19 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/plasteel/showroomfloor, /area/ship/crew/toilet) +"Ch" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/patterned, +/area/ship/cargo) "Ci" = ( /obj/structure/filingcabinet/chestdrawer, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, @@ -1771,12 +1844,13 @@ /turf/open/floor/plasteel/dark, /area/ship/security) "Cl" = ( -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/machinery/door/poddoor{ - dir = 4; - id = "vaquero_cargo" +/obj/effect/turf_decal/industrial/traffic{ + dir = 8 }, -/turf/open/floor/engine/hull/reinforced/interior, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/patterned, /area/ship/cargo) "Cq" = ( /turf/closed/wall/mineral/plastitanium, @@ -1874,7 +1948,6 @@ }, /obj/effect/turf_decal/siding/thinplating/dark, /obj/machinery/firealarm/directional/south, -/obj/item/radio/intercom/directional/east, /turf/open/floor/plasteel/tech, /area/ship/security) "Dh" = ( @@ -1953,33 +2026,21 @@ /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) "Ex" = ( +/obj/structure/catwalk/over/plated_catwalk, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/door/airlock/medical/glass{ - dir = 4; - name = "Infirmary" - }, -/obj/effect/turf_decal/steeldecal/steel_decals10{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/obj/effect/turf_decal/steeldecal/steel_decals10{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 }, -/obj/machinery/door/firedoor/border_only{ +/obj/structure/railing/corner{ dir = 8 }, -/turf/open/floor/plasteel/tech, -/area/ship/medical) +/turf/open/floor/plasteel/tech/grid, +/area/ship/cargo) "EB" = ( /obj/machinery/door/window/northleft{ dir = 8; @@ -2071,51 +2132,31 @@ /obj/machinery/computer/helm/viewscreen/directional/south, /turf/open/floor/plasteel/dark, /area/ship/crew/office) +"FO" = ( +/turf/closed/wall/mineral/plastitanium, +/area/ship/security) "Gq" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/crew) "GB" = ( -/obj/machinery/door/airlock{ - name = "Dormitory" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/steeldecal/steel_decals10{ - dir = 5 - }, -/obj/effect/turf_decal/steeldecal/steel_decals10{ - dir = 6 +/obj/structure/table, +/obj/item/flashlight/lamp/green, +/obj/machinery/newscaster/directional/west, +/obj/structure/window/reinforced{ + dir = 1 }, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/carpet/black, /area/ship/crew) "GI" = ( -/obj/structure/weightmachine/weightlifter, /obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/box/corners{ + dir = 4 + }, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "GQ" = ( -/obj/item/clothing/under/syndicate/inteq, -/obj/item/clothing/under/syndicate/inteq, -/obj/item/clothing/under/syndicate/inteq, -/obj/item/clothing/under/syndicate/inteq/skirt, -/obj/item/clothing/under/syndicate/inteq/skirt, -/obj/item/clothing/under/syndicate/inteq/skirt, -/obj/item/clothing/shoes/combat, -/obj/item/clothing/shoes/combat, -/obj/item/clothing/shoes/combat, -/obj/item/clothing/shoes/sneakers/black, -/obj/item/clothing/shoes/sneakers/black, -/obj/item/clothing/shoes/sneakers/black, -/obj/structure/closet/wall/directional/north{ - icon_door = "orange_wall"; - name = "uniform closet" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/carpet/black, /area/ship/crew) "Ha" = ( @@ -2179,36 +2220,15 @@ /turf/open/floor/plasteel/tech/grid, /area/ship/security) "HN" = ( -/obj/structure/closet/secure_closet/wall/directional/north{ - icon_door = "med_wall"; - name = "medical locker"; - req_access_txt = "5" - }, -/obj/item/storage/firstaid/regular{ - pixel_x = 6; - pixel_y = 3 - }, -/obj/item/storage/firstaid/toxin{ - pixel_x = 2; - pixel_y = 1 - }, -/obj/item/storage/firstaid/fire{ - pixel_x = -2; - pixel_y = -1 - }, -/obj/item/storage/firstaid/advanced{ - pixel_x = -6; - pixel_y = -3 - }, -/obj/structure/sink{ - dir = 8; - pixel_x = 12 +/obj/structure/cable{ + icon_state = "0-8" }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ +/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, -/obj/structure/sign/poster/official/cleanliness{ - pixel_x = 32 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 }, /obj/effect/turf_decal/siding/thinplating/dark{ dir = 1 @@ -2230,7 +2250,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /turf/open/floor/plasteel/grimy, /area/ship/crew) "In" = ( @@ -2425,23 +2445,17 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/box/corners, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "LW" = ( -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/power/shieldwallgen/atmos{ - anchored = 1; - id = "vaquero_cargo"; - locked = 1 +/obj/effect/turf_decal/industrial/traffic{ + dir = 8 }, -/obj/machinery/door/poddoor{ - dir = 4; - id = "vaquero_cargo" +/obj/structure/cable{ + icon_state = "2-4" }, -/turf/open/floor/engine/hull/reinforced/interior, +/turf/open/floor/plasteel/patterned, /area/ship/cargo) "Me" = ( /obj/structure/railing{ @@ -2521,12 +2535,19 @@ /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) "NO" = ( -/obj/machinery/porta_turret/ship/inteq{ - dir = 6; - id = "vaquero_grid" +/obj/structure/railing, +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/security) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/plasteel/tech/grid, +/area/ship/cargo) "NR" = ( /obj/structure/cable{ icon_state = "1-8" @@ -2642,21 +2663,20 @@ /turf/open/floor/plasteel/dark, /area/ship/crew/office) "Pn" = ( -/obj/effect/turf_decal/industrial/warning/fulltile, +/obj/effect/turf_decal/industrial/traffic/corner{ + dir = 1 + }, /obj/structure/cable{ - icon_state = "0-8" + icon_state = "1-8" }, -/obj/machinery/power/shieldwallgen/atmos{ - anchored = 1; - dir = 1; - id = "vaquero_cargo"; - locked = 1 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/machinery/door/poddoor{ - dir = 4; - id = "vaquero_cargo" +/obj/structure/sign/warning/incident{ + pixel_y = -30 }, -/turf/open/floor/engine/hull/reinforced/interior, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned, /area/ship/cargo) "Pp" = ( /obj/machinery/power/smes/engineering, @@ -2672,23 +2692,40 @@ /turf/open/floor/plasteel/dark, /area/ship/crew/office) "PD" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 +/obj/structure/closet/secure_closet/wall/directional/north{ + icon_door = "med_wall"; + name = "medical locker"; + req_access_txt = "5" }, -/obj/item/storage/backpack/duffelbag/med/surgery, -/obj/machinery/light_switch{ - dir = 4; - pixel_x = -20; - pixel_y = 10 +/obj/item/storage/firstaid/regular{ + pixel_x = 6; + pixel_y = 3 }, -/obj/machinery/firealarm/directional/west, -/obj/effect/turf_decal/steeldecal/steel_decals10{ - dir = 5 +/obj/item/storage/firstaid/toxin{ + pixel_x = 2; + pixel_y = 1 }, -/obj/effect/turf_decal/steeldecal/steel_decals10{ - dir = 6 +/obj/item/storage/firstaid/fire{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/item/storage/firstaid/advanced{ + pixel_x = -6; + pixel_y = -3 + }, +/obj/structure/sink{ + dir = 8; + pixel_x = 12 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/obj/structure/sign/poster/official/cleanliness{ + pixel_x = 32 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 }, -/obj/structure/bed, /turf/open/floor/plasteel/patterned/brushed, /area/ship/medical) "Qy" = ( @@ -2791,26 +2828,45 @@ /turf/open/floor/plasteel/dark, /area/ship/crew/office) "RU" = ( -/obj/structure/dresser, -/obj/machinery/firealarm/directional/west, /obj/item/radio/intercom/directional/south, /obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/small/directional/west, +/obj/structure/closet/wardrobe/orange{ + name = "uniform wardrobe"; + populate = 0 + }, +/obj/item/storage/backpack/messenger/inteq, +/obj/item/storage/backpack/messenger/inteq, +/obj/item/storage/backpack/messenger/inteq, +/obj/item/clothing/head/beret/sec/inteq, +/obj/item/clothing/head/beret/sec/inteq, +/obj/item/clothing/head/beret/sec/inteq, +/obj/item/clothing/head/soft/inteq, +/obj/item/clothing/head/soft/inteq, +/obj/item/clothing/head/soft/inteq, +/obj/item/clothing/suit/hooded/wintercoat/security/inteq, +/obj/item/clothing/suit/hooded/wintercoat/security/inteq, +/obj/item/clothing/suit/hooded/wintercoat/security/inteq, +/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt, +/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt, +/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, /turf/open/floor/carpet/black, /area/ship/crew) "RX" = ( /obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/structure/railing/corner{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, +/obj/structure/railing, /turf/open/floor/plasteel/tech/grid, /area/ship/cargo) "Sc" = ( @@ -2830,6 +2886,9 @@ /area/ship/hallway/central) "Tc" = ( /obj/structure/ore_box, +/obj/effect/turf_decal/box/corners{ + dir = 4 + }, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "Ti" = ( @@ -2843,11 +2902,9 @@ /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) "Tn" = ( -/obj/machinery/suit_storage_unit/inherit, -/obj/item/clothing/suit/space/inteq, -/obj/item/clothing/head/helmet/space/inteq, /obj/machinery/light/directional/north, /obj/effect/turf_decal/siding/thinplating/dark, +/obj/structure/rack, /turf/open/floor/plasteel/tech, /area/ship/cargo) "TC" = ( @@ -2859,8 +2916,8 @@ }, /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/turretid/ship{ - pixel_y = 26; - id = "vaquero_grid" + id = "vaquero_grid"; + pixel_y = 26 }, /turf/open/floor/plasteel/dark, /area/ship/bridge) @@ -2905,62 +2962,58 @@ /turf/open/floor/plasteel/telecomms_floor, /area/ship/bridge) "TX" = ( -/obj/item/storage/backpack/messenger/inteq, -/obj/item/storage/backpack/messenger/inteq, -/obj/item/storage/backpack/messenger/inteq, -/obj/item/clothing/head/beret/sec/inteq, -/obj/item/clothing/head/beret/sec/inteq, -/obj/item/clothing/head/beret/sec/inteq, -/obj/item/clothing/head/soft/inteq, -/obj/item/clothing/head/soft/inteq, -/obj/item/clothing/head/soft/inteq, -/obj/structure/closet/wall/directional/north{ - icon_door = "orange_wall"; - name = "uniform closet" - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 8 - }, -/obj/item/clothing/suit/hooded/wintercoat/security/inteq, -/obj/item/clothing/suit/hooded/wintercoat/security/inteq, -/obj/item/clothing/suit/hooded/wintercoat/security/inteq, -/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt, -/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt, -/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt, /turf/open/floor/carpet/black, /area/ship/crew) "Uf" = ( -/obj/structure/table, -/obj/item/flashlight/lamp/green, /obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, /turf/open/floor/carpet/black, /area/ship/crew) "Ul" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/bridge) "Ur" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 +/obj/structure/closet/wardrobe/orange{ + name = "uniform wardrobe"; + populate = 0 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 +/obj/item/clothing/under/syndicate/inteq, +/obj/item/clothing/under/syndicate/inteq, +/obj/item/clothing/under/syndicate/inteq, +/obj/item/clothing/under/syndicate/inteq/skirt, +/obj/item/clothing/under/syndicate/inteq/skirt, +/obj/item/clothing/under/syndicate/inteq/skirt, +/obj/item/clothing/shoes/combat, +/obj/item/clothing/shoes/combat, +/obj/item/clothing/shoes/combat, +/obj/item/clothing/shoes/sneakers/black, +/obj/item/clothing/shoes/sneakers/black, +/obj/item/clothing/shoes/sneakers/black, +/turf/open/floor/carpet/black, +/area/ship/crew) +"Uy" = ( +/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/dresser{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 }, -/obj/machinery/light/small/directional/west, /turf/open/floor/carpet/black, /area/ship/crew) "UO" = ( -/obj/docking_port/mobile{ - dir = 2; - launch_status = 0; - port_direction = 8; - preferred_direction = 4 - }, -/obj/machinery/porta_turret/ship/inteq{ - dir = 5; - id = "vaquero_grid" +/obj/structure/railing{ + dir = 8 }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/medical) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/stairs, +/area/ship/cargo) "UV" = ( /obj/machinery/door/airlock/public/glass{ dir = 4; @@ -3042,13 +3095,24 @@ /obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) +"VZ" = ( +/obj/machinery/porta_turret/ship/inteq{ + dir = 6; + id = "vaquero_grid" + }, +/turf/closed/wall/mineral/plastitanium, +/area/ship/security) "Wd" = ( -/obj/structure/marker_beacon{ - picked_color = "Yellow" +/obj/effect/turf_decal/industrial/warning{ + dir = 8 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/engine/hull/reinforced, /area/ship/external/dark) +"Wl" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/warning, +/turf/open/floor/engine/hull/reinforced, +/area/ship/external/dark) "WH" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/on{ name = "exhaust injector" @@ -3057,9 +3121,6 @@ /turf/open/floor/engine/hull/reinforced, /area/ship/external/dark) "WM" = ( -/obj/effect/turf_decal/box/corners{ - dir = 4 - }, /obj/structure/closet/crate, /obj/item/target/syndicate{ pixel_x = -5; @@ -3076,6 +3137,9 @@ pixel_y = 5 }, /obj/item/clothing/ears/earmuffs, +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "Xb" = ( @@ -3110,26 +3174,38 @@ /turf/open/floor/plasteel/dark, /area/ship/crew/office) "Xi" = ( -/obj/structure/marker_beacon{ - picked_color = "Yellow" +/obj/effect/turf_decal/industrial/warning{ + dir = 8 }, /turf/open/floor/engine/hull/reinforced, /area/ship/external/dark) "Xo" = ( /obj/structure/cable{ - icon_state = "0-8" + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/power/apc/auto_name/directional/north, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 +/obj/machinery/door/airlock/medical/glass{ + dir = 4; + name = "Infirmary" }, -/obj/effect/turf_decal/siding/thinplating/dark{ +/obj/effect/turf_decal/steeldecal/steel_decals10{ dir = 1 }, -/turf/open/floor/plasteel/patterned/brushed, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, /area/ship/medical) "XD" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, @@ -3154,6 +3230,21 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/ship/maintenance/port) +"XL" = ( +/obj/structure/sign/poster/contraband/peacemaker{ + pixel_x = 32 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/yellow/line{ + dir = 1 + }, +/obj/machinery/suit_storage_unit/inherit, +/obj/item/clothing/suit/space/hardsuit/security/independent/inteq, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/tech/grid, +/area/ship/security) "XO" = ( /obj/structure/closet/secure_closet/freezer{ anchored = 1; @@ -3248,19 +3339,31 @@ /turf/open/floor/plasteel/dark, /area/ship/crew/office) "Zh" = ( -/obj/effect/turf_decal/industrial/traffic/corner{ +/obj/effect/turf_decal/industrial/traffic{ dir = 1 }, -/obj/structure/cable{ - icon_state = "1-8" - }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/sign/warning/incident{ - pixel_y = -30 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/machinery/button/shieldwallgen{ + dir = 1; + id = "vaquero_cargo"; + pixel_x = 5; + pixel_y = -19 + }, +/obj/machinery/button/door{ + dir = 1; + id = "vaquero_cargo"; + name = "Cargo Door Control"; + pixel_x = -4; + pixel_y = -20 + }, +/obj/effect/turf_decal/industrial/caution{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/patterned, /area/ship/cargo) "Zi" = ( @@ -3347,14 +3450,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/light_switch{ - dir = 1; - pixel_x = 5; - pixel_y = -20 - }, -/obj/structure/extinguisher_cabinet/directional/south{ - pixel_x = -6 - }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/grimy, /area/ship/crew) @@ -3656,7 +3751,7 @@ VI Ul VD Ag -Gq +GQ GQ Uf LB @@ -3676,7 +3771,7 @@ jB Ul sS bu -Gq +TX TX jg LB @@ -3696,7 +3791,7 @@ TQ Ul rA ZA -Gq +Uy jE bL Gq @@ -3786,7 +3881,7 @@ ww ww QJ kW -mR +NO wI bq vN @@ -3809,9 +3904,9 @@ mE RX bg zr -if -dq +vN dq +vs Zh te Ci @@ -3824,11 +3919,11 @@ ww (23,1,1) = {" ww ww -nm -lo +Eh +if Ex -lo -lo +UO +Ch LW Cl Cl @@ -3837,27 +3932,27 @@ te te OK te -fJ +te ww ww "} (24,1,1) = {" ww ww -ww +fJ lo Xo -PD +lo lo qE zG -gO +zG Bj te Hw fI te -ww +FO ww ww "} @@ -3885,7 +3980,27 @@ ww ww ww ww -UO +lo +PD +bl +lo +fZ +rP +Wl +vw +te +XL +cH +te +ww +ww +ww +"} +(27,1,1) = {" +ww +ww +ww +nm lo lo lo @@ -3896,7 +4011,7 @@ ww te te te -NO +VZ ww ww ww From c7bd3d430960e4f9de47a81098416a19fc27e525 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 15 Oct 2024 08:35:58 -0500 Subject: [PATCH 36/62] Automatic changelog generation for PR #3508 [ci skip] --- html/changelogs/AutoChangeLog-pr-3508.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3508.yml diff --git a/html/changelogs/AutoChangeLog-pr-3508.yml b/html/changelogs/AutoChangeLog-pr-3508.yml new file mode 100644 index 000000000000..84fc1ea2deca --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3508.yml @@ -0,0 +1,4 @@ +author: Apogee-dev +changes: + - {balance: Valor and Vaquero have combat hardsuits for their enforcers now} +delete-after: true From a87f5da1d73e2a6cd9aa800b9019772cb2bcf82c Mon Sep 17 00:00:00 2001 From: Sadhorizon <108196626+Sadhorizon@users.noreply.github.com> Date: Tue, 15 Oct 2024 13:08:17 +0200 Subject: [PATCH 37/62] Minor Pubby ruin fix. (#3541) ## About The Pull Request This airlock had a turf passthrough under it. Acid spawning randomly is NOT fun. ## Why It's Good For The Game Fixing oversights good. ## Changelog :cl: fix: Pubby ruin can no longer randomly have acid in airlocks. /:cl: --- .../RandomRuins/SandRuins/whitesands_surface_pubbyslopcrash.dmm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_maps/RandomRuins/SandRuins/whitesands_surface_pubbyslopcrash.dmm b/_maps/RandomRuins/SandRuins/whitesands_surface_pubbyslopcrash.dmm index 397dff3689ee..6906e1dd2bed 100644 --- a/_maps/RandomRuins/SandRuins/whitesands_surface_pubbyslopcrash.dmm +++ b/_maps/RandomRuins/SandRuins/whitesands_surface_pubbyslopcrash.dmm @@ -1447,7 +1447,7 @@ /obj/machinery/door/airlock/hatch{ welded = 1 }, -/turf/template_noop, +/turf/open/floor/plating, /area/ruin/whitesands/pubbycrash/split) "ET" = ( /obj/structure/cable/yellow{ From f691adbda9aaea8ea9bfa48b0d7bcd5830ab098d Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 15 Oct 2024 08:51:19 -0500 Subject: [PATCH 38/62] Automatic changelog generation for PR #3541 [ci skip] --- html/changelogs/AutoChangeLog-pr-3541.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3541.yml diff --git a/html/changelogs/AutoChangeLog-pr-3541.yml b/html/changelogs/AutoChangeLog-pr-3541.yml new file mode 100644 index 000000000000..4bc25ce2336d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3541.yml @@ -0,0 +1,4 @@ +author: Sadhorizon +changes: + - {bugfix: Pubby ruin can no longer randomly have acid in airlocks.} +delete-after: true From 1d06229071ac6981760d363119c8e0d439bf4846 Mon Sep 17 00:00:00 2001 From: Sadhorizon <108196626+Sadhorizon@users.noreply.github.com> Date: Tue, 15 Oct 2024 13:08:31 +0200 Subject: [PATCH 39/62] Removes some cruft from sheet construction - mainly, job statues. (#3539) ## About The Pull Request Removes: - cardborg suit - It feels like it doesn't *exactly* fit the setting. Can revert though. - Karl Marx bust. - all the job statues - the jobs no longer exist in the same sense as before - human/gondola/monkey skinsuits - I don't imagine parading in monkey masks as fitting the setting I'm actually removing all the statues listed above completely from the code. ## Why It's Good For The Game That's the man alright. ![obraz](https://github.com/user-attachments/assets/55eb3760-da83-4c94-9d5f-11d91035b339) ## Changelog :cl: del: Removed Karl Marx from the game. del: Removed all the job statues. del: Cardborg suit, human, gondola and monkey skinsuits are no longer craftable. /:cl: --- .../BeachRuins/beach_ocean_town.dmm | 6 +- .../JungleRuins/jungle_cavecrew.dmm | 4 +- .../LavaRuins/lavaland_crashed_starwalker.dmm | 2 - .../shuttles/nanotrasen/nanotrasen_mimir.dmm | 8 +- .../game/objects/items/stacks/sheets/glass.dm | 2 +- .../objects/items/stacks/sheets/leather.dm | 26 --- .../objects/items/stacks/sheets/mineral.dm | 16 -- .../stacks/sheets/recipes/recipes_metal.dm | 2 +- .../items/stacks/sheets/sheet_types.dm | 3 - code/game/objects/structures/statues.dm | 183 ------------------ icons/obj/statue.dmi | Bin 29063 -> 12202 bytes 11 files changed, 8 insertions(+), 244 deletions(-) diff --git a/_maps/RandomRuins/BeachRuins/beach_ocean_town.dmm b/_maps/RandomRuins/BeachRuins/beach_ocean_town.dmm index d1a3ff05cf04..312e11abe0f4 100644 --- a/_maps/RandomRuins/BeachRuins/beach_ocean_town.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_ocean_town.dmm @@ -1698,10 +1698,6 @@ }, /turf/open/floor/plasteel, /area/ruin/beach/oceantown/shop) -"ww" = ( -/obj/structure/statue/sandstone/assistant, -/turf/open/floor/plating/asteroid/sand/lit, -/area/overmap_encounter/planetoid/beachplanet/explored) "wF" = ( /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/brflowers, @@ -7687,7 +7683,7 @@ sa sa Ud sa -ww +sa sa Ud sa diff --git a/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm b/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm index d40ca2c82b27..557a50d9a11e 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm @@ -192,7 +192,9 @@ /area/overmap_encounter/planetoid/jungle/explored) "bU" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/statue/sandstone/assistant, +/obj/item/kirbyplants{ + icon_state = "plant-10" + }, /obj/machinery/light_switch{ pixel_y = 21; pixel_x = -10 diff --git a/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm b/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm index 8f3921ed0520..336588e2d807 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm @@ -2024,7 +2024,6 @@ /turf/open/floor/engine/hull/interior, /area/overmap_encounter/planetoid/lava/explored) "Hl" = ( -/obj/structure/statue/sandstone/assistant, /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/contraband/random{ pixel_y = -32 @@ -2380,7 +2379,6 @@ /turf/open/floor/plasteel/dark, /area/ruin/unpowered/crashed_starwalker) "Mk" = ( -/obj/structure/statue/sandstone/assistant, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /turf/open/floor/pod/light, diff --git a/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm b/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm index 7791494023f4..f749f60f7e52 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm @@ -8222,10 +8222,6 @@ }, /turf/open/floor/plasteel, /area/ship/security/prison) -"Wi" = ( -/obj/structure/statue/sandstone/assistant, -/turf/open/floor/plating, -/area/ship/maintenance/fore) "Wj" = ( /obj/effect/decal/cleanable/food/salt, /obj/effect/turf_decal/siding/wideplating/light, @@ -10035,7 +10031,7 @@ rc bb yI yI -Wi +yI CP nK jY @@ -10115,7 +10111,7 @@ rW bb yI yI -Wi +yI CP nK jY diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 23a8c8d5e5f0..08dd06b690d5 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -143,7 +143,7 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \ null, \ new/datum/stack_recipe("directional reinforced window", /obj/structure/window/reinforced/unanchored, time = 0, on_floor = TRUE, window_checks = TRUE), \ new/datum/stack_recipe("fulltile reinforced window", /obj/structure/window/reinforced/fulltile/unanchored, 2, time = 0, on_floor = TRUE, window_checks = TRUE), \ - new/datum/stack_recipe(" reinforced glass tile", /obj/item/stack/tile/glass/reinforced, 1, 4, 20), \ + new/datum/stack_recipe("reinforced glass tile", /obj/item/stack/tile/glass/reinforced, 1, 4, 20), \ new/datum/stack_recipe("glass shard", /obj/item/shard, 1) \ )) diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm index 75c863bee5b6..5f4ede1dbe14 100644 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ b/code/game/objects/items/stacks/sheets/leather.dm @@ -11,14 +11,6 @@ singular_name = "human skin piece" novariants = FALSE -GLOBAL_LIST_INIT(human_recipes, list( \ - new/datum/stack_recipe("bloated human costume", /obj/item/clothing/suit/hooded/bloated_human, 5), \ - )) - -/obj/item/stack/sheet/animalhide/human/get_main_recipes() - . = ..() - . += GLOB.human_recipes - /obj/item/stack/sheet/animalhide/generic name = "skin" desc = "A piece of skin." @@ -32,12 +24,6 @@ GLOBAL_LIST_INIT(human_recipes, list( \ icon_state = "sheet-corgi" item_state = "sheet-corgi" - -GLOBAL_LIST_INIT(gondola_recipes, list ( \ - new/datum/stack_recipe("gondola mask", /obj/item/clothing/mask/gondola, 1), \ - new/datum/stack_recipe("gondola suit", /obj/item/clothing/under/costume/gondola, 2), \ - )) - /obj/item/stack/sheet/animalhide/mothroach name = "mothroach hide" desc = "A thin layer of mothroach hide." @@ -53,10 +39,6 @@ GLOBAL_LIST_INIT(gondola_recipes, list ( \ icon_state = "sheet-gondola" item_state = "sheet-gondola" -/obj/item/stack/sheet/animalhide/gondola/get_main_recipes() - . = ..() - . += GLOB.gondola_recipes - /obj/item/stack/sheet/animalhide/cat name = "cat hide" desc = "The by-product of cat farming." @@ -71,14 +53,6 @@ GLOBAL_LIST_INIT(gondola_recipes, list ( \ icon_state = "sheet-monkey" item_state = "sheet-monkey" -GLOBAL_LIST_INIT(monkey_recipes, list ( \ - new/datum/stack_recipe("monkey mask", /obj/item/clothing/mask/gas/monkeymask, 1), \ - )) - -/obj/item/stack/sheet/animalhide/monkey/get_main_recipes() - . = ..() - . += GLOB.monkey_recipes - /obj/item/stack/sheet/animalhide/lizard name = "lizard skin" desc = "Sssssss..." diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 560031fa03da..833360f52fa8 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -26,7 +26,6 @@ Mineral Sheets GLOBAL_LIST_INIT(sandstone_recipes, list ( \ new/datum/stack_recipe("pile of dirt", /obj/machinery/hydroponics/soil, 3, time = 10, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("sandstone door", /obj/structure/mineral_door/sandstone, 10, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("Assistant Statue", /obj/structure/statue/sandstone/assistant, 5, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("Breakdown into sand", /obj/item/stack/ore/glass, 1, one_per_turf = 0, on_floor = 1) \ )) @@ -108,9 +107,6 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \ GLOBAL_LIST_INIT(diamond_recipes, list ( \ new/datum/stack_recipe("diamond door", /obj/structure/mineral_door/transparent/diamond, 10, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("diamond tile", /obj/item/stack/tile/mineral/diamond, 1, 4, 20), \ - new/datum/stack_recipe("Captain Statue", /obj/structure/statue/diamond/captain, 5, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("AI Hologram Statue", /obj/structure/statue/diamond/ai1, 5, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("AI Core Statue", /obj/structure/statue/diamond/ai2, 5, one_per_turf = 1, on_floor = 1), \ )) /obj/item/stack/sheet/mineral/diamond/get_main_recipes() @@ -146,7 +142,6 @@ GLOBAL_LIST_INIT(uranium_recipes, list ( \ new/datum/stack_recipe("uranium door", /obj/structure/mineral_door/uranium, 10, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("uranium tile", /obj/item/stack/tile/mineral/uranium, 1, 4, 20), \ new/datum/stack_recipe("Nuke Statue", /obj/structure/statue/uranium/nuke, 5, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("Engineer Statue", /obj/structure/statue/uranium/eng, 5, one_per_turf = 1, on_floor = 1), \ )) /obj/item/stack/sheet/mineral/uranium/get_main_recipes() @@ -186,7 +181,6 @@ GLOBAL_LIST_INIT(uranium_recipes, list ( \ GLOBAL_LIST_INIT(plasma_recipes, list ( \ new/datum/stack_recipe("plasma door", /obj/structure/mineral_door/transparent/plasma, 10, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("plasma tile", /obj/item/stack/tile/mineral/plasma, 1, 4, 20), \ - new/datum/stack_recipe("Scientist Statue", /obj/structure/statue/plasma/scientist, 5, one_per_turf = 1, on_floor = 1), \ )) /obj/item/stack/sheet/mineral/plasma/get_main_recipes() @@ -240,12 +234,7 @@ GLOBAL_LIST_INIT(gold_recipes, list ( \ new/datum/stack_recipe("chemical crate", /obj/structure/closet/crate/chem, 1, time = 15, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("gold tile", /obj/item/stack/tile/mineral/gold, 1, 4, 20), \ new/datum/stack_recipe("blank plaque", /obj/item/plaque, 1), \ - new/datum/stack_recipe("HoS Statue", /obj/structure/statue/gold/hos, 5, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("HOP Statue", /obj/structure/statue/gold/head_of_personnel, 5, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("CE Statue", /obj/structure/statue/gold/ce, 5, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("RD Statue", /obj/structure/statue/gold/rd, 5, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("Simple Crown", /obj/item/clothing/head/crown, 5), \ - new/datum/stack_recipe("CMO Statue", /obj/structure/statue/gold/cmo, 5, one_per_turf = 1, on_floor = 1), \ )) /obj/item/stack/sheet/mineral/gold/get_main_recipes() @@ -296,11 +285,6 @@ GLOBAL_LIST_INIT(gold_recipes, list ( \ GLOBAL_LIST_INIT(silver_recipes, list ( \ new/datum/stack_recipe("silver door", /obj/structure/mineral_door/silver, 10, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("silver tile", /obj/item/stack/tile/mineral/silver, 1, 4, 20), \ - new/datum/stack_recipe("Med Officer Statue", /obj/structure/statue/silver/md, 5, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("Janitor Statue", /obj/structure/statue/silver/janitor, 5, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("Sec Officer Statue", /obj/structure/statue/silver/sec, 5, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("Sec Borg Statue", /obj/structure/statue/silver/secborg, 5, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("Med Borg Statue", /obj/structure/statue/silver/medborg, 5, one_per_turf = 1, on_floor = 1), \ )) /obj/item/stack/sheet/mineral/silver/get_main_recipes() diff --git a/code/game/objects/items/stacks/sheets/recipes/recipes_metal.dm b/code/game/objects/items/stacks/sheets/recipes/recipes_metal.dm index 9819a941e5f8..bd2a13a1ac88 100644 --- a/code/game/objects/items/stacks/sheets/recipes/recipes_metal.dm +++ b/code/game/objects/items/stacks/sheets/recipes/recipes_metal.dm @@ -242,7 +242,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ null, \ new/datum/stack_recipe("iron door", /obj/structure/mineral_door/iron, 20, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("floodlight frame", /obj/structure/floodlight_frame, 5, one_per_turf = TRUE, on_floor = TRUE), \ - new/datum/stack_recipe("voting box", /obj/structure/votebox, 15, time = 50), \ + new/datum/stack_recipe("voting box", /obj/structure/votebox, 5, time = 50), \ new/datum/stack_recipe("mortar", /obj/item/reagent_containers/glass/mortar/metal, 3), \ new/datum/stack_recipe("pestle", /obj/item/pestle, 1, time = 50), \ new/datum/stack_recipe("hygienebot assembly", /obj/item/bot_assembly/hygienebot, 2, time = 50), \ diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index ce64af1fd205..790c9cb2d22d 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -346,8 +346,6 @@ GLOBAL_LIST_INIT(durathread_recipes, list ( \ */ GLOBAL_LIST_INIT(cardboard_recipes, list ( \ new/datum/stack_recipe("box", /obj/item/storage/box), \ - new/datum/stack_recipe("cardborg suit", /obj/item/clothing/suit/cardborg, 3), \ - new/datum/stack_recipe("cardborg helmet", /obj/item/clothing/head/cardborg), \ new/datum/stack_recipe("large box", /obj/structure/closet/cardboard, 4, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("cardboard cutout", /obj/item/cardboard_cutout, 5), \ null, \ @@ -452,7 +450,6 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \ new/datum/stack_recipe("bronze hat", /obj/item/clothing/head/bronze), \ null, new/datum/stack_recipe("bronze chair", /obj/structure/chair/comfy/shuttle/bronze, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \ - new/datum/stack_recipe("Marx Bust", /obj/structure/statue/bronze/marx, 15, one_per_turf = 1, on_floor = 1), \ )) /obj/item/stack/tile/bronze diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm index 68c99d6649a5..4d9b3b783cef 100644 --- a/code/game/objects/structures/statues.dm +++ b/code/game/objects/structures/statues.dm @@ -62,11 +62,6 @@ desc = "This is a grand statue of a Nuclear Explosive. It has a sickening green colour." icon_state = "nuke" -/obj/structure/statue/uranium/eng - name = "Statue of an engineer" - desc = "This statue has a sickening green colour." - icon_state = "eng" - /obj/structure/statue/uranium/attackby(obj/item/W, mob/user, params) radiate() return ..() @@ -93,168 +88,6 @@ return return -////////////////////////////plasma/////////////////////////////////////////////////////////////////////// - -/obj/structure/statue/plasma - max_integrity = 200 - material_drop_type = /obj/item/stack/sheet/mineral/plasma - impressiveness = 20 - desc = "This statue is suitably made from plasma." - -/obj/structure/statue/plasma/scientist - name = "statue of a scientist" - icon_state = "sci" - -/obj/structure/statue/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) - if(exposed_temperature > 300) - PlasmaBurn(exposed_temperature) - - -/obj/structure/statue/plasma/bullet_act(obj/projectile/Proj) - var/burn = FALSE - if(!(Proj.nodamage) && Proj.damage_type == BURN && !QDELETED(src)) - burn = TRUE - if(burn) - var/turf/T = get_turf(src) - if(Proj.firer) - message_admins("Plasma statue ignited by [ADMIN_LOOKUPFLW(Proj.firer)] in [ADMIN_VERBOSEJMP(T)]") - log_game("Plasma statue ignited by [key_name(Proj.firer)] in [AREACOORD(T)]") - else - message_admins("Plasma statue ignited by [Proj]. No known firer, in [ADMIN_VERBOSEJMP(T)]") - log_game("Plasma statue ignited by [Proj] in [AREACOORD(T)]. No known firer.") - PlasmaBurn(2500) - . = ..() - -/obj/structure/statue/plasma/attackby(obj/item/W, mob/user, params) - if(W.get_temperature() > 300 && !QDELETED(src))//If the temperature of the object is over 300, then ignite - var/turf/T = get_turf(src) - message_admins("Plasma statue ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]") - log_game("Plasma statue ignited by [key_name(user)] in [AREACOORD(T)]") - ignite(W.get_temperature()) - else - return ..() - -/obj/structure/statue/plasma/proc/PlasmaBurn(exposed_temperature) - if(QDELETED(src)) - return - atmos_spawn_air("plasma=[oreAmount*10];TEMP=[exposed_temperature]") - deconstruct(FALSE) - -/obj/structure/statue/plasma/proc/ignite(exposed_temperature) - if(exposed_temperature > 300) - PlasmaBurn(exposed_temperature) - -//////////////////////gold/////////////////////////////////////// - -/obj/structure/statue/gold - max_integrity = 300 - material_drop_type = /obj/item/stack/sheet/mineral/gold - impressiveness = 25 - desc = "This is a highly valuable statue made from gold." - -/obj/structure/statue/gold/hos - name = "statue of the head of security" - icon_state = "hos" - -/obj/structure/statue/gold/head_of_personnel - name = "statue of the head of personnel" - icon_state = "hop" - -/obj/structure/statue/gold/cmo - name = "statue of the chief medical officer" - icon_state = "cmo" - -/obj/structure/statue/gold/ce - name = "statue of the chief engineer" - icon_state = "ce" - -/obj/structure/statue/gold/rd - name = "statue of the research director" - icon_state = "rd" - -//////////////////////////silver/////////////////////////////////////// - -/obj/structure/statue/silver - max_integrity = 300 - material_drop_type = /obj/item/stack/sheet/mineral/silver - impressiveness = 25 - desc = "This is a valuable statue made from silver." - -/obj/structure/statue/silver/md - name = "statue of a medical officer" - icon_state = "md" - -/obj/structure/statue/silver/janitor - name = "statue of a janitor" - icon_state = "jani" - -/obj/structure/statue/silver/sec - name = "statue of a security officer" - icon_state = "sec" - -/obj/structure/statue/silver/secborg - name = "statue of a security cyborg" - icon_state = "secborg" - -/obj/structure/statue/silver/medborg - name = "statue of a medical cyborg" - icon_state = "medborg" - -/////////////////////////diamond///////////////////////////////////////// - -/obj/structure/statue/diamond - max_integrity = 1000 - material_drop_type = /obj/item/stack/sheet/mineral/diamond - impressiveness = 50 - desc = "This is a very expensive diamond statue." - -/obj/structure/statue/diamond/captain - name = "statue of THE captain." - icon_state = "cap" - -/obj/structure/statue/diamond/ai1 - name = "statue of the AI hologram." - icon_state = "ai1" - -/obj/structure/statue/diamond/ai2 - name = "statue of the AI core." - icon_state = "ai2" - -////////////////////////bananium/////////////////////////////////////// - -/obj/structure/statue/bananium - max_integrity = 300 - material_drop_type = /obj/item/stack/sheet/mineral/hidden/hellstone - impressiveness = 50 - desc = "A bananium statue with a small engraving:'HOOOOOOONK'." - var/spam_flag = 0 - -/obj/structure/statue/bananium/clown - name = "statue of a clown" - icon_state = "clown" - -/obj/structure/statue/bananium/Bumped(atom/movable/AM) - honk() - ..() - -/obj/structure/statue/bananium/attackby(obj/item/W, mob/user, params) - honk() - return ..() - -/obj/structure/statue/bananium/attack_hand(mob/user) - honk() - . = ..() - -/obj/structure/statue/bananium/attack_paw(mob/user) - honk() - ..() - -/obj/structure/statue/bananium/proc/honk() - if(!spam_flag) - spam_flag = TRUE - playsound(src.loc, 'sound/items/bikehorn.ogg', 50, TRUE) - addtimer(VARSET_CALLBACK(src, spam_flag, FALSE), 2 SECONDS) - /////////////////////sandstone///////////////////////////////////////// /obj/structure/statue/sandstone @@ -262,12 +95,6 @@ material_drop_type = /obj/item/stack/sheet/mineral/sandstone impressiveness = 15 -/obj/structure/statue/sandstone/assistant - name = "statue of an assistant" - desc = "A cheap statue of sandstone for a greyshirt." - icon_state = "assist" - - /obj/structure/statue/sandstone/venus //call me when we add marble i guess name = "statue of a pure maiden" desc = "An ancient marble statue. The subject is depicted with a floor-length braid and is wielding a toolbox. By Jove, it's easily the most gorgeous depiction of a woman you've ever seen. The artist must truly be a master of his craft. Shame about the broken arm, though." @@ -290,16 +117,6 @@ desc = "Looks like that weird kid with the tiger plushie has been round here again." icon_state = "snowlegion" -///////////////////////////////bronze/////////////////////////////////// - -/obj/structure/statue/bronze - material_drop_type = /obj/item/stack/tile/bronze - -/obj/structure/statue/bronze/marx - name = "\improper Karl Marx bust" - desc = "A bust depicting a certain 19th century economist. You get the feeling a specter is haunting the sector." - icon_state = "marx" - /// bone /obj/structure/statue/bone anchored = TRUE diff --git a/icons/obj/statue.dmi b/icons/obj/statue.dmi index cfb783ef1b10571b9484072699a5787d092d2950..7e9be0eed1890a4c78400a1b7a424b4f7038edcc 100644 GIT binary patch literal 12202 zcmW++19T)^6OA^`W;eEN+qSjw#bEc}DGB&~mc9ULeS}tOy&c;rb4lb7Vc3@y0 znaMM?@O@0*ptrd_BSba7>*&=>MY>FD#?|v@^dFK)TU}q^XQGkw5P;r3kvT(cJFUMe zUEul@d|N@lTBg&~mR~1FfL<)pNNH(4@f-*W@9Fs)^Y!4^Ava9}KNJ?4LpuwSC&Dn- zqr}{6aM1j`L-#n_vAWQ-=ros_dK#Q*Ad{2ivtXXVdgc>(y9VXiJ(q)LSl zs_bLBD~|CPhIW^}4=$5qMk5t{Vxhf#hNw?z?keXCI22PxhRbLuI~W)dn6#L%nn&hE zmbZh>lFyMKCNcz(Fa#M?KoZrdv~mNvS{7tJ&AZ)i@=I_~tkjYu62&2ZNCV87T!wWZeXlw|2{yIyvY~U^$e{E$lHlT-77}91&uz! zV{u-e{O@+qlz|8o-M_u3+Tj$?zy7i9WW9){!xT|by4338vosjKIY3X&krD8Zw&tZ# z35i2X;;g=qT3wo1Rj40SVty{F{Oo`&#rT-2HlXy;3<%oY;aplIzp$^as=xwg`ALGZ z)3fy%8!^iJ@9{G*T&mFM25SEP^P{J+@Ji%N@QPxYFkGo%=~ii&5R7W;1D-z)my-ha zG}`i&G~Q5r9}-a^BzLRIqSvc4n}6#mXa4No)HdP^I7hYo2#OS2Z=O?_T)+R8WTV3H zEDr*h>=~V0P=K6d!52M7MkI^4=-E(AuYZyxP)5qoZvqgtR3B17$c%SM8{araBu?BR zMJ-Jt#RA^!3`>ndJn9GIGJlFgKf+(uKS|@`iYG{7HDLeSIGlVUef%2cRD5rWxtWzFS+ex-S z8RRb>Ltzvn&;CX9v$I#q{7mK)X((V6=F74_;J2;Lra&ROa?oXVZ8yzNNO;~q`ZdEA zY|1rDv=3V%tNtalcPKa}1uiclQvoafMb&=POL;Bxo3X2h70T>z2Ua0LpzH00iD?s1 zf=6W=$wcnUm)~JxrAue%xRnWZ-)2xTO{pGbCOVSpMp9MZMVSksM z@ng!!2iV*U_A@qve(^X<+5KqaDEKQA&y;}+i!!zM(ug4Uj7Ux|%6;ayNufm#>dLNu z>P}+7ZhU)A&kAQ5Q5>A!CO>dr`jL9Wi%L8ej0V$kqodcPBK-bVaP2Ycx6*X$`N6&B zuV=0YW#sJM2w7_}3rUSmLGm3ia}rFZj94u{n@4zceRagLBybXJ=sz(s5ykFy68;&p z$Y0sM%}%knOKwRAX(jn*l?e7+tw%YQyjyjDrGi=H0^6{c+m@b!Kyd)58SC6 z;^G*?IJvOLme1jFrCKCHpc#|Z5sFbd^lM7WJWa(xj)959>FJuq{DDp#E@k(~-(m(~ zhmGK8{#%X@#PhtLLX3r`JtM%S11I4?nj|b?eebvt|lKtxR3p&5LO=bRSNBXZ*tqZrdJ#beNPcqSjv5_u{Upn%ulH%@ zgRZV^J3CyuV3bX4+I63U3NEjW->N^qvKS&=F>XbR0b#EtNmF)u?{!cR(nu4*Sy@oB zrN{ETl6&a_%d4KyV46r-U3Gb(k-w)p`I3|BPx2(>!gLtOHCae6efKymT<{(Eh;-w5%8b4W@oQa+w}O3LH>ZO@Q|eIYxM suQ( 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�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 CqNIWV From f54df6f6201ea2bbb95df499f0e56c79c047aec3 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 15 Oct 2024 09:05:32 -0500 Subject: [PATCH 40/62] Automatic changelog generation for PR #3539 [ci skip] --- html/changelogs/AutoChangeLog-pr-3539.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3539.yml diff --git a/html/changelogs/AutoChangeLog-pr-3539.yml b/html/changelogs/AutoChangeLog-pr-3539.yml new file mode 100644 index 000000000000..4f995cda3c61 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3539.yml @@ -0,0 +1,6 @@ +author: Sadhorizon +changes: + - {rscdel: Removed Karl Marx from the game.} + - {rscdel: Removed all the job statues.} + - {rscdel: 'Cardborg suit, human, gondola and monkey skinsuits are no longer craftable.'} +delete-after: true From 9e867fe6f3748357d20a67e6e83234135b903333 Mon Sep 17 00:00:00 2001 From: CoreyLee Hassell Date: Tue, 15 Oct 2024 07:10:07 -0400 Subject: [PATCH 41/62] Added blood as a switchable mode to smartfridge boards (#3546) Added blood as a switchable mode to smartfridge boards. It had everything except that. ## Changelog :cl: fix: blood smart-fridge selectable on smartfridge boards now when screwdrivering them. /:cl: --- code/game/objects/items/circuitboards/machine_circuitboards.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index af7addd21a95..13d6268c1520 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -571,6 +571,7 @@ /obj/machinery/smartfridge/food = "food", /obj/machinery/smartfridge/drinks = "drinks", /obj/machinery/smartfridge/extract = "slimes", + /obj/machinery/smartfridge/bloodbank = "blood", /obj/machinery/smartfridge/organ = "organs", /obj/machinery/smartfridge/chemistry = "chems", /obj/machinery/smartfridge/chemistry/virology = "viruses", From 2f09f1eb6869a961ad7f3384f81be886443576b6 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 15 Oct 2024 09:20:10 -0500 Subject: [PATCH 42/62] Automatic changelog generation for PR #3546 [ci skip] --- html/changelogs/AutoChangeLog-pr-3546.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3546.yml diff --git a/html/changelogs/AutoChangeLog-pr-3546.yml b/html/changelogs/AutoChangeLog-pr-3546.yml new file mode 100644 index 000000000000..e04b2efd4af6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3546.yml @@ -0,0 +1,5 @@ +author: Anticept +changes: + - {bugfix: blood smart-fridge selectable on smartfridge boards now when screwdrivering + them.} +delete-after: true From 04aed6b5b8d2b0f2111250323d1bd56c1af22e05 Mon Sep 17 00:00:00 2001 From: Gristlebee <56049844+Gristlebee@users.noreply.github.com> Date: Tue, 15 Oct 2024 04:10:29 -0700 Subject: [PATCH 43/62] Map Fixes for Wrecked Factory Ruin (#3543) ## About The Pull Request Some of the walls that were meant to be indestructible werent, and an enemy in the dorms didnt spawn. ## Why It's Good For The Game Fixes are good. ## Changelog :cl: fix: Fixes walls and an enemy spawn in the Wrecked Factory /:cl: --- .../LavaRuins/lavaland_surface_wrecked_factory.dmm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm index fda16098a148..768c6275cf56 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm @@ -2155,6 +2155,7 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt/dust, +/mob/living/simple_animal/hostile/human/syndicate/ranged/smg/space/stormtrooper, /turf/open/floor/plasteel/dark, /area/ruin/lavaland/factory/dorms) "tN" = ( @@ -6370,7 +6371,7 @@ LP vE DB Cc -KX +yQ Gn hv JO @@ -6424,7 +6425,7 @@ vE EU Vw Id -KX +yQ PR KX PR @@ -6478,7 +6479,7 @@ ab vQ LL Kg -KX +yQ Gw KX Gw @@ -6532,7 +6533,7 @@ yQ yQ yQ yQ -KX +yQ KX KX KX From 37a7e486c0b423bfcdb6ecb0e9b98b6ab9d580bd Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 15 Oct 2024 09:34:06 -0500 Subject: [PATCH 44/62] Automatic changelog generation for PR #3543 [ci skip] --- html/changelogs/AutoChangeLog-pr-3543.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3543.yml diff --git a/html/changelogs/AutoChangeLog-pr-3543.yml b/html/changelogs/AutoChangeLog-pr-3543.yml new file mode 100644 index 000000000000..2a4d5afad200 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3543.yml @@ -0,0 +1,4 @@ +author: Gristlebee +changes: + - {bugfix: Fixes walls and an enemy spawn in the Wrecked Factory} +delete-after: true From fc782a573e82dea890209f8f746eee96de5d79ab Mon Sep 17 00:00:00 2001 From: firebudgy <153147550+firebudgy@users.noreply.github.com> Date: Tue, 15 Oct 2024 07:12:09 -0400 Subject: [PATCH 45/62] Reinforces the windows on the Mudskipper (#3446) ## About The Pull Request Compared to all the other ships of it's manufacturing company (the Kilo, the Shetland...) the mudskipper oddly lacks reinforced windows. This brings it up to par with the rest of the dubiously well constructed ships adjacent to it. Shetland: ![image](https://github.com/user-attachments/assets/935c2ff1-d90a-41c6-9afe-1a7278490dc1) Kilo: ![image](https://github.com/user-attachments/assets/7dc153af-c149-4494-a538-059f5438b5d5) ## Why It's Good For The Game https://github.com/user-attachments/assets/481c70a8-f2d1-460d-b2b6-947b3c18e1ea You can also do this with a single screwdriver. ## Changelog :cl: fix: Mudskipper windows are correctly reinforced, like other ships by the same manufacturer. /:cl: --- .../independent/independent_mudskipper.dmm | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/_maps/shuttles/independent/independent_mudskipper.dmm b/_maps/shuttles/independent/independent_mudskipper.dmm index 26474b9c4c2f..11d98b3c1475 100644 --- a/_maps/shuttles/independent/independent_mudskipper.dmm +++ b/_maps/shuttles/independent/independent_mudskipper.dmm @@ -1016,6 +1016,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/patterned/grid, /area/ship/cargo) +"xR" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/poddoor/shutters{ + id = "mudskipper_window" + }, +/turf/open/floor/plating, +/area/ship/hallway/aft) "xU" = ( /obj/machinery/power/terminal{ dir = 1 @@ -1051,7 +1059,7 @@ /obj/machinery/door/poddoor/shutters{ id = "mudskipper_window" }, -/obj/structure/window/fulltile, +/obj/structure/window/reinforced/fulltile, /turf/open/floor/plating, /area/ship/cargo) "yB" = ( @@ -1431,7 +1439,7 @@ dir = 4; id = "mudskipper_bridge" }, -/obj/effect/spawner/structure/window, +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/ship/bridge) "Gq" = ( @@ -1811,7 +1819,7 @@ /obj/machinery/door/poddoor/shutters{ id = "mudskipper_window" }, -/obj/structure/window/fulltile, +/obj/structure/window/reinforced/fulltile, /turf/open/floor/plating, /area/ship/hallway/aft) "PU" = ( @@ -1823,10 +1831,10 @@ "Qt" = ( /obj/structure/grille, /obj/machinery/atmospherics/pipe/layer_manifold, +/obj/structure/window/reinforced/fulltile, /obj/machinery/door/poddoor/shutters{ id = "mudskipper_window" }, -/obj/structure/window/fulltile, /turf/open/floor/plating, /area/ship/engineering/engine) "Qu" = ( @@ -2224,7 +2232,7 @@ /obj/machinery/door/poddoor/shutters{ id = "mudskipper_window" }, -/obj/structure/window/fulltile, +/obj/structure/window/reinforced/fulltile, /turf/open/floor/plating, /area/ship/hallway/aft) "XI" = ( @@ -2278,7 +2286,7 @@ /obj/machinery/door/poddoor/shutters{ id = "mudskipper_window" }, -/obj/structure/window/fulltile, +/obj/structure/window/reinforced/fulltile, /turf/open/floor/plating, /area/ship/crew) "Yi" = ( @@ -2566,7 +2574,7 @@ cs hX cs cs -Xm +xR yg XK Ni From 0c45ed481fdeb574a46d52d34e3b6b7bfaf69c6d Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 15 Oct 2024 09:57:23 -0500 Subject: [PATCH 46/62] Automatic changelog generation for PR #3446 [ci skip] --- html/changelogs/AutoChangeLog-pr-3446.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3446.yml diff --git a/html/changelogs/AutoChangeLog-pr-3446.yml b/html/changelogs/AutoChangeLog-pr-3446.yml new file mode 100644 index 000000000000..65e0eb3677b5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3446.yml @@ -0,0 +1,5 @@ +author: firebudgy +changes: + - {bugfix: 'Mudskipper windows are correctly reinforced, like other ships by the + same manufacturer.'} +delete-after: true From 2a9642940a5a8d50e0d40780db02235dce341779 Mon Sep 17 00:00:00 2001 From: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> Date: Tue, 15 Oct 2024 06:12:31 -0500 Subject: [PATCH 47/62] ghosts can no longer duplicate themselves in the mob subsystem list tracking them (#3361) ## About The Pull Request we have areas with a virtual z level of 0 which means if you traveled into it, you wouldnt get cleaned up from your old z level! you could then walk back into it and be added to that z level a second time idle mobs cant be added to 0 either! ## Why It's Good For The Game This is bad! ## Changelog :cl: fix: ghosts cannot duplicate themselves across multiple z levels. /:cl: --- code/controllers/subsystem/mobs.dm | 1 + code/game/atoms_movable.dm | 2 +- code/game/machinery/navbeacon.dm | 11 ++++++-- code/modules/mob/dead/dead.dm | 11 ++++---- code/modules/mob/living/login.dm | 5 ++-- .../mob/living/simple_animal/simple_animal.dm | 26 +++++++++---------- .../chemistry/reagents/trickwine_reagents.dm | 2 +- 7 files changed, 33 insertions(+), 25 deletions(-) diff --git a/code/controllers/subsystem/mobs.dm b/code/controllers/subsystem/mobs.dm index b5d8210c802f..d2e0505b3583 100644 --- a/code/controllers/subsystem/mobs.dm +++ b/code/controllers/subsystem/mobs.dm @@ -40,5 +40,6 @@ SUBSYSTEM_DEF(mobs) L.Life(seconds, times_fired) else GLOB.mob_living_list.Remove(L) + stack_trace("[L] no longer exists in mob_living_list") if (MC_TICK_CHECK) return diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 79326ab9e2ad..7a1f7a36283a 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -540,7 +540,7 @@ var/previous_virtual_z = OldLoc?.virtual_z() || 0 var/current_virtual_z = virtual_z() - if(current_virtual_z && current_virtual_z != previous_virtual_z) + if(current_virtual_z != previous_virtual_z) on_virtual_z_change(current_virtual_z, previous_virtual_z) SEND_SIGNAL(src, COMSIG_MOVABLE_MOVED, OldLoc, Dir, Forced, old_locs) diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index b54c192f4407..abee7fe954f7 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -46,11 +46,15 @@ return ..() /obj/machinery/navbeacon/on_virtual_z_change(new_virtual_z, previous_virtual_z) + ..() + if(!codes) + return + if(!codes["patrol"]) + return if(previous_virtual_z) LAZYREMOVEASSOC(GLOB.navbeacons, "[previous_virtual_z]", src) if(new_virtual_z) LAZYADDASSOCLIST(GLOB.navbeacons, "[new_virtual_z]", src) - ..() // set the transponder codes assoc list from codes_txt /obj/machinery/navbeacon/proc/set_codes() @@ -71,7 +75,10 @@ codes[e] = "1" /obj/machinery/navbeacon/proc/glob_lists_deregister() - LAZYREMOVE(GLOB.navbeacons["[virtual_z()]"], src) + if(!codes) + return + if(codes["patrol"]) + LAZYREMOVE(GLOB.navbeacons["[virtual_z()]"], src) GLOB.deliverybeacons -= src GLOB.deliverybeacontags -= location GLOB.wayfindingbeacons -= src diff --git a/code/modules/mob/dead/dead.dm b/code/modules/mob/dead/dead.dm index 85c60a15b031..490efbbabef8 100644 --- a/code/modules/mob/dead/dead.dm +++ b/code/modules/mob/dead/dead.dm @@ -96,18 +96,17 @@ INITIALIZE_IMMEDIATE(/mob/dead) return /mob/dead/Destroy() - for(var/level in SSmobs.dead_players_by_virtual_z) - LAZYREMOVEASSOC(SSmobs.dead_players_by_virtual_z, level, src) - // Forgive me for this one. This loop can be replaced by the line below by the one brave enough to fix - // observers not cleanly removing themselves from the dead_players_by_virtual_z /list when they should - //LAZYREMOVEASSOC(SSmobs.dead_players_by_virtual_z, "[virtual_z()]", src) + //Observers should no longer be duplicating themselves across virtual z so it SHOULD be fine to only check its virtual z. + LAZYREMOVEASSOC(SSmobs.dead_players_by_virtual_z, "[virtual_z()]", src) return ..() /mob/dead/Login() . = ..() if(!client) return - LAZYADDASSOCLIST(SSmobs.dead_players_by_virtual_z, "[virtual_z()]", src) + var/virt_z = virtual_z() + if(virt_z) + LAZYADDASSOCLIST(SSmobs.dead_players_by_virtual_z, "[virt_z]", src) /mob/dead/Logout() . = ..() diff --git a/code/modules/mob/living/login.dm b/code/modules/mob/living/login.dm index 62098a940937..18ddbe375da9 100644 --- a/code/modules/mob/living/login.dm +++ b/code/modules/mob/living/login.dm @@ -18,8 +18,9 @@ var/virtual_z = virtual_z() - LAZYADDASSOCLIST(SSmobs.players_by_virtual_z, "[virtual_z]", src) - SSidlenpcpool.try_wakeup_virtual_z(virtual_z) + if(virtual_z) + LAZYADDASSOCLIST(SSmobs.players_by_virtual_z, "[virtual_z]", src) + SSidlenpcpool.try_wakeup_virtual_z(virtual_z) //Vents if(ventcrawler) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 3670e14a6405..55ea24c81d7d 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -630,30 +630,29 @@ GLOB.simple_animals[togglestatus] += list(src) AIStatus = togglestatus - var/virt_z = "[virtual_z()]" + var/virt_z = virtual_z() if(!virt_z) return switch(togglestatus) if(AI_Z_OFF) - LAZYADDASSOCLIST(SSidlenpcpool.idle_mobs_by_virtual_level, virt_z, src) - + LAZYADDASSOCLIST(SSidlenpcpool.idle_mobs_by_virtual_level, "[virt_z]", src) else - LAZYREMOVEASSOC(SSidlenpcpool.idle_mobs_by_virtual_level, virt_z, src) + LAZYREMOVEASSOC(SSidlenpcpool.idle_mobs_by_virtual_level, "[virt_z]", src) /mob/living/simple_animal/proc/check_should_sleep() if (pulledby || shouldwakeup) toggle_ai(AI_ON) return - var/virt_z = "[virtual_z()]" - if(!virt_z) - return - var/players_on_virtual_z = LAZYACCESS(SSmobs.players_by_virtual_z, virt_z) - if(!length(players_on_virtual_z)) - toggle_ai(AI_Z_OFF) - else if(AIStatus == AI_Z_OFF) - toggle_ai(AI_ON) + var/virt_z = virtual_z() + var/players_on_virtual_z = 0 + if(virt_z) + players_on_virtual_z = LAZYACCESS(SSmobs.players_by_virtual_z, "[virt_z]") + if(!length(players_on_virtual_z)) + toggle_ai(AI_Z_OFF) + else if(AIStatus == AI_Z_OFF) + toggle_ai(AI_ON) /mob/living/simple_animal/adjustHealth(amount, updating_health = TRUE, forced = FALSE) . = ..() @@ -665,6 +664,7 @@ . = ..() if(previous_virtual_z) LAZYREMOVEASSOC(SSidlenpcpool.idle_mobs_by_virtual_level, "[previous_virtual_z]", src) - toggle_ai(initial(AIStatus)) + if(QDELETED(src)) + return if(new_virtual_z) check_should_sleep() diff --git a/code/modules/reagents/chemistry/reagents/trickwine_reagents.dm b/code/modules/reagents/chemistry/reagents/trickwine_reagents.dm index ff82cd185fb2..eea549fb7475 100644 --- a/code/modules/reagents/chemistry/reagents/trickwine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/trickwine_reagents.dm @@ -30,7 +30,7 @@ if(!iscarbon(M)) var/mob/living/simple_animal/hostile/hostile_target = M var/hostile_ai_status = hostile_target.AIStatus - hostile_target.AIStatus = AI_OFF + hostile_target.toggle_ai(AI_OFF) addtimer(VARSET_CALLBACK(hostile_target, AIStatus, hostile_ai_status),reac_volume) M.Jitter(3 * reac_volume) M.Dizzy(2 * reac_volume) From 0e4f315acfc623b6f6741a326435d81076ae01bd Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 15 Oct 2024 10:10:51 -0500 Subject: [PATCH 48/62] Automatic changelog generation for PR #3361 [ci skip] --- html/changelogs/AutoChangeLog-pr-3361.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3361.yml diff --git a/html/changelogs/AutoChangeLog-pr-3361.yml b/html/changelogs/AutoChangeLog-pr-3361.yml new file mode 100644 index 000000000000..94fa273582c6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3361.yml @@ -0,0 +1,4 @@ +author: FalloutFalcon +changes: + - {bugfix: ghosts cannot duplicate themselves across multiple z levels.} +delete-after: true From bba68fb74a6afa4e2def0ba60a8b3152e3d04696 Mon Sep 17 00:00:00 2001 From: zimon9 <122945887+zimon9@users.noreply.github.com> Date: Tue, 15 Oct 2024 07:45:54 -0400 Subject: [PATCH 49/62] Fix to turn mob spawning off when a drill incurs a malfunction (#3551) ## About The Pull Request This fix toggles fauna spawning off after a drill is beset by a malfunction. ## Why It's Good For The Game I've seen several instances of runaway spawning occurring after a drill suffers a malfunction. When this happens, it cannot be toggled off by alt-clicking on it, and it _must_ be unwrenched. This should fix that behavior. ## Changelog :cl: fix: fixed fauna spawning after drill malfunctions /:cl: --- code/modules/mining/drill.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/mining/drill.dm b/code/modules/mining/drill.dm index 9a35c2b4bf11..c327efab39a8 100644 --- a/code/modules/mining/drill.dm +++ b/code/modules/mining/drill.dm @@ -344,6 +344,8 @@ //Overly long proc to handle the unique properties for each malfunction type /obj/machinery/drill/proc/malfunction(malfunction_type) + if(active) + mining.toggle_spawning() //turns mob spawning off after a malfunction switch(malfunction_type) if(MALF_LASER) say("Malfunction: Laser array damaged, please replace before continuing mining operations.") From 65718ef831e28c7910afabe9210457234a2aaf0d Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 15 Oct 2024 10:33:43 -0500 Subject: [PATCH 50/62] Automatic changelog generation for PR #3551 [ci skip] --- html/changelogs/AutoChangeLog-pr-3551.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3551.yml diff --git a/html/changelogs/AutoChangeLog-pr-3551.yml b/html/changelogs/AutoChangeLog-pr-3551.yml new file mode 100644 index 000000000000..232c81139fdb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3551.yml @@ -0,0 +1,4 @@ +author: zimon9 +changes: + - {bugfix: fixed fauna spawning after drill malfunctions} +delete-after: true From 4c5fe45c508dc0a9f8dcf7bdc5c2ec1391726334 Mon Sep 17 00:00:00 2001 From: Erika Fox <94164348+Bjarl@users.noreply.github.com> Date: Tue, 15 Oct 2024 15:36:06 -0400 Subject: [PATCH 51/62] You can now throw things from behind tables (#3537) ## About The Pull Request You can now throw things from behind flipped tables. ## Why It's Good For The Game You would think that being adjacent to a supposedly defensive thing would at least let you throw things over it. Like sandbags. Or barricades. ## Changelog :cl: add: Flipped tables actually let you throw things over them now. /:cl: --- code/game/objects/structures/table_flipped.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/game/objects/structures/table_flipped.dm b/code/game/objects/structures/table_flipped.dm index 28af5d0b63bd..8caa87b984a2 100644 --- a/code/game/objects/structures/table_flipped.dm +++ b/code/game/objects/structures/table_flipped.dm @@ -7,6 +7,7 @@ density = TRUE layer = ABOVE_MOB_LAYER opacity = FALSE + pass_flags_self = LETPASSTHROW var/table_type = /obj/structure/table /obj/structure/flippedtable/Initialize() @@ -54,6 +55,8 @@ return if(istype(exiter, /obj/projectile)) return + if(istype(exiter, /obj/item)) + return if(direction == table_dir) exiter.Bump(src) return COMPONENT_ATOM_BLOCK_EXIT From 29ff69ead0016063c0f5f4aeec425ffcd50a1c7a Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 15 Oct 2024 14:56:06 -0500 Subject: [PATCH 52/62] Automatic changelog generation for PR #3537 [ci skip] --- html/changelogs/AutoChangeLog-pr-3537.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3537.yml diff --git a/html/changelogs/AutoChangeLog-pr-3537.yml b/html/changelogs/AutoChangeLog-pr-3537.yml new file mode 100644 index 000000000000..26966e992526 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3537.yml @@ -0,0 +1,4 @@ +author: Bjarl +changes: + - {rscadd: Flipped tables actually let you throw things over them now.} +delete-after: true From ad41b29af4eb693309a933c8ded2332116a5f90c Mon Sep 17 00:00:00 2001 From: Changelogs Date: Wed, 16 Oct 2024 01:03:21 +0000 Subject: [PATCH 53/62] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3361.yml | 4 --- html/changelogs/AutoChangeLog-pr-3441.yml | 4 --- html/changelogs/AutoChangeLog-pr-3446.yml | 5 ---- html/changelogs/AutoChangeLog-pr-3478.yml | 4 --- html/changelogs/AutoChangeLog-pr-3491.yml | 5 ---- html/changelogs/AutoChangeLog-pr-3508.yml | 4 --- html/changelogs/AutoChangeLog-pr-3523.yml | 4 --- html/changelogs/AutoChangeLog-pr-3532.yml | 4 --- html/changelogs/AutoChangeLog-pr-3537.yml | 4 --- html/changelogs/AutoChangeLog-pr-3539.yml | 6 ---- html/changelogs/AutoChangeLog-pr-3541.yml | 4 --- html/changelogs/AutoChangeLog-pr-3543.yml | 4 --- html/changelogs/AutoChangeLog-pr-3546.yml | 5 ---- html/changelogs/AutoChangeLog-pr-3548.yml | 4 --- html/changelogs/AutoChangeLog-pr-3551.yml | 4 --- html/changelogs/AutoChangeLog-pr-3555.yml | 4 --- html/changelogs/AutoChangeLog-pr-3556.yml | 7 ----- html/changelogs/AutoChangeLog-pr-3557.yml | 4 --- html/changelogs/archive/2024-10.yml | 35 +++++++++++++++++++++++ 19 files changed, 35 insertions(+), 80 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3361.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3441.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3446.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3478.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3491.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3508.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3523.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3532.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3537.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3539.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3541.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3543.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3546.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3548.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3551.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3555.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3556.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3557.yml diff --git a/html/changelogs/AutoChangeLog-pr-3361.yml b/html/changelogs/AutoChangeLog-pr-3361.yml deleted file mode 100644 index 94fa273582c6..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3361.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: FalloutFalcon -changes: - - {bugfix: ghosts cannot duplicate themselves across multiple z levels.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3441.yml b/html/changelogs/AutoChangeLog-pr-3441.yml deleted file mode 100644 index 0299fb36df34..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3441.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: zimon9 -changes: - - {balance: rebalanced the probability of a grenade going off in one's hands} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3446.yml b/html/changelogs/AutoChangeLog-pr-3446.yml deleted file mode 100644 index 65e0eb3677b5..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3446.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: firebudgy -changes: - - {bugfix: 'Mudskipper windows are correctly reinforced, like other ships by the - same manufacturer.'} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3478.yml b/html/changelogs/AutoChangeLog-pr-3478.yml deleted file mode 100644 index b909ce469d5f..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3478.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Bjarl -changes: - - {rscdel: Holoparasites} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3491.yml b/html/changelogs/AutoChangeLog-pr-3491.yml deleted file mode 100644 index 6004c4799e6f..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3491.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: Bjarl -changes: - - {rscadd: Holofans now have a small window before shutting down if they are deactivated - by lack of power} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3508.yml b/html/changelogs/AutoChangeLog-pr-3508.yml deleted file mode 100644 index 84fc1ea2deca..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3508.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Apogee-dev -changes: - - {balance: Valor and Vaquero have combat hardsuits for their enforcers now} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3523.yml b/html/changelogs/AutoChangeLog-pr-3523.yml deleted file mode 100644 index 15efc1037556..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3523.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Bjarl -changes: - - {rscadd: The Frontiersmen have duct taped some turrets of their own together} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3532.yml b/html/changelogs/AutoChangeLog-pr-3532.yml deleted file mode 100644 index bf3de808dd72..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3532.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Bjarl -changes: - - {balance: Syndicate smokes are now laced with stimulants instead of omnizine.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3537.yml b/html/changelogs/AutoChangeLog-pr-3537.yml deleted file mode 100644 index 26966e992526..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3537.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Bjarl -changes: - - {rscadd: Flipped tables actually let you throw things over them now.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3539.yml b/html/changelogs/AutoChangeLog-pr-3539.yml deleted file mode 100644 index 4f995cda3c61..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3539.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: Sadhorizon -changes: - - {rscdel: Removed Karl Marx from the game.} - - {rscdel: Removed all the job statues.} - - {rscdel: 'Cardborg suit, human, gondola and monkey skinsuits are no longer craftable.'} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3541.yml b/html/changelogs/AutoChangeLog-pr-3541.yml deleted file mode 100644 index 4bc25ce2336d..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3541.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Sadhorizon -changes: - - {bugfix: Pubby ruin can no longer randomly have acid in airlocks.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3543.yml b/html/changelogs/AutoChangeLog-pr-3543.yml deleted file mode 100644 index 2a4d5afad200..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3543.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Gristlebee -changes: - - {bugfix: Fixes walls and an enemy spawn in the Wrecked Factory} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3546.yml b/html/changelogs/AutoChangeLog-pr-3546.yml deleted file mode 100644 index e04b2efd4af6..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3546.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: Anticept -changes: - - {bugfix: blood smart-fridge selectable on smartfridge boards now when screwdrivering - them.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3548.yml b/html/changelogs/AutoChangeLog-pr-3548.yml deleted file mode 100644 index ba0e3f8a1706..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3548.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: zimon9 -changes: - - {balance: increased amount of plasma in plasma internals cargo crate} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3551.yml b/html/changelogs/AutoChangeLog-pr-3551.yml deleted file mode 100644 index 232c81139fdb..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3551.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: zimon9 -changes: - - {bugfix: fixed fauna spawning after drill malfunctions} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3555.yml b/html/changelogs/AutoChangeLog-pr-3555.yml deleted file mode 100644 index 7fe288c72bed..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3555.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Bjarl -changes: - - {rscadd: NGR turrets} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3556.yml b/html/changelogs/AutoChangeLog-pr-3556.yml deleted file mode 100644 index 80ef9859ead2..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3556.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: Sadhorizon -changes: - - {tweak: Syndicate soap is now in-line with NT soap.} - - {rscdel: Syndicate tools are no longer faster. They are just reskinned normal - tools now.} - - {rscdel: Syndicate toolbox lost it's damage buff.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3557.yml b/html/changelogs/AutoChangeLog-pr-3557.yml deleted file mode 100644 index 63c3a04a151c..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3557.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: firebudgy -changes: - - {rscadd: Active smoking pipe sprites for Vox.} -delete-after: true diff --git a/html/changelogs/archive/2024-10.yml b/html/changelogs/archive/2024-10.yml index c8e9f015aef7..de14222a175e 100644 --- a/html/changelogs/archive/2024-10.yml +++ b/html/changelogs/archive/2024-10.yml @@ -175,3 +175,38 @@ rye-rice: - rscadd: Various sprite improvemnts - bugfix: Boomslang no longer fits on the belt +2024-10-16: + Anticept: + - bugfix: blood smart-fridge selectable on smartfridge boards now when screwdrivering + them. + Apogee-dev: + - balance: Valor and Vaquero have combat hardsuits for their enforcers now + Bjarl: + - rscadd: NGR turrets + - rscadd: Flipped tables actually let you throw things over them now. + - rscadd: Holofans now have a small window before shutting down if they are deactivated + by lack of power + - balance: Syndicate smokes are now laced with stimulants instead of omnizine. + - rscdel: Holoparasites + - rscadd: The Frontiersmen have duct taped some turrets of their own together + FalloutFalcon: + - bugfix: ghosts cannot duplicate themselves across multiple z levels. + Gristlebee: + - bugfix: Fixes walls and an enemy spawn in the Wrecked Factory + Sadhorizon: + - bugfix: Pubby ruin can no longer randomly have acid in airlocks. + - tweak: Syndicate soap is now in-line with NT soap. + - rscdel: Syndicate tools are no longer faster. They are just reskinned normal tools + now. + - rscdel: Syndicate toolbox lost it's damage buff. + - rscdel: Removed Karl Marx from the game. + - rscdel: Removed all the job statues. + - rscdel: Cardborg suit, human, gondola and monkey skinsuits are no longer craftable. + firebudgy: + - bugfix: Mudskipper windows are correctly reinforced, like other ships by the same + manufacturer. + - rscadd: Active smoking pipe sprites for Vox. + zimon9: + - balance: increased amount of plasma in plasma internals cargo crate + - balance: rebalanced the probability of a grenade going off in one's hands + - bugfix: fixed fauna spawning after drill malfunctions From 8a952d1566f2ef17e4acfff12ab5ae3a3b01c806 Mon Sep 17 00:00:00 2001 From: Erika Fox <94164348+Bjarl@users.noreply.github.com> Date: Tue, 15 Oct 2024 22:26:28 -0400 Subject: [PATCH 54/62] Removes South Bronx Paradise Bar (#3535) ## About The Pull Request as title ## Why It's Good For The Game As funny as it is I think it's kinda mean to have a trap item just. Right there ## Changelog :cl: del: South Bronx Paradise Bar /:cl: --- code/datums/diseases/parasitic_infection.dm | 50 ------------------- .../food_and_drinks/food/snacks_vend.dm | 30 ----------- code/modules/vending/snack.dm | 2 +- shiptest.dme | 1 - 4 files changed, 1 insertion(+), 82 deletions(-) delete mode 100644 code/datums/diseases/parasitic_infection.dm diff --git a/code/datums/diseases/parasitic_infection.dm b/code/datums/diseases/parasitic_infection.dm deleted file mode 100644 index 055425d9cc6f..000000000000 --- a/code/datums/diseases/parasitic_infection.dm +++ /dev/null @@ -1,50 +0,0 @@ -/datum/disease/parasite - form = "Parasite" - name = "Parasitic Infection" - max_stages = 4 - cure_text = "Surgical removal of the liver." - agent = "Consuming Live Parasites" - spread_text = "Non-Biological" - viable_mobtypes = list(/mob/living/carbon/human) - permeability_mod = 1 - desc = "If left untreated the subject will passively lose nutrients, and eventually lose their liver." - severity = DISEASE_SEVERITY_HARMFUL - disease_flags = CAN_CARRY|CAN_RESIST - spread_flags = DISEASE_SPREAD_NON_CONTAGIOUS - required_organs = list(/obj/item/organ/liver) - bypasses_immunity = TRUE - -/datum/disease/parasite/stage_act() - . = ..() - var/mob/living/carbon/C = affected_mob - var/obj/item/organ/liver/L = C.getorgan(/obj/item/organ/liver) - if(!L) - src.cure() - C.visible_message("[C]'s liver is covered in tiny larva! They quickly shrivel and die after being exposed to the open air.") - switch(stage) - if(1) - if(prob(5)) - affected_mob.emote("cough") - if(2) - if(prob(10)) - if(prob(50)) - to_chat(affected_mob, "You feel the weight loss already!") - affected_mob.adjust_nutrition(-3) - if(3) - if(prob(20)) - if(prob(20)) - to_chat(affected_mob, "You're... REALLY starting to feel the weight loss.") - affected_mob.adjust_nutrition(-6) - if(4) - if(prob(30)) - if(affected_mob.nutrition >= 100) - if(prob(10)) - to_chat(affected_mob, "You feel like your body's shedding weight rapidly!") - affected_mob.adjust_nutrition(-12) - else - var/turf/T = get_turf(C) - to_chat(affected_mob, "You feel much, MUCH lighter!") - affected_mob.vomit(20, TRUE) - L.Remove(C) - L.forceMove(T) - src.cure() diff --git a/code/modules/food_and_drinks/food/snacks_vend.dm b/code/modules/food_and_drinks/food/snacks_vend.dm index b071add1027a..9d6470f5aec4 100644 --- a/code/modules/food_and_drinks/food/snacks_vend.dm +++ b/code/modules/food_and_drinks/food/snacks_vend.dm @@ -15,36 +15,6 @@ /*food_flags = FOOD_FINGER_FOOD*/ w_class = WEIGHT_CLASS_TINY -/obj/item/reagent_containers/food/snacks/candy/bronx - name = "South Bronx Paradise bar" - desc = "Lose weight, guaranteed! Caramel Mocha Flavor. Something about product consumption..." - icon_state = "bronx" - item_state = "candy" - trash = /obj/item/trash/candy - list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/sugar = 2, /datum/reagent/yuck = 1) - junkiness = 10 - bitesize = 10 - filling_color = "#e4d4b7" - tastes = list("candy" = 5, "weight loss" = 4, "insect larva" = 1) - foodtype = JUNKFOOD | RAW | GROSS - custom_premium_price = 800 - var/revelation = FALSE - -/obj/item/reagent_containers/food/snacks/candy/bronx/On_Consume(mob/living/eater) - . = ..() - if(ishuman(eater)) - var/mob/living/carbon/human/carl = eater - var/datum/disease/P = new /datum/disease/parasite() - carl.ForceContractDisease(P, FALSE, TRUE) - -/obj/item/reagent_containers/food/snacks/candy/bronx/examine(mob/user) - . = ..() - if(revelation == FALSE) - to_chat(user, "Geeze, you need to get to get your eyes checked. You should look again...") - desc = "Lose weight, guaranteed! Caramel Mocha Flavor! WARNING: PRODUCT NOT FIT FOR HUMAN CONSUMPTION. CONTAINS LIVE DIAMPHIDIA SPECIMENS." - name = "South Bronx Parasite bar" - revelation = TRUE - /obj/item/reagent_containers/food/snacks/sosjerky name = "\improper Scaredy's Private Reserve Beef Jerky" icon_state = "sosjerky" diff --git a/code/modules/vending/snack.dm b/code/modules/vending/snack.dm index 45d76a4754fa..cb9b6b1b9d95 100644 --- a/code/modules/vending/snack.dm +++ b/code/modules/vending/snack.dm @@ -16,7 +16,7 @@ /obj/item/storage/box/gum = 3, /obj/item/reagent_containers/food/snacks/energybar = 6, /obj/item/reagent_containers/food/snacks/syndicake = 6, - /obj/item/reagent_containers/food/snacks/candy/bronx = 1) + ) refill_canister = /obj/item/vending_refill/snack canload_access_list = list(ACCESS_KITCHEN) default_price = 60 diff --git a/shiptest.dme b/shiptest.dme index 86b9c524989a..7372fdd3f03f 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -614,7 +614,6 @@ #include "code\datums\diseases\heart_failure.dm" #include "code\datums\diseases\legionvirus.dm" #include "code\datums\diseases\magnitis.dm" -#include "code\datums\diseases\parasitic_infection.dm" #include "code\datums\diseases\parrotpossession.dm" #include "code\datums\diseases\pierrot_throat.dm" #include "code\datums\diseases\retrovirus.dm" From d36c249239ae39f8a49976b5832a4ea9d588834e Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 15 Oct 2024 21:37:00 -0500 Subject: [PATCH 55/62] Automatic changelog generation for PR #3535 [ci skip] --- html/changelogs/AutoChangeLog-pr-3535.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3535.yml diff --git a/html/changelogs/AutoChangeLog-pr-3535.yml b/html/changelogs/AutoChangeLog-pr-3535.yml new file mode 100644 index 000000000000..75570ecb113c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3535.yml @@ -0,0 +1,4 @@ +author: Bjarl +changes: + - {rscdel: South Bronx Paradise Bar} +delete-after: true From ef3efbe8d432c562e59beecdd233e572182492a5 Mon Sep 17 00:00:00 2001 From: Mark Suckerberg Date: Tue, 15 Oct 2024 21:47:32 -0500 Subject: [PATCH 56/62] More Harddel Fixes (#3569) ## About The Pull Request Fixes a few harddels that surfaced in PR #3558 ## Why It's Good For The Game Harddels are still just terrible wastes of time ## Changelog :cl: /:cl: --- code/datums/action.dm | 13 ++++------ code/datums/components/remote_materials.dm | 9 ++++--- .../objects/items/implants/implant_misc.dm | 4 +++ code/game/turfs/closed/minerals.dm | 3 +-- .../atmospherics/machinery/airalarm.dm | 3 +-- code/modules/clothing/under/accessories.dm | 4 +++ .../hostile/mining_mobs/gutlunch.dm | 22 +++++++++------- code/modules/power/singularity/emitter.dm | 1 + .../boxes_magazines/_box_magazine.dm | 4 +++ code/modules/projectiles/gun.dm | 26 ++++++++++--------- code/modules/surgery/organs/vocal_cords.dm | 11 ++++---- 11 files changed, 58 insertions(+), 42 deletions(-) diff --git a/code/datums/action.dm b/code/datums/action.dm index 9bc58c399dd4..8151f5a4103c 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -366,16 +366,13 @@ /datum/action/item_action/nano_picket_sign name = "Retext Nano Picket Sign" - var/obj/item/picket_sign/S - -/datum/action/item_action/nano_picket_sign/New(Target) - ..() - if(istype(Target, /obj/item/picket_sign)) - S = Target /datum/action/item_action/nano_picket_sign/Trigger() - if(istype(S)) - S.retext(owner) + if(!istype(target, /obj/item/picket_sign)) + return + + var/obj/item/picket_sign/sign = target + sign.retext(owner) /datum/action/item_action/adjust diff --git a/code/datums/components/remote_materials.dm b/code/datums/components/remote_materials.dm index 2f3aa79749b2..16c695fe9c06 100644 --- a/code/datums/components/remote_materials.dm +++ b/code/datums/components/remote_materials.dm @@ -39,6 +39,7 @@ handles linking back and forth. // specify explicitly in case the other component is deleted first var/atom/P = parent mat_container.retrieve_all(P.drop_location()) + mat_container = null return ..() /datum/component/remote_materials/proc/_MakeLocal() @@ -77,9 +78,11 @@ handles linking back and forth. /datum/component/remote_materials/proc/OnAttackBy(datum/source, obj/item/I, mob/user) SIGNAL_HANDLER - if (silo && istype(I, /obj/item/stack)) - if (silo.remote_attackby(parent, user, I)) - return COMPONENT_NO_AFTERATTACK + if (!silo || !istype(I, /obj/item/stack)) + return + + if (silo.remote_attackby(parent, user, I)) + return COMPONENT_NO_AFTERATTACK /datum/component/remote_materials/proc/OnMultitool(datum/source, mob/user, obj/item/I) SIGNAL_HANDLER diff --git a/code/game/objects/items/implants/implant_misc.dm b/code/game/objects/items/implants/implant_misc.dm index c4c832209bac..d8f871e1ecc4 100644 --- a/code/game/objects/items/implants/implant_misc.dm +++ b/code/game/objects/items/implants/implant_misc.dm @@ -110,6 +110,10 @@ radio.keyslot = new radio_key radio.recalculateChannels() +/obj/item/implant/radio/Destroy() + QDEL_NULL(radio) + return ..() + /obj/item/implant/radio/mining radio_key = /obj/item/encryptionkey diff --git a/code/game/turfs/closed/minerals.dm b/code/game/turfs/closed/minerals.dm index 3970cc403d73..7b007bb98472 100644 --- a/code/game/turfs/closed/minerals.dm +++ b/code/game/turfs/closed/minerals.dm @@ -167,7 +167,6 @@ ScrapeAway() /turf/closed/mineral/ex_act(severity, target) - ..() switch(severity) if(3) if (prob(75)) @@ -177,7 +176,7 @@ gets_drilled(null, FALSE) if(1) gets_drilled(null, FALSE) - return + return ..() /turf/closed/mineral/random var/list/mineralSpawnChanceList = list(/obj/item/stack/ore/uranium = 3, /obj/item/stack/ore/diamond = 1, /obj/item/stack/ore/gold = 4, diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index 236c7b040d99..a95e153c0e14 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -239,8 +239,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 27) /obj/machinery/airalarm/Destroy() SSradio.remove_object(src, frequency) - qdel(wires) - wires = null + QDEL_NULL(wires) var/area/ourarea = get_area(src) ourarea.atmosalert(FALSE, src) return ..() diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm index 0d05c4e0cf7f..89cce9c24d64 100644 --- a/code/modules/clothing/under/accessories.dm +++ b/code/modules/clothing/under/accessories.dm @@ -444,6 +444,10 @@ chameleon_action.chameleon_name = "Accessory" chameleon_action.initialize_disguises() +/obj/item/clothing/accessory/holster/chameleon/Destroy() + QDEL_NULL(chameleon_action) + return ..() + /obj/item/clothing/accessory/holster/chameleon/emp_act(severity) . = ..() if(. & EMP_PROTECT_SELF) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm index ee48ed624ee4..e7257c7d39c4 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm @@ -43,12 +43,16 @@ animal_species = /mob/living/simple_animal/hostile/asteroid/gutlunch childtype = list(/mob/living/simple_animal/hostile/asteroid/gutlunch/grublunch = 100) + var/mutable_appearance/gutlunch_full_overlay + wanted_objects = list(/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/gibs/, /obj/item/organ, /obj/item/reagent_containers/food/snacks/meat/slab) /mob/living/simple_animal/hostile/asteroid/gutlunch/Initialize() . = ..() - if(wanted_objects.len) - AddComponent(/datum/component/udder, /obj/item/udder/gutlunch, CALLBACK(src, PROC_REF(regenerate_icons)), CALLBACK(src, PROC_REF(regenerate_icons))) + if(!length(wanted_objects)) + return + AddComponent(/datum/component/udder, /obj/item/udder/gutlunch, CALLBACK(src, TYPE_PROC_REF(/atom/movable, update_overlays)), CALLBACK(src, TYPE_PROC_REF(/atom/movable, update_overlays))) + gutlunch_full_overlay = mutable_appearance(icon, "gl_full") /mob/living/simple_animal/hostile/asteroid/gutlunch/CanAttack(atom/the_target) // Gutlunch-specific version of CanAttack to handle stupid stat_exclusive = true crap so we don't have to do it for literally every single simple_animal/hostile except the two that spawn in lavaland if(isturf(the_target) || !the_target || the_target.type == /atom/movable/lighting_object) // bail out on invalids @@ -72,14 +76,12 @@ return FALSE -/mob/living/simple_animal/hostile/asteroid/gutlunch/regenerate_icons(new_udder_volume, max_udder_volume) - cut_overlays() - var/static/gutlunch_full_overlay - if(isnull(gutlunch_full_overlay)) - gutlunch_full_overlay = iconstate2appearance(icon, "gl_full") - if(new_udder_volume == max_udder_volume) - add_overlay(gutlunch_full_overlay) - ..() +/mob/living/simple_animal/hostile/asteroid/gutlunch/update_overlays(new_udder_volume, max_udder_volume) + . = ..() + if(new_udder_volume != max_udder_volume) + return + + . += gutlunch_full_overlay //Male gutlunch. They're smaller and more colorful! /mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 73920780bef3..a6cd227550ec 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -119,6 +119,7 @@ log_game("Emitter deleted at [AREACOORD(T)]") investigate_log("deleted at [AREACOORD(T)]", INVESTIGATE_SINGULO) QDEL_NULL(sparks) + QDEL_NULL(wires) return ..() /obj/machinery/power/emitter/update_icon_state() diff --git a/code/modules/projectiles/boxes_magazines/_box_magazine.dm b/code/modules/projectiles/boxes_magazines/_box_magazine.dm index 57fb71d17f32..73a626721f4b 100644 --- a/code/modules/projectiles/boxes_magazines/_box_magazine.dm +++ b/code/modules/projectiles/boxes_magazines/_box_magazine.dm @@ -73,6 +73,10 @@ for(var/i = max(1, stored_ammo.len), i <= max_ammo, i++) stored_ammo += new round_check(src) +/obj/item/ammo_box/Destroy() + stored_ammo.Cut() + return ..() + ///gets a round from the magazine, if keep is TRUE the round will stay in the gun /obj/item/ammo_box/proc/get_round(keep = FALSE) if(!stored_ammo.len) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index f848018a6115..ae6131981fd9 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -262,8 +262,6 @@ */ ///The types of attachments allowed, a list of types. SUBTYPES OF AN ALLOWED TYPE ARE ALSO ALLOWED var/list/valid_attachments = list() - ///Reference to our attachment holder to prevent subtypes having to call GetComponent - var/datum/component/attachment_holder/attachment_holder ///Number of attachments that can fit on a given slot var/list/slot_available = ATTACHMENT_DEFAULT_SLOT_AVAILABLE ///Offsets for the slots on this gun. should be indexed by SLOT and then by X/Y @@ -339,7 +337,7 @@ /obj/item/gun/ComponentInitialize() . = ..() - attachment_holder = AddComponent(/datum/component/attachment_holder, slot_available, valid_attachments, slot_offsets, default_attachments) + AddComponent(/datum/component/attachment_holder, slot_available, valid_attachments, slot_offsets, default_attachments) AddComponent(/datum/component/two_handed) /// triggered on wield of two handed item @@ -384,6 +382,8 @@ QDEL_NULL(azoom) if(muzzle_flash) QDEL_NULL(muzzle_flash) + if(magazine) + QDEL_NULL(magazine) return ..() /obj/item/gun/handle_atom_del(atom/A) @@ -1008,18 +1008,21 @@ check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_HANDS_BLOCKED|AB_CHECK_IMMOBILE|AB_CHECK_LYING icon_icon = 'icons/mob/actions/actions_items.dmi' button_icon_state = "sniper_zoom" - var/obj/item/gun/gun = null /datum/action/toggle_scope_zoom/Trigger() + if(!istype(target, /obj/item/gun) || !..()) + return + + var/obj/item/gun/gun = target gun.zoom(owner, owner.dir) -/datum/action/toggle_scope_zoom/IsAvailable() - . = ..() - if(!. && gun) - gun.zoom(owner, owner.dir, FALSE) +/datum/action/toggle_scope_zoom/Remove(mob/user) + if(!istype(target, /obj/item/gun)) + return ..() + + var/obj/item/gun/gun = target + gun.zoom(user, user.dir, FALSE) -/datum/action/toggle_scope_zoom/Remove(mob/living/L) - gun.zoom(L, L.dir, FALSE) ..() /obj/item/gun/proc/rotate(atom/thing, old_dir, new_dir) @@ -1056,8 +1059,7 @@ return if(zoomable) - azoom = new() - azoom.gun = src + azoom = new(src) /obj/item/gun/proc/build_firemodes() if(FIREMODE_FULLAUTO in gun_firemodes) diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index b86c5b8b86ce..3ec636e41b5f 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -35,13 +35,13 @@ /datum/action/item_action/organ_action/colossus name = "Voice of God" - var/obj/item/organ/vocal_cords/colossus/cords = null - -/datum/action/item_action/organ_action/colossus/New() - ..() - cords = target /datum/action/item_action/organ_action/colossus/IsAvailable() + if(!istype(target, /obj/item/organ/vocal_cords/colossus)) + return FALSE + + var/obj/item/organ/vocal_cords/colossus/cords = target + if(world.time < cords.next_command) return FALSE if(!owner) @@ -58,6 +58,7 @@ /datum/action/item_action/organ_action/colossus/Trigger() . = ..() if(!IsAvailable()) + var/obj/item/organ/vocal_cords/colossus/cords = target if(world.time < cords.next_command) to_chat(owner, "You must wait [DisplayTimeText(cords.next_command - world.time)] before Speaking again.") return From ac84b9cb15b0f88cf94106b550a7d3a932c1a139 Mon Sep 17 00:00:00 2001 From: Gristlebee <56049844+Gristlebee@users.noreply.github.com> Date: Wed, 16 Oct 2024 11:19:49 -0700 Subject: [PATCH 57/62] Icemoon Ruin: SRM Ice Lodge (#3291) ## About The Pull Request Adds a new ruin, the Ice Lodge! Formerly an SRM settlement, Frontiersmen have since come in and taken it over for their own use.
Screenshots (Updated as of 05/09)
![image](https://github.com/user-attachments/assets/d950e34e-baa2-4f38-89fa-ff967b52a088) ![image](https://github.com/user-attachments/assets/937f68f9-84b3-4958-9996-78a397a0f70a) ![icelodgenew](https://github.com/user-attachments/assets/dc34a037-ba30-473b-ba31-6bfab0befdce)
Adds two new Frontiersmen mobs based off the new roles, flametroopers and surgeons. Flametroopers will rush enemies and spray fire at their enemies. Surgeons will fire syringes and attempt to sedate their enemies. Modifies fireline code to support igniting tiles as an option. Adds a var to hostile mob AI, shoot_point_blank. If enabled ranged mobs can shoot their guns at melee range instead of melee attacking if possible. Deletes the cat butcher since the Surgeon fills the same niche and being much less questionable. Fences no longer call update fence status on initialize. All this did was make closed fence doors spawn open and open fence doors spawn closed. Adds gunpowder barrels, broken display cases and random chemical jug spawners, SRM corpse spawners for use in the ruin. Adds a var for bullets, grown items, and nutrient bottles (auto_scatter) so you can choose whether they scatter on initialize. Fixes the pathing for some internals pathed frontiersmen simple mobs. ## Why It's Good For The Game New ruins are good and the new frontiersmen simple mobs will hopefully diversify the enemy roster nicely. The cat butcher is cruft, and won't be missed. ## Changelog :cl: add: Ice Lodge Ruin Map and areas add: Simple Mob Frontiersmen Flametrooper and Surgeon add: shoot_point_blank option for simple mobs add: dragon_fire_line supports igniting tiles add: broken display case, gunpowder barrel, SRM corpse spawners, chemical jug spawners del: Cat Butcher fix: Frontiersmen simplemob pathing fix: Fence doors spawning open when they should be closed and vice versa code: scattering can be disabled with auto_scatter var for bullets, grown items and nutrient bottles /:cl: --------- Signed-off-by: Theos Co-authored-by: Theos --- .../IceRuins/icemoon_ice_lodge.dmm | 5838 +++++++++++++++++ code/datums/ruins/icemoon.dm | 8 + code/game/area/areas/ruins/icemoon.dm | 22 + .../game/objects/effects/spawners/lootdrop.dm | 15 + code/game/objects/structures/displaycase.dm | 5 + code/game/objects/structures/fence.dm | 5 - code/game/turfs/open/floor/plating/icemoon.dm | 24 + code/modules/hydroponics/fermenting_barrel.dm | 8 + code/modules/hydroponics/growninedible.dm | 7 +- code/modules/hydroponics/hydroitemdefines.dm | 6 +- .../mob/living/simple_animal/corpse.dm | 30 + .../living/simple_animal/hostile/hostile.dm | 31 +- .../hostile/human/cat_butcher.dm | 86 - .../hostile/human/frontiersman.dm | 67 +- .../simple_animal/hostile/megafauna/drake.dm | 35 +- .../hostile/mining_mobs/ice_whelp.dm | 2 +- code/modules/paperwork/paper_premade.dm | 9 + .../projectiles/ammunition/_ammo_casing.dm | 7 +- icons/mob/simple_frontiersman.dmi | Bin 29244 -> 41395 bytes shiptest.dme | 1 - 20 files changed, 6072 insertions(+), 134 deletions(-) create mode 100644 _maps/RandomRuins/IceRuins/icemoon_ice_lodge.dmm delete mode 100644 code/modules/mob/living/simple_animal/hostile/human/cat_butcher.dm diff --git a/_maps/RandomRuins/IceRuins/icemoon_ice_lodge.dmm b/_maps/RandomRuins/IceRuins/icemoon_ice_lodge.dmm new file mode 100644 index 000000000000..87fc7ea3d267 --- /dev/null +++ b/_maps/RandomRuins/IceRuins/icemoon_ice_lodge.dmm @@ -0,0 +1,5838 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/chair/wood, +/turf/open/floor/wood/ebony{ + icon_state = "wood-broken2" + }, +/area/ruin/powered/icemoon/lodge/residential) +"ag" = ( +/obj/effect/turf_decal/stoneborder{ + dir = 1 + }, +/obj/effect/turf_decal/stoneborder, +/obj/machinery/shower{ + dir = 8 + }, +/obj/item/soap/homemade, +/obj/item/bikehorn/rubberducky, +/obj/structure/curtain/bounty, +/obj/machinery/shower{ + dir = 1 + }, +/turf/open/floor/plasteel/mono/dark, +/area/ruin/powered/icemoon/lodge/residential) +"al" = ( +/obj/structure/flora/grass/brown, +/obj/item/restraints/legcuffs/beartrap{ + armed = 1 + }, +/turf/open/floor/plating/asteroid/icerock, +/area/overmap_encounter/planetoid/cave/explored) +"am" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 8 + }, +/mob/living/simple_animal/hostile/human/frontier/ranged/trooper/rifle/internals/neutered, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/residential) +"ao" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/item/clothing/suit/space/hardsuit/security/independent/frontier, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/gear_room) +"aF" = ( +/turf/open/floor/plasteel/stairs/wood/icemoon{ + dir = 4 + }, +/area/overmap_encounter/planetoid/cave/explored) +"aJ" = ( +/turf/open/floor/carpet/black, +/area/ruin/powered/icemoon/lodge/mainhall) +"aL" = ( +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 6 + }, +/turf/open/floor/wood/mahogany{ + icon_state = "wood-broken4" + }, +/area/ruin/powered/icemoon/lodge/mainhall) +"aV" = ( +/obj/item/rack_parts, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/rust, +/area/ruin/powered/icemoon/lodge/mainhall) +"aZ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/punji_sticks, +/obj/effect/mob_spawn/human/corpse/frontier, +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken6" + }, +/area/ruin/powered/icemoon/lodge/cellar) +"bb" = ( +/turf/open/floor/plating/asteroid/icerock, +/area/overmap_encounter/planetoid/cave/explored) +"bk" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/gear_room) +"bv" = ( +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 9 + }, +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/montagne_office) +"bB" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 6 + }, +/obj/structure/destructible/tribal_torch/lit{ + pixel_y = 0; + pixel_x = 10 + }, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/gear_room) +"bC" = ( +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"bG" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/backdoor_xeno_babes_6{ + pixel_y = 0; + pixel_x = 30 + }, +/obj/item/reagent_containers/food/drinks/bottle/absinthe{ + pixel_x = -5; + pixel_y = 12 + }, +/obj/item/reagent_containers/food/drinks/bottle/amaretto{ + pixel_y = 10; + pixel_x = 7 + }, +/obj/item/reagent_containers/food/drinks/bottle/kahlua{ + pixel_x = 10; + pixel_y = 1 + }, +/obj/item/storage/pill_bottle/happy, +/obj/item/reagent_containers/pill/aranesp{ + pixel_y = -5; + pixel_x = -2 + }, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"bK" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/mainhall) +"bL" = ( +/obj/effect/turf_decal/corner/opaque/blue/diagonal, +/obj/effect/turf_decal/corner/opaque/blue/diagonal, +/obj/structure/table/optable, +/obj/item/restraints/handcuffs/cable/zipties/used, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/white, +/area/ruin/powered/icemoon/lodge/residential) +"ca" = ( +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"cd" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/icemoon{ + icon_state = "wood-broken" + }, +/area/overmap_encounter/planetoid/cave/explored) +"cl" = ( +/obj/machinery/hydroponics/soil, +/turf/open/floor/ship/dirt/dark, +/area/ruin/powered/icemoon/lodge/residential) +"cy" = ( +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/gear_room) +"cA" = ( +/obj/effect/turf_decal/spline/fancy/wood/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/popcorn, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"cS" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 6 + }, +/turf/open/floor/wood/ebony/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"cW" = ( +/obj/effect/turf_decal/spline/fancy/wood/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"da" = ( +/obj/structure/railing{ + layer = 3.1 + }, +/turf/open/floor/plating/asteroid/snow/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"dc" = ( +/obj/structure/fence/door{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/icerock/cracked, +/area/overmap_encounter/planetoid/cave/explored) +"dd" = ( +/obj/effect/mob_spawn/human/corpse/srm/hunter, +/turf/open/floor/grass/ship/jungle, +/area/ruin/powered/icemoon/lodge/residential) +"dl" = ( +/obj/effect/turf_decal/spline/fancy/wood/corner{ + dir = 8 + }, +/obj/effect/turf_decal/spline/fancy/wood/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/crayon{ + icon_state = "skull"; + pixel_x = 4; + pixel_y = -1 + }, +/obj/item/paper/crumpled/bloody/fluff/ruin/icemoon/cellar_warning{ + pixel_x = -12 + }, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"dn" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/gear_room) +"ds" = ( +/obj/item/roastingstick, +/turf/open/floor/grass/ship/jungle, +/area/ruin/powered/icemoon/lodge/residential) +"dA" = ( +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 6 + }, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/montagne_office) +"dO" = ( +/turf/closed/wall/mineral/wood, +/area/overmap_encounter/planetoid/cave/explored) +"dT" = ( +/obj/effect/turf_decal/corner/opaque/blue/diagonal, +/obj/structure/table/wood, +/obj/item/melee/baton/cattleprod/loaded, +/obj/item/storage/backpack/duffelbag/med/surgery, +/turf/open/floor/plasteel/white, +/area/ruin/powered/icemoon/lodge/residential) +"dV" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken6" + }, +/area/ruin/powered/icemoon/lodge/mainhall) +"dZ" = ( +/obj/structure/closet/cabinet{ + name = "broken shadow's locker"; + desc = "The closet of equipment and attire for the aspiring shadow. Or whichever guy broke this closet's lock." + }, +/obj/item/clothing/suit/armor/roumain/shadow, +/obj/item/clothing/head/cowboy/sec/roumain/shadow, +/obj/item/clothing/under/suit/roumain, +/obj/item/flashlight/lantern, +/obj/effect/decal/cleanable/shreds{ + pixel_y = -14 + }, +/obj/item/melee/knife/hunting, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/gear_room) +"eg" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken" + }, +/area/ruin/powered/icemoon/lodge/residential) +"ev" = ( +/obj/item/trash/boritos, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"ey" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/human/frontier/ranged/trooper/flame/neuter, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/gear_room) +"eC" = ( +/obj/item/clothing/head/bearpelt{ + pixel_y = 10 + }, +/obj/structure/table/wood, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/mainhall) +"eK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/weather/snow{ + dir = 1 + }, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"eU" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/residential) +"eW" = ( +/obj/effect/turf_decal/siding/blue, +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/plasteel/white, +/area/ruin/powered/icemoon/lodge/residential) +"fa" = ( +/obj/effect/turf_decal/weather/snow{ + dir = 4 + }, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"fe" = ( +/obj/item/bedsheet/random, +/obj/effect/turf_decal/siding/wood, +/obj/structure/bed{ + icon_state = "dirty_mattress" + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/residential) +"fg" = ( +/obj/structure/chair/wood/wings{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/human/frontier/internals, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/mainhall) +"fn" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/oil/slippery, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/residential) +"fu" = ( +/mob/living/simple_animal/hostile/human/frontier/internals, +/turf/open/floor/ship/dirt/dark, +/area/ruin/powered/icemoon/lodge/residential) +"fw" = ( +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/montagne_office) +"fA" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 1 + }, +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white, +/area/ruin/powered/icemoon/lodge/residential) +"fF" = ( +/obj/structure/table/wood, +/obj/item/trash/syndi_cakes{ + pixel_y = 4; + pixel_x = -2 + }, +/turf/open/floor/carpet/black, +/area/ruin/powered/icemoon/lodge/mainhall) +"fI" = ( +/obj/structure/chair/wood/wings{ + dir = 4 + }, +/turf/open/floor/carpet/red_gold, +/area/ruin/powered/icemoon/lodge/montagne_office) +"fX" = ( +/obj/effect/decal/cleanable/crayon{ + icon_state = "shotgun"; + pixel_x = 4; + pixel_y = -9; + paint_colour = "#FF0000" + }, +/turf/closed/indestructible/wood, +/area/ruin/powered/icemoon/lodge/gear_room) +"gp" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/item/ammo_box/magazine/c22lr_pounder_pan, +/obj/item/storage/box/ammo/c22lr{ + pixel_y = 12; + pixel_x = -6 + }, +/obj/item/storage/box/ammo/c22lr{ + pixel_y = 12; + pixel_x = 14 + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/gear_room) +"gr" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/item/ammo_box/magazine/c45_firestorm_mag/pan{ + start_empty = 1 + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/cellar) +"gs" = ( +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/plating/asteroid/snow/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"gz" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/pen/fountain/captain, +/turf/open/floor/carpet/red_gold, +/area/ruin/powered/icemoon/lodge/montagne_office) +"gI" = ( +/turf/closed/indestructible/wood, +/area/ruin/powered/icemoon/lodge/gear_room) +"gR" = ( +/obj/structure/chair/pew{ + dir = 1 + }, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"hj" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/icemoon{ + icon_state = "wood-broken5" + }, +/area/overmap_encounter/planetoid/cave/explored) +"hs" = ( +/obj/effect/turf_decal/spline/fancy/wood, +/obj/effect/decal/cleanable/food/tomato_smudge, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"hz" = ( +/mob/living/simple_animal/hostile/human/frontier/ranged/trooper/skm/internals/neutered{ + check_friendly_fire = 1; + retreat_distance = 3; + minimum_distance = 2 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet, +/area/ruin/powered/icemoon/lodge/residential) +"hI" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 8 + }, +/turf/open/floor/wood/ebony{ + icon_state = "wood-broken4" + }, +/area/ruin/powered/icemoon/lodge/residential) +"ib" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/residential) +"ii" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"ik" = ( +/obj/structure/fireplace, +/obj/structure/fluff/paper/stack{ + dir = 5; + layer = 2.79; + pixel_y = 4 + }, +/obj/structure/fluff/paper/stack{ + dir = 4; + pixel_y = 9; + layer = 2.79 + }, +/obj/structure/fluff/paper/stack{ + dir = 1 + }, +/obj/effect/decal/cleanable/ash/large{ + pixel_y = -10 + }, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/mainhall) +"iw" = ( +/turf/open/floor/plating/ice/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"iB" = ( +/obj/item/mine/proximity/explosive/live{ + layer = 2.8 + }, +/obj/structure/statue/snow/snowman, +/turf/open/floor/plating/asteroid/icerock, +/area/overmap_encounter/planetoid/cave/explored) +"iE" = ( +/obj/item/toy/plush/moth/punished{ + name = "Flufftunato"; + desc = "For the love of god Mothtresor!"; + pixel_y = 9 + }, +/obj/structure/fermenting_barrel, +/turf/open/floor/plating/asteroid/icerock/temperate, +/area/overmap_encounter/planetoid/cave/explored) +"iG" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/mahogany{ + icon_state = "wood-broken3" + }, +/area/ruin/powered/icemoon/lodge/mainhall) +"iH" = ( +/obj/effect/decal/cleanable/crayon{ + icon_state = "+"; + pixel_x = 12; + pixel_y = -1; + paint_colour = "#ADD8E6" + }, +/turf/closed/wall/mineral/wood, +/area/ruin/powered/icemoon/lodge/residential) +"je" = ( +/obj/structure/table/wood, +/obj/item/modular_computer/laptop, +/turf/open/floor/carpet/red_gold, +/area/ruin/powered/icemoon/lodge/montagne_office) +"jk" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 10 + }, +/obj/machinery/iv_drip, +/obj/effect/decal/cleanable/vomit/old, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white, +/area/ruin/powered/icemoon/lodge/residential) +"jx" = ( +/obj/structure/guncloset, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/gun/ballistic/shotgun/flamingarrow, +/obj/item/gun/ballistic/revolver/shadow, +/obj/item/gun/ballistic/automatic/smg/pounder, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/gear_room) +"jB" = ( +/obj/structure/flora/rock/pile/icy{ + icon_state = "icemoonrock3" + }, +/turf/open/floor/plating/asteroid/snow/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"jD" = ( +/obj/effect/turf_decal/siding/wood/end{ + dir = 8 + }, +/obj/machinery/door/airlock/wood{ + dir = 4 + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/mainhall) +"jM" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/glass/filter{ + pixel_y = 14; + pixel_x = -6 + }, +/obj/item/reagent_containers/food/drinks/sillycup{ + pixel_x = 4; + pixel_y = 6; + name = "paper sieve"; + desc = "A paper seive for funneling gunpowder." + }, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/mainhall) +"jP" = ( +/obj/structure/railing/wood{ + dir = 10 + }, +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/wood/icemoon{ + icon_state = "wood-broken7" + }, +/area/overmap_encounter/planetoid/cave/explored) +"jR" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/breakawayflask/vintage/hearthwine{ + pixel_x = 6; + pixel_y = 12 + }, +/obj/item/reagent_containers/food/drinks/breakawayflask/vintage/icewine{ + pixel_x = -6; + pixel_y = 12 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/cellar) +"jS" = ( +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 1 + }, +/obj/item/trash/plate{ + pixel_y = 8; + pixel_x = 10 + }, +/obj/item/trash/plate{ + pixel_y = 10; + pixel_x = 10 + }, +/obj/item/trash/plate{ + pixel_y = 12; + pixel_x = 10 + }, +/obj/item/trash/plate{ + pixel_y = 14; + pixel_x = 10 + }, +/obj/effect/decal/cleanable/garbage, +/obj/effect/decal/cleanable/insectguts, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"ka" = ( +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 1 + }, +/obj/item/kirbyplants{ + icon_state = "plant-25"; + pixel_y = 12; + pixel_x = -2 + }, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/montagne_office) +"kl" = ( +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 8 + }, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"ko" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken" + }, +/area/ruin/powered/icemoon/lodge/mainhall) +"kq" = ( +/obj/structure/chair/wood/wings, +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/human/frontier/ranged/officer/internals, +/turf/open/floor/carpet/black, +/area/ruin/powered/icemoon/lodge/mainhall) +"kG" = ( +/obj/structure/railing/wood, +/obj/structure/chair/wood/wings{ + dir = 8 + }, +/obj/effect/decal/cleanable/vomit/old, +/turf/open/floor/wood/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"kX" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/gear_room) +"kZ" = ( +/obj/structure/fluff/fokoff_sign{ + desc = "A crudsely-made sign with the words 'fok of' written in some sort of red paint." + }, +/turf/open/floor/plating/asteroid/icerock, +/area/overmap_encounter/planetoid/cave/explored) +"lg" = ( +/obj/structure/flora/ash/puce, +/turf/open/floor/plating/asteroid/icerock, +/area/overmap_encounter/planetoid/cave/explored) +"lh" = ( +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/grass/ship/jungle, +/area/ruin/powered/icemoon/lodge/residential) +"lE" = ( +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/crayon, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"lJ" = ( +/obj/structure/flora/grass/green, +/obj/item/mine/pressure/explosive/rusty/live, +/turf/open/floor/plating/asteroid/icerock, +/area/overmap_encounter/planetoid/cave/explored) +"lM" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 5 + }, +/obj/structure/closet/crate/bin, +/obj/item/storage/firstaid/roumain, +/obj/item/reagent_containers/food/snacks/grown/ash_flora/puce, +/obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf, +/obj/item/reagent_containers/glass/mortar, +/obj/item/disk/holodisk/roumain, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white, +/area/ruin/powered/icemoon/lodge/residential) +"lU" = ( +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 5 + }, +/obj/machinery/door/airlock/wood{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/locked, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/cellar) +"mc" = ( +/obj/machinery/door/airlock/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/end{ + dir = 4 + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/residential) +"mj" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/mainhall) +"ms" = ( +/obj/structure/rack, +/obj/item/gun/ballistic/shotgun/brimstone, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/mainhall) +"mz" = ( +/obj/structure/destructible/tribal_torch/lit, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/mainhall) +"mF" = ( +/obj/structure/rack, +/obj/item/clothing/suit/armor/roumain{ + pixel_x = 6; + pixel_y = 3 + }, +/obj/item/clothing/suit/armor/roumain{ + pixel_x = 6 + }, +/obj/item/clothing/head/cowboy/sec/roumain{ + pixel_x = -6; + pixel_y = -3 + }, +/obj/item/clothing/head/cowboy/sec/roumain{ + pixel_x = -6; + pixel_y = 6 + }, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/mainhall) +"mH" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/mainhall) +"mI" = ( +/obj/structure/table/wood, +/obj/item/stack/sheet/hairlesshide, +/obj/item/stack/sheet/hairlesshide, +/obj/item/stack/sheet/hairlesshide, +/obj/item/stack/sheet/hairlesshide, +/obj/item/stack/sheet/cotton/durathread, +/obj/item/stack/sheet/cotton/durathread, +/obj/item/stack/sheet/cotton/durathread, +/obj/item/stack/sheet/cotton/durathread, +/obj/item/stack/sheet/cotton/durathread, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/mainhall) +"mL" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/weather/snow{ + dir = 6 + }, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"mP" = ( +/obj/structure/closet/cabinet, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/head/frontier/peaked, +/obj/item/clothing/suit/armor/frontier, +/obj/item/clothing/under/frontiersmen/officer, +/obj/item/ammo_box/magazine/m9mm_mauler, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/montagne_office) +"nc" = ( +/obj/effect/turf_decal/stoneborder, +/obj/effect/turf_decal/stoneborder{ + dir = 1 + }, +/obj/structure/toilet{ + dir = 4; + pixel_x = -6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/destructible/tribal_torch/lit{ + pixel_y = 20 + }, +/turf/open/floor/plasteel/mono/dark, +/area/ruin/powered/icemoon/lodge/residential) +"nd" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken3" + }, +/area/ruin/powered/icemoon/lodge/cellar) +"ne" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/generic, +/turf/open/floor/wood/ebony{ + icon_state = "wood-broken4" + }, +/area/ruin/powered/icemoon/lodge/residential) +"nm" = ( +/obj/effect/turf_decal/corner/opaque/blue/diagonal, +/obj/structure/closet/crate/freezer, +/obj/item/organ/ears, +/obj/item/organ/eyes, +/obj/item/organ/heart, +/obj/item/organ/lungs, +/obj/item/organ/liver, +/obj/item/organ/stomach, +/obj/item/clothing/suit/toggle/labcoat/roumain_med, +/obj/item/clothing/head/cowboy/sec/roumain/med, +/obj/item/reagent_containers/blood/random, +/obj/item/reagent_containers/blood/random, +/obj/effect/decal/cleanable/blood/gibs/old, +/turf/open/floor/plasteel/white, +/area/ruin/powered/icemoon/lodge/residential) +"no" = ( +/obj/structure/table/wood, +/obj/machinery/fax/ruin, +/turf/open/floor/carpet/red_gold, +/area/ruin/powered/icemoon/lodge/montagne_office) +"nr" = ( +/obj/effect/decal/cleanable/crayon{ + icon_state = "nay"; + pixel_y = -8; + pixel_x = 8; + paint_colour = "#FF0000" + }, +/obj/effect/turf_decal/weather/snow{ + dir = 8 + }, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"nD" = ( +/obj/effect/turf_decal/siding/wood/end{ + dir = 1 + }, +/obj/machinery/door/airlock/wood{ + name = "Greenhouse" + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/residential) +"nQ" = ( +/obj/effect/turf_decal/weather/snow{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"nS" = ( +/obj/structure/bookcase, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/mainhall) +"oa" = ( +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/montagne_office) +"ot" = ( +/obj/effect/turf_decal/weather/snow{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"ou" = ( +/obj/structure/railing/wood, +/obj/structure/chair/wood/wings{ + dir = 4 + }, +/turf/open/floor/wood/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"oC" = ( +/turf/open/floor/carpet, +/area/ruin/powered/icemoon/lodge/residential) +"oT" = ( +/obj/structure/flora/ash/garden/frigid, +/turf/open/floor/plating/asteroid/snow/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"pf" = ( +/obj/item/restraints/legcuffs/beartrap{ + armed = 1 + }, +/obj/item/kirbyplants, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/cellar) +"pi" = ( +/obj/structure/destructible/tribal_torch/lit, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/mainhall) +"px" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/destructible/tribal_torch/lit{ + pixel_y = 18 + }, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken7" + }, +/area/ruin/powered/icemoon/lodge/residential) +"pG" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/restraints/legcuffs/beartrap{ + armed = 1 + }, +/obj/effect/gibspawner/human/bodypartless, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/cellar) +"pK" = ( +/obj/effect/turf_decal/siding/brown, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ebony/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"pS" = ( +/obj/structure/noticeboard{ + name = "trophy board"; + desc = "A board for hanging trophies upon." + }, +/obj/item/clothing/mask/rat/bear{ + pixel_y = -2; + name = "bear head"; + desc = "A taxidermied bear head for mounting on a headboard. You swear it's still staring at you." + }, +/turf/closed/wall/mineral/wood, +/area/ruin/powered/icemoon/lodge/montagne_office) +"qb" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/candle/tribal_torch, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/gun/ballistic/automatic/smg/firestorm{ + spawnwithmagazine = 0 + }, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken4" + }, +/area/ruin/powered/icemoon/lodge/cellar) +"qd" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 8 + }, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/gear_room) +"qg" = ( +/obj/structure/table/greyscale, +/obj/effect/turf_decal/weather/snow, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"qr" = ( +/obj/item/target/alien, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"qD" = ( +/obj/structure/fence/door, +/turf/open/floor/plating/asteroid/icerock, +/area/overmap_encounter/planetoid/cave/explored) +"qH" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/food/snacks/meat/slab/bear, +/obj/item/reagent_containers/food/snacks/meat/slab/bear, +/obj/item/reagent_containers/food/snacks/meat/slab/bear, +/obj/item/reagent_containers/food/snacks/egg, +/obj/item/reagent_containers/food/snacks/egg, +/obj/item/reagent_containers/food/snacks/egg, +/obj/item/reagent_containers/food/drinks/bottle/absinthe/premium, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/residential) +"qJ" = ( +/obj/item/mine/pressure/explosive/rusty/live, +/turf/open/floor/plating/asteroid/icerock, +/area/overmap_encounter/planetoid/cave/explored) +"qK" = ( +/obj/effect/turf_decal/stoneborder{ + dir = 1 + }, +/obj/effect/turf_decal/stoneborder, +/obj/effect/decal/cleanable/dirt, +/obj/structure/mirror{ + pixel_y = 33; + pixel_x = 2 + }, +/obj/structure/sink{ + pixel_x = 2; + pixel_y = 20 + }, +/turf/open/floor/plasteel/mono/dark, +/area/ruin/powered/icemoon/lodge/residential) +"qN" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/machinery/door/airlock/wood, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/mainhall) +"qO" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ebony{ + icon_state = "wood-broken4" + }, +/area/ruin/powered/icemoon/lodge/residential) +"qR" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/cellar) +"qY" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/mainhall) +"rm" = ( +/turf/open/floor/ship/dirt/dark, +/area/ruin/powered/icemoon/lodge/residential) +"rs" = ( +/obj/structure/falsewall/wood, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/cellar) +"rx" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/item/storage/belt/security/military/frontiersmen{ + pixel_y = -2 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/melee/knife/survival{ + pixel_y = 10; + pixel_x = 3 + }, +/obj/item/melee/knife/survival{ + pixel_y = 10; + pixel_x = -7 + }, +/obj/item/melee/knife/survival{ + pixel_y = 10; + pixel_x = 13 + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/gear_room) +"rF" = ( +/obj/structure/flora/junglebush, +/turf/open/floor/ship/dirt/dark, +/area/ruin/powered/icemoon/lodge/residential) +"rO" = ( +/obj/item/broken_bottle{ + pixel_x = 15; + pixel_y = 4 + }, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"rS" = ( +/obj/structure/fence{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/icerock, +/area/overmap_encounter/planetoid/cave/explored) +"rT" = ( +/obj/effect/turf_decal/weather/snow{ + dir = 1 + }, +/obj/item/trash/popcorn, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"rW" = ( +/obj/structure/chair/wood/wings{ + dir = 4 + }, +/turf/open/floor/carpet/black, +/area/ruin/powered/icemoon/lodge/mainhall) +"rZ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/gear_room) +"sc" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 4 + }, +/turf/open/floor/wood/ebony/icemoon{ + icon_state = "wood-broken2" + }, +/area/overmap_encounter/planetoid/cave/explored) +"sd" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 10 + }, +/turf/open/floor/wood/ebony/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"sk" = ( +/obj/effect/decal/cleanable/oil/slippery, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/gear_room) +"st" = ( +/obj/structure/closet/secure_closet/medicalsrm, +/obj/item/sensor_device, +/obj/item/clothing/suit/frontiersmen, +/obj/item/clothing/head/frontier, +/obj/item/clothing/gloves/color/latex, +/obj/item/clothing/mask/surgical, +/obj/effect/spawner/lootdrop/chem_jug, +/obj/effect/spawner/lootdrop/chem_jug, +/obj/effect/spawner/lootdrop/chem_jug, +/obj/effect/spawner/lootdrop/chem_jug, +/obj/effect/turf_decal/corner/opaque/blue, +/obj/effect/turf_decal/corner/opaque/neutral{ + dir = 4 + }, +/obj/item/clothing/neck/stethoscope, +/turf/open/floor/plating/rust, +/area/ruin/powered/icemoon/lodge/residential) +"sx" = ( +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 4 + }, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/montagne_office) +"sD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/weather/snow, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"sG" = ( +/obj/structure/railing, +/turf/open/floor/plating/asteroid/snow/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"sJ" = ( +/obj/structure/flora/rock/pile/icy{ + icon_state = "icemoonrock3" + }, +/turf/open/floor/plating/asteroid/icerock, +/area/overmap_encounter/planetoid/cave/explored) +"sO" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken7" + }, +/area/ruin/powered/icemoon/lodge/cellar) +"sR" = ( +/obj/structure/table/wood, +/obj/item/paper/crumpled/bloody/fluff/ruin/icemoon/tally_sheet{ + pixel_x = -4 + }, +/obj/item/pen{ + pixel_x = 8 + }, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"sW" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/mainhall) +"sX" = ( +/obj/effect/turf_decal/weather/snow, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"sY" = ( +/obj/effect/turf_decal/spline/fancy/wood/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/vomit/old{ + icon_state = "vomit_4"; + pixel_x = -1; + pixel_y = -19 + }, +/turf/open/floor/wood/mahogany{ + icon_state = "wood-broken7" + }, +/area/ruin/powered/icemoon/lodge/mainhall) +"ti" = ( +/obj/item/cultivator/rake, +/turf/open/floor/grass/ship/jungle, +/area/ruin/powered/icemoon/lodge/residential) +"tl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/neutral{ + dir = 9 + }, +/turf/open/floor/plating/rust, +/area/ruin/powered/icemoon/lodge/residential) +"tn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/can{ + pixel_x = -4; + pixel_y = 5 + }, +/obj/item/trash/can{ + pixel_y = -4; + pixel_x = 6 + }, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"tq" = ( +/obj/effect/turf_decal/spline/fancy/wood, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/mahogany{ + icon_state = "wood-broken2" + }, +/area/ruin/powered/icemoon/lodge/mainhall) +"tr" = ( +/obj/effect/turf_decal/spline/fancy/wood, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/montagne_office) +"tx" = ( +/turf/open/floor/plasteel/stairs/wood/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"ty" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/mainhall) +"tD" = ( +/obj/structure/table/wood, +/obj/item/stack/sheet/cotton/cloth/ten, +/obj/item/scalpel{ + name = "leather knife"; + desc = "A sharpened leather knife, used for leatherwork." + }, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/mainhall) +"tG" = ( +/obj/effect/decal/cleanable/oil/slippery, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/turf/open/floor/plasteel/stairs/wood{ + dir = 8 + }, +/area/ruin/powered/icemoon/lodge/cellar) +"tL" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/mainhall) +"tN" = ( +/obj/item/chair/wood{ + dir = 8 + }, +/turf/open/floor/carpet/black, +/area/ruin/powered/icemoon/lodge/mainhall) +"tT" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/residential) +"tW" = ( +/mob/living/simple_animal/hostile/human/frontier/ranged/internals/neutered{ + minimum_distance = 2; + retreat_distance = 2; + check_friendly_fire = 1 + }, +/obj/effect/turf_decal/weather/snow{ + dir = 1 + }, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"tX" = ( +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 8 + }, +/obj/item/trash/semki, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"ud" = ( +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/mainhall) +"um" = ( +/obj/structure/displaycase/broken, +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 5 + }, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"uy" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken" + }, +/area/ruin/powered/icemoon/lodge/residential) +"uA" = ( +/obj/item/stack/sheet/durathread{ + pixel_x = -10; + pixel_y = 10 + }, +/obj/structure/rack, +/obj/item/stack/sheet/durathread, +/obj/item/stack/sheet/durathread{ + pixel_y = 10 + }, +/obj/item/stack/sheet/durathread{ + pixel_x = -10 + }, +/obj/item/stack/sheet/leather, +/obj/item/stack/sheet/leather, +/obj/item/stack/sheet/leather, +/obj/item/stack/sheet/leather, +/obj/item/stack/sheet/leather, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/mainhall) +"uG" = ( +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken" + }, +/area/ruin/powered/icemoon/lodge/mainhall) +"uL" = ( +/obj/structure/table/wood, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 10 + }, +/obj/item/gun/ballistic/automatic/zip_pistol, +/obj/item/chisel{ + pixel_x = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/mainhall) +"uM" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/machinery/door/airlock/wood, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken7" + }, +/area/ruin/powered/icemoon/lodge/mainhall) +"uR" = ( +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/residential) +"uX" = ( +/obj/effect/decal/cleanable/plastic, +/obj/effect/turf_decal/corner/opaque/neutral{ + dir = 4 + }, +/turf/open/floor/plating/rust, +/area/ruin/powered/icemoon/lodge/residential) +"vd" = ( +/obj/effect/turf_decal/siding/brown, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ebony{ + icon_state = "wood-broken3" + }, +/area/ruin/powered/icemoon/lodge/residential) +"ve" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/mainhall) +"vf" = ( +/obj/structure/table/wood, +/obj/item/seeds/cannabis{ + layer = 2.9 + }, +/obj/item/clothing/mask/cigarette/pipe, +/obj/item/lighter{ + pixel_x = 11; + pixel_y = 7 + }, +/turf/open/floor/carpet/red_gold, +/area/ruin/powered/icemoon/lodge/montagne_office) +"vq" = ( +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/mahogany{ + icon_state = "wood-broken2" + }, +/area/ruin/powered/icemoon/lodge/mainhall) +"vs" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ebony{ + icon_state = "wood-broken7" + }, +/area/ruin/powered/icemoon/lodge/residential) +"vG" = ( +/obj/effect/turf_decal/weather/snow{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"vZ" = ( +/obj/structure/displaycase/broken, +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 9 + }, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"wc" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/effect/decal/cleanable/blood/tracks{ + dir = 4 + }, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken" + }, +/area/ruin/powered/icemoon/lodge/cellar) +"wi" = ( +/obj/effect/turf_decal/spline/fancy/wood/corner{ + dir = 4 + }, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"wj" = ( +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"wm" = ( +/turf/open/floor/wood/ebony/icemoon{ + icon_state = "wood-broken6" + }, +/area/overmap_encounter/planetoid/cave/explored) +"wt" = ( +/obj/structure/railing{ + layer = 3.1 + }, +/obj/effect/turf_decal/weather/snow{ + dir = 5 + }, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"wx" = ( +/obj/effect/turf_decal/weather/snow{ + dir = 9 + }, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"wy" = ( +/obj/structure/chair/stool{ + dir = 4 + }, +/mob/living/simple_animal/hostile/human/frontier/internals, +/turf/open/floor/carpet/black, +/area/ruin/powered/icemoon/lodge/mainhall) +"wD" = ( +/obj/structure/bed, +/obj/item/bedsheet/random, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken6" + }, +/area/ruin/powered/icemoon/lodge/residential) +"wF" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/item/ammo_box/magazine/c45_firestorm_mag/pan{ + start_empty = 1 + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/cellar) +"wT" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/cellar) +"wU" = ( +/mob/living/simple_animal/hostile/human/frontier/ranged/trooper/internals/neutered{ + retreat_distance = null; + minimum_distance = 1; + shoot_point_blank = 1 + }, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/residential) +"xb" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/mahogany{ + icon_state = "wood-broken2" + }, +/area/ruin/powered/icemoon/lodge/mainhall) +"xd" = ( +/obj/structure/rack, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/storage/box/ammo/a44roum{ + pixel_x = 5 + }, +/obj/item/storage/box/ammo/c38{ + pixel_y = 0; + pixel_x = -11 + }, +/obj/item/storage/box/ammo/c38{ + pixel_y = 9; + pixel_x = -12 + }, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/gear_room) +"xk" = ( +/obj/effect/turf_decal/spline/fancy/wood, +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/human/frontier/ranged/trooper/heavy/internals/neutered{ + aggro_vision_range = 12 + }, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/montagne_office) +"xu" = ( +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/gear_room) +"xL" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"xM" = ( +/obj/effect/turf_decal/spline/fancy/wood, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"xN" = ( +/obj/item/hatchet/wooden{ + pixel_x = -6 + }, +/turf/open/floor/grass/ship/jungle, +/area/ruin/powered/icemoon/lodge/residential) +"yc" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/mob/living/simple_animal/hostile/human/frontier/ranged/internals/neutered{ + minimum_distance = 2; + retreat_distance = 2; + check_friendly_fire = 1 + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/mainhall) +"yi" = ( +/obj/item/bedsheet/random, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/structure/bed{ + icon_state = "dirty_mattress" + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/residential) +"yj" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/residential) +"yo" = ( +/obj/structure/flora/grass/jungle, +/obj/item/clothing/suit/armor/roumain/shadow, +/obj/item/clothing/head/cowboy/sec/roumain/shadow{ + pixel_y = 15; + pixel_x = -5 + }, +/obj/item/storage/wallet{ + pixel_x = 7; + pixel_y = -7 + }, +/obj/effect/decal/cleanable/ash/large{ + pixel_y = 11; + pixel_x = -6 + }, +/turf/open/floor/grass/ship/jungle, +/area/ruin/powered/icemoon/lodge/residential) +"yp" = ( +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 5 + }, +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/montagne_office) +"yE" = ( +/turf/closed/wall/mineral/wood, +/area/ruin/powered/icemoon/lodge/mainhall) +"yH" = ( +/obj/structure/fence/door, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"yO" = ( +/obj/structure/chair/wood/wings{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet/black, +/area/ruin/powered/icemoon/lodge/mainhall) +"yQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/gear_room) +"zh" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/punji_sticks, +/obj/effect/mob_spawn/human/corpse/frontier, +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/cellar) +"zz" = ( +/turf/open/floor/carpet/red_gold, +/area/ruin/powered/icemoon/lodge/montagne_office) +"zN" = ( +/obj/structure/destructible/tribal_torch/lit, +/obj/effect/turf_decal/siding/brown{ + dir = 9 + }, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/residential) +"zX" = ( +/obj/structure/table/wood, +/obj/item/trash/can/food/beans{ + pixel_x = 6; + pixel_y = 3 + }, +/turf/open/floor/carpet/black, +/area/ruin/powered/icemoon/lodge/mainhall) +"Ag" = ( +/obj/structure/table/wood, +/obj/item/trash/plate{ + pixel_y = 12 + }, +/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton{ + pixel_y = 12 + }, +/turf/open/floor/carpet/black, +/area/ruin/powered/icemoon/lodge/mainhall) +"Ai" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ebony/icemoon{ + icon_state = "wood-broken5" + }, +/area/overmap_encounter/planetoid/cave/explored) +"Aj" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/cellar) +"Ak" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/cellar) +"Aq" = ( +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 4 + }, +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/bottle/moonshine{ + pixel_y = 17; + pixel_x = 9 + }, +/obj/item/reagent_containers/food/drinks/bottle/patron{ + pixel_y = 11; + pixel_x = 6 + }, +/obj/item/storage/pill_bottle/zoom{ + pixel_y = 9 + }, +/obj/item/reagent_containers/food/drinks/bottle/rum{ + pixel_x = 2 + }, +/obj/item/reagent_containers/pill/lsd{ + pixel_y = 6; + pixel_x = -6 + }, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"Ay" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/cellar) +"AB" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken2" + }, +/area/ruin/powered/icemoon/lodge/mainhall) +"AE" = ( +/obj/structure/destructible/tribal_torch/lit, +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 5 + }, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"AJ" = ( +/obj/structure/flora/stump{ + name = "Montagnue's Stump" + }, +/turf/open/floor/grass/ship/jungle, +/area/ruin/powered/icemoon/lodge/residential) +"AO" = ( +/obj/structure/table/wood, +/obj/item/weaponcrafting/stock, +/obj/item/weaponcrafting/receiver{ + pixel_y = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/mainhall) +"AX" = ( +/obj/structure/punji_sticks, +/obj/effect/decal/cleanable/blood/splatter, +/obj/effect/gibspawner/human/bodypartless, +/obj/effect/mob_spawn/human/corpse/frontier, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/cellar) +"Bf" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 8 + }, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/turf/open/floor/wood/mahogany{ + icon_state = "wood-broken6" + }, +/area/ruin/powered/icemoon/lodge/mainhall) +"Bx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/human/frontier/ranged/trooper/skm/internals/neutered{ + check_friendly_fire = 1; + retreat_distance = 3; + minimum_distance = 2 + }, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken5" + }, +/area/ruin/powered/icemoon/lodge/gear_room) +"BL" = ( +/obj/structure/table/wood/fancy, +/obj/item/gem/amber{ + pixel_y = 20; + pixel_x = -2 + }, +/obj/item/candle/infinite{ + pixel_y = 2; + pixel_x = 4 + }, +/obj/item/candle/infinite{ + pixel_y = 2; + pixel_x = -8 + }, +/obj/item/candle/infinite{ + pixel_y = 2; + pixel_x = -2 + }, +/obj/item/candle/infinite{ + pixel_y = 12; + pixel_x = 10 + }, +/obj/item/candle/infinite{ + pixel_y = 2; + pixel_x = 10 + }, +/obj/item/candle/infinite{ + pixel_y = 22; + pixel_x = 10 + }, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/montagne_office) +"BQ" = ( +/obj/structure/flora/grass/both, +/turf/open/floor/plating/asteroid/snow/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"BU" = ( +/obj/effect/decal/cleanable/greenglow, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/residential) +"Cm" = ( +/obj/structure/closet/secure_closet{ + icon_state = "sec"; + name = "equipment locker"; + req_access_txt = "1" + }, +/obj/item/clothing/suit/armor/vest/bulletproof/frontier, +/obj/item/clothing/head/helmet/bulletproof/x11/frontier, +/obj/item/clothing/suit/armor/vest/bulletproof/frontier, +/obj/item/clothing/head/helmet/bulletproof/x11/frontier, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/combat, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/gear_room) +"Cq" = ( +/obj/structure/railing/wood, +/obj/structure/table/wood, +/obj/item/binoculars, +/turf/open/floor/wood/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"Cs" = ( +/obj/structure/fireplace, +/obj/item/throwing_star/magspear{ + name = "fire poker"; + desc = "A small metal rod used to stir up fireplaces. This one is adorned with ornate golden filigree" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/residential) +"Cu" = ( +/turf/closed/wall/mineral/wood, +/area/ruin/powered/icemoon/lodge/cellar) +"Cw" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken5" + }, +/area/ruin/powered/icemoon/lodge/residential) +"CG" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/mainhall) +"CN" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken5" + }, +/area/ruin/powered/icemoon/lodge/mainhall) +"CU" = ( +/obj/structure/railing/wood{ + dir = 9 + }, +/turf/open/floor/wood/icemoon{ + icon_state = "wood-broken2" + }, +/area/overmap_encounter/planetoid/cave/explored) +"CW" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 4 + }, +/turf/open/floor/wood/ebony/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"Dj" = ( +/obj/effect/turf_decal/weather/snow{ + dir = 1 + }, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"Do" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"DA" = ( +/obj/structure/railing/wood{ + dir = 4 + }, +/turf/open/floor/wood/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"DB" = ( +/obj/item/grown/log/tree{ + pixel_x = -6; + pixel_y = 12; + auto_scatter = 0 + }, +/obj/item/grown/log/tree{ + pixel_x = 6; + pixel_y = 12; + auto_scatter = 0 + }, +/obj/item/grown/log/tree{ + pixel_y = 18; + auto_scatter = 0 + }, +/obj/structure/table/wood, +/obj/item/storage/box/matches{ + pixel_y = 2 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/residential) +"DM" = ( +/obj/structure/destructible/tribal_torch/lit, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/ruin/powered/icemoon/lodge/residential) +"DR" = ( +/obj/effect/turf_decal/spline/fancy/wood/cee, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/residential) +"Eb" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/mainhall) +"Ec" = ( +/turf/open/floor/plating/asteroid/icerock/cracked, +/area/overmap_encounter/planetoid/cave/explored) +"Ek" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken5" + }, +/area/ruin/powered/icemoon/lodge/mainhall) +"Er" = ( +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 10 + }, +/obj/machinery/door/airlock/wood{ + dir = 4 + }, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"Ez" = ( +/turf/open/floor/plasteel/stairs/wood, +/area/ruin/powered/icemoon/lodge/cellar) +"Fj" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/cellar) +"Fy" = ( +/obj/structure/chair/plastic{ + dir = 8 + }, +/obj/item/trash/candy, +/turf/open/floor/carpet/black, +/area/ruin/powered/icemoon/lodge/mainhall) +"FL" = ( +/obj/effect/turf_decal/siding/blue/corner{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/siding/blue/corner, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/rust, +/area/ruin/powered/icemoon/lodge/residential) +"Gb" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/mainhall) +"Gd" = ( +/obj/structure/flora/grass/brown, +/turf/open/floor/plating/asteroid/snow/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"Ge" = ( +/obj/structure/chair/wood/wings, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/mainhall) +"Gn" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/breakawayflask/vintage/prismwine{ + pixel_x = 6; + pixel_y = 12 + }, +/obj/item/reagent_containers/food/drinks/breakawayflask/vintage/shockwine{ + pixel_x = -6; + pixel_y = 12 + }, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/cellar) +"Gq" = ( +/obj/effect/turf_decal/siding/blue, +/obj/effect/turf_decal/corner/opaque/neutral{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/rust, +/area/ruin/powered/icemoon/lodge/residential) +"Gs" = ( +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/cellar) +"Gv" = ( +/obj/structure/railing/wood{ + dir = 10 + }, +/turf/open/floor/wood/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"Gy" = ( +/turf/template_noop, +/area/template_noop) +"GA" = ( +/obj/structure/fence{ + dir = 4 + }, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"GD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"GN" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet/black, +/area/ruin/powered/icemoon/lodge/mainhall) +"GR" = ( +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"GS" = ( +/obj/structure/railing/wood{ + dir = 6 + }, +/obj/structure/chair/wood/wings{ + dir = 8 + }, +/turf/open/floor/wood/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"GT" = ( +/obj/structure/railing/wood, +/obj/structure/chair/wood/wings{ + dir = 4 + }, +/turf/open/floor/wood/icemoon{ + icon_state = "wood-broken5" + }, +/area/overmap_encounter/planetoid/cave/explored) +"Hl" = ( +/turf/closed/mineral/random/snow/underground, +/area/overmap_encounter/planetoid/cave/explored) +"HC" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ebony{ + icon_state = "wood-broken5" + }, +/area/ruin/powered/icemoon/lodge/residential) +"HG" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/structure/table/wood, +/obj/item/shovel/spade, +/obj/item/reagent_containers/glass/bucket/wooden{ + pixel_x = 6 + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/residential) +"HO" = ( +/obj/structure/windoor_assembly{ + dir = 4; + name = "broken windoor" + }, +/obj/item/shard, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/gear_room) +"HQ" = ( +/obj/structure/table/wood/fancy, +/obj/item/candle/infinite{ + pixel_y = 11; + pixel_x = -2 + }, +/obj/item/candle/infinite{ + pixel_y = 11; + pixel_x = -8 + }, +/obj/item/candle/infinite{ + pixel_y = 11; + pixel_x = 4 + }, +/obj/item/candle/infinite{ + pixel_y = 0; + pixel_x = 10 + }, +/obj/item/candle/infinite{ + pixel_y = 11; + pixel_x = 10 + }, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/montagne_office) +"HV" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken4" + }, +/area/ruin/powered/icemoon/lodge/mainhall) +"HZ" = ( +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 9 + }, +/obj/machinery/door/airlock/wood{ + dir = 4 + }, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"Ik" = ( +/obj/structure/fluff/paper/stack{ + dir = 4; + pixel_y = 9; + layer = 2.79 + }, +/obj/item/shovel, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/mainhall) +"Ix" = ( +/mob/living/simple_animal/hostile/human/frontier/ranged/mosin/internals/neutered{ + check_friendly_fire = 1; + minimum_distance = 3 + }, +/obj/effect/turf_decal/weather/snow, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"II" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken3" + }, +/area/ruin/powered/icemoon/lodge/mainhall) +"Ja" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 1 + }, +/obj/item/reagent_containers/syringe/contraband/morphine, +/obj/effect/decal/cleanable/garbage, +/obj/effect/decal/cleanable/insectguts, +/turf/open/floor/plasteel/white, +/area/ruin/powered/icemoon/lodge/residential) +"Jj" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/cellar) +"Jq" = ( +/obj/structure/flora/ash/chilly, +/turf/open/floor/plating/asteroid/snow/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"Js" = ( +/obj/structure/rack, +/obj/effect/turf_decal/siding/brown, +/obj/item/storage/toolbox/electrical{ + pixel_y = 5; + pixel_x = -2 + }, +/obj/item/storage/toolbox/mechanical, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/gear_room) +"JP" = ( +/obj/effect/turf_decal/weather/snow{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"JS" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/human/frontier/ranged/trooper/rifle/internals/neutered{ + minimum_distance = 2 + }, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/residential) +"Kc" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"Kg" = ( +/turf/open/floor/wood/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"Kh" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/structure/sign/poster/contraband/masked_men{ + pixel_y = 27 + }, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken2" + }, +/area/ruin/powered/icemoon/lodge/mainhall) +"Kn" = ( +/mob/living/simple_animal/hostile/human/frontier/ranged/internals/neutered{ + minimum_distance = 2; + retreat_distance = 2; + check_friendly_fire = 1 + }, +/turf/open/floor/grass/ship/jungle, +/area/ruin/powered/icemoon/lodge/residential) +"Ks" = ( +/obj/effect/decal/cleanable/crayon{ + icon_state = "camp"; + pixel_x = 4; + pixel_y = -1 + }, +/turf/closed/wall/mineral/wood, +/area/ruin/powered/icemoon/lodge/residential) +"KF" = ( +/obj/effect/turf_decal/siding/wood/end{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/wood{ + dir = 4 + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/mainhall) +"KH" = ( +/obj/structure/fluff/paper/stack{ + dir = 1 + }, +/obj/effect/decal/cleanable/ash, +/obj/structure/fluff/paper/stack{ + pixel_x = 9 + }, +/obj/structure/fluff/paper/stack{ + dir = 5; + layer = 2.79; + pixel_y = 4 + }, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/mainhall) +"KO" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/food/flour, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/mainhall) +"KR" = ( +/obj/structure/flora/ash/tall_shroom, +/turf/open/floor/plating/asteroid/icerock, +/area/overmap_encounter/planetoid/cave/explored) +"KX" = ( +/obj/structure/fermenting_barrel, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/cellar) +"Lz" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/breakawayflask/vintage/ashwine{ + pixel_y = 12; + pixel_x = -6 + }, +/obj/item/reagent_containers/food/drinks/breakawayflask/vintage/forcewine{ + pixel_x = 6; + pixel_y = 12 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/cellar) +"LC" = ( +/turf/open/floor/wood/icemoon{ + icon_state = "wood-broken" + }, +/area/overmap_encounter/planetoid/cave/explored) +"LD" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/gear_room) +"LF" = ( +/obj/structure/table/wood, +/obj/item/clothing/under/suit/roumain, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/mainhall) +"LM" = ( +/obj/structure/flora/rock/pile/icy{ + icon_state = "icemoonrock1" + }, +/turf/open/floor/plating/asteroid/snow/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"LP" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 8 + }, +/turf/open/floor/wood/ebony/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"LT" = ( +/obj/structure/chair/plastic{ + dir = 4 + }, +/turf/open/floor/carpet/black, +/area/ruin/powered/icemoon/lodge/mainhall) +"LZ" = ( +/obj/effect/turf_decal/siding/brown/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/residential) +"Mt" = ( +/turf/open/floor/wood/icemoon{ + icon_state = "wood-broken4" + }, +/area/overmap_encounter/planetoid/cave/explored) +"Mw" = ( +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"Mx" = ( +/obj/item/chair/wood, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet/black, +/area/ruin/powered/icemoon/lodge/mainhall) +"MC" = ( +/obj/structure/sign/poster/contraband/punch_shit{ + pixel_x = 32 + }, +/turf/open/floor/plating/rust, +/area/ruin/powered/icemoon/lodge/residential) +"MK" = ( +/obj/structure/fence, +/turf/open/floor/plating/asteroid/icerock/cracked, +/area/overmap_encounter/planetoid/cave/explored) +"MO" = ( +/obj/structure/fluff/fokoff_sign{ + desc = "A crudsely-made sign with the words 'fok of' written in some sort of red paint." + }, +/turf/open/floor/plating/asteroid/icerock/cracked, +/area/overmap_encounter/planetoid/cave/explored) +"MP" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/rust, +/area/ruin/powered/icemoon/lodge/residential) +"MQ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/mainhall) +"MR" = ( +/obj/effect/decal/cleanable/crayon{ + icon_state = "danger"; + pixel_x = 4; + pixel_y = -1; + paint_colour = "#FF0000" + }, +/obj/effect/turf_decal/weather/snow{ + dir = 8 + }, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"Nc" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/mainhall) +"Ni" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/human/frontier/ranged/trooper/flame/neuter, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/gear_room) +"Nl" = ( +/obj/item/mine/pressure/explosive/rusty/live, +/turf/open/floor/plating/asteroid/icerock/cracked, +/area/overmap_encounter/planetoid/cave/explored) +"No" = ( +/turf/closed/wall/mineral/wood, +/area/ruin/powered/icemoon/lodge/residential) +"Nq" = ( +/obj/item/bedsheet/random, +/obj/effect/turf_decal/siding/wood, +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed{ + icon_state = "dirty_mattress" + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/residential) +"Nu" = ( +/obj/item/ammo_casing/a8_50r{ + projectile_type = null + }, +/obj/item/ammo_casing/a8_50r{ + projectile_type = null + }, +/obj/item/ammo_casing/a8_50r{ + projectile_type = null + }, +/obj/item/ammo_casing/a8_50r{ + projectile_type = null + }, +/obj/item/ammo_casing/a8_50r{ + projectile_type = null + }, +/mob/living/simple_animal/hostile/human/frontier/internals, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"NH" = ( +/obj/structure/chair/wood/wings{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/mob/living/simple_animal/hostile/human/frontier/ranged/neutered, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/mainhall) +"NL" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/cellar) +"NM" = ( +/obj/machinery/door/airlock/wood{ + dir = 4 + }, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/residential) +"NN" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"NO" = ( +/obj/structure/safe, +/obj/item/spacecash/bundle/c1000, +/obj/item/spacecash/bundle/c1000, +/obj/item/spacecash/bundle/c1000, +/obj/item/gun/ballistic/automatic/marksman/vickland, +/obj/item/ammo_box/vickland_a308/empty, +/obj/item/ammo_box/vickland_a308/empty, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/montagne_office) +"Oa" = ( +/obj/effect/turf_decal/corner/opaque/blue/diagonal, +/obj/effect/turf_decal/corner/opaque/blue/diagonal, +/obj/structure/table/wood, +/obj/item/trash/tray, +/obj/effect/turf_decal/corner/opaque/neutral{ + dir = 4 + }, +/obj/item/stack/tape/industrial{ + pixel_y = 6; + pixel_x = 7 + }, +/obj/item/reagent_containers/food/drinks/bottle/absinthe{ + pixel_y = 8; + pixel_x = -6 + }, +/obj/item/reagent_containers/glass/bottle/morphine, +/turf/open/floor/plating/rust, +/area/ruin/powered/icemoon/lodge/residential) +"Oc" = ( +/obj/structure/flora/ash/stem_shroom, +/turf/open/floor/plating/asteroid/icerock, +/area/overmap_encounter/planetoid/cave/explored) +"Ok" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white, +/area/ruin/powered/icemoon/lodge/residential) +"Ol" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken4" + }, +/area/ruin/powered/icemoon/lodge/residential) +"Oq" = ( +/obj/effect/decal/cleanable/crayon{ + icon_state = "skull"; + pixel_x = 4; + pixel_y = -1 + }, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"Ox" = ( +/obj/structure/statue/snow/snowman, +/obj/item/mine/proximity/explosive/live{ + layer = 2.8 + }, +/turf/open/floor/plating/asteroid/icerock, +/area/overmap_encounter/planetoid/cave/explored) +"OD" = ( +/obj/effect/turf_decal/weather/snow{ + dir = 8 + }, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"OH" = ( +/turf/closed/wall/mineral/wood, +/area/ruin/powered/icemoon/lodge/montagne_office) +"ON" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/neutral, +/turf/open/floor/plating/rust, +/area/ruin/powered/icemoon/lodge/residential) +"OR" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 5 + }, +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/wood/ebony/icemoon{ + icon_state = "wood-broken2" + }, +/area/overmap_encounter/planetoid/cave/explored) +"OS" = ( +/obj/effect/turf_decal/siding/wood/end, +/obj/machinery/door/airlock/wood, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/gear_room) +"OV" = ( +/obj/effect/turf_decal/spline/fancy/wood, +/obj/item/trash/sosjerky, +/obj/effect/decal/cleanable/wrapping, +/turf/open/floor/wood/mahogany{ + icon_state = "wood-broken6" + }, +/area/ruin/powered/icemoon/lodge/mainhall) +"OY" = ( +/obj/effect/turf_decal/siding/brown, +/obj/item/rack_parts, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/gear_room) +"Py" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/closet/crate/hydroponics, +/obj/item/seeds/apple, +/obj/item/seeds/sunflower/moonflower, +/obj/item/seeds/potato, +/obj/item/seeds/tomato, +/obj/item/seeds/berry, +/obj/item/seeds/aloe, +/obj/item/seeds/wheat, +/obj/item/seeds/cotton/durathread, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/residential) +"PA" = ( +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/snow/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"PB" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ebony{ + icon_state = "wood-broken7" + }, +/area/ruin/powered/icemoon/lodge/residential) +"PE" = ( +/obj/structure/chair/wood/wings{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/human/frontier/ranged/trooper/skm/internals/neutered{ + check_friendly_fire = 1; + retreat_distance = 3; + minimum_distance = 2 + }, +/turf/open/floor/carpet/black, +/area/ruin/powered/icemoon/lodge/mainhall) +"PH" = ( +/obj/structure/flora/rock/pile/icy{ + icon_state = "icemoonrock2" + }, +/turf/open/floor/plating/asteroid/icerock/cracked, +/area/overmap_encounter/planetoid/cave/explored) +"PI" = ( +/obj/item/restraints/legcuffs/beartrap{ + armed = 1 + }, +/turf/open/floor/plasteel/stairs/wood, +/area/ruin/powered/icemoon/lodge/cellar) +"PM" = ( +/obj/structure/bonfire/prelit, +/obj/effect/decal/cleanable/ash/large, +/turf/open/floor/ship/dirt/dark, +/area/ruin/powered/icemoon/lodge/residential) +"PQ" = ( +/obj/structure/fermenting_barrel, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/cellar) +"PV" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/cellar) +"Qz" = ( +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/gear_room) +"QO" = ( +/obj/structure/table/greyscale, +/obj/item/gun/ballistic/rifle/illestren, +/obj/item/clothing/ears/earmuffs{ + pixel_y = 9 + }, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"QT" = ( +/obj/structure/chair/wood/wings, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/mob/living/simple_animal/hostile/human/frontier/ranged/trooper/internals/neutered{ + retreat_distance = null; + minimum_distance = 1; + shoot_point_blank = 1 + }, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken4" + }, +/area/ruin/powered/icemoon/lodge/mainhall) +"QU" = ( +/obj/structure/flora/grass/jungle, +/turf/open/floor/ship/dirt/dark, +/area/ruin/powered/icemoon/lodge/residential) +"Rd" = ( +/obj/structure/bed/pod, +/obj/item/bedsheet/blue, +/obj/structure/curtain/cloth/fancy, +/obj/item/toy/plush/kari, +/turf/open/floor/carpet/red_gold, +/area/ruin/powered/icemoon/lodge/montagne_office) +"Rg" = ( +/obj/structure/flora/ash/leaf_shroom, +/turf/open/floor/plating/asteroid/icerock/cracked, +/area/overmap_encounter/planetoid/cave/explored) +"Rl" = ( +/obj/effect/mob_spawn/human/corpse, +/obj/effect/decal/cleanable/ash/large{ + pixel_y = 8 + }, +/turf/open/floor/ship/dirt/dark, +/area/ruin/powered/icemoon/lodge/residential) +"Rt" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/bottle/whiskey{ + pixel_x = -4; + pixel_y = 6 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = 6 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = 8; + pixel_y = 12 + }, +/turf/open/floor/carpet/red_gold, +/area/ruin/powered/icemoon/lodge/montagne_office) +"RA" = ( +/obj/structure/flora/grass/green, +/turf/open/floor/plating/asteroid/snow/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"RE" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/mainhall) +"RH" = ( +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 6 + }, +/obj/machinery/door/airlock/wood{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/locked, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/cellar) +"RM" = ( +/obj/effect/turf_decal/siding/blue/end{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/medical{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/ruin/powered/icemoon/lodge/residential) +"RV" = ( +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/residential) +"RX" = ( +/obj/structure/flora/grass/jungle/b, +/obj/structure/closet/crate/trashcart, +/obj/item/clothing/suit/armor/roumain, +/obj/item/clothing/head/cowboy/sec/roumain, +/obj/effect/decal/cleanable/ash/large{ + pixel_y = 3; + pixel_x = -10 + }, +/turf/open/floor/grass/ship/jungle, +/area/ruin/powered/icemoon/lodge/residential) +"Se" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/montagne_office) +"Sf" = ( +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/residential) +"Su" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken4" + }, +/area/ruin/powered/icemoon/lodge/mainhall) +"SE" = ( +/obj/structure/destructible/tribal_torch/lit, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/residential) +"Td" = ( +/obj/structure/rack, +/obj/item/flashlight/lantern{ + pixel_x = 6 + }, +/obj/item/flashlight/lantern{ + pixel_x = -6 + }, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/mainhall) +"Te" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet/red_gold, +/area/ruin/powered/icemoon/lodge/montagne_office) +"Tj" = ( +/obj/machinery/door/airlock/wood, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/montagne_office) +"Tk" = ( +/obj/structure/rack, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/box/ammo/a308/hunterspride, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/mainhall) +"To" = ( +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/mainhall) +"TL" = ( +/obj/structure/closet/cabinet{ + name = "broken hunter's locker"; + desc = "Everything a hunter will need, held in one secure closet. Or it would, if the lock wasn't smashed open." + }, +/obj/effect/turf_decal/siding/brown{ + dir = 8 + }, +/obj/item/clothing/mask/gas/frontiersmen, +/obj/item/clothing/under/frontiersmen/fireproof, +/obj/item/clothing/head/helmet/bulletproof/x11/frontier/fireproof, +/obj/item/clothing/suit/armor/frontier/fireproof, +/obj/item/flamethrower, +/obj/item/lighter/greyscale, +/obj/item/reagent_containers/food/drinks/bottle/vodka, +/obj/effect/decal/cleanable/wrapping, +/obj/item/clothing/glasses/trickblindfold, +/obj/item/melee/knife/switchblade, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/gear_room) +"TM" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/residential) +"TV" = ( +/obj/effect/turf_decal/weather/snow{ + dir = 10 + }, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"Uc" = ( +/obj/effect/decal/cleanable/oil/slippery, +/turf/open/floor/plasteel/stairs/wood{ + dir = 8 + }, +/area/ruin/powered/icemoon/lodge/cellar) +"Ug" = ( +/obj/structure/bookcase/random/religion, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/residential) +"Um" = ( +/obj/effect/turf_decal/weather/snow{ + dir = 5 + }, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"Uz" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 1 + }, +/turf/open/floor/wood/ebony/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"UJ" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 9 + }, +/turf/open/floor/wood/ebony/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"UK" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 4 + }, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/residential) +"UL" = ( +/obj/structure/destructible/tribal_torch/lit, +/obj/effect/turf_decal/siding/brown{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ebony{ + icon_state = "wood-broken" + }, +/area/ruin/powered/icemoon/lodge/residential) +"UX" = ( +/turf/open/floor/wood/maple{ + icon_state = "wood-broken2" + }, +/area/ruin/powered/icemoon/lodge/gear_room) +"UY" = ( +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"Vc" = ( +/obj/structure/destructible/tribal_torch/lit, +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 9 + }, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"Vo" = ( +/obj/item/storage/pill_bottle/floorpill/full{ + pixel_y = 7; + pixel_x = 14 + }, +/obj/effect/decal/cleanable/vomit/old{ + pixel_x = -14; + pixel_y = 18 + }, +/obj/effect/decal/cleanable/vomit/old{ + icon_state = "vomit_2"; + pixel_x = -12; + pixel_y = 2 + }, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"Vz" = ( +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/montagne_office) +"VB" = ( +/obj/structure/railing/wood, +/obj/structure/table/wood, +/obj/item/storage/pill_bottle/stimulant, +/obj/item/reagent_containers/pill/happy{ + pixel_y = 10; + pixel_x = -7 + }, +/obj/item/reagent_containers/pill/happy{ + pixel_y = 2; + pixel_x = 9 + }, +/turf/open/floor/wood/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"VK" = ( +/turf/open/floor/wood/maple{ + icon_state = "wood-broken5" + }, +/area/ruin/powered/icemoon/lodge/cellar) +"Wa" = ( +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/wood/mahogany{ + icon_state = "wood-broken6" + }, +/area/ruin/powered/icemoon/lodge/mainhall) +"Wc" = ( +/obj/effect/turf_decal/spline/fancy/wood/cee{ + dir = 1 + }, +/obj/machinery/door/airlock/wood{ + name = "Restroom" + }, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/residential) +"Wd" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 8 + }, +/obj/effect/decal/cleanable/glass, +/mob/living/simple_animal/hostile/human/frontier/ranged/surgeon/internals/neuter, +/turf/open/floor/plasteel/white, +/area/ruin/powered/icemoon/lodge/residential) +"Wk" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/residential) +"Wp" = ( +/obj/structure/closet/cabinet{ + name = "broken shadow's locker"; + desc = "The closet of equipment and attire for the aspiring shadow. Or whichever guy broke this closet's lock." + }, +/obj/effect/turf_decal/siding/brown{ + dir = 4 + }, +/obj/item/clothing/head/soft/frontiersmen, +/obj/item/clothing/under/frontiersmen/deckhand, +/obj/item/clothing/accessory/holster, +/obj/effect/decal/cleanable/plastic, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/gear_room) +"Ws" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/structure/curtain/cloth/fancy, +/turf/open/floor/plating, +/area/ruin/powered/icemoon/lodge/montagne_office) +"Wv" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/gear_room) +"WF" = ( +/obj/structure/flora/rock/pile/icy, +/turf/open/floor/plating/asteroid/snow/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"WI" = ( +/obj/structure/chair/pew/right{ + dir = 1 + }, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"WN" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/cellar) +"WS" = ( +/obj/structure/flora/stump{ + icon_state = "anchored_rod"; + pixel_y = -3; + name = "rod"; + desc = "A metal rod struck into the ground." + }, +/obj/item/clothing/head/helmet/bulletproof/x11/clip{ + pixel_y = 24; + name = "\improper Dented Minutemen X11 Helmet" + }, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"WW" = ( +/obj/structure/chair/pew/left{ + dir = 1 + }, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"WZ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/ammo_casing/c45{ + projectile_type = null + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/cellar) +"Xd" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/structure/table/wood, +/obj/item/reagent_containers/glass/bottle/nutrient/ez{ + pixel_x = 6; + pixel_y = 12; + auto_scatter = 0 + }, +/obj/item/reagent_containers/glass/bottle/nutrient/l4z{ + pixel_x = 6; + pixel_y = 6; + auto_scatter = 0 + }, +/obj/item/reagent_containers/glass/bottle/nutrient/rh{ + pixel_x = 6; + auto_scatter = 0 + }, +/obj/item/reagent_containers/glass/bottle/nutrient/ez{ + pixel_x = -6; + pixel_y = 12; + auto_scatter = 0 + }, +/obj/item/reagent_containers/glass/bottle/nutrient/l4z{ + pixel_x = -6; + pixel_y = 6; + auto_scatter = 0 + }, +/obj/item/reagent_containers/glass/bottle/nutrient/rh{ + pixel_x = -6; + auto_scatter = 0 + }, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/residential) +"Xm" = ( +/obj/structure/flora/rock/pile/icy{ + icon_state = "icemoonrock1" + }, +/turf/open/floor/plating/asteroid/icerock, +/area/overmap_encounter/planetoid/cave/explored) +"Xq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/plastic, +/turf/open/floor/plating/rust, +/area/ruin/powered/icemoon/lodge/residential) +"Xt" = ( +/obj/effect/decal/cleanable/crayon{ + icon_state = "shotgun"; + pixel_x = 14; + pixel_y = -3 + }, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"Xx" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/residential) +"XF" = ( +/obj/structure/flora/grass/green, +/turf/open/floor/plating/asteroid/icerock, +/area/overmap_encounter/planetoid/cave/explored) +"XK" = ( +/obj/structure/fermenting_barrel/gunpowder, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/mainhall) +"XU" = ( +/obj/structure/flora/grass/both, +/obj/item/restraints/legcuffs/beartrap{ + armed = 1 + }, +/turf/open/floor/plating/asteroid/icerock, +/area/overmap_encounter/planetoid/cave/explored) +"Yd" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/mob/living/simple_animal/hostile/human/frontier/internals, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken3" + }, +/area/ruin/powered/icemoon/lodge/mainhall) +"Yj" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/decal/cleanable/dirt, +/obj/item/mine/proximity/explosive/live{ + range_heavy = 1; + range_light = 5 + }, +/obj/effect/mob_spawn/human/corpse/srm/montagne, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/cellar) +"Yo" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 8 + }, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/residential) +"Yv" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 9 + }, +/obj/machinery/jukebox/boombox{ + pixel_y = 4; + pixel_x = 1 + }, +/obj/item/toy/cards/deck{ + pixel_y = 0; + pixel_x = -4 + }, +/obj/item/storage/pill_bottle/dice{ + pixel_x = 8; + pixel_y = -1 + }, +/turf/open/floor/wood/mahogany, +/area/ruin/powered/icemoon/lodge/mainhall) +"Yw" = ( +/obj/structure/loom, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/mainhall) +"YB" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/machinery/smartfridge/drying_rack, +/turf/open/floor/wood/maple, +/area/ruin/powered/icemoon/lodge/residential) +"YG" = ( +/obj/item/toy/crayon/spraycan, +/obj/effect/turf_decal/weather/snow{ + dir = 9 + }, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"YO" = ( +/obj/structure/table/wood, +/obj/effect/decal/cleanable/dirt, +/obj/item/ammo_casing/a308{ + pixel_y = 11; + projectile_type = null; + auto_rotate = 0; + auto_scatter = 0 + }, +/obj/item/ammo_casing/a308{ + pixel_y = 3; + projectile_type = null; + auto_rotate = 0; + auto_scatter = 0 + }, +/obj/item/ammo_casing/a308{ + pixel_y = 11; + pixel_x = 6; + projectile_type = null; + auto_rotate = 0; + auto_scatter = 0 + }, +/obj/item/ammo_casing/a308{ + pixel_y = 11; + pixel_x = -6; + projectile_type = null; + auto_rotate = 0; + auto_scatter = 0 + }, +/obj/item/ammo_casing/a308{ + pixel_y = 3; + pixel_x = -6; + projectile_type = null; + auto_rotate = 0; + auto_scatter = 0 + }, +/obj/item/ammo_casing/a308{ + pixel_y = 3; + pixel_x = 6; + projectile_type = null; + auto_rotate = 0; + auto_scatter = 0 + }, +/turf/open/floor/wood/ebony, +/area/ruin/powered/icemoon/lodge/mainhall) +"YU" = ( +/obj/effect/turf_decal/weather/snow{ + dir = 6 + }, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"Za" = ( +/turf/open/floor/plating/asteroid/snow/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"Zf" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/mug/coco, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"Zi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/plastic, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/powered/icemoon/lodge/residential) +"Zm" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/maple{ + icon_state = "wood-broken" + }, +/area/ruin/powered/icemoon/lodge/gear_room) +"Zn" = ( +/obj/structure/destructible/tribal_torch/lit, +/obj/structure/railing/wood{ + dir = 8 + }, +/obj/structure/railing/wood{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"Zo" = ( +/obj/structure/table/wood, +/obj/item/trash/plate{ + pixel_x = -6 + }, +/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/zombie{ + pixel_x = -6 + }, +/turf/open/floor/carpet/black, +/area/ruin/powered/icemoon/lodge/mainhall) +"Zp" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old{ + icon_state = "vomit_2-old" + }, +/obj/item/kirbyplants{ + icon_state = "plant-25"; + pixel_y = 12; + pixel_x = -2 + }, +/turf/open/floor/wood/ebony{ + icon_state = "wood-broken2" + }, +/area/ruin/powered/icemoon/lodge/residential) +"ZG" = ( +/obj/item/target/syndicate, +/obj/effect/turf_decal/weather/snow, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) +"ZX" = ( +/obj/effect/turf_decal/spline/fancy/wood/corner, +/obj/effect/turf_decal/spline/fancy/wood/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/energybar, +/turf/open/floor/wood/mahogany{ + icon_state = "wood-broken3" + }, +/area/ruin/powered/icemoon/lodge/mainhall) +"ZZ" = ( +/obj/structure/table/greyscale, +/obj/item/ammo_box/magazine/illestren_a850r/empty{ + pixel_x = 6 + }, +/obj/effect/turf_decal/weather/snow{ + dir = 1 + }, +/turf/open/floor/concrete/slab_3/icemoon, +/area/overmap_encounter/planetoid/cave/explored) + +(1,1,1) = {" +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Hl +Hl +Gy +Hl +Hl +Hl +Hl +Gy +Hl +Hl +Hl +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +"} +(2,1,1) = {" +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Gy +Hl +Hl +Gy +Hl +Hl +Hl +Hl +Hl +Gy +Gy +Hl +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +"} +(3,1,1) = {" +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Gy +Hl +Hl +Hl +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +"} +(4,1,1) = {" +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +"} +(5,1,1) = {" +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +"} +(6,1,1) = {" +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Hl +Hl +Hl +Hl +Hl +Hl +Hl +gI +gI +gI +gI +No +No +No +No +No +No +No +No +No +No +No +No +No +No +No +No +No +Hl +Hl +Hl +Hl +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +"} +(7,1,1) = {" +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Hl +Hl +Hl +Hl +Hl +Hl +gI +gI +jx +HO +xd +No +nc +No +DB +Ol +Wk +wD +No +dT +bL +Oa +No +PM +Rl +dd +rF +No +No +Hl +Hl +Hl +Hl +Hl +Gy +Gy +Gy +Gy +Gy +Gy +"} +(8,1,1) = {" +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Hl +Hl +Hl +Hl +Hl +Hl +Hl +gI +gp +rZ +sk +LD +Wc +DR +No +Cs +oC +oC +Nq +No +ON +Wd +jk +No +RX +yo +AJ +xN +QU +No +Hl +Hl +Hl +Hl +Hl +Gy +Gy +Gy +Gy +Gy +Gy +"} +(9,1,1) = {" +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Hl +Hl +Hl +Hl +Hl +Hl +Hl +gI +rx +Bx +Qz +Wv +No +qK +No +SE +oC +hz +fe +No +Ja +tl +eW +No +No +ds +lh +Kn +cl +No +Hl +Hl +Hl +Hl +Hl +Gy +Gy +Gy +Gy +Gy +Gy +"} +(10,1,1) = {" +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +gI +ao +bk +UX +Ni +No +ag +No +Ug +Sf +eg +yi +No +fA +uX +Gq +nm +No +rm +fu +ti +cl +No +Hl +Hl +Hl +Hl +Hl +Rg +Gy +Gy +Gy +Gy +Gy +"} +(11,1,1) = {" +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +gI +TL +qd +kX +cy +No +No +No +No +mc +Ks +No +No +lM +FL +Ok +st +No +rF +rm +rm +QU +No +Hl +Hl +Hl +Hl +Ec +Ec +Ec +Ec +Ec +Gy +Gy +"} +(12,1,1) = {" +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +gI +Cm +yQ +Js +cy +gI +zN +Yo +am +eU +qO +aa +No +No +RM +iH +No +No +No +px +tT +YB +No +Hl +Hl +Hl +Hl +PH +MO +Ec +Ec +Ec +Hl +Gy +"} +(13,1,1) = {" +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +gI +dZ +xu +OY +dn +OS +Xx +yj +uR +Xq +uR +LZ +Yo +hI +vs +JS +Yo +ne +nD +uy +Cw +Py +No +Hl +Hl +Hl +Hl +Hl +Hl +dc +MK +Hl +Hl +Hl +"} +(14,1,1) = {" +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +gI +Wp +ey +bB +Zm +fX +Zp +HC +PB +TM +MC +Zi +uR +uR +wU +BU +yj +vd +No +ib +RV +qH +No +Hl +Hl +Hl +Hl +Hl +Ec +Ec +bb +Hl +Hl +Hl +"} +(15,1,1) = {" +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +gI +gI +gI +gI +gI +gI +No +No +No +No +No +DM +MP +TM +UK +UK +fn +UL +No +Xd +HG +No +No +Hl +Hl +Hl +Hl +Hl +Nl +XF +bb +Hl +Hl +Hl +"} +(16,1,1) = {" +Gy +Gy +Gy +Gy +Gy +Gy +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +No +No +No +No +No +No +NM +No +No +No +No +No +Hl +Hl +Hl +Hl +Hl +Hl +iw +bb +qJ +Hl +Hl +Hl +"} +(17,1,1) = {" +Gy +Gy +Gy +Gy +Gy +Gy +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Za +Dj +sX +WF +Za +Za +nQ +ca +sX +LM +Za +oT +nQ +WW +Hl +Hl +Hl +Hl +Hl +KR +bb +bb +Hl +Hl +Hl +"} +(18,1,1) = {" +Gy +Gy +Gy +Gy +Gy +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Za +Za +Dj +Kc +Za +RA +wx +NN +NN +ca +TV +Za +Za +Dj +gR +Hl +Hl +Hl +Hl +Hl +bb +qJ +iw +Hl +Hl +Hl +"} +(19,1,1) = {" +Gy +Gy +Gy +Gy +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Za +Za +eK +Kc +gs +ot +NN +ca +NN +ca +ca +TV +gs +Dj +WI +Hl +Hl +Hl +Hl +Hl +Ec +bb +bb +Hl +Hl +Hl +"} +(20,1,1) = {" +Gy +Gy +Gy +Hl +Hl +Hl +Hl +yE +yE +yE +yE +yE +yE +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Za +eK +ca +OD +NN +JP +ca +ca +ca +fa +NN +vG +ca +Zf +Hl +Hl +Hl +Hl +Hl +Nl +Ec +bb +Hl +Hl +Hl +"} +(21,1,1) = {" +Gy +Gy +Hl +Hl +Hl +Hl +yE +yE +MQ +mz +XK +jM +yE +yE +yE +yE +yE +yE +yE +yE +dO +dO +dO +dO +dO +ca +ca +ca +YU +Za +Dj +NN +Kc +Jq +Um +ca +ca +Hl +Hl +Hl +Hl +Hl +Ec +Ec +bb +iB +Hl +Hl +Hl +"} +(22,1,1) = {" +Gy +Gy +Hl +Hl +Hl +yE +yE +ms +Su +Eb +QT +YO +yE +yc +CN +ko +KO +II +mH +qN +UJ +LP +LP +sd +dO +ca +ca +YU +Za +Za +Dj +NN +Kc +Za +Za +Um +ca +NN +Hl +Hl +Hl +Hl +Nl +Ec +Hl +Hl +Hl +Hl +Hl +"} +(23,1,1) = {" +Gy +Hl +Hl +Hl +Hl +yE +uL +fg +ty +uG +qY +Tk +yE +Kh +tL +Yd +CG +CG +Ek +uM +Uz +Ai +wm +pK +dO +ca +Kc +Za +Gd +Za +Dj +NN +Kc +Za +Za +Za +Dj +wj +Hl +Hl +Hl +bb +bb +bb +Hl +Hl +Hl +Hl +Hl +"} +(24,1,1) = {" +Hl +Hl +Hl +Hl +Hl +yE +AO +RE +sW +qY +yE +yE +yE +HZ +Er +yE +To +Td +aV +yE +OR +sc +CW +cS +dO +ca +sX +Za +Za +Za +tW +Nu +Ix +Za +BQ +Za +Dj +ca +ca +ca +GA +bb +iw +bb +Hl +Hl +Hl +Hl +Gy +"} +(25,1,1) = {" +Hl +Hl +Hl +Hl +Hl +yE +yE +yE +KF +yE +yE +Yv +Bf +ZX +aL +OH +OH +OH +OH +OH +OH +Gv +aF +CU +jP +NN +sX +Za +gs +sG +ZZ +QO +qg +PA +gs +oT +Dj +ca +NN +ca +yH +bb +bb +lg +Hl +Hl +Hl +Hl +Hl +"} +(26,1,1) = {" +Hl +Hl +Hl +Hl +Hl +yE +yE +Vc +kl +tX +GR +cW +Do +xM +OH +pS +Rd +zz +Te +no +Ws +Kg +Kg +Kg +GT +ca +sX +oT +Za +sG +Dj +NN +sX +PA +Za +Za +Dj +NN +ca +ca +GA +bb +bb +Ec +Nl +Hl +Hl +Hl +Hl +"} +(27,1,1) = {" +Hl +Hl +Hl +yE +yE +yE +vZ +cA +Do +Do +UY +Do +tn +xM +OH +bv +zz +Te +fI +gz +Ws +GD +Kg +Kg +VB +ca +sX +Za +Jq +sG +Dj +ca +Kc +PA +Za +Za +Dj +ii +Hl +Hl +Hl +bb +iw +Ec +Ec +Hl +Hl +Hl +Gy +"} +(28,1,1) = {" +Hl +Hl +Hl +yE +nS +Ik +Mw +aJ +rW +LT +Mx +wy +GN +hs +OH +ka +zz +vf +je +Rt +Ws +Kg +GD +GD +kG +ca +NN +TV +Za +da +nQ +ca +sX +PA +jB +wx +ca +ca +Hl +Hl +Hl +Hl +bb +qJ +bb +Hl +Hl +Hl +Gy +"} +(29,1,1) = {" +Hl +Hl +Hl +yE +yE +ik +Mw +kq +Ag +Zo +zX +fF +aJ +tq +Tj +fw +Se +Vz +Vz +xk +Ws +Mt +cd +GD +ou +ca +NN +ca +TV +da +Dj +ca +sX +PA +YG +NN +ca +Hl +Hl +Hl +Hl +Ox +bb +bb +al +Hl +Hl +Hl +Hl +"} +(30,1,1) = {" +Hl +Hl +Hl +yE +nS +KH +jS +aJ +tN +PE +yO +Fy +aJ +OV +OH +fw +Se +Se +Vz +tr +Ws +LC +hj +GD +Cq +ca +ca +ca +ca +MR +ca +xL +NN +nr +NN +fa +ca +sR +Hl +Hl +Hl +bb +bb +iw +Hl +Hl +Hl +Hl +Hl +"} +(31,1,1) = {" +Hl +Hl +Hl +yE +yE +yE +um +wi +Do +xb +iG +ev +rO +xM +OH +yp +sx +oa +oa +dA +Ws +Kg +Mt +Kg +GS +ca +sD +gs +Um +Oq +xL +NN +ca +Xt +YU +gs +Dj +WW +Hl +Hl +Hl +Oc +bb +qJ +Hl +Hl +Hl +Hl +Hl +"} +(32,1,1) = {" +Hl +Hl +Hl +Hl +Hl +yE +yE +AE +bC +vq +Wa +sY +Vo +xM +OH +OH +NO +HQ +BL +mP +Ws +Kg +GD +Kg +tx +ca +sX +Za +Za +wt +qr +ca +ca +mL +Za +Za +rT +gR +Hl +Hl +Hl +qJ +bb +bb +Hl +Hl +Hl +Hl +Hl +"} +(33,1,1) = {" +Gy +Hl +Hl +Hl +Hl +yE +yE +yE +jD +yE +yE +bG +Aq +dl +lE +OH +OH +OH +OH +OH +OH +Cu +DA +DA +Zn +ca +YU +Za +oT +da +Dj +WS +ZG +PA +LM +Za +Dj +WI +Hl +Hl +Hl +Hl +bb +Ec +Hl +Hl +Hl +Hl +Hl +"} +(34,1,1) = {" +Gy +Hl +Hl +Hl +Hl +yE +LF +bK +Nc +HV +yE +yE +yE +lU +RH +Cu +Aj +Jj +aZ +WZ +Ay +Cu +Cu +Hl +Hl +Hl +Za +Za +Za +Za +dO +dO +dO +Hl +Za +Za +Hl +Hl +Hl +Hl +Hl +Hl +XU +Ec +Ox +Hl +Hl +Hl +Gy +"} +(35,1,1) = {" +Gy +Gy +Hl +Hl +Hl +yE +tD +NH +mj +AB +dV +uA +yE +tG +Uc +Cu +Ak +PQ +KX +PQ +qR +qb +Cu +Hl +Hl +Hl +Hl +Za +Hl +Za +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +iw +bb +bb +Hl +Hl +Gy +Gy +"} +(36,1,1) = {" +Gy +Gy +Hl +Hl +Hl +yE +yE +mF +Gb +ud +Ge +mI +yE +VK +AX +Ez +sO +pG +WZ +nd +gr +Yj +Cu +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +bb +bb +lJ +bb +Hl +Hl +Gy +Gy +"} +(37,1,1) = {" +Gy +Gy +Hl +Hl +Hl +Hl +yE +yE +pi +ve +Yw +eC +yE +pf +Gs +PI +NL +Lz +jR +Gn +Fj +wF +Cu +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Nl +Xm +bb +bb +qD +bb +Gy +Gy +"} +(38,1,1) = {" +Gy +Gy +Hl +Hl +Hl +Hl +Hl +yE +yE +yE +yE +yE +yE +Cu +Cu +Cu +wT +PV +wc +zh +WN +Cu +Cu +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +sJ +bb +rS +bb +Gy +Gy +"} +(39,1,1) = {" +Gy +Gy +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Cu +Cu +Cu +rs +Cu +Cu +Cu +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +kZ +Gy +Gy +"} +(40,1,1) = {" +Gy +Gy +Gy +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +iE +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +bb +Gy +Gy +Gy +"} +(41,1,1) = {" +Gy +Gy +Gy +Gy +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Gy +Gy +Hl +Hl +Hl +Hl +Gy +Gy +Gy +Hl +Hl +Hl +Hl +Hl +Gy +Gy +Gy +Gy +Gy +"} +(42,1,1) = {" +Gy +Gy +Gy +Gy +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +"} +(43,1,1) = {" +Gy +Gy +Gy +Gy +Gy +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Hl +Gy +Gy +Gy +Hl +Hl +Hl +Hl +Hl +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +"} +(44,1,1) = {" +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +Gy +"} diff --git a/code/datums/ruins/icemoon.dm b/code/datums/ruins/icemoon.dm index 81b7aea8582c..30b231c385c2 100644 --- a/code/datums/ruins/icemoon.dm +++ b/code/datums/ruins/icemoon.dm @@ -31,3 +31,11 @@ description = "Safety records for early Nanotrasen Spaceworks vessels were, and always have been, top of their class. Absolutely no multi-billion credit projects have been painstakingly erased from history. (Citation Needed)" suffix = "icemoon_crashed_holemaker.dmm" ruin_tags = list(RUIN_TAG_MEDIUM_COMBAT, RUIN_TAG_MINOR_LOOT, RUIN_TAG_SHELTER) + +/datum/map_template/ruin/icemoon/ice_lodge + name = "Ice Lodge" + id = "ice_lodge" + description = "Records show this settlement as belonging to the SRM, but no one has heard from them as of late. I wonder what happened?" + suffix = "icemoon_ice_lodge.dmm" + ruin_tags = list(RUIN_TAG_HARD_COMBAT, RUIN_TAG_MAJOR_LOOT, RUIN_TAG_SHELTER, RUIN_TAG_HAZARDOUS) + diff --git a/code/game/area/areas/ruins/icemoon.dm b/code/game/area/areas/ruins/icemoon.dm index 8e614c8a0e79..ec2c6b438f0c 100644 --- a/code/game/area/areas/ruins/icemoon.dm +++ b/code/game/area/areas/ruins/icemoon.dm @@ -24,3 +24,25 @@ /area/ruin/unpowered/crashed_holemaker name = "NTSV Holemaker II" // In honor of the kugelblitz shenanigan of all time icon_state = "green" + +// Ice Lodge + +/area/ruin/powered/icemoon/lodge/mainhall + name = "Main Hall" + icon_state = "bridge_hallway" + +/area/ruin/powered/icemoon/lodge/cellar + name = "Cellar" + icon_state = "yellow" + +/area/ruin/powered/icemoon/lodge/montagne_office + name = "Montagne's Office" + icon_state = "bridge" + +/area/ruin/powered/icemoon/lodge/residential + name = "Residential Quarters" + icon_state = "crew_quarters" + +/area/ruin/powered/icemoon/lodge/gear_room + name = "Gear Room" + icon_state = "security" diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index 1163a5520631..161fc819b4a6 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -1294,3 +1294,18 @@ /obj/item/storage/ration/cheese_pizza_slice = 5, /obj/item/storage/ration/crayons = 2 // :) ) + +/obj/effect/spawner/lootdrop/chem_jug + loot = list( + /obj/item/reagent_containers/glass/chem_jug/carbon, + /obj/item/reagent_containers/glass/chem_jug/oxygen, + /obj/item/reagent_containers/glass/chem_jug/nitrogen, + /obj/item/reagent_containers/glass/chem_jug/hydrogen, + /obj/item/reagent_containers/glass/chem_jug/radium, + /obj/item/reagent_containers/glass/chem_jug/aluminium, + /obj/item/reagent_containers/glass/chem_jug/chlorine, + /obj/item/reagent_containers/glass/chem_jug/copper, + /obj/item/reagent_containers/glass/chem_jug/bromine, + /obj/item/reagent_containers/glass/chem_jug/iodine, + /obj/item/reagent_containers/glass/chem_jug/potassium, + /obj/item/reagent_containers/glass/chem_jug/sulfur) diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 4e95b5558842..b74c4926ea17 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -185,6 +185,11 @@ user.do_attack_animation(src, ATTACK_EFFECT_KICK) take_damage(2) +/obj/structure/displaycase/broken + name = "broken display case" + desc = "A display case for prized possessions. Or at least it was, until someone smashed it open." + broken = 1 + /obj/structure/displaycase_chassis anchored = TRUE density = FALSE diff --git a/code/game/objects/structures/fence.dm b/code/game/objects/structures/fence.dm index 8697662ed097..819264eb1ced 100644 --- a/code/game/objects/structures/fence.dm +++ b/code/game/objects/structures/fence.dm @@ -111,11 +111,6 @@ cuttable = FALSE var/open = FALSE -/obj/structure/fence/door/Initialize() - . = ..() - - update_door_status() - /obj/structure/fence/door/opened icon_state = "door_opened" open = TRUE diff --git a/code/game/turfs/open/floor/plating/icemoon.dm b/code/game/turfs/open/floor/plating/icemoon.dm index ca1819af2531..0fd0d95faed3 100644 --- a/code/game/turfs/open/floor/plating/icemoon.dm +++ b/code/game/turfs/open/floor/plating/icemoon.dm @@ -223,3 +223,27 @@ /turf/open/floor/plating/asteroid/snow/ice/burn_tile() return FALSE +/turf/open/floor/wood/icemoon + baseturfs = /turf/open/floor/plating/asteroid/snow/ice/icemoon + initial_gas_mix = ICEMOON_DEFAULT_ATMOS + planetary_atmos = TRUE + slowdown = 0 + +/turf/open/floor/wood/ebony/icemoon + baseturfs = /turf/open/floor/plating/asteroid/snow/ice/icemoon + initial_gas_mix = ICEMOON_DEFAULT_ATMOS + planetary_atmos = TRUE + slowdown = 0 + +/turf/open/floor/plasteel/stairs/wood/icemoon + baseturfs = /turf/open/floor/plating/asteroid/snow/ice/icemoon + initial_gas_mix = ICEMOON_DEFAULT_ATMOS + planetary_atmos = TRUE + slowdown = 0 + +/turf/open/floor/concrete/slab_3/icemoon + baseturfs = /turf/open/floor/plating/asteroid/snow/ice/icemoon + initial_gas_mix = ICEMOON_DEFAULT_ATMOS + planetary_atmos = TRUE + slowdown = 0 + diff --git a/code/modules/hydroponics/fermenting_barrel.dm b/code/modules/hydroponics/fermenting_barrel.dm index a91ad2b90050..6f1b40b3dc9d 100644 --- a/code/modules/hydroponics/fermenting_barrel.dm +++ b/code/modules/hydroponics/fermenting_barrel.dm @@ -76,6 +76,14 @@ icon_state = closed_state return ..() +/obj/structure/fermenting_barrel/gunpowder + name = "Gunpowder Barrel" + desc = "A wooden barrel packed with gunpowder. You should probably keep this away from sparks or open fires." + +/obj/structure/fermenting_barrel/gunpowder/Initialize() + . = ..() + reagents.add_reagent(/datum/reagent/gunpowder, 200) + /obj/structure/fermenting_barrel/distiller name = "Distiller" icon_state = "distiller" diff --git a/code/modules/hydroponics/growninedible.dm b/code/modules/hydroponics/growninedible.dm index ee76f02e02c8..8ab59cc6f658 100644 --- a/code/modules/hydroponics/growninedible.dm +++ b/code/modules/hydroponics/growninedible.dm @@ -7,6 +7,7 @@ icon = 'icons/obj/hydroponics/harvest.dmi' resistance_flags = FLAMMABLE var/obj/item/seeds/seed = null // type path, gets converted to item on New(). It's safe to assume it's always a seed item. + var/auto_scatter = TRUE /obj/item/grown/Initialize(newloc, obj/item/seeds/new_seed) . = ..() @@ -18,9 +19,9 @@ // This is for adminspawn or map-placed growns. They get the default stats of their seed type. seed = new seed() seed.adjust_potency(50-seed.potency) - - pixel_x = base_pixel_x + rand(-5, 5) - pixel_y = base_pixel_y + rand(-5, 5) + if(auto_scatter) + pixel_x = base_pixel_x + rand(-5, 5) + pixel_y = base_pixel_y + rand(-5, 5) if(seed) // Go through all traits in their genes and call on_new_plant from them. diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 56ad2264ce01..6d56533e9953 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -179,11 +179,13 @@ volume = 50 amount_per_transfer_from_this = 10 possible_transfer_amounts = list(1,2,5,10,15,25,50) + var/auto_scatter = TRUE /obj/item/reagent_containers/glass/bottle/nutrient/Initialize() . = ..() - pixel_x = base_pixel_x + rand(-5, 5) - pixel_y = base_pixel_y + rand(-5, 5) + if(auto_scatter) + pixel_x = base_pixel_x + rand(-5, 5) + pixel_y = base_pixel_y + rand(-5, 5) /obj/item/reagent_containers/glass/bottle/nutrient/ez diff --git a/code/modules/mob/living/simple_animal/corpse.dm b/code/modules/mob/living/simple_animal/corpse.dm index 1b8004cbd5b5..def184966c93 100644 --- a/code/modules/mob/living/simple_animal/corpse.dm +++ b/code/modules/mob/living/simple_animal/corpse.dm @@ -133,6 +133,13 @@ /obj/effect/mob_spawn/human/corpse/frontier/ranged outfit = /datum/outfit/frontier +/obj/effect/mob_spawn/human/corpse/frontier/surgeon + outfit = /datum/outfit/job/frontiersmen/doctor/corpse + +/datum/outfit/job/frontiersmen/doctor/corpse + name = "Frontiersmen Surgeon Corpse" + r_pocket = null + /obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper outfit = /datum/outfit/frontier/trooper @@ -169,6 +176,17 @@ /obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper/heavy/gunless outfit = /datum/outfit/frontier/trooper/heavy/gunless +/obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper/flame + outfit = /datum/outfit/job/frontiersmen/ert/flamer/corpse + +/datum/outfit/job/frontiersmen/ert/flamer/corpse + name = "Frontiersman Flametrooper Corpse" + back = null + belt = /obj/item/storage/belt/security/military/frontiersmen + l_hand = null + + backpack_contents = null + /datum/outfit/frontier/trooper/heavy/gunless name = "Frontiersman Heavy Corpse (Gunless)" back = null @@ -251,3 +269,15 @@ id_job = "SolGov Sonnensoldner" outfit = /datum/outfit/job/solgov/sonnensoldner id_access_list = list(ACCESS_SOLGOV) + +/obj/effect/mob_spawn/human/corpse/srm/hunter + name = "SRM Hunter" + id_job = "Hunter" + outfit = /datum/outfit/job/roumain/security + id_access_list = null + +/obj/effect/mob_spawn/human/corpse/srm/montagne + name = "SRM Montagne" + id_job = "Hunter Montagne" + outfit = /datum/outfit/job/roumain/captain + id_access_list = null diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 70ce3f665bab..5005930855e4 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -33,7 +33,7 @@ var/check_friendly_fire = FALSE // Should the ranged mob check for friendlies when shooting var/retreat_distance = null //If our mob runs from players when they're too close, set in tile distance. By default, mobs do not retreat. var/minimum_distance = 1 //Minimum approach distance, so ranged mobs chase targets down, but still keep their distance set in tiles to the target, set higher to make mobs keep distance - + var/shoot_point_blank = FALSE // If this mob will still shoot even in melee range. //These vars are related to how mobs locate and target var/robust_searching = 0 //By default, mobs have a simple searching method, set this to 1 for the more scrutinous searching (stat_attack, stat_exclusive, etc), should be disabled on most mobs @@ -315,7 +315,10 @@ Goto(target,move_to_delay,minimum_distance) if(target) if(isturf(target_from.loc) && target.Adjacent(target_from)) //If they're next to us, attack - MeleeAction() + if(ranged && shoot_point_blank && ranged_cooldown <= world.time) + OpenFire(target) + else + MeleeAction() else if(rapid_melee > 1 && target_distance <= melee_queue_distance) MeleeAction(FALSE) @@ -698,3 +701,27 @@ if (length(initial(src.faction)) > 0) src.faction += initial(src.faction) src.faction += tag + +/mob/living/simple_animal/hostile/proc/fire_line(source, list/turfs, fire_source = "fire breath", ignite_turfs = FALSE, power = 4, flame_color = "red") + var/list/hit_list = list() + for(var/turf/T in turfs) + if(istype(T, /turf/closed)) + break + new /obj/effect/hotspot(T) + T.hotspot_expose(700,50,1) + if(ignite_turfs) + T.IgniteTurf(power,flame_color) + for(var/mob/living/L in T.contents) + if(L in hit_list || L == source) + continue + hit_list += L + L.adjustFireLoss(20) + to_chat(L, "You're hit by [source]'s [fire_source]!") + + // deals damage to mechs + for(var/obj/mecha/M in T.contents) + if(M in hit_list) + continue + hit_list += M + M.take_damage(45, BRUTE, "melee", 1) + sleep(1.5) diff --git a/code/modules/mob/living/simple_animal/hostile/human/cat_butcher.dm b/code/modules/mob/living/simple_animal/hostile/human/cat_butcher.dm deleted file mode 100644 index 0f14f615e5b6..000000000000 --- a/code/modules/mob/living/simple_animal/hostile/human/cat_butcher.dm +++ /dev/null @@ -1,86 +0,0 @@ -/mob/living/simple_animal/hostile/human/cat_butcherer - name = "Cat Surgeon" - desc = "Feline genemod physiological modification surgery is outlawed in Nanotrasen-controlled sectors. This doctor doesn't seem to care, and thus, is wanted for several warcrimes." - icon_state = "cat_butcher" - icon_living = "cat_butcher" - projectiletype = /obj/projectile/bullet/dart/tranq - projectilesound = 'sound/items/syringeproj.ogg' - ranged = TRUE - ranged_message = "fires the syringe gun at" - ranged_cooldown_time = 30 - speak_chance = 0 - stat_attack = HARD_CRIT - melee_damage_lower = 15 - melee_damage_upper = 15 - attack_verb_continuous = "slashes at" - attack_verb_simple = "slash at" - attack_sound = 'sound/weapons/circsawhit.ogg' - loot = list(/obj/effect/mob_spawn/human/corpse/cat_butcher, /obj/item/circular_saw, /obj/item/gun/syringe) - atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) - faction = list("hostile") - check_friendly_fire = TRUE - var/impatience = 0 - -/mob/living/simple_animal/hostile/human/cat_butcherer/CanAttack(atom/the_target) - if(iscarbon(target)) - var/mob/living/carbon/human/C = target - if(C.getorgan(/obj/item/organ/ears/cat) && C.getorgan(/obj/item/organ/tail/cat) && C.has_trauma_type(/datum/brain_trauma/severe/pacifism))//he wont attack his creations - if(C.stat >= UNCONSCIOUS && (!HAS_TRAIT(C, TRAIT_NOMETABOLISM) || !istype(C.dna.species, /datum/species/ipc)))//unless they need healing - return ..() - else - return FALSE - return ..() - -/mob/living/simple_animal/hostile/human/cat_butcherer/AttackingTarget() - if(iscarbon(target)) - var/mob/living/carbon/human/L = target - if(!L.getorgan(/obj/item/organ/ears/cat) && L.stat >= UNCONSCIOUS) //target doesnt have cat ears - if(L.getorgan(/obj/item/organ/ears)) //slice off the old ears - var/obj/item/organ/ears/ears = L.getorgan(/obj/item/organ/ears) - visible_message("[src] slices off [L]'s ears!", "You slice [L]'s ears off.") - ears.Remove(L) - ears.forceMove(get_turf(L)) - else //implant new ears - visible_message("[src] attaches a pair of cat ears to [L]!", "You attach a pair of cat ears to [L].") - var/obj/item/organ/ears/cat/newears = new - newears.Insert(L, drop_if_replaced = FALSE) - return - else if(!L.getorgan(/obj/item/organ/tail/cat) && L.stat >= UNCONSCIOUS) - if(L.getorgan(/obj/item/organ/tail)) //cut off the tail if they have one already - var/obj/item/organ/tail/tail = L.getorgan(/obj/item/organ/tail) - visible_message("[src] severs [L]'s tail in one swift swipe!", "You sever [L]'s tail in one swift swipe.") - tail.Remove(L) - tail.forceMove(get_turf(L)) - else //put a cat tail on - visible_message("[src] attaches a cat tail to [L]!", "You attach a tail to [L].") - var/obj/item/organ/tail/cat/newtail = new - newtail.Insert(L, drop_if_replaced = FALSE) - return - else if(!L.has_trauma_type(/datum/brain_trauma/severe/pacifism) && L.stat >= UNCONSCIOUS) //still does damage - visible_message("[src] drills a hole in [L]'s skull!", "You pacify [L]. Another successful creation.") - L.gain_trauma(/datum/brain_trauma/severe/pacifism, TRAUMA_RESILIENCE_SURGERY) - say("I'm a genius!!") - L.health += 20 //he heals a bit whenever he finishes - else if(L.stat >= UNCONSCIOUS) //quickly heal them up and move on to our next target! - visible_message("[src] injects [L] with an unknown medicine!", "You inject [L] with medicine.") - L.SetSleeping(0, FALSE) - L.SetUnconscious(0, FALSE) - L.adjustOxyLoss(-50)// do CPR first - if(L.blood_volume <= 500) //bandage them up and give em some blood if they're bleeding - L.blood_volume += 30 - L.heal_bleeding(10) - if(L.getBruteLoss() >= 50)// first, did we beat them into crit? if so, heal that - var/healing = min(L.getBruteLoss(), 120) - L.adjustBruteLoss(-healing) - L.heal_bleeding(10) - return - else if(L.getFireLoss() >= 50) // are they still down from other damage? fix it, but not as fast as the burns - var/healing = min(L.getFireLoss(), 50) - L.adjustFireLoss(-healing) - impatience += 50 - if(prob(impatience)) - FindTarget()//so we don't focus on some unconscious dude when we could get our eyes on the prize - impatience = 0 - say("Bah!!") - return - return ..() diff --git a/code/modules/mob/living/simple_animal/hostile/human/frontiersman.dm b/code/modules/mob/living/simple_animal/hostile/human/frontiersman.dm index d8b4af5344ea..70bddd7be0e0 100644 --- a/code/modules/mob/living/simple_animal/hostile/human/frontiersman.dm +++ b/code/modules/mob/living/simple_animal/hostile/human/frontiersman.dm @@ -53,6 +53,40 @@ /mob/living/simple_animal/hostile/human/frontier/ranged/neutered loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged) +/mob/living/simple_animal/hostile/human/frontier/ranged/surgeon + icon_state = "frontiersmansurgeon" + icon_living = "frontiersmansurgeon" + loot = list(/obj/effect/mob_spawn/human/corpse/frontier/surgeon, + /obj/item/melee/knife/survival, + /obj/item/gun/syringe) + + minimum_distance = 1 + retreat_distance = null + projectiletype = /obj/projectile/bullet/dart/tranq + projectilesound = 'sound/items/syringeproj.ogg' + casingtype = null + ranged_message = "fires the syringe gun at" + ranged_cooldown_time = 30 + +/mob/living/simple_animal/hostile/human/frontier/ranged/surgeon/neuter + loot = list(/obj/effect/mob_spawn/human/corpse/frontier/surgeon) + +/mob/living/simple_animal/hostile/human/frontier/ranged/surgeon/internals + icon_state = "frontiersmansurgeon_mask" + icon_living = "frontiersmansurgeon_mask" + loot = list(/obj/effect/mob_spawn/human/corpse/frontier/surgeon, + /obj/item/melee/knife/survival, + /obj/item/gun/syringe, + /obj/item/clothing/mask/gas/sechailer, + /obj/item/tank/internals/emergency_oxygen/engi) + +/mob/living/simple_animal/hostile/human/frontier/ranged/surgeon/internals/neuter + icon_state = "frontiersmansurgeon_mask" + icon_living = "frontiersmansurgeon_mask" + loot = list(/obj/effect/mob_spawn/human/corpse/frontier/surgeon, + /obj/item/clothing/mask/gas/sechailer, + /obj/item/tank/internals/emergency_oxygen/engi) + /mob/living/simple_animal/hostile/human/frontier/ranged/mosin icon_state = "frontiersmanrangedrifle" icon_living = "frontiersmanrangedrifle" @@ -107,6 +141,33 @@ /mob/living/simple_animal/hostile/human/frontier/ranged/trooper/neutered loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper) +/mob/living/simple_animal/hostile/human/frontier/ranged/trooper/flame + icon_state = "frontiersmanflametrooper" + icon_living = "frontiersmanflametrooper" + loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper/flame, + /obj/item/flamethrower) + atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + minbodytemp = 0 + maxbodytemp = 1000 + + minimum_distance = 1 + retreat_distance = null + shoot_point_blank = TRUE + projectiletype = null + projectilesound = 'sound/weapons/gun/flamethrower/flamethrower1.ogg' + casingtype = null + +/mob/living/simple_animal/hostile/human/frontier/ranged/trooper/flame/OpenFire() + var/turf/T = get_ranged_target_turf_direct(src, target, 4) + var/list/burn_turfs = getline(src, T) - get_turf(src) + visible_message("[src] [ranged_message] at [target.name]!") + playsound(src, projectilesound, 100, TRUE) + fire_line(src, burn_turfs, "flamethrower", TRUE, 10) + ranged_cooldown = world.time + ranged_cooldown_time + +/mob/living/simple_animal/hostile/human/frontier/ranged/trooper/flame/neuter + loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper/flame) + /mob/living/simple_animal/hostile/human/frontier/ranged/trooper/skm icon_state = "frontiersmanrangedak47" icon_living = "frontiersmanrangedak47" @@ -117,7 +178,7 @@ loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper, /obj/item/gun/ballistic/automatic/assault/skm) -/mob/living/simple_animal/hostile/human/frontier/ranged/trooper/internals +/mob/living/simple_animal/hostile/human/frontier/ranged/trooper/skm/internals icon_state = "frontiersmanrangedak47_mask" icon_living = "frontiersmanrangedak47_mask" loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper, @@ -127,7 +188,7 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 -/mob/living/simple_animal/hostile/human/frontier/ranged/trooper/internals/neutered +/mob/living/simple_animal/hostile/human/frontier/ranged/trooper/skm/internals/neutered loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper, /obj/item/clothing/mask/gas, /obj/item/tank/internals/emergency_oxygen/engi) @@ -184,7 +245,7 @@ minbodytemp = 0 -/mob/living/simple_animal/hostile/human/frontier/ranged/trooper/heavy/neutered +/mob/living/simple_animal/hostile/human/frontier/ranged/trooper/heavy/internals/neutered loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper/heavy/gunless, /obj/item/clothing/mask/gas, /obj/item/tank/internals/emergency_oxygen/engi) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm index b7a2f0912653..6a153adc54e0 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm @@ -179,7 +179,7 @@ Difficulty: Medium var/increment = 360 / spiral_count for(var/j = 1 to spiral_count) var/list/turfs = line_target(j * increment + i * increment / 2, range, src) - INVOKE_ASYNC(src, PROC_REF(fire_line), turfs) + INVOKE_ASYNC(src, PROC_REF(dragon_fire_line), turfs) SLEEP_CHECK_DEATH(25) SetRecoveryTime(30) @@ -250,11 +250,11 @@ Difficulty: Medium var/range = 15 var/list/turfs = list() turfs = line_target(-40, range, at) - INVOKE_ASYNC(src, PROC_REF(fire_line), turfs) + INVOKE_ASYNC(src, PROC_REF(dragon_fire_line), turfs) turfs = line_target(0, range, at) - INVOKE_ASYNC(src, PROC_REF(fire_line), turfs) + INVOKE_ASYNC(src, PROC_REF(dragon_fire_line), turfs) turfs = line_target(40, range, at) - INVOKE_ASYNC(src, PROC_REF(fire_line), turfs) + INVOKE_ASYNC(src, PROC_REF(dragon_fire_line), turfs) /mob/living/simple_animal/hostile/megafauna/dragon/proc/line_target(offset, range, atom/at = target) if(!at) @@ -268,32 +268,9 @@ Difficulty: Medium T = check return (getline(src, T) - get_turf(src)) -/mob/living/simple_animal/hostile/megafauna/dragon/proc/fire_line(list/turfs) +/mob/living/simple_animal/hostile/megafauna/dragon/proc/dragon_fire_line(list/turfs) SLEEP_CHECK_DEATH(0) - dragon_fire_line(src, turfs) - -//fire line keeps going even if dragon is deleted -/proc/dragon_fire_line(source, list/turfs) - var/list/hit_list = list() - for(var/turf/T in turfs) - if(istype(T, /turf/closed)) - break - new /obj/effect/hotspot(T) - T.hotspot_expose(700,50,1) - for(var/mob/living/L in T.contents) - if(L in hit_list || L == source) - continue - hit_list += L - L.adjustFireLoss(20) - to_chat(L, "You're hit by [source]'s fire breath!") - - // deals damage to mechs - for(var/obj/mecha/M in T.contents) - if(M in hit_list) - continue - hit_list += M - M.take_damage(45, BRUTE, "melee", 1) - sleep(1.5) + fire_line(src, turfs) /mob/living/simple_animal/hostile/megafauna/dragon/proc/swoop_attack(lava_arena = FALSE, atom/movable/manual_target, swoop_cooldown = 30) if(stat || swooping) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_whelp.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_whelp.dm index 7a4d8cb234c2..8973b3ed18b5 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_whelp.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_whelp.dm @@ -40,7 +40,7 @@ /mob/living/simple_animal/hostile/asteroid/ice_whelp/OpenFire() var/turf/T = get_ranged_target_turf_direct(src, target, fire_range) var/list/burn_turfs = getline(src, T) - get_turf(src) - dragon_fire_line(src, burn_turfs) + fire_line(src, burn_turfs) /mob/living/simple_animal/hostile/asteroid/ice_whelp/death(gibbed) move_force = MOVE_FORCE_DEFAULT diff --git a/code/modules/paperwork/paper_premade.dm b/code/modules/paperwork/paper_premade.dm index 89cc40517a5f..81c84d0b28f4 100644 --- a/code/modules/paperwork/paper_premade.dm +++ b/code/modules/paperwork/paper_premade.dm @@ -112,3 +112,12 @@ name = "URGENT!" default_raw_text = "A hastily written note has been scribbled here...

Please use the ore redemption machine in the cargo office for smelting. PLEASE!

--The Research Staff" +//////////// Ruins + +/obj/item/paper/crumpled/bloody/fluff/ruin/icemoon/cellar_warning + name = "\improper Scrawled Note" + default_raw_text = "

HEY! YOU.


Yeah. You.
One of the Hunters got away and holed up in the cellar and set up a whole bunch of traps. Crazy asshole has already killed like four of our guys in the murder basement. So boss says keep the door sealed and let the prick starve.

SO DONT OPEN IT.

" + +/obj/item/paper/crumpled/bloody/fluff/ruin/icemoon/tally_sheet + name = "\improper Tally Sheet" + default_raw_text = "

Marksmanship Leaderboard


" diff --git a/code/modules/projectiles/ammunition/_ammo_casing.dm b/code/modules/projectiles/ammunition/_ammo_casing.dm index 57b6e9b27b57..02578e4592f8 100644 --- a/code/modules/projectiles/ammunition/_ammo_casing.dm +++ b/code/modules/projectiles/ammunition/_ammo_casing.dm @@ -29,6 +29,8 @@ /// If true, the casing's sprite will automatically be transformed in Initialize(). /// Disable for things like rockets or other heavy ammunition that should only appear right-side up. var/auto_rotate = TRUE + /// If you dont want to bullets to randomly change position on spawn. For mapping. + var/auto_scatter = TRUE ///Pellets for spreadshot var/pellets = 1 @@ -142,8 +144,9 @@ . = ..() if(projectile_type) BB = new projectile_type(src) - pixel_x = base_pixel_x + rand(-10, 10) - pixel_y = base_pixel_y + rand(-10, 10) + if(auto_scatter) + pixel_x = base_pixel_x + rand(-10, 10) + pixel_y = base_pixel_y + rand(-10, 10) item_flags |= NO_PIXEL_RANDOM_DROP if(auto_rotate) transform = transform.Turn(round(45 * rand(0, 32) / 2)) diff --git a/icons/mob/simple_frontiersman.dmi b/icons/mob/simple_frontiersman.dmi index c5b9962fd2368d9d0bedc76c5fd0b9ba6e6a7127..76532a9b45e9c81a31a838c1487c2caf61f1f9dc 100644 GIT binary patch literal 41395 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 A@Bjb+ literal 29244 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 W3hL1+8Sr(GAWc;rl}aU>u>S?Co9%)C diff --git a/shiptest.dme b/shiptest.dme index 7372fdd3f03f..af6247fb0c11 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -2709,7 +2709,6 @@ #include "code\modules\mob\living\simple_animal\hostile\gorilla\emotes.dm" #include "code\modules\mob\living\simple_animal\hostile\gorilla\gorilla.dm" #include "code\modules\mob\living\simple_animal\hostile\gorilla\visuals_icons.dm" -#include "code\modules\mob\living\simple_animal\hostile\human\cat_butcher.dm" #include "code\modules\mob\living\simple_animal\hostile\human\frontiersman.dm" #include "code\modules\mob\living\simple_animal\hostile\human\human.dm" #include "code\modules\mob\living\simple_animal\hostile\human\nanotrasen.dm" From 18cce57a24145bbef1bf9166ca63c3e5474d345f Mon Sep 17 00:00:00 2001 From: Changelogs Date: Wed, 16 Oct 2024 13:30:36 -0500 Subject: [PATCH 58/62] Automatic changelog generation for PR #3291 [ci skip] --- html/changelogs/AutoChangeLog-pr-3291.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3291.yml diff --git a/html/changelogs/AutoChangeLog-pr-3291.yml b/html/changelogs/AutoChangeLog-pr-3291.yml new file mode 100644 index 000000000000..eeaccaa29916 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3291.yml @@ -0,0 +1,14 @@ +author: Gristlebee +changes: + - {rscadd: Ice Lodge Ruin Map and areas} + - {rscadd: Simple Mob Frontiersmen Flametrooper and Surgeon} + - {rscadd: shoot_point_blank option for simple mobs} + - {rscadd: dragon_fire_line supports igniting tiles} + - {rscadd: 'broken display case, gunpowder barrel, SRM corpse spawners, chemical + jug spawners'} + - {rscdel: Cat Butcher} + - {bugfix: Frontiersmen simplemob pathing} + - {bugfix: Fence doors spawning open when they should be closed and vice versa} + - {code_imp: 'scattering can be disabled with auto_scatter var for bullets, grown + items and nutrient bottles'} +delete-after: true From def8140c954523c1eb9e6885ae639b663687a448 Mon Sep 17 00:00:00 2001 From: generalthrax <139387950+generalthrax@users.noreply.github.com> Date: Wed, 16 Oct 2024 13:30:43 -0500 Subject: [PATCH 59/62] Gezena is no longer barefoot (#3566) ## About The Pull Request Someone commented out something to try and see why something was broken and left it. Digi isn't broken either so I'm not sure how this happened. Also removes partial-insulation from the Gezenan captain's gloves that Apogee happened to forget. ## Why It's Good For The Game It's too early in the day for the marines to get silly like this. ## Changelog :cl: fix: Gezena has shoes again del: Gezenan captain gloves no longer have partial insulation in parity with other captain gloves. /:cl: --- code/modules/clothing/factions/gezena.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/clothing/factions/gezena.dm b/code/modules/clothing/factions/gezena.dm index d4ff3169880d..7c17b4ca2dcc 100644 --- a/code/modules/clothing/factions/gezena.dm +++ b/code/modules/clothing/factions/gezena.dm @@ -221,7 +221,6 @@ name = "\improper PGFN Captain's Ihuz-irra Gloves" desc = "As the name, “ihuz-irra”, or “sure-grip”, suggests, the gloves employed by the PGF military are designed to ensure the highest possible grip is maintained while also providing protection from blisters in work environments. Bears the silver standard of a Gezenan captain." icon_state = "captaingloves" - siemens_coefficient = 0.5 //Boots @@ -229,7 +228,7 @@ name = "\improper PGF Uhro-sez Boots" desc = "The word “uhro-sez” translates to “steel-foot”, in reference to the steel toe protection provided by these boots. Standard issue to all members of all branches of the PGF military." icon = 'icons/obj/clothing/faction/gezena/feet.dmi' - //mob_overlay_icon = 'icons/mob/clothing/faction/gezena/feet.dmi' todo: find out why digi breaks here + mob_overlay_icon = 'icons/mob/clothing/faction/gezena/feet.dmi' icon_state = "pgfboots" item_state = "jackboots" From 9401d463a3ba3f319271eb7bbea64eeca3a738c8 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Wed, 16 Oct 2024 13:50:44 -0500 Subject: [PATCH 60/62] Automatic changelog generation for PR #3566 [ci skip] --- html/changelogs/AutoChangeLog-pr-3566.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3566.yml diff --git a/html/changelogs/AutoChangeLog-pr-3566.yml b/html/changelogs/AutoChangeLog-pr-3566.yml new file mode 100644 index 000000000000..1b84c6b5b804 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3566.yml @@ -0,0 +1,6 @@ +author: generalthrax +changes: + - {bugfix: Gezena has shoes again} + - {rscdel: Gezenan captain gloves no longer have partial insulation in parity with + other captain gloves.} +delete-after: true From 718756e1b44c0f48a68e38e18e0a4a7fa4b7ae7e Mon Sep 17 00:00:00 2001 From: Gristlebee <56049844+Gristlebee@users.noreply.github.com> Date: Wed, 16 Oct 2024 11:56:36 -0700 Subject: [PATCH 61/62] Fixes shotgun calibers (#3573) ## About The Pull Request Fixes the caliber strings on the beanbag, rubber, improvised and incendiary shotgun rounds and shotguns being unable to load them as a consequence. Magazines check for an exact caliber match, so having unique strings like "12ga beanbag" means the round gets rejected. ## Why It's Good For The Game Fixes are good ## Changelog :cl: fix: Shotgun calibers and shotguns being unable to load certain rounds /:cl: --- code/modules/projectiles/ammunition/ballistic/shotgun.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/modules/projectiles/ammunition/ballistic/shotgun.dm b/code/modules/projectiles/ammunition/ballistic/shotgun.dm index 2bf041a0e661..1a2590a5b36e 100644 --- a/code/modules/projectiles/ammunition/ballistic/shotgun.dm +++ b/code/modules/projectiles/ammunition/ballistic/shotgun.dm @@ -27,7 +27,6 @@ name = "beanbag slug" desc = "A weak beanbag slug for riot control." icon_state = "beanbag" - caliber = "12ga beanbag" custom_materials = list(/datum/material/iron=250) projectile_type = /obj/projectile/bullet/slug/beanbag @@ -35,7 +34,6 @@ name = "rubber shot" desc = "A shotgun casing filled with densely-packed rubber balls, used to incapacitate crowds from a distance." icon_state = "rubber" - caliber = "12ga rubber" projectile_type = /obj/projectile/bullet/pellet/rubbershot pellets = 8 variance = 25 @@ -45,7 +43,6 @@ name = "incendiary slug" desc = "An incendiary-coated shotgun slug." icon_state = "incendiary" - caliber = "12ga incendiary" projectile_type = /obj/projectile/bullet/incendiary/shotgun /obj/item/ammo_casing/shotgun/blank @@ -59,7 +56,6 @@ name = "improvised shell" desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards." icon_state = "improvised" - caliber = "improvised 12ga" projectile_type = /obj/projectile/bullet/pellet/improvised custom_materials = list(/datum/material/iron=250) pellets = 10 From 0437333c32f3bf1125ac59a4e55565654ed4e7dc Mon Sep 17 00:00:00 2001 From: Changelogs Date: Wed, 16 Oct 2024 14:07:06 -0500 Subject: [PATCH 62/62] Automatic changelog generation for PR #3573 [ci skip] --- html/changelogs/AutoChangeLog-pr-3573.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3573.yml diff --git a/html/changelogs/AutoChangeLog-pr-3573.yml b/html/changelogs/AutoChangeLog-pr-3573.yml new file mode 100644 index 000000000000..a1f9c3c2d60e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3573.yml @@ -0,0 +1,4 @@ +author: Gristlebee +changes: + - {bugfix: Shotgun calibers and shotguns being unable to load certain rounds} +delete-after: true
Name
Points
Notes
Lance Phillips
10
Hit 2 out of 3 targets.
Hetchel Catuwe-Plakat
0
Missed every shot. Relegated to knife duty.
Weer-Topith
30
Hit all three targets.
Kahyarawkkahskre
50
Hit all three targets one handed with a revolver.
Salhree-Yik
100
Hit all three targets while blindfolded.
Kiahkkati
-1000
Tried to one up Salhree and spun three times blindfolded before firing. Hit me in the knee.