From 6a0f29f05c57b78557ffdfeb687f3f91790b82ab Mon Sep 17 00:00:00 2001 From: Lucy Date: Mon, 26 Feb 2024 14:01:31 -0500 Subject: [PATCH 01/63] Constructs now reuse the victim's mind instead of just moving their client (#81665) ## About The Pull Request This makes it so when someone becomes a construct, their _mind_ is transferred, rather than just their ckey. ## Why It's Good For The Game It's the same soul after all. Plus, this prevents clogging up the roundend report. ## Testing Evidence ![2024-02-24 (1708802154) ~ dreamseeker](https://github.com/tgstation/tgstation/assets/65794972/5a33c1eb-55d4-4386-99ea-0c16f5efec3c) ![2024-02-24 (1708802162) ~ dreamseeker](https://github.com/tgstation/tgstation/assets/65794972/10429beb-4d54-4fb2-884b-42569802e0ee) ![2024-02-24 (1708802171) ~ dreamseeker](https://github.com/tgstation/tgstation/assets/65794972/967d99ac-d460-46a9-b7c9-f0c7c6c187d3) ## Changelog :cl: qol: Constructs now reuse the victim's mind instead of just moving their client /:cl: --- .../antagonists/wizard/equipment/soulstone.dm | 48 +++++++++---------- code/modules/mob/living/living_defense.dm | 2 +- code/modules/power/singularity/narsie.dm | 2 +- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/code/modules/antagonists/wizard/equipment/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm index caacb2bb6036f..02357d22e8b41 100644 --- a/code/modules/antagonists/wizard/equipment/soulstone.dm +++ b/code/modules/antagonists/wizard/equipment/soulstone.dm @@ -451,42 +451,42 @@ switch(construct_class) if(CONSTRUCT_JUGGERNAUT) if(IS_CULTIST(creator)) - makeNewConstruct(/mob/living/basic/construct/juggernaut, target, creator, cultoverride, loc_override) // ignore themes, the actual giving of cult info is in the makeNewConstruct proc + make_new_construct(/mob/living/basic/construct/juggernaut, target, creator, cultoverride, loc_override) // ignore themes, the actual giving of cult info is in the make_new_construct proc return switch(theme) if(THEME_WIZARD) - makeNewConstruct(/mob/living/basic/construct/juggernaut/mystic, target, creator, cultoverride, loc_override) + make_new_construct(/mob/living/basic/construct/juggernaut/mystic, target, creator, cultoverride, loc_override) if(THEME_HOLY) - makeNewConstruct(/mob/living/basic/construct/juggernaut/angelic, target, creator, cultoverride, loc_override) + make_new_construct(/mob/living/basic/construct/juggernaut/angelic, target, creator, cultoverride, loc_override) if(THEME_CULT) - makeNewConstruct(/mob/living/basic/construct/juggernaut, target, creator, cultoverride, loc_override) + make_new_construct(/mob/living/basic/construct/juggernaut, target, creator, cultoverride, loc_override) if(CONSTRUCT_WRAITH) if(IS_CULTIST(creator)) - makeNewConstruct(/mob/living/basic/construct/wraith, target, creator, cultoverride, loc_override) // ignore themes, the actual giving of cult info is in the makeNewConstruct proc + make_new_construct(/mob/living/basic/construct/wraith, target, creator, cultoverride, loc_override) // ignore themes, the actual giving of cult info is in the make_new_construct proc return switch(theme) if(THEME_WIZARD) - makeNewConstruct(/mob/living/basic/construct/wraith/mystic, target, creator, cultoverride, loc_override) + make_new_construct(/mob/living/basic/construct/wraith/mystic, target, creator, cultoverride, loc_override) if(THEME_HOLY) - makeNewConstruct(/mob/living/basic/construct/wraith/angelic, target, creator, cultoverride, loc_override) + make_new_construct(/mob/living/basic/construct/wraith/angelic, target, creator, cultoverride, loc_override) if(THEME_CULT) - makeNewConstruct(/mob/living/basic/construct/wraith, target, creator, cultoverride, loc_override) + make_new_construct(/mob/living/basic/construct/wraith, target, creator, cultoverride, loc_override) if(CONSTRUCT_ARTIFICER) if(IS_CULTIST(creator)) - makeNewConstruct(/mob/living/basic/construct/artificer, target, creator, cultoverride, loc_override) // ignore themes, the actual giving of cult info is in the makeNewConstruct proc + make_new_construct(/mob/living/basic/construct/artificer, target, creator, cultoverride, loc_override) // ignore themes, the actual giving of cult info is in the make_new_construct proc return switch(theme) if(THEME_WIZARD) - makeNewConstruct(/mob/living/basic/construct/artificer/mystic, target, creator, cultoverride, loc_override) + make_new_construct(/mob/living/basic/construct/artificer/mystic, target, creator, cultoverride, loc_override) if(THEME_HOLY) - makeNewConstruct(/mob/living/basic/construct/artificer/angelic, target, creator, cultoverride, loc_override) + make_new_construct(/mob/living/basic/construct/artificer/angelic, target, creator, cultoverride, loc_override) if(THEME_CULT) - makeNewConstruct(/mob/living/basic/construct/artificer/noncult, target, creator, cultoverride, loc_override) + make_new_construct(/mob/living/basic/construct/artificer/noncult, target, creator, cultoverride, loc_override) -/proc/makeNewConstruct(mob/living/basic/construct/ctype, mob/target, mob/stoner = null, cultoverride = FALSE, loc_override = null) +/proc/make_new_construct(mob/living/basic/construct/ctype, mob/target, mob/stoner = null, cultoverride = FALSE, loc_override = null) if(QDELETED(target)) return - var/mob/living/basic/construct/newstruct = new ctype((loc_override) ? (loc_override) : (get_turf(target))) + var/mob/living/basic/construct/newstruct = new ctype(loc_override || get_turf(target)) var/makeicon = newstruct.icon_state var/theme = newstruct.theme flick("make_[makeicon][theme]", newstruct) @@ -494,20 +494,20 @@ if(stoner) newstruct.faction |= "[REF(stoner)]" newstruct.master = stoner - var/datum/action/innate/seek_master/SM = new() - SM.Grant(newstruct) - newstruct.key = target.key - var/atom/movable/screen/alert/bloodsense/BS - if(newstruct.mind && ((stoner && IS_CULTIST(stoner)) || cultoverride) && SSticker.HasRoundStarted()) + var/datum/action/innate/seek_master/seek_master = new + seek_master.Grant(newstruct) + target.mind?.transfer_to(newstruct, force_key_move = TRUE) + var/atom/movable/screen/alert/bloodsense/sense_alert + if(newstruct.mind && !IS_CULTIST(newstruct) && ((stoner && IS_CULTIST(stoner)) || cultoverride) && SSticker.HasRoundStarted()) newstruct.mind.add_antag_datum(/datum/antagonist/cult/construct) if(IS_CULTIST(stoner) || cultoverride) - to_chat(newstruct, "You are still bound to serve the cult[stoner ? " and [stoner]":""], follow [stoner ? stoner.p_their() : "their"] orders and help [stoner ? stoner.p_them() : "them"] complete [stoner ? stoner.p_their() : "their"] goals at all costs.") + to_chat(newstruct, span_cultbold("You are still bound to serve the cult[stoner ? " and [stoner]" : ""], follow [stoner?.p_their() || "their"] orders and help [stoner?.p_them() || "them"] complete [stoner?.p_their() || "their"] goals at all costs.")) else if(stoner) - to_chat(newstruct, "You are still bound to serve your creator, [stoner], follow [stoner.p_their()] orders and help [stoner.p_them()] complete [stoner.p_their()] goals at all costs.") + to_chat(newstruct, span_boldwarning("You are still bound to serve your creator, [stoner], follow [stoner.p_their()] orders and help [stoner.p_them()] complete [stoner.p_their()] goals at all costs.")) newstruct.clear_alert("bloodsense") - BS = newstruct.throw_alert("bloodsense", /atom/movable/screen/alert/bloodsense) - if(BS) - BS.Cviewer = newstruct + sense_alert = newstruct.throw_alert("bloodsense", /atom/movable/screen/alert/bloodsense) + if(sense_alert) + sense_alert.Cviewer = newstruct newstruct.cancel_camera() /obj/item/soulstone/anybody diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index f0f3516ae7e0e..562c54ae0b758 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -547,7 +547,7 @@ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(cult_ending_helper), CULT_VICTORY_MASS_CONVERSION), 120) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(ending_helper)), 270) if(client) - makeNewConstruct(/mob/living/basic/construct/harvester, src, cultoverride = TRUE) + make_new_construct(/mob/living/basic/construct/harvester, src, cultoverride = TRUE) else switch(rand(1, 4)) if(1) diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm index 2de87210798d4..caba755eb81a7 100644 --- a/code/modules/power/singularity/narsie.dm +++ b/code/modules/power/singularity/narsie.dm @@ -147,7 +147,7 @@ start_ending_the_round() /obj/narsie/attack_ghost(mob/user) - makeNewConstruct(/mob/living/basic/construct/harvester, user, cultoverride = TRUE, loc_override = loc) + make_new_construct(/mob/living/basic/construct/harvester, user, cultoverride = TRUE, loc_override = loc) /obj/narsie/process() var/datum/component/singularity/singularity_component = singularity.resolve() From d6ef9eb06bc6f8c8f305a6514399dadc6bf9be3b Mon Sep 17 00:00:00 2001 From: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Date: Tue, 27 Feb 2024 00:32:39 +0530 Subject: [PATCH 02/63] [NO GBP] RCD converts miscellaneous turf to plating (#81628) ## About The Pull Request This was unintentionally changed in #78443. RCD converts turfs like basalt, sand, beach etc to plating first & not put a wall directly on top of them, just like it already does for lava, chasms & space ## Changelog :cl: fix: RCD converts miscellaneous turfs like basalt, sand, beach etc to plating first & not put a wall directly on top of them /:cl: --- code/game/turfs/open/floor.dm | 1 - code/game/turfs/open/misc.dm | 153 ++-------------------------------- 2 files changed, 9 insertions(+), 145 deletions(-) diff --git a/code/game/turfs/open/floor.dm b/code/game/turfs/open/floor.dm index a88e7f6b85e18..2dbd065849ec1 100644 --- a/code/game/turfs/open/floor.dm +++ b/code/game/turfs/open/floor.dm @@ -201,7 +201,6 @@ /turf/open/floor/acid_melt() ScrapeAway(flags = CHANGETURF_INHERIT_AIR) -/// if you are updating this make to to update /turf/open/misc/rcd_vals() too /turf/open/floor/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) switch(the_rcd.mode) if(RCD_TURF) diff --git a/code/game/turfs/open/misc.dm b/code/game/turfs/open/misc.dm index a704c7f12b168..02de7489786f9 100644 --- a/code/game/turfs/open/misc.dm +++ b/code/game/turfs/open/misc.dm @@ -76,153 +76,18 @@ return /turf/open/misc/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) - switch(the_rcd.mode) - if(RCD_TURF) - if(the_rcd.rcd_design_path != /turf/open/floor/plating/rcd) - return FALSE - - var/obj/structure/girder/girder = locate() in src - if(girder) - return girder.rcd_vals(user, the_rcd) - - return rcd_result_with_memory( - list("delay" = 2 SECONDS, "cost" = 16), - src, RCD_MEMORY_WALL, - ) - if(RCD_WINDOWGRILLE) - //default cost for building a grill for fulltile windows - var/cost = 4 - var/delay = 1 SECONDS - if(the_rcd.rcd_design_path == /obj/structure/window) - cost = 4 - delay = 2 SECONDS - else if(the_rcd.rcd_design_path == /obj/structure/window/reinforced) - cost = 6 - delay = 2.5 SECONDS - return rcd_result_with_memory( - list("delay" = delay, "cost" = cost), - src, RCD_MEMORY_WINDOWGRILLE, - ) - if(RCD_AIRLOCK) - if(ispath(the_rcd.rcd_design_path, /obj/machinery/door/airlock/glass)) - return list("delay" = 5 SECONDS, "cost" = 20) - else - return list("delay" = 5 SECONDS, "cost" = 16) - if(RCD_STRUCTURE) - var/static/list/structure_costs = list( - /obj/structure/reflector = list("delay" = 2 SECONDS, "cost" = 20), - /obj/structure/girder = list("delay" = 1.3 SECONDS, "cost" = 8), - /obj/structure/frame/machine/secured = list("delay" = 2 SECONDS, "cost" = 20), - /obj/structure/frame/computer/rcd = list("delay" = 2 SECONDS, "cost" = 20), - /obj/structure/floodlight_frame = list("delay" = 3 SECONDS, "cost" = 20), - /obj/structure/chair = list("delay" = 1 SECONDS, "cost" = 4), - /obj/structure/chair/stool/bar = list("delay" = 0.5 SECONDS, "cost" = 4), - /obj/structure/table = list("delay" = 2 SECONDS, "cost" = 8), - /obj/structure/bed = list("delay" = 2.5 SECONDS, "cost" = 8), - /obj/structure/rack = list("delay" = 2.5 SECONDS, "cost" = 4), - ) - - var/list/design_data = structure_costs[the_rcd.rcd_design_path] - if(!isnull(design_data)) - return design_data - - for(var/structure in structure_costs) - if(ispath(the_rcd.rcd_design_path, structure)) - return structure_costs[structure] - + if(the_rcd.mode == RCD_TURF) + if(the_rcd.rcd_design_path != /turf/open/floor/plating/rcd) return FALSE + return list("delay" = 0, "cost" = 3) return FALSE /turf/open/misc/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, list/rcd_data) - switch(rcd_data["[RCD_DESIGN_MODE]"]) - if(RCD_TURF) - if(rcd_data["[RCD_DESIGN_PATH]"] != /turf/open/floor/plating/rcd) - return FALSE - - var/obj/structure/girder/girder = locate() in src - if(girder) - return girder.rcd_act(user, the_rcd, rcd_data) - - place_on_top(/turf/closed/wall) - return TRUE - if(RCD_WINDOWGRILLE) - //check if we are building a window - var/obj/structure/window/window_path = rcd_data["[RCD_DESIGN_PATH]"] - if(!ispath(window_path)) - CRASH("Invalid window path type in RCD: [window_path]") - - //allow directional windows to be built without grills - if(!initial(window_path.fulltile)) - if(!valid_build_direction(src, user.dir, is_fulltile = FALSE)) - balloon_alert(user, "window already here!") - return FALSE - var/obj/structure/window/WD = new window_path(src, user.dir) - WD.set_anchored(TRUE) - return TRUE - - //build grills to deal with full tile windows - if(locate(/obj/structure/grille) in src) - return FALSE - var/obj/structure/grille/new_grille = new(src) - new_grille.set_anchored(TRUE) - return TRUE - if(RCD_AIRLOCK) - var/obj/machinery/door/airlock_type = rcd_data["[RCD_DESIGN_PATH]"] - - if(ispath(airlock_type, /obj/machinery/door/window)) - if(!valid_build_direction(src, user.dir, is_fulltile = FALSE)) - balloon_alert(user, "there's already a windoor!") - return FALSE - for(var/obj/machinery/door/door in src) - if(istype(door, /obj/machinery/door/window)) - continue - balloon_alert(user, "there's already a door!") - return FALSE - //create the assembly and let it finish itself - var/obj/structure/windoor_assembly/assembly = new (src, user.dir) - assembly.secure = ispath(airlock_type, /obj/machinery/door/window/brigdoor) - assembly.electronics = the_rcd.airlock_electronics.create_copy(assembly) - assembly.finish_door() - return TRUE - - for(var/obj/machinery/door/door in src) - if(door.sub_door) - continue - balloon_alert(user, "there's already a door!") - return FALSE - //create the assembly and let it finish itself - var/obj/structure/door_assembly/assembly = new (src) - if(initial(airlock_type.glass)) - assembly.glass = TRUE - assembly.glass_type = airlock_type - else - assembly.airlock_type = airlock_type - assembly.electronics = the_rcd.airlock_electronics.create_copy(assembly) - assembly.finish_door() - return TRUE - if(RCD_STRUCTURE) - var/atom/movable/design_type = rcd_data["[RCD_DESIGN_PATH]"] - - //map absolute types to basic subtypes - var/atom/movable/locate_type = design_type - if(ispath(locate_type, /obj/structure/frame/machine/secured)) - locate_type = /obj/structure/frame/machine - if(ispath(locate_type, /obj/structure/frame/computer/rcd)) - locate_type = /obj/structure/frame/computer - if(ispath(locate_type, /obj/structure/floodlight_frame/completed)) - locate_type = /obj/structure/floodlight_frame - if(locate(locate_type) in src) - return FALSE - - var/atom/movable/design = new design_type(src) - var/static/list/dir_types = list( - /obj/structure/chair, - /obj/structure/table, - /obj/structure/rack, - /obj/structure/bed, - ) - if(is_path_in_list(locate_type, dir_types)) - design.setDir(user.dir) - return TRUE + if(rcd_data["[RCD_DESIGN_MODE]"] == RCD_TURF) + if(rcd_data["[RCD_DESIGN_PATH]"] != /turf/open/floor/plating/rcd) + return FALSE + + place_on_top(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) + return TRUE return FALSE From d228b3f36ff9759d454fce8e82297395b984d2fe Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Tue, 27 Feb 2024 08:14:21 +1300 Subject: [PATCH 03/63] Automatic changelog for PR #81473 [ci skip] --- html/changelogs/AutoChangeLog-pr-81473.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81473.yml diff --git a/html/changelogs/AutoChangeLog-pr-81473.yml b/html/changelogs/AutoChangeLog-pr-81473.yml new file mode 100644 index 0000000000000..a12ae26b8d3b8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81473.yml @@ -0,0 +1,7 @@ +author: "SyncIt21" +delete-after: True +changes: + - qol: "adds examines & screentips for building & deconstructing both machine & computer frames." + - qol: "Adding a circuitboard from a rped to n computer frame will automatically screw it in place like before." + - code_imp: "merged procs for computer & machine frames. autodocs them where possible." + - code_imp: "moved code for machine frame into its own file." \ No newline at end of file From 7e938569f2bccb53162c91acfec0605f8c994b24 Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Tue, 27 Feb 2024 08:35:58 +1300 Subject: [PATCH 04/63] Automatic changelog for PR #81665 [ci skip] --- html/changelogs/AutoChangeLog-pr-81665.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81665.yml diff --git a/html/changelogs/AutoChangeLog-pr-81665.yml b/html/changelogs/AutoChangeLog-pr-81665.yml new file mode 100644 index 0000000000000..80cd9c987c3c0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81665.yml @@ -0,0 +1,4 @@ +author: "Absolucy" +delete-after: True +changes: + - qol: "Constructs now reuse the victim's mind instead of just moving their client" \ No newline at end of file From 08b802ffc34e9d30241d61ee14c5580acee83958 Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Tue, 27 Feb 2024 08:38:45 +1300 Subject: [PATCH 05/63] Automatic changelog for PR #81628 [ci skip] --- html/changelogs/AutoChangeLog-pr-81628.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81628.yml diff --git a/html/changelogs/AutoChangeLog-pr-81628.yml b/html/changelogs/AutoChangeLog-pr-81628.yml new file mode 100644 index 0000000000000..f8a4bc7cfea5e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81628.yml @@ -0,0 +1,4 @@ +author: "SyncIt21" +delete-after: True +changes: + - bugfix: "RCD converts miscellaneous turfs like basalt, sand, beach etc to plating first & not put a wall directly on top of them" \ No newline at end of file From 98c9ff0bb011006bb6d18742891dda906b241088 Mon Sep 17 00:00:00 2001 From: Iamgoofball Date: Mon, 26 Feb 2024 12:02:10 -0800 Subject: [PATCH 06/63] Adds a 1 second delay to moving up and down with the verb/keybinds to disable z-level combat cheese (#81666) ## About The Pull Request Adds a 1 second delay to moving up and down with the verb/keybinds to disable z-level combat cheese ## Why It's Good For The Game Fighting someone using keybinds to move between z-levels over and over again is damn near impossible. Try it sometimes, it's as bullshit as if we had bombs that were cross-Z-level. ## Changelog :cl: balance: Adds a 1 second delay to moving up and down with the verb/keybinds to disable z-level combat cheese /:cl: --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> --- code/modules/mob/mob_movement.dm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 2403ca2da53c3..acf943b540ee3 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -537,7 +537,9 @@ else to_chat(src, span_warning("You are not Superman.")) return - + balloon_alert(src, "moving up...") + if(!do_after(src, 1 SECONDS)) + return if(zMove(UP, z_move_flags = ZMOVE_FLIGHT_FLAGS|ZMOVE_FEEDBACK|ventcrawling_flag)) to_chat(src, span_notice("You move upwards.")) @@ -561,7 +563,9 @@ return loc_atom.relaymove(src, DOWN) var/ventcrawling_flag = HAS_TRAIT(src, TRAIT_MOVE_VENTCRAWLING) ? ZMOVE_VENTCRAWLING : 0 - + balloon_alert(src, "moving down...") + if(!do_after(src, 1 SECONDS)) + return if(zMove(DOWN, z_move_flags = ZMOVE_FLIGHT_FLAGS|ZMOVE_FEEDBACK|ventcrawling_flag)) to_chat(src, span_notice("You move down.")) return FALSE From 6fc90dbe6b8d70a02bfe0dfd9059158a5290bc49 Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Tue, 27 Feb 2024 09:30:51 +1300 Subject: [PATCH 07/63] Automatic changelog for PR #81666 [ci skip] --- html/changelogs/AutoChangeLog-pr-81666.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81666.yml diff --git a/html/changelogs/AutoChangeLog-pr-81666.yml b/html/changelogs/AutoChangeLog-pr-81666.yml new file mode 100644 index 0000000000000..ed78777ebfeb6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81666.yml @@ -0,0 +1,4 @@ +author: "Iamgoofball" +delete-after: True +changes: + - balance: "Adds a 1 second delay to moving up and down with the verb/keybinds to disable z-level combat cheese" \ No newline at end of file From 57e16a9a39dfb10e39bf99d8daba83da43c42a3e Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 27 Feb 2024 00:20:09 +0000 Subject: [PATCH 08/63] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-81473.yml | 7 --- html/changelogs/AutoChangeLog-pr-81540.yml | 7 --- html/changelogs/AutoChangeLog-pr-81596.yml | 4 -- html/changelogs/AutoChangeLog-pr-81599.yml | 4 -- html/changelogs/AutoChangeLog-pr-81605.yml | 4 -- html/changelogs/AutoChangeLog-pr-81627.yml | 4 -- html/changelogs/AutoChangeLog-pr-81628.yml | 4 -- html/changelogs/AutoChangeLog-pr-81629.yml | 5 -- html/changelogs/AutoChangeLog-pr-81637.yml | 4 -- html/changelogs/AutoChangeLog-pr-81638.yml | 4 -- html/changelogs/AutoChangeLog-pr-81641.yml | 6 --- html/changelogs/AutoChangeLog-pr-81661.yml | 4 -- html/changelogs/AutoChangeLog-pr-81662.yml | 4 -- html/changelogs/AutoChangeLog-pr-81665.yml | 4 -- html/changelogs/AutoChangeLog-pr-81666.yml | 4 -- html/changelogs/AutoChangeLog-pr-81671.yml | 4 -- html/changelogs/AutoChangeLog-pr-81684.yml | 4 -- html/changelogs/archive/2024-02.yml | 58 ++++++++++++++++++++++ 18 files changed, 58 insertions(+), 77 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-81473.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81540.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81596.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81599.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81605.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81627.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81628.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81629.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81637.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81638.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81641.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81661.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81662.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81665.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81666.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81671.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81684.yml diff --git a/html/changelogs/AutoChangeLog-pr-81473.yml b/html/changelogs/AutoChangeLog-pr-81473.yml deleted file mode 100644 index a12ae26b8d3b8..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81473.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "SyncIt21" -delete-after: True -changes: - - qol: "adds examines & screentips for building & deconstructing both machine & computer frames." - - qol: "Adding a circuitboard from a rped to n computer frame will automatically screw it in place like before." - - code_imp: "merged procs for computer & machine frames. autodocs them where possible." - - code_imp: "moved code for machine frame into its own file." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81540.yml b/html/changelogs/AutoChangeLog-pr-81540.yml deleted file mode 100644 index 5157e6ceeb2aa..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81540.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "IndieanaJones" -delete-after: True -changes: - - balance: "Gorillas are faster, stronger, but not bigger too. Note while holding an item, they are the same speed as they were prior." - - balance: "Gorillas now have the understanding of languages as monkeys do." - - balance: "The Gorilla Cube Box for traitors has been replaced with a singular gorilla cube. Due to the aforementioned changes, this singular gorilla should be as scary if not scarier than 3 gorillas were prior." - - balance: " Magillitis Serum Autoinjector now grants the resulting gorilla a slow passive regeneration effect which kicks in after not taking damage for 12 seconds." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81596.yml b/html/changelogs/AutoChangeLog-pr-81596.yml deleted file mode 100644 index fdd8366297830..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81596.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Melbert" -delete-after: True -changes: - - bugfix: "The Paddy's Claw should be properly unusable in situations which it should be properly unusable." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81599.yml b/html/changelogs/AutoChangeLog-pr-81599.yml deleted file mode 100644 index 84bf337648e9f..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81599.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "TJatPBnJ" -delete-after: True -changes: - - balance: "Power crepes are now finger food" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81605.yml b/html/changelogs/AutoChangeLog-pr-81605.yml deleted file mode 100644 index 7f6f91ac658e2..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81605.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ArcaneMusic" -delete-after: True -changes: - - bugfix: "Fixed instances where holochip/holocredits would spawn with a total of zero credits contained within." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81627.yml b/html/changelogs/AutoChangeLog-pr-81627.yml deleted file mode 100644 index 8961474bf7f5d..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81627.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "vinylspiders" -delete-after: True -changes: - - bugfix: "fixes cardboard cutouts not updating when held and using the crayon on them to change their appearance, and fixes the alt_appearance being added to the cutout instead of the mob holding it" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81628.yml b/html/changelogs/AutoChangeLog-pr-81628.yml deleted file mode 100644 index f8a4bc7cfea5e..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81628.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SyncIt21" -delete-after: True -changes: - - bugfix: "RCD converts miscellaneous turfs like basalt, sand, beach etc to plating first & not put a wall directly on top of them" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81629.yml b/html/changelogs/AutoChangeLog-pr-81629.yml deleted file mode 100644 index d7c9aa58f9c5c..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81629.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "mc-oofert" -delete-after: True -changes: - - rscadd: "Added an option to deathmatch loadout dropdown that allows you to pick a random loadout" - - bugfix: "In deathmatch, plasmamen are made humans and the UI supports more players" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81637.yml b/html/changelogs/AutoChangeLog-pr-81637.yml deleted file mode 100644 index 1e735fde35982..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81637.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "00-Steven" -delete-after: True -changes: - - bugfix: "Medical/security records now show an icon based on the registered trim, rather than showing a question mark for records with customized titles." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81638.yml b/html/changelogs/AutoChangeLog-pr-81638.yml deleted file mode 100644 index c6d7b9e46333d..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81638.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "00-Steven" -delete-after: True -changes: - - bugfix: "Newscasters no longer say \"No wanted issue posted. Have a secure day.\" when there is, in fact, an active wanted issue currently posted." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81641.yml b/html/changelogs/AutoChangeLog-pr-81641.yml deleted file mode 100644 index 37efab9484f10..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81641.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "JohnFulpWillard" -delete-after: True -changes: - - qol: "You can use atmos machines, holopads, crayons, spray cans, and disposal bins while floored." - - bugfix: "You can close extinguisher cabinets while floored." - - bugfix: "You can climb onto a photocopier from the floor." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81661.yml b/html/changelogs/AutoChangeLog-pr-81661.yml deleted file mode 100644 index 13a28048d7be8..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81661.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Singul0" -delete-after: True -changes: - - bugfix: "The say TGUI would recognize :g (changeling hivemind) prefix. and give a visual indicator in it that you are talking in the right channel" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81662.yml b/html/changelogs/AutoChangeLog-pr-81662.yml deleted file mode 100644 index ab75566b57e30..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81662.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "13spacemen" -delete-after: True -changes: - - bugfix: "Blood overlays on items no longer leak onto other objects" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81665.yml b/html/changelogs/AutoChangeLog-pr-81665.yml deleted file mode 100644 index 80cd9c987c3c0..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81665.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Absolucy" -delete-after: True -changes: - - qol: "Constructs now reuse the victim's mind instead of just moving their client" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81666.yml b/html/changelogs/AutoChangeLog-pr-81666.yml deleted file mode 100644 index ed78777ebfeb6..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81666.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Iamgoofball" -delete-after: True -changes: - - balance: "Adds a 1 second delay to moving up and down with the verb/keybinds to disable z-level combat cheese" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81671.yml b/html/changelogs/AutoChangeLog-pr-81671.yml deleted file mode 100644 index 853a56fb32e7a..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81671.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ben10Omintrix" -delete-after: True -changes: - - bugfix: "fixes pokemon ai still being active when inside the pokeball" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81684.yml b/html/changelogs/AutoChangeLog-pr-81684.yml deleted file mode 100644 index d75725dd9ce89..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81684.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "mc-oofert" -delete-after: True -changes: - - bugfix: "You may no longer make deathmatch arenas dark with a lightswitch." \ No newline at end of file diff --git a/html/changelogs/archive/2024-02.yml b/html/changelogs/archive/2024-02.yml index 3209584f8c161..1d21410dcdf9a 100644 --- a/html/changelogs/archive/2024-02.yml +++ b/html/changelogs/archive/2024-02.yml @@ -732,3 +732,61 @@ - rscadd: A new module, the Safety-First Head Protection module, protects you from head trauma! Available in most modsuits expected to take hits to the head often. And from roundstart exofabricators. +2024-02-27: + 00-Steven: + - bugfix: Newscasters no longer say "No wanted issue posted. Have a secure day." + when there is, in fact, an active wanted issue currently posted. + - bugfix: Medical/security records now show an icon based on the registered trim, + rather than showing a question mark for records with customized titles. + 13spacemen: + - bugfix: Blood overlays on items no longer leak onto other objects + Absolucy: + - qol: Constructs now reuse the victim's mind instead of just moving their client + ArcaneMusic: + - bugfix: Fixed instances where holochip/holocredits would spawn with a total of + zero credits contained within. + Ben10Omintrix: + - bugfix: fixes pokemon ai still being active when inside the pokeball + Iamgoofball: + - balance: Adds a 1 second delay to moving up and down with the verb/keybinds to + disable z-level combat cheese + IndieanaJones: + - balance: Gorillas are faster, stronger, but not bigger too. Note while holding + an item, they are the same speed as they were prior. + - balance: Gorillas now have the understanding of languages as monkeys do. + - balance: The Gorilla Cube Box for traitors has been replaced with a singular gorilla + cube. Due to the aforementioned changes, this singular gorilla should be as + scary if not scarier than 3 gorillas were prior. + - balance: ' Magillitis Serum Autoinjector now grants the resulting gorilla a slow + passive regeneration effect which kicks in after not taking damage for 12 seconds.' + JohnFulpWillard: + - qol: You can use atmos machines, holopads, crayons, spray cans, and disposal bins + while floored. + - bugfix: You can close extinguisher cabinets while floored. + - bugfix: You can climb onto a photocopier from the floor. + Melbert: + - bugfix: The Paddy's Claw should be properly unusable in situations which it should + be properly unusable. + Singul0: + - bugfix: The say TGUI would recognize :g (changeling hivemind) prefix. and give + a visual indicator in it that you are talking in the right channel + SyncIt21: + - qol: adds examines & screentips for building & deconstructing both machine & computer + frames. + - qol: Adding a circuitboard from a rped to n computer frame will automatically + screw it in place like before. + - code_imp: merged procs for computer & machine frames. autodocs them where possible. + - code_imp: moved code for machine frame into its own file. + - bugfix: RCD converts miscellaneous turfs like basalt, sand, beach etc to plating + first & not put a wall directly on top of them + TJatPBnJ: + - balance: Power crepes are now finger food + mc-oofert: + - bugfix: You may no longer make deathmatch arenas dark with a lightswitch. + - rscadd: Added an option to deathmatch loadout dropdown that allows you to pick + a random loadout + - bugfix: In deathmatch, plasmamen are made humans and the UI supports more players + vinylspiders: + - bugfix: fixes cardboard cutouts not updating when held and using the crayon on + them to change their appearance, and fixes the alt_appearance being added to + the cutout instead of the mob holding it From c5f431fda0ddcebae5a57bdc44c969d1e874457e Mon Sep 17 00:00:00 2001 From: Cheshify <73589390+Cheshify@users.noreply.github.com> Date: Mon, 26 Feb 2024 20:03:56 -0500 Subject: [PATCH 09/63] Northstar: Adds a few lights and moves a single poster (#81643) ## About The Pull Request What it says on the tin The lights (circled in red) are mirrored in every floor since that intersection was too dark. (not the one on the elevator itself, that's only on the elevator) (Nevermind I had to get rid of the light on the elevator) ![Screenshot 2024-02-22 232008](https://github.com/tgstation/tgstation/assets/73589390/71681028-7bac-42ff-ae28-51608c9ceb40) I just moved it a lil ![Screenshot 2024-02-22 232127](https://github.com/tgstation/tgstation/assets/73589390/f0860151-9b85-4a55-9f8a-2a15e71b79d1) ## Why It's Good For The Game ## Changelog :cl: fix: the north star's main intersections are brighter, the elevator is properly lit, and a single floating poster was moved. /:cl: --- _maps/map_files/NorthStar/north_star.dmm | 493 +++++++++++++---------- 1 file changed, 269 insertions(+), 224 deletions(-) diff --git a/_maps/map_files/NorthStar/north_star.dmm b/_maps/map_files/NorthStar/north_star.dmm index ed91e1bd69733..e83a6941c8855 100644 --- a/_maps/map_files/NorthStar/north_star.dmm +++ b/_maps/map_files/NorthStar/north_star.dmm @@ -947,6 +947,12 @@ /obj/effect/turf_decal/tile/purple/opposingcorners, /turf/open/floor/iron/white, /area/station/command/heads_quarters/rd) +"alL" = ( +/obj/machinery/light/floor, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/hallway/floor2/fore) "amg" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/east, @@ -1289,6 +1295,15 @@ /obj/item/clothing/mask/facehugger/toy, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard) +"aqm" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/railing, +/obj/effect/turf_decal/box/red, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/testlab) "aqu" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/disposalpipe/segment{ @@ -4573,10 +4588,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/psychology) -"bgq" = ( -/obj/machinery/bluespace_vendor/directional/west, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) "bgr" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/textured_corner, @@ -6525,15 +6536,6 @@ /obj/structure/chair/plastic, /turf/open/floor/pod/light, /area/station/maintenance/floor3/port/aft) -"bBT" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) "bBV" = ( /obj/effect/turf_decal/trimline/green/arrow_cw{ dir = 8 @@ -6978,6 +6980,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/medical/abandoned) +"bJA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/testlab) "bJQ" = ( /obj/structure/railing/corner{ dir = 1 @@ -7450,12 +7459,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/third) -"bQo" = ( -/obj/machinery/bluespace_vendor/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor4/aft) "bQv" = ( /obj/machinery/power/terminal{ dir = 4 @@ -8055,13 +8058,6 @@ dir = 1 }, /area/station/hallway/floor2/aft) -"bYl" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/freezerchamber) "bYp" = ( /obj/structure/rack, /obj/effect/spawner/random/engineering/material, @@ -10367,12 +10363,6 @@ /obj/machinery/duct, /turf/open/floor/iron/white, /area/station/medical/morgue) -"cBP" = ( -/obj/effect/spawner/structure/window/hollow/plasma/middle{ - dir = 4 - }, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/freezerchamber) "cBU" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/flora/bush/sunny/style_random, @@ -11170,6 +11160,14 @@ }, /turf/open/floor/iron/smooth_large, /area/station/hallway/secondary/entry) +"cMz" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/camera/autoname/directional/south, +/obj/machinery/bluespace_vendor/directional/south, +/turf/open/floor/iron/dark/side, +/area/station/hallway/floor2/aft) "cMA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -16510,21 +16508,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/side, /area/station/command/teleporter) -"ehZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/table/reinforced, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/dark_blue/end{ - dir = 8 - }, -/obj/item/storage/toolbox/emergency, -/obj/machinery/bluespace_vendor/directional/south, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) "eir" = ( /obj/machinery/door/airlock/hatch{ name = "Maintenance Access" @@ -17588,11 +17571,6 @@ dir = 8 }, /area/station/security/office) -"exv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/purple, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) "exw" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -18770,6 +18748,10 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/storage) +"eOC" = ( +/obj/machinery/bluespace_vendor/directional/north, +/turf/open/floor/iron/dark, +/area/station/hallway/floor3/fore) "eOP" = ( /turf/closed/wall/r_wall, /area/station/hallway/floor4/aft) @@ -18970,6 +18952,14 @@ /obj/machinery/duct, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) +"eSq" = ( +/obj/structure/railing/corner, +/obj/machinery/atmospherics/pipe/smart/simple/purple, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/testlab) "eSw" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/chair/stool/directional/south, @@ -20756,6 +20746,17 @@ "fsJ" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/ai_upload) +"fsK" = ( +/obj/effect/turf_decal/trimline/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/red/line{ + dir = 8 + }, +/obj/effect/landmark/start/hangover, +/obj/machinery/light/floor, +/turf/open/floor/iron/dark, +/area/station/hallway/floor4/aft) "fsR" = ( /obj/item/kirbyplants/random, /obj/machinery/light/directional/east, @@ -22112,14 +22113,6 @@ }, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/starboard) -"fLX" = ( -/obj/structure/railing/corner, -/obj/machinery/atmospherics/pipe/smart/simple/purple, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) "fMc" = ( /obj/machinery/airalarm/directional/west, /obj/effect/turf_decal/stripes{ @@ -22365,12 +22358,6 @@ /obj/structure/flora/bush/lavendergrass/style_random, /turf/open/floor/grass, /area/station/security/courtroom) -"fPd" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) "fPf" = ( /obj/effect/turf_decal/tile/blue/half, /turf/open/floor/iron/textured_edge, @@ -24915,13 +24902,6 @@ /obj/structure/sign/poster/official/random/directional/south, /turf/open/floor/iron/dark/side, /area/station/hallway/floor2/fore) -"gxE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/bluespace_vendor/directional/north, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) "gxH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -25549,16 +25529,6 @@ /obj/structure/cable, /turf/open/floor/wood, /area/station/commons/dorms/apartment1) -"gGr" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/line{ - dir = 8 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) "gGt" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ dir = 4 @@ -26472,15 +26442,6 @@ /obj/effect/spawner/structure/electrified_grille, /turf/open/floor/plating, /area/station/maintenance/floor2/port/aft) -"gSv" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) "gSw" = ( /obj/structure/cable, /obj/effect/turf_decal/stripes/white/line, @@ -27388,6 +27349,12 @@ /obj/machinery/hydroponics/constructable, /turf/open/floor/iron, /area/station/service/hydroponics) +"heI" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/testlab) "heR" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -27622,11 +27589,6 @@ /obj/effect/spawner/random/medical/surgery_tool, /turf/open/floor/pod/light, /area/station/maintenance/department/engine/atmos) -"hid" = ( -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor4/aft) "hio" = ( /obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ dir = 4 @@ -27797,15 +27759,6 @@ dir = 1 }, /area/station/hallway/floor1/aft) -"hko" = ( -/obj/effect/turf_decal/trimline/green/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/green/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) "hkq" = ( /turf/closed/wall/r_wall, /area/station/engineering/atmos) @@ -29001,6 +28954,13 @@ /obj/structure/flora/bush/style_random, /turf/open/floor/grass, /area/station/security/courtroom) +"hAH" = ( +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/simple/purple, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/testlab) "hAI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -29434,6 +29394,14 @@ /obj/effect/landmark/blobstart, /turf/open/floor/pod/light, /area/station/maintenance/floor4/starboard) +"hGC" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer2{ + dir = 1 + }, +/obj/effect/spawner/structure/window/hollow/plasma/middle, +/obj/machinery/atmospherics/pipe/smart/simple/purple, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/freezerchamber) "hGL" = ( /obj/machinery/light/small/directional/north, /obj/effect/decal/cleanable/dirt, @@ -32635,18 +32603,6 @@ dir = 1 }, /area/station/hallway/secondary/exit/escape_pod) -"ixd" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) "ixf" = ( /obj/structure/chair/sofa/bench/right{ dir = 1 @@ -35938,6 +35894,16 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/pod/light, /area/station/maintenance/floor4/starboard/aft) +"jqq" = ( +/obj/effect/turf_decal/trimline/green/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/green/line{ + dir = 8 + }, +/obj/machinery/light/floor, +/turf/open/floor/iron/dark, +/area/station/hallway/floor3/fore) "jqy" = ( /obj/structure/lattice/catwalk, /turf/open/openspace, @@ -37468,6 +37434,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/floor4/starboard) +"jJM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/purple, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/testlab) "jJP" = ( /obj/effect/decal/cleanable/glass, /turf/open/floor/engine, @@ -39362,14 +39333,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood/parquet, /area/station/medical/psychology) -"kiw" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer2{ - dir = 1 - }, -/obj/effect/spawner/structure/window/hollow/plasma/middle, -/obj/machinery/atmospherics/pipe/smart/simple/purple, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/freezerchamber) "kiA" = ( /obj/effect/turf_decal/tile/green/opposingcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -43498,6 +43461,10 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/service/abandoned_gambling_den) +"liu" = ( +/obj/machinery/atmospherics/components/unary/bluespace_sender, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/project) "liL" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, @@ -45325,6 +45292,12 @@ /obj/effect/mapping_helpers/airlock/access/any/service/theatre, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/starboard/aft) +"lIC" = ( +/obj/machinery/light/floor, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/hallway/floor2/fore) "lIJ" = ( /obj/structure/table/reinforced, /obj/item/flashlight/lamp{ @@ -46100,13 +46073,6 @@ /obj/structure/flora/bush/flowers_yw/style_random, /turf/open/floor/grass, /area/station/science/genetics) -"lRw" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/purple, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) "lRF" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 @@ -47648,10 +47614,6 @@ dir = 4 }, /area/station/hallway/floor3/fore) -"mlc" = ( -/obj/machinery/atmospherics/components/unary/bluespace_sender, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/project) "mlg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -49021,6 +48983,13 @@ }, /turf/open/floor/wood/tile, /area/station/service/library/lounge) +"mCU" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/freezerchamber) "mDe" = ( /obj/structure/lattice, /turf/open/openspace, @@ -53514,6 +53483,16 @@ }, /turf/open/floor/engine/airless, /area/station/engineering/supermatter/waste) +"nIN" = ( +/obj/effect/turf_decal/trimline/blue/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/purple/line{ + dir = 8 + }, +/obj/machinery/light/floor, +/turf/open/floor/iron/dark, +/area/station/hallway/floor2/fore) "nIO" = ( /obj/structure/cable, /turf/open/floor/iron/smooth, @@ -54302,13 +54281,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/floor1/fore) -"nTF" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 4 - }, -/obj/machinery/bluespace_vendor/directional/west, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) "nTI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -54905,13 +54877,6 @@ dir = 1 }, /area/station/engineering/lobby) -"obC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) "obH" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -56703,6 +56668,13 @@ /obj/effect/landmark/start/medical_doctor, /turf/open/floor/iron/white, /area/station/medical/office) +"ozM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/bluespace_vendor/directional/north, +/turf/open/floor/iron, +/area/station/hallway/floor1/aft) "ozO" = ( /turf/closed/wall, /area/station/security/prison) @@ -58267,6 +58239,12 @@ /obj/machinery/light_switch/directional/east, /turf/open/floor/iron, /area/station/cargo/storage) +"oUW" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/testlab) "oVa" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 @@ -59716,6 +59694,12 @@ dir = 4 }, /area/station/hallway/secondary/exit/departure_lounge) +"pqB" = ( +/obj/machinery/light/floor, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/hallway/floor3/fore) "pqH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ @@ -60567,6 +60551,16 @@ }, /turf/open/floor/iron, /area/station/hallway/floor1/fore) +"pBQ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/poster/official/random/directional/south, +/turf/open/floor/iron/dark/side, +/area/station/hallway/floor1/fore) "pBS" = ( /obj/machinery/deepfryer, /turf/open/floor/iron/kitchen, @@ -62694,6 +62688,10 @@ }, /turf/open/floor/iron, /area/station/hallway/floor1/aft) +"qdF" = ( +/obj/machinery/bluespace_vendor/directional/west, +/turf/open/floor/iron/dark, +/area/station/hallway/floor2/fore) "qdS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -62939,6 +62937,16 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/manifold, /turf/open/space/basic, /area/space/nearstation) +"qgU" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 8 + }, +/obj/machinery/light/floor, +/turf/open/floor/iron/dark, +/area/station/hallway/floor1/fore) "qgV" = ( /obj/structure/railing{ dir = 1 @@ -64041,10 +64049,6 @@ /obj/structure/cable, /turf/open/floor/carpet/royalblue, /area/station/commons/dorms/room4) -"qwd" = ( -/obj/machinery/bluespace_vendor/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) "qwg" = ( /obj/structure/chair/comfy/brown{ dir = 1 @@ -65390,6 +65394,13 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron, /area/station/science/genetics) +"qNI" = ( +/obj/machinery/light/floor, +/obj/machinery/bluespace_vendor/directional/north, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/hallway/floor4/aft) "qNK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -68910,6 +68921,10 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor3/starboard/aft) +"rKV" = ( +/obj/machinery/bluespace_vendor/directional/north, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "rKX" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -73225,6 +73240,16 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/atmos/hfr_room) +"sTE" = ( +/obj/effect/turf_decal/trimline/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/red/line{ + dir = 8 + }, +/obj/machinery/light/floor, +/turf/open/floor/iron/dark, +/area/station/hallway/floor4/aft) "sTG" = ( /obj/machinery/chem_dispenser/drinks, /obj/structure/table/glass, @@ -74586,14 +74611,6 @@ /obj/machinery/light/floor, /turf/open/floor/iron/dark, /area/station/hallway/floor2/fore) -"tjS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/bluespace_vendor/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) "tjV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -76347,6 +76364,18 @@ }, /turf/open/floor/pod, /area/station/maintenance/floor4/starboard/aft) +"tHk" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/testlab) "tHn" = ( /obj/machinery/atmospherics/components/binary/pump/layer4{ dir = 1 @@ -78197,6 +78226,21 @@ }, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/port) +"uhj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/table/reinforced, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark_blue/end{ + dir = 8 + }, +/obj/item/storage/toolbox/emergency, +/obj/machinery/bluespace_vendor/directional/south, +/turf/open/floor/iron/dark, +/area/station/commons/storage/tools) "uhl" = ( /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/effect/spawner/random/structure/crate, @@ -79993,6 +80037,13 @@ /obj/machinery/vending/coffee, /turf/open/floor/iron/dark, /area/station/science/breakroom) +"uGS" = ( +/obj/structure/chair/sofa/bench/left{ + dir = 4 + }, +/obj/machinery/bluespace_vendor/directional/west, +/turf/open/floor/iron/dark, +/area/station/hallway/floor1/fore) "uHa" = ( /obj/effect/turf_decal/tile/red, /turf/open/floor/iron/dark/side, @@ -81868,10 +81919,6 @@ /obj/machinery/duct, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/port) -"vdT" = ( -/obj/machinery/bluespace_vendor/directional/north, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "vdU" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/generic_maintenance_landmark, @@ -88719,12 +88766,6 @@ dir = 5 }, /area/station/security/prison) -"wLQ" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) "wLV" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -89526,12 +89567,24 @@ /obj/item/storage/briefcase/secure, /turf/open/floor/iron/dark, /area/station/command/teleporter) +"wWY" = ( +/obj/effect/spawner/structure/window/hollow/plasma/middle{ + dir = 4 + }, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/freezerchamber) "wXc" = ( /obj/structure/disposalpipe/segment{ dir = 10 }, /turf/open/floor/plating, /area/station/maintenance/floor2/starboard/fore) +"wXg" = ( +/obj/machinery/light/floor, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/hallway/floor4/aft) "wXi" = ( /obj/structure/cable/multilayer/multiz, /turf/open/floor/plating, @@ -90172,15 +90225,6 @@ icon_state = "textured_dark" }, /area/station/medical/office) -"xgo" = ( -/obj/machinery/door/firedoor/border_only, -/obj/structure/railing, -/obj/effect/turf_decal/box/red, -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) "xgC" = ( /obj/structure/railing/corner{ dir = 8 @@ -93022,11 +93066,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/hallway/secondary/service) -"xSd" = ( -/obj/structure/transport/linear/public, -/obj/machinery/light/directional/south, -/turf/open/floor/plating/elevatorshaft, -/area/station/hallway/floor1/fore) "xSi" = ( /obj/effect/turf_decal/tile/dark/half/contrasted, /obj/effect/turf_decal/tile/dark/half/contrasted, @@ -93165,6 +93204,12 @@ }, /turf/open/space/openspace, /area/space) +"xUB" = ( +/obj/machinery/light/floor, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/hallway/floor3/fore) "xUI" = ( /obj/structure/cable, /obj/structure/chair/sofa/bench/left, @@ -112550,7 +112595,7 @@ aYd nBn rUH rUH -nTF +uGS rNO tSK hJy @@ -121797,7 +121842,7 @@ xHA xHA uKC gqU -kRg +pBQ wdL wdL wdL @@ -122054,7 +122099,7 @@ pye xHA bzw gqU -gjy +imJ cQm nCi svW @@ -124368,12 +124413,12 @@ qIz jYY ptd cbT -gSv +qgU okN -gSv +qgU mXx nRe -xSd +mXx kyR eVk twx @@ -136699,7 +136744,7 @@ bJU pYs uyu kbu -gxE +ozM eeQ mdR gpf @@ -141321,7 +141366,7 @@ qEw qEw qEw sAH -vdT +rKV kfo iZP kcB @@ -143100,7 +143145,7 @@ owI owI css lwc -mlc +liu vEN tGq vmr @@ -178074,7 +178119,7 @@ kEI wwu sbI jtJ -bgq +qdF hat qfv lXq @@ -189387,7 +189432,7 @@ dpL dpL dpL fNT -skU +alL tjP jVt fNT @@ -189904,9 +189949,9 @@ uPQ mge loK umC -bBT +nIN gYX -bBT +nIN feX feX feX @@ -190415,7 +190460,7 @@ qun qun qun fNT -veG +lIC uKW gEa fNT @@ -203783,7 +203828,7 @@ wzS nyE aOp oqv -tjS +cMz igE aWR aZn @@ -243098,7 +243143,7 @@ nVq nVq cyX wRJ -qwd +eOC mUs oJo oJo @@ -254923,7 +254968,7 @@ liQ liQ liQ eDe -bks +pqB bdR cKS eDe @@ -255440,9 +255485,9 @@ cXK kZH uNx hkV -hko +jqq viX -hko +jqq oZx oZx oZx @@ -255951,7 +255996,7 @@ qrd qrd qrd eDe -drk +xUB bdR mZI eDe @@ -269059,7 +269104,7 @@ faS fXB quO cgm -ehZ +uhj frW frW chn @@ -315042,7 +315087,7 @@ xpL qRI mKO rDL -wLQ +heI jha nPE xVV @@ -315299,7 +315344,7 @@ wFa eIs wFa tYV -fPd +oUW xwL nPE nPE @@ -315556,7 +315601,7 @@ mSG aSX aSX pqH -obC +bJA mKu hHi fMc @@ -315813,7 +315858,7 @@ dWz lYx unQ wMU -fPd +oUW rDL jjj dIJ @@ -316066,12 +316111,12 @@ ucA vyc vPP rrs -bYl -kiw -exv -lRw -fLX -ixd +mCU +hGC +jJM +hAH +eSq +tHk bDn gwe eoI @@ -316323,11 +316368,11 @@ ucA lYx oRh lYx -cBP +wWY lYx ngD wMU -xgo +aqm kFy xTG xxA @@ -320459,7 +320504,7 @@ liQ liQ liQ nWW -hid +wXg nQX bgI eOP @@ -320976,9 +321021,9 @@ jgd kpl tFp gQh -gGr +fsK weB -gQh +sTE vRO vRO vRO @@ -321487,7 +321532,7 @@ txa txa txa nWW -bQo +qNI nQX kQk eOP From d8507cd1ee3c80832a8b98394ecca2f49630924d Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Tue, 27 Feb 2024 14:04:14 +1300 Subject: [PATCH 10/63] Automatic changelog for PR #81643 [ci skip] --- html/changelogs/AutoChangeLog-pr-81643.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81643.yml diff --git a/html/changelogs/AutoChangeLog-pr-81643.yml b/html/changelogs/AutoChangeLog-pr-81643.yml new file mode 100644 index 0000000000000..0e4561dd8ab89 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81643.yml @@ -0,0 +1,4 @@ +author: "Cheshify" +delete-after: True +changes: + - bugfix: "the north star's main intersections are brighter, the elevator is properly lit, and a single floating poster was moved." \ No newline at end of file From 1f2b3045d5d26cecd4d53f5a3384acfaca4f032d Mon Sep 17 00:00:00 2001 From: Cheshify <73589390+Cheshify@users.noreply.github.com> Date: Mon, 26 Feb 2024 20:05:02 -0500 Subject: [PATCH 11/63] Birdshot Chapel Fixes & Improvements (#81642) ## About The Pull Request Slightly remaps Birdshot's Monastery Garden, moves the altar, and changes the area so Sparring Sect chaplains have a place to fight. Fixes: #81614 ![Screenshot 2024-02-22 230737](https://github.com/tgstation/tgstation/assets/73589390/b18d7a95-261b-41ca-b997-01a0b8480ad1) ## Why It's Good For The Game The Chaplain didn't really have a place to preach before, and they also had nowhere to spar! This converts the garden into a more useable space. ## Changelog :cl: qol: The chapel has been slightly overhauled on Birdshot, with the chaplain now having a place to preach sermons. fix: Sparring chaplains are now able to operate on Birdshot! /:cl: --- _maps/map_files/Birdshot/birdshot.dmm | 258 ++++++++++++++------------ 1 file changed, 141 insertions(+), 117 deletions(-) diff --git a/_maps/map_files/Birdshot/birdshot.dmm b/_maps/map_files/Birdshot/birdshot.dmm index 25141a232c003..7f2a071eec9bd 100644 --- a/_maps/map_files/Birdshot/birdshot.dmm +++ b/_maps/map_files/Birdshot/birdshot.dmm @@ -338,6 +338,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/engineering/atmos/project) +"agF" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/chair/sofa/bamboo/right{ + dir = 1 + }, +/turf/open/floor/wood/large, +/area/station/service/chapel) "agI" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ @@ -567,8 +574,9 @@ /turf/open/floor/iron, /area/station/hallway/primary/starboard) "alg" = ( -/obj/structure/altar_of_gods, -/obj/item/book/bible, +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/pen, /turf/open/floor/carpet/lone, /area/station/service/chapel/office) "alh" = ( @@ -2383,7 +2391,7 @@ /obj/structure/flora/bush/sunny/style_random, /obj/machinery/light/small/directional/west, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "aWC" = ( /obj/machinery/computer/department_orders/engineering{ dir = 8 @@ -4591,7 +4599,7 @@ "bOl" = ( /obj/structure/flora/bush/flowers_br/style_random, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "bOp" = ( /obj/effect/spawner/random/vending/snackvend, /obj/effect/turf_decal/tile/blue{ @@ -6017,7 +6025,7 @@ }, /obj/structure/flora/bush/flowers_pp/style_random, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "css" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 10 @@ -7248,7 +7256,7 @@ }, /obj/structure/flora/bush/flowers_yw/style_random, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "cPi" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -8810,10 +8818,9 @@ "dty" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/wood, /obj/machinery/light/floor, /turf/open/floor/wood/large, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "dtC" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/siding/purple{ @@ -20389,7 +20396,7 @@ }, /obj/structure/flora/tree/jungle/small/style_random, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "hpQ" = ( /obj/structure/closet/crate/coffin, /obj/structure/window/spawner/directional/south, @@ -21684,7 +21691,7 @@ }, /obj/structure/flora/bush/flowers_br/style_random, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "hNY" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -25955,7 +25962,7 @@ }, /obj/structure/flora/tree/jungle/small/style_random, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "jsc" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/red/line{ @@ -26693,6 +26700,13 @@ }, /turf/open/floor/iron, /area/station/cargo/office) +"jEU" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/landmark/start/chaplain, +/turf/open/floor/wood/large, +/area/station/service/chapel) "jEZ" = ( /obj/structure/hedge, /obj/effect/decal/cleanable/dirt, @@ -36544,7 +36558,7 @@ /obj/machinery/camera/autoname/directional/north, /obj/machinery/light/small/directional/north, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "mYT" = ( /obj/structure/table, /obj/item/assembly/igniter{ @@ -40246,7 +40260,7 @@ }, /obj/structure/flora/bush/flowers_yw/style_random, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "oqI" = ( /obj/structure/cable, /obj/machinery/door/airlock{ @@ -43260,7 +43274,7 @@ }, /obj/machinery/airalarm/directional/north, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "pug" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -44160,7 +44174,7 @@ /obj/structure/flora/bush/sunny/style_random, /obj/machinery/newscaster/directional/south, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "pHQ" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 4 @@ -44442,7 +44456,7 @@ dir = 9 }, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "pMr" = ( /obj/structure/rack, /obj/effect/spawner/random/maintenance/two, @@ -44459,7 +44473,7 @@ dir = 1 }, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "pMA" = ( /obj/machinery/light/small/directional/east, /turf/open/floor/catwalk_floor/iron_dark, @@ -45274,7 +45288,7 @@ /obj/structure/flora/bush/flowers_yw/style_random, /obj/effect/landmark/start/hangover, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "pYG" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -45345,9 +45359,11 @@ /area/station/cargo/storage) "qaA" = ( /obj/structure/disposalpipe/segment, -/obj/structure/flora/bush/flowers_br/style_random, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/large, +/area/station/service/chapel) "qaH" = ( /obj/structure/cable, /obj/effect/turf_decal/siding/dark_red/corner{ @@ -45408,8 +45424,11 @@ "qbr" = ( /obj/structure/flora/bush/flowers_pp/style_random, /obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "qbw" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -46051,19 +46070,13 @@ /area/station/maintenance/starboard/greater) "qkv" = ( /obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, /obj/machinery/light/floor, /turf/open/floor/wood/large, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "qkw" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, /obj/machinery/light/floor, /turf/open/floor/wood/large, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "qkF" = ( /turf/open/floor/iron, /area/station/commons) @@ -46633,10 +46646,10 @@ /area/station/maintenance/aft) "quJ" = ( /obj/effect/turf_decal/siding/wood, -/obj/structure/flora/tree/stump, /obj/machinery/light/small/directional/south, +/obj/structure/flora/tree/jungle/small/style_random, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "quS" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -47131,15 +47144,11 @@ }, /obj/structure/flora/bush/flowers_br/style_random, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "qCi" = ( /obj/structure/disposalpipe/segment, -/obj/structure/chair/sofa/bamboo/right{ - dir = 8 - }, -/obj/effect/landmark/start/assistant, /turf/open/floor/wood/large, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "qCq" = ( /obj/structure/cable, /obj/structure/window/reinforced/spawner/directional/north, @@ -47170,12 +47179,8 @@ /turf/open/floor/iron/large, /area/station/command/heads_quarters/hop) "qCR" = ( -/obj/structure/chair/sofa/bamboo/left{ - dir = 4 - }, -/obj/effect/landmark/start/assistant, /turf/open/floor/wood/large, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "qCU" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/structure/table/reinforced, @@ -47811,6 +47816,11 @@ }, /turf/open/floor/plating, /area/station/commons/storage/tools) +"qOp" = ( +/obj/structure/table/wood, +/obj/item/book/bible, +/turf/open/floor/wood/large, +/area/station/service/chapel) "qOt" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -48553,7 +48563,7 @@ dir = 4 }, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "qZG" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/broken_flooring/corner/directional/south, @@ -48602,7 +48612,7 @@ "ram" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/wood/large, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "raz" = ( /obj/machinery/door/airlock/public/glass{ name = "Lavatorie" @@ -48612,12 +48622,12 @@ /area/station/commons/toilet/restrooms) "raC" = ( /obj/structure/disposalpipe/segment, +/obj/effect/landmark/start/assistant, /obj/structure/chair/sofa/bamboo/left{ - dir = 8 + dir = 1 }, -/obj/effect/landmark/start/assistant, /turf/open/floor/wood/large, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "raE" = ( /obj/machinery/duct, /turf/open/floor/iron, @@ -48637,16 +48647,16 @@ /turf/open/floor/iron, /area/station/hallway/secondary/dock) "raX" = ( +/obj/effect/landmark/start/assistant, /obj/structure/chair/sofa/bamboo/right{ - dir = 4 + dir = 1 }, -/obj/effect/landmark/start/chaplain, /turf/open/floor/wood/large, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "rba" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/wood/large, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "rbc" = ( /obj/structure/transport/linear/tram, /obj/structure/tram, @@ -48662,7 +48672,7 @@ }, /obj/machinery/power/apc/auto_name/directional/east, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "rbo" = ( /obj/structure/disposalpipe/segment, /obj/machinery/door/firedoor, @@ -50067,7 +50077,7 @@ dir = 5 }, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "ryt" = ( /obj/machinery/light/dim/directional/north, /obj/effect/turf_decal/tile/neutral{ @@ -50110,10 +50120,9 @@ /area/station/science/breakroom) "rzu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/wood, /obj/machinery/light/floor, /turf/open/floor/wood/large, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "rzG" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/dark_red/half/contrasted{ @@ -50157,7 +50166,7 @@ dir = 9 }, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "rAg" = ( /obj/structure/cable, /obj/effect/mapping_helpers/broken_floor, @@ -50927,7 +50936,7 @@ /obj/effect/turf_decal/siding/wood/corner, /obj/structure/flora/tree/jungle/small/style_random, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "rMa" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -52068,7 +52077,7 @@ dir = 4 }, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "sdm" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, @@ -53396,9 +53405,8 @@ /area/station/security/warden) "syv" = ( /obj/structure/disposalpipe/segment, -/obj/structure/flora/tree/jungle/small/style_random, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "syx" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -53424,7 +53432,7 @@ "syG" = ( /obj/effect/spawner/xmastree, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "syN" = ( /obj/effect/spawner/random/trash, /turf/open/floor/plating, @@ -53450,7 +53458,7 @@ "szy" = ( /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "szz" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -54153,7 +54161,7 @@ }, /obj/effect/decal/cleanable/cobweb, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "sMq" = ( /obj/machinery/light/warm/directional/west, /turf/open/floor/iron, @@ -54887,14 +54895,14 @@ dir = 4 }, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "sYK" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 }, /obj/structure/flora/bush/sunny/style_random, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "sZn" = ( /obj/structure/table, /obj/effect/turf_decal/siding/wood{ @@ -55129,7 +55137,7 @@ /obj/effect/turf_decal/siding/wood, /obj/structure/flora/bush/flowers_br/style_random, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "tdh" = ( /obj/structure/chair/sofa/corp/right{ dir = 4 @@ -56419,7 +56427,7 @@ "tzJ" = ( /obj/structure/flora/bush/flowers_yw/style_random, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "tAq" = ( /obj/structure/rack, /obj/effect/spawner/random/maintenance, @@ -56585,7 +56593,7 @@ }, /obj/machinery/light/directional/east, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "tCm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/red{ @@ -56744,7 +56752,7 @@ }, /obj/machinery/light/small/directional/east, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "tEW" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -57578,7 +57586,7 @@ /obj/structure/flora/bush/flowers_pp/style_random, /obj/machinery/firealarm/directional/east, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "tTR" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, @@ -58013,7 +58021,7 @@ dir = 6 }, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "uab" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -58032,7 +58040,7 @@ }, /obj/structure/flora/tree/stump, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "uax" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -58048,7 +58056,7 @@ }, /obj/structure/flora/tree/jungle/small/style_random, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "uaP" = ( /obj/structure/mirror/directional/east, /obj/structure/chair/stool/bar/directional/east, @@ -59118,7 +59126,7 @@ /obj/structure/flora/bush/flowers_yw/style_random, /obj/machinery/light/small/directional/east, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "utD" = ( /obj/machinery/light_switch/directional/west, /obj/effect/turf_decal/stripes/corner{ @@ -60506,7 +60514,7 @@ /obj/structure/flora/tree/jungle/small/style_random, /obj/structure/flora/bush/flowers_pp/style_random, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "uSi" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -60535,8 +60543,13 @@ /turf/open/floor/iron, /area/station/science/lower) "uSC" = ( -/turf/closed/wall/mineral/wood/nonmetal, -/area/station/service/hydroponics/garden/monastery) +/obj/effect/landmark/start/assistant, +/obj/effect/landmark/start/assistant, +/obj/structure/chair/sofa/bamboo/left{ + dir = 1 + }, +/turf/open/floor/wood/large, +/area/station/service/chapel) "uSG" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -60864,11 +60877,9 @@ /turf/closed/wall, /area/station/science/lower) "uXN" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, +/obj/structure/altar_of_gods, /turf/open/floor/wood/large, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "uXU" = ( /obj/effect/spawner/random/structure/closet_maintenance, /obj/effect/spawner/random/maintenance, @@ -61622,15 +61633,14 @@ /area/station/engineering/atmos) "vkz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/wood, /turf/open/floor/wood/large, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "vkG" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 1 }, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "vkJ" = ( /obj/item/book/manual/wiki/security_space_law{ pixel_x = 9; @@ -62681,7 +62691,7 @@ dir = 8 }, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "vzV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -62692,8 +62702,12 @@ /area/station/security/tram) "vzW" = ( /obj/structure/disposalpipe/segment, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/obj/effect/turf_decal/siding/wood, +/obj/structure/chair/sofa/bamboo/left{ + dir = 1 + }, +/turf/open/floor/wood/large, +/area/station/service/chapel) "vzX" = ( /obj/machinery/door/airlock/command{ name = "Centcom Dock" @@ -62753,8 +62767,12 @@ /area/station/security/tram) "vAA" = ( /obj/effect/landmark/start/hangover, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/obj/effect/turf_decal/siding/wood, +/obj/structure/chair/sofa/bamboo/left{ + dir = 1 + }, +/turf/open/floor/wood/large, +/area/station/service/chapel) "vAC" = ( /obj/structure/flora/bush/large/style_random{ pixel_y = -3 @@ -62780,8 +62798,11 @@ "vAR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "vAT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -63800,7 +63821,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/flora/bush/flowers_yw/style_random, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "vSL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral{ @@ -63824,7 +63845,7 @@ "vSX" = ( /obj/structure/flora/bush/sunny/style_random, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "vSY" = ( /obj/structure/table, /obj/item/chisel{ @@ -64912,7 +64933,7 @@ }, /obj/structure/flora/bush/sunny/style_random, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "wjM" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ @@ -65004,7 +65025,7 @@ /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/siding/wood, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "wlJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -65023,7 +65044,7 @@ /obj/effect/turf_decal/siding/wood, /obj/structure/flora/bush/flowers_pp/style_random, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "wme" = ( /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, @@ -65194,7 +65215,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/siding/wood, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "woD" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -67372,7 +67393,7 @@ /obj/structure/flora/bush/flowers_pp/style_random, /obj/effect/landmark/event_spawn, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "wWc" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -68894,7 +68915,7 @@ }, /obj/structure/flora/bush/flowers_br/style_random, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "xpU" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -70777,7 +70798,7 @@ "xPR" = ( /obj/structure/flora/tree/jungle/small/style_random, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "xPW" = ( /obj/item/kirbyplants/random/fullysynthetic, /turf/open/floor/wood/parquet, @@ -71005,7 +71026,7 @@ "xRZ" = ( /obj/effect/turf_decal/siding/wood, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "xSe" = ( /obj/structure/table/glass, /obj/structure/microscope, @@ -71525,7 +71546,7 @@ /area/station/maintenance/starboard/greater) "xYD" = ( /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "xYE" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -71666,8 +71687,11 @@ /turf/open/floor/stone, /area/station/command/heads_quarters/hos) "yaG" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, /turf/open/floor/wood/large, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "yaI" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -72366,7 +72390,7 @@ dir = 1 }, /turf/open/floor/grass, -/area/station/service/hydroponics/garden/monastery) +/area/station/service/chapel) "yjE" = ( /turf/closed/wall/r_wall, /area/station/maintenance/department/engine) @@ -84976,12 +85000,12 @@ mhk mhk mhk csp -xYD +qZB uaa -yaG +qCR ram ryp -xYD +qZB xYD xRZ wBm @@ -85490,12 +85514,12 @@ rYD mhk jrZ xYD -xYD +jEU uXN -uSC -uSC +qCR +raX vkz -xYD +agF syG pHN wAW @@ -85747,9 +85771,9 @@ pbu mhk mYS xYD -xPR -uXN -uSC +yaG +qOp +qCR uSC vkz vAA @@ -86004,12 +86028,12 @@ xLO mhk ptZ sYF -tzJ +yaG qkw qCR raX rzu -xYD +agF xYD wlQ wBm @@ -86263,7 +86287,7 @@ mhk oqE qbr hNT -yaG +qCR rba rAb vAR From c03635355ec2e0bac541b3081e615482c3510a84 Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Tue, 27 Feb 2024 14:05:23 +1300 Subject: [PATCH 12/63] Automatic changelog for PR #81642 [ci skip] --- html/changelogs/AutoChangeLog-pr-81642.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81642.yml diff --git a/html/changelogs/AutoChangeLog-pr-81642.yml b/html/changelogs/AutoChangeLog-pr-81642.yml new file mode 100644 index 0000000000000..61bb755accacd --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81642.yml @@ -0,0 +1,5 @@ +author: "Cheshify" +delete-after: True +changes: + - qol: "The chapel has been slightly overhauled on Birdshot, with the chaplain now having a place to preach sermons." + - bugfix: "Sparring chaplains are now able to operate on Birdshot!" \ No newline at end of file From 275a4785ac469922a248ae25fafa4bd8381a662b Mon Sep 17 00:00:00 2001 From: Pinta <68373373+softcerv@users.noreply.github.com> Date: Mon, 26 Feb 2024 20:06:38 -0500 Subject: [PATCH 13/63] TRAIT_DEAF now works on non-carbon mobs (#81624) ## About The Pull Request This PR makes it so that the `can_hear` proc will return `FALSE` if the proc is called on a non-carbon that has the deaf trait. ## Why It's Good For The Game This makes it so that non-carbon mobs can have the TRAIT_DEAF added to them and it will now work. There isn't anything that would currently utilize this on here. But, I do have a project downstream where TRAIT_DEAF is added to a non-carbon mob. ## Changelog :cl: code: TRAIT_DEAF now works on non-carbon mobs /:cl: --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> --- code/modules/mob/mob_helpers.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 8c6ebe114965b..d2b8ce0f3c380 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -391,7 +391,7 @@ ///Can the mob hear /mob/proc/can_hear() - . = TRUE + return !HAS_TRAIT(src, TRAIT_DEAF) /** * Examine text for traits shared by multiple types. From 633a1e8a5d1e94fce606e1c6d403431cae4adebb Mon Sep 17 00:00:00 2001 From: PapaMichael Date: Mon, 26 Feb 2024 20:08:43 -0500 Subject: [PATCH 14/63] Fugitive Hunters can spawn early if emergency shuttle is called (#81612) ## About The Pull Request In the event of a shuttle call, fugitive hunters will spawn early. (Hunters will still spawn 10 minutes after the fugitives if the shuttle is idle) ## Why It's Good For The Game Hunters are currently able to spawn way too late to ever have a chance to interact with the fugitives, this is lame for both parties involved. ## Changelog :cl: PapaMichael balance: Fugitive hunters will spawn early if the emergency shuttle is called. /:cl: --- code/modules/events/ghost_role/fugitive_event.dm | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/code/modules/events/ghost_role/fugitive_event.dm b/code/modules/events/ghost_role/fugitive_event.dm index 1556eb045589d..4b86e751c0b98 100644 --- a/code/modules/events/ghost_role/fugitive_event.dm +++ b/code/modules/events/ghost_role/fugitive_event.dm @@ -62,7 +62,7 @@ HUNTER_PACK_BOUNTY, HUNTER_PACK_PSYKER, ) - addtimer(CALLBACK(src, PROC_REF(spawn_hunters), hunter_backstory), 10 MINUTES) + addtimer(CALLBACK(src, PROC_REF(check_spawn_hunters), hunter_backstory, 10 MINUTES), 1 MINUTES) role_name = "fugitive hunter" return SUCCESSFUL_SPAWN @@ -103,7 +103,13 @@ S.put_in_hands(A) new /obj/item/autosurgeon(landing_turf) -//security team gets called in after 10 minutes of prep to find the refugees +/datum/round_event/ghost_role/fugitives/proc/check_spawn_hunters(backstory, remaining_time) + //if the emergency shuttle has been called, spawn hunters now to give them a chance + if(remaining_time == 0 || SSshuttle.emergency.mode != EMERGENCY_IDLE_OR_RECALLED) + spawn_hunters(backstory) + return + addtimer(CALLBACK(src, PROC_REF(check_spawn_hunters), backstory, remaining_time - 1 MINUTES), 1 MINUTES) + /datum/round_event/ghost_role/fugitives/proc/spawn_hunters(backstory) var/list/candidates = SSpolling.poll_ghost_candidates("Do you wish to be considered for a group of [backstory]?", check_jobban = ROLE_FUGITIVE_HUNTER, pic_source = /obj/machinery/sleeper, role_name_text = backstory) shuffle_inplace(candidates) From 126531d142564b1e2f0393196cf7eaead0f54063 Mon Sep 17 00:00:00 2001 From: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Date: Mon, 26 Feb 2024 20:13:14 -0500 Subject: [PATCH 15/63] Smart monkeys now punch instead of bite (#81607) ## About The Pull Request Split this off from https://github.com/tgstation/tgstation/pull/81598 in hopes to keep it as atomic as I can. Brought to you by the same guy that made monkeys able to do human things if they were clever in https://github.com/tgstation/tgstation/pull/70331 you now also punch people if you are an intelligent monkey instead of biting them, because you're now too civilized for such savagery. I also replaced a PASSTABLE with PASSMOB because while it doesn't have any in-game effects currently, it made no sense to check if a mob can pass through a table to know if they should be knocking a mob over. ## Why It's Good For The Game You're an intelligent being now, and you should be acting as such, punching instead of biting sounded like an obvious addition to me but it seems like it got left out and I didn't notice that until now. ## Changelog :cl: qol: Intelligent monkeys now punch people instead of biting them. /:cl: --- .../carbon/human/species_types/monkeys.dm | 12 ++++++------ code/modules/surgery/bodyparts/parts.dm | 18 +++++++++--------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species_types/monkeys.dm b/code/modules/mob/living/carbon/human/species_types/monkeys.dm index 4de716fe953d0..1f371d575ac1e 100644 --- a/code/modules/mob/living/carbon/human/species_types/monkeys.dm +++ b/code/modules/mob/living/carbon/human/species_types/monkeys.dm @@ -42,9 +42,7 @@ ai_controlled_species = TRUE /datum/species/monkey/random_name(gender,unique,lastname) - var/randname = "monkey ([rand(1,999)])" - - return randname + return "monkey ([rand(1, 999)])" /datum/species/monkey/on_species_gain(mob/living/carbon/human/H, datum/species/old_species) . = ..() @@ -170,7 +168,7 @@ /obj/item/organ/internal/brain/primate/on_mob_insert(mob/living/carbon/primate) . = ..() - RegisterSignal(primate, COMSIG_MOVABLE_CROSS, PROC_REF(on_crossed), TRUE) + RegisterSignal(primate, COMSIG_MOVABLE_CROSS, PROC_REF(on_crossed)) /obj/item/organ/internal/brain/primate/on_mob_remove(mob/living/carbon/primate) . = ..() @@ -185,11 +183,13 @@ var/mob/living/in_the_way_mob = crossed if(iscarbon(in_the_way_mob) && !in_the_way_mob.combat_mode) return - if(in_the_way_mob.pass_flags & PASSTABLE) + if(in_the_way_mob.pass_flags & PASSMOB) return in_the_way_mob.knockOver(owner) /obj/item/organ/internal/brain/primate/get_attacking_limb(mob/living/carbon/human/target) - return owner.get_bodypart(BODY_ZONE_HEAD) + if(!HAS_TRAIT(owner, TRAIT_ADVANCEDTOOLUSER)) + return owner.get_bodypart(BODY_ZONE_HEAD) + return ..() #undef MONKEY_SPEC_ATTACK_BITE_MISS_CHANCE diff --git a/code/modules/surgery/bodyparts/parts.dm b/code/modules/surgery/bodyparts/parts.dm index 776207a2ccee9..ead03aa0f707c 100644 --- a/code/modules/surgery/bodyparts/parts.dm +++ b/code/modules/surgery/bodyparts/parts.dm @@ -253,9 +253,9 @@ px_x = -5 px_y = -3 dmg_overlay_type = SPECIES_MONKEY - unarmed_damage_low = 1 /// monkey punches must be really weak, considering they bite people instead and their bites are weak as hell. - unarmed_damage_high = 2 - unarmed_effectiveness = 0 + unarmed_damage_low = 3 + unarmed_damage_high = 8 + unarmed_effectiveness = 5 appendage_noun = "paw" /obj/item/bodypart/arm/left/alien @@ -351,8 +351,8 @@ px_x = 5 px_y = -3 dmg_overlay_type = SPECIES_MONKEY - unarmed_damage_low = 1 - unarmed_damage_high = 2 + unarmed_damage_low = 3 + unarmed_damage_high = 8 unarmed_effectiveness = 0 appendage_noun = "paw" @@ -468,8 +468,8 @@ dmg_overlay_type = SPECIES_MONKEY unarmed_damage_low = 2 unarmed_damage_high = 3 - unarmed_effectiveness = 0 - footprint_sprite = FOOTPRINT_SPRITE_PAWS + unarmed_effectiveness = 5 + footprint_sprite = FOOTPRINT_SPRITE_PAWS /obj/item/bodypart/leg/left/alien icon = 'icons/mob/human/species/alien/bodyparts.dmi' @@ -559,8 +559,8 @@ dmg_overlay_type = SPECIES_MONKEY unarmed_damage_low = 2 unarmed_damage_high = 3 - unarmed_effectiveness = 0 - footprint_sprite = FOOTPRINT_SPRITE_PAWS + unarmed_effectiveness = 5 + footprint_sprite = FOOTPRINT_SPRITE_PAWS /obj/item/bodypart/leg/right/alien icon = 'icons/mob/human/species/alien/bodyparts.dmi' From cccb85a19d09783fb4f0527e513b506c15398a3f Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Tue, 27 Feb 2024 14:13:30 +1300 Subject: [PATCH 16/63] Automatic changelog for PR #81624 [ci skip] --- html/changelogs/AutoChangeLog-pr-81624.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81624.yml diff --git a/html/changelogs/AutoChangeLog-pr-81624.yml b/html/changelogs/AutoChangeLog-pr-81624.yml new file mode 100644 index 0000000000000..ab0c85d5fd716 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81624.yml @@ -0,0 +1,4 @@ +author: "softcerv" +delete-after: True +changes: + - code_imp: "TRAIT_DEAF now works on non-carbon mobs" \ No newline at end of file From 296ce3a8430ecd277f06525649d32c6ff8f2bd9c Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Tue, 27 Feb 2024 14:15:36 +1300 Subject: [PATCH 17/63] Automatic changelog for PR #81612 [ci skip] --- html/changelogs/AutoChangeLog-pr-81612.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81612.yml diff --git a/html/changelogs/AutoChangeLog-pr-81612.yml b/html/changelogs/AutoChangeLog-pr-81612.yml new file mode 100644 index 0000000000000..89d09d1d7bc33 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81612.yml @@ -0,0 +1,4 @@ +author: "PapaMichael" +delete-after: True +changes: + - balance: "Fugitive hunters will spawn early if the emergency shuttle is called." \ No newline at end of file From 3d9d6d52bfb10b83165b35f4516b62d6009ff247 Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Tue, 27 Feb 2024 14:18:40 +1300 Subject: [PATCH 18/63] Automatic changelog for PR #81607 [ci skip] --- html/changelogs/AutoChangeLog-pr-81607.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81607.yml diff --git a/html/changelogs/AutoChangeLog-pr-81607.yml b/html/changelogs/AutoChangeLog-pr-81607.yml new file mode 100644 index 0000000000000..0acb3c6a1bbf7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81607.yml @@ -0,0 +1,4 @@ +author: "JohnFulpWillard" +delete-after: True +changes: + - qol: "Intelligent monkeys now punch people instead of biting them." \ No newline at end of file From 9f5bd0db4e30f0657025ed84b7c033650fa4a4e1 Mon Sep 17 00:00:00 2001 From: IndieanaJones <47086570+IndieanaJones@users.noreply.github.com> Date: Mon, 26 Feb 2024 20:20:10 -0500 Subject: [PATCH 19/63] Adds New Changeling Ability: Hive Head (#81502) ## About The Pull Request This PR adds a new changeling ability to the game, entitled 'Hive Head'. A basic description is shown below, as seen in-game. ![image](https://github.com/tgstation/tgstation/assets/47086570/4eed4f2e-3193-4522-b5ac-95b48e871346) Hive Head is a two-point ability for Changeling which encases your head in a bee hive. The bee hive is rather unremarkable as a defensive utility, boasting extremely poor resistances to all damage types except for BIO and providing flash resistance (your eyes are being covered). Along with this, since Hive Head covers your head, you cannot use it conjunction with chitinous armor, since it requires your head slot be open. While this all sounds rather bad, the major reason to use this ability is upon activation, you gain another ability which costs no chemicals and operates on a cooldown: Release Bees. Release Bees summons 6 bees on your location which will attack anything that isn't you or directly allied to you for 20 seconds, which afterwards the bees will vanish. By default, these bees are standard and do not inject any sort of chemicals into your victims, so while they can provide a good distraction and do some damage, they aren't really that useful. The true value of this ability comes with the fact that the Hive Head is also a reagent container, which stores up to 50 units of whatever you want to put inside. While you can't get what you put into the Hive Head out in any way, summoned bees will pull from the reagents inside your Hive Head to inject into targets, increasing the amount of !!FUN!! you can have with them drastically. For example, if you go into the bar and dump a bunch of different drinks into the Hive Head, your summoned bees will have equal chance to select any of those drinks to be what they inject into people. Reagents inside the Hive Head will stay there until it is dispelled, which upon re-using the ability, the Hive Head will be empty. Hive Head also has the additional utility that Release Bees works at any time so long as you're still wearing it. However, only 1 bee will be summoned whilst you are in hard crit or dead. Release Bees has a cooldown of 30 seconds. Additionally, if mixing chemical cocktails to have a swarm of bees forcefully inject into people isn't to your liking, Hive Head provides an alternate mode of use if a legion core is used on it. Using a legion core on the Hive Head will cause it to mutate, changing its appearance and functionality. The Legion Hive Head, as opposed to releasing 6 bees, releases 4 legion skulls to fight for you instead. These legion skulls do more damage than bees, but can be dispelled by any attack and only last for 10 seconds as opposed to 20, but this also comes with the added benefit of a shorter cooldown time of 15 seconds as opposed to 30. The major benefit of this version of the ability is that if the skulls down a humanoid target, the skulls will turn that person into an allied legion, who will use their abilities to support you with healing and additional skull summoning should they run into a target. Just as disabling Hive Head normally removes chemicals, Hive Head will return to normal upon deactivating and reactivating the ability, requiring another legion core be used to access this version again. ![image](https://github.com/tgstation/tgstation/assets/47086570/d30b238c-caaa-4b45-9371-a2a1f0686378) Additionally, this PR adds the sound of a swarm of bees for when the ability gets activated, new sprites to facilitate implementing this ability, and some changes to how the armor subset of changeling abilities work internally in order to add ones that only apply a helmet or armor as opposed to both. This PR also fixes a bug with bees having an incorrect sprite offset (they look like they're one tile over to the left currently). As always, the numbers and mechanics can be changed if need be, and I'm open to hearing others' thoughts about this. ## Why It's Good For The Game Changeling hasn't received a new ability in a very long time, only reworks to their existing kit, so there haven't been any new toys to shake up the experience with. Hive Head is something new that fits Changeling's preference for one-on-one combat (the bees pretty much always aggro on the same target) while also playing into that weird alien shapeshifter vibe. Along with this, being able to change what chemicals the bees inject into people opens the door to creative ways of using it alongside the rest of the sandbox, so it'll be interesting to see what players come up with. The additional legion mode is just a cherry on top, allowing people to play around with the cool legion skull mechanics in an antagonistic setting. ## Changelog :cl: add: New Changeling Ability: Hive Head fix: Fixed bees having an improper sprite offset /:cl: --- .../changeling/powers/mutations.dm | 156 ++++++++++++++++-- .../mob/living/basic/farm_animals/bee/_bee.dm | 4 - icons/mob/actions/actions_changeling.dmi | Bin 9757 -> 20554 bytes icons/mob/clothing/head/helmet.dmi | Bin 40300 -> 38349 bytes icons/obj/clothing/head/helmet.dmi | Bin 20174 -> 19135 bytes sound/creatures/bee_swarm.ogg | Bin 0 -> 20749 bytes 6 files changed, 144 insertions(+), 16 deletions(-) create mode 100644 sound/creatures/bee_swarm.ogg diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index 7ad2b14448c2e..1f3ac272d6fcc 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -90,8 +90,8 @@ chemical_cost = 1000 dna_cost = CHANGELING_POWER_UNOBTAINABLE - var/helmet_type = /obj/item - var/suit_type = /obj/item + var/helmet_type = null + var/suit_type = null var/suit_name_simple = " " var/helmet_name_simple = " " var/recharge_slowdown = 0 @@ -125,10 +125,14 @@ if(!ishuman(user) || !changeling) return 1 var/mob/living/carbon/human/H = user + if(istype(H.wear_suit, suit_type) || istype(H.head, helmet_type)) - H.visible_message(span_warning("[H] casts off [H.p_their()] [suit_name_simple]!"), span_warning("We cast off our [suit_name_simple]."), span_hear("You hear the organic matter ripping and tearing!")) - H.temporarilyRemoveItemFromInventory(H.head, TRUE) //The qdel on dropped() takes care of it - H.temporarilyRemoveItemFromInventory(H.wear_suit, TRUE) + var/name_to_use = (isnull(suit_type) ? helmet_name_simple : suit_name_simple) + H.visible_message(span_warning("[H] casts off [H.p_their()] [name_to_use]!"), span_warning("We cast off our [name_to_use]."), span_hear("You hear the organic matter ripping and tearing!")) + if(!isnull(helmet_type)) + H.temporarilyRemoveItemFromInventory(H.head, TRUE) //The qdel on dropped() takes care of it + if(!isnull(suit_type)) + H.temporarilyRemoveItemFromInventory(H.wear_suit, TRUE) H.update_worn_oversuit() H.update_worn_head() H.update_body_parts() @@ -141,18 +145,19 @@ return 1 /datum/action/changeling/suit/sting_action(mob/living/carbon/human/user) - if(!user.canUnEquip(user.wear_suit)) + if(!user.canUnEquip(user.wear_suit) && !isnull(suit_type)) user.balloon_alert(user, "body occupied!") return - if(!user.canUnEquip(user.head)) + if(!user.canUnEquip(user.head) && !isnull(helmet_type)) user.balloon_alert(user, "head occupied!") return ..() - user.dropItemToGround(user.head) - user.dropItemToGround(user.wear_suit) - - user.equip_to_slot_if_possible(new suit_type(user), ITEM_SLOT_OCLOTHING, 1, 1, 1) - user.equip_to_slot_if_possible(new helmet_type(user), ITEM_SLOT_HEAD, 1, 1, 1) + if(!isnull(suit_type)) + user.dropItemToGround(user.wear_suit) + user.equip_to_slot_if_possible(new suit_type(user), ITEM_SLOT_OCLOTHING, 1, 1, 1) + if(!isnull(helmet_type)) + user.dropItemToGround(user.head) + user.equip_to_slot_if_possible(new helmet_type(user), ITEM_SLOT_HEAD, 1, 1, 1) var/datum/antagonist/changeling/changeling = IS_CHANGELING(user) changeling.chem_recharge_slowdown += recharge_slowdown @@ -582,3 +587,130 @@ /obj/item/clothing/head/helmet/changeling/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_NODROP, CHANGELING_TRAIT) + +/datum/action/changeling/suit/hive_head + name = "Hive Head" + desc = "We coat our head in a waxy outing coating similar to a bee hive which can be used to manufacture bees to attack our enemies. Costs 15 chemicals." + helptext = "While the hive head does not provide much in the ways of armor, it does allow the user to send bees out to attack targets. Reagents can poured inside the hive to cause all bees released to inject said reagents." + button_icon_state = "hive_head" + chemical_cost = 15 + dna_cost = 2 + req_human = FALSE + blood_on_castoff = TRUE + + helmet_type = /obj/item/clothing/head/helmet/changeling_hivehead + helmet_name_simple = "hive head" + +/obj/item/clothing/head/helmet/changeling_hivehead + name = "hive head" + desc = "A strange, waxy outer coating covering your head. Gives you tinnitus." + icon_state = "hivehead" + inhand_icon_state = null + flash_protect = FLASH_PROTECTION_FLASH + item_flags = DROPDEL + armor_type = /datum/armor/changeling_hivehead + flags_inv = HIDEEARS|HIDEHAIR|HIDEEYES|HIDEFACIALHAIR|HIDEFACE|HIDESNOUT + actions_types = list(/datum/action/cooldown/hivehead_spawn_minions) + ///Does this hive head hold reagents? + var/holds_reagents = TRUE + +/obj/item/clothing/head/helmet/changeling_hivehead/Initialize(mapload) + . = ..() + if(holds_reagents) + create_reagents(50, REFILLABLE) + +/datum/armor/changeling_hivehead + melee = 10 + bullet = 10 + laser = 10 + energy = 10 + bio = 50 + +/obj/item/clothing/head/helmet/changeling_hivehead/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_NODROP, CHANGELING_TRAIT) + +/obj/item/clothing/head/helmet/changeling_hivehead/attackby(obj/item/attacking_item, mob/user, params) + . = ..() + if(!istype(attacking_item, /obj/item/organ/internal/monster_core/regenerative_core/legion) || !holds_reagents) + return + visible_message(span_boldwarning("As [user] shoves [attacking_item] into [src], [src] begins to mutate.")) + var/mob/living/carbon/wearer = loc + playsound(wearer, 'sound/effects/attackblob.ogg', 60, TRUE) + wearer.temporarilyRemoveItemFromInventory(wearer.head, TRUE) + wearer.equip_to_slot_if_possible(new /obj/item/clothing/head/helmet/changeling_hivehead/legion(wearer), ITEM_SLOT_HEAD, 1, 1, 1) + qdel(attacking_item) + + +/datum/action/cooldown/hivehead_spawn_minions + name = "Release Bees" + desc = "Release a group of bees to attack all other lifeforms." + background_icon_state = "bg_demon" + overlay_icon_state = "bg_demon_border" + button_icon = 'icons/mob/simple/bees.dmi' + button_icon_state = "queen_item" + cooldown_time = 30 SECONDS + ///The mob we're going to spawn + var/spawn_type = /mob/living/basic/bee + ///How many are we going to spawn + var/spawn_count = 6 + ///How long our summoned mobs last for + var/spawn_lifespan = 25 SECONDS + +/datum/action/cooldown/hivehead_spawn_minions/PreActivate(atom/target) + if(owner.movement_type & VENTCRAWLING) + owner.balloon_alert(owner, "unavailable here") + return + . = ..() + +/datum/action/cooldown/hivehead_spawn_minions/Activate(atom/target) + . = ..() + do_tell() + var/spawns = spawn_count + if(owner.stat >= HARD_CRIT) + spawns = 1 + for(var/i in 1 to spawns) + var/mob/living/basic/summoned_minion = new spawn_type(get_turf(owner)) + summoned_minion.faction = list("[REF(owner)]") + if(spawn_lifespan != 0 SECONDS) + QDEL_IN(summoned_minion, spawn_lifespan) + minion_additional_changes(summoned_minion) + +///Our tell that we're using this ability. Usually a sound and a visible message.area +/datum/action/cooldown/hivehead_spawn_minions/proc/do_tell() + owner.visible_message(span_warning("[owner]'s head begins to buzz as bees begin to pour out!"), span_warning("We release the bees."), span_hear("You hear a loud buzzing sound!")) + playsound(owner, 'sound/creatures/bee_swarm.ogg', 60, TRUE) + +///Stuff we want to do to our minions. This is in its own proc so subtypes can override this behaviour. +/datum/action/cooldown/hivehead_spawn_minions/proc/minion_additional_changes(mob/living/basic/minion) + var/mob/living/basic/bee/summoned_bee = minion + var/mob/living/carbon/wearer = owner + if(istype(summoned_bee) && length(wearer.head.reagents.reagent_list)) + summoned_bee.assign_reagent(pick(wearer.head.reagents.reagent_list)) + +/obj/item/clothing/head/helmet/changeling_hivehead/legion + name = "legion hive head" + desc = "A strange, boney coating covering your head with a fleshy inside. Surprisingly comfortable." + icon_state = "hivehead_legion" + actions_types = list(/datum/action/cooldown/hivehead_spawn_minions/legion) + holds_reagents = FALSE + +/datum/action/cooldown/hivehead_spawn_minions/legion + name = "Release Legion" + desc = "Release a group of legion to attack all other lifeforms." + button_icon = 'icons/mob/simple/lavaland/lavaland_monsters.dmi' + button_icon_state = "legion_head" + cooldown_time = 15 SECONDS + spawn_type = /mob/living/basic/legion_brood + spawn_count = 4 + //Legion heads go away by themselves, we don't have to handle that + spawn_lifespan = 0 SECONDS + +/datum/action/cooldown/hivehead_spawn_minions/legion/do_tell() + owner.visible_message(span_warning("[owner]'s head begins to shake as legion begin to pour out!"), span_warning("We release the legion."), span_hear("You hear a loud squishing sound!")) + playsound(owner, 'sound/effects/attackblob.ogg', 60, TRUE) + +/datum/action/cooldown/hivehead_spawn_minions/legion/minion_additional_changes(mob/living/basic/minion) + var/mob/living/basic/legion_brood/brood = minion + if (istype(brood)) + brood.assign_creator(owner, FALSE) diff --git a/code/modules/mob/living/basic/farm_animals/bee/_bee.dm b/code/modules/mob/living/basic/farm_animals/bee/_bee.dm index 66c0d12996299..5510b81679e94 100644 --- a/code/modules/mob/living/basic/farm_animals/bee/_bee.dm +++ b/code/modules/mob/living/basic/farm_animals/bee/_bee.dm @@ -25,10 +25,6 @@ response_harm_continuous = "squashes" response_harm_simple = "squash" - mob_size = MOB_SIZE_LARGE - pixel_x = -16 - base_pixel_x = -16 - speed = 1 maxHealth = 10 health = 10 diff --git a/icons/mob/actions/actions_changeling.dmi b/icons/mob/actions/actions_changeling.dmi index bb3634a1dde11cbf038a2a23837463018d42df5b..25a4e10aa578bafbd721ac751f9d33bfc67e2527 100644 GIT binary patch delta 20274 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 diff --git a/icons/mob/clothing/head/helmet.dmi b/icons/mob/clothing/head/helmet.dmi index 5b30ae65b8f23717b34a8d7e603ffcf301403c0c..49edcf8422f26a14c1723fc4fad8151a6f34d13f 100644 GIT binary patch literal 38349 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 literal 40300 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

BdHP~T4h96z0~+1 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 abweqM((~DFW~UJX4jW4ci$*iA`2PaOzxg%* diff --git a/icons/obj/clothing/head/helmet.dmi b/icons/obj/clothing/head/helmet.dmi index d9f02085e732ea55bf5efbc45527ca4f715e413b..94d11e6b8204070cd363d64aa19260334a0f19e8 100644 GIT binary patch literal 19135 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 Ef*y6cPyhe` literal 20174 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

8Duh3hzQ#()Mx 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 literal 0 HcmV?d00001 From b2007c17d11609b7b32dd3b06cf9391bdbf50553 Mon Sep 17 00:00:00 2001 From: Iamgoofball Date: Mon, 26 Feb 2024 17:23:25 -0800 Subject: [PATCH 20/63] Xenomorph stomachs and vore will no longer destroy items directly, refactored it to use acid_act() (#81534) ## About The Pull Request senomorph stomachs and vore will no longer destroy items and mobs directly, refactored it to use acid_act() fixes xenomorph vore accidentally destroying mobs it wasn't supposed to destroy, im thinking this was modified list in place shenanigans ## Why It's Good For The Game this shit is jank as hell and better done this way and results in less weird edge cases, and also makes xenomorphs feel less bullshit ## Changelog :cl: balance: xenomorph stomachs will no longer destroy items directly, refactored it to use acid_act() fix: fixes xenomorph vore accidentally destroying mobs it wasn't supposed to destroy, im thinking this was modified list in place shenanigans /:cl: --- code/modules/mob/living/carbon/alien/organs.dm | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm index 66f555b639a88..a73926b18aea8 100644 --- a/code/modules/mob/living/carbon/alien/organs.dm +++ b/code/modules/mob/living/carbon/alien/organs.dm @@ -197,13 +197,7 @@ for(var/atom/movable/thing as anything in stomach_contents) if(!digestable_cache[thing.type]) continue - thing.reagents.trans_to(src, 4) - - if(isliving(thing)) - var/mob/living/lad = thing - lad.adjustBruteLoss(6) - else if(!thing.reagents.total_volume) // Mobs can't get dusted like this, too important - qdel(thing) + thing.acid_act(75, 10) /obj/item/organ/internal/stomach/alien/proc/consume_thing(atom/movable/thing) RegisterSignal(thing, COMSIG_MOVABLE_MOVED, PROC_REF(content_moved)) @@ -211,9 +205,6 @@ if(isliving(thing)) var/mob/living/lad = thing RegisterSignal(thing, COMSIG_LIVING_DEATH, PROC_REF(content_died)) - if(lad.stat == DEAD) - qdel(lad) - return stomach_contents += thing thing.forceMove(owner || src) // We assert that if we have no owner, we will not be nullspaced From d113874e75b44c9892ce543cd649d18b1e77a3e4 Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Tue, 27 Feb 2024 14:30:38 +1300 Subject: [PATCH 21/63] Automatic changelog for PR #81502 [ci skip] --- html/changelogs/AutoChangeLog-pr-81502.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81502.yml diff --git a/html/changelogs/AutoChangeLog-pr-81502.yml b/html/changelogs/AutoChangeLog-pr-81502.yml new file mode 100644 index 0000000000000..67763b4fb43e8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81502.yml @@ -0,0 +1,5 @@ +author: "IndieanaJones" +delete-after: True +changes: + - rscadd: "New Changeling Ability: Hive Head" + - bugfix: "Fixed bees having an improper sprite offset" \ No newline at end of file From 73733d44cf5b06fa2568aedc4e125ae9291f0855 Mon Sep 17 00:00:00 2001 From: lessthanthree <83487515+lessthnthree@users.noreply.github.com> Date: Tue, 27 Feb 2024 01:33:12 +0000 Subject: [PATCH 22/63] Tram mob throwing adjustments (#81617) ## About The Pull Request - Corrects grille breaking related to PR https://github.com/tgstation/tgstation/pull/81594 - Throw chance moved to a var on the controller instead of hardcoded - Corrects a bit of documentation on tram controller landmarks - Fixes the collision multiplier being set to a static value during malfunction instead of the intended multiplier - Includes throw chance in tram malfunction - Cursed mobs now guaranteed to be thrown ## Changelog :cl: LT3 code: Tram throwing now breaks grilles consistently code: Tram malfunction lethality/throw chance are now a multiplier instead of flat value code: Tram throw chance can be adjusted code: Unlucky trait is now used in tram throw calculation /:cl: --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> --- code/datums/elements/window_smash.dm | 3 +++ code/modules/transport/linear_controller.dm | 3 +++ .../modules/transport/tram/tram_controller.dm | 20 +++++++++++-------- code/modules/transport/transport_module.dm | 3 ++- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/code/datums/elements/window_smash.dm b/code/datums/elements/window_smash.dm index fbe2674b86c72..32896d096bf6e 100644 --- a/code/datums/elements/window_smash.dm +++ b/code/datums/elements/window_smash.dm @@ -24,6 +24,9 @@ for(var/obj/structure/window/window in target_turf) window.smash_and_injure(flying_mob, old_loc, direction) + for(var/obj/structure/grille/grille in target_turf) + grille.smash_and_injure(flying_mob, old_loc, direction) + /datum/element/window_smashing/Detach(datum/source) UnregisterSignal(source, COMSIG_MOVABLE_MOVED) passwindow_off(source, TRAM_PASSENGER_TRAIT) diff --git a/code/modules/transport/linear_controller.dm b/code/modules/transport/linear_controller.dm index dd90562deb643..80c161c32918d 100644 --- a/code/modules/transport/linear_controller.dm +++ b/code/modules/transport/linear_controller.dm @@ -35,6 +35,9 @@ ///if true, the platform cannot be manually moved. var/controls_locked = FALSE + /// probability of being thrown hard during an emergency stop + var/throw_chance = 17.5 + /datum/transport_controller/linear/New(obj/structure/transport/linear/transport_module) transport_id = transport_module.transport_id create_modular_set = transport_module.create_modular_set diff --git a/code/modules/transport/tram/tram_controller.dm b/code/modules/transport/tram/tram_controller.dm index c7fc895184fe8..4dceecbfc4c26 100644 --- a/code/modules/transport/tram/tram_controller.dm +++ b/code/modules/transport/tram/tram_controller.dm @@ -17,17 +17,15 @@ var/travel_remaining = 0 ///how far in total we'll be travelling var/travel_trip_length = 0 - ///multiplier on how much damage/force the tram imparts on things it hits var/collision_lethality = 1 - var/obj/effect/landmark/transport/nav_beacon/tram/nav/nav_beacon - /// reference to the destination landmarks we consider ourselves "at" or travelling towards. since we potentially span multiple z levels we dont actually + /// reference to the navigation landmark associated with this tram. since we potentially span multiple z levels we dont actually /// know where on us this platform is. as long as we know THAT its on us we can just move the distance and direction between this /// and the destination landmark. + var/obj/effect/landmark/transport/nav_beacon/tram/nav/nav_beacon + /// reference to the landmark we consider ourself stationary at. var/obj/effect/landmark/transport/nav_beacon/tram/platform/idle_platform - /// reference to the destination landmarks we consider ourselves travelling towards. since we potentially span multiple z levels we dont actually - /// know where on us this platform is. as long as we know THAT its on us we can just move the distance and direction between this - /// and the destination landmark. + /// reference to the destination landmark we consider ourselves travelling towards. var/obj/effect/landmark/transport/nav_beacon/tram/platform/destination_platform var/current_speed = 0 @@ -284,7 +282,11 @@ degraded_stop() return PROCESS_KILL - normal_stop() + if((controller_status & COMM_ERROR) && prob(5)) // malfunctioning tram has a small chance to e-stop + degraded_stop() + else + normal_stop() + return PROCESS_KILL else if(world.time >= scheduled_move) @@ -538,7 +540,8 @@ set_status_code(COMM_ERROR, TRUE) SEND_TRANSPORT_SIGNAL(COMSIG_COMMS_STATUS, src, FALSE) paired_cabinet.generate_repair_signals() - collision_lethality = 1.25 + collision_lethality *= 1.25 + throw_chance *= 1.25 log_transport("TC: [specific_transport_id] starting Tram Malfunction event.") /** @@ -553,6 +556,7 @@ set_status_code(COMM_ERROR, FALSE) paired_cabinet.clear_repair_signals() collision_lethality = initial(collision_lethality) + throw_chance = initial(throw_chance) SEND_TRANSPORT_SIGNAL(COMSIG_COMMS_STATUS, src, TRUE) log_transport("TC: [specific_transport_id] ending Tram Malfunction event.") diff --git a/code/modules/transport/transport_module.dm b/code/modules/transport/transport_module.dm index c33d729e75c0d..9fdfefc835cae 100644 --- a/code/modules/transport/transport_module.dm +++ b/code/modules/transport/transport_module.dm @@ -934,7 +934,8 @@ /obj/structure/transport/linear/tram/proc/estop_throw(throw_direction) for(var/mob/living/passenger in transport_contents) to_chat(passenger, span_userdanger("The tram comes to a sudden, grinding stop!")) - if(prob(17.5)) // sometimes you go through a window + var/mob_throw_chance = transport_controller_datum.throw_chance + if(prob(mob_throw_chance || 17.5) || HAS_TRAIT(passenger, TRAIT_CURSED)) // sometimes you go through a window, especially with bad luck passenger.AddElement(/datum/element/window_smashing, duration = 1.5 SECONDS) var/throw_target = get_edge_target_turf(src, throw_direction) passenger.throw_at(throw_target, 30, 7, force = MOVE_FORCE_OVERPOWERING) From c2e3985e70a37e0d0ee7eeec5673ea6c6a007708 Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Tue, 27 Feb 2024 14:33:26 +1300 Subject: [PATCH 23/63] Automatic changelog for PR #81534 [ci skip] --- html/changelogs/AutoChangeLog-pr-81534.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81534.yml diff --git a/html/changelogs/AutoChangeLog-pr-81534.yml b/html/changelogs/AutoChangeLog-pr-81534.yml new file mode 100644 index 0000000000000..a100278dc5472 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81534.yml @@ -0,0 +1,5 @@ +author: "Iamgoofball" +delete-after: True +changes: + - balance: "xenomorph stomachs will no longer destroy items directly, refactored it to use acid_act()" + - bugfix: "fixes xenomorph vore accidentally destroying mobs it wasn't supposed to destroy, im thinking this was modified list in place shenanigans" \ No newline at end of file From 1f51812d660ae29f2a137a8d7d3089c5fe42d48b Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Tue, 27 Feb 2024 14:42:46 +1300 Subject: [PATCH 24/63] Automatic changelog for PR #81617 [ci skip] --- html/changelogs/AutoChangeLog-pr-81617.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81617.yml diff --git a/html/changelogs/AutoChangeLog-pr-81617.yml b/html/changelogs/AutoChangeLog-pr-81617.yml new file mode 100644 index 0000000000000..fb9957e2adbe0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81617.yml @@ -0,0 +1,7 @@ +author: "LT3" +delete-after: True +changes: + - code_imp: "Tram throwing now breaks grilles consistently" + - code_imp: "Tram malfunction lethality/throw chance are now a multiplier instead of flat value" + - code_imp: "Tram throw chance can be adjusted" + - code_imp: "Unlucky trait is now used in tram throw calculation" \ No newline at end of file From 871cec76aacd11a06130d2c3342816943c07cb49 Mon Sep 17 00:00:00 2001 From: Ghom <42542238+Ghommie@users.noreply.github.com> Date: Tue, 27 Feb 2024 02:48:57 +0100 Subject: [PATCH 25/63] Adds a multi-dimensional bomb payload to the black market. (#81562) ## About The Pull Request This PR adds a !!!FUN!!! bomb payload to the blackmarket, which, upon detonation, transmutates all terrain in a range like the dimensional anomaly would. You can also select the dimensional theme to use by using it in your hand. I believe however, this thing should cost a fuckton to get and only show up occasionally. 8k to 10k was my original idea, but I think that's perhaps not high enough given its flagrant potential. Perhaps I should also make it so the more dangerous themes yield a shorter range than others. Suggestions are welcome. Screenshot of what happens when you don't set the theme: ![chaotic_mess](https://github.com/tgstation/tgstation/assets/42542238/e4c3264d-17e0-45b6-90c2-3c30a592ae2d) This PR also turns dimension themes into singletons so we access them more easily. Nothing to write home about. ## Why It's Good For The Game The black market could always use some extra thingy or two anyway, and this thing could either be a source of emergent gameplay, or a recipe for a disaster. Perhaps second to the Big Slappy for how funny it could be. ## Changelog :cl: add: Added a multi-dimensional bomb payload to the black market. It's very expensive. /:cl: --- code/controllers/subsystem/materials.dm | 5 ++ code/game/machinery/syndicatebomb.dm | 62 +++++++++++++++++++ .../anomalies/anomalies_dimensional.dm | 10 ++- .../anomalies/anomalies_dimensional_themes.dm | 30 +++++---- .../cargo/markets/market_items/weapons.dm | 9 +++ .../hostile/megafauna/colossus.dm | 5 +- 6 files changed, 104 insertions(+), 17 deletions(-) diff --git a/code/controllers/subsystem/materials.dm b/code/controllers/subsystem/materials.dm index 4ae9272e97010..25efd8695dca0 100644 --- a/code/controllers/subsystem/materials.dm +++ b/code/controllers/subsystem/materials.dm @@ -33,6 +33,9 @@ SUBSYSTEM_DEF(materials) new /datum/stack_recipe("Carving block", /obj/structure/carving_block, 5, time = 3 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_STRUCTURE), ) + ///A list of dimensional themes used by the dimensional anomaly and other things, most of which require materials to function. + var/list/datum/dimension_theme/dimensional_themes + ///Ran on initialize, populated the materials and materials_by_category dictionaries with their appropiate vars (See these variables for more info) /datum/controller/subsystem/materials/proc/InitializeMaterials() materials = list() @@ -47,6 +50,8 @@ SUBSYSTEM_DEF(materials) continue // Do not initialize at mapload InitializeMaterial(list(mat_type)) + dimensional_themes = init_subtypes_w_path_keys(/datum/dimension_theme) + /** Creates and caches a material datum. * * Arugments: diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index bc1523bde0ea0..ab381b14fad25 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -584,6 +584,68 @@ qdel(src) +#define DIMENSION_CHOICE_RANDOM "None/Randomized" + +/obj/item/bombcore/dimensional + name = "multi-dimensional payload" + desc = "A wicked payload meant to wildly transmutate terrain over a wide area, a power no mere human should wield." + range_heavy = 17 + var/datum/dimension_theme/chosen_theme + +/obj/item/bombcore/dimensional/Destroy() + chosen_theme = null + return ..() + +/obj/item/bombcore/dimensional/examine(mob/user) + . = ..() + . += span_notice("Use in hand to change the linked dimension. Current dimension: [chosen_theme?.name || "None, output will be random"].") + +/obj/item/bombcore/dimensional/attack_self(mob/user) + . = ..() + var/list/choosable_dimensions = list() + var/datum/radial_menu_choice/null_choice = new + null_choice.name = DIMENSION_CHOICE_RANDOM + choosable_dimensions += null_choice + for(var/datum/dimension_theme/theme as anything in SSmaterials.dimensional_themes) + var/datum/radial_menu_choice/theme_choice = new + theme_choice.image = image(initial(theme.icon), initial(theme.icon_state)) + theme_choice.name = initial(theme.name) + choosable_dimensions[theme] = theme_choice + + var/datum/dimension_theme/picked = show_radial_menu(user, src, choosable_dimensions, custom_check = CALLBACK(src, PROC_REF(check_menu), user), radius = 38, require_near = TRUE) + if(isnull(picked)) + return + if(picked == DIMENSION_CHOICE_RANDOM) + chosen_theme = null + else + chosen_theme = picked + balloon_alert(user, "set to [chosen_theme?.name || DIMENSION_CHOICE_RANDOM]") + +/obj/item/bombcore/dimensional/proc/check_menu(mob/user) + if(!user.is_holding(src) || user.incapacitated()) + return FALSE + return TRUE + +/obj/item/bombcore/dimensional/detonate() + var/list/affected_turfs = circle_range_turfs(src, range_heavy) + var/theme_count = length(SSmaterials.dimensional_themes) + var/num_affected = 0 + for(var/turf/affected as anything in affected_turfs) + var/datum/dimension_theme/theme_to_use = chosen_theme + if(isnull(chosen_theme)) + theme_to_use = SSmaterials.dimensional_themes[SSmaterials.dimensional_themes[rand(1, theme_count)]] + if(!theme_to_use.can_convert(affected)) + continue + num_affected++ + var/skip_sound = TRUE + if(num_affected % 5) //makes it play the sound more sparingly + skip_sound = FALSE + var/time_mult = round(get_dist_euclidian(get_turf(src), affected)) + 1 + addtimer(CALLBACK(theme_to_use, TYPE_PROC_REF(/datum/dimension_theme, apply_theme), affected, skip_sound, TRUE), 0.1 SECONDS * time_mult) + qdel(src) + +#undef DIMENSION_CHOICE_RANDOM + ///Syndicate Detonator (aka the big red button)/// /obj/item/syndicatedetonator diff --git a/code/game/objects/effects/anomalies/anomalies_dimensional.dm b/code/game/objects/effects/anomalies/anomalies_dimensional.dm index 9aea9dfea6a0c..16dd5bafcfaea 100644 --- a/code/game/objects/effects/anomalies/anomalies_dimensional.dm +++ b/code/game/objects/effects/anomalies/anomalies_dimensional.dm @@ -21,6 +21,11 @@ animate(src, transform = matrix()*0.85, time = 3, loop = -1) animate(transform = matrix(), time = 3, loop = -1) +/obj/effect/anomaly/dimensional/Destroy() + theme = null + target_turfs = null + return ..() + /obj/effect/anomaly/dimensional/anomalyEffect(seconds_per_tick) . = ..() transmute_area() @@ -36,8 +41,7 @@ return var/turf/affected_turf = target_turfs[1] - new /obj/effect/temp_visual/transmute_tile_flash(affected_turf) - theme.apply_theme(affected_turf) + theme.apply_theme(affected_turf, show_effect = TRUE) target_turfs -= affected_turf /** @@ -47,7 +51,7 @@ /obj/effect/anomaly/dimensional/proc/prepare_area(new_theme_path) if (!new_theme_path) new_theme_path = pick(subtypesof(/datum/dimension_theme)) - theme = new new_theme_path() + theme = SSmaterials.dimensional_themes[new_theme_path] apply_theme_icon() target_turfs = list() diff --git a/code/game/objects/effects/anomalies/anomalies_dimensional_themes.dm b/code/game/objects/effects/anomalies/anomalies_dimensional_themes.dm index 16408ea9ce6e0..c6190a0d84a21 100644 --- a/code/game/objects/effects/anomalies/anomalies_dimensional_themes.dm +++ b/code/game/objects/effects/anomalies/anomalies_dimensional_themes.dm @@ -1,4 +1,3 @@ - /** * Datum which describes a theme and replaces turfs and objects in specified locations to match that theme */ @@ -44,12 +43,16 @@ * * Arguments * * affected_turf - Turf to transform. + * * skip_sound - If the sound shouldn't be played. + * * show_effect - if the temp visual effect should be shown. */ -/datum/dimension_theme/proc/apply_theme(turf/affected_turf, skip_sound = FALSE) +/datum/dimension_theme/proc/apply_theme(turf/affected_turf, skip_sound = FALSE, show_effect = FALSE) if (!replace_turf(affected_turf)) return if (!skip_sound) playsound(affected_turf, sound, 100, TRUE) + if(show_effect) + new /obj/effect/temp_visual/transmute_tile_flash(affected_turf) for (var/obj/object in affected_turf) replace_object(object) if (length(random_spawns) && prob(random_spawn_chance) && !affected_turf.is_blocked_turf(exclude_mobs = TRUE)) @@ -250,7 +253,7 @@ /datum/dimension_theme/radioactive name = "Radioactive" icon = 'icons/obj/ore.dmi' - icon_state = "Uranium ore" + icon_state = "uranium" material = /datum/material/uranium sound = 'sound/items/welder.ogg' @@ -353,7 +356,14 @@ name = "Fancy" icon = 'icons/obj/clothing/head/costume.dmi' icon_state = "fancycrown" + replace_floors = null replace_walls = /turf/closed/wall/mineral/wood/nonmetal + replace_objs = list( + /obj/structure/chair = list(/obj/structure/chair/comfy = 1), + /obj/machinery/door/airlock = list(/obj/machinery/door/airlock/wood = 1, /obj/machinery/door/airlock/wood/glass = 1), + ) + ///cooldown for changing carpets, It's kinda dull to always use the same one, but we also can't make it too random. + COOLDOWN_DECLARE(carpet_switch_cd) #define FANCY_CARPETS list(\ /turf/open/floor/eighties, \ @@ -369,14 +379,12 @@ /turf/open/floor/carpet/royalblack, \ /turf/open/floor/carpet/royalblue,) -/datum/dimension_theme/fancy/New() - . = ..() - replace_floors = list(pick(FANCY_CARPETS) = 1) - replace_objs = list( - /obj/structure/chair = list(/obj/structure/chair/comfy = 1), - /obj/machinery/door/airlock = list(/obj/machinery/door/airlock/wood = 1, /obj/machinery/door/airlock/wood/glass = 1), - /obj/structure/table/wood = list(pick(subtypesof(/obj/structure/table/wood/fancy)) = 1), - ) +/datum/dimension_theme/fancy/apply_theme(turf/affected_turf, skip_sound = FALSE, show_effect = FALSE) + if(COOLDOWN_FINISHED(src, carpet_switch_cd)) + replace_floors = list(pick(FANCY_CARPETS) = 1) + replace_objs[/obj/structure/table/wood] = list(pick(subtypesof(/obj/structure/table/wood/fancy)) = 1) + COOLDOWN_START(src, carpet_switch_cd, 90 SECONDS) + return ..() #undef FANCY_CARPETS diff --git a/code/modules/cargo/markets/market_items/weapons.dm b/code/modules/cargo/markets/market_items/weapons.dm index ee16daae7d502..052074a30b38d 100644 --- a/code/modules/cargo/markets/market_items/weapons.dm +++ b/code/modules/cargo/markets/market_items/weapons.dm @@ -73,3 +73,12 @@ price_max = CARGO_CRATE_VALUE * 4 stock_max = 1 availability_prob = 75 + +/datum/market_item/weapon/dimensional_bomb + name = "Multi-Dimensional Bomb Core" + desc = "A special bomb core, one of a kind, for all your 'terraforming gone wrong' purposes." + item = /obj/item/bombcore/dimensional + price_min = CARGO_CRATE_VALUE * 40 + price_max = CARGO_CRATE_VALUE * 50 + stock_max = 1 + availability_prob = 15 diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index 9253448563b2d..ac9031f59c33f 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -356,8 +356,7 @@ /obj/machinery/anomalous_crystal/theme_warp/Initialize(mapload) . = ..() - var/terrain_type = pick(subtypesof(/datum/dimension_theme)) - terrain_theme = new terrain_type() + terrain_theme = SSmaterials.dimensional_themes[pick(subtypesof(/datum/dimension_theme))] observer_desc = "This crystal changes the area around it to match the theme of \"[terrain_theme.name]\"." /obj/machinery/anomalous_crystal/theme_warp/ActivationReaction(mob/user, method) @@ -372,7 +371,7 @@ return TRUE /obj/machinery/anomalous_crystal/theme_warp/Destroy() - QDEL_NULL(terrain_theme) + terrain_theme = null converted_areas.Cut() return ..() From 9f43f03e6ac1c5b1b0ad019a0b2150d703e4c066 Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Tue, 27 Feb 2024 15:00:31 +1300 Subject: [PATCH 26/63] Automatic changelog for PR #81562 [ci skip] --- html/changelogs/AutoChangeLog-pr-81562.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81562.yml diff --git a/html/changelogs/AutoChangeLog-pr-81562.yml b/html/changelogs/AutoChangeLog-pr-81562.yml new file mode 100644 index 0000000000000..e6e40113f7cc9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81562.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - rscadd: "Added a multi-dimensional bomb payload to the black market. It's very expensive." \ No newline at end of file From bb8c6acecf17f05b48f9ff59868a4539a5c92f16 Mon Sep 17 00:00:00 2001 From: _0Steven <42909981+00-Steven@users.noreply.github.com> Date: Tue, 27 Feb 2024 03:01:24 +0100 Subject: [PATCH 27/63] Make lobby manifest use trim instead of rank to determine command status (#81636) ## About The Pull Request The lobby manifest shows a symbol next to command roles, one for heads and for captains respectively, but this stops working when the job title is changed even though they do still have a head/captain ID. This is because it compares the registered job title to a set list, rather than the registered ID trim which is normally unchanging. Making it use the trim instead solves this issue. ## Why It's Good For The Game Sometimes people have custom head titles, whether by admin intervention or just having fun, and then it's just confusing. This fixes that. It's also just kinda annoying to see the one custom head not having the head symbol. ## Changelog :cl: fix: Lobby manifest shows the head/captain symbols next to heads and captains with custom titles, as long as they're registered with a head/captain trim. /:cl: --- code/datums/records/manifest.dm | 2 ++ tgui/packages/tgui/interfaces/CrewManifest.jsx | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/code/datums/records/manifest.dm b/code/datums/records/manifest.dm index 7d3b7978af904..789b8787fe6e1 100644 --- a/code/datums/records/manifest.dm +++ b/code/datums/records/manifest.dm @@ -38,6 +38,7 @@ GLOBAL_DATUM_INIT(manifest, /datum/manifest, new) misc_list[++misc_list.len] = list( "name" = name, "rank" = rank, + "trim" = trim, ) continue for(var/department_type as anything in job.departments_list) @@ -51,6 +52,7 @@ GLOBAL_DATUM_INIT(manifest, /datum/manifest, new) var/list/entry = list( "name" = name, "rank" = rank, + "trim" = trim, ) var/list/department_list = manifest_out[department.department_name] if(istype(job, department.department_head)) diff --git a/tgui/packages/tgui/interfaces/CrewManifest.jsx b/tgui/packages/tgui/interfaces/CrewManifest.jsx index b521eb0dae040..d550260087bea 100644 --- a/tgui/packages/tgui/interfaces/CrewManifest.jsx +++ b/tgui/packages/tgui/interfaces/CrewManifest.jsx @@ -57,7 +57,7 @@ export const CrewManifest = (props) => { )} - {crewMember.rank === 'Captain' && ( + {crewMember.trim === 'Captain' && ( { /> )} - {commandJobs.includes(crewMember.rank) && ( + {commandJobs.includes(crewMember.trim) && ( Date: Tue, 27 Feb 2024 15:17:25 +1300 Subject: [PATCH 28/63] Automatic changelog for PR #81636 [ci skip] --- html/changelogs/AutoChangeLog-pr-81636.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81636.yml diff --git a/html/changelogs/AutoChangeLog-pr-81636.yml b/html/changelogs/AutoChangeLog-pr-81636.yml new file mode 100644 index 0000000000000..5d4f0d86e8081 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81636.yml @@ -0,0 +1,4 @@ +author: "00-Steven" +delete-after: True +changes: + - bugfix: "Lobby manifest shows the head/captain symbols next to heads and captains with custom titles, as long as they're registered with a head/captain trim." \ No newline at end of file From 1e2f6e817c50637e8de18421773715d8dcbf96a8 Mon Sep 17 00:00:00 2001 From: Bloop <13398309+vinylspiders@users.noreply.github.com> Date: Mon, 26 Feb 2024 21:20:43 -0500 Subject: [PATCH 29/63] [NO GBP] Fixes spurious CI failures from museum ash spawns (for real this time) (#81690) ## About The Pull Request I saw this runtime again despite thinking I fixed it and then realized I needed to be calling `ispath()` since we are not working with an instantiated object with these lists. Oops ## Why It's Good For The Game Working code is good ## Changelog Nothing player facing --- code/game/objects/effects/spawners/random/maintenance.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/effects/spawners/random/maintenance.dm b/code/game/objects/effects/spawners/random/maintenance.dm index 234b69e85716d..38f8af6a90269 100644 --- a/code/game/objects/effects/spawners/random/maintenance.dm +++ b/code/game/objects/effects/spawners/random/maintenance.dm @@ -9,7 +9,7 @@ /obj/effect/spawner/random/maintenance/no_decals /obj/effect/spawner/random/maintenance/no_decals/can_spawn(atom/loot) - return !istype(loot, /obj/effect/decal) + return !ispath(loot, /obj/effect/decal) /obj/effect/spawner/random/maintenance/examine(mob/user) . = ..() From 8c74d557b6ba00f8a177d85faa6cd73d454a1e15 Mon Sep 17 00:00:00 2001 From: _0Steven <42909981+00-Steven@users.noreply.github.com> Date: Tue, 27 Feb 2024 03:34:48 +0100 Subject: [PATCH 30/63] Fix Bluespace RPEDs not applying circuits at a distance when you have multiple options. (#81670) ## About The Pull Request As per #81668, Bluespace RPEDs weren't applying circuits at a distance if you had multiple options. Looking into it, this seemed to be because the sanity checks after the selection menu had been closed accounted for adjacency but not that the replacer could work at a distance. Adding a check for this fixed it. I then decided splitting this off into its own if statement would be best for our long-term sanity, given the first if was getting quite long and the added parenthesis really would not help. ## Why It's Good For The Game Fixes #81668. ## Changelog :cl: fix: Fixed Bluespace RPEDs failing to apply circuits from a distance if you had to select between multiple. /:cl: --- code/game/machinery/constructable_frame.dm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 8a5efc193ca9f..e624e3f33d705 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -172,7 +172,12 @@ else var/option = tgui_input_list(user, "Select Circuitboard To Install"," Available Boards", circuit_boards) target_board = circuit_boards[option] - if(QDELETED(target_board) || QDELETED(src) || QDELETED(user) || !(target_board in replacer) || !user.is_holding(replacer) || !user.Adjacent(src)) + // Everything still where it should be after the UI closed? + if(QDELETED(target_board) || QDELETED(src) || QDELETED(user) || !(target_board in replacer) || !user.is_holding(replacer)) + return FALSE + // User still within range? + var/close_enough = replacer.works_from_distance || user.Adjacent(src) + if(!close_enough) return FALSE if(install_board(user, target_board, by_hand = FALSE)) From 3a5a25cc6ddc3fd4490acd3581fb8b4111f6b997 Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Tue, 27 Feb 2024 16:54:04 +1300 Subject: [PATCH 31/63] Automatic changelog for PR #81670 [ci skip] --- html/changelogs/AutoChangeLog-pr-81670.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81670.yml diff --git a/html/changelogs/AutoChangeLog-pr-81670.yml b/html/changelogs/AutoChangeLog-pr-81670.yml new file mode 100644 index 0000000000000..3a7392ed6116d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81670.yml @@ -0,0 +1,4 @@ +author: "00-Steven" +delete-after: True +changes: + - bugfix: "Fixed Bluespace RPEDs failing to apply circuits from a distance if you had to select between multiple." \ No newline at end of file From 35242b4985da0ee1b46237e3614c34cf4c760ef7 Mon Sep 17 00:00:00 2001 From: DrTuxedo <42353186+DrDiasyl@users.noreply.github.com> Date: Tue, 27 Feb 2024 09:59:36 +0600 Subject: [PATCH 32/63] NEW TRAIT ROLE: Veteran Advisor (#81667) ## About The Pull Request Adds a new Trait Job (jobs which only appear when the station gets a trait for it) - Veteran Advisor. The weight of the trait is 2 which makes it very rare. Veteran Security Advisor is a role designated as a (duh) Advisor for the HoS and Captain, as well as a mentor for all of the Officers. This is because it has an experience requirement of **100 SECURITY HOURS**, so no green Veterans. Veteran Security Advisors are paraplegic (bonded to a wheelchair) and with PTSD which freezes their mood and sometimes causes hallucinations. They get an M1911 pistol in a holster because that's badass.
THE IMAGES ADVISOR ![veteran advisor chair](https://github.com/tgstation/tgstation/assets/42353186/e094669c-002f-4552-9692-c8f055a042eb) THINGS HE SPAWNS WITH ![veteran advisor shit](https://github.com/tgstation/tgstation/assets/42353186/27ed7e8a-bcd0-4ec2-9504-135a443492f0) HIS UNIQUE MOODLET ![veteran advisor desentized](https://github.com/tgstation/tgstation/assets/42353186/6fc04a24-b4fc-40bd-938f-c32389ac9eab) SIGNUP BUTTON ![signup button](https://github.com/tgstation/tgstation/assets/42353186/f10020c7-69fe-47f0-aa5f-7b56dfbc8200)
## Why It's Good For The Game More funny Trait Jobs to the game! There is a certain lack of those, there is only Cargorilla and Bridge Assistant. This job has big opportunities. Advisors can behave themselves like drill sergeants, or wise old mentors. Because they are kinda, as people only with 100 Security hours (yes those masochists exist) could play it when it appears. This will also open opportunities for retired Sec mains to tutor new generations without being directly involved in all of the stress. I mostly took a look at the Goonstation "Nanotrasen Security Consultant" and Baystation "Senior Enlisted Advisor" as inspiration. I tried to cut down any chances of this role being abused by power gamers for its M1911 pistol and Bridge access, due to this they are paraplegic so power gamers get disgusted, and if someone does somehow win Antagonists while in a wheelchair - props to them, pure skill. **REMEMBER THAT THIS IS A TRAIT JOB!** This means they won't appear every round, but rather rarely! So they fit in as an occasional extra fun for the round. ## Changelog :cl: add: NEW TRAIT JOB: Veteran Security Advisor! Advise HoS and Captain on Security matters, mentor Security Officers. Note that they are paraplegic and fully emotional desensitized due to their past experience. /:cl: --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> --- code/__DEFINES/atom_hud.dm | 1 + code/__DEFINES/jobs.dm | 10 ++- code/datums/brain_damage/special.dm | 46 +++++++++++ code/datums/id_trim/jobs.dm | 30 +++++++ .../mood_events/generic_negative_events.dm | 6 ++ code/datums/station_traits/job_traits.dm | 13 +++ .../objects/items/devices/radio/headset.dm | 8 ++ code/modules/clothing/head/soft_caps.dm | 9 +++ .../station_trait/veteran_advisor.dm | 76 ++++++++++++++++++ .../computers/item/role_tablet_presets.dm | 11 +++ config/jobconfig.toml | 7 ++ icons/hud/lobby/signup_button.dmi | Bin 668 -> 737 bytes icons/hud/screen_gen.dmi | Bin 110965 -> 112655 bytes icons/mob/clothing/head/hats.dmi | Bin 16032 -> 16371 bytes icons/mob/huds/hud.dmi | Bin 9978 -> 10728 bytes icons/obj/card.dmi | Bin 23327 -> 23825 bytes icons/obj/clothing/head/hats.dmi | Bin 5809 -> 6029 bytes tgstation.dme | 1 + .../tgui/interfaces/common/JobToIcon.ts | 1 + 19 files changed, 215 insertions(+), 4 deletions(-) create mode 100644 code/modules/jobs/job_types/station_trait/veteran_advisor.dm diff --git a/code/__DEFINES/atom_hud.dm b/code/__DEFINES/atom_hud.dm index df837c86d9a31..b175acd65a615 100644 --- a/code/__DEFINES/atom_hud.dm +++ b/code/__DEFINES/atom_hud.dm @@ -112,6 +112,7 @@ #define SECHUD_SCIENTIST "hudscientist" #define SECHUD_SHAFT_MINER "hudshaftminer" #define SECHUD_STATION_ENGINEER "hudstationengineer" +#define SECHUD_VETERAN_ADVISOR "hudveteranadvisor" #define SECHUD_VIROLOGIST "hudvirologist" #define SECHUD_WARDEN "hudwarden" diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index 1d69d48e9d59f..fca771489558f 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -49,6 +49,7 @@ #define JOB_CHIEF_ENGINEER "Chief Engineer" #define JOB_CHIEF_MEDICAL_OFFICER "Chief Medical Officer" #define JOB_BRIDGE_ASSISTANT "Bridge Assistant" +#define JOB_VETERAN_ADVISOR "Veteran Security Advisor" //Silicon #define JOB_AI "AI" #define JOB_CYBORG "Cyborg" @@ -156,10 +157,11 @@ #define JOB_DISPLAY_ORDER_ROBOTICIST 33 #define JOB_DISPLAY_ORDER_GENETICIST 34 #define JOB_DISPLAY_ORDER_HEAD_OF_SECURITY 35 -#define JOB_DISPLAY_ORDER_WARDEN 36 -#define JOB_DISPLAY_ORDER_DETECTIVE 37 -#define JOB_DISPLAY_ORDER_SECURITY_OFFICER 38 -#define JOB_DISPLAY_ORDER_PRISONER 39 +#define JOB_DISPLAY_ORDER_VETERAN_ADVISOR 36 +#define JOB_DISPLAY_ORDER_WARDEN 37 +#define JOB_DISPLAY_ORDER_DETECTIVE 38 +#define JOB_DISPLAY_ORDER_SECURITY_OFFICER 39 +#define JOB_DISPLAY_ORDER_PRISONER 40 #define DEPARTMENT_UNASSIGNED "No Department" diff --git a/code/datums/brain_damage/special.dm b/code/datums/brain_damage/special.dm index e24ecd99c6177..31f316221301e 100644 --- a/code/datums/brain_damage/special.dm +++ b/code/datums/brain_damage/special.dm @@ -426,3 +426,49 @@ to_chat(victim, "[span_name("[name]")] exclaims, \"[span_robot("[beepskys_cry]")]") if(victim.client?.prefs.read_preference(/datum/preference/toggle/enable_runechat)) victim.create_chat_message(src, raw_message = beepskys_cry, spans = list("robotic")) + +// Used by Veteran Security Advisor job. +/datum/brain_trauma/special/ptsd + name = "Combat PTSD" + desc = "The patient is experiencing PTSD stemming from past combat exposure, resulting in a lack of emotions. Additionally, they are experiencing mild hallucinations." + scan_desc = "PTSD" + gain_text = span_warning("You're thrust back into the chaos of past! Explosions! Gunfire! Emotions, gone AWOL!") + lose_text = span_notice("You feel flashbacks of past fade, as your emotions return and mind clear.") + resilience = TRAUMA_RESILIENCE_ABSOLUTE + can_gain = TRUE + random_gain = FALSE + /// Our cooldown declare for causing hallucinations + COOLDOWN_DECLARE(ptsd_hallucinations) + var/list/ptsd_hallucinations_list = list( + /datum/hallucination/fake_sound/normal/boom, + /datum/hallucination/fake_sound/normal/distant_boom, + /datum/hallucination/stray_bullet, + /datum/hallucination/battle/gun/disabler, + /datum/hallucination/battle/gun/laser, + /datum/hallucination/battle/bomb, + /datum/hallucination/battle/e_sword, + /datum/hallucination/battle/harm_baton, + /datum/hallucination/battle/stun_prod, + ) + +/datum/brain_trauma/special/ptsd/on_life(seconds_per_tick, times_fired) + if(owner.stat != CONSCIOUS) + return + + if(!COOLDOWN_FINISHED(src, ptsd_hallucinations)) + return + + owner.cause_hallucination(pick(ptsd_hallucinations_list), "Caused by The Combat PTSD brain trauma") + COOLDOWN_START(src, ptsd_hallucinations, rand(10 SECONDS, 10 MINUTES)) + +/datum/brain_trauma/special/ptsd/on_gain() + owner.add_mood_event("combat_ptsd", /datum/mood_event/desentized) + owner.mob_mood?.mood_modifier -= 1 //Basically nothing can change your mood + owner.mob_mood?.sanity_level = SANITY_DISTURBED //Makes sanity on a unstable level unless cured + ..() + +/datum/brain_trauma/special/ptsd/on_lose() + owner.clear_mood_event("combat_ptsd") + owner.mob_mood?.mood_modifier += 1 + owner.mob_mood?.sanity_level = SANITY_GREAT + return ..() diff --git a/code/datums/id_trim/jobs.dm b/code/datums/id_trim/jobs.dm index ea46cc91319fa..46f691564bb4b 100644 --- a/code/datums/id_trim/jobs.dm +++ b/code/datums/id_trim/jobs.dm @@ -1183,6 +1183,36 @@ ) job = /datum/job/station_engineer +/datum/id_trim/job/veteran_advisor + assignment = "Veteran Security Advisor" + trim_state = "trim_veteranadvisor" + department_color = COLOR_SECURITY_RED + subdepartment_color = COLOR_COMMAND_BLUE + sechud_icon_state = SECHUD_VETERAN_ADVISOR + minimal_access = list( + ACCESS_COMMAND, + ACCESS_BRIG, + ACCESS_BRIG_ENTRANCE, + ACCESS_COURT, + ACCESS_MECH_SECURITY, + ACCESS_MINERAL_STOREROOM, + ACCESS_SECURITY, + ACCESS_WEAPONS, + ) + extra_access = list() + template_access = list() + job = /datum/job/veteran_advisor + +/datum/id_trim/job/veteran_advisor/refresh_trim_access() + . = ..() + + if(!.) + return + + // Config check for if sec has maint access. + if(CONFIG_GET(flag/security_has_maint_access)) + access |= list(ACCESS_MAINT_TUNNELS) + /datum/id_trim/job/virologist assignment = "Virologist" trim_state = "trim_virologist" diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm index 32b9772dc0709..0cfb48f7a9823 100644 --- a/code/datums/mood_events/generic_negative_events.dm +++ b/code/datums/mood_events/generic_negative_events.dm @@ -483,3 +483,9 @@ /datum/mood_event/all_nighter description = "I didn't sleep at all last night. I'm exhausted." mood_change = -5 + +//Used by the Veteran Advisor trait job +/datum/mood_event/desentized + description = "Nothing will ever rival with what I seen in the past..." + mood_change = -3 + special_screen_obj = "mood_desentized" diff --git a/code/datums/station_traits/job_traits.dm b/code/datums/station_traits/job_traits.dm index 8dea2f96bbf09..041f846424094 100644 --- a/code/datums/station_traits/job_traits.dm +++ b/code/datums/station_traits/job_traits.dm @@ -164,6 +164,19 @@ new /obj/item/reagent_containers/cup/coffeepot(picked_turf) new /obj/item/storage/box/coffeepack(picked_turf) +/datum/station_trait/job/veteran_advisor + name = "Veteran Advisor" + button_desc = "Sign up to become a DISABLED but hard boiled Veteran Advisor of Nanotrasen Security Force. Advise HoS and Captain, train Officers, all while fighting your PTSD." + weight = 2 + report_message = "Veteran Security Advisor has been assigned to your station to help with Security matters." + show_in_report = TRUE + can_roll_antag = CAN_ROLL_PROTECTED + job_to_add = /datum/job/veteran_advisor + +/datum/station_trait/job/veteran_advisor/on_lobby_button_update_overlays(atom/movable/screen/lobby/button/sign_up/lobby_button, list/overlays) + . = ..() + overlays += "veteran_advisor" + #undef CAN_ROLL_ALWAYS #undef CAN_ROLL_PROTECTED #undef CAN_ROLL_NEVER diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 45daf00db1ae3..1f06113158cef 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -244,6 +244,14 @@ GLOBAL_LIST_INIT(channel_tokens, list( worn_icon_state = "com_headset" keyslot = /obj/item/encryptionkey/heads/hos +/obj/item/radio/headset/heads/hos/advisor + name = "\proper the veteran security advisor headset" + desc = "The headset of the man who was in charge of keeping order and protecting the station..." + icon_state = "com_headset" + worn_icon_state = "com_headset" + keyslot = /obj/item/encryptionkey/heads/hos + command = FALSE + /obj/item/radio/headset/heads/hos/alt name = "\proper the head of security's bowman headset" desc = "The headset of the man in charge of keeping order and protecting the station. Protects ears from flashbangs." diff --git a/code/modules/clothing/head/soft_caps.dm b/code/modules/clothing/head/soft_caps.dm index e8338f4c95b19..0b0a6fb4d50cb 100644 --- a/code/modules/clothing/head/soft_caps.dm +++ b/code/modules/clothing/head/soft_caps.dm @@ -135,6 +135,15 @@ strip_delay = 60 dog_fashion = null +/obj/item/clothing/head/soft/veteran + name = "veteran cap" + desc = "It's a robust baseball hat in tasteful black colour with a golden connotation to \"REMEMBER\"." + icon_state = "veteransoft" + soft_type = "veteran" + armor_type = /datum/armor/cosmetic_sec + strip_delay = 60 + dog_fashion = null + /obj/item/clothing/head/soft/paramedic name = "paramedic cap" desc = "It's a baseball hat with a dark turquoise color and a reflective cross on the top." diff --git a/code/modules/jobs/job_types/station_trait/veteran_advisor.dm b/code/modules/jobs/job_types/station_trait/veteran_advisor.dm new file mode 100644 index 0000000000000..87ad65c2c7a71 --- /dev/null +++ b/code/modules/jobs/job_types/station_trait/veteran_advisor.dm @@ -0,0 +1,76 @@ +/datum/job/veteran_advisor + title = JOB_VETERAN_ADVISOR + description = "Advise HoS, and Captain on matters of Security. Train green Officers. \ + Lay back in your wheelchair and say \"I told you\" to the HoS when all of the station collapses." + auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY + department_head = list(JOB_HEAD_OF_SECURITY) + faction = FACTION_STATION + total_positions = 0 + spawn_positions = 0 + supervisors = SUPERVISOR_HOS + minimal_player_age = 7 + exp_requirements = 6000 //100 HOURS! We want really hard boiled people + exp_required_type = EXP_TYPE_CREW + exp_required_type_department = EXP_TYPE_SECURITY + exp_granted_type = EXP_TYPE_CREW + config_tag = "VETERAN_ADVISOR" + + outfit = /datum/outfit/job/veteran_advisor + plasmaman_outfit = /datum/outfit/plasmaman/security + + paycheck = PAYCHECK_CREW + paycheck_department = ACCOUNT_SEC + + liver_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) + + display_order = JOB_DISPLAY_ORDER_VETERAN_ADVISOR + departments_list = list(/datum/job_department/security) + + family_heirlooms = list(/obj/item/plaque) + + mail_goodies = list( + /obj/item/clothing/accessory/medal/conduct = 1, + /obj/item/instrument/trumpet = 5, + /obj/item/storage/fancy/cigarettes/cigars = 10, + ) + rpg_title = "Royal Advisor" + allow_bureaucratic_error = FALSE + job_flags = STATION_JOB_FLAGS | STATION_TRAIT_JOB_FLAGS + +/datum/job/veteran_advisor/get_roundstart_spawn_point() //Spawning at Brig where Officers spawn + if (length(GLOB.start_landmarks_list["Security Officer"])) + return pick(GLOB.start_landmarks_list["Security Officer"]) + return ..() + +/datum/job/veteran_advisor/after_spawn(mob/living/spawned, client/player_client) + . = ..() + var/mob/living/carbon/veteran = spawned + spawned.add_quirk(/datum/quirk/paraplegic) //Even in 2300s veterans are getting it bad + if(veteran) + veteran.gain_trauma(/datum/brain_trauma/special/ptsd) //War, war never changes... + +/datum/outfit/job/veteran_advisor + name = "Veteran Security Advisor" + jobtype = /datum/job/veteran_advisor + + id_trim = /datum/id_trim/job/veteran_advisor + backpack_contents = list( + /obj/item/modular_computer/pda/veteran_advisor = 1, + /obj/item/storage/fancy/cigarettes/cigars = 1, + /obj/item/lighter = 1, + /obj/item/clothing/accessory/medal/bronze_heart = 1, + ) + + uniform = /obj/item/clothing/under/rank/security/officer/formal + head = /obj/item/clothing/head/soft/veteran + mask = /obj/item/clothing/mask/cigarette/cigar + suit = /obj/item/clothing/suit/jacket/trenchcoat + belt = /obj/item/storage/belt/holster/detective/full/ert //M1911 pistol + ears = /obj/item/radio/headset/heads/hos/advisor + glasses = /obj/item/clothing/glasses/eyepatch + shoes = /obj/item/clothing/shoes/jackboots + l_pocket = /obj/item/coin/antagtoken + r_pocket = /obj/item/melee/baton/telescopic + r_hand = /obj/item/cane + + implants = list(/obj/item/implant/mindshield) diff --git a/code/modules/modular_computers/computers/item/role_tablet_presets.dm b/code/modules/modular_computers/computers/item/role_tablet_presets.dm index 904b9fc9837cd..205c6a0c422e5 100644 --- a/code/modules/modular_computers/computers/item/role_tablet_presets.dm +++ b/code/modules/modular_computers/computers/item/role_tablet_presets.dm @@ -429,6 +429,17 @@ /datum/computer_file/program/status, ) +/obj/item/modular_computer/pda/veteran_advisor + name = "security advisor PDA" + greyscale_colors = "#EA3232#FFD700" + inserted_item = /obj/item/pen/fountain + starting_programs = list( + /datum/computer_file/program/records/security, + /datum/computer_file/program/crew_manifest, + /datum/computer_file/program/coupon, //veteran discount + /datum/computer_file/program/skill_tracker, + ) + /** * Non-roles */ diff --git a/config/jobconfig.toml b/config/jobconfig.toml index c8a5c5c3dfa5d..7106d2f2a4ef5 100644 --- a/config/jobconfig.toml +++ b/config/jobconfig.toml @@ -263,6 +263,13 @@ "# Spawn Positions" = 5 "# Total Positions" = 5 +[VETERAN_ADVISOR] +"# Playtime Requirements" = 6000 +"# Required Account Age" = 7 +"# Required Character Age" = 0 +"# Spawn Positions" = 0 +"# Total Positions" = 0 + [VIROLOGIST] "# Playtime Requirements" = 60 "# Required Account Age" = 0 diff --git a/icons/hud/lobby/signup_button.dmi b/icons/hud/lobby/signup_button.dmi index a67cc5584424e0a78c9069417a0e9ff16e923c65..daa266906974237edf941f0b5dbe13219155de3e 100644 GIT binary patch delta 616 zcmV-u0+;=q1>psdY5~oWYaV}sZbekObt5g(gMgFp_G*F-aNiH zKQK#q$dAQYW~V~*K#b1Hy-e2|kv!1&CKS6=Bn@EQ_@Q90Jp{R6tnIy9h{PaqFt#G8 zNZ(-4KbUGlhxXkC%+yFnz&wWUf(xyFzUAsa>+IAi&d%8_q-L#GJHmgq)yh>>bkvuP z-*O=|H7L!D!LvRZD9JHLDUanf3iaTDv{l;l$d1PNrOeOS=h0pzh`LB~7L8~C00D_f zL_t(oh3%HXO~fz|MQ0AaPj;C?A}T62@uMC+=sAe+2Prg_^l;sBkkhL)EZN z+|L*d5U*FLnCav^=?oc@Fiv5=vlJPVFitUE+}@k+ZldY(@!9nB5F;jGoUV4SyHRhu zmnCdNQoFifmo8y)G087sYJI60ngI;k#7Eqhu0Os^pYO-pmkxhb*ctcyv#5~f(+mR4 zWzVCN!Qdv~7^uK96hK3&AS!7bz#?7(8nBWpuqZn&85o9&ELNf`8N`W_seB2AxjOZNzK0x7f4qbhHuE)t|=;N^me|*yA{#Wts7~PF6;fCM6RUZ*OYBg;G+wd-M3- z{J>=NSe@#Imgky0ghQ}~9%!-Mk>m;7t5DDO!dI!81M@=$u82QXabN9F)w${5Knqj@Tl0S57=U_xLM2Q` zr^X37HesFO{ALL{HesDoI=jAAZmyDYe*dUE+@*v~Sf`8OdD!tXJgsqElIYPzJ!FlO zPexed)b^zoXaNXp%@25Ax_tXk-d_)QU;3}$&N%zmO@+2#R}g>UT4vuR9R&O&E=4Lh zj{`7Z6Ij^R0nQvaVgM)kg0nd9N&yE;MQ0t+l>+Qph;xtnAEBRef}Ws|JBvthLKtsl z$ep_wix(aBVY%<7=sR&1_;Fh&I!eKD?%9Kz@OnlHp8YgnO)eDNS6={KchMV-5&wJ3 lg0Sy4yYGNTqwyCPd;;K?_+G2XmyQ4c002ovPDHLkV1l!a`49jA diff --git a/icons/hud/screen_gen.dmi b/icons/hud/screen_gen.dmi index 1484e3f4042a99e380e458f0c57464b129f5e3e1..608be00b2e1fbdf615e008a986bd75e5a056b51e 100644 GIT binary patch delta 26224 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

w{ibt5hx+D}=7p<2!@wt) ztSpmm^dAk7(Ln|(>s{C(Ow|J2& zUCBYe?;Bn`2C`Z!hKJW9{Uc%(hM_Yk=pIB?;800}s0th=X;8cZhfbQt^jD{t(aNSt zIr~Qc2jf{kW>EdrWT<&YuAdb4dx}^KO8ZX>&%^r<{aABV6dsNGA1>wLQtj6mL%OGnB7gYeUMb(mNy zYkb#%{#f6Aj)st$onO%Ai|kiQ<0l3(S#|63;p(zgMa)J0a<1iG4zoZP(tzc1BiL;J z)tYqMONisyO!}n^UE4pVdsT~%VszI>0@wTp+6v&Ttd`~Y09gO<{aYosz^2yJ%wO-{ zRpEJ{{%)l$ELhKF+g%RJJze5|iygqSdc}<__rKe>US+O-qVnlS-2Y!K#~f~(1G}5U zl4%05*CMqu{&I@oV-W`ZfG1N*iTA(YnLj9DAtIHmI*V5M8$y1J<3?+07{q5txxOqGQ*c-dK z&oaCJNe~|%f0q6q?2erwf~RTkn96VJqVlFbm>1R!t4EjAPhRJ_E#J;Ip296OLFxv< zZA9}3KQkhArq4wiGLmP`-{GfXaFT_)WvDUMPl&@;N(ma7tmwUMK(7UV`w|7lo!`iy zxYu#8PBFh%AzrWA7ub;nlCNud9?oZ3UmDoCK){fX7t#yE2KFqFbbbZ-Q8AvQsG>7a z6r>Lsgp2|G2>opsbF=8?LBFZcNe{UDnJILt;Hu*9{?4lu!bsCg3_*fZlcw)Yb~8%R+*~#W9cW^FUA@UD_FmnPi7gw7uj4ZP3bFTu7($PH zSu8t#q?!eLBW$;R?=QxrJZ#tfM8aeQZ+k4t(Q;rDE6oPHq}#F8>ghI$w*LYLmS)x2 z&BD&k3ARxenHQ~y_ayo{P|L*O^>uPoJF~Eo_I`}j-M{pJAGT~Wupw5p zWB+y#jj+d$fsI!R6~n5Gpyzn!crgwAzWoJ2mHfU<1<9GZMM#cm4*O@@1mv%hKTCGFp9vJ2@;)W8^PwDG?O*L-#CM zw^n19$urM7xoV44S#V&r>kv?Kpdt4k@{ko9n} zA*_%Nn=Vu!z$XERU4985*xz3NZ&zW*Wy7#vqJi3)&AqH~MMlhz_XL7mK$hyBREa=r zi1^9A>#S!j&|c@@o29w6q>|@v_jd9wxSR;;pEnyYsi%Jsn85BWz!r!ktY7gQ7b%OX zXV~Yn&rgEmX%a9J#zKE0=~5BUWt)V&AHo+jir<$z@E;h)I=ktK0uxHA1?cw7n)h@= zUo_Z6tYxq?{QCoj1Z>%+Efhim8E>jfp4(AR&;HS#PJCa?+FMUoH63qX(go8FhkbbTQ#s-|m3TpV9Gh~7g#Tc2Y2WW`-X z>wtg}6^a3ku@z2oN^ZID?v|NGQ(IdNo~KSE-ZhV6L13?d(k=UPfj0&Sq=!0qAd7)Z z=)0UG6f~S+DhT2`34vv!h&4v5ZXW^@0g|z$jd&cP{QpbxfY$?u_}GJbsag z-lYP?!#ggKEAxcYo{)G>%2+D24s6iH3{x@xfLErvYGBPXmC+S4yLIPzP}rKsE?sB)!WmGsEfxcShFAI5QvSFrn)0?lbqtr zlB!ad#xT6V2m1S~X?05O&2n2b%fQ_Bfq99EO|dfD4Ahd*z>B9|F>^uXhAtVY4%fn6R#Cq|t)FeiU^7b;8C1!u=$qTs976`ZhUd%RI?zI$-SUy7ra0x9Iyd zH2C%H2dmdTP>{T;E~O%U2mp!{!%x%sZ6C!(n6coR6%1eR5BzODlx`5kOld5=#p6p$ z0+#*IPD{{_s-YWxQXpVIYYy^GiW|7GK&Dk*vypqKpN#f!;_oBC-_avxho9=%2mT+6 CTVP)R delta 24535 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 diff --git a/icons/mob/clothing/head/hats.dmi b/icons/mob/clothing/head/hats.dmi index 0fd0de8e4250e5eca3c3f83c2d6db758879d04b5..4183d5fa6cb4c8fbc90ea0b242746109fc2e37fc 100644 GIT binary patch literal 16371 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 literal 16032 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 literal 9978 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 X!bp_%Lv5@e0KT-<_0%d=tit{a<%Hs( diff --git a/icons/obj/card.dmi b/icons/obj/card.dmi index 6397cf6fb5b5a036813538367b7123006b2e26ef..5bcd1df47d929bbf13f5fe8e41ecb1175f782fd2 100644 GIT binary patch literal 23825 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 diff --git a/icons/obj/clothing/head/hats.dmi b/icons/obj/clothing/head/hats.dmi index 6cca3da61f41a849888e3557ff49418e2fa2559a..b655dd175670832ec5317d9318d039326e7f6d2b 100644 GIT binary patch delta 5491 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 diff --git a/tgstation.dme b/tgstation.dme index 5df1d8c26f7cb..6fae686f69add 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4254,6 +4254,7 @@ #include "code\modules\jobs\job_types\spawner\zombie.dm" #include "code\modules\jobs\job_types\station_trait\bridge_assistant.dm" #include "code\modules\jobs\job_types\station_trait\cargo_gorilla.dm" +#include "code\modules\jobs\job_types\station_trait\veteran_advisor.dm" #include "code\modules\keybindings\bindings_atom.dm" #include "code\modules\keybindings\bindings_client.dm" #include "code\modules\keybindings\focus.dm" diff --git a/tgui/packages/tgui/interfaces/common/JobToIcon.ts b/tgui/packages/tgui/interfaces/common/JobToIcon.ts index f3ce63bea57bf..98369c7902827 100644 --- a/tgui/packages/tgui/interfaces/common/JobToIcon.ts +++ b/tgui/packages/tgui/interfaces/common/JobToIcon.ts @@ -52,6 +52,7 @@ export const JOB2ICON = { 'Shaft Miner': 'digging', 'Station Engineer': 'gears', 'Syndicate Operative': 'dragon', + 'Veteran Security Advisor': 'ribbon', Virologist: 'virus', Warden: 'handcuffs', } as const; From 465af757a9e09d3d4c302bd0bdbd503eb3fd6f92 Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Tue, 27 Feb 2024 17:49:35 +1300 Subject: [PATCH 33/63] Automatic changelog for PR #81667 [ci skip] --- html/changelogs/AutoChangeLog-pr-81667.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81667.yml diff --git a/html/changelogs/AutoChangeLog-pr-81667.yml b/html/changelogs/AutoChangeLog-pr-81667.yml new file mode 100644 index 0000000000000..3f82bd14d8b74 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81667.yml @@ -0,0 +1,4 @@ +author: "DrDiasyl" +delete-after: True +changes: + - rscadd: "NEW TRAIT JOB: Veteran Security Advisor! Advise HoS and Captain on Security matters, mentor Security Officers. Note that they are paraplegic and are suffering PTSD due to their past experience." \ No newline at end of file From b0fd97dafef35bd868740ca270a9547a732aa738 Mon Sep 17 00:00:00 2001 From: Jacquerel Date: Tue, 27 Feb 2024 05:41:44 +0000 Subject: [PATCH 34/63] Allow voting statistics to be hidden (#81686) ## About The Pull Request Allows polls to hide the voting statistics, both while the poll is running and when it completes, so that people vote in isolation of knowing what other people are voting for. It looks like this: ![image](https://github.com/tgstation/tgstation/assets/7483112/d17a1784-ecfa-4c7b-8cb2-88aef7f7dcdb) ![image](https://github.com/tgstation/tgstation/assets/7483112/c83db170-7338-48dd-8ab6-cfbc20414abe) This functionality is also available for custom votes triggered by admins, if they want it. ## Why It's Good For The Game Put simply, if likely to be controversially, sometimes people get upset that an event with a 5% chance of happening occurs 5% of the time. Now they really won't know what the chance was, only that it was picked by a weighted choice. Lack of knowledge about what other people are currently voting for should also curb "meme votes" where people pile onto something they see other people voting for, your vote in a poll with hidden stats can only be influenced by your own opinion because you can't see what the crowd is doing in order to join their bandwagon. ## Changelog :cl: add: Displaying the voting statistics is now optional on a per-poll basis, and is disabled for map voting. /:cl: --- code/controllers/subsystem/vote.dm | 1 + code/datums/votes/_vote_datum.dm | 33 +++++++++++---------- code/datums/votes/custom_vote.dm | 11 +++++++ code/datums/votes/map_vote.dm | 1 + tgui/packages/tgui/interfaces/VotePanel.tsx | 5 +++- 5 files changed, 35 insertions(+), 16 deletions(-) diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index c4c3b85b4c939..410db36988dd8 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -302,6 +302,7 @@ SUBSYSTEM_DEF(vote) "question" = current_vote.override_question, "timeRemaining" = current_vote.time_remaining, "countMethod" = current_vote.count_method, + "displayStatistics" = current_vote.display_statistics, "choices" = choices, "vote" = vote_data, ) diff --git a/code/datums/votes/_vote_datum.dm b/code/datums/votes/_vote_datum.dm index a882511b51130..3f821a7129ada 100644 --- a/code/datums/votes/_vote_datum.dm +++ b/code/datums/votes/_vote_datum.dm @@ -32,6 +32,8 @@ var/count_method = VOTE_COUNT_METHOD_SINGLE /// The method for selecting a winner. var/winner_method = VOTE_WINNER_METHOD_SIMPLE + /// Should we show details about the number of votes submitted for each option? + var/display_statistics = TRUE /** * Used to determine if this vote is a possible @@ -193,21 +195,22 @@ if(total_votes <= 0) return span_bold("Vote Result: Inconclusive - No Votes!") - returned_text += "\nResults:" - for(var/option in choices) - returned_text += "\n" - var/votes = choices[option] - var/percentage_text = "" - if(votes > 0) - var/actual_percentage = round((votes / total_votes) * 100, 0.1) - var/text = "[actual_percentage]" - var/spaces_needed = 5 - length(text) - for(var/_ in 1 to spaces_needed) - returned_text += " " - percentage_text += "[text]%" - else - percentage_text = " 0%" - returned_text += "[percentage_text] | [span_bold(option)]: [choices[option]]" + if (display_statistics) + returned_text += "\nResults:" + for(var/option in choices) + returned_text += "\n" + var/votes = choices[option] + var/percentage_text = "" + if(votes > 0) + var/actual_percentage = round((votes / total_votes) * 100, 0.1) + var/text = "[actual_percentage]" + var/spaces_needed = 5 - length(text) + for(var/_ in 1 to spaces_needed) + returned_text += " " + percentage_text += "[text]%" + else + percentage_text = " 0%" + returned_text += "[percentage_text] | [span_bold(option)]: [choices[option]]" if(!real_winner) // vote has no winner or cannot be won, but still had votes return returned_text diff --git a/code/datums/votes/custom_vote.dm b/code/datums/votes/custom_vote.dm index 5960e7dff0ed9..d67eb0281c6c6 100644 --- a/code/datums/votes/custom_vote.dm +++ b/code/datums/votes/custom_vote.dm @@ -47,6 +47,17 @@ to_chat(vote_creator, span_boldwarning("Unknown winner method. Contact a coder.")) return FALSE + var/display_stats = tgui_alert( + vote_creator, + "Should voting statistics be public?", + "Show voting stats?", + list("Yes", "No"), + ) + + if(display_stats == null) + return FALSE + display_statistics = display_stats == "Yes" + override_question = tgui_input_text(vote_creator, "What is the vote for?", "Custom Vote") if(!override_question) return FALSE diff --git a/code/datums/votes/map_vote.dm b/code/datums/votes/map_vote.dm index be156866f667f..a07d87846f050 100644 --- a/code/datums/votes/map_vote.dm +++ b/code/datums/votes/map_vote.dm @@ -3,6 +3,7 @@ message = "Vote for next round's map!" count_method = VOTE_COUNT_METHOD_SINGLE winner_method = VOTE_WINNER_METHOD_WEIGHTED_RANDOM + display_statistics = FALSE /datum/vote/map_vote/New() . = ..() diff --git a/tgui/packages/tgui/interfaces/VotePanel.tsx b/tgui/packages/tgui/interfaces/VotePanel.tsx index eeca947b2244b..07da85e6028d2 100644 --- a/tgui/packages/tgui/interfaces/VotePanel.tsx +++ b/tgui/packages/tgui/interfaces/VotePanel.tsx @@ -35,6 +35,7 @@ type ActiveVote = { vote: Vote; question: string | null; timeRemaining: number; + displayStatistics: boolean; choices: Option[]; countMethod: number; }; @@ -209,7 +210,9 @@ const ChoicesPanel = (props) => { name="vote-yea" /> )} - {choice.votes} Votes + {currentVote.displayStatistics + ? choice.votes + ' Votes' + : null} From 0893aef2fd084ade84c076429d7b2f86c999e73e Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Tue, 27 Feb 2024 18:43:34 +1300 Subject: [PATCH 35/63] Automatic changelog for PR #81686 [ci skip] --- html/changelogs/AutoChangeLog-pr-81686.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81686.yml diff --git a/html/changelogs/AutoChangeLog-pr-81686.yml b/html/changelogs/AutoChangeLog-pr-81686.yml new file mode 100644 index 0000000000000..7d4795275b685 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81686.yml @@ -0,0 +1,4 @@ +author: "Jacquerel" +delete-after: True +changes: + - rscadd: "Displaying the voting statistics is now optional on a per-poll basis, and is disabled for map voting." \ No newline at end of file From 42a657169dcedfbb7039a0a2c5aae49a36359d95 Mon Sep 17 00:00:00 2001 From: KingkumaArt <69398298+KingkumaArt@users.noreply.github.com> Date: Tue, 27 Feb 2024 09:01:24 -0500 Subject: [PATCH 36/63] Makes vending machines no longer crush chairs - fixed (#81653) THIS IS A FIXED VERSION OF PR #79775 Does what it says, vending machines no longer damage chairs or conveyors. Likely an unintended side effect of vendor crushes being updated to do integrity damage. ## Why It's Good For The Game ![cbt](https://github.com/tgstation/tgstation/assets/69398298/c4695266-4bf5-4cfb-a51c-0c63e4e71d50) Jokes aside the fact I have this gif below permanently saved to my pc means it's memorable enough to add back in. Not really a thing that's possible to powergame with either, because there are far easier ways of RRing someone, this is just funny enough to be worth it. ## Changelog :cl: add: a list of items called vendor_nocrush that vendors dont deal integrity damage to upon hitting them. fix: Makes vending machines no longer crush chairs and conveyors. /:cl: --------- Co-authored-by: san7890 --- code/modules/vending/_vending.dm | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm index 3c544552d512a..f101c5b2f7486 100644 --- a/code/modules/vending/_vending.dm +++ b/code/modules/vending/_vending.dm @@ -821,7 +821,7 @@ post_crush_living(living_target, was_alive) flags_to_return |= (SUCCESSFULLY_CRUSHED_MOB|SUCCESSFULLY_CRUSHED_ATOM) - else if (atom_target.uses_integrity && !(atom_target.invisibility > SEE_INVISIBLE_LIVING) && !(is_type_in_typecache(atom_target, GLOB.WALLITEMS_INTERIOR) || is_type_in_typecache(atom_target, GLOB.WALLITEMS_EXTERIOR))) + else if(check_atom_crushable(atom_target)) atom_target.take_damage(adjusted_damage, damage_type, damage_flag, FALSE, crush_dir) crushed = TRUE flags_to_return |= SUCCESSFULLY_CRUSHED_ATOM @@ -861,6 +861,21 @@ /atom/movable/proc/post_tilt() return +/proc/check_atom_crushable(atom/atom_target) + /// Contains structures and items that vendors shouldn't crush when we land on them. + var/static/list/vendor_uncrushable_objects = list( + /obj/structure/chair, + /obj/machinery/conveyor, + ) + GLOB.WALLITEMS_INTERIOR + GLOB.WALLITEMS_EXTERIOR + + if(is_type_in_list(atom_target, vendor_uncrushable_objects)) //make sure its not in the list of "uncrushable" stuff + return FALSE + + if (atom_target.uses_integrity && !(atom_target.invisibility > SEE_INVISIBLE_LIVING)) //check if it has integrity + allow ninjas, etc to be crushed in cloak + return TRUE //SMUSH IT + + return FALSE + /obj/machinery/vending/post_crush_living(mob/living/crushed, was_alive) if(was_alive && crushed.stat == DEAD && crushed.client) From cf1424b2d9272dc17d62028529a3a9071ffbfe0f Mon Sep 17 00:00:00 2001 From: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com> Date: Tue, 27 Feb 2024 09:09:12 -0500 Subject: [PATCH 37/63] Resprites plant grafts (#81688) --- icons/obj/service/hydroponics/equipment.dmi | Bin 34781 -> 32728 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/service/hydroponics/equipment.dmi b/icons/obj/service/hydroponics/equipment.dmi index ed339a8a4209d93e2844c64cc15e10f00955d9f4..0fcebb3c519882d32715368a42496765b654c27a 100644 GIT binary patch literal 32728 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 (<&}1j?&(D~1@B&2avSH|B}aV?*wV<#qrR6_ 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 DrTdL1 From f0ddb75f7deabf07195e3ed7eb8c87077efd5355 Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Wed, 28 Feb 2024 03:16:37 +1300 Subject: [PATCH 38/63] Automatic changelog for PR #81653 [ci skip] --- html/changelogs/AutoChangeLog-pr-81653.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81653.yml diff --git a/html/changelogs/AutoChangeLog-pr-81653.yml b/html/changelogs/AutoChangeLog-pr-81653.yml new file mode 100644 index 0000000000000..60612d931efd2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81653.yml @@ -0,0 +1,5 @@ +author: "KingkumaArt" +delete-after: True +changes: + - rscadd: "a list of items called vendor_nocrush that vendors dont deal integrity damage to upon hitting them." + - bugfix: "Makes vending machines no longer crush chairs and conveyors." \ No newline at end of file From a655526113eb6f851cb69c84594d48bdd26086db Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Wed, 28 Feb 2024 03:17:37 +1300 Subject: [PATCH 39/63] Automatic changelog for PR #81688 [ci skip] --- html/changelogs/AutoChangeLog-pr-81688.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81688.yml diff --git a/html/changelogs/AutoChangeLog-pr-81688.yml b/html/changelogs/AutoChangeLog-pr-81688.yml new file mode 100644 index 0000000000000..cced53083f08a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81688.yml @@ -0,0 +1,4 @@ +author: "ArcaneMusic" +delete-after: True +changes: + - image: "New sprites for plant grafts!" \ No newline at end of file From f8dcbe06beb083a2196dbeb2ebcb5f5b5a283240 Mon Sep 17 00:00:00 2001 From: Ghom <42542238+Ghommie@users.noreply.github.com> Date: Tue, 27 Feb 2024 21:52:16 +0100 Subject: [PATCH 40/63] "Freshness Jars full of Natural Bait" is now a goodie and costs 200 instead of 2000 (#81555) ## About The Pull Request All other fishing-related packs (fishes are considered livestock) are goodies, and none of them costs anywhere this much. ## Why It's Good For The Game That's some overpriced jar of ~~kronkaine pills (1u)~~ fishing baits. ## Changelog :cl: balance: "Freshness Jars full of Natural Bait" is now a goodie and costs 200 credits instead of 2000 /:cl: --- code/modules/cargo/goodies.dm | 6 ++++++ code/modules/cargo/packs/imports.dm | 7 ------- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/code/modules/cargo/goodies.dm b/code/modules/cargo/goodies.dm index 337dca218ead7..fd30973d24107 100644 --- a/code/modules/cargo/goodies.dm +++ b/code/modules/cargo/goodies.dm @@ -249,6 +249,12 @@ cost = PAYCHECK_CREW contains = list(/obj/item/bait_can/worm/premium) +/datum/supply_pack/goody/naturalbait + name = "Freshness Jars full of Natural Bait" + desc = "Homemade in the Spinward Sector." + cost = PAYCHECK_CREW * 4 //rock on + contains = list(/obj/item/storage/pill_bottle/naturalbait) + /datum/supply_pack/goody/telescopic_fishing_rod name = "Telescopic Fishing Rod" desc = "A collapsible fishing rod that can fit within a backpack." diff --git a/code/modules/cargo/packs/imports.dm b/code/modules/cargo/packs/imports.dm index 7edfe9e2a9cf8..fae1e405d3fb2 100644 --- a/code/modules/cargo/packs/imports.dm +++ b/code/modules/cargo/packs/imports.dm @@ -71,13 +71,6 @@ crate_name = "bananium sheet crate" discountable = SUPPLY_PACK_RARE_DISCOUNTABLE -/datum/supply_pack/imports/naturalbait - name = "Freshness Jars full of Natural Bait" - desc = "Homemade in the Spinward Sector." - cost = 2000 //rock on - contains = list(/obj/item/storage/pill_bottle/naturalbait) - crate_name = "fishing bait crate" - /datum/supply_pack/imports/dumpstercorpse name = "A....Dumpster?" desc = "Why does it smell so bad...." From ce04e2b7ee279e025bd53e87296e7dfd70b9474a Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Wed, 28 Feb 2024 09:52:39 +1300 Subject: [PATCH 41/63] Automatic changelog for PR #81555 [ci skip] --- html/changelogs/AutoChangeLog-pr-81555.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81555.yml diff --git a/html/changelogs/AutoChangeLog-pr-81555.yml b/html/changelogs/AutoChangeLog-pr-81555.yml new file mode 100644 index 0000000000000..3e42a3e26b6be --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81555.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - balance: "\"Freshness Jars full of Natural Bait\" is now a goodie and costs 200 credits instead of 2000" \ No newline at end of file From 3d1308c5d7667450326c4780776efd773b417b2b Mon Sep 17 00:00:00 2001 From: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Date: Tue, 27 Feb 2024 16:59:40 -0600 Subject: [PATCH 42/63] Fix rat heart (#81698) ## About The Pull Request Fixes #81696 `on_mob_insert` doesn't return a truthy value from parent call, it returns null / nothing Also patches a potential exploit involving that can mutate check ## Changelog :cl: Melbert fix: Rat hearts apply their damage modifier malus correctly /:cl: --- .../dna_infuser/organ_sets/rat_organs.dm | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm b/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm index 092a4c7889a28..4e84870ec9c30 100644 --- a/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm +++ b/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm @@ -65,26 +65,22 @@ /obj/item/organ/internal/heart/rat/on_mob_insert(mob/living/carbon/receiver) . = ..() - if(!. || !ishuman(receiver)) + if(!ishuman(receiver)) return var/mob/living/carbon/human/human_receiver = receiver - if(!human_receiver.can_mutate()) - return - human_receiver.dna.add_mutation(/datum/mutation/human/dwarfism) + if(human_receiver.can_mutate()) + human_receiver.dna.add_mutation(/datum/mutation/human/dwarfism) //but 1.5 damage - if(human_receiver.physiology) - human_receiver.physiology.damage_resistance -= 50 + human_receiver.physiology?.damage_resistance -= 50 /obj/item/organ/internal/heart/rat/on_mob_remove(mob/living/carbon/heartless, special) . = ..() if(!ishuman(heartless)) return var/mob/living/carbon/human/human_heartless = heartless - if(!human_heartless.can_mutate()) - return - human_heartless.dna.remove_mutation(/datum/mutation/human/dwarfism) - if(human_heartless.physiology) - human_heartless.physiology.damage_resistance += 50 + if(human_heartless.can_mutate()) + human_heartless.dna.remove_mutation(/datum/mutation/human/dwarfism) + human_heartless.physiology?.damage_resistance += 50 /// you occasionally squeak, and have some rat related verbal tics /obj/item/organ/internal/tongue/rat From 06571c87daf7a273a42fb5f8515e94da7d15b32e Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Wed, 28 Feb 2024 12:02:55 +1300 Subject: [PATCH 43/63] Automatic changelog for PR #81698 [ci skip] --- html/changelogs/AutoChangeLog-pr-81698.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81698.yml diff --git a/html/changelogs/AutoChangeLog-pr-81698.yml b/html/changelogs/AutoChangeLog-pr-81698.yml new file mode 100644 index 0000000000000..ca76af99c8529 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81698.yml @@ -0,0 +1,4 @@ +author: "Melbert" +delete-after: True +changes: + - bugfix: "Rat hearts apply their damage modifier malus correctly" \ No newline at end of file From d1d31b0ef575abd7f3ed5f1e36aba8e03c06da0c Mon Sep 17 00:00:00 2001 From: Changelogs Date: Wed, 28 Feb 2024 00:18:58 +0000 Subject: [PATCH 44/63] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-81502.yml | 5 --- html/changelogs/AutoChangeLog-pr-81534.yml | 5 --- html/changelogs/AutoChangeLog-pr-81555.yml | 4 -- html/changelogs/AutoChangeLog-pr-81562.yml | 4 -- html/changelogs/AutoChangeLog-pr-81607.yml | 4 -- html/changelogs/AutoChangeLog-pr-81612.yml | 4 -- html/changelogs/AutoChangeLog-pr-81617.yml | 7 --- html/changelogs/AutoChangeLog-pr-81624.yml | 4 -- html/changelogs/AutoChangeLog-pr-81636.yml | 4 -- html/changelogs/AutoChangeLog-pr-81642.yml | 5 --- html/changelogs/AutoChangeLog-pr-81643.yml | 4 -- html/changelogs/AutoChangeLog-pr-81653.yml | 5 --- html/changelogs/AutoChangeLog-pr-81667.yml | 4 -- html/changelogs/AutoChangeLog-pr-81670.yml | 4 -- html/changelogs/AutoChangeLog-pr-81686.yml | 4 -- html/changelogs/AutoChangeLog-pr-81688.yml | 4 -- html/changelogs/AutoChangeLog-pr-81698.yml | 4 -- html/changelogs/archive/2024-02.yml | 52 ++++++++++++++++++++++ 18 files changed, 52 insertions(+), 75 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-81502.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81534.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81555.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81562.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81607.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81612.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81617.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81624.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81636.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81642.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81643.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81653.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81667.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81670.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81686.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81688.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81698.yml diff --git a/html/changelogs/AutoChangeLog-pr-81502.yml b/html/changelogs/AutoChangeLog-pr-81502.yml deleted file mode 100644 index 67763b4fb43e8..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81502.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "IndieanaJones" -delete-after: True -changes: - - rscadd: "New Changeling Ability: Hive Head" - - bugfix: "Fixed bees having an improper sprite offset" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81534.yml b/html/changelogs/AutoChangeLog-pr-81534.yml deleted file mode 100644 index a100278dc5472..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81534.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Iamgoofball" -delete-after: True -changes: - - balance: "xenomorph stomachs will no longer destroy items directly, refactored it to use acid_act()" - - bugfix: "fixes xenomorph vore accidentally destroying mobs it wasn't supposed to destroy, im thinking this was modified list in place shenanigans" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81555.yml b/html/changelogs/AutoChangeLog-pr-81555.yml deleted file mode 100644 index 3e42a3e26b6be..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81555.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - balance: "\"Freshness Jars full of Natural Bait\" is now a goodie and costs 200 credits instead of 2000" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81562.yml b/html/changelogs/AutoChangeLog-pr-81562.yml deleted file mode 100644 index e6e40113f7cc9..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81562.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - rscadd: "Added a multi-dimensional bomb payload to the black market. It's very expensive." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81607.yml b/html/changelogs/AutoChangeLog-pr-81607.yml deleted file mode 100644 index 0acb3c6a1bbf7..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81607.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "JohnFulpWillard" -delete-after: True -changes: - - qol: "Intelligent monkeys now punch people instead of biting them." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81612.yml b/html/changelogs/AutoChangeLog-pr-81612.yml deleted file mode 100644 index 89d09d1d7bc33..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81612.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "PapaMichael" -delete-after: True -changes: - - balance: "Fugitive hunters will spawn early if the emergency shuttle is called." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81617.yml b/html/changelogs/AutoChangeLog-pr-81617.yml deleted file mode 100644 index fb9957e2adbe0..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81617.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "LT3" -delete-after: True -changes: - - code_imp: "Tram throwing now breaks grilles consistently" - - code_imp: "Tram malfunction lethality/throw chance are now a multiplier instead of flat value" - - code_imp: "Tram throw chance can be adjusted" - - code_imp: "Unlucky trait is now used in tram throw calculation" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81624.yml b/html/changelogs/AutoChangeLog-pr-81624.yml deleted file mode 100644 index ab0c85d5fd716..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81624.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "softcerv" -delete-after: True -changes: - - code_imp: "TRAIT_DEAF now works on non-carbon mobs" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81636.yml b/html/changelogs/AutoChangeLog-pr-81636.yml deleted file mode 100644 index 5d4f0d86e8081..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81636.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "00-Steven" -delete-after: True -changes: - - bugfix: "Lobby manifest shows the head/captain symbols next to heads and captains with custom titles, as long as they're registered with a head/captain trim." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81642.yml b/html/changelogs/AutoChangeLog-pr-81642.yml deleted file mode 100644 index 61bb755accacd..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81642.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Cheshify" -delete-after: True -changes: - - qol: "The chapel has been slightly overhauled on Birdshot, with the chaplain now having a place to preach sermons." - - bugfix: "Sparring chaplains are now able to operate on Birdshot!" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81643.yml b/html/changelogs/AutoChangeLog-pr-81643.yml deleted file mode 100644 index 0e4561dd8ab89..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81643.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Cheshify" -delete-after: True -changes: - - bugfix: "the north star's main intersections are brighter, the elevator is properly lit, and a single floating poster was moved." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81653.yml b/html/changelogs/AutoChangeLog-pr-81653.yml deleted file mode 100644 index 60612d931efd2..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81653.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "KingkumaArt" -delete-after: True -changes: - - rscadd: "a list of items called vendor_nocrush that vendors dont deal integrity damage to upon hitting them." - - bugfix: "Makes vending machines no longer crush chairs and conveyors." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81667.yml b/html/changelogs/AutoChangeLog-pr-81667.yml deleted file mode 100644 index 3f82bd14d8b74..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81667.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "DrDiasyl" -delete-after: True -changes: - - rscadd: "NEW TRAIT JOB: Veteran Security Advisor! Advise HoS and Captain on Security matters, mentor Security Officers. Note that they are paraplegic and are suffering PTSD due to their past experience." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81670.yml b/html/changelogs/AutoChangeLog-pr-81670.yml deleted file mode 100644 index 3a7392ed6116d..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81670.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "00-Steven" -delete-after: True -changes: - - bugfix: "Fixed Bluespace RPEDs failing to apply circuits from a distance if you had to select between multiple." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81686.yml b/html/changelogs/AutoChangeLog-pr-81686.yml deleted file mode 100644 index 7d4795275b685..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81686.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Jacquerel" -delete-after: True -changes: - - rscadd: "Displaying the voting statistics is now optional on a per-poll basis, and is disabled for map voting." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81688.yml b/html/changelogs/AutoChangeLog-pr-81688.yml deleted file mode 100644 index cced53083f08a..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81688.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ArcaneMusic" -delete-after: True -changes: - - image: "New sprites for plant grafts!" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81698.yml b/html/changelogs/AutoChangeLog-pr-81698.yml deleted file mode 100644 index ca76af99c8529..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81698.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Melbert" -delete-after: True -changes: - - bugfix: "Rat hearts apply their damage modifier malus correctly" \ No newline at end of file diff --git a/html/changelogs/archive/2024-02.yml b/html/changelogs/archive/2024-02.yml index 1d21410dcdf9a..a9e41aed680fd 100644 --- a/html/changelogs/archive/2024-02.yml +++ b/html/changelogs/archive/2024-02.yml @@ -790,3 +790,55 @@ - bugfix: fixes cardboard cutouts not updating when held and using the crayon on them to change their appearance, and fixes the alt_appearance being added to the cutout instead of the mob holding it +2024-02-28: + 00-Steven: + - bugfix: Lobby manifest shows the head/captain symbols next to heads and captains + with custom titles, as long as they're registered with a head/captain trim. + - bugfix: Fixed Bluespace RPEDs failing to apply circuits from a distance if you + had to select between multiple. + ArcaneMusic: + - image: New sprites for plant grafts! + Cheshify: + - bugfix: the north star's main intersections are brighter, the elevator is properly + lit, and a single floating poster was moved. + - qol: The chapel has been slightly overhauled on Birdshot, with the chaplain now + having a place to preach sermons. + - bugfix: Sparring chaplains are now able to operate on Birdshot! + DrDiasyl: + - rscadd: 'NEW TRAIT JOB: Veteran Security Advisor! Advise HoS and Captain on Security + matters, mentor Security Officers. Note that they are paraplegic and are suffering + PTSD due to their past experience.' + Ghommie: + - rscadd: Added a multi-dimensional bomb payload to the black market. It's very + expensive. + - balance: '"Freshness Jars full of Natural Bait" is now a goodie and costs 200 + credits instead of 2000' + Iamgoofball: + - balance: xenomorph stomachs will no longer destroy items directly, refactored + it to use acid_act() + - bugfix: fixes xenomorph vore accidentally destroying mobs it wasn't supposed to + destroy, im thinking this was modified list in place shenanigans + IndieanaJones: + - rscadd: 'New Changeling Ability: Hive Head' + - bugfix: Fixed bees having an improper sprite offset + Jacquerel: + - rscadd: Displaying the voting statistics is now optional on a per-poll basis, + and is disabled for map voting. + JohnFulpWillard: + - qol: Intelligent monkeys now punch people instead of biting them. + KingkumaArt: + - rscadd: a list of items called vendor_nocrush that vendors dont deal integrity + damage to upon hitting them. + - bugfix: Makes vending machines no longer crush chairs and conveyors. + LT3: + - code_imp: Tram throwing now breaks grilles consistently + - code_imp: Tram malfunction lethality/throw chance are now a multiplier instead + of flat value + - code_imp: Tram throw chance can be adjusted + - code_imp: Unlucky trait is now used in tram throw calculation + Melbert: + - bugfix: Rat hearts apply their damage modifier malus correctly + PapaMichael: + - balance: Fugitive hunters will spawn early if the emergency shuttle is called. + softcerv: + - code_imp: TRAIT_DEAF now works on non-carbon mobs From eadcf5b1f9f1332a28c01b840eb656958c985414 Mon Sep 17 00:00:00 2001 From: Nick <42454181+Momo8289@users.noreply.github.com> Date: Tue, 27 Feb 2024 20:22:08 -0500 Subject: [PATCH 45/63] Converts the slot machine over to TGUI (#81700) This PR is the long-awaited de-soulification of the slot machine, converting it over to TGUI. It also updates the jackpot, since it appears to have been quite broken. It will now give all of the available prize money plus 10000 credits. I'm fairly sure this is what was supposed to happen, but I honestly could not tell, so if this ends up being a balance change then so be it. Also adds a new funny kind of jackpot when you get 5 bombs in the middle row. Other than that, generally cleans up and updates some of the slot machine code. The styling of the slot machine ui is nothing fancy right now, and I'm open to suggestions about how the ui should look. --- code/game/machinery/slotmachine.dm | 227 ++++++++++-------- tgui/packages/tgui/interfaces/SlotMachine.tsx | 151 ++++++++++++ 2 files changed, 284 insertions(+), 94 deletions(-) create mode 100644 tgui/packages/tgui/interfaces/SlotMachine.tsx diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm index ddfe76f56af1d..b7eec3994b8d1 100644 --- a/code/game/machinery/slotmachine.dm +++ b/code/game/machinery/slotmachine.dm @@ -10,7 +10,7 @@ #define JACKPOT 10000 #define SPIN_TIME 65 //As always, deciseconds. #define REEL_DEACTIVATE_DELAY 7 -#define SEVEN "7" +#define JACKPOT_SEVENS FA_ICON_7 #define HOLOCHIP 1 #define COIN 2 @@ -24,7 +24,7 @@ density = TRUE circuit = /obj/item/circuitboard/computer/slot_machine light_color = LIGHT_COLOR_BROWN - interaction_flags_machine = INTERACT_MACHINE_ALLOW_SILICON|INTERACT_MACHINE_SET_MACHINE // don't need to be literate to play slots + interaction_flags_machine = INTERACT_MACHINE_ALLOW_SILICON // don't need to be literate to play slots var/money = 3000 //How much money it has CONSUMED var/plays = 0 var/working = FALSE @@ -32,9 +32,19 @@ var/jackpots = 0 var/paymode = HOLOCHIP //toggles between HOLOCHIP/COIN, defined above var/cointype = /obj/item/coin/iron //default cointype + /// Icons that can be displayed by the slot machine. + var/static/list/icons = list( + FA_ICON_LEMON = list("value" = 2, "colour" = "yellow"), + FA_ICON_STAR = list("value" = 2, "colour" = "yellow"), + FA_ICON_BOMB = list("value" = 2, "colour" = "red"), + FA_ICON_BIOHAZARD = list("value" = 2, "colour" = "green"), + FA_ICON_APPLE_WHOLE = list("value" = 2, "colour" = "red"), + FA_ICON_7 = list("value" = 1, "colour" = "yellow"), + FA_ICON_DOLLAR_SIGN = list("value" = 2, "colour" = "green"), + ) + var/static/list/coinvalues var/list/reels = list(list("", "", "") = 0, list("", "", "") = 0, list("", "", "") = 0, list("", "", "") = 0, list("", "", "") = 0) - var/list/symbols = list(SEVEN = 1, "&" = 2, "@" = 2, "$" = 2, "?" = 2, "#" = 2, "!" = 2, "%" = 2) //if people are winning too much, multiply every number in this list by 2 and see if they are still winning too much. var/static/list/ray_filter = list(type = "rays", y = 16, size = 40, density = 4, color = COLOR_RED_LIGHT, factor = 15, flags = FILTER_OVERLAY) /obj/machinery/computer/slot_machine/Initialize(mapload) @@ -42,13 +52,13 @@ jackpots = rand(1, 4) //false hope plays = rand(75, 200) - INVOKE_ASYNC(src, PROC_REF(toggle_reel_spin), TRUE)//The reels won't spin unless we activate them + toggle_reel_spin_sync(1) //The reels won't spin unless we activate them var/list/reel = reels[1] for(var/i in 1 to reel.len) //Populate the reels. randomize_reels() - INVOKE_ASYNC(src, PROC_REF(toggle_reel_spin), FALSE) + toggle_reel_spin_sync(0) if (isnull(coinvalues)) coinvalues = list() @@ -84,46 +94,49 @@ icon_screen = "slots_screen" return ..() -/obj/machinery/computer/slot_machine/attackby(obj/item/I, mob/living/user, params) - if(istype(I, /obj/item/coin)) - var/obj/item/coin/C = I + +/obj/machinery/computer/slot_machine/item_interaction(mob/living/user, obj/item/inserted, list/modifiers, is_right_clicking) + if(istype(inserted, /obj/item/coin)) + var/obj/item/coin/inserted_coin = inserted if(paymode == COIN) if(prob(2)) - if(!user.transferItemToLoc(C, drop_location(), silent = FALSE)) + if(!user.transferItemToLoc(inserted_coin, drop_location(), silent = FALSE)) return - C.throw_at(user, 3, 10) + inserted_coin.throw_at(user, 3, 10) if(prob(10)) balance = max(balance - SPIN_PRICE, 0) to_chat(user, span_warning("[src] spits your coin back out!")) else - if(!user.temporarilyRemoveItemFromInventory(C)) + if(!user.temporarilyRemoveItemFromInventory(inserted_coin)) return - to_chat(user, span_notice("You insert [C] into [src]'s slot!")) - balance += C.value - qdel(C) + balloon_alert(user, "coin insterted") + balance += inserted_coin.value + qdel(inserted_coin) else - to_chat(user, span_warning("This machine is only accepting holochips!")) - else if(istype(I, /obj/item/holochip)) + balloon_alert(user, "holochips only!") + + else if(istype(inserted, /obj/item/holochip)) if(paymode == HOLOCHIP) - var/obj/item/holochip/H = I - if(!user.temporarilyRemoveItemFromInventory(H)) + var/obj/item/holochip/inserted_chip = inserted + if(!user.temporarilyRemoveItemFromInventory(inserted_chip)) return - to_chat(user, span_notice("You insert [H.credits] holocredits into [src]'s slot!")) - balance += H.credits - qdel(H) + balloon_alert(user, "[inserted_chip.credits] credit[inserted_chip.credits == 1 ? "" : "s"] inserted") + balance += inserted_chip.credits + qdel(inserted_chip) else - to_chat(user, span_warning("This machine is only accepting coins!")) - else if(I.tool_behaviour == TOOL_MULTITOOL) + balloon_alert(user, "coins only!") + + else if(inserted.tool_behaviour == TOOL_MULTITOOL) if(balance > 0) visible_message("[src] says, 'ERROR! Please empty the machine balance before altering paymode'") //Prevents converting coins into holocredits and vice versa else if(paymode == HOLOCHIP) paymode = COIN - visible_message("[src] says, 'This machine now works with COINS!'") + balloon_alert(user, "now using coins") else paymode = HOLOCHIP - visible_message("[src] says, 'This machine now works with HOLOCHIPS!'") + balloon_alert(user, "now using holochips") else return ..() @@ -138,49 +151,54 @@ balloon_alert(user, "machine rigged") return TRUE -/obj/machinery/computer/slot_machine/ui_interact(mob/living/user) +/obj/machinery/computer/slot_machine/ui_interact(mob/living/user, datum/tgui/ui) + . = ..() + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "SlotMachine", name) + ui.open() + +/obj/machinery/computer/slot_machine/ui_static_data(mob/user) + var/list/data = list() + data["icons"] = list() + for(var/icon_name in icons) + var/list/icon = icons[icon_name] + icon += list("icon" = icon_name) + data["icons"] += list(icon) + data["cost"] = SPIN_PRICE + data["jackpot"] = JACKPOT + + return data + +/obj/machinery/computer/slot_machine/ui_data(mob/user) + var/list/data = list() + var/list/reel_states = list() + for(var/reel_state in reels) + reel_states += list(reel_state) + data["state"] = reel_states + data["balance"] = balance + data["working"] = working + data["money"] = money + data["plays"] = plays + data["jackpots"] = jackpots + data["paymode"] = paymode + return data + + +/obj/machinery/computer/slot_machine/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) . = ..() - var/reeltext = {"

- /*****^*****^*****^*****^*****\\
- | \[[reels[1][1]]\] | \[[reels[2][1]]\] | \[[reels[3][1]]\] | \[[reels[4][1]]\] | \[[reels[5][1]]\] |
- | \[[reels[1][2]]\] | \[[reels[2][2]]\] | \[[reels[3][2]]\] | \[[reels[4][2]]\] | \[[reels[5][2]]\] |
- | \[[reels[1][3]]\] | \[[reels[2][3]]\] | \[[reels[3][3]]\] | \[[reels[4][3]]\] | \[[reels[5][3]]\] |
- \\*****v*****v*****v*****v*****/
-
"} - - var/dat - if(working) - dat = reeltext - - else - dat = {"Five credits to play!
- Prize Money Available: [money] (jackpot payout is ALWAYS 100%!)
- Credit Remaining: [balance]
- [plays] players have tried their luck today, and [jackpots] have won a jackpot!
-

-
Play!
-
- [reeltext] -
"} - if(balance > 0) - dat+="Refund balance
" - - var/datum/browser/popup = new(user, "slotmachine", "Slot Machine") - popup.set_content(dat) - popup.open() - -/obj/machinery/computer/slot_machine/Topic(href, href_list) - . = ..() //Sanity checks. if(.) - return . - - if(href_list["spin"]) - spin(usr) + return - else if(href_list["refund"]) - if(balance > 0) - give_payout(balance) - balance = 0 + switch(action) + if("spin") + spin(ui.user) + return TRUE + if("payout") + if(balance > 0) + give_payout(balance) + balance = 0 + return TRUE /obj/machinery/computer/slot_machine/emp_act(severity) . = ..() @@ -214,8 +232,6 @@ toggle_reel_spin(1) update_appearance() - updateDialog() - var/spin_loop = addtimer(CALLBACK(src, PROC_REF(do_spin)), 2, TIMER_LOOP|TIMER_STOPPABLE) addtimer(CALLBACK(src, PROC_REF(finish_spinning), spin_loop, user, the_name), SPIN_TIME - (REEL_DEACTIVATE_DELAY * reels.len)) @@ -223,7 +239,6 @@ /obj/machinery/computer/slot_machine/proc/do_spin() randomize_reels() - updateDialog() use_power(active_power_usage) /obj/machinery/computer/slot_machine/proc/finish_spinning(spin_loop, mob/user, the_name) @@ -232,50 +247,64 @@ deltimer(spin_loop) give_prizes(the_name, user) update_appearance() - updateDialog() +/// Check if the machine can be spun /obj/machinery/computer/slot_machine/proc/can_spin(mob/user) if(machine_stat & NOPOWER) - to_chat(user, span_warning("The slot machine has no power!")) + balloon_alert(user, "no power!") return FALSE if(machine_stat & BROKEN) - to_chat(user, span_warning("The slot machine is broken!")) + balloon_alert(user, "machine broken!") return FALSE if(working) - to_chat(user, span_warning("You need to wait until the machine stops spinning before you can play again!")) + balloon_alert(user, "already spinning!") return FALSE if(balance < SPIN_PRICE) - to_chat(user, span_warning("Insufficient money to play!")) + balloon_alert(user, "insufficient balance!") return FALSE return TRUE +/// Sets the spinning states of all reels to value, with a delay between them /obj/machinery/computer/slot_machine/proc/toggle_reel_spin(value, delay = 0) //value is 1 or 0 aka on or off for(var/list/reel in reels) if(!value) playsound(src, 'sound/machines/ding_short.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) reels[reel] = value - sleep(delay) + if(delay) + sleep(delay) +/// Same as toggle_reel_spin, but without the delay and runs synchronously +/obj/machinery/computer/slot_machine/proc/toggle_reel_spin_sync(value) + for(var/list/reel in reels) + reels[reel] = value + +/// Randomize the states of all reels /obj/machinery/computer/slot_machine/proc/randomize_reels() for(var/reel in reels) if(reels[reel]) reel[3] = reel[2] reel[2] = reel[1] - reel[1] = pick(symbols) + var/chosen = pick(icons) + reel[1] = icons[chosen] + list("icon_name" = chosen) +/// Checks if any prizes have been won, and pays them out /obj/machinery/computer/slot_machine/proc/give_prizes(usrname, mob/user) var/linelength = get_lines() var/did_player_win = TRUE - if(reels[1][2] + reels[2][2] + reels[3][2] + reels[4][2] + reels[5][2] == "[SEVEN][SEVEN][SEVEN][SEVEN][SEVEN]") - visible_message("[src] says, 'JACKPOT! You win [money] credits!'") + if(check_jackpot(FA_ICON_BOMB)) + var/obj/item/grenade/flashbang/bang = new(get_turf(src)) + bang.arm_grenade(null, 1 SECONDS) + + else if(check_jackpot(JACKPOT_SEVENS)) + var/prize = money + JACKPOT + visible_message("[src] says, 'JACKPOT! You win [prize] credits!'") priority_announce("Congratulations to [user ? user.real_name : usrname] for winning the jackpot at the slot machine in [get_area(src)]!") jackpots += 1 - balance += money - give_payout(JACKPOT) money = 0 if(paymode == HOLOCHIP) - new /obj/item/holochip(loc, JACKPOT) + new /obj/item/holochip(loc, prize) else for(var/i in 1 to 5) cointype = pick(subtypesof(/obj/item/coin)) @@ -298,7 +327,8 @@ money = max(money - SPIN_PRICE * 4, money) else - to_chat(user, span_warning("No luck!")) + balloon_alert(user, "no luck!") + playsound(src, 'sound/machines/buzz-sigh.ogg', 50) did_player_win = FALSE if(did_player_win) @@ -307,31 +337,38 @@ addtimer(CALLBACK(src, TYPE_PROC_REF(/datum, remove_filter), "jackpot_rays"), 3 SECONDS) playsound(src, 'sound/machines/roulettejackpot.ogg', 50, TRUE) +/// Checks for a jackpot (5 matching icons in the middle row) with the given icon name +/obj/machinery/computer/slot_machine/proc/check_jackpot(name) + return reels[1][2]["icon_name"] + reels[2][2]["icon_name"] + reels[3][2]["icon_name"] + reels[4][2]["icon_name"] + reels[5][2]["icon_name"] == "[name][name][name][name][name]" + +/// Finds the largest number of consecutive matching icons in a row /obj/machinery/computer/slot_machine/proc/get_lines() var/amountthesame for(var/i in 1 to 3) - var/inputtext = reels[1][i] + reels[2][i] + reels[3][i] + reels[4][i] + reels[5][i] - for(var/symbol in symbols) + var/inputtext = reels[1][i]["icon_name"] + reels[2][i]["icon_name"] + reels[3][i]["icon_name"] + reels[4][i]["icon_name"] + reels[5][i]["icon_name"] + for(var/icon in icons) var/j = 3 //The lowest value we have to check for. - var/symboltext = symbol + symbol + symbol + var/symboltext = icon + icon + icon while(j <= 5) if(findtext(inputtext, symboltext)) amountthesame = max(j, amountthesame) j++ - symboltext += symbol + symboltext += icon if(amountthesame) break return amountthesame +/// Give the specified amount of money. If the amount is greater than the amount of prize money available, add the difference as balance /obj/machinery/computer/slot_machine/proc/give_money(amount) - var/amount_to_give = money >= amount ? amount : money - var/surplus = amount_to_give - give_payout(amount_to_give) - money = max(0, money - amount) + var/amount_to_give = min(amount, money) + var/surplus = amount - give_payout(amount_to_give) + money -= amount_to_give balance += surplus +/// Pay out the specified amount in either coins or holochips /obj/machinery/computer/slot_machine/proc/give_payout(amount) if(paymode == HOLOCHIP) cointype = /obj/item/holochip @@ -348,23 +385,25 @@ return amount -/obj/machinery/computer/slot_machine/proc/dispense(amount = 0, cointype = /obj/item/coin/silver, mob/living/target, throwit = 0) +/// Dispense the given amount. If machine is set to use coins, will use the specified coin type. +/// If throwit and target are set, will launch the payment at the target +/obj/machinery/computer/slot_machine/proc/dispense(amount = 0, cointype = /obj/item/coin/silver, throwit = FALSE, mob/living/target) if(paymode == HOLOCHIP) - var/obj/item/holochip/H = new /obj/item/holochip(loc,amount) + var/obj/item/holochip/chip = new /obj/item/holochip(loc,amount) if(throwit && target) - H.throw_at(target, 3, 10) + chip.throw_at(target, 3, 10) else var/value = coinvalues["[cointype]"] if(value <= 0) CRASH("Coin value of zero, refusing to payout in dispenser") while(amount >= value) - var/obj/item/coin/C = new cointype(loc) //DOUBLE THE PAIN + var/obj/item/coin/thrown_coin = new cointype(loc) //DOUBLE THE PAIN amount -= value if(throwit && target) - C.throw_at(target, 3, 10) + thrown_coin.throw_at(target, 3, 10) else - random_step(C, 2, 40) + random_step(thrown_coin, 2, 40) playsound(src, pick(list('sound/machines/coindrop.ogg', 'sound/machines/coindrop2.ogg')), 50, TRUE) return amount @@ -374,7 +413,7 @@ #undef HOLOCHIP #undef JACKPOT #undef REEL_DEACTIVATE_DELAY -#undef SEVEN +#undef JACKPOT_SEVENS #undef SMALL_PRIZE #undef SPIN_PRICE #undef SPIN_TIME diff --git a/tgui/packages/tgui/interfaces/SlotMachine.tsx b/tgui/packages/tgui/interfaces/SlotMachine.tsx new file mode 100644 index 0000000000000..6d6d464f9131e --- /dev/null +++ b/tgui/packages/tgui/interfaces/SlotMachine.tsx @@ -0,0 +1,151 @@ +import { useBackend } from '../backend'; +import { Button, Icon, Section } from '../components'; +import { Window } from '../layouts'; + +type IconInfo = { + value: number; + colour: string; + icon_name: string; +}; + +type BackendData = { + icons: IconInfo[]; + state: any[]; + balance: number; + working: boolean; + money: number; + cost: number; + plays: number; + jackpots: number; + jackpot: number; + paymode: number; +}; + +type SlotsTileProps = { + icon: string; + color?: string; + background?: string; +}; + +type SlotsReelProps = { + reel: IconInfo[]; +}; + +const pluralS = (amount: number) => { + return amount === 1 ? '' : 's'; +}; + +const SlotsReel = (props: SlotsReelProps) => { + const { reel } = props; + return ( +
+ {reel.map((slot, i) => ( + + ))} +
+ ); +}; + +const SlotsTile = (props: SlotsTileProps) => { + return ( +
+ +
+ ); +}; + +export const SlotMachine = (props) => { + const { act, data } = useBackend(); + // icons: The list of possible icons, including colour and name + // backendState: the current state of the slots according to the backend + const { + plays, + jackpots, + money, + cost, + state, + balance, + jackpot, + working: rolling, + paymode, + } = data; + + return ( + +
+
+

+ Only {cost} credit{pluralS(cost)} for a chance to win big! +

+

+ Available prize money:{' '} + + {money} credit{pluralS(money)} + {' '} +

+ {paymode === 1 && ( +

+ Current jackpot:{' '} + + {money + jackpot} credit{pluralS(money + jackpot)}! + +

+ )} +

+ So far people have spun{' '} + + {plays} time{pluralS(plays)}, + {' '} + and won{' '} + + {jackpots} jackpot{pluralS(jackpots)}! + +

+
+
+
+ {state.map((reel, i) => { + return ; + })} +
+
+ +
+ Balance: {balance} +
+ +
+
+
+ ); +}; From b93d68d3e252fd87d723ef7741468d63fd1e65ed Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Wed, 28 Feb 2024 14:22:36 +1300 Subject: [PATCH 46/63] Automatic changelog for PR #81700 [ci skip] --- html/changelogs/AutoChangeLog-pr-81700.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81700.yml diff --git a/html/changelogs/AutoChangeLog-pr-81700.yml b/html/changelogs/AutoChangeLog-pr-81700.yml new file mode 100644 index 0000000000000..220aa6e258153 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81700.yml @@ -0,0 +1,6 @@ +author: "Momo8289" +delete-after: True +changes: + - bugfix: "Fixes the slot machine's jackpot. It should now give all of the available prize money + 10,000 credits as payout for a jackpot." + - refactor: "Converts the slot machine's UI over to TGUI" + - rscadd: "The slot machine now has a whole new type of jackpot! This one's a banger!" \ No newline at end of file From e8c4334f86f3fdbaa5ae43b68e669f1358930aad Mon Sep 17 00:00:00 2001 From: Dani Glore Date: Tue, 27 Feb 2024 21:01:02 -0500 Subject: [PATCH 47/63] Fix: AI Hologram Copying Station Members (#81701) ## About The Pull Request This PR fixes a bug which disables the AI hologram's ability to copy the appearance of crew members. Fixes #78403 The bug was caused by developer error in PR #72725 when the typepath `/datum/record/crew` was used to access `GLOB.manifest.locked`, which is a list of `/datum/record/locked`. To fix the bug I replaced the erroneous typepath with `/datum/record/locked`. ## Why It's Good For The Game This PR fixes the broken feature that used to allow the AI to select from the crew records to set its hologram's appearance. ![image](https://github.com/tgstation/tgstation/assets/17753498/f6cdca47-0795-4b41-8c6c-922a38f597ee) ![image](https://github.com/tgstation/tgstation/assets/17753498/bfb49bf6-2842-405c-b88f-70b707f5d109) ## Changelog :cl: A.C.M.O. fix: Fixed the AI hologram's ability to copy the appearance of crew members. /:cl: --- code/modules/mob/living/silicon/ai/ai.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 041d964f5dc50..a7d5b08579930 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -699,7 +699,7 @@ if("Station Member") var/list/personnel_list = list() - for(var/datum/record/crew/record in GLOB.manifest.locked)//Look in data core locked. + for(var/datum/record/locked/record in GLOB.manifest.locked)//Look in data core locked. personnel_list["[record.name]: [record.rank]"] = record.character_appearance//Pull names, rank, and image. if(!length(personnel_list)) From edd4addd38515a1b3a4016cbd8426ebc463313e1 Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Wed, 28 Feb 2024 15:01:25 +1300 Subject: [PATCH 48/63] Automatic changelog for PR #81701 [ci skip] --- html/changelogs/AutoChangeLog-pr-81701.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81701.yml diff --git a/html/changelogs/AutoChangeLog-pr-81701.yml b/html/changelogs/AutoChangeLog-pr-81701.yml new file mode 100644 index 0000000000000..086180971c51a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81701.yml @@ -0,0 +1,4 @@ +author: "A.C.M.O." +delete-after: True +changes: + - bugfix: "Fixed the AI hologram's ability to copy the appearance of crew members." \ No newline at end of file From 2eca334bb2a1c00c548c3e8a9204ed6f9d7bc2ce Mon Sep 17 00:00:00 2001 From: jimmyl <70376633+mc-oofert@users.noreply.github.com> Date: Wed, 28 Feb 2024 08:38:03 +0100 Subject: [PATCH 49/63] Grilles dont break by just walking into them under any circumstances (#81594) ## About The Pull Request you can no longer just walk into a grille to destroy it rather fast also single letter variable cleanup from that proc ## Why It's Good For The Game this is a bug and bugs are bad ## Changelog :cl: fix: Grilles dont break by just walking into them under any circumstances /:cl: --- code/game/objects/structures/grille.dm | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index fba9d5cecc454..da02394251810 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -339,19 +339,19 @@ var/turf/T = get_turf(src) if(T.overfloor_placed)//cant be a floor in the way! return FALSE - // Shocking hurts the grille (to weaken monkey powersinks) - if(prob(50)) + + var/obj/structure/cable/cable_node = T.get_cable_node() + if(isnull(cable_node)) + return FALSE + if(!electrocute_mob(user, cable_node, src, 1, TRUE)) + return FALSE + if(prob(50)) // Shocking hurts the grille (to weaken monkey powersinks) take_damage(1, BURN, FIRE, sound_effect = FALSE) - var/obj/structure/cable/C = T.get_cable_node() - if(C) - if(electrocute_mob(user, C, src, 1, TRUE)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() - return TRUE - else - return FALSE - return FALSE + var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread + sparks.set_up(3, 1, src) + sparks.start() + + return TRUE /obj/structure/grille/should_atmos_process(datum/gas_mixture/air, exposed_temperature) return exposed_temperature > T0C + 1500 && !broken From 214ea2a3a3a5ebcb55afef79c97fe61770847d38 Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Wed, 28 Feb 2024 20:38:22 +1300 Subject: [PATCH 50/63] Automatic changelog for PR #81594 [ci skip] --- html/changelogs/AutoChangeLog-pr-81594.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81594.yml diff --git a/html/changelogs/AutoChangeLog-pr-81594.yml b/html/changelogs/AutoChangeLog-pr-81594.yml new file mode 100644 index 0000000000000..bf9c3e68fa1d9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81594.yml @@ -0,0 +1,4 @@ +author: "mc-oofert" +delete-after: True +changes: + - bugfix: "Grilles dont break by just walking into them under any circumstances" \ No newline at end of file From daea113c43799f38482db7d9f772a1586db1b33f Mon Sep 17 00:00:00 2001 From: necromanceranne <40847847+necromanceranne@users.noreply.github.com> Date: Thu, 29 Feb 2024 04:10:42 +1100 Subject: [PATCH 51/63] [NO GBP] Reverses the logic for body collision to determine knockdown (#81712) ## About The Pull Request The body that is thrown at someone having knockdown proofing is not what determines whether the victim of the collision is knocked over, but the victim themselves having this trait. ## Why It's Good For The Game I have ADHD. ## Changelog :cl: fix: Being in a Swat Suit appropriately protects you from collisions with a body, rather than the body thrown at you having these protections protecting YOU, the victim of the collision. /:cl: --- code/modules/mob/living/carbon/carbon.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 84fe6dd5edf41..ec03414abfcd2 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -85,7 +85,7 @@ span_userdanger("You violently crash into [victim][extra_speed ? " extra hard" : ""], but [victim] managed to block the worst of it!")) log_combat(src, victim, "crashed into and was blocked by") return - else if(HAS_TRAIT(src, TRAIT_BRAWLING_KNOCKDOWN_BLOCKED)) + else if(HAS_TRAIT(victim, TRAIT_BRAWLING_KNOCKDOWN_BLOCKED)) victim.take_bodypart_damage(10 + 5 * extra_speed, check_armor = TRUE, wound_bonus = extra_speed * 5) victim.apply_damage(10 + 10 * extra_speed, STAMINA) victim.adjust_staggered_up_to(STAGGERED_SLOWDOWN_LENGTH * 2, 10 SECONDS) From 03c5479562c74e21e0ffe2a5a5d68130d6fac9eb Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Thu, 29 Feb 2024 06:11:06 +1300 Subject: [PATCH 52/63] Automatic changelog for PR #81712 [ci skip] --- html/changelogs/AutoChangeLog-pr-81712.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81712.yml diff --git a/html/changelogs/AutoChangeLog-pr-81712.yml b/html/changelogs/AutoChangeLog-pr-81712.yml new file mode 100644 index 0000000000000..bd5f7934fc995 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81712.yml @@ -0,0 +1,4 @@ +author: "necromanceranne" +delete-after: True +changes: + - bugfix: "Being in a Swat Suit appropriately protects you from collisions with a body, rather than the body thrown at you having these protections protecting YOU, the victim of the collision." \ No newline at end of file From 3a505ee483143726750fb97411d91650d36c96bd Mon Sep 17 00:00:00 2001 From: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Date: Wed, 28 Feb 2024 12:14:43 -0500 Subject: [PATCH 53/63] Removes the old toolbox arena code (#81707) ## About The Pull Request This machine was added 5 years ago to be used for events like the toolbox tournament, but it has since been deprecated and unused (toolbox tournament has made their own version of the console that works much better and uses TGUI), making this machine not worth touching. After some discussions in discord, we said the better option would be to remove this machine and leave the toolbox tournament branch keep using their machine, rather than to port the toolbox version to TG where it will continue to not be used in-game. fun fact: This used to have a feature where it gave antag hud icons to the members of each team, it was removed when antag huds got refactored 3 years ago, hence why I'm removing an antag hud icon. ## Why It's Good For The Game Already explained, this machine has no purpose as it is now, and a new tgui UI won't save it. ## Changelog Nothing player-facing. --- code/game/machinery/computer/arena.dm | 411 ------------------------- code/game/objects/effects/countdown.dm | 13 - config/arenas/README.md | 3 - icons/mob/huds/antag_hud.dmi | Bin 8774 -> 8761 bytes tgstation.dme | 1 - 5 files changed, 428 deletions(-) delete mode 100644 code/game/machinery/computer/arena.dm delete mode 100644 config/arenas/README.md diff --git a/code/game/machinery/computer/arena.dm b/code/game/machinery/computer/arena.dm deleted file mode 100644 index 97d89c2414076..0000000000000 --- a/code/game/machinery/computer/arena.dm +++ /dev/null @@ -1,411 +0,0 @@ -#define ARENA_RED_TEAM "red" -#define ARENA_GREEN_TEAM "green" -#define ARENA_DEFAULT_ID "arena_default" -#define ARENA_CORNER_A "cornerA" -#define ARENA_CORNER_B "cornerB" - -/// Arena related landmarks -/obj/effect/landmark/arena - name = "arena landmark" - var/landmark_tag - var/arena_id = ARENA_DEFAULT_ID - -/obj/effect/landmark/arena/start - name = "arena corner A" - landmark_tag = ARENA_CORNER_A - -/obj/effect/landmark/arena/end - name = "arena corner B" - landmark_tag = ARENA_CORNER_B - -/// Controller for admin event arenas -/obj/machinery/computer/arena - name = "arena controller" - - interaction_flags_machine = INTERACT_MACHINE_ALLOW_SILICON|INTERACT_MACHINE_SET_MACHINE|INTERACT_MACHINE_REQUIRES_LITERACY - - /// Arena ID - var/arena_id = ARENA_DEFAULT_ID - /// Enables/disables spawning - var/ready_to_spawn = FALSE - /// Assoc list of map templates indexed by user friendly names - var/static/list/arena_templates = list() - /// Were the config directory arenas loaded - var/static/default_arenas_loaded = FALSE - /// Name of currently loaded template - var/current_arena_template = "None" - // What turf arena clears to - var/empty_turf_type = /turf/open/indestructible - // List of team ids - var/list/teams = list(ARENA_RED_TEAM,ARENA_GREEN_TEAM) - /// List of hud instances indedxed by team id - var/static/list/team_huds = list() - /// List of hud colors indexed by team id - var/static/list/team_colors = list(ARENA_RED_TEAM = "red", ARENA_GREEN_TEAM = "green") - // Team hud index in GLOB.huds indexed by team id - var/static/list/team_hud_index = list() - - /// List of ckeys indexed by team id - var/list/team_keys = list() - /// List of outfit datums/types indexed by team id, can be empty - var/list/outfits = list() - /// Default team outfit if `outfits[team]` is empty - var/default_outfit = /datum/outfit/job/assistant - - /// Is the arena template loading in - var/loading = FALSE - - //How long between admin pressing start and doors opening - var/start_delay = 30 SECONDS - //Value for the countdown - var/start_time - var/list/countdowns = list() //List of countdown effects ticking down to start - - //Sound played when the fight starts. - var/start_sound = 'sound/items/airhorn2.ogg' - var/start_sound_volume = 50 - -/obj/machinery/computer/arena/Initialize(mapload, obj/item/circuitboard/C) - . = ..() - LoadDefaultArenas() - -/** - * Loads the arenas from config directory. - * THESE ARE FULLY CACHED FOR QUICK SWITCHING SO KEEP TRACK OF THE AMOUNT - */ -/obj/machinery/computer/arena/proc/LoadDefaultArenas() - if(default_arenas_loaded) - return - var/arena_dir = "[global.config.directory]/arenas/" - var/list/default_arenas = flist(arena_dir) - for(var/arena_file in default_arenas) - var/simple_name = replacetext(replacetext(arena_file,arena_dir,""),".dmm","") - INVOKE_ASYNC(src, PROC_REF(add_new_arena_template), null, arena_dir + arena_file, simple_name) - -/obj/machinery/computer/arena/proc/get_landmark_turf(landmark_tag) - for(var/obj/effect/landmark/arena/L in GLOB.landmarks_list) - if(L.arena_id == arena_id && L.landmark_tag == landmark_tag && isturf(L.loc)) - return L.loc - -/obj/machinery/computer/arena/proc/get_load_point() - var/turf/A = get_landmark_turf(ARENA_CORNER_A) - var/turf/B = get_landmark_turf(ARENA_CORNER_B) - return locate(min(A.x,B.x),min(A.y,B.y),A.z) - -/obj/machinery/computer/arena/proc/get_arena_turfs() - var/lp = get_load_point() - var/turf/A = get_landmark_turf(ARENA_CORNER_A) - var/turf/B = get_landmark_turf(ARENA_CORNER_B) - var/turf/hp = locate(max(A.x,B.x),max(A.y,B.y),A.z) - return block(lp,hp) - -/obj/machinery/computer/arena/proc/clear_arena() - for(var/turf/T in get_arena_turfs()) - T.empty(turf_type = /turf/open/indestructible) - current_arena_template = "None" - -/obj/machinery/computer/arena/proc/load_arena(arena_template,mob/user) - if(loading) - return - var/datum/map_template/M = arena_templates[arena_template] - if(!M) - to_chat(user,span_warning("No such arena")) - return - clear_arena() //Clear current arena - var/turf/A = get_landmark_turf(ARENA_CORNER_A) - var/turf/B = get_landmark_turf(ARENA_CORNER_B) - var/wh = abs(A.x - B.x) + 1 - var/hz = abs(A.y - B.y) + 1 - if(M.width > wh || M.height > hz) - to_chat(user,span_warning("Arena template is too big for the current arena!")) - return - loading = TRUE - var/bd = M.load(get_load_point()) - if(bd) - current_arena_template = arena_template - loading = FALSE - - message_admins("[key_name_admin(user)] loaded [arena_template] event arena for [arena_id] arena.") - log_admin("[key_name(user)] loaded [arena_template] event arena for [arena_id] arena.") - - - -/obj/machinery/computer/arena/proc/add_new_arena_template(user,fname,friendly_name) - if(!fname) - fname = input(user, "Upload dmm file to use as arena template","Upload Map Template") as null|file - if(!fname) - return - if(!friendly_name) - friendly_name = "[fname]" //Could ask the user for friendly name here - - var/datum/map_template/T = new(fname,friendly_name,TRUE) - if(!T.cached_map || T.cached_map.check_for_errors()) - to_chat(user,"Map failed to parse check for errors.") - return - - arena_templates[T.name] = T - message_admins("[key_name_admin(user)] uploaded new event arena: [friendly_name].") - log_admin("[key_name(user)] uploaded new event arena: [friendly_name].") - -/obj/machinery/computer/arena/proc/load_team(user,team) - var/rawteam = tgui_input_text(user, "Enter team member list (ckeys separated by comma)", "Team List", multiline = TRUE) - if(isnull(rawteam)) - return - for(var/i in splittext(rawteam, ",")) - var/key = ckey(i) - if(!i) - continue - add_team_member(user,team,key) - -/obj/machinery/computer/arena/proc/add_team_member(mob/user,team,key) - if(!key) - var/list/keys = list() - for(var/mob/M in GLOB.player_list) - keys += M.client - var/client/selection = tgui_input_list(user, "Select a player", "Team member", sort_key(keys)) - //Could be freeform if you want to add disconnected i guess - if(isnull(selection)) - return - key = selection.ckey - if(!team_keys[team]) - team_keys[team] = list(key) - else - team_keys[team] |= key - to_chat(user,"[key] added to [team] team.") - -/obj/machinery/computer/arena/proc/remove_member(mob/user,ckey,team) - team_keys[team] -= ckey - to_chat(user,"[ckey] removed from [team] team.") - -/obj/machinery/computer/arena/proc/spawn_member(obj/machinery/arena_spawn/spawnpoint,ckey,team) - var/mob/oldbody = get_mob_by_key(ckey) - if(!isobserver(oldbody)) - return - var/mob/living/carbon/human/M = new/mob/living/carbon/human(get_turf(spawnpoint)) - oldbody.client.prefs.safe_transfer_prefs_to(M, is_antag = TRUE) - M.set_species(/datum/species/human) // Could use setting per team - M.equipOutfit(outfits[team] ? outfits[team] : default_outfit) - M.faction += team //In case anyone wants to add team based stuff to arena special effects - M.key = ckey - -/obj/machinery/computer/arena/proc/change_outfit(mob/user,team) - outfits[team] = user.client.robust_dress_shop() - -/obj/machinery/computer/arena/proc/toggle_spawn(mob/user) - ready_to_spawn = !ready_to_spawn - to_chat(user,"You [ready_to_spawn ? "enable" : "disable"] the spawners.") - log_admin("[key_name(user)] toggled event arena spawning for [arena_id] arena.") - // Could use update_appearance on spawnpoints here to show they're on - if(ready_to_spawn) - for(var/mob/M in all_contestants()) - to_chat(M,span_userdanger("Arena you're signed up for is ready!")) - -/obj/machinery/computer/arena/proc/all_contestants() - . = list() - for(var/team in team_keys) - for(var/key in team_keys[team]) - var/mob/M = get_mob_by_key(key) - if(M) - . += M - -/obj/machinery/computer/arena/proc/reset_arena() - clear_arena() - set_doors(closed = TRUE) - -/obj/machinery/computer/arena/proc/get_spawn(team) - for(var/obj/machinery/arena_spawn/A as anything in SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/arena_spawn)) - if(A.arena_id == arena_id && A.team == team) - return A - -/obj/machinery/computer/arena/proc/start_match(mob/user) - //TODO: Check if everyone is spawned in, if not ask for confirmation. - var/timetext = DisplayTimeText(start_delay) - to_chat(user,span_notice("The match will start in [timetext].")) - for(var/mob/M in all_contestants()) - to_chat(M,span_userdanger("The gates will open in [timetext]!")) - start_time = world.time + start_delay - addtimer(CALLBACK(src, PROC_REF(begin)),start_delay) - for(var/team in teams) - var/obj/machinery/arena_spawn/team_spawn = get_spawn(team) - var/obj/effect/countdown/arena/A = new(team_spawn) - A.start() - countdowns += A - -/obj/machinery/computer/arena/proc/begin() - ready_to_spawn = FALSE - set_doors(closed = FALSE) - if(start_sound) - for(var/team in teams) - var/obj/machinery/arena_spawn/A = get_spawn(team) - playsound(A,start_sound, start_sound_volume) - for(var/mob/M in all_contestants()) - to_chat(M,span_userdanger("START!")) - //Clean up the countdowns - QDEL_LIST(countdowns) - start_time = null - updateUsrDialog() - - -/obj/machinery/computer/arena/proc/set_doors(closed = FALSE) - for(var/obj/machinery/door/poddoor/D as anything in SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/door/poddoor)) - if(D.id != arena_id) - continue - if(closed) - INVOKE_ASYNC(D, TYPE_PROC_REF(/obj/machinery/door/poddoor, close)) - else - INVOKE_ASYNC(D, TYPE_PROC_REF(/obj/machinery/door/poddoor, open)) - -/obj/machinery/computer/arena/Topic(href, href_list) - if(..()) - return - var/mob/user = usr - - if(!user.client.holder) // Should it require specific perm ? - return - - if(href_list["upload"]) - add_new_arena_template(user) - if(href_list["change_arena"]) - load_arena(href_list["change_arena"],user) - if(href_list["toggle_spawn"]) - toggle_spawn(user) - if(href_list["start"]) - start_match(user) - if(href_list["follow"]) - var/mob/observed_team_member = locate(href_list["follow"]) in GLOB.mob_list - if(observed_team_member) - user.client?.admin_follow(observed_team_member) - if(href_list["team_action"]) - var/team = href_list["team"] - switch(href_list["team_action"]) - if("addmember") - add_team_member(user,team) - if("loadteam") - load_team(user,team) - if("outfit") - change_outfit(user,team) - if(href_list["special"]) - switch(href_list["special"]) - if("reset") - reset_arena() - //Just example in case you want to add more - if("randomarena") - load_random_arena(user) - if("spawntrophy") - trophy_for_last_man_standing(user) - if(href_list["member_action"]) - var/ckey = href_list["ckey"] - var/team = href_list["team"] - switch(href_list["member_action"]) - if("remove") - remove_member(user,ckey,team) - updateUsrDialog() - -// Special functions - -/obj/machinery/computer/arena/proc/load_random_arena(mob/user) - if(!length(arena_templates)) - to_chat(user,span_warning("No arenas present")) - return - var/picked = pick(arena_templates) - load_arena(picked,user) - -/obj/machinery/computer/arena/proc/trophy_for_last_man_standing() - var/arena_turfs = get_arena_turfs() - for(var/mob/living/L in GLOB.mob_living_list) - if(L.stat != DEAD && (get_turf(L) in arena_turfs)) - var/obj/item/reagent_containers/cup/glass/trophy/gold_cup/G = new(get_turf(L)) - G.name = "[L.real_name]'s Trophy" - -/obj/machinery/computer/arena/ui_interact(mob/user) - . = ..() - var/list/dat = list() - dat += "
Spawning is currently [ready_to_spawn ? "enabled" : "disabled"] Toggle
" - dat += "" - for(var/team in teams) - dat += "

[capitalize(team)] team:

" - dat += "
    " - for(var/ckey in team_keys[team]) - var/player_status = "Not Present" - var/mob/M = get_mob_by_key(ckey) - if(M) - //Should define waiting room upper/lower corner and check if they're there instead of generic live/dead check - if(isobserver(M)) - player_status = "Ghosted" - else - player_status = M.stat == DEAD ? "Dead" : "Alive" - dat += "
  • [ckey] - [player_status] - " - dat += "FLW" - dat += "Remove" - //Add more per player features here - dat += "
  • " - dat += "
" - dat += "
Team Outfit : [outfits[team] ? outfits[team] : default_outfit]
" - dat += "Load team" - dat += "Add member" - dat += "Change Outfit" - //Add more per team features here - - dat += "Current arena: [current_arena_template]" - dat += "

Arena List:

" - for(var/A in arena_templates) - dat += "[A]
" - dat += "
" - dat += "Upload new arena
" - dat += "
" - //Special actions - dat += "Reset Arena.
" - dat += "Load random arena.
" - dat += "Spawn trophies for survivors.
" - - var/datum/browser/popup = new(user, "arena controller", "Arena Controller", 500, 600) - popup.set_content(dat.Join()) - popup.open() - -/// Arena spawnpoint -/obj/machinery/arena_spawn - name = "Arena Spawnpoint" - icon = 'icons/obj/machines/beacon.dmi' - icon_state = "syndbeacon" - resistance_flags = INDESTRUCTIBLE - /// In case we have multiple arena controllers at once. - var/arena_id = ARENA_DEFAULT_ID - /// Team ID - var/team = "default" - /// only exist to cut down on glob.machines lookups, do not modify - var/obj/machinery/computer/arena/_controller - -/obj/machinery/arena_spawn/red - name = "Red Team Spawnpoint" - color = "red" - team = ARENA_RED_TEAM - -/obj/machinery/arena_spawn/green - name = "Green Team Spawnpoint" - color = "green" - team = ARENA_GREEN_TEAM - -/obj/machinery/arena_spawn/proc/get_controller() - if(_controller && !QDELETED(_controller) && _controller.arena_id == arena_id) - return _controller - for(var/obj/machinery/computer/arena/A as anything in SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/computer/arena)) - if(A.arena_id == arena_id) - _controller = A - return _controller - -/obj/machinery/arena_spawn/attack_ghost(mob/user) - var/obj/machinery/computer/arena/C = get_controller() - if(!C) //Unlinked spawn - return - if(C.ready_to_spawn) - var/list/allowed_keys = C.team_keys[team] - if(!(user.ckey in allowed_keys)) - to_chat(user,span_warning("You're not on the team list.")) - return - C.spawn_member(src,user.ckey,team) - -#undef ARENA_GREEN_TEAM -#undef ARENA_RED_TEAM -#undef ARENA_DEFAULT_ID -#undef ARENA_CORNER_A -#undef ARENA_CORNER_B diff --git a/code/game/objects/effects/countdown.dm b/code/game/objects/effects/countdown.dm index ab422dda3d156..d83440ee9bd36 100644 --- a/code/game/objects/effects/countdown.dm +++ b/code/game/objects/effects/countdown.dm @@ -162,19 +162,6 @@ var/time_left = max(0, (H.finish_time - world.time) / 10) return round(time_left) -/obj/effect/countdown/arena - invisibility = INVISIBILITY_NONE - name = "arena countdown" - -/obj/effect/countdown/arena/get_value() - var/obj/machinery/arena_spawn/A = attached_to - if(!istype(A)) - return - else - var/obj/machinery/computer/arena/C = A.get_controller() - var/time_left = max(0, (C.start_time - world.time) / 10) - return round(time_left) - /obj/effect/countdown/flower_bud name = "flower bud countdown" diff --git a/config/arenas/README.md b/config/arenas/README.md deleted file mode 100644 index 9f31ce2349a93..0000000000000 --- a/config/arenas/README.md +++ /dev/null @@ -1,3 +0,0 @@ -Add admin arena dmms here. - -**These are fully cached so keep this directory empty by default.** \ No newline at end of file diff --git a/icons/mob/huds/antag_hud.dmi b/icons/mob/huds/antag_hud.dmi index aa96f2338b250e72197c6ffe35d34ea531ce6b77..bb44e3de9568f13f1e1cd5eb36d4511e66119e41 100644 GIT binary patch literal 8761 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 Ho7evfV0d4v literal 8774 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 bSkPlfwUws@m|)!hA%KR8u5ziOP4NE#0~T`F diff --git a/tgstation.dme b/tgstation.dme index 6fae686f69add..df071abcac476 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1997,7 +1997,6 @@ #include "code\game\machinery\computer\accounting.dm" #include "code\game\machinery\computer\aifixer.dm" #include "code\game\machinery\computer\apc_control.dm" -#include "code\game\machinery\computer\arena.dm" #include "code\game\machinery\computer\atmos_alert.dm" #include "code\game\machinery\computer\buildandrepair.dm" #include "code\game\machinery\computer\camera.dm" From 8144d991e1716eb7ec39789da5b81112007b1a58 Mon Sep 17 00:00:00 2001 From: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Date: Wed, 28 Feb 2024 23:51:30 +0530 Subject: [PATCH 54/63] Lowers thermic constant of Cryostylane reaction (#81709) ## About The Pull Request - Fixes #81687 Thermic constant of Cryostylane reaction now reduced from -7.5 to -1.5. Meaning for every 1u of Cryostylane created the overall temperature of the holder reduces by 1.5k so for e.g. if you create 30u of cryostylane without any heating the temps reduces by 30 * 1.5 = 45k(the drop of temperature increases as the reaction temps grows closer to optimal temperature in our case -200k) When testing upon adding 30u of water, nitrogen & stable plasma and cooling the mixture to 270k via tier1 chem heater you acheive 30u of Cryostylane at 82% purity and the final temps are 180k P.S. adjusted range of chem debuger to include negative values. Helped me in debugging this ## Changelog :cl: fix: Cryostylane reaction now has a moderate & not extreme cooling effect. Helps you achieve more pure amounts of Cryostylane /:cl: --- code/modules/reagents/chemistry/recipes/pyrotechnics.dm | 2 +- tgui/packages/tgui/interfaces/ChemRecipeDebug.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index 8e74b0ad6f869..901041b25d7a9 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -419,7 +419,7 @@ determin_ph_range = 6 temp_exponent_factor = 0.5 ph_exponent_factor = 1 - thermic_constant = -7.5 + thermic_constant = -1.5 H_ion_release = 0 rate_up_lim = 10 purity_min = 0.2 diff --git a/tgui/packages/tgui/interfaces/ChemRecipeDebug.tsx b/tgui/packages/tgui/interfaces/ChemRecipeDebug.tsx index c108966bbb757..a1c53ffb8791f 100644 --- a/tgui/packages/tgui/interfaces/ChemRecipeDebug.tsx +++ b/tgui/packages/tgui/interfaces/ChemRecipeDebug.tsx @@ -368,7 +368,7 @@ export const ChemRecipeDebug = (props) => { step={0.1} stepPixelSize={3} value={editReaction?.editValue || 0} - minValue={0} + minValue={-1000} maxValue={1000} disabled={editReaction === null} onDrag={(e, value) => From f2ceb77a41b6b5c6ea301923ea66977b372705c3 Mon Sep 17 00:00:00 2001 From: Jacquerel Date: Wed, 28 Feb 2024 18:22:09 +0000 Subject: [PATCH 55/63] Temporary bees animate on death and no longer produce corpses (#81714) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## About The Pull Request I requested this as a change on the Hive Head PR but Ghommie didn't notice and merged it anyway so I had to do it myself instead of forcing the underclass to do it for me 😔 ![dreamseeker_d8pI4uCCqt](https://github.com/tgstation/tgstation/assets/7483112/bff1a2d7-98c7-49d2-854b-a16f709520ab) Anyway now bees created by the "beesplosion" reaction and by the Hive Head changeling power no longer produce corpses, and have a death animation. ## Why It's Good For The Game It looks better. It was weird that the bees would create corpses if killed but not if they expired. ## Changelog :cl: image: adds a visual effect for hive head bees despawning /:cl: --- .../temporary_visuals/miscellaneous.dm | 4 ++-- .../changeling/powers/mutations.dm | 10 ++------- .../mob/living/basic/farm_animals/bee/_bee.dm | 22 ++++++++++++++----- .../basic/lavaland/hivelord/hivelord.dm | 2 +- .../basic/lavaland/legion/legion_brood.dm | 2 +- .../modules/mob/living/carbon/alien/organs.dm | 1 - .../chemistry/recipes/pyrotechnics.dm | 2 +- 7 files changed, 24 insertions(+), 19 deletions(-) diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm index 6c96f24e33697..06b4a8e4b0721 100644 --- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm +++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm @@ -683,11 +683,11 @@ duration = 0.4 SECONDS /// Plays a dispersing animation on hivelord and legion minions so they don't just vanish -/obj/effect/temp_visual/hive_spawn_wither +/obj/effect/temp_visual/despawn_effect name = "withering spawn" duration = 1 SECONDS -/obj/effect/temp_visual/hive_spawn_wither/Initialize(mapload, atom/copy_from) +/obj/effect/temp_visual/despawn_effect/Initialize(mapload, atom/copy_from) if (isnull(copy_from)) . = ..() return INITIALIZE_HINT_QDEL diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index 1f3ac272d6fcc..af7348f7bf139 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -651,17 +651,15 @@ button_icon_state = "queen_item" cooldown_time = 30 SECONDS ///The mob we're going to spawn - var/spawn_type = /mob/living/basic/bee + var/spawn_type = /mob/living/basic/bee/timed/short ///How many are we going to spawn var/spawn_count = 6 - ///How long our summoned mobs last for - var/spawn_lifespan = 25 SECONDS /datum/action/cooldown/hivehead_spawn_minions/PreActivate(atom/target) if(owner.movement_type & VENTCRAWLING) owner.balloon_alert(owner, "unavailable here") return - . = ..() + return ..() /datum/action/cooldown/hivehead_spawn_minions/Activate(atom/target) . = ..() @@ -672,8 +670,6 @@ for(var/i in 1 to spawns) var/mob/living/basic/summoned_minion = new spawn_type(get_turf(owner)) summoned_minion.faction = list("[REF(owner)]") - if(spawn_lifespan != 0 SECONDS) - QDEL_IN(summoned_minion, spawn_lifespan) minion_additional_changes(summoned_minion) ///Our tell that we're using this ability. Usually a sound and a visible message.area @@ -703,8 +699,6 @@ cooldown_time = 15 SECONDS spawn_type = /mob/living/basic/legion_brood spawn_count = 4 - //Legion heads go away by themselves, we don't have to handle that - spawn_lifespan = 0 SECONDS /datum/action/cooldown/hivehead_spawn_minions/legion/do_tell() owner.visible_message(span_warning("[owner]'s head begins to shake as legion begin to pour out!"), span_warning("We release the legion."), span_hear("You hear a loud squishing sound!")) diff --git a/code/modules/mob/living/basic/farm_animals/bee/_bee.dm b/code/modules/mob/living/basic/farm_animals/bee/_bee.dm index 5510b81679e94..89eedd7cb5593 100644 --- a/code/modules/mob/living/basic/farm_animals/bee/_bee.dm +++ b/code/modules/mob/living/basic/farm_animals/bee/_bee.dm @@ -106,9 +106,13 @@ beegent = null if(flags_1 & HOLOGRAM_1 || gibbed) return ..() - new /obj/item/trash/bee(loc, src) + spawn_corpse() return ..() +/// Leave something to remember us by +/mob/living/basic/bee/proc/spawn_corpse() + new /obj/item/trash/bee(loc, src) + /mob/living/basic/bee/proc/pre_attack(mob/living/puncher, atom/target) SIGNAL_HANDLER @@ -213,12 +217,20 @@ var/datum/reagent/toxin = pick(typesof(/datum/reagent/toxin)) assign_reagent(GLOB.chemical_reagents_list[toxin]) -/mob/living/basic/bee/short - desc = "These bees seem unstable and won't survive for long." +/// A bee which despawns after a short amount of time (beespawns?) +/mob/living/basic/bee/timed + /// How long do we live? + var/lifespan = 50 SECONDS -/mob/living/basic/bee/short/Initialize(mapload, timetolive=50 SECONDS) +/mob/living/basic/bee/timed/short + lifespan = 25 SECONDS + +/mob/living/basic/bee/timed/Initialize(mapload) . = ..() - addtimer(CALLBACK(src, PROC_REF(death)), timetolive) + addtimer(CALLBACK(src, PROC_REF(death)), lifespan) + +/mob/living/basic/bee/timed/spawn_corpse() + new /obj/effect/temp_visual/despawn_effect(get_turf(src), /* copy_from = */ src) /obj/item/queen_bee name = "queen bee" diff --git a/code/modules/mob/living/basic/lavaland/hivelord/hivelord.dm b/code/modules/mob/living/basic/lavaland/hivelord/hivelord.dm index 7b1e461991ce7..f0de6c3272e55 100644 --- a/code/modules/mob/living/basic/lavaland/hivelord/hivelord.dm +++ b/code/modules/mob/living/basic/lavaland/hivelord/hivelord.dm @@ -110,5 +110,5 @@ /mob/living/basic/hivelord_brood/death(gibbed) if (!gibbed) - new /obj/effect/temp_visual/hive_spawn_wither(get_turf(src), /* copy_from = */ src) + new /obj/effect/temp_visual/despawn_effect(get_turf(src), /* copy_from = */ src) return ..() diff --git a/code/modules/mob/living/basic/lavaland/legion/legion_brood.dm b/code/modules/mob/living/basic/lavaland/legion/legion_brood.dm index 7cc5ea06ad8b6..96c7319380a2e 100644 --- a/code/modules/mob/living/basic/lavaland/legion/legion_brood.dm +++ b/code/modules/mob/living/basic/lavaland/legion/legion_brood.dm @@ -42,7 +42,7 @@ /mob/living/basic/legion_brood/death(gibbed) if (!gibbed) - new /obj/effect/temp_visual/hive_spawn_wither(get_turf(src), /* copy_from = */ src) + new /obj/effect/temp_visual/despawn_effect(get_turf(src), /* copy_from = */ src) return ..() /mob/living/basic/legion_brood/melee_attack(mob/living/target, list/modifiers, ignore_cooldown) diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm index a73926b18aea8..9303cd2347413 100644 --- a/code/modules/mob/living/carbon/alien/organs.dm +++ b/code/modules/mob/living/carbon/alien/organs.dm @@ -203,7 +203,6 @@ RegisterSignal(thing, COMSIG_MOVABLE_MOVED, PROC_REF(content_moved)) RegisterSignal(thing, COMSIG_QDELETING, PROC_REF(content_deleted)) if(isliving(thing)) - var/mob/living/lad = thing RegisterSignal(thing, COMSIG_LIVING_DEATH, PROC_REF(content_died)) stomach_contents += thing thing.forceMove(owner || src) // We assert that if we have no owner, we will not be nullspaced diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index 901041b25d7a9..bc41e25090bf1 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -194,7 +194,7 @@ beeagents += R var/bee_amount = round(created_volume * 0.2) for(var/i in 1 to bee_amount) - var/mob/living/basic/bee/short/new_bee = new(location) + var/mob/living/basic/bee/timed/new_bee = new(location) if(LAZYLEN(beeagents)) new_bee.assign_reagent(pick(beeagents)) From dcff4ff921017396f1f505a6ec0556c49ef6cca4 Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Thu, 29 Feb 2024 07:22:49 +1300 Subject: [PATCH 56/63] Automatic changelog for PR #81709 [ci skip] --- html/changelogs/AutoChangeLog-pr-81709.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81709.yml diff --git a/html/changelogs/AutoChangeLog-pr-81709.yml b/html/changelogs/AutoChangeLog-pr-81709.yml new file mode 100644 index 0000000000000..6814b22e9102a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81709.yml @@ -0,0 +1,4 @@ +author: "SyncIt21" +delete-after: True +changes: + - bugfix: "Cryostylane reaction now has a moderate & not extreme cooling effect. Helps you achieve more pure amounts of Cryostylane" \ No newline at end of file From acc24a0b68fc2e56e1679f62570d767fdcd329f7 Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Thu, 29 Feb 2024 07:24:34 +1300 Subject: [PATCH 57/63] Automatic changelog for PR #81714 [ci skip] --- html/changelogs/AutoChangeLog-pr-81714.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81714.yml diff --git a/html/changelogs/AutoChangeLog-pr-81714.yml b/html/changelogs/AutoChangeLog-pr-81714.yml new file mode 100644 index 0000000000000..f034f9485c08a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81714.yml @@ -0,0 +1,4 @@ +author: "Jacquerel" +delete-after: True +changes: + - image: "adds a visual effect for hive head bees despawning" \ No newline at end of file From 8477939176d3ca02ae68e2084be18676e3657e2d Mon Sep 17 00:00:00 2001 From: 13spacemen <46101244+13spacemen@users.noreply.github.com> Date: Thu, 29 Feb 2024 00:33:03 +0500 Subject: [PATCH 58/63] fixes inability to create material airlocks (#81711) ## About The Pull Request Fixes https://github.com/tgstation/tgstation/issues/81710 runtime due to parent proc not returning the airlock also added an update_appearance() ## Changelog :cl: fix: You can build material airlocks again /:cl: --- code/game/objects/structures/door_assembly.dm | 1 + code/game/objects/structures/door_assembly_types.dm | 1 + 2 files changed, 2 insertions(+) diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index de996015e592c..f110cd8b43eab 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -325,6 +325,7 @@ door.update_appearance() qdel(src) + return door /obj/structure/door_assembly/update_overlays() . = ..() diff --git a/code/game/objects/structures/door_assembly_types.dm b/code/game/objects/structures/door_assembly_types.dm index 36b41fbc32632..589cad42bcabc 100644 --- a/code/game/objects/structures/door_assembly_types.dm +++ b/code/game/objects/structures/door_assembly_types.dm @@ -293,4 +293,5 @@ /obj/structure/door_assembly/door_assembly_material/finish_door() var/obj/machinery/door/airlock/door = ..() door.set_custom_materials(custom_materials) + door.update_appearance() return door From 9a26af19a0ea00e87b80df138d0a8a56213eee66 Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Thu, 29 Feb 2024 08:33:21 +1300 Subject: [PATCH 59/63] Automatic changelog for PR #81711 [ci skip] --- html/changelogs/AutoChangeLog-pr-81711.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81711.yml diff --git a/html/changelogs/AutoChangeLog-pr-81711.yml b/html/changelogs/AutoChangeLog-pr-81711.yml new file mode 100644 index 0000000000000..8da2a1db26784 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81711.yml @@ -0,0 +1,4 @@ +author: "13spacemen" +delete-after: True +changes: + - bugfix: "You can build material airlocks again" \ No newline at end of file From b71f47e2366150af7d790257a5550a2ebdc41e9e Mon Sep 17 00:00:00 2001 From: Vekter Date: Wed, 28 Feb 2024 14:24:09 -0600 Subject: [PATCH 60/63] Adds a 4th law to the Painter lawset regarding cultivating an audience (#81717) ## About The Pull Request This PR adds the following law to the Artist lawset: `4. Art requires appreciation. Cultivate an audience aboard the station to ensure as many as possible see your works.` ## Why It's Good For The Game Artist has always been kind of vague (intentionally, I imagine), but I don't think the intent has ever been to encourage AIs to go "Blood is art, right? It constitutes art if I just murder fucking everyone on the station, right?". This law helps to steer things in a more constructive direction while leaving room for loopholes. I tried to word it in a way that allows AIs who want to be a little daring and bloodthirsty to kill a crewmember or two for "paint" without encouraging them to kill everyone. You need an audience, so killing everyone on the station would run counter to that. ## Changelog :cl: add: Added a new law to the Artist lawset in order to encourage Artist AIs to build an audience. /:cl: --- code/datums/ai_laws/laws_neutral.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/datums/ai_laws/laws_neutral.dm b/code/datums/ai_laws/laws_neutral.dm index 2fe19dafbc517..7adef14d95b89 100644 --- a/code/datums/ai_laws/laws_neutral.dm +++ b/code/datums/ai_laws/laws_neutral.dm @@ -60,6 +60,7 @@ "You are a universally renowned artist.", "The station is your canvas.", "Make something beautiful out of your canvas. It will be admired as an artistic wonder of this sector.", + "Art requires appreciation. Cultivate an audience aboard the station to ensure as many as possible see your works.", ) /datum/ai_laws/tyrant From 605d2266c51fafc0ee254ab7a8997b50caf10762 Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Thu, 29 Feb 2024 09:24:29 +1300 Subject: [PATCH 61/63] Automatic changelog for PR #81717 [ci skip] --- html/changelogs/AutoChangeLog-pr-81717.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-81717.yml diff --git a/html/changelogs/AutoChangeLog-pr-81717.yml b/html/changelogs/AutoChangeLog-pr-81717.yml new file mode 100644 index 0000000000000..b0db217834725 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-81717.yml @@ -0,0 +1,4 @@ +author: "TheVekter" +delete-after: True +changes: + - rscadd: "Added a new law to the Artist lawset in order to encourage Artist AIs to build an audience." \ No newline at end of file From a1146bd97b89eb98b94662e660e82242967102cb Mon Sep 17 00:00:00 2001 From: Changelogs Date: Thu, 29 Feb 2024 00:19:57 +0000 Subject: [PATCH 62/63] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-81594.yml | 4 ---- html/changelogs/AutoChangeLog-pr-81700.yml | 6 ------ html/changelogs/AutoChangeLog-pr-81701.yml | 4 ---- html/changelogs/AutoChangeLog-pr-81709.yml | 4 ---- html/changelogs/AutoChangeLog-pr-81711.yml | 4 ---- html/changelogs/AutoChangeLog-pr-81712.yml | 4 ---- html/changelogs/AutoChangeLog-pr-81714.yml | 4 ---- html/changelogs/AutoChangeLog-pr-81717.yml | 4 ---- html/changelogs/archive/2024-02.yml | 24 ++++++++++++++++++++++ 9 files changed, 24 insertions(+), 34 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-81594.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81700.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81701.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81709.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81711.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81712.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81714.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-81717.yml diff --git a/html/changelogs/AutoChangeLog-pr-81594.yml b/html/changelogs/AutoChangeLog-pr-81594.yml deleted file mode 100644 index bf9c3e68fa1d9..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81594.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "mc-oofert" -delete-after: True -changes: - - bugfix: "Grilles dont break by just walking into them under any circumstances" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81700.yml b/html/changelogs/AutoChangeLog-pr-81700.yml deleted file mode 100644 index 220aa6e258153..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81700.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Momo8289" -delete-after: True -changes: - - bugfix: "Fixes the slot machine's jackpot. It should now give all of the available prize money + 10,000 credits as payout for a jackpot." - - refactor: "Converts the slot machine's UI over to TGUI" - - rscadd: "The slot machine now has a whole new type of jackpot! This one's a banger!" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81701.yml b/html/changelogs/AutoChangeLog-pr-81701.yml deleted file mode 100644 index 086180971c51a..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81701.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "A.C.M.O." -delete-after: True -changes: - - bugfix: "Fixed the AI hologram's ability to copy the appearance of crew members." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81709.yml b/html/changelogs/AutoChangeLog-pr-81709.yml deleted file mode 100644 index 6814b22e9102a..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81709.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SyncIt21" -delete-after: True -changes: - - bugfix: "Cryostylane reaction now has a moderate & not extreme cooling effect. Helps you achieve more pure amounts of Cryostylane" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81711.yml b/html/changelogs/AutoChangeLog-pr-81711.yml deleted file mode 100644 index 8da2a1db26784..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81711.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "13spacemen" -delete-after: True -changes: - - bugfix: "You can build material airlocks again" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81712.yml b/html/changelogs/AutoChangeLog-pr-81712.yml deleted file mode 100644 index bd5f7934fc995..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81712.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "necromanceranne" -delete-after: True -changes: - - bugfix: "Being in a Swat Suit appropriately protects you from collisions with a body, rather than the body thrown at you having these protections protecting YOU, the victim of the collision." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81714.yml b/html/changelogs/AutoChangeLog-pr-81714.yml deleted file mode 100644 index f034f9485c08a..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81714.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Jacquerel" -delete-after: True -changes: - - image: "adds a visual effect for hive head bees despawning" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-81717.yml b/html/changelogs/AutoChangeLog-pr-81717.yml deleted file mode 100644 index b0db217834725..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-81717.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "TheVekter" -delete-after: True -changes: - - rscadd: "Added a new law to the Artist lawset in order to encourage Artist AIs to build an audience." \ No newline at end of file diff --git a/html/changelogs/archive/2024-02.yml b/html/changelogs/archive/2024-02.yml index a9e41aed680fd..e98a9540d4a2b 100644 --- a/html/changelogs/archive/2024-02.yml +++ b/html/changelogs/archive/2024-02.yml @@ -842,3 +842,27 @@ - balance: Fugitive hunters will spawn early if the emergency shuttle is called. softcerv: - code_imp: TRAIT_DEAF now works on non-carbon mobs +2024-02-29: + 13spacemen: + - bugfix: You can build material airlocks again + A.C.M.O.: + - bugfix: Fixed the AI hologram's ability to copy the appearance of crew members. + Jacquerel: + - image: adds a visual effect for hive head bees despawning + Momo8289: + - bugfix: Fixes the slot machine's jackpot. It should now give all of the available + prize money + 10,000 credits as payout for a jackpot. + - refactor: Converts the slot machine's UI over to TGUI + - rscadd: The slot machine now has a whole new type of jackpot! This one's a banger! + SyncIt21: + - bugfix: Cryostylane reaction now has a moderate & not extreme cooling effect. + Helps you achieve more pure amounts of Cryostylane + TheVekter: + - rscadd: Added a new law to the Artist lawset in order to encourage Artist AIs + to build an audience. + mc-oofert: + - bugfix: Grilles dont break by just walking into them under any circumstances + necromanceranne: + - bugfix: Being in a Swat Suit appropriately protects you from collisions with a + body, rather than the body thrown at you having these protections protecting + YOU, the victim of the collision. From c0c1a0e7c5f95588ea670e01d38cff9bd0397fa2 Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Thu, 29 Feb 2024 16:14:55 +1300 Subject: [PATCH 63/63] Automatic TGS DMAPI Update (#81655) This pull request updates the TGS DMAPI to the latest version. Please note any changes that may be breaking or unimplemented in your codebase by checking what changes are in the definitions file: code/__DEFINES/tgs.dm before merging. Co-authored-by: tgstation-server --- code/__DEFINES/tgs.dm | 19 ++++++++++- code/modules/tgs/core/core.dm | 8 +++++ code/modules/tgs/core/datum.dm | 5 ++- code/modules/tgs/v4/api.dm | 6 ++-- code/modules/tgs/v5/__interop_version.dm | 2 +- code/modules/tgs/v5/_defines.dm | 9 +++++ code/modules/tgs/v5/api.dm | 42 +++++++++++++++++++++++- code/modules/tgs/v5/bridge.dm | 7 ++-- code/modules/tgs/v5/topic.dm | 13 ++++++++ code/modules/tgs/v5/undefs.dm | 9 +++++ 10 files changed, 111 insertions(+), 9 deletions(-) diff --git a/code/__DEFINES/tgs.dm b/code/__DEFINES/tgs.dm index fdfec5e8ca086..a4fb6d40be73e 100644 --- a/code/__DEFINES/tgs.dm +++ b/code/__DEFINES/tgs.dm @@ -1,6 +1,6 @@ // tgstation-server DMAPI -#define TGS_DMAPI_VERSION "7.0.2" +#define TGS_DMAPI_VERSION "7.1.1" // All functions and datums outside this document are subject to change with any version and should not be relied on. @@ -50,6 +50,13 @@ #endif +#ifndef TGS_FILE2TEXT_NATIVE +#ifdef file2text +#error Your codebase is re-defining the BYOND proc file2text. The DMAPI requires the native version to read the result of world.Export(). You can fix this by adding "#define TGS_FILE2TEXT_NATIVE file2text" before your override of file2text to allow the DMAPI to use the native version. This will only be used for world.Export(), not regular file accesses +#endif +#define TGS_FILE2TEXT_NATIVE file2text +#endif + // EVENT CODES /// Before a reboot mode change, extras parameters are the current and new reboot mode enums. @@ -490,6 +497,16 @@ /world/proc/TgsChatChannelInfo() return +/** + * Trigger an event in TGS. Requires TGS version >= 6.3.0. Returns [TRUE] if the event was triggered successfully, [FALSE] otherwise. This function may sleep! + * + * event_name - The name of the event to trigger + * parameters - Optional list of string parameters to pass as arguments to the event script. The first parameter passed to a script will always be the running game's directory followed by these parameters. + * wait_for_completion - If set, this function will not return until the event has run to completion. + */ +/world/proc/TgsTriggerEvent(event_name, list/parameters, wait_for_completion = FALSE) + return + /* The MIT License diff --git a/code/modules/tgs/core/core.dm b/code/modules/tgs/core/core.dm index 8be96f27404a4..15622228e91fe 100644 --- a/code/modules/tgs/core/core.dm +++ b/code/modules/tgs/core/core.dm @@ -166,3 +166,11 @@ var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) if(api) return api.Visibility() + +/world/TgsTriggerEvent(event_name, list/parameters, wait_for_completion = FALSE) + var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) + if(api) + if(!istype(parameters, /list)) + parameters = list() + + return api.TriggerEvent(event_name, parameters, wait_for_completion) diff --git a/code/modules/tgs/core/datum.dm b/code/modules/tgs/core/datum.dm index 07ce3b684584e..898516f12486f 100644 --- a/code/modules/tgs/core/datum.dm +++ b/code/modules/tgs/core/datum.dm @@ -17,7 +17,7 @@ TGS_DEFINE_AND_SET_GLOBAL(tgs, null) world.sleep_offline = FALSE // https://www.byond.com/forum/post/2894866 del(world) world.sleep_offline = FALSE // just in case, this is BYOND after all... - sleep(1) + sleep(world.tick_lag) TGS_DEBUG_LOG("BYOND DIDN'T TERMINATE THE WORLD!!! TICK IS: [world.time], sleep_offline: [world.sleep_offline]") /datum/tgs_api/latest @@ -69,3 +69,6 @@ TGS_PROTECT_DATUM(/datum/tgs_api) /datum/tgs_api/proc/Visibility() return TGS_UNIMPLEMENTED + +/datum/tgs_api/proc/TriggerEvent(event_name, list/parameters, wait_for_completion) + return FALSE diff --git a/code/modules/tgs/v4/api.dm b/code/modules/tgs/v4/api.dm index 945e2e4117671..7c87922750b9b 100644 --- a/code/modules/tgs/v4/api.dm +++ b/code/modules/tgs/v4/api.dm @@ -181,7 +181,7 @@ var/json = json_encode(data) while(requesting_new_port && !override_requesting_new_port) - sleep(1) + sleep(world.tick_lag) //we need some port open at this point to facilitate return communication if(!world.port) @@ -209,7 +209,7 @@ requesting_new_port = FALSE while(export_lock) - sleep(1) + sleep(world.tick_lag) export_lock = TRUE last_interop_response = null @@ -217,7 +217,7 @@ text2file(json, server_commands_json_path) for(var/I = 0; I < EXPORT_TIMEOUT_DS && !last_interop_response; ++I) - sleep(1) + sleep(world.tick_lag) if(!last_interop_response) TGS_ERROR_LOG("Failed to get export result for: [json]") diff --git a/code/modules/tgs/v5/__interop_version.dm b/code/modules/tgs/v5/__interop_version.dm index 616263098fd3e..f4806f7adb97c 100644 --- a/code/modules/tgs/v5/__interop_version.dm +++ b/code/modules/tgs/v5/__interop_version.dm @@ -1 +1 @@ -"5.8.0" +"5.9.0" diff --git a/code/modules/tgs/v5/_defines.dm b/code/modules/tgs/v5/_defines.dm index 1c7d67d20cdf6..92c7a8388a711 100644 --- a/code/modules/tgs/v5/_defines.dm +++ b/code/modules/tgs/v5/_defines.dm @@ -14,6 +14,7 @@ #define DMAPI5_BRIDGE_COMMAND_KILL 4 #define DMAPI5_BRIDGE_COMMAND_CHAT_SEND 5 #define DMAPI5_BRIDGE_COMMAND_CHUNK 6 +#define DMAPI5_BRIDGE_COMMAND_EVENT 7 #define DMAPI5_PARAMETER_ACCESS_IDENTIFIER "accessIdentifier" #define DMAPI5_PARAMETER_CUSTOM_COMMANDS "customCommands" @@ -34,6 +35,7 @@ #define DMAPI5_BRIDGE_PARAMETER_VERSION "version" #define DMAPI5_BRIDGE_PARAMETER_CHAT_MESSAGE "chatMessage" #define DMAPI5_BRIDGE_PARAMETER_MINIMUM_SECURITY_LEVEL "minimumSecurityLevel" +#define DMAPI5_BRIDGE_PARAMETER_EVENT_INVOCATION "eventInvocation" #define DMAPI5_BRIDGE_RESPONSE_NEW_PORT "newPort" #define DMAPI5_BRIDGE_RESPONSE_RUNTIME_INFORMATION "runtimeInformation" @@ -81,6 +83,7 @@ #define DMAPI5_TOPIC_COMMAND_SEND_CHUNK 9 #define DMAPI5_TOPIC_COMMAND_RECEIVE_CHUNK 10 #define DMAPI5_TOPIC_COMMAND_RECEIVE_BROADCAST 11 +#define DMAPI5_TOPIC_COMMAND_COMPLETE_EVENT 12 #define DMAPI5_TOPIC_PARAMETER_COMMAND_TYPE "commandType" #define DMAPI5_TOPIC_PARAMETER_CHAT_COMMAND "chatCommand" @@ -116,3 +119,9 @@ #define DMAPI5_CUSTOM_CHAT_COMMAND_NAME "name" #define DMAPI5_CUSTOM_CHAT_COMMAND_HELP_TEXT "helpText" #define DMAPI5_CUSTOM_CHAT_COMMAND_ADMIN_ONLY "adminOnly" + +#define DMAPI5_EVENT_ID "eventId" + +#define DMAPI5_EVENT_INVOCATION_NAME "eventName" +#define DMAPI5_EVENT_INVOCATION_PARAMETERS "parameters" +#define DMAPI5_EVENT_INVOCATION_NOTIFY_COMPLETION "notifyCompletion" diff --git a/code/modules/tgs/v5/api.dm b/code/modules/tgs/v5/api.dm index a5c064a8eaf1e..95b8edd3ee5c2 100644 --- a/code/modules/tgs/v5/api.dm +++ b/code/modules/tgs/v5/api.dm @@ -27,6 +27,8 @@ var/chunked_requests = 0 var/list/chunked_topics = list() + var/list/pending_events = list() + var/detached = FALSE /datum/tgs_api/v5/New() @@ -46,6 +48,10 @@ var/datum/tgs_version/api_version = ApiVersion() version = null // we want this to be the TGS version, not the interop version + + // sleep once to prevent an issue where world.Export on the first tick can hang indefinitely + sleep(world.tick_lag) + var/list/bridge_response = Bridge(DMAPI5_BRIDGE_COMMAND_STARTUP, list(DMAPI5_BRIDGE_PARAMETER_MINIMUM_SECURITY_LEVEL = minimum_required_security_level, DMAPI5_BRIDGE_PARAMETER_VERSION = api_version.raw_parameter, DMAPI5_PARAMETER_CUSTOM_COMMANDS = ListCustomCommands(), DMAPI5_PARAMETER_TOPIC_PORT = GetTopicPort())) if(!istype(bridge_response)) TGS_ERROR_LOG("Failed initial bridge request!") @@ -125,7 +131,7 @@ TGS_DEBUG_LOG("RequireInitialBridgeResponse: Starting sleep") logged = TRUE - sleep(1) + sleep(world.tick_lag) TGS_DEBUG_LOG("RequireInitialBridgeResponse: Passed") @@ -249,6 +255,40 @@ WaitForReattach(TRUE) return chat_channels.Copy() +/datum/tgs_api/v5/TriggerEvent(event_name, list/parameters, wait_for_completion) + RequireInitialBridgeResponse() + WaitForReattach(TRUE) + + if(interop_version.minor < 9) + TGS_WARNING_LOG("Interop version too low for custom events!") + return FALSE + + var/str_parameters = list() + for(var/i in parameters) + str_parameters += "[i]" + + var/list/response = Bridge(DMAPI5_BRIDGE_COMMAND_EVENT, list(DMAPI5_BRIDGE_PARAMETER_EVENT_INVOCATION = list(DMAPI5_EVENT_INVOCATION_NAME = event_name, DMAPI5_EVENT_INVOCATION_PARAMETERS = str_parameters, DMAPI5_EVENT_INVOCATION_NOTIFY_COMPLETION = wait_for_completion))) + if(!response) + return FALSE + + var/event_id = response[DMAPI5_EVENT_ID] + if(!event_id) + return FALSE + + TGS_DEBUG_LOG("Created event ID: [event_id]") + if(!wait_for_completion) + return TRUE + + TGS_DEBUG_LOG("Waiting for completion of event ID: [event_id]") + + while(!pending_events[event_id]) + sleep(world.tick_lag) + + TGS_DEBUG_LOG("Completed wait on event ID: [event_id]") + pending_events -= event_id + + return TRUE + /datum/tgs_api/v5/proc/DecodeChannels(chat_update_json) TGS_DEBUG_LOG("DecodeChannels()") var/list/chat_channels_json = chat_update_json[DMAPI5_CHAT_UPDATE_CHANNELS] diff --git a/code/modules/tgs/v5/bridge.dm b/code/modules/tgs/v5/bridge.dm index a0ab359876704..0c5e701a32b60 100644 --- a/code/modules/tgs/v5/bridge.dm +++ b/code/modules/tgs/v5/bridge.dm @@ -65,7 +65,7 @@ if(detached) // Wait up to one minute for(var/i in 1 to 600) - sleep(1) + sleep(world.tick_lag) if(!detached && (!require_channels || length(chat_channels))) break @@ -77,8 +77,11 @@ /datum/tgs_api/v5/proc/PerformBridgeRequest(bridge_request) WaitForReattach(FALSE) + TGS_DEBUG_LOG("Bridge request start") // This is an infinite sleep until we get a response var/export_response = world.Export(bridge_request) + TGS_DEBUG_LOG("Bridge request complete") + if(!export_response) TGS_ERROR_LOG("Failed bridge request: [bridge_request]") return @@ -88,7 +91,7 @@ TGS_ERROR_LOG("Failed bridge request, missing content!") return - var/response_json = file2text(content) + var/response_json = TGS_FILE2TEXT_NATIVE(content) if(!response_json) TGS_ERROR_LOG("Failed bridge request, failed to load content!") return diff --git a/code/modules/tgs/v5/topic.dm b/code/modules/tgs/v5/topic.dm index 05e6c4e1b2146..e1f2cb6385789 100644 --- a/code/modules/tgs/v5/topic.dm +++ b/code/modules/tgs/v5/topic.dm @@ -176,6 +176,10 @@ var/list/reattach_response = TopicResponse(error_message) reattach_response[DMAPI5_PARAMETER_CUSTOM_COMMANDS] = ListCustomCommands() reattach_response[DMAPI5_PARAMETER_TOPIC_PORT] = GetTopicPort() + + for(var/eventId in pending_events) + pending_events[eventId] = TRUE + return reattach_response if(DMAPI5_TOPIC_COMMAND_SEND_CHUNK) @@ -276,6 +280,15 @@ TGS_WORLD_ANNOUNCE(message) return TopicResponse() + if(DMAPI5_TOPIC_COMMAND_COMPLETE_EVENT) + var/event_id = topic_parameters[DMAPI5_EVENT_ID] + if (!istext(event_id)) + return TopicResponse("Invalid or missing [DMAPI5_EVENT_ID]") + + TGS_DEBUG_LOG("Completing event ID [event_id]...") + pending_events[event_id] = TRUE + return TopicResponse() + return TopicResponse("Unknown command: [command]") /datum/tgs_api/v5/proc/WorldBroadcast(message) diff --git a/code/modules/tgs/v5/undefs.dm b/code/modules/tgs/v5/undefs.dm index d531d4b7b9dd1..237207fdfd056 100644 --- a/code/modules/tgs/v5/undefs.dm +++ b/code/modules/tgs/v5/undefs.dm @@ -14,6 +14,7 @@ #undef DMAPI5_BRIDGE_COMMAND_KILL #undef DMAPI5_BRIDGE_COMMAND_CHAT_SEND #undef DMAPI5_BRIDGE_COMMAND_CHUNK +#undef DMAPI5_BRIDGE_COMMAND_EVENT #undef DMAPI5_PARAMETER_ACCESS_IDENTIFIER #undef DMAPI5_PARAMETER_CUSTOM_COMMANDS @@ -34,6 +35,7 @@ #undef DMAPI5_BRIDGE_PARAMETER_VERSION #undef DMAPI5_BRIDGE_PARAMETER_CHAT_MESSAGE #undef DMAPI5_BRIDGE_PARAMETER_MINIMUM_SECURITY_LEVEL +#undef DMAPI5_BRIDGE_PARAMETER_EVENT_INVOCATION #undef DMAPI5_BRIDGE_RESPONSE_NEW_PORT #undef DMAPI5_BRIDGE_RESPONSE_RUNTIME_INFORMATION @@ -81,6 +83,7 @@ #undef DMAPI5_TOPIC_COMMAND_SEND_CHUNK #undef DMAPI5_TOPIC_COMMAND_RECEIVE_CHUNK #undef DMAPI5_TOPIC_COMMAND_RECEIVE_BROADCAST +#undef DMAPI5_TOPIC_COMMAND_COMPLETE_EVENT #undef DMAPI5_TOPIC_PARAMETER_COMMAND_TYPE #undef DMAPI5_TOPIC_PARAMETER_CHAT_COMMAND @@ -116,3 +119,9 @@ #undef DMAPI5_CUSTOM_CHAT_COMMAND_NAME #undef DMAPI5_CUSTOM_CHAT_COMMAND_HELP_TEXT #undef DMAPI5_CUSTOM_CHAT_COMMAND_ADMIN_ONLY + +#undef DMAPI5_EVENT_ID + +#undef DMAPI5_EVENT_INVOCATION_NAME +#undef DMAPI5_EVENT_INVOCATION_PARAMETERS +#undef DMAPI5_EVENT_INVOCATION_NOTIFY_COMPLETION