From 33672859f91abb9ce966015408259a8e348e4d39 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Sun, 22 Sep 2024 08:22:18 +0200 Subject: [PATCH 01/35] those should have a key... else no player chars --- code/modules/vore/eating/living_vr.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index d398fa3e40..4ea1c2ffe7 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -735,10 +735,10 @@ user.update_icon() var/mob/living/carbon/victim = prey // Check for afk vore - if(istype(victim) && !victim.client && !victim.ai_holder) + if(istype(victim) && !victim.client && !victim.ai_holder && victim.ckey) log_and_message_admins("[key_name_admin(pred)] ate [key_name_admin(prey)] whilst the prey was AFK ([pred ? ADMIN_JMP(pred) : "null"])") var/mob/living/carbon/victim_pred = pred // Check for afk vore - if(istype(victim_pred) && !victim_pred.client && !victim_pred.ai_holder) + if(istype(victim_pred) && !victim_pred.client && !victim_pred.ai_holder && victim_pred.ckey) log_and_message_admins("[key_name_admin(pred)] ate [key_name_admin(prey)] whilst the pred was AFK ([pred ? ADMIN_JMP(pred) : "null"])") // Inform Admins From 3671601ccbecb47532a8aeb9b00e66a24880da63 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Sun, 22 Sep 2024 08:35:56 +0200 Subject: [PATCH 02/35] fix the modify robot admin section for the ert channel --- code/modules/admin/verbs/modify_robot.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/admin/verbs/modify_robot.dm b/code/modules/admin/verbs/modify_robot.dm index 540cc26d30..9a5c937028 100644 --- a/code/modules/admin/verbs/modify_robot.dm +++ b/code/modules/admin/verbs/modify_robot.dm @@ -229,7 +229,7 @@ var/selected_radio_channel = tgui_input_list(usr, "Please select the radio channel to add", "Channels", available_channels) if(!selected_radio_channel || selected_radio_channel == "Cancel") break - if(selected_radio_channel == CHANNEL_SPECIAL_OPS) + if(selected_radio_channel == CHANNEL_SPECIAL_OPS || selected_radio_channel == CHANNEL_RESPONSE_TEAM) target.radio.centComm = 1 if(selected_radio_channel == CHANNEL_RAIDER) qdel(target.radio.keyslot) @@ -249,7 +249,7 @@ var/selected_radio_channel = tgui_input_list(usr, "Please select the radio channel to remove", "Channels", target.radio.channels) if(!selected_radio_channel || selected_radio_channel == "Cancel") break - if(selected_radio_channel == CHANNEL_SPECIAL_OPS) + if(selected_radio_channel == CHANNEL_SPECIAL_OPS || selected_radio_channel == CHANNEL_RESPONSE_TEAM && !(target.module.channels[CHANNEL_SPECIAL_OPS] || target.module.channels[CHANNEL_RESPONSE_TEAM])) target.radio.centComm = 0 target.module.channels -= selected_radio_channel if((selected_radio_channel == CHANNEL_MERCENARY || selected_radio_channel == CHANNEL_RAIDER) && !(target.module.channels[CHANNEL_RAIDER] || target.module.channels[CHANNEL_MERCENARY])) From b0e8377c7c213cd36e1d647528cfbb8f68aaca76 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Sun, 22 Sep 2024 08:43:00 +0200 Subject: [PATCH 03/35] . --- code/modules/admin/modify_robot.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/admin/modify_robot.dm b/code/modules/admin/modify_robot.dm index 1ffcf78be2..dd749a2c36 100644 --- a/code/modules/admin/modify_robot.dm +++ b/code/modules/admin/modify_robot.dm @@ -151,7 +151,7 @@ target.crisis_override = !target.crisis_override return TRUE if("add_restriction") - target.restrict_modules_to += params["new_restriction"] + target.restrict_modules_to |= params["new_restriction"] return TRUE if("remove_restriction") target.restrict_modules_to -= params["rem_restriction"] From 21bf516fc0e39f9c1cced4b39d6b7695c233469c Mon Sep 17 00:00:00 2001 From: SatinIsle Date: Sun, 22 Sep 2024 10:30:14 +0100 Subject: [PATCH 04/35] Replicant Species This PR makes the replicant outsider species a whitelist species after an application was made to play one as a crew member. Added the Gamma Replicant station species, accessible via whitelist only. This species has additional weaknesses (radiation and shock). They have a few unique organs: The crew version of the rage heart can only activate once every 60 minutes (rather than every minute) but lasts for 40 seconds. The mending lungs repair a few organs very very slowly, instead of extremely quickly. The plasma sac generates plasma a little faster without added phoron. Changed ventcrawl to specifically allow replicants to take underclothes and pocket sized items with them. I've balanced this for replicants only, but could remove the species check if wanted. Changed alien and resin structures so that they can also be destroyed by replicants (though more slowly than aliens). Added the user to the whitelist as approved here: https://forum.vore-station.net/viewtopic.php?f=45&t=2448&p=14179#p14179 --- code/__defines/mobs.dm | 1 + code/game/objects/structures/alien/alien.dm | 7 +++ .../materials/materials/organic/resin.dm | 20 ++++++-- .../human/species/station/replicant_crew.dm | 50 +++++++++++++++++++ code/modules/organs/subtypes/replicant.dm | 42 ++++++++++++++++ code/modules/ventcrawl/ventcrawl.dm | 7 +++ config/alienwhitelist.txt | 1 + vorestation.dme | 1 + 8 files changed, 124 insertions(+), 5 deletions(-) create mode 100644 code/modules/mob/living/carbon/human/species/station/replicant_crew.dm diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm index 9478891464..77e1e2d74a 100644 --- a/code/__defines/mobs.dm +++ b/code/__defines/mobs.dm @@ -341,6 +341,7 @@ #define SPECIES_REPLICANT "Replicant" #define SPECIES_REPLICANT_ALPHA "Alpha Replicant" #define SPECIES_REPLICANT_BETA "Beta Replicant" +#define SPECIES_REPLICANT_CREW "Gamma Replicant" // Used to seperate simple animals by ""intelligence"". #define SA_PLANT 1 diff --git a/code/game/objects/structures/alien/alien.dm b/code/game/objects/structures/alien/alien.dm index cde036bc68..9b192408fa 100644 --- a/code/game/objects/structures/alien/alien.dm +++ b/code/game/objects/structures/alien/alien.dm @@ -81,6 +81,13 @@ health = 0 healthcheck() return + if(locate(/obj/item/organ/internal/xenos/resinspinner/replicant) in M.internal_organs) + if(!do_after(M, 3 SECONDS)) + return + visible_message ("[usr] strokes the [name] and it melts away!", 1) + health = 0 + healthcheck() + return visible_message("[usr] claws at the [name]!") health -= rand(5,10) healthcheck() diff --git a/code/modules/materials/materials/organic/resin.dm b/code/modules/materials/materials/organic/resin.dm index 5d46999c29..4fe1d15cb9 100644 --- a/code/modules/materials/materials/organic/resin.dm +++ b/code/modules/materials/materials/organic/resin.dm @@ -19,17 +19,27 @@ var/mob/living/carbon/M = user if(istype(M) && locate(/obj/item/organ/internal/xenos/hivenode) in M.internal_organs) return TRUE + if(istype(M) && locate(/obj/item/organ/internal/xenos/resinspinner/replicant) in M.internal_organs) + return TRUE return FALSE /datum/material/resin/wall_touch_special(var/turf/simulated/wall/W, var/mob/living/L) var/mob/living/carbon/M = L if(istype(M) && locate(/obj/item/organ/internal/xenos/hivenode) in M.internal_organs) - to_chat(M, "\The [W] shudders under your touch, starting to become porous.") + to_chat(M, "\The [W] shudders under your touch, starting to become porous.") playsound(W, 'sound/effects/attackblob.ogg', 50, 1) - if(do_after(L, 5 SECONDS)) - spawn(2) - playsound(W, 'sound/effects/attackblob.ogg', 100, 1) - W.dismantle_wall() + if(!do_after(L, 5 SECONDS)) + return FALSE + playsound(W, 'sound/effects/attackblob.ogg', 100, 1) + W.dismantle_wall() + return TRUE + if(istype(M) && locate(/obj/item/organ/internal/xenos/resinspinner/replicant) in M.internal_organs) + to_chat(M, "\The [W] shudders under your touch, starting to become porous.") + playsound(W, 'sound/effects/attackblob.ogg', 50, 1) + if(!do_after(L, 5 SECONDS)) + return FALSE + playsound(W, 'sound/effects/attackblob.ogg', 100, 1) + W.dismantle_wall() return TRUE return FALSE diff --git a/code/modules/mob/living/carbon/human/species/station/replicant_crew.dm b/code/modules/mob/living/carbon/human/species/station/replicant_crew.dm new file mode 100644 index 0000000000..d5d3ed3c04 --- /dev/null +++ b/code/modules/mob/living/carbon/human/species/station/replicant_crew.dm @@ -0,0 +1,50 @@ +/datum/species/shapeshifter/replicant/crew + name = SPECIES_REPLICANT_CREW + blurb = "Replicants are one of the few remaining living examples of precursor technology. \ + While their origins remain unknown, they are a facsimile of organic life held together by amalgamate, \ + rubbery flesh and anomalous organs. Whilst their original purpose is speculated to be used through cortical \ + mirrors as a way to 'wirelessly exist' in a different body via VR pods, this specific variant has had its \ + forking capabilities severed in exchange for a more stable, self-sufficient (albeit weaker) form." + + min_age = 18 + max_age = 200 + blood_color = "#C0C0C0" + + radiation_mod = 1.2 //Affected more by radiation + siemens_coefficient = 1.5 //Don't get electrocuted + + secondary_langs = list() // None by default + + has_organ = list( + O_HEART = /obj/item/organ/internal/heart/replicant/rage/crew, + O_LUNGS = /obj/item/organ/internal/lungs/replicant/mending/crew, + O_VOICE = /obj/item/organ/internal/voicebox/replicant, + O_LIVER = /obj/item/organ/internal/liver/replicant, + O_KIDNEYS = /obj/item/organ/internal/kidneys/replicant, + O_BRAIN = /obj/item/organ/internal/brain/replicant/torso, + O_EYES = /obj/item/organ/internal/eyes/replicant, + O_AREJECT = /obj/item/organ/internal/immunehub/replicant, + O_VENTC = /obj/item/organ/internal/metamorphgland/replicant, + O_PLASMA = /obj/item/organ/internal/xenos/plasmavessel/replicant/crew, + O_RESIN = /obj/item/organ/internal/xenos/resinspinner/replicant, + O_STOMACH = /obj/item/organ/internal/stomach, + O_INTESTINE = /obj/item/organ/internal/intestine + ) + + appearance_flags = HAS_SKIN_COLOR | HAS_EYE_COLOR | HAS_HAIR_COLOR | HAS_UNDERWEAR | HAS_LIPS + spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE + color_mult = 1 + valid_transform_species = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_SKRELL, SPECIES_ALTEVIAN, SPECIES_TESHARI, SPECIES_MONKEY, SPECIES_LLEILL, SPECIES_VULPKANIN, SPECIES_ZORREN_HIGH, SPECIES_RAPALA, SPECIES_NEVREAN, SPECIES_VASILISSAN, SPECIES_AKULA) + + inherent_verbs = list( + /mob/living/carbon/human/proc/shapeshifter_select_shape, + /mob/living/carbon/human/proc/shapeshifter_select_colour, + /mob/living/carbon/human/proc/shapeshifter_select_hair, + /mob/living/carbon/human/proc/shapeshifter_select_hair_colors, + /mob/living/carbon/human/proc/shapeshifter_select_gender, + /mob/living/carbon/human/proc/shapeshifter_select_wings, + /mob/living/carbon/human/proc/shapeshifter_select_tail, + /mob/living/carbon/human/proc/shapeshifter_select_ears, + /mob/living/carbon/human/proc/shapeshifter_select_eye_colour, + /mob/living/proc/set_size + ) diff --git a/code/modules/organs/subtypes/replicant.dm b/code/modules/organs/subtypes/replicant.dm index 51605ab098..2aaa4c6fd2 100644 --- a/code/modules/organs/subtypes/replicant.dm +++ b/code/modules/organs/subtypes/replicant.dm @@ -53,6 +53,20 @@ can_reject = FALSE icon_state = "plasma_grey" +/obj/item/organ/internal/xenos/plasmavessel/replicant/crew/handle_organ_proc_special() + if(!istype(owner)) + return + + var/modifier = 1 - 0.5 * is_bruised() + + if(owner.bloodstr.has_reagent("phoron")) + adjust_plasma(round(4 * modifier)) + + if(owner.ingested.has_reagent("phoron")) + adjust_plasma(round(2 * modifier)) + + adjust_plasma(2) //Make it a decent amount so people can actually build stuff without stealing all of medbays phoron + /obj/item/organ/internal/xenos/acidgland/replicant name = "replicant aerosol tubule" desc = "A long, rubbery tube that ends in a hard plastic-like bulb." @@ -152,6 +166,22 @@ owner.add_modifier(/datum/modifier/berserk, 20 SECONDS) take_damage(5) +/obj/item/organ/internal/heart/replicant/rage/crew/handle_organ_proc_special() + if(!owner) + return + + var/damage_tally = 0 + var/pain_tally = 0 + damage_tally += owner.getBruteLoss() + damage_tally += owner.getFireLoss() + pain_tally += owner.getHalLoss() + + if(((damage_tally >= 50 || prev_damage_tally >= 50) && prev_damage_tally - damage_tally < 0) || pain_tally >= 60) + if(world.time > last_activation_time + 60 MINUTES) //Can only be activated once every 60 minutes to prevent it being able to be spammed + last_activation_time = world.time + owner.add_modifier(/datum/modifier/berserk, 40 SECONDS) //Lasts a little longer so that it can actually get some use seeing as it activates so infrequently + take_damage(5) + /obj/item/organ/internal/lungs/replicant/mending name = "replicant hive lungs" desc = "A pair of rubbery sacs with large portions dedicated to honeycombed nanite filters." @@ -169,3 +199,15 @@ var/obj/item/organ/O = owner.internal_organs_by_name[o_tag] if(O) O.take_damage(-1 * modifier) + +/obj/item/organ/internal/lungs/replicant/mending/crew/handle_organ_proc_special() + if(!owner) + return + + var/modifier = 1 - (0.5 * is_bruised()) + + if(istype(owner)) + for(var/o_tag in repair_list) + var/obj/item/organ/O = owner.internal_organs_by_name[o_tag] + if(O) + O.take_damage(-0.01 * modifier) //Very very slow regen, but still cool flavour diff --git a/code/modules/ventcrawl/ventcrawl.dm b/code/modules/ventcrawl/ventcrawl.dm index 0acc4626b1..2ae067c443 100644 --- a/code/modules/ventcrawl/ventcrawl.dm +++ b/code/modules/ventcrawl/ventcrawl.dm @@ -90,6 +90,13 @@ var/list/ventcrawl_machinery = list( /mob/living/carbon/human/is_allowed_vent_crawl_item(var/obj/item/carried_item) if(carried_item in organs) return 1 + if(species.name == SPECIES_REPLICANT_CREW) + if(istype(carried_item, /obj/item/clothing/under)) + return 1 //Allow them to not vent crawl naked + if(istype(carried_item, /obj/item)) + var/obj/item/I = carried_item + if(I.w_class <= 2) + return 1 //Allow them to carry items that fit in pockets return ..() /mob/living/proc/ventcrawl_carry() diff --git a/config/alienwhitelist.txt b/config/alienwhitelist.txt index 06a1d4e64f..79be051a63 100644 --- a/config/alienwhitelist.txt +++ b/config/alienwhitelist.txt @@ -126,6 +126,7 @@ ontejbjoav - Black-Eyed Shadekin ontejbjoav - Diona oreganovulgaris - Xenochimera oscarholmes - Protean +oscarholmes - Gamma Replicant owwy - Black-Eyed Shadekin oxenfree - Protean ozyton - Black-Eyed Shadekin diff --git a/vorestation.dme b/vorestation.dme index 9f8a730d4f..99abec6d81 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -3006,6 +3006,7 @@ #include "code\modules\mob\living\carbon\human\species\station\prometheans.dm" #include "code\modules\mob\living\carbon\human\species\station\prometheans_vr.dm" #include "code\modules\mob\living\carbon\human\species\station\prommie_blob.dm" +#include "code\modules\mob\living\carbon\human\species\station\replicant_crew.dm" #include "code\modules\mob\living\carbon\human\species\station\station.dm" #include "code\modules\mob\living\carbon\human\species\station\station_special_abilities_vr.dm" #include "code\modules\mob\living\carbon\human\species\station\station_special_vr.dm" From 08bf4a5b71b61a05c80ce06ba024c574505c5796 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Sun, 22 Sep 2024 19:06:13 +0200 Subject: [PATCH 05/35] fix random colour --- code/modules/mob/living/simple_mob/subtypes/vore/bigdragon.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/bigdragon.dm b/code/modules/mob/living/simple_mob/subtypes/vore/bigdragon.dm index 47c99f1b4f..48fc001e64 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/bigdragon.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/bigdragon.dm @@ -354,14 +354,14 @@ I think I covered everything. body = pick(body_styles) overlay_colors["Body"] = pick(bodycolors) ears = pick(ear_styles) - overlay_colors["Ears"] = "#[get_random_colour(0, 100, 150)]" + overlay_colors["Ears"] = get_random_colour(0, 100, 150) mane = pick(mane_styles) overlay_colors["Mane"] = pick(bodycolors) horns = pick(horn_styles) var/list/horncolors = list("#000000","#151515","#303030","#606060","#808080","#AAAAAA","#CCCCCC","#EEEEEE","#FFFFFF") overlay_colors["Horns"] = pick(horncolors) eyes = pick(eye_styles) - overlay_colors["Eyes"] = "#[get_random_colour(1)]" + overlay_colors["Eyes"] = get_random_colour(1) var/image/I = image(icon, "dragon_under[under][resting? "-rest" : (vore_fullness? "-[vore_fullness]" : null)]", pixel_x = -48) I.color = overlay_colors["Underbelly"] From 6caaf9742f894e0248c4b4a076c05a46fae89b58 Mon Sep 17 00:00:00 2001 From: Nadyr Date: Sun, 22 Sep 2024 17:23:06 -0400 Subject: [PATCH 06/35] prevents posters inheriting icon_state from map obj --- code/game/objects/effects/decals/posters/posters.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/effects/decals/posters/posters.dm b/code/game/objects/effects/decals/posters/posters.dm index 74624bcb0d..a020f6ead2 100644 --- a/code/game/objects/effects/decals/posters/posters.dm +++ b/code/game/objects/effects/decals/posters/posters.dm @@ -3,7 +3,7 @@ if(exact) return decls_repository.get_decl(path) else - var/list/L = decls_repository.get_decls_of_type(path) + var/list/L = decls_repository.get_decls_of_subtype(path) // Use get_decls_of_subtype instead of get_decls_of_type, or it will get the map placing icon_state return L[pick(L)] return null From 171707b3cee620e6ae21ad33f65bbeee9a82be11 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 23 Sep 2024 01:14:03 +0200 Subject: [PATCH 07/35] buttons no longer steal focus --- tgui/packages/tgui/components/Button.tsx | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/tgui/packages/tgui/components/Button.tsx b/tgui/packages/tgui/components/Button.tsx index 7265006312..7c26e5e068 100644 --- a/tgui/packages/tgui/components/Button.tsx +++ b/tgui/packages/tgui/components/Button.tsx @@ -91,8 +91,20 @@ export const Button = (props: Props) => { const toDisplay: ReactNode = content || children; + const ref = useRef(null); + + function handleButtonClick(event) { + if (!disabled && onClick) { + onClick(event); + if (ref?.current) { + (ref.current as HTMLElement).blur(); + } + } + } + let buttonContent = (
{ ])} tabIndex={!disabled ? 0 : undefined} onClick={(event) => { - if (!disabled && onClick) { - onClick(event); - } + handleButtonClick(event); }} onKeyDown={(event) => { if (!captureKeys) { @@ -126,9 +136,7 @@ export const Button = (props: Props) => { // Simulate a click when pressing space or enter. if (event.key === KEY.Space || event.key === KEY.Enter) { event.preventDefault(); - if (!disabled && onClick) { - onClick(event); - } + handleButtonClick(event); return; } From a8266252f878654e12456f3ef827699e88953114 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 23 Sep 2024 08:02:14 +0200 Subject: [PATCH 08/35] maybe better keep for keyboard use --- tgui/packages/tgui/components/Button.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tgui/packages/tgui/components/Button.tsx b/tgui/packages/tgui/components/Button.tsx index 7c26e5e068..cb7f3b0af3 100644 --- a/tgui/packages/tgui/components/Button.tsx +++ b/tgui/packages/tgui/components/Button.tsx @@ -136,7 +136,9 @@ export const Button = (props: Props) => { // Simulate a click when pressing space or enter. if (event.key === KEY.Space || event.key === KEY.Enter) { event.preventDefault(); - handleButtonClick(event); + if (!disabled && onClick) { + onClick(event); + } return; } From f1cbe0396b3f369f1787c33e3c4c358199d913da Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 23 Sep 2024 10:55:16 +0200 Subject: [PATCH 09/35] ai syncing / unsyncing in modify robot --- code/modules/admin/modify_robot.dm | 18 +++++++++++++ .../tgui/interfaces/ModifyRobot/index.tsx | 25 +++++++++++++++++-- .../tgui/interfaces/ModifyRobot/types.ts | 2 ++ 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/code/modules/admin/modify_robot.dm b/code/modules/admin/modify_robot.dm index 1ffcf78be2..47ad98e786 100644 --- a/code/modules/admin/modify_robot.dm +++ b/code/modules/admin/modify_robot.dm @@ -121,6 +121,8 @@ package_laws(., "supplied_laws", target.laws.supplied_laws) .["isAI"] = isAI(target) + .["isMalf"] = is_malf(user) + .["isSlaved"] = target.is_slaved() var/list/channels = list() for(var/ch_name in target.law_channels()) @@ -498,6 +500,19 @@ if(usr != target) to_chat(usr, "Laws displayed.") return TRUE + if("toggle_sync") + if(target.is_slaved()) + target.disconnect_from_ai() + target.lawupdate = 0 + else + var/new_ai = select_active_ai_with_fewest_borgs() + if(new_ai) + target.lawupdate = 1 + target.connect_to_ai(new_ai) + return TRUE + if("sneaky_toggle") + target.lawsync = !target.lawsync + return TRUE /datum/eventkit/modify_robot/proc/get_target_items(var/mob/user) var/list/target_items = list() @@ -650,3 +665,6 @@ package_laws(packaged_laws, "supplied_laws", ALs.supplied_laws) law_sets[++law_sets.len] = list("name" = ALs.name, "header" = ALs.law_header, "ref" = "\ref[ALs]","laws" = packaged_laws) return law_sets + +/datum/eventkit/modify_robot/proc/is_malf(var/mob/user) + return (is_admin(user) && !target.is_slaved()) || is_special_role(user) diff --git a/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx b/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx index dba66ce648..402077dc23 100644 --- a/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx +++ b/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx @@ -50,6 +50,8 @@ export const ModifyRobot = (props) => { has_inherent_laws, has_supplied_laws, isAI, + isMalf, + isSlaved, channel, channels, law_sets, @@ -90,7 +92,6 @@ export const ModifyRobot = (props) => { tabs[6] = ( { has_inherent_laws={has_inherent_laws} has_supplied_laws={has_supplied_laws} isAI={isAI} + isMalf={isMalf} channel={channel} channels={channels} /> @@ -116,7 +118,7 @@ export const ModifyRobot = (props) => {
{ Rename + + + + + + )} diff --git a/tgui/packages/tgui/interfaces/ModifyRobot/types.ts b/tgui/packages/tgui/interfaces/ModifyRobot/types.ts index d5bb7aeadf..9d6f8fc587 100644 --- a/tgui/packages/tgui/interfaces/ModifyRobot/types.ts +++ b/tgui/packages/tgui/interfaces/ModifyRobot/types.ts @@ -24,6 +24,8 @@ export type Data = { has_inherent_laws: number; has_supplied_laws: number; isAI: BooleanLike; + isMalf: BooleanLike; + isSlaved: string | null; channel: string; channels: { channel: string }[]; law_sets: law_pack[]; From 1419632e35ed6b539004ff12b3830908b638be9a Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 23 Sep 2024 11:04:39 +0200 Subject: [PATCH 10/35] . --- code/modules/admin/modify_robot.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/modules/admin/modify_robot.dm b/code/modules/admin/modify_robot.dm index 47ad98e786..f4b9976b92 100644 --- a/code/modules/admin/modify_robot.dm +++ b/code/modules/admin/modify_robot.dm @@ -511,7 +511,7 @@ target.connect_to_ai(new_ai) return TRUE if("sneaky_toggle") - target.lawsync = !target.lawsync + target.lawupdate = !target.lawupdate return TRUE /datum/eventkit/modify_robot/proc/get_target_items(var/mob/user) @@ -668,3 +668,6 @@ /datum/eventkit/modify_robot/proc/is_malf(var/mob/user) return (is_admin(user) && !target.is_slaved()) || is_special_role(user) + +/datum/eventkit/modify_robot/proc/is_special_role(var/mob/user) + return user.mind.special_role ? TRUE : FALSE From a14077d62290570a57c1856da58559f786d4b16c Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 23 Sep 2024 12:16:58 +0200 Subject: [PATCH 11/35] multiple ais --- code/modules/admin/modify_robot.dm | 13 +++++++- .../tgui/interfaces/ModifyRobot/index.tsx | 30 ++++++++++++++----- .../tgui/interfaces/ModifyRobot/types.ts | 2 ++ 3 files changed, 36 insertions(+), 9 deletions(-) diff --git a/code/modules/admin/modify_robot.dm b/code/modules/admin/modify_robot.dm index f4b9976b92..3d2b813672 100644 --- a/code/modules/admin/modify_robot.dm +++ b/code/modules/admin/modify_robot.dm @@ -12,6 +12,7 @@ /datum/eventkit/modify_robot var/mob/living/silicon/robot/target var/mob/living/silicon/robot/source + var/mob/living/ai/selected_ai var/ion_law = "IonLaw" var/zeroth_law = "ZerothLaw" var/inherent_law = "InherentLaw" @@ -123,6 +124,13 @@ .["isAI"] = isAI(target) .["isMalf"] = is_malf(user) .["isSlaved"] = target.is_slaved() + var/list/active_ais = list() + for(var/mob/living/silicon/ai/ai in active_ais()) + if(!ai.loc) + continue + active_ais += list(list("displayText" = "[R]", "value" = "\ref[R]")) + .["active_ais"] = active_ais + .["selected_ai"] = selected_ai var/list/channels = list() for(var/ch_name in target.law_channels()) @@ -500,12 +508,15 @@ if(usr != target) to_chat(usr, "Laws displayed.") return TRUE + if("select_ai") + selected_ai = locate(params["new_ai"]) + return TRUE if("toggle_sync") if(target.is_slaved()) target.disconnect_from_ai() target.lawupdate = 0 else - var/new_ai = select_active_ai_with_fewest_borgs() + var/new_ai = selected_ai ? select_ai : select_active_ai_with_fewest_borgs() if(new_ai) target.lawupdate = 1 target.connect_to_ai(new_ai) diff --git a/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx b/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx index 402077dc23..325e9e94b2 100644 --- a/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx +++ b/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx @@ -52,6 +52,8 @@ export const ModifyRobot = (props) => { isAI, isMalf, isSlaved, + all_ais, + selected_ai, channel, channels, law_sets, @@ -173,8 +175,20 @@ export const ModifyRobot = (props) => { Rename + + + act('select_ai', { + new_ai: value, + }) + } + /> + - + )} diff --git a/tgui/packages/tgui/interfaces/ModifyRobot/types.ts b/tgui/packages/tgui/interfaces/ModifyRobot/types.ts index 9d6f8fc587..d64bdb9261 100644 --- a/tgui/packages/tgui/interfaces/ModifyRobot/types.ts +++ b/tgui/packages/tgui/interfaces/ModifyRobot/types.ts @@ -29,6 +29,8 @@ export type Data = { channel: string; channels: { channel: string }[]; law_sets: law_pack[]; + active_ais: DropdownEntry[]; + selected_ai: {name: string; ref: string} | null; }; export type DropdownEntry = { From d5da234ef28924010c53afb7779d2bb990d9fe65 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 23 Sep 2024 12:21:20 +0200 Subject: [PATCH 12/35] . --- code/modules/admin/modify_robot.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/admin/modify_robot.dm b/code/modules/admin/modify_robot.dm index 3d2b813672..2dc770aa66 100644 --- a/code/modules/admin/modify_robot.dm +++ b/code/modules/admin/modify_robot.dm @@ -12,7 +12,7 @@ /datum/eventkit/modify_robot var/mob/living/silicon/robot/target var/mob/living/silicon/robot/source - var/mob/living/ai/selected_ai + var/mob/living/silicon/ai/selected_ai var/ion_law = "IonLaw" var/zeroth_law = "ZerothLaw" var/inherent_law = "InherentLaw" @@ -128,7 +128,7 @@ for(var/mob/living/silicon/ai/ai in active_ais()) if(!ai.loc) continue - active_ais += list(list("displayText" = "[R]", "value" = "\ref[R]")) + active_ais += list(list("displayText" = "[ai]", "value" = "\ref[ai]")) .["active_ais"] = active_ais .["selected_ai"] = selected_ai @@ -516,7 +516,7 @@ target.disconnect_from_ai() target.lawupdate = 0 else - var/new_ai = selected_ai ? select_ai : select_active_ai_with_fewest_borgs() + var/new_ai = selected_ai ? selected_ai : select_active_ai_with_fewest_borgs() if(new_ai) target.lawupdate = 1 target.connect_to_ai(new_ai) From 084569c5212bd35182d82a70ec6b1ba4eb16e1f8 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 23 Sep 2024 12:49:45 +0200 Subject: [PATCH 13/35] . --- tgui/packages/tgui/interfaces/ModifyRobot/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx b/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx index 325e9e94b2..7627ae3b1a 100644 --- a/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx +++ b/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx @@ -202,8 +202,8 @@ export const ModifyRobot = (props) => { color={isMalf ? "red" : "green"} tooltip={(isMalf ? "Disables" : "Enables") + " lawsync"} onClick={(value) => act('sneaky_toggle')} - > - Lawsync + > + Lawsync From 77d7c4c7d46257af00646009516c88aa54e191a1 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 23 Sep 2024 13:04:46 +0200 Subject: [PATCH 14/35] . --- tgui/packages/tgui/interfaces/ModifyRobot/index.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx b/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx index 7627ae3b1a..7be0c5ff9d 100644 --- a/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx +++ b/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx @@ -192,9 +192,9 @@ export const ModifyRobot = (props) => { color={isSlaved ? "red" : "green"} tooltip={(isSlaved ? "Disconnect from" : "Connect to") + " AI"} onClick={(value) => act('toggle_sync')} - > - {isSlaved ? isSlaved : "Disconnected!"} - + > + {isSlaved ? isSlaved : "Disconnected!"} + From fc12c5df720be58d20482ebe8e40f885e2ae6dd7 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 23 Sep 2024 13:32:45 +0200 Subject: [PATCH 15/35] . --- tgui/packages/tgui/interfaces/ModifyRobot/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx b/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx index 7be0c5ff9d..8efd08303e 100644 --- a/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx +++ b/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx @@ -178,7 +178,7 @@ export const ModifyRobot = (props) => { act('select_ai', { new_ai: value, @@ -188,7 +188,7 @@ export const ModifyRobot = (props) => { + - - act('select_ai', { - new_ai: value, - }) + - - - )} + + {!!target?.module && ( + + + + act('select_ai', { + new_ai: value, + }) + } + /> + + + + + + + + + )} + {!!target && diff --git a/tgui/packages/tgui/interfaces/ModifyRobot/types.ts b/tgui/packages/tgui/interfaces/ModifyRobot/types.ts index d64bdb9261..5191e38422 100644 --- a/tgui/packages/tgui/interfaces/ModifyRobot/types.ts +++ b/tgui/packages/tgui/interfaces/ModifyRobot/types.ts @@ -30,7 +30,7 @@ export type Data = { channels: { channel: string }[]; law_sets: law_pack[]; active_ais: DropdownEntry[]; - selected_ai: {name: string; ref: string} | null; + selected_ai: string | null; }; export type DropdownEntry = { @@ -42,6 +42,7 @@ export type Target = { name: string; ckey: string; module: string; + emagged: BooleanLike; active: BooleanLike; crisis_override: BooleanLike; active_restrictions: string[]; From c6baa2083f3b4e4d73db188eaf6475389f73db65 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Tue, 24 Sep 2024 11:48:37 +0200 Subject: [PATCH 19/35] we load it from a file, that path might no longer exist --- code/modules/client/preference_setup/loadout/gear_tweaks.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/client/preference_setup/loadout/gear_tweaks.dm b/code/modules/client/preference_setup/loadout/gear_tweaks.dm index f371fac6c1..3fe07dd5fa 100644 --- a/code/modules/client/preference_setup/loadout/gear_tweaks.dm +++ b/code/modules/client/preference_setup/loadout/gear_tweaks.dm @@ -151,7 +151,8 @@ GLOBAL_DATUM_INIT(gear_tweak_free_matrix_recolor, /datum/gear_tweak/matrix_recol continue else path = contents[metadata[i]] - new path(I) + if(path) + new path(I) /* * Ragent adjustment From 5ed2cde700ee18ed561f0de5bc1f59ff9d7b3021 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Tue, 24 Sep 2024 15:23:21 +0200 Subject: [PATCH 20/35] notify the user --- .../client/preference_setup/loadout/gear_tweaks.dm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/code/modules/client/preference_setup/loadout/gear_tweaks.dm b/code/modules/client/preference_setup/loadout/gear_tweaks.dm index 3fe07dd5fa..2d2a2e29e4 100644 --- a/code/modules/client/preference_setup/loadout/gear_tweaks.dm +++ b/code/modules/client/preference_setup/loadout/gear_tweaks.dm @@ -151,8 +151,12 @@ GLOBAL_DATUM_INIT(gear_tweak_free_matrix_recolor, /datum/gear_tweak/matrix_recol continue else path = contents[metadata[i]] - if(path) - new path(I) + if(!path) + var/mob/user = ismob(I.loc) ? I.loc : I.loc.loc + if(istype(user)) + to_chat(user, span_warning("The content \"[metadata[i]]\" from \"[I]\" does no longer exist and has not been loaded. Please replace it in the character setup.")) + continue + new path(I) /* * Ragent adjustment From 757841c6927d088fe64e23de80fa3a2d7f28e887 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Wed, 25 Sep 2024 01:07:19 +0200 Subject: [PATCH 21/35] . --- code/modules/client/preference_setup/loadout/gear_tweaks.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/client/preference_setup/loadout/gear_tweaks.dm b/code/modules/client/preference_setup/loadout/gear_tweaks.dm index 2d2a2e29e4..ba5f621dbc 100644 --- a/code/modules/client/preference_setup/loadout/gear_tweaks.dm +++ b/code/modules/client/preference_setup/loadout/gear_tweaks.dm @@ -152,7 +152,7 @@ GLOBAL_DATUM_INIT(gear_tweak_free_matrix_recolor, /datum/gear_tweak/matrix_recol else path = contents[metadata[i]] if(!path) - var/mob/user = ismob(I.loc) ? I.loc : I.loc.loc + var/mob/user = ismob(I.loc) ? I.loc : I.loc?.loc if(istype(user)) to_chat(user, span_warning("The content \"[metadata[i]]\" from \"[I]\" does no longer exist and has not been loaded. Please replace it in the character setup.")) continue From ef183bcb9fc761485d7aac92909008b8ad1c7223 Mon Sep 17 00:00:00 2001 From: SatinIsle Date: Wed, 25 Sep 2024 15:57:04 +0100 Subject: [PATCH 22/35] Print your own healthbar as prey Added the functionality to print your own healthbar from "Print Prey Healthbars" when you yourself are the prey. --- code/modules/vore/chat_healthbars.dm | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/code/modules/vore/chat_healthbars.dm b/code/modules/vore/chat_healthbars.dm index 7442d99d59..be1337cce1 100644 --- a/code/modules/vore/chat_healthbars.dm +++ b/code/modules/vore/chat_healthbars.dm @@ -117,6 +117,16 @@ set category = "Abilities" var/nuffin = TRUE + + var/obj/belly/amprey = src.loc + + if(istype(amprey)) + var/datum/digest_mode/selective/DM_S = GLOB.digest_modes[DM_SELECT] + var/digest_mode = amprey.digest_mode == DM_SELECT ? DM_S.get_selective_mode(amprey, src) : amprey.digest_mode + to_chat(src, "[digest_mode] - You are in [amprey.owner]'s [amprey.name]:") + src.chat_healthbar(src, TRUE, TRUE) + nuffin = FALSE + for(var/obj/belly/b in vore_organs) if(!b.contents.len) continue @@ -133,4 +143,4 @@ ourmob.chat_healthbar(src, TRUE, TRUE) nuffin = FALSE if(nuffin) - to_chat(src, "There are no mobs within any of your bellies to print health bars for.") + to_chat(src, "There are no mobs within any of your bellies to print health bars for, and you are not in a belly yourself.") From 81e20f6f387dcc23a788f7ded5fa13bef9624963 Mon Sep 17 00:00:00 2001 From: SatinIsle Date: Wed, 25 Sep 2024 20:28:57 +0100 Subject: [PATCH 23/35] Very minor change to wording to make it clear the prey is in your belly --- code/modules/vore/chat_healthbars.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/vore/chat_healthbars.dm b/code/modules/vore/chat_healthbars.dm index be1337cce1..0ddab45b7a 100644 --- a/code/modules/vore/chat_healthbars.dm +++ b/code/modules/vore/chat_healthbars.dm @@ -137,7 +137,7 @@ if(!belly_announce) var/datum/digest_mode/selective/DM_S = GLOB.digest_modes[DM_SELECT] var/digest_mode = b.digest_mode == DM_SELECT ? DM_S.get_selective_mode(b, thing) : b.digest_mode - to_chat(src, "[digest_mode] - Within [b.name]:") //We only want to announce the belly if we found something + to_chat(src, "[digest_mode] - Within your [b.name]:") //We only want to announce the belly if we found something belly_announce = TRUE var/mob/living/ourmob = thing ourmob.chat_healthbar(src, TRUE, TRUE) From 5e656dfad0bdd9dbc23cf27e6d01fa6305671fc1 Mon Sep 17 00:00:00 2001 From: Nadyr Date: Wed, 25 Sep 2024 17:12:51 -0400 Subject: [PATCH 24/35] conveyors no lunger move janitor --- code/modules/recycling/conveyor2.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 6075e3e715..922ad8513b 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -113,6 +113,8 @@ for(var/atom/movable/A in affecting) if(istype(A,/obj/effect/abstract)) // Flashlight's lights are not physical objects continue + if(istype(A,/obj/effect/decal/jan_hud)) // Ignore these too + continue if(!A.anchored) if(A.loc == src.loc) // prevents the object from being affected if it's not currently here. step(A,movedir) From 5e7833175ed08e42ddb3f9b6bd42f8141ee19398 Mon Sep 17 00:00:00 2001 From: Nadyr Date: Wed, 25 Sep 2024 18:11:01 -0400 Subject: [PATCH 25/35] lets sleevemates work on dogborg sleepers --- code/game/objects/items/devices/scanners/sleevemate.dm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/code/game/objects/items/devices/scanners/sleevemate.dm b/code/game/objects/items/devices/scanners/sleevemate.dm index 0109335b0d..d83bfe6352 100644 --- a/code/game/objects/items/devices/scanners/sleevemate.dm +++ b/code/game/objects/items/devices/scanners/sleevemate.dm @@ -72,6 +72,13 @@ var/global/mob/living/carbon/human/dummy/mannequin/sleevemate_mob return M = new_M + if(isrobot(M)) + var/mob/living/silicon/robot/R = M + var/obj/item/device/dogborg/sleeper/S = locate() in R.module.modules + if(S && S.patient) + scan_mob(S.patient, user) + return + if(ishuman(M)) scan_mob(M, user) else From 7696ad5253826ce89d799bf912d99c05cb35101b Mon Sep 17 00:00:00 2001 From: Nadyr Date: Wed, 25 Sep 2024 18:36:12 -0400 Subject: [PATCH 26/35] Adds amputation delay --- code/modules/surgery/surgery.dm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index 0bf247f50b..760aa561a4 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -192,7 +192,14 @@ if(isnull(selected_surgery)) //They clicked 'cancel' return 1 selected_surgery = available_surgeries[selected_surgery] //Sets the name they selected to be the datum. - + // VOREstation edit start + if(istype(selected_surgery,/datum/surgery_step/generic/amputate)) + var/obj/item/organ/external/affected = M.get_organ(zone) + to_chat(user, "You are preparing to amputate \the [M]'s [affected.name]!") + if(!do_after(user, 3 SECONDS, M)) + to_chat(user, "You reconsider performing an amputation...") + return 0 + // VOREstation edit end M.op_stage.in_progress += zone selected_surgery.begin_step(user, M, zone, src) //start on it var/success = TRUE From 1b3acc2baf2bbc488579e15c1a4851b62b560316 Mon Sep 17 00:00:00 2001 From: Nadyr Date: Wed, 25 Sep 2024 19:12:15 -0400 Subject: [PATCH 27/35] Drone and posibrain fixes --- code/modules/organs/organ.dm | 12 ++++++++++-- code/modules/surgery/robotics.dm | 12 +++++++++++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index 621e875df6..23176642d8 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -398,7 +398,11 @@ var/list/organ_cache = list() rejecting = null if(istype(owner)) - var/datum/reagent/blood/organ_blood = locate(/datum/reagent/blood) in reagents.reagent_list + // VOREstation edit begin - Posibrains don't have blood reagents, so they crash this + var/datum/reagent/blood/organ_blood = null + if(reagents) + organ_blood = locate(/datum/reagent/blood) in reagents.reagent_list + // VOREstation edit end if(!organ_blood || !organ_blood.data["blood_DNA"]) owner.vessel.trans_to(src, 5, 1, 1) @@ -418,7 +422,11 @@ var/list/organ_cache = list() if(!istype(target)) return - var/datum/reagent/blood/transplant_blood = locate(/datum/reagent/blood) in reagents.reagent_list + // VOREstation edit begin - Posibrains don't have blood reagents, so they crash this + var/datum/reagent/blood/transplant_blood = null + if(reagents) + transplant_blood = locate(/datum/reagent/blood) in reagents.reagent_list + // VOREstation edit end transplant_data = list() if(!transplant_blood) transplant_data["species"] = target?.species.name diff --git a/code/modules/surgery/robotics.dm b/code/modules/surgery/robotics.dm index 9e187d087d..d393f4759e 100644 --- a/code/modules/surgery/robotics.dm +++ b/code/modules/surgery/robotics.dm @@ -485,7 +485,17 @@ "You have installed \the [tool] into [target]'s [affected.name].") var/obj/item/device/mmi/M = tool - var/obj/item/organ/internal/mmi_holder/holder = new(target, 1) + // VOREstation edit begin - Select the proper mmi holder subtype based on the brain inserted + var/obj/item/organ/internal/mmi_holder/holder = null + if(istype(M,/obj/item/device/mmi/digital/posibrain/nano)) + holder = new /obj/item/organ/internal/mmi_holder/posibrain/nano(target, 1) + else if(istype(M,/obj/item/device/mmi/digital/posibrain)) + holder = new /obj/item/organ/internal/mmi_holder/posibrain(target, 1) + else if(istype(M,/obj/item/device/mmi/digital/robot)) + holder = new /obj/item/organ/internal/mmi_holder/robot(target, 1) + else + holder = new /obj/item/organ/internal/mmi_holder(target, 1) // Fallback to old behavior if organic MMI or if no subtype exists. + //VOREstation edit end target.internal_organs_by_name["brain"] = holder user.drop_from_inventory(tool) tool.loc = holder From c280256e2899b70f18828c2a6fa6857cb1fc71e9 Mon Sep 17 00:00:00 2001 From: Nadyr Date: Wed, 25 Sep 2024 19:43:21 -0400 Subject: [PATCH 28/35] Advanced mop cart storage --- code/game/objects/structures/janicart.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index 370d494f35..b16fb816b5 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -29,6 +29,7 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart) equippable_item_whitelist = typecacheof(list( /obj/item/weapon/storage/bag/trash, /obj/item/weapon/mop, + /obj/item/weapon/mop/advanced, /obj/item/weapon/reagent_containers/spray, /obj/item/device/lightreplacer, /obj/item/clothing/suit/caution, @@ -49,7 +50,7 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart) mybag = I setTguiIcon("mybag", mybag) - else if(istype(I, /obj/item/weapon/mop)) + else if(istype(I, /obj/item/weapon/mop) || istype(I, /obj/item/weapon/mop/advanced)) if(mymop) to_chat(user, "[src] already has \an [I].") return FALSE From 1c5f81efd1de8a2be7a7e968d85abf80f8d9f612 Mon Sep 17 00:00:00 2001 From: Kashargul Date: Thu, 26 Sep 2024 02:50:45 +0200 Subject: [PATCH 29/35] dereference lists --- code/_helpers/type2type.dm | 19 ++++++++++++++ .../preference_setup/general/02_language.dm | 9 ++++--- .../preference_setup/general/03_body.dm | 16 ++++++------ .../preference_setup/general/04_equipment.dm | 11 +++++--- .../preference_setup/loadout/loadout.dm | 26 ++++++++++++++++--- .../preference_setup/occupation/occupation.dm | 4 +-- .../client/preference_setup/skills/skills.dm | 4 +-- .../client/preference_setup/vore/07_traits.dm | 20 +++++++------- .../client/preference_setup/vore/08_nif.dm | 4 +-- 9 files changed, 79 insertions(+), 34 deletions(-) diff --git a/code/_helpers/type2type.dm b/code/_helpers/type2type.dm index 908618128c..c9dffc7c2b 100644 --- a/code/_helpers/type2type.dm +++ b/code/_helpers/type2type.dm @@ -574,3 +574,22 @@ continue if(!isnull(path)) . += path + +/proc/path2text_list(list/L) + . = list() + for(var/key in L) + var/text = "[key]" + if(!isnull(L[text])) + .[text] = L[text] + continue + if(!isnull(L[key])) + .[text] = L[key] + continue + if(!isnull(text)) + .[text] = "" + +/proc/check_list_copy(var/i) + if(islist(i)) + var/list/l = i + return l.Copy() + return i diff --git a/code/modules/client/preference_setup/general/02_language.dm b/code/modules/client/preference_setup/general/02_language.dm index 4c7f408239..eee2513420 100644 --- a/code/modules/client/preference_setup/general/02_language.dm +++ b/code/modules/client/preference_setup/general/02_language.dm @@ -8,18 +8,19 @@ var/static/list/forbidden_prefixes = list(";", ":", ".", "!", "*", "^", "-") /datum/category_item/player_setup_item/general/language/load_character(list/save_data) - pref.alternate_languages = save_data["language"] + pref.alternate_languages = check_list_copy(save_data["language"]) pref.extra_languages = save_data["extra_languages"] pref.language_prefixes = save_data["language_prefixes"] + pref.species = save_data["species"] pref.preferred_language = save_data["preflang"] - pref.language_custom_keys = save_data["language_custom_keys"] + pref.language_custom_keys = check_list_copy(save_data["language_custom_keys"]) /datum/category_item/player_setup_item/general/language/save_character(list/save_data) - save_data["language"] = pref.alternate_languages + save_data["language"] = check_list_copy(pref.alternate_languages) save_data["extra_languages"] = pref.extra_languages save_data["language_prefixes"] = pref.language_prefixes save_data["language_custom_keys"] = pref.language_custom_keys - save_data["preflang"] = pref.preferred_language + save_data["preflang"] = check_list_copy(pref.preferred_language) /datum/category_item/player_setup_item/general/language/sanitize_character() if(!islist(pref.alternate_languages)) diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm index 4e2a44a046..bb685f62fa 100644 --- a/code/modules/client/preference_setup/general/03_body.dm +++ b/code/modules/client/preference_setup/general/03_body.dm @@ -113,16 +113,16 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O pref.b_eyes = save_data["eyes_blue"] pref.b_type = save_data["b_type"] pref.disabilities = save_data["disabilities"] - pref.organ_data = save_data["organ_data"] - pref.rlimb_data = save_data["rlimb_data"] - pref.body_markings = save_data["body_markings"] + pref.organ_data = check_list_copy(save_data["organ_data"]) + pref.rlimb_data = check_list_copy(save_data["rlimb_data"]) + pref.body_markings = check_list_copy(save_data["body_markings"]) pref.synth_color = save_data["synth_color"] pref.r_synth = save_data["synth_red"] pref.g_synth = save_data["synth_green"] pref.b_synth = save_data["synth_blue"] pref.synth_markings = save_data["synth_markings"] pref.bgstate = save_data["bgstate"] - pref.body_descriptors = save_data["body_descriptors"] + pref.body_descriptors = check_list_copy(save_data["body_descriptors"]) pref.ear_style = save_data["ear_style"] pref.r_ears = save_data["r_ears"] pref.g_ears = save_data["g_ears"] @@ -178,16 +178,16 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O save_data["eyes_blue"] = pref.b_eyes save_data["b_type"] = pref.b_type save_data["disabilities"] = pref.disabilities - save_data["organ_data"] = pref.organ_data - save_data["rlimb_data"] = pref.rlimb_data - save_data["body_markings"] = pref.body_markings + save_data["organ_data"] = check_list_copy(pref.organ_data) + save_data["rlimb_data"] = check_list_copy(pref.rlimb_data) + save_data["body_markings"] = check_list_copy(pref.body_markings) save_data["synth_color"] = pref.synth_color save_data["synth_red"] = pref.r_synth save_data["synth_green"] = pref.g_synth save_data["synth_blue"] = pref.b_synth save_data["synth_markings"] = pref.synth_markings save_data["bgstate"] = pref.bgstate - save_data["body_descriptors"] = pref.body_descriptors + save_data["body_descriptors"] = check_list_copy(pref.body_descriptors) save_data["ear_style"] = pref.ear_style save_data["r_ears"] = pref.r_ears save_data["g_ears"] = pref.g_ears diff --git a/code/modules/client/preference_setup/general/04_equipment.dm b/code/modules/client/preference_setup/general/04_equipment.dm index 57146e5832..2ed5cfc71a 100644 --- a/code/modules/client/preference_setup/general/04_equipment.dm +++ b/code/modules/client/preference_setup/general/04_equipment.dm @@ -7,8 +7,10 @@ sort_order = 4 /datum/category_item/player_setup_item/general/equipment/load_character(list/save_data) - pref.all_underwear = save_data["all_underwear"] - pref.all_underwear_metadata = save_data["all_underwear_metadata"] + pref.all_underwear = check_list_copy(save_data["all_underwear"]) + pref.all_underwear_metadata = check_list_copy(save_data["all_underwear_metadata"]) + for(var/i in pref.all_underwear_metadata) + pref.all_underwear_metadata[i] = check_list_copy(path2text_list(pref.all_underwear_metadata[i])) pref.backbag = save_data["backbag"] pref.pdachoice = save_data["pdachoice"] pref.communicator_visibility = save_data["communicator_visibility"] @@ -17,7 +19,10 @@ /datum/category_item/player_setup_item/general/equipment/save_character(list/save_data) save_data["all_underwear"] = pref.all_underwear - save_data["all_underwear_metadata"] = pref.all_underwear_metadata + var/list/underwear = list() + for(var/i in pref.all_underwear_metadata) + underwear[i] = pref.all_underwear_metadata[i].Copy() + save_data["all_underwear_metadata"] = underwear save_data["backbag"] = pref.backbag save_data["pdachoice"] = pref.pdachoice save_data["communicator_visibility"] = pref.communicator_visibility diff --git a/code/modules/client/preference_setup/loadout/loadout.dm b/code/modules/client/preference_setup/loadout/loadout.dm index fd92052458..8793eb2d35 100644 --- a/code/modules/client/preference_setup/loadout/loadout.dm +++ b/code/modules/client/preference_setup/loadout/loadout.dm @@ -46,17 +46,37 @@ var/list/gear_datums = list() var/current_tab = "General" /datum/category_item/player_setup_item/loadout/load_character(list/save_data) - pref.gear_list = save_data["gear_list"] + pref.gear_list = list() + var/all_gear = check_list_copy(save_data["gear_list"]) + for(var/i in all_gear) + var/list/entries = check_list_copy(all_gear["[i]"]) + if(!length(entries)) + entries = check_list_copy(all_gear[i]) + for(var/j in entries) + entries["[j]"] = check_list_copy(path2text_list(entries["[j]"])) + var/index = i + if(!isnum(i)) + index = text2num(i) + pref.gear_list["[index]"] = entries pref.gear_slot = save_data["gear_slot"] if(pref.gear_list!=null && pref.gear_slot!=null) pref.gear = pref.gear_list["[pref.gear_slot]"] else - pref.gear = save_data["gear"] + pref.gear = check_list_copy(save_data["gear"]) pref.gear_slot = 1 /datum/category_item/player_setup_item/loadout/save_character(list/save_data) pref.gear_list["[pref.gear_slot]"] = pref.gear - save_data["gear_list"] = pref.gear_list + var/list/all_gear = list() + var/worn_gear = check_list_copy(pref.gear_list) + for(var/i in worn_gear) + var/list/entries = check_list_copy(worn_gear["[i]"]) + if(!length(entries)) + entries = check_list_copy(worn_gear[i]) + for(var/j in entries) + entries["[j]"] = check_list_copy(entries["[j]"]) + all_gear["[i]"] = entries + save_data["gear_list"] = all_gear save_data["gear_slot"] = pref.gear_slot /datum/category_item/player_setup_item/loadout/proc/valid_gear_choices(var/max_cost) diff --git a/code/modules/client/preference_setup/occupation/occupation.dm b/code/modules/client/preference_setup/occupation/occupation.dm index 4557e0c5f5..3b5ec68c25 100644 --- a/code/modules/client/preference_setup/occupation/occupation.dm +++ b/code/modules/client/preference_setup/occupation/occupation.dm @@ -18,7 +18,7 @@ pref.job_talon_med = save_data["job_talon_med"] pref.job_talon_high = save_data["job_talon_high"] //VOREStation Add End - pref.player_alt_titles = save_data["player_alt_titles"] + pref.player_alt_titles = check_list_copy(save_data["player_alt_titles"]) /datum/category_item/player_setup_item/occupation/save_character(list/save_data) save_data["alternate_option"] = pref.alternate_option @@ -36,7 +36,7 @@ save_data["job_talon_med"] = pref.job_talon_med save_data["job_talon_high"] = pref.job_talon_high //VOREStation Add End - save_data["player_alt_titles"] = pref.player_alt_titles + save_data["player_alt_titles"] = check_list_copy(pref.player_alt_titles) /datum/category_item/player_setup_item/occupation/sanitize_character() pref.alternate_option = sanitize_integer(pref.alternate_option, 0, 2, initial(pref.alternate_option)) diff --git a/code/modules/client/preference_setup/skills/skills.dm b/code/modules/client/preference_setup/skills/skills.dm index eef0512acc..60e916241f 100644 --- a/code/modules/client/preference_setup/skills/skills.dm +++ b/code/modules/client/preference_setup/skills/skills.dm @@ -3,12 +3,12 @@ sort_order = 1 /datum/category_item/player_setup_item/skills/load_character(list/save_data) - pref.skills = save_data["skills"] + pref.skills = check_list_copy(save_data["skills"]) pref.used_skillpoints = save_data["used_skillpoints"] pref.skill_specialization = save_data["skill_specialization"] /datum/category_item/player_setup_item/skills/save_character(list/save_data) - save_data["skills"] = pref.skills + save_data["skills"] = check_list_copy(pref.skills) save_data["used_skillpoints"] = pref.used_skillpoints save_data["skill_specialization"] = pref.skill_specialization diff --git a/code/modules/client/preference_setup/vore/07_traits.dm b/code/modules/client/preference_setup/vore/07_traits.dm index da08d2b14e..5714c6eee4 100644 --- a/code/modules/client/preference_setup/vore/07_traits.dm +++ b/code/modules/client/preference_setup/vore/07_traits.dm @@ -110,9 +110,9 @@ var/global/list/valid_bloodreagents = list("default","iron","copper","phoron","s /datum/category_item/player_setup_item/vore/traits/load_character(list/save_data) pref.custom_species = save_data["custom_species"] pref.custom_base = save_data["custom_base"] - pref.pos_traits = text2path_list(save_data["pos_traits"]) - pref.neu_traits = text2path_list(save_data["neu_traits"]) - pref.neg_traits = text2path_list(save_data["neg_traits"]) + pref.pos_traits = text2path_list(check_list_copy(save_data["pos_traits"])) + pref.neu_traits = text2path_list(check_list_copy(save_data["neu_traits"])) + pref.neg_traits = text2path_list(check_list_copy(save_data["neg_traits"])) pref.blood_color = save_data["blood_color"] pref.blood_reagents = save_data["blood_reagents"] @@ -125,15 +125,15 @@ var/global/list/valid_bloodreagents = list("default","iron","copper","phoron","s pref.custom_ask = save_data["custom_ask"] pref.custom_exclaim = save_data["custom_exclaim"] - pref.custom_heat = save_data["custom_heat"] - pref.custom_cold = save_data["custom_cold"] + pref.custom_heat = check_list_copy(save_data["custom_heat"]) + pref.custom_cold = check_list_copy(save_data["custom_cold"]) /datum/category_item/player_setup_item/vore/traits/save_character(list/save_data) save_data["custom_species"] = pref.custom_species save_data["custom_base"] = pref.custom_base - save_data["pos_traits"] = pref.pos_traits - save_data["neu_traits"] = pref.neu_traits - save_data["neg_traits"] = pref.neg_traits + save_data["pos_traits"] = check_list_copy(pref.pos_traits) + save_data["neu_traits"] = check_list_copy(pref.neu_traits) + save_data["neg_traits"] = check_list_copy(pref.neg_traits) save_data["blood_color"] = pref.blood_color save_data["blood_reagents"] = pref.blood_reagents @@ -146,8 +146,8 @@ var/global/list/valid_bloodreagents = list("default","iron","copper","phoron","s save_data["custom_ask"] = pref.custom_ask save_data["custom_exclaim"] = pref.custom_exclaim - save_data["custom_heat"] = pref.custom_heat - save_data["custom_cold"] = pref.custom_cold + save_data["custom_heat"] = check_list_copy(pref.custom_heat) + save_data["custom_cold"] = check_list_copy(pref.custom_cold) /datum/category_item/player_setup_item/vore/traits/sanitize_character() if(!pref.pos_traits) pref.pos_traits = list() diff --git a/code/modules/client/preference_setup/vore/08_nif.dm b/code/modules/client/preference_setup/vore/08_nif.dm index e4a760be83..57a04413c7 100644 --- a/code/modules/client/preference_setup/vore/08_nif.dm +++ b/code/modules/client/preference_setup/vore/08_nif.dm @@ -21,7 +21,7 @@ pref.nif_path = save_data_file["nif_path"] pref.nif_durability = save_data_file["nif_durability"] - pref.nif_savedata = save_data_file["nif_savedata"] + pref.nif_savedata = check_list_copy(save_data_file["nif_savedata"]) /datum/category_item/player_setup_item/vore/nif/save_character() var/datum/json_savefile/savefile = new /datum/json_savefile(nif_savefile_path(pref.client_ckey)) @@ -29,7 +29,7 @@ save_data_file["nif_path"] = pref.nif_path save_data_file["nif_durability"] = pref.nif_durability - save_data_file["nif_savedata"] = pref.nif_savedata + save_data_file["nif_savedata"] = check_list_copy(pref.nif_savedata) savefile.set_entry("character[pref.default_slot]", save_data_file) savefile.save() From aa4528b9ca9f019fd9a92ae397a591be4b631f9b Mon Sep 17 00:00:00 2001 From: Kashargul Date: Thu, 26 Sep 2024 02:53:20 +0200 Subject: [PATCH 30/35] . --- code/modules/client/preference_setup/general/04_equipment.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/client/preference_setup/general/04_equipment.dm b/code/modules/client/preference_setup/general/04_equipment.dm index 2ed5cfc71a..c27aa65490 100644 --- a/code/modules/client/preference_setup/general/04_equipment.dm +++ b/code/modules/client/preference_setup/general/04_equipment.dm @@ -21,7 +21,7 @@ save_data["all_underwear"] = pref.all_underwear var/list/underwear = list() for(var/i in pref.all_underwear_metadata) - underwear[i] = pref.all_underwear_metadata[i].Copy() + underwear[i] = check_list_copy(pref.all_underwear_metadata[i]) save_data["all_underwear_metadata"] = underwear save_data["backbag"] = pref.backbag save_data["pdachoice"] = pref.pdachoice From 924d47c5041055b371609f83f5ce4a55bec56690 Mon Sep 17 00:00:00 2001 From: Kashargul Date: Thu, 26 Sep 2024 18:22:47 +0200 Subject: [PATCH 31/35] fully deref --- .../client/preference_setup/general/03_body.dm | 11 ++++++++++- .../client/preference_setup/general/04_equipment.dm | 2 +- .../client/preference_setup/loadout/loadout.dm | 9 ++------- .../modules/client/preference_setup/vore/07_traits.dm | 6 +++--- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm index bb685f62fa..a71049c51e 100644 --- a/code/modules/client/preference_setup/general/03_body.dm +++ b/code/modules/client/preference_setup/general/03_body.dm @@ -116,6 +116,10 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O pref.organ_data = check_list_copy(save_data["organ_data"]) pref.rlimb_data = check_list_copy(save_data["rlimb_data"]) pref.body_markings = check_list_copy(save_data["body_markings"]) + for(var/i in pref.body_markings) + pref.body_markings[i] = check_list_copy(pref.body_markings[i]) + for(var/j in pref.body_markings[i]) + pref.body_markings[i][j] = check_list_copy(pref.body_markings[i][j]) pref.synth_color = save_data["synth_color"] pref.r_synth = save_data["synth_red"] pref.g_synth = save_data["synth_green"] @@ -180,7 +184,12 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O save_data["disabilities"] = pref.disabilities save_data["organ_data"] = check_list_copy(pref.organ_data) save_data["rlimb_data"] = check_list_copy(pref.rlimb_data) - save_data["body_markings"] = check_list_copy(pref.body_markings) + var/list/body_markings = check_list_copy(pref.body_markings) + for(var/i in pref.body_markings) + body_markings[i] = check_list_copy(body_markings[i]) + for(var/j in body_markings[i]) + body_markings[i][j] = check_list_copy(body_markings[i][j]) + save_data["body_markings"] = body_markings save_data["synth_color"] = pref.synth_color save_data["synth_red"] = pref.r_synth save_data["synth_green"] = pref.g_synth diff --git a/code/modules/client/preference_setup/general/04_equipment.dm b/code/modules/client/preference_setup/general/04_equipment.dm index c27aa65490..554885046c 100644 --- a/code/modules/client/preference_setup/general/04_equipment.dm +++ b/code/modules/client/preference_setup/general/04_equipment.dm @@ -10,7 +10,7 @@ pref.all_underwear = check_list_copy(save_data["all_underwear"]) pref.all_underwear_metadata = check_list_copy(save_data["all_underwear_metadata"]) for(var/i in pref.all_underwear_metadata) - pref.all_underwear_metadata[i] = check_list_copy(path2text_list(pref.all_underwear_metadata[i])) + pref.all_underwear_metadata[i] = path2text_list(pref.all_underwear_metadata[i]) pref.backbag = save_data["backbag"] pref.pdachoice = save_data["pdachoice"] pref.communicator_visibility = save_data["communicator_visibility"] diff --git a/code/modules/client/preference_setup/loadout/loadout.dm b/code/modules/client/preference_setup/loadout/loadout.dm index 8793eb2d35..71b42bcf97 100644 --- a/code/modules/client/preference_setup/loadout/loadout.dm +++ b/code/modules/client/preference_setup/loadout/loadout.dm @@ -50,14 +50,9 @@ var/list/gear_datums = list() var/all_gear = check_list_copy(save_data["gear_list"]) for(var/i in all_gear) var/list/entries = check_list_copy(all_gear["[i]"]) - if(!length(entries)) - entries = check_list_copy(all_gear[i]) for(var/j in entries) - entries["[j]"] = check_list_copy(path2text_list(entries["[j]"])) - var/index = i - if(!isnum(i)) - index = text2num(i) - pref.gear_list["[index]"] = entries + entries["[j]"] = path2text_list(entries["[j]"]) + pref.gear_list["[i]"] = entries pref.gear_slot = save_data["gear_slot"] if(pref.gear_list!=null && pref.gear_slot!=null) pref.gear = pref.gear_list["[pref.gear_slot]"] diff --git a/code/modules/client/preference_setup/vore/07_traits.dm b/code/modules/client/preference_setup/vore/07_traits.dm index 5714c6eee4..b759c87b6b 100644 --- a/code/modules/client/preference_setup/vore/07_traits.dm +++ b/code/modules/client/preference_setup/vore/07_traits.dm @@ -110,9 +110,9 @@ var/global/list/valid_bloodreagents = list("default","iron","copper","phoron","s /datum/category_item/player_setup_item/vore/traits/load_character(list/save_data) pref.custom_species = save_data["custom_species"] pref.custom_base = save_data["custom_base"] - pref.pos_traits = text2path_list(check_list_copy(save_data["pos_traits"])) - pref.neu_traits = text2path_list(check_list_copy(save_data["neu_traits"])) - pref.neg_traits = text2path_list(check_list_copy(save_data["neg_traits"])) + pref.pos_traits = text2path_list(save_data["pos_traits"]) + pref.neu_traits = text2path_list(save_data["neu_traits"]) + pref.neg_traits = text2path_list(save_data["neg_traits"]) pref.blood_color = save_data["blood_color"] pref.blood_reagents = save_data["blood_reagents"] From 88340b57e943ca9ba182ee77dd7b46c9b2f4d600 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Thu, 26 Sep 2024 23:37:40 +0200 Subject: [PATCH 32/35] fix direct sound loop pref --- code/datums/looping_sounds/_looping_sound.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/looping_sounds/_looping_sound.dm b/code/datums/looping_sounds/_looping_sound.dm index 3b48fc1a84..d842dd8336 100644 --- a/code/datums/looping_sounds/_looping_sound.dm +++ b/code/datums/looping_sounds/_looping_sound.dm @@ -100,7 +100,7 @@ if(direct) if(ismob(thing)) var/mob/M = thing - if(M.check_sound_preference(pref_check)) + if(!M.check_sound_preference(pref_check)) continue SEND_SOUND(thing, S) else From a81f2b15cf74c7f6086d540db90c6b75ec84e827 Mon Sep 17 00:00:00 2001 From: Killian Date: Fri, 27 Sep 2024 08:46:02 +0100 Subject: [PATCH 33/35] laserdome improvements --- code/modules/awaymissions/redgate.dm | 34 + maps/redgate/laserdome.dmm | 1197 ++++++++++++++++++-------- 2 files changed, 851 insertions(+), 380 deletions(-) diff --git a/code/modules/awaymissions/redgate.dm b/code/modules/awaymissions/redgate.dm index d9b0f6feb4..30e0faf740 100644 --- a/code/modules/awaymissions/redgate.dm +++ b/code/modules/awaymissions/redgate.dm @@ -1763,3 +1763,37 @@ //todo; throw the ball in a random direction src.visible_message("\The [ball] bounces off \the [src]'s rim!") global_announcer.autosay("[ball.last_holder] threw the HYPERball and +missed!+ |Oooh!|","Laserdome Announcer","Entertainment") + +/obj/structure/prop/machine/biosyphon/laserdome + name = "Laserdome Orientation Holo" + desc = {"This device is holoprojecting a wall of flickering text into the air. It seems to be incomprehensible gibberish at first, perhaps an alien language, but the longer you stare the more it starts to make sense, slowly coalescing into coherent sentences in your preferred language. The overall word choice is a little eclectic or unusual at times, and some words remain impossible for you to decipher, but you get the gist pretty quickly. It reads:
+ MANY GREETINGS, BRAVE VISITOR! + THE (LIGHT AMPLIFIED BY STIMULATED EMISSION OF RADIATION) DOME IS FINEST PHYSICAL EXERCISE AND RECREATIONAL FACILITY LOCATED UPON THIS RELATIVE SIDE OF THE \[illegible\] SUPERMASSIVE OBSIDIAN VOID. + OUR GREAT BRAINS HERE AT THE \[incomprehensible\] HAPPY FUN TIME CORPORATION ARE SURE YOU WILL DEFINITELY MUCH ENJOY PARTAKING IN THE SIGHTS AND SOUNDS OF OUR ESTABLISHMENT. + EVEN IF YOU DO NOT WISH TO BE (OR ARE PHYSICALLY INCAPABLE OF) TAKING PART IN THE ACCELERATED LIGHT GAMES, PLEASE WITNESS OUR HEROIC GLADIATORS BATTLE FOR YOUR ENJOYMENT, AND VISIT LOCAL SERVICES SUCH AS THE \[incoherent\] ACCELERATED SUSTENANCE JOINT. + PLEASE TO BE FOLLOWINGS FLOOR-BASED POINTED INDICATORS TOWARDS PLACEMENTS OF INTERESTING! AND BE SURE TO BE TAKINGS FREE RADIO HEADSET CHIP TO BE HEARING ARENA ANNOUNCER! + THANKINGS YOU FOR YOUR PATRONAGE!!! + (p.s. please to be cleanings up after selves, do not leave messes on concourse, thankings you again muchly)"} + +/obj/structure/prop/machine/biosyphon/laserdome/hyperball + name = "Laserdome HYPERball Orientation Holo" + desc = {"This device is holoprojecting a wall of flickering text into the air. It seems to be incomprehensible gibberish at first, perhaps an alien language, but the longer you stare the more it starts to make sense, slowly coalescing into coherent sentences in your preferred language. The overall word choice is a little eclectic or unusual at times, and some words remain impossible for you to decipher, but you get the gist pretty quickly. It reads:
+ RULES OF HYPERBALL ARE SIMPLE!
+ TAKE BALL, SLAM-DUNKIFY INTO OPPOSING TEAM GOAL! + THREE POINTS AWARD FOR THROW (BUT WATCH OUT, CAN MISS)! + SEVEN POINTS IF ENDUNKENING IS BY HAND! + POINTS AM DEDUCT IF OWN-DUNKING! + FIRST TEAM TO TWENTY-AND-ONE POINTS IS WIN! + MUST WEAR TEAM PLATINGS FOR SCORINGS TO COUNT! + GOOD LUCK!!!"} + +/obj/structure/prop/machine/biosyphon/laserdome/flagcap + name = "Laserdome Capture-The-Flag Orientation Holo" + desc = {"This device is holoprojecting a wall of flickering text into the air. It seems to be incomprehensible gibberish at first, perhaps an alien language, but the longer you stare the more it starts to make sense, slowly coalescing into coherent sentences in your preferred language. The overall word choice is a little eclectic or unusual at times, and some words remain impossible for you to decipher, but you get the gist pretty quickly. It reads:
+ RULES OF CAPTURING FLAG ARE SIMPLE! + GO TO ENEMY BASE, TAKE THEIR FLAG, BRING BACK TO OWN BASE! + NO SCORE IF ENEMY TEAM HAS FLAG, SO PROTECT OWN FLAG! + RETURN OWN FLAG TO BASE BY TOUCHINGS! + FIRST TEAM TO THREE CAPTURES IS WIN! + MUST WEAR TEAM PLATINGS FOR SCORINGS TO COUNT! + GOOD LUCK!!!"} diff --git a/maps/redgate/laserdome.dmm b/maps/redgate/laserdome.dmm index 82210f3698..91dd9acce8 100644 --- a/maps/redgate/laserdome.dmm +++ b/maps/redgate/laserdome.dmm @@ -45,6 +45,12 @@ /obj/structure/closet/lasertag/red/laserdome, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/ctf_prep) +"awb" = ( +/obj/structure/table/rack, +/obj/random/drinksoft, +/obj/random/desatti_snacks, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby/store_1) "awn" = ( /obj/item/weapon/bikehorn/rubberducky, /turf/simulated/floor/tiled/white, @@ -81,6 +87,12 @@ }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/hyperball) +"baX" = ( +/obj/effect/floor_decal/industrial/arrows/blue{ + dir = 4 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/arena/hyperball) "bdI" = ( /obj/structure/table/bench/steel, /obj/effect/floor_decal/corner/blue{ @@ -101,11 +113,16 @@ /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/hbl_prep) "blC" = ( -/turf/simulated/floor/tiled/milspec/raised, -/area/redgate/laserdome/lobby) +/obj/structure/closet/secure_closet/freezer/fridge, +/turf/simulated/floor/tiled/eris/cafe, +/area/redgate/laserdome/lobby/restaurant) "bqk" = ( /turf/simulated/wall/tgmc/darkwall/deco3, /area/redgate/laserdome/arena/capture_the_flag) +"brx" = ( +/obj/effect/floor_decal/corner/red/full, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "brB" = ( /obj/structure/flag_decor/blue, /turf/simulated/wall/tgmc/darkwall, @@ -116,6 +133,10 @@ }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/capture_the_flag) +"bwE" = ( +/obj/structure/bed/chair/sofa/bench/left, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "bBP" = ( /obj/effect/floor_decal/corner/blue/diagonal, /turf/simulated/floor/tiled/milspec, @@ -124,13 +145,7 @@ /turf/simulated/wall/tgmc/darkwall/deco0, /area/redgate/laserdome/arena/hyperball) "bFM" = ( -/obj/structure/table/marble, -/obj/item/weapon/reagent_containers/food/snacks/chickenfillet, -/obj/item/weapon/reagent_containers/food/snacks/chickenfillet, -/obj/item/weapon/reagent_containers/food/snacks/chickenfillet, -/obj/item/weapon/reagent_containers/food/snacks/chickenfillet, -/obj/item/weapon/reagent_containers/food/snacks/chickenfillet, -/obj/item/weapon/reagent_containers/food/snacks/chickenfillet, +/obj/structure/closet/secure_closet/freezer/meat, /turf/simulated/floor/tiled/eris/cafe, /area/redgate/laserdome/lobby/restaurant) "bFV" = ( @@ -146,6 +161,21 @@ }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/capture_the_flag) +"bRk" = ( +/obj/structure/table/marble, +/obj/item/device/encryptionkey/ent, +/obj/item/device/encryptionkey/ent, +/obj/item/device/encryptionkey/ent, +/obj/item/device/encryptionkey/ent, +/obj/item/device/encryptionkey/ent, +/obj/item/device/encryptionkey/ent, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) +"bVo" = ( +/obj/structure/table/rack, +/obj/random/instrument, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby/store_1) "bXT" = ( /obj/effect/floor_decal/corner/red{ dir = 10 @@ -182,6 +212,28 @@ }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/hyperball) +"cIt" = ( +/obj/item/clothing/shoes/black, +/obj/item/clothing/under/color/red, +/obj/item/clothing/suit/redtag, +/obj/item/clothing/gloves/red, +/obj/item/clothing/head/redtag, +/mob/living/carbon/human/dummy/mannequin/autoequip{ + autorotate = 0; + name = "Laserdome Mannequin"; + real_name = "Laserdome Mannequin" + }, +/obj/effect/floor_decal/corner/red{ + dir = 10 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) +"cIU" = ( +/obj/effect/floor_decal/arrow{ + dir = 4 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "cMi" = ( /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/ctf_prep) @@ -200,6 +252,20 @@ "cSX" = ( /turf/simulated/wall/tgmc/window/darkwall/reinf, /area/redgate/laserdome/arena/capture_the_flag) +"cUF" = ( +/obj/effect/floor_decal/industrial/arrows/blue{ + dir = 4 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/arena/capture_the_flag) +"cUN" = ( +/obj/structure/table/marble, +/obj/structure/prop/machine/random_radio{ + desc = "It looks like a radio, but all the markings are in a strange language. It's tuned to a station playing music you don't recognize."; + pixel_y = 10 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "cXB" = ( /turf/simulated/wall/tgmc/darkwall/deco0, /area/redgate/laserdome/arena/capture_the_flag) @@ -213,6 +279,22 @@ /obj/structure/flag_decor/red, /turf/simulated/wall/tgmc/darkwall, /area/redgate/laserdome/arena/hyperball) +"dbA" = ( +/obj/item/clothing/shoes/black, +/obj/item/clothing/under/color/red, +/obj/item/clothing/suit/redtag, +/obj/item/clothing/gloves/red, +/obj/item/clothing/head/redtag, +/mob/living/carbon/human/dummy/mannequin/autoequip{ + autorotate = 0; + name = "Laserdome Mannequin"; + real_name = "Laserdome Mannequin" + }, +/obj/effect/floor_decal/corner/red/full{ + dir = 1 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "dhX" = ( /turf/space, /area/redgate/laserdome/space) @@ -256,13 +338,21 @@ /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena) "dJu" = ( -/obj/structure/closet/crate/bin, -/turf/simulated/floor/tiled/milspec, +/obj/structure/closet/crate/bin{ + anchored = 1 + }, +/turf/simulated/floor/tiled/monotile, /area/redgate/laserdome/lobby/spaceview_lounge) "dLr" = ( -/obj/structure/redgate/away, -/turf/simulated/floor/tiled/milspec/raised, -/area/redgate/laserdome/lobby) +/obj/structure/table/marble, +/obj/item/weapon/reagent_containers/food/snacks/chickenfillet, +/obj/item/weapon/reagent_containers/food/snacks/chickenfillet, +/obj/item/weapon/reagent_containers/food/snacks/chickenfillet, +/obj/item/weapon/reagent_containers/food/snacks/chickenfillet, +/obj/item/weapon/reagent_containers/food/snacks/chickenfillet, +/obj/item/weapon/reagent_containers/food/snacks/chickenfillet, +/turf/simulated/floor/tiled/eris/cafe, +/area/redgate/laserdome/lobby/restaurant) "dPZ" = ( /obj/effect/floor_decal/corner/yellow/diagonal, /turf/simulated/floor/tiled/milspec, @@ -304,6 +394,12 @@ /obj/machinery/chem_master/condimaster, /turf/simulated/floor/tiled/eris/cafe, /area/redgate/laserdome/lobby/restaurant) +"erC" = ( +/obj/effect/floor_decal/arrow{ + dir = 4 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby/spaceview_lounge) "evM" = ( /obj/effect/floor_decal/corner/blue{ dir = 1 @@ -322,6 +418,12 @@ /obj/structure/table/marble, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/lobby/store_1) +"eJA" = ( +/obj/structure/bed/chair/sofa/bench/left{ + dir = 1 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "eND" = ( /obj/structure/hyperball_pedestal, /obj/item/weapon/laserdome_hyperball, @@ -432,6 +534,12 @@ /obj/effect/floor_decal/corner/yellow, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/hyperball) +"fAL" = ( +/obj/structure/table/marble, +/obj/item/device/encryptionkey/ent, +/obj/item/device/encryptionkey/ent, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "fCY" = ( /obj/structure/flag_decor/blue, /turf/simulated/wall/tgmc/darkwall, @@ -486,12 +594,39 @@ }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/hyperball) +"gch" = ( +/obj/effect/floor_decal/corner/blue/full{ + dir = 1 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) +"geF" = ( +/obj/structure/table/rack, +/obj/random/cigarettes, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby/store_1) "ggB" = ( /obj/effect/floor_decal/corner/blue{ dir = 5 }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/capture_the_flag) +"ghx" = ( +/obj/item/clothing/shoes/black, +/obj/item/clothing/under/color/blue, +/obj/item/clothing/suit/bluetag, +/obj/item/clothing/gloves/blue, +/obj/item/clothing/head/bluetag, +/mob/living/carbon/human/dummy/mannequin/autoequip{ + autorotate = 0; + name = "Laserdome Mannequin"; + real_name = "Laserdome Mannequin" + }, +/obj/effect/floor_decal/corner/blue{ + dir = 5 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "giO" = ( /turf/simulated/wall/tgmc/darkwall, /area/redgate/laserdome/lobby/store_1) @@ -529,6 +664,11 @@ }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/ctf_prep) +"gKd" = ( +/obj/structure/table/rack, +/obj/random/drinksoft, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby/store_1) "gKy" = ( /obj/effect/floor_decal/corner/blue/full, /obj/structure/closet/lasertag/blue/laserdome, @@ -574,6 +714,10 @@ }, /turf/simulated/floor/tiled/white, /area/redgate/laserdome/lobby/showers) +"gZw" = ( +/obj/structure/flag_decor/red, +/turf/simulated/wall/tgmc/darkwall, +/area/redgate/laserdome/lobby) "had" = ( /obj/effect/floor_decal/corner/red{ dir = 6 @@ -583,6 +727,12 @@ }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/hyperball) +"haQ" = ( +/obj/effect/floor_decal/arrow{ + dir = 1 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "heF" = ( /obj/structure/flag_decor, /turf/simulated/wall/tgmc/darkwall, @@ -617,6 +767,13 @@ }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/ctf_prep) +"hiN" = ( +/obj/structure/table/marble, +/obj/structure/prop/machine/biosyphon/laserdome/flagcap{ + pixel_y = 6 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/arena/ctf_prep) "hnp" = ( /obj/effect/floor_decal/steeldecal/steel_decals10{ dir = 4 @@ -648,6 +805,12 @@ }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/ctf_prep) +"hxU" = ( +/obj/effect/floor_decal/corner/red{ + dir = 10 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "hBv" = ( /obj/machinery/body_scanconsole{ dir = 4 @@ -667,6 +830,12 @@ }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/hyperball) +"hPx" = ( +/obj/effect/floor_decal/corner/blue/full{ + dir = 8 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "icL" = ( /obj/effect/floor_decal/corner/red/diagonal, /obj/effect/floor_decal/corner/red/diagonal{ @@ -817,12 +986,34 @@ "jCB" = ( /turf/simulated/wall/tgmc/darkwall, /area/redgate/laserdome/lobby/spaceview_lounge) +"jIH" = ( +/obj/effect/floor_decal/arrow{ + dir = 1 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/arena/ctf_prep) "jKh" = ( /obj/effect/floor_decal/corner/blue{ dir = 10 }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/capture_the_flag) +"jPA" = ( +/obj/item/clothing/shoes/black, +/obj/item/clothing/under/color/blue, +/obj/item/clothing/suit/bluetag, +/obj/item/clothing/gloves/blue, +/obj/item/clothing/head/bluetag, +/mob/living/carbon/human/dummy/mannequin/autoequip{ + autorotate = 0; + name = "Laserdome Mannequin"; + real_name = "Laserdome Mannequin" + }, +/obj/effect/floor_decal/corner/blue{ + dir = 9 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "jQs" = ( /obj/effect/floor_decal/corner/yellow/full{ dir = 1 @@ -862,6 +1053,10 @@ }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/hyperball) +"kiJ" = ( +/obj/structure/table/marble, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "klg" = ( /obj/effect/floor_decal/corner/blue{ dir = 10 @@ -871,12 +1066,26 @@ }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/capture_the_flag) +"kms" = ( +/obj/structure/table/rack, +/obj/random/drinksoft, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby/store_2) +"kqL" = ( +/obj/structure/prop/machine/tgmc_console2, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "krH" = ( /obj/effect/floor_decal/corner/red{ dir = 8 }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/hyperball) +"krQ" = ( +/obj/structure/table/rack, +/obj/random/nukies_can_legal, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby/store_1) "ktn" = ( /obj/effect/floor_decal/corner/red{ dir = 6 @@ -897,6 +1106,12 @@ /obj/structure/closet/lasertag/red/laserdome, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/hbl_prep) +"kEA" = ( +/obj/structure/bed/chair/sofa/bench/right{ + dir = 1 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "kFg" = ( /obj/effect/floor_decal/corner/red{ dir = 5 @@ -927,6 +1142,12 @@ /obj/machinery/recharger/wallcharger, /turf/simulated/wall/tgmc/darkwall, /area/redgate/laserdome/arena/capture_the_flag) +"kPg" = ( +/obj/effect/floor_decal/corner/red{ + dir = 6 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "kRK" = ( /obj/effect/floor_decal/corner/blue{ dir = 5 @@ -948,6 +1169,12 @@ }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/capture_the_flag) +"kUV" = ( +/obj/structure/table/rack, +/obj/random/cigarettes, +/obj/random/desatti_snacks, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby/store_2) "kYn" = ( /obj/effect/floor_decal/corner/red/full{ dir = 4 @@ -987,7 +1214,10 @@ /turf/simulated/floor/tiled/eris/cafe, /area/redgate/laserdome/lobby/restaurant) "lpp" = ( -/obj/structure/closet/secure_closet/freezer/fridge, +/obj/structure/table/marble, +/obj/item/weapon/reagent_containers/food/snacks/fries, +/obj/item/weapon/reagent_containers/food/snacks/fries, +/obj/item/weapon/reagent_containers/food/snacks/fries, /turf/simulated/floor/tiled/eris/cafe, /area/redgate/laserdome/lobby/restaurant) "lDM" = ( @@ -1001,6 +1231,11 @@ }, /turf/simulated/floor/tiled/milspec/sterile, /area/redgate/laserdome/lobby/aid_station) +"lEw" = ( +/obj/structure/table/rack, +/obj/random/flashlight, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby/store_2) "lEQ" = ( /obj/effect/floor_decal/corner/yellow{ dir = 9 @@ -1018,6 +1253,12 @@ }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/ctf_prep) +"lPM" = ( +/obj/effect/floor_decal/corner/blue{ + dir = 10 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "lRb" = ( /obj/effect/floor_decal/corner/red{ dir = 8 @@ -1062,6 +1303,12 @@ "mhi" = ( /turf/simulated/wall/tgmc/darkwall, /area/redgate/laserdome/lobby/store_2) +"mib" = ( +/obj/structure/table/rack, +/obj/random/drinksoft, +/obj/random/desatti_snacks, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby/store_2) "mmm" = ( /obj/effect/floor_decal/corner/red{ dir = 10 @@ -1075,9 +1322,25 @@ /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/lobby/store_1) "myA" = ( -/obj/structure/closet/secure_closet/freezer/meat, +/obj/structure/table/marble, +/obj/random/pizzabox, +/obj/random/pizzabox, +/obj/random/pizzabox, +/obj/random/pizzabox, +/obj/item/weapon/material/knife/plastic, /turf/simulated/floor/tiled/eris/cafe, /area/redgate/laserdome/lobby/restaurant) +"mBZ" = ( +/obj/structure/table/rack, +/obj/random/instrument, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby/store_2) +"mCM" = ( +/obj/effect/floor_decal/industrial/arrows/blue{ + dir = 4 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/arena/hbl_prep) "mIW" = ( /obj/effect/floor_decal/corner/blue{ dir = 10 @@ -1094,6 +1357,10 @@ }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/hyperball) +"mMT" = ( +/obj/structure/flag_decor/blue, +/turf/simulated/wall/tgmc/darkwall, +/area/redgate/laserdome/lobby) "mPK" = ( /obj/effect/floor_decal/corner/blue{ dir = 9 @@ -1125,6 +1392,10 @@ /obj/structure/closet/lasertag/red/laserdome, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/ctf_prep) +"njI" = ( +/obj/structure/redgate/away, +/turf/simulated/floor/tiled/milspec/raised, +/area/redgate/laserdome/lobby) "nlK" = ( /obj/effect/floor_decal/corner/blue{ dir = 5 @@ -1134,9 +1405,18 @@ }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/hyperball) +"nuz" = ( +/turf/simulated/floor/tiled/milspec/raised, +/area/redgate/laserdome/lobby) "nxb" = ( /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/capture_the_flag) +"nyb" = ( +/obj/effect/floor_decal/corner/red/full{ + dir = 8 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "nBo" = ( /obj/effect/floor_decal/corner/red{ dir = 5 @@ -1226,13 +1506,19 @@ }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/hyperball) +"ohk" = ( +/obj/structure/bed/chair/sofa/bench/right, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "ont" = ( -/obj/structure/closet/crate/bin, /obj/machinery/light/small/neon/generic_green{ dir = 1; pixel_y = -23 }, -/turf/simulated/floor/tiled/milspec, +/obj/structure/closet/crate/bin{ + anchored = 1 + }, +/turf/simulated/floor/tiled/monotile, /area/redgate/laserdome/lobby) "oqT" = ( /obj/effect/floor_decal/corner/blue/full{ @@ -1272,6 +1558,10 @@ }, /turf/simulated/floor/tiled/milspec/sterile, /area/redgate/laserdome/lobby/aid_station) +"oAc" = ( +/obj/structure/bed/chair/sofa/bench, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "oHj" = ( /obj/machinery/recharger/wallcharger, /turf/simulated/wall/tgmc/darkwall, @@ -1327,16 +1617,21 @@ /obj/machinery/recharger/wallcharger, /turf/simulated/wall/tgmc/darkwall, /area/redgate/laserdome/arena/ctf_prep) +"pex" = ( +/obj/effect/floor_decal/corner/red{ + dir = 5 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "pfr" = ( -/obj/structure/table/marble, -/obj/item/weapon/reagent_containers/food/snacks/fries, -/obj/item/weapon/reagent_containers/food/snacks/fries, -/obj/item/weapon/reagent_containers/food/snacks/fries, -/obj/item/weapon/reagent_containers/food/snacks/fries, -/obj/item/weapon/reagent_containers/food/snacks/fries, -/obj/item/weapon/reagent_containers/food/snacks/fries, +/obj/machinery/door/airlock/freezer{ + name = "Restaurant Backroom" + }, /turf/simulated/floor/tiled/eris/cafe, /area/redgate/laserdome/lobby/restaurant) +"pfA" = ( +/turf/simulated/wall/tgmc/window/darkwall/reinf, +/area/redgate/laserdome/lobby) "pgz" = ( /obj/structure/table/marble, /obj/item/weapon/storage/firstaid/toxin{ @@ -1357,6 +1652,12 @@ }, /turf/simulated/floor/tiled/milspec/sterile, /area/redgate/laserdome/lobby/aid_station) +"poL" = ( +/obj/item/weapon/stool/baystool/padded{ + dir = 4 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "ppf" = ( /obj/structure/hyperball_goal/red, /turf/simulated/floor/tiled/milspec/raised, @@ -1364,6 +1665,18 @@ "pvv" = ( /turf/simulated/wall/tgmc/window/darkwall/reinf, /area/redgate/laserdome/arena/hbl_prep) +"pyU" = ( +/obj/structure/table/rack, +/obj/random/cigarettes, +/obj/random/nukies_can_legal, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby/store_1) +"pAB" = ( +/obj/effect/floor_decal/corner/blue{ + dir = 5 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "pBv" = ( /obj/effect/floor_decal/corner/blue/full{ dir = 4 @@ -1392,6 +1705,18 @@ }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/capture_the_flag) +"pVQ" = ( +/obj/structure/table/marble, +/obj/structure/prop/machine/biosyphon/laserdome{ + pixel_y = 6 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) +"pXq" = ( +/obj/structure/table/rack, +/obj/random/flashlight, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby/store_1) "pYa" = ( /obj/effect/floor_decal/corner/blue{ dir = 10 @@ -1458,6 +1783,12 @@ /obj/machinery/appliance/cooker/fryer, /turf/simulated/floor/tiled/eris/cafe, /area/redgate/laserdome/lobby/restaurant) +"qJa" = ( +/obj/effect/floor_decal/industrial/arrows/red{ + dir = 8 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/arena/hyperball) "qRv" = ( /obj/effect/floor_decal/corner/red{ dir = 1 @@ -1466,7 +1797,8 @@ /area/redgate/laserdome/arena/hyperball) "qVN" = ( /obj/structure/table/rack, -/obj/item/device/encryptionkey/ent, +/obj/random/cigarettes, +/obj/random/nukies_can_legal, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/lobby/store_2) "qWQ" = ( @@ -1481,6 +1813,12 @@ }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/capture_the_flag) +"qYD" = ( +/obj/structure/bed/chair/sofa/bench{ + dir = 1 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "raq" = ( /obj/effect/floor_decal/corner/yellow{ dir = 6 @@ -1488,8 +1826,10 @@ /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/capture_the_flag) "rjJ" = ( -/obj/structure/closet/crate/bin, -/turf/simulated/floor/tiled/milspec, +/obj/structure/closet/crate/bin{ + anchored = 1 + }, +/turf/simulated/floor/tiled/monotile, /area/redgate/laserdome/lobby) "rkC" = ( /obj/machinery/light/small/neon/generic_green{ @@ -1592,6 +1932,12 @@ /obj/structure/closet/crate/bin, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/ctf_prep) +"sbU" = ( +/obj/effect/floor_decal/industrial/arrows/red{ + dir = 8 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/arena/hbl_prep) "shp" = ( /obj/effect/floor_decal/corner/red{ dir = 10 @@ -1601,9 +1947,17 @@ /area/redgate/laserdome/arena/ctf_prep) "sox" = ( /obj/structure/table/rack, -/obj/item/device/encryptionkey/ent, +/obj/random/drinksoft, +/obj/random/drinksoft, +/obj/random/desatti_snacks, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/lobby/store_1) +"soY" = ( +/obj/effect/floor_decal/industrial/arrows/red{ + dir = 8 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/arena/ctf_prep) "suI" = ( /obj/effect/floor_decal/corner/yellow{ dir = 10 @@ -1658,6 +2012,22 @@ }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/hyperball) +"sRZ" = ( +/obj/item/clothing/shoes/black, +/obj/item/clothing/under/color/red, +/obj/item/clothing/suit/redtag, +/obj/item/clothing/gloves/red, +/obj/item/clothing/head/redtag, +/mob/living/carbon/human/dummy/mannequin/autoequip{ + autorotate = 0; + name = "Laserdome Mannequin"; + real_name = "Laserdome Mannequin" + }, +/obj/effect/floor_decal/corner/red{ + dir = 9 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "sSK" = ( /obj/effect/floor_decal/corner/blue/diagonal, /obj/effect/floor_decal/corner/blue/diagonal{ @@ -1674,6 +2044,10 @@ }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/hyperball) +"sWc" = ( +/obj/effect/floor_decal/arrow, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "sXa" = ( /obj/effect/floor_decal/corner/red/full, /turf/simulated/floor/tiled/milspec, @@ -1768,6 +2142,12 @@ }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/hbl_prep) +"tXj" = ( +/obj/effect/floor_decal/industrial/arrows/blue{ + dir = 4 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/arena/ctf_prep) "tZO" = ( /turf/simulated/wall/tgmc/darkwall, /area/redgate/laserdome/lobby/aid_station) @@ -1787,6 +2167,10 @@ }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/ctf_prep) +"udY" = ( +/obj/effect/floor_decal/arrow, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/arena/hbl_prep) "ugA" = ( /obj/structure/curtain/open/privacy{ name = "shower curtain" @@ -1877,6 +2261,12 @@ }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/capture_the_flag) +"uCy" = ( +/obj/effect/floor_decal/corner/blue{ + dir = 6 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "uIp" = ( /obj/effect/floor_decal/corner/red/full{ dir = 8 @@ -1900,6 +2290,22 @@ /obj/structure/closet/lasertag/blue/laserdome, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/ctf_prep) +"uTh" = ( +/obj/item/clothing/shoes/black, +/obj/item/clothing/under/color/blue, +/obj/item/clothing/suit/bluetag, +/obj/item/clothing/gloves/blue, +/obj/item/clothing/head/bluetag, +/mob/living/carbon/human/dummy/mannequin/autoequip{ + autorotate = 0; + name = "Laserdome Mannequin"; + real_name = "Laserdome Mannequin" + }, +/obj/effect/floor_decal/corner/blue/full{ + dir = 4 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "val" = ( /obj/effect/floor_decal/corner/red{ dir = 5 @@ -1924,6 +2330,12 @@ }, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/capture_the_flag) +"vid" = ( +/obj/structure/table/rack, +/obj/random/drinksoft, +/obj/random/nukies_can_legal, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby/store_2) "vjW" = ( /obj/effect/floor_decal/corner/red{ dir = 9 @@ -2030,6 +2442,12 @@ /obj/effect/floor_decal/corner/blue/full, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/hbl_prep) +"vYY" = ( +/obj/effect/floor_decal/industrial/arrows/red{ + dir = 8 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/arena/capture_the_flag) "vZq" = ( /obj/effect/floor_decal/corner/blue{ dir = 10 @@ -2053,6 +2471,13 @@ /obj/structure/table/bench/steel, /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/hbl_prep) +"wkd" = ( +/obj/structure/table/marble, +/obj/structure/prop/machine/biosyphon/laserdome/hyperball{ + pixel_y = 6 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/arena/hbl_prep) "wkM" = ( /obj/effect/map_effect/portal/line/side_b{ dir = 8 @@ -2087,6 +2512,10 @@ /obj/structure/table/marble, /turf/simulated/floor/tiled/milspec/sterile, /area/redgate/laserdome/lobby/aid_station) +"wws" = ( +/obj/effect/floor_decal/corner/blue/full, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "wDy" = ( /obj/effect/floor_decal/corner/blue/full{ dir = 1 @@ -2197,9 +2626,17 @@ /turf/simulated/floor/tiled/milspec, /area/redgate/laserdome/arena/capture_the_flag) "xHi" = ( -/obj/structure/closet/crate/bin, -/turf/simulated/floor/tiled/milspec, +/obj/structure/closet/crate/bin{ + anchored = 1 + }, +/turf/simulated/floor/tiled/monotile, /area/redgate/laserdome/lobby/restaurant) +"xIq" = ( +/obj/effect/floor_decal/corner/red/full{ + dir = 4 + }, +/turf/simulated/floor/tiled/milspec, +/area/redgate/laserdome/lobby) "xIt" = ( /obj/effect/floor_decal/corner/red/diagonal{ dir = 1 @@ -6248,7 +6685,7 @@ asC oes fbv evM -xPN +baX fLE wFI oes @@ -6345,7 +6782,7 @@ vkq kOV qsu aIy -nxb +cUF iyV ayr kOV @@ -7858,7 +8295,7 @@ ikl ikl ikl ikl -ikl +erC ikl ikl ikl @@ -8142,7 +8579,7 @@ ikl ikl ikl ikl -ikl +erC ikl ikl ikl @@ -8426,7 +8863,7 @@ xLH xMG xMG xMG -xMG +cIU xMG xMG xMG @@ -8710,7 +9147,7 @@ xMG xMG xMG xMG -xMG +cIU xMG xMG xMG @@ -8718,8 +9155,8 @@ rkC giO mmw sox -sox -sox +pXq +pyU mmw eCL xLH @@ -8995,7 +9432,7 @@ xMG xMG xMG xMG -xMG +cIU xMG xMG xMG @@ -9139,13 +9576,13 @@ xMG xMG xMG xMG -xMG +haQ xMG eCL mmw -sox -sox -sox +awb +geF +bVo mmw eCL xLH @@ -9263,10 +9700,10 @@ vHZ vHZ vHZ xLH -xLH -xLH -xLH -xLH +uab +uab +uab +uab uab uab wHk @@ -9279,15 +9716,15 @@ dCG dCG xMG xMG -xMG +cIU xMG xMG xMG eCL mmw -sox -sox -sox +pyU +pXq +gKd mmw eCL xLH @@ -9405,10 +9842,10 @@ vHZ vHZ vHZ xLH -xLH -xLH -xLH -xLH +uab +bFV +pPz +pPz uab coy pPz @@ -9547,10 +9984,10 @@ vHZ vHZ vHZ xLH -xLH -xLH -xLH -xLH +uab +blC +pPz +pPz uab twc pPz @@ -9563,7 +10000,7 @@ oWY dCG xMG xMG -xMG +cIU xMG xMG xMG @@ -9689,12 +10126,12 @@ vHZ vHZ vHZ xLH -xLH -xLH -xLH -xLH uab -lpp +blC +pPz +pPz +pfr +pPz pPz pPz pPz @@ -9711,9 +10148,9 @@ xMG jZT giO mmw -sox -sox -sox +krQ +gKd +awb mmw eCL xLH @@ -9831,12 +10268,12 @@ vHZ vHZ vHZ xLH -xLH -xLH -xLH -xLH uab -myA +bFM +pPz +pPz +uab +bFV pPz pPz nVx @@ -9847,7 +10284,7 @@ bFV hfU xMG xMG -xMG +cIU xMG xMG xMG @@ -9973,10 +10410,10 @@ vHZ vHZ vHZ xLH -xLH -xLH -xLH -xLH +uab +bFM +pPz +pPz uab nXX pPz @@ -10115,10 +10552,10 @@ vHZ vHZ vHZ xLH -xLH -xLH -xLH -xLH +uab +bFM +pPz +pPz uab qAM pPz @@ -10131,7 +10568,7 @@ bFV hfU xMG xMG -xMG +cIU xMG xMG wPO @@ -10257,10 +10694,10 @@ vHZ vHZ vHZ xLH -xLH -xLH -xLH -xLH +uab +dLr +pPz +pPz uab qBt pPz @@ -10399,10 +10836,10 @@ vHZ vHZ vHZ xLH -xLH -xLH -xLH -xLH +uab +fsP +pPz +pPz uab uzs pPz @@ -10415,7 +10852,7 @@ bFV hfU xMG xMG -xMG +cIU xMG xMG wPO @@ -10541,10 +10978,10 @@ vHZ vHZ vHZ xLH -xLH -xLH -xLH -xLH +uab +lpp +pPz +pPz uab gTS pPz @@ -10555,11 +10992,11 @@ pPz pPz bFV hfU +sWc xMG xMG xMG -xMG -xMG +haQ aSF rLV aSF @@ -10683,10 +11120,10 @@ xLH xLH xLH xLH -xLH -xLH -xLH -xLH +uab +lpp +pPz +pPz uab wFp pPz @@ -10699,7 +11136,7 @@ bFV hfU xMG xMG -xMG +cIU xMG xMG wPO @@ -10825,10 +11262,10 @@ xLH xLH xLH xLH -xLH -xLH -xLH -xLH +uab +myA +pPz +pPz uab eqO pPz @@ -10967,10 +11404,10 @@ xLH xLH xLH xLH -xLH -xLH -xLH -xLH +uab +myA +pPz +pPz uab lgv pPz @@ -10983,7 +11420,7 @@ bFV hfU xMG xMG -xMG +cIU xMG xMG wPO @@ -11109,15 +11546,15 @@ xLH xLH xLH xLH -xLH -xLH -xLH -xLH uab uab -fsP -pfr -bFM +uab +uab +uab +uab +uab +uab +uab uab uab uab @@ -11266,7 +11703,7 @@ rjJ xMG xMG xMG -xMG +cIU xMG xMG xMG @@ -11412,7 +11849,7 @@ xMG xMG xMG xMG -xMG +rjJ vDA vDA vDA @@ -11531,7 +11968,7 @@ xLH ymc wZd mad -cXM +sbU pCi wZd ymc @@ -11550,11 +11987,11 @@ xMG xMG xMG xMG +cIU xMG xMG xMG xMG -rjJ vDA fCY vDA @@ -11569,7 +12006,7 @@ vDA vDA jSI fhw -cMi +soY nEA jSI vDA @@ -11689,13 +12126,13 @@ akp vXs pvv xMG +eJA +ohk xMG xMG xMG -xMG -xMG -xMG -xMG +eJA +ohk xMG qnI diP @@ -11815,7 +12252,7 @@ xLH oIG whp cXM -cXM +sbU cXM uqG yet @@ -11831,13 +12268,13 @@ fxa tVf pvv xMG +qYD +oAc xMG +cIU xMG -xMG -xMG -xMG -xMG -xMG +qYD +oAc xMG qnI oVB @@ -11853,7 +12290,7 @@ vDA ngN fqR cMi -cMi +soY cMi rAb shp @@ -11973,13 +12410,13 @@ pvv pvv ymc xMG +kEA +bwE xMG xMG xMG -xMG -xMG -xMG -xMG +kEA +bwE xMG vDA qnI @@ -12117,9 +12554,9 @@ wgC xMG xMG xMG -blC -blC -blC +xMG +cIU +xMG xMG xMG xMG @@ -12241,45 +12678,45 @@ xLH oHj dSM cXM -cXM +wkd cXM uzE +udY cXM +udY cXM +udY cXM +udY cXM +udY cXM -cXM -cXM -cXM -cXM -cXM -cXM +udY uzE +sWc +xMG +sWc xMG xMG xMG -blC -dLr -blC -xMG -xMG +haQ xMG +haQ +dWp +jIH +cMi +jIH +cMi +jIH +cMi +jIH +cMi +jIH +cMi +jIH dWp cMi -cMi -cMi -cMi -cMi -cMi -cMi -cMi -cMi -cMi -cMi -dWp -cMi -cMi +hiN cMi sbo pbF @@ -12401,9 +12838,9 @@ blf xMG xMG xMG -blC -blC -blC +xMG +cIU +xMG xMG xMG xMG @@ -12541,13 +12978,13 @@ pvv pvv ymc xMG +eJA +ohk xMG xMG xMG -xMG -xMG -xMG -xMG +eJA +ohk xMG vDA qnI @@ -12667,7 +13104,7 @@ xLH wXJ whp cXM -cXM +mCM cXM bdI fga @@ -12683,13 +13120,13 @@ vjW iJM pvv xMG +qYD +oAc xMG +cIU xMG -xMG -xMG -xMG -xMG -xMG +qYD +oAc xMG qnI uIp @@ -12705,7 +13142,7 @@ vDA wED hhi cMi -cMi +tXj cMi rAb tRw @@ -12825,13 +13262,13 @@ qba rWF pvv xMG +kEA +bwE xMG xMG xMG -xMG -xMG -xMG -xMG +kEA +bwE xMG qnI ucr @@ -12951,7 +13388,7 @@ xLH ymc vsH fbG -cXM +mCM pYa vsH ymc @@ -12970,7 +13407,7 @@ xMG xMG xMG xMG -xMG +cIU xMG xMG xMG @@ -12989,7 +13426,7 @@ vDA vDA fCY djp -cMi +tXj xVN fCY vDA @@ -13254,7 +13691,7 @@ xMG xMG xMG xMG -xMG +cIU xMG xMG xMG @@ -13262,8 +13699,8 @@ jZT mhi xaR qVN -qVN -qVN +mib +lEw xaR vIe vDA @@ -13538,7 +13975,7 @@ xMG xMG xMG xMG -xMG +cIU xMG xMG xMG @@ -13687,9 +14124,9 @@ xMG xMG vIe xaR -qVN -qVN -qVN +mBZ +vid +kms xaR vIe xLH @@ -13822,16 +14259,16 @@ xMG xMG xMG xMG -xMG +cIU xMG xMG xMG xMG vIe xaR -qVN -qVN -qVN +kms +kUV +lEw xaR vIe xLH @@ -13966,7 +14403,7 @@ xMG xMG xMG xMG -xMG +haQ xMG xMG vIe @@ -14106,7 +14543,7 @@ hGF xMG xMG xMG -xMG +cIU xMG xMG xMG @@ -14246,7 +14683,7 @@ lcP jho hGF xMG -xMG +sWc xMG xMG xMG @@ -14255,9 +14692,9 @@ xMG ont mhi xaR -qVN -qVN -qVN +kms +kUV +vid xaR vIe xLH @@ -14390,7 +14827,7 @@ hGF xMG xMG xMG -xMG +cIU xMG xMG xMG @@ -14675,7 +15112,7 @@ xMG xMG xMG xMG -xMG +cIU xMG xMG xMG @@ -14959,7 +15396,7 @@ xMG xMG xMG xMG -xMG +cIU xMG xMG xLH @@ -15099,9 +15536,9 @@ nXQ xLH xLH xLH -xLH -xLH -xLH +xMG +xMG +xMG xLH xLH xLH @@ -15241,9 +15678,9 @@ nXQ xLH xLH xLH -xLH -xLH -xLH +xMG +xMG +cIU xLH xLH xLH @@ -15383,9 +15820,9 @@ xLH xLH xLH xLH -xLH -xLH -xLH +xMG +xMG +xMG xLH xLH xLH @@ -15520,19 +15957,19 @@ xLH xLH xLH xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH +mMT +hPx +jPA +wws +pfA +xMG +xMG +cIU +pfA +nyb +sRZ +brx +gZw xLH xLH xLH @@ -15663,17 +16100,17 @@ xLH xLH xLH xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH +pAB +xMG +lPM +pfA +xMG +xMG +xMG +pfA +pex +xMG +hxU xLH xLH xLH @@ -15805,17 +16242,17 @@ xLH xLH xLH xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH +pAB +xMG +lPM +pfA +xMG +xMG +cIU +pfA +pex +xMG +hxU xLH xLH xLH @@ -15947,17 +16384,17 @@ xLH xLH xLH xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH +pAB +xMG +lPM +pfA +xMG +xMG +xMG +pfA +pex +xMG +hxU xLH xLH xLH @@ -16088,19 +16525,19 @@ xLH xLH xLH xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH +mMT +ghx +xMG +lPM +pfA +xMG +xMG +cIU +pfA +pex +xMG +cIt +gZw xLH xLH xLH @@ -16231,17 +16668,17 @@ xLH xLH xLH xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH +pAB +xMG +lPM +pfA +xMG +xMG +xMG +pfA +pex +xMG +hxU xLH xLH xLH @@ -16373,17 +16810,17 @@ xLH xLH xLH xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH +pAB +xMG +lPM +pfA +xMG +xMG +cIU +pfA +pex +xMG +hxU xLH xLH xLH @@ -16515,17 +16952,17 @@ xLH xLH xLH xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH +pAB +xMG +lPM +pfA +xMG +xMG +xMG +pfA +pex +xMG +hxU xLH xLH xLH @@ -16656,19 +17093,19 @@ xLH xLH xLH xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH +mMT +gch +uCy +uTh +pfA +xMG +xMG +cIU +pfA +dbA +kPg +xIq +gZw xLH xLH xLH @@ -16803,9 +17240,9 @@ xLH xLH xLH xLH -xLH -xLH -xLH +xMG +xMG +xMG xLH xLH xLH @@ -16943,12 +17380,12 @@ xLH xLH xLH xLH -xLH -xLH -xLH -xLH -xLH -xLH +cUN +xMG +xMG +xMG +cIU +kiJ xLH xLH xLH @@ -17085,12 +17522,12 @@ xLH xLH xLH xLH -xLH -xLH -xLH -xLH -xLH -xLH +kqL +poL +kiJ +xMG +xMG +xMG xLH xLH xLH @@ -17227,12 +17664,12 @@ xLH xLH xLH xLH -xLH -xLH -xLH -xLH -xLH -xLH +bRk +kiJ +pVQ +xMG +cIU +xMG xLH xLH xLH @@ -17370,11 +17807,11 @@ xLH xLH xLH xLH -xLH -xLH -xLH -xLH -xLH +xMG +xMG +xMG +xMG +xMG xLH xLH xLH @@ -17511,13 +17948,13 @@ xLH xLH xLH xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH +fAL +xMG +nuz +nuz +nuz +xMG +fAL xLH xLH xLH @@ -17653,13 +18090,13 @@ xLH xLH xLH xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH +fAL +xMG +nuz +njI +nuz +xMG +fAL xLH xLH xLH @@ -17795,13 +18232,13 @@ xLH xLH xLH xLH -xLH -xLH -xLH -xLH -xLH -xLH -xLH +fAL +xMG +nuz +nuz +nuz +xMG +fAL xLH xLH xLH @@ -17938,11 +18375,11 @@ xLH xLH xLH xLH -xLH -xLH -xLH -xLH -xLH +xMG +xMG +xMG +xMG +xMG xLH xLH xLH @@ -18081,9 +18518,9 @@ xLH xLH xLH xLH -xLH -xLH -xLH +fAL +fAL +fAL xLH xLH xLH @@ -18176,7 +18613,7 @@ asC oes mUp wlw -xPN +qJa aue tUV oes @@ -18273,7 +18710,7 @@ vkq kOV dxx fYj -nxb +vYY bZe uBq kOV From 1a5ddcf0c722404e41c5a8f564b1c03f1ce834a8 Mon Sep 17 00:00:00 2001 From: SatinIsle Date: Fri, 27 Sep 2024 10:18:49 +0100 Subject: [PATCH 34/35] Fixes Prayers Fixed Prayer's and their associated admin buttons being visible to retired staff. --- code/modules/admin/verbs/pray.dm | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index f5035673a9..566b91fcd4 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -20,10 +20,11 @@ var/msg = "" + span_blue("[icon2html(cross, GLOB.admins)] " + span_purple("PRAY: ") + "[key_name(src, 1)] [ADMIN_QUE(src)] [ADMIN_PP(src)] [ADMIN_VV(src)] [ADMIN_SM(src)] ([admin_jump_link(src, src)]) [ADMIN_CA(src)] [ADMIN_SC(src)] [ADMIN_SMITE(src)]: [raw_msg]") + "" for(var/client/C in GLOB.admins) - if(R_ADMIN|R_EVENT & C.holder.rights) - if(C.prefs?.read_preference(/datum/preference/toggle/show_chat_prayers)) - to_chat(C, msg, type = MESSAGE_TYPE_PRAYER, confidential = TRUE) - C << 'sound/effects/ding.ogg' + if(!check_rights(R_ADMIN, 0, C)) + continue + if(C.prefs?.read_preference(/datum/preference/toggle/show_chat_prayers)) + to_chat(C, msg, type = MESSAGE_TYPE_PRAYER, confidential = TRUE) + C << 'sound/effects/ding.ogg' to_chat(usr, "Your prayers have been received by the gods.", confidential = TRUE) feedback_add_details("admin_verb","PR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -32,13 +33,15 @@ /proc/CentCom_announce(var/msg, var/mob/Sender, var/iamessage) msg = span_blue("" + span_orange("[uppertext(using_map.boss_short)]M[iamessage ? " IA" : ""]:") + "[key_name(Sender, 1)] [ADMIN_PP(Sender)] [ADMIN_VV(Sender)] [ADMIN_SM(Sender)] ([admin_jump_link(Sender)]) [ADMIN_CA(Sender)] [ADMIN_BSA(Sender)] [ADMIN_CENTCOM_REPLY(Sender)]: [msg]") for(var/client/C in GLOB.admins) //VOREStation Edit - GLOB admins - if(R_ADMIN|R_EVENT & C.holder.rights) - to_chat(C,msg) - C << 'sound/machines/signal.ogg' + if(!check_rights(R_ADMIN, 0, C)) + continue + to_chat(C,msg) + C << 'sound/machines/signal.ogg' /proc/Syndicate_announce(var/msg, var/mob/Sender) msg = span_blue("" + span_crimson("ILLEGAL:") + "[key_name(Sender, 1)] [ADMIN_PP(Sender)] [ADMIN_VV(Sender)] [ADMIN_SM(Sender)] ([admin_jump_link(Sender)]) [ADMIN_CA(Sender)] [ADMIN_BSA(Sender)] [ADMIN_SYNDICATE_REPLY(Sender)]: [msg]") for(var/client/C in GLOB.admins) //VOREStation Edit - GLOB admins - if(R_ADMIN|R_EVENT & C.holder.rights) - to_chat(C,msg) - C << 'sound/machines/signal.ogg' + if(!check_rights(R_ADMIN, 0, C)) + continue + to_chat(C,msg) + C << 'sound/machines/signal.ogg' From 9d5d3c2b1208c124945db78cac7f8d1289178c7f Mon Sep 17 00:00:00 2001 From: ShadowLarkens Date: Fri, 27 Sep 2024 03:35:36 -0700 Subject: [PATCH 35/35] Add tgui fix target --- bin/tgui-fix.cmd | 2 ++ tools/build/build.js | 14 ++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 bin/tgui-fix.cmd diff --git a/bin/tgui-fix.cmd b/bin/tgui-fix.cmd new file mode 100644 index 0000000000..f2844408ef --- /dev/null +++ b/bin/tgui-fix.cmd @@ -0,0 +1,2 @@ +@echo off +call "%~dp0\..\tools\build\build.bat" --wait-on-error tgui-fix %* diff --git a/tools/build/build.js b/tools/build/build.js index 5f1a101940..ea668b6608 100644 --- a/tools/build/build.js +++ b/tools/build/build.js @@ -417,6 +417,20 @@ export const TguiBenchTarget = new Juke.Target({ executes: () => yarn('tgui:bench'), }); +export const TguiPrettierFix = new Juke.Target({ + dependsOn: [YarnTarget], + executes: () => yarn('tgui:prettier-fix'), +}); + +export const TguiEslintFix = new Juke.Target({ + dependsOn: [YarnTarget], + executes: () => yarn('tgui:eslint-fix'), +}); + +export const TguiFix = new Juke.Target({ + dependsOn: [TguiPrettierFix, TguiEslintFix], +}); + export const TestTarget = new Juke.Target({ dependsOn: [DmTestTarget, TguiTestTarget], });