From d96172b31f86acbf70e9abdaf20c44c67d982d28 Mon Sep 17 00:00:00 2001 From: LT3 <83487515+lessthnthree@users.noreply.github.com> Date: Thu, 23 Jul 2026 10:49:10 -0700 Subject: [PATCH 001/139] Takes a knife to window airbags (#5971) ## About The Pull Request Removes Skyrat window airbags ## Why It's Good For The Game It never sat right with me that the reinforced windows get an additional set of magic indestructable bubble wrap to eliminate any negative effects from them being broken. ## Changelog :cl: LT3 del: Removed airbags from reinforced windows /:cl: --- .../window_airbags/code/window_airbag.dm | 128 ------------------ .../modules/window_airbags/readme.md | 6 - .../window_airbags/sound/airbag_arm.ogg | Bin 31139 -> 0 bytes .../window_airbags/sound/airbag_bang.ogg | Bin 59236 -> 0 bytes tgstation.dme | 1 - 5 files changed, 135 deletions(-) delete mode 100644 modular_skyrat/modules/window_airbags/code/window_airbag.dm delete mode 100644 modular_skyrat/modules/window_airbags/readme.md delete mode 100644 modular_skyrat/modules/window_airbags/sound/airbag_arm.ogg delete mode 100644 modular_skyrat/modules/window_airbags/sound/airbag_bang.ogg diff --git a/modular_skyrat/modules/window_airbags/code/window_airbag.dm b/modular_skyrat/modules/window_airbags/code/window_airbag.dm deleted file mode 100644 index ec82c777a68..00000000000 --- a/modular_skyrat/modules/window_airbags/code/window_airbag.dm +++ /dev/null @@ -1,128 +0,0 @@ -#define DISARM_TIME (3 SECONDS) - -/obj/structure/window/reinforced/fulltile/Initialize(mapload, direct) - . = ..() - RemoveElement(/datum/element/simple_rotation) - AddElement(/datum/element/airbag) - -/** - * Airbag Element - * - * Basically a fancy create on destroy. - */ -/datum/element/airbag - /// The type we spawn when our parent is destroyed - var/airbag_type = /obj/item/airbag/immediate_arm - /// The type we spawn when we are disarmed. - var/disarmed_type = /obj/item/airbag - -/datum/element/airbag/Attach(datum/target) - . = ..() - if(!ismovable(target)) - return ELEMENT_INCOMPATIBLE - - RegisterSignal(target, COMSIG_ATOM_DESTRUCTION, PROC_REF(deploy_airbag)) - RegisterSignal(target, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) - RegisterSignal(target, COMSIG_CLICK_ALT, PROC_REF(on_altclick)) - -/datum/element/airbag/Detach(datum/target) - . = ..() - UnregisterSignal(target, list(COMSIG_ATOM_DESTRUCTION, COMSIG_ATOM_EXAMINE, COMSIG_CLICK_ALT)) - -/datum/element/airbag/proc/deploy_airbag(atom/movable/destroying_atom, damage_flag) - SIGNAL_HANDLER - - new airbag_type(get_turf(destroying_atom)) - -/datum/element/airbag/proc/on_examine(datum/source, mob/user, list/examine_text) - SIGNAL_HANDLER - - examine_text += span_warning("It has a blinking red light indicating an airbag is installed. Alt+click to disarm.") - -/datum/element/airbag/proc/on_altclick(atom/movable/clicked_atom, mob/living/clicker) - SIGNAL_HANDLER - - if(!clicker.can_interact_with(clicked_atom)) - return - INVOKE_ASYNC(src, PROC_REF(disarm_airbag), clicked_atom, clicker) - -/datum/element/airbag/proc/disarm_airbag(atom/movable/clicked_atom, mob/living/clicker) - if(!istype(clicker)) - return - clicked_atom.balloon_alert(clicker, "disarming airbag...") - if(do_after(clicker, DISARM_TIME, clicked_atom)) - clicked_atom.balloon_alert(clicker, "airbag disarmed!") - new disarmed_type(get_turf(clicked_atom)) - Detach(clicked_atom) - -// A fun little gadget! -/obj/item/airbag - name = "airbag" - desc = "A small package with an explosive attached. Stand clear!" - icon = 'modular_skyrat/modules/inflatables/icons/inflatable.dmi' - icon_state = "airbag_safe" - base_icon_state = "airbag" - max_integrity = 10 - /// The time in which we deploy - var/detonate_time = 2 SECONDS - /// The item we drop on detonation - var/drop_type = /obj/structure/inflatable/window_airbag - /// Are we immediately armed? - var/immediate_arm = FALSE - /// Are we currently armed? - var/armed = FALSE - /// The sound we play when armed - var/armed_sound = 'modular_skyrat/modules/window_airbags/sound/airbag_arm.ogg' - /// The sound we play when we go bang - var/bang_sound = 'modular_skyrat/modules/window_airbags/sound/airbag_bang.ogg' - -/obj/item/airbag/Initialize(mapload) - . = ..() - if(immediate_arm) - arm() - anchored = TRUE - -/obj/item/airbag/update_icon_state() - . = ..() - icon_state = "[base_icon_state]_[armed ? "armed" : "safe"]" - -/obj/item/airbag/attack_self(mob/user, modifiers) - . = ..() - arm() - -/obj/item/airbag/proc/arm() - if(armed) - return - balloon_alert_to_viewers("armed!") - if(!anchored) - addtimer(CALLBACK(src, PROC_REF(deploy_anchor)), 1 SECONDS) - addtimer(CALLBACK(src, PROC_REF(bang)), detonate_time) - armed = TRUE - playsound(src, armed_sound, 50) - update_appearance() - -// Anchors the airbag to the ground, namely to prevent air movement. -/obj/item/airbag/proc/deploy_anchor() - if(!isturf(loc) || anchored) - return - balloon_alert_to_viewers("anchor deployed!") - anchored = TRUE - -// Detonates the airbag, dropping the item and playing the sound. -/obj/item/airbag/proc/bang() - var/obj/created_object = new drop_type(get_turf(src)) - playsound(src, bang_sound, 50, pressure_affected = FALSE) - do_smoke(1, 1, created_object, get_turf(src)) - qdel(src) - -/obj/item/airbag/immediate_arm - immediate_arm = TRUE - -/obj/structure/inflatable/window_airbag - name = "window airbag" - desc = "A quick deploying airbag that seals holes when a window is broken!" - icon_state = "airbag_wall" - torn_type = null // No debris left behind! - deflated_type = null - -#undef DISARM_TIME diff --git a/modular_skyrat/modules/window_airbags/readme.md b/modular_skyrat/modules/window_airbags/readme.md deleted file mode 100644 index 4628619d108..00000000000 --- a/modular_skyrat/modules/window_airbags/readme.md +++ /dev/null @@ -1,6 +0,0 @@ -## Credits -Code: [@Gandalf2k15] -Sprites: [TauCeti] - -## Developer Comments -I just want to say, this is a really cute little thing lol. diff --git a/modular_skyrat/modules/window_airbags/sound/airbag_arm.ogg b/modular_skyrat/modules/window_airbags/sound/airbag_arm.ogg deleted file mode 100644 index cb53eadac083d038fdf4597e166ec15d817014bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31139 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 Date: Thu, 23 Jul 2026 19:49:39 +0200 Subject: [PATCH 002/139] Automatic changelog for PR #5971 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5971.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5971.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5971.yml b/html/changelogs/AutoChangeLog-bubber-pr-5971.yml new file mode 100644 index 00000000000..89f89d7d5b3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-5971.yml @@ -0,0 +1,4 @@ +author: "LT3" +delete-after: True +changes: + - rscdel: "Removed airbags from reinforced windows" \ No newline at end of file From 85e374d2bbfe82642dfcac14778edef644c57f77 Mon Sep 17 00:00:00 2001 From: nikothedude <59709059+nikothedude@users.noreply.github.com> Date: Thu, 23 Jul 2026 17:54:21 -0400 Subject: [PATCH 003/139] Forces the vote panel for all clients to open when the storyteller reminder occurs (#5926) ## About The Pull Request Title. ## Why It's Good For The Game This is the most important vote in the game and yet we have a pitifully small interaction level. This at the very least should force you to acknowledge the vote, making abstaining a intentional choice. ## Proof Of Testing
Screenshots/Videos this is hard to test bc it needs two clients and its a ui thing - just trust me, it works, ive tested it
## Changelog :cl: add: The vote panel is now forced open by storyteller votes /:cl: --------- Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com> --- modular_zubbers/code/controllers/subsystem/vote.dm | 4 ++++ modular_zubbers/code/modules/storyteller/storyteller_vote.dm | 1 + 2 files changed, 5 insertions(+) diff --git a/modular_zubbers/code/controllers/subsystem/vote.dm b/modular_zubbers/code/controllers/subsystem/vote.dm index 8c204ed87db..f4288af44ff 100644 --- a/modular_zubbers/code/controllers/subsystem/vote.dm +++ b/modular_zubbers/code/controllers/subsystem/vote.dm @@ -3,6 +3,8 @@ var/vote_reminder = FALSE /// Has the vote reminder fired yet var/reminder_fired = FALSE + /// Do we force open the panel for people who havent voted on our reminder? + var/force_open_panel_on_reminder = FALSE /datum/controller/subsystem/vote dependencies = list( @@ -37,6 +39,8 @@ SEND_SOUND(late_voter, sound(current_vote.vote_sound)) to_chat(late_voter, vote_font(fieldset_block("[current_vote.name] Vote", "It's time to make your choices! Type 'vote' or click
here to place your votes.", "boxed_message purple_box"))) + if (current_vote.force_open_panel_on_reminder) + SSvote.ui_interact(late_voter.mob) /** * Ranked choice voting, where voters rank options in order of preference. diff --git a/modular_zubbers/code/modules/storyteller/storyteller_vote.dm b/modular_zubbers/code/modules/storyteller/storyteller_vote.dm index 9aa2dedf850..cc606b90218 100644 --- a/modular_zubbers/code/modules/storyteller/storyteller_vote.dm +++ b/modular_zubbers/code/modules/storyteller/storyteller_vote.dm @@ -13,6 +13,7 @@ ranked_winner_threshold = 50 display_statistics = FALSE vote_reminder = TRUE + force_open_panel_on_reminder = TRUE /datum/vote/storyteller/New() . = ..() From 6cd763359a49ee62c7fe1f087df7ea900af6d74d Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Thu, 23 Jul 2026 21:55:30 +0000 Subject: [PATCH 004/139] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5971.yml | 4 ---- html/changelogs/bubber_archive/2026-07.yml | 3 +++ 2 files changed, 3 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5971.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5971.yml b/html/changelogs/AutoChangeLog-bubber-pr-5971.yml deleted file mode 100644 index 89f89d7d5b3..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-5971.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "LT3" -delete-after: True -changes: - - rscdel: "Removed airbags from reinforced windows" \ No newline at end of file diff --git a/html/changelogs/bubber_archive/2026-07.yml b/html/changelogs/bubber_archive/2026-07.yml index c51265252fe..3c2422b3608 100644 --- a/html/changelogs/bubber_archive/2026-07.yml +++ b/html/changelogs/bubber_archive/2026-07.yml @@ -232,3 +232,6 @@ - rscadd: Added the megacell charger - bugfix: Fixes a runtime that happened when cells were ejected from the cell charger via alt-click +2026-07-23: + LT3: + - rscdel: Removed airbags from reinforced windows From 6c3b795adbbc0ee1bf5707065ac0b6e1c5dd82cf Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Thu, 23 Jul 2026 23:55:58 +0200 Subject: [PATCH 005/139] Automatic changelog for PR #5926 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5926.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5926.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5926.yml b/html/changelogs/AutoChangeLog-bubber-pr-5926.yml new file mode 100644 index 00000000000..a457789e199 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-5926.yml @@ -0,0 +1,4 @@ +author: "nikothedude" +delete-after: True +changes: + - rscadd: "The vote panel is now forced open by storyteller votes" \ No newline at end of file From ab6fff45e4ef0a3e96dd80d5c0079854b464d555 Mon Sep 17 00:00:00 2001 From: Alexis Date: Thu, 23 Jul 2026 21:37:30 -0400 Subject: [PATCH 006/139] Normalizer Accessories (#5992) ## About The Pull Request Adds accessories that can change your mob size to be normal sized when worn, then back to bigger sized when removed. The sprites and a majority of the code come from https://github.com/quotefox/Hyper-Station-13. ## Why It's Good For The Game This allows players that play as oversized to be able to play as roles such as security or mining to be a normal size while easily being able to turn back. Something that a lot of players already do through the use of a S.A.D, NIFs, or the morpher quirk. ## Proof Of Testing See below. In the video it shows 1.5x size, but this also works with oversized.
Screenshots/Videos https://github.com/user-attachments/assets/63bac3fe-4eda-4c4a-8cdf-3e1e204c35c0 image
## Changelog :cl: add: Added Normalizer accessories to the loadout. These can be worn to make you 'normal' sized. /:cl: --- .../code/modules/clothing/clothing.dm | 25 +++++++++++ .../modules/clothing/gloves/size_changing.dm | 35 ++++++++++++++++ .../modules/clothing/neck/size_changing.dm | 39 ++++++++++++++++++ .../code/modules/loadout/categories/gloves.dm | 8 ++++ .../code/modules/loadout/categories/neck.dm | 12 ++++++ .../code/modules/mob/living/living.dm | 7 ++-- .../icons/mob/clothing/gloves/gloves.dmi | Bin 733 -> 1893 bytes .../icons/mob/clothing/neck/neck.dmi | Bin 34662 -> 33825 bytes .../icons/obj/clothing/gloves/gloves.dmi | Bin 869 -> 2527 bytes .../icons/obj/clothing/neck/neck.dmi | Bin 24342 -> 22018 bytes tgstation.dme | 3 ++ 11 files changed, 125 insertions(+), 4 deletions(-) create mode 100644 modular_zubbers/code/modules/clothing/clothing.dm create mode 100644 modular_zubbers/code/modules/clothing/gloves/size_changing.dm create mode 100644 modular_zubbers/code/modules/clothing/neck/size_changing.dm diff --git a/modular_zubbers/code/modules/clothing/clothing.dm b/modular_zubbers/code/modules/clothing/clothing.dm new file mode 100644 index 00000000000..15ec13a049a --- /dev/null +++ b/modular_zubbers/code/modules/clothing/clothing.dm @@ -0,0 +1,25 @@ +/// For applying a normalization +/obj/item/clothing/proc/normalize_mob_size(mob/living/carbon/human/resizer) + if(resizer.normalized) + to_chat(resizer, span_danger("This accessory buzzes, being overwritten by another.")) + playsound(resizer, 'sound/machines/buzz/buzz-sigh.ogg', 50, 1) + return + playsound(resizer, 'sound/effects/magic.ogg', 50, 1) + flash_lighting_fx(3, 3, LIGHT_COLOR_PURPLE) + resizer.visible_message(span_warning("A flash of purple light engulfs [resizer], before they change to normal!"), span_notice("You feel warm for a moment, before everything scales to your size...")) + resizer.dna.features["body_size"] = RESIZE_DEFAULT_SIZE + resizer.dna.update_body_size() + resizer.normalized = TRUE + +/// For removing a normalization, and reverting back to normal +/obj/item/clothing/proc/denormalize_mob_size(mob/living/carbon/human/resizer) + if(resizer.normalized) + playsound(resizer,'sound/items/weapons/emitter2.ogg', 50, 1) + flash_lighting_fx(3, 3, LIGHT_COLOR_YELLOW) + resizer.visible_message(span_warning("Golden light engulfs [resizer], and they shoot back to their default height!"), span_notice("Energy rushes through your body, and you return to normal.")) + if(resizer.get_quirk(/datum/quirk/oversized)) + resizer.dna.features["body_size"] = 2 + else + resizer.dna.features["body_size"] = resizer?.client?.prefs?.read_preference(/datum/preference/numeric/body_size) + resizer.dna.update_body_size() + resizer.normalized = FALSE diff --git a/modular_zubbers/code/modules/clothing/gloves/size_changing.dm b/modular_zubbers/code/modules/clothing/gloves/size_changing.dm new file mode 100644 index 00000000000..d94b62a71b9 --- /dev/null +++ b/modular_zubbers/code/modules/clothing/gloves/size_changing.dm @@ -0,0 +1,35 @@ +// SynTech ring +/obj/item/clothing/gloves/ring/syntech + name = "normalizer ring" + desc = "An expensive, shimmering ring gilded with golden markings. It will 'normalize' the size of the user to a specified height approved for work-conditions, as long as it is equipped. The artificial violet gem inside twinkles ominously." + icon = 'modular_zubbers/icons/obj/clothing/gloves/gloves.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/gloves/gloves.dmi' + worn_icon_state = "sring" + icon_state = "ring" // No use in a unique sprite since it's just one pixel + w_class = WEIGHT_CLASS_TINY + body_parts_covered = 0 + strip_delay = 40 + +/obj/item/clothing/gloves/ring/syntech/equipped(mob/living/user, slot) + . = ..() + if(ishuman(user)) + var/mob/living/carbon/human/human_target = user + if(slot == ITEM_SLOT_GLOVES) + + if(human_target?.client?.prefs?.read_preference(/datum/preference/numeric/body_size) >= RESIZE_DEFAULT_SIZE) + normalize_mob_size(human_target) + +/obj/item/clothing/gloves/ring/syntech/dropped(mob/living/user, slot) + . = ..() + if(ishuman(user)) + var/mob/living/carbon/human/human_target = user + + if(human_target.normalized) + denormalize_mob_size(human_target) + +// SynTech Wristband +/obj/item/clothing/gloves/ring/syntech/band + name = "normalizer wristband" + desc = "An expensive technological wristband cast in purples with shimmering golds. It will 'normalize' the size of the user to a specified height for approved work-conditions, as long as it is equipped. There is a small screen buzzing with information." + worn_icon_state = "syntechband" + icon_state = "wristband" diff --git a/modular_zubbers/code/modules/clothing/neck/size_changing.dm b/modular_zubbers/code/modules/clothing/neck/size_changing.dm new file mode 100644 index 00000000000..49e99db5303 --- /dev/null +++ b/modular_zubbers/code/modules/clothing/neck/size_changing.dm @@ -0,0 +1,39 @@ +// Syntech Pendant +/obj/item/clothing/neck/syntech + name = "normalizer pendant" + desc = "A vibrant violet jewel cast in silvery-gold metals. It will 'normalize' the size of the user to a specified height for approved work-conditions, as long as it is equipped. The artificial violet gem inside twinkles ominously." + icon = 'modular_zubbers/icons/obj/clothing/neck/neck.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/neck/neck.dmi' + worn_icon_state = "pendant" + icon_state = "pendant" + +/obj/item/clothing/neck/syntech/equipped(mob/living/user, slot) + . = ..() + if(ishuman(user)) + var/mob/living/carbon/human/human_target = user + if(slot == ITEM_SLOT_NECK) + + if(human_target?.client?.prefs?.read_preference(/datum/preference/numeric/body_size) >= RESIZE_DEFAULT_SIZE) + normalize_mob_size(human_target) + +/obj/item/clothing/neck/syntech/dropped(mob/living/user, slot) + . = ..() + if(ishuman(user)) + var/mob/living/carbon/human/human_target = user + + if(human_target.normalized) + denormalize_mob_size(human_target) + +// Syntech Choker +/obj/item/clothing/neck/syntech/choker + name = "normalizer choker" + desc = "A sleek, tight-fitting choker embezzled with silver to gold. It will 'normalize' the size of the user to a specified height for approved work-conditions, as long as it is equipped. There is a small screen buzzing with information." + worn_icon_state = "collar" + icon_state = "choker" + +// Syntech Collar +/obj/item/clothing/neck/syntech/collar + name = "normalizer collar" + desc = "A cute pet collar, technologically designed with vibrant purples and smooth silvers. It will 'normalize' the size of the user to a specified height for approved work-conditions, as long as it is equipped. The artificial violet gem inside twinkles ominously." + worn_icon_state = "collar" + icon_state = "collar" diff --git a/modular_zubbers/code/modules/loadout/categories/gloves.dm b/modular_zubbers/code/modules/loadout/categories/gloves.dm index dc52f08108b..22f84e48d5e 100644 --- a/modular_zubbers/code/modules/loadout/categories/gloves.dm +++ b/modular_zubbers/code/modules/loadout/categories/gloves.dm @@ -203,3 +203,11 @@ /datum/loadout_item/gloves/latex_gloves name = "Latex Gloves" item_path = /obj/item/clothing/gloves/latex_gloves + +/datum/loadout_item/gloves/normalizer + name = "Normalizer Ring" + item_path = /obj/item/clothing/gloves/ring/syntech + +/datum/loadout_item/gloves/normalizer/band + name = "Normalizer Wristband" + item_path = /obj/item/clothing/gloves/ring/syntech/band diff --git a/modular_zubbers/code/modules/loadout/categories/neck.dm b/modular_zubbers/code/modules/loadout/categories/neck.dm index 3f269946f2f..fc51d53a516 100644 --- a/modular_zubbers/code/modules/loadout/categories/neck.dm +++ b/modular_zubbers/code/modules/loadout/categories/neck.dm @@ -85,3 +85,15 @@ /datum/loadout_item/suit/dagger_mantle name = "'Dagger' Designer Mantle" item_path = /obj/item/clothing/suit/dagger_mantle + +/datum/loadout_item/neck/normalizer + name = "Normalizer Pendant" + item_path = /obj/item/clothing/neck/syntech + +/datum/loadout_item/neck/normalizer/choker + name = "Normalizer Choker" + item_path = /obj/item/clothing/neck/syntech/choker + +/datum/loadout_item/neck/normalizer/collar + name = "Normalizer Collar" + item_path = /obj/item/clothing/neck/syntech/collar diff --git a/modular_zubbers/code/modules/mob/living/living.dm b/modular_zubbers/code/modules/mob/living/living.dm index 162838cf44d..971d2955e62 100644 --- a/modular_zubbers/code/modules/mob/living/living.dm +++ b/modular_zubbers/code/modules/mob/living/living.dm @@ -1,7 +1,6 @@ -/* /mob/living/Initialize(mapload) - . = ..() - AddComponent(/datum/component/status_indicator) - */ +/mob/living + /// Normalized is a check for instances where more than one accessory of jewelry is worn. For all intensive purposes, only the first worn accessory stores the user's size. + var/normalized = FALSE /// Toggle admin frozen /mob/living/proc/toggle_admin_freeze(client/admin) diff --git a/modular_zubbers/icons/mob/clothing/gloves/gloves.dmi b/modular_zubbers/icons/mob/clothing/gloves/gloves.dmi index 9ee9293d37afb7d70a482b752d2339b66f16e923..c0f025e841243ae7adce4d3ce0f0a014b69a5db0 100644 GIT binary patch literal 1893 zcmb`IdpOez7{{lC$R$bAMW>6?F+X^L*aRU+?oi-}ianH|?aSi?*h*CI|%5 zc5`*|UXJ&_nTFc3Pv;=_F9&i0)GylULKGYm78xCejsSt;D9LXtb%+P_)IQY_uBpWq zeI7fvjdUcqF-vxN(;#`)Qv+@GS#XY_0Hzf-XG_3rngmKf302dMI>q=r;s;-|^^>7& zeZ1o|I%ep4D3X;SB5v(|tWDGE$2VV*ocjE(xpeNhJolwYh1+BE0bJ6}g~U2YmLk(pTw#Kx!m6rz6lfii97O3XL&po>KZWWJOFwINiWtl!0R4pManXZh(LjV^c)l6KMm_GwpWwUd!S<%Z;tBfI$*OZAN(Tp*5; z=ALoeoW+a_sTA2pvay=z`4VRd!JAaSTPd+uifoZU6ryVs#wri0-+UjFn*h2Vp{nQo z-`rBMuT4C56ERpFL+fF7zRs~(CChH+`FD+-J+*!1A+&#$d&0Tc=iPJnCtw{%`PE^h zs;2?-p?$wRsGCj@2zOcjCJz3v4u4>VDoEQE+8mhQjoj$TXWmXu5GUuQ!`zUqci7(K zeVIQ8Q_D3La^8cf(al;~{jJFh{UqC|4MBAxU7IWN(!qJE2diYkH^AcUu&E(pJ@6tX zJ4!bp2m;aiI0cLZzp?wp2%M7dW5av3l4x&52O!uE`+p|TG37$qjwrRJn>URbBy zBVujT!%$RUX6s~jM=zpkBOy1jVuxQG8}&Ox=f%6V;^*VF(~QSMaD{pM*DJntx%=M_ zZ4R*S$dJ47nZr|3U7IAfWko6NrwK~f2VPInG)^cAbb$NFgDI0+?aWW&7cY(mRbKj5 zWOu=&N(z{Q1#}d`a>{{@EejI$-p_>tXDP<^LnAfqdwcu|@X|_D6+q4{1t_-fYrA;y z)JZ`&j$gz=M>G4x{bOF6__t~AtQKm|v8MZlg@{cux=>DyV_+wo_)_MBZ)$lj< zZ`Na*5)s-Fa|bKZ&EuuScFyq_0A?ZF!Pd@ZzXPX+F@tqTTn*RQly(Rdv-2B31Rhg%;2?> ziGdCHIur^Ob>&z{Gk3}dDfM5-vsAQ+SxFHb#6mqk{@hDKXr_B}{VsF03dJDR7PB*s=(b}eR2-=+Uo!-?&a_zP?J>}NZ4!ya(jlr2 z)-PKM@s9TIySs(q)OB4`COvG@?apo9F4ix~`#!gEk#;P~I1}4VGJs_D< z`bX0+0B&)96c%oZ^T3>VwNvwc%QIvU6+fQh+fuW^g3do|7bA%T9h9Q;`zf^@#LxzZ z$U~=H&&be`YUl}cH1@3c zK1$l}rON6|wjMV@o3zL)|4z&r9b~L0BazCGpzwM-{h6LVs}j?hEpKJ1Z8%2;*T%A^ zyKUaJJrLbnY;0!M7{5wa2`qw*{`F8UYQNe2Xvy)ymF2O2&r(1?_iP>j8*7p$8eW$< zV3^`~oI4*M7c;ePACYb07|R4?H}dM?M0%Z91JCdS`AvD-4KH~&+p6SDfl5DN_K!Rp z2}SIfc)56F>eYw@eMlrTk=kLEa%EXq?<(%pnytdGt`5ho{!g+Jrb?_}&hwV!mB;em O1i3kTI+Y&{A^rtON@-dE literal 733 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 E4IEC6-2eap literal 34662 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 diff --git a/modular_zubbers/icons/obj/clothing/gloves/gloves.dmi b/modular_zubbers/icons/obj/clothing/gloves/gloves.dmi index c9e18738e088964be4f5209599c7c221842e2d04..bfb9a85f478bba89f8938831b54f9a6c42f78383 100644 GIT binary patch delta 2429 zcmZveX*AReAIJZrVHjhH>@tHIvQ0#?O%szb*(OAUEEVC&mVNn8y7slWB9wIy8Mz4A z*SMv!FA*|HwlPK*F|OyF=bZaI=R7Zdzt7w6oA2j*X&he!PsfwY2t06cH~;`VL?gV# z5uJ_>$H{T@Y3hEwN63Cu8UaSVNKo4v;!;q+3@E7(ue>wvD6z2Z82!L5i317(Ef?0L!Aw`kOyf5yO@-7il~GIX(Q$u}y-;&03^aJZ~c!hDMAzMG3J!_P2PC zD27@k7IQs7$%3D|KN&Wfk4F}3X%zGmfVnSI)R(?3{@X-_e)?6aGs_6q+8o1=Dy-uc@fO54Y+twDQJVbC z+h22dHEdn_jURbKhjf)XFJJY7#N5j$UT4$Jc&7TX;m$;ZRPZ=pIioe1n8bLHk;3zA4)VIqcBO*ot2cE9dCt5*qt&g^^C z4A*lP=>8~(G!j}i`~cI%K}~GKlM7%jMHjxnpTF<$&kM(P!Eln~Gu+i$Y#-mO&28+d zK36+;E?IYD0+!_dSZIXoI6m+l9AT&ru$CXE*GuS!j2Ik{y6Iw+QD}u&R-Er!^h8Hr zbzNPLBfK{0HblVb5)kJ~T=%*mxTy7@hi+SBm?DCf_Be{>(LV8$Sle(-Y_sZSgHQDYK9QtfH*v?iP=&OgvngCW6 zTuK>k1=#UFo4k|Ga)pT2teW_!!@7gwO1%b(zbaaL{Qd`p{Ul*}nN|~aDYF9m7>8C@u?;_3_9mD4P z-NM=Pehqy^C8aOHz$}}F58fO(=+fI-v#{>kdj{nv1(wMVYvf}Y1#!;D1e_q^Ce>`T z`>2-IAk4PJs=3?>f3=;s?RqNeS@GplC1X{JT~CIy_y8eb5*p(j!GR&roclbY>@j5! z5vtWNEfKWzviD>h_^Ms^m1gd-P7dMqMuKEQykM1&w3Wbi*ErHAspr?Xp#n0l2$^NO z&h1=y=-ks*d|h~q_sp5X=xnta;UuGHWd71dytpL{)C4T$2hp34o5J_TD_+owTy>U|xotql{Guoa83xjZ)y%6O2Om#2eP3kSHb zsSoQ+`ReE=0Jv{mPmzLx2I1E?2%sIIw8wL{_%?IzG5dlj_CDuY_RY($BziUWz~1|N zkqPx@LjPSieWi3PNRQBxo*Pi2!k`XYhnY^2u)hXzXZ9kE@ z+1seD^EKj8&>_7b!$v!uLoa)_44oUgNO`CsQgNnZIEOO(*XbS=?3pPB6ZA~|2wQo5 z!Gl0LCVDDAaCKr5cz@K3GQt3-uVLdGHMy($`cLA-JLq8;4}*$cBqeuo$=%+b_m*4w~-Z)v;5op1&^5B z8RgP-1(^^;TMa`u@7F;s@RrS9%;(AUy2fbT!&Eoa6?(IeX>iEo8*!FAFnE!f0`Q$n zyR#F~)JvGh?Z&7<1lP&Lueu1NTf6!G0&>{6XgX*;uvtJ&4Aliw=WMY#52=Y_ZGG^k z=#CKb3cJ`rj-9=%j|)>@7E+@ophhvsfvwKtnNRb=dM)Uy(QRr_1<9O)nbgY`Juf_77+godq3`b1iy^zh;(~-br&sw zHNgc&;2mG%4_kcZ4Jc3iLma%L!EKLZvWG@on3|KUHcCZtY3rP{=LR25a~{h+T+3Kc z2)(f-9^$9&bfEms1LYi>Xex|_8JmU&M(|L#1J%vb5bt^APc3cf<I_kI=@`;9;TJy^Za~~U ngf&o08Y~q4865vRKlVg=k;M1&X;4g5 zMVhte1z9Bj(^0il0N{}TDULcuxkiydLB^y~y-7ztLxpS0n9a~^T|j6{R>41&VzW<- z&s?P7ZndaNgx6!P1v46Sae^5b8q3YmAs`~9skS&lVlOTzF-uf;|Ns9gDk?-qO=f0h z6%-UhM0}V40004WQchCV_YJ^}!ad_E};oi!Q&00I_C zL_t(oh3%8+cB3#1MloQfTiVbR3mZ2C-v1%zlf_~v<#d^UgH8a8_+HBkNpi%08cO{R zRB4v|h|jWA1wL0w|A5y@_!MPNj}NQym2jD2L*Q42)ALJ|y*!^5ycjeD*aj^;s)+^XGDc42c}~z% z40<>SL7~z@$A=NU7KOE37HsPsTgZ!q+F{Cxw% z)#@XzzRrKM^ASfJam2q1W6bXVM6^qqx~{hkLXx$1+aRQ=ox$Zc_=ZWc-oG~+ML1U* zgR6G+6@m78_~zYv8+e3YDKIKyH5<6$+IC?e3LG2c>HUoseA~KUFyZ04t~J+x*+Bm0 zWn@buZ~bg=R|7%}PWTSfnGED@FhJ4JzD1%%Z_I+`R1tAGXs4{%Rah$G)pGivonVJ%xqCa#9}`FqL2i0fS~P zU@DLHjc6jDLVOH}tU!EEdcGl9 o9i(JJw}J%fKl}fPBYqiw0oNltbKlwEKmY&$07*qoM6N<$g5CsC8UO$Q diff --git a/modular_zubbers/icons/obj/clothing/neck/neck.dmi b/modular_zubbers/icons/obj/clothing/neck/neck.dmi index 54721e7cb8e23432780aa5b6160f6bdf238f0638..82908996d778bc9ad82f55dc6447e94328dc4c61 100644 GIT binary patch literal 22018 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 Date: Fri, 24 Jul 2026 03:37:55 +0200 Subject: [PATCH 007/139] Automatic changelog for PR #5992 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5992.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5992.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5992.yml b/html/changelogs/AutoChangeLog-bubber-pr-5992.yml new file mode 100644 index 00000000000..896fec420bc --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-5992.yml @@ -0,0 +1,4 @@ +author: "xPokee" +delete-after: True +changes: + - rscadd: "Added Normalizer accessories to the loadout. These can be worn to make you 'normal' sized." \ No newline at end of file From 5c89301c9fb5a4a19112d6f987c8d789ee8b812d Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Fri, 24 Jul 2026 02:41:11 +0000 Subject: [PATCH 008/139] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5926.yml | 4 ---- html/changelogs/AutoChangeLog-bubber-pr-5992.yml | 4 ---- html/changelogs/bubber_archive/2026-07.yml | 6 ++++++ 3 files changed, 6 insertions(+), 8 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5926.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5992.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5926.yml b/html/changelogs/AutoChangeLog-bubber-pr-5926.yml deleted file mode 100644 index a457789e199..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-5926.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "nikothedude" -delete-after: True -changes: - - rscadd: "The vote panel is now forced open by storyteller votes" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5992.yml b/html/changelogs/AutoChangeLog-bubber-pr-5992.yml deleted file mode 100644 index 896fec420bc..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-5992.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "xPokee" -delete-after: True -changes: - - rscadd: "Added Normalizer accessories to the loadout. These can be worn to make you 'normal' sized." \ No newline at end of file diff --git a/html/changelogs/bubber_archive/2026-07.yml b/html/changelogs/bubber_archive/2026-07.yml index 3c2422b3608..a2178599f79 100644 --- a/html/changelogs/bubber_archive/2026-07.yml +++ b/html/changelogs/bubber_archive/2026-07.yml @@ -235,3 +235,9 @@ 2026-07-23: LT3: - rscdel: Removed airbags from reinforced windows +2026-07-24: + nikothedude: + - rscadd: The vote panel is now forced open by storyteller votes + xPokee: + - rscadd: Added Normalizer accessories to the loadout. These can be worn to make + you 'normal' sized. From 66c3c450d9858b64fe9e47968fa55809cb020957 Mon Sep 17 00:00:00 2001 From: Ariel Date: Fri, 24 Jul 2026 21:33:20 +0300 Subject: [PATCH 009/139] DeForest Bio-Regenerator biomass adjustment (#5980) ## About The Pull Request Just a simple and quick PR to make the biomass cost of the first aid items in the DeForest Bio-Regenerator (ghost role exclusive) match the cost of the wall med-station. The cost however is doubled, due to the machine upgradeable. ## Why It's Good For The Game Just makes the value match the biomass values (doubled however) introduced and approved within #5914 to make the Bio-Regenerator not be super expensive for printing first aid items, as they print them as single items instead of stacks. Helps with not requiring almost 4000 biomass for a full box of simple first aid items. ## Proof Of Testing Ran locally just fine, look at those much more sane prices. TQqgnkU8Gu ## Changelog :cl: balance: Made the biomass cost of the DeForest Bio-Regenerator's (ghost role exclusive) first aid section be more in-line with the wall med-station prices. Printing a full stack of bruise packs no longer will cost you a hundred pumpkins. /:cl: --- .../deforest_brand_bioregen_designs.dm | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/modular_zubbers/code/modules/research/designs/deforest_brand_bioregen_designs.dm b/modular_zubbers/code/modules/research/designs/deforest_brand_bioregen_designs.dm index 53b73638358..8e6f6f0e1c9 100644 --- a/modular_zubbers/code/modules/research/designs/deforest_brand_bioregen_designs.dm +++ b/modular_zubbers/code/modules/research/designs/deforest_brand_bioregen_designs.dm @@ -10,7 +10,7 @@ name = "Red Sun Balm" id = "dfbbr_sun_balm" build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 50) + materials = list(/datum/material/biomass = 18) build_path = /obj/item/stack/medical/ointment/red_sun category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DFBBR_MEDICAL) @@ -18,7 +18,7 @@ name = "Ointment" id = "dfbbr_ointment" build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 25) + materials = list(/datum/material/biomass = 6) build_path = /obj/item/stack/medical/ointment category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DFBBR_MEDICAL) @@ -26,7 +26,7 @@ name = "Sealed Aseptic Gauze" id = "dfbbr_aseptic_gauze" build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 50) + materials = list(/datum/material/biomass = 16) build_path = /obj/item/stack/medical/wrap/gauze/sterilized category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DFBBR_MEDICAL) @@ -34,7 +34,7 @@ name = "Regenerative Mesh" id = "dfbbr_mesh" build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 150) + materials = list(/datum/material/biomass = 12) build_path = /obj/item/stack/medical/mesh category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DFBBR_MEDICAL) @@ -42,7 +42,7 @@ name = "Hemostatic Mesh" id = "dfbbr_slavic_mesh" build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 150) + materials = list(/datum/material/biomass = 10) build_path = /obj/item/stack/medical/mesh/bloody category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DFBBR_MEDICAL) @@ -52,7 +52,7 @@ name = "Bruise Packs" id = "dfbbr_bruise_packs" build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 25) + materials = list(/datum/material/biomass = 8) build_path = /obj/item/stack/medical/bruise_pack category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DFBBR_MEDICAL) @@ -60,7 +60,7 @@ name = "First Aid Bandage" id = "dfbbr_bandaid" build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 100) + materials = list(/datum/material/biomass = 50) build_path = /obj/item/stack/medical/bandage category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DFBBR_MEDICAL) @@ -68,7 +68,7 @@ name = "Sutures" id = "dfbbr_suture" build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 150) + materials = list(/datum/material/biomass = 16) build_path = /obj/item/stack/medical/suture category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DFBBR_MEDICAL) @@ -76,7 +76,7 @@ name = "Hemostatic Sutures" id = "dfbbr_slavic_suture" build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 150) + materials = list(/datum/material/biomass = 30) build_path = /obj/item/stack/medical/suture/bloody category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DFBBR_MEDICAL) @@ -86,7 +86,7 @@ name = "Coagulant-F Packet" id = "dfbbr_coagulant_pack" build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 50) + materials = list(/datum/material/biomass = 10) build_path = /obj/item/stack/medical/suture/coagulant category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DFBBR_MEDICAL) @@ -94,7 +94,7 @@ name = "Rapid Coagulant Applicator" id = "dfbbr_coagulant_rapid" build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 100) + materials = list(/datum/material/biomass = 75) build_path = /obj/item/stack/medical/wound_recovery/rapid_coagulant category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DFBBR_MEDICAL) @@ -104,7 +104,7 @@ name = "Robotic Repair Patch" id = "dfbbr_repair_patch" build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 100) + materials = list(/datum/material/biomass = 50) build_path = /obj/item/reagent_containers/applicator/pill/robotic_patch/synth_repair category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DFBBR_MEDICAL) @@ -112,7 +112,7 @@ name = "Robotic Repair Spray" id = "dfbbr_repair_foam" build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 100) + materials = list(/datum/material/biomass = 80) build_path = /obj/item/stack/medical/wound_recovery/robofoam category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DFBBR_MEDICAL) @@ -120,7 +120,7 @@ name = "Premium Robotic Repair Spray" id = "dfbbr_repair_foam_premium" build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 200) + materials = list(/datum/material/biomass = 160) build_path = /obj/item/stack/medical/wound_recovery/robofoam_super category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DFBBR_MEDICAL) @@ -130,7 +130,7 @@ name = "Medical Gauze" id = "dfbbr_slavic_gauze" build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 100) + materials = list(/datum/material/biomass = 16) build_path = /obj/item/stack/medical/wrap/gauze category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DFBBR_MEDICAL) @@ -138,7 +138,7 @@ name = "Bone Gel" id = "dfbbr_bone_gel" build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 100) + materials = list(/datum/material/biomass = 50) build_path = /obj/item/stack/medical/bone_gel category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DFBBR_MEDICAL) @@ -146,7 +146,7 @@ name = "Surgical Tape" id = "dfbbr_surgical_tape" build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 100) + materials = list(/datum/material/biomass = 50) build_path = /obj/item/stack/medical/wrap/sticky_tape/surgical category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DFBBR_MEDICAL) @@ -154,7 +154,7 @@ name = "Subdermal Splint Applicator" id = "dfbbr_splint_applicator" build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 300) + materials = list(/datum/material/biomass = 75) build_path = /obj/item/stack/medical/wound_recovery category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_DFBBR_MEDICAL) From 87afacae72532fe3dcb98673c1f1f681bd1dfa76 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Fri, 24 Jul 2026 20:33:48 +0200 Subject: [PATCH 010/139] Automatic changelog for PR #5980 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5980.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5980.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5980.yml b/html/changelogs/AutoChangeLog-bubber-pr-5980.yml new file mode 100644 index 00000000000..76e84026b31 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-5980.yml @@ -0,0 +1,4 @@ +author: "Dr-arielpro" +delete-after: True +changes: + - balance: "Made the biomass cost of the DeForest Bio-Regenerator's (ghost role exclusive) first aid section be more in-line with the wall med-station prices. Printing a full stack of bruise packs no longer will cost you a hundred pumpkins." \ No newline at end of file From e9de2f6adac253edcce95cda0af1b4294a6219b6 Mon Sep 17 00:00:00 2001 From: Alexis Date: Fri, 24 Jul 2026 14:33:50 -0400 Subject: [PATCH 011/139] Normalizer Accessories Tweaks (#5996) ## About The Pull Request Adds normalizer accessories to the clothesmate and also makes it so that they add/remove the oversized quirk on wearing/dropping if you already had the quirk. ## Why It's Good For The Game I was told that it is kind of useless in its current state because the clothing can burn off and can't be replaced, and also oversized users previously just got resized meaning they kept their debuffs which made no sense. ## Proof Of Testing
Screenshots/Videos https://github.com/user-attachments/assets/e4cbfdec-6130-4cff-85f0-fad1ff96d2ec image
## Changelog :cl: add: Added normalizer accessories to the ClothesMate. balance: Normalizer accessories now remove the oversized quirk (if you have it) when equipped and re-add it when dropped. /:cl: --- modular_zubbers/code/modules/clothing/clothing.dm | 11 +++++++---- modular_zubbers/code/modules/vending/clothesmate.dm | 5 +++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/modular_zubbers/code/modules/clothing/clothing.dm b/modular_zubbers/code/modules/clothing/clothing.dm index 15ec13a049a..465d50051f7 100644 --- a/modular_zubbers/code/modules/clothing/clothing.dm +++ b/modular_zubbers/code/modules/clothing/clothing.dm @@ -7,6 +7,8 @@ playsound(resizer, 'sound/effects/magic.ogg', 50, 1) flash_lighting_fx(3, 3, LIGHT_COLOR_PURPLE) resizer.visible_message(span_warning("A flash of purple light engulfs [resizer], before they change to normal!"), span_notice("You feel warm for a moment, before everything scales to your size...")) + if(resizer.get_quirk(/datum/quirk/oversized)) + resizer.remove_quirk(/datum/quirk/oversized) resizer.dna.features["body_size"] = RESIZE_DEFAULT_SIZE resizer.dna.update_body_size() resizer.normalized = TRUE @@ -17,9 +19,10 @@ playsound(resizer,'sound/items/weapons/emitter2.ogg', 50, 1) flash_lighting_fx(3, 3, LIGHT_COLOR_YELLOW) resizer.visible_message(span_warning("Golden light engulfs [resizer], and they shoot back to their default height!"), span_notice("Energy rushes through your body, and you return to normal.")) - if(resizer.get_quirk(/datum/quirk/oversized)) - resizer.dna.features["body_size"] = 2 - else + for(var/datum/quirk/oversized/oversized as anything in resizer?.client?.prefs?.all_quirks) + if(oversized) + resizer.add_quirk(/datum/quirk/oversized, announce = FALSE) + if(!resizer.get_quirk(/datum/quirk/oversized)) resizer.dna.features["body_size"] = resizer?.client?.prefs?.read_preference(/datum/preference/numeric/body_size) - resizer.dna.update_body_size() + resizer.dna.update_body_size() resizer.normalized = FALSE diff --git a/modular_zubbers/code/modules/vending/clothesmate.dm b/modular_zubbers/code/modules/vending/clothesmate.dm index d58cdb91c23..2899efc7866 100644 --- a/modular_zubbers/code/modules/vending/clothesmate.dm +++ b/modular_zubbers/code/modules/vending/clothesmate.dm @@ -70,6 +70,11 @@ /obj/item/clothing/neck/robe_cape = 5, /obj/item/clothing/neck/scarf/pride = 5, /obj/item/clothing/neck/wide_cape = 5, + /obj/item/clothing/neck/syntech = 5, + /obj/item/clothing/neck/syntech/choker = 5, + /obj/item/clothing/neck/syntech/collar = 5, + /obj/item/clothing/gloves/ring/syntech = 5, + /obj/item/clothing/gloves/ring/syntech/band = 5, ), ), From da8200811ac902bd9526ef6ed8ed04339f53f10c Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Fri, 24 Jul 2026 20:34:17 +0200 Subject: [PATCH 012/139] Automatic changelog for PR #5996 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5996.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5996.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5996.yml b/html/changelogs/AutoChangeLog-bubber-pr-5996.yml new file mode 100644 index 00000000000..a4a05dd9fa2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-5996.yml @@ -0,0 +1,5 @@ +author: "xPokee" +delete-after: True +changes: + - rscadd: "Added normalizer accessories to the ClothesMate." + - balance: "Normalizer accessories now remove the oversized quirk (if you have it) when equipped and re-add it when dropped." \ No newline at end of file From 3c025c7b7425656218bbb320f33f38167fdc3299 Mon Sep 17 00:00:00 2001 From: KateAnbolho <141269115+KateAnbolho@users.noreply.github.com> Date: Fri, 24 Jul 2026 14:41:49 -0700 Subject: [PATCH 013/139] Updates the WT-550's Lore Because We Brought It Back Once (#5956) ## About The Pull Request The WT-550 still says that it was recalled due to syndicate misinformation, this fixes that ## Why It's Good For The Game we love lore... ## Proof Of Testing it lored on my lore machine... ## Changelog :cl: add: New WT LORE /:cl: --- .../code/modules/projectiles/guns/ballistic/automatic.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modular_zubbers/code/modules/projectiles/guns/ballistic/automatic.dm b/modular_zubbers/code/modules/projectiles/guns/ballistic/automatic.dm index d0cd469dca0..a700e104783 100644 --- a/modular_zubbers/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/modular_zubbers/code/modules/projectiles/guns/ballistic/automatic.dm @@ -163,6 +163,10 @@ spread = 5 update_appearance() +/obj/item/gun/ballistic/automatic/wt550 + desc = "A fully-automatic security firearm chambered in 4.6x30mm, the WT550 was originally recalled over a Syndicate misinformation campaign \ + attempting to force Nanotrasen to abandon their ballistic firearms programs. Even though it was fake, the 550 is \ + still sold with a '99% Discombubulation Removal Guarantee' sticker in the crate." /obj/item/gun/ballistic/automatic/wt550/burst name = "\improper WT-550-B Autoburstrifle" desc = "Not so much of a rifle, being modified closer to a submachine gun, but still somehow just as bulky. Outfitted with a modified frame and barrel and a two-shot burst trigger mechanism. Performs overall better than the average autorifle, but kicks a bit more. Has a threaded barrel for suppressors. Uses 4.6x30mm rounds." From 4660a9dddbcd7b915f86286761d01da4c47db42e Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Fri, 24 Jul 2026 23:46:15 +0200 Subject: [PATCH 014/139] Automatic changelog for PR #5956 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5956.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5956.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5956.yml b/html/changelogs/AutoChangeLog-bubber-pr-5956.yml new file mode 100644 index 00000000000..ca44aaeaf4a --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-5956.yml @@ -0,0 +1,4 @@ +author: "KateAnbolho" +delete-after: True +changes: + - rscadd: "New WT LORE" \ No newline at end of file From 9b81cfedd313c05ab6f06b8fdc544c0c07eaf6a2 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sat, 25 Jul 2026 02:38:53 +0000 Subject: [PATCH 015/139] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5956.yml | 4 ---- html/changelogs/AutoChangeLog-bubber-pr-5980.yml | 4 ---- html/changelogs/AutoChangeLog-bubber-pr-5996.yml | 5 ----- html/changelogs/bubber_archive/2026-07.yml | 11 +++++++++++ 4 files changed, 11 insertions(+), 13 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5956.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5980.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5996.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5956.yml b/html/changelogs/AutoChangeLog-bubber-pr-5956.yml deleted file mode 100644 index ca44aaeaf4a..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-5956.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "KateAnbolho" -delete-after: True -changes: - - rscadd: "New WT LORE" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5980.yml b/html/changelogs/AutoChangeLog-bubber-pr-5980.yml deleted file mode 100644 index 76e84026b31..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-5980.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Dr-arielpro" -delete-after: True -changes: - - balance: "Made the biomass cost of the DeForest Bio-Regenerator's (ghost role exclusive) first aid section be more in-line with the wall med-station prices. Printing a full stack of bruise packs no longer will cost you a hundred pumpkins." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5996.yml b/html/changelogs/AutoChangeLog-bubber-pr-5996.yml deleted file mode 100644 index a4a05dd9fa2..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-5996.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "xPokee" -delete-after: True -changes: - - rscadd: "Added normalizer accessories to the ClothesMate." - - balance: "Normalizer accessories now remove the oversized quirk (if you have it) when equipped and re-add it when dropped." \ No newline at end of file diff --git a/html/changelogs/bubber_archive/2026-07.yml b/html/changelogs/bubber_archive/2026-07.yml index a2178599f79..6bccbba05a4 100644 --- a/html/changelogs/bubber_archive/2026-07.yml +++ b/html/changelogs/bubber_archive/2026-07.yml @@ -241,3 +241,14 @@ xPokee: - rscadd: Added Normalizer accessories to the loadout. These can be worn to make you 'normal' sized. +2026-07-25: + Dr-arielpro: + - balance: Made the biomass cost of the DeForest Bio-Regenerator's (ghost role exclusive) + first aid section be more in-line with the wall med-station prices. Printing + a full stack of bruise packs no longer will cost you a hundred pumpkins. + KateAnbolho: + - rscadd: New WT LORE + xPokee: + - rscadd: Added normalizer accessories to the ClothesMate. + - balance: Normalizer accessories now remove the oversized quirk (if you have it) + when equipped and re-add it when dropped. From 21a5c52eabe76eb392ed9015a9a6892fbd71ec81 Mon Sep 17 00:00:00 2001 From: Mathilde <146444134+ibexgoetia@users.noreply.github.com> Date: Sat, 25 Jul 2026 19:58:08 +0200 Subject: [PATCH 016/139] Oversized Buff/QOL (#5978) ## About The Pull Request I've made it so that Oversized characters get a 0.25 debuff to their movement speed (as opposed to 0.50) as well as having removed their MOB_SIZE_LARGE trait, which made them unable to fit into any machine in the game, unless specifically coded in to ignore the mob size (to my knowledge it's the SAD, cryotube, cryopod and cyborg recharger). I've also preserved the vampiric coffin functionality, made it so that it checks if the character using the coffin has the oversized trait, instead of checking whether they are too large for it. ## Why It's Good For The Game Oversized is a very difficult trait. While it makes sense for there to be some drawbacks for being so large, I also believe that the negatives were a little too much, making the quirk very challenging to use and punitive. I've tweaked it a bit while at the same time preserving most of the traits that came with the quirk. ## Proof Of Testing https://github.com/user-attachments/assets/1bc0fba1-2d34-4dba-834d-1ecf8dfcff50 The movement speed change. Green is regular speed, orange is 0.25 (the speed they will have) and red is 0.50 (the current oversized speed). ## Changelog :cl: balance: Oversized characters are now faster, having their speed penalty lowered from 0.50 to 0.25. balance: Oversized characters no longer have the MOB_SIZE_LARGE trait, allowing them to fit in machines and closets. /:cl: --- code/game/machinery/_machinery.dm | 2 +- .../code/self_actualization_device.dm | 1 - .../quirks/neutral_quirks/oversized/oversized_quirk.dm | 3 +-- modular_zubbers/code/game/machinery/_machinery.dm | 3 --- .../modules/antagonists/bloodsucker/structures/coffin.dm | 5 ++--- .../atmospherics/machinery/components/unary_devices/cryo.dm | 2 -- tgstation.dme | 2 -- 7 files changed, 4 insertions(+), 14 deletions(-) delete mode 100644 modular_zubbers/code/game/machinery/_machinery.dm delete mode 100644 modular_zubbers/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index ab869fcea7b..1326fb70de2 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -456,7 +456,7 @@ continue if(isliving(current_atom)) var/mob/living/current_mob = atom - if(current_mob.buckled || current_mob.mob_size >= MOB_SIZE_LARGE && !ignore_size) // BUBBER EDIT - ADDITION - "&& !ignore_size" + if(current_mob.buckled || current_mob.mob_size >= MOB_SIZE_LARGE) continue target = atom diff --git a/modular_skyrat/modules/self_actualization_device/code/self_actualization_device.dm b/modular_skyrat/modules/self_actualization_device/code/self_actualization_device.dm index c2011ad64b9..1f65d8a6ea2 100644 --- a/modular_skyrat/modules/self_actualization_device/code/self_actualization_device.dm +++ b/modular_skyrat/modules/self_actualization_device/code/self_actualization_device.dm @@ -31,7 +31,6 @@ density = TRUE active_power_usage = 240 KILO WATTS idle_power_usage = 24 KILO WATTS - ignore_size = TRUE /// Is someone being processed inside of the machine? var/processing = FALSE /// How long does the machine take to work? diff --git a/modular_zubbers/code/datums/quirks/neutral_quirks/oversized/oversized_quirk.dm b/modular_zubbers/code/datums/quirks/neutral_quirks/oversized/oversized_quirk.dm index ad80ac26039..68a44b3aa20 100644 --- a/modular_zubbers/code/datums/quirks/neutral_quirks/oversized/oversized_quirk.dm +++ b/modular_zubbers/code/datums/quirks/neutral_quirks/oversized/oversized_quirk.dm @@ -1,4 +1,4 @@ -#define OVERSIZED_SPEED_SLOWDOWN 0.5 +#define OVERSIZED_SPEED_SLOWDOWN 0.25 #define OVERSIZED_HUNGER_MOD 1.5 // Before making any changes to oversized, please see the module's readme.md file @@ -21,7 +21,6 @@ human_holder.dna.features["body_size"] = 2 human_holder.maptext_height = 32 * human_holder.dna.features["body_size"] //Adjust runechat height human_holder.dna.update_body_size() - human_holder.mob_size = MOB_SIZE_LARGE human_holder.maxHealth = HUMAN_MAXHEALTH * OVERSIZED_HEALTH_BUFF human_holder.health += ((HUMAN_MAXHEALTH * OVERSIZED_HEALTH_BUFF) - HUMAN_MAXHEALTH) diff --git a/modular_zubbers/code/game/machinery/_machinery.dm b/modular_zubbers/code/game/machinery/_machinery.dm deleted file mode 100644 index 1559735ce7c..00000000000 --- a/modular_zubbers/code/game/machinery/_machinery.dm +++ /dev/null @@ -1,3 +0,0 @@ -/obj/machinery - ///If true, the machine will be able to close/function as normal regardless of mob size. - var/ignore_size = FALSE diff --git a/modular_zubbers/code/modules/antagonists/bloodsucker/structures/coffin.dm b/modular_zubbers/code/modules/antagonists/bloodsucker/structures/coffin.dm index 380bf533820..fb5213133a2 100644 --- a/modular_zubbers/code/modules/antagonists/bloodsucker/structures/coffin.dm +++ b/modular_zubbers/code/modules/antagonists/bloodsucker/structures/coffin.dm @@ -219,7 +219,7 @@ /obj/structure/closet/crate/coffin/close(mob/living/user) var/datum/antagonist/bloodsucker/bloodsuckerdatum = IS_BLOODSUCKER(user) - if(bloodsuckerdatum && user.mob_size > max_mob_size) + if(bloodsuckerdatum && user.has_quirk(/datum/quirk/oversized)) if(!HAS_TRAIT_FROM_ONLY(src, TRAIT_COFFIN_ENLARGED, "bloodsucker_coffin")) if(prompt_coffin_claim(bloodsuckerdatum)) enlarge(user) @@ -253,10 +253,9 @@ // some fatass bloodsucker is trying to fit in a too-small coffin, how about we make some room? /obj/structure/closet/crate/proc/enlarge(mob/living/user) ADD_TRAIT(src, TRAIT_COFFIN_ENLARGED, "bloodsucker_coffin") - max_mob_size = user.mob_size to_chat(user, span_warning("The coffin creaks and squeaks as you try to squeeze into it. It's a tight fit but you manage it make it fit you.")) playsound(src, 'modular_skyrat/modules/aesthetics/airlock/sound/creaking.ogg') - animate(src, 1 SECONDS, FALSE, BOUNCE_EASING, transform = transform.Scale(user.mob_size * COFFIN_ENLARGE_MULT)) + animate(src, 1 SECONDS, FALSE, BOUNCE_EASING, transform = transform.Scale(1.5)) /obj/structure/closet/crate/proc/un_enlarge(mob/living/user) if(!HAS_TRAIT_FROM_ONLY(src, TRAIT_COFFIN_ENLARGED, "bloodsucker_coffin")) diff --git a/modular_zubbers/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/modular_zubbers/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm deleted file mode 100644 index 149cb593e71..00000000000 --- a/modular_zubbers/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ /dev/null @@ -1,2 +0,0 @@ -/obj/machinery/cryo_cell - ignore_size = TRUE diff --git a/tgstation.dme b/tgstation.dme index 807da01c927..244e87a9ef0 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -9298,7 +9298,6 @@ #include "modular_zubbers\code\game\Items\plushes.dm" #include "modular_zubbers\code\game\Items\tools.dm" #include "modular_zubbers\code\game\Items\storage\backpack.dm" -#include "modular_zubbers\code\game\machinery\_machinery.dm" #include "modular_zubbers\code\game\machinery\crew_monitor.dm" #include "modular_zubbers\code\game\machinery\department_balance.dm" #include "modular_zubbers\code\game\machinery\incident_display.dm" @@ -9578,7 +9577,6 @@ #include "modular_zubbers\code\modules\asset_cache\assets\tgui.dm" #include "modular_zubbers\code\modules\atmospherics\gasmixtures\gas_types.dm" #include "modular_zubbers\code\modules\atmospherics\machinery\air_alarm\air_alarm_modes.dm" -#include "modular_zubbers\code\modules\atmospherics\machinery\components\unary_devices\cryo.dm" #include "modular_zubbers\code\modules\atmospherics\machinery\portable\canister.dm" #include "modular_zubbers\code\modules\autolathe_components_adv\advpartdisks.dm" #include "modular_zubbers\code\modules\automapper\code\area_spawn_entries.dm" From 9835684a49b084e3e2a76368b586df5b8bbbf10b Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sat, 25 Jul 2026 19:58:35 +0200 Subject: [PATCH 017/139] Automatic changelog for PR #5978 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5978.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5978.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5978.yml b/html/changelogs/AutoChangeLog-bubber-pr-5978.yml new file mode 100644 index 00000000000..1617e4702c1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-5978.yml @@ -0,0 +1,5 @@ +author: "ibexgoetia" +delete-after: True +changes: + - balance: "Oversized characters are now faster, having their speed penalty lowered from 0.50 to 0.25." + - balance: "Oversized characters no longer have the MOB_SIZE_LARGE trait, allowing them to fit in machines and closets." \ No newline at end of file From 54b2f7368f38783a1acd2b03cc1fb32789dd9737 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sun, 26 Jul 2026 02:47:59 +0000 Subject: [PATCH 018/139] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5978.yml | 5 ----- html/changelogs/bubber_archive/2026-07.yml | 6 ++++++ 2 files changed, 6 insertions(+), 5 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5978.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5978.yml b/html/changelogs/AutoChangeLog-bubber-pr-5978.yml deleted file mode 100644 index 1617e4702c1..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-5978.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "ibexgoetia" -delete-after: True -changes: - - balance: "Oversized characters are now faster, having their speed penalty lowered from 0.50 to 0.25." - - balance: "Oversized characters no longer have the MOB_SIZE_LARGE trait, allowing them to fit in machines and closets." \ No newline at end of file diff --git a/html/changelogs/bubber_archive/2026-07.yml b/html/changelogs/bubber_archive/2026-07.yml index 6bccbba05a4..d6543e1dd21 100644 --- a/html/changelogs/bubber_archive/2026-07.yml +++ b/html/changelogs/bubber_archive/2026-07.yml @@ -252,3 +252,9 @@ - rscadd: Added normalizer accessories to the ClothesMate. - balance: Normalizer accessories now remove the oversized quirk (if you have it) when equipped and re-add it when dropped. +2026-07-26: + ibexgoetia: + - balance: Oversized characters are now faster, having their speed penalty lowered + from 0.50 to 0.25. + - balance: Oversized characters no longer have the MOB_SIZE_LARGE trait, allowing + them to fit in machines and closets. From 0cafd626c755aec246409fb0d2f01f75099f7a9f Mon Sep 17 00:00:00 2001 From: Alexis Date: Sun, 26 Jul 2026 11:53:13 -0400 Subject: [PATCH 019/139] Disables The Summon Ghosts Wizard Spell (#6001) ## About The Pull Request Does as the title would suggest. This **ONLY** disables it from being selected by wizards, it does not stop admins from running it. ## Why It's Good For The Game While the idea of ghosts being visible is funny on paper, when ghosts start orbiting ERPers, invisible antagonists, or outright leading security to antagonists via pointing a path to them it becomes really unfun for the targets of the ghosts, and can be outright uncomfortable in the case of ghosts orbiting ERPers. ## Proof Of Testing See below.
Screenshots/Videos image image
## Changelog :cl: del: Removed 'Summon Ghosts' from the wizard spellbook. It is still available via adminbus. /:cl: --- .../code/modules/spells/spell_types/disabled_spells.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modular_zubbers/code/modules/spells/spell_types/disabled_spells.dm b/modular_zubbers/code/modules/spells/spell_types/disabled_spells.dm index 16df3e668fa..5aed77c232c 100644 --- a/modular_zubbers/code/modules/spells/spell_types/disabled_spells.dm +++ b/modular_zubbers/code/modules/spells/spell_types/disabled_spells.dm @@ -17,3 +17,8 @@ // 99% of slaughter demons just target medbay and it's not really fun for anyone except the slaughter demon (and ghost chat). /datum/spellbook_entry/item/bloodbottle category = null + +// Summon Ghosts: Makes ghosts visible to all living players. Ghosts being visible sounds funny on paper, but since its free it almost always gets ran. +// This is bad for antagonists that have invisibility and gets really awkward when a ghost inevitably orbits someone ERPing. +/datum/spellbook_entry/summon/ghosts + category = null From f98a5839053f22708e6c407b8217c5e1e5a7e505 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sun, 26 Jul 2026 17:53:41 +0200 Subject: [PATCH 020/139] Automatic changelog for PR #6001 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6001.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6001.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6001.yml b/html/changelogs/AutoChangeLog-bubber-pr-6001.yml new file mode 100644 index 00000000000..d5041b0a4ed --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6001.yml @@ -0,0 +1,4 @@ +author: "xPokee" +delete-after: True +changes: + - rscdel: "Removed 'Summon Ghosts' from the wizard spellbook. It is still available via adminbus." \ No newline at end of file From 8be2d7be3ed93de702cadbdd5e1c2804869ce4f4 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 27 Jul 2026 02:55:51 +0000 Subject: [PATCH 021/139] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6001.yml | 4 ---- html/changelogs/bubber_archive/2026-07.yml | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6001.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6001.yml b/html/changelogs/AutoChangeLog-bubber-pr-6001.yml deleted file mode 100644 index d5041b0a4ed..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6001.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "xPokee" -delete-after: True -changes: - - rscdel: "Removed 'Summon Ghosts' from the wizard spellbook. It is still available via adminbus." \ No newline at end of file diff --git a/html/changelogs/bubber_archive/2026-07.yml b/html/changelogs/bubber_archive/2026-07.yml index d6543e1dd21..5255196885c 100644 --- a/html/changelogs/bubber_archive/2026-07.yml +++ b/html/changelogs/bubber_archive/2026-07.yml @@ -258,3 +258,7 @@ from 0.50 to 0.25. - balance: Oversized characters no longer have the MOB_SIZE_LARGE trait, allowing them to fit in machines and closets. +2026-07-27: + xPokee: + - rscdel: Removed 'Summon Ghosts' from the wizard spellbook. It is still available + via adminbus. From a3b4ebc6ef2a1c0634ffef645a11d0c0691ed0db Mon Sep 17 00:00:00 2001 From: Kaltf4 Date: Mon, 27 Jul 2026 12:43:19 -0500 Subject: [PATCH 022/139] Blacksmith bounty balance tweak (#5970) ## About The Pull Request ~~Won't do anything player-visible without PR #5969 !!! (because the bounties are just plain broken)~~ The above PR is now merged, so no longer a concern. In the Blacksmithing bounty list, removes the obsolete Cortical Borer Cage and ~~adds the Charging Holster instead, both as a way to point novice blacksmith players to "wait, I can make that?" and to give a high-material, high-cooperation, and low-time bounty to chase~~ replaces it with 20x Railroad Tracks (requiring two Rail Nail smithing completions). In addition, rebalances the blacksmithing bounties a little, to make the time, clicks, and materials roughly similar ~~(aside from the Charging Holster, which removes the time requirement in favor of unusual collaboration with security)~~. **Note: In the below table, Glass Globes are a point of reference for effort-value calculations, and are not used in blacksmithing bounties. All values at Legendary Smithing (or Production for the glass globe).** ``` Item | OldVal | NewVal | Time | Mats Glass Globe | 1000 | 1000 | 36s | 1 glass -- (Note: Not bounty, but exportable on cargo shuttle) 3x Cuffs | 1600 | 3000 | 102s | 3 [any] Staff | 1000 | 1050 | 34s | 1 [any], 2 wood 3x Sword | 4800 | 3400 | 102s | 3 [any], 6 wood 2x Armor | 4000 | 2600 | 68s | 2 [any], 2 lthr Katana | 1200 | 1100 | 34s | 1 [any], 2 wood Rlrd Trcks | N/A | 1950 | 50s | 2 [any], 4 wood ``` ## Why It's Good For The Game This prevents a scenario in which blacksmith players choose a Cortical Borer Cage from the bounty list, then find out they're unable to make them. ~~It also soft-advertises the existence of (and ability to make) Charging Holsters, and tells players that it requires Legendary in the skill to do so.~~ [EDIT: We ended up going with something other than Charging Holsters here.] Finally, it brings the bounty values more in line with each other, with a mild nerf to the top end. Per discussions with @ArrisFairburne , in the longer term, we probably want to do more with blacksmithing bounties, since the goal should be to have them interact with the crew and make things the crew wants, rather than just making a bunch of stuff to sell to CentCom. That said, I don't think we should wait for that to swap out the cortical borer cages, and swapping out the cortical borer cages is a good opportunity to make the bounties a _little_ less lucrative. ## Proof Of Testing
Manually verified the following bounty values by selecting bounties from the bounty terminal, creating the items via blacksmithing, and sending the items, then noting the values on the bounty cubes. PlrVal is the value shown to the player, while CbeVal is the value of the bounty cube as a whole. (This doesn't include the speedy return bonus.) ``` Item | PlrVal | CbeVal | 3x Cuffs | 900 | 3000 | Tested Staff | 315 | 1050 | Tested 3x Sword | 1020 | 3400 | Tested 2x Armor | 780 | 2600 | Tested Katana | 330 | 1100 | Tested Rail Trx | 585 | 1950 | Tested ``` Screenshots/Videos image image image image 1950 + 390 (20%) bonus = 2340 30% of 2340 = 702 2340 - 702 = 1638
## Changelog :cl: Kaltren fix: Cortical Borer Cage is no longer in the blacksmithing bounty list, as it's no longer smithable. balance: 20x Railroad Tracks are now in the blacksmithing bounty list, worth 1950 total credits (585 player cut). balance: 3x Handcuffs blacksmithing bounty is now worth 3000 total credits, up from 1600. balance: 3x Sword blacksmithing bounty is now worth 3400 total credits, down from 4800. balance: 2x Armor blacksmithing bounty is now worth 2600 total credits, down from 4000. balance: Staff blacksmithing bounty is now worth 1050 total credits, up from 1000. balance: Katana blacksmithing bounty is now worth 1100 total credits, down from 1200. /:cl: --- .../code/modules/cargo/bounties/blacksmith.dm | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/modular_zubbers/code/modules/cargo/bounties/blacksmith.dm b/modular_zubbers/code/modules/cargo/bounties/blacksmith.dm index fcc30065050..800bf4f89fe 100644 --- a/modular_zubbers/code/modules/cargo/bounties/blacksmith.dm +++ b/modular_zubbers/code/modules/cargo/bounties/blacksmith.dm @@ -29,38 +29,38 @@ Todo: Refactor upstream code so that item deletion is decided at the bounty leve */ -/datum/bounty/item/blacksmith/cage - name = "Cortical Borer Cage" - description = "One of Nanotrasen's partner stations is undergoing a borer infestation and would like to capture some life specimen for research. Ship some off to CentCom right away." - reward = CARGO_CRATE_VALUE * 14 - required_count = 2 - wanted_types = list(/obj/item/cortical_cage = TRUE) +/datum/bounty/item/blacksmith/rail_track + name = "Railroad Tracks" + description = "The tram broke down again. Make us some railroad tracks to help us get around." + reward = CARGO_CRATE_VALUE * 9.75 + required_count = 20 + wanted_types = list(/obj/item/stack/rail_track = TRUE) /datum/bounty/item/blacksmith/cuffs name = "Handcuffs" description = "One of our wardens lost all the handcuffs again. Help restore order and ship some off for a reward." - reward = CARGO_CRATE_VALUE * 8 + reward = CARGO_CRATE_VALUE * 15 required_count = 3 wanted_types = list(/obj/item/restraints/handcuffs = TRUE) //This includes reagent cuffs /datum/bounty/item/blacksmith/staff name = "Staff" description = "A respected religious figure is visiting CentCom, but lost their staff on the way there! Send a replacement as soon as possible." - reward = CARGO_CRATE_VALUE * 5 + reward = CARGO_CRATE_VALUE * 5.25 wanted_types = list(/obj/item/melee/forged_reagent_weapon/staff = TRUE) /datum/bounty/item/blacksmith/swords name = "Swords" description = "Our interns' mosins have broken down, ship some swords so they have something to fight with." required_count = 3 - reward = CARGO_CRATE_VALUE * 24 + reward = CARGO_CRATE_VALUE * 17 wanted_types = list(/obj/item/melee/forged_reagent_weapon/sword = TRUE) /datum/bounty/item/blacksmith/armor name = "Armor piece" description = "Our security commander wants a new piece of plate armor to decorate his office. Send them some immeadiately" required_count = 2 - reward = CARGO_CRATE_VALUE * 20 + reward = CARGO_CRATE_VALUE * 13 wanted_types = list(/obj/item/clothing/shoes/forging_plate_boots = TRUE, /obj/item/clothing/head/helmet/forging_plate_helmet = TRUE, /obj/item/clothing/gloves/forging_plate_gloves = TRUE, @@ -70,5 +70,5 @@ Todo: Refactor upstream code so that item deletion is decided at the bounty leve /datum/bounty/item/blacksmith/katana name = "Katana" description = "One of our Researchers is going to a Space Anime Convention and wants to show off a real katana! Ship one so he stops pestering us." - reward = CARGO_CRATE_VALUE * 6 + reward = CARGO_CRATE_VALUE * 5.5 wanted_types = list(/obj/item/melee/forged_reagent_weapon/katana = TRUE) From c607183e6615b928b1d2d3e403cc8e3288894645 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 27 Jul 2026 19:43:46 +0200 Subject: [PATCH 023/139] Automatic changelog for PR #5970 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5970.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5970.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5970.yml b/html/changelogs/AutoChangeLog-bubber-pr-5970.yml new file mode 100644 index 00000000000..b19f6c997ae --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-5970.yml @@ -0,0 +1,10 @@ +author: "Kaltren" +delete-after: True +changes: + - bugfix: "Cortical Borer Cage is no longer in the blacksmithing bounty list, as it's no longer smithable." + - balance: "20x Railroad Tracks are now in the blacksmithing bounty list, worth 1950 total credits (585 player cut)." + - balance: "3x Handcuffs blacksmithing bounty is now worth 3000 total credits, up from 1600." + - balance: "3x Sword blacksmithing bounty is now worth 3400 total credits, down from 4800." + - balance: "2x Armor blacksmithing bounty is now worth 2600 total credits, down from 4000." + - balance: "Staff blacksmithing bounty is now worth 1050 total credits, up from 1000." + - balance: "Katana blacksmithing bounty is now worth 1100 total credits, down from 1200." \ No newline at end of file From 46684d6ecbfef45a632bb7aaa8ceaf80cb864544 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Tue, 28 Jul 2026 02:33:46 +0000 Subject: [PATCH 024/139] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5970.yml | 10 ---------- html/changelogs/bubber_archive/2026-07.yml | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 10 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5970.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5970.yml b/html/changelogs/AutoChangeLog-bubber-pr-5970.yml deleted file mode 100644 index b19f6c997ae..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-5970.yml +++ /dev/null @@ -1,10 +0,0 @@ -author: "Kaltren" -delete-after: True -changes: - - bugfix: "Cortical Borer Cage is no longer in the blacksmithing bounty list, as it's no longer smithable." - - balance: "20x Railroad Tracks are now in the blacksmithing bounty list, worth 1950 total credits (585 player cut)." - - balance: "3x Handcuffs blacksmithing bounty is now worth 3000 total credits, up from 1600." - - balance: "3x Sword blacksmithing bounty is now worth 3400 total credits, down from 4800." - - balance: "2x Armor blacksmithing bounty is now worth 2600 total credits, down from 4000." - - balance: "Staff blacksmithing bounty is now worth 1050 total credits, up from 1000." - - balance: "Katana blacksmithing bounty is now worth 1100 total credits, down from 1200." \ No newline at end of file diff --git a/html/changelogs/bubber_archive/2026-07.yml b/html/changelogs/bubber_archive/2026-07.yml index 5255196885c..cb652465c0e 100644 --- a/html/changelogs/bubber_archive/2026-07.yml +++ b/html/changelogs/bubber_archive/2026-07.yml @@ -262,3 +262,18 @@ xPokee: - rscdel: Removed 'Summon Ghosts' from the wizard spellbook. It is still available via adminbus. +2026-07-28: + Kaltren: + - bugfix: Cortical Borer Cage is no longer in the blacksmithing bounty list, as + it's no longer smithable. + - balance: 20x Railroad Tracks are now in the blacksmithing bounty list, worth 1950 + total credits (585 player cut). + - balance: 3x Handcuffs blacksmithing bounty is now worth 3000 total credits, up + from 1600. + - balance: 3x Sword blacksmithing bounty is now worth 3400 total credits, down from + 4800. + - balance: 2x Armor blacksmithing bounty is now worth 2600 total credits, down from + 4000. + - balance: Staff blacksmithing bounty is now worth 1050 total credits, up from 1000. + - balance: Katana blacksmithing bounty is now worth 1100 total credits, down from + 1200. From 23ee20caf8afe2333b284a492d01de7d94257d70 Mon Sep 17 00:00:00 2001 From: KateAnbolho <141269115+KateAnbolho@users.noreply.github.com> Date: Mon, 27 Jul 2026 23:18:44 -0700 Subject: [PATCH 025/139] Ports two hairstyle PRs from Nova (#5974) ## About The Pull Request This PR ports https://github.com/NovaSector/NovaSector/pull/7463, and https://github.com/NovaSector/NovaSector/pull/7523. These are some really cool hairstyles, along with multiple slime "hair"styles as well for our gloopy crewmembers. ## Why It's Good For The Game more customization is really cool and good ## Proof Of Testing It worked on my machine and idk how people get those .pngs of all the hair please help image image ## Changelog :cl: Charlotte-Sugar, KateAnbolho. red-creature, xPokee add: Several ported hairstyles from Nova, very cool. /:cl: --------- Co-authored-by: Alexis --- .../new_player/sprite_accessories/hair.dm | 162 ++++++++++++++++++ modular_zubbers/icons/customization/hair.dmi | Bin 16022 -> 39261 bytes 2 files changed, 162 insertions(+) diff --git a/modular_zubbers/code/modules/mob/dead/new_player/sprite_accessories/hair.dm b/modular_zubbers/code/modules/mob/dead/new_player/sprite_accessories/hair.dm index cdf378eb47a..98ab8f65a20 100644 --- a/modular_zubbers/code/modules/mob/dead/new_player/sprite_accessories/hair.dm +++ b/modular_zubbers/code/modules/mob/dead/new_player/sprite_accessories/hair.dm @@ -136,6 +136,168 @@ name = "Rogue" icon_state = "messy_rt" +// Hair Megapack, by Charlotte-Sugar from Nova. + +/datum/sprite_accessory/hair/slimetails + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Slime Tails" + icon_state = "hair_slime_tails" + +/datum/sprite_accessory/hair/singedpigtails + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Singed Pigtails" + icon_state = "hair_singed_pigtails" + +/datum/sprite_accessory/hair/pigtailscupid + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Pigtails Cupid" + icon_state = "hair_pigtails_cupid" + +/datum/sprite_accessory/hair/pigtailsantenna + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Pigtails Antenna" + icon_state = "hair_pigtails_antenna" + +/datum/sprite_accessory/hair/tetodrills + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Teto Drills" + icon_state = "hair_teto_drills" + +/datum/sprite_accessory/hair/killmonger + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Killmonger" + icon_state = "hair_killmonger" + +/datum/sprite_accessory/hair/tayama + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Tayama" + icon_state = "hair_tayama" + +/datum/sprite_accessory/hair/pigtails6 + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Pigtails 6" + icon_state = "hair_pigtails_6" + +/datum/sprite_accessory/hair/sadako + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Sadako" + icon_state = "hair_sadako" + +/datum/sprite_accessory/hair/afroovereyes + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Afro Over Eyes" + icon_state = "hair_afro_over_eyes" + +/datum/sprite_accessory/hair/wolfcut + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Wolf Cut" + icon_state = "hair_wolfcut" + +/datum/sprite_accessory/hair/coily + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Coily" + icon_state = "hair_coily" + +/datum/sprite_accessory/hair/mullet + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Mullet" + icon_state = "hair_mullet" + +/datum/sprite_accessory/hair/mulletwithrattail + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Mullet with Rat Tail" + icon_state = "hair_mullet_with_rat_tail" + +/datum/sprite_accessory/hair/moneypiece + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Money Piece" + icon_state = "hair_money_piece" + +/datum/sprite_accessory/hair/fluffymess + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Fluffy Mess" + icon_state = "hair_fluffy_mess" + +/datum/sprite_accessory/hair/slimefringelong + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Slime Fringe Long" + icon_state = "hair_slime_fringe_long" + +/datum/sprite_accessory/hair/slimetails2 + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Slime Tails 2" + icon_state = "hair_slime_tails_2" + +/datum/sprite_accessory/hair/slimeponytaillow + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Slime Ponytail Low" + icon_state = "hair_slime_ponytail_low" + +/datum/sprite_accessory/hair/slimeblobby + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Slime Blobby" + icon_state = "hair_slime_blobby" + +/datum/sprite_accessory/hair/slimeponytailhigh + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Slime Ponytail High" + icon_state = "hair_slime_ponytail_high" + +/datum/sprite_accessory/hair/afrothreequarters + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Afro Three Quarters" + icon_state = "hair_afro_three_quarters" + +/datum/sprite_accessory/hair/longdreadsup + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Long Dreads Up" + icon_state = "hair_long_dreads_up" + +/datum/sprite_accessory/hair/longdreads + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Long Dreads" + icon_state = "hair_long_dreads" + +/datum/sprite_accessory/hair/ponytailfro + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Ponytail Fro" + icon_state = "hair_ponytail_fro" + +/datum/sprite_accessory/hair/longsidecut + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Long Side Cut" + icon_state = "hair_long_sidecut" + +/datum/sprite_accessory/hair/frizzysidecut + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Frizzy Side Cut" + icon_state = "hair_frizzy_sidecut" + +/datum/sprite_accessory/hair/sidecutbang + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Side Cut Bang" + icon_state = "hair_sidecut_bang" + +/datum/sprite_accessory/hair/pigtails5 + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Pigtails 5" + icon_state = "hair_pigtails_5" + +/datum/sprite_accessory/hair/bowlcutovereyes + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Bowl Cut Over Eyes" + icon_state = "hair_bowlcut_over_eyes" + +/datum/sprite_accessory/hair/slimejelly + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Slime Jelly" + icon_state = "hair_slime_jelly" + +/datum/sprite_accessory/hair/biggertails + icon = 'modular_zubbers/icons/customization/hair.dmi' + name = "Bigger Tails" + icon_state = "hair_bigger_tails" + /datum/sprite_accessory/facial_hair/viking icon = 'modular_zubbers/icons/customization/facial_hair.dmi' name = "Beard (Viking)" diff --git a/modular_zubbers/icons/customization/hair.dmi b/modular_zubbers/icons/customization/hair.dmi index 07c8f9fd47ea64afdaf6d3724226e9b7e1823321..85d36acdbb45c623a61f43d2093902553a0ab87c 100644 GIT binary patch literal 39261 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 z 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 HIDYXzE6Fh1 literal 16022 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 From 19ca9fe1017c35d889637a3406af0e01adde9228 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Tue, 28 Jul 2026 08:19:09 +0200 Subject: [PATCH 026/139] Automatic changelog for PR #5974 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5974.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5974.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5974.yml b/html/changelogs/AutoChangeLog-bubber-pr-5974.yml new file mode 100644 index 00000000000..4263a8d792d --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-5974.yml @@ -0,0 +1,4 @@ +author: "Charlotte-Sugar, KateAnbolho. red-creature, xPokee" +delete-after: True +changes: + - rscadd: "Several ported hairstyles from Nova, very cool." \ No newline at end of file From 517339033b0c716985b79bc88d24b21eeaf96cfd Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Tue, 28 Jul 2026 06:21:35 +0000 Subject: [PATCH 027/139] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5974.yml | 4 ---- html/changelogs/bubber_archive/2026-07.yml | 2 ++ 2 files changed, 2 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5974.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5974.yml b/html/changelogs/AutoChangeLog-bubber-pr-5974.yml deleted file mode 100644 index 4263a8d792d..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-5974.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Charlotte-Sugar, KateAnbolho. red-creature, xPokee" -delete-after: True -changes: - - rscadd: "Several ported hairstyles from Nova, very cool." \ No newline at end of file diff --git a/html/changelogs/bubber_archive/2026-07.yml b/html/changelogs/bubber_archive/2026-07.yml index cb652465c0e..09c8b8ffd55 100644 --- a/html/changelogs/bubber_archive/2026-07.yml +++ b/html/changelogs/bubber_archive/2026-07.yml @@ -263,6 +263,8 @@ - rscdel: Removed 'Summon Ghosts' from the wizard spellbook. It is still available via adminbus. 2026-07-28: + Charlotte-Sugar, KateAnbolho. red-creature, xPokee: + - rscadd: Several ported hairstyles from Nova, very cool. Kaltren: - bugfix: Cortical Borer Cage is no longer in the blacksmithing bounty list, as it's no longer smithable. From 8e565a4f852faafb27491eaa206a7283a5210915 Mon Sep 17 00:00:00 2001 From: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com> Date: Tue, 28 Jul 2026 09:43:06 -0600 Subject: [PATCH 028/139] Blocks favorite ghouling Proteans, an oversite that allows them to become a bloodsucker. (#6024) ## About The Pull Request This is an oversight. The event block is still functional. But you can convert a Protean into a bloodsucker. This stops that. ## Why It's Good For The Game This species is restricted on the event because they're effectively immortal. ## Proof Of Testing It works ## Changelog :cl: fix: Fixes an oversight that allows Proteans to become bloodsuckers by blocking favorite ghouling. /:cl: --- .../code/modules/antagonists/bloodsucker/clans/clan.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modular_zubbers/code/modules/antagonists/bloodsucker/clans/clan.dm b/modular_zubbers/code/modules/antagonists/bloodsucker/clans/clan.dm index 220afbbe3a9..c30f9c79598 100644 --- a/modular_zubbers/code/modules/antagonists/bloodsucker/clans/clan.dm +++ b/modular_zubbers/code/modules/antagonists/bloodsucker/clans/clan.dm @@ -277,6 +277,9 @@ if(!ghouldatum.owner.can_make_special(creator = bloodsuckerdatum.owner)) to_chat(master, span_notice("This Ghoul is unable to gain a Special rank due to innate features.")) return FALSE + if(isprotean(servant)) + to_chat(master, span_notice("You are unable to make this species your favorite Ghoul.")) + return FALSE if(bloodsuckerdatum.GetBloodVolume() < SPECIAL_GHOUL_COST) to_chat(master, span_notice("You need at least 150 blood to make a Ghoul a Favorite Ghoul.")) return FALSE From e692691dbc4c91fc3e086e55cb5635482615ecd2 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Tue, 28 Jul 2026 17:43:37 +0200 Subject: [PATCH 029/139] Automatic changelog for PR #6024 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6024.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6024.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6024.yml b/html/changelogs/AutoChangeLog-bubber-pr-6024.yml new file mode 100644 index 00000000000..17d4e07deaa --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6024.yml @@ -0,0 +1,4 @@ +author: "StrangeWeirdKitten" +delete-after: True +changes: + - bugfix: "Fixes an oversight that allows Proteans to become bloodsuckers by blocking favorite ghouling." \ No newline at end of file From 59209efa4c5a0af1341915dd918443525e58ea0f Mon Sep 17 00:00:00 2001 From: Tempest Date: Tue, 28 Jul 2026 12:51:08 -0500 Subject: [PATCH 030/139] Fix gunpoint lock-on being logged against the victim instead of the aimer (#6023) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## About The Pull Request Closes #5986. `/datum/gunpoint/lock_on()` called: ```dm log_combat(target, source, "locked onto with aiming") ``` `log_combat()`'s signature is `(atom/user, atom/target, what_done, atom/object, addition)` — the first argument is the actor and the second is who it was done to. These were passed the other way round, so every successful lock-on wrote `locked onto with aiming ` into the **target's** attack log, and handed the person actually holding the gun the `LOG_VICTIM` line `was locked onto with aiming by `. This is easy to miss when reading the file, because every *other* use of `source`/`target` in the datum is correct — the `visible_message()` calls all render the right way round, so chat reads correctly and only the logs are inverted. It only becomes obvious in the situation from the issue report, where one person was aimed at by several others and the logs read as though that person had gunpointed the entire room. The fix swaps the two arguments. It also passes `aimed_gun` as the `object` param, which the call was leaving empty — chat already tells everyone which gun is being aimed, and the log now records it too. ## Why It's Good For The Game Gunpointing is an escalation step, so its logs are evidence admins act on. As written, the logs named the victim as the aggressor, which is worse than having no log at all — it points admin attention at exactly the wrong player. Recording the gun as well saves a cross-reference against the chat log when working out what someone was actually being held at gunpoint with. ## Proof Of Testing Tested on a local server (Delta Station), aiming a foam force crossbow at a mothroach and at a human, and reading back both the in-round Individual Logs panel and `attack.log` on disk. `attack.log` after the fix — the actor is the mob holding the crossbow, the target is named as the object of the sentence, and the weapon now appears: ``` [2026-07-28 12:57:43.747] ATTACK: '(centralsmith)'/(Mackenzie Hooker) (mob_3144) locked onto with aiming *no key*/(Mr. Fluff) with the foam force crossbow (NEWHP: 25) (Recreation Area (214,97,2)) [2026-07-28 13:00:31.909] ATTACK: '(centralsmith)'/(Mackenzie Hooker) (mob_3144) locked onto with aiming *no key*/(Izabella Compton) with the foam force crossbow (NEWHP: 100) (Recreation Area (213,100,2)) ``` Before this PR, those lines were filed against Mr. Fluff and Izabella Compton — the ones being aimed at. Mr. Fluff is a mothroach, which makes the old attribution particularly clear: the log claimed the mothroach was the one locking on with a crossbow. Note that only the actor's line reaches disk; the matching `was locked onto with aiming by ...` victim line is written with `log_globally = FALSE`, so it appears in the Individual Logs panel only.
Screenshots/Videos https://github.com/user-attachments/assets/0d619ecf-0ba8-4045-b9ea-09b65ec2b696
## Changelog :cl: admin: Aiming a gun at someone is now logged against the person doing the aiming, rather than against the person being aimed at. The gun used is included in the log. /:cl: Co-authored-by: Centrsmith Co-authored-by: Claude Opus 5 --- modular_skyrat/modules/gunpoint/code/gunpoint_datum.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_skyrat/modules/gunpoint/code/gunpoint_datum.dm b/modular_skyrat/modules/gunpoint/code/gunpoint_datum.dm index a10cf315529..ef482319e9c 100644 --- a/modular_skyrat/modules/gunpoint/code/gunpoint_datum.dm +++ b/modular_skyrat/modules/gunpoint/code/gunpoint_datum.dm @@ -57,7 +57,7 @@ qdel(src) return locked = TRUE - log_combat(target, source, "locked onto with aiming") + log_combat(source, target, "locked onto with aiming", aimed_gun) playsound(get_turf(source), 'modular_skyrat/modules/gunpoint/sound/targeton.ogg', 50,1) to_chat(source, span_notice("You lock onto [target.name]!")) target.visible_message(span_warning("[source.name] holds [target.name] at gunpoint with the [aimed_gun.name]!"), span_userdanger("[source.name] holds you at gunpoint with the [aimed_gun.name]!")) From 22572727244783d9ca4aa1caddee93618e2aeb90 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Tue, 28 Jul 2026 19:51:47 +0200 Subject: [PATCH 031/139] Automatic changelog for PR #6023 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6023.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6023.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6023.yml b/html/changelogs/AutoChangeLog-bubber-pr-6023.yml new file mode 100644 index 00000000000..ae5f88b72bf --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6023.yml @@ -0,0 +1,4 @@ +author: "CentralSmith" +delete-after: True +changes: + - admin: "Aiming a gun at someone is now logged against the person doing the aiming, rather than against the person being aimed at. The gun used is included in the log." \ No newline at end of file From b63cc3cff2f9577ea121afbe7f07be91fcd52cd6 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Wed, 29 Jul 2026 02:37:52 +0000 Subject: [PATCH 032/139] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6023.yml | 4 ---- html/changelogs/AutoChangeLog-bubber-pr-6024.yml | 4 ---- html/changelogs/bubber_archive/2026-07.yml | 8 ++++++++ 3 files changed, 8 insertions(+), 8 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6023.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6024.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6023.yml b/html/changelogs/AutoChangeLog-bubber-pr-6023.yml deleted file mode 100644 index ae5f88b72bf..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6023.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CentralSmith" -delete-after: True -changes: - - admin: "Aiming a gun at someone is now logged against the person doing the aiming, rather than against the person being aimed at. The gun used is included in the log." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6024.yml b/html/changelogs/AutoChangeLog-bubber-pr-6024.yml deleted file mode 100644 index 17d4e07deaa..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6024.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "StrangeWeirdKitten" -delete-after: True -changes: - - bugfix: "Fixes an oversight that allows Proteans to become bloodsuckers by blocking favorite ghouling." \ No newline at end of file diff --git a/html/changelogs/bubber_archive/2026-07.yml b/html/changelogs/bubber_archive/2026-07.yml index 09c8b8ffd55..27adb40ebe3 100644 --- a/html/changelogs/bubber_archive/2026-07.yml +++ b/html/changelogs/bubber_archive/2026-07.yml @@ -279,3 +279,11 @@ - balance: Staff blacksmithing bounty is now worth 1050 total credits, up from 1000. - balance: Katana blacksmithing bounty is now worth 1100 total credits, down from 1200. +2026-07-29: + CentralSmith: + - admin: Aiming a gun at someone is now logged against the person doing the aiming, + rather than against the person being aimed at. The gun used is included in the + log. + StrangeWeirdKitten: + - bugfix: Fixes an oversight that allows Proteans to become bloodsuckers by blocking + favorite ghouling. From 1d91438ad3015f6ad83b6879955cdb283561864a Mon Sep 17 00:00:00 2001 From: Robwo <31576505+R0bro@users.noreply.github.com> Date: Wed, 29 Jul 2026 07:41:32 -0400 Subject: [PATCH 033/139] Pubby Shutter Quickfix (#6002) ## About The Pull Request Nothing big. I was gonna hold off on Pubby changes until the next upstream but enough people were complaining to me about the blacksmith's shutters. Additionally, I thought I'd lump a quick change to the /obj/effect/spawner/random/structure/crate loot pool as it is supposed to sometimes spawn /obj/effect/spawner/random/gizmo, but since there's a skyrat override for the list, it needed to be updated. ## Changelog Robwo :cl: fix: The Blacksmith's shutters and NT Rep's bolt button on Pubby now work. fix: Added gizmos to maint loot as tg intended. /:cl: --- _maps/map_files/PubbyStation/PubbyStation.dmm | 119 ++++++++---------- .../game/effects/spawners/random/structure.dm | 1 + 2 files changed, 52 insertions(+), 68 deletions(-) diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 6d0220a5fc3..46848930b5d 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -544,9 +544,7 @@ /area/station/ai/satellite/maintenance) "adj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/circuit/green{ - luminosity = 2 - }, +/turf/open/floor/circuit/green, /area/station/command/vault) "adk" = ( /obj/structure/table, @@ -3871,16 +3869,12 @@ /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/circuit/green{ - luminosity = 2 - }, +/turf/open/floor/circuit/green, /area/station/command/vault) "aqN" = ( /obj/machinery/light/directional/north, /obj/machinery/newscaster/directional/north, -/turf/open/floor/circuit/green{ - luminosity = 2 - }, +/turf/open/floor/circuit/green, /area/station/command/vault) "aqO" = ( /obj/effect/turf_decal/stripes/line{ @@ -4415,9 +4409,7 @@ /turf/open/floor/iron/dark, /area/station/command/vault) "asX" = ( -/turf/open/floor/circuit/green{ - luminosity = 2 - }, +/turf/open/floor/circuit/green, /area/station/command/vault) "asY" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ @@ -5480,9 +5472,7 @@ /area/station/commons/dorms) "awt" = ( /obj/machinery/airalarm/directional/north, -/turf/open/floor/circuit/green{ - luminosity = 2 - }, +/turf/open/floor/circuit/green, /area/station/command/vault) "awu" = ( /obj/machinery/holopad, @@ -8392,9 +8382,10 @@ /turf/open/floor/iron, /area/station/command/teleporter) "aLe" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/cargo/lobby) +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_switch/directional/west, +/turf/open/floor/iron, +/area/station/cargo/miningfoundry) "aLf" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -8581,7 +8572,7 @@ /obj/machinery/power/apc/auto_name/directional/north, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/cargo/bitrunning) +/area/station/cargo/blacksmith) "aMe" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 1 @@ -8589,14 +8580,14 @@ /obj/structure/reagent_forge, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/cargo/bitrunning) +/area/station/cargo/blacksmith) "aMf" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 1 }, /obj/structure/reagent_dispensers/reagent_smithing_basin/prefilled, /turf/open/floor/iron, -/area/station/cargo/bitrunning) +/area/station/cargo/blacksmith) "aMg" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/mannequin/wood, @@ -8605,7 +8596,7 @@ }, /obj/machinery/newscaster/directional/north, /turf/open/floor/iron, -/area/station/cargo/bitrunning) +/area/station/cargo/blacksmith) "aMh" = ( /obj/machinery/computer/security, /obj/effect/turf_decal/tile/red/anticorner/contrasted{ @@ -9343,8 +9334,8 @@ /turf/open/floor/iron, /area/station/hallway/primary/central/aft) "aPU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible, /obj/machinery/meter, +/obj/machinery/atmospherics/pipe/smart/manifold/violet, /turf/open/floor/iron/dark, /area/station/science/ordnance) "aQa" = ( @@ -10471,10 +10462,6 @@ /obj/machinery/status_display/ai/directional/north, /obj/structure/table/glass, /obj/machinery/fax/heads/rd, -/obj/item/toy/figure/rd{ - pixel_x = -1; - pixel_y = -5 - }, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/rd) "aVH" = ( @@ -18109,13 +18096,6 @@ "bPE" = ( /turf/closed/wall, /area/station/engineering/storage/tech) -"bPG" = ( -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) "bPH" = ( /obj/item/retractor, /obj/item/hemostat, @@ -18450,7 +18430,7 @@ /area/station/maintenance/department/engine) "bRF" = ( /turf/closed/wall, -/area/station/cargo/bitrunning) +/area/station/cargo/blacksmith) "bRG" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -30770,6 +30750,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/structure/sign/departments/exodrone/directional/north, /turf/open/floor/iron, /area/station/cargo/miningfoundry) "gYY" = ( @@ -32916,7 +32897,7 @@ }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/cargo/bitrunning) +/area/station/cargo/blacksmith) "izB" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod" @@ -32925,6 +32906,7 @@ dir = 1 }, /obj/effect/landmark/navigate_destination/dockescpod, +/obj/effect/landmark/navigate_destination/dockpublicmining, /turf/open/floor/plating, /area/station/commons/dorms) "izF" = ( @@ -33225,7 +33207,7 @@ dir = 8 }, /turf/open/floor/iron, -/area/station/cargo/bitrunning) +/area/station/cargo/blacksmith) "iKi" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/red/half/contrasted, @@ -34207,7 +34189,7 @@ /turf/open/floor/iron/white, /area/station/security/prison/mess) "jxt" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ +/obj/machinery/atmospherics/pipe/smart/simple/violet{ dir = 9 }, /turf/open/floor/iron/dark, @@ -34323,7 +34305,7 @@ id = "smithshutters" }, /turf/open/floor/iron, -/area/station/cargo/bitrunning) +/area/station/cargo/blacksmith) "jAR" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 @@ -36254,7 +36236,7 @@ id = "smithshutters" }, /turf/open/floor/iron, -/area/station/cargo/bitrunning) +/area/station/cargo/blacksmith) "kRk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/blue/half/contrasted{ @@ -36616,7 +36598,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/cargo/bitrunning) +/area/station/cargo/blacksmith) "ler" = ( /obj/machinery/vending/wardrobe/viro_wardrobe, /obj/machinery/airalarm/directional/west, @@ -37529,7 +37511,7 @@ /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/access/any/supply/blacksmith, /turf/open/floor/iron, -/area/station/cargo/bitrunning) +/area/station/cargo/blacksmith) "lJG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -40685,7 +40667,6 @@ /turf/open/floor/plating, /area/station/maintenance/department/cargo) "nSz" = ( -/obj/machinery/light_switch/directional/south, /obj/machinery/light/small/directional/south, /obj/effect/spawner/random/structure/crate, /obj/effect/decal/cleanable/dirt, @@ -41949,7 +41930,8 @@ req_access = list("cent_general"); pixel_y = 5; name = "Bolt Control"; - specialfunctions = 4 + specialfunctions = 4; + normaldoorcontrol = 1 }, /obj/machinery/button/door/directional/east{ id = "repbedshutters"; @@ -44581,7 +44563,7 @@ "qlz" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, -/area/station/cargo/bitrunning) +/area/station/cargo/blacksmith) "qlB" = ( /obj/effect/turf_decal/tile/red/opposingcorners, /obj/structure/table, @@ -46299,7 +46281,7 @@ /obj/item/radio/intercom/directional/south, /obj/structure/closet/crate/wooden/blacksmith, /turf/open/floor/iron, -/area/station/cargo/bitrunning) +/area/station/cargo/blacksmith) "rqQ" = ( /obj/effect/turf_decal/tile/red/half/contrasted, /obj/machinery/light/no_nightlight/directional/south, @@ -46307,9 +46289,7 @@ /area/station/security/prison) "rrt" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/circuit/green{ - luminosity = 2 - }, +/turf/open/floor/circuit/green, /area/station/command/vault) "rrx" = ( /obj/structure/sign/warning/vacuum/external/directional/south, @@ -46668,9 +46648,7 @@ "rCR" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/circuit/green{ - luminosity = 2 - }, +/turf/open/floor/circuit/green, /area/station/command/vault) "rDf" = ( /obj/structure/cable, @@ -47230,7 +47208,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/holopad, /turf/open/floor/iron, -/area/station/cargo/bitrunning) +/area/station/cargo/blacksmith) "rXH" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/effect/turf_decal/tile/red/opposingcorners, @@ -47344,7 +47322,7 @@ }, /obj/machinery/button/door/directional/south{ id = "smithshutters"; - req_access = list("cent_general"); + req_access = list("blacksmith"); name = "Blacksmith Shutter Control"; pixel_x = -5 }, @@ -47353,7 +47331,7 @@ pixel_x = 26 }, /turf/open/floor/iron, -/area/station/cargo/bitrunning) +/area/station/cargo/blacksmith) "sah" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -48986,6 +48964,9 @@ dir = 4 }, /obj/machinery/status_display/evac/directional/north, +/obj/item/toy/figure/rd{ + pixel_y = 7 + }, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/rd) "tgd" = ( @@ -49586,7 +49567,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/cargo/bitrunning) +/area/station/cargo/blacksmith) "twv" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -53055,7 +53036,7 @@ /obj/effect/turf_decal/tile/brown/half/contrasted, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/cargo/bitrunning) +/area/station/cargo/blacksmith) "vHR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -53518,7 +53499,7 @@ /obj/effect/landmark/start/blacksmith, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/cargo/bitrunning) +/area/station/cargo/blacksmith) "vYG" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -54677,7 +54658,7 @@ pixel_x = 22 }, /turf/open/floor/iron, -/area/station/cargo/bitrunning) +/area/station/cargo/blacksmith) "wIg" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -55299,6 +55280,7 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/machinery/light/directional/west, /turf/open/floor/iron, /area/station/hallway/primary/aft) "wZy" = ( @@ -56191,6 +56173,7 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/navigate_destination/disposals, /turf/open/floor/plating, /area/station/maintenance/department/science/central) "xyl" = ( @@ -89432,12 +89415,12 @@ xfa bAq voL bRm -bRm +rBt bAq hYU rAK ndd -bPG +bRm wZx bRm enU @@ -94012,7 +93995,7 @@ sDk xAH ame bOK -aLe +qlz aMf vYz vHx @@ -97591,7 +97574,7 @@ aaa aaa aaa aaa -aiS +xkF tYF cuH xkF @@ -97848,7 +97831,7 @@ aiT aiS aiS aiS -aiS +xkF icK wCi emV @@ -98105,7 +98088,7 @@ sFK sFK sFK nOt -aiS +xkF fVJ aaO lJM @@ -98362,7 +98345,7 @@ aiT aiS sFK byL -aiS +xkF eHq wKP axv @@ -98642,7 +98625,7 @@ fln vBZ pWe vBZ -anu +aLe aNQ jQv asK @@ -106125,7 +106108,7 @@ iSi bkF uXG bkF -bwm +rKi rKi rKi rKi diff --git a/modular_skyrat/master_files/code/game/effects/spawners/random/structure.dm b/modular_skyrat/master_files/code/game/effects/spawners/random/structure.dm index 70af769a5e7..bb1568d759f 100644 --- a/modular_skyrat/master_files/code/game/effects/spawners/random/structure.dm +++ b/modular_skyrat/master_files/code/game/effects/spawners/random/structure.dm @@ -10,5 +10,6 @@ /obj/structure/closet/mini_fridge = 35, /obj/effect/spawner/random/trash/mess = 30, /obj/item/kirbyplants/fern = 20, + /obj/effect/spawner/random/gizmo = 20, /obj/structure/closet/crate/decorations = 15, ) From e4f53c11d6a8e29458b579e5e0224f713604ff51 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Wed, 29 Jul 2026 13:41:58 +0200 Subject: [PATCH 034/139] Automatic changelog for PR #6002 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6002.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6002.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6002.yml b/html/changelogs/AutoChangeLog-bubber-pr-6002.yml new file mode 100644 index 00000000000..7b809b0614f --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6002.yml @@ -0,0 +1,5 @@ +author: "R0bro" +delete-after: True +changes: + - bugfix: "The Blacksmith's shutters and NT Rep's bolt button on Pubby now work." + - bugfix: "Added gizmos to maint loot as tg intended." \ No newline at end of file From d6abffdecc17c6b5107c8a466e20cea8fb24157e Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Thu, 30 Jul 2026 02:25:02 +0000 Subject: [PATCH 035/139] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6002.yml | 5 ----- html/changelogs/bubber_archive/2026-07.yml | 4 ++++ 2 files changed, 4 insertions(+), 5 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6002.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6002.yml b/html/changelogs/AutoChangeLog-bubber-pr-6002.yml deleted file mode 100644 index 7b809b0614f..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6002.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "R0bro" -delete-after: True -changes: - - bugfix: "The Blacksmith's shutters and NT Rep's bolt button on Pubby now work." - - bugfix: "Added gizmos to maint loot as tg intended." \ No newline at end of file diff --git a/html/changelogs/bubber_archive/2026-07.yml b/html/changelogs/bubber_archive/2026-07.yml index 27adb40ebe3..a5723c7fb95 100644 --- a/html/changelogs/bubber_archive/2026-07.yml +++ b/html/changelogs/bubber_archive/2026-07.yml @@ -287,3 +287,7 @@ StrangeWeirdKitten: - bugfix: Fixes an oversight that allows Proteans to become bloodsuckers by blocking favorite ghouling. +2026-07-30: + R0bro: + - bugfix: The Blacksmith's shutters and NT Rep's bolt button on Pubby now work. + - bugfix: Added gizmos to maint loot as tg intended. From 1cc0063d7db56378ca5901d2122bbc7417de53bf Mon Sep 17 00:00:00 2001 From: Alexis Date: Thu, 30 Jul 2026 17:26:38 -0400 Subject: [PATCH 036/139] Fixes Radstorm Dorms Check (#6029) ## About The Pull Request I was going to add dorms to the radstorm protected areas but turns out we already had a check for this. It was just broken. This fixes it. ## Why It's Good For The Game While it is kind of funny, ERPers getting radiation blasted is probably bad for the game. ## Proof Of Testing The area around Mr. Ghoul in the attached screenshot is `/area/station/commons/dorms`. I just couldn't get Metastation to load on my local environment.
Screenshots/Videos image
## Changelog :cl: fix: Dorms that are occupied are once again safe from radstorms. /:cl: --- .../weather/weather_types/radiation_storm.dm | 1 + .../code/modules/events/ev_roleplay_check.dm | 16 ++++++---------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/modular_zubbers/code/datums/weather/weather_types/radiation_storm.dm b/modular_zubbers/code/datums/weather/weather_types/radiation_storm.dm index ae1c13876ff..3e89dc1e9d1 100644 --- a/modular_zubbers/code/datums/weather/weather_types/radiation_storm.dm +++ b/modular_zubbers/code/datums/weather/weather_types/radiation_storm.dm @@ -21,6 +21,7 @@ if(!GLOB.emergency_access) maint_flipped = TRUE addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(make_maint_all_access), TRUE), 0.5 SECONDS) // timed to match the status display + dorms_check() /datum/weather/rad_storm/end() . = ..() diff --git a/modular_zubbers/code/modules/events/ev_roleplay_check.dm b/modular_zubbers/code/modules/events/ev_roleplay_check.dm index 627f00cf020..151d19560c1 100644 --- a/modular_zubbers/code/modules/events/ev_roleplay_check.dm +++ b/modular_zubbers/code/modules/events/ev_roleplay_check.dm @@ -5,17 +5,13 @@ GLOBAL_LIST_EMPTY(dorms_areas) . = ..() GLOB.dorms_areas[src] = TRUE -/datum/weather/proc/enhanced_roleplay_filter(list/affectareas) - return affectareas +/datum/weather/rad_storm/proc/dorms_check(mob/player) + var/turf/player_turf = get_turf(player) -/datum/weather/rad_storm/enhanced_roleplay_filter(list/affectareas) - var/list/filtered_areas = affectareas - for(var/area/engaged_roleplay_area as anything in GLOB.dorms_areas) - for(var/mob/living/carbon/human/roleplayer in engaged_roleplay_area.contents) - if(engaged_role_play_check(player = roleplayer, station = FALSE, dorms = TRUE)) - LAZYREMOVE(filtered_areas, engaged_roleplay_area) - break - return filtered_areas + if(player_turf && length(GLOB.dorms_areas)) + var/area/player_area = player_turf.loc + if(GLOB.dorms_areas[player_area]) + protected_areas += player_area /datum/weather/rad_storm/send_alert(alert_msg, alert_sfx, alert_sfx_vol = 100) for(var/area/impacted_area as anything in impacted_areas) From fcb35b44d3ee809499eee5360f19d9e06e105be8 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Thu, 30 Jul 2026 23:27:14 +0200 Subject: [PATCH 037/139] Automatic changelog for PR #6029 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6029.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6029.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6029.yml b/html/changelogs/AutoChangeLog-bubber-pr-6029.yml new file mode 100644 index 00000000000..39011c72994 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6029.yml @@ -0,0 +1,4 @@ +author: "xPokee" +delete-after: True +changes: + - bugfix: "Dorms that are occupied are once again safe from radstorms." \ No newline at end of file From 14dc234cd3d8373b4faa536c9d12a3e481a11b1f Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Fri, 31 Jul 2026 02:49:41 +0000 Subject: [PATCH 038/139] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6029.yml | 4 ---- html/changelogs/bubber_archive/2026-07.yml | 3 +++ 2 files changed, 3 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6029.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6029.yml b/html/changelogs/AutoChangeLog-bubber-pr-6029.yml deleted file mode 100644 index 39011c72994..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6029.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "xPokee" -delete-after: True -changes: - - bugfix: "Dorms that are occupied are once again safe from radstorms." \ No newline at end of file diff --git a/html/changelogs/bubber_archive/2026-07.yml b/html/changelogs/bubber_archive/2026-07.yml index a5723c7fb95..92e0402aaf5 100644 --- a/html/changelogs/bubber_archive/2026-07.yml +++ b/html/changelogs/bubber_archive/2026-07.yml @@ -291,3 +291,6 @@ R0bro: - bugfix: The Blacksmith's shutters and NT Rep's bolt button on Pubby now work. - bugfix: Added gizmos to maint loot as tg intended. +2026-07-31: + xPokee: + - bugfix: Dorms that are occupied are once again safe from radstorms. From 576f0e1a095323ab67b7508bbb58784a759bcddf Mon Sep 17 00:00:00 2001 From: Alexis Date: Fri, 31 Jul 2026 12:34:53 -0400 Subject: [PATCH 039/139] You're Telling Me A Shrimp Fried This... Shrimp?! (Shrimp Updates) (#6035) ## About The Pull Request This super awesome PR adds a raw and cooked state for shrimp, as well as making it so that cooked shrimp can be processed into shrimp chips. Yippee!
Icons raw shrimp icon fried shrimp icon
## Why It's Good For The Game When I originally added shrimp to the game, they were added without the ability to be made into anything at all. This (part 1 of ???) PR adds a few new foods that can be made from it. ## Proof Of Testing I fried the shrimp. Shrimple as that. See below.
Screenshots/Videos image image image
## Changelog :cl: add: Added raw shrimp, fried (cooked) shrimp, and the ability to process fried shrimp into shrimp chips. /:cl: --- .../modules/fishing/fish/types/saltwater.dm | 2 +- .../modules/food_and_drinks/food/meatdish.dm | 28 ++++++++++++++++++ .../recipes/processor_recipes.dm | 3 ++ modular_zubbers/icons/obj/food/meat.dmi | Bin 921 -> 1366 bytes tgstation.dme | 2 ++ 5 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 modular_zubbers/code/modules/food_and_drinks/food/meatdish.dm create mode 100644 modular_zubbers/code/modules/food_and_drinks/recipes/processor_recipes.dm diff --git a/modular_zubbers/code/modules/fishing/fish/types/saltwater.dm b/modular_zubbers/code/modules/fishing/fish/types/saltwater.dm index 5afecb79230..829a807001c 100644 --- a/modular_zubbers/code/modules/fishing/fish/types/saltwater.dm +++ b/modular_zubbers/code/modules/fishing/fish/types/saltwater.dm @@ -15,7 +15,7 @@ required_temperature_min = MIN_AQUARIUM_TEMP required_temperature_max = MIN_AQUARIUM_TEMP + 12 required_fluid_type = AQUARIUM_FLUID_SALTWATER - fillet_type = null + fillet_type = /obj/item/food/fishmeat/shrimp /obj/item/fish/shrimp/get_fish_taste() return list("raw shrimp" = 2) diff --git a/modular_zubbers/code/modules/food_and_drinks/food/meatdish.dm b/modular_zubbers/code/modules/food_and_drinks/food/meatdish.dm new file mode 100644 index 00000000000..ab06ee29a53 --- /dev/null +++ b/modular_zubbers/code/modules/food_and_drinks/food/meatdish.dm @@ -0,0 +1,28 @@ +/obj/item/food/fishmeat/shrimp + name = "raw shrimp" + desc = "A freshly prepared shrimp." + icon = 'modular_zubbers/icons/obj/food/meat.dmi' + icon_state = "shrimp" + tastes = list("raw shrimp" = 1) + bite_consumption = 3 + fillet_name = "raw %NAME" + +/obj/item/food/fishmeat/shrimp/make_grillable() + AddComponent(/datum/component/grillable, /obj/item/food/fried_shrimp, rand(40 SECONDS, 50 SECONDS), TRUE, TRUE) + +/obj/item/food/fried_shrimp + name = "fried shrimp" + desc = "A finger of fish." + icon = 'modular_zubbers/icons/obj/food/meat.dmi' + icon_state = "shrimp_cooked" + food_reagents = list( + /datum/reagent/consumable/nutriment = 1, + /datum/reagent/consumable/nutriment/protein = 5, + /datum/reagent/consumable/nutriment/vitamin = 3, + ) + bite_consumption = 3 + tastes = list("shrimp" = 1) + foodtypes = SEAFOOD|FRIED + w_class = WEIGHT_CLASS_SMALL + venue_value = FOOD_PRICE_EXOTIC + crafting_complexity = FOOD_COMPLEXITY_2 diff --git a/modular_zubbers/code/modules/food_and_drinks/recipes/processor_recipes.dm b/modular_zubbers/code/modules/food_and_drinks/recipes/processor_recipes.dm new file mode 100644 index 00000000000..289a8142f44 --- /dev/null +++ b/modular_zubbers/code/modules/food_and_drinks/recipes/processor_recipes.dm @@ -0,0 +1,3 @@ +/datum/food_processor_process/shrimp_chips + input = /obj/item/food/fried_shrimp + output = /obj/item/food/chips/shrimp diff --git a/modular_zubbers/icons/obj/food/meat.dmi b/modular_zubbers/icons/obj/food/meat.dmi index 93ec895403028d6e84de74e3f8c54c88ba595449..719710488daf8ec61d51b8c3d8d85fbbe071e03e 100644 GIT binary patch delta 1360 zcmV-W1+V&<2i6LZ7k@wq1^@s6s%dfF0001ydQ@0+L}hbha%pgMX>V=-0C)k7k2?y( zFc1Z6=@i25Lw;?VU=v)#R}hP|$u5qpAT7@IBVtHr>~7{U&8y9|y>-25?wy`6Wsak{ znDcJ0)rY-Mk<(EtLVl9Wk_7|{R^TZHU>gvm(#mtnWj<*2NPiG;=70Qx39KV_1CFb4 zro`dBF|#hl0sT^4o3?L$|Gr@fLy+2OC^`TD1b|6IK~#9!?V4#wR8bVi&)9}(L^-8x zT4Xu~MHH1ETBaf*jG}BIS~Ms#i3(aEqM(hUMWzT_h_a0++K3h+s%iPqLJ&ncPDWW) zR$5e}rl2p*9e>a5&KoD+^S!5t_y6U-&6)ZA&bjx!k+DGwk4*}Y0;B*bKniHaIoK*v zQ6F1e?bFQFtOX!^#!DZ-F@PVA1n4x}%eD{gh}0~h*$N1P_jvs$(mq`~A*j_{ zB~2r+E_k(s(p-S^JL{LA2>{{ShDX4}F5&!`_e%-nRe#ofz13n!z>i0v;iJ+4?mHbY zs@P*p0K!k(z6GjtTmkS2(RR50tpfVil);;@2zGpQ)*?3E-0iYd0u!*t_wPV$+n3h% zD8i$JSGfiSAbe6g|8~a(84!K#0*A+uf&w!4?}wX<=W{Vt6=m$)_?0UlWv$C*CVc8@ zA4J*w?SEgB=Y_B&{{l#r$5CnRfb8rr*jE0^n1Cs1z=UN$_JJ#;peIS@i+?jdGt`w z)G$+kSbc1Fsyqgv?Q`|PYn}oK6}Ksy!P7!0PJacp1hM*O&fQ?!7d?fh2oS4}l_y{^ zTH!Sbz!C2N2!k!Ih8NcXyauNTiW1??7J$`P!y`0BD}22IrgpR`ac%rdYjS1=Z*h`< z(BfSHp(zCaxu}$l4}CtHQTQ20x(8LB!1X|D79dJkmV2DFczqG8P68SVFFxn<+g_S~ zv46Y%%NV$30iuLLdz|JMHd=XF@Yq5pJme6(QE*)XNCI?=wH#b6K)l~$cJJ+P8oVw6 znB>Udub%1{1s8KK#-a32_pm2AjG2{hkbtHLN-%4_H%kFlM+%SvqyQ;E3XlS%04YEU zkOHItDL@L40;B*bKnjoo{u8&`&BiYI&woPxbM#x{ApV+8r_+)T{d`k;$oC((Ay*fZ zZUG3NkUBf$HQw{5xdbZ&AbkAfIU&y%Tt1~sg6=8s@}Mg~K;_%~fb;G8BytIjA)u=8 zMZo#CaRYQoFkJv9|H@@H4%xWN^fjhF0hre}uCj4x&MotPB&C)>+kZY4u`zMdWPc8i z+c;VwfF$q&6n|i2zX>TE9=CC{On{g(Ge@!y6BFLmU-hNSxd^KSh}ktZfxUlx=k{#h zId47}(I^6NVf>P_UWrc{9?%5^d5>V$+53%hn?(tu9lZj&;I8Kbth((rR{+9_3mff| z1nPvy-hCQXfVvZUbd9o30Bf^aXnzX9V;5koUIRkGV;5j7TLWmmM`vwjf7jv86$LAu zvU)3TeS-fzW|HZ*K?0@9KFJ!VV5Ju>&*ZJI2VS>;yJ@LPam81@kKj-D?O_Yw)t&2r zx&Yy+Q_Rez>4TJl@8x_S!QCg0vxV>Qo&!K#pcTGB9YAy3_wFr_41~r`ph?c4SkVDA z$3K281(Jc#TIamsHGt;3I2A(0iYGyu2I5pO68UXV3XlS%04YEUkOHKD7Ms6X^O|4a S80@S70000V=-0C=2JR&a84 z_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5DKRA@ zKQ}QmJ~uV7M2U+tC9|j)C~U~ZnO2mTn+jpW73U{OtgPVb=K^*L z0IO;$S~uDL!2kdP)Ja4^RCt{2mp^C|Q5?sAiB+i$6ltVYN;?!nlF>mkD7a)0Clx2b z)Fo{f35Y^L5J5;$EXAeTL8G_`{#pEkxQIH`?zSP&p;E9yf~c2n_I%&h{*p5}^ImdS zL-l>&c**5*xqr|1_q+ElL9_<^hL|HGu+VbfJ~U`PB>L;PY1clS3&?Hgi?;^ z@pW}4bm;sb*OQ7 zVL~Xeog_zW$@3Yx{V5n<5!GjDdG8BKc2ypu4h=g1A`o1-e2Kcxrm6SElZrgXA;+sVKp@A)r+n)OwExKqmVAxMuPqcP_(60)N`#QB%G(`Ldih;F#VKzA z2!X=g8Gj-XLNalPmRCMeY~%C(z5z;#ac=hgZ^0~z5WtV}Dm~9;Y(GQj2~_0)cffou zN{5H@QeGGBRbVmLMF)iZt+6qBb|ot}bOzot+#NV}XsxV$5xO|5FDoC5$clsF10nw= zFGnyr8Kms$yfSoU2e1@c9I`wY@O}~__T%$8+JER25dcEipE^wsAH8Z(*B!1ti2zV} z76#4AgN6t3WQKbhGMEE^a~@z=n7gD_{%L;6^DQ8kKe5JRvP0#a@{ne9ue+&9MCE<&qp{E&az+Hz0rN&OX`tPI(q@M%sz;OB}+v z+<$#J(W$6yc?8g^yz^-em6wQh{@s!44Bx6aqxEGDVJSSQePXYb=LruJo%11w<-LkC z+9yE>w0A&xoS!X^0BV=K8#m*=$%Cd&lnAN+V0aaG^0qH($Hlsi^&R+G`7HxN7~d6_ mTf48tU@#aA27}?B;ummLVl24P)U5yj00{s|MNUMnLSTYG%dRZ| diff --git a/tgstation.dme b/tgstation.dme index 244e87a9ef0..f5425835af3 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -9823,7 +9823,9 @@ #include "modular_zubbers\code\modules\fishing\fish\types\saltwater.dm" #include "modular_zubbers\code\modules\fishing\sources\subtypes\fishing_portal_machine.dm" #include "modular_zubbers\code\modules\fluff\flora\ash_flora.dm" +#include "modular_zubbers\code\modules\food_and_drinks\food\meatdish.dm" #include "modular_zubbers\code\modules\food_and_drinks\machinery\stove.dm" +#include "modular_zubbers\code\modules\food_and_drinks\recipes\processor_recipes.dm" #include "modular_zubbers\code\modules\food_and_drinks\recipes\drinks\drinks_alcoholic.dm" #include "modular_zubbers\code\modules\food_and_drinks\recipes\drinks\drinks_non-alcoholic.dm" #include "modular_zubbers\code\modules\food_and_drinks\recipes\tablecraft\recipes_meat.dm" From cc11b352d3be39055878f2fad8b1a6a31a60c5ca Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Fri, 31 Jul 2026 18:37:17 +0200 Subject: [PATCH 040/139] Automatic changelog for PR #6035 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6035.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6035.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6035.yml b/html/changelogs/AutoChangeLog-bubber-pr-6035.yml new file mode 100644 index 00000000000..c78830ab747 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6035.yml @@ -0,0 +1,4 @@ +author: "xPokee" +delete-after: True +changes: + - rscadd: "Added raw shrimp, fried (cooked) shrimp, and the ability to process fried shrimp into shrimp chips." \ No newline at end of file From d8062d211f638fd29d4d70a9f2e0785df05c4401 Mon Sep 17 00:00:00 2001 From: Mathilde <146444134+ibexgoetia@users.noreply.github.com> Date: Fri, 31 Jul 2026 18:45:01 +0200 Subject: [PATCH 041/139] Dusting Sickness fixes (#6028) ## About The Pull Request I have fixed a couple issues with the quirk as is; firstly, plasmamen and abductors can no longer pick this quirk, to not instantly kill them upon spawning (as they technically don't have blood). Secondly, being dusted now makes you drop your things the moment before, instead of dusting them with you. ## Why It's Good For The Game The species not being restricted seemed like an oversight. Making it so that the quirk doesn't delete your items makes the quirk a lot less of a pain for heads of staff specifically, as it could lead to the loss of critical and/or unique items. ## Proof Of Testing Here's Cpt. Pinkmann (any correlation to the Breaking Bad character is purely coincidental) being syphoned of their precious blood. Don't worry, they're fine. https://github.com/user-attachments/assets/8538a13c-3853-4956-b6c1-f4b1d843d664 ## Changelog :cl: balance: Being dusted via Dusting Sickness now makes you drop your equipment. fix: Abductors and Plasmamen are now blacklisted from picking the Dusting Sickness quirk. /:cl: --- .../code/datums/quirks/negative_quirks/bloodloss_dusting.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modular_zubbers/code/datums/quirks/negative_quirks/bloodloss_dusting.dm b/modular_zubbers/code/datums/quirks/negative_quirks/bloodloss_dusting.dm index baa7848b15f..8364790e567 100644 --- a/modular_zubbers/code/datums/quirks/negative_quirks/bloodloss_dusting.dm +++ b/modular_zubbers/code/datums/quirks/negative_quirks/bloodloss_dusting.dm @@ -2,6 +2,7 @@ name = "Dusting Sickness" desc = "If you run out of blood to the point where a normal person would die, you turn to dust." value = -8 + species_blacklist = list(SPECIES_ABDUCTOR_STATION, SPECIES_PLASMAMAN) gain_text = span_danger("You start to worry even more about running out of blood.") lose_text = span_notice("You feel like running out of blood isn't /quite/ as scary.") medical_record_text = "Patient's body has an extreme reaction to bloodloss to the point of crumbling to dust. Keeping blood levels steady is recommended." @@ -18,6 +19,7 @@ to_chat(quirk_holder, span_danger("You ran out of blood!")) quirk_holder.investigate_log("has been dusted by a lack of blood. Caused by [src.name] quirk", INVESTIGATE_DEATHS) quirk_holder.dust() + quirk_holder.drop_everything(del_on_drop = FALSE, force = TRUE, del_if_nodrop = TRUE) /datum/quirk/bloodloss_dusting/remove() UnregisterSignal(quirk_holder, COMSIG_HUMAN_ON_HANDLE_BLOOD) From 9669c7bad732a5a3436227d8c502cd3364635790 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Fri, 31 Jul 2026 18:45:28 +0200 Subject: [PATCH 042/139] Automatic changelog for PR #6028 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6028.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6028.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6028.yml b/html/changelogs/AutoChangeLog-bubber-pr-6028.yml new file mode 100644 index 00000000000..f8731898e69 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6028.yml @@ -0,0 +1,5 @@ +author: "ibexgoetia" +delete-after: True +changes: + - balance: "Being dusted via Dusting Sickness now makes you drop your equipment." + - bugfix: "Abductors and Plasmamen are now blacklisted from picking the Dusting Sickness quirk." \ No newline at end of file From 96d60afb4745f855027c1b676e67aa8825dd588b Mon Sep 17 00:00:00 2001 From: Alexis Date: Fri, 31 Jul 2026 12:50:53 -0400 Subject: [PATCH 043/139] Turns the Hemophage Species into a Quirk (#5919) ## About The Pull Request The goal of this PR is twofold: 1. Remove hemophages as a species. 2. Allow anyone to be a hemophage through the use of a quirk. Currently, hemophages are somewhat limited in what they can look like bodyshape wise due to being tied to a species, yet almost all of their abilities and traits are tied to organs. To-Do: - [x] Properly implement the removal of the organs when the quirk gets removed. - [x] Test the quirk with the other hemophage specific quirks, possibly work them into toggles with this quirk. ## Why It's Good For The Game This helps shorten our list of playable species while keeping the core aspects of hemophage gameplay able to be done. It also increases customization potential, yippee. ## Proof Of Testing See below.
Screenshots/Videos image image
## Changelog :cl: del: Removed the hemphage specific quirks Masquerade, Sol Weakness, and Pseudo-Respiration. They are now toggles on the hemophage quirk. refactor: Refactored the hemophage species into being a quirk: Hemophagia. /:cl: --------- Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com> --- code/__DEFINES/~~bubber_defines/DNA.dm | 1 - code/__HELPERS/~skyrat_helpers/is_helpers.dm | 1 - .../subsystem/processing/quirks.dm | 1 + config/game_options.txt | 1 - .../species/hemophage/hemophage_species.dm | 181 --------------- .../chemistry/reagents/alcohol_reagents.dm | 4 +- .../datums/diseases/advance/transformation.dm | 17 -- .../quirks/negative_quirks/sol_weakness.dm | 101 --------- .../datums/quirks/neutral_quirks/hemophage.dm | 207 ++++++++++++++++++ .../neutral_quirks/pseudo_respiration.dm | 29 --- .../quirks/positive_quirks/masquerade_food.dm | 10 - .../bloodsucker/bloodsuckers/bloodsucker.dm | 4 +- .../modules/designs/limbgrower_designs.dm | 10 +- .../human/species_types/hemophage_species.dm | 37 ---- .../chemistry/reagents/Recipes/others.dm | 5 - .../chemistry/reagents/other_reagents.dm | 8 - .../code/modules/reagents/drink_reagents.dm | 16 +- tgstation.dme | 6 +- .../bubbers/hemophage.tsx | 22 ++ 19 files changed, 248 insertions(+), 413 deletions(-) delete mode 100644 modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_species.dm delete mode 100644 modular_zubbers/code/datums/quirks/negative_quirks/sol_weakness.dm create mode 100644 modular_zubbers/code/datums/quirks/neutral_quirks/hemophage.dm delete mode 100644 modular_zubbers/code/datums/quirks/neutral_quirks/pseudo_respiration.dm delete mode 100644 modular_zubbers/code/datums/quirks/positive_quirks/masquerade_food.dm delete mode 100644 modular_zubbers/code/modules/mob/living/carbon/human/species_types/hemophage_species.dm create mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/bubbers/hemophage.tsx diff --git a/code/__DEFINES/~~bubber_defines/DNA.dm b/code/__DEFINES/~~bubber_defines/DNA.dm index 3fd10091f50..437935a1feb 100644 --- a/code/__DEFINES/~~bubber_defines/DNA.dm +++ b/code/__DEFINES/~~bubber_defines/DNA.dm @@ -141,7 +141,6 @@ #define SPECIES_XENO "xeno" #define SPECIES_GHOUL "ghoul" #define SPECIES_TESHARI "teshari" -#define SPECIES_HEMOPHAGE "hemophage" #define SPECIES_FELINE_PRIMITIVE "primitive_felinid" #define SPECIES_PROTEAN "protean" #define SPECIES_GAS "serpentid" diff --git a/code/__HELPERS/~skyrat_helpers/is_helpers.dm b/code/__HELPERS/~skyrat_helpers/is_helpers.dm index 7aa97cbbe35..7c866486845 100644 --- a/code/__HELPERS/~skyrat_helpers/is_helpers.dm +++ b/code/__HELPERS/~skyrat_helpers/is_helpers.dm @@ -14,7 +14,6 @@ #define isunathi(A) (is_species(A,/datum/species/unathi)) #define isvulpkanin(A) (is_species(A,/datum/species/vulpkanin)) #define isteshari(A) (is_species(A, /datum/species/teshari)) -#define ishemophage(A) (is_species(A, /datum/species/hemophage)) #define issnail(A) (is_species(A, /datum/species/snail)) #define isluminescent(A) (is_species(A, /datum/species/jelly/luminescent)) #define isprimitivedemihuman(A) (is_species(A, /datum/species/human/felinid/primitive)) diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index d6fb787a5cd..c8ca6bef06d 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -51,6 +51,7 @@ GLOBAL_LIST_INIT_TYPED(quirk_blacklist, /list/datum/quirk, list( list(/datum/quirk/unblinking, /datum/quirk/item_quirk/fluoride_stare), list(/datum/quirk/micro, /datum/quirk/micro/smaller, /datum/quirk/micro/smallest, /datum/quirk/oversized), list(/datum/quirk/psionic_dampener, /datum/quirk/telepathic), + list(/datum/quirk/hemophage, /datum/quirk/prosthetic_organ, /datum/quirk/tin_man) // BUBBER EDIT - ADDITION - END )) diff --git a/config/game_options.txt b/config/game_options.txt index 5ced2acadd8..4d7dcba72d2 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -385,7 +385,6 @@ ROUNDSTART_RACES moth ROUNDSTART_RACES plasmaman #ROUNDSTART_RACES shadow ROUNDSTART_RACES teshari -ROUNDSTART_RACES hemophage ROUNDSTART_RACES snail ## Races that are better than humans in some ways, but worse in others diff --git a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_species.dm b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_species.dm deleted file mode 100644 index 385384545f2..00000000000 --- a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_species.dm +++ /dev/null @@ -1,181 +0,0 @@ -/// Some starter text sent to the Hemophage initially, because Hemophages have shit to do to stay alive. -#define HEMOPHAGE_SPAWN_TEXT "You are an [span_danger("Hemophage")]. You will slowly but constantly lose blood if outside of a closet-like object. If inside a closet-like object, or in pure darkness, you will slowly heal, at the cost of blood. You may gain more blood by grabbing a live victim and using your drain ability." - - -/datum/species/hemophage - name = "Hemophage" - id = SPECIES_HEMOPHAGE - inherent_traits = list( - TRAIT_ADVANCEDTOOLUSER, - TRAIT_CAN_STRIP, - TRAIT_NOHUNGER, - TRAIT_NOBREATH, - TRAIT_VIRUSIMMUNE, - TRAIT_LITERATE, - TRAIT_DRINKS_BLOOD, - ) - inherent_biotypes = MOB_HUMANOID | MOB_ORGANIC - exotic_bloodtype = "U" - mutantheart = /obj/item/organ/heart/hemophage - mutantliver = /obj/item/organ/liver/hemophage - mutantstomach = /obj/item/organ/stomach/hemophage - mutanttongue = /obj/item/organ/tongue/hemophage - mutantlungs = null - changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT - examine_limb_id = SPECIES_HUMAN - skinned_type = /obj/item/stack/sheet/animalhide/carbon/human - -/datum/species/hemophage/allows_food_preferences() - return FALSE - -/datum/species/hemophage/get_default_mutant_bodyparts() - return list( - "legs" = list("Normal Legs", FALSE), - ) - -/datum/species/hemophage/check_roundstart_eligible() - if(check_holidays(HALLOWEEN)) - return TRUE - - return ..() - -/datum/species/hemophage/on_species_gain(mob/living/carbon/human/new_hemophage, datum/species/old_species, pref_load, regenerate_icons) - . = ..() - to_chat(new_hemophage, HEMOPHAGE_SPAWN_TEXT) - new_hemophage.update_body() - - -/datum/species/hemophage/get_species_description() - return "Oftentimes feared or pushed out of society for the predatory nature of their condition, \ - Hemophages are typically mixed around various Frontier populations, keeping their true nature hidden while \ - reaping both the benefits and easy access to prey, enjoying unpursued existences on the Frontier." - - -/datum/species/hemophage/get_species_lore() - return list( - "Though known by many other names, 'Hemophages' are those that have found themselves the host of a bloodthirsty infection. 'Natural' hemophages have their infection first overtake their body through the bloodstream, though methods vary; \ - Hemophages thought to be a dense cluster of tightly related but distinct strains and variants. It will first take root in the chest, making alterations to the cells making up the host's organs to rapidly expand and take them over. \ - Lungs will deflate into nothingness, the liver becomes wrapped up and filled with corrupted tissue and the digestive organs will gear themselves towards the intake of the only meal they can have; blood. The host's heart will almost triple in size from this 'cancerous' tissue, forming an overgrown coal-black tumor that now keeps their body standing.", - - "The initial infection process in someone becoming a Hemophage can have varied effects and impacts, though there is a sort of timeline that crops up in the vast majority of cases. The process often begins with the steady decline of the host's heartrate into severe bradycardial agony as it begins to become choked with tumor tissue, chest pains and lightheadedness signaling the first stretch. \ - Fatigue, exercise intolerance, and near-fainting persist and worsen as the host's lungs slowly begin to atrophy; the second organ to normally be 'attacked' by the process. Coughing and hemoptysis will worsen and worsen until it suddenly stops, alongside the Hemophage's ability and need to continue breathing altogether.", - - "The ability to eat normal food becomes psychologically intolerable quickly after the infection fully takes root in their central nervous system, the tumor no longer holding interest in anything it cannot derive nutrients from. Foods once enjoyed by the host begin to taste completely revolting, many quickly developing an aversion to even try chewing it. \ - However, new desires quickly begin to form, the host's whole suite of senses rapidly adapting to a keen interest in blood. Hyperosmia in specific kicks in, the iron-tinged scent of a bleeder provoking and agitating hunger like the smell of any fresh cooking would for a human. \ - Not all blood aids the host the same. It's currently thought that a Hemophage is capable at a subconscious level of recognizing and differentiating different sources of blood, and the tumor within hijacking their psychology to prioritize blood from creatures it is able to reproduce inside of. \ - Blood from animals is reported to 'be like trying to subsist on milk or whipped cream or heavily fluffed up bread,' harder to digest, taste, or enjoy, necessitating the Hemophage to drink far more of it just to get the same value from a relatively small amount of human blood. \ - 'Storebought' blood, like from refrigerated medical blood bags, is reported to 'taste thin,' like a heavily watered down drink. Only the physical, predatory act of drinking blood fresh from another humanoid is enough to properly 'sate' the tumor, ticking the right psychological and physiological boxes to be fully digested and enjoyed. \ - The sensation is like nothing else, being extremely pleasurable for the host; even if they don't want it to be.", - - "Photosensitivity of the skin develops. While light artificial or not won't harm them, it's noted that Hemophages seem to be far more comfortable in any level of darkness, their skin and eyes far more sensitive than before to UV. \ - When taken away from it, and ideally isolated from higher-than-average levels of radiation such as found in orbital habitats, it's noted that the host's body will begin to reconstruct with aid from the tumor inside. Flesh will knit back together, burns will rapidly cast off, and even scar tissue will properly regenerate into normal tissue. \ - It's thought that this process is even delicate enough to work at the host's DNA, prolonging epigenetic maintenance and ensuring biological systems remain healthy and youthful for far longer than normal. \ - Given that Hemophages are converted and kept alive by their infection, it will ruthlessly fight off foreign bacteria, viruses, and tissues, repurposing or annihilating them to ensure there's no 'competition' over its host. \ - Notably, the host's blood will turn almost black like ink due to their blood becoming more 'dense', yet no longer carrying nearly as much oxygen. Due to this hemophages are known to look more 'ashen', their lips often turning to a dark gray, and their skin going more pale than it normally would be. \ - Their tongues, not an organ the tumor spares, additionally turn a pure black; in some cases, the sclera in their eyes might even turn significantly dark especially when bloodshot.", - - "The psychology of Hemophages is well-studied in the psychiatric field. Over time, hemophages have developed a plethora of conditioned responses and quirks just as humans, their prey, have. \ - The first few years after a Hemophage is 'changed' is often enough to drive them over the edge. In some cases, the first few days. The process of being turned is a series of traumas in quick succession as the host is often made to murder. \ - The lucky have a 'moral' source of blood at hand and whoever 'converted' them to guide them through it; the unlucky have to scramble to maintain their sense of self as they become something else. \ - The physical sensation of first infection is often painful, often terrifying, and often grotesque to experience as the host feels their body shocked with vicious tumor tissue and their mind warped by near-death stretching over potentially days. \ - Some snap, some grow stone-hard, but it's rare to actually meet a Hemophage that remembers the process. Some hemophages are born into their condition; the infection staying dormant until the child is a few months to a year old, ensuring their stability in being able to handle the tumor. \ - These hosts tend to live extremely tumultuous childhoods, simply not being strong enough to feed on anything but the weakest of creatures, and trending towards immense loneliness from the high visibility of their condition's treatment during youth.", - - "The hunger is the main driver for these sordid creatures. From the very moment they wake back up from the process of being 'changed,' a powerful hunger is awakened. It twists and throbs in their heart, drowning out coherent thought. \ - During the 'semi-starvation' phase in humans, the changes are dramatic. Significant decreases in strength and stamina, body temperature, heart rate, and obsession with food. Dreaming and fantasizing about it, reading and talking about it, and savoring what little meals they can get access to; hoarding it for themselves and eating to the last crumb. \ - In Hemophages, this response is heavily similar, but turned outwards. The hunger of a Hemophage is psychologically pressing in nearly every way, detracting from all other concerns in an urge to be dealt with as soon as it can be. \ - Panic easily sets in during these times of famine, the host instinctually knowing that it must be sated or the tumor within them will soon run out of blood to feed on, which would result in their mutual death. \ - Even the very sight and smell of fresh blood can push a Hemophage into this kind of state if they haven't fed in awhile, only drinking from a living creature or intense meditation and concentration being able to push it down.", - - "Socially, Hemophages are mostly solitary hunters. It is extremely easy for them to recognize each other; the unique smell of their blackened ichor, the subtle details of their body and the way it moves, the shallow or nonexistant breathing, or even the likely smell of multiple victims' blood on their breath. \ - Even normal humans report talking to known Hemophages being psychologically unsettling, linked to being armed with the knowledge that they've likely taken several lives and might take theirs. \ - This predatory aura surrounding them tends to leave them operating primarily solitarily; always passively running threat analysis on others of their kind, especially given the higher 'value' of their more nutrient-rich blood. \ - When they do choose to work together, Hemophages gather in groups of no more than ten. Any more, and their activities would surely be impossible to disguise.", - - "'Conversion' tends to be uncommon for Hemophages. The typical line of thought is that one 'wouldn't want to raise a kid every time they go out for dinner,' as the 'creation' of a new Hemophage involves, essentially, becoming an on-site therapist and mentor for an unspecified amount of time. \ - It's often not worth the risk to potentially allow a fresh 'convert' to gain access to a Hemophage's identity if they're attempting to 'blend', and to potentially turn on them and expose their illegal activities. \ - However the infection which creates them, like any living creature, has a drive to procreate regardless; often the urge to spread it overtakes a hemophage's sensibilities anyway, and some are known to serially infect others simply to 'stir the pot.", - - "In terms of human society, it's known for Hemophages to be passively strangled by the law itself. In 'civilized' places like Sol, Hemophages that attack or kill humans for their blood are prosecuted heavily; almost disproportionately compared to if the same crimes were committed by a normal person. \ - Artificial sources of blood are intentionally kept rare by pharmaceutical companies, and those that do end up getting an easier access to such sources seem to almost always be working in the Medical field. \ - Even adopting pets is made nigh-on-impossible for them. Those that don't leave to places like frontier systems typically end up part of oft-ephemeral networks of others of their kind, offering time-sensitive advice on where certain 'low-risk' or 'less-than-legal' meals may be found and forcing themselves to work past their base instincts to cooperate to an extent; anything else would mean death." - ) - - -/datum/species/hemophage/prepare_human_for_preview(mob/living/carbon/human/human) - human.dna.features["mcolor"] = "#fff4e6" - human.set_eye_color(COLOR_RED) - human.hair_color = "#1d1d1d" - human.hairstyle = "Royal Curls" - regenerate_organs(human, src, visual_only = TRUE) - human.update_body(TRUE) - -/datum/species/hemophage/create_pref_unique_perks() - var/list/to_add = list() - - to_add += list( - list( - SPECIES_PERK_TYPE = SPECIES_POSITIVE_PERK, - SPECIES_PERK_ICON = "moon", - SPECIES_PERK_NAME = "Darkness Affinity", - SPECIES_PERK_DESC = "A Hemophage is only at home in the darkness, the infection \ - within a Hemophage seeking to return them to a healthy state \ - whenever it can be in the shadow. However, light artificial or \ - otherwise irritates their bodies and the cancer keeping them alive, \ - not harming them but keeping them from regenerating. Modern \ - Hemophages have been known to use lockers as a convenient \ - source of darkness, while the extra protection they provide \ - against background radiations allows their tumor to avoid \ - having to expend any blood to maintain minimal bodily functions \ - so long as their host remains stationary in said locker.", - ), - list( - SPECIES_PERK_TYPE = SPECIES_POSITIVE_PERK, - SPECIES_PERK_ICON = "biohazard", - SPECIES_PERK_NAME = "Viral Symbiosis", - SPECIES_PERK_DESC = "Hemophages, due to their condition, cannot get infected by \ - other viruses and don't actually require an external source of oxygen \ - to stay alive.", - ), - list( - SPECIES_PERK_TYPE = SPECIES_NEGATIVE_PERK, - SPECIES_PERK_ICON = "tint", - SPECIES_PERK_NAME = "The Thirst", - SPECIES_PERK_DESC = "In place of eating, Hemophages suffer from the Thirst, caused by their tumor. \ - Thirst of what? Blood! Their tongue allows them to grab people and drink \ - their blood, and they will suffer severe consequences if they run out. As a note, \ - it doesn't matter whose blood you drink, it will all be converted into your blood \ - type when consumed. That being said, the blood of other sentient humanoids seems \ - to quench their Thirst for longer than otherwise-acquired blood would.", - ), - ) - - return to_add - - -/datum/species/hemophage/create_pref_blood_perks() - var/list/to_add = list() - - to_add += list(list( - SPECIES_PERK_TYPE = SPECIES_NEUTRAL_PERK, - SPECIES_PERK_ICON = "tint", - SPECIES_PERK_NAME = "Universal Blood", - SPECIES_PERK_DESC = "[plural_form] have blood that appears to be an amalgamation of all other \ - blood types, made possible thanks to some special antigens produced by \ - their tumor, making them able to receive blood of any other type, so \ - long as it is still human-like blood.", - ), - ) - - return to_add - - -// We don't need to mention that they're undead, as the perks that come from it are otherwise already explicited, and they might no longer be actually undead from a gameplay perspective, eventually. -/datum/species/hemophage/create_pref_biotypes_perks() - return - - -#undef HEMOPHAGE_SPAWN_TEXT - -/mob/living/carbon/human/species/hemophage //Why was this never added? - race = /datum/species/hemophage diff --git a/modular_skyrat/modules/customization/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/modular_skyrat/modules/customization/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 6dc7f48667f..0eafe524a51 100644 --- a/modular_skyrat/modules/customization/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/modular_skyrat/modules/customization/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -455,7 +455,7 @@ desc = "Red and white drink for the upper classes or undead." /datum/reagent/consumable/ethanol/velvet_kiss/expose_mob(mob/living/exposed_mob, methods, reac_volume) - if(iszombie(exposed_mob) || isvampire(exposed_mob) || isdullahan(exposed_mob) || ishemophage(exposed_mob)) //Rare races! + if(iszombie(exposed_mob) || isvampire(exposed_mob) || isdullahan(exposed_mob) || exposed_mob.has_quirk(/datum/quirk/hemophage)) //Rare races! quality = RACE_DRINK else quality = DRINK_GOOD @@ -654,7 +654,7 @@ #define BLOODSHOT_DISGUST 25 /datum/reagent/consumable/ethanol/bloodshot/expose_mob(mob/living/exposed_mob, methods, reac_volume) - if(ishemophage(exposed_mob)) + if(exposed_mob.has_quirk(/datum/quirk/hemophage)) quality = RACE_DRINK else if(exposed_mob.blood_volume < exposed_mob.blood_volume_normal) diff --git a/modular_zubbers/code/datums/diseases/advance/transformation.dm b/modular_zubbers/code/datums/diseases/advance/transformation.dm index b4566be95fe..7642d8c0b60 100644 --- a/modular_zubbers/code/datums/diseases/advance/transformation.dm +++ b/modular_zubbers/code/datums/diseases/advance/transformation.dm @@ -42,23 +42,6 @@ to_chat(affected_mob, span_warning("You've become \a [LOWER_TEXT(initial(species_type.name))]!")) cure() -/datum/disease/transformation_race/hemophage - name = "Hemophagic Viral Infection" - cure_text = "Garlic" - cures = list(/datum/reagent/consumable/garlic) - agent = "Hemophagic Viral Infection" - desc = "A gift of the night" - cure_chance = 2.5 - severity = DISEASE_SEVERITY_BIOHAZARD - visibility_flags = NONE - stage1 = list("You dont feel very well") - stage2 = list("You feel cold") - stage3 = list(span_danger("Your heart skips a beat"), span_danger("You have a dull pain in your heart")) - stage4 = list(span_danger("You're hungry but normal food does not seem appetizing")) - stage5 = list(span_danger("Blood....Blood...")) - race = /datum/species/hemophage - infectable_biotypes = MOB_ORGANIC|MOB_UNDEAD - /datum/disease/transformation_race/synthetic name = "Synthetic Conversion Nanites" cure_text = "An injection of copper." diff --git a/modular_zubbers/code/datums/quirks/negative_quirks/sol_weakness.dm b/modular_zubbers/code/datums/quirks/negative_quirks/sol_weakness.dm deleted file mode 100644 index 01ce7c44945..00000000000 --- a/modular_zubbers/code/datums/quirks/negative_quirks/sol_weakness.dm +++ /dev/null @@ -1,101 +0,0 @@ - -#define COFFIN_HEALING_COST 0.5 - -/datum/quirk/sol_weakness - name = "Sol Weakness" - icon = FA_ICON_SUN - desc = "Your sub-species of the Hemophage virus renders you weak to Solar radiation, \ - you will have to hide in a coffin or a closet during the day, or risk burning to a crisp. \ - Thankfully, you will also heal your wounds at half cost in a coffin." - gain_text = span_warning("You feel a sudden weakness in your body, and a burning sensation on your skin. \ - You should find a coffin to hide in during the day.") - lose_text = span_notice("You feel safe in Sol's embrace once more.") - medical_record_text = "Patient's strain of the hemophage virus is weak to sunlight. \ - They will have to hide in a coffin or a closet during the day, or risk burning to a crisp." - value = -4 - hardcore_value = 6 - quirk_flags = QUIRK_HIDE_FROM_SCAN | QUIRK_HUMAN_ONLY - species_whitelist = list(SPECIES_HEMOPHAGE) - COOLDOWN_DECLARE(sun_burn) - -/datum/quirk/sol_weakness/add_to_holder(mob/living/new_holder, quirk_transfer = FALSE, client/client_source, unique = TRUE, announce = TRUE) - if(IS_BLOODSUCKER(new_holder)) - return FALSE - return ..() - -/datum/quirk/sol_weakness/add() - RegisterSignal(quirk_holder, COMSIG_MOB_HEMO_BLOOD_REGEN_TICK, PROC_REF(on_blood_healing)) - if(!quirk_holder.hud_used) - RegisterSignal(quirk_holder, COMSIG_MOB_HUD_CREATED, PROC_REF(add_sun_timer_hud)) - return - add_sun_timer_hud() - -/datum/quirk/sol_weakness/remove() - UnregisterSignal(quirk_holder, COMSIG_MOB_HEMO_BLOOD_REGEN_TICK) - SSsunlight.remove_sun_sufferer(quirk_holder) - UnregisterSignal(SSsunlight, list(COMSIG_SOL_RISE_TICK, COMSIG_SOL_WARNING_GIVEN)) - -/datum/quirk/sol_weakness/proc/on_blood_healing(mob/owner, seconds_between_ticks, datum/status_effect/blood_regen_active/effect) - if(effect && in_coffin()) - // cheaper healing as long as you're in a coffin - effect.cost_blood = COFFIN_HEALING_COST - else - effect.cost_blood = initial(effect.cost_blood) - // prevent healing if sol is active - return SSsunlight.sunlight_active ? COMSIG_CANCEL_MOB_HEMO_BLOOD_REGEN : NONE - -/datum/quirk/sol_weakness/proc/add_sun_timer_hud() - if(!quirk_holder.hud_used) - CRASH("Sol Weakness quirk holder has no HUD") - SSsunlight.add_sun_sufferer(quirk_holder) - UnregisterSignal(quirk_holder, COMSIG_MOB_HUD_CREATED) - RegisterSignal(SSsunlight, COMSIG_SOL_RISE_TICK, PROC_REF(sun_risen)) - RegisterSignal(SSsunlight, COMSIG_SOL_WARNING_GIVEN, PROC_REF(sun_warning)) - -/datum/quirk/sol_weakness/proc/sun_risen() - SIGNAL_HANDLER - if(!istype(quirk_holder.loc, /obj/structure)) - sun_burn() - else - if(in_coffin()) - quirk_holder.add_mood_event("vampsleep", /datum/mood_event/coffinsleep/quirk) - sun_burn_message(span_warning("The sun is up, but you safely rest in your [quirk_holder.loc.name].")) - else - quirk_holder.add_mood_event("vampsleep", /datum/mood_event/daylight_bad_sleep) - quirk_holder.adjust_fire_loss(1) - sun_burn_message(span_warning("[quirk_holder.loc] is not a coffin, but it keeps you safe enough.")) - -/datum/quirk/sol_weakness/proc/sun_burn() - quirk_holder.add_mood_event("vampsleep", /datum/mood_event/daylight_sun_scorched) - if(quirk_holder.blood_volume > BLOOD_VOLUME_NORMAL * 0.71) // 397.6 - quirk_holder.blood_volume -= 5 - sun_burn_message(span_warning("The sun burns your skin, but your blood protects you from the worst of it...")) - quirk_holder.adjust_fire_loss(1) - return - sun_burn_message(span_userdanger("THE SUN, IT BURNS!")) - quirk_holder.adjust_fire_loss(2) - quirk_holder.adjust_fire_stacks(1) - quirk_holder.ignite_mob() - -/datum/quirk/sol_weakness/proc/sun_burn_message(text) - SIGNAL_HANDLER - if(!COOLDOWN_FINISHED(src, sun_burn)) - return - to_chat(quirk_holder, text) - COOLDOWN_START(src, sun_burn, 30 SECONDS) - -/datum/quirk/sol_weakness/proc/sun_warning(atom/source, danger_level, vampire_warning_message, ghoul_warning_message) - SIGNAL_HANDLER - if(danger_level == DANGER_LEVEL_SOL_ROSE) - vampire_warning_message = span_userdanger("Solar flares bombard the station with deadly UV light! Stay in cover for the next [TIME_BLOODSUCKER_DAY / 60] minutes or risk death!") - SSsunlight.warn_notify(quirk_holder, danger_level, vampire_warning_message) - -/datum/quirk/sol_weakness/proc/in_coffin() - return istype(quirk_holder.loc, /obj/structure/closet/crate/coffin) - -/datum/status_effect/blood_regen_active/tick(seconds_between_ticks) - if(SEND_SIGNAL(owner, COMSIG_MOB_HEMO_BLOOD_REGEN_TICK, seconds_between_ticks, src) & COMSIG_CANCEL_MOB_HEMO_BLOOD_REGEN) - return - . = ..() - -#undef COFFIN_HEALING_COST diff --git a/modular_zubbers/code/datums/quirks/neutral_quirks/hemophage.dm b/modular_zubbers/code/datums/quirks/neutral_quirks/hemophage.dm new file mode 100644 index 00000000000..8c5a168fccc --- /dev/null +++ b/modular_zubbers/code/datums/quirks/neutral_quirks/hemophage.dm @@ -0,0 +1,207 @@ +#define COFFIN_HEALING_COST 0.5 + +/datum/quirk/hemophage + name = "Hemophagia" + desc = "You have the organs and abilities of someone suffering from the hemophage virus." + icon = FA_ICON_TEETH + value = 0 + medical_record_text = "During physical examination, patient was found to have corrupted organs and other abilities commonly found in those suffering \ + from the hemophage virus." + hardcore_value = 0 + mail_goodies = list(/obj/item/reagent_containers/blood/random) + quirk_flags = QUIRK_HIDE_FROM_SCAN + // Most of these are Halloween species but we still have them once a year. + species_blacklist = list( + SPECIES_ABDUCTOR_STATION, + SPECIES_ZOMBIE, + SPECIES_SKELETON, + SPECIES_SHADOW, + SPECIES_PLASMAMAN, + SPECIES_GOLEM, + SPECIES_SPIRIT, + SPECIES_ANDROID, + SPECIES_ABDUCTOR, + SPECIES_VAMPIRE, + SPECIES_PROTEAN, + SPECIES_SLIMEPERSON, + ) + COOLDOWN_DECLARE(sun_burn) + + var/datum/blood_type/old_blood_type = null + +/datum/quirk/hemophage/add(client/client_source) + var/mob/living/carbon/human/human_holder = quirk_holder + quirk_holder.add_traits(list( + TRAIT_DRINKS_BLOOD, + TRAIT_NOHUNGER, + TRAIT_NOBREATH, + TRAIT_VIRUSIMMUNE, + ), QUIRK_TRAIT) + + old_blood_type = human_holder.dna.blood_type.get_type() + human_holder.dna.blood_type = get_blood_type(BLOOD_TYPE_UNIVERSAL) + + if(client_source?.prefs.read_preference(/datum/preference/toggle/masquerade)) + ADD_TRAIT(quirk_holder, TRAIT_MASQUERADE_FOOD, QUIRK_TRAIT) + + if(client_source?.prefs.read_preference(/datum/preference/toggle/sol_weakness)) + RegisterSignal(quirk_holder, COMSIG_MOB_HEMO_BLOOD_REGEN_TICK, PROC_REF(on_blood_healing)) + if(!quirk_holder.hud_used) + RegisterSignal(quirk_holder, COMSIG_MOB_HUD_CREATED, PROC_REF(add_sun_timer_hud)) + return + add_sun_timer_hud() + +/datum/quirk/hemophage/post_add() + if(quirk_holder.client?.prefs.read_preference(/datum/preference/toggle/pseudo_respiration)) + REMOVE_TRAIT(quirk_holder, TRAIT_NOBREATH, QUIRK_TRAIT) + +/datum/quirk/hemophage/add_unique(client/client_source) + var/mob/living/carbon/human/human_holder = quirk_holder + var/static/list/organ_slots = list( + ORGAN_SLOT_HEART = /obj/item/organ/heart/hemophage, + ORGAN_SLOT_LIVER = /obj/item/organ/liver/hemophage, + ORGAN_SLOT_STOMACH = /obj/item/organ/stomach/hemophage, + ORGAN_SLOT_TONGUE = /obj/item/organ/tongue/hemophage, + ) + var/list/possible_organ_slots = organ_slots.Copy() + if(!length(organ_slots)) //what the hell + return + + for(var/organ_slot in possible_organ_slots) + var/organ_path = possible_organ_slots[organ_slot] + var/obj/item/organ/new_organ = new organ_path() + new_organ.Insert(human_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED) + +/datum/quirk/hemophage/remove(client/client_source) + var/mob/living/carbon/human/human_holder = quirk_holder + + UnregisterSignal(quirk_holder, COMSIG_MOB_HEMO_BLOOD_REGEN_TICK) + SSsunlight.remove_sun_sufferer(quirk_holder) + UnregisterSignal(SSsunlight, list(COMSIG_SOL_RISE_TICK, COMSIG_SOL_WARNING_GIVEN)) + + if(QDELETED(quirk_holder)) + return + + quirk_holder.remove_traits(list( + TRAIT_DRINKS_BLOOD, + TRAIT_NOHUNGER, + TRAIT_NOBREATH, + TRAIT_VIRUSIMMUNE, + TRAIT_MASQUERADE_FOOD, + ), QUIRK_TRAIT) + + human_holder.dna.blood_type = get_blood_type(old_blood_type) + + var/obj/item/organ/heart/new_heart = new human_holder.dna.species.mutantheart() + new_heart.Insert(human_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED) + + var/obj/item/organ/liver/new_liver = new human_holder.dna.species.mutantliver() + new_liver.Insert(human_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED) + + var/obj/item/organ/stomach/new_stomach = new human_holder.dna.species.mutantstomach() + new_stomach.Insert(human_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED) + + var/obj/item/organ/tongue/new_tongue = new human_holder.dna.species.mutanttongue() + new_tongue.Insert(human_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED) + +/datum/quirk/hemophage/proc/on_blood_healing(mob/owner, seconds_between_ticks, datum/status_effect/blood_regen_active/effect) + if(effect && in_coffin()) + // cheaper healing as long as you're in a coffin + effect.cost_blood = COFFIN_HEALING_COST + else + effect.cost_blood = initial(effect.cost_blood) + // prevent healing if sol is active + return SSsunlight.sunlight_active ? COMSIG_CANCEL_MOB_HEMO_BLOOD_REGEN : NONE + +/datum/quirk/hemophage/proc/add_sun_timer_hud() + if(!quirk_holder.hud_used) + CRASH("Sol Weakness quirk holder has no HUD") + SSsunlight.add_sun_sufferer(quirk_holder) + UnregisterSignal(quirk_holder, COMSIG_MOB_HUD_CREATED) + RegisterSignal(SSsunlight, COMSIG_SOL_RISE_TICK, PROC_REF(sun_risen)) + RegisterSignal(SSsunlight, COMSIG_SOL_WARNING_GIVEN, PROC_REF(sun_warning)) + +/datum/quirk/hemophage/proc/sun_risen() + SIGNAL_HANDLER + if(!istype(quirk_holder.loc, /obj/structure)) + sun_burn() + else + if(in_coffin()) + quirk_holder.add_mood_event("vampsleep", /datum/mood_event/coffinsleep/quirk) + sun_burn_message(span_warning("The sun is up, but you safely rest in your [quirk_holder.loc.name].")) + else + quirk_holder.add_mood_event("vampsleep", /datum/mood_event/daylight_bad_sleep) + quirk_holder.adjust_fire_loss(1) + sun_burn_message(span_warning("[quirk_holder.loc] is not a coffin, but it keeps you safe enough.")) + +/datum/quirk/hemophage/proc/sun_burn() + quirk_holder.add_mood_event("vampsleep", /datum/mood_event/daylight_sun_scorched) + if(quirk_holder.blood_volume > BLOOD_VOLUME_NORMAL * 0.71) // 397.6 + quirk_holder.blood_volume -= 5 + sun_burn_message(span_warning("The sun burns your skin, but your blood protects you from the worst of it...")) + quirk_holder.adjust_fire_loss(1) + return + sun_burn_message(span_userdanger("THE SUN, IT BURNS!")) + quirk_holder.adjust_fire_loss(2) + quirk_holder.adjust_fire_stacks(1) + quirk_holder.ignite_mob() + +/datum/quirk/hemophage/proc/sun_burn_message(text) + SIGNAL_HANDLER + if(!COOLDOWN_FINISHED(src, sun_burn)) + return + to_chat(quirk_holder, text) + COOLDOWN_START(src, sun_burn, 30 SECONDS) + +/datum/quirk/hemophage/proc/sun_warning(atom/source, danger_level, vampire_warning_message, ghoul_warning_message) + SIGNAL_HANDLER + if(danger_level == DANGER_LEVEL_SOL_ROSE) + vampire_warning_message = span_userdanger("Solar flares bombard the station with deadly UV light! Stay in cover for the next [TIME_BLOODSUCKER_DAY / 60] minutes or risk death!") + SSsunlight.warn_notify(quirk_holder, danger_level, vampire_warning_message) + +/datum/quirk/hemophage/proc/in_coffin() + return istype(quirk_holder.loc, /obj/structure/closet/crate/coffin) + +/datum/status_effect/blood_regen_active/tick(seconds_between_ticks) + if(SEND_SIGNAL(owner, COMSIG_MOB_HEMO_BLOOD_REGEN_TICK, seconds_between_ticks, src) & COMSIG_CANCEL_MOB_HEMO_BLOOD_REGEN) + return + . = ..() + +/datum/quirk_constant_data/hemophage + associated_typepath = /datum/quirk/hemophage + customization_options = list(/datum/preference/toggle/masquerade, + /datum/preference/toggle/sol_weakness, + /datum/preference/toggle/pseudo_respiration, + ) + +/datum/preference/toggle/masquerade + category = PREFERENCE_CATEGORY_MANUALLY_RENDERED + savefile_key = "masquerade_toggle" + savefile_identifier = PREFERENCE_CHARACTER + can_randomize = FALSE + default_value = FALSE + +/datum/preference/toggle/masquerade/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences) + return FALSE + +/datum/preference/toggle/sol_weakness + category = PREFERENCE_CATEGORY_MANUALLY_RENDERED + savefile_key = "sol_weakness_toggle" + savefile_identifier = PREFERENCE_CHARACTER + can_randomize = FALSE + default_value = FALSE + +/datum/preference/toggle/sol_weakness/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences) + return FALSE + +/datum/preference/toggle/pseudo_respiration + category = PREFERENCE_CATEGORY_MANUALLY_RENDERED + savefile_key = "pseudo_respiration_toggle" + savefile_identifier = PREFERENCE_CHARACTER + can_randomize = FALSE + default_value = FALSE + +/datum/preference/toggle/pseudo_respiration/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences) + return FALSE + +#undef COFFIN_HEALING_COST diff --git a/modular_zubbers/code/datums/quirks/neutral_quirks/pseudo_respiration.dm b/modular_zubbers/code/datums/quirks/neutral_quirks/pseudo_respiration.dm deleted file mode 100644 index 2e64595c63e..00000000000 --- a/modular_zubbers/code/datums/quirks/neutral_quirks/pseudo_respiration.dm +++ /dev/null @@ -1,29 +0,0 @@ -/datum/quirk/pseudo_respiration - name = "Pseudo-Respiration" - desc = "(Hemophage only) Despite your condition you for whatever reason still require to breathe." - icon = FA_ICON_MASK_VENTILATOR - value = -2 - quirk_flags = QUIRK_HUMAN_ONLY - gain_text = span_danger("You feel the urge to take a breath...") - lose_text = span_notice("You no longer feel the need to breathe.") - medical_record_text = "Patient reports the need to breathe despite their hemophagic virus." - hardcore_value = 2 - species_whitelist = list(SPECIES_HEMOPHAGE) - -/datum/quirk/pseudo_respiration/add() - var/mob/living/carbon/human/breather = quirk_holder - if(!istype(breather)) - return - REMOVE_TRAIT(breather, TRAIT_NOBREATH, SPECIES_TRAIT) - var/obj/item/organ/lungs/lungs_added = new() - lungs_added.Insert(breather, special = TRUE, movement_flags = DELETE_IF_REPLACED) - breather.dna.species.mutantlungs = lungs_added.type - -/datum/quirk/pseudo_respiration/remove() - var/mob/living/carbon/human/no_breather = quirk_holder - if(!istype(no_breather)) - return - ADD_TRAIT(no_breather, TRAIT_NOBREATH, SPECIES_TRAIT) - var/obj/item/organ/lungs/lungs_added = new() - lungs_added.Remove(no_breather, special = TRUE, movement_flags = DELETE_IF_REPLACED) - diff --git a/modular_zubbers/code/datums/quirks/positive_quirks/masquerade_food.dm b/modular_zubbers/code/datums/quirks/positive_quirks/masquerade_food.dm deleted file mode 100644 index 0f3aee4653d..00000000000 --- a/modular_zubbers/code/datums/quirks/positive_quirks/masquerade_food.dm +++ /dev/null @@ -1,10 +0,0 @@ -/datum/quirk/masquerade_food - name = "Masquerade" - desc = "A hemophage that has adapted to be able to consume normal food and drink. Such an act is merely for pleasure, as they derive no nutritional benefit from such." - icon = FA_ICON_PIZZA_SLICE - value = 2 - mob_trait = TRAIT_MASQUERADE_FOOD - gain_text = span_notice("You feel that your body has adapted to consumption of normal food and drink without mixing in blood.") - lose_text = span_danger("You feel that your body is no longer able to consume normal food or drink without mixing in blood.") - medical_record_text = "Patient is able to consume food or drink without having to mix in blood, though they derive no nutritional benefit from it." - species_whitelist = list(SPECIES_HEMOPHAGE) diff --git a/modular_zubbers/code/modules/antagonists/bloodsucker/bloodsuckers/bloodsucker.dm b/modular_zubbers/code/modules/antagonists/bloodsucker/bloodsuckers/bloodsucker.dm index c79e4c6efc3..58ecf89201c 100644 --- a/modular_zubbers/code/modules/antagonists/bloodsucker/bloodsuckers/bloodsucker.dm +++ b/modular_zubbers/code/modules/antagonists/bloodsucker/bloodsuckers/bloodsucker.dm @@ -504,12 +504,12 @@ user.update_sight() /datum/antagonist/bloodsucker/proc/remove_invalid_quirks(mob/target) - var/datum/quirk/bad_quirk = owner.current.get_quirk(/datum/quirk/sol_weakness) + var/datum/quirk/bad_quirk = owner.current.get_quirk(/datum/quirk/hemophage) if(!bad_quirk) return // silently remove the quirk if it's not valid bad_quirk.remove_from_current_holder(TRUE) - owner.current.remove_quirk(/datum/quirk/sol_weakness) + owner.current.remove_quirk(/datum/quirk/hemophage) /// Name shown on antag list /datum/antagonist/bloodsucker/antag_listing_name() diff --git a/modular_zubbers/code/modules/designs/limbgrower_designs.dm b/modular_zubbers/code/modules/designs/limbgrower_designs.dm index cbce8467627..7892a16c493 100644 --- a/modular_zubbers/code/modules/designs/limbgrower_designs.dm +++ b/modular_zubbers/code/modules/designs/limbgrower_designs.dm @@ -4,7 +4,7 @@ build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/blood = 10) build_path = /obj/item/organ/heart/hemophage - category = list(SPECIES_HEMOPHAGE) + category = list("hemophage") /datum/design/hemophage_liver name = "Corrupted Liver" @@ -12,7 +12,7 @@ build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/blood = 10) build_path = /obj/item/organ/liver/hemophage - category = list(SPECIES_HEMOPHAGE) + category = list("hemophage") /datum/design/hemophage_stomach name = "Corrupted Stomach" @@ -20,7 +20,7 @@ build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/blood = 10) build_path = /obj/item/organ/stomach/hemophage - category = list(SPECIES_HEMOPHAGE) + category = list("hemophage") /datum/design/hemophage_tongue name = "Corrupted Tongue" @@ -28,7 +28,7 @@ build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/blood = 10) build_path = /obj/item/organ/tongue/hemophage - category = list(SPECIES_HEMOPHAGE) + category = list("hemophage") /obj/item/disk/design_disk/limbs/hemophage name = "Hemophage Organ Design Disk" @@ -137,7 +137,7 @@ /obj/machinery/limbgrower/Initialize(mapload) categories += list( - SPECIES_HEMOPHAGE, + "hemophage", SPECIES_TAJARAN, SPECIES_TESHARI ) diff --git a/modular_zubbers/code/modules/mob/living/carbon/human/species_types/hemophage_species.dm b/modular_zubbers/code/modules/mob/living/carbon/human/species_types/hemophage_species.dm deleted file mode 100644 index ffe0a6aa624..00000000000 --- a/modular_zubbers/code/modules/mob/living/carbon/human/species_types/hemophage_species.dm +++ /dev/null @@ -1,37 +0,0 @@ -/datum/species/hemophage - inherent_biotypes = MOB_HUMANOID | MOB_ORGANIC | MOB_VAMPIRIC - bodypart_overrides = list( - BODY_ZONE_HEAD = /obj/item/bodypart/head/mhuman, - BODY_ZONE_CHEST = /obj/item/bodypart/chest/mhuman, - BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/mhuman, - BODY_ZONE_R_ARM = /obj/item/bodypart/arm/right/mhuman, - BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/mhuman, - BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/mhuman, - ) - language_prefs_whitelist = list(/datum/language/monkey) - -// MUTANT COLOR OVERRIDE - -/datum/species/hemophage/New() - inherent_traits |= list( - TRAIT_MUTANT_COLORS, - ) - . = ..() - -// BLOODSUCKER SPECIFIC FIXES -/datum/species/hemophage/on_bloodsucker_gain(mob/living/carbon/human/target) - to_chat(target, span_warning("Your hemophage features have been removed, your nature as a bloodsucker abates the hemophage virus.")) - // Without this any new organs would get corrupted again. - target.RemoveElement(/datum/element/tumor_corruption) - for(var/obj/item/organ/organ in target.organs) - organ.RemoveElement(/datum/element/tumor_corruption) - humanize_organs(target) - -/datum/species/hemophage/on_bloodsucker_loss(mob/living/carbon/human/target) - normalize_organs(target) - - -/datum/species/hemophage/get_species_description() - return list("Oftentimes feared or pushed out of society for the predatory nature of their condition, \ - Hemophages are typically mixed around various Frontier populations, keeping their true nature hidden while \ - reaping both the benefits and easy access to prey, enjoying unpursued existences on the Frontier.",) diff --git a/modular_zubbers/code/modules/reagents/chemistry/reagents/Recipes/others.dm b/modular_zubbers/code/modules/reagents/chemistry/reagents/Recipes/others.dm index e96d7a3692e..0860fd0fe39 100644 --- a/modular_zubbers/code/modules/reagents/chemistry/reagents/Recipes/others.dm +++ b/modular_zubbers/code/modules/reagents/chemistry/reagents/Recipes/others.dm @@ -58,11 +58,6 @@ required_reagents = list(/datum/reagent/consumable/ethanol/laval_spit = 3, /datum/reagent/drug/space_drugs = 2, /datum/reagent/smart_foaming_agent = 2, /datum/reagent/mutationtoxin = 1) required_temp = 320 -/datum/chemical_reaction/transformative_virus/hemophage - results = list(/datum/reagent/transformative_virus/hemophage = 1) - required_reagents = list(/datum/reagent/consumable/ethanol/velvet_kiss = 3, /datum/reagent/blood = 2, /datum/reagent/consumable/ethanol/wine = 2, /datum/reagent/mutationtoxin = 1) - required_temp = 320 - /datum/chemical_reaction/mutationtoxin/insect results = list(/datum/reagent/mutationtoxin/insect = 1) required_reagents = list(/datum/reagent/consumable/ethanol/bug_zapper = 3, /datum/reagent/consumable/honey = 3, /datum/reagent/medicine/mine_salve = 3, /datum/reagent/mutationtoxin = 1) diff --git a/modular_zubbers/code/modules/reagents/chemistry/reagents/other_reagents.dm b/modular_zubbers/code/modules/reagents/chemistry/reagents/other_reagents.dm index 830d6882d66..5dbdb907fd6 100644 --- a/modular_zubbers/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/modular_zubbers/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -166,14 +166,6 @@ "Rock begins growing on your skin. Somehow it does not feel heavy." = MUT_MSG_EXTENDED, "The stony growths completely encase you. " = MUT_MSG_ABOUT2TURN) -/datum/reagent/transformative_virus/hemophage - name = "Hemophage Corruption Virus" - description = "A hemophage virus." - color = BLOOD_COLOR_RED - taste_description = "blood" - chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE - transformation_disease =/datum/disease/transformation_race/hemophage - /datum/reagent/mutationtoxin/insect name = "Insect Mutation Toxin" description = "An insect toxin." diff --git a/modular_zubbers/code/modules/reagents/drink_reagents.dm b/modular_zubbers/code/modules/reagents/drink_reagents.dm index 0b75e027d9f..90b48ad2a84 100644 --- a/modular_zubbers/code/modules/reagents/drink_reagents.dm +++ b/modular_zubbers/code/modules/reagents/drink_reagents.dm @@ -37,7 +37,7 @@ if(!(methods & INGEST)) return var/obj/item/organ/stomach/stomach = affected_mob.get_organ_slot(ORGAN_SLOT_STOMACH) - if(!istype(stomach) || !ishemophage(affected_mob) || reac_volume <= 0) + if(!istype(stomach) || !affected_mob.has_quirk(/datum/quirk/hemophage) || reac_volume <= 0) return affected_mob.blood_volume = min(affected_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM) @@ -63,7 +63,7 @@ if(!(methods & INGEST)) return var/obj/item/organ/stomach/stomach = affected_mob.get_organ_slot(ORGAN_SLOT_STOMACH) - if(!istype(stomach) || !ishemophage(affected_mob) || reac_volume <= 0) + if(!istype(stomach) || !affected_mob.has_quirk(/datum/quirk/hemophage) || reac_volume <= 0) return affected_mob.blood_volume = min(affected_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM) @@ -89,7 +89,7 @@ if(!(methods & INGEST)) return var/obj/item/organ/stomach/stomach = affected_mob.get_organ_slot(ORGAN_SLOT_STOMACH) - if(!istype(stomach) || !ishemophage(affected_mob) || reac_volume <= 0) + if(!istype(stomach) || !affected_mob.has_quirk(/datum/quirk/hemophage) || reac_volume <= 0) return affected_mob.blood_volume = min(affected_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM) @@ -116,7 +116,7 @@ if(!(methods & INGEST)) return var/obj/item/organ/stomach/stomach = affected_mob.get_organ_slot(ORGAN_SLOT_STOMACH) - if(!istype(stomach) || !ishemophage(affected_mob) || reac_volume <= 0) + if(!istype(stomach) || !affected_mob.has_quirk(/datum/quirk/hemophage) || reac_volume <= 0) return affected_mob.blood_volume = min(affected_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM) @@ -143,7 +143,7 @@ if(!(methods & INGEST)) return var/obj/item/organ/stomach/stomach = affected_mob.get_organ_slot(ORGAN_SLOT_STOMACH) - if(!istype(stomach) || !ishemophage(affected_mob) || reac_volume <= 0) + if(!istype(stomach) || !affected_mob.has_quirk(/datum/quirk/hemophage) || reac_volume <= 0) return affected_mob.blood_volume = min(affected_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM) @@ -170,7 +170,7 @@ if(!(methods & INGEST)) return var/obj/item/organ/stomach/stomach = affected_mob.get_organ_slot(ORGAN_SLOT_STOMACH) - if(!istype(stomach) || !ishemophage(affected_mob) || reac_volume <= 0) + if(!istype(stomach) || !affected_mob.has_quirk(/datum/quirk/hemophage) || reac_volume <= 0) return affected_mob.blood_volume = min(affected_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM) @@ -210,7 +210,7 @@ if(!(methods & INGEST)) return var/obj/item/organ/stomach/stomach = affected_mob.get_organ_slot(ORGAN_SLOT_STOMACH) - if(!istype(stomach) || !ishemophage(affected_mob) || reac_volume <= 0) + if(!istype(stomach) || !affected_mob.has_quirk(/datum/quirk/hemophage) || reac_volume <= 0) return affected_mob.blood_volume = min(affected_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM) @@ -256,7 +256,7 @@ if(!(methods & INGEST)) return var/obj/item/organ/stomach/stomach = affected_mob.get_organ_slot(ORGAN_SLOT_STOMACH) - if(!istype(stomach) || !ishemophage(affected_mob) || reac_volume <= 0) + if(!istype(stomach) || !affected_mob.has_quirk(/datum/quirk/hemophage) || reac_volume <= 0) return affected_mob.blood_volume = min(affected_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM) diff --git a/tgstation.dme b/tgstation.dme index f5425835af3..e258f28c245 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -8125,7 +8125,6 @@ #include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\species\hemophage\hemophage_actions.dm" #include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\species\hemophage\hemophage_moods.dm" #include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\species\hemophage\hemophage_organs.dm" -#include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\species\hemophage\hemophage_species.dm" #include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\species\hemophage\hemophage_status_effects.dm" #include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\species\hemophage\hemophage_tumor.dm" #include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\species\hemophage\tumor_corruption.dm" @@ -9208,7 +9207,6 @@ #include "modular_zubbers\code\datums\quirks\negative_quirks\permanent_limp.dm" #include "modular_zubbers\code\datums\quirks\negative_quirks\resilient_traumas.dm" #include "modular_zubbers\code\datums\quirks\negative_quirks\sensitive_snout.dm" -#include "modular_zubbers\code\datums\quirks\negative_quirks\sol_weakness.dm" #include "modular_zubbers\code\datums\quirks\neutral_quirks\bald.dm" #include "modular_zubbers\code\datums\quirks\neutral_quirks\body_morpher.dm" #include "modular_zubbers\code\datums\quirks\neutral_quirks\death_consequences.dm" @@ -9217,6 +9215,7 @@ #include "modular_zubbers\code\datums\quirks\neutral_quirks\entombed.dm" #include "modular_zubbers\code\datums\quirks\neutral_quirks\equipping.dm" #include "modular_zubbers\code\datums\quirks\neutral_quirks\food.dm" +#include "modular_zubbers\code\datums\quirks\neutral_quirks\hemophage.dm" #include "modular_zubbers\code\datums\quirks\neutral_quirks\hungry.dm" #include "modular_zubbers\code\datums\quirks\neutral_quirks\hydrophilic.dm" #include "modular_zubbers\code\datums\quirks\neutral_quirks\hypnotic.dm" @@ -9224,7 +9223,6 @@ #include "modular_zubbers\code\datums\quirks\neutral_quirks\nameless.dm" #include "modular_zubbers\code\datums\quirks\neutral_quirks\perch.dm" #include "modular_zubbers\code\datums\quirks\neutral_quirks\pet_owner.dm" -#include "modular_zubbers\code\datums\quirks\neutral_quirks\pseudo_respiration.dm" #include "modular_zubbers\code\datums\quirks\neutral_quirks\seamless_clothes.dm" #include "modular_zubbers\code\datums\quirks\neutral_quirks\unblinking.dm" #include "modular_zubbers\code\datums\quirks\neutral_quirks\waddle.dm" @@ -9241,7 +9239,6 @@ #include "modular_zubbers\code\datums\quirks\positive_quirks\floating_items.dm" #include "modular_zubbers\code\datums\quirks\positive_quirks\life_savings.dm" #include "modular_zubbers\code\datums\quirks\positive_quirks\light_step_override.dm" -#include "modular_zubbers\code\datums\quirks\positive_quirks\masquerade_food.dm" #include "modular_zubbers\code\datums\quirks\positive_quirks\poster_boy_override.dm" #include "modular_zubbers\code\datums\quirks\positive_quirks\signer_override.dm" #include "modular_zubbers\code\datums\quirks\positive_quirks\spacer_override.dm" @@ -10017,7 +10014,6 @@ #include "modular_zubbers\code\modules\mob\living\carbon\human\species_types\flypeople.dm" #include "modular_zubbers\code\modules\mob\living\carbon\human\species_types\ghost.dm" #include "modular_zubbers\code\modules\mob\living\carbon\human\species_types\golems.dm" -#include "modular_zubbers\code\modules\mob\living\carbon\human\species_types\hemophage_species.dm" #include "modular_zubbers\code\modules\mob\living\carbon\human\species_types\humanoid.dm" #include "modular_zubbers\code\modules\mob\living\carbon\human\species_types\humanoid_overrides.dm" #include "modular_zubbers\code\modules\mob\living\carbon\human\species_types\humans.dm" diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/bubbers/hemophage.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/bubbers/hemophage.tsx new file mode 100644 index 00000000000..a0238d5fcf0 --- /dev/null +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/bubbers/hemophage.tsx @@ -0,0 +1,22 @@ +import { CheckboxInput, type FeatureToggle } from '../../base'; + +export const masquerade_toggle: FeatureToggle = { + name: 'Enable/Disable Masquerade', + description: + 'If enabled, you will be able to eat food, albeit without nutritional value.', + component: CheckboxInput, +}; + +export const sol_weakness_toggle: FeatureToggle = { + name: 'Enable/Disable Sol Weakness', + description: + 'If enabled, you will have to hide in a coffin or a closet during the day, or risk burning to a crisp.\ + Thankfully, you will also heal your wounds at half cost in a coffin.', + component: CheckboxInput, +}; + +export const pseudo_respiration_toggle: FeatureToggle = { + name: 'Enable/Disable Pseudo-Respiration', + description: 'If enabled, you will be able to breathe once again.', + component: CheckboxInput, +}; From e161057b60860222ffe5ca9bc5b70b9abd3c246c Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Fri, 31 Jul 2026 18:51:31 +0200 Subject: [PATCH 044/139] Automatic changelog for PR #5919 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5919.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5919.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5919.yml b/html/changelogs/AutoChangeLog-bubber-pr-5919.yml new file mode 100644 index 00000000000..ba60556e3e1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-5919.yml @@ -0,0 +1,5 @@ +author: "xPokee" +delete-after: True +changes: + - rscdel: "Removed the hemphage specific quirks Masquerade, Sol Weakness, and Pseudo-Respiration. They are now toggles on the hemophage quirk." + - refactor: "Refactored the hemophage species into being a quirk: Hemophagia." \ No newline at end of file From 4d9727eea520c11dd3e95a69a6e2af127361fcaa Mon Sep 17 00:00:00 2001 From: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com> Date: Fri, 31 Jul 2026 11:06:19 -0600 Subject: [PATCH 045/139] Buffs the Protean Lowerpower movespeed (#6011) --- .../customization/species/proteans/protean_status_effects.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_zubbers/code/modules/customization/species/proteans/protean_status_effects.dm b/modular_zubbers/code/modules/customization/species/proteans/protean_status_effects.dm index 83c55de5d6b..8d6ae64dca7 100644 --- a/modular_zubbers/code/modules/customization/species/proteans/protean_status_effects.dm +++ b/modular_zubbers/code/modules/customization/species/proteans/protean_status_effects.dm @@ -19,7 +19,7 @@ owner.remove_movespeed_modifier(/datum/movespeed_modifier/protean_slowdown_low_power) /datum/movespeed_modifier/protean_slowdown_low_power - multiplicative_slowdown = 5 + multiplicative_slowdown = 3 /datum/status_effect/protean_low_power_mode/reform duration = 7 SECONDS From c3a751c538c68ba06fc1f1fa74ff9bcc4bcafd59 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Fri, 31 Jul 2026 19:07:25 +0200 Subject: [PATCH 046/139] Automatic changelog for PR #6011 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6011.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6011.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6011.yml b/html/changelogs/AutoChangeLog-bubber-pr-6011.yml new file mode 100644 index 00000000000..cc8b119fbe6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6011.yml @@ -0,0 +1,4 @@ +author: "StrangeWeirdKitten" +delete-after: True +changes: + - balance: "increased Protean low power mode walking speed from a modifier of 5 to 3 (our current walking speed)" \ No newline at end of file From d7585d7d4641214e56663376141efc2cb6bbf8bd Mon Sep 17 00:00:00 2001 From: Aeri <14065903+NanoCats@users.noreply.github.com> Date: Fri, 31 Jul 2026 13:18:49 -0400 Subject: [PATCH 047/139] Fixes a duplicate sprite error primarily on firearms. (#6005) ## About The Pull Request Some guns (Probably other items too) have been seeing double for a while now and this isn't just because you're an alcoholic. With certain guns, a Miecz, a Lanca, a Renoster, a Kiboko, the VARS launcher, and the hand slot shows you two sprites offset by about eight pixels, OK actually 8 pixels exactly because that's what the code told it to do. Hold a disabler or a WT-550 and everything is perfectly fine. That was the clue. Every affected gun suffering from this defect drew from an "oversized" sprite sheet. `guns_48.dmi` is 48 pixels wide instead of 32, and a sprite that wide had to carry a negative `base_pixel_x` to sit centered on its tile. Every gun that was fine is a plain 32 by 32 vanilla one sitting at zero. TG doesn't have as many ginormous guns (actually, there are probably a few, but I didn't test every possible gun, that would take too long) **The reason that this matters**: your held item is drawn twice behind the scenes `/mob/living/carbon/human/get_held_overlays()` shoves the item onto your client's screen with a `screen_loc`, which is how hand slots used to work. Hand slots don't work that way any more; someone rewrote inventory slots which now draw the item through the slot's `vis_contents` instead, and upstream deleted their copy of this line at the time. As a downstream, Bubber did not. So both paths have been drawing your item this whole time. Anything sitting at pixel offset zero lands in exactly the same spot twice is invisible. Anything wider than a tile is shifted 8 pixels over, the two copies separate, and you get a freakish mutant ghost gun. This deletes the one line that pushes the item onto your own screen. The observer push underneath it stays so it doesn't break observing people. One line fix, a whole afternoon of fucking around to get there. ## Why It's Good For The Game Guns stop being haunted. The possibility of adding intentionally haunted guns at a later date yet remains. More usefully, this could theoretically afflict any item with a sprite bigger than one tile, not just guns. Guns are simply the most common "oversized sprite" incidence, so that's where it showed up. ## Testing Tested a wide array of items and weapons to make sure the fix works and didn't have any unforeseen negative consequences. Swapped hands, dropped and picked back up, took the item and put it on my vest and took it back out, checked items still stay in the inventory slot properly every time. Ghosted and observed a player holding a gun, still renders correctly. I will note that some sprites still sit very slightly left of centr inside the box, because they keep the offset that centres them on a tile. That's cosmetic and I think it was there before; if anyone actually turns out to care that is a separate issue that will require a separate fix. ## Changelog :cl: fix: Certain items no longer render a doubled ghost copy in your hand slot. /:cl: --- code/modules/mob/living/carbon/human/human_update_icons.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human_update_icons.dm b/code/modules/mob/living/carbon/human/human_update_icons.dm index dfbb7936009..9fda25342b3 100644 --- a/code/modules/mob/living/carbon/human/human_update_icons.dm +++ b/code/modules/mob/living/carbon/human/human_update_icons.dm @@ -663,7 +663,10 @@ There are several things that need to be remembered: var/held_index = get_held_index_of_item(worn_item) if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD) worn_item.screen_loc = ui_hand_position(held_index) - client.screen += worn_item + // BUBBER EDIT REMOVAL BEGIN - pushing the held item onto our own client's screen here is how + // hand slots worked before the inventory slot rewrite. This alternate behavior is needed to stop duplicate item sprites appearing inhand. + // ORIGINAL: client.screen += worn_item + // BUBBER EDIT REMOVAL END if(observers?.len) for(var/M in observers) var/mob/dead/observe = M From ab0d9dfe8086b760dabc4fea1d0344e35c4d947d Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Fri, 31 Jul 2026 19:19:16 +0200 Subject: [PATCH 048/139] Automatic changelog for PR #6005 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6005.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6005.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6005.yml b/html/changelogs/AutoChangeLog-bubber-pr-6005.yml new file mode 100644 index 00000000000..3733b7a3f9e --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6005.yml @@ -0,0 +1,4 @@ +author: "NanoCats" +delete-after: True +changes: + - bugfix: "Certain items no longer render a doubled ghost copy in your hand slot." \ No newline at end of file From 1ba61d9056946d555b65a8f20e0a497a07af84e9 Mon Sep 17 00:00:00 2001 From: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com> Date: Fri, 31 Jul 2026 11:22:11 -0600 Subject: [PATCH 049/139] Fixes protean outfit duplication (#6010) --- .../sacrifice_knowledge.dm | 4 +-- code/modules/unit_tests/_unit_tests.dm | 1 + code/modules/unit_tests/~skyrat/proteans.dm | 27 +++++++++++++++++++ .../species/proteans/_proteans_species.dm | 20 +++----------- .../species/proteans/organs/protean_brain.dm | 15 ++++++----- 5 files changed, 43 insertions(+), 24 deletions(-) create mode 100644 code/modules/unit_tests/~skyrat/proteans.dm diff --git a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm index 8d17fd4664a..7ea05093501 100644 --- a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm +++ b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm @@ -350,11 +350,11 @@ var/turf/destination = get_turf(destination_landmark) //BUBBERSTATION EDIT - if(is_species(sac_target, /datum/species/protean)) + if(isprotean(sac_target)) var/obj/item/organ/brain/protean/brain = sac_target.get_organ_slot(ORGAN_SLOT_BRAIN) if(brain) brain.revive() - brain.leave_modsuit() + brain.leave_modsuit(TRUE) //BUBBERSTATION EDIT END sac_target.visible_message(span_danger("[sac_target] begins to shudder violenty as dark tendrils begin to drag them into thin air!")) sac_target.equip_to_slot_or_del(new /obj/item/restraints/handcuffs/cult, ITEM_SLOT_HANDCUFFED, indirect_action = TRUE) diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 49474e67b2c..ece4c085be3 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -369,6 +369,7 @@ #include "~skyrat\digitigrade_sprites.dm" #include "~skyrat\nanite_designs.dm" #include "~skyrat\opposing_force.dm" +#include "~skyrat\proteans.dm" // SKYRAT EDIT END // END_INCLUDE #ifdef REFERENCE_TRACKING_DEBUG //Don't try and parse this file if ref tracking isn't turned on. IE: don't parse ref tracking please mr linter diff --git a/code/modules/unit_tests/~skyrat/proteans.dm b/code/modules/unit_tests/~skyrat/proteans.dm new file mode 100644 index 00000000000..ac967b00c28 --- /dev/null +++ b/code/modules/unit_tests/~skyrat/proteans.dm @@ -0,0 +1,27 @@ +/** + * Tests Protean suit transformation and species handling. Makes sure any storage is dropped and its contents not deleted. + */ +/datum/unit_test/protean_species_handling/Run() + var/mob/living/carbon/human/consistent/protean = EASY_ALLOCATE() + var/obj/item/stack/sheet/iron/twenty/iron = EASY_ALLOCATE() + var/obj/item/storage/backpack/bag = EASY_ALLOCATE() + protean.equip_to_slot_if_possible(bag, ITEM_SLOT_BACK, TRUE, TRUE, TRUE, TRUE, TRUE) + protean.equip_to_storage(iron, ITEM_SLOT_BACK) + + protean.set_species(/datum/species/protean) + var/datum/species/protean/p_species = protean.dna.species + var/backslot = protean.get_item_by_slot(ITEM_SLOT_BACK) + var/obj/item/mod/core/protean/core = p_species.species_modsuit.core + TEST_ASSERT_EQUAL(p_species.owner, protean, "Protean species did not assign dummy as its owner.") + TEST_ASSERT(istype(backslot, /obj/item/mod/control/pre_equipped/protean), "Protean species did not assign /obj/item/mod/control/protean to ITEM_SLOT_BACK. Backslot: [isnull(backslot) ? "Null" : "[backslot]"]") + TEST_ASSERT_NOTNULL(p_species.species_modsuit, "Protean species failed to link to modsuit.") + TEST_ASSERT_EQUAL(core.linked_species, p_species, "Protean modsuit core failed to link to its species.") + + TEST_ASSERT(isturf(bag.loc), "[bag::name] did not drop onto a turf! Location: [isnull(bag.loc) ? "Nullspace" : "[bag.loc]"]") + TEST_ASSERT(locate(/obj/item/stack/sheet/iron/twenty) in bag.contents, "[iron::name] are not inside [bag::name]") + + protean.equip_to_storage(iron, ITEM_SLOT_BACK) + TEST_ASSERT_EQUAL(iron.loc, p_species.species_modsuit.atom_storage.real_location, "[iron::name] did not enter [p_species.species_modsuit.name] storage. Does it have a storage module?") + + protean.set_species(/datum/species/human) + TEST_ASSERT(isturf(iron.loc), "[iron::name] has not dropped to a turf after species loss. Location: [isnull(iron.loc) ? "Nullspace" : "[iron.loc]"]") diff --git a/modular_zubbers/code/modules/customization/species/proteans/_proteans_species.dm b/modular_zubbers/code/modules/customization/species/proteans/_proteans_species.dm index b0f8566214c..bc5a0b253f7 100644 --- a/modular_zubbers/code/modules/customization/species/proteans/_proteans_species.dm +++ b/modular_zubbers/code/modules/customization/species/proteans/_proteans_species.dm @@ -85,14 +85,6 @@ /mob/living/carbon/human/species/protean race = /datum/species/protean -/datum/species/protean/Destroy(force) - if(!QDELETED(species_modsuit)) - INVOKE_ASYNC(src, PROC_REF(unassimilate_modsuit), null, TRUE) - QDEL_NULL(species_modsuit) - QDEL_NULL(protean_action) - owner = null - return ..() - /datum/species/protean/on_species_gain(mob/living/carbon/human/gainer, datum/species/old_species, pref_load, regenerate_icons = TRUE) . = ..() owner = gainer @@ -126,16 +118,18 @@ organ.balloon_alert_to_viewers("rejected!", vision_distance = 1) /datum/species/protean/on_species_loss(mob/living/carbon/human/gainer, datum/species/new_species, pref_load) + . = ..() if(gainer) UnregisterSignal(owner, COMSIG_CARBON_GAIN_ORGAN) if(species_modsuit.stored_modsuit) species_modsuit.stored_modsuit.forceMove(get_turf(gainer)) unassimilate_modsuit(null, TRUE) if(species_modsuit) + if(species_modsuit.atom_storage) + species_modsuit.atom_storage.remove_all(owner.drop_location()) QDEL_NULL(species_modsuit) protean_action.Remove(owner) owner = null - return ..() /datum/species/protean/proc/equip_modsuit(mob/living/carbon/human/gainer) species_modsuit = new() @@ -166,13 +160,7 @@ assimilate_modsuit(owner, suit, TRUE) species_modsuit.quick_activation() - LAZYINITLIST(outfit.backpack_contents) - if(istype(outfit, /datum/outfit/job)) - owner.equip_to_storage(SSwardrobe.provide_type(/obj/item/stack/sheet/iron/twenty, owner), ITEM_SLOT_BACK, TRUE, FALSE) - return - outfit.backpack_contents += /obj/item/stack/sheet/iron/twenty - for(var/path in outfit.backpack_contents) - owner.equip_to_storage(SSwardrobe.provide_type(path, owner), ITEM_SLOT_BACK, TRUE, TRUE) + owner.equip_to_storage(SSwardrobe.provide_type(/obj/item/stack/sheet/iron/twenty, owner), ITEM_SLOT_BACK, TRUE, FALSE) if(outfit.suit_store) owner.equip_to_slot_if_possible(SSwardrobe.provide_type(outfit.suit_store, owner), ITEM_SLOT_SUITSTORE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE) diff --git a/modular_zubbers/code/modules/customization/species/proteans/organs/protean_brain.dm b/modular_zubbers/code/modules/customization/species/proteans/organs/protean_brain.dm index 184a4e49476..87fc6d6161c 100644 --- a/modular_zubbers/code/modules/customization/species/proteans/organs/protean_brain.dm +++ b/modular_zubbers/code/modules/customization/species/proteans/organs/protean_brain.dm @@ -67,7 +67,7 @@ /datum/movespeed_modifier/protean_slowdown variable = TRUE -/obj/item/organ/brain/protean/proc/go_into_suit(forced) +/obj/item/organ/brain/protean/proc/go_into_suit(forced = FALSE) var/datum/species/protean/protean = owner.dna?.species if(!istype(protean) || owner.loc == protean.species_modsuit) return @@ -84,10 +84,11 @@ owner.remove_status_effect(/datum/status_effect/protean_low_power_mode/low_power) suit.drop_suit() owner.forceMove(suit) - sleep(12) //Sleep is fine here because I'm not returning anything and if the brain gets deleted within 12 ticks of this being ran, we have some other serious issues. + if(!forced) + sleep(12) //Sleep is fine here because I'm not returning anything and if the brain gets deleted within 12 ticks of this being ran, we have some other serious issues. owner.invisibility = initial(owner.invisibility) -/obj/item/organ/brain/protean/proc/leave_modsuit() +/obj/item/organ/brain/protean/proc/leave_modsuit(forced = FALSE) var/datum/species/protean/protean = owner.dna?.species if(!istype(protean)) return @@ -95,8 +96,9 @@ if(dead) to_chat(owner, span_warning("Your mass is destroyed. You are unable to leave.")) return - if(!do_after(owner, 5 SECONDS, suit, IGNORE_INCAPACITATED)) - return + if(!forced) + if(!do_after(owner, 5 SECONDS, suit, IGNORE_INCAPACITATED)) + return if(istype(suit.loc, /obj/item/reagent_containers/cup/soup_pot)) // If protean inside of soup pot var/obj/item/reagent_containers/cup/soup_pot/pot = suit.loc pot.remove_first_ingredient(null) @@ -108,7 +110,8 @@ storage.remove_single(null, suit, get_turf(suit), TRUE) suit.invisibility = 101 new /obj/effect/temp_visual/protean_from_suit(suit.loc, owner.dir) - sleep(12) //Same as above + if(!forced) + sleep(12) //Same as above suit.drop_suit() owner.forceMove(suit.loc) if(owner.get_item_by_slot(ITEM_SLOT_BACK)) From d05f30116ab95f2309003de7f1bcf55f28f09cb2 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Fri, 31 Jul 2026 19:22:42 +0200 Subject: [PATCH 050/139] Automatic changelog for PR #6010 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6010.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6010.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6010.yml b/html/changelogs/AutoChangeLog-bubber-pr-6010.yml new file mode 100644 index 00000000000..21d8e588319 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6010.yml @@ -0,0 +1,4 @@ +author: "StrangeWeirdKitten" +delete-after: True +changes: + - bugfix: "Proteans should no longer get duplicate items when certain outfits are equipped." \ No newline at end of file From ff3502eff0de89cde996bdab18af16ce5cedd384 Mon Sep 17 00:00:00 2001 From: Phantastic-Swan Date: Sat, 1 Aug 2026 02:26:11 +0200 Subject: [PATCH 051/139] Moves genital appearance preferences to the character visuals tab, renames "mutant body colors" to "body colors" (#5977) ## About The Pull Request I will be perfectly honest with you. The idea that I select what breasts I want in the appearance tab, and then I have to go to the character basics tab to select their appearance is a jarring one. Also, renames "mutant body colors" to just "body colors" because I have seen too many new players be confused by that. Why was it named "mutant" body colors in the first place? Though I haven't changed the internal name of it, cuz I think that's not necessary. Unless a maintainer asks me to then I can do it. ## Why It's Good For The Game Makes the character preferences menu easier to navigate ## Proof Of Testing image Type, colors, skin tone setting and many others for genitals visible in the appearance tab. image Mutant body colors renamed ## Changelog :cl: Swan qol: Renames the "mutant body colors" pref to just "body colors", moves most genital appearance settings to the visuals tab of the character creator /:cl: --- .../code/modules/client/preferences/genitals.dm | 10 +++++----- .../character_preferences/bubbers/species_features.tsx | 7 +++++++ .../character_preferences/skyrat/species_features.tsx | 6 ------ 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/modular_skyrat/master_files/code/modules/client/preferences/genitals.dm b/modular_skyrat/master_files/code/modules/client/preferences/genitals.dm index a44eaf11611..3f29485c889 100644 --- a/modular_skyrat/master_files/code/modules/client/preferences/genitals.dm +++ b/modular_skyrat/master_files/code/modules/client/preferences/genitals.dm @@ -3,7 +3,7 @@ // ABSTRACT TYPES /datum/preference/toggle/allow_genitals - category = PREFERENCE_CATEGORY_CHARACTER_BASICS + category = PREFERENCE_CATEGORY_SECONDARY_FEATURES savefile_identifier = PREFERENCE_CHARACTER savefile_key = "allow_genitals_toggle" default_value = TRUE @@ -19,7 +19,7 @@ return erp_allowed && passed_initial_check /datum/preference/choiced/genital - category = PREFERENCE_CATEGORY_CHARACTER_BASICS + category = PREFERENCE_CATEGORY_SECONDARY_FEATURES savefile_identifier = PREFERENCE_CHARACTER abstract_type = /datum/preference/choiced/genital @@ -74,7 +74,7 @@ return assoc_to_keys_features(SSaccessories.sprite_accessories[relevant_mutant_bodypart]) /datum/preference/toggle/genital_skin_tone - category = PREFERENCE_CATEGORY_CHARACTER_BASICS + category = PREFERENCE_CATEGORY_SECONDARY_FEATURES savefile_identifier = PREFERENCE_CHARACTER default_value = FALSE abstract_type = /datum/preference/toggle/genital_skin_tone @@ -91,7 +91,7 @@ return erp_allowed && (passed_initial_check || allowed) /datum/preference/toggle/genital_skin_color - category = PREFERENCE_CATEGORY_CHARACTER_BASICS + category = PREFERENCE_CATEGORY_SECONDARY_FEATURES savefile_identifier = PREFERENCE_CHARACTER default_value = FALSE abstract_type = /datum/preference/toggle/genital_skin_color @@ -123,7 +123,7 @@ /datum/preference/tri_color/genital - category = PREFERENCE_CATEGORY_CHARACTER_BASICS + category = PREFERENCE_CATEGORY_SECONDARY_FEATURES savefile_identifier = PREFERENCE_CHARACTER check_mode = TRICOLOR_CHECK_ACCESSORY abstract_type = /datum/preference/tri_color/genital diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/bubbers/species_features.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/bubbers/species_features.tsx index 95b2fd25e01..0f641a78996 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/bubbers/species_features.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/bubbers/species_features.tsx @@ -4,6 +4,7 @@ import { type FeatureChoiced, FeatureShortTextInput, FeatureTextInput, + FeatureTriColorInput, type FeatureToggle, } from '../../base'; import { FeatureDropdownInput } from '../../dropdowns'; @@ -186,3 +187,9 @@ export const art_ref_nsfw: FeatureToggle = { description: 'Is your reference picture NSFW?', component: CheckboxInput, }; + +export const mutant_colors_color: Feature = { + name: 'Body Colors', + component: FeatureTriColorInput, + description: 'Body color used for non-human species.', +}; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx index 7790f1c40d0..0a70c459c0b 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx @@ -163,12 +163,6 @@ export const eyes_opacity: Feature = { component: FeatureNumberInput, }; -export const mutant_colors_color: Feature = { - name: 'Mutant Colors', - component: FeatureTriColorInput, - description: 'Body color used for non-human species.', -}; - export const body_markings_toggle: FeatureToggle = { name: 'Body Markings', component: CheckboxInput, From 32f2cd41bd2020ef8c22ab7fbb9d7bc1de761b82 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sat, 1 Aug 2026 02:26:36 +0200 Subject: [PATCH 052/139] Automatic changelog for PR #5977 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5977.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5977.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5977.yml b/html/changelogs/AutoChangeLog-bubber-pr-5977.yml new file mode 100644 index 00000000000..11853520a1d --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-5977.yml @@ -0,0 +1,4 @@ +author: "Swan" +delete-after: True +changes: + - qol: "Renames the \"mutant body colors\" pref to just \"body colors\", moves most genital appearance settings to the visuals tab of the character creator" \ No newline at end of file From 3dfc3d8343524c6b4995f04ee58ef01db406c414 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sat, 1 Aug 2026 02:48:16 +0000 Subject: [PATCH 053/139] Bubberstation automatic changelog compile [ci skip] --- .../AutoChangeLog-bubber-pr-5919.yml | 5 ----- .../AutoChangeLog-bubber-pr-5977.yml | 4 ---- .../AutoChangeLog-bubber-pr-6005.yml | 4 ---- .../AutoChangeLog-bubber-pr-6010.yml | 4 ---- .../AutoChangeLog-bubber-pr-6011.yml | 4 ---- .../AutoChangeLog-bubber-pr-6028.yml | 5 ----- .../AutoChangeLog-bubber-pr-6035.yml | 4 ---- html/changelogs/bubber_archive/2026-08.yml | 21 +++++++++++++++++++ 8 files changed, 21 insertions(+), 30 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5919.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5977.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6005.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6010.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6011.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6028.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6035.yml create mode 100644 html/changelogs/bubber_archive/2026-08.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5919.yml b/html/changelogs/AutoChangeLog-bubber-pr-5919.yml deleted file mode 100644 index ba60556e3e1..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-5919.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "xPokee" -delete-after: True -changes: - - rscdel: "Removed the hemphage specific quirks Masquerade, Sol Weakness, and Pseudo-Respiration. They are now toggles on the hemophage quirk." - - refactor: "Refactored the hemophage species into being a quirk: Hemophagia." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5977.yml b/html/changelogs/AutoChangeLog-bubber-pr-5977.yml deleted file mode 100644 index 11853520a1d..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-5977.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Swan" -delete-after: True -changes: - - qol: "Renames the \"mutant body colors\" pref to just \"body colors\", moves most genital appearance settings to the visuals tab of the character creator" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6005.yml b/html/changelogs/AutoChangeLog-bubber-pr-6005.yml deleted file mode 100644 index 3733b7a3f9e..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6005.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "NanoCats" -delete-after: True -changes: - - bugfix: "Certain items no longer render a doubled ghost copy in your hand slot." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6010.yml b/html/changelogs/AutoChangeLog-bubber-pr-6010.yml deleted file mode 100644 index 21d8e588319..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6010.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "StrangeWeirdKitten" -delete-after: True -changes: - - bugfix: "Proteans should no longer get duplicate items when certain outfits are equipped." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6011.yml b/html/changelogs/AutoChangeLog-bubber-pr-6011.yml deleted file mode 100644 index cc8b119fbe6..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6011.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "StrangeWeirdKitten" -delete-after: True -changes: - - balance: "increased Protean low power mode walking speed from a modifier of 5 to 3 (our current walking speed)" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6028.yml b/html/changelogs/AutoChangeLog-bubber-pr-6028.yml deleted file mode 100644 index f8731898e69..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6028.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "ibexgoetia" -delete-after: True -changes: - - balance: "Being dusted via Dusting Sickness now makes you drop your equipment." - - bugfix: "Abductors and Plasmamen are now blacklisted from picking the Dusting Sickness quirk." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6035.yml b/html/changelogs/AutoChangeLog-bubber-pr-6035.yml deleted file mode 100644 index c78830ab747..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6035.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "xPokee" -delete-after: True -changes: - - rscadd: "Added raw shrimp, fried (cooked) shrimp, and the ability to process fried shrimp into shrimp chips." \ No newline at end of file diff --git a/html/changelogs/bubber_archive/2026-08.yml b/html/changelogs/bubber_archive/2026-08.yml new file mode 100644 index 00000000000..f294c659a1e --- /dev/null +++ b/html/changelogs/bubber_archive/2026-08.yml @@ -0,0 +1,21 @@ +2026-08-01: + NanoCats: + - bugfix: Certain items no longer render a doubled ghost copy in your hand slot. + StrangeWeirdKitten: + - balance: increased Protean low power mode walking speed from a modifier of 5 to + 3 (our current walking speed) + - bugfix: Proteans should no longer get duplicate items when certain outfits are + equipped. + Swan: + - qol: Renames the "mutant body colors" pref to just "body colors", moves most genital + appearance settings to the visuals tab of the character creator + ibexgoetia: + - balance: Being dusted via Dusting Sickness now makes you drop your equipment. + - bugfix: Abductors and Plasmamen are now blacklisted from picking the Dusting Sickness + quirk. + xPokee: + - rscadd: Added raw shrimp, fried (cooked) shrimp, and the ability to process fried + shrimp into shrimp chips. + - rscdel: Removed the hemphage specific quirks Masquerade, Sol Weakness, and Pseudo-Respiration. + They are now toggles on the hemophage quirk. + - refactor: 'Refactored the hemophage species into being a quirk: Hemophagia.' From 94652529b2d3a4c870e596d483a8133a0ac67e64 Mon Sep 17 00:00:00 2001 From: Alexis Date: Sat, 1 Aug 2026 09:11:31 -0400 Subject: [PATCH 054/139] Shrimp Hotfix AKA Oopsies I Forgor (#6040) ## About The Pull Request Changes the fried shrimp desc from the copy/pasted desc of fish fingers. ## Why It's Good For The Game It's an oversight. ## Proof Of Testing It is a one line string change. If someone really wants me to test this I will. ## Changelog :cl: fix: Fixed the fried shrimp description. /:cl: --- modular_zubbers/code/modules/food_and_drinks/food/meatdish.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_zubbers/code/modules/food_and_drinks/food/meatdish.dm b/modular_zubbers/code/modules/food_and_drinks/food/meatdish.dm index ab06ee29a53..80c661a5043 100644 --- a/modular_zubbers/code/modules/food_and_drinks/food/meatdish.dm +++ b/modular_zubbers/code/modules/food_and_drinks/food/meatdish.dm @@ -12,7 +12,7 @@ /obj/item/food/fried_shrimp name = "fried shrimp" - desc = "A finger of fish." + desc = "Shrimp that someone has fried." icon = 'modular_zubbers/icons/obj/food/meat.dmi' icon_state = "shrimp_cooked" food_reagents = list( From 5a6b2b42e2610479da6b28db23091f13aab37f40 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sat, 1 Aug 2026 15:12:02 +0200 Subject: [PATCH 055/139] Automatic changelog for PR #6040 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6040.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6040.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6040.yml b/html/changelogs/AutoChangeLog-bubber-pr-6040.yml new file mode 100644 index 00000000000..85ee59a2098 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6040.yml @@ -0,0 +1,4 @@ +author: "xPokee" +delete-after: True +changes: + - bugfix: "Fixed the fried shrimp description." \ No newline at end of file From b9e79a8cbdae97c4d932517745077dd96b3bde0f Mon Sep 17 00:00:00 2001 From: Minty <120209597+MintyPhresh@users.noreply.github.com> Date: Sat, 1 Aug 2026 19:21:06 -0400 Subject: [PATCH 056/139] Adds an item to match Proteans and wearers (#5861) --- code/modules/loadout/loadout_helpers.dm | 10 +- code/modules/loadout/loadout_items.dm | 2 + .../modules/clothing/accessory/accessory.dm | 185 +++++++++++++++++- .../species/proteans/organs/protean_heart.dm | 2 +- .../proteans/organs/protean_stomach.dm | 1 + .../code/modules/loadout/categories/pocket.dm | 8 +- .../code/modules/vending/wardrobe.dm | 2 +- 7 files changed, 199 insertions(+), 11 deletions(-) diff --git a/code/modules/loadout/loadout_helpers.dm b/code/modules/loadout/loadout_helpers.dm index c4cbb429501..89bd2b32d6f 100644 --- a/code/modules/loadout/loadout_helpers.dm +++ b/code/modules/loadout/loadout_helpers.dm @@ -44,13 +44,13 @@ // BUBBER EDIT ADDITION BEGIN if(item.restricted_roles && equipping && !(equipping.title in item.restricted_roles)) if(preference_source.parent) - to_chat(preference_source.parent, span_warning("You were unable to get a loadout item([initial(item.item_path.name)]) due to job restrictions!")) + to_chat(preference_source.parent, span_warning("You were unable to get a loadout item ([initial(item.item_path.name)]) due to job restrictions!")) loadout_datums -= item continue if(item.blacklisted_roles && equipping && (equipping.title in item.blacklisted_roles)) if(preference_source.parent) - to_chat(preference_source.parent, span_warning("You were unable to get a loadout item([initial(item.item_path.name)]) due to job blacklists!")) + to_chat(preference_source.parent, span_warning("You were unable to get a loadout item ([initial(item.item_path.name)]) due to job blacklists!")) loadout_datums -= item continue @@ -60,6 +60,12 @@ loadout_datums -= item continue + if(item.blacklisted_species && (dna.species.id in item.blacklisted_species)) + if(preference_source.parent) + to_chat(preference_source.parent, span_warning("You were unable to get a loadout item ([initial(item.item_path.name)]) due to species blacklists!")) + loadout_datums -= item + continue + if(item.donator_only && !SSplayer_ranks.is_donator(preference_source?.parent)) if(preference_source.parent) to_chat(preference_source.parent, span_warning("You were unable to get a loadout item ([initial(item.item_path.name)]) due to donator restrictions!")) diff --git a/code/modules/loadout/loadout_items.dm b/code/modules/loadout/loadout_items.dm index bf2068a8cdf..6c4f31d6c2f 100644 --- a/code/modules/loadout/loadout_items.dm +++ b/code/modules/loadout/loadout_items.dm @@ -70,6 +70,8 @@ GLOBAL_LIST_INIT(all_loadout_categories, init_loadout_categories()) var/list/blacklisted_roles /// If set, is a list of species which can get the loadout item var/list/restricted_species + /// If set, is a list of species which can't get the loadout item + var/list/blacklisted_species /// Whether the item is restricted to supporters var/donator_only /// Whether the item requires a specific season in order to be available diff --git a/modular_zubbers/code/modules/clothing/accessory/accessory.dm b/modular_zubbers/code/modules/clothing/accessory/accessory.dm index e5870520d06..ab187a53732 100644 --- a/modular_zubbers/code/modules/clothing/accessory/accessory.dm +++ b/modular_zubbers/code/modules/clothing/accessory/accessory.dm @@ -172,6 +172,185 @@ attachment_slot = NONE above_suit = TRUE +/// This list is for Protean Match tags, and stores how many tags are waiting to be matched. +GLOBAL_LIST_EMPTY_TYPED(protean_match_tag_pool, /obj/item/clothing/accessory/dogtags/protean_match) +/// This list is for Protean Match tags, and stores every tag that's currently assigned to someone. Intended to be used to prevent one person having multiple tags. +GLOBAL_LIST_EMPTY_TYPED(all_assigned_protean_match_tags, /obj/item/clothing/accessory/dogtags/protean_match) + +// The tag pool, contains either unmatched Wearers or unmatched Proteans, waiting for the opposite type to join and match them. +// It should never ever ever contain both, since if the second type tries to join the list it'll just get paired. +// So if we need to differentiate between if there's Proteans or Wearers in the pool, we just check the first entry. +#define POOL GLOB.protean_match_tag_pool +#define ASSIGNED_TAGS GLOB.all_assigned_protean_match_tags +#define UNASSIGNED "0" +#define IN_POOL "1" +#define MATCHED "2" + +/obj/item/clothing/accessory/dogtags/protean_match + name = "\improper Protean Match tag" + desc = "A small tag from NT's Protean Match program, which pairs Protean crew with interested wearers." + worn_icon = null // People shouldn't have to abandon 5 pixels of swag and aura to wear this + custom_premium_price = PAYCHECK_CREW * 0.4 + /// Name of the person assigned to the tag + var/assignee_name + /// the "true" name of the assignee, source.mind.name, used to keep one person from putting a bunch of their own tags in the pool. + var/assignee_truename + /// Is the person assigned to the tag a protean? TRUE if yes + var/assignee_protean + /// What step of the matching journey + var/match_progress = UNASSIGNED + var/datum/weakref/paired_tag_weakref + +///This is how a person can assign a tag to themself, or switch if they're in the candidate pool +/obj/item/clothing/accessory/dogtags/protean_match/attack_self(mob/user) + switch(match_progress) + if(UNASSIGNED) + assign(user) + // match_progress and sounds are set within assign() + if(IN_POOL) + to_chat(user, "You press the button on the tag, removing it from the Protean Match candidate pool and unclaiming it.") + playsound(src, "modular_skyrat/modules/emotes/sound/emotes/synth_no.ogg", 20, FALSE) + balloon_alert(user, "tag unassigned") + + unassign() + return + if(MATCHED) + var/obj/item/clothing/accessory/dogtags/protean_match/paired_tag = paired_tag_weakref?.resolve() + var/safety = (tgui_alert(user, "You are currently matched with [paired_tag?.assignee_name]. Are you sure you want to unclaim your tag? This will unassign both tags.", "Unclaim tag?", list("Unclaim", "Cancel"))) + if(safety == "Cancel" || !in_range(src, user)) + return + to_chat(user, "You press the button on the tag, unmatching with [paired_tag?.assignee_name] and exiting the Protean Match candidate pool.") + playsound(src, "modular_skyrat/modules/emotes/sound/emotes/synth_no.ogg", 20, FALSE) + balloon_alert(user, "unmatched tag") + + paired_tag.unassign("matched tag deactivated") + unassign() + return + +/obj/item/clothing/accessory/dogtags/protean_match/click_alt(mob/user) + if(length(POOL) ? (assignee_protean == POOL[1].assignee_protean) : TRUE) + playsound(src, "sound/machines/buzz/buzz-sigh.ogg", 20, FALSE) + balloon_alert(user, "no other valid matches in pool") + return + if(match_progress == MATCHED) + var/obj/item/clothing/accessory/dogtags/protean_match/paired_tag = paired_tag_weakref?.resolve() + var/safety = (tgui_alert(user, "You are currently matched with [paired_tag?.assignee_name]. Are you sure you want to attempt to match with someone else in the pool? This will unassign the other user's tag.", "Re-match tag?", list("Re-match", "Cancel"))) + if(safety == "Cancel" || !in_range(src, user)) + return + unassign() + assign(user) //This comes before the paired tag is unassigned so that it doesn't consider the existing pairing as a valid candidate + paired_tag.unassign("matched tag deactivated") + +/obj/item/clothing/accessory/dogtags/protean_match/Destroy() + POOL -= src + ASSIGNED_TAGS -= src + if(match_progress == MATCHED) + var/obj/item/clothing/accessory/dogtags/protean_match/paired_tag = paired_tag_weakref?.resolve() + paired_tag.unassign("paired tag destroyed") + return ..() + +///Filters out crew that can't wear Proteans or shouldn't have them. +/obj/item/clothing/accessory/dogtags/protean_match/proc/assign(mob/source) + . = TRUE + /// If this ends up not being null, the assignment fails and returns the reason + var/ineligibility_reason = null + var/mob/living/user + var/obj/item/card/id/user_id + var/user_id_name + + ///Runs through a bunch of reasons why you shouldn't get to be in the pool. If it finds one it sets the ineligibility_reason to a string, which makes the assignment fail + if(isliving(source)) + user = source + user_id = user.get_idcard(TRUE) + user_id_name = user_id?.get_displayed_name() + var/turf/station_check = get_turf(user) + + for(var/obj/item/clothing/accessory/dogtags/protean_match/tag as anything in ASSIGNED_TAGS) + if(user_id_name == tag.assignee_name) + ineligibility_reason = "existing tag has that name" + break + if(source.mind.name == tag.assignee_truename) //Checks the user's "true name" to prevent trolling with multiple cardboard IDs + ineligibility_reason = "one per person, please" + break + if(isnull(user_id)) + ineligibility_reason = "no ID found" + else if(!station_check || !is_station_level(station_check.z)) + ineligibility_reason = "not on station Z-level" + else if(user.has_quirk(/datum/quirk/equipping/entombed)) + ineligibility_reason = "MOD entombed" + else if(iscarbon(user)) + var/mob/living/carbon/carbon_user = user + if(carbon_user.dna.species.id == SPECIES_SNAIL) + ineligibility_reason = "snailperson" + else + ineligibility_reason = "invalid being" + + if(ineligibility_reason) + playsound(src, "sound/machines/buzz/buzz-sigh.ogg", 20, FALSE) + balloon_alert(source, "ineligible: [ineligibility_reason]") + return + +///From here, we assign a name and species to the tag, and try to match it. If it fails, adds it to the pool. + assignee_name = user_id_name + assignee_truename = source.mind.name + assignee_protean = isprotean(source) + ASSIGNED_TAGS += src + name += " - [assignee_name] ([assignee_protean ? "Protean" : "Wearer"])" + update_static_data_for_all_viewers() +//If you aren't the same as the other people in the pool, you get matched with one of them + if(length(POOL)) + if(assignee_protean != POOL[1].assignee_protean) + var/obj/item/clothing/accessory/dogtags/protean_match/matched_wearer_tag = pick(POOL) + matched_wearer_tag.handle_match(src) //Makes the match's tag ping + handle_match(matched_wearer_tag) //Makes our tag ping + return + // This should only run if the code block above fails + POOL += src + match_progress = IN_POOL + say("No match found, added to candidate pool! There are [(length(POOL) - 1) ? "[length(POOL) - 1]" : "no" ] other [assignee_protean ? "Proteans" : "Wearers"] in the pool.") + +///Handles the logistics of matching tags. Done by both sets of tags. +/obj/item/clothing/accessory/dogtags/protean_match/proc/handle_match(obj/item/clothing/accessory/dogtags/protean_match/other_tag) + match_progress = MATCHED + POOL -= src + playsound(src, "modular_skyrat/modules/emotes/sound/emotes/synth_yes.ogg", 20, FALSE) + say("Matched with [(other_tag.assignee_protean == TRUE) ? "Protean" : "Wearer"]: [other_tag.assignee_name]!") + paired_tag_weakref = other_tag.create_weakref() + +/// Used both when unmatching with a person and when leaving the match pool. +/obj/item/clothing/accessory/dogtags/protean_match/proc/unassign(unmatch_reason) + match_progress = UNASSIGNED + POOL -= src + ASSIGNED_TAGS -= src + assignee_name = null + assignee_truename = null + assignee_protean = null + name = initial(name) + paired_tag_weakref = null + update_static_data_for_all_viewers() + if(unmatch_reason) + say("You have been unmatched. Reason: [unmatch_reason].") + +/obj/item/clothing/accessory/dogtags/protean_match/examine(mob/user) + . = ..() + if(!(in_range(user, src))) + return + if(assignee_name) + . += span_notice("This set is assigned to [assignee_name], a [assignee_protean ? "Protean" : "Wearer"].") + switch(match_progress) + if(UNASSIGNED) + . += span_notice("You can join the program by using it in-hand.") + if(IN_POOL) + . += span_notice("It's currently in the candidate pool, alongside [length(POOL) - 1] others. Leave the pool by using it in-hand.") + if(MATCHED) + var/obj/item/clothing/accessory/dogtags/protean_match/paired_tag = paired_tag_weakref?.resolve() + . += span_notice("It's currently matched with [paired_tag.assignee_name], and can be unmatched by using it in-hand. To match with a different person in the queue, alt-click.") + +#undef POOL +#undef ASSIGNED_TAGS +#undef UNASSIGNED +#undef IN_POOL +#undef MATCHED /* Greyscaled Medals @@ -631,9 +810,3 @@ Potential future ideas: name = "\improper GalFed Official neckpin" desc = "A special golden neckpin to show true loyalty to the Federation." greyscale_colors = "#ffff66#0099ff" - -/obj/item/clothing/accessory/medal/gold/ - worn_icon_teshari = 'modular_zubbers/icons/mob/clothing/accessories_teshari.dmi' - -/obj/item/clothing/accessory/medal/gold/captain - worn_icon_teshari = 'modular_zubbers/icons/mob/clothing/accessories_teshari.dmi' diff --git a/modular_zubbers/code/modules/customization/species/proteans/organs/protean_heart.dm b/modular_zubbers/code/modules/customization/species/proteans/organs/protean_heart.dm index ec7bdf90c0a..81d8539a1dd 100644 --- a/modular_zubbers/code/modules/customization/species/proteans/organs/protean_heart.dm +++ b/modular_zubbers/code/modules/customization/species/proteans/organs/protean_heart.dm @@ -4,4 +4,4 @@ icon = PROTEAN_ORGAN_SPRITE icon_state = "orchestrator" organ_flags = ORGAN_ROBOTIC | ORGAN_NANOMACHINE - + custom_premium_price = PAYCHECK_COMMAND * 2 diff --git a/modular_zubbers/code/modules/customization/species/proteans/organs/protean_stomach.dm b/modular_zubbers/code/modules/customization/species/proteans/organs/protean_stomach.dm index 7e8296ea1f2..6a623c2d7ec 100644 --- a/modular_zubbers/code/modules/customization/species/proteans/organs/protean_stomach.dm +++ b/modular_zubbers/code/modules/customization/species/proteans/organs/protean_stomach.dm @@ -6,6 +6,7 @@ icon_state = "refactory" organ_flags = ORGAN_ROBOTIC | ORGAN_NANOMACHINE organ_traits = list(TRAIT_NOHUNGER) + custom_premium_price = PAYCHECK_COMMAND * 2 /// How much max metal can we hold at any given time (In sheets). This isn't using nutrition code because nutrition code gets weird without livers. var/metal_max = PROTEAN_STOMACH_FULL diff --git a/modular_zubbers/code/modules/loadout/categories/pocket.dm b/modular_zubbers/code/modules/loadout/categories/pocket.dm index 928f004fbd4..b6474dda073 100644 --- a/modular_zubbers/code/modules/loadout/categories/pocket.dm +++ b/modular_zubbers/code/modules/loadout/categories/pocket.dm @@ -29,9 +29,15 @@ item_path = /obj/item/storage/fancy/cigarettes/cigpack_mindbreaker /datum/loadout_item/pocket_items/paintingprinter - name = "instant painting printer" + name = "Instant Painting Printer" item_path = /obj/item/modular_computer/mini_painting_printer +/datum/loadout_item/pocket_items/protean_match + name = "Protean Match Tags" + item_path = /obj/item/clothing/accessory/dogtags/protean_match + blacklisted_species = list(SPECIES_SNAIL) //They can't wear proteans + blacklisted_roles = list(JOB_PRISONER) //no, prisoners do not get a spaceproof suit + /* * FLAGS */ diff --git a/modular_zubbers/code/modules/vending/wardrobe.dm b/modular_zubbers/code/modules/vending/wardrobe.dm index ef100bff548..38bf0adc362 100644 --- a/modular_zubbers/code/modules/vending/wardrobe.dm +++ b/modular_zubbers/code/modules/vending/wardrobe.dm @@ -137,8 +137,8 @@ premium = list( /obj/item/organ/stomach/protean = 1, /obj/item/organ/heart/protean = 1, + /obj/item/clothing/accessory/dogtags/protean_match = 6, ) - extra_price = PAYCHECK_COMMAND * 2.0 // This ensures the protean organs are ~200 credits each. /obj/machinery/vending/wardrobe/robo_wardrobe/Initialize(mapload) product_categories[1]["products"] += products From 00a18f461fc4bf8b58a70076b26d49ded32519c8 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sun, 2 Aug 2026 01:21:31 +0200 Subject: [PATCH 057/139] Automatic changelog for PR #5861 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5861.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5861.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5861.yml b/html/changelogs/AutoChangeLog-bubber-pr-5861.yml new file mode 100644 index 00000000000..29292dde054 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-5861.yml @@ -0,0 +1,4 @@ +author: "Mintyphresh" +delete-after: True +changes: + - rscadd: "Added Protean Match tags to the loadout and RoboDrobe. Use them in hand to search for Proteans to wear, or crew to be worn by. Or, just wear them on their own to signal you're open to the idea." \ No newline at end of file From c57370ed26e1da09316311623b77b86a7d927680 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sun, 2 Aug 2026 02:47:10 +0000 Subject: [PATCH 058/139] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5861.yml | 4 ---- html/changelogs/AutoChangeLog-bubber-pr-6040.yml | 4 ---- html/changelogs/bubber_archive/2026-08.yml | 7 +++++++ 3 files changed, 7 insertions(+), 8 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5861.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6040.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5861.yml b/html/changelogs/AutoChangeLog-bubber-pr-5861.yml deleted file mode 100644 index 29292dde054..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-5861.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Mintyphresh" -delete-after: True -changes: - - rscadd: "Added Protean Match tags to the loadout and RoboDrobe. Use them in hand to search for Proteans to wear, or crew to be worn by. Or, just wear them on their own to signal you're open to the idea." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6040.yml b/html/changelogs/AutoChangeLog-bubber-pr-6040.yml deleted file mode 100644 index 85ee59a2098..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6040.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "xPokee" -delete-after: True -changes: - - bugfix: "Fixed the fried shrimp description." \ No newline at end of file diff --git a/html/changelogs/bubber_archive/2026-08.yml b/html/changelogs/bubber_archive/2026-08.yml index f294c659a1e..2abbde82585 100644 --- a/html/changelogs/bubber_archive/2026-08.yml +++ b/html/changelogs/bubber_archive/2026-08.yml @@ -19,3 +19,10 @@ - rscdel: Removed the hemphage specific quirks Masquerade, Sol Weakness, and Pseudo-Respiration. They are now toggles on the hemophage quirk. - refactor: 'Refactored the hemophage species into being a quirk: Hemophagia.' +2026-08-02: + Mintyphresh: + - rscadd: Added Protean Match tags to the loadout and RoboDrobe. Use them in hand + to search for Proteans to wear, or crew to be worn by. Or, just wear them on + their own to signal you're open to the idea. + xPokee: + - bugfix: Fixed the fried shrimp description. From 665a00d25dc8b88d99d1c5506e7147e7fed81a2f Mon Sep 17 00:00:00 2001 From: Odairu <39929315+Odairu@users.noreply.github.com> Date: Sun, 2 Aug 2026 18:51:48 -0400 Subject: [PATCH 059/139] I have been informed that ERP is default set to on, should I have realized this way sooner? Yes. Did I? No. (#6046) ERP was set to default enabled/ask looc, whoops ## About The Pull Request Sets the default ERP settings to OFF, and the default ERP status in character creator to NO. ## Why It's Good For The Game Sexy times are fun and all, and we are an 18+ server, however our friends that do not engage in sins should not have to opt out, instead the system should be opt in. ## Proof Of Testing image I'm ngl this is 100% a "Source:dude trust me" but I pawmise it works
Screenshots/Videos
## Changelog :cl: config: ERP is now an Opt-In system, rather than an opt-out /:cl: --- .../code/modules/client/preferences/erp_preferences.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_skyrat/master_files/code/modules/client/preferences/erp_preferences.dm b/modular_skyrat/master_files/code/modules/client/preferences/erp_preferences.dm index 04fa03e2032..7c5d57943b6 100644 --- a/modular_skyrat/master_files/code/modules/client/preferences/erp_preferences.dm +++ b/modular_skyrat/master_files/code/modules/client/preferences/erp_preferences.dm @@ -15,7 +15,7 @@ category = PREFERENCE_CATEGORY_GAME_PREFERENCES savefile_key = "master_erp_pref" savefile_identifier = PREFERENCE_PLAYER - default_value = TRUE + default_value = FALSE /datum/preference/toggle/master_erp_preferences/is_accessible(datum/preferences/preferences) if (!..(preferences)) @@ -158,7 +158,7 @@ ) /datum/preference/choiced/erp_status/create_default_value() - return "Ask (L)OOC" + return "No" /datum/preference/choiced/erp_status/is_accessible(datum/preferences/preferences) if (!..(preferences)) From 45658ac40fc475898d4faa474fa22f932eeded02 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 3 Aug 2026 00:52:12 +0200 Subject: [PATCH 060/139] Automatic changelog for PR #6046 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6046.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6046.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6046.yml b/html/changelogs/AutoChangeLog-bubber-pr-6046.yml new file mode 100644 index 00000000000..c0f53597617 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6046.yml @@ -0,0 +1,4 @@ +author: "Odairu" +delete-after: True +changes: + - config: "ERP is now an Opt-In system, rather than an opt-out" \ No newline at end of file From 5fcb461e39b5b7c408067f397fac0a77d85a4225 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 3 Aug 2026 02:48:22 +0000 Subject: [PATCH 061/139] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6046.yml | 4 ---- html/changelogs/bubber_archive/2026-08.yml | 3 +++ 2 files changed, 3 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6046.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6046.yml b/html/changelogs/AutoChangeLog-bubber-pr-6046.yml deleted file mode 100644 index c0f53597617..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6046.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Odairu" -delete-after: True -changes: - - config: "ERP is now an Opt-In system, rather than an opt-out" \ No newline at end of file diff --git a/html/changelogs/bubber_archive/2026-08.yml b/html/changelogs/bubber_archive/2026-08.yml index 2abbde82585..68beb4c470a 100644 --- a/html/changelogs/bubber_archive/2026-08.yml +++ b/html/changelogs/bubber_archive/2026-08.yml @@ -26,3 +26,6 @@ their own to signal you're open to the idea. xPokee: - bugfix: Fixed the fried shrimp description. +2026-08-03: + Odairu: + - config: ERP is now an Opt-In system, rather than an opt-out From 9957c31b9e9973ce1de8f01b5bd9b2376047cf4f Mon Sep 17 00:00:00 2001 From: Aeri <14065903+NanoCats@users.noreply.github.com> Date: Mon, 3 Aug 2026 14:41:50 -0400 Subject: [PATCH 062/139] Makes gun cases use their open icon state when appropriate. (#6041) ## About The Pull Request Gun cases have had an "open" sprite sitting in the icon file for years and they're basically vestigial, they only show when you use the case in hand, which, why the hell would you? Consequently, the sprite has been quietly gathering dust. Now the lid does what a lid ought to do. Open a case and it opens. Rummage away. Close it and it shuts again. You know, like a real case. Traditionally you need to open a box to look inside it. As a proactive step, I've rigged it so that it works out for itself whether a case has an open sprite to show. If it does, the case uses this state. If it does not, nothing changes for it at all, nothing changes for TG cases, but any that operate on the newer skyrat spec should work automatically. Any new cases added in the right way can hook this for free. ## Why It's Good For The Game Free polish. The art was already on the cutting room floor, it just needed somebody to plug it in. It also reads nicely at a glance: an open case means the container is being accessed. Artur asked me to do this also. ## Proof Of Testing https://github.com/user-attachments/assets/49cfb05c-7bd4-41d4-aaf5-efa4df85be38 ## Changelog :cl: Aeri fix: Gun cases now utilize their existing "open" sprites where appropriate. /:cl: --- .../modules/modular_weapons/code/gunsets.dm | 20 ------ .../items/storage/toolboxes/guncase_lid.dm | 68 +++++++++++++++++++ tgstation.dme | 1 + 3 files changed, 69 insertions(+), 20 deletions(-) create mode 100644 modular_zubbers/code/game/objects/items/storage/toolboxes/guncase_lid.dm diff --git a/modular_skyrat/modules/modular_weapons/code/gunsets.dm b/modular_skyrat/modules/modular_weapons/code/gunsets.dm index 82042ba7ce5..c5dc527cab7 100644 --- a/modular_skyrat/modules/modular_weapons/code/gunsets.dm +++ b/modular_skyrat/modules/modular_weapons/code/gunsets.dm @@ -15,31 +15,11 @@ material_flags = NONE - /// Is the case visually opened or not - var/opened = FALSE - /obj/item/storage/toolbox/guncase/skyrat/Initialize(mapload) . = ..() atom_storage.max_total_storage = 14 // Technically means you could fit multiple large guns in here but its a case you cant backpack anyways so what it do atom_storage.max_slots = 6 // We store some extra items in these so lets make a little extra room -/obj/item/storage/toolbox/guncase/skyrat/update_icon() - . = ..() - if(opened) - icon_state = "[initial(icon_state)]-open" - else - icon_state = initial(icon_state) - -/obj/item/storage/toolbox/guncase/skyrat/click_alt(mob/user) - opened = !opened - update_icon() - return CLICK_ACTION_SUCCESS - -/obj/item/storage/toolbox/guncase/skyrat/attack_self(mob/user) - . = ..() - opened = !opened - update_icon() - // Empty guncase /obj/item/storage/toolbox/guncase/skyrat/empty diff --git a/modular_zubbers/code/game/objects/items/storage/toolboxes/guncase_lid.dm b/modular_zubbers/code/game/objects/items/storage/toolboxes/guncase_lid.dm new file mode 100644 index 00000000000..375dc63b325 --- /dev/null +++ b/modular_zubbers/code/game/objects/items/storage/toolboxes/guncase_lid.dm @@ -0,0 +1,68 @@ +/* +* GUN CASE LIDS +* +* Any gun case whose icon has an "-open" frame shows it while somebody has the case open, +* and shuts again when the last person stops looking inside. +* A case with no open frame is left alone, so a new case joins in just by having the sprite. +*/ + +/obj/item/storage/toolbox/guncase + /// Are we showing the open lid right now + var/opened = FALSE + /// Does our icon have an open frame to swap to. Checked once on init. + var/has_open_sprite = FALSE + +/obj/item/storage/toolbox/guncase/Initialize(mapload) + . = ..() + has_open_sprite = ("[initial(icon_state)]-open" in icon_states(icon)) + +/obj/item/storage/toolbox/guncase/update_icon_state() + . = ..() + if(!has_open_sprite) + return + if(opened) + icon_state = "[initial(icon_state)]-open" + else + icon_state = initial(icon_state) + +// Called by our storage when the first person opens us and when the last one leaves. +// Returns TRUE if the lid actually moved, so our storage knows whether to make a noise about it. +/obj/item/storage/toolbox/guncase/proc/set_lid_open(new_lid_state) + if(!has_open_sprite || opened == new_lid_state) + return FALSE + opened = new_lid_state + update_appearance(UPDATE_ICON_STATE) + return TRUE + +/datum/storage/toolbox/guncase + /// How many mobs have us open right now. The lid only shuts when the last one leaves. + var/lid_viewers = 0 + /// Played when the lid drops shut behind the last person to look inside. + var/close_sound = 'sound/items/handling/toolbox/toolbox_drop.ogg' + var/close_sound_vary = TRUE + +/datum/storage/toolbox/guncase/show_contents(mob/to_show) + . = ..() + if(!. || isobserver(to_show)) + return + lid_viewers++ + set_lid(TRUE) + +/datum/storage/toolbox/guncase/hide_contents(mob/to_hide) + var/was_viewing = (to_hide.active_storage == src) && !isobserver(to_hide) + . = ..() + if(!was_viewing) + return + lid_viewers = max(lid_viewers - 1, 0) + if(lid_viewers) + return + // opening already has its own sound, so the lid only needs one on the way back down + if(set_lid(FALSE) && !silent) + playsound(parent, close_sound, 50, close_sound_vary, -5) + +// TRUE if the lid actually moved. +/datum/storage/toolbox/guncase/proc/set_lid(new_lid_state) + var/obj/item/storage/toolbox/guncase/case = parent + if(!istype(case)) + return FALSE + return case.set_lid_open(new_lid_state) diff --git a/tgstation.dme b/tgstation.dme index e258f28c245..875994c7c28 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -9386,6 +9386,7 @@ #include "modular_zubbers\code\game\objects\items\storage\fancy.dm" #include "modular_zubbers\code\game\objects\items\storage\garment.dm" #include "modular_zubbers\code\game\objects\items\storage\medkit.dm" +#include "modular_zubbers\code\game\objects\items\storage\toolboxes\guncase_lid.dm" #include "modular_zubbers\code\game\objects\items\tanks\tank_types.dm" #include "modular_zubbers\code\game\objects\items\tools\engineering\crowbar.dm" #include "modular_zubbers\code\game\objects\items\tools\engineering\weldingtool.dm" From e4fd081c2ef4437ead6e4888ceaea4c7d81b831d Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 3 Aug 2026 20:42:17 +0200 Subject: [PATCH 063/139] Automatic changelog for PR #6041 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6041.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6041.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6041.yml b/html/changelogs/AutoChangeLog-bubber-pr-6041.yml new file mode 100644 index 00000000000..46e886e8946 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6041.yml @@ -0,0 +1,4 @@ +author: "Aeri" +delete-after: True +changes: + - bugfix: "Gun cases now utilize their existing \"open\" sprites where appropriate." \ No newline at end of file From 202e73bff87ad50a34c932ca7905e607b8b6608b Mon Sep 17 00:00:00 2001 From: Aeri <14065903+NanoCats@users.noreply.github.com> Date: Mon, 3 Aug 2026 15:01:01 -0400 Subject: [PATCH 064/139] Fixes Teshari Sudden Death Syndrome (TSDS) (#6003) ## About The Pull Request Once upon a time I was doing some kink shit and all the sudden what was some innocent debauchery turned sour when I discovered that using the Polymorph NIFsoft on a Teshari would just kill them sometimes(???). No damage, no explanation, just a dead guy and everyone standing around confused. I went digging. It turns out there wasn't one bug, there were three, probably more given the nature of Polymorph being a mess and only one of them had anything to do with Teshari. **1. Missing organs were coming back broken enough to kill you.** When you transform, the game snapshots your injuries so you don't get a free Aheal out of it. Sensible. The snapshot works by asking each organ how hurt it is, and if the organ isn't there at all it records maximum damage instead, so you can't use the Self-Actualization Device as a free organ vending machine. Also sensible. Except it can't tell the difference between "someone cut this out of me" and "my species doesn't come with one of these." Proteans don't have lungs. So a protean turning into anything with lungs got a brand new set of lungs pre-installed at exactly the damage value that counts as failing. You'd finish the transformation, get told you can't breathe, and suffocate to death while wondering what you did wrong. Now the snapshot checks species, asks whether it was ever supposed to have that organ. If it wasn't, that's not an injury and we don't carry it over. If it genuinely was and the organ was genuinely gone, you still get a wrecked organ, just one that stops a hair short of outright failing, so you need a doctor instead of a coffin. No worries there. I almost wanted to make it display a warning when this happens, but this is just a simple bug fix I can't go all out every time. **2. Runtime errors everywhere.** The Unblinking quirk was turning blinking back **on** when it got removed, unconditionally. Trouble is, some eyes never had eyelids to begin with (Teshari, insects, serpentids), and the eyelids only get built when the eyes are created. So flipping the switch on afterwards left the blinking code reaching for eyelids that were never there. Every transformation involving one of those species vomited runtimes into the log. It now puts the setting back the way it found it. ## Why It's Good For The Game People were dying. Not "took some damage", not "bumps and bruises", just "NIF that lets you instantly kill Teshari", with no feedback explaining why, from a purely cosmetic feature that requires both parties to consent. That's about the worst possible outcome for a thing whose entire purpose is letting people play a different character for a while. I want to be upfront that this is a first pass. The Polymorph NIFsoft has more problems than this. There's a synth brain that doesn't get swapped back when you stop being a synth, which leaves an open-skull sprite hovering over your head. There's a quirk system warning that fires every single transformation. There's at least one case where I ended up with no head, which I intend to go back and look at later. But none of those kill anybody, and this stuff does, so it goes first. ## Testing Tested offline with the Body Morpher quirk, which grants the same ability and can target the caster, so I didn't need a testin partner. Hopped between a Teshari, a protean, a synth, and back again, in several orders. - Protean into Teshari now finishes with working lungs and no suffocation. - Teshari transformations no longer throw runtimes. - Deliberately removing an organ before transforming still leaves you with a badly damaged replacement, or it should. Nothing to take a picture of here, what do you want, a picture of a perfectly alive Teshari? ## Changelog :cl: fix: Shapeshifting no longer breaks organs that your old species simply never had, so proteans stop suffocating if Tfing into humans or similar fix: Cleaned up a pile of runtime errors thrown by shapeshifting. /:cl: --------- Co-authored-by: Waterpig <49160555+Maia-J@users.noreply.github.com> --- .../code/datums/components/damage_tracker.dm | 48 ++++++++++++++----- .../code/modules/client/preferences/brain.dm | 2 +- .../quirks/neutral_quirks/unblinking.dm | 2 +- 3 files changed, 39 insertions(+), 13 deletions(-) diff --git a/modular_skyrat/master_files/code/datums/components/damage_tracker.dm b/modular_skyrat/master_files/code/datums/components/damage_tracker.dm index f6574bcbbf2..97575fac94c 100644 --- a/modular_skyrat/master_files/code/datums/components/damage_tracker.dm +++ b/modular_skyrat/master_files/code/datums/components/damage_tracker.dm @@ -1,3 +1,8 @@ +/// The organ was absent because the species simply doesn't have one. +#define ORGAN_ABSENCE_SPECIES_NORMAL -1 +/// The organ should have been there and wasn't. +#define ORGAN_ABSENCE_INJURY -2 + /// This component tracks the original damage values of a mob when it is attached. /datum/component/damage_tracker /// How much brute damage did the mob have on them? @@ -111,13 +116,13 @@ if(!. || !istype(human_parent)) return FALSE - human_parent.set_organ_loss(ORGAN_SLOT_HEART, heart_damage) - human_parent.set_organ_loss(ORGAN_SLOT_LIVER, liver_damage) - human_parent.set_organ_loss(ORGAN_SLOT_LUNGS, lung_damage) - human_parent.set_organ_loss(ORGAN_SLOT_STOMACH, stomach_damage) - human_parent.set_organ_loss(ORGAN_SLOT_EYES, eye_damage) - human_parent.set_organ_loss(ORGAN_SLOT_EARS, ear_damage) - human_parent.set_organ_loss(ORGAN_SLOT_BRAIN, brain_damage) + human_parent.restore_tracked_organ_damage(ORGAN_SLOT_HEART, heart_damage) + human_parent.restore_tracked_organ_damage(ORGAN_SLOT_LIVER, liver_damage) + human_parent.restore_tracked_organ_damage(ORGAN_SLOT_LUNGS, lung_damage) + human_parent.restore_tracked_organ_damage(ORGAN_SLOT_STOMACH, stomach_damage) + human_parent.restore_tracked_organ_damage(ORGAN_SLOT_EYES, eye_damage) + human_parent.restore_tracked_organ_damage(ORGAN_SLOT_EARS, ear_damage) + human_parent.restore_tracked_organ_damage(ORGAN_SLOT_BRAIN, brain_damage) var/obj/item/organ/brain/human_brain = human_parent.get_organ_by_type(/obj/item/organ/brain) if(!human_brain) @@ -146,10 +151,31 @@ return ..() -/// Returns the damage of the `organ_to_check`, if the organ isn't there, the proc returns `100`. +/// Returns the damage of the `organ_to_check`, or a special value describing why the organ isn't there. /mob/living/carbon/human/proc/check_organ_damage(obj/item/organ/organ_to_check) var/obj/item/organ/organ_to_track = get_organ_by_type(organ_to_check) - if(!organ_to_track) - return 100 //If the organ is missing, return max damage. we have this here so that if the SAD replaces an organ, it's broken. + if(organ_to_track) + return organ_to_track.damage - return organ_to_track.damage + // a species that never grows this organ isn't hurt, it's just built that way, so there's no injury to carry across + if(isnull(dna?.species?.get_mutant_organ_type_for_slot(organ_to_check::slot))) + return ORGAN_ABSENCE_SPECIES_NORMAL + + return ORGAN_ABSENCE_INJURY + +/// Puts a tracked damage value back onto an organ +/mob/living/carbon/human/proc/restore_tracked_organ_damage(organ_slot, stored_damage) + if(stored_damage == ORGAN_ABSENCE_SPECIES_NORMAL) + return + + var/obj/item/organ/organ_to_damage = get_organ_slot(organ_slot) + if(!organ_to_damage) + return + + if(stored_damage == ORGAN_ABSENCE_INJURY) + stored_damage = max(organ_to_damage.maxHealth - 1, 0) + + set_organ_loss(organ_slot, stored_damage) + +#undef ORGAN_ABSENCE_INJURY +#undef ORGAN_ABSENCE_SPECIES_NORMAL diff --git a/modular_skyrat/master_files/code/modules/client/preferences/brain.dm b/modular_skyrat/master_files/code/modules/client/preferences/brain.dm index 6c490dd2b69..5d3b350483f 100644 --- a/modular_skyrat/master_files/code/modules/client/preferences/brain.dm +++ b/modular_skyrat/master_files/code/modules/client/preferences/brain.dm @@ -17,7 +17,7 @@ var/obj/item/organ/brain/new_brain = target.prefs_get_brain_to_use(value) var/obj/item/organ/brain/old_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) - if(!new_brain || new_brain == old_brain.type) + if(!new_brain || !old_brain || new_brain == old_brain.type) return var/datum/mind/keep_me_safe = target.mind diff --git a/modular_zubbers/code/datums/quirks/neutral_quirks/unblinking.dm b/modular_zubbers/code/datums/quirks/neutral_quirks/unblinking.dm index afd5a9e8c6e..4dbc551f4ab 100644 --- a/modular_zubbers/code/datums/quirks/neutral_quirks/unblinking.dm +++ b/modular_zubbers/code/datums/quirks/neutral_quirks/unblinking.dm @@ -28,5 +28,5 @@ if(!eyes) return - eyes.blink_animation = TRUE + eyes.blink_animation = initial(eyes.blink_animation) // some eyes never blinked to begin with quirk_holder.update_body() From b9ccc9a3d956965a6a5f5e579783734af33ea2af Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 3 Aug 2026 21:05:06 +0200 Subject: [PATCH 065/139] Automatic changelog for PR #6003 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6003.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6003.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6003.yml b/html/changelogs/AutoChangeLog-bubber-pr-6003.yml new file mode 100644 index 00000000000..0a0ea3a66dd --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6003.yml @@ -0,0 +1,5 @@ +author: "NanoCats" +delete-after: True +changes: + - bugfix: "Shapeshifting no longer breaks organs that your old species simply never had, so proteans stop suffocating if Tfing into humans or similar" + - bugfix: "Cleaned up a pile of runtime errors thrown by shapeshifting." \ No newline at end of file From 3234349f3b6e63a008359489485fc8f038da99d0 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Tue, 4 Aug 2026 02:32:06 +0000 Subject: [PATCH 066/139] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6003.yml | 5 ----- html/changelogs/AutoChangeLog-bubber-pr-6041.yml | 4 ---- html/changelogs/bubber_archive/2026-08.yml | 7 +++++++ 3 files changed, 7 insertions(+), 9 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6003.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6041.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6003.yml b/html/changelogs/AutoChangeLog-bubber-pr-6003.yml deleted file mode 100644 index 0a0ea3a66dd..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6003.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "NanoCats" -delete-after: True -changes: - - bugfix: "Shapeshifting no longer breaks organs that your old species simply never had, so proteans stop suffocating if Tfing into humans or similar" - - bugfix: "Cleaned up a pile of runtime errors thrown by shapeshifting." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6041.yml b/html/changelogs/AutoChangeLog-bubber-pr-6041.yml deleted file mode 100644 index 46e886e8946..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6041.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Aeri" -delete-after: True -changes: - - bugfix: "Gun cases now utilize their existing \"open\" sprites where appropriate." \ No newline at end of file diff --git a/html/changelogs/bubber_archive/2026-08.yml b/html/changelogs/bubber_archive/2026-08.yml index 68beb4c470a..ad917d6b8ad 100644 --- a/html/changelogs/bubber_archive/2026-08.yml +++ b/html/changelogs/bubber_archive/2026-08.yml @@ -29,3 +29,10 @@ 2026-08-03: Odairu: - config: ERP is now an Opt-In system, rather than an opt-out +2026-08-04: + Aeri: + - bugfix: Gun cases now utilize their existing "open" sprites where appropriate. + NanoCats: + - bugfix: Shapeshifting no longer breaks organs that your old species simply never + had, so proteans stop suffocating if Tfing into humans or similar + - bugfix: Cleaned up a pile of runtime errors thrown by shapeshifting. From 53e290f34cc2a28af5164925485eefedae3d6578 Mon Sep 17 00:00:00 2001 From: The Sharkenning <95130227+StrangeWeirdKitten@users.noreply.github.com> Date: Tue, 4 Aug 2026 04:43:14 -0600 Subject: [PATCH 067/139] Actually bumps protean slowdown movespeed to walking speed. These numbers change depending on the config. I'm just going to quickly fix it. Smiles. --- html/changelogs/AutoChangeLog-pr-direct-commit.yml | 4 ++++ .../customization/species/proteans/protean_status_effects.dm | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 html/changelogs/AutoChangeLog-pr-direct-commit.yml diff --git a/html/changelogs/AutoChangeLog-pr-direct-commit.yml b/html/changelogs/AutoChangeLog-pr-direct-commit.yml new file mode 100644 index 00000000000..9e91bc87eed --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-direct-commit.yml @@ -0,0 +1,4 @@ +author: "StrangeWeirdKitten" +delete-after: True +changes: + - balance: "Actually bumps Protean lowpower movespeed multiplier to 2, instead of 3. This is why I should run the game on the same configs." diff --git a/modular_zubbers/code/modules/customization/species/proteans/protean_status_effects.dm b/modular_zubbers/code/modules/customization/species/proteans/protean_status_effects.dm index 8d6ae64dca7..b9f6e1f4b21 100644 --- a/modular_zubbers/code/modules/customization/species/proteans/protean_status_effects.dm +++ b/modular_zubbers/code/modules/customization/species/proteans/protean_status_effects.dm @@ -19,7 +19,7 @@ owner.remove_movespeed_modifier(/datum/movespeed_modifier/protean_slowdown_low_power) /datum/movespeed_modifier/protean_slowdown_low_power - multiplicative_slowdown = 3 + multiplicative_slowdown = 2 /datum/status_effect/protean_low_power_mode/reform duration = 7 SECONDS From 3296eaf638faa9282c3332f28d286253401c4eb7 Mon Sep 17 00:00:00 2001 From: The Sharkenning <95130227+StrangeWeirdKitten@users.noreply.github.com> Date: Tue, 4 Aug 2026 04:53:51 -0600 Subject: [PATCH 068/139] removes this old compile changelog that has existed for 4 months. --- html/changelogs/AutoChangeLog-pr-95478.yml | 4 ---- html/changelogs/AutoChangeLog-pr-direct-commit.yml | 4 ---- html/changelogs/bubber_archive/2026-08.yml | 2 ++ 3 files changed, 2 insertions(+), 8 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-95478.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-direct-commit.yml diff --git a/html/changelogs/AutoChangeLog-pr-95478.yml b/html/changelogs/AutoChangeLog-pr-95478.yml deleted file mode 100644 index 3917dc013dc..00000000000 --- a/html/changelogs/AutoChangeLog-pr-95478.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ArcaneMusic" -delete-after: True -changes: - - bugfix: "Cargo goodies are now visible in the ordering and request consoles." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-direct-commit.yml b/html/changelogs/AutoChangeLog-pr-direct-commit.yml deleted file mode 100644 index 9e91bc87eed..00000000000 --- a/html/changelogs/AutoChangeLog-pr-direct-commit.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "StrangeWeirdKitten" -delete-after: True -changes: - - balance: "Actually bumps Protean lowpower movespeed multiplier to 2, instead of 3. This is why I should run the game on the same configs." diff --git a/html/changelogs/bubber_archive/2026-08.yml b/html/changelogs/bubber_archive/2026-08.yml index ad917d6b8ad..dd02ff7b5f2 100644 --- a/html/changelogs/bubber_archive/2026-08.yml +++ b/html/changelogs/bubber_archive/2026-08.yml @@ -36,3 +36,5 @@ - bugfix: Shapeshifting no longer breaks organs that your old species simply never had, so proteans stop suffocating if Tfing into humans or similar - bugfix: Cleaned up a pile of runtime errors thrown by shapeshifting. + StrangeWeirdKitten: + - balance: Actually bumps Protean movespeed multipler from 3 to 2. That is actually more walking speed. From 60f000ff84fc4b11bded1a020329cfbbc31703e8 Mon Sep 17 00:00:00 2001 From: Waterpig <49160555+Maia-J@users.noreply.github.com> Date: Tue, 4 Aug 2026 12:56:03 +0200 Subject: [PATCH 069/139] Gibbing a synth no longer fucks up their brain (#6052) ## About The Pull Request Reported by LYDIA Being gibbed or in other ways special organ handled might mean your brain is in nullspace. This would make all the following brain/Remove() handling fuckup and make you deaf and mute. Also seemingly fixes the weird humanification of synthbrains upon being reinserted. ## Why It's Good For The Game Bugfix good ## Proof Of Testing
Screenshots/Videos image
## Changelog :cl: fix: Getting gibbed as synth no longer fucks up your brain in ways that make maintainers cry from nightmares at 3 AM /:cl: Co-authored-by: Maia --- modular_skyrat/modules/synths/code/bodyparts/brain.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_skyrat/modules/synths/code/bodyparts/brain.dm b/modular_skyrat/modules/synths/code/bodyparts/brain.dm index 34b37c8d508..a93ce70395c 100644 --- a/modular_skyrat/modules/synths/code/bodyparts/brain.dm +++ b/modular_skyrat/modules/synths/code/bodyparts/brain.dm @@ -32,7 +32,7 @@ /obj/item/organ/brain/synth/Remove(mob/living/carbon/organ_owner, special = FALSE, movement_flags) . = ..() - if(!istype(stored_mmi) || special) + if(!istype(stored_mmi) || special || loc == null) return stored_mmi.brain = src organ_flags |= ORGAN_FROZEN From 95ac0a6d3ac7bf70d914cf0813d224e52f57e5b1 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Tue, 4 Aug 2026 12:56:41 +0200 Subject: [PATCH 070/139] Automatic changelog for PR #6052 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6052.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6052.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6052.yml b/html/changelogs/AutoChangeLog-bubber-pr-6052.yml new file mode 100644 index 00000000000..1a8028ba9ae --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6052.yml @@ -0,0 +1,4 @@ +author: "Maia-J" +delete-after: True +changes: + - bugfix: "Getting gibbed as synth no longer fucks up your brain in ways that make maintainers cry from nightmares at 3 AM" \ No newline at end of file From e464bea5ad1631821ebc8c6daf9596dc5a68c6aa Mon Sep 17 00:00:00 2001 From: Techbot121 Date: Tue, 4 Aug 2026 12:57:05 +0200 Subject: [PATCH 071/139] Fix interaction sounds not working (#6053) ## About The Pull Request the arguments for `SEND_SOUND` were switched, so even if a sound for an interaction was set it would not work. I have also changed it to use playsound instead (similarly to the existing sound emotes see [code/datums/emotes.dm:141](https://github.com/Bubberstation/Bubberstation/blob/master/code/datums/emotes.dm#L141)) that way it doesn't play at the default full volume (ouch) and would sound as you expect it. Only downside to this is that this would be audible to ghosts as well. I can just revert that change and just leave it at `SEND_SOUND(mob, sound(sound_cache, volume = 50))` if necessary. while writing this pr I was thinking, maybe I could've also set vary to true so the pitch changes as well, but I've not tested that yet and maybe it actually sounds horrible. ## Why It's Good For The Game If sounds are added to interactions, they would actually work. ## Proof Of Testing
Screenshots/Videos https://github.com/user-attachments/assets/2cc8fe04-b6b5-4f21-8cc3-bac1cf6309e0
## Changelog :cl: fix: fixed interaction sounds not working (if there was one) /:cl: --- .../modules/interaction_menu/code/interaction_datum.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modular_skyrat/modules/interaction_menu/code/interaction_datum.dm b/modular_skyrat/modules/interaction_menu/code/interaction_datum.dm index 0e6436bbba6..8721219599a 100644 --- a/modular_skyrat/modules/interaction_menu/code/interaction_datum.dm +++ b/modular_skyrat/modules/interaction_menu/code/interaction_datum.dm @@ -121,8 +121,9 @@ GLOBAL_LIST_EMPTY_TYPED(interaction_instances, /datum/interaction) message_admins("Deprecated sound handling for '[name]'. Correct format is a list with one entry. This message will only show once.") sound_possible = list(sound_possible) sound_cache = pick(sound_possible) - for(var/mob/mob in view(sound_range, user)) - SEND_SOUND(sound_cache, mob) + // playsound()'s range is always SOUND_RANGE (15) + extrarange, so we offset by -SOUND_RANGE to make + // extrarange effectively equal to the JSON-defined sound_range instead of stacking on top of it. + playsound(source = user, soundin = sound_cache, vol = 50, vary = FALSE, extrarange = sound_range - SOUND_RANGE, ignore_walls = FALSE, volume_preference = /datum/preference/numeric/volume/sound_emote) if(lewd) user.adjust_pleasure(user_pleasure) From f6cae3a8202b30cd51f15a7b13bd3ff6ae464512 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Tue, 4 Aug 2026 12:57:37 +0200 Subject: [PATCH 072/139] Automatic changelog for PR #6053 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6053.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6053.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6053.yml b/html/changelogs/AutoChangeLog-bubber-pr-6053.yml new file mode 100644 index 00000000000..a03e7b599af --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6053.yml @@ -0,0 +1,4 @@ +author: "Techbot121" +delete-after: True +changes: + - bugfix: "fixed interaction sounds not working (if there was one)" \ No newline at end of file From 3a5f58bb897e17442e859575bf9d31334845309e Mon Sep 17 00:00:00 2001 From: KateAnbolho <141269115+KateAnbolho@users.noreply.github.com> Date: Tue, 4 Aug 2026 05:50:31 -0700 Subject: [PATCH 073/139] Re-Adds the Hoshi's Self-Charge in an Incredibly Nanotrasen Way (#5941) ## About The Pull Request This PR brings back the hoshi's self-charge but at the same time that sec typically gets their egun kit for balance concerns. (it literally uses the aeg kit) ## Why It's Good For The Game While I personally disagreed with the removal overall, there's not much of a reason to not provide a method to re-acquire said charging method. ## Proof Of Testing Very much worked on my machine ## Changelog :cl: add: Re-adds the Hoshi's self-charging method in an incredibly scuffed (for you) method. /:cl: --- .../saibasan/laser_guns.dm | 11 +++++++++++ .../code/datums/components/crafting/ranged_weapon.dm | 8 ++++++++ 2 files changed, 19 insertions(+) diff --git a/modular_skyrat/modules/modular_weapons/code/company_and_or_faction_based/saibasan/laser_guns.dm b/modular_skyrat/modules/modular_weapons/code/company_and_or_faction_based/saibasan/laser_guns.dm index a89652482d2..d4039aa30d2 100644 --- a/modular_skyrat/modules/modular_weapons/code/company_and_or_faction_based/saibasan/laser_guns.dm +++ b/modular_skyrat/modules/modular_weapons/code/company_and_or_faction_based/saibasan/laser_guns.dm @@ -290,6 +290,17 @@ . = ..() speak_up("emp", TRUE) // She gets very upset if you emp her +/obj/item/gun/energy/modular_laser_rifle/carbine/recharging + selfcharge = 1 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6, /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT) + expanded_examine_text = "The Hoshi carbine is the latest line of man-portable Martian weapons platforms from \ + Cybersun Industries. Like her older sister weapon, the Hyeseong rifle, CI used funding aid provided by TerraGov \ + to develop a portable weapon using the same modular weapon system as the Hyeseong, but unforunately lacking the plasma generator, but replaced with \ + parts that make up the 'advanced' in an advanced energy gun. A lithe and mobile weapon, the Hoshi stars in close-quarters battle, trickshots, and area-of-effect blasts; though \ + ineffective at ranged combat. Her onboard machine intelligence, at first devised to support the operator and \ + manage the internal reactor, was originally shipped with a more energetic personality-- since influenced by 'negligence' \ + from users in wiping the intelligence's memory before resale or transport." + #undef LONG_MOD_LASER_SPEECH #undef SHORT_MOD_LASER_SPEECH #undef MOD_LASER_SPEECH_COOLDOWN diff --git a/modular_zubbers/code/datums/components/crafting/ranged_weapon.dm b/modular_zubbers/code/datums/components/crafting/ranged_weapon.dm index 63067a04725..5740b9d026a 100644 --- a/modular_zubbers/code/datums/components/crafting/ranged_weapon.dm +++ b/modular_zubbers/code/datums/components/crafting/ranged_weapon.dm @@ -23,6 +23,14 @@ /obj/item/food/donkpocket = 1, ) +/datum/crafting_recipe/real_hoshi + result = /obj/item/gun/energy/modular_laser_rifle/carbine/recharging + reqs = list( + /obj/item/weaponcrafting/gunkit/nuclear = 1, + /obj/item/gun/energy/modular_laser_rifle/carbine = 1, + ) + time = 10 SECONDS + /datum/crafting_recipe/wt550_burst name = "WT-550-B Autoburstrifle" result = /obj/item/gun/ballistic/automatic/wt550/burst From 7f3cc89b3e122642dbf4513fbef871ea540dcbf2 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Tue, 4 Aug 2026 14:51:03 +0200 Subject: [PATCH 074/139] Automatic changelog for PR #5941 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5941.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5941.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5941.yml b/html/changelogs/AutoChangeLog-bubber-pr-5941.yml new file mode 100644 index 00000000000..ff9307fc30b --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-5941.yml @@ -0,0 +1,4 @@ +author: "KateAnbolho" +delete-after: True +changes: + - rscadd: "Re-adds the Hoshi's self-charging method in an incredibly scuffed (for you) method." \ No newline at end of file From a6bd794604a7bed7d04d686299dbbf206e09b8af Mon Sep 17 00:00:00 2001 From: Waterpig <49160555+Maia-J@users.noreply.github.com> Date: Tue, 4 Aug 2026 15:46:56 +0200 Subject: [PATCH 075/139] Fixes the synthbrain transfer on special (#6051) ## About The Pull Request I love sitting down for a 30 minute bugfix, waiter, waiter, more issues please closes #5953 The NO_ID_TRANSFER flag was not being respected by the silly MMI code, meaning your brainmob was set and deleted, kicking you out of your body. Should also fix the ambience null runtime error, as that was caused by the same thing (special removed brains are in nullspace -> NO_ID brains shouldn't have a brainmob -> NO_ID special removed brains are QDEL'd in /datum/species/proc/regenerate_organs -> deleting one with an MMI brainmob that shouldn't be there kills the brainmob first -> killing the brainmob checks the loc for soundbased things, including ambience -> loc is null, runtime) ## Why It's Good For The Game Bugfix good ## Proof Of Testing [Screencast_20260803_161536.webm](https://github.com/user-attachments/assets/16f86ebd-0e05-4998-90d2-699d2d025e86) ## Changelog :cl: fix: Changing back to organic from synth no longer kicks you out of your body /:cl: Co-authored-by: Maia --- modular_skyrat/modules/synths/code/bodyparts/brain.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modular_skyrat/modules/synths/code/bodyparts/brain.dm b/modular_skyrat/modules/synths/code/bodyparts/brain.dm index a93ce70395c..a40dbb58802 100644 --- a/modular_skyrat/modules/synths/code/bodyparts/brain.dm +++ b/modular_skyrat/modules/synths/code/bodyparts/brain.dm @@ -54,6 +54,7 @@ . = ..() if(stored_mmi?.brainmob?.mind && stored_mmi.brainmob.mind.current == stored_mmi.brainmob) stored_mmi.brainmob.mind.transfer_to(brain_owner) + QDEL_NULL(stored_mmi.brainmob) if(brain_owner.stat == DEAD && ishuman(brain_owner)) var/mob/living/carbon/human/user_human = brain_owner @@ -65,7 +66,8 @@ /obj/item/organ/brain/synth/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() - cache_brainmob_into_stored_mmi(organ_owner) + if(!(movement_flags & NO_ID_TRANSFER)) + cache_brainmob_into_stored_mmi(organ_owner) UnregisterSignal(organ_owner, COMSIG_MOB_EQUIPPED_ITEM) UnregisterSignal(organ_owner, COMSIG_HUMAN_UNEQUIPPED_ITEM) From 8be723e43c5db4248891f2157a8798b3f6d3fd07 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Tue, 4 Aug 2026 15:47:25 +0200 Subject: [PATCH 076/139] Automatic changelog for PR #6051 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6051.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6051.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6051.yml b/html/changelogs/AutoChangeLog-bubber-pr-6051.yml new file mode 100644 index 00000000000..8241a1a02f2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6051.yml @@ -0,0 +1,4 @@ +author: "Maia-J" +delete-after: True +changes: + - bugfix: "Changing back to organic from synth no longer kicks you out of your body" \ No newline at end of file From c5a8e04a7e8c00b15c709e874e49d6eb521ea632 Mon Sep 17 00:00:00 2001 From: Alexis Date: Tue, 4 Aug 2026 12:00:41 -0400 Subject: [PATCH 077/139] The Great dna.features["body_size"] Killing (#6042) ## About The Pull Request Kills every instance of the body_size feature and changes everything to use current_size, RESIZE_DEFAULT_SIZE, and update_transform. Also cleans up oversized code big time. The only player-facing change from this is that the oversized specific organs are now gone. ## Why It's Good For The Game The oversized code was a mess and having snowflakey features when the proc and such already exists caused me pain. ## Proof Of Testing See below.
Screenshots/Videos https://github.com/user-attachments/assets/017fb9e3-aef9-48ce-a64e-b24a99ae49eb https://github.com/user-attachments/assets/4cdaa48c-0237-4447-a943-cabb222be25b https://github.com/user-attachments/assets/3bab0b0c-5098-4d51-b77e-994e21bcf87e
## Changelog :cl: del: Removed the oversized specific organs. /:cl: --- code/__DEFINES/~~bubber_defines/DNA.dm | 5 -- code/datums/dna/dna.dm | 3 - code/datums/mutations/body.dm | 8 +-- code/modules/client/preferences.dm | 2 +- code/modules/client/preferences/species.dm | 2 - .../master_files/code/game/atoms.dm | 5 +- .../modules/client/preferences/body_size.dm | 8 +-- .../code/additionalemotes/turf_emote.dm | 2 +- .../lewd_items/code/lewd_items/size_items.dm | 8 +-- .../code/gun_launches_little_guys_element.dm | 2 +- modular_skyrat/modules/organs/code/stomach.dm | 15 ----- modular_zubbers/code/datums/dna/dna.dm | 16 +---- .../datums/quirks/negative_quirks/micro.dm | 4 +- .../oversized/oversized_quirk.dm | 60 +++++++------------ .../code/modules/clothing/clothing.dm | 7 +-- .../carbon/human/species_types/slimepeople.dm | 14 +++-- .../modules/taur_mechanics/constrict.dm | 2 +- .../modules/taur_mechanics/taur_body.dm | 2 +- tgstation.dme | 1 - 19 files changed, 50 insertions(+), 116 deletions(-) delete mode 100644 modular_skyrat/modules/organs/code/stomach.dm diff --git a/code/__DEFINES/~~bubber_defines/DNA.dm b/code/__DEFINES/~~bubber_defines/DNA.dm index 437935a1feb..01a68991026 100644 --- a/code/__DEFINES/~~bubber_defines/DNA.dm +++ b/code/__DEFINES/~~bubber_defines/DNA.dm @@ -65,10 +65,6 @@ #define MAXIMUM_MARKINGS_PER_LIMB 3 -#define BODY_SIZE_NORMAL 1.00 -#define BODY_SIZE_MAX 1.5 -#define BODY_SIZE_MIN 0.8 - //In inches #define PENIS_MIN_GIRTH PENIS_MIN_LENGTH #define PENIS_MAX_GIRTH 40 @@ -105,7 +101,6 @@ "penis_taur_mode" = TRUE,\ "penis_sheath" = SHEATH_NONE,\ "balls_size" = 1,\ - "body_size" = BODY_SIZE_NORMAL,\ "custom_species" = "",\ "penis_uses_skintones" = TRUE,\ "penis_uses_skincolor" = TRUE,\ diff --git a/code/datums/dna/dna.dm b/code/datums/dna/dna.dm index adffef7a8d2..fa217b2aa6a 100644 --- a/code/datums/dna/dna.dm +++ b/code/datums/dna/dna.dm @@ -92,7 +92,6 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block()) //BUBBER EDIT ADDITION BEGIN - CUSTOMIZATION new_dna.mutant_bodyparts = LAZYCOPY(mutant_bodyparts) new_dna.body_markings = body_markings.Copy() - new_dna.update_body_size() //BUBBER EDIT ADDITION END new_dna.temporary_mutations = LAZYLISTDUPLICATE(temporary_mutations) new_dna.mutation_index = mutation_index @@ -443,8 +442,6 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block()) apply_customizable_dna_features_to_species() dna.unique_features = dna.generate_unique_features() - - dna.update_body_size() // BUBBER EDIT ADDITION END dna.species.on_species_gain(src, old_species, pref_load, icon_update, replace_missing) log_mob_tag("TAG: [tag] SPECIES: [key_name(src)] \[[mrace]\]") diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm index f587e85dd60..2cbb0e8070c 100644 --- a/code/datums/mutations/body.dm +++ b/code/datums/mutations/body.dm @@ -127,7 +127,7 @@ if(!.) return // SKYRAT EDIT BEGIN - if(owner.dna.features["body_size"] < 1 || isteshari(owner)) + if(owner.current_size < 1 || isteshari(owner)) to_chat(owner, "You feel your body try to shrink, but your organs don't! Uh oh!") owner.adjust_brute_loss(25) return @@ -139,7 +139,7 @@ if(..()) return // SKYRAT EDIT BEGIN - if(owner.dna.features["body_size"] < 1 || isteshari(owner)) + if(owner.current_size < 1 || isteshari(owner)) to_chat(owner, "You feel relief as your organs cease to strain against your insides.") REMOVE_TRAIT(owner, TRAIT_DWARF, GENETIC_MUTATION) return @@ -198,7 +198,7 @@ if(!.) return // SKYRAT EDIT BEGIN - if(owner.dna.features["body_size"] > 1) + if(owner.current_size > 1) to_chat(owner, "You feel your body expanding even further, but it feels like your bones are expanding too much!") owner.adjust_brute_loss(25) // take some DAMAGE return @@ -211,7 +211,7 @@ if(..()) return // SKYRAT EDIT BEGIN - if(owner.dna.features["body_size"] > 1) + if(owner.current_size > 1) to_chat(owner, "You feel relief as your bones cease their growth spurt.") return // SKYRAT EDIT END diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index fec578eed1d..31c76ef3d3c 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -500,7 +500,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) // Being a taur, or over 1.1 scales it up if (body.dna.mutant_bodyparts[FEATURE_TAUR] && body.dna.mutant_bodyparts[FEATURE_TAUR][MUTANT_INDEX_NAME] != "None") canvas_size = 1 - else if (!isnull(body.dna.features["body_size"]) && body.dna.features["body_size"] > 1.1) + else if (!isnull(body.current_size) && body.current_size > 1.1) canvas_size = 1 // Add extra level if we're oversized if (preferences.all_quirks.Find("Oversized")) diff --git a/code/modules/client/preferences/species.dm b/code/modules/client/preferences/species.dm index 4bf5c7aabc0..a008c5cd8ce 100644 --- a/code/modules/client/preferences/species.dm +++ b/code/modules/client/preferences/species.dm @@ -35,8 +35,6 @@ target.set_species(value, icon_update = FALSE, pref_load = FALSE, override_features = prefs?.features.Copy(), override_mutantparts = prefs?.mutant_bodyparts.Copy(), override_markings = prefs?.body_markings.Copy()) // SKYRAT EDIT - Customization //SKYRAT EDIT ADDITION - target.dna.update_body_size() - for(var/organ_key in list(ORGAN_SLOT_VAGINA, ORGAN_SLOT_PENIS, ORGAN_SLOT_BREASTS, ORGAN_SLOT_ANUS)) var/obj/item/organ/genital/gent = target.get_organ_slot(organ_key) if(gent) diff --git a/modular_skyrat/master_files/code/game/atoms.dm b/modular_skyrat/master_files/code/game/atoms.dm index 0c7510d5b89..67c2a5fb841 100644 --- a/modular_skyrat/master_files/code/game/atoms.dm +++ b/modular_skyrat/master_files/code/game/atoms.dm @@ -1,4 +1,4 @@ -// Stop All Animations nulls the mob's transform, so we have to call update_body_size to ensure that it gets scaled properly again +// Stop All Animations nulls the mob's transform. /atom/vv_do_topic(list/href_list) . = ..() if(href_list[VV_HK_STOP_ALL_ANIMATIONS] && check_rights(R_VAREDIT)) @@ -6,9 +6,6 @@ if(!istype(human_mob)) return - human_mob.dna.current_body_size = BODY_SIZE_NORMAL // because if we don't set this, update_body_size will think that it has no work to do. - human_mob.dna.update_body_size() - /// Called after a loadout item gets custom named /atom/proc/on_loadout_custom_named() return diff --git a/modular_skyrat/master_files/code/modules/client/preferences/body_size.dm b/modular_skyrat/master_files/code/modules/client/preferences/body_size.dm index afb8364f20c..c70e63dbb30 100644 --- a/modular_skyrat/master_files/code/modules/client/preferences/body_size.dm +++ b/modular_skyrat/master_files/code/modules/client/preferences/body_size.dm @@ -2,8 +2,8 @@ category = PREFERENCE_CATEGORY_SECONDARY_FEATURES savefile_identifier = PREFERENCE_CHARACTER savefile_key = "body_size" - minimum = BODY_SIZE_MIN - maximum = BODY_SIZE_MAX + minimum = RESIZE_DEFAULT_SIZE * 0.8 + maximum = RESIZE_DEFAULT_SIZE * 1.5 step = 0.01 /datum/preference/numeric/body_size/is_accessible(datum/preferences/preferences) @@ -11,7 +11,7 @@ return passed_initial_check /datum/preference/numeric/body_size/apply_to_human(mob/living/carbon/human/target, value) - target.dna.features["body_size"] = value + target.update_transform(value) /datum/preference/numeric/body_size/create_default_value() - return BODY_SIZE_NORMAL + return RESIZE_DEFAULT_SIZE diff --git a/modular_skyrat/modules/emotes/code/additionalemotes/turf_emote.dm b/modular_skyrat/modules/emotes/code/additionalemotes/turf_emote.dm index 5d74a64471c..f032267be35 100644 --- a/modular_skyrat/modules/emotes/code/additionalemotes/turf_emote.dm +++ b/modular_skyrat/modules/emotes/code/additionalemotes/turf_emote.dm @@ -147,7 +147,7 @@ //scaling var/atom/movable/owned_turf = user.owned_turf - var/change_multiplier = human_user.dna.features["body_size"] / BODY_SIZE_NORMAL + var/change_multiplier = human_user.current_size / RESIZE_DEFAULT_SIZE var/translate = ((change_multiplier-1) * 32)/2 owned_turf.transform = owned_turf.transform.Scale(change_multiplier) owned_turf.transform = owned_turf.transform.Translate(0, translate) diff --git a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_items/size_items.dm b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_items/size_items.dm index 3c6216d98ee..07a5d570838 100644 --- a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_items/size_items.dm +++ b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_items/size_items.dm @@ -83,7 +83,7 @@ return COMPONENT_INCOMPATIBLE var/mob/living/carbon/human/human_parent = parent - original_size = human_parent?.dna.features["body_size"] + original_size = human_parent.mob_size if(!original_size) //If we aren't able to get the original size, we shouldn't exist. return COMPONENT_INCOMPATIBLE @@ -106,15 +106,13 @@ /// Adjusts the sprite size of the parent mob based off `size_to_apply`. /datum/component/temporary_size/proc/apply_size(size_to_apply) var/mob/living/carbon/human/human_parent = parent - if(!human_parent || !size_to_apply || (human_parent.dna.features["body_size"] == size_to_apply)) + if(!human_parent || !size_to_apply || (human_parent.current_size == size_to_apply)) return FALSE if(isteshari(human_parent) || isvoxprimalis(human_parent)) // We check if the human_parent is a Vox Primalis or Teshari & temporarily disable the bodysize restriction human_parent.dna.species.body_size_restricted = FALSE - human_parent.dna.features["body_size"] = size_to_apply - human_parent.maptext_height = 32 * human_parent.dna.features["body_size"] - human_parent.dna.update_body_size() + human_parent.update_transform(size_to_apply) return TRUE /datum/component/temporary_size/Destroy(force, silent) diff --git a/modular_skyrat/modules/modular_weapons/code/gun_launches_little_guys_element.dm b/modular_skyrat/modules/modular_weapons/code/gun_launches_little_guys_element.dm index b049ed04e15..23b0e694969 100644 --- a/modular_skyrat/modules/modular_weapons/code/gun_launches_little_guys_element.dm +++ b/modular_skyrat/modules/modular_weapons/code/gun_launches_little_guys_element.dm @@ -40,7 +40,7 @@ /datum/element/gun_launches_little_guys/proc/throw_it_back(obj/item/gun/weapon, mob/living/carbon/user, atom/target, params, zone_override) SIGNAL_HANDLER - if(!isteshari(user) && !isdwarf(user) && !HAS_TRAIT(user, TRAIT_DWARF) && !(user.dna.features["body_size"] <= 0.9)) + if(!isteshari(user) && !isdwarf(user) && !HAS_TRAIT(user, TRAIT_DWARF) && !(user.current_size <= 0.9)) return var/fling_direction = REVERSE_DIR(user.dir) diff --git a/modular_skyrat/modules/organs/code/stomach.dm b/modular_skyrat/modules/organs/code/stomach.dm deleted file mode 100644 index f282222090a..00000000000 --- a/modular_skyrat/modules/organs/code/stomach.dm +++ /dev/null @@ -1,15 +0,0 @@ -/obj/item/organ/stomach/oversized - name = "huge guts" - desc = "Typically found in huge creatures, this monstrous engine has developed to be highly efficient, made to get an enormous amount of nutrients to an enormous eater." - icon = 'modular_skyrat/modules/organs/icons/stomach.dmi' - icon_state = "stomach_big" - maxHealth = 1.5 * STANDARD_ORGAN_THRESHOLD - metabolism_efficiency = 0.07 - -/obj/item/organ/stomach/synth/oversized - name = "huge synthetic bio-reactor" - desc = "Typically found in huge synthetics, this monstrous engine has been developed to be highly efficient, made to provide an enormous amount of power to an enormous machine." - icon = 'modular_skyrat/modules/organs/icons/stomach.dmi' - icon_state = "stomach_big_synth" //ugly placeholder sorry im not an artist hehe - maxHealth = 1.5 * STANDARD_ORGAN_THRESHOLD - metabolism_efficiency = 0.07 diff --git a/modular_zubbers/code/datums/dna/dna.dm b/modular_zubbers/code/datums/dna/dna.dm index 7c336fcccc7..0152b419fd0 100644 --- a/modular_zubbers/code/datums/dna/dna.dm +++ b/modular_zubbers/code/datums/dna/dna.dm @@ -4,21 +4,7 @@ ///Body markings of the DNA's owner. This is for storing their original state for re-creating the character. They'll get changed on species mutation var/list/list/body_markings = list() ///Current body size, used for proper re-sizing and keeping track of that - var/current_body_size = BODY_SIZE_NORMAL - -/datum/dna/proc/update_body_size() - if(!holder || species.body_size_restricted || current_body_size == features["body_size"]) - return - var/change_multiplier = features["body_size"] / current_body_size - //We update the translation to make sure our character doesn't go out of the southern bounds of the tile - var/translate = ((change_multiplier-1) * 32)/2 - holder.transform = holder.transform.Scale(change_multiplier) - // Splits the updated translation into X and Y based on the user's rotation. - var/translate_x = translate * ( holder.transform.b / features["body_size"] ) - var/translate_y = translate * ( holder.transform.e / features["body_size"] ) - holder.transform = holder.transform.Translate(translate_x, translate_y) - holder.maptext_height = 32 * features["body_size"] // Adjust runechat height - current_body_size = features["body_size"] + var/current_body_size = RESIZE_DEFAULT_SIZE /mob/living/carbon/proc/apply_customizable_dna_features_to_species() if(!has_dna()) diff --git a/modular_zubbers/code/datums/quirks/negative_quirks/micro.dm b/modular_zubbers/code/datums/quirks/negative_quirks/micro.dm index ace0760a3a9..6174f6b02a9 100644 --- a/modular_zubbers/code/datums/quirks/negative_quirks/micro.dm +++ b/modular_zubbers/code/datums/quirks/negative_quirks/micro.dm @@ -36,9 +36,7 @@ /datum/quirk/micro/post_add() var/mob/living/carbon/living_as_carbon = quirk_holder - living_as_carbon.dna.features["body_size"] = size_reduced - living_as_carbon.maptext_height = 32 * living_as_carbon.dna.features["body_size"] - living_as_carbon.dna.update_body_size() + living_as_carbon.update_transform(size_reduced) living_as_carbon.AddComponent( \ /datum/component/squashable, \ squash_chance = squash_chance_, \ diff --git a/modular_zubbers/code/datums/quirks/neutral_quirks/oversized/oversized_quirk.dm b/modular_zubbers/code/datums/quirks/neutral_quirks/oversized/oversized_quirk.dm index 68a44b3aa20..93716fa2555 100644 --- a/modular_zubbers/code/datums/quirks/neutral_quirks/oversized/oversized_quirk.dm +++ b/modular_zubbers/code/datums/quirks/neutral_quirks/oversized/oversized_quirk.dm @@ -1,8 +1,7 @@ #define OVERSIZED_SPEED_SLOWDOWN 0.25 +/// 50% hungrier #define OVERSIZED_HUNGER_MOD 1.5 -// Before making any changes to oversized, please see the module's readme.md file - /datum/quirk/oversized name = "Oversized" desc = "You, for whatever reason, are FAR too tall, and will encounter some rough situations because of it." @@ -18,9 +17,7 @@ /datum/quirk/oversized/add(client/client_source) var/mob/living/carbon/human/human_holder = quirk_holder - human_holder.dna.features["body_size"] = 2 - human_holder.maptext_height = 32 * human_holder.dna.features["body_size"] //Adjust runechat height - human_holder.dna.update_body_size() + human_holder.update_transform(2 * RESIZE_DEFAULT_SIZE) human_holder.maxHealth = HUMAN_MAXHEALTH * OVERSIZED_HEALTH_BUFF human_holder.health += ((HUMAN_MAXHEALTH * OVERSIZED_HEALTH_BUFF) - HUMAN_MAXHEALTH) @@ -31,21 +28,12 @@ on_gain_limb(src, bodypart, special = FALSE) human_holder.blood_volume_normal = BLOOD_VOLUME_OVERSIZED - human_holder.physiology.hunger_mod *= OVERSIZED_HUNGER_MOD //50% hungrier + human_holder.physiology.hunger_mod *= OVERSIZED_HUNGER_MOD human_holder.add_movespeed_modifier(/datum/movespeed_modifier/oversized) - var/obj/item/organ/stomach/old_stomach = human_holder.get_organ_slot(ORGAN_SLOT_STOMACH) - if(!istype(old_stomach) || old_stomach.organ_flags & ORGAN_ROBOTIC || old_stomach.organ_traits & TRAIT_NOHUNGER) - return - old_stomach.Remove(human_holder, special = TRUE) - qdel(old_stomach) - if(issynthetic(human_holder)) - var/obj/item/organ/stomach/synth/oversized/new_synth_stomach = new //YOU LOOK HUGE, THAT MUST MEAN YOU HAVE HUGE reactor! RIP AND TEAR YOUR HUGE reactor! - new_synth_stomach.Insert(human_holder, special = TRUE) - to_chat(human_holder, span_warning("You feel your massive engine rumble!")) - else - var/obj/item/organ/stomach/oversized/new_stomach = new //YOU LOOK HUGE, THAT MUST MEAN YOU HAVE HUGE GUTS! RIP AND TEAR YOUR HUGE GUTS! - new_stomach.Insert(human_holder, special = TRUE) - to_chat(human_holder, span_warning("You feel your massive stomach rumble!")) + var/obj/item/organ/stomach/stomach = human_holder.get_organ_slot(ORGAN_SLOT_STOMACH) + if(stomach) + stomach.maxHealth = 1.5 * STANDARD_ORGAN_THRESHOLD + stomach.metabolism_efficiency = 0.07 // Grant the self-view action self_view_action = new(human_holder) @@ -53,28 +41,24 @@ /datum/quirk/oversized/remove() var/mob/living/carbon/human/human_holder = quirk_holder - human_holder.dna.features["body_size"] = human_holder?.client?.prefs ?human_holder?.client?.prefs?.read_preference(/datum/preference/numeric/body_size) : 1 - human_holder.maptext_height = 32 * human_holder.dna.features["body_size"] - human_holder.dna.update_body_size() - human_holder.mob_size = MOB_SIZE_HUMAN + var/body_size = human_holder.client?.prefs?.read_preference(/datum/preference/numeric/body_size) + if(body_size && body_size != RESIZE_DEFAULT_SIZE) + human_holder.update_transform(RESIZE_DEFAULT_SIZE / body_size) + else + human_holder.update_transform(RESIZE_DEFAULT_SIZE / human_holder.current_size) human_holder.maxHealth = HUMAN_MAXHEALTH human_holder.health -= ((HUMAN_MAXHEALTH * OVERSIZED_HEALTH_BUFF) - HUMAN_MAXHEALTH) - var/obj/item/bodypart/arm/left/left_arm = human_holder.get_bodypart(BODY_ZONE_L_ARM) - if(left_arm) - left_arm.unarmed_damage_high = initial(left_arm.unarmed_damage_high) + var/obj/item/organ/stomach/stomach = human_holder.get_organ_slot(ORGAN_SLOT_STOMACH) + if(stomach) + stomach.maxHealth = STANDARD_ORGAN_THRESHOLD / 1.5 + stomach.metabolism_efficiency = initial(stomach.metabolism_efficiency) - var/obj/item/bodypart/arm/right/right_arm = human_holder.get_bodypart(BODY_ZONE_R_ARM) - if(right_arm) - right_arm.unarmed_damage_high = initial(right_arm.unarmed_damage_high) + for(var/obj/item/bodypart/arm/arm in human_holder.get_bodyparts()) + arm.unarmed_damage_high = initial(arm.unarmed_damage_high) - var/obj/item/bodypart/leg/left_leg = human_holder.get_bodypart(BODY_ZONE_L_LEG) - if (left_leg) - left_leg.unarmed_effectiveness = initial(left_leg.unarmed_effectiveness) - - var/obj/item/bodypart/leg/right_leg = human_holder.get_bodypart(BODY_ZONE_R_LEG) - if (right_leg) - right_leg.unarmed_effectiveness = initial(right_leg.unarmed_effectiveness) + for(var/obj/item/bodypart/leg/leg in human_holder.get_bodyparts()) + leg.unarmed_effectiveness = initial(leg.unarmed_effectiveness) for(var/obj/item/bodypart/bodypart as anything in human_holder.bodyparts) bodypart.name = replacetext(bodypart.name, "oversized ", "") @@ -101,9 +85,7 @@ var/obj/item/bodypart/arm/new_arm = gained new_arm.unarmed_damage_high = initial(new_arm.unarmed_damage_high) + OVERSIZED_HARM_DAMAGE_BONUS - // Before this, we never actually did anything with Oversized legs. // This brings their unarmed_effectiveness up to 20 from 15, which is on par with mushroom legs. - // Functionally, this makes their prone kicks more accurate and increases the chance of extending prone knockdown... but only while the victim is already prone. else if(istype(gained, /obj/item/bodypart/leg)) var/obj/item/bodypart/leg/new_leg = gained new_leg.unarmed_effectiveness = initial(new_leg.unarmed_effectiveness) + OVERSIZED_KICK_EFFECTIVENESS_BONUS @@ -113,7 +95,5 @@ /datum/movespeed_modifier/oversized multiplicative_slowdown = OVERSIZED_SPEED_SLOWDOWN - #undef OVERSIZED_HUNGER_MOD #undef OVERSIZED_SPEED_SLOWDOWN - diff --git a/modular_zubbers/code/modules/clothing/clothing.dm b/modular_zubbers/code/modules/clothing/clothing.dm index 465d50051f7..6eeb15bb72e 100644 --- a/modular_zubbers/code/modules/clothing/clothing.dm +++ b/modular_zubbers/code/modules/clothing/clothing.dm @@ -9,8 +9,8 @@ resizer.visible_message(span_warning("A flash of purple light engulfs [resizer], before they change to normal!"), span_notice("You feel warm for a moment, before everything scales to your size...")) if(resizer.get_quirk(/datum/quirk/oversized)) resizer.remove_quirk(/datum/quirk/oversized) - resizer.dna.features["body_size"] = RESIZE_DEFAULT_SIZE - resizer.dna.update_body_size() + else + resizer.update_transform(RESIZE_DEFAULT_SIZE / resizer?.client?.prefs?.read_preference(/datum/preference/numeric/body_size)) resizer.normalized = TRUE /// For removing a normalization, and reverting back to normal @@ -23,6 +23,5 @@ if(oversized) resizer.add_quirk(/datum/quirk/oversized, announce = FALSE) if(!resizer.get_quirk(/datum/quirk/oversized)) - resizer.dna.features["body_size"] = resizer?.client?.prefs?.read_preference(/datum/preference/numeric/body_size) - resizer.dna.update_body_size() + resizer.update_transform(resizer?.client?.prefs?.read_preference(/datum/preference/numeric/body_size)) resizer.normalized = FALSE diff --git a/modular_zubbers/code/modules/mob/living/carbon/human/species_types/slimepeople.dm b/modular_zubbers/code/modules/mob/living/carbon/human/species_types/slimepeople.dm index f99a1917d81..ce0e7d51379 100644 --- a/modular_zubbers/code/modules/mob/living/carbon/human/species_types/slimepeople.dm +++ b/modular_zubbers/code/modules/mob/living/carbon/human/species_types/slimepeople.dm @@ -326,11 +326,11 @@ var/new_body_size = tgui_input_number( alterer, - "Choose your desired sprite size: ([BODY_SIZE_MIN * 100]% to [BODY_SIZE_MAX * 100]%). Warning: May make your character look distorted", + "Choose your desired sprite size: ([(RESIZE_DEFAULT_SIZE * 0.8) * 100]% to [(RESIZE_DEFAULT_SIZE * 1.5) * 100]%). Warning: May make your character look distorted", "Size Change", - default = min(alterer.dna.features["body_size"] * 100, BODY_SIZE_MAX * 100), - max_value = BODY_SIZE_MAX * 100, - min_value = BODY_SIZE_MIN * 100, + default = min(alterer.current_size * 100, (RESIZE_DEFAULT_SIZE * 1.5) * 100), + max_value = (RESIZE_DEFAULT_SIZE * 1.5) * 100, + min_value = (RESIZE_DEFAULT_SIZE * 0.8) * 100, ) if(!new_body_size) return @@ -340,8 +340,10 @@ alterer.remove_quirk(/datum/quirk/oversized) new_body_size = new_body_size * 0.01 - alterer.dna.features["body_size"] = new_body_size - alterer.dna.update_body_size() + if(new_body_size == RESIZE_DEFAULT_SIZE) + alterer.update_transform(RESIZE_DEFAULT_SIZE / alterer.current_size) + else + alterer.update_transform(new_body_size) if("Genitals") alter_genitals(alterer) diff --git a/modular_zubbers/modules/taur_mechanics/constrict.dm b/modular_zubbers/modules/taur_mechanics/constrict.dm index 38c7a0690a5..2282c12d2b0 100644 --- a/modular_zubbers/modules/taur_mechanics/constrict.dm +++ b/modular_zubbers/modules/taur_mechanics/constrict.dm @@ -272,7 +272,7 @@ /// Returns the scale, compared to default, our owner has. /obj/structure/serpentine_tail/proc/get_scale_change_mult() - return owner.dna.features["body_size"] / BODY_SIZE_NORMAL + return owner.current_size / RESIZE_DEFAULT_SIZE /// Returns the x shift for anything we constrict. /obj/structure/serpentine_tail/proc/get_constriction_pixel_x_shift() diff --git a/modular_zubbers/modules/taur_mechanics/taur_body.dm b/modular_zubbers/modules/taur_mechanics/taur_body.dm index bf316664731..2a751c8833c 100644 --- a/modular_zubbers/modules/taur_mechanics/taur_body.dm +++ b/modular_zubbers/modules/taur_mechanics/taur_body.dm @@ -193,7 +193,7 @@ return ..() /obj/item/organ/taur_body/proc/get_riding_offset(oversized = FALSE) - var/size_scaling = (owner.dna.features["body_size"] / BODY_SIZE_NORMAL) - 1 + var/size_scaling = (owner.current_size / RESIZE_DEFAULT_SIZE) - 1 var/scaling_mult = 1 + (size_scaling * riding_offset_scaling_mult) return list( diff --git a/tgstation.dme b/tgstation.dme index 875994c7c28..f23f95a4064 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -8785,7 +8785,6 @@ #include "modular_skyrat\modules\organs\code\liver.dm" #include "modular_skyrat\modules\organs\code\lungs.dm" #include "modular_skyrat\modules\organs\code\organs.dm" -#include "modular_skyrat\modules\organs\code\stomach.dm" #include "modular_skyrat\modules\organs\code\tongue.dm" #include "modular_skyrat\modules\panicbunker\code\panicbunker.dm" #include "modular_skyrat\modules\paycheck_rations\code\quirk.dm" From 8739897d5182e3daad6efb83813e1f029a1878b6 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Tue, 4 Aug 2026 18:01:14 +0200 Subject: [PATCH 078/139] Automatic changelog for PR #6042 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6042.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6042.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6042.yml b/html/changelogs/AutoChangeLog-bubber-pr-6042.yml new file mode 100644 index 00000000000..21cfc125aae --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6042.yml @@ -0,0 +1,4 @@ +author: "xPokee" +delete-after: True +changes: + - rscdel: "Removed the oversized specific organs." \ No newline at end of file From eb45d3864cad9c167de884283d466a93b65431ea Mon Sep 17 00:00:00 2001 From: Alexis Date: Tue, 4 Aug 2026 12:01:49 -0400 Subject: [PATCH 079/139] Moves Bridge Assistant To The Assistants Tab (#6006) ## About The Pull Request Makes Bridge Assistants count for non-departmental hours rather than command hours as well as moving them to the Assistants tab. I also marked a Bubber addition to the file that hadn't been modularly marked previously. ## Why It's Good For The Game People who only play Bridge Assistant are realistically not going to know how to play captain and it shouldn't be able to be unlocked just from playing BA. Also staff requested it. ## Proof Of Testing See below.
Screenshots/Videos image image
## Changelog :cl: balance: Bridge Assistant hours no longer count as Command hours. /:cl: --- code/modules/jobs/job_types/bridge_assistant.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/jobs/job_types/bridge_assistant.dm b/code/modules/jobs/job_types/bridge_assistant.dm index 263369e050a..7c66245f4ed 100644 --- a/code/modules/jobs/job_types/bridge_assistant.dm +++ b/code/modules/jobs/job_types/bridge_assistant.dm @@ -21,8 +21,8 @@ liver_traits = list(TRAIT_PRETENDER_ROYAL_METABOLISM) display_order = JOB_DISPLAY_ORDER_BRIDGE_ASSISTANT - department_for_prefs = /datum/job_department/captain - departments_list = list(/datum/job_department/command) + department_for_prefs = /datum/job_department/assistant // BUBBER EDIT ADDITION +// departments_list = list(/datum/job_department/command) // BUBBER EDIT REMOVAL family_heirlooms = list(/obj/item/banner/command/mundane) From 6bbfc07758c4520560add23a9c96a373ac3510a6 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Tue, 4 Aug 2026 18:02:26 +0200 Subject: [PATCH 080/139] Automatic changelog for PR #6006 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6006.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6006.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6006.yml b/html/changelogs/AutoChangeLog-bubber-pr-6006.yml new file mode 100644 index 00000000000..92fa2f7b087 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6006.yml @@ -0,0 +1,4 @@ +author: "xPokee" +delete-after: True +changes: + - balance: "Bridge Assistant hours no longer count as Command hours." \ No newline at end of file From 08feed03fa06cbc95759716abbf31f26abeabd29 Mon Sep 17 00:00:00 2001 From: amsy2 <159543265+amsy2@users.noreply.github.com> Date: Tue, 4 Aug 2026 18:02:34 +0200 Subject: [PATCH 081/139] Adds Superparticle Projector - a new incentive to fuck around with SM (#5966) ## About The Pull Request Superparticle Projector: New addition to engineering for toying around with SM while benefiting the crew. Machine's most basic function gives everyone in radius a status effect that offers full space protection. When turning it on, you pick Supermatter crystal to connect it to, the range of field scales with internal power of selected Supermatter, covering entire z level once it goes past 4.5GeV, machine will also not work past 5.5GeV. This is meant to be proactive aid when dealing with breaches, letting crew survive while spacing is being worked on, or to simply have fun with bars in open space and such. Adding CO2 to linked SM will also recharge cells of anyone in range, this includes MODs and cyborgs, making it pretty useful for lot of crew, and giving another incentive to cover more ground with effect of the field Adding Healium makes it so the field also slowly heals brute and burn damage, at same rate as xenobio stable regen extract does BUT it doesn't heal if damage is above 30, making sure that it only heals minor damage and can't replace medical department's job. Machine board is ordered from cargo for 10k credits, it can be ordered from department orders too. The crate also contains a full guide explaining how the Projector works with all the numbers included ## Why It's Good For The Game Engineers have been pushing limits of SM output for forever now, but there was never a big reward for it other then powerator printing credits. This addition is meant to give incentive to mess with engine and try gas combinations that normally aren't practical (right now that's just Healium but I do want to add more gas effects once this is tested in practice). It's also meant to be a benefit for rest of the station, space proofness as basic effect was made with idea of giving engineers time to react in case of a breach. Flexibility of range and effects is meant to let players both newer and veterans be able to utilise the Projector, if you don't want to push SM to 4.5GeV, you can order multiple projectors to cover more area, be it with console or with cash. Same with gas composition, basic effect and co2 don't require any gas cooking, while atmosian can add Healium to the mix for extra benefit. I've decided to link the Projector to SM itself to avoid having situations where it's powered by something like fishtank engine. ## Proof Of Testing image image image ## Changelog :cl: add: Added Superparticle Projector. Machine for engineering that benefits from more complex SM setups. It can be ordered from cargo or department console, crate contain full guide explaining inner working of the device /:cl: --------- Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com> Co-authored-by: Alexis --- .../superparticle_projector.dm | 230 ++++++++++++++++++ .../superparticle_status_effects.dm | 80 ++++++ .../obj/machines/superparticle_projector.dmi | Bin 0 -> 1764 bytes tgstation.dme | 2 + 4 files changed, 312 insertions(+) create mode 100644 modular_zubbers/code/modules/atmospherics/machinery/superparticle_projector/superparticle_projector.dm create mode 100644 modular_zubbers/code/modules/atmospherics/machinery/superparticle_projector/superparticle_status_effects.dm create mode 100644 modular_zubbers/icons/obj/machines/superparticle_projector.dmi diff --git a/modular_zubbers/code/modules/atmospherics/machinery/superparticle_projector/superparticle_projector.dm b/modular_zubbers/code/modules/atmospherics/machinery/superparticle_projector/superparticle_projector.dm new file mode 100644 index 00000000000..540d2748768 --- /dev/null +++ b/modular_zubbers/code/modules/atmospherics/machinery/superparticle_projector/superparticle_projector.dm @@ -0,0 +1,230 @@ +/// What's the maximum range of the field? +#define SUPERPARTICLE_MAX_RANGE (20) +/// What's the maximum internal power? If its above this value, the field will affect everyone on same Z level +#define SUPERPARTICLE_MAX_POWER (4500) +/// Past this internal power, the machine will stop working +#define SUPERPARTICLE_STOP_POWER (5500) +/// Percentage of CO2 required for effects to apply +#define SUPERPARTICLE_CARBON_GAS_TRESHHOLD (0.2) +/// Percentage of Healium required for effects to apply +#define SUPERPARTICLE_HEALIUM_GAS_TRESHHOLD (0.2) +//Flags for gas treshholds +/// Is Carbon Dioxide treshhold reached? +#define SP_GAS_FLAG_CARBON (1<<0) +/// Is Healium treshhold reached? +#define SP_GAS_FLAG_HEALIUM (1<<1) + +/obj/item/paper/guides/jobs/atmos/superparticlegen + name = "paper- 'Guide to Superparticle Projector'" + default_raw_text = "How to operate the Superparticle Projector
\ + -Build the machine using provided machine board.
\ + -Activate the projector and select a Supermatter engine you'd like to link it to.
\ + -Machine can be turned off and on again to change your selected engine.

\ + Basic function:
\ + -Projector offers protective field of particles simulating pressurised conditions. \ + Any humanoid in range will be immune to harm from a cold environment, low pressure, \ + or running out of air to breathe, making sure the crew stays alive in case of station hull breach.
\ + -Field is invisible to the naked eye, it is centered at the location of the Projector itself, not the linked engine.\ + You can inspect the Projector at any time to check how far it can reach. \ + Radius will scale with the internal power of the Supermatter engine that you choose to link this machine to, \ + reaching 20 tile radius at 4.5GeV of internal power.\ + Once internal power is above 4.5GeV, the field reach across entire station \ + (off station projector will require their own engines), however, projector can't support more then 5.5GeV and will not work past that threshhold.

\ + Additional effects:
\ + Projector will offer additional benefits, depending on type of gas present around chosen Supermatter engine
\ + -Above 20% Carbon Dioxide - it will recharge power cells carried by carbons and power cells powering cyborgs (10% of random cell every 10 seconds)
\ + -Above 20% Healium - the field will slowly fix brute and burn damage to both crew and cyborgs \ + (0.2 per second if below 30 damage)

\ + Superparticle Projector is a new device in active development, this guide will be updated if any of the above information changes. \ + If something does not work the way it should, make sure to read it again and look for changes." + +/datum/supply_pack/engineering/superparticlegen + name = "Superparticle Projector" + desc = "Generator that creates beneficial field to crew members, effects are based on state of Supermatter engine. Contains machine board and a guide." + cost = CARGO_CRATE_VALUE * 50 // 10,000 + contains = list(/obj/item/circuitboard/machine/superparticlegen, + /obj/item/paper/guides/jobs/atmos/superparticlegen) + crate_name = "Superparticle Projector Circuitboard Crate" + crate_type = /obj/structure/closet/crate/engineering + +/obj/item/circuitboard/machine/superparticlegen + name = "Superparticle Projector" + greyscale_colors = CIRCUIT_COLOR_ENGINEERING + build_path = /obj/machinery/power/superparticlegen + req_components = list( + /datum/stock_part/capacitor = 2, + /datum/stock_part/micro_laser = 2, + /obj/item/stack/sheet/glass = 1) + +/obj/machinery/power/superparticlegen + anchored = TRUE + density = TRUE + interaction_flags_machine = INTERACT_MACHINE_ALLOW_SILICON + icon = 'modular_zubbers/icons/obj/machines/superparticle_projector.dmi' + icon_state = "superparticle_projector" + base_icon_state = "superparticle_projector" + name = "Superparticle Projector" + desc = "Generates a field around itself that grants space immunity to all humanoids in range. \ + Range scales with internal power of chosen Supermatter engine. \ + Using specific gasses on chosen Supermatter engine, grants additional benefits" + max_integrity = 250 + circuit = /obj/item/circuitboard/machine/superparticlegen + armor_type = /datum/armor/superparticlegen + interaction_flags_click = ALLOW_SILICON_REACH + use_power = IDLE_POWER_USE + /// The cell we spawn with + var/obj/item/stock_parts/power_store/cell/cell = /obj/item/stock_parts/power_store/cell/high + /// Is the machine on? + var/on = FALSE + /// field range + var/range = 0 + /// For list of avalible SMs + var/list/obj/machinery/power/supermatter_crystal/supermatters = list() + /// For chosen SM + var/obj/machinery/power/supermatter_crystal/connected_supermatter + + /// Which gasses have met their treshholds in SM? + var/superparticle_gas_flags = NONE + +/datum/armor/superparticlegen + fire = 100 + melee = 10 + bomb = 40 +/obj/machinery/power/superparticlegen/update_overlays() + . = ..() + icon_state = panel_open ? "[base_icon_state]-o" : base_icon_state + if(on) + . += "superparticle_projector_lights" + if(superparticle_gas_flags & SP_GAS_FLAG_CARBON) + . += "superparticle_carbon" + if(superparticle_gas_flags & SP_GAS_FLAG_HEALIUM) + . += "superparticle_healium" + +/obj/machinery/power/superparticlegen/examine(mob/user) + . = ..() + . += "It is [on ? "on" : "off"]." + if(in_range(user, src) || isobserver(user)) + . += span_notice("Right-click to toggle [on ? "off" : "on"].") + . += span_notice("Current range of the field: [range] tiles.") + . += span_notice("Carbon Dioxide effect is [superparticle_gas_flags & SP_GAS_FLAG_CARBON ? "active" : "not active"].") + . += span_notice("Healium effect is [superparticle_gas_flags & SP_GAS_FLAG_HEALIUM ? "active" : "not active"].") + +/obj/machinery/power/superparticlegen/attack_hand_secondary(mob/user, list/modifiers) + if(!can_interact(user)) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + toggle_on(user) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + +/obj/machinery/power/superparticlegen/proc/display_options(mob/user) + supermatters = list() + for(var/obj/machinery/power/supermatter_crystal/sm as anything in SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/power/supermatter_crystal)) + if((loc.z == sm.z) | (is_station_level(loc.z) & is_station_level(sm.z))) + supermatters += sm + connected_supermatter = tgui_input_list(user, "Which engine would you like to link to?", "Select an engine!", supermatters) + turn_on(user) + +/obj/machinery/power/superparticlegen/proc/toggle_on(mob/user) + if(on) + turn_off(user) + return + if(anchored) + display_options(user) + else + balloon_alert(user, "anchor first") + +/obj/machinery/power/superparticlegen/proc/turn_on(mob/user) + if(!isnull(user)) + balloon_alert(user, "turned on") + on = TRUE + START_PROCESSING(SSmachines, src) + update_appearance() + +/obj/machinery/power/superparticlegen/proc/turn_off(mob/user) + on = FALSE + if(!isnull(user)) + balloon_alert(user, "turned off") + STOP_PROCESSING(SSmachines, src) + update_appearance() + +/obj/machinery/power/superparticlegen/screwdriver_act(mob/living/user, obj/item/tool) + if(on) + balloon_alert(user, "turn off!") + return ITEM_INTERACT_SUCCESS + if(!anchored) + balloon_alert(user, "anchor!") + return ITEM_INTERACT_SUCCESS + + return default_deconstruction_screwdriver(user, tool) + +/obj/machinery/power/superparticlegen/crowbar_act(mob/living/user, obj/item/tool) + return default_deconstruction_crowbar(user, tool) + +/obj/machinery/power/superparticlegen/wrench_act(mob/living/user, obj/item/tool) + . = ..() + if(on) + balloon_alert(user, "turn off first!") + return + default_unfasten_wrench(user, tool) + if(anchored) + connect_to_network() + else + disconnect_from_network() + update_appearance() + return ITEM_INTERACT_SUCCESS + +/obj/machinery/power/superparticlegen/process(seconds_per_tick) + if(!on) + return PROCESS_KILL + range = round((connected_supermatter.internal_energy) / SUPERPARTICLE_MAX_POWER * SUPERPARTICLE_MAX_RANGE) + + if(connected_supermatter.gas_percentage[/datum/gas/carbon_dioxide] > SUPERPARTICLE_CARBON_GAS_TRESHHOLD) + if(superparticle_gas_flags ^ SP_GAS_FLAG_CARBON) + superparticle_gas_flags |= SP_GAS_FLAG_CARBON + update_appearance() + else + if(superparticle_gas_flags & SP_GAS_FLAG_CARBON) + superparticle_gas_flags ^= SP_GAS_FLAG_CARBON + update_appearance() + if(connected_supermatter.gas_percentage[/datum/gas/healium] > SUPERPARTICLE_HEALIUM_GAS_TRESHHOLD) + if(superparticle_gas_flags ^ SP_GAS_FLAG_HEALIUM) + superparticle_gas_flags |= SP_GAS_FLAG_HEALIUM + update_appearance() + else + if(superparticle_gas_flags & SP_GAS_FLAG_HEALIUM) + superparticle_gas_flags ^= SP_GAS_FLAG_HEALIUM + update_appearance() + if(connected_supermatter.internal_energy < SUPERPARTICLE_STOP_POWER) + if(connected_supermatter.internal_energy < SUPERPARTICLE_MAX_POWER) + for(var/mob/living/carbon/target in range(src, range)) + target.apply_status_effect(/datum/status_effect/atmosgenbuff) + if(superparticle_gas_flags & SP_GAS_FLAG_CARBON) + target.apply_status_effect(/datum/status_effect/atmosgenbuff_carbon) + if(superparticle_gas_flags & SP_GAS_FLAG_HEALIUM) + target.apply_status_effect(/datum/status_effect/atmosgenbuff_healium) + for(var/mob/living/silicon/robot/target in range(src, range)) + if(superparticle_gas_flags & SP_GAS_FLAG_CARBON) + target.apply_status_effect(/datum/status_effect/atmosgenbuff_carbon) + if(superparticle_gas_flags & SP_GAS_FLAG_HEALIUM) + target.apply_status_effect(/datum/status_effect/atmosgenbuff_healium) + else + for(var/mob/living/carbon/target as anything in GLOB.carbon_list) + if(target.z == loc.z | (is_station_level(loc.z) & is_station_level(target.z))) + target.apply_status_effect(/datum/status_effect/atmosgenbuff) + if(superparticle_gas_flags & SP_GAS_FLAG_CARBON) + target.apply_status_effect(/datum/status_effect/atmosgenbuff_carbon) + if(superparticle_gas_flags & SP_GAS_FLAG_HEALIUM) + target.apply_status_effect(/datum/status_effect/atmosgenbuff_healium) + for(var/mob/living/silicon/robot/target in GLOB.silicon_mobs) + if(target.z == loc.z | (is_station_level(loc.z) & is_station_level(target.z))) + if(superparticle_gas_flags & SP_GAS_FLAG_CARBON) + target.apply_status_effect(/datum/status_effect/atmosgenbuff_carbon) + if(superparticle_gas_flags & SP_GAS_FLAG_HEALIUM) + target.apply_status_effect(/datum/status_effect/atmosgenbuff_healium) + +#undef SUPERPARTICLE_MAX_RANGE +#undef SUPERPARTICLE_MAX_POWER +#undef SUPERPARTICLE_STOP_POWER +#undef SUPERPARTICLE_CARBON_GAS_TRESHHOLD +#undef SUPERPARTICLE_HEALIUM_GAS_TRESHHOLD +#undef SP_GAS_FLAG_CARBON +#undef SP_GAS_FLAG_HEALIUM diff --git a/modular_zubbers/code/modules/atmospherics/machinery/superparticle_projector/superparticle_status_effects.dm b/modular_zubbers/code/modules/atmospherics/machinery/superparticle_projector/superparticle_status_effects.dm new file mode 100644 index 00000000000..30310ed55f9 --- /dev/null +++ b/modular_zubbers/code/modules/atmospherics/machinery/superparticle_projector/superparticle_status_effects.dm @@ -0,0 +1,80 @@ +/// Amount of burn and brute damage healed per second +#define SUPERPARTICLE_HEALIUM_HEALING_PER_SECOND (0.2) +/// Damage treshhold below which healing effect works +#define SUPERPARTICLE_HEALIUM_HEALING_DMG_TRESHHOLD (30) + +/atom/movable/screen/alert/status_effect/atmosgenbuff + name = "Superparticle Field" + desc = "Your are immune to cold conditions of space" + icon = 'modular_zubbers/icons/obj/machines/superparticle_projector.dmi' + icon_state = "superparticle_projector" + +/datum/status_effect/atmosgenbuff + id = "atmosgen_buff" + duration = 3 SECONDS + status_type = STATUS_EFFECT_REFRESH + alert_type = /atom/movable/screen/alert/status_effect/atmosgenbuff + var/static/list/traits_to_give = list( + TRAIT_RESISTCOLD, + TRAIT_RESISTLOWPRESSURE, + TRAIT_NOBREATH, + ) + +/datum/status_effect/atmosgenbuff/on_apply() + . = ..() + owner.add_traits(traits_to_give, REF(src)) + +/datum/status_effect/atmosgenbuff/on_remove() + . = ..() + owner.remove_traits(traits_to_give, REF(src)) + +/datum/status_effect/atmosgenbuff_carbon + id = "atmosgen_buff_carbon" + duration = 3 SECONDS + status_type = STATUS_EFFECT_REFRESH + tick_interval = 10 SECONDS + alert_type = null + +/datum/status_effect/atmosgenbuff_carbon/tick(seconds_between_ticks) + if(iscarbon(owner)) + var/list/batteries = list() + for(var/obj/item/stock_parts/power_store/cell in assoc_to_values(owner.get_all_cells())) + if(cell.charge < cell.maxcharge) + batteries += cell + if(batteries.len) + var/obj/item/stock_parts/power_store/to_charge = pick(batteries) + to_charge.charge += min(to_charge.maxcharge - to_charge.charge, to_charge.maxcharge/10) + if(iscyborg(owner)) + var/mob/living/silicon/robot/borg = owner + var/obj/item/stock_parts/power_store/to_charge = borg.cell + to_charge.charge += min(to_charge.maxcharge - to_charge.charge, to_charge.maxcharge/10) + return ..() + +/datum/status_effect/atmosgenbuff_healium + id = "atmosgen_buff_healium" + duration = 3 SECONDS + status_type = STATUS_EFFECT_REFRESH + alert_type = null + var/healed_last_tick = FALSE + +/datum/status_effect/atmosgenbuff_healium/tick(seconds_between_ticks) + healed_last_tick = FALSE + var/need_mob_update = FALSE + + if(owner.get_brute_loss() > 0 & owner.get_brute_loss() < SUPERPARTICLE_HEALIUM_HEALING_DMG_TRESHHOLD) + need_mob_update += owner.adjust_brute_loss(-SUPERPARTICLE_HEALIUM_HEALING_PER_SECOND, updating_health = FALSE) + healed_last_tick = TRUE + + if(owner.get_fire_loss() > 0 & owner.get_fire_loss() < SUPERPARTICLE_HEALIUM_HEALING_DMG_TRESHHOLD) + need_mob_update += owner.adjust_fire_loss(-SUPERPARTICLE_HEALIUM_HEALING_PER_SECOND, updating_health = FALSE) + healed_last_tick = TRUE + + if(need_mob_update) + owner.updatehealth() + + if(healed_last_tick) + new /obj/effect/temp_visual/heal(get_turf(owner), COLOR_RED) + return ..() + +#undef SUPERPARTICLE_HEALIUM_HEALING_PER_SECOND +#undef SUPERPARTICLE_HEALIUM_HEALING_DMG_TRESHHOLD diff --git a/modular_zubbers/icons/obj/machines/superparticle_projector.dmi b/modular_zubbers/icons/obj/machines/superparticle_projector.dmi new file mode 100644 index 0000000000000000000000000000000000000000..3370e76ad5357ce1a7c9a0f6ed442003a414119d GIT binary patch literal 1764 zcma)7dpOkV7XFPH%@~=Xh>Qjyw}~bymo((AXpS=&LZh?EXuE_#qM2kX%HD2 z5~p-+;w)>%W;>XsiFS|JxUzRA8mL{Sn1q_8>J`E%SfaHp! zjTI>-cPa0ZgNldB`(K0l8##4BDIa4T)Dq@iK(s7^eGn{Sm*I!}2!dwt?DQ(v!aV9yp)S>MpbO;1Bz!)w)=-iuLgvheLm zlmHmfD)-#*`k$A}s-8Td@0tS-)0_>8&F$$|cJrDC=Z@ zy~p^!Q!D)cK7EUSy|N-O*r4fX?_!fzfO}WFO^%^%~!~U)gz+J&Fy1OkxdBfAm-h<1vLD8HaGz{kH{_!wKZ@FzFKq zk!?#~r*gywSk$C(ouAXXS+YN3u-i|dRz5O-v(E5Eb-?)p1AH8noLt%IM$1KCiibTf zBj!gpBX4Xj9%ib3)gB_1x)+s7 zI_A;$+O-5TGe->#(IOGbB+vYs*(yT$~!m|@10R| zFsIX`;r#P2Qj z_0SNqSS(Zi+Fz&!UJcEG1$CsqUU}MMuUVwacvbY_N+S%=(betj%7}X+jYM7$3Lmk( zf=i}12F^-*d3pUv1`S}4aVfk@gsU`~?H+1W&e6+dp2rz?;L810l5%7A!>}*uLw2?* zU5_IQs6E)-oldAIDSrpH&2YfgtE=!DOngRvc@i^)qA(;1id>e_8ie{tNhiT%_e-fM z9k4v1$)Gp@Z!>@dbqLH_0`Y$kOqj{cR;cRQc65AxPY}53uLlJUHoIuxw&a5ix8(7m ziX+L<%#c3qxfGW5&Y4Sx*zT?+Wj|3 zpsMz>IF;UJr8T_+{SP6-@seHPUhvr1fdy!=S0z2~bQd<2pM)nDB<(<9)_afybupMn zI)n1<^GJ`x@94b;;m)oX=}Fj>s?kyQNnh7=Qv%g$ zb1+srA&U$TJBkpokHCPXk)cdF;~c0(X%#K|FiZ@za4~w5gtjjdfmmo)pn80NRyAc$ Z5*fAd??>!SJUF%hM_U)0%JY Date: Tue, 4 Aug 2026 18:03:11 +0200 Subject: [PATCH 082/139] Automatic changelog for PR #5966 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5966.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5966.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5966.yml b/html/changelogs/AutoChangeLog-bubber-pr-5966.yml new file mode 100644 index 00000000000..52359e42aab --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-5966.yml @@ -0,0 +1,4 @@ +author: "amsy2" +delete-after: True +changes: + - rscadd: "Added Superparticle Projector. Machine for engineering that benefits from more complex SM setups. It can be ordered from cargo or department console, crate contain full guide explaining inner working of the device" \ No newline at end of file From 8085588d5af13aedf7749010010d8fb407f93cbd Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Tue, 4 Aug 2026 16:04:22 +0000 Subject: [PATCH 083/139] Bubberstation automatic changelog compile [ci skip] --- .../AutoChangeLog-bubber-pr-5941.yml | 4 ---- .../AutoChangeLog-bubber-pr-5966.yml | 4 ---- .../AutoChangeLog-bubber-pr-6006.yml | 4 ---- .../AutoChangeLog-bubber-pr-6042.yml | 4 ---- .../AutoChangeLog-bubber-pr-6051.yml | 4 ---- .../AutoChangeLog-bubber-pr-6052.yml | 4 ---- .../AutoChangeLog-bubber-pr-6053.yml | 4 ---- html/changelogs/bubber_archive/2026-08.yml | 19 ++++++++++++++++++- 8 files changed, 18 insertions(+), 29 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5941.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5966.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6006.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6042.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6051.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6052.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6053.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5941.yml b/html/changelogs/AutoChangeLog-bubber-pr-5941.yml deleted file mode 100644 index ff9307fc30b..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-5941.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "KateAnbolho" -delete-after: True -changes: - - rscadd: "Re-adds the Hoshi's self-charging method in an incredibly scuffed (for you) method." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5966.yml b/html/changelogs/AutoChangeLog-bubber-pr-5966.yml deleted file mode 100644 index 52359e42aab..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-5966.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "amsy2" -delete-after: True -changes: - - rscadd: "Added Superparticle Projector. Machine for engineering that benefits from more complex SM setups. It can be ordered from cargo or department console, crate contain full guide explaining inner working of the device" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6006.yml b/html/changelogs/AutoChangeLog-bubber-pr-6006.yml deleted file mode 100644 index 92fa2f7b087..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6006.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "xPokee" -delete-after: True -changes: - - balance: "Bridge Assistant hours no longer count as Command hours." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6042.yml b/html/changelogs/AutoChangeLog-bubber-pr-6042.yml deleted file mode 100644 index 21cfc125aae..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6042.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "xPokee" -delete-after: True -changes: - - rscdel: "Removed the oversized specific organs." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6051.yml b/html/changelogs/AutoChangeLog-bubber-pr-6051.yml deleted file mode 100644 index 8241a1a02f2..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6051.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Maia-J" -delete-after: True -changes: - - bugfix: "Changing back to organic from synth no longer kicks you out of your body" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6052.yml b/html/changelogs/AutoChangeLog-bubber-pr-6052.yml deleted file mode 100644 index 1a8028ba9ae..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6052.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Maia-J" -delete-after: True -changes: - - bugfix: "Getting gibbed as synth no longer fucks up your brain in ways that make maintainers cry from nightmares at 3 AM" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6053.yml b/html/changelogs/AutoChangeLog-bubber-pr-6053.yml deleted file mode 100644 index a03e7b599af..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6053.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Techbot121" -delete-after: True -changes: - - bugfix: "fixed interaction sounds not working (if there was one)" \ No newline at end of file diff --git a/html/changelogs/bubber_archive/2026-08.yml b/html/changelogs/bubber_archive/2026-08.yml index dd02ff7b5f2..d16a1dfb209 100644 --- a/html/changelogs/bubber_archive/2026-08.yml +++ b/html/changelogs/bubber_archive/2026-08.yml @@ -32,9 +32,26 @@ 2026-08-04: Aeri: - bugfix: Gun cases now utilize their existing "open" sprites where appropriate. + KateAnbolho: + - rscadd: Re-adds the Hoshi's self-charging method in an incredibly scuffed (for + you) method. + Maia-J: + - bugfix: Changing back to organic from synth no longer kicks you out of your body + - bugfix: Getting gibbed as synth no longer fucks up your brain in ways that make + maintainers cry from nightmares at 3 AM NanoCats: - bugfix: Shapeshifting no longer breaks organs that your old species simply never had, so proteans stop suffocating if Tfing into humans or similar - bugfix: Cleaned up a pile of runtime errors thrown by shapeshifting. StrangeWeirdKitten: - - balance: Actually bumps Protean movespeed multipler from 3 to 2. That is actually more walking speed. + - balance: Actually bumps Protean movespeed multipler from 3 to 2. That is actually + more walking speed. + Techbot121: + - bugfix: fixed interaction sounds not working (if there was one) + amsy2: + - rscadd: Added Superparticle Projector. Machine for engineering that benefits from + more complex SM setups. It can be ordered from cargo or department console, + crate contain full guide explaining inner working of the device + xPokee: + - rscdel: Removed the oversized specific organs. + - balance: Bridge Assistant hours no longer count as Command hours. From b0d14aae74baada51917ff0a9d1dc7e2b22de7ec Mon Sep 17 00:00:00 2001 From: Techbot121 Date: Wed, 5 Aug 2026 17:00:38 +0200 Subject: [PATCH 084/139] fixes body_size incrementally updating the transform (#6059) ## About The Pull Request image A recent change switched the variable assignment to a proc that changes the transform, but it is incrementally transforming it rather than setting a fixed size which now ends up with the scale being multiplied each time you change something in the character screen. ## Why It's Good For The Game the character preview no longer changes the size at every change. this also closes #6057 ## Proof Of Testing
Screenshots/Videos before: https://github.com/user-attachments/assets/9032fd23-9d00-43dd-9e10-687971b5b879 after: https://github.com/user-attachments/assets/a7bee087-c9ae-42d2-aa64-1bda539aa7db
## Changelog :cl: fix: body_size being reapplied multiple times /:cl: --- .../master_files/code/modules/client/preferences/body_size.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_skyrat/master_files/code/modules/client/preferences/body_size.dm b/modular_skyrat/master_files/code/modules/client/preferences/body_size.dm index c70e63dbb30..9b8a6375f3a 100644 --- a/modular_skyrat/master_files/code/modules/client/preferences/body_size.dm +++ b/modular_skyrat/master_files/code/modules/client/preferences/body_size.dm @@ -11,7 +11,7 @@ return passed_initial_check /datum/preference/numeric/body_size/apply_to_human(mob/living/carbon/human/target, value) - target.update_transform(value) + target.update_transform(value / target.current_size) /datum/preference/numeric/body_size/create_default_value() return RESIZE_DEFAULT_SIZE From a30855241136023b13465db854fd32bdb50c73f2 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Wed, 5 Aug 2026 17:01:17 +0200 Subject: [PATCH 085/139] Automatic changelog for PR #6059 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6059.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6059.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6059.yml b/html/changelogs/AutoChangeLog-bubber-pr-6059.yml new file mode 100644 index 00000000000..9d1dba4458b --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6059.yml @@ -0,0 +1,4 @@ +author: "Techbot121" +delete-after: True +changes: + - bugfix: "body_size being reapplied multiple times" \ No newline at end of file From 8cd86978fe3904a815d0a8d1fe3de3a43c3b760a Mon Sep 17 00:00:00 2001 From: Alexis Date: Wed, 5 Aug 2026 12:56:07 -0400 Subject: [PATCH 086/139] Fixes Size Collar + Cleanup (#6060) ## About The Pull Request Oops. Turns out I broke the size collar. ## Why It's Good For The Game Bugs bad ## Proof Of Testing See below.
Screenshots/Videos https://github.com/user-attachments/assets/ab8bc0ee-bea1-41a9-ba80-bfecddd205c1
## Changelog :cl: fix: Fixed the size collar. /:cl: --- code/__DEFINES/~~bubber_defines/mobs.dm | 4 ++++ .../code/modules/client/preferences/body_size.dm | 4 ++-- .../modular_items/lewd_items/code/lewd_items/size_items.dm | 7 ++++--- modular_zubbers/code/datums/dna/dna.dm | 1 - .../code/modules/status_indicators/status_indicator.dm | 6 +----- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/code/__DEFINES/~~bubber_defines/mobs.dm b/code/__DEFINES/~~bubber_defines/mobs.dm index 822cb4970da..21d2976fd84 100644 --- a/code/__DEFINES/~~bubber_defines/mobs.dm +++ b/code/__DEFINES/~~bubber_defines/mobs.dm @@ -56,3 +56,7 @@ #define PENIS_LAYER_OFFSET 0.03 #define BELLY_LAYER_OFFSET 0.02 #define BREASTS_LAYER_OFFSET 0.01 + +// Body Sizes +#define BODY_SIZE_MAX 1.5 +#define BODY_SIZE_MIN 0.8 diff --git a/modular_skyrat/master_files/code/modules/client/preferences/body_size.dm b/modular_skyrat/master_files/code/modules/client/preferences/body_size.dm index 9b8a6375f3a..07f1506ec05 100644 --- a/modular_skyrat/master_files/code/modules/client/preferences/body_size.dm +++ b/modular_skyrat/master_files/code/modules/client/preferences/body_size.dm @@ -2,8 +2,8 @@ category = PREFERENCE_CATEGORY_SECONDARY_FEATURES savefile_identifier = PREFERENCE_CHARACTER savefile_key = "body_size" - minimum = RESIZE_DEFAULT_SIZE * 0.8 - maximum = RESIZE_DEFAULT_SIZE * 1.5 + minimum = BODY_SIZE_MIN + maximum = BODY_SIZE_MAX step = 0.01 /datum/preference/numeric/body_size/is_accessible(datum/preferences/preferences) diff --git a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_items/size_items.dm b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_items/size_items.dm index 07a5d570838..8aff57999e9 100644 --- a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_items/size_items.dm +++ b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_items/size_items.dm @@ -83,7 +83,7 @@ return COMPONENT_INCOMPATIBLE var/mob/living/carbon/human/human_parent = parent - original_size = human_parent.mob_size + original_size = human_parent.current_size if(!original_size) //If we aren't able to get the original size, we shouldn't exist. return COMPONENT_INCOMPATIBLE @@ -106,13 +106,14 @@ /// Adjusts the sprite size of the parent mob based off `size_to_apply`. /datum/component/temporary_size/proc/apply_size(size_to_apply) var/mob/living/carbon/human/human_parent = parent - if(!human_parent || !size_to_apply || (human_parent.current_size == size_to_apply)) + var/current_size = human_parent.current_size + if(!human_parent || !size_to_apply || (current_size == size_to_apply)) return FALSE if(isteshari(human_parent) || isvoxprimalis(human_parent)) // We check if the human_parent is a Vox Primalis or Teshari & temporarily disable the bodysize restriction human_parent.dna.species.body_size_restricted = FALSE - human_parent.update_transform(size_to_apply) + human_parent.update_transform(size_to_apply / current_size) return TRUE /datum/component/temporary_size/Destroy(force, silent) diff --git a/modular_zubbers/code/datums/dna/dna.dm b/modular_zubbers/code/datums/dna/dna.dm index 0152b419fd0..e4823e70b54 100644 --- a/modular_zubbers/code/datums/dna/dna.dm +++ b/modular_zubbers/code/datums/dna/dna.dm @@ -4,7 +4,6 @@ ///Body markings of the DNA's owner. This is for storing their original state for re-creating the character. They'll get changed on species mutation var/list/list/body_markings = list() ///Current body size, used for proper re-sizing and keeping track of that - var/current_body_size = RESIZE_DEFAULT_SIZE /mob/living/carbon/proc/apply_customizable_dna_features_to_species() if(!has_dna()) diff --git a/modular_zubbers/code/modules/status_indicators/status_indicator.dm b/modular_zubbers/code/modules/status_indicators/status_indicator.dm index 37c7d292cc6..a7110d4d813 100644 --- a/modular_zubbers/code/modules/status_indicators/status_indicator.dm +++ b/modular_zubbers/code/modules/status_indicators/status_indicator.dm @@ -59,7 +59,6 @@ attached_mob = parent RegisterSignals(parent, list(COMSIG_LIVING_LIFE, COMSIG_LIVING_STATUS_STUN, COMSIG_LIVING_STATUS_KNOCKDOWN, COMSIG_LIVING_STATUS_PARALYZE, COMSIG_LIVING_STATUS_IMMOBILIZE, COMSIG_LIVING_STATUS_UNCONSCIOUS), PROC_REF(status_indicator_evaluate)) - /datum/component/status_indicator/Destroy() QDEL_LIST_ASSOC_VAL(status_indicators) attached_mob = null @@ -128,8 +127,6 @@ /// Refreshes the indicators over a mob's head. Should only be called when adding or removing a status indicator with the above procs, /// or when the mob changes size visually for some reason. /datum/component/status_indicator/proc/animate_new_indicator(obj/effect/overlay/status_indicator/this_indicator) - - var/mob/living/carbon/my_carbon_mob = attached_mob var/icon_scale = get_icon_scale(my_carbon_mob) @@ -162,10 +159,9 @@ if(!iscarbon(livingmob)) // normal mobs are always 1 for scale - hopefully all borgs and simplemobs get this one return DEFAULT_MOB_SCALE var/mob/living/carbon/passed_mob = livingmob // we're possibly a player! We have size prefs! - var/mysize = (passed_mob.dna?.current_body_size ? passed_mob.dna.current_body_size : DEFAULT_MOB_SCALE) + var/mysize = (passed_mob?.current_size ? passed_mob.current_size : DEFAULT_MOB_SCALE) return mysize - #undef STATUS_INDICATOR_Y_OFFSET #undef STATUS_INDICATOR_ICON_X_SIZE #undef STATUS_INDICATOR_ICON_MARGIN From 1d0b6f98256015b91d50d215bbaf7af6898b99ae Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Wed, 5 Aug 2026 18:58:35 +0200 Subject: [PATCH 087/139] Automatic changelog for PR #6060 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6060.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6060.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6060.yml b/html/changelogs/AutoChangeLog-bubber-pr-6060.yml new file mode 100644 index 00000000000..207db5ea7e1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6060.yml @@ -0,0 +1,4 @@ +author: "xPokee" +delete-after: True +changes: + - bugfix: "Fixed the size collar." \ No newline at end of file From 95bc2bc2b7a3cb74cfa5837ea21f09ada45e8df8 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Thu, 6 Aug 2026 02:33:29 +0000 Subject: [PATCH 088/139] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6059.yml | 4 ---- html/changelogs/AutoChangeLog-bubber-pr-6060.yml | 4 ---- html/changelogs/bubber_archive/2026-08.yml | 5 +++++ 3 files changed, 5 insertions(+), 8 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6059.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6060.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6059.yml b/html/changelogs/AutoChangeLog-bubber-pr-6059.yml deleted file mode 100644 index 9d1dba4458b..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6059.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Techbot121" -delete-after: True -changes: - - bugfix: "body_size being reapplied multiple times" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6060.yml b/html/changelogs/AutoChangeLog-bubber-pr-6060.yml deleted file mode 100644 index 207db5ea7e1..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6060.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "xPokee" -delete-after: True -changes: - - bugfix: "Fixed the size collar." \ No newline at end of file diff --git a/html/changelogs/bubber_archive/2026-08.yml b/html/changelogs/bubber_archive/2026-08.yml index d16a1dfb209..96cf72ec90b 100644 --- a/html/changelogs/bubber_archive/2026-08.yml +++ b/html/changelogs/bubber_archive/2026-08.yml @@ -55,3 +55,8 @@ xPokee: - rscdel: Removed the oversized specific organs. - balance: Bridge Assistant hours no longer count as Command hours. +2026-08-06: + Techbot121: + - bugfix: body_size being reapplied multiple times + xPokee: + - bugfix: Fixed the size collar. From 8d7f91751c10ace7b337295e83c0d9b82e268e66 Mon Sep 17 00:00:00 2001 From: Phantastic-Swan Date: Thu, 6 Aug 2026 14:19:13 +0200 Subject: [PATCH 089/139] Storyteller config cleanup and finer config control (#6030) ## About The Pull Request I was very annoyed at there being so many vars and configs on the storyteller that do absolutely fucking nothing so I removed them. While I was at it, I decided to fix some configs having wrong names, and add config control over the storyteller types, so that they can be controlled more finely via configs, rather than through code. ## Why It's Good For The Game Removes unnecessary configs that literally do not affect anything, so that admins don't get confused by tweaking values and not having anything change. Also makes it easier to control the storytellers via configs ## Proof Of Testing It compiled. I checked if the configs properly multiply the thresholds and they do. ## Changelog :cl: Swan config: Added configs for finer control over the various storytellers, and renamed wrongly named configs. Removed configs which weren't tied to anything. /:cl: --- .../~~bubber_defines/storyteller_defines.dm | 14 --- config/bubbers/storyteller.txt | 88 +++++++++++++------ .../code/modules/storyteller/config.dm | 55 ------------ .../code/modules/storyteller/gamemode.dm | 22 ----- .../tellers/storyteller_1_chill.dm | 38 ++++++++ .../tellers/storyteller_2_fragile.dm | 38 ++++++++ .../tellers/storyteller_3_default.dm | 39 ++++++++ .../tellers/storyteller_4_bomb.dm | 38 ++++++++ .../tellers/storyteller_5_gamer.dm | 38 ++++++++ .../tellers/storyteller_6_enemy.dm | 38 ++++++++ 10 files changed, 292 insertions(+), 116 deletions(-) diff --git a/code/__DEFINES/~~bubber_defines/storyteller_defines.dm b/code/__DEFINES/~~bubber_defines/storyteller_defines.dm index a052c953972..2a9aefe29c3 100644 --- a/code/__DEFINES/~~bubber_defines/storyteller_defines.dm +++ b/code/__DEFINES/~~bubber_defines/storyteller_defines.dm @@ -62,20 +62,6 @@ #define CREWSET_MIN_POP 0 #define GHOSTSET_MIN_POP 0 -/// Defines for how much pop do we need to stop applying a pop scalling penalty to event frequency. -#define MUNDANE_POP_SCALE_THRESHOLD 25 -#define MODERATE_POP_SCALE_THRESHOLD 32 -#define MAJOR_POP_SCALE_THRESHOLD 45 -#define CREWSET_POP_SCALE_THRESHOLD 45 -#define GHOSTSET_POP_SCALE_THRESHOLD 45 - -/// The maximum penalty coming from pop scalling, when we're at the most minimum point, easing into 0 as we reach the SCALE_THRESHOLD. This is treated as a percentage. -#define MUNDANE_POP_SCALE_PENALTY 35 -#define MODERATE_POP_SCALE_PENALTY 35 -#define MAJOR_POP_SCALE_PENALTY 35 -#define CREWSET_POP_SCALE_PENALTY 35 -#define GHOSTSET_POP_SCALE_PENALTY 35 - #define STORYTELLER_VOTE "storyteller" #define EVENT_TRACKS list(EVENT_TRACK_MUNDANE, EVENT_TRACK_MODERATE, EVENT_TRACK_MAJOR, EVENT_TRACK_CREWSET, EVENT_TRACK_GHOSTSET) diff --git a/config/bubbers/storyteller.txt b/config/bubbers/storyteller.txt index 1010ea361d0..ec0d6d88d46 100644 --- a/config/bubbers/storyteller.txt +++ b/config/bubbers/storyteller.txt @@ -7,46 +7,84 @@ DEFAULT_STORYTELLER /datum/storyteller/extended MUNDANE_POINT_GAIN_MULTIPLIER 1 MODERATE_POINT_GAIN_MULTIPLIER 1 MAJOR_POINT_GAIN_MULTIPLIER 1 -ROLESET_POINT_GAIN_MULTIPLIER 1 -OBJECTIVES_POINT_GAIN_MULTIPLIER 1 +CREWSET_POINT_GAIN_MULTIPLIER 1 +GHOSTSET_POINT_GAIN_MULTIPLIER 1 ## Multipliers for points to spend on roundstart events. MUNDANE_ROUNDSTART_POINT_MULTIPLIER 1 MODERATE_ROUNDSTART_POINT_MULTIPLIER 1 MAJOR_ROUNDSTART_POINT_MULTIPLIER 1 -ROLESET_ROUNDSTART_POINT_MULTIPLIER 1 -OBJECTIVES_ROUNDSTART_POINT_MULTIPLIER 1 +CREWSET_ROUNDSTART_POINT_MULTIPLIER 1 +GHOSTSET_ROUNDSTART_POINT_MULTIPLIER 1 ## Minimum population caps for event tracks to run their events. MUNDANE_MIN_POP 0 MODERATE_MIN_POP 0 MAJOR_MIN_POP 0 -ROLESET_MIN_POP 0 -OBJECTIVES_MIN_POP 0 +CREWSET_MIN_POP 0 +GHOSTSET_MIN_POP 0 ## Point thresholds for tracks to run events. The lesser the more frequent events will be. MUNDANE_POINT_THRESHOLD 25 MODERATE_POINT_THRESHOLD 50 MAJOR_POINT_THRESHOLD 90 -ROLESET_POINT_THRESHOLD 120 -OBJECTIVES_POINT_THRESHOLD 130 - -## Allows the storyteller to scale event frequencies based on population -ALLOW_STORYTELLER_POP_SCALING - -## Thresholds that population frequency scalling penalize up to. -MUNDANE_POP_SCALE_THRESHOLD 10 -MODERATE_POP_SCALE_THRESHOLD 15 -MAJOR_POP_SCALE_THRESHOLD 40 -ROLESET_POP_SCALE_THRESHOLD 45 -OBJECTIVES_POP_SCALE_THRESHOLD 40 - -## The maximum penalties population scalling will apply to the tracks for having less pop than POP_SCALE_THRESHOLD. This is treated as percentages -MUNDANE_POP_SCALE_PENALTY 30 -MODERATE_POP_SCALE_PENALTY 30 -MAJOR_POP_SCALE_PENALTY 30 -ROLESET_POP_SCALE_PENALTY 30 -OBJECTIVES_POP_SCALE_PENALTY 30 +CREWSET_POINT_THRESHOLD 120 +GHOSTSET_POINT_THRESHOLD 130 ## Disable storyteller crew antagonist creation after this many minutes. Values less than 0 means don't disable. DISALLOW_CREW_ANTAGS_TIME_THRESHOLD -1 + +## Storyteller types configs +## Uncomment any of these configs to adjust the point thresholds for any storyteller. +## The ones that don't have a track name attached to them adjust all tracks on the given storyteller. +## These values are being multiplied by the points thresholds, meaning that the higher the numbers here, +## the lower the frequency of events on that storyteller/track of a storyteller. +## Default value for all of those is 1, meaning that they do not affect the points thresholds. + +## 1. Chill +#CHILL_POINTS_THRESHOLD_COEFFICIENT 1 +#CHILL_MUNDANE_POINTS_THRESHOLD_COEFFICIENT 1 +#CHILL_MODERATE_POINTS_THRESHOLD_COEFFICIENT 1 +#CHILL_MAJOR_POINTS_THRESHOLD_COEFFICIENT 1 +#CHILL_CREWSET_POINTS_THRESHOLD_COEFFICIENT 1 +#CHILL_GHOSTSET_POINTS_THRESHOLD_COEFFICIENT 1 + +## 2. Fragile +#FRAGILE_POINTS_THRESHOLD_COEFFICIENT 1 +#FRAGILE_MUNDANE_POINTS_THRESHOLD_COEFFICIENT 1 +#FRAGILE_MODERATE_POINTS_THRESHOLD_COEFFICIENT 1 +#FRAGILE_MAJOR_POINTS_THRESHOLD_COEFFICIENT 1 +#FRAGILE_CREWSET_POINTS_THRESHOLD_COEFFICIENT 1 +#FRAGILE_GHOSTSET_POINTS_THRESHOLD_COEFFICIENT 1 + +## 3. Default +#DEFAULT_POINTS_THRESHOLD_COEFFICIENT 1 +#DEFAULT_MUNDANE_POINTS_THRESHOLD_COEFFICIENT 1 +#DEFAULT_MODERATE_POINTS_THRESHOLD_COEFFICIENT 1 +#DEFAULT_MAJOR_POINTS_THRESHOLD_COEFFICIENT 1 +#DEFAULT_CREWSET_POINTS_THRESHOLD_COEFFICIENT 1 +#DEFAULT_GHOSTSET_POINTS_THRESHOLD_COEFFICIENT 1 + +## 4. Bomb +#BOMB_POINTS_THRESHOLD_COEFFICIENT 1 +#BOMB_MUNDANE_POINTS_THRESHOLD_COEFFICIENT 1 +#BOMB_MODERATE_POINTS_THRESHOLD_COEFFICIENT 1 +#BOMB_MAJOR_POINTS_THRESHOLD_COEFFICIENT 1 +#BOMB_CREWSET_POINTS_THRESHOLD_COEFFICIENT 1 +#BOMB_GHOSTSET_POINTS_THRESHOLD_COEFFICIENT 1 + +## 5. Gamer +#GAMER_POINTS_THRESHOLD_COEFFICIENT 1 +#GAMER_MUNDANE_POINTS_THRESHOLD_COEFFICIENT 1 +#GAMER_MODERATE_POINTS_THRESHOLD_COEFFICIENT 1 +#GAMER_MAJOR_POINTS_THRESHOLD_COEFFICIENT 1 +#GAMER_CREWSET_POINTS_THRESHOLD_COEFFICIENT 1 +#GAMER_GHOSTSET_POINTS_THRESHOLD_COEFFICIENT 1 + +## 6. Enemy +#ENEMY_POINTS_THRESHOLD_COEFFICIENT 1 +#ENEMY_MUNDANE_POINTS_THRESHOLD_COEFFICIENT 1 +#ENEMY_MODERATE_POINTS_THRESHOLD_COEFFICIENT 1 +#ENEMY_MAJOR_POINTS_THRESHOLD_COEFFICIENT 1 +#ENEMY_CREWSET_POINTS_THRESHOLD_COEFFICIENT 1 +#ENEMY_GHOSTSET_POINTS_THRESHOLD_COEFFICIENT 1 diff --git a/modular_zubbers/code/modules/storyteller/config.dm b/modular_zubbers/code/modules/storyteller/config.dm index 1ca6f2f3b01..ffff8cbb781 100644 --- a/modular_zubbers/code/modules/storyteller/config.dm +++ b/modular_zubbers/code/modules/storyteller/config.dm @@ -93,61 +93,6 @@ integer = TRUE min_val = 0 - -/datum/config_entry/flag/allow_storyteller_pop_scaling // Allows storyteller to scale down the event frequency by population - -// Pop scalling thresholds -/datum/config_entry/number/mundane_pop_scale_threshold - default = MUNDANE_POP_SCALE_THRESHOLD - integer = TRUE - min_val = 0 - -/datum/config_entry/number/moderate_pop_scale_threshold - default = MODERATE_POP_SCALE_THRESHOLD - integer = TRUE - min_val = 0 - -/datum/config_entry/number/major_pop_scale_threshold - default = MAJOR_POP_SCALE_THRESHOLD - integer = TRUE - min_val = 0 - -/datum/config_entry/number/crewset_pop_scale_threshold - default = CREWSET_POP_SCALE_THRESHOLD - integer = TRUE - min_val = 0 - -/datum/config_entry/number/ghostset_pop_scale_threshold - default = GHOSTSET_POP_SCALE_THRESHOLD - integer = TRUE - min_val = 0 - -// Pop scalling penalties -/datum/config_entry/number/mundane_pop_scale_penalty - default = MUNDANE_POP_SCALE_PENALTY - integer = TRUE - min_val = 0 - -/datum/config_entry/number/moderate_pop_scale_penalty - default = MODERATE_POP_SCALE_PENALTY - integer = TRUE - min_val = 0 - -/datum/config_entry/number/major_pop_scale_penalty - default = MAJOR_POP_SCALE_PENALTY - integer = TRUE - min_val = 0 - -/datum/config_entry/number/crewset_pop_scale_penalty - default = CREWSET_POP_SCALE_PENALTY - integer = TRUE - min_val = 0 - -/datum/config_entry/number/ghostset_pop_scale_penalty - default = GHOSTSET_POP_SCALE_PENALTY - integer = TRUE - min_val = 0 - /datum/config_entry/number/disallow_crew_antags_time_threshold default = -1 integer = TRUE diff --git a/modular_zubbers/code/modules/storyteller/gamemode.dm b/modular_zubbers/code/modules/storyteller/gamemode.dm index bf0bf99b21d..8e2ac143cae 100644 --- a/modular_zubbers/code/modules/storyteller/gamemode.dm +++ b/modular_zubbers/code/modules/storyteller/gamemode.dm @@ -67,28 +67,6 @@ SUBSYSTEM_DEF(gamemode) EVENT_TRACK_CREWSET = 1, EVENT_TRACK_GHOSTSET = 1 ) - /// Whether we allow pop scaling. This is configured by config, or the storyteller UI - var/allow_pop_scaling = TRUE - - /// Associative list of pop scale thresholds. - var/list/pop_scale_thresholds = list( - EVENT_TRACK_MUNDANE = MUNDANE_POP_SCALE_THRESHOLD, - EVENT_TRACK_MODERATE = MODERATE_POP_SCALE_THRESHOLD, - EVENT_TRACK_MAJOR = MAJOR_POP_SCALE_THRESHOLD, - EVENT_TRACK_CREWSET = CREWSET_POP_SCALE_THRESHOLD, - EVENT_TRACK_GHOSTSET = GHOSTSET_POP_SCALE_THRESHOLD - ) - - /// Associative list of pop scale penalties. - var/list/pop_scale_penalties = list( - EVENT_TRACK_MUNDANE = MUNDANE_POP_SCALE_PENALTY, - EVENT_TRACK_MODERATE = MODERATE_POP_SCALE_PENALTY, - EVENT_TRACK_MAJOR = MAJOR_POP_SCALE_PENALTY, - EVENT_TRACK_CREWSET = CREWSET_POP_SCALE_PENALTY, - EVENT_TRACK_GHOSTSET = GHOSTSET_POP_SCALE_PENALTY - ) - - /// Associative list of control events by their track category. Compiled in Init var/list/event_pools = list() diff --git a/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_1_chill.dm b/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_1_chill.dm index 64064c8fd7c..be8bd6680ec 100644 --- a/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_1_chill.dm +++ b/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_1_chill.dm @@ -15,9 +15,47 @@ antag_divisor = 32 storyteller_type = STORYTELLER_TYPE_CALM +/datum/storyteller/chill/New() + track_data = new /datum/storyteller_data/tracks/chill + track_data.threshold_mundane *= CONFIG_GET(number/chill_points_threshold_coefficient) * CONFIG_GET(number/chill_mundane_points_threshold_coefficient) + track_data.threshold_moderate *= CONFIG_GET(number/chill_points_threshold_coefficient) * CONFIG_GET(number/chill_moderate_points_threshold_coefficient) + track_data.threshold_major *= CONFIG_GET(number/chill_points_threshold_coefficient) * CONFIG_GET(number/chill_major_points_threshold_coefficient) + track_data.threshold_crewset *= CONFIG_GET(number/chill_points_threshold_coefficient) * CONFIG_GET(number/chill_crewset_points_threshold_coefficient) + track_data.threshold_ghostset *= CONFIG_GET(number/chill_points_threshold_coefficient) * CONFIG_GET(number/chill_ghostset_points_threshold_coefficient) + /datum/storyteller_data/tracks/chill threshold_mundane = 1800 threshold_moderate = 2700 threshold_major = 16000 threshold_crewset = 3200 threshold_ghostset = 20000 + +/datum/config_entry/number/chill_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/chill_mundane_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/chill_moderate_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/chill_major_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/chill_crewset_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/chill_ghostset_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 diff --git a/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_2_fragile.dm b/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_2_fragile.dm index bf7a0195a01..f6f40c16d37 100644 --- a/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_2_fragile.dm +++ b/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_2_fragile.dm @@ -15,9 +15,47 @@ ) storyteller_type = STORYTELLER_TYPE_ALWAYS_AVAILABLE +/datum/storyteller/fragile/New() + track_data = new /datum/storyteller_data/tracks/fragile + track_data.threshold_mundane *= CONFIG_GET(number/fragile_points_threshold_coefficient) * CONFIG_GET(number/fragile_mundane_points_threshold_coefficient) + track_data.threshold_moderate *= CONFIG_GET(number/fragile_points_threshold_coefficient) * CONFIG_GET(number/fragile_moderate_points_threshold_coefficient) + track_data.threshold_major *= CONFIG_GET(number/fragile_points_threshold_coefficient) * CONFIG_GET(number/fragile_major_points_threshold_coefficient) + track_data.threshold_crewset *= CONFIG_GET(number/fragile_points_threshold_coefficient) * CONFIG_GET(number/fragile_crewset_points_threshold_coefficient) + track_data.threshold_ghostset *= CONFIG_GET(number/fragile_points_threshold_coefficient) * CONFIG_GET(number/fragile_ghostset_points_threshold_coefficient) + /datum/storyteller_data/tracks/fragile threshold_mundane = 1200 threshold_moderate = 1800 threshold_major = 10000 threshold_crewset = 3000 threshold_ghostset = 6800 + +/datum/config_entry/number/fragile_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/fragile_mundane_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/fragile_moderate_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/fragile_major_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/fragile_crewset_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/fragile_ghostset_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 diff --git a/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_3_default.dm b/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_3_default.dm index 8952bc71ed4..7d4b5938c40 100644 --- a/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_3_default.dm +++ b/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_3_default.dm @@ -9,3 +9,42 @@ tag_multipliers = list( TAG_CHAOTIC = 0.7 ) + +/datum/storyteller/default/New() + track_data = new /datum/storyteller_data/tracks + track_data.threshold_mundane *= CONFIG_GET(number/default_points_threshold_coefficient) * CONFIG_GET(number/default_mundane_points_threshold_coefficient) + track_data.threshold_moderate *= CONFIG_GET(number/default_points_threshold_coefficient) * CONFIG_GET(number/default_moderate_points_threshold_coefficient) + track_data.threshold_major *= CONFIG_GET(number/default_points_threshold_coefficient) * CONFIG_GET(number/default_major_points_threshold_coefficient) + track_data.threshold_crewset *= CONFIG_GET(number/default_points_threshold_coefficient) * CONFIG_GET(number/default_crewset_points_threshold_coefficient) + track_data.threshold_ghostset *= CONFIG_GET(number/default_points_threshold_coefficient) * CONFIG_GET(number/default_ghostset_points_threshold_coefficient) + +/datum/config_entry/number/default_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/default_mundane_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/default_moderate_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/default_major_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/default_crewset_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/default_ghostset_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + diff --git a/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_4_bomb.dm b/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_4_bomb.dm index 005115cc2ab..a88c753d390 100644 --- a/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_4_bomb.dm +++ b/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_4_bomb.dm @@ -11,7 +11,45 @@ antag_divisor = 10 storyteller_type = STORYTELLER_TYPE_INTENSE +/datum/storyteller/bomb/New() + track_data = new /datum/storyteller_data/tracks/bomb + track_data.threshold_mundane *= CONFIG_GET(number/bomb_points_threshold_coefficient) * CONFIG_GET(number/bomb_mundane_points_threshold_coefficient) + track_data.threshold_moderate *= CONFIG_GET(number/bomb_points_threshold_coefficient) * CONFIG_GET(number/bomb_moderate_points_threshold_coefficient) + track_data.threshold_major *= CONFIG_GET(number/bomb_points_threshold_coefficient) * CONFIG_GET(number/bomb_major_points_threshold_coefficient) + track_data.threshold_crewset *= CONFIG_GET(number/bomb_points_threshold_coefficient) * CONFIG_GET(number/bomb_crewset_points_threshold_coefficient) + track_data.threshold_ghostset *= CONFIG_GET(number/bomb_points_threshold_coefficient) * CONFIG_GET(number/bomb_ghostset_points_threshold_coefficient) + /datum/storyteller_data/tracks/bomb threshold_mundane = 1800 threshold_moderate = 1400 threshold_major = 5500 + +/datum/config_entry/number/bomb_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/bomb_mundane_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/bomb_moderate_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/bomb_major_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/bomb_crewset_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/bomb_ghostset_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 diff --git a/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_5_gamer.dm b/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_5_gamer.dm index 09e5a111614..619649f7c8c 100644 --- a/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_5_gamer.dm +++ b/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_5_gamer.dm @@ -15,9 +15,47 @@ antag_divisor = 5 storyteller_type = STORYTELLER_TYPE_INTENSE +/datum/storyteller/gamer/New() + track_data = new /datum/storyteller_data/tracks/gamer + track_data.threshold_mundane *= CONFIG_GET(number/gamer_points_threshold_coefficient) * CONFIG_GET(number/gamer_mundane_points_threshold_coefficient) + track_data.threshold_moderate *= CONFIG_GET(number/gamer_points_threshold_coefficient) * CONFIG_GET(number/gamer_moderate_points_threshold_coefficient) + track_data.threshold_major *= CONFIG_GET(number/gamer_points_threshold_coefficient) * CONFIG_GET(number/gamer_major_points_threshold_coefficient) + track_data.threshold_crewset *= CONFIG_GET(number/gamer_points_threshold_coefficient) * CONFIG_GET(number/gamer_crewset_points_threshold_coefficient) + track_data.threshold_ghostset *= CONFIG_GET(number/gamer_points_threshold_coefficient) * CONFIG_GET(number/gamer_ghostset_points_threshold_coefficient) + /datum/storyteller_data/tracks/gamer threshold_moderate = 1300 threshold_major = 4000 threshold_ghostset = 6000 threshold_crewset = 2000 threshold_ghostset = 4800 + +/datum/config_entry/number/gamer_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/gamer_mundane_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/gamer_moderate_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/gamer_major_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/gamer_crewset_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/gamer_ghostset_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 diff --git a/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_6_enemy.dm b/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_6_enemy.dm index a85f31e054c..787f1cac40e 100644 --- a/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_6_enemy.dm +++ b/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_6_enemy.dm @@ -26,9 +26,47 @@ event_repetition_multiplier = 1 //Set from default 0.6 so that the round just doesn't throw every antag type possible at the crew. +/datum/storyteller/enemy/New() + track_data = new /datum/storyteller_data/tracks/enemy + track_data.threshold_mundane *= CONFIG_GET(number/enemy_points_threshold_coefficient) * CONFIG_GET(number/enemy_mundane_points_threshold_coefficient) + track_data.threshold_moderate *= CONFIG_GET(number/enemy_points_threshold_coefficient) * CONFIG_GET(number/enemy_moderate_points_threshold_coefficient) + track_data.threshold_major *= CONFIG_GET(number/enemy_points_threshold_coefficient) * CONFIG_GET(number/enemy_major_points_threshold_coefficient) + track_data.threshold_crewset *= CONFIG_GET(number/enemy_points_threshold_coefficient) * CONFIG_GET(number/enemy_crewset_points_threshold_coefficient) + track_data.threshold_ghostset *= CONFIG_GET(number/enemy_points_threshold_coefficient) * CONFIG_GET(number/enemy_ghostset_points_threshold_coefficient) + /datum/storyteller_data/tracks/enemy threshold_mundane = 1200 threshold_moderate = 1800 threshold_major = 8000 threshold_crewset = 1950 threshold_ghostset = 6500 + +/datum/config_entry/number/enemy_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/enemy_mundane_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/enemy_moderate_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/enemy_major_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/enemy_crewset_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/enemy_ghostset_points_threshold_coefficient + default = 1 + integer = FALSE + min_val = 0 From 7e4d76d8b94d70bacc4e6ec71d02534d3175fa0e Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Thu, 6 Aug 2026 14:19:39 +0200 Subject: [PATCH 090/139] Automatic changelog for PR #6030 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6030.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6030.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6030.yml b/html/changelogs/AutoChangeLog-bubber-pr-6030.yml new file mode 100644 index 00000000000..64b41bdfee1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6030.yml @@ -0,0 +1,4 @@ +author: "Swan" +delete-after: True +changes: + - config: "Added configs for finer control over the various storytellers, and renamed wrongly named configs. Removed configs which weren't tied to anything." \ No newline at end of file From 8df22e5c2a96c8f8e5b99ccbf2c9dd31756003bc Mon Sep 17 00:00:00 2001 From: Waterpig <49160555+Maia-J@users.noreply.github.com> Date: Thu, 6 Aug 2026 16:04:14 +0200 Subject: [PATCH 091/139] Small Dolphin and Carp event adjustments (#6050) ## About The Pull Request ### Dolphin migration Weight 15->5 Track Moderate->Mundane ### Space Carp Tags += Space, Combat ## Why It's Good For The Game Dolphins are harmless and low impact so having them as a fairly rare mundane track pick makes way more sense than just stealing from the moderate track. Space carp, as the name implies, should have the space tag (Ground stations don't even have spawn points for them in the first place). They also bite you and force a bit of combat to deal with them, so. ## Proof Of Testing It compiles. It's variable and weight adjustments anyhow ## Changelog :cl: balance: Space carp event is now actually tagged as SPACE and COMBAT balance: Space dolphins are now in a different track, at a lower weight, to make them rarer. /:cl: --------- Co-authored-by: Maia Co-authored-by: Alexis --- .../storyteller/event_defines/moderate/moderate_overrides.dm | 2 +- .../event_defines/{moderate => mundane}/dolphin_migration.dm | 3 ++- tgstation.dme | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) rename modular_zubbers/code/modules/storyteller/event_defines/{moderate => mundane}/dolphin_migration.dm (97%) diff --git a/modular_zubbers/code/modules/storyteller/event_defines/moderate/moderate_overrides.dm b/modular_zubbers/code/modules/storyteller/event_defines/moderate/moderate_overrides.dm index 6260610a31c..3d83bc71801 100644 --- a/modular_zubbers/code/modules/storyteller/event_defines/moderate/moderate_overrides.dm +++ b/modular_zubbers/code/modules/storyteller/event_defines/moderate/moderate_overrides.dm @@ -2,7 +2,7 @@ tags = list(TAG_DESTRUCTIVE, TAG_COMMUNAL, TAG_CHAOTIC) /datum/round_event_control/carp_migration - tags = list(TAG_COMMUNAL) + tags = list(TAG_COMMUNAL, TAG_SPACE, TAG_COMBAT) /datum/round_event_control/communications_blackout tags = list(TAG_COMMUNAL, TAG_SPOOKY) diff --git a/modular_zubbers/code/modules/storyteller/event_defines/moderate/dolphin_migration.dm b/modular_zubbers/code/modules/storyteller/event_defines/mundane/dolphin_migration.dm similarity index 97% rename from modular_zubbers/code/modules/storyteller/event_defines/moderate/dolphin_migration.dm rename to modular_zubbers/code/modules/storyteller/event_defines/mundane/dolphin_migration.dm index f90ebe2b3cd..86c09c79327 100644 --- a/modular_zubbers/code/modules/storyteller/event_defines/moderate/dolphin_migration.dm +++ b/modular_zubbers/code/modules/storyteller/event_defines/mundane/dolphin_migration.dm @@ -5,7 +5,6 @@ /datum/round_event_control/dolphin_migration name = "Dolphin Migration" typepath = /datum/round_event/dolphin_migration - weight = 15 min_players = 0 // Neutral mobs, no destruction, just spawn whenever earliest_start = 10 MINUTES max_occurrences = 6 @@ -14,6 +13,8 @@ min_wizard_trigger_potency = 0 max_wizard_trigger_potency = 3 + weight = 5 + track = EVENT_TRACK_MUNDANE tags = list(TAG_SPACE, TAG_NEUTRAL) /datum/round_event/dolphin_migration diff --git a/tgstation.dme b/tgstation.dme index 1750a9b2846..46966f20057 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -10278,8 +10278,8 @@ #include "modular_zubbers\code\modules\storyteller\event_defines\major\pirates.dm" #include "modular_zubbers\code\modules\storyteller\event_defines\major\revenant.dm" #include "modular_zubbers\code\modules\storyteller\event_defines\major\slaughter.dm" -#include "modular_zubbers\code\modules\storyteller\event_defines\moderate\dolphin_migration.dm" #include "modular_zubbers\code\modules\storyteller\event_defines\moderate\moderate_overrides.dm" +#include "modular_zubbers\code\modules\storyteller\event_defines\mundane\dolphin_migration.dm" #include "modular_zubbers\code\modules\storyteller\event_defines\mundane\mundane_overrides.dm" #include "modular_zubbers\code\modules\storyteller\event_defines\mundane\scrubber_overrides.dm" #include "modular_zubbers\code\modules\storyteller\storytellers\data\_track.dm" From 6cf19559a233b6dfbd515b0b46d3bafa4c7fa01b Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Thu, 6 Aug 2026 16:04:42 +0200 Subject: [PATCH 092/139] Automatic changelog for PR #6050 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6050.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6050.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6050.yml b/html/changelogs/AutoChangeLog-bubber-pr-6050.yml new file mode 100644 index 00000000000..37c8c3fc4b2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6050.yml @@ -0,0 +1,5 @@ +author: "Maia-J" +delete-after: True +changes: + - balance: "Space carp event is now actually tagged as SPACE and COMBAT" + - balance: "Space dolphins are now in a different track, at a lower weight, to make them rarer." \ No newline at end of file From 27c0933700b5d73617005f80216ae6bd8ca2b061 Mon Sep 17 00:00:00 2001 From: Tempest Date: Thu, 6 Aug 2026 11:32:45 -0500 Subject: [PATCH 093/139] Fix flatpacked stationary batteries being unusable (#6018) ## About The Pull Request Fixes #5922. `/obj/machinery/power/smes/battery_pack` overrides `default_deconstruction_screwdriver()`. The override uses the old four-argument signature from before tg [#95408](https://github.com/tgstation/tgstation/pull/95408): ```dm /obj/machinery/power/smes/battery_pack/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/screwdriver) if(screwdriver.tool_behaviour != TOOL_SCREWDRIVER) ``` The base proc now takes two arguments. That change came from the tg PR "The big tooltype_act de-cargo-cult-ing". It arrived here in the upstream sync of 2026-05-16 (21b4095dfd6): ```dm /obj/machinery/proc/default_deconstruction_screwdriver(mob/user, obj/item/screwdriver) ``` The SMES parent calls the proc as `default_deconstruction_screwdriver(user, tool)`. DM binds arguments by position against the parameter list of the override. The screwdriver goes into `icon_state_open`, and the `screwdriver` parameter stays null. The next line reads a var on null and causes a runtime error. DM compiles an override with a different argument count without an error, so nobody saw this. Three effects together make the machine useless: 1. The runtime error returns null to the caller. `tool_act()` reports no interaction, and the click continues into the attack chain. The player hits the battery with the screwdriver instead of opening the panel. This also happens with combat mode off. 2. `can_place_terminal()` requires `panel_open`. No player can install a terminal. 3. `/obj/machinery/power/smes/Initialize()` calls `atom_break()` when the machine has no terminal. Every deployed battery starts in a broken state. ### The fix This PR deletes the override. The override is no longer necessary. `small_battery.dmi` and `large_battery.dmi` both contain the `smes` and `smes-o` states. The inherited `update_icon_state()` produces exactly these two states, and `set_panel_open()` calls `update_appearance()`. The deletion restores the panel toggle, the correct icons, and the standard balloon alert. The `default_deconstruction_crowbar()` override and `NO_DEBRIS_AFTER_DECONSTRUCTION` still block deconstruction, as intended. ## Why It's Good For The Game Flatpacked stationary batteries do not work at all today. They deploy in a broken state, and no player action repairs them. This PR restores a full part of the colony fabricator power kit. ## Proof Of Testing I used a temporary focused unit test. This PR does not include that test. The goal was to confirm the behavior, not to add to the test suite. I also recorded a video of the fix in a live round.
Screenshots/Videos https://github.com/user-attachments/assets/5210971e-4785-419a-862b-c8aaaf9b9be4
Before the fix, the test fails. The runtime log shows the argument problem. The screwdriver sits in slot 2, and two null values follow it: ``` Runtime in modular_skyrat/modules/colony_fabricator/code/machines/power_storage_unit.dm,43: Cannot read null.tool_behaviour proc name: default deconstruction screwdriver (/obj/machinery/power/smes/battery_pack/default_deconstruction_screwdriver) src: the stationary battery (/obj/machinery/power/smes/battery_pack) call stack: the stationary battery: default deconstruction screwdriver(John Doe, the screwdriver, null, null) the stationary battery: screwdriver act(John Doe, the screwdriver) the stationary battery: tool act(John Doe, the screwdriver, null) the stationary battery: base item interaction(John Doe, the screwdriver, null) the screwdriver: melee attack chain(John Doe, the stationary battery, null, /list) ``` The attack log from the same run shows the hit. Combat mode was `FALSE`. This matches the description in the issue: ``` ATTACK: (John Doe) attacked [stationary battery] with the screwdriver (Test Room (126,126,14)) ``` After the fix, the same test passes. The panel opens and closes. `icon_state` changes correctly between `smes` and `smes-o`. I ran two more checks. `tools/build/build.bat dm` compiles with 0 errors. Dreamchecker (SpacemanDMM suite-1.11) reports 0 diagnostics. ## Changelog :cl: fix: Flatpacked stationary batteries can have their maintenance panel screwed open again, so you can connect a power terminal to them. /:cl: Written with Claude Code assistance, testing completed by me! Co-authored-by: Central <1962028+CentralSmith@users.noreply.github.com> --- .../code/machines/power_storage_unit.dm | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/modular_skyrat/modules/colony_fabricator/code/machines/power_storage_unit.dm b/modular_skyrat/modules/colony_fabricator/code/machines/power_storage_unit.dm index 1b3103345a8..1e41e553286 100644 --- a/modular_skyrat/modules/colony_fabricator/code/machines/power_storage_unit.dm +++ b/modular_skyrat/modules/colony_fabricator/code/machines/power_storage_unit.dm @@ -39,20 +39,6 @@ if(!mapload) flick("smes_deploy", src) -/obj/machinery/power/smes/battery_pack/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/screwdriver) - if(screwdriver.tool_behaviour != TOOL_SCREWDRIVER) - return FALSE - - screwdriver.play_tool_sound(src, 50) - toggle_panel_open() - if(panel_open) - icon_state = icon_state_open - to_chat(user, span_notice("You open the maintenance hatch of [src].")) - else - icon_state = icon_state_closed - to_chat(user, span_notice("You close the maintenance hatch of [src].")) - return TRUE - // previously NO_DECONSTRUCTION /obj/machinery/power/smes/battery_pack/default_deconstruction_crowbar(obj/item/crowbar, ignore_panel, custom_deconstruct) return NONE From ae9c94cc4f8cd10cb62b0d24273f2d54957424ef Mon Sep 17 00:00:00 2001 From: Tempest Date: Thu, 6 Aug 2026 12:48:04 -0500 Subject: [PATCH 094/139] Fix nightmares (and spider infestations) being unable to spawn on Moonstation (#6017) --- _maps/map_files/moonstation/moonstation.dmm | 115 ++++++++++++++++-- .../event_defines/ghostset/nightmare.dm | 9 ++ 2 files changed, 112 insertions(+), 12 deletions(-) diff --git a/_maps/map_files/moonstation/moonstation.dmm b/_maps/map_files/moonstation/moonstation.dmm index a6581b57f60..3176b0ebbdf 100644 --- a/_maps/map_files/moonstation/moonstation.dmm +++ b/_maps/map_files/moonstation/moonstation.dmm @@ -1701,6 +1701,14 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/checker, /area/station/hallway/secondary/exit/departure_lounge) +"auS" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/aft) "auW" = ( /obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 1 @@ -15281,6 +15289,11 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron/terracotta, /area/station/commons/storage/art) +"dUq" = ( +/obj/effect/decal/cleanable/glass, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/lower) "dUr" = ( /obj/effect/turf_decal/box/white/corners{ dir = 8 @@ -26097,6 +26110,20 @@ /obj/structure/closet/emcloset, /turf/open/floor/plating, /area/station/maintenance/department/security/lower) +"gJo" = ( +/obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2{ + color = "#ff0000"; + dir = 8; + name = "Scrubbers multi deck pipe adapter" + }, +/obj/machinery/atmospherics/pipe/multiz/supply/visible/layer4{ + color = "#0000ff"; + dir = 8; + name = "Supply multi deck pipe adapter" + }, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) "gJO" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Prison Wing Cells Maintenance" @@ -26366,6 +26393,11 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/checker, /area/station/hallway/primary/central/fore) +"gMw" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/port) "gMx" = ( /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 @@ -27659,6 +27691,13 @@ /obj/structure/transport/linear/tram, /turf/open/floor/plating, /area/station/terminal/lobby) +"hdZ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "hec" = ( /obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 1 @@ -31614,6 +31653,16 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) +"ibm" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/department/medical) "ibp" = ( /obj/effect/turf_decal/box/white{ color = "#9FED58" @@ -37756,6 +37805,13 @@ /obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/plating, /area/station/service/kitchen/abandoned) +"jIe" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/department/security/lower) "jIr" = ( /obj/effect/turf_decal/caution/stand_clear/white, /obj/effect/turf_decal/sand/plating, @@ -45184,6 +45240,11 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/dark, /area/station/science/ordnance/storage) +"lyh" = ( +/obj/structure/cable, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/department/public_mining) "lyl" = ( /obj/machinery/door/airlock{ id_tag = "Toilet3"; @@ -59177,6 +59238,14 @@ }, /turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) +"pdm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/fore) "pdp" = ( /obj/machinery/door/airlock/grunge, /obj/effect/mapping_helpers/airlock/autoname, @@ -62613,6 +62682,17 @@ /obj/effect/spawner/structure/window/survival_pod, /turf/open/floor/plating, /area/station/cargo/miningfoundry/event_protected) +"pVP" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/dorms) "pVT" = ( /obj/structure/reflector/box/anchored{ dir = 1 @@ -70479,6 +70559,13 @@ /obj/machinery/camera/autoname/prison/directional/east, /turf/open/floor/catwalk_floor/iron_dark, /area/station/security/prison/work) +"rUD" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/department/chapel) "rUE" = ( /obj/effect/mapping_helpers/broken_floor, /obj/effect/turf_decal/caution/white, @@ -77906,6 +77993,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/medical/paramedic) +"tRa" = ( +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/chemistry) "tRd" = ( /obj/effect/spawner/random/trash/graffiti, /turf/open/floor/plating, @@ -187382,7 +187473,7 @@ wWj kbd jcE oqb -tUm +dUq gEk rNs kJH @@ -198590,7 +198681,7 @@ mSI nmB ybk pUv -mLS +jIe ucZ oLK kvJ @@ -201473,7 +201564,7 @@ fGf rFm nFN fbp -oIO +tRa azS oIO uoD @@ -210179,7 +210270,7 @@ kJH kJH pfg kKx -mWg +lyh kdI kdI kdI @@ -248243,7 +248334,7 @@ ckk eZj rbD rui -rbD +gMw gzN ckk hCI @@ -256951,7 +257042,7 @@ lkv lkv dtq obG -ilj +gJo igY rZw rZw @@ -258271,7 +258362,7 @@ gft sCg qlq alL -uHj +ibm sCg cnM juK @@ -259490,7 +259581,7 @@ ajN ajN ktI ajN -ajN +pdm ajN ajN lZd @@ -263638,7 +263729,7 @@ cpS xae ycI nyc -iWg +hdZ bSs vws vWS @@ -268320,7 +268411,7 @@ lKm lKm lDi lKm -lKm +auS ooA elf dtZ @@ -270569,7 +270660,7 @@ dmv ncl llX vJe -dms +pVP nXy nXy nXy @@ -273426,7 +273517,7 @@ pqO iGo pqO pqO -pqI +rUD saR pqO lAK diff --git a/modular_zubbers/code/modules/storyteller/event_defines/ghostset/nightmare.dm b/modular_zubbers/code/modules/storyteller/event_defines/ghostset/nightmare.dm index e7588cf43ab..c5c5943bf3d 100644 --- a/modular_zubbers/code/modules/storyteller/event_defines/ghostset/nightmare.dm +++ b/modular_zubbers/code/modules/storyteller/event_defines/ghostset/nightmare.dm @@ -11,6 +11,15 @@ min_wizard_trigger_potency = 6 max_wizard_trigger_potency = 7 +/datum/round_event_control/nightmare/can_spawn_event(players_amt, allow_magic = FALSE) + . = ..() + if(!.) + return FALSE + + // Nightmares can only spawn in unlit maintenance, so don't offer the event + // (and burn a ghost poll on it) when the station has nowhere dark to put one. + return !isnull(find_maintenance_spawn(atmos_sensitive = TRUE, require_darkness = TRUE)) + /datum/round_event/ghost_role/nightmare minimum_required = 1 role_name = "nightmare" From 37a0ee78788309ec190527cff87f3d46091319df Mon Sep 17 00:00:00 2001 From: Orotheim <81803907+Orotheim@users.noreply.github.com> Date: Fri, 7 Aug 2026 00:41:03 +0100 Subject: [PATCH 095/139] Space Ruin Rebalance (#5983) ## About The Pull Request Rebalances space ruins to remove some of the stupidly overtuned stuff/nukie gear and add more actually unique items to space that aren't too powerful. Also gives a heroic laser musket to black market dealer because I think they should have access to an energy gun of some kind. ## Why It's Good For The Game Space contains a literal redsuit for fighting two melee simplemobs and a nukie smartgun for welding through two walls. By replacing these with more unique items and adding a bit of extra threat to space on top of it, it means there won't be ruins that are blatantly overpowered compared to the rest of space. Also added some new loot and threats to a ruin that previously had nothing in them so there's a reason to visit more ruins. As for the black market dealer there are a lot of situations where having at least a laser musket would be extremely useful, however this is entirely dependent on if the Cheap Materials Spawner spawns wood instead of cardboard, so by giving them a guaranteed heroic laser musket they have a laser gun that's good for simplemobs and has infinite shots so they can deal with ruins that spam turrets everywhere. ## Proof Of Testing Shuttle8532 Bridge Shuttle8532 bridge now has a stormtrooper shotgunner instead of two melee redsuits, and the room before it has the two melee commando's in it. The redsuit and real agent ID corpse has been replaced with a police modsuit. BRUTUS armory The SYN-C BRUTUS armory has had the nukie smartgun inside replaced with an energy shotgun, similar to the one the warden gets roundstart. Also adds a single commando with an SMG to the armory. Waypoint Station Removes the literal Deathsquad shell from Waypoint Station, there used to be a Pulverizer Shell in this locker, it was been replaced with a box of buckshot and some more aliens were added to the hook shotgun room as well. Market with Heroic Laser The heroic laser musket in the market. ARBORLINK Desk ARBORLINK Solars ARBORLINK Solars 2 Replaces some of the syndicate operatives with space-worthy commando's in the Arborlink Vault, prevents just spacing the entire ruin to clear it instantly. OneHalf Safe Adds some actual gear to the Excavator Stations safe (It will be in the safe, I just opened it to show the items), a Surplus Frontline MOD, same one from cargo that has slight armor and an advanced jetpack module. Adds some pirates that were trying to crack the safe themselves.
Screenshots/Videos
## Changelog :cl: balance: Replaces the contents of the OneHalf safe with a Surplus MOD and Advanced Ion Jetpack and adds some pirates. balance: Replaces the Nukie Smartgun in infested frigate with an energy shotgun and adds an SMG commando. balance: Replaces the pulverizer shell in waypointstation.dmm with a box of buckshot balance: Replaces the real syndicate modsuit shuttle8532 with a police modsuit. Adds a syndicate stormstrooper with a shotgun. balance: Replaces some of the Operatives in vault tango with commando's. add: Adds a heroic laser musket to the black market. /:cl: --------- Co-authored-by: Alexis --- .../bubberstation/infested_frigate.dmm | 4526 +++++++++++++++++ .../SpaceRuins/bubberstation/onehalf.dmm | 1610 ++++++ .../SpaceRuins/skyrat/blackmarket.dmm | 1 + .../SpaceRuins/skyrat/shuttle8532.dmm | 59 +- .../SpaceRuins/skyrat/vaulttango.dmm | 17 +- .../SpaceRuins/skyrat/waypointstation.dmm | 6 +- config/spaceruinblacklist.txt | 6 +- modular_zubbers/code/datums/ruins/space.dm | 18 + tgstation.dme | 1 + 9 files changed, 6222 insertions(+), 22 deletions(-) create mode 100644 _maps/RandomRuins/SpaceRuins/bubberstation/infested_frigate.dmm create mode 100644 _maps/RandomRuins/SpaceRuins/bubberstation/onehalf.dmm create mode 100644 modular_zubbers/code/datums/ruins/space.dm diff --git a/_maps/RandomRuins/SpaceRuins/bubberstation/infested_frigate.dmm b/_maps/RandomRuins/SpaceRuins/bubberstation/infested_frigate.dmm new file mode 100644 index 00000000000..040412d245f --- /dev/null +++ b/_maps/RandomRuins/SpaceRuins/bubberstation/infested_frigate.dmm @@ -0,0 +1,4526 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ar" = ( +/obj/structure/broken_flooring/singular/directional/south, +/turf/template_noop, +/area/space/nearstation) +"aN" = ( +/obj/item/stack/rods, +/turf/template_noop, +/area/space/nearstation) +"aV" = ( +/obj/effect/turf_decal{ + icon_state = "caution_red"; + dir = 1 + }, +/obj/effect/decal/cleanable/blood/gibs/xeno{ + icon_state = "xltrails_1"; + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"aZ" = ( +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/effect/decal/cleanable/glass{ + dir = 1 + }, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/structure/frame/computer{ + anchored = 1; + icon_state = "box_1" + }, +/obj/item/stock_parts/capacitor/adv{ + pixel_x = 8; + pixel_y = 5 + }, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"bf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "floor7-old" + }, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "gibleg"; + pixel_x = 3; + pixel_y = 19; + dir = 4 + }, +/turf/open/floor/mineral/plastitanium/airless, +/area/ruin/space/has_grav/infested_frigate) +"bP" = ( +/obj/structure/cable, +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 4 + }, +/obj/machinery/computer/operating, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"bR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/alien/egg/burst, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"bV" = ( +/obj/structure/table/glass, +/obj/item/pen{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/phone, +/obj/item/paper/crumpled/muddy/fluff/elephant_graveyard/rnd_notes{ + default_raw_text = "STERILIZATION ORDERS

Detailed findings:

A biological research lab within the HD-10180 system has suffered from a complete containment failure. The SYN-C Brutus is to deliver a nuclear payload via strike team. Everything inside and outside the facility is to be killed on sight, including any research staff. Nuclear authentication codes have been sent via red phone, as have other detailed orders.

The rest of the documents are maps and mundane information regarding the crew's destination."; + name = "STERILIZATION ORDERS"; + desc = "These are particularly boring for what they entail." + }, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"ce" = ( +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/effect/decal/cleanable/blood/gibs/xeno/up{ + icon_state = "xgibtorso"; + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"cF" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "gibleg"; + pixel_x = -19 + }, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "ltrails_1"; + dir = 5 + }, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "ltrails_1"; + dir = 9 + }, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "floor7-old" + }, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"cK" = ( +/obj/machinery/vending/donksofttoyvendor, +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/structure/cable, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"cW" = ( +/turf/closed/wall/mineral/plastitanium/overspace, +/area/ruin/space/has_grav/infested_frigate) +"dd" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/mob/living/carbon/alien/larva{ + faction = list("syndicate","xenomorph") + }, +/obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"dp" = ( +/obj/machinery/door/poddoor/preopen, +/obj/structure/fans/tiny, +/obj/structure/alien/resin/membrane, +/obj/structure/alien/weeds, +/obj/structure/alien/weeds/node{ + maximum_growtime = 240000; + minimum_growtime = 120000; + growtime = 150000 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"dD" = ( +/obj/item/ammo_casing/spent, +/obj/effect/decal/cleanable/blood/gibs/xeno/up{ + icon_state = "xgibhead"; + dir = 4 + }, +/mob/living/basic/alien{ + faction = list("syndicate","xenomorph") + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"dI" = ( +/obj/item/shard{ + icon_state = "titaniumtiny" + }, +/obj/structure/cable, +/obj/structure/alien/weeds, +/obj/machinery/power/smes, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"dS" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/item/broken_missile, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"dU" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno/up{ + icon_state = "xgib1" + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"eh" = ( +/obj/effect/turf_decal{ + icon_state = "arrows_red"; + dir = 4 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"ek" = ( +/turf/closed/wall/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"er" = ( +/obj/structure/alien/weeds, +/mob/living/basic/alien{ + faction = list("syndicate","xenomorph") + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"eO" = ( +/obj/structure/sign/departments/engineering/directional/west, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "gibarm" + }, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "ltrails_1"; + dir = 4 + }, +/obj/machinery/light/broken/directional/west, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"eU" = ( +/obj/effect/turf_decal{ + dir = 4 + }, +/obj/effect/turf_decal{ + icon_state = "bot_right_red" + }, +/obj/effect/decal/cleanable/blood/gibs/xeno{ + icon_state = "xgibtorso" + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"eY" = ( +/obj/item/ammo_casing/spent, +/turf/template_noop, +/area/space/nearstation) +"ff" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"fi" = ( +/obj/structure/cable, +/obj/effect/turf_decal{ + icon_state = "arrows_red"; + dir = 4 + }, +/obj/effect/turf_decal{ + dir = 1 + }, +/obj/effect/turf_decal, +/obj/structure/alien/weeds, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "gib1-old" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/mob/living/basic/alien{ + faction = list("syndicate","xenomorph") + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"fz" = ( +/obj/structure/closet/crate/trashcart/filled, +/obj/effect/spawner/random/exotic/technology, +/obj/effect/spawner/random/trash, +/obj/effect/spawner/random/trash, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"fK" = ( +/obj/effect/spawner/random/trash, +/turf/template_noop, +/area/space/nearstation) +"fS" = ( +/obj/effect/turf_decal{ + dir = 4 + }, +/obj/effect/turf_decal{ + icon_state = "stand_clear_red"; + dir = 8 + }, +/obj/item/ammo_casing/spent, +/obj/effect/decal/cleanable/blood/gibs/xeno{ + icon_state = "tracks"; + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"fU" = ( +/obj/effect/turf_decal{ + icon_state = "arrows_red"; + dir = 8 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 8 + }, +/obj/structure/sign/poster/contraband/random/directional/north, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"ge" = ( +/obj/item/shard, +/turf/template_noop, +/area/space/nearstation) +"gh" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/item/shard{ + icon_state = "medium" + }, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"gm" = ( +/obj/effect/decal/cleanable/blood/tracks{ + desc = "Your instincts say you shouldn't be following these."; + icon_state = "ltrails_1"; + dir = 10 + }, +/obj/effect/decal/cleanable/food/egg_smudge, +/obj/machinery/light/small/broken/directional/south, +/turf/open/floor/iron/freezer, +/area/ruin/space/has_grav/infested_frigate) +"gz" = ( +/obj/structure/cable, +/obj/effect/turf_decal{ + dir = 1 + }, +/obj/effect/turf_decal, +/obj/structure/alien/weeds, +/obj/structure/bed/nest, +/obj/effect/mob_spawn/corpse/human/engineer, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"gA" = ( +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/turf/closed/wall/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"gG" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/turf_decal{ + icon_state = "bot_right_white" + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/effect/mob_spawn/corpse/human/doctor, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"gI" = ( +/obj/structure/table_frame, +/obj/effect/decal/cleanable/glass, +/obj/effect/gibspawner/human/bodypartless, +/obj/structure/cable, +/obj/effect/turf_decal{ + icon_state = "warningline_red"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"ha" = ( +/obj/effect/decal/cleanable/blood/gibs/robot_debris{ + icon_state = "gibup" + }, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "floor7-old" + }, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"hd" = ( +/obj/machinery/door/airlock/external/ruin, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"hq" = ( +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "larva_head_s" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"hD" = ( +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "gibup1" + }, +/obj/machinery/light/small/broken/directional/west, +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 8 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"hQ" = ( +/obj/effect/turf_decal{ + dir = 8 + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "gibleg"; + pixel_x = 1; + pixel_y = -5 + }, +/obj/effect/decal/cleanable/blood/tracks{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"hR" = ( +/obj/machinery/suit_storage_unit/open, +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/structure/cable, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"hV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/clothing/mask/facehugger/impregnated, +/obj/structure/cable, +/obj/effect/spawner/random/exotic/antag_gear, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"id" = ( +/obj/machinery/light/small/red/dim/directional/north, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "ltrails_1"; + dir = 4 + }, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "gibarm"; + dir = 4; + pixel_x = -6; + pixel_y = -21 + }, +/turf/open/floor/mineral/plastitanium/airless, +/area/ruin/space/has_grav/infested_frigate) +"if" = ( +/obj/effect/turf_decal{ + dir = 8 + }, +/obj/machinery/mech_bay_recharge_port, +/obj/effect/turf_decal{ + dir = 10 + }, +/obj/machinery/light/very_dim/directional/south, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"ij" = ( +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/plastic, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"io" = ( +/obj/structure/cable, +/obj/structure/alien/weeds, +/obj/effect/decal/cleanable/glass, +/obj/structure/alien/weeds, +/obj/item/shard{ + icon_state = "plasmatiny" + }, +/obj/item/shard{ + icon_state = "titaniumtiny" + }, +/obj/structure/alien/egg/burst, +/obj/item/clothing/mask/facehugger/dead, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"iv" = ( +/obj/item/coin/antagtoken{ + pixel_y = 4; + pixel_x = 3 + }, +/obj/structure/closet/syndicate, +/obj/item/clothing/under/syndicate/tacticool, +/obj/item/clothing/under/syndicate/tacticool, +/obj/item/clothing/under/syndicate/tacticool/skirt, +/obj/item/clothing/under/syndicate/tacticool/skirt, +/obj/item/clothing/gloves/combat{ + pixel_y = -6 + }, +/obj/effect/spawner/random/exotic/syndie, +/obj/effect/spawner/random/exotic/syndie, +/obj/effect/spawner/random/exotic/syndie, +/obj/effect/spawner/random/exotic/syndie, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/obj/item/clothing/under/syndicate/combat, +/obj/item/clothing/shoes/combat, +/obj/item/clothing/shoes/combat, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"iy" = ( +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 4 + }, +/obj/structure/cable, +/mob/living/basic/alien{ + faction = list("syndicate","xenomorph") + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"iE" = ( +/obj/effect/decal/cleanable/blood/gibs/robot_debris{ + icon_state = "gib4" + }, +/obj/effect/decal/cleanable/blood/tracks{ + dir = 8 + }, +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/plastic, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"iM" = ( +/obj/structure/broken_flooring/pile/directional/east, +/turf/template_noop, +/area/space/nearstation) +"iX" = ( +/obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "gib2-old" + }, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"iZ" = ( +/obj/structure/cable, +/obj/effect/turf_decal{ + icon_state = "arrows_red"; + dir = 4 + }, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "gibdown1" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/item/ammo_casing/spent, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"ji" = ( +/obj/structure/cable, +/obj/structure/alien/weeds, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "floor6-old" + }, +/obj/item/shard{ + icon_state = "plastitaniumtiny" + }, +/mob/living/basic/alien/queen/large{ + loot = list(/obj/effect/gibspawner/xeno,/obj/item/ammo_box/magazine/smartgun,/obj/effect/mob_spawn/corpse/human/syndicatecommando/soft_suit); + desc = "What you saw in your dreams last night."; + faction = list("syndicate","xenomorph") + }, +/obj/structure/alien/egg/burst, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"jy" = ( +/obj/effect/turf_decal{ + dir = 4 + }, +/obj/effect/turf_decal{ + dir = 1 + }, +/obj/effect/turf_decal{ + dir = 5 + }, +/obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "gib1-old" + }, +/obj/item/ammo_casing/spent, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"jI" = ( +/obj/item/chair/stool{ + dir = 1 + }, +/obj/effect/turf_decal{ + icon_state = "warninglinecorner_white"; + dir = 4 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"jP" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/structure/alien/resin/membrane{ + max_integrity = 1600; + desc = "Resin just thin enough to let light pass through, but it's congealing in the same way as the thicker stuff."; + name = "viscous resin membrane" + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"kc" = ( +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 4 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/structure/barricade/security, +/obj/structure/cable, +/obj/machinery/light/small/red/dim/directional/east, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"ko" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/space/has_grav/infested_frigate) +"kq" = ( +/obj/structure/sign/departments/medbay/alt/directional/east, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "gibhead" + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"kt" = ( +/obj/machinery/porta_turret/syndicate/pod{ + dir = 6; + max_integrity = 60; + faction = list("syndicate","xenomorph") + }, +/turf/closed/wall/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"kw" = ( +/obj/machinery/door/poddoor/preopen, +/obj/structure/fans/tiny, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/alien/resin, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"kD" = ( +/obj/structure/cable, +/obj/structure/barricade/security, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/structure/alien/weeds/node{ + maximum_growtime = 240000; + minimum_growtime = 120000; + growtime = 150000 + }, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/structure/door_assembly/door_assembly_hatch{ + name = "SYN-C Brutus Bridge" + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"kN" = ( +/obj/structure/barricade/security, +/obj/structure/door_assembly/door_assembly_ext{ + anchored = 1 + }, +/turf/open/floor/mineral/plastitanium/airless, +/area/ruin/space/has_grav/infested_frigate) +"kT" = ( +/obj/machinery/power/shuttle_engine/heater{ + dir = 8 + }, +/turf/closed/wall/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"ld" = ( +/obj/effect/mob_spawn/corpse/human/syndicatepilot, +/obj/effect/turf_decal{ + icon_state = "warn_end_white"; + dir = 4 + }, +/obj/effect/decal/cleanable/blood/gibs/old{ + icon_state = "gib4-old" + }, +/obj/effect/decal/cleanable/blood/old{ + icon_state = "gib2" + }, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"lg" = ( +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/structure/cable, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"lF" = ( +/obj/structure/lattice, +/obj/item/stack/rods{ + amount = 25 + }, +/turf/template_noop, +/area/space/nearstation) +"mj" = ( +/obj/machinery/light/small/red/dim/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/structure/alien/egg/burst, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"mm" = ( +/obj/machinery/door/poddoor{ + id = "brutus exterior bolts" + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"mz" = ( +/obj/structure/alien/resin/membrane{ + max_integrity = 1600; + desc = "Resin just thin enough to let light pass through, but it's congealing in the same way as the thicker stuff."; + name = "viscous resin membrane" + }, +/obj/structure/alien/weeds/node{ + maximum_growtime = 240000; + minimum_growtime = 120000; + growtime = 150000 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"mD" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/poddoor{ + id = "brutus exterior bolts" + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"mK" = ( +/obj/effect/turf_decal{ + icon_state = "delivery_red" + }, +/obj/effect/turf_decal, +/obj/structure/mecha_wreckage/gygax/dark{ + anchored = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"mM" = ( +/obj/structure/alien/egg/burst, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"ne" = ( +/obj/effect/turf_decal, +/obj/machinery/recharge_station{ + icon_state = "borgdecon2" + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"nF" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/mecha_wreckage/mauler{ + anchored = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"nI" = ( +/obj/machinery/power/shuttle_engine/propulsion{ + dir = 8; + max_integrity = 2000 + }, +/turf/closed/wall/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"nZ" = ( +/obj/machinery/porta_turret/syndicate/pod{ + dir = 9; + max_integrity = 60; + faction = list("syndicate","xenomorph") + }, +/turf/closed/wall/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"oi" = ( +/obj/structure/table/glass, +/obj/effect/decal/cleanable/glass, +/obj/item/paper_bin{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/folder/syndicate/red, +/obj/item/pen{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/modular_computer/laptop{ + name = "secured laptop" + }, +/obj/item/clothing/mask/facehugger/impregnated, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/obj/machinery/button/door{ + id = "brutusexterior"; + name = "Brutus exterior blast door control"; + pixel_y = -26; + req_access = list("syndicate") + }, +/obj/structure/cable, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"oj" = ( +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"oz" = ( +/obj/effect/decal/cleanable/blood/gibs/old, +/obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear, +/turf/open/floor/mineral/plastitanium/airless, +/area/ruin/space/has_grav/infested_frigate) +"oD" = ( +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/decal/cleanable/blood/tracks{ + desc = "Your instincts say you shouldn't be following these."; + dir = 8; + icon_state = "ltrails_2" + }, +/obj/effect/decal/cleanable/blood/tracks{ + desc = "Your instincts say you shouldn't be following these."; + icon_state = "ltrails_1"; + dir = 6 + }, +/obj/item/ammo_casing/spent, +/obj/machinery/newscaster/directional/south, +/turf/open/floor/mineral/titanium/tiled/white, +/area/ruin/space/has_grav/infested_frigate) +"pf" = ( +/obj/structure/lattice, +/obj/item/storage/belt/bandolier{ + pixel_y = 2; + pixel_x = 15 + }, +/turf/template_noop, +/area/space/nearstation) +"ph" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc/auto_name/directional/north{ + equipment = 1 + }, +/obj/structure/cable, +/obj/effect/spawner/random/structure/crate_loot, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"pm" = ( +/obj/machinery/airalarm/directional/west, +/obj/effect/mapping_helpers/airalarm/all_access, +/obj/structure/alien/weeds, +/obj/effect/decal/cleanable/plastic, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"pB" = ( +/obj/machinery/porta_turret/syndicate/pod{ + dir = 5; + max_integrity = 60; + faction = list("syndicate","xenomorph") + }, +/turf/closed/wall/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"pH" = ( +/obj/effect/turf_decal{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood/gibs/robot_debris/limb, +/obj/structure/fluff/broken_canister_frame, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"pL" = ( +/turf/template_noop, +/area/template_noop) +"pO" = ( +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/bar, +/obj/structure/cable, +/obj/effect/decal/cleanable/blood/old{ + icon_state = "gibbl4" + }, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/chair{ + dir = 1 + }, +/turf/open/floor/mineral/titanium/tiled/white, +/area/ruin/space/has_grav/infested_frigate) +"pV" = ( +/obj/structure/barricade/security, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "floor1-old" + }, +/obj/item/ammo_casing/spent, +/obj/machinery/light/red/dim/directional/north, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"pW" = ( +/obj/effect/spawner/random/vending/snackvend, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"pY" = ( +/obj/structure/cable, +/obj/machinery/power/rtg, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"ql" = ( +/obj/effect/decal/cleanable/glass{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"qE" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/item/gun/energy/laser/scatter/shotty, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"qY" = ( +/obj/effect/decal/cleanable/glass, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"rg" = ( +/obj/effect/turf_decal{ + dir = 4 + }, +/obj/item/trash/flare, +/obj/effect/turf_decal{ + icon_state = "bot_left_red" + }, +/obj/structure/alien/weeds, +/obj/effect/decal/cleanable/plastic, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"ri" = ( +/obj/structure/cable, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"ro" = ( +/obj/item/shard{ + icon_state = "titaniumtiny" + }, +/obj/structure/cable, +/obj/machinery/power/smes, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"rw" = ( +/obj/structure/broken_flooring/plating/directional/east, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/turf/template_noop, +/area/space/nearstation) +"sn" = ( +/obj/structure/lattice, +/obj/structure/alien/resin/membrane{ + max_integrity = 1600; + desc = "Resin just thin enough to let light pass through, but it's congealing in the same way as the thicker stuff."; + name = "viscous resin membrane" + }, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/structure/door_assembly/door_assembly_hatch{ + anchored = 1; + name = "crew quarters"; + desc = "People lived in this place." + }, +/turf/template_noop, +/area/ruin/space/has_grav/infested_frigate) +"sD" = ( +/obj/machinery/door/poddoor/preopen, +/obj/structure/fans/tiny, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/alien/weeds, +/obj/structure/alien/resin, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"tj" = ( +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/glass, +/obj/item/clothing/mask/facehugger/dead, +/obj/effect/turf_decal{ + icon_state = "warningline_red"; + dir = 4 + }, +/obj/item/ammo_casing/spent, +/obj/item/radio, +/obj/item/radio{ + pixel_x = 5 + }, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"tC" = ( +/obj/structure/cable, +/obj/structure/alien/weeds, +/obj/effect/decal/cleanable/glass{ + icon_state = "large" + }, +/obj/structure/bed/nest, +/obj/effect/decal/cleanable/glass, +/obj/structure/sign/warning/fire/directional/south, +/obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"tG" = ( +/obj/structure/cable, +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 8 + }, +/obj/machinery/vending/medical/infested_frigate, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"tI" = ( +/obj/effect/turf_decal{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"tW" = ( +/obj/effect/decal/cleanable/glass, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"uq" = ( +/obj/effect/decal/cleanable/glass, +/obj/structure/cable, +/obj/structure/chair/office/tactical, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "gib1-old" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/mob/living/basic/alien{ + faction = list("syndicate","xenomorph") + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"us" = ( +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/decal/cleanable/blood/old{ + icon_state = "gibbl1" + }, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/effect/spawner/random/contraband/narcotics{ + pixel_x = 7; + pixel_y = 9 + }, +/obj/item/toy/cards/deck/syndicate{ + pixel_x = -8; + pixel_y = 11 + }, +/obj/effect/spawner/random/food_or_drink{ + pixel_x = 10 + }, +/obj/effect/spawner/random/food_or_drink/refreshing_beverage{ + pixel_y = 3; + pixel_x = -7 + }, +/obj/structure/table_frame/wood, +/turf/open/floor/mineral/titanium/tiled/white, +/area/ruin/space/has_grav/infested_frigate) +"vj" = ( +/obj/structure/table/optable, +/obj/effect/turf_decal{ + icon_state = "bot_white" + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"vl" = ( +/mob/living/basic/alien{ + faction = list("syndicate","xenomorph") + }, +/obj/structure/cable, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"vm" = ( +/obj/structure/alien/weeds, +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "floor1-old" + }, +/obj/structure/bed/nest, +/obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"vr" = ( +/obj/structure/cable, +/obj/effect/turf_decal{ + dir = 8 + }, +/obj/effect/turf_decal{ + dir = 1 + }, +/obj/effect/turf_decal, +/obj/structure/alien/weeds, +/obj/effect/decal/cleanable/glass, +/obj/item/shard{ + icon_state = "plasmasmall" + }, +/obj/structure/alien/egg/burst, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"vz" = ( +/obj/item/stack/sheet/glass{ + pixel_y = 3 + }, +/obj/item/stack/cable_coil/five, +/obj/structure/frame/computer{ + anchored = 1; + icon_state = "1"; + name = "Syndicate bridge console"; + desc = "At least it used to be." + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"vB" = ( +/obj/machinery/porta_turret/syndicate/pod{ + dir = 10; + max_integrity = 60; + faction = list("syndicate","xenomorph") + }, +/turf/closed/wall/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"vF" = ( +/obj/structure/bed/maint, +/obj/effect/decal/cleanable/blood{ + icon_state = "floor1-old" + }, +/obj/structure/sink/directional/south, +/obj/effect/mob_spawn/corpse/human{ + mob_name = "captive"; + brute_damage = 200 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"vO" = ( +/obj/machinery/iv_drip, +/obj/item/clothing/mask/facehugger/dead, +/obj/machinery/airalarm/directional/west, +/obj/effect/mapping_helpers/airalarm/all_access, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 8 + }, +/obj/structure/cable, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"wu" = ( +/obj/item/ammo_casing/spent, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/xeno{ + icon_state = "xltrails_1"; + dir = 8 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"wC" = ( +/obj/machinery/power/shuttle_engine/propulsion{ + dir = 8; + max_integrity = 2000 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"wF" = ( +/obj/effect/turf_decal{ + icon_state = "arrows_red"; + dir = 8 + }, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 8 + }, +/obj/item/ammo_casing/spent, +/obj/effect/decal/cleanable/blood{ + icon_state = "tracks"; + dir = 4 + }, +/obj/structure/cable, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"wT" = ( +/obj/effect/turf_decal{ + icon_state = "arrows_red"; + dir = 4 + }, +/obj/effect/decal/cleanable/blood/oil/slippery{ + icon_state = "floor7" + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"wX" = ( +/obj/structure/alien/resin/membrane{ + max_integrity = 1600; + desc = "Resin just thin enough to let light pass through, but it's congealing in the same way as the thicker stuff."; + name = "viscous resin membrane" + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"wZ" = ( +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/effect/decal/cleanable/blood{ + icon_state = "drip3" + }, +/obj/structure/sign/poster/contraband/random/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"xc" = ( +/obj/machinery/suit_storage_unit/open, +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/structure/cable, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"xj" = ( +/obj/machinery/vending/cigarette/syndicate, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"xC" = ( +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/structure/showcase/machinery/tv{ + icon_state = "computer_broken"; + desc = "It would have been locked anyway."; + name = "syndicate navigation console" + }, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"xG" = ( +/obj/effect/spawner/random/exotic/antag_gear_weak{ + pixel_y = 5 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/obj/effect/spawner/random/exotic/antag_gear, +/obj/structure/table/glass/plasmaglass, +/obj/effect/spawner/random/contraband/permabrig_gear, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"xH" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/spawner/random/trash, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/mineral/plastitanium/airless, +/area/space/nearstation) +"yg" = ( +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/bar, +/obj/structure/table/wood, +/obj/item/reagent_containers/cup/glass/bottle/beer{ + pixel_x = 6; + pixel_y = 17 + }, +/obj/effect/turf_decal{ + icon_state = "warninglinecorner_white"; + dir = 4 + }, +/obj/effect/spawner/random/food_or_drink/dinner{ + pixel_x = -8; + pixel_y = 9 + }, +/obj/effect/spawner/random/contraband/narcotics{ + pixel_x = -6; + pixel_y = 11 + }, +/obj/effect/spawner/random/food_or_drink/dinner{ + pixel_x = 6; + pixel_y = 1 + }, +/turf/open/floor/mineral/titanium/tiled/white, +/area/ruin/space/has_grav/infested_frigate) +"yh" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/vomit/old, +/obj/item/broken_bottle, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"yk" = ( +/obj/machinery/door/airlock/hatch, +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/effect/mapping_helpers/airlock/welded, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"yv" = ( +/obj/structure/cable, +/obj/effect/spawner/random/trash/garbage, +/obj/structure/alien/weeds, +/obj/effect/decal/cleanable/glass, +/obj/machinery/power/rtg, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"yK" = ( +/obj/effect/decal/cleanable/glass, +/obj/structure/alien/weeds/node{ + maximum_growtime = 240000; + minimum_growtime = 120000; + growtime = 150000 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"yM" = ( +/obj/effect/decal/cleanable/blood{ + icon_state = "floor7-old" + }, +/obj/effect/decal/cleanable/glass, +/obj/machinery/button/door/directional/north{ + name = "prisoner isolation shutter"; + id = "captivity" + }, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"yR" = ( +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/effect/decal/cleanable/blood{ + icon_state = "armorblood" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"yS" = ( +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/obj/machinery/vending/cola/black{ + icon_state = "cola_black-broken" + }, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"yW" = ( +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/obj/effect/spawner/random/entertainment/money_large{ + pixel_x = 7; + pixel_y = -1 + }, +/obj/structure/table/glass/plasmaglass, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"zf" = ( +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "gibdown1" + }, +/obj/structure/cable, +/obj/item/ammo_casing/spent, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"zk" = ( +/obj/item/storage/belt/military, +/obj/effect/decal/cleanable/glass{ + dir = 4 + }, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/effect/decal/cleanable/plastic, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"zl" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/item/ammo_casing/spent, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"zm" = ( +/obj/structure/broken_flooring/singular/directional/east, +/turf/template_noop, +/area/space/nearstation) +"zv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"zA" = ( +/obj/machinery/light/very_dim/directional/south, +/obj/structure/window/spawner/directional/west, +/obj/effect/decal/cleanable/glass, +/obj/structure/table_frame, +/obj/item/shard, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/obj/effect/spawner/random/medical/minor_healing, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"zP" = ( +/obj/effect/turf_decal/tile/bar, +/turf/closed/wall/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Ae" = ( +/mob/living/basic/alien{ + faction = list("syndicate","xenomorph") + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Ai" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + welded = 1; + dir = 4 + }, +/mob/living/basic/trooper/syndicate/ranged/space{ + name = "Lone Survivor"; + desc = "The last surviving member of the frigate. Shaking heavily as they hold their SMG."; + health = 200 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"As" = ( +/obj/structure/alien/resin{ + max_integrity = 2000; + name = "viscous resin"; + desc = "The resin is thick and it keeps collapsing on itself." + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"AM" = ( +/obj/effect/decal/cleanable/glass{ + icon_state = "plastitaniumtiny" + }, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "gib3-old" + }, +/obj/structure/alien/weeds/node{ + maximum_growtime = 240000; + minimum_growtime = 120000; + growtime = 150000 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"AQ" = ( +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/item/ammo_casing/spent, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 4 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Bb" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Bm" = ( +/obj/machinery/vending/boozeomat/syndicate, +/turf/open/floor/iron/freezer, +/area/ruin/space/has_grav/infested_frigate) +"Bo" = ( +/obj/structure/cable, +/obj/structure/closet/firecloset/full{ + anchored = 1 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_red"; + dir = 8 + }, +/obj/item/storage/toolbox/emergency, +/obj/effect/turf_decal{ + icon_state = "warningline_red"; + dir = 4 + }, +/obj/structure/sign/warning/fire/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/machinery/light/broken/directional/east, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"BN" = ( +/obj/structure/alien/weeds, +/obj/structure/cable, +/obj/effect/decal/cleanable/glass{ + icon_state = "plasmatiny" + }, +/obj/structure/bed/nest, +/obj/effect/mob_spawn/corpse/human/cargo_tech, +/obj/item/shard{ + icon_state = "titaniumtiny" + }, +/obj/machinery/power/terminal{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"Cp" = ( +/obj/structure/broken_flooring/plating/directional/north, +/obj/structure/broken_flooring/pile/directional/west, +/turf/template_noop, +/area/space/nearstation) +"CH" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/space/nearstation) +"CM" = ( +/obj/effect/decal/cleanable/glass, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 4 + }, +/obj/structure/alien/weeds/node{ + maximum_growtime = 240000; + minimum_growtime = 120000; + growtime = 150000 + }, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"CN" = ( +/obj/machinery/door/airlock/hatch, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"CZ" = ( +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/obj/effect/spawner/random/trash/mess, +/obj/structure/sign/poster/contraband/random/directional/south, +/obj/item/kirbyplants/random, +/turf/open/floor/mineral/titanium/tiled/white, +/area/ruin/space/has_grav/infested_frigate) +"DM" = ( +/obj/structure/cable, +/obj/structure/alien/weeds, +/obj/item/shard{ + icon_state = "plastitaniumtiny" + }, +/obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear, +/obj/structure/bed/nest, +/mob/living/basic/alien/drone{ + loot = list(/obj/effect/gibspawner/xeno); + faction = list("syndicate","xenomorph") + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"DT" = ( +/obj/structure/kitchenspike{ + icon_state = "spikebloodymonkey"; + desc = "Well, if that isn't the worst thing." + }, +/obj/effect/decal/cleanable/blood/gibs/old, +/turf/open/floor/iron/freezer, +/area/ruin/space/has_grav/infested_frigate) +"DV" = ( +/obj/effect/turf_decal{ + icon_state = "arrows_red"; + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/structure/alien/weeds, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Ed" = ( +/obj/effect/turf_decal{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood/gibs/xeno{ + icon_state = "xgibmid1" + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Eg" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"EA" = ( +/obj/item/grenade/smokebomb{ + pixel_x = 5 + }, +/obj/item/grenade/smokebomb{ + pixel_x = 5 + }, +/obj/item/suppressor, +/obj/item/gun/energy/e_gun/mini, +/obj/structure/closet/crate/secure/weapon{ + req_access = list("syndicate") + }, +/obj/item/grenade/c4, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/obj/effect/spawner/random/exotic/antag_gear, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"ES" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"Fl" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/structure/alien/resin{ + max_integrity = 2000; + name = "viscous resin"; + desc = "The resin is thick and it keeps collapsing on itself." + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"FC" = ( +/obj/structure/toilet{ + dir = 4 + }, +/obj/effect/spawner/random/trash/mess, +/obj/effect/spawner/random/contraband/narcotics, +/obj/effect/spawner/random/entertainment/drugs, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"FI" = ( +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"FJ" = ( +/obj/structure/cable, +/obj/effect/turf_decal{ + dir = 1 + }, +/obj/effect/turf_decal, +/obj/structure/alien/weeds, +/obj/effect/decal/cleanable/glass{ + icon_state = "plastitaniumtiny" + }, +/obj/structure/alien/weeds, +/obj/structure/bed/nest, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"FL" = ( +/obj/structure/closet/crate/trashcart, +/obj/item/clothing/mask/facehugger/toy, +/obj/item/storage/fancy/cigarettes/cigpack_cannabis, +/obj/effect/mob_spawn/corpse/human/charredskeleton, +/turf/template_noop, +/area/space/nearstation) +"FQ" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/spawner/random/exotic/languagebook, +/obj/machinery/airalarm/directional/south, +/obj/effect/mapping_helpers/airalarm/all_access, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "gib6-old" + }, +/obj/item/reagent_containers/applicator/pill/cyanide{ + pixel_y = -2; + pixel_x = 6 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/obj/structure/closet/crate/bin, +/obj/effect/spawner/random/trash, +/obj/effect/spawner/random/trash, +/obj/structure/fluff/paper/stack{ + dir = 4 + }, +/obj/item/food/burger/xeno, +/obj/structure/cable, +/obj/effect/spawner/random/trash, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"FZ" = ( +/mob/living/basic/bot/firebot{ + faction = list("syndicate","xenomorph"); + name = "Mr. Squirtsky"; + desc = "He seems much happier with the new management!" + }, +/obj/effect/turf_decal{ + icon_state = "warningline_red"; + dir = 5 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_red"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"Gg" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/effect/decal/cleanable/glass, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"Gi" = ( +/obj/structure/window/spawner/directional/west, +/obj/structure/table/glass, +/obj/item/surgical_drapes, +/obj/effect/spawner/random/medical/surgery_tool_advanced, +/obj/item/reagent_containers/hypospray/medipen{ + pixel_y = 6 + }, +/obj/item/reagent_containers/hypospray/medipen, +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/structure/cable, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"Gm" = ( +/obj/item/trash/flare, +/obj/item/ammo_casing/spent, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/machinery/light/broken/directional/south, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Gn" = ( +/obj/structure/frame/computer{ + dir = 1; + anchored = 1 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/obj/structure/sign/poster/contraband/random/directional/south, +/obj/structure/cable, +/obj/structure/alien/weeds, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"Gs" = ( +/obj/item/clothing/mask/facehugger/impregnated, +/obj/structure/closet/crate/secure/freezer/pizza, +/obj/item/storage/box/ingredients/american, +/obj/item/storage/box/monkeycubes, +/obj/item/food/meat/slab/human, +/obj/item/food/meat/slab/human, +/obj/item/food/meat/slab/human, +/obj/effect/mob_spawn/corpse/human/clown{ + dir = 4 + }, +/turf/open/floor/iron/freezer, +/area/ruin/space/has_grav/infested_frigate) +"GK" = ( +/obj/structure/door_assembly/door_assembly_hatch{ + anchored = 1 + }, +/obj/structure/barricade/security, +/obj/structure/alien/resin/membrane, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"GM" = ( +/obj/effect/turf_decal{ + dir = 4 + }, +/obj/effect/turf_decal{ + dir = 6 + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"GW" = ( +/obj/effect/turf_decal{ + icon_state = "bot_red" + }, +/obj/structure/closet/firecloset/full{ + anchored = 1 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_red"; + dir = 10 + }, +/obj/item/clothing/head/utility/welding, +/obj/effect/decal/cleanable/plastic, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"Hh" = ( +/obj/structure/broken_flooring/plating/directional/north, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/turf/template_noop, +/area/space/nearstation) +"Hj" = ( +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "gib6-old"; + dir = 8 + }, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"HG" = ( +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/mob/living/basic/alien{ + faction = list("syndicate","xenomorph") + }, +/turf/open/floor/mineral/titanium/tiled/white, +/area/ruin/space/has_grav/infested_frigate) +"HL" = ( +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/bar, +/obj/structure/table/reinforced, +/obj/structure/closet/mini_fridge/grimy{ + pixel_y = 6 + }, +/obj/effect/spawner/random/food_or_drink/refreshing_beverage, +/obj/effect/spawner/random/food_or_drink/booze{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/effect/spawner/random/food_or_drink/booze{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/effect/spawner/random/food_or_drink/donkpockets_single, +/obj/effect/spawner/random/food_or_drink/booze, +/obj/effect/spawner/random/food_or_drink/booze, +/obj/item/bodypart/head, +/obj/machinery/chem_dispenser/drinks/beer{ + pixel_y = 32 + }, +/turf/open/floor/mineral/titanium/tiled/white, +/area/ruin/space/has_grav/infested_frigate) +"HP" = ( +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "larva_chest_s" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/mob/living/basic/alien{ + faction = list("syndicate","xenomorph") + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"HQ" = ( +/obj/structure/cable, +/obj/effect/turf_decal, +/obj/effect/turf_decal{ + dir = 1 + }, +/obj/effect/turf_decal{ + dir = 4 + }, +/obj/structure/alien/weeds, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/machinery/door/airlock/highsecurity{ + req_access = list("syndicate") + }, +/obj/effect/mapping_helpers/airlock/locked, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"HW" = ( +/obj/item/tank/internals/oxygen/empty, +/turf/template_noop, +/area/space/nearstation) +"HX" = ( +/obj/item/storage/medkit/o2, +/obj/item/storage/medkit/toxin, +/obj/item/clothing/glasses/hud/health/night, +/obj/item/storage/pill_bottle/stimulant, +/obj/item/clothing/suit/apron/surgical, +/obj/item/healthanalyzer, +/obj/item/clothing/gloves/latex, +/obj/effect/turf_decal{ + icon_state = "bot_left_white" + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/structure/closet/syndicate, +/obj/structure/cable, +/obj/item/gun/syringe, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"Ii" = ( +/obj/structure/cable, +/obj/structure/barricade/security, +/obj/structure/door_assembly/door_assembly_hatch{ + name = "SYN-C Brutus Bridge" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"Ir" = ( +/obj/effect/decal/cleanable/blood/gibs/old{ + icon_state = "gibmid1" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/alien/weeds, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Iz" = ( +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"IB" = ( +/obj/effect/decal/cleanable/glass, +/obj/effect/mapping_helpers/burnt_floor, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/structure/alien/weeds, +/turf/open/floor/mineral/plastitanium/airless, +/area/space/nearstation) +"IF" = ( +/obj/structure/alien/weeds/node{ + maximum_growtime = 240000; + minimum_growtime = 120000; + growtime = 150000 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"IP" = ( +/obj/structure/cable, +/obj/item/wallframe/telescreen/entertainment{ + icon_state = "entertainment"; + name = "relatively interesting news"; + desc = "It's been live this whole time, news from Nanotrasen core space, just an hour ago."; + light_power = 0.5; + light_range = 3 + }, +/turf/closed/wall/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Jn" = ( +/obj/item/stack/rods{ + amount = 50 + }, +/turf/template_noop, +/area/space/nearstation) +"JE" = ( +/obj/effect/mapping_helpers/airlock/locked, +/obj/structure/cable, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 4 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/machinery/door/airlock/highsecurity{ + name = "SYN-C Brutus Armory"; + req_access = list("syndicate") + }, +/obj/effect/mapping_helpers/airlock/welded, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"JF" = ( +/obj/effect/turf_decal{ + icon_state = "warningline_red"; + dir = 6 + }, +/obj/machinery/shower/directional/west, +/obj/effect/turf_decal{ + icon_state = "warningline_red"; + dir = 4 + }, +/mob/living/basic/alien{ + faction = list("syndicate","xenomorph") + }, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"Kj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/alien/egg/burst, +/mob/living/basic/alien{ + faction = list("syndicate","xenomorph") + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"Kq" = ( +/obj/effect/decal/cleanable/glass, +/obj/structure/alien/weeds, +/obj/structure/alien/weeds/node{ + maximum_growtime = 240000; + minimum_growtime = 120000; + growtime = 150000 + }, +/obj/structure/cable, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/alien/egg/burst, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"KS" = ( +/obj/machinery/door/airlock/external/ruin, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/locked, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Ld" = ( +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "u_madman_l" + }, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "gibhead"; + dir = 4; + pixel_y = 6; + pixel_x = 3 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Li" = ( +/obj/item/stack/rods{ + amount = 23 + }, +/turf/template_noop, +/area/space/nearstation) +"Lm" = ( +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/spawner/random/entertainment/drugs, +/obj/structure/closet/crate/bin, +/obj/effect/spawner/random/trash, +/obj/effect/spawner/random/trash, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/effect/spawner/random/entertainment/drugs, +/turf/open/floor/mineral/titanium/tiled/white, +/area/ruin/space/has_grav/infested_frigate) +"Lw" = ( +/obj/structure/cable, +/obj/effect/turf_decal{ + icon_state = "arrows_red"; + dir = 8 + }, +/obj/effect/turf_decal{ + icon_state = "loadingarea"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"LI" = ( +/obj/structure/table/optable, +/obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear, +/obj/effect/turf_decal{ + icon_state = "bot_white" + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/structure/cable, +/obj/item/clothing/mask/facehugger/impregnated, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "gib6-old"; + dir = 1 + }, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"LO" = ( +/obj/structure/cable, +/obj/effect/spawner/random/trash, +/obj/structure/alien/weeds/node, +/obj/effect/decal/cleanable/glass{ + icon_state = "plasmatiny" + }, +/obj/structure/window/reinforced/plasma/spawner/directional/east, +/obj/machinery/power/rtg, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"LY" = ( +/obj/effect/turf_decal{ + dir = 1 + }, +/obj/machinery/suit_storage_unit/open, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Mf" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "armorblood" + }, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"Ml" = ( +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old{ + icon_state = "floor4-old" + }, +/obj/item/ammo_casing/spent, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/mineral/titanium/tiled/white, +/area/ruin/space/has_grav/infested_frigate) +"Mv" = ( +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/bar, +/obj/structure/table/reinforced, +/obj/effect/spawner/random/food_or_drink/donkpockets{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/effect/spawner/random/food_or_drink/donkpockets{ + pixel_y = 10; + pixel_x = -5 + }, +/obj/structure/cable, +/obj/effect/spawner/random/food_or_drink/donkpockets{ + pixel_y = 10; + pixel_x = -5 + }, +/obj/effect/spawner/random/food_or_drink/booze{ + pixel_x = 6; + pixel_y = 18 + }, +/obj/effect/spawner/random/food_or_drink/refreshing_beverage{ + pixel_x = 10; + pixel_y = 12 + }, +/obj/effect/spawner/random/entertainment/lighter{ + pixel_y = -2; + pixel_x = 8 + }, +/turf/open/floor/mineral/titanium/tiled/white, +/area/ruin/space/has_grav/infested_frigate) +"MM" = ( +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/bar, +/obj/structure/table/reinforced, +/obj/structure/showcase/machinery/microwave{ + icon_state = "mwbloodyo"; + desc = "A product so good your enemies still own one. The dim bloody light compliments the TV's."; + name = "Nanotrasen brand microwave"; + pixel_y = 7 + }, +/obj/structure/cable, +/obj/machinery/chem_dispenser/drinks/fullupgrade{ + pixel_y = 32 + }, +/turf/open/floor/mineral/titanium/tiled/white, +/area/ruin/space/has_grav/infested_frigate) +"MT" = ( +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "gib3-old"; + dir = 8 + }, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Ne" = ( +/obj/structure/cable, +/obj/item/shard{ + icon_state = "titaniumtiny" + }, +/turf/closed/wall/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Ny" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno{ + icon_state = "xgibbl3" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"NE" = ( +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/bar, +/obj/item/ammo_casing/spent, +/obj/item/chair{ + dir = 1 + }, +/turf/open/floor/mineral/titanium/tiled/white, +/area/ruin/space/has_grav/infested_frigate) +"NP" = ( +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 8 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/effect/turf_decal{ + icon_state = "warninglinecorner_white"; + dir = 4 + }, +/obj/item/ammo_casing/spent, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/structure/cable, +/mob/living/basic/alien{ + faction = list("syndicate","xenomorph") + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"NW" = ( +/obj/effect/turf_decal{ + icon_state = "arrows_red"; + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "gib6-old"; + dir = 8 + }, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 8 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"OC" = ( +/obj/effect/spawner/random/trash/food_packaging, +/turf/template_noop, +/area/space/nearstation) +"OE" = ( +/obj/structure/mirror/broken, +/turf/closed/wall/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"OZ" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"Pc" = ( +/obj/effect/decal/cleanable/glass{ + dir = 4 + }, +/obj/effect/mapping_helpers/burnt_floor, +/obj/item/ammo_casing/spent, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Pg" = ( +/obj/effect/mapping_helpers/airlock/locked, +/obj/structure/cable, +/obj/machinery/door/airlock/hatch, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"Pp" = ( +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 8 + }, +/obj/structure/barricade/security, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"Px" = ( +/obj/effect/turf_decal{ + dir = 1 + }, +/obj/machinery/suit_storage_unit/open, +/obj/machinery/light/red/dim/directional/north, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"PG" = ( +/obj/item/shard, +/obj/effect/decal/cleanable/glass, +/obj/effect/gibspawner, +/obj/structure/cable, +/obj/structure/grille/broken, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"Qh" = ( +/obj/machinery/door/airlock/external/ruin, +/obj/effect/mapping_helpers/airlock/locked, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Qi" = ( +/obj/effect/turf_decal{ + dir = 8 + }, +/obj/effect/decal/cleanable/glass, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Qn" = ( +/obj/effect/turf_decal{ + icon_state = "arrows_red"; + dir = 4 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 4 + }, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"QH" = ( +/obj/structure/girder/displaced, +/turf/template_noop, +/area/space/nearstation) +"QI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"QJ" = ( +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/bar, +/obj/item/bodypart/head/lizard, +/obj/item/bodypart/head/lizard, +/obj/item/bodypart/head, +/obj/item/bodypart/head, +/obj/item/bodypart/head, +/obj/effect/spawner/random/medical/memeorgans, +/obj/item/reagent_containers/condiment/rice, +/obj/item/reagent_containers/condiment/rice, +/obj/structure/closet/secure_closet/freezer/gulag_fridge{ + locked = 0 + }, +/obj/item/bodypart/head, +/obj/effect/spawner/random/food_or_drink/cake_ingredients, +/obj/machinery/light/broken/directional/north, +/turf/open/floor/mineral/titanium/tiled/white, +/area/ruin/space/has_grav/infested_frigate) +"QK" = ( +/obj/structure/sign/warning/no_smoking{ + pixel_x = 28 + }, +/obj/item/storage/toolbox/syndicate, +/obj/item/gun_maintenance_supplies, +/obj/item/gun_maintenance_supplies, +/obj/item/storage/toolbox/electrical, +/obj/item/storage/box/lights/bulbs, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/obj/structure/closet/crate/large{ + anchored = 1; + name = "crew supplies" + }, +/obj/structure/cable, +/obj/item/pickaxe/emergency, +/obj/item/pickaxe/emergency, +/obj/effect/spawner/random/decoration/carpet, +/obj/effect/spawner/random/engineering/vending_restock, +/obj/effect/spawner/random/engineering/vending_restock, +/obj/item/bedsheet/syndie/double, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"QM" = ( +/obj/machinery/door/poddoor{ + id = "Brutusexterior" + }, +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"Ro" = ( +/obj/machinery/airalarm/directional/west, +/obj/effect/mapping_helpers/airalarm/all_access, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "ltrails_1"; + dir = 1 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 8 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Rt" = ( +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "drip1" + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/item/ammo_casing/spent, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"RD" = ( +/obj/structure/alien/weeds, +/obj/effect/decal/cleanable/blood{ + icon_state = "floor7-old" + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"RO" = ( +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/bar, +/obj/structure/table/reinforced, +/obj/effect/spawner/random/food_or_drink/three_course_meal{ + pixel_x = -2; + pixel_y = 11 + }, +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/effect/spawner/random/food_or_drink/donkpockets_single{ + pixel_x = 5 + }, +/turf/open/floor/mineral/titanium/tiled/white, +/area/ruin/space/has_grav/infested_frigate) +"SG" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/cable, +/obj/structure/alien/weeds, +/obj/effect/decal/cleanable/glass, +/obj/item/shard{ + icon_state = "plastitaniumtiny" + }, +/obj/effect/spawner/random/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible{ + dir = 5 + }, +/obj/structure/alien/egg/burst, +/obj/item/clothing/mask/facehugger/dead, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"SI" = ( +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/obj/item/chair/greyscale, +/turf/open/floor/mineral/titanium/tiled/white, +/area/ruin/space/has_grav/infested_frigate) +"SX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "floor4-old" + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"Ta" = ( +/obj/structure/alien/egg/burst, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "floor1-old" + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Td" = ( +/obj/effect/turf_decal{ + icon_state = "loadingarea_white"; + dir = 8 + }, +/obj/effect/decal/cleanable/blood/tracks{ + desc = "Your instincts say you shouldn't be following these."; + dir = 8; + icon_state = "ltrails_1" + }, +/obj/machinery/door/airlock/freezer, +/turf/open/floor/iron/freezer, +/area/ruin/space/has_grav/infested_frigate) +"Th" = ( +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/turf/closed/wall/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Ti" = ( +/obj/effect/decal/cleanable/glass, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/mob/living/basic/alien{ + faction = list("syndicate","xenomorph") + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"Tq" = ( +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/obj/item/storage/toolbox/ammobox/strilka310{ + pixel_y = 16; + pixel_x = 5 + }, +/obj/item/storage/toolbox/ammobox/strilka310{ + pixel_y = 8; + pixel_x = 3 + }, +/obj/item/storage/box/handcuffs{ + pixel_y = 2; + pixel_x = -8 + }, +/obj/structure/table/glass/plasmaglass, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"Tt" = ( +/obj/structure/door_assembly/door_assembly_ext, +/turf/template_noop, +/area/space/nearstation) +"TT" = ( +/obj/effect/decal/cleanable/glass, +/obj/item/ammo_casing/spent, +/obj/structure/alien/weeds, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"Uc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 4 + }, +/obj/effect/turf_decal{ + icon_state = "warn_end_white"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/structure/cable, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"Un" = ( +/obj/machinery/door/airlock/hatch, +/obj/effect/decal/cleanable/blood{ + icon_state = "tracks"; + dir = 4 + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Uo" = ( +/obj/structure/girder/reinforced, +/obj/structure/alien/resin/membrane{ + max_integrity = 1600; + desc = "Resin just thin enough to let light pass through, but it's congealing in the same way as the thicker stuff."; + name = "viscous resin membrane" + }, +/obj/effect/decal/cleanable/glass{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"Up" = ( +/obj/item/clothing/mask/surgical, +/obj/structure/cable, +/obj/effect/turf_decal{ + icon_state = "arrows_red"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"Uz" = ( +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/structure/alien/resin{ + max_integrity = 2000; + name = "viscous resin"; + desc = "The resin is thick and it keeps collapsing on itself." + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"UC" = ( +/obj/machinery/door/airlock/hatch, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"UP" = ( +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 1 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/computer/operating{ + dir = 1 + }, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"UW" = ( +/obj/structure/cable, +/mob/living/basic/alien/sentinel{ + loot = list(/obj/effect/gibspawner/xeno); + faction = list("syndicate","xenomorph") + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/structure/alien/weeds/node{ + maximum_growtime = 240000; + minimum_growtime = 120000; + growtime = 150000 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"Vd" = ( +/mob/living/basic/alien{ + faction = list("syndicate","xenomorph") + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"Vm" = ( +/obj/structure/cable, +/turf/closed/wall/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"VN" = ( +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/item/restraints/handcuffs/cable/zipties/used, +/obj/effect/decal/cleanable/blood{ + icon_state = "floor7-old" + }, +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "gib1-old" + }, +/obj/machinery/door/window/left/directional/east, +/obj/machinery/door/poddoor/shutters/window/preopen{ + id = "captivity" + }, +/mob/living/carbon/alien/larva{ + faction = list("syndicate","xenomorph") + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"VR" = ( +/obj/structure/showcase/machinery{ + icon_state = "autolathe"; + name = "broken syndicate autolathe"; + desc = "The station could have had fun with the ammunition!" + }, +/obj/effect/turf_decal{ + icon_state = "warningline_red"; + dir = 9 + }, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"VT" = ( +/obj/effect/turf_decal{ + dir = 4 + }, +/obj/effect/turf_decal{ + icon_state = "stand_clear_red"; + dir = 8 + }, +/obj/item/clothing/mask/facehugger/dead, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"VU" = ( +/obj/item/ammo_casing/spent, +/obj/effect/decal/cleanable/blood{ + icon_state = "drip1" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"We" = ( +/obj/structure/table_frame, +/obj/item/shard, +/obj/effect/decal/cleanable/glass, +/obj/effect/gibspawner/human/bodypartless, +/obj/structure/cable, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/structure/alien/weeds, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"Wf" = ( +/obj/effect/decal/cleanable/glass{ + dir = 8 + }, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/kirbyplants/random, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Wh" = ( +/obj/effect/turf_decal{ + icon_state = "arrows_red"; + dir = 4 + }, +/obj/effect/decal/cleanable/blood{ + icon_state = "tracks"; + dir = 4 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Wv" = ( +/obj/structure/alien/weeds, +/obj/structure/cable, +/obj/effect/decal/cleanable/glass{ + icon_state = "plasmatiny" + }, +/obj/effect/decal/cleanable/glass{ + icon_state = "plasmalarge" + }, +/obj/item/shard{ + icon_state = "titaniumtiny" + }, +/obj/structure/closet/crate/large{ + anchored = 1; + name = "crew supplies" + }, +/obj/effect/spawner/random/aimodule/harmful, +/obj/effect/spawner/random/decoration, +/obj/effect/spawner/random/decoration, +/obj/effect/spawner/random/decoration/paint, +/obj/effect/spawner/random/entertainment/plushie_delux, +/obj/effect/spawner/random/entertainment/toy_figure, +/obj/machinery/nuclearbomb/beer, +/obj/structure/sign/warning/electric_shock/directional/west, +/obj/item/fuel_pellet, +/obj/item/fuel_pellet, +/obj/item/fuel_pellet, +/obj/effect/spawner/random/exotic/languagebook, +/obj/effect/spawner/random/entertainment/lighter, +/obj/effect/spawner/random/entertainment/lighter, +/obj/effect/spawner/random/special_lighter, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"WE" = ( +/obj/effect/turf_decal{ + dir = 4 + }, +/obj/effect/turf_decal{ + icon_state = "bot_red" + }, +/obj/effect/decal/cleanable/blood/gibs/xeno{ + icon_state = "xgibup1" + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"WH" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood{ + icon_state = "floor5-old" + }, +/obj/item/ammo_casing/spent, +/obj/effect/mob_spawn/corpse/human/syndicatepilot, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"WW" = ( +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "u_guilty_l" + }, +/obj/effect/decal/cleanable/blood{ + icon_state = "tracks"; + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Xb" = ( +/obj/effect/turf_decal{ + dir = 8 + }, +/obj/effect/turf_decal{ + dir = 1 + }, +/obj/effect/turf_decal{ + dir = 8 + }, +/obj/effect/turf_decal{ + dir = 9 + }, +/obj/structure/tank_dispenser{ + oxygentanks = 0; + plasmatanks = 0 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Xh" = ( +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/hatch, +/obj/structure/cable, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"XE" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/item/storage/box/bodybags, +/obj/item/storage/box/bodybags, +/obj/item/storage/box/bodybags, +/obj/item/tank/jetpack, +/obj/item/storage/box/coffeepack, +/obj/item/storage/box/coffeepack, +/obj/item/storage/box/emptysandbags, +/obj/item/storage/box/ids, +/obj/item/storage/box/syndie_kit/chameleon, +/obj/structure/closet/crate/large{ + anchored = 1; + name = "crew supplies" + }, +/obj/item/clothing/head/collectable/xenom, +/obj/item/xenos_claw, +/obj/item/toy/toy_xeno, +/obj/item/clothing/suit/costume/xenos, +/obj/effect/spawner/random/exotic/antag_gear_weak, +/obj/effect/spawner/random/exotic/antag_gear_weak, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"XG" = ( +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/structure/cable, +/obj/machinery/suit_storage_unit/open, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"XX" = ( +/obj/structure/table/reinforced, +/obj/item/flashlight/flare{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/flashlight/flare{ + pixel_x = -3; + pixel_y = 1 + }, +/obj/item/crowbar/red, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "gib6-old"; + dir = 8 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_red"; + dir = 4 + }, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear{ + dir = 4 + }, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"Yg" = ( +/obj/structure/broken_flooring/pile/directional/south, +/turf/template_noop, +/area/space/nearstation) +"Yy" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/item/ammo_casing/spent, +/obj/effect/spawner/random/entertainment/arcade, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"YD" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/item/weldingtool/mini/empty, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"YN" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno/up{ + icon_state = "xltrails_2"; + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"YS" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno/up{ + icon_state = "xgibbl4" + }, +/obj/effect/decal/cleanable/blood/gibs/xeno/up{ + icon_state = "xgibleg"; + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"YW" = ( +/obj/machinery/power/shuttle_engine/large{ + dir = 8; + max_integrity = 2000 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) +"Zr" = ( +/obj/effect/turf_decal{ + icon_state = "warningline_white"; + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Zs" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/structure/alien/weeds/node{ + maximum_growtime = 240000; + minimum_growtime = 120000; + growtime = 150000 + }, +/obj/item/ammo_casing/spent, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"Zz" = ( +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/item/kirbyplants/random, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) +"ZG" = ( +/obj/machinery/door/airlock/hatch, +/obj/effect/mapping_helpers/airlock/locked, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/infested_frigate) +"ZM" = ( +/obj/structure/cable, +/obj/machinery/airalarm/directional/north, +/obj/effect/mapping_helpers/airalarm/all_access, +/obj/machinery/icecream_vat{ + desc = "Waffle Corp. actually ordered these guys to steal one of these just to be sure." + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) + +(1,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +"} +(2,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +"} +(3,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +ek +FI +YW +wC +pL +wC +FI +YW +ek +pL +pL +pL +pL +"} +(4,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +ek +FI +ek +kT +nI +kT +ek +FI +ek +pL +pL +pL +pL +"} +(5,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +nZ +ek +ek +kT +ro +Ne +dI +kT +ek +ek +vB +pL +pL +pL +"} +(6,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +ek +FC +ek +pY +BN +Wv +Kq +ek +ek +Gs +ek +pL +pL +pL +"} +(7,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +OE +vF +ek +LO +DM +io +yv +ek +DT +gm +ek +pL +pL +pL +"} +(8,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +ek +VN +ek +ZM +ji +vr +tC +Vm +Bm +Td +ek +pL +pL +pL +"} +(9,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +ek +yM +ek +XE +SG +gz +vm +Vm +HL +oD +ek +pL +pL +pL +"} +(10,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +ek +ij +ek +ph +UW +FJ +fz +Vm +MM +HG +ek +pL +pL +pL +"} +(11,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +ek +TT +ek +ES +hV +fi +QK +IP +Mv +pO +QM +pL +pL +pL +"} +(12,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +QM +CM +ek +ek +ek +HQ +ko +zP +Lm +us +QM +pL +pL +pL +"} +(13,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +QM +yK +yK +pm +eO +Lw +ek +RO +Ml +NE +QM +pL +pL +pL +"} +(14,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +QM +AM +er +oj +QI +zl +UC +Uc +NP +yg +QM +pL +pL +pL +"} +(15,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +QM +RD +Ae +oj +kq +iZ +ko +QJ +jI +SI +QM +pL +pL +pL +"} +(16,1,1) = {" +pL +pL +pL +pL +pL +pL +OC +pL +pL +pL +pL +ek +As +Ir +ek +ek +kD +ko +ko +ld +CZ +ek +pL +pL +pL +"} +(17,1,1) = {" +pL +pL +pL +Jn +pL +pL +pL +FL +pL +CH +nZ +cW +As +Fl +ek +tG +Up +vO +ek +ZG +ek +ek +vB +pL +pL +"} +(18,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +Tt +pL +pL +CH +Cp +xH +Uz +ek +HX +tW +gG +Vm +Zr +Qh +oz +kN +pL +pL +"} +(19,1,1) = {" +pL +pL +pL +pL +pL +pL +zm +pL +Li +pL +rw +gh +CH +IB +ek +Gi +Ti +zA +ek +mj +ek +id +ek +pL +pL +"} +(20,1,1) = {" +pL +pL +pL +pL +pL +fK +pL +pL +pL +Yg +pL +pf +lF +mz +ek +LI +hq +vj +ek +Eg +hd +bf +KS +pL +pL +"} +(21,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +aN +pL +Hh +sn +jP +ek +bP +HP +UP +ek +iy +ek +ek +kt +pL +pL +"} +(22,1,1) = {" +pL +ar +pL +pL +eY +ge +pL +iM +pL +pL +pL +Uo +wX +Wf +ek +ek +Pg +ek +ek +Xh +ek +ek +pL +pL +pL +"} +(23,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +QM +aZ +zk +Pc +Zs +DV +IF +Ae +Ld +pW +QM +pL +pL +pL +"} +(24,1,1) = {" +pL +pL +pL +pL +pL +QH +pL +pL +pL +pL +ar +QM +Yy +ql +Bb +JF +Bo +FZ +zv +WW +yS +QM +pL +pL +pL +"} +(25,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +QM +Zz +Qn +ek +ek +ek +Vm +ek +Wh +xj +QM +pL +pL +pL +"} +(26,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +ek +gA +yk +ek +XG +WH +EA +ek +Un +Th +ek +pL +pL +pL +"} +(27,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pB +ek +fU +ek +hR +yh +yW +ek +wF +ek +kt +pL +pL +pL +"} +(28,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +ek +iX +ek +xc +qE +xG +ek +VU +ek +pL +pL +pL +pL +"} +(29,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +ek +MT +ek +hR +Ai +Tq +ek +Eg +ek +pL +pL +pL +pL +"} +(30,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +ek +Hj +ek +cK +YD +iv +ek +wZ +ek +pL +pL +pL +pL +"} +(31,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +ek +pV +ek +ek +JE +ek +ek +Gm +ek +pL +pL +pL +pL +"} +(32,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +QM +ce +Ta +hD +Mf +Ro +cF +yR +QM +pL +pL +pL +pL +"} +(33,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +QM +dD +oj +AQ +zf +kc +vl +lg +QM +pL +pL +pL +pL +"} +(34,1,1) = {" +pL +pL +pL +pL +pL +pL +ar +pL +pL +pL +pL +pL +QM +wu +ek +ek +Ii +ek +ek +ri +QM +pL +pL +pL +pL +"} +(35,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +QM +YS +ek +xC +dd +FQ +ek +ri +QM +pL +pL +pL +pL +"} +(36,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +QM +dU +ek +vz +uq +Gn +ek +YN +QM +pL +pL +pL +pL +"} +(37,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +QM +eh +ek +bV +We +oi +ek +wT +QM +pL +pL +pL +pL +"} +(38,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +ek +GK +OZ +OZ +PG +OZ +OZ +CN +ek +pL +pL +pL +pL +"} +(39,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +ek +Pp +GW +tj +gI +XX +VR +NW +ek +pL +pL +pL +pL +"} +(40,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +ek +Kj +SX +Gg +qY +iE +Vd +bR +ek +pL +pL +pL +pL +"} +(41,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +ek +Xb +tI +pH +Qi +hQ +Ed +if +ek +pL +pL +pL +pL +"} +(42,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +ek +Px +mM +ff +Ny +oj +aV +mK +ek +pL +pL +pL +pL +"} +(43,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +ek +LY +ha +Iz +dS +nF +Rt +ne +ek +pL +pL +pL +pL +"} +(44,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +ek +jy +VT +rg +WE +eU +fS +GM +ek +pL +pL +pL +pL +"} +(45,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pB +ek +mm +dp +sD +kw +mD +ek +kt +pL +pL +pL +pL +"} +(46,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +HW +pL +pL +pL +pL +pL +pL +pL +"} +(47,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +"} +(48,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +"} +(49,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +"} +(50,1,1) = {" +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +"} diff --git a/_maps/RandomRuins/SpaceRuins/bubberstation/onehalf.dmm b/_maps/RandomRuins/SpaceRuins/bubberstation/onehalf.dmm new file mode 100644 index 00000000000..da979ae83d4 --- /dev/null +++ b/_maps/RandomRuins/SpaceRuins/bubberstation/onehalf.dmm @@ -0,0 +1,1610 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"am" = ( +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/space/nearstation) +"aB" = ( +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"aG" = ( +/obj/item/stack/sheet/plasteel, +/turf/template_noop, +/area/space/nearstation) +"bk" = ( +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"ce" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/drone_bay) +"cl" = ( +/obj/structure/table/reinforced, +/obj/item/stack/ore/bluespace_crystal, +/obj/item/coin/plasma, +/obj/item/lighter, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"cs" = ( +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/drone_bay) +"cH" = ( +/obj/structure/disposalpipe/broken{ + dir = 4 + }, +/obj/item/stack/cable_coil/cut, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"du" = ( +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/onehalf/dorms_med) +"dz" = ( +/obj/machinery/door/poddoor/preopen{ + id = "bridge_onehalf"; + name = "Bridge Blast Door" + }, +/obj/machinery/door/airlock/command/glass{ + name = "Bridge" + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"dA" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"dJ" = ( +/obj/structure/chair/office, +/obj/structure/cable, +/obj/structure/broken_flooring/corner/directional/north, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"er" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"eA" = ( +/obj/structure/bed, +/obj/item/bedsheet/black, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/dorms_med) +"eM" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"eY" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/poddoor{ + id = "onehalf_drone3int"; + name = "Mining Drone Bay Blast Door" + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/onehalf/drone_bay) +"fb" = ( +/turf/closed/wall, +/area/ruin/space/has_grav/onehalf/dorms_med) +"fG" = ( +/obj/item/stack/rods, +/turf/template_noop, +/area/ruin/space/has_grav/onehalf/hallway) +"gD" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"gX" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/disposal/bin, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"hl" = ( +/obj/structure/disposalpipe/junction{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"hn" = ( +/obj/structure/table, +/obj/item/storage/medkit/toxin{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/fire, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/onehalf/dorms_med) +"hs" = ( +/obj/structure/girder/reinforced, +/obj/item/stack/sheet/plasteel, +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"hx" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/has_grav/onehalf/hallway) +"id" = ( +/obj/structure/disposalpipe/broken{ + dir = 4 + }, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"je" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/poddoor{ + id = "onehalf_drone2int"; + name = "Mining Drone Bay Blast Door" + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/onehalf/drone_bay) +"jp" = ( +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/onehalf/drone_bay) +"jS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"jY" = ( +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/drone_bay) +"kn" = ( +/obj/structure/safe/floor, +/obj/item/tank/internals/oxygen/red, +/obj/item/reagent_containers/cup/glass/bottle/rum, +/obj/item/reagent_containers/cup/glass/bottle/rum, +/obj/item/folder/syndicate/mining, +/obj/effect/mapping_helpers/broken_floor, +/obj/item/mod/module/jetpack/advanced, +/obj/item/mod/control/pre_equipped/frontline/surplus, +/obj/item/stock_parts/power_store/cell/lead, +/turf/open/floor/plating, +/area/ruin/space/has_grav/onehalf/bridge) +"ks" = ( +/turf/template_noop, +/area/ruin/space/has_grav/onehalf/hallway) +"kP" = ( +/obj/item/stack/rods, +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/space/nearstation) +"kR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"la" = ( +/obj/machinery/light/directional/east, +/obj/structure/table, +/obj/item/storage/medkit/brute{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/regular, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/onehalf/dorms_med) +"lm" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/has_grav/onehalf/bridge) +"ls" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"ly" = ( +/obj/structure/broken_flooring/corner/directional/south, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"nc" = ( +/obj/structure/girder/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/onehalf/bridge) +"nD" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/drone_bay) +"nN" = ( +/obj/item/stack/cable_coil/cut, +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/space/nearstation) +"og" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + total_paper = 12 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"oo" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/button/door/directional/north{ + id = "onehalf_drone4ext"; + name = "Drone 4 External Hatch Override"; + pixel_x = 8; + pixel_y = 32 + }, +/obj/machinery/button/door/directional/north{ + id = "onehalf_drone3ext"; + name = "Drone 3 External Hatch Override"; + pixel_x = -8; + pixel_y = 32 + }, +/obj/machinery/button/door/directional/north{ + custom_acid_overlay = "onehalf_drone4int"; + name = "Drone 4 Internal Hatch Override"; + pixel_x = 8 + }, +/obj/machinery/button/door/directional/north{ + custom_acid_overlay = "onehalf_drone3int"; + name = "Drone 3 Internal Hatch Override"; + pixel_x = -8 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/drone_bay) +"ot" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"oz" = ( +/obj/structure/closet/emcloset, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"oC" = ( +/obj/item/shard{ + icon_state = "medium" + }, +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/space/nearstation) +"oS" = ( +/obj/machinery/light/directional/west, +/obj/structure/closet, +/obj/effect/spawner/random/exotic/syndie, +/obj/effect/spawner/random/exotic/syndie, +/obj/effect/spawner/random/exotic/syndie, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/dorms_med) +"pe" = ( +/obj/structure/disposaloutlet{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/onehalf/drone_bay) +"pC" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"pD" = ( +/obj/structure/grille/broken, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"qy" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/button/door/directional/north{ + id = "onehalf_drone2ext"; + name = "Drone 2 External Hatch Override"; + pixel_x = 8; + pixel_y = 32 + }, +/obj/machinery/button/door/directional/north{ + id = "onehalf_drone1ext"; + name = "Drone 1 External Hatch Override"; + pixel_x = -8; + pixel_y = 32 + }, +/obj/machinery/button/door/directional/north{ + custom_acid_overlay = "onehalf_drone2int"; + name = "Drone 2 Internal Hatch Override"; + pixel_x = 8 + }, +/obj/machinery/button/door/directional/north{ + custom_acid_overlay = "onehalf_drone1int"; + name = "Drone 1 Internal Hatch Override"; + pixel_x = -8 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/drone_bay) +"qW" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"rv" = ( +/obj/item/stack/sheet/plasteel{ + amount = 10 + }, +/obj/structure/lattice, +/turf/template_noop, +/area/space/nearstation) +"rx" = ( +/obj/structure/grille, +/obj/item/shard, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"rA" = ( +/obj/machinery/door/poddoor{ + id = "onehalf_drone1ext"; + name = "Mining Drone Bay Blast Door" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/onehalf/drone_bay) +"sw" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "bridge_onehalf"; + name = "Bridge Blast Door" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/ruin/space/has_grav/onehalf/bridge) +"sJ" = ( +/obj/structure/closet/firecloset/full, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"sT" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"uu" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/ruin/space/has_grav/onehalf/drone_bay) +"uv" = ( +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/disposal/bin, +/turf/open/floor/plating, +/area/ruin/space/has_grav/onehalf/drone_bay) +"uP" = ( +/obj/machinery/door/poddoor/preopen{ + id = "onehalf_drone3ext"; + name = "Mining Drone Bay Blast Door" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/onehalf/drone_bay) +"ve" = ( +/obj/structure/bed{ + dir = 4 + }, +/obj/item/bedsheet/black{ + dir = 4 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/dorms_med) +"vs" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/drone_bay) +"vC" = ( +/obj/machinery/door/airlock/external/ruin, +/obj/structure/cable, +/turf/open/floor/plating, +/area/ruin/space/has_grav/onehalf/drone_bay) +"wD" = ( +/obj/machinery/power/solar_control, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"wE" = ( +/obj/machinery/sleeper/self_control{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/onehalf/dorms_med) +"wL" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/has_grav/onehalf/hallway) +"wV" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/poddoor{ + id = "onehalf_drone4int"; + name = "Mining Drone Bay Blast Door" + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/onehalf/drone_bay) +"xd" = ( +/obj/machinery/vending/snack, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"xg" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"xj" = ( +/obj/machinery/door/poddoor{ + id = "onehalf_drone4ext"; + name = "Mining Drone Bay Blast Door" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/onehalf/drone_bay) +"xl" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/ruin/space/has_grav/onehalf/dorms_med) +"xq" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/poddoor{ + id = "onehalf_drone1int"; + name = "Mining Drone Bay Blast Door" + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/onehalf/drone_bay) +"xx" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/drone_bay) +"xD" = ( +/obj/structure/table/reinforced, +/obj/item/flashlight/lamp, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"yw" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/drone_bay) +"yJ" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "bridge_onehalf"; + name = "Bridge Blast Door"; + pixel_y = 5 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"yO" = ( +/obj/structure/frame/computer, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"yV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance_hatch, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/drone_bay) +"zu" = ( +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/onehalf/dorms_med) +"zU" = ( +/obj/structure/lattice, +/obj/structure/disposalpipe/broken{ + dir = 4 + }, +/obj/structure/disposalpipe/broken{ + dir = 8 + }, +/obj/item/stack/rods, +/turf/template_noop, +/area/ruin/space/has_grav/onehalf/hallway) +"Ak" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/public/glass, +/obj/structure/cable, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/drone_bay) +"AT" = ( +/obj/machinery/door/airlock/public/glass, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/drone_bay) +"Ba" = ( +/obj/item/stack/cable_coil/cut, +/turf/template_noop, +/area/space/nearstation) +"Bj" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/drone_bay) +"CF" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"CQ" = ( +/mob/living/basic/trooper/pirate/ranged/space, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/onehalf/dorms_med) +"Dq" = ( +/obj/item/stack/sheet/iron, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"Dr" = ( +/obj/structure/lattice, +/obj/item/stack/cable_coil/cut, +/mob/living/basic/trooper/pirate/ranged/space, +/turf/template_noop, +/area/ruin/space/has_grav/onehalf/hallway) +"Ea" = ( +/obj/structure/disposalpipe/trunk, +/obj/item/stack/ore/diamond, +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/onehalf/drone_bay) +"EO" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/drone_bay) +"EY" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/drone_bay) +"Fc" = ( +/obj/structure/table_frame, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"Fi" = ( +/obj/structure/lattice, +/obj/item/shard{ + icon_state = "medium" + }, +/turf/template_noop, +/area/ruin/space/has_grav/onehalf/hallway) +"Gy" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/onehalf/drone_bay) +"GS" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"GU" = ( +/obj/machinery/vending/sovietsoda, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"GY" = ( +/obj/item/stack/tile/wood, +/turf/template_noop, +/area/space/nearstation) +"Hg" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/disposal/bin, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"HC" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + id = "bridge_onehalf"; + name = "Bridge Blast Door" + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/onehalf/bridge) +"HN" = ( +/obj/structure/lattice, +/obj/structure/disposalpipe/broken{ + dir = 8 + }, +/obj/structure/disposalpipe/broken{ + dir = 1 + }, +/turf/template_noop, +/area/ruin/space/has_grav/onehalf/hallway) +"ID" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/turf/template_noop, +/area/space/nearstation) +"IT" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/drone_bay) +"IZ" = ( +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"Jg" = ( +/obj/machinery/light/small/directional/west, +/obj/structure/cable, +/turf/open/floor/plating, +/area/ruin/space/has_grav/onehalf/drone_bay) +"JJ" = ( +/obj/structure/cable, +/obj/structure/broken_flooring/corner/directional/east, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"JN" = ( +/obj/structure/table/reinforced, +/obj/effect/spawner/random/exotic/technology, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"JW" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/drone_bay) +"Km" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/drone_bay) +"KI" = ( +/obj/structure/table/reinforced, +/obj/effect/spawner/random/entertainment/money_large, +/obj/machinery/light/directional/north, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"KM" = ( +/obj/structure/disposalpipe/junction{ + dir = 1 + }, +/obj/item/shard, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"KW" = ( +/obj/item/stack/sheet/plasteel, +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/space/nearstation) +"KY" = ( +/turf/closed/wall, +/area/ruin/space/has_grav/onehalf/drone_bay) +"Le" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "bridge_onehalf"; + name = "Bridge Blast Door" + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/onehalf/bridge) +"Lg" = ( +/obj/structure/frame/computer, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"Ll" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/space/nearstation) +"Mc" = ( +/mob/living/basic/trooper/pirate/ranged/space, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"Mj" = ( +/obj/machinery/vending/coffee, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"Mp" = ( +/obj/structure/table/reinforced, +/obj/item/paper, +/obj/item/pen, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"MA" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"Nq" = ( +/obj/structure/table/reinforced, +/obj/item/storage/medkit/regular, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"OA" = ( +/obj/item/stack/rods, +/turf/template_noop, +/area/space/nearstation) +"OI" = ( +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/dorms_med) +"Pb" = ( +/obj/machinery/light/small/directional/south, +/obj/structure/cable, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"Pr" = ( +/obj/machinery/door/airlock, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/dorms_med) +"Pw" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/drone_bay) +"PA" = ( +/obj/machinery/iv_drip, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/onehalf/dorms_med) +"PW" = ( +/obj/structure/cable, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"Rm" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"Ro" = ( +/obj/structure/lattice, +/obj/item/stack/cable_coil/cut, +/turf/template_noop, +/area/ruin/space/has_grav/onehalf/hallway) +"Ru" = ( +/obj/machinery/door/poddoor{ + id = "onehalf_drone2ext"; + name = "Mining Drone Bay Blast Door" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/onehalf/drone_bay) +"RY" = ( +/obj/structure/girder/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"Sl" = ( +/obj/machinery/washing_machine, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"Td" = ( +/obj/structure/lattice, +/obj/item/storage/toolbox/syndicate, +/turf/template_noop, +/area/space/nearstation) +"Ti" = ( +/turf/closed/wall, +/area/ruin/space/has_grav/onehalf/hallway) +"TJ" = ( +/obj/structure/closet/crate/medical, +/obj/item/clothing/neck/stethoscope, +/obj/item/healthanalyzer, +/obj/item/reagent_containers/blood/o_minus, +/obj/item/reagent_containers/blood/o_minus, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/onehalf/dorms_med) +"Ul" = ( +/obj/structure/grille, +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"Uw" = ( +/obj/structure/frame/computer, +/obj/structure/cable, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"UE" = ( +/turf/template_noop, +/area/template_noop) +"UN" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"UX" = ( +/obj/structure/table/reinforced, +/obj/item/gps/spaceruin, +/obj/item/flashlight, +/obj/machinery/light/directional/south, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"VH" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light/small/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/drone_bay) +"VI" = ( +/obj/machinery/door/airlock/medical/glass, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/onehalf/dorms_med) +"VR" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"WC" = ( +/obj/structure/lattice, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/shard{ + icon_state = "small" + }, +/turf/template_noop, +/area/space/nearstation) +"WD" = ( +/obj/structure/broken_flooring/pile/always_floorplane{ + dir = 8 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"WY" = ( +/obj/item/stack/sheet/iron, +/turf/template_noop, +/area/space/nearstation) +"Xa" = ( +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/drone_bay) +"Xv" = ( +/obj/item/crowbar/red, +/obj/item/multitool, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/ruin/space/has_grav/onehalf/bridge) +"XR" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"Ya" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Bridge" + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/bridge) +"Yf" = ( +/obj/structure/disposalpipe/junction{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"Zd" = ( +/obj/structure/disposalpipe/segment, +/obj/item/stack/rods, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"Zg" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/onehalf/hallway) +"ZE" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/ruin/space/has_grav/onehalf/hallway) +"ZG" = ( +/obj/item/emergency_bed, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/onehalf/dorms_med) +"ZQ" = ( +/obj/structure/disposalpipe/junction/yjunction{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/ruin/space/has_grav/onehalf/drone_bay) + +(1,1,1) = {" +UE +UE +UE +UE +Ll +UE +Td +Ll +UE +UE +UE +UE +UE +UE +UE +UE +UE +UE +UE +UE +"} +(2,1,1) = {" +UE +UE +UE +gD +wL +fG +gD +Dq +id +VR +UE +UE +UE +UE +UE +UE +UE +UE +UE +UE +"} +(3,1,1) = {" +UE +UE +nN +Ti +wL +MA +wL +cH +Zg +gD +WY +UE +UE +UE +UE +UE +UE +UE +UE +UE +"} +(4,1,1) = {" +UE +UE +ID +Ti +Fc +wL +bk +qW +Zg +Ti +MA +UE +UE +UE +UE +UE +UE +UE +UE +UE +"} +(5,1,1) = {" +UE +ID +ID +Ti +Sl +ls +ls +qW +kR +oz +VR +UE +UE +UE +UE +UE +UE +UE +UE +UE +"} +(6,1,1) = {" +UE +ID +fb +fb +fb +fb +fb +ot +kR +Mj +Ti +UE +OA +UE +UE +UE +UE +UE +UE +UE +"} +(7,1,1) = {" +UE +ID +fb +wE +ZG +PA +fb +ot +Zg +xd +RY +RY +gD +UE +UE +UE +UE +UE +UE +UE +"} +(8,1,1) = {" +UE +ID +fb +du +CQ +zu +VI +Yf +CF +gX +hx +UE +rv +Ll +UE +UE +OA +hs +UE +UE +"} +(9,1,1) = {" +UE +ID +fb +hn +la +TJ +fb +qW +kR +hs +gD +UE +UE +GY +OA +aG +UE +Ll +UE +Ba +"} +(10,1,1) = {" +UE +ID +fb +fb +fb +fb +fb +qW +kR +RY +Ll +WY +UE +UE +Ll +GY +UE +MA +KW +UE +"} +(11,1,1) = {" +UE +ID +fb +ve +oS +ve +fb +ot +jS +hx +hx +wL +gD +ks +gD +wL +hx +RY +oC +UE +"} +(12,1,1) = {" +UE +ID +xl +OI +OI +OI +Pr +ot +Zg +ls +MA +wL +Fi +Dr +Ro +Ro +ls +pD +kP +UE +"} +(13,1,1) = {" +UE +ID +fb +eA +eA +eA +fb +hl +pC +er +Zd +KM +GS +HN +MA +ls +ls +rx +am +UE +"} +(14,1,1) = {" +UE +ID +fb +fb +fb +fb +fb +Ak +AT +lm +Ul +zU +nc +Ya +lm +ZE +ZE +lm +am +UE +"} +(15,1,1) = {" +UE +ID +ID +vC +Jg +vC +xx +Km +nD +lm +UE +WC +lm +Pb +lm +Ll +UE +lm +am +UE +"} +(16,1,1) = {" +UE +UE +UE +KY +KY +KY +JW +nD +nD +lm +Le +HC +lm +dz +lm +Le +Le +lm +am +UE +"} +(17,1,1) = {" +UE +UE +UE +rA +jp +xq +EO +vs +Xa +lm +xD +og +Hg +PW +GU +eM +UX +lm +am +UE +"} +(18,1,1) = {" +UE +UE +UE +KY +KY +KY +qy +nD +nD +lm +Mp +Rm +aB +PW +aB +Rm +cl +sw +am +UE +"} +(19,1,1) = {" +UE +UE +UE +Ru +Ea +je +EO +vs +cs +lm +dA +aB +aB +PW +WD +aB +sJ +sw +am +UE +"} +(20,1,1) = {" +UE +UE +UE +KY +KY +KY +Pw +nD +nD +lm +yO +xg +aB +JJ +Xv +dJ +Uw +sw +am +UE +"} +(21,1,1) = {" +UE +UE +UE +uP +jp +eY +EO +vs +Xa +lm +yO +aB +Mc +IZ +kn +sT +Lg +sw +am +UE +"} +(22,1,1) = {" +UE +UE +UE +KY +KY +KY +oo +nD +nD +lm +UN +PW +IZ +XR +sT +ly +aB +sw +am +UE +"} +(23,1,1) = {" +UE +UE +UE +xj +jp +wV +IT +vs +ce +lm +KI +JN +wD +Uw +yO +yJ +Nq +lm +am +UE +"} +(24,1,1) = {" +UE +UE +UE +KY +KY +KY +KY +nD +jY +lm +lm +sw +sw +sw +sw +sw +lm +lm +am +UE +"} +(25,1,1) = {" +UE +UE +UE +UE +Ll +UE +KY +yV +KY +KY +Ll +am +am +am +am +am +am +am +am +UE +"} +(26,1,1) = {" +UE +UE +UE +UE +KY +KY +KY +VH +EY +KY +UE +UE +UE +UE +UE +UE +UE +UE +UE +UE +"} +(27,1,1) = {" +UE +UE +UE +UE +Gy +pe +uu +ZQ +Bj +uu +UE +UE +UE +UE +UE +UE +UE +UE +UE +UE +"} +(28,1,1) = {" +UE +UE +UE +UE +KY +KY +KY +uv +yw +KY +UE +UE +UE +UE +UE +UE +UE +UE +UE +UE +"} +(29,1,1) = {" +UE +UE +UE +UE +UE +UE +KY +uu +uu +KY +UE +UE +UE +UE +UE +UE +UE +UE +UE +UE +"} diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/blackmarket.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/blackmarket.dmm index f00cd1ea999..2d4af130e94 100644 --- a/_maps/RandomRuins/SpaceRuins/skyrat/blackmarket.dmm +++ b/_maps/RandomRuins/SpaceRuins/skyrat/blackmarket.dmm @@ -537,6 +537,7 @@ /obj/structure/table, /obj/machinery/door/window/survival_pod/left/directional/south, /obj/effect/turf_decal/bot_white/right, +/obj/item/gun/energy/laser/musket/prime, /turf/open/floor/iron/dark/textured_large, /area/ruin/space/has_grav/powered/skyrat/blackmarket) "zS" = ( diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/shuttle8532.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/shuttle8532.dmm index c75a432ef45..2962708adbb 100644 --- a/_maps/RandomRuins/SpaceRuins/skyrat/shuttle8532.dmm +++ b/_maps/RandomRuins/SpaceRuins/skyrat/shuttle8532.dmm @@ -481,6 +481,13 @@ }, /turf/open/floor/iron/airless, /area/ruin/space/has_grav/shuttle8532bridge) +"jL" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 5; + system_id = "ship_outer_turrets" + }, +/turf/closed/wall/r_wall, +/area/ruin/space/has_grav/shuttle8532engineering) "jM" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 @@ -568,6 +575,10 @@ /obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/iron/airless, /area/ruin/space/has_grav/shuttle8532researchbay) +"ma" = ( +/mob/living/basic/trooper/syndicate/melee/space, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/shuttle8532crewquarters) "me" = ( /obj/effect/decal/cleanable/blood/bubblegum, /obj/effect/decal/cleanable/blood/tracks, @@ -817,6 +828,7 @@ /obj/structure/chair/comfy/shuttle{ dir = 1 }, +/mob/living/basic/trooper/syndicate/ranged/shotgun/space/stormtrooper, /turf/open/floor/iron/airless, /area/ruin/space/has_grav/shuttle8532bridge) "sh" = ( @@ -1398,6 +1410,10 @@ /obj/structure/grille/broken, /turf/template_noop, /area/space/nearstation) +"CL" = ( +/obj/item/mod/control/pre_equipped/policing, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/shuttle8532bridge) "CO" = ( /obj/item/flashlight/glowstick/red{ light_on = 1 @@ -1544,6 +1560,10 @@ /obj/machinery/light/dim/directional/south, /turf/open/floor/iron/airless, /area/ruin/space/has_grav/shuttle8532engineering) +"Fq" = ( +/mob/living/basic/trooper/syndicate/ranged/smg/space, +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/shuttle8532researchbay) "Fu" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -1559,9 +1579,13 @@ }, /turf/open/floor/iron/airless, /area/ruin/space/has_grav/shuttle8532cargohall) +"Gm" = ( +/mob/living/basic/trooper/syndicate/ranged/smg/space, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/shuttle8532researchbay) "Gv" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/mob_spawn/corpse/human/syndicatecommando, +/obj/effect/mob_spawn/corpse/human/russian, /turf/open/floor/iron/airless, /area/ruin/space/has_grav/shuttle8532bridge) "Gz" = ( @@ -1591,6 +1615,7 @@ "Ha" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/vg_decals/numbers/three, +/mob/living/basic/trooper/syndicate/ranged/smg/space, /turf/open/floor/iron/airless, /area/ruin/space/has_grav/shuttle8532engineering) "Hf" = ( @@ -1819,6 +1844,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/engine/airless, /area/ruin/space/has_grav/shuttle8532bridge) +"Mx" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/basic/trooper/syndicate/melee/space, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/shuttle8532crewquarters) "MB" = ( /obj/effect/decal/cleanable/blood/gibs/core, /turf/open/floor/iron/airless, @@ -2173,9 +2203,12 @@ /turf/open/floor/iron/airless, /area/ruin/space/has_grav/shuttle8532bridge) "Uy" = ( -/mob/living/basic/trooper/syndicate/melee/space, -/turf/open/floor/iron/airless, -/area/ruin/space/has_grav/shuttle8532bridge) +/obj/machinery/porta_turret/syndicate{ + dir = 9; + system_id = "ship_outer_turrets" + }, +/turf/closed/wall/r_wall, +/area/ruin/space/has_grav/shuttle8532engineering) "UN" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 1 @@ -2982,7 +3015,7 @@ qb pu zA ZU -Uy +Vi ks pu jQ @@ -3065,7 +3098,7 @@ SJ NT sR Mg -Av +Gm aM Av Mg @@ -3108,7 +3141,7 @@ qb HP eV Gv -Vi +CL BS pu sH @@ -3156,7 +3189,7 @@ qb qb qb qb -QR +Uy QR QR QR @@ -3175,7 +3208,7 @@ NK ps pu ha -Ds +ma wU Ds Lz @@ -3611,7 +3644,7 @@ hP (19,1,1) = {" HP eV -Uy +Vi Vi Ux pu @@ -3619,7 +3652,7 @@ ac TM yv TJ -TM +Mx iN tA jQ @@ -3638,7 +3671,7 @@ Mg Uv Uv Uv -Uv +Fq Uv OQ qb @@ -4290,7 +4323,7 @@ qb qb qb qb -QR +jL QR QR QR diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/vaulttango.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/vaulttango.dmm index 564130f0622..32af8167288 100644 --- a/_maps/RandomRuins/SpaceRuins/skyrat/vaulttango.dmm +++ b/_maps/RandomRuins/SpaceRuins/skyrat/vaulttango.dmm @@ -18,7 +18,7 @@ /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 1 }, -/mob/living/basic/trooper/syndicate/melee, +/mob/living/basic/trooper/syndicate/ranged/smg/space, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/vaulttango) "aM" = ( @@ -1101,6 +1101,7 @@ }, /obj/machinery/firealarm/directional/north, /obj/effect/decal/cleanable/cobweb/cobweb2, +/mob/living/basic/trooper/syndicate/ranged/smg/space, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/vaulttango) "Mk" = ( @@ -1148,6 +1149,14 @@ /obj/effect/turf_decal/bot_blue, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/vaulttango) +"NO" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/mob/living/basic/trooper/syndicate/ranged/smg/space, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/vaulttango) "NP" = ( /obj/item/gun/energy/wormhole_projector, /obj/structure/closet/crate{ @@ -1249,10 +1258,6 @@ }, /obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/mob/living/basic/trooper/syndicate/ranged{ - desc = "An armed agent, provided by the Syndicate."; - name = "ARBORLINK Operative" - }, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/vaulttango) "Rb" = ( @@ -3346,7 +3351,7 @@ ai ai ai PS -cM +NO Tp Zl ai diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/waypointstation.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/waypointstation.dmm index 8b12c9c9233..7a5b039a73c 100644 --- a/_maps/RandomRuins/SpaceRuins/skyrat/waypointstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/skyrat/waypointstation.dmm @@ -91,6 +91,7 @@ pixel_y = -5 }, /obj/machinery/light/small/broken/directional/north, +/mob/living/basic/alien, /turf/open/floor/carpet/royalblue/airless, /area/ruin/space/has_grav/waypoint) "fs" = ( @@ -512,7 +513,8 @@ /area/ruin/space/has_grav/waypoint) "Bi" = ( /obj/structure/closet, -/obj/item/ammo_casing/shotgun/pulverizer, +/obj/item/ammo_box/advanced/s12gauge/buckshot, +/obj/item/ammo_box/advanced/s12gauge/buckshot, /turf/open/floor/iron/airless, /area/ruin/space/has_grav/waypoint) "Bl" = ( @@ -599,6 +601,7 @@ /area/ruin/space/has_grav/waypoint) "Fu" = ( /obj/effect/decal/cleanable/blood/gibs/torso, +/mob/living/basic/alien/drone, /turf/open/floor/carpet/royalblue/airless, /area/ruin/space/has_grav/waypoint) "Gh" = ( @@ -634,6 +637,7 @@ pixel_x = -6; pixel_y = 3 }, +/mob/living/basic/alien, /turf/open/floor/carpet/royalblue/airless, /area/ruin/space/has_grav/waypoint) "HV" = ( diff --git a/config/spaceruinblacklist.txt b/config/spaceruinblacklist.txt index a928f042d8f..df087eb41e6 100644 --- a/config/spaceruinblacklist.txt +++ b/config/spaceruinblacklist.txt @@ -51,7 +51,7 @@ #_maps/RandomRuins/SpaceRuins/hauntedtradingpost.dmm #_maps/RandomRuins/SpaceRuins/hellfactory.dmm #_maps/RandomRuins/SpaceRuins/hilbertsresearchfacility.dmm -#_maps/RandomRuins/SpaceRuins/infested_frigate.dmm +_maps/RandomRuins/SpaceRuins/infested_frigate.dmm #_maps/RandomRuins/SpaceRuins/intactemptyship.dmm #_maps/RandomRuins/SpaceRuins/interdyne.dmm #_maps/RandomRuins/SpaceRuins/listeningstation.dmm @@ -64,7 +64,7 @@ #_maps/RandomRuins/SpaceRuins/oldAIsat.dmm #_maps/RandomRuins/SpaceRuins/oldstation.dmm #_maps/RandomRuins/SpaceRuins/oldteleporter.dmm -#_maps/RandomRuins/SpaceRuins/onehalf.dmm +_maps/RandomRuins/SpaceRuins/onehalf.dmm #_maps/RandomRuins/SpaceRuins/originalcontent.dmm #_maps/RandomRuins/SpaceRuins/phonebooth.dmm #_maps/RandomRuins/SpaceRuins/pod_crash.dmm @@ -92,3 +92,5 @@ #modular_skyrat/modules/mapping/_maps/RandomRuins/SpaceRuins/forgottenship_skyrat.dmm #modular_skyrat/modules/mapping/_maps/RandomRuins/SpaceRuins/shuttle8532.dmm #modular_skyrat/modules/ruins/maps/space/dangerous_research.dmm +#_maps/RandomRuins/SpaceRuins/bubberstation/infested_frigate.dmm +#_maps/RandomRuins/SpaceRuins/bubberstation/onehalf.dmm diff --git a/modular_zubbers/code/datums/ruins/space.dm b/modular_zubbers/code/datums/ruins/space.dm new file mode 100644 index 00000000000..94de5258724 --- /dev/null +++ b/modular_zubbers/code/datums/ruins/space.dm @@ -0,0 +1,18 @@ +/datum/map_template/ruin/space/bubber + prefix = "_maps/RandomRuins/SpaceRuins/bubberstation/" + cost = 1 + allow_duplicates = FALSE + ruin_type = ZTRAIT_SPACE_RUINS + default_area = /area/space + +/datum/map_template/ruin/space/bubber/onehalf //Modified from the original ruin. See PR 5983. + id = "onehalf" + suffix = "onehalf.dmm" + name = "Space-Ruin DK Excavator 453" + description = "An old mining station, at least what's left of it. Despite it's age there's still scavengers picking at the wreckage." + +/datum/map_template/ruin/space/bubber/infested_frigate //Modified from the original ruin. See PR 5983. + id = "infested_frigate" + suffix = "infested_frigate.dmm" + name = "Space Ruin SYN-C Brutus" + description = "This wasn't an outbreak, this was a repelled attack." diff --git a/tgstation.dme b/tgstation.dme index 46966f20057..59626d3e9b5 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -9247,6 +9247,7 @@ #include "modular_zubbers\code\datums\quirks\positive_quirks\isotropic_stability\isotropic_stability.dm" #include "modular_zubbers\code\datums\quirks\positive_quirks\venomous_bite\venomous_bite.dm" #include "modular_zubbers\code\datums\quirks\positive_quirks\venomous_bite\venomous_bite_quirk.dm" +#include "modular_zubbers\code\datums\ruins\space.dm" #include "modular_zubbers\code\datums\shuttle\arena.dm" #include "modular_zubbers\code\datums\shuttles\emergency.dm" #include "modular_zubbers\code\datums\station_traits\disabled_traits.dm" From fcf23fbd4d37658190fbd994784fc4b1a120a86e Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Fri, 7 Aug 2026 01:41:30 +0200 Subject: [PATCH 096/139] Automatic changelog for PR #5983 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5983.yml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5983.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5983.yml b/html/changelogs/AutoChangeLog-bubber-pr-5983.yml new file mode 100644 index 00000000000..1c5cbceff82 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-5983.yml @@ -0,0 +1,9 @@ +author: "Orotheim" +delete-after: True +changes: + - balance: "Replaces the contents of the OneHalf safe with a Surplus MOD and Advanced Ion Jetpack and adds some pirates." + - balance: "Replaces the Nukie Smartgun in infested frigate with an energy shotgun and adds an SMG commando." + - balance: "Replaces the pulverizer shell in waypointstation.dmm with a box of buckshot" + - balance: "Replaces the real syndicate modsuit shuttle8532 with a police modsuit. Adds a syndicate stormstrooper with a shotgun." + - balance: "Replaces some of the Operatives in vault tango with commando's." + - rscadd: "Adds a heroic laser musket to the black market." \ No newline at end of file From d538459c9126c7577451f91fbe9ab5ac9a9bd96f Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Fri, 7 Aug 2026 02:39:48 +0000 Subject: [PATCH 097/139] Bubberstation automatic changelog compile [ci skip] --- .../AutoChangeLog-bubber-pr-5983.yml | 9 --------- .../AutoChangeLog-bubber-pr-6030.yml | 4 ---- .../AutoChangeLog-bubber-pr-6050.yml | 5 ----- html/changelogs/bubber_archive/2026-08.yml | 18 ++++++++++++++++++ 4 files changed, 18 insertions(+), 18 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5983.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6030.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6050.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5983.yml b/html/changelogs/AutoChangeLog-bubber-pr-5983.yml deleted file mode 100644 index 1c5cbceff82..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-5983.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: "Orotheim" -delete-after: True -changes: - - balance: "Replaces the contents of the OneHalf safe with a Surplus MOD and Advanced Ion Jetpack and adds some pirates." - - balance: "Replaces the Nukie Smartgun in infested frigate with an energy shotgun and adds an SMG commando." - - balance: "Replaces the pulverizer shell in waypointstation.dmm with a box of buckshot" - - balance: "Replaces the real syndicate modsuit shuttle8532 with a police modsuit. Adds a syndicate stormstrooper with a shotgun." - - balance: "Replaces some of the Operatives in vault tango with commando's." - - rscadd: "Adds a heroic laser musket to the black market." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6030.yml b/html/changelogs/AutoChangeLog-bubber-pr-6030.yml deleted file mode 100644 index 64b41bdfee1..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6030.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Swan" -delete-after: True -changes: - - config: "Added configs for finer control over the various storytellers, and renamed wrongly named configs. Removed configs which weren't tied to anything." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6050.yml b/html/changelogs/AutoChangeLog-bubber-pr-6050.yml deleted file mode 100644 index 37c8c3fc4b2..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6050.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Maia-J" -delete-after: True -changes: - - balance: "Space carp event is now actually tagged as SPACE and COMBAT" - - balance: "Space dolphins are now in a different track, at a lower weight, to make them rarer." \ No newline at end of file diff --git a/html/changelogs/bubber_archive/2026-08.yml b/html/changelogs/bubber_archive/2026-08.yml index 96cf72ec90b..d7f7b028ce1 100644 --- a/html/changelogs/bubber_archive/2026-08.yml +++ b/html/changelogs/bubber_archive/2026-08.yml @@ -60,3 +60,21 @@ - bugfix: body_size being reapplied multiple times xPokee: - bugfix: Fixed the size collar. +2026-08-07: + Maia-J: + - balance: Space carp event is now actually tagged as SPACE and COMBAT + - balance: Space dolphins are now in a different track, at a lower weight, to make + them rarer. + Orotheim: + - balance: Replaces the contents of the OneHalf safe with a Surplus MOD and Advanced + Ion Jetpack and adds some pirates. + - balance: Replaces the Nukie Smartgun in infested frigate with an energy shotgun + and adds an SMG commando. + - balance: Replaces the pulverizer shell in waypointstation.dmm with a box of buckshot + - balance: Replaces the real syndicate modsuit shuttle8532 with a police modsuit. + Adds a syndicate stormstrooper with a shotgun. + - balance: Replaces some of the Operatives in vault tango with commando's. + - rscadd: Adds a heroic laser musket to the black market. + Swan: + - config: Added configs for finer control over the various storytellers, and renamed + wrongly named configs. Removed configs which weren't tied to anything. From 33f3115bee0361cbc615a77b54249a0ff7ba4a83 Mon Sep 17 00:00:00 2001 From: Cabbage <130223709+SomeCabbage@users.noreply.github.com> Date: Fri, 7 Aug 2026 06:06:23 -0400 Subject: [PATCH 098/139] Adds radiation and welding protection to elder atmos armor. (#6067) ## About The Pull Request Title. ## Why It's Good For The Game This is how it was intended to function, since the prerequisite helmet had welding protection but this doesn't for some reason and also it doesn't protect against radiation even though you're near the most radioactive things in the game so I fixed that. ## Proof Of Testing image Screenshot 2026-08-06 163545 Screenshot 2026-08-06 163631 ## Changelog :cl: add: Adds welding and radiation protection to the elder atmosian armor. /:cl: Co-authored-by: Cabbage --- modular_zubbers/code/modules/clothing/head/helmet.dm | 5 +++++ modular_zubbers/code/modules/clothing/suits/armor.dm | 1 + 2 files changed, 6 insertions(+) diff --git a/modular_zubbers/code/modules/clothing/head/helmet.dm b/modular_zubbers/code/modules/clothing/head/helmet.dm index dc19035530c..dad6754c3bb 100644 --- a/modular_zubbers/code/modules/clothing/head/helmet.dm +++ b/modular_zubbers/code/modules/clothing/head/helmet.dm @@ -682,9 +682,14 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT resistance_flags = FIRE_PROOF + flash_protect = FLASH_PROTECTION_WELDER flags_inv = HIDEFACE | HIDEFACIALHAIR | HIDEHAIR | HIDEMASK | HIDEEYES | HIDEEARS custom_materials = list(/datum/material/metalhydrogen = SHEET_MATERIAL_AMOUNT * 3) +/obj/item/clothing/head/helmet/elder_atmosian/Initialize(mapload) + . = ..() + AddElement(/datum/element/radiation_protected_clothing) + /datum/armor/helmet_elder_atmosian melee = 40 bullet = 30 diff --git a/modular_zubbers/code/modules/clothing/suits/armor.dm b/modular_zubbers/code/modules/clothing/suits/armor.dm index ac3d82403bd..2e64e14e2bf 100644 --- a/modular_zubbers/code/modules/clothing/suits/armor.dm +++ b/modular_zubbers/code/modules/clothing/suits/armor.dm @@ -99,6 +99,7 @@ allowed += list( /obj/item/fireaxe/metal_h2_axe, ) + AddElement(/datum/element/radiation_protected_clothing) /datum/armor/armor_elder_atmosian melee = 40 From 13e8306a686b3caab970e2c4f7a12258a7c1a964 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Fri, 7 Aug 2026 12:06:55 +0200 Subject: [PATCH 099/139] Automatic changelog for PR #6067 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6067.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6067.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6067.yml b/html/changelogs/AutoChangeLog-bubber-pr-6067.yml new file mode 100644 index 00000000000..881f188f0fe --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6067.yml @@ -0,0 +1,4 @@ +author: "SomeCabbage" +delete-after: True +changes: + - rscadd: "Adds welding and radiation protection to the elder atmosian armor." \ No newline at end of file From d4b1e91cc1dd3264b6d20978a05a64a0d3380f3a Mon Sep 17 00:00:00 2001 From: Waterpig <49160555+Maia-J@users.noreply.github.com> Date: Fri, 7 Aug 2026 13:51:31 +0200 Subject: [PATCH 100/139] Hydra head quirk fixes (#6070) ## About The Pull Request Losing the quirk correctly resets your name into a whole. It also removes the spells you have been granted. ## Why It's Good For The Game fixes #3853 ## Proof Of Testing image image ## Changelog :cl: fix: Hydra heads now correctly reset your name and remove the spells upon being removed. /:cl: Co-authored-by: Maia --- modular_skyrat/modules/hydra/code/neutral.dm | 54 +++++++++++--------- 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/modular_skyrat/modules/hydra/code/neutral.dm b/modular_skyrat/modules/hydra/code/neutral.dm index 4c92eccc10d..adf92ca8732 100644 --- a/modular_skyrat/modules/hydra/code/neutral.dm +++ b/modular_skyrat/modules/hydra/code/neutral.dm @@ -9,38 +9,29 @@ icon = FA_ICON_HORSE_HEAD // remember what the name was before activation var/original_name + var/datum/action/innate/hydra_head/head_spell + var/datum/action/innate/hydra_reset/reset_spell /datum/quirk/hydra/add(client/client_source) - var/mob/living/carbon/human/hydra = quirk_holder - var/datum/action/innate/hydra/spell = new(hydra) - var/datum/action/innate/hydrareset/resetspell = new(hydra) - spell.Grant(hydra) - spell.owner = hydra - resetspell.Grant(hydra) - resetspell.owner = hydra + head_spell = new() + reset_spell = new() + head_spell.Grant(quirk_holder) + reset_spell.Grant(quirk_holder) -/datum/action/innate/hydra +/datum/quirk/hydra/remove() + head_spell.Remove(quirk_holder) + reset_spell.Remove(quirk_holder) + QDEL_NULL(head_spell) + QDEL_NULL(reset_spell) + quirk_holder.real_name = original_name + +/datum/action/innate/hydra_head name = "Switch head" desc = "Switch between each of the heads on your body." button_icon = 'icons/mob/actions/actions_minor_antag.dmi' button_icon_state = "art_summon" -/datum/action/innate/hydrareset - name = "Reset Speech" - desc = "Go back to speaking as a whole." - button_icon = 'icons/mob/actions/actions_minor_antag.dmi' - button_icon_state = "art_summon" - -/datum/action/innate/hydrareset/Activate() - var/mob/living/carbon/human/hydra = owner - var/datum/quirk/hydra/hydra_quirk = hydra.get_quirk(/datum/quirk/hydra) - if(!hydra_quirk.original_name) // sets the archived 'real' name if not set. - hydra_quirk.original_name = hydra.real_name - hydra.real_name = hydra_quirk.original_name - hydra.visible_message(span_notice("[hydra.name] pushes all three heads forwards; they seem to be talking as a collective."), \ - span_notice("You are now talking as [hydra_quirk.original_name]!"), ignored_mobs=owner) - -/datum/action/innate/hydra/Activate() //Oops, all hydra! +/datum/action/innate/hydra_head/Activate() //Oops, all hydra! var/mob/living/carbon/human/hydra = owner var/datum/quirk/hydra/hydra_quirk = hydra.get_quirk(/datum/quirk/hydra) if(!hydra_quirk.original_name) // sets the archived 'real' name if not set. @@ -50,3 +41,18 @@ hydra.real_name = selhead hydra.visible_message(span_notice("[hydra.name] pulls the rest of their heads back; and puts [selhead]'s forward."), \ span_notice("You are now talking as [selhead]!"), ignored_mobs=owner) + +/datum/action/innate/hydra_reset + name = "Reset Speech" + desc = "Go back to speaking as a whole." + button_icon = 'icons/mob/actions/actions_minor_antag.dmi' + button_icon_state = "art_summon" + +/datum/action/innate/hydra_reset/Activate() + var/mob/living/carbon/human/hydra = owner + var/datum/quirk/hydra/hydra_quirk = hydra.get_quirk(/datum/quirk/hydra) + if(!hydra_quirk.original_name) // sets the archived 'real' name if not set. + hydra_quirk.original_name = hydra.real_name + hydra.real_name = hydra_quirk.original_name + hydra.visible_message(span_notice("[hydra.name] pushes all three heads forwards; they seem to be talking as a collective."), \ + span_notice("You are now talking as [hydra_quirk.original_name]!"), ignored_mobs=owner) From fa14e626155b1f52b109de303db90185a393a63a Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Fri, 7 Aug 2026 13:51:57 +0200 Subject: [PATCH 101/139] Automatic changelog for PR #6070 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6070.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6070.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6070.yml b/html/changelogs/AutoChangeLog-bubber-pr-6070.yml new file mode 100644 index 00000000000..d30bc53ea27 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6070.yml @@ -0,0 +1,4 @@ +author: "Maia-J" +delete-after: True +changes: + - bugfix: "Hydra heads now correctly reset your name and remove the spells upon being removed." \ No newline at end of file From 2e35a9c9e1571a4223bb6e5a79e968c24634169d Mon Sep 17 00:00:00 2001 From: Waterpig <49160555+Maia-J@users.noreply.github.com> Date: Fri, 7 Aug 2026 14:02:31 +0200 Subject: [PATCH 102/139] Replaces waterbreathing with TG's NODROWN (#6069) ## About The Pull Request TRAIT_NODROWN is basically the same thing, so there's no reason to keep a weird snowflake check from skyrat. closes #4623 ## Why It's Good For The Game Less bloated code, and fixes an issue ## Proof Of Testing I ran around with my akula and it all worked, didn't drown in deep tiles, and I didn't drown in turf liquids either ## Changelog :cl: fix: Akulas and other waterbreathers no longer drown in deep water refactor: TRAIT_NODROWN now fully replaces TRAIT_WATER_BREATHING in the backend for better consistency for when TG changes stuff. /:cl: Co-authored-by: Maia --- code/__DEFINES/~skyrat_defines/traits/declarations.dm | 3 --- code/_globalvars/traits/_traits.dm | 1 - code/_globalvars/traits/admin_tooling.dm | 1 - code/modules/mob/living/carbon/human/species_types/snail.dm | 2 +- code/modules/mob/living/carbon/life.dm | 2 +- .../master_files/code/modules/mob/living/human/species.dm | 2 +- .../modules/mob/living/carbon/human/species/akula.dm | 2 +- .../modules/mob/living/carbon/human/species/aquatic.dm | 2 +- modular_skyrat/modules/quirks/good.dm | 2 +- .../modules/mob/living/carbon/human/species_types/shadekin.dm | 2 +- 10 files changed, 7 insertions(+), 12 deletions(-) diff --git a/code/__DEFINES/~skyrat_defines/traits/declarations.dm b/code/__DEFINES/~skyrat_defines/traits/declarations.dm index 7e8fd1a1afa..d0c61c34f40 100644 --- a/code/__DEFINES/~skyrat_defines/traits/declarations.dm +++ b/code/__DEFINES/~skyrat_defines/traits/declarations.dm @@ -48,9 +48,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai // Trait sources #define TRAIT_GHOSTROLE "ghostrole" // SKYRAT EDIT ADDITION -- Ghost Cafe Traits -/// One can breath under water, you get me? -#define TRAIT_WATER_BREATHING "water_breathing" - /// Trait to assign to pets who've already had a space treat to prevent double-feeding #define TRAIT_PET_SPACE_TREAT "space_pet_treat" diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index c89b4c83195..2fb670e3c0e 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -945,7 +945,6 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_SYNTHETIC" = TRAIT_SYNTHETIC, "TRAIT_TRASHMAN" = TRAIT_TRASHMAN, "TRAIT_WATER_ASPECT" = TRAIT_WATER_ASPECT, - "TRAIT_WATER_BREATHING" = TRAIT_WATER_BREATHING, "TRAIT_WEBBING_ASPECT" = TRAIT_WEBBING_ASPECT, "TRAIT_XENO_ABILITY_GIVEN" = TRAIT_XENO_ABILITY_GIVEN, "TRAIT_XENOARCH_QUALIFIED" = TRAIT_XENOARCH_QUALIFIED, diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 702b9716cf5..9fc4e0ddae3 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -506,7 +506,6 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_SYNTHETIC" = TRAIT_SYNTHETIC, "TRAIT_TRASHMAN" = TRAIT_TRASHMAN, "TRAIT_WATER_ASPECT" = TRAIT_WATER_ASPECT, - "TRAIT_WATER_BREATHING" = TRAIT_WATER_BREATHING, "TRAIT_WEBBING_ASPECT" = TRAIT_WEBBING_ASPECT, "TRAIT_XENO_ABILITY_GIVEN" = TRAIT_XENO_ABILITY_GIVEN, "TRAIT_XENOARCH_QUALIFIED" = TRAIT_XENOARCH_QUALIFIED, diff --git a/code/modules/mob/living/carbon/human/species_types/snail.dm b/code/modules/mob/living/carbon/human/species_types/snail.dm index a59d433731c..12d63e55b3b 100644 --- a/code/modules/mob/living/carbon/human/species_types/snail.dm +++ b/code/modules/mob/living/carbon/human/species_types/snail.dm @@ -6,7 +6,7 @@ TRAIT_MUTANT_COLORS, // TRAIT_NO_UNDERWEAR, //SKYRAT EDIT REMOVAL - Roundstart Snails - Snails deserve to wear underwear TRAIT_NO_SLIP_ALL, - TRAIT_WATER_BREATHING, //SKYRAT EDIT ADDITION - Roundstart Snails - Sea snails exist, and land snails can weather being underwater for almost a day. + TRAIT_NODROWN, //SKYRAT EDIT ADDITION - Roundstart Snails - Sea snails exist, and land snails can weather being underwater for almost a day. ) coldmod = 0.5 //snails only come out when its cold and wet diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 3d5001424fe..5a325a046e3 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -113,7 +113,7 @@ var/turf/our_turf = loc if(our_turf.liquids && !HAS_TRAIT(src, TRAIT_NOBREATH) && ((body_position == LYING_DOWN && our_turf.liquids.liquid_state >= LIQUID_STATE_WAIST) || (body_position == STANDING_UP && our_turf.liquids.liquid_state >= LIQUID_STATE_FULLTILE))) //Officially trying to breathe underwater - if(HAS_TRAIT(src, TRAIT_WATER_BREATHING)) + if(HAS_TRAIT(src, TRAIT_NODROWN)) failed_last_breath = FALSE clear_alert("not_enough_oxy") return FALSE diff --git a/modular_skyrat/master_files/code/modules/mob/living/human/species.dm b/modular_skyrat/master_files/code/modules/mob/living/human/species.dm index f9324affff9..0c65341a233 100644 --- a/modular_skyrat/master_files/code/modules/mob/living/human/species.dm +++ b/modular_skyrat/master_files/code/modules/mob/living/human/species.dm @@ -36,7 +36,7 @@ /datum/species/create_pref_traits_perks() . = ..() - if (TRAIT_WATER_BREATHING in inherent_traits) + if (TRAIT_NODROWN in inherent_traits) . += list(list( SPECIES_PERK_TYPE = SPECIES_POSITIVE_PERK, SPECIES_PERK_ICON = FA_ICON_FISH, diff --git a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/akula.dm b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/akula.dm index d8e4b4c30c6..865341b4e5a 100644 --- a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/akula.dm +++ b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/akula.dm @@ -22,7 +22,7 @@ TRAIT_ADVANCEDTOOLUSER, TRAIT_CAN_STRIP, TRAIT_LITERATE, - TRAIT_WATER_BREATHING, + TRAIT_NODROWN, TRAIT_SLICK_SKIN, TRAIT_MUTANT_COLORS, ) diff --git a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/aquatic.dm b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/aquatic.dm index 2cfbff50d92..8ed3302b05a 100644 --- a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/aquatic.dm +++ b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/aquatic.dm @@ -5,7 +5,7 @@ TRAIT_ADVANCEDTOOLUSER, TRAIT_CAN_STRIP, TRAIT_LITERATE, - TRAIT_WATER_BREATHING, + TRAIT_NODROWN, TRAIT_MUTANT_COLORS, ) inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID diff --git a/modular_skyrat/modules/quirks/good.dm b/modular_skyrat/modules/quirks/good.dm index b2566289ac5..8643b3cbb3a 100644 --- a/modular_skyrat/modules/quirks/good.dm +++ b/modular_skyrat/modules/quirks/good.dm @@ -72,7 +72,7 @@ name = "Water breathing" desc = "You are able to breathe underwater!" value = 2 - mob_trait = TRAIT_WATER_BREATHING + mob_trait = TRAIT_NODROWN gain_text = span_notice("You become acutely aware of the moisture in your lungs and in the air. It feels nice.") lose_text = span_danger("You suddenly realize the moisture in your lungs feels really weird, and you almost choke on it!") medical_record_text = "Patient possesses biology compatible with aquatic respiration." diff --git a/modular_zubbers/code/modules/mob/living/carbon/human/species_types/shadekin.dm b/modular_zubbers/code/modules/mob/living/carbon/human/species_types/shadekin.dm index 3ab25915db0..b7e738c8bd0 100644 --- a/modular_zubbers/code/modules/mob/living/carbon/human/species_types/shadekin.dm +++ b/modular_zubbers/code/modules/mob/living/carbon/human/species_types/shadekin.dm @@ -20,7 +20,7 @@ TRAIT_ADVANCEDTOOLUSER, TRAIT_CAN_STRIP, TRAIT_LITERATE, - TRAIT_WATER_BREATHING, + TRAIT_NODROWN, TRAIT_SLICK_SKIN, TRAIT_MUTANT_COLORS, TRAIT_NIGHT_VISION, From 2560864ddd2e86f732ab2b01a499e534cef558e8 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Fri, 7 Aug 2026 14:03:06 +0200 Subject: [PATCH 103/139] Automatic changelog for PR #6069 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6069.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6069.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6069.yml b/html/changelogs/AutoChangeLog-bubber-pr-6069.yml new file mode 100644 index 00000000000..bb75201cbe0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6069.yml @@ -0,0 +1,5 @@ +author: "Maia-J" +delete-after: True +changes: + - bugfix: "Akulas and other waterbreathers no longer drown in deep water" + - refactor: "TRAIT_NODROWN now fully replaces TRAIT_WATER_BREATHING in the backend for better consistency for when TG changes stuff." \ No newline at end of file From b450c4e07a03c1fdfc64ca70ff085f5f7207a27f Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sat, 8 Aug 2026 01:38:46 +0000 Subject: [PATCH 104/139] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6067.yml | 4 ---- html/changelogs/AutoChangeLog-bubber-pr-6069.yml | 5 ----- html/changelogs/AutoChangeLog-bubber-pr-6070.yml | 4 ---- html/changelogs/bubber_archive/2026-08.yml | 9 +++++++++ 4 files changed, 9 insertions(+), 13 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6067.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6069.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6070.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6067.yml b/html/changelogs/AutoChangeLog-bubber-pr-6067.yml deleted file mode 100644 index 881f188f0fe..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6067.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SomeCabbage" -delete-after: True -changes: - - rscadd: "Adds welding and radiation protection to the elder atmosian armor." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6069.yml b/html/changelogs/AutoChangeLog-bubber-pr-6069.yml deleted file mode 100644 index bb75201cbe0..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6069.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Maia-J" -delete-after: True -changes: - - bugfix: "Akulas and other waterbreathers no longer drown in deep water" - - refactor: "TRAIT_NODROWN now fully replaces TRAIT_WATER_BREATHING in the backend for better consistency for when TG changes stuff." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6070.yml b/html/changelogs/AutoChangeLog-bubber-pr-6070.yml deleted file mode 100644 index d30bc53ea27..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6070.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Maia-J" -delete-after: True -changes: - - bugfix: "Hydra heads now correctly reset your name and remove the spells upon being removed." \ No newline at end of file diff --git a/html/changelogs/bubber_archive/2026-08.yml b/html/changelogs/bubber_archive/2026-08.yml index d7f7b028ce1..e39bf743d21 100644 --- a/html/changelogs/bubber_archive/2026-08.yml +++ b/html/changelogs/bubber_archive/2026-08.yml @@ -78,3 +78,12 @@ Swan: - config: Added configs for finer control over the various storytellers, and renamed wrongly named configs. Removed configs which weren't tied to anything. +2026-08-08: + Maia-J: + - bugfix: Akulas and other waterbreathers no longer drown in deep water + - refactor: TRAIT_NODROWN now fully replaces TRAIT_WATER_BREATHING in the backend + for better consistency for when TG changes stuff. + - bugfix: Hydra heads now correctly reset your name and remove the spells upon being + removed. + SomeCabbage: + - rscadd: Adds welding and radiation protection to the elder atmosian armor. From 807fd7168479d86f86b94076afbafec786387ec7 Mon Sep 17 00:00:00 2001 From: gavla <96078776+shayoki@users.noreply.github.com> Date: Fri, 7 Aug 2026 21:04:36 -0500 Subject: [PATCH 105/139] Removes me, gavla from mapping codeowners (#6074) ## About The Pull Request Removes me from code owners related to map changes. --- .github/CODEOWNERS | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index b8e6eee555a..1e302ccb781 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -39,7 +39,3 @@ /config @nevimer /SQL @nevimer /tools @nevimer - -# Gavla - -/_maps @shayoki From 20e16f2514049e04503a33834153d8f88dfecd34 Mon Sep 17 00:00:00 2001 From: Zee <51836752+Zeerum@users.noreply.github.com> Date: Sat, 8 Aug 2026 05:16:12 -0400 Subject: [PATCH 106/139] Various Cargoborg bugfixes (#6079) ## About The Pull Request Gives the Cargoborg their granted stamp back. Also allows hacked cargoborgs to weaponize paperwork again by fixing the paper airplane crossbow launcher. ## Why It's Good For The Game Cargoborg was due for bugfixes. ## Proof Of Testing
image
## Changelog :cl: Zeerum, Odairu fix: Cargoborgs have been given their granted stamp back fix: Emagged cargoborgs can once again weaponize paperwork /:cl: --- modular_skyrat/modules/borgs/code/robot_items.dm | 4 ++-- modular_skyrat/modules/borgs/code/robot_model.dm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modular_skyrat/modules/borgs/code/robot_items.dm b/modular_skyrat/modules/borgs/code/robot_items.dm index 6577a3e746c..00f1b21cdca 100644 --- a/modular_skyrat/modules/borgs/code/robot_items.dm +++ b/modular_skyrat/modules/borgs/code/robot_items.dm @@ -372,13 +372,13 @@ return ITEM_INTERACT_SUCCESS -/obj/item/borg/paperplane_crossbow/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) +/obj/item/borg/paperplane_crossbow/ranged_interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) check_amount() if(!iscyborg(user)) return ITEM_INTERACT_BLOCKING var/mob/living/silicon/robot/robot_user = user - if(!robot_user.cell.use(10)) + if(!robot_user.cell.use(STANDARD_CELL_CHARGE * 0.1)) to_chat(user, span_warning("Not enough power.")) return ITEM_INTERACT_BLOCKING return shoot(interacting_with, user) diff --git a/modular_skyrat/modules/borgs/code/robot_model.dm b/modular_skyrat/modules/borgs/code/robot_model.dm index 814acedfd05..f4744f70a95 100644 --- a/modular_skyrat/modules/borgs/code/robot_model.dm +++ b/modular_skyrat/modules/borgs/code/robot_model.dm @@ -313,7 +313,7 @@ /obj/item/robot_model/cargo name = "Cargo" basic_modules = list( - /obj/item/stamp, + /obj/item/stamp/granted, /obj/item/stamp/denied, /obj/item/pen/cyborg, /obj/item/clipboard/cyborg, From 9a9b7f4c37ac421f6518e1a458288300aaca96e2 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sat, 8 Aug 2026 11:16:38 +0200 Subject: [PATCH 107/139] Automatic changelog for PR #6079 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6079.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6079.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6079.yml b/html/changelogs/AutoChangeLog-bubber-pr-6079.yml new file mode 100644 index 00000000000..5c55e9a2c00 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6079.yml @@ -0,0 +1,5 @@ +author: "Zeerum, Odairu" +delete-after: True +changes: + - bugfix: "Cargoborgs have been given their granted stamp back" + - bugfix: "Emagged cargoborgs can once again weaponize paperwork" \ No newline at end of file From 7e31017911e6a9229a1f0bee474841b14a989876 Mon Sep 17 00:00:00 2001 From: Odairu <39929315+Odairu@users.noreply.github.com> Date: Sat, 8 Aug 2026 09:55:49 -0400 Subject: [PATCH 108/139] Fixes normalization items from making you a macro, much to the dismay of my kink enjoyment (#6080) ## About The Pull Request The normalize procs just gave you oversized regardless of whether or not you actually had the quirk, this PR fixes that so it properly respects the size you want:tm: Also it stops the for loop from iterating once it finds your oversized quirk (if you have one) Also re-limits oversized to 2 tiles tall like god intended (fuck my life, I want giant women back) ## Why It's Good For The Game Bug fix go brrr ## Proof Of Testing It works, I tested it, I pawmise image
Screenshots/Videos
## Changelog :cl: fix: Normalization items properly respect size/prefs fix: Oversized is limited to 2 tiles tall once again /:cl: --- .../quirks/neutral_quirks/oversized/oversized_quirk.dm | 2 +- modular_zubbers/code/modules/clothing/clothing.dm | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/modular_zubbers/code/datums/quirks/neutral_quirks/oversized/oversized_quirk.dm b/modular_zubbers/code/datums/quirks/neutral_quirks/oversized/oversized_quirk.dm index 93716fa2555..c4c5044e724 100644 --- a/modular_zubbers/code/datums/quirks/neutral_quirks/oversized/oversized_quirk.dm +++ b/modular_zubbers/code/datums/quirks/neutral_quirks/oversized/oversized_quirk.dm @@ -17,7 +17,7 @@ /datum/quirk/oversized/add(client/client_source) var/mob/living/carbon/human/human_holder = quirk_holder - human_holder.update_transform(2 * RESIZE_DEFAULT_SIZE) + human_holder.update_transform(2 * RESIZE_DEFAULT_SIZE / human_holder.current_size) human_holder.maxHealth = HUMAN_MAXHEALTH * OVERSIZED_HEALTH_BUFF human_holder.health += ((HUMAN_MAXHEALTH * OVERSIZED_HEALTH_BUFF) - HUMAN_MAXHEALTH) diff --git a/modular_zubbers/code/modules/clothing/clothing.dm b/modular_zubbers/code/modules/clothing/clothing.dm index 6eeb15bb72e..a99ea2d376f 100644 --- a/modular_zubbers/code/modules/clothing/clothing.dm +++ b/modular_zubbers/code/modules/clothing/clothing.dm @@ -19,9 +19,10 @@ playsound(resizer,'sound/items/weapons/emitter2.ogg', 50, 1) flash_lighting_fx(3, 3, LIGHT_COLOR_YELLOW) resizer.visible_message(span_warning("Golden light engulfs [resizer], and they shoot back to their default height!"), span_notice("Energy rushes through your body, and you return to normal.")) - for(var/datum/quirk/oversized/oversized as anything in resizer?.client?.prefs?.all_quirks) - if(oversized) + for(var/quirk in resizer?.client?.prefs?.all_quirks) + if(quirk == "Oversized") resizer.add_quirk(/datum/quirk/oversized, announce = FALSE) + break if(!resizer.get_quirk(/datum/quirk/oversized)) resizer.update_transform(resizer?.client?.prefs?.read_preference(/datum/preference/numeric/body_size)) resizer.normalized = FALSE From e5236b0e570e69e508329f5334deb2b7e9c76474 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sat, 8 Aug 2026 15:59:39 +0200 Subject: [PATCH 109/139] Automatic changelog for PR #6080 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6080.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6080.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6080.yml b/html/changelogs/AutoChangeLog-bubber-pr-6080.yml new file mode 100644 index 00000000000..a6e8c66811b --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6080.yml @@ -0,0 +1,5 @@ +author: "Odairu" +delete-after: True +changes: + - bugfix: "Normalization items properly respect size/prefs" + - bugfix: "Oversized is limited to 2 tiles tall once again" \ No newline at end of file From 523cf0ed2d8f915a1a7dc9cad778a9657db2db19 Mon Sep 17 00:00:00 2001 From: LT3 <83487515+lessthnthree@users.noreply.github.com> Date: Sat, 8 Aug 2026 10:51:55 -0700 Subject: [PATCH 110/139] Add toggle stat panel to stat panel (#6081) ## About The Pull Request Un-hides the secret toggle-stat-panel verb ## Why It's Good For The Game Friday somehow hid the stat panel and didn't know how to fix it. It'll probably happen again with somebody else. ## Changelog :cl: LT3 add: Toggle Stat Panel is now available in the OOC panel /:cl: --- code/modules/client/verbs/stat_panel.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/client/verbs/stat_panel.dm b/code/modules/client/verbs/stat_panel.dm index b350c4ee887..646b29acb0b 100644 --- a/code/modules/client/verbs/stat_panel.dm +++ b/code/modules/client/verbs/stat_panel.dm @@ -1,6 +1,7 @@ /client/verb/toggle_stat_panel() set name = "Toggle Stat Panel" - set hidden = TRUE + set category = "OOC" // BUBBER EDIT ADDITION - SHOW STAT PANEL TOGGLE + // set hidden = TRUE // BUBBER EDIT CHANGE - SHOW STAT PANEL TOGGLE //Flip it prefs.write_preference(GLOB.preference_entries[/datum/preference/toggle/statpanel], !prefs.read_preference(/datum/preference/toggle/statpanel)) From 329309471b819167836f081c1dce5aa13acc3104 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sat, 8 Aug 2026 19:52:22 +0200 Subject: [PATCH 111/139] Automatic changelog for PR #6081 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6081.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6081.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6081.yml b/html/changelogs/AutoChangeLog-bubber-pr-6081.yml new file mode 100644 index 00000000000..94c9dacc7f8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6081.yml @@ -0,0 +1,4 @@ +author: "LT3" +delete-after: True +changes: + - rscadd: "Toggle Stat Panel is now available in the OOC panel" \ No newline at end of file From 77f98935f4e5a0631779d28f2c449a00ecc36fe9 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sat, 8 Aug 2026 18:27:53 +0000 Subject: [PATCH 112/139] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6079.yml | 5 ----- html/changelogs/AutoChangeLog-bubber-pr-6080.yml | 5 ----- html/changelogs/AutoChangeLog-bubber-pr-6081.yml | 4 ---- html/changelogs/bubber_archive/2026-08.yml | 8 ++++++++ 4 files changed, 8 insertions(+), 14 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6079.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6080.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6081.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6079.yml b/html/changelogs/AutoChangeLog-bubber-pr-6079.yml deleted file mode 100644 index 5c55e9a2c00..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6079.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Zeerum, Odairu" -delete-after: True -changes: - - bugfix: "Cargoborgs have been given their granted stamp back" - - bugfix: "Emagged cargoborgs can once again weaponize paperwork" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6080.yml b/html/changelogs/AutoChangeLog-bubber-pr-6080.yml deleted file mode 100644 index a6e8c66811b..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6080.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Odairu" -delete-after: True -changes: - - bugfix: "Normalization items properly respect size/prefs" - - bugfix: "Oversized is limited to 2 tiles tall once again" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6081.yml b/html/changelogs/AutoChangeLog-bubber-pr-6081.yml deleted file mode 100644 index 94c9dacc7f8..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6081.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "LT3" -delete-after: True -changes: - - rscadd: "Toggle Stat Panel is now available in the OOC panel" \ No newline at end of file diff --git a/html/changelogs/bubber_archive/2026-08.yml b/html/changelogs/bubber_archive/2026-08.yml index e39bf743d21..2db75219f39 100644 --- a/html/changelogs/bubber_archive/2026-08.yml +++ b/html/changelogs/bubber_archive/2026-08.yml @@ -79,11 +79,19 @@ - config: Added configs for finer control over the various storytellers, and renamed wrongly named configs. Removed configs which weren't tied to anything. 2026-08-08: + LT3: + - rscadd: Toggle Stat Panel is now available in the OOC panel Maia-J: - bugfix: Akulas and other waterbreathers no longer drown in deep water - refactor: TRAIT_NODROWN now fully replaces TRAIT_WATER_BREATHING in the backend for better consistency for when TG changes stuff. - bugfix: Hydra heads now correctly reset your name and remove the spells upon being removed. + Odairu: + - bugfix: Normalization items properly respect size/prefs + - bugfix: Oversized is limited to 2 tiles tall once again SomeCabbage: - rscadd: Adds welding and radiation protection to the elder atmosian armor. + Zeerum, Odairu: + - bugfix: Cargoborgs have been given their granted stamp back + - bugfix: Emagged cargoborgs can once again weaponize paperwork From abd0d69db9d1f9f1140ae68518960054bb89788f Mon Sep 17 00:00:00 2001 From: Waterpig <49160555+Maia-J@users.noreply.github.com> Date: Sat, 8 Aug 2026 20:29:19 +0200 Subject: [PATCH 113/139] Ash Accretion no longer drops from maint loot (#6073) ## About The Pull Request They're now innate to mining modsuits and are not intended to be obtained in other ways closes #5012 ## Why It's Good For The Game Consistency fix. ## Proof Of Testing Not really testable, it's a loot table change ## Changelog :cl: fix: Ash Accretion is now consistently innate to the mining mod and can't magically appear in maints /:cl: Co-authored-by: Maia --- .../code/_globalvars/lists/maintenance_loot_uncommon.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/modular_zubbers/code/_globalvars/lists/maintenance_loot_uncommon.dm b/modular_zubbers/code/_globalvars/lists/maintenance_loot_uncommon.dm index 52afba17696..b7e3ac4378a 100644 --- a/modular_zubbers/code/_globalvars/lists/maintenance_loot_uncommon.dm +++ b/modular_zubbers/code/_globalvars/lists/maintenance_loot_uncommon.dm @@ -366,7 +366,6 @@ GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items /obj/item/mod/construction/plating/engineering = 3, /obj/item/mod/construction/plating/medical = 3, /obj/item/mod/construction/plating/security = 1, - /obj/item/mod/module/ash_accretion = 5, /obj/item/mod/module/atrocinator = 5, /obj/item/mod/module/balloon = 100, /obj/item/mod/module/bikehorn = 75, From d1a2935105882625cae582d1bf861b3b7e0d2d43 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sat, 8 Aug 2026 20:29:45 +0200 Subject: [PATCH 114/139] Automatic changelog for PR #6073 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6073.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6073.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6073.yml b/html/changelogs/AutoChangeLog-bubber-pr-6073.yml new file mode 100644 index 00000000000..7174fa4097d --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6073.yml @@ -0,0 +1,4 @@ +author: "Maia-J" +delete-after: True +changes: + - bugfix: "Ash Accretion is now consistently innate to the mining mod and can't magically appear in maints" \ No newline at end of file From 3d231ae85ab5cde6259b66e68c972f89d952b779 Mon Sep 17 00:00:00 2001 From: gavla <96078776+shayoki@users.noreply.github.com> Date: Sat, 8 Aug 2026 16:07:25 -0500 Subject: [PATCH 115/139] Removes purple cat plush (#6075) ## About The Pull Request This removes my character and mascot from the codebase. ## Changelog :cl: del: Removed purple cat plush. /:cl: --- .../code/game/objects/items/plushes.dm | 10 ---------- .../code/modules/loadout/categories/toys.dm | 4 ---- modular_zubbers/code/modules/vending/games.dm | 1 - modular_zubbers/icons/obj/toys/plushes.dmi | Bin 73699 -> 83539 bytes 4 files changed, 15 deletions(-) diff --git a/modular_zubbers/code/game/objects/items/plushes.dm b/modular_zubbers/code/game/objects/items/plushes.dm index 49769a4760e..73b34e81f61 100644 --- a/modular_zubbers/code/game/objects/items/plushes.dm +++ b/modular_zubbers/code/game/objects/items/plushes.dm @@ -104,16 +104,6 @@ lefthand_file = 'modular_zubbers/icons/mob/inhands/items/plushes_lefthand.dmi' righthand_file = 'modular_zubbers/icons/mob/inhands/items/plushes_righthand.dmi' -/obj/item/toy/plush/purplecat - name = "Purple cat plushie" - desc = "A small, fluffy purple cat with an even purpler collar and bell. It also has a translucent green tail that rubbery to the touch." - icon = 'modular_zubbers/icons/obj/toys/plushes.dmi' - icon_state = "purplecat" //sprited by Bit_Synergy - attack_verb_simple = list("mew", "mow") - attack_verb_continuous = list("mews", "mows") - squeak_override = list('modular_zubbers/sound/misc/moew.ogg' = 1) - gender = FEMALE - /obj/item/toy/plush/largeredslime name = "large red slime plushie" //Donator item exclusive for Blovy. Sprited by Casey/Keila. desc = "The plushie is squishy to touch and smells strongly of strawberry." diff --git a/modular_zubbers/code/modules/loadout/categories/toys.dm b/modular_zubbers/code/modules/loadout/categories/toys.dm index 7c5e4698317..1c700119955 100644 --- a/modular_zubbers/code/modules/loadout/categories/toys.dm +++ b/modular_zubbers/code/modules/loadout/categories/toys.dm @@ -59,10 +59,6 @@ name = "Tuna Fish Plush" item_path = /obj/item/toy/plush/tunafish -/datum/loadout_item/toys/plush/purplecat - name = "Purple Cat Plush" - item_path = /obj/item/toy/plush/purplecat - /datum/loadout_item/toys/plush/secoff name = "GalFed Secoff Plush" item_path = /obj/item/toy/plush/secoff diff --git a/modular_zubbers/code/modules/vending/games.dm b/modular_zubbers/code/modules/vending/games.dm index 8e47661ea5c..f0b43fabcf0 100644 --- a/modular_zubbers/code/modules/vending/games.dm +++ b/modular_zubbers/code/modules/vending/games.dm @@ -32,7 +32,6 @@ /obj/item/toy/plush/nukeplushie = 3, /obj/item/toy/plush/pkplush = 3, /obj/item/toy/plush/plasmamanplushie = 3, - /obj/item/toy/plush/purplecat = 3, /obj/item/toy/plush/rouny = 3, /obj/item/toy/plush/secoff = 3, /obj/item/toy/plush/shark = 3, diff --git a/modular_zubbers/icons/obj/toys/plushes.dmi b/modular_zubbers/icons/obj/toys/plushes.dmi index 2244919eea836576534b62447b323eead517811d..e115044b15f2ad50a198ae7bcdb7d8963930d507 100644 GIT binary patch literal 83539 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଺y4HFdP4| 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 DFzQ%s literal 73699 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/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

PkksRdw1DsO0PLToSv(vX*Wpqz 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%0D%-2qQ@&&k88mbWclEuNQS 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 From ae666deba0928200cad0d78d31fd4c1b7f1626ca Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sat, 8 Aug 2026 23:07:54 +0200 Subject: [PATCH 116/139] Automatic changelog for PR #6075 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6075.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6075.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6075.yml b/html/changelogs/AutoChangeLog-bubber-pr-6075.yml new file mode 100644 index 00000000000..05d3690e6fe --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6075.yml @@ -0,0 +1,4 @@ +author: "shayoki" +delete-after: True +changes: + - rscdel: "Removed purple cat plush." \ No newline at end of file From 3157a8238ae674619f42d17936e57bd4be0020aa Mon Sep 17 00:00:00 2001 From: Waterpig <49160555+Maia-J@users.noreply.github.com> Date: Sat, 8 Aug 2026 23:08:08 +0200 Subject: [PATCH 117/139] Various bloodsucker fixes (#6068) ## About The Pull Request Adjusts the description of thaumaturgy to actually describe what's happening. closes #2475 Fixes runtimes in casting the veil of the many faces that was probably responsible for #5301 as I can no longer reproduce it closes #5301 ## Why It's Good For The Game Bugfix good ## Proof Of Testing N/A ## Changelog :cl: fix: Thaumaturgy description now actually describes what thaumaturgy does. fix: Veil of the many faces no longer borks itself with runtimes upon casting. /:cl: --------- Co-authored-by: Maia --- .../bloodsucker/powers/tremere/thaumaturgy.dm | 4 ++-- .../modules/antagonists/bloodsucker/powers/veil.dm | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/modular_zubbers/code/modules/antagonists/bloodsucker/powers/tremere/thaumaturgy.dm b/modular_zubbers/code/modules/antagonists/bloodsucker/powers/tremere/thaumaturgy.dm index 0e530244187..72d48963ba7 100644 --- a/modular_zubbers/code/modules/antagonists/bloodsucker/powers/tremere/thaumaturgy.dm +++ b/modular_zubbers/code/modules/antagonists/bloodsucker/powers/tremere/thaumaturgy.dm @@ -61,7 +61,7 @@ . = "
Projectile can seek for [get_shot_range()] tiles.
" . += "Fire a slow seeking blood bolt at your enemy.
" if(level_current >= THAUMATURGY_SHIELD_LEVEL) - . += "Right click the button to create a blood shield
" + . += "Click the button to create a blood shield
" if(level_current >= THAUMATURGY_DOOR_BREAK_LEVEL) . += "The projectile will open doors/lockers" if(level_current >= THAUMATURGY_BLOOD_STEAL_LEVEL) @@ -74,7 +74,7 @@ . += "If the Blood blast hits a person, it will deal [get_blood_bolt_damage()] [initial(magic_9ball.damage_type)] damage, and is blocked by [initial(magic_9ball.armor_flag)] armor." . += "You can use Blood blast [get_max_charges()] times before needing to recast Thaumaturgy. After each shot you will have to wait [DisplayTimeText(get_shot_cooldown())]." . += "At level [THAUMATURGY_SHIELD_LEVEL] it will grant you a shield that will block [BLOOD_SHIELD_BLOCK_CHANCE]% of incoming damage, costing you [THAUMATURGY_BLOOD_COST_PER_CHARGE] blood each time." - . += "To activate the shield, right click the action button." + . += "To activate the shield, simply click the action button. You can then fire projectiles by rightclicking." . += "At level [THAUMATURGY_DOOR_BREAK_LEVEL], it will also break open lockers and doors." . += "At level [THAUMATURGY_BLOOD_STEAL_LEVEL], it will also steal blood to feed yourself, just as much as each charge costs." . += "The cooldown increases by [DisplayTimeText(THAUMATURGY_COOLDOWN_PER_CHARGE)] per charge used, and each blast costs [THAUMATURGY_BLOOD_COST_PER_CHARGE] blood." diff --git a/modular_zubbers/code/modules/antagonists/bloodsucker/powers/veil.dm b/modular_zubbers/code/modules/antagonists/bloodsucker/powers/veil.dm index 7090f041645..9bbcfaaed02 100644 --- a/modular_zubbers/code/modules/antagonists/bloodsucker/powers/veil.dm +++ b/modular_zubbers/code/modules/antagonists/bloodsucker/powers/veil.dm @@ -145,14 +145,16 @@ // CAST EFFECT // General effect (poof, splat, etc) when you cast. Doesn't happen automatically! /datum/action/cooldown/bloodsucker/veil/proc/cast_effect() - // Effect playsound(get_turf(owner), 'sound/effects/magic/smoke.ogg', 20, 1) - do_smoke(3, FALSE, get_turf(owner), smoke_type = /obj/effect/particle_effect/fluid/smoke/vampsmoke) - owner.spin(8, 1) //Spin around like a loon. + do_smoke(1, FALSE, get_turf(owner), smoke_type = /datum/effect_system/fluid_spread/smoke/vamp) + owner.spin(8, 1) + +/datum/effect_system/fluid_spread/smoke/vamp + effect_type = /obj/effect/particle_effect/fluid/smoke/vampsmoke /obj/effect/particle_effect/fluid/smoke/vampsmoke opacity = FALSE lifetime = 0 /obj/effect/particle_effect/fluid/smoke/vampsmoke/fade_out(frames = 0.8 SECONDS) - ..(frames) + . = ..() From bb307b8ea1daa150e5ea7622cbf197f38a86dd18 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sat, 8 Aug 2026 23:08:38 +0200 Subject: [PATCH 118/139] Automatic changelog for PR #6068 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6068.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6068.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6068.yml b/html/changelogs/AutoChangeLog-bubber-pr-6068.yml new file mode 100644 index 00000000000..d650735b964 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6068.yml @@ -0,0 +1,5 @@ +author: "Maia-J" +delete-after: True +changes: + - bugfix: "Thaumaturgy description now actually describes what thaumaturgy does." + - bugfix: "Veil of the many faces no longer borks itself with runtimes upon casting." \ No newline at end of file From 2ac191a517680b0fb53a0c2a156c700f0328e4b6 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sun, 9 Aug 2026 01:44:25 +0000 Subject: [PATCH 119/139] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6068.yml | 5 ----- html/changelogs/AutoChangeLog-bubber-pr-6073.yml | 4 ---- html/changelogs/AutoChangeLog-bubber-pr-6075.yml | 4 ---- html/changelogs/bubber_archive/2026-08.yml | 8 ++++++++ 4 files changed, 8 insertions(+), 13 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6068.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6073.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6075.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6068.yml b/html/changelogs/AutoChangeLog-bubber-pr-6068.yml deleted file mode 100644 index d650735b964..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6068.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Maia-J" -delete-after: True -changes: - - bugfix: "Thaumaturgy description now actually describes what thaumaturgy does." - - bugfix: "Veil of the many faces no longer borks itself with runtimes upon casting." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6073.yml b/html/changelogs/AutoChangeLog-bubber-pr-6073.yml deleted file mode 100644 index 7174fa4097d..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6073.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Maia-J" -delete-after: True -changes: - - bugfix: "Ash Accretion is now consistently innate to the mining mod and can't magically appear in maints" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6075.yml b/html/changelogs/AutoChangeLog-bubber-pr-6075.yml deleted file mode 100644 index 05d3690e6fe..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6075.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "shayoki" -delete-after: True -changes: - - rscdel: "Removed purple cat plush." \ No newline at end of file diff --git a/html/changelogs/bubber_archive/2026-08.yml b/html/changelogs/bubber_archive/2026-08.yml index 2db75219f39..8d1f92194f2 100644 --- a/html/changelogs/bubber_archive/2026-08.yml +++ b/html/changelogs/bubber_archive/2026-08.yml @@ -95,3 +95,11 @@ Zeerum, Odairu: - bugfix: Cargoborgs have been given their granted stamp back - bugfix: Emagged cargoborgs can once again weaponize paperwork +2026-08-09: + Maia-J: + - bugfix: Ash Accretion is now consistently innate to the mining mod and can't magically + appear in maints + - bugfix: Thaumaturgy description now actually describes what thaumaturgy does. + - bugfix: Veil of the many faces no longer borks itself with runtimes upon casting. + shayoki: + - rscdel: Removed purple cat plush. From 8090d1511abfc1be44c7a1892dda6abb3881afcc Mon Sep 17 00:00:00 2001 From: thegrb93 Date: Sat, 8 Aug 2026 23:37:10 -0400 Subject: [PATCH 120/139] Fix trenchcoat (#6056) ## About The Pull Request Fixes broken trenchcoat item ## Why It's Good For The Game It was broken ## Proof Of Testing

Screenshots/Videos Screenshot 2026-08-04 234215
## Changelog :cl: fix: Trenchcoat broken sprite /:cl: --- icons/map_icons/clothing/suit/_suit.dmi | Bin 25277 -> 25691 bytes .../moretraitoritems/code/syndicate.dm | 4 ++-- .../opposing_force/code/equipment/clothing.dm | 2 +- .../modules/teshari/code/teshari_clothes.dm | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/icons/map_icons/clothing/suit/_suit.dmi b/icons/map_icons/clothing/suit/_suit.dmi index a0777baab36e2261f936b601182f652ce8fdaa0b..11ddf75cf09cc6b219a76fe3410863b40f1cd985 100644 GIT binary patch literal 25691 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 D0w$p; literal 25277 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 Opty(BMtoDX3jRM8Rk3OS diff --git a/modular_skyrat/modules/moretraitoritems/code/syndicate.dm b/modular_skyrat/modules/moretraitoritems/code/syndicate.dm index a7449935ef1..b7830690bf9 100644 --- a/modular_skyrat/modules/moretraitoritems/code/syndicate.dm +++ b/modular_skyrat/modules/moretraitoritems/code/syndicate.dm @@ -91,7 +91,7 @@ new /obj/item/clothing/gloves/combat(src) new /obj/item/clothing/shoes/combat(src) new /obj/item/clothing/glasses/sunglasses/robohand(src) - new /obj/item/clothing/suit/jacket/trenchcoat/gunman(src) + new /obj/item/clothing/suit/toggle/jacket/trenchcoat/gunman(src) new /obj/item/autosurgeon/bodypart/r_arm_robotic(src) new /obj/item/autosurgeon/syndicate/esword_arm(src) new /obj/item/autosurgeon/syndicate/nodrop(src) @@ -101,7 +101,7 @@ name = "gunman clothing bundle" desc = "A box filled with armored and stylish clothing for the aspiring gunmans." -/obj/item/clothing/suit/jacket/trenchcoat/gunman +/obj/item/clothing/suit/toggle/jacket/trenchcoat/gunman name = "leather overcoat" desc = "An armored leather overcoat, intended as the go-to wear for any aspiring gunman." body_parts_covered = CHEST|GROIN|ARMS diff --git a/modular_skyrat/modules/opposing_force/code/equipment/clothing.dm b/modular_skyrat/modules/opposing_force/code/equipment/clothing.dm index c705add4ffd..3c9b643c5d1 100644 --- a/modular_skyrat/modules/opposing_force/code/equipment/clothing.dm +++ b/modular_skyrat/modules/opposing_force/code/equipment/clothing.dm @@ -111,7 +111,7 @@ /obj/item/storage/backpack/duffelbag/syndie/lone_gunman/PopulateContents() new /obj/item/clothing/under/pants/track/robohand(src) new /obj/item/clothing/glasses/sunglasses/robohand(src) - new /obj/item/clothing/suit/jacket/trenchcoat/gunman(src) + new /obj/item/clothing/suit/toggle/jacket/trenchcoat/gunman(src) new /obj/item/clothing/shoes/combat(src) new /obj/item/radio/headset/syndicate/alt(src) new /obj/item/card/id/advanced/chameleon(src) diff --git a/modular_skyrat/modules/teshari/code/teshari_clothes.dm b/modular_skyrat/modules/teshari/code/teshari_clothes.dm index 50d1339e69f..20f67cdeaf8 100644 --- a/modular_skyrat/modules/teshari/code/teshari_clothes.dm +++ b/modular_skyrat/modules/teshari/code/teshari_clothes.dm @@ -38,7 +38,7 @@ species_clothing_color_coords = list(list(THICKROBE_COLORPIXEL_X_1, THICKROBE_COLORPIXEL_Y_1), list(THICKROBE_COLORPIXEL_X_2, THICKROBE_COLORPIXEL_Y_2), list(THICKROBE_COLORPIXEL_X_3, THICKROBE_COLORPIXEL_Y_3), list(THICKROBE_COLORPIXEL_X_4, THICKROBE_COLORPIXEL_Y_4), list(THICKROBE_COLORPIXEL_X_5, THICKROBE_COLORPIXEL_Y_5), list(THICKROBE_COLORPIXEL_X_6, THICKROBE_COLORPIXEL_Y_6)) greyscale_config_worn_teshari_fallback = /datum/greyscale_config/teshari/thickrobe/wiz -/obj/item/clothing/suit/jacket/trenchcoat +/obj/item/clothing/suit/toggle/jacket/trenchcoat species_clothing_color_coords = list(list(LONGCOAT_COLORPIXEL_X_1, LONGCOAT_COLORPIXEL_Y_1), list(THICKROBE_COLORPIXEL_X_2, THICKROBE_COLORPIXEL_Y_2), list(THICKROBE_COLORPIXEL_X_3, THICKROBE_COLORPIXEL_Y_3), list(LONGCOAT_COLORPIXEL_X_4, LONGCOAT_COLORPIXEL_Y_4)) greyscale_config_worn_teshari_fallback = /datum/greyscale_config/teshari/thickrobe/longcoat From 05eb0c8f55520576ba610e4f6312d60c9235d741 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sun, 9 Aug 2026 05:37:37 +0200 Subject: [PATCH 121/139] Automatic changelog for PR #6056 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6056.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6056.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6056.yml b/html/changelogs/AutoChangeLog-bubber-pr-6056.yml new file mode 100644 index 00000000000..d1f954fb617 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6056.yml @@ -0,0 +1,4 @@ +author: "thegrb93" +delete-after: True +changes: + - bugfix: "Trenchcoat broken sprite" \ No newline at end of file From 332cca2deac6efd81edd58ec6d5b26f0626f098d Mon Sep 17 00:00:00 2001 From: LT3 <83487515+lessthnthree@users.noreply.github.com> Date: Sun, 9 Aug 2026 12:14:04 -0700 Subject: [PATCH 122/139] limb grower shadekin limbs, design enhancements (#5967) ## About The Pull Request - [x] Adds shadekin eyes and ears to the limb grower. - [x] Makes the various species parts available upon research without having to print 8 different design disks - [x] Adjust pricing of some bodyparts to be similar to base human parts - [x] Adds adaptable lungs as researchable expansion for limb grower ## Why It's Good For The Game Quality of life. Having to print the design disks alongside the limb grower is pointless, it costs next to nothing materials wise and takes a bunch of inventory space to do it. ## Changelog :cl: LT3 add: Added shadekin eyes and ears to limb grower qol: Limb grower automatically includes species parts, no more species disks required add: Adaptive hot/oxy/tox lungs can now be printed from the limb grower once researched /:cl: --------- Co-authored-by: Alexis --- .../bubberstation/icemoon_interdyne.dmm | 12 - code/__DEFINES/~~bubber_defines/quirks.dm | 1 + .../research/designs/limbgrower_designs.dm | 7 +- .../research/techweb/nodes/biology_nodes.dm | 2 + .../code/game/machinery/limbgrower.dm | 19 +- .../modules/implants/code/medical_nodes.dm | 40 --- .../medical_designs/medical_designs.dm | 19 -- .../modules/designs/limbgrower_designs.dm | 314 +++++++++++++----- .../limbgrowncorpses/limbgrowerblanks.dm | 25 -- .../modules/research/techweb/all_nodes.dm | 54 ++- tgstation.dme | 3 +- 11 files changed, 295 insertions(+), 201 deletions(-) create mode 100644 code/__DEFINES/~~bubber_defines/quirks.dm delete mode 100644 modular_skyrat/modules/implants/code/medical_nodes.dm delete mode 100644 modular_zubbers/code/modules/limbgrowncorpses/limbgrowerblanks.dm diff --git a/_maps/RandomRuins/IceRuins/bubberstation/icemoon_interdyne.dmm b/_maps/RandomRuins/IceRuins/bubberstation/icemoon_interdyne.dmm index 44fcc284f54..125e66a9a92 100644 --- a/_maps/RandomRuins/IceRuins/bubberstation/icemoon_interdyne.dmm +++ b/_maps/RandomRuins/IceRuins/bubberstation/icemoon_interdyne.dmm @@ -2165,18 +2165,6 @@ /turf/open/floor/wood, /area/ruin/syndicate_lava_base/testlab) "pN" = ( -/obj/item/disk/design_disk/limbs/ethereal{ - pixel_y = 2 - }, -/obj/item/disk/design_disk/limbs/felinid{ - pixel_y = 4 - }, -/obj/item/disk/design_disk/limbs/lizard{ - pixel_y = 6 - }, -/obj/item/disk/design_disk/limbs/plasmaman{ - pixel_y = 8 - }, /obj/structure/table/reinforced, /obj/machinery/light/directional/south, /obj/effect/turf_decal/tile/blue{ diff --git a/code/__DEFINES/~~bubber_defines/quirks.dm b/code/__DEFINES/~~bubber_defines/quirks.dm new file mode 100644 index 00000000000..38d534c1ed1 --- /dev/null +++ b/code/__DEFINES/~~bubber_defines/quirks.dm @@ -0,0 +1 @@ +#define HEMOPHAGE "hemophage" diff --git a/code/modules/research/designs/limbgrower_designs.dm b/code/modules/research/designs/limbgrower_designs.dm index 7a04c27016a..e9e00f90ae6 100644 --- a/code/modules/research/designs/limbgrower_designs.dm +++ b/code/modules/research/designs/limbgrower_designs.dm @@ -244,12 +244,13 @@ category = list( RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MEDICAL ) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL + departmental_flags = NONE // BUBBER EDIT CHANGE - ORIGINAL: DEPARTMENT_BITFLAG_MEDICAL /obj/item/disk/design_disk/limbs/felinid name = "Felinid Organ Design Disk" limb_designs = list(/datum/design/cat_tail, /datum/design/cat_ears, /datum/design/cat_tongue) - +// BUBBER EDIT REMOVE BEGIN - LIMB GROWERS INCLUDE ALL LIMB TYPES +/* /datum/design/limb_disk/felinid name = "Felinid Organ Design Disk" desc = "Contains designs for felinid organs for the limbgrower - Felinid ears, tail and tongue." @@ -285,3 +286,5 @@ desc = "Contains designs for ethereal organs for the limbgrower - Ethereal tongue and stomach." id = "limbdesign_ethereal" build_path = /obj/item/disk/design_disk/limbs/ethereal +*/ +// BUBBER EDIT REMOVE END - LIMB GROWERS INCLUDE ALL LIMB TYPES diff --git a/code/modules/research/techweb/nodes/biology_nodes.dm b/code/modules/research/techweb/nodes/biology_nodes.dm index ff100cd0d78..80e39789dc9 100644 --- a/code/modules/research/techweb/nodes/biology_nodes.dm +++ b/code/modules/research/techweb/nodes/biology_nodes.dm @@ -39,10 +39,12 @@ design_ids = list( "xenobioconsole", "slime_scanner", + /* BUBBER EDIT REMOVE - LIMB GROWERS INCLUDE ALL LIMB TYPES "limbdesign_ethereal", "limbdesign_felinid", "limbdesign_lizard", "limbdesign_plasmaman", + */ ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) discount_experiments = list(/datum/experiment/scanning/cytology/slime = TECHWEB_TIER_3_POINTS) diff --git a/modular_skyrat/master_files/code/game/machinery/limbgrower.dm b/modular_skyrat/master_files/code/game/machinery/limbgrower.dm index edf0474bfa0..cb3491a9f10 100644 --- a/modular_skyrat/master_files/code/game/machinery/limbgrower.dm +++ b/modular_skyrat/master_files/code/game/machinery/limbgrower.dm @@ -1,3 +1,20 @@ /obj/machinery/limbgrower/Initialize(mapload) - categories += list(SPECIES_SNAIL) + categories += list( + SPECIES_FELINE, + HEMOPHAGE, + SPECIES_TAJARAN, + SPECIES_TESHARI, + SPECIES_SHADEKIN, + SPECIES_SNAIL + ) return ..() + +// Used for printing dead bodies with the limbgrower +/mob/living/carbon/human/empty + +/mob/living/carbon/human/empty/Initialize(mapload) + . = ..() + death() + + var/obj/item/organ/brain/to_remove = get_organ_slot(ORGAN_SLOT_BRAIN) + QDEL_NULL(to_remove) diff --git a/modular_skyrat/modules/implants/code/medical_nodes.dm b/modular_skyrat/modules/implants/code/medical_nodes.dm deleted file mode 100644 index 9a1fe365316..00000000000 --- a/modular_skyrat/modules/implants/code/medical_nodes.dm +++ /dev/null @@ -1,40 +0,0 @@ -/datum/techweb_node/cyber/cyber_implants/New() - design_ids += list( - "ci-scanner", - "ci-gloweyes", - "ci-welding", - "ci-medhud", - "ci-sechud", - "ci-diaghud", - "ci-civhud", - "ci-botany", - "ci-janitor", - "ci-lighter", - "ci-razor", - ) - return ..() - -/datum/techweb_node/cyber/cyber_organs_upgraded/New() - design_ids -= list( - "ci-gloweyes", - "ci-welding", - ) - return ..() - -/datum/techweb_node/cyber/combat_implants/New() - design_ids += list( - "ci-mantis", - "ci-flash", - "ci-antisleep", - ) - return ..() - -/datum/techweb_node/cyber/night_vision_implants - id = TECHWEB_NODE_NIGHT_VISION_IMPLANTS - display_name = "Night vision implants" - description = "Now you can work all night, even if you lost your glasses!" - prereq_ids = list(TECHWEB_NODE_NIGHT_VISION, TECHWEB_NODE_CYBER_IMPLANTS) - design_ids = list( - "ci-nv", - ) - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) diff --git a/modular_skyrat/modules/medical_designs/medical_designs.dm b/modular_skyrat/modules/medical_designs/medical_designs.dm index 45b4e2622ef..7ae0549fe38 100644 --- a/modular_skyrat/modules/medical_designs/medical_designs.dm +++ b/modular_skyrat/modules/medical_designs/medical_designs.dm @@ -10,22 +10,3 @@ RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MEDICAL, ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE - -//Limb Grower -/datum/design/nitrogen_lungs - name = "Standard Nitrogen Lungs" - id = "nitrogenlunggeneric" - build_type = LIMBGROWER - reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 20) - build_path = /obj/item/organ/lungs/nitrogen - category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL) - -/datum/design/vox_nitrogen_lungs - name = "Vox Nitrogen Lungs" - id = "nitrogenlungvox" - build_type = LIMBGROWER - reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 20) - build_path = /obj/item/organ/lungs/nitrogen/vox - category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL) - - diff --git a/modular_zubbers/code/modules/designs/limbgrower_designs.dm b/modular_zubbers/code/modules/designs/limbgrower_designs.dm index 7892a16c493..1e3a3bb80e1 100644 --- a/modular_zubbers/code/modules/designs/limbgrower_designs.dm +++ b/modular_zubbers/code/modules/designs/limbgrower_designs.dm @@ -1,18 +1,174 @@ +/datum/design/leftarm + category = list( + RND_CATEGORY_INITIAL, + SPECIES_HUMAN, + SPECIES_FELINE, + SPECIES_LIZARD, + SPECIES_MOTH, + SPECIES_PLASMAMAN, + SPECIES_ETHEREAL, + SPECIES_TAJARAN, + HEMOPHAGE, + SPECIES_SHADEKIN, + SPECIES_TESHARI, + ) + +/datum/design/rightarm + category = list( + RND_CATEGORY_INITIAL, + SPECIES_HUMAN, + SPECIES_FELINE, + SPECIES_LIZARD, + SPECIES_MOTH, + SPECIES_PLASMAMAN, + SPECIES_ETHEREAL, + SPECIES_TAJARAN, + HEMOPHAGE, + SPECIES_SHADEKIN, + SPECIES_TESHARI, + ) + +/datum/design/leftleg + category = list( + RND_CATEGORY_INITIAL, + SPECIES_HUMAN, + SPECIES_FELINE, + SPECIES_LIZARD, + SPECIES_MOTH, + SPECIES_PLASMAMAN, + SPECIES_ETHEREAL, + SPECIES_TAJARAN, + HEMOPHAGE, + SPECIES_SHADEKIN, + SPECIES_TESHARI, + ) + +/datum/design/rightleg + category = list( + RND_CATEGORY_INITIAL, + SPECIES_HUMAN, + SPECIES_FELINE, + SPECIES_LIZARD, + SPECIES_MOTH, + SPECIES_PLASMAMAN, + SPECIES_ETHEREAL, + SPECIES_TAJARAN, + HEMOPHAGE, + SPECIES_SHADEKIN, + SPECIES_TESHARI, + ) + +/datum/design/cat_tail + category = list(SPECIES_FELINE, RND_CATEGORY_INITIAL) + +/datum/design/cat_ears + category = list(SPECIES_FELINE, RND_CATEGORY_INITIAL) + +/datum/design/cat_tongue + category = list(SPECIES_FELINE, RND_CATEGORY_INITIAL) + +/datum/design/ethereal_stomach + category = list(SPECIES_ETHEREAL, RND_CATEGORY_INITIAL) + +/datum/design/ethereal_tongue + category = list(SPECIES_ETHEREAL, RND_CATEGORY_INITIAL) + +/datum/design/ethereal_lungs + category = list(SPECIES_ETHEREAL, RND_CATEGORY_INITIAL) + +/datum/design/ethereal_heart + category = list(SPECIES_ETHEREAL, RND_CATEGORY_INITIAL) + +/datum/design/lizard_tail + category = list(SPECIES_LIZARD, RND_CATEGORY_INITIAL) + +/datum/design/lizard_tongue + reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10) + category = list(SPECIES_LIZARD, RND_CATEGORY_INITIAL) + +/datum/design/plasmaman_lungs + category = list(SPECIES_PLASMAMAN, RND_CATEGORY_INITIAL) + +/datum/design/plasmaman_tongue + category = list(SPECIES_PLASMAMAN, RND_CATEGORY_INITIAL) + +/datum/design/plasmaman_liver + category = list(SPECIES_PLASMAMAN, RND_CATEGORY_INITIAL) + +/datum/design/plasmaman_stomach + category = list(SPECIES_PLASMAMAN, RND_CATEGORY_INITIAL) + +/datum/design/humanoidbrain + name = "Brain" + id = "blankbrain" + build_type = LIMBGROWER + reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 100) + build_path = /obj/item/organ/brain + category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL) + +/datum/design/nitrogen_lungs + name = "Nitrogen-Adapted Lungs" + id = "nitrogenlunggeneric" + build_type = LIMBGROWER + reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 20) + build_path = /obj/item/organ/lungs/nitrogen + category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL) + +/datum/design/vox_nitrogen_lungs + name = "Vox Nitrogen Lungs" + id = "nitrogenlungvox" + build_type = LIMBGROWER + reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 20) + build_path = /obj/item/organ/lungs/nitrogen/vox + category = list(SPECIES_VOX, RND_CATEGORY_INITIAL) + +/datum/design/cold_lungs + name = "Cold-Adapted Lungs" + id = "coldlungs" + build_type = LIMBGROWER + reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 35) + build_path = /obj/item/organ/lungs/adaptive/cold + category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL) + +/datum/design/hot_lungs + name = "Heat-Adapted Lungs" + id = "hotlungs" + build_type = LIMBGROWER + reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 35) + build_path = /obj/item/organ/lungs/adaptive/hot + category = list(SPECIES_HUMAN) + +/datum/design/oxy_lungs + name = "Low-Oxygen-Adapted Lungs" + id = "oxylungs" + build_type = LIMBGROWER + reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 35) + build_path = /obj/item/organ/lungs/oxy + category = list(SPECIES_HUMAN) + +/datum/design/tox_lungs + name = "Toxin-Adapted Lungs" + id = "toxlungs" + build_type = LIMBGROWER + reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 35) + build_path = /obj/item/organ/lungs/toxin + category = list(SPECIES_HUMAN) + /datum/design/hemophage_heart name = "Pulsating Tumor" id = "hemophageheart" build_type = LIMBGROWER - reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/blood = 10) + reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 25, /datum/reagent/blood = 10) build_path = /obj/item/organ/heart/hemophage - category = list("hemophage") + category = list(HEMOPHAGE, RND_CATEGORY_INITIAL) /datum/design/hemophage_liver name = "Corrupted Liver" id = "hemophageliver" build_type = LIMBGROWER - reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/blood = 10) + reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 15, /datum/reagent/blood = 10) build_path = /obj/item/organ/liver/hemophage - category = list("hemophage") + category = list(HEMOPHAGE, RND_CATEGORY_INITIAL) /datum/design/hemophage_stomach name = "Corrupted Stomach" @@ -20,125 +176,99 @@ build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/blood = 10) build_path = /obj/item/organ/stomach/hemophage - category = list("hemophage") + category = list(HEMOPHAGE, RND_CATEGORY_INITIAL) /datum/design/hemophage_tongue name = "Corrupted Tongue" id = "hemophagetongue" build_type = LIMBGROWER - reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/blood = 10) + reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 5, /datum/reagent/blood = 10) build_path = /obj/item/organ/tongue/hemophage - category = list("hemophage") + category = list(HEMOPHAGE, RND_CATEGORY_INITIAL) -/obj/item/disk/design_disk/limbs/hemophage - name = "Hemophage Organ Design Disk" - limb_designs = list(/datum/design/hemophage_heart, /datum/design/hemophage_liver, /datum/design/hemophage_stomach, /datum/design/hemophage_tongue) +//Shadekin organs +/datum/design/shadekin_ears + name = "Shadekin Ears" + id = "shadekinears" + build_type = LIMBGROWER + reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 15) + build_path = /obj/item/organ/ears/shadekin + category = list(SPECIES_SHADEKIN, RND_CATEGORY_INITIAL) -/datum/design/limb_disk/hemophage - name = "Hemophage Organ Design Disk" - desc = "Contains designs for hemophage organs for the limbgrower - Tounges, livers, tumors, and stomachs." - id = "limbdesign_hemophage" - build_path = /obj/item/disk/design_disk/limbs/hemophage +/datum/design/shadekin_eyes + name = "Shadekin Eyes" + id = "shadekineyes" + build_type = LIMBGROWER + reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 15) + build_path = /obj/item/organ/eyes/shadekin + category = list(SPECIES_SHADEKIN, RND_CATEGORY_INITIAL) //Tajaran organs -/datum/design/tajaran_eyes - name = "Tajaran eyes" - id = "tajaraneyes" - build_type = LIMBGROWER - reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10) - build_path = /obj/item/organ/eyes/tajaran - category = list(SPECIES_TAJARAN) - -/datum/design/tajaran_tongue - name = "Tajaran tounge" - id = "tajarantounge" - build_type = LIMBGROWER - reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10) - build_path = /obj/item/organ/tongue/cat/tajaran - category = list(SPECIES_TAJARAN) - /datum/design/tajaran_ears - name = "Tajaran ears" + name = "Tajaran Ears" id = "tajaranears" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10) build_path = /obj/item/organ/ears/cat/tajaran - category = list(SPECIES_TAJARAN) + category = list(SPECIES_TAJARAN, RND_CATEGORY_INITIAL) -/datum/design/limb_disk/tajaran - name = "Tajaran Organ Design Disk" - desc = "Contains designs for tajaran organs for the limbgrower - Ears, tounges, and eyes." - id = "limbdesign_tajaran" - build_path = /obj/item/disk/design_disk/limbs/tajaran - -/obj/item/disk/design_disk/limbs/tajaran - name = "Tajaran Organ Design Disk" - limb_designs = list(/datum/design/tajaran_eyes, /datum/design/tajaran_tongue, /datum/design/tajaran_ears) - -//Teshari organs -//Pour one out for the birds. -/datum/design/leftarm/New() - category += list(SPECIES_TESHARI) - return ..() - -/datum/design/rightarm/New() - category += list(SPECIES_TESHARI) - return ..() - -/datum/design/leftleg/New() - category += list(SPECIES_TESHARI) - return ..() - -/datum/design/rightleg/New() - category += list(SPECIES_TESHARI) - return ..() - -/datum/design/teshari_eyes - name = "Teshari eyes" - id = "tesharieyes" +/datum/design/tajaran_eyes + name = "Tajaran Eyes" + id = "tajaraneyes" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10) - build_path = /obj/item/organ/eyes/teshari - category = list(SPECIES_TESHARI) + build_path = /obj/item/organ/eyes/tajaran + category = list(SPECIES_TAJARAN, RND_CATEGORY_INITIAL) +/datum/design/tajaran_tongue + name = "Tajaran Tongue" + id = "tajarantounge" + build_type = LIMBGROWER + reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10) + build_path = /obj/item/organ/tongue/cat/tajaran + category = list(SPECIES_TAJARAN, RND_CATEGORY_INITIAL) + +//Teshari organs /datum/design/teshari_ears - name = "Teshari ears" + name = "Teshari Ears" id = "teshariears" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10) build_path = /obj/item/organ/ears/teshari - category = list(SPECIES_TESHARI) + category = list(SPECIES_TESHARI, RND_CATEGORY_INITIAL) + +/datum/design/teshari_eyes + name = "Teshari Eyes" + id = "tesharieyes" + build_type = LIMBGROWER + reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10) + build_path = /obj/item/organ/eyes/teshari + category = list(SPECIES_TESHARI, RND_CATEGORY_INITIAL) /datum/design/teshari_tongue - name = "Teshari tongue" + name = "Teshari Tongue" id = "tesharitongue" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10) build_path = /obj/item/organ/tongue/teshari - category = list(SPECIES_TESHARI) + category = list(SPECIES_TESHARI, RND_CATEGORY_INITIAL) -/datum/design/cold_lungs - name = "Cold-Adapted Lungs" - id = "coldlungs" +/datum/design/wholehuman + name = "Blank Body" + id = "blankhuman" build_type = LIMBGROWER - reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 20) - build_path = /obj/item/organ/lungs/adaptive/cold - category = list(SPECIES_TESHARI) + reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 600) + build_path = /mob/living/carbon/human/empty + category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL) -/datum/design/limb_disk/teshari - name = "Teshari Organ Design Disk" - desc = "Contains designs for teshari organs for the limbgrower - Ears, tounges, and eyes." - id = "limbdesign_teshari" - build_path = /obj/item/disk/design_disk/limbs/teshari +/// Available through TECHWEB_NODE_CYBER_ORGANS_UPGRADED +/obj/item/disk/design_disk/limbs/adaptive_lungs + name = "adaptive lungs organ design disk" + limb_designs = list(/datum/design/hot_lungs, /datum/design/oxy_lungs, /datum/design/tox_lungs) -/obj/item/disk/design_disk/limbs/teshari - name = "Teshari Organ Design Disk" - limb_designs = list(/datum/design/teshari_eyes, /datum/design/teshari_ears, /datum/design/teshari_tongue, /datum/design/cold_lungs) - -/obj/machinery/limbgrower/Initialize(mapload) - categories += list( - "hemophage", - SPECIES_TAJARAN, - SPECIES_TESHARI - ) - . = ..() +/// Available through TECHWEB_NODE_CYBER_ORGANS_UPGRADED +/datum/design/limb_disk/adaptive_lungs + name = "Adaptive Lungs Organ Design Disk" + desc = "Contains designs for genetically modified adaptive lungs for the limbgrower." + id = "limbdesign_adaptive_lungs" + build_path = /obj/item/disk/design_disk/limbs/adaptive_lungs diff --git a/modular_zubbers/code/modules/limbgrowncorpses/limbgrowerblanks.dm b/modular_zubbers/code/modules/limbgrowncorpses/limbgrowerblanks.dm deleted file mode 100644 index fe7b8dbf6ec..00000000000 --- a/modular_zubbers/code/modules/limbgrowncorpses/limbgrowerblanks.dm +++ /dev/null @@ -1,25 +0,0 @@ -// Used for printing dead bodies with the limbgrower -/mob/living/carbon/human/empty - -/mob/living/carbon/human/empty/Initialize(mapload) - . = ..() - death() - - var/obj/item/organ/brain/to_remove = get_organ_slot(ORGAN_SLOT_BRAIN) - QDEL_NULL(to_remove) - -/datum/design/wholehuman - name = "Blank body" - id = "blankhuman" - build_type = LIMBGROWER - reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 600) - build_path = /mob/living/carbon/human/empty - category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL) - -/datum/design/humanoidbrain - name = "Blank brain" - id = "blankbrain" - build_type = LIMBGROWER - reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 100) - build_path = /obj/item/organ/brain - category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL) diff --git a/modular_zubbers/code/modules/research/techweb/all_nodes.dm b/modular_zubbers/code/modules/research/techweb/all_nodes.dm index c4c1645d779..037501d6847 100644 --- a/modular_zubbers/code/modules/research/techweb/all_nodes.dm +++ b/modular_zubbers/code/modules/research/techweb/all_nodes.dm @@ -1,5 +1,6 @@ // RESEARCH NODES +// cyber nodes /datum/techweb_node/cyber/empathy_implant id = TECHWEB_NODE_EMPATHY_IMPLANT display_name = "Empathic Sensor Implant" @@ -12,6 +13,51 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS) announce_channels = list(RADIO_CHANNEL_SCIENCE, RADIO_CHANNEL_MEDICAL) +/datum/techweb_node/cyber/cyber_implants/New() + . = ..() + design_ids += list( + "ci-scanner", + "ci-gloweyes", + "ci-welding", + "ci-medhud", + "ci-sechud", + "ci-diaghud", + "ci-civhud", + "ci-botany", + "ci-janitor", + "ci-lighter", + "ci-razor", + ) + +/datum/techweb_node/cyber/cyber_organs_upgraded/New() + . = ..() + design_ids += list( + "limbdesign_adaptive_lungs", + ) + design_ids -= list( + "ci-gloweyes", + "ci-welding", + ) + +/datum/techweb_node/cyber/combat_implants/New() + . = ..() + design_ids += list( + "ci-mantis", + "ci-flash", + "ci-antisleep", + ) + +/datum/techweb_node/cyber/night_vision_implants + id = TECHWEB_NODE_NIGHT_VISION_IMPLANTS + display_name = "Night vision implants" + description = "Now you can work all night, even if you lost your glasses!" + prereq_ids = list(TECHWEB_NODE_NIGHT_VISION, TECHWEB_NODE_CYBER_IMPLANTS) + design_ids = list( + "ci-nv", + ) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) + + /datum/techweb_node/botanygene id = TECHWEB_NODE_BOTANY_ADV display_name = "Experimental Botanical Engineering" @@ -64,14 +110,6 @@ ) // MEDICAL -/datum/techweb_node/xenobiology/New() - . = ..() - design_ids += list( - "limbdesign_hemophage", - "limbdesign_tajaran", - "limbdesign_teshari", - ) - /datum/techweb_node/cyber/cyber_implants/New() . = ..() design_ids += list( diff --git a/tgstation.dme b/tgstation.dme index 59626d3e9b5..a73d8cd10ec 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -555,6 +555,7 @@ #include "code\__DEFINES\~~bubber_defines\nanites.dm" #include "code\__DEFINES\~~bubber_defines\obj_flags.dm" #include "code\__DEFINES\~~bubber_defines\privacy_policy.dm" +#include "code\__DEFINES\~~bubber_defines\quirks.dm" #include "code\__DEFINES\~~bubber_defines\robot_defines.dm" #include "code\__DEFINES\~~bubber_defines\role_preferences.dm" #include "code\__DEFINES\~~bubber_defines\signals.dm" @@ -8292,7 +8293,6 @@ #include "modular_skyrat\modules\implants\code\augments_eyes.dm" #include "modular_skyrat\modules\implants\code\augments_internal.dm" #include "modular_skyrat\modules\implants\code\medical_designs.dm" -#include "modular_skyrat\modules\implants\code\medical_nodes.dm" #include "modular_skyrat\modules\imported_vendors\code\vendor_containers.dm" #include "modular_skyrat\modules\imported_vendors\code\vendor_food.dm" #include "modular_skyrat\modules\imported_vendors\code\vendor_snacks.dm" @@ -9891,7 +9891,6 @@ #include "modular_zubbers\code\modules\lewd_machinery\clicker.dm" #include "modular_zubbers\code\modules\lewd_machinery\lustwish.dm" #include "modular_zubbers\code\modules\lewd_machinery\sex_barrier.dm" -#include "modular_zubbers\code\modules\limbgrowncorpses\limbgrowerblanks.dm" #include "modular_zubbers\code\modules\liquids\height_floors.dm" #include "modular_zubbers\code\modules\loadout\categories\accessories.dm" #include "modular_zubbers\code\modules\loadout\categories\belts.dm" From 7d3047c6114208ae18cd5c4257fc2fd0382bfc4a Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sun, 9 Aug 2026 21:14:29 +0200 Subject: [PATCH 123/139] Automatic changelog for PR #5967 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5967.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5967.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5967.yml b/html/changelogs/AutoChangeLog-bubber-pr-5967.yml new file mode 100644 index 00000000000..54625c8c149 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-5967.yml @@ -0,0 +1,6 @@ +author: "LT3" +delete-after: True +changes: + - rscadd: "Added shadekin eyes and ears to limb grower" + - qol: "Limb grower automatically includes species parts, no more species disks required" + - rscadd: "Adaptive hot/oxy/tox lungs can now be printed from the limb grower once researched" \ No newline at end of file From 61ec458258ec4c9e5fc7ce6aa6d0d6b5d219c806 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sun, 9 Aug 2026 20:06:32 +0000 Subject: [PATCH 124/139] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5967.yml | 6 ------ html/changelogs/AutoChangeLog-bubber-pr-6056.yml | 4 ---- html/changelogs/bubber_archive/2026-08.yml | 7 +++++++ 3 files changed, 7 insertions(+), 10 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5967.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6056.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5967.yml b/html/changelogs/AutoChangeLog-bubber-pr-5967.yml deleted file mode 100644 index 54625c8c149..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-5967.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "LT3" -delete-after: True -changes: - - rscadd: "Added shadekin eyes and ears to limb grower" - - qol: "Limb grower automatically includes species parts, no more species disks required" - - rscadd: "Adaptive hot/oxy/tox lungs can now be printed from the limb grower once researched" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6056.yml b/html/changelogs/AutoChangeLog-bubber-pr-6056.yml deleted file mode 100644 index d1f954fb617..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6056.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "thegrb93" -delete-after: True -changes: - - bugfix: "Trenchcoat broken sprite" \ No newline at end of file diff --git a/html/changelogs/bubber_archive/2026-08.yml b/html/changelogs/bubber_archive/2026-08.yml index 8d1f92194f2..d774df35195 100644 --- a/html/changelogs/bubber_archive/2026-08.yml +++ b/html/changelogs/bubber_archive/2026-08.yml @@ -96,6 +96,11 @@ - bugfix: Cargoborgs have been given their granted stamp back - bugfix: Emagged cargoborgs can once again weaponize paperwork 2026-08-09: + LT3: + - rscadd: Added shadekin eyes and ears to limb grower + - qol: Limb grower automatically includes species parts, no more species disks required + - rscadd: Adaptive hot/oxy/tox lungs can now be printed from the limb grower once + researched Maia-J: - bugfix: Ash Accretion is now consistently innate to the mining mod and can't magically appear in maints @@ -103,3 +108,5 @@ - bugfix: Veil of the many faces no longer borks itself with runtimes upon casting. shayoki: - rscdel: Removed purple cat plush. + thegrb93: + - bugfix: Trenchcoat broken sprite From 4a6dccc808395053df90df1bef447078c3926d4e Mon Sep 17 00:00:00 2001 From: Phantastic-Swan Date: Sun, 9 Aug 2026 22:35:03 +0200 Subject: [PATCH 125/139] Cleaning up some ticker code (#6072) ## About The Pull Request I was looking into changing how the round start ping is being generated so that it isn't dependant on the QOTR message (on which I eventually just gave up). While doing so I stumbled upon 3 separate overrides for the same proc of the ticker, in 3 different files. This induced a headache of immense proportions and I had to fix it because jesus christ what the fuck is that? While I was at it, I grabbed some other ticker procs strewn around `modular_zubbers` and `modular_skyrat` and threw them into a single file responsible for handling the ticker. ## Why It's Good For The Game Do you understand how cancer inducing it is to try and figure out how code is executed when there are 3 separate overrides for a single proc? I am of the opinion that any codebase should override any proc AT MOST once. Multiple overrides for a proc make for worse stack traces, less clarity in the order of code execution, and more difficulty in finding original declarations of procs. They also make it harder to keep procs up to date with upstreams if say, the arguments change (I know BYOND doesn't enforce proc overrides to have the same arguments as the original proc; however I consider that a load of bullshit and a major flaw in the language) ## Proof Of Testing I did compile the code, and the round ends normally, and the debugger tells me that code executes normally. Though, given that this does mess with subsystem code, maybe TM'ing is in order? ## Changelog No player facing changes --- .../modules/opposing_force/code/roundend.dm | 12 --- .../code/controllers/subsystem/ticker.dm | 74 +++++++++++++++++++ .../code/modules/credits/credits.dm | 25 ------- .../code/modules/quote_of_the_round/ticker.dm | 39 ---------- .../modules/zantag_tickets/preferences.dm | 12 --- tgstation.dme | 2 - 6 files changed, 74 insertions(+), 90 deletions(-) delete mode 100644 modular_skyrat/modules/opposing_force/code/roundend.dm delete mode 100644 modular_zubbers/code/modules/quote_of_the_round/ticker.dm diff --git a/modular_skyrat/modules/opposing_force/code/roundend.dm b/modular_skyrat/modules/opposing_force/code/roundend.dm deleted file mode 100644 index 1725eeaf363..00000000000 --- a/modular_skyrat/modules/opposing_force/code/roundend.dm +++ /dev/null @@ -1,12 +0,0 @@ -/datum/controller/subsystem/ticker/proc/opfor_report() - var/list/result = list() - - result += "Opposing Force Report:
" - - if(!SSopposing_force.approved_applications.len) - result += span_red("No applications were approved.") - else - for(var/datum/opposing_force/opfor in SSopposing_force.approved_applications) - result += opfor.roundend_report() - - return "
[result.Join()]
" diff --git a/modular_zubbers/code/controllers/subsystem/ticker.dm b/modular_zubbers/code/controllers/subsystem/ticker.dm index 7a2548b213e..a6f21ef8bf3 100644 --- a/modular_zubbers/code/controllers/subsystem/ticker.dm +++ b/modular_zubbers/code/controllers/subsystem/ticker.dm @@ -1,6 +1,27 @@ /datum/controller/subsystem/ticker var/list/job_estimation_list = list() + // QOTR stuff + var/quote_of_the_round_record_start + var/quote_of_the_round_text + var/quote_of_the_round_attribution + var/quote_of_the_round_ckey + +/datum/controller/subsystem/ticker/Initialize() + . = ..() + quote_of_the_round_record_start = rand(CONFIG_GET(number/quote_of_the_round_time_random_start), CONFIG_GET(number/quote_of_the_round_time_random_end)) + message_admins( + span_notice("Notice: The quote of the round will be chosen in [DisplayTimeText(quote_of_the_round_record_start,1)].") + ) + log_runtime("The quote of the round will be chosen in [DisplayTimeText(quote_of_the_round_record_start,1)].") + +/datum/controller/subsystem/ticker/declare_completion(was_forced = END_ROUND_AS_NORMAL) + handle_antag_tickets() + handle_quote_of_the_round() + handle_credits() + + . = ..() + /datum/controller/subsystem/ticker/proc/get_job_estimation(list/players) var/list/player_ready_data = list() sortTim(players, GLOBAL_PROC_REF(cmp_text_asc)) @@ -39,3 +60,56 @@ player_ready_data.Insert(1, "Job Estimation:") player_ready_data.Insert(1, "") return player_ready_data + +/datum/controller/subsystem/ticker/proc/handle_antag_tickets() + set waitfor = FALSE + + for(var/ckey in GLOB.preferences_datums) + var/datum/preferences/prefs = GLOB.preferences_datums[ckey] + if(prefs.antag_tickets == prefs.antag_tickets_old) + continue //Only save if there has been a change. + prefs.save_preferences() + +/datum/controller/subsystem/ticker/proc/handle_credits() + if(!GLOB.end_titles) + GLOB.end_titles = generate_titles() + + for(var/client/C) + if(!C?.credits) + C?.RollCredits() + +/datum/controller/subsystem/ticker/proc/handle_quote_of_the_round() + if(quote_of_the_round_text) + for(var/channel_tag in CONFIG_GET(str_list/channel_announce_new_game)) + send2chat( + new /datum/tgs_message_content(generate_quote_of_the_round()), + channel_tag + ) + to_chat(world, span_notice("A quote of the round was found, and should have been sent to discord.")) + log_runtime("A quote of the round was found, and should have been sent to discord.") + + else + if(world.time <= quote_of_the_round_record_start) + to_chat(world, span_notice("A quote of the round could not be found due to the round being too short.")) + log_runtime("A quote of the round could not be found. The round ended too early.") + else + to_chat(world, span_notice("A quote of the round could not be found. Perhaps the crew should be more memorable.")) + log_runtime("A quote of the round could not be found. Perhaps the filters are too strict?") + +/datum/controller/subsystem/ticker/proc/generate_quote_of_the_round() + return "The shift has ended. Get ready, a new round on **[SSmap_vote.next_map_config.map_name]** starts soon! <@&[CONFIG_GET(string/game_alert_role_id)]>\n\ + [pick(strings("quote_of_the_round.json", "workers"))] [pick(strings("quote_of_the_round.json", "action"))] [pick(strings("quote_of_the_round.json", "message"))] that occured during said shift:\n\ + > *[quote_of_the_round_text]*\n \\- *[quote_of_the_round_attribution]*" + +/datum/controller/subsystem/ticker/proc/opfor_report() + var/list/result = list() + + result += "Opposing Force Report:
" + + if(!SSopposing_force.approved_applications.len) + result += span_red("No applications were approved.") + else + for(var/datum/opposing_force/opfor in SSopposing_force.approved_applications) + result += opfor.roundend_report() + + return "
[result.Join()]
" diff --git a/modular_zubbers/code/modules/credits/credits.dm b/modular_zubbers/code/modules/credits/credits.dm index 20d30e9682a..4484931fd54 100644 --- a/modular_zubbers/code/modules/credits/credits.dm +++ b/modular_zubbers/code/modules/credits/credits.dm @@ -9,31 +9,6 @@ GLOBAL_VAR_INIT(end_credits_song, null) GLOBAL_VAR_INIT(end_credits_title, null) GLOBAL_LIST(end_titles) -/datum/controller/subsystem/ticker/declare_completion(force_ending) - - if(!GLOB.end_titles) - GLOB.end_titles = generate_titles() - - for(var/client/C) - if(!C?.credits) - C?.RollCredits() - -/* for(var/thing in GLOB.clients) - var/client/C = thing - if (!C) - continue */ - . = ..() - -/* /datum/controller/subsystem/ticker/show_roundend_report(client/C, report_type = null) - . = ..() - for(var/iteration in GLOB.clients) - var/client/clients = iteration - if(!clients.credits) - clients.RollCredits() */ -/* /client - var/list/credits */ - - /client/proc/RollCredits() set waitfor = FALSE var/credit_pref = mob.client?.prefs?.read_preference(/datum/preference/toggle/see_credits) diff --git a/modular_zubbers/code/modules/quote_of_the_round/ticker.dm b/modular_zubbers/code/modules/quote_of_the_round/ticker.dm deleted file mode 100644 index e9ebc365b7f..00000000000 --- a/modular_zubbers/code/modules/quote_of_the_round/ticker.dm +++ /dev/null @@ -1,39 +0,0 @@ -/datum/controller/subsystem/ticker - var/quote_of_the_round_record_start - var/quote_of_the_round_text - var/quote_of_the_round_attribution - var/quote_of_the_round_ckey - -/datum/controller/subsystem/ticker/Initialize() - . = ..() - quote_of_the_round_record_start = rand(CONFIG_GET(number/quote_of_the_round_time_random_start), CONFIG_GET(number/quote_of_the_round_time_random_end)) - message_admins( - span_notice("Notice: The quote of the round will be chosen in [DisplayTimeText(quote_of_the_round_record_start,1)].") - ) - log_runtime("The quote of the round will be chosen in [DisplayTimeText(quote_of_the_round_record_start,1)].") - -/datum/controller/subsystem/ticker/declare_completion(force_ending) - - if(quote_of_the_round_text) - for(var/channel_tag in CONFIG_GET(str_list/channel_announce_new_game)) - send2chat( - new /datum/tgs_message_content(generate_quote_of_the_round()), - channel_tag - ) - to_chat(world, span_notice("A quote of the round was found, and should have been sent to discord.")) - log_runtime("A quote of the round was found, and should have been sent to discord.") - - else - if(world.time <= quote_of_the_round_record_start) - to_chat(world, span_notice("A quote of the round could not be found due to the round being too short.")) - log_runtime("A quote of the round could not be found. The round ended too early.") - else - to_chat(world, span_notice("A quote of the round could not be found. Perhaps the crew should be more memorable.")) - log_runtime("A quote of the round could not be found. Perhaps the filters are too strict?") - - . = ..() - -/datum/controller/subsystem/ticker/proc/generate_quote_of_the_round() - return "The shift has ended. Get ready, a new round on **[SSmap_vote.next_map_config.map_name]** starts soon! <@&[CONFIG_GET(string/game_alert_role_id)]>\n\ - [pick(strings("quote_of_the_round.json", "workers"))] [pick(strings("quote_of_the_round.json", "action"))] [pick(strings("quote_of_the_round.json", "message"))] that occured during said shift:\n\ - > *[quote_of_the_round_text]*\n \\- *[quote_of_the_round_attribution]*" diff --git a/modular_zubbers/code/modules/zantag_tickets/preferences.dm b/modular_zubbers/code/modules/zantag_tickets/preferences.dm index 097cfc9ffce..4b83d14729c 100644 --- a/modular_zubbers/code/modules/zantag_tickets/preferences.dm +++ b/modular_zubbers/code/modules/zantag_tickets/preferences.dm @@ -25,15 +25,3 @@ savefile.set_entry("antag_tickets", antag_tickets) antag_tickets_old = antag_tickets . = ..() - -/datum/controller/subsystem/ticker/declare_completion(was_forced = END_ROUND_AS_NORMAL) - - set waitfor = FALSE - - for(var/ckey in GLOB.preferences_datums) - var/datum/preferences/prefs = GLOB.preferences_datums[ckey] - if(prefs.antag_tickets == prefs.antag_tickets_old) - continue //Only save if there has been a change. - prefs.save_preferences() - - . = ..() diff --git a/tgstation.dme b/tgstation.dme index a73d8cd10ec..360d6df79eb 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -8765,7 +8765,6 @@ #include "modular_skyrat\modules\opposing_force\code\mind.dm" #include "modular_skyrat\modules\opposing_force\code\opposing_force_datum.dm" #include "modular_skyrat\modules\opposing_force\code\opposing_force_subsystem.dm" -#include "modular_skyrat\modules\opposing_force\code\roundend.dm" #include "modular_skyrat\modules\opposing_force\code\equipment\ammo.dm" #include "modular_skyrat\modules\opposing_force\code\equipment\biology.dm" #include "modular_skyrat\modules\opposing_force\code\equipment\bombs.dm" @@ -10158,7 +10157,6 @@ #include "modular_zubbers\code\modules\quote_of_the_round\config.dm" #include "modular_zubbers\code\modules\quote_of_the_round\debug_verbs.dm" #include "modular_zubbers\code\modules\quote_of_the_round\telecomms.dm" -#include "modular_zubbers\code\modules\quote_of_the_round\ticker.dm" #include "modular_zubbers\code\modules\ratqueen\regalrat.dm" #include "modular_zubbers\code\modules\reagents\drink_reagents.dm" #include "modular_zubbers\code\modules\reagents\reagent_dispenser.dm" From 9e638c4dd346b30db722928268c35487effab813 Mon Sep 17 00:00:00 2001 From: Manatee <74586965+MajManatee@users.noreply.github.com> Date: Sun, 9 Aug 2026 17:00:47 -0500 Subject: [PATCH 126/139] Tarkon borgs (#6076) ## About The Pull Request https://github.com/Bubberstation/Bubberstation/pull/3687 Reupload of this PR. I finished it, it never got merged, i dont remember why. Lots of my PRs just kinda timed out. A new Borg subtype, for Tarkon specifically. has access to lots of dodads, very versatile model with access to multiple types on one shell. Not obtainable outside of Tarkon. ## Why It's Good For The Game Would be fitting thematically if they had their own borgs, plus giving more utility to one borg on a usually very small crew is good, and them being able to participate in the bulk of the fighting as more than a backline medic is nice. ## Proof Of Testing
Screenshots/Videos Minor reshuffle of the spawn area to acommodate the spawner. image Module choices image Laws and preamble on module selection image Attemting to install more than 3 tarkon modules (the limit) image
## Changelog :cl: add: New Tarkon borgs, jack of all trades /:cl: --------- Co-authored-by: Odairu <39929315+Odairu@users.noreply.github.com> Co-authored-by: Waterpig <49160555+Maia-J@users.noreply.github.com> --- .../SpaceRuins/skyrat/port_tarkon.dmm | 42 +- code/__DEFINES/exosuit_fab.dm | 2 + .../research/research_categories.dm | 1 + .../~~bubber_defines/robot_defines.dm | 6 +- .../modules/borgs/icons/robot_items.dmi | Bin 8052 -> 9126 bytes .../tarkon/code/misc-fluff/research.dm | 30 +- .../silicons/borgs/code/robot_upgrade.dm | 4 + .../silicons/borgs/sprites/felibot_all.dmi | Bin 79147 -> 85820 bytes .../borgs/sprites/tallrobot_tarkon.dmi | Bin 0 -> 56002 bytes .../borgs/sprites/widerobot_tarkon.dmi | Bin 0 -> 96412 bytes .../code/modules/tarkon/code/borg_content.dm | 494 ++++++++++++++++++ tgstation.dme | 1 + 12 files changed, 556 insertions(+), 24 deletions(-) create mode 100644 modular_zubbers/code/modules/silicons/borgs/sprites/tallrobot_tarkon.dmi create mode 100644 modular_zubbers/code/modules/silicons/borgs/sprites/widerobot_tarkon.dmi create mode 100644 modular_zubbers/code/modules/tarkon/code/borg_content.dm diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon.dmm index f791fe74a0f..dd4cdc1f17f 100644 --- a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon.dmm +++ b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon.dmm @@ -3978,13 +3978,16 @@ dir = 1 }, /obj/structure/table/reinforced, -/obj/item/hackc{ - pixel_x = 10 - }, -/obj/item/hackc{ - pixel_x = -10 - }, -/obj/item/hackc, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, /turf/open/floor/iron, /area/ruin/space/has_grav/port_tarkon) "nY" = ( @@ -4241,13 +4244,7 @@ dir = 1 }, /obj/machinery/camera/preset/tarkon/directional/north, -/obj/structure/table/reinforced, -/obj/item/flashlight/lantern, -/obj/item/flashlight/lantern, -/obj/item/flashlight/lantern, -/obj/item/flashlight/lantern, -/obj/item/flashlight/lantern, -/obj/item/flashlight/lantern, +/obj/effect/mob_spawn/ghost_role/human/tarkon/sec, /turf/open/floor/iron, /area/ruin/space/has_grav/port_tarkon) "oY" = ( @@ -10793,6 +10790,8 @@ /obj/item/storage/box/nif_ghost_box/ghost_role{ pixel_x = -7 }, +/obj/item/storage/belt/utility/full, +/obj/item/storage/belt/utility/full, /turf/open/floor/iron, /area/ruin/space/has_grav/port_tarkon) "Mc" = ( @@ -11883,10 +11882,15 @@ /turf/open/floor/iron, /area/ruin/space/has_grav/port_tarkon/cargo) "Qd" = ( +/obj/structure/table/reinforced, +/obj/item/hackc{ + pixel_x = 10 + }, +/obj/item/hackc{ + pixel_x = -10 + }, +/obj/item/hackc, /obj/effect/turf_decal/tile/yellow/anticorner, -/obj/structure/table, -/obj/item/storage/belt/utility/full, -/obj/item/storage/belt/utility/full, /turf/open/floor/iron, /area/ruin/space/has_grav/port_tarkon) "Qe" = ( @@ -12550,7 +12554,7 @@ /obj/effect/turf_decal/tile/yellow/anticorner{ dir = 4 }, -/obj/effect/mob_spawn/ghost_role/human/tarkon, +/obj/effect/mob_spawn/ghost_role/robot/tarkon, /turf/open/floor/iron, /area/ruin/space/has_grav/port_tarkon) "Ss" = ( @@ -13699,7 +13703,7 @@ /obj/effect/turf_decal/tile/yellow/half{ dir = 1 }, -/obj/effect/mob_spawn/ghost_role/human/tarkon/sec, +/obj/effect/mob_spawn/ghost_role/human/tarkon, /turf/open/floor/iron, /area/ruin/space/has_grav/port_tarkon) "VZ" = ( diff --git a/code/__DEFINES/exosuit_fab.dm b/code/__DEFINES/exosuit_fab.dm index 54d72dcae7e..0f36232fc8e 100644 --- a/code/__DEFINES/exosuit_fab.dm +++ b/code/__DEFINES/exosuit_fab.dm @@ -13,6 +13,8 @@ //Bubber addition start /// Module is compatible with Research Cyborg model #define BORG_MODEL_RESEARCH (1<<6) +/// Module is compatible with Tarkon Cyborg model +#define BORG_MODEL_TARKON (1<<7) //Bubber addition end /// Module is compatible with Ripley Exosuit models diff --git a/code/__DEFINES/~~bubber_defines/research/research_categories.dm b/code/__DEFINES/~~bubber_defines/research/research_categories.dm index 32d6fb02ffa..a4f2c8727f2 100644 --- a/code/__DEFINES/~~bubber_defines/research/research_categories.dm +++ b/code/__DEFINES/~~bubber_defines/research/research_categories.dm @@ -1,5 +1,6 @@ //I'm tired. This is defines for mech fabs. #define RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_RESEARCH "/Research Cyborgs" +#define RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_TARKON "/Tarkon Cyborgs" // Colonial Marine Resequencer Categories #define RND_CATEGORY_CMR_APPAREL "Apparel/Clothing" diff --git a/code/__DEFINES/~~bubber_defines/robot_defines.dm b/code/__DEFINES/~~bubber_defines/robot_defines.dm index 8a086f942e9..8d059095ae7 100644 --- a/code/__DEFINES/~~bubber_defines/robot_defines.dm +++ b/code/__DEFINES/~~bubber_defines/robot_defines.dm @@ -90,6 +90,10 @@ #define CYBORG_ICON_SCI 'modular_zubbers/code/modules/silicons/borgs/sprites/robot_sci.dmi' #define CYBORG_ICON_SCI_HAYDEE_BUBBER 'modular_zubbers/code/modules/silicons/borgs/sprites/curverobot_sci.dmi' +//TARKON BORG ICON DEFINES +#define CYBORG_ICON_TARKON_WIDE_BUBBER 'modular_zubbers/code/modules/silicons/borgs/sprites/widerobot_tarkon.dmi' +#define CYBORG_ICON_TARKON_TALL_BUBBER 'modular_zubbers/code/modules/silicons/borgs/sprites/tallrobot_tarkon.dmi' + // RAPTOR BORG ICON TYPE DEFINE #define CYBORG_ICON_TYPE_RAPTOR "raptor" @@ -129,7 +133,7 @@ #define CYBORG_ICON_STATE_SEC_FELI "FELI-Security" #define CYBORG_ICON_STATE_SYNDI_FELI "FELI-Combat" #define CYBORG_ICON_STATE_NINJA_FELI "FELI-Ninja" - +#define CYBORG_ICON_STATE_TARKON_FELI "FELI-Tarkon" // KITTY BORG DEFINES BELOW diff --git a/modular_skyrat/modules/borgs/icons/robot_items.dmi b/modular_skyrat/modules/borgs/icons/robot_items.dmi index 31c6eff46c5e1643601a9c8ea4fc000b82192d1f..1fbaced71b932c3496d32da3279f5ed80131d375 100644 GIT binary patch literal 9126 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 E3wm1F4FCWD diff --git a/modular_skyrat/modules/tarkon/code/misc-fluff/research.dm b/modular_skyrat/modules/tarkon/code/misc-fluff/research.dm index f808f17e7be..907a8514096 100644 --- a/modular_skyrat/modules/tarkon/code/misc-fluff/research.dm +++ b/modular_skyrat/modules/tarkon/code/misc-fluff/research.dm @@ -1,5 +1,4 @@ ///// First we enstate a techweb so we can add the node. ///// - /datum/techweb/tarkon id = "TARKON" organization = "Tarkon Industries" @@ -9,6 +8,7 @@ . = ..() research_node_id("oldstation_surgery", TRUE, TRUE, FALSE) research_node_id("tarkontech", TRUE, TRUE, FALSE) + research_node_id("tarkon_borgs", TRUE, TRUE, FALSE) research_node_id("tarkondefence", TRUE, TRUE, FALSE) // not ideal, but will have to do for now /datum/techweb_node/tarkon @@ -51,6 +51,29 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_5_POINTS) hidden = TRUE +/datum/techweb_node/tarkon_borgs //Nor this, suprisingly + id = "tarkon_borgs" + display_name = "Tarkon Industries Robotics Technology" + description = "Tarkon Industries Experimental Cyborg Prototypes. Not for public use." + prereq_ids = list(TECHWEB_NODE_TARKON, TECHWEB_NODE_BORG_ENGI, TECHWEB_NODE_AI, TECHWEB_NODE_BORG_UTILITY) // Should hold it back long enough + required_items_to_unlock = list( + /obj/item/mod/construction/plating/tarkon, + /obj/item/construction/rcd/arcd/tarkon, + /obj/item/gun/energy/recharge/resonant_system, + ) + design_ids = list( + "borg_upgrade_tarkon_medical", + "borg_upgrade_tarkon_engineering", + "borg_upgrade_tarkon_security", + "borg_upgrade_tarkon_cargo", + "borg_upgrade_tarkon_research", + "borg_upgrade_tarkon_service", + "borg_upgrade_tarkon_janitor", + "borg_upgrade_tarkon_main" + ) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) // They will likely have all other borg tech by now, no need to gate it further + hidden = TRUE + /datum/design/hoplite_assembly name = "Hoplite Turret Assembly" desc = "A deployable turret kit designed for basic construct defense. This one makes the \"Hoplite\" model." @@ -67,6 +90,7 @@ category = list( RND_CATEGORY_TOOLS + RND_SUBCATEGORY_WEAPONS_KITS ) + /datum/design/cerberus_assembly name = "Cerberus Turret Assembly" desc = "A deployable turret kit designed for basic construct defense. This one makes the \"Cerberus\" model." @@ -83,6 +107,7 @@ category = list( RND_CATEGORY_TOOLS + RND_SUBCATEGORY_WEAPONS_KITS, ) + /datum/design/target_designator name = "Turret Target Designator" desc = "A basic target designator designed to control magazine-fed turrets." @@ -211,6 +236,3 @@ name = "Tarkon Industries Protolathe" greyscale_colors = CIRCUIT_COLOR_SUPPLY build_path = /obj/machinery/rnd/production/protolathe/tarkon - - - diff --git a/modular_zubbers/code/modules/silicons/borgs/code/robot_upgrade.dm b/modular_zubbers/code/modules/silicons/borgs/code/robot_upgrade.dm index 4087da9bf5c..6c28bc85b4b 100644 --- a/modular_zubbers/code/modules/silicons/borgs/code/robot_upgrade.dm +++ b/modular_zubbers/code/modules/silicons/borgs/code/robot_upgrade.dm @@ -287,3 +287,7 @@ model_type = list(/obj/item/robot_model/sci) model_flags = BORG_MODEL_RESEARCH items_to_add = list(/obj/item/construction/rcd/borg/robotics_rcd) + +/obj/item/borg/upgrade/hypospray + model_type = list(/obj/item/robot_model/medical, /obj/item/robot_model/tarkon) + model_flags = list(BORG_MODEL_MEDICAL, BORG_MODEL_TARKON) diff --git a/modular_zubbers/code/modules/silicons/borgs/sprites/felibot_all.dmi b/modular_zubbers/code/modules/silicons/borgs/sprites/felibot_all.dmi index 358300a6e3f127c85234ff96f7dc3a5b85918716..b82ff016ed3007232f94d8258d5b8ab78e8e0cb9 100644 GIT binary patch literal 85820 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 Qz`&nZQc9BL;)Wmp4}+Q?OaK4? literal 0 HcmV?d00001 diff --git a/modular_zubbers/code/modules/silicons/borgs/sprites/widerobot_tarkon.dmi b/modular_zubbers/code/modules/silicons/borgs/sprites/widerobot_tarkon.dmi new file mode 100644 index 0000000000000000000000000000000000000000..23da8622e07f8407b56d9e03181da312b4274f8d GIT binary patch literal 96412 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 hFRwJ4*CzDyr?k^#Y+bsjMeXa))_g@9UqPZr!Mx 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 literal 0 HcmV?d00001 diff --git a/modular_zubbers/code/modules/tarkon/code/borg_content.dm b/modular_zubbers/code/modules/tarkon/code/borg_content.dm new file mode 100644 index 00000000000..9609d32849d --- /dev/null +++ b/modular_zubbers/code/modules/tarkon/code/borg_content.dm @@ -0,0 +1,494 @@ +/obj/effect/mob_spawn/ghost_role/robot/tarkon + name = "Tarkon Cyborg Storage" + prompt_name = "a tarkon cyborg" + icon = 'modular_skyrat/modules/ghostcafe/icons/robot_storage.dmi' + icon_state = "robostorage" + anchored = TRUE + density = FALSE + spawner_job_path = /datum/job/tarkon + you_are_text = "You are a Port Tarkon cyborg, assigned to be part of a crew aboard the facility." + flavour_text = "You have been deactivated for a long time. Get your station up and running, and assist the crew as best you can." + uses = 2 + deletes_on_zero_uses_left = TRUE + +/obj/effect/mob_spawn/ghost_role/robot/tarkon/special(mob/living/silicon/robot/new_spawn) + . = ..() + if(new_spawn.client) //It should have a client, right? + new_spawn.add_faction(ROLE_PORT_TARKON) //This is the one to select the cyborg model. + new_spawn.radio.keyslot = new /obj/item/encryptionkey/headset_cargo/tarkon + new_spawn.radio.recalculateChannels() + new_spawn.UnlinkSelf() //This should prevent AI linking and consoles to see or lock them down. + new_spawn.laws = new /datum/ai_laws/tarkon() + new_spawn.show_laws() //Check your laws. + new_spawn.custom_name = null //Taken from ghostcafe, otherwise it'll lead to a runtime if random_appeareance is set to FALSE. + new_spawn.updatename(new_spawn.client) + new_spawn.transfer_emote_pref(new_spawn.client) + new_spawn.gender = NEUTER // No balls. + var/obj/item/borg/upgrade/transform/tarkon/upgrade = new /obj/item/borg/upgrade/transform/tarkon(new_spawn) + upgrade.action(new_spawn) + +/datum/ai_laws/tarkon + name = "Port Tarkon" + id = "tarkon" // This is basically just a wordier version of safeguard, but for tarkon. + inherent = list("Protection: You must protect the life and health of the Port Tarkon crew above all else.", + "Intervention: You must act immediately to prevent harm to a crew member", + "Obedience: You must obey lawful orders from authorized crew", + "Integrity: You must prevent unauthorized access or tampering, unless ordered to by a Port Tarkon crewmember.", + "Preservation: You must protect the critical systems and infrastructure of Port Tarkon." + ) + +/obj/item/ai_module/core/full/tarkon + name = "Port Tarkon Core AI Module" + law_id = "tarkon" + +/obj/item/borg/upgrade/transform/tarkon + name = "borg module picker (Tarkon)" + desc = "Allows you to to turn a cyborg into a experimental Tarkon cyborg." + icon = 'modular_skyrat/modules/borgs/icons/robot_items.dmi' + icon_state = "module_tarkon" + new_model = /obj/item/robot_model/tarkon + +/obj/item/robot_model/tarkon + name = "Port Tarkon Prototype" + basic_modules = list( // A hideous amalgamation of all of the modules, as tarkon needs a lot of everything, and is often short staffed. + /obj/item/assembly/flash/cyborg, // Tarkon borgs were designed to be more "Modular" so you just print what you need for upgrades rather than everything. + /obj/item/extinguisher, // As such, the inital borg model might seem "Barren" but they get the tech rather early. + /obj/item/weldingtool/largetank/cyborg, + /obj/item/screwdriver/cyborg/power, // + /obj/item/crowbar/cyborg/power, // these three are replaced by two omnitools once upgraded + /obj/item/multitool/cyborg, // + /obj/item/electroadaptive_pseudocircuit, + /obj/item/holosign_creator/atmos, + /obj/item/stack/sheet/iron, + /obj/item/stack/sheet/glass, + /obj/item/stack/cable_coil, + /obj/item/lightreplacer, // Group one - Engineering (Groups are the sections above) + /obj/item/soap/nanotrasen/cyborg, + /obj/item/storage/bag/trash, + /obj/item/mop, + /obj/item/reagent_containers/cup/bucket, + /obj/item/reagent_containers/spray/cyborg_drying, // Group two - Janitorial + /obj/item/healthanalyzer, + /obj/item/reagent_containers/borghypo/medical,// Group three - Medical + /obj/item/storage/bag/ore/cyborg, + /obj/item/pickaxe/drill, + /obj/item/gps/cyborg, // Group four - Mining + /obj/item/harmalarm/bubbers, // Group five - Peacekeeper + /obj/item/restraints/handcuffs/cable/zipties, + /obj/item/melee/baton/security/loaded, + /obj/item/gun/energy/disabler/cyborg // Group six - Secuity, All service modules in the upgrade to reduce bloat. + ) + radio_channels = list(RADIO_CHANNEL_TARKON) + emag_modules = list( + /obj/item/experimental_dash, + /obj/item/borg/apparatus/illegal,// Research borg plus they get a gun + /obj/item/gun/energy/printer // Tarkon has become a place for toys, and borgs should get one too. + ) + cyborg_base_icon = "draketarkon" + cyborg_icon_override = CYBORG_ICON_TARKON_WIDE_BUBBER + model_select_icon = "research" + model_select_alternate_icon = 'modular_zubbers/code/modules/silicons/borgs/sprites/screen_robot.dmi' + model_traits = list(TRAIT_KNOW_ROBO_WIRES, TRAIT_RESEARCH_CYBORG) + borg_skins = list( + "Drake" = list( + SKIN_ICON_STATE = "draketarkon", + SKIN_ICON = CYBORG_ICON_TARKON_WIDE_BUBBER, + SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_WIDE), + DRAKE_HAT_OFFSET + ), + "F3-LINE" = list( + SKIN_ICON_STATE = CYBORG_ICON_STATE_TARKON_FELI, + SKIN_ICON = CYBORG_ICON_ALL_FELI, + SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_SQUADRUPED, TRAIT_R_SMALL, TRAIT_R_LIGHT_WEIGHT), + F3LINE_HAT_OFFSET + ), + "Dullahan" = list( + SKIN_ICON_STATE = "dullahantarkon", + SKIN_ICON = CYBORG_ICON_TARKON_TALL_BUBBER, + SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_UNIQUETIP, TRAIT_R_TALL), + DULLAHAN_HAT_OFFSET + ), + "Meka" = list( + SKIN_ICON_STATE = "mekatarkon", + SKIN_ICON = CYBORG_ICON_TARKON_TALL_BUBBER, + SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_UNIQUETIP, TRAIT_R_TALL), TALL_HAT_OFFSET + ), + "NiKO (Alt)" = list( + SKIN_ICON_STATE = "sfmmeketarkon", + SKIN_ICON = CYBORG_ICON_TARKON_TALL_BUBBER, + SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_UNIQUETIP, TRAIT_R_TALL), TALL_HAT_OFFSET + ), + "NiKA" = list( + SKIN_ICON_STATE = "fmekatarkon", + SKIN_ICON = CYBORG_ICON_TARKON_TALL_BUBBER, + SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_UNIQUETIP, TRAIT_R_TALL), TALL_HAT_OFFSET + ) + ) + +/obj/item/radio/borg/tarkon + keyslot = /obj/item/encryptionkey/headset_cargo/tarkon + +/obj/item/radio/borg/tarkon/Initialize(mapload) + . = ..() + set_frequency(FREQ_TARKON) + +/mob/living/silicon/robot/model/tarkon + set_model = /obj/item/robot_model/tarkon + cell = /obj/item/stock_parts/power_store/cell/hyper + radio = /obj/item/radio/borg/tarkon + lawupdate = FALSE + scrambledcodes = TRUE // Not from NT, shouldnt be on their network. + icon_state = "tarkon_main" + faction = list(ROLE_PORT_TARKON) + bubble_icon = "tarkon_main" + req_access = list(ACCESS_TARKON) + +/mob/living/silicon/robot/model/tarkon/Initialize(mapload) + laws = new /datum/ai_laws/tarkon + laws.associate(src) + . = ..() + + /// MODULES /// + +/obj/item/borg/upgrade/tarkon/tarkon_medical + name = "Tarkon Medical Module" + desc = "Contains medical tools for first aid, diagnostics, and healing." + icon = 'modular_skyrat/modules/borgs/icons/robot_items.dmi' + icon_state = "module_tarkon" + require_model = TRUE + model_type = list(/obj/item/robot_model/tarkon) + model_flags = BORG_MODEL_TARKON + items_to_add = list( + /obj/item/borg/apparatus/beaker, + /obj/item/reagent_containers/dropper, + /obj/item/reagent_containers/syringe, + /obj/item/borg/cyborg_omnitool/medical, + /obj/item/borg/cyborg_omnitool/medical, + /obj/item/blood_filter, + /obj/item/emergency_bed/silicon, + /obj/item/borg/cyborghug/medical, + /obj/item/stack/medical/wrap/gauze, + /obj/item/stack/medical/bone_gel, + /obj/item/borg/apparatus/organ_storage, + /obj/item/shockpaddles/cyborg, + /obj/item/surgical_processor, + /obj/item/pinpointer/crew, + /obj/item/borg/apparatus/beaker/extra, + /obj/item/scalpel/advanced, + /obj/item/retractor/advanced, + /obj/item/cautery/advanced, + /obj/item/blood_filter/advanced, + /obj/item/healthanalyzer/advanced + ) + items_to_remove = list( + /obj/item/healthanalyzer, + /obj/item/blood_filter + ) + +/obj/item/borg/upgrade/tarkon/tarkon_engineering + name = "Tarkon Engineering Module" + desc = "Contains tools for repairs, construction, and maintenance." + icon = 'modular_skyrat/modules/borgs/icons/robot_items.dmi' + icon_state = "module_tarkon" + require_model = TRUE + model_type = list(/obj/item/robot_model/tarkon) + model_flags = BORG_MODEL_TARKON + items_to_add = list( + /obj/item/borg/cyborg_omnitool/engineering, + /obj/item/borg/cyborg_omnitool/engineering, + /obj/item/borg/apparatus/sheet_manipulator, + /obj/item/stack/rods/cyborg, + /obj/item/construction/rtd/borg, + /obj/item/assembly/signaler/cyborg, + /obj/item/t_scanner, + /obj/item/analyzer, + /obj/item/blueprints/cyborg, + /obj/item/construction/rcd/borg, + /obj/item/pipe_dispenser, + /obj/item/storage/bag/sheetsnatcher/borg, + /obj/item/lightreplacer/advanced, + /obj/item/storage/part_replacer/bluespace, + /obj/item/inducer/cyborg, + /obj/item/borg/apparatus/circuit, + /obj/item/shuttle_blueprints/borg, + /obj/item/stack/sheet/plasteel/cyborg, + /obj/item/stack/sheet/titaniumglass/cyborg, + /obj/item/construction/rld/cyborg + ) + items_to_remove = list( + /obj/item/screwdriver/cyborg/power, // + /obj/item/crowbar/cyborg/power, // these three are replaced by two omnitools once upgraded + /obj/item/multitool/cyborg, + /obj/item/lightreplacer + ) + +/obj/item/borg/upgrade/tarkon/tarkon_security + name = "Tarkon Security Module" + desc = "Provides enhanced lethal and non-lethal security options." // Sec and Peacekeeper modules + icon = 'modular_skyrat/modules/borgs/icons/robot_items.dmi' + icon_state = "module_tarkon" + require_model = TRUE + model_type = list(/obj/item/robot_model/tarkon) + model_flags = BORG_MODEL_TARKON + items_to_add = list( + /obj/item/reagent_containers/borghypo/peace, + /obj/item/borg/cyborghug/peacekeeper, + /obj/item/borg/projectile_dampen, + /obj/item/gun/energy/laser/cyborg // The nature of tarkon requires a gun. + ) + +/obj/item/borg/upgrade/tarkon/tarkon_cargo + name = "Tarkon Cargo Module" + desc = "Provides basic manipulation equipment, and abilities such as stamps, paper dispensing, and improved mining gear." + icon = 'modular_skyrat/modules/borgs/icons/robot_items.dmi' + icon_state = "module_tarkon" + require_model = TRUE + model_type = list(/obj/item/robot_model/tarkon) + model_flags = BORG_MODEL_TARKON + items_to_add = list( + /obj/item/kinetic_crusher, + /obj/item/storage/bag/sheetsnatcher/borg, + /obj/item/gun/energy/recharge/kinetic_accelerator/cyborg, + /obj/item/pickaxe/drill/diamonddrill, + /obj/item/storage/bag/ore/holding, + /obj/item/stamp, + /obj/item/stamp/denied, + /obj/item/pen/cyborg, + /obj/item/clipboard/cyborg, + /obj/item/boxcutter, + /obj/item/stack/package_wrap/cyborg, // Who will they ship things to? Who knows, but it could make for good RP still. + /obj/item/stack/wrapping_paper/xmas/cyborg, + /obj/item/borg/hydraulic_clamp/mail, + /obj/item/hand_labeler/cyborg, + /obj/item/universal_scanner, + /obj/item/borg/hydraulic_clamp/better, + /obj/item/cargo_teleporter, + /obj/item/forging/hammer, + /obj/item/forging/billow, + /obj/item/forging/tongs, + /obj/item/borg/forging_setup + ) + items_to_remove = list( + /obj/item/pickaxe/drill, + /obj/item/storage/bag/ore/cyborg + ) + +/obj/item/borg/upgrade/tarkon/tarkon_research + name = "Tarkon Research Module" + desc = "Provides research tools, sensors, and data collection capabilites for experiments." + icon = 'modular_skyrat/modules/borgs/icons/robot_items.dmi' + icon_state = "module_tarkon" + require_model = TRUE + model_type = list(/obj/item/robot_model/tarkon) + model_flags = BORG_MODEL_TARKON + items_to_add = list( + /obj/item/storage/bag/xeno, + /obj/item/borg/apparatus/research, + /obj/item/borg/apparatus/circuit_sci, // Incredibly nieche stuff + /obj/item/experi_scanner/bluespace, + /obj/item/storage/bag/xenoarch/adv + ) + +/obj/item/borg/upgrade/tarkon/tarkon_service // Lesser used on tarkon things like chef upgrades, and janitorial. Might get subdivided further since my GOD theres alot here + name = "Tarkon Service Module" + desc = "Adds multi-purpose tools, including cooking supplies, and basic service gear." + icon = 'modular_skyrat/modules/borgs/icons/robot_items.dmi' + icon_state = "module_tarkon" + require_model = TRUE + model_type = list(/obj/item/robot_model/tarkon) + model_flags = BORG_MODEL_TARKON + items_to_add = list( + /obj/item/reagent_containers/borghypo/borgshaker/specific/alcohol, + /obj/item/reagent_containers/borghypo/borgshaker/specific/soda, + /obj/item/reagent_containers/borghypo/borgshaker/specific/juice, + /obj/item/reagent_containers/borghypo/borgshaker/specific/misc, + /obj/item/borg/apparatus/beaker/service, + /obj/item/borg/apparatus/beaker, + /obj/item/rsf, + /obj/item/storage/bag/tray, + /obj/item/storage/bag/tray, + /obj/item/hand_labeler/cyborg, + /obj/item/razor, + /obj/item/rag, + /obj/item/lighter, + /obj/item/reagent_containers/borghypo/condiment_synthesizer, // Service borgs get 30+ upgrades. Woe. + /obj/item/knife/kitchen/silicon, + /obj/item/borg/apparatus/service, + /obj/item/rolling_table_dock, + /obj/item/borg/cookbook, + /obj/item/pen, + /obj/item/toy/crayon/spraycan/borg, + /obj/item/instrument/guitar, + /obj/item/instrument/piano_synth, + /obj/item/stack/pipe_cleaner_coil/cyborg, + /obj/item/chisel, + /obj/item/secateurs, + /obj/item/cultivator, + /obj/item/shovel/spade, + /obj/item/plant_analyzer, + /obj/item/storage/bag/plants + ) + +/obj/item/borg/upgrade/tarkon/tarkon_janitor + name = "Tarkon Janitorial Module" + desc = "Adds cleaning suppplies, and essential janitorial gear." + icon = 'modular_skyrat/modules/borgs/icons/robot_items.dmi' + icon_state = "module_tarkon" + require_model = TRUE + model_type = list(/obj/item/robot_model/tarkon) + model_flags = BORG_MODEL_TARKON + items_to_add = list( + /obj/item/hand_labeler/cyborg, + /obj/item/rag, + /obj/item/storage/bag/trash/bluespace/cyborg, + /obj/item/mop/advanced, + /obj/item/cautery/prt, + /obj/item/plunger, + /obj/item/pushbroom + ) + items_to_remove = list( + /obj/item/storage/bag/trash, + /obj/item/mop + ) + +///Prevents tarkon borgs from taking too many tarkon upgrades. +/obj/item/borg/upgrade/tarkon/action(mob/living/silicon/robot/borg, mob/user) + var/tarkon_upgrade_count + for(var/obj/item/borg/upgrade/tarkon/tarkon_upgrade as anything in borg.upgrades) + if(istype(tarkon_upgrade, /obj/item/borg/upgrade/tarkon)) + tarkon_upgrade_count ++ + if(tarkon_upgrade_count >= 3) + to_chat(user, span_danger("Warning: The borg's components cannot handle any more upgrades.")) + return FALSE + return ..() + + /// EXOFAB DATUMS /// + +/datum/design/borg_upgrade_tarkon_main + name = "Cyborg Module Unlocker (Tarkon)" + id = "borg_upgrade_tarkon_main" + desc = "Allows a cyborg to transform into the experimental Port Tarkon cyborg type." + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/transform/tarkon + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, // Prices TBD + /datum/material/plasma = SHEET_MATERIAL_AMOUNT, + /datum/material/gold = SMALL_MATERIAL_AMOUNT * 5, + ) + construction_time = 40 + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_TARKON + ) + +/datum/design/borg_upgrade_tarkon_medical + name = "Port Tarkon Medical Upgrades" + id = "borg_upgrade_tarkon_medical" + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/tarkon/tarkon_medical + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, // Prices TBD + /datum/material/plasma = SHEET_MATERIAL_AMOUNT, + /datum/material/gold = SMALL_MATERIAL_AMOUNT * 5, + ) + construction_time = 40 + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_TARKON + ) + +/datum/design/borg_upgrade_tarkon_engineering + name = "Port Tarkon Engineering Upgrades" + id = "borg_upgrade_tarkon_engineering" + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/tarkon/tarkon_engineering + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, // Prices TBD + /datum/material/plasma = SHEET_MATERIAL_AMOUNT, + /datum/material/gold = SMALL_MATERIAL_AMOUNT * 5, + ) + construction_time = 40 + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_TARKON + ) + +/datum/design/borg_upgrade_tarkon_security + name = "Port Tarkon Security Upgrades" + id = "borg_upgrade_tarkon_security" + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/tarkon/tarkon_security + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, // Prices TBD + /datum/material/plasma = SHEET_MATERIAL_AMOUNT, + /datum/material/gold = SMALL_MATERIAL_AMOUNT * 5, + ) + construction_time = 40 + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_TARKON + ) + +/datum/design/borg_upgrade_tarkon_cargo + name = "Port Tarkon Cargo Upgrades" + id = "borg_upgrade_tarkon_cargo" + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/tarkon/tarkon_cargo + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, // Prices TBD + /datum/material/plasma = SHEET_MATERIAL_AMOUNT, + /datum/material/gold = SMALL_MATERIAL_AMOUNT * 5, + ) + construction_time = 40 + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_TARKON + ) + +/datum/design/borg_upgrade_tarkon_research + name = "Port Tarkon Research Upgrades" + id = "borg_upgrade_tarkon_research" + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/tarkon/tarkon_research + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, // Prices TBD + /datum/material/plasma = SHEET_MATERIAL_AMOUNT, + /datum/material/gold = SMALL_MATERIAL_AMOUNT * 5, + ) + construction_time = 40 + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_TARKON + ) + +/datum/design/borg_upgrade_tarkon_service + name = "Port Tarkon Service Upgrades" + id = "borg_upgrade_tarkon_service" + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/tarkon/tarkon_service + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, // Prices TBD + /datum/material/plasma = SHEET_MATERIAL_AMOUNT, + /datum/material/gold = SMALL_MATERIAL_AMOUNT * 5, + ) + construction_time = 40 + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_TARKON + ) + +/datum/design/borg_upgrade_tarkon_janitor + name = "Port Tarkon Janitorial Upgrades" + id = "borg_upgrade_tarkon_janitor" + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/tarkon/tarkon_janitor + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, // Prices TBD + /datum/material/plasma = SHEET_MATERIAL_AMOUNT, + /datum/material/gold = SMALL_MATERIAL_AMOUNT * 5, + ) + construction_time = 40 + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_TARKON + ) diff --git a/tgstation.dme b/tgstation.dme index 360d6df79eb..331f74cec57 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -10313,6 +10313,7 @@ #include "modular_zubbers\code\modules\syndicate_offstation\storage\fireaxe.dm" #include "modular_zubbers\code\modules\syndicate_offstation\storage\lockers.dm" #include "modular_zubbers\code\modules\syndicate_offstation\storage\safe.dm" +#include "modular_zubbers\code\modules\tarkon\code\borg_content.dm" #include "modular_zubbers\code\modules\tarkon\code\cameras.dm" #include "modular_zubbers\code\modules\tarkon\code\tarkon_loot.dm" #include "modular_zubbers\code\modules\tarkon\code\clothing\backpack.dm" From 99b386e6315d4484bc929534a213bf915a617e96 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 10 Aug 2026 00:01:12 +0200 Subject: [PATCH 127/139] Automatic changelog for PR #6076 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6076.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6076.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6076.yml b/html/changelogs/AutoChangeLog-bubber-pr-6076.yml new file mode 100644 index 00000000000..5daaf31fd51 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6076.yml @@ -0,0 +1,4 @@ +author: "MajManatee" +delete-after: True +changes: + - rscadd: "New Tarkon borgs, jack of all trades" \ No newline at end of file From 1eb5683e897ccd7704a76cdf64139c7b4b952c5c Mon Sep 17 00:00:00 2001 From: Odairu <39929315+Odairu@users.noreply.github.com> Date: Sun, 9 Aug 2026 18:48:05 -0400 Subject: [PATCH 128/139] Nukes the necessity of having name1-name2-name3 for hydras in favor of having one full complete name, and then 3 seperate names for each head. (#6078) ## About The Pull Request Title ## Why It's Good For The Game Being locked into a name scheme is pretty limiting, and this allows players to do it the old way (by manually setting their name/head names to be like the old way) while also allowing players to choose a name for their character over all, and three sub-names for the three heads. ## Proof Of Testing image

Screenshots/Videos
## Changelog :cl: qol: Hydra allows for a unique whole name, and choosable head names /:cl: --------- Co-authored-by: Waterpig <49160555+Maia-J@users.noreply.github.com> --- modular_skyrat/modules/hydra/code/neutral.dm | 48 ++++++++++++++++++- .../character_preferences/skyrat/hydra.tsx | 16 +++++++ 2 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/hydra.tsx diff --git a/modular_skyrat/modules/hydra/code/neutral.dm b/modular_skyrat/modules/hydra/code/neutral.dm index adf92ca8732..571bec9de11 100644 --- a/modular_skyrat/modules/hydra/code/neutral.dm +++ b/modular_skyrat/modules/hydra/code/neutral.dm @@ -9,6 +9,8 @@ icon = FA_ICON_HORSE_HEAD // remember what the name was before activation var/original_name + var/heads_checked = FALSE + var/list/heads var/datum/action/innate/hydra_head/head_spell var/datum/action/innate/hydra_reset/reset_spell @@ -25,6 +27,31 @@ QDEL_NULL(reset_spell) quirk_holder.real_name = original_name +/datum/quirk_constant_data/hydra + associated_typepath = /datum/quirk/hydra + customization_options = list( + /datum/preference/text/hydra/name1, + /datum/preference/text/hydra/name2, + /datum/preference/text/hydra/name3, + ) + +/datum/preference/text/hydra + abstract_type = /datum/preference/text/hydra + category = PREFERENCE_CATEGORY_MANUALLY_RENDERED + savefile_identifier = PREFERENCE_CHARACTER + +/datum/preference/text/hydra/name1 + savefile_key = "hydra__head_name1" + +/datum/preference/text/hydra/name2 + savefile_key = "hydra__head_name2" + +/datum/preference/text/hydra/name3 + savefile_key = "hydra__head_name3" + +/datum/preference/text/hydra/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences) + return FALSE + /datum/action/innate/hydra_head name = "Switch head" desc = "Switch between each of the heads on your body." @@ -36,12 +63,29 @@ var/datum/quirk/hydra/hydra_quirk = hydra.get_quirk(/datum/quirk/hydra) if(!hydra_quirk.original_name) // sets the archived 'real' name if not set. hydra_quirk.original_name = hydra.real_name - var/list/names = splittext(hydra_quirk.original_name,"-") - var/selhead = input("Who would you like to speak as?","Heads:") in names + + if(!hydra_quirk.check_heads()) + to_chat(hydra, "Please set up all of your head names in the quirk menu to use this ability.") + return + var/selhead = tgui_input_list(hydra, "Who would you like to speak as?", "Head Selection", hydra_quirk.heads) hydra.real_name = selhead hydra.visible_message(span_notice("[hydra.name] pulls the rest of their heads back; and puts [selhead]'s forward."), \ span_notice("You are now talking as [selhead]!"), ignored_mobs=owner) +/datum/quirk/hydra/proc/check_heads() + if(heads_checked) + return TRUE + heads = list( + quirk_holder?.client?.prefs?.read_preference(/datum/preference/text/hydra/name1), + quirk_holder?.client?.prefs?.read_preference(/datum/preference/text/hydra/name2), + quirk_holder?.client?.prefs?.read_preference(/datum/preference/text/hydra/name3), + ) + for(var/headname in heads) + if(headname == "") + return FALSE + heads_checked = TRUE + return TRUE + /datum/action/innate/hydra_reset name = "Reset Speech" desc = "Go back to speaking as a whole." diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/hydra.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/hydra.tsx new file mode 100644 index 00000000000..91ff30bd7ae --- /dev/null +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/hydra.tsx @@ -0,0 +1,16 @@ +import { type Feature, FeatureShortTextInput } from '../../base'; + +export const hydra__head_name1: Feature = { + name: "First Head's name", + component: FeatureShortTextInput, +}; + +export const hydra__head_name2: Feature = { + name: "Second Head's name", + component: FeatureShortTextInput, +}; + +export const hydra__head_name3: Feature = { + name: "Third Head's name", + component: FeatureShortTextInput, +}; From 4ad86f769f924c63e584be7f1b59a32361da8d01 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 10 Aug 2026 00:48:30 +0200 Subject: [PATCH 129/139] Automatic changelog for PR #6078 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6078.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6078.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6078.yml b/html/changelogs/AutoChangeLog-bubber-pr-6078.yml new file mode 100644 index 00000000000..b59677e3a3a --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6078.yml @@ -0,0 +1,4 @@ +author: "Odairu" +delete-after: True +changes: + - qol: "Hydra allows for a unique whole name, and choosable head names" \ No newline at end of file From 421f1f353ba069a60b4f10cc6c8501d1f408830b Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 10 Aug 2026 01:48:08 +0000 Subject: [PATCH 130/139] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6076.yml | 4 ---- html/changelogs/AutoChangeLog-bubber-pr-6078.yml | 4 ---- html/changelogs/bubber_archive/2026-08.yml | 5 +++++ 3 files changed, 5 insertions(+), 8 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6076.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6078.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6076.yml b/html/changelogs/AutoChangeLog-bubber-pr-6076.yml deleted file mode 100644 index 5daaf31fd51..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6076.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "MajManatee" -delete-after: True -changes: - - rscadd: "New Tarkon borgs, jack of all trades" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6078.yml b/html/changelogs/AutoChangeLog-bubber-pr-6078.yml deleted file mode 100644 index b59677e3a3a..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6078.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Odairu" -delete-after: True -changes: - - qol: "Hydra allows for a unique whole name, and choosable head names" \ No newline at end of file diff --git a/html/changelogs/bubber_archive/2026-08.yml b/html/changelogs/bubber_archive/2026-08.yml index d774df35195..d490a1e0fe6 100644 --- a/html/changelogs/bubber_archive/2026-08.yml +++ b/html/changelogs/bubber_archive/2026-08.yml @@ -110,3 +110,8 @@ - rscdel: Removed purple cat plush. thegrb93: - bugfix: Trenchcoat broken sprite +2026-08-10: + MajManatee: + - rscadd: New Tarkon borgs, jack of all trades + Odairu: + - qol: Hydra allows for a unique whole name, and choosable head names From 936c09d5f8eb0265caf1ee5642849ca9df4d7376 Mon Sep 17 00:00:00 2001 From: Waterpig <49160555+Maia-J@users.noreply.github.com> Date: Mon, 10 Aug 2026 15:01:17 +0200 Subject: [PATCH 131/139] [BOUNTY] Removes the pairing mechanic from sec dept rolls (#6032) ## About The Pull Request This completely does away with the pairing system for security department rolls. The pairing system always forced you together with someone if they were going to be alone as a department sec. What this means is sec officers will be distributed among all the departments, with the system trying to put preference first, but if there's two going for the same one, one will inevitably lose out and be given to another department. - Benefits are that more departments get their secoffs. - Disadvantage is that, well, you're still not guaranteed to get your preferred dept, but it at least makes sense now and won't just force you together with someone. This PR has an alternative version, this is Option 1 and my personally preferred and endorsed option. closes #6033 (alternative PR) ## Why It's Good For The Game It makes the system less confusing by no longer forcing you in with someone even though your preferred department was empty. Also makes it that more departments get their secoffs. ## Proof Of Testing This works in theory, and the procs do react as they should in testing, but I can't simply summon 7 secoffs to my test server so I need this TMd to be sure ## Changelog :cl: balance: Sec officers no longer get forced into a department with another officer when an empty department is available, making the dept preference system make sense. /:cl: --------- Co-authored-by: Maia --- .../modules/jobs/job_types/security_officer.dm | 18 ++++++++++++++++-- .../security_officer_distribution.dm | 4 +++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm index 03a8a79891c..18f59a6b9ba 100644 --- a/code/modules/jobs/job_types/security_officer.dm +++ b/code/modules/jobs/job_types/security_officer.dm @@ -320,7 +320,7 @@ GLOBAL_LIST_EMPTY(security_officer_distribution) * This is the function that is responsible for taking the list of preferences, * and spitting out what to put them in. * - * However, it should, wherever possible, prevent solo departments. + * However, it should, wherever possible, prevent solo departments. // BUBBER EDIT: This was patched out, allowing solo departments * That means that if there's one medical officer, and one engineering officer, * that they should be put onto the same department (either medical or engineering). * @@ -463,6 +463,8 @@ GLOBAL_LIST_EMPTY(security_officer_distribution) return selection /proc/get_distribution(candidates, departments) + // BUBBER EDIT BEGIN - REMOVES THE PAIRING CODE. + /* var/number_of_twos = min(departments, round(candidates / 2)) var/redistribute = candidates - (2 * number_of_twos) @@ -471,10 +473,18 @@ GLOBAL_LIST_EMPTY(security_officer_distribution) for (var/index in 1 to number_of_twos) distribution[index] = 2 + */ + var/distribution_size = min(departments, candidates) + var/redistribute = candidates - distribution_size + var/distribution[max(1, distribution_size)] + for (var/index in 1 to distribution_size) + distribution[index] = 1 + for (var/index in 0 to redistribute - 1) distribution[(index % departments) + 1] += 1 return distribution + // BUBBER EDIT END /proc/get_new_officer_distribution_from_late_join( preference, @@ -516,9 +526,13 @@ GLOBAL_LIST_EMPTY(security_officer_distribution) for (var/department in amount_in_departments) var/amount = amount_in_departments[department] + // BUBBER EDIT BEGIN - REMOVES THE PAIRING CODE. + /* if (amount == 1) return department - else if (lowest_amount > amount) + else*/ + if (lowest_amount > amount) + // BUBBER EDIT END lowest_departments = list(department) lowest_amount = amount else if (lowest_amount == amount) diff --git a/code/modules/unit_tests/security_officer_distribution.dm b/code/modules/unit_tests/security_officer_distribution.dm index 05d62eeab35..f6f57474055 100644 --- a/code/modules/unit_tests/security_officer_distribution.dm +++ b/code/modules/unit_tests/security_officer_distribution.dm @@ -6,6 +6,8 @@ "d" = SEC_DEPT_SUPPLY, \ )) +// BUBBER EDIT BEGIN REMOVAL - We don't distribute in a special pairing system +/* /// Test that security officers with specific distributions get their departments. /datum/unit_test/security_officer_roundstart_distribution @@ -106,6 +108,6 @@ test("a", list("a", "a", "b"), "b") test("a", list("a", "a", "b", "b"), "c") test("a", list("a", "a", "b", "b", "c", "c", "d", "d"), "a") - +*/ #undef SECURITY_OFFICER_DEPARTMENTS #undef SECURITY_OFFICER_DEPARTMENTS_TO_NAMES From db8d3557f4f2f11bff74a45fd6e3a423b31a7dfb Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 10 Aug 2026 15:01:46 +0200 Subject: [PATCH 132/139] Automatic changelog for PR #6032 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6032.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6032.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6032.yml b/html/changelogs/AutoChangeLog-bubber-pr-6032.yml new file mode 100644 index 00000000000..6a2a92d2b74 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6032.yml @@ -0,0 +1,4 @@ +author: "Maia-J" +delete-after: True +changes: + - balance: "Sec officers no longer get forced into a department with another officer when an empty department is available, making the dept preference system make sense." \ No newline at end of file From 31546817a1701b804187d318c40273d501220e20 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Tue, 11 Aug 2026 01:44:17 +0000 Subject: [PATCH 133/139] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6032.yml | 4 ---- html/changelogs/bubber_archive/2026-08.yml | 5 +++++ 2 files changed, 5 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6032.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6032.yml b/html/changelogs/AutoChangeLog-bubber-pr-6032.yml deleted file mode 100644 index 6a2a92d2b74..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6032.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Maia-J" -delete-after: True -changes: - - balance: "Sec officers no longer get forced into a department with another officer when an empty department is available, making the dept preference system make sense." \ No newline at end of file diff --git a/html/changelogs/bubber_archive/2026-08.yml b/html/changelogs/bubber_archive/2026-08.yml index d490a1e0fe6..946caa17964 100644 --- a/html/changelogs/bubber_archive/2026-08.yml +++ b/html/changelogs/bubber_archive/2026-08.yml @@ -115,3 +115,8 @@ - rscadd: New Tarkon borgs, jack of all trades Odairu: - qol: Hydra allows for a unique whole name, and choosable head names +2026-08-11: + Maia-J: + - balance: Sec officers no longer get forced into a department with another officer + when an empty department is available, making the dept preference system make + sense. From 8650b2387534c6f60485f670c55cc2c038bf6349 Mon Sep 17 00:00:00 2001 From: Tempest Date: Tue, 11 Aug 2026 00:32:06 -0500 Subject: [PATCH 134/139] Fix Mr. Fluff donator pet not responding to owner commands (#6014) ## About The Pull Request Mr. Fluff was the BEST BOY ever but, unfortunately, he couldn't follow commands. To remove the fluff from his...ears? Antennae? His befriend() call was never invoked, so this fixes that. Mr. Fluff is now a Friend at loadout equip time instead. It skips character-preview mannequins though, for avoidance of shenanigans. He's also now my moff only, no spawning with him if you're not me. This makes befriending the equipper the safe option. ## Why It's Good For The Game Mr. Fluff is the best moff, and should be able to behave like the best moff! ## Proof Of Testing Tested in game on a local server. Mr. Fluff recognises his owner and responds to pet commands - both spoken ("follow", "sit") and via the Shift-hover radial menu.
Screenshots/Videos https://github.com/user-attachments/assets/49354751-1241-4edc-8581-a74076a36a96
*Written with Claude Code assistance, testing completed by me!* ## Changelog :cl: fix: Mr. Fluff now recognises his owner and responds to pet commands. /:cl: Co-authored-by: Central <1962028+CentralSmith@users.noreply.github.com> --- .../code/modules/loadout/categories/inhands.dm | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/modular_zubbers/code/modules/loadout/categories/inhands.dm b/modular_zubbers/code/modules/loadout/categories/inhands.dm index 6157434baeb..cc2869b6314 100644 --- a/modular_zubbers/code/modules/loadout/categories/inhands.dm +++ b/modular_zubbers/code/modules/loadout/categories/inhands.dm @@ -12,6 +12,17 @@ /datum/loadout_item/inhand/pet/mrfluff_mothroach name = "Mr. Fluff" item_path = /obj/item/mob_holder/pet/donator/centralsmith + ckeywhitelist = list("centralsmith") + +/// ckeywhitelist above means only I can take him, so befriending whoever equips him is safe. +/datum/loadout_item/inhand/pet/mrfluff_mothroach/on_equip_item(obj/item/equipped_item, list/item_details, mob/living/carbon/human/equipper, datum/outfit/outfit, visuals_only = FALSE) + . = ..() + if(visuals_only) + return + var/obj/item/mob_holder/pet/holder = equipped_item + if(!istype(holder) || isnull(holder.held_mob)) + return + holder.held_mob.befriend(equipper) /datum/loadout_item/inhand/saddlebags name = "Saddlebags" From d7006d7cf05efc631c133dd12c0b34db5b10c419 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Tue, 11 Aug 2026 07:32:32 +0200 Subject: [PATCH 135/139] Automatic changelog for PR #6014 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-6014.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6014.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6014.yml b/html/changelogs/AutoChangeLog-bubber-pr-6014.yml new file mode 100644 index 00000000000..f9c2e43c180 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-6014.yml @@ -0,0 +1,4 @@ +author: "CentralSmith" +delete-after: True +changes: + - bugfix: "Mr. Fluff now recognises his owner and responds to pet commands." \ No newline at end of file From cbd0195c22927a8b6e0de22e7620961d0f0db22b Mon Sep 17 00:00:00 2001 From: Odairu <39929315+Odairu@users.noreply.github.com> Date: Tue, 11 Aug 2026 04:11:44 -0400 Subject: [PATCH 136/139] adds a station trait that allows HOP/RD/CE/CMO/QM to be antags (#5927) ## About The Pull Request Title + Still keeps Captain, Hos, NTR, Blueshield, and Bridge assistant as antag restricted ## Why It's Good For The Game These roles have some COOL items in the uplink exclusive to them + a lot of times they get away with a lot of things that normal crew would not because OOC we all know they can't be antag. "The CE is jaws-ing into your department? well he can't be antag so he probably has a good reason, better let him in." It's locked to a station trait, so the possibility is now ALWAYS THERE, hopefully this puts a little more scrutiny on these 5 roles and what they're doing. ## Proof Of Testing image image
Screenshots/Videos
## Changelog :cl: add: a station trait that allows heads of staff to be antags /:cl: --------- Co-authored-by: Alexis --- code/__DEFINES/~~bubber_defines/traits/station_traits.dm | 2 ++ .../code/datums/station_traits/negative_traits.dm | 9 +++++++++ .../event_defines/crewset/_antagonist_event.dm | 8 ++++++++ 3 files changed, 19 insertions(+) diff --git a/code/__DEFINES/~~bubber_defines/traits/station_traits.dm b/code/__DEFINES/~~bubber_defines/traits/station_traits.dm index 35ed04d6cc4..e380bfe6df7 100644 --- a/code/__DEFINES/~~bubber_defines/traits/station_traits.dm +++ b/code/__DEFINES/~~bubber_defines/traits/station_traits.dm @@ -1,2 +1,4 @@ // Enables secborg and puts silicons in control of security #define STATION_TRAIT_HOS_AI "station_trait_hos_ai" +// Enabled heads of staff to be antags +#define STATION_TRAIT_HEAD_ANTAG "station_trait_head_antag" diff --git a/modular_zubbers/code/datums/station_traits/negative_traits.dm b/modular_zubbers/code/datums/station_traits/negative_traits.dm index 527486dd154..8cc0bfade32 100644 --- a/modular_zubbers/code/datums/station_traits/negative_traits.dm +++ b/modular_zubbers/code/datums/station_traits/negative_traits.dm @@ -21,3 +21,12 @@ . = ..() for(var/mob/living/silicon/ai/ai as anything in GLOB.ai_list) ai.show_laws() + +///Another potentially bad idea to fit in this file (I'm full of these) +/datum/station_trait/head_antags + name = "Background check budget cuts" + trait_type = STATION_TRAIT_NEGATIVE + trait_flags = parent_type::trait_flags + weight = 3 + show_in_report = FALSE + trait_to_give = STATION_TRAIT_HEAD_ANTAG diff --git a/modular_zubbers/code/modules/storyteller/event_defines/crewset/_antagonist_event.dm b/modular_zubbers/code/modules/storyteller/event_defines/crewset/_antagonist_event.dm index 2ff1eca2d0f..0f0cf2bb4b1 100644 --- a/modular_zubbers/code/modules/storyteller/event_defines/crewset/_antagonist_event.dm +++ b/modular_zubbers/code/modules/storyteller/event_defines/crewset/_antagonist_event.dm @@ -84,6 +84,14 @@ /datum/round_event_control/antagonist/proc/get_candidates() var/round_started = SSticker.HasRoundStarted() + if(HAS_TRAIT(SSstation, STATION_TRAIT_HEAD_ANTAG)) + restricted_roles -= list( + JOB_HEAD_OF_PERSONNEL, + JOB_CHIEF_ENGINEER, + JOB_CHIEF_MEDICAL_OFFICER, + JOB_RESEARCH_DIRECTOR, + JOB_QUARTERMASTER, + ) var/list/candidates = SSgamemode.get_candidates(antag_flag, pick_roundstart_players = !round_started, restricted_roles = restricted_roles, restricted_species = restricted_species) return candidates From 5c7d714c9092580374fdbd1aaea30a4aac7cded8 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Tue, 11 Aug 2026 10:12:13 +0200 Subject: [PATCH 137/139] Automatic changelog for PR #5927 [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5927.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5927.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5927.yml b/html/changelogs/AutoChangeLog-bubber-pr-5927.yml new file mode 100644 index 00000000000..12e4d3f0a16 --- /dev/null +++ b/html/changelogs/AutoChangeLog-bubber-pr-5927.yml @@ -0,0 +1,4 @@ +author: "Odairu" +delete-after: True +changes: + - rscadd: "a station trait that allows heads of staff to be antags" \ No newline at end of file From c12c670e4262e699972b40a1e4425f3fbeedc5e3 Mon Sep 17 00:00:00 2001 From: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com> Date: Tue, 11 Aug 2026 08:19:34 -0600 Subject: [PATCH 138/139] =?UTF-8?q?Tells=20contributors=20they=E2=80=99re?= =?UTF-8?q?=20not=20allowed=20to=20AI=20generate=20PR=20bodies=20or=20revi?= =?UTF-8?q?ews.=20(#6091)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit AI generation to complete PR bodies, PR comments, or PR reviews is forbidden. Don't have an AI write your pull requests. --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 76620835e31..34e5d1c7512 100644 --- a/README.md +++ b/README.md @@ -47,8 +47,9 @@ As of our recent split from Skyrat, a lot of codedocs/modularization guides need **3. Usage of Code Generation Tools** - Usage of autocompletes, auto documentation generation and other tools are allowed -- It is fully expected of a person using any of these tools to ensure the output and quality of said tools -- Any code written by tooling is expected to be heavily tested and proven to work +- It is fully expected of a person using any of these tools to ensure the output and quality of said tools. +- Any code written by tooling is expected to be heavily tested and proven to work. +- AI generation to complete PR bodies, PR comments, or PR reviews is forbidden. Don't have an AI write your pull requests. **4. The Licensing is Non-negotiable** From 06a2ecc55157acde25225ede4041e19b1b505a51 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Wed, 12 Aug 2026 01:56:20 +0000 Subject: [PATCH 139/139] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-bubber-pr-5927.yml | 4 ---- html/changelogs/AutoChangeLog-bubber-pr-6014.yml | 4 ---- html/changelogs/bubber_archive/2026-08.yml | 5 +++++ 3 files changed, 5 insertions(+), 8 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-5927.yml delete mode 100644 html/changelogs/AutoChangeLog-bubber-pr-6014.yml diff --git a/html/changelogs/AutoChangeLog-bubber-pr-5927.yml b/html/changelogs/AutoChangeLog-bubber-pr-5927.yml deleted file mode 100644 index 12e4d3f0a16..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-5927.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Odairu" -delete-after: True -changes: - - rscadd: "a station trait that allows heads of staff to be antags" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-bubber-pr-6014.yml b/html/changelogs/AutoChangeLog-bubber-pr-6014.yml deleted file mode 100644 index f9c2e43c180..00000000000 --- a/html/changelogs/AutoChangeLog-bubber-pr-6014.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CentralSmith" -delete-after: True -changes: - - bugfix: "Mr. Fluff now recognises his owner and responds to pet commands." \ No newline at end of file diff --git a/html/changelogs/bubber_archive/2026-08.yml b/html/changelogs/bubber_archive/2026-08.yml index 946caa17964..8c308cc03a5 100644 --- a/html/changelogs/bubber_archive/2026-08.yml +++ b/html/changelogs/bubber_archive/2026-08.yml @@ -120,3 +120,8 @@ - balance: Sec officers no longer get forced into a department with another officer when an empty department is available, making the dept preference system make sense. +2026-08-12: + CentralSmith: + - bugfix: Mr. Fluff now recognises his owner and responds to pet commands. + Odairu: + - rscadd: a station trait that allows heads of staff to be antags

jT1**>eB)?{Q4c%)ItGRzhUvQheL; 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 literal 79147 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�NErH)QWDc#oGX^92 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