From c14c608dd148f42bb4a0f8ef5fb5b01da0072cab Mon Sep 17 00:00:00 2001 From: Constellado <64122807+Constellado@users.noreply.github.com> Date: Wed, 3 Jun 2026 21:05:12 +1200 Subject: [PATCH 01/23] Moves synth heads to the new body part system and adds some more. --- code/__DEFINES/DNA.dm | 1 - .../subsystem/sprite_accessories.dm | 2 - code/modules/mob/living/carbon/human/dummy.dm | 1 - maplestation.dme | 2 - .../objects/items/cybernetics_paintkit.dm | 5 ++ .../client/preferences/species/synth.dm | 37 -------- .../loadouts/limb_items/limb_reskin_heads.dm | 25 ++++++ .../mob/dead/new_player/sprite_accessories.dm | 12 --- .../carbon/human/species_types/synth/synth.dm | 82 ------------------ .../surgery/bodyparts/cyber_reskins.dm | 28 ++++++ .../icons/mob/augmentation/cloak.dmi | Bin 0 -> 423 bytes .../icons/mob/augmentation/drone.dmi | Bin 0 -> 371 bytes .../icons/mob/augmentation/nemo.dmi | Bin 0 -> 2250 bytes .../icons/mob/augmentation/s-tech.dmi | Bin 0 -> 460 bytes .../icons/mob/augmentation/skull.dmi | Bin 0 -> 877 bytes .../mob/augmentation/vintage_cybersun.dmi | Bin 0 -> 431 bytes .../features/_modular_species_features.tsx | 5 -- 17 files changed, 58 insertions(+), 142 deletions(-) create mode 100644 maplestation_modules/icons/mob/augmentation/cloak.dmi create mode 100644 maplestation_modules/icons/mob/augmentation/drone.dmi create mode 100644 maplestation_modules/icons/mob/augmentation/nemo.dmi create mode 100644 maplestation_modules/icons/mob/augmentation/s-tech.dmi create mode 100644 maplestation_modules/icons/mob/augmentation/skull.dmi create mode 100644 maplestation_modules/icons/mob/augmentation/vintage_cybersun.dmi diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index dea4bc8f6671..67dc42d5010d 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -109,7 +109,6 @@ #define ORGAN_SLOT_EXTERNAL_ANTENNAE "antennae" #define ORGAN_SLOT_EXTERNAL_POD_HAIR "pod_hair" #define ORGAN_SLOT_EXTERNAL_HEAD_TENTACLES "head_tentacles" // NON-MODULE CHANGE -#define ORGAN_SLOT_EXTERNAL_SYNTH_HEAD_COVER "synth_head_cover" //NON-MODULE CHANGE /// Xenomorph organ slots #define ORGAN_SLOT_XENO_ACIDGLAND "acid_gland" diff --git a/code/controllers/subsystem/sprite_accessories.dm b/code/controllers/subsystem/sprite_accessories.dm index 971099f0114e..d240f48e49da 100644 --- a/code/controllers/subsystem/sprite_accessories.dm +++ b/code/controllers/subsystem/sprite_accessories.dm @@ -62,7 +62,6 @@ SUBSYSTEM_DEF(accessories) // just 'accessories' for brevity var/list/arm_wingsopen_list var/list/tails_list_avian var/list/avian_ears_list - var/list/synth_head_cover_list var/list/tails_list_rat var/list/rat_ears_list var/list/bat_ears_list @@ -133,7 +132,6 @@ SUBSYSTEM_DEF(accessories) // just 'accessories' for brevity arm_wingsopen_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/arm_wingsopen)[DEFAULT_SPRITE_LIST] tails_list_avian = init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/avian/)[DEFAULT_SPRITE_LIST] avian_ears_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/plumage)[DEFAULT_SPRITE_LIST] - synth_head_cover_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/synth_head_cover)[DEFAULT_SPRITE_LIST] tails_list_rat = init_sprite_accessory_subtypes(/datum/sprite_accessory/tail_rat, add_blank = TRUE)[DEFAULT_SPRITE_LIST] rat_ears_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/ears_rat, add_blank = TRUE)[DEFAULT_SPRITE_LIST] bat_ears_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/ears_bat, add_blank = TRUE)[DEFAULT_SPRITE_LIST] diff --git a/code/modules/mob/living/carbon/human/dummy.dm b/code/modules/mob/living/carbon/human/dummy.dm index f98990c951f2..384b13be1f88 100644 --- a/code/modules/mob/living/carbon/human/dummy.dm +++ b/code/modules/mob/living/carbon/human/dummy.dm @@ -122,7 +122,6 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy) target.dna.features["arm_wings"] = get_consistent_feature_entry(SSaccessories.arm_wings_list) // NON-MODULE CHANGE target.dna.features["tail_avian"] = get_consistent_feature_entry(SSaccessories.tails_list_avian) // NON-MODULE CHANGE target.dna.features["ears_avian"] = get_consistent_feature_entry(SSaccessories.avian_ears_list) // NON-MODULE CHANGE - target.dna.features["synth_head_cover"] = get_consistent_feature_entry(SSaccessories.synth_head_cover_list) // NON-MODULE CHANGE target.dna.features["feathers"] = "#FF3B76" //NON-MODULE CHANGE target.dna.features["animid_type"] = /datum/animid_type/cat::id //NON-MODULE CHANGE target.dna.features["bat_ears"] = get_consistent_feature_entry(SSaccessories.bat_ears_list) //NON-MODULE CHANGE diff --git a/maplestation.dme b/maplestation.dme index 73671d662061..3d9313e5143d 100644 --- a/maplestation.dme +++ b/maplestation.dme @@ -6788,7 +6788,6 @@ #include "maplestation_modules\code\modules\vending\wardrobes.dm" #include "maplestation_modules\code\modules\wiremod\component_printer.dm" #include "maplestation_modules\code\modules\wiremod\shells.dm" -#ifdef MAPLESTATION_STORY_CONTENT #include "maplestation_modules\story_content\albert_equipment\code\albertclothing.dm" #include "maplestation_modules\story_content\albert_equipment\code\albertitem.dm" #include "maplestation_modules\story_content\alraune_miscitems\code\alrmiscitem.dm" @@ -6827,5 +6826,4 @@ #include "maplestation_modules\story_content\volkan_equipment\code\volkanpets_ai.dm" #include "maplestation_modules\story_content\volkan_equipment\datums\loadout_datum.dm" #include "maplestation_modules\story_content\wollys_items\code\wollysitems.dm" -#endif // MAPLESTATION_STORY_CONTENT // END_INCLUDE diff --git a/maplestation_modules/code/game/objects/items/cybernetics_paintkit.dm b/maplestation_modules/code/game/objects/items/cybernetics_paintkit.dm index 3560c1cf5c8d..424cd54e80a3 100644 --- a/maplestation_modules/code/game/objects/items/cybernetics_paintkit.dm +++ b/maplestation_modules/code/game/objects/items/cybernetics_paintkit.dm @@ -20,6 +20,11 @@ "zhenkov" = 'maplestation_modules/icons/mob/augmentation/zhenkovipc.dmi', "zhenkov dark" = 'maplestation_modules/icons/mob/augmentation/zhenkovipc_dark.dmi', "ZHP" = 'maplestation_modules/icons/mob/augmentation/zhpipc.dmi', + "Vintage Cybersun" = 'maplestation_modules/icons/mob/augmentation/vintage_cybersun.dmi', + "S-Tech" = 'maplestation_modules/icons/mob/augmentation/s-tech.dmi', + "Skull" = 'maplestation_modules/icons/mob/augmentation/skull.dmi', + "Drone" = 'maplestation_modules/icons/mob/augmentation/drone.dmi', + "Nemo" = 'maplestation_modules/icons/mob/augmentation/nemo.dmi' ) var/static/list/emissive_augments = list( diff --git a/maplestation_modules/code/modules/client/preferences/species/synth.dm b/maplestation_modules/code/modules/client/preferences/species/synth.dm index ffc12238495b..9cad654e8b07 100644 --- a/maplestation_modules/code/modules/client/preferences/species/synth.dm +++ b/maplestation_modules/code/modules/client/preferences/species/synth.dm @@ -70,43 +70,6 @@ /datum/preference/choiced/synth_blood/is_accessible(datum/preferences/preferences) return ..() && ispath(preferences.read_preference(/datum/preference/choiced/species), /datum/species/android/synth) -//synth head covers (aka head design options) -/datum/preference/choiced/synth_head_cover - main_feature_name = "Head Cover" - savefile_key = "feature_synth_head_cover" - - savefile_identifier = PREFERENCE_CHARACTER - category = PREFERENCE_CATEGORY_FEATURES - can_randomize = TRUE - relevant_external_organ = /obj/item/organ/synth_head_cover - should_generate_icons = TRUE - -/datum/preference/choiced/synth_head_cover/init_possible_values() - return assoc_to_keys(SSaccessories.synth_head_cover_list) - -/datum/preference/choiced/synth_head_cover/icon_for(value) - var/datum/sprite_accessory/sprite_accessory = SSaccessories.synth_head_cover_list[value] - var/datum/universal_icon/head = uni_icon('maplestation_modules/icons/mob/synth_heads.dmi', "synth_head", SOUTH) - - var/datum/universal_icon/final_icon = head.copy() - - if (!isnull(sprite_accessory)) - for(var/side in list("ADJ", "FRONT")) - var/datum/universal_icon/accessory_icon = uni_icon('maplestation_modules/icons/mob/synth_heads.dmi', "m_synth_head_cover_[sprite_accessory.icon_state]_ADJ", dir = SOUTH) - final_icon.blend_icon(accessory_icon, ICON_OVERLAY) - - final_icon.crop(11, 20, 23, 32) - final_icon.scale(32, 32) - final_icon.blend_color(COLOR_GRAY, ICON_MULTIPLY) - - return final_icon - -/datum/preference/choiced/synth_head_cover/apply_to_human(mob/living/carbon/human/target, value) - target.dna.features["synth_head_cover"] = value - -/datum/preference/choiced/synth_head_cover/create_default_value() - return /datum/sprite_accessory/synth_head_cover::name - /datum/preference/choiced/android_species savefile_key = "feature_android_species" savefile_identifier = PREFERENCE_CHARACTER diff --git a/maplestation_modules/code/modules/loadouts/limb_items/limb_reskin_heads.dm b/maplestation_modules/code/modules/loadouts/limb_items/limb_reskin_heads.dm index 6cc8ecfda130..ec7851cb6dfd 100644 --- a/maplestation_modules/code/modules/loadouts/limb_items/limb_reskin_heads.dm +++ b/maplestation_modules/code/modules/loadouts/limb_items/limb_reskin_heads.dm @@ -57,3 +57,28 @@ /datum/limb_option_datum/bodypart/cybernetic_head/zhp name = "ZHP Cybernetic Head" limb_path = /obj/item/bodypart/head/robot/zhp + +// // -- Synth&Android DLC -- +/datum/limb_option_datum/bodypart/cybernetic_head/helm + name = "Vintage 2415 Cybersun Head" + limb_path = /obj/item/bodypart/head/robot/helm + +/datum/limb_option_datum/bodypart/cybernetic_head/nemo + name = "Nemo Screen Head" + limb_path = /obj/item/bodypart/head/robot/nemo + +/datum/limb_option_datum/bodypart/cybernetic_head/cloak + name = "Frontech Model X Head" + limb_path = /obj/item/bodypart/head/robot/cloak + +/datum/limb_option_datum/bodypart/cybernetic_head/gumhead + name = "S-Tech GUM Model hHead" + limb_path = /obj/item/bodypart/head/robot/gumhead + +/datum/limb_option_datum/bodypart/cybernetic_head/skull + name = "Robotic Skull" + limb_path = /obj/item/bodypart/head/robot/skull + +/datum/limb_option_datum/bodypart/cybernetic_head/drone + name = "Drone Head" + limb_path = /obj/item/bodypart/head/robot/drone diff --git a/maplestation_modules/code/modules/mob/dead/new_player/sprite_accessories.dm b/maplestation_modules/code/modules/mob/dead/new_player/sprite_accessories.dm index 8cfaaba1d6b6..404c45c7f8a4 100644 --- a/maplestation_modules/code/modules/mob/dead/new_player/sprite_accessories.dm +++ b/maplestation_modules/code/modules/mob/dead/new_player/sprite_accessories.dm @@ -526,18 +526,6 @@ icon_state = "divinity" icon = 'maplestation_modules/icons/mob/frills.dmi' -// -- Synth head coverings -- -/datum/sprite_accessory/synth_head_cover - icon = 'maplestation_modules/icons/mob/synth_heads.dmi' - -/datum/sprite_accessory/synth_head_cover/helm - name = "Helm" - icon_state = "helm" - -/datum/sprite_accessory/synth_head_cover/tv_blank - name = "Tv_blank" - icon_state = "tv_blank" - /// --- Socks --- diff --git a/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/synth.dm b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/synth.dm index bef6339bdb0f..831a5eba3036 100644 --- a/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/synth.dm +++ b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/synth.dm @@ -30,7 +30,6 @@ digitigrade_legs = null mutanttongue = /obj/item/organ/tongue/robot/synth - mutant_organs = list(/obj/item/organ/synth_head_cover = "Helm") allow_fleshy_bits = TRUE /// Reference to the species we're disguised as. @@ -412,85 +411,4 @@ /obj/item/organ/eyes/robotic/synth name = "synth eyes" -// Organ for synth head covers. - -/obj/item/organ/synth_head_cover - name = "Head Cover" - desc = "It is a cover that goes on a synth head." - - zone = BODY_ZONE_HEAD - slot = ORGAN_SLOT_EXTERNAL_SYNTH_HEAD_COVER - - preference = "feature_synth_head_cover" - - organ_flags = ORGAN_ROBOTIC - - bodypart_overlay = /datum/bodypart_overlay/mutant/synth_head_cover - organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL - - -/obj/item/organ/synth_head_cover/on_bodypart_insert(obj/item/bodypart/head/limb, movement_flags) - . = ..() - limb.head_flags &= ~HEAD_EYESPRITES - -/obj/item/organ/synth_head_cover/on_bodypart_remove(obj/item/bodypart/head/limb, movement_flags) - . = ..() - if(initial(limb.head_flags) & HEAD_EYESPRITES) - limb.head_flags |= HEAD_EYESPRITES - -//-- overlay -- -/datum/bodypart_overlay/mutant/synth_head_cover/get_global_feature_list() - return SSaccessories.synth_head_cover_list - -/datum/bodypart_overlay/mutant/synth_head_cover/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner) - if(bodypart_owner.owner?.obscured_slots & HIDEHAIR) - return FALSE - if(bodypart_owner.limb_id == BODYPART_ID_SYNTH) // disguised = no head cover - return TRUE - if(IS_ROBOTIC_LIMB(bodypart_owner)) // works on android limbs too - return TRUE - return FALSE - -/datum/bodypart_overlay/mutant/synth_head_cover - feature_key = "synth_head_cover" - layers = ALL_EXTERNAL_OVERLAYS - -//-- accessories -- -//the path to the icon for the head covers -/datum/sprite_accessory/synth_head_cover - icon = 'maplestation_modules/icons/mob/synth_heads.dmi' - -//head covers -/datum/sprite_accessory/synth_head_cover/none // for those that don't want a cover. - name = "None" - icon_state = null - -//A kind of helmet looking thing with a big black screen/face cover thing. I dunno what else to call this. -/datum/sprite_accessory/synth_head_cover/helm - name = "Helm" - icon_state = "helm" - -//helm with white plastic on the sides. -/datum/sprite_accessory/synth_head_cover/helm_white - name = "White Helm" - icon_state = "helm_white" - -//just the IPC TV that is already in the code base -/datum/sprite_accessory/synth_head_cover/tv_blank - name = "Tv_blank" - icon_state = "tv_blank" - -//a cool design inspired from cloak pilots in titanfall 2, *sorta*. -/datum/sprite_accessory/synth_head_cover/cloakp - name = "Cloakp" - icon_state = "cloakp" - -//GUMTEETH's head -/datum/sprite_accessory/synth_head_cover/gumhead - name = "GUMHEAD" - icon_state = "gumhead" - -// add more here!! - - #undef BODYPART_ID_SYNTH diff --git a/maplestation_modules/code/modules/surgery/bodyparts/cyber_reskins.dm b/maplestation_modules/code/modules/surgery/bodyparts/cyber_reskins.dm index 58d243383a9d..7941e5e46a1c 100644 --- a/maplestation_modules/code/modules/surgery/bodyparts/cyber_reskins.dm +++ b/maplestation_modules/code/modules/surgery/bodyparts/cyber_reskins.dm @@ -461,3 +461,31 @@ icon = 'maplestation_modules/icons/mob/augmentation/monokai.dmi' icon_static = 'maplestation_modules/icons/mob/augmentation/monokai.dmi' is_emissive = TRUE + +// -- Previously synth head coverings -- + +/obj/item/bodypart/head/robot/helm + icon = 'maplestation_modules/icons/mob/augmentation/vintage_cybersun.dmi' + icon_static = 'maplestation_modules/icons/mob/augmentation/vintage_cybersun.dmi' + +/obj/item/bodypart/head/robot/nemo + icon = 'maplestation_modules/icons/mob/augmentation/nemo.dmi' + icon_static = 'maplestation_modules/icons/mob/augmentation/nemo.dmi' + +/obj/item/bodypart/head/robot/cloak + icon = 'maplestation_modules/icons/mob/augmentation/cloak.dmi' + icon_static = 'maplestation_modules/icons/mob/augmentation/cloak.dmi' + +/obj/item/bodypart/head/robot/gumhead + icon = 'maplestation_modules/icons/mob/augmentation/s-tech.dmi' + icon_static = 'maplestation_modules/icons/mob/augmentation/s-tech.dmi' + +/obj/item/bodypart/head/robot/skull + icon = 'maplestation_modules/icons/mob/augmentation/skull.dmi' + icon_static = 'maplestation_modules/icons/mob/augmentation/skull.dmi' + +/obj/item/bodypart/head/robot/drone + icon = 'maplestation_modules/icons/mob/augmentation/drone.dmi' + icon_static = 'maplestation_modules/icons/mob/augmentation/drone.dmi' + +// -- Previously synth head coverings -- diff --git a/maplestation_modules/icons/mob/augmentation/cloak.dmi b/maplestation_modules/icons/mob/augmentation/cloak.dmi new file mode 100644 index 0000000000000000000000000000000000000000..2286e3e4378afd5b44154985d359b3179104a9e1 GIT binary patch literal 423 zcmV;Y0a*TtP)ol&vf=N2LDr0000cBza~40004WQchCV=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+ z(=$pSoZ^zil2jm5sVF}wza%p`J|i_TMTv_uC9|j)q?d~`ttc@!6~s2=QdV&Fa{-$U z03vW4@n7wvga7~ly-7qtR7i>K)V~gbFc1dtrkKbm)Wj99h>qGOvifK64crAO51{F6 zn0Ra*?_*$cG4|Vj>9xHMS0TQYbcT)w>u1sjuu@>La!tmqQw5fL?+x?xQ?Q1D;^v5X zQdjkT>;&nYt44b$lf@PaWKL*8i@57Y9TM`N$&hleEXl&CMV4>}CFzyBStdApg*6xM zr?xoVE$Jio+>nQYoqM$0zH|z&Ai^Gq@Cs>7&VAArUlDHx|3TlqL`cYQ<_%@C9Nt%a R`6K`U002ovPDHLkV1l;ruiF3s literal 0 HcmV?d00001 diff --git a/maplestation_modules/icons/mob/augmentation/drone.dmi b/maplestation_modules/icons/mob/augmentation/drone.dmi new file mode 100644 index 0000000000000000000000000000000000000000..0ad912e5fb7131980ed7c4d4540c55e873c7a3a3 GIT binary patch literal 371 zcmV-(0gV2MP)YQuQsw{v00DGTPE!Ct=GbNc0041%R9JLGWpiV4X>fFDZ*Bkp zc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LY zR3KBSC_gE`Br`caBQ-HaiHkEOv#1!Pmy0v4C^0t`#5UwoR&e!m0hU+tuX z0001zNkl_TOb0+D15`~GVE<(>H-A?O;(~&Oq1o9Z*sa2YjKFot4P@bng zKwsSXd#4AU|GO{X{HYZmSo@a&EePu(8wOGp+b~)v6$?ZgW4D^Sn+L)F@B$^o4LqVB R2s;1(002ovPDHLkV1k$~k0Jm7 literal 0 HcmV?d00001 diff --git a/maplestation_modules/icons/mob/augmentation/nemo.dmi b/maplestation_modules/icons/mob/augmentation/nemo.dmi new file mode 100644 index 0000000000000000000000000000000000000000..f51b021cb5b043488d7569e40ed10d4192f08dfd GIT binary patch literal 2250 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 ZcB+ZUFTIrh6PSM(JYD@<);T3K0Ra8SgoOYA literal 0 HcmV?d00001 diff --git a/maplestation_modules/icons/mob/augmentation/vintage_cybersun.dmi b/maplestation_modules/icons/mob/augmentation/vintage_cybersun.dmi new file mode 100644 index 0000000000000000000000000000000000000000..99d45c74ca35faf6b52848a8c9c365975f491154 GIT binary patch literal 431 zcmV;g0Z{&lP)D48n2b;g2u5WEGzE^zipX3cBN0@2mZd_d3KXLpP!w=_1u7xg!Kfs< z1T}MVPH`1PvXx0N#1l<{(v*eBCP;ZIp=Iw$nqJ5XmQ2z_^F Date: Wed, 3 Jun 2026 21:13:48 +1200 Subject: [PATCH 02/23] Fix bug with nemo head. --- .../game/objects/items/cybernetics_paintkit.dm | 2 +- .../modules/surgery/bodyparts/cyber_reskins.dm | 6 ++---- .../icons/mob/augmentation/flat.dmi | Bin 0 -> 373 bytes .../icons/mob/augmentation/nemo.dmi | Bin 2250 -> 0 bytes 4 files changed, 3 insertions(+), 5 deletions(-) create mode 100644 maplestation_modules/icons/mob/augmentation/flat.dmi delete mode 100644 maplestation_modules/icons/mob/augmentation/nemo.dmi diff --git a/maplestation_modules/code/game/objects/items/cybernetics_paintkit.dm b/maplestation_modules/code/game/objects/items/cybernetics_paintkit.dm index 424cd54e80a3..18e4312dce5b 100644 --- a/maplestation_modules/code/game/objects/items/cybernetics_paintkit.dm +++ b/maplestation_modules/code/game/objects/items/cybernetics_paintkit.dm @@ -24,7 +24,7 @@ "S-Tech" = 'maplestation_modules/icons/mob/augmentation/s-tech.dmi', "Skull" = 'maplestation_modules/icons/mob/augmentation/skull.dmi', "Drone" = 'maplestation_modules/icons/mob/augmentation/drone.dmi', - "Nemo" = 'maplestation_modules/icons/mob/augmentation/nemo.dmi' + "Nemo" = 'maplestation_modules/icons/mob/augmentation/flat.dmi' ) var/static/list/emissive_augments = list( diff --git a/maplestation_modules/code/modules/surgery/bodyparts/cyber_reskins.dm b/maplestation_modules/code/modules/surgery/bodyparts/cyber_reskins.dm index 7941e5e46a1c..99dc4f0aa762 100644 --- a/maplestation_modules/code/modules/surgery/bodyparts/cyber_reskins.dm +++ b/maplestation_modules/code/modules/surgery/bodyparts/cyber_reskins.dm @@ -469,8 +469,8 @@ icon_static = 'maplestation_modules/icons/mob/augmentation/vintage_cybersun.dmi' /obj/item/bodypart/head/robot/nemo - icon = 'maplestation_modules/icons/mob/augmentation/nemo.dmi' - icon_static = 'maplestation_modules/icons/mob/augmentation/nemo.dmi' + icon = 'maplestation_modules/icons/mob/augmentation/flat.dmi' + icon_static = 'maplestation_modules/icons/mob/augmentation/flat.dmi' /obj/item/bodypart/head/robot/cloak icon = 'maplestation_modules/icons/mob/augmentation/cloak.dmi' @@ -487,5 +487,3 @@ /obj/item/bodypart/head/robot/drone icon = 'maplestation_modules/icons/mob/augmentation/drone.dmi' icon_static = 'maplestation_modules/icons/mob/augmentation/drone.dmi' - -// -- Previously synth head coverings -- diff --git a/maplestation_modules/icons/mob/augmentation/flat.dmi b/maplestation_modules/icons/mob/augmentation/flat.dmi new file mode 100644 index 0000000000000000000000000000000000000000..c5270ce0118ff6de98f432be1c537a785f6980e6 GIT binary patch literal 373 zcmV-*0gC>KP)W%8DFCOrRZ~+sIy!1k$AT6T*71qISg zxAJKB8jE~}s@7{+ni$^*egBX00000NkvXXu0mjf8IzCB literal 0 HcmV?d00001 diff --git a/maplestation_modules/icons/mob/augmentation/nemo.dmi b/maplestation_modules/icons/mob/augmentation/nemo.dmi deleted file mode 100644 index f51b021cb5b043488d7569e40ed10d4192f08dfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2250 zcmY+F2T)V_7RJMhQWQmSSLrNB8@fvo5HNs9=uJdG2#WM3odiP!d69<@U5Y^1C?b!Q zNRbeb5<|cxvI>YX(g_&KQj&lWAR!4GnDMD+=Fa~&-#y82^H{Rh_`Q&-HpWS2@&y0 z5pl5qKw3p{k)hjbgCjW$o0q*)Ek47G4^E0rcI7`W24%RMCe_Qg{=AD;j6O0Q+p;mY z$TsVH1vSH?^(WWp69a!5A5I;dBv0NN*D>?+Ly-_Ipi)GLwTrPqz}u_d!7I`>6F8T5 zesLP(^R@1)K1#5vkJ-OyVB~z4q#K9t#NK|UAwSU#GdcZyQ~#~+>xWE4W1+B$*g$m* z_<-hu%p1_*1{}Gu$$jGmM(E>8XJME6iY+NZen^sHrbzs(imlAb_1fZ1(;Vm1)V4P` zb$Q{>58C`aB_dG>5=wD7;VrwcxUC!5iTZl%Z!0?*#z6ka zpvFsUh6z#2a*^s0@sO(q$#Ph|*C1R==clb8?O~qKCpc>a^=8&F((CXo{y%jaY0SEd zn$=X)0kEFM7s*q|_d~D@w5vw-Oor89Y=Dgfw+ib^ohzpft?qZ|mv^L_-L4G~j z)^{h3+AE~v#nKmpvHNQnTNCcg{6|a$t|c^N*Jfr;8Ojr=hEQRGG3-_9-J9BChXn8A z_qBRGYp`gW;Gv>e_o8ah7{Sk9%N{J*RtgD^l8o}R*6wxA%?z-z#w?V&bwg={0j8P5 z1`R>xT$wQz1CG|{tcxm=GSd0}7vuR3mwE%w)a`o2sc92PE7mi~=(3<&<0Em%hGc#L zs2x*2onx9s{HzDbDu%+>j;8ie=h@LJJ%3FsK5ZaUUy3t*;u)33H<(>L&{<=6Ie0gw zwTf{{EU+x#KGyE};@bPbFLy{ZU{+oZf*CZGTPDj@{e3!N@ofLRhpdA^OTQ%rZQn7m z(W(ksjSNUFRFdkHmFhfGa<{k*HM?b>by?Nvb-voQ3p&T6qWEXh?itD|y+aN`t;xR@ z`0RX~S!c)m5pvn{F^prSh$Lz5QjX+jH!kU4bGA%D1#cCfr=M0p{{AZ1UHTkk;XmQr z{B(WVv4Jv*wr*li(KOJd5xMpYYY9D+KlB&TaaCF2sXsfww2uuec|*jA6_5`+)_Zc@ zF|Y{O3^lR;HUr15)F5neeu8WokFV{FM zSIjP`i@7_YxErTyti;-hNW=WfgAUoGA|AddbcghidY}0;Aj%d;(M|Hq{gc?eTPE z;e(zHU1c?yqvT8QDSoH3!B}11eKm#9w!FZgbGRVZ7hg=$CbE$7Of%zJ1=VS+XLxte z;++^HgmJs0qC&Py^ABE-#!~hlX?znDmmGEXKj2}?bVz;q{r=Jy=?JEV7 zv&rxcdsb0-j4mmTH_|(sr3UI9H&jAUMMrIyPk|7R%E5Kv&{(Uh! z$Ge6xLY^Zg?*d~tVB$6&8SCuSWqc|@W9HZADZD01JExQVry%@)MYS_GK z^zw^oCd`)mEX|;ll7rZ|eH(wsA0)5^S}Rdd;LMw4=Ovw@y4fQ^aY(X zUpK2qxiu#L^hPG+6-qS>&M8}MzUBB}IMo2>=M+HSKAhAmWu$8}?={=m76)@xGKY<| z=WKufiIBV00c&Ax5B#t&*|0u=^M(2#q(=InWim`<8IHSEZeUA=U%J`bl zciu6apr5thZ^<86P8}`?!tc$ZEQk3c|BtAB2RK+QUDuT6fTY$V(p+EaB{16*CuD z9Z}y>3!;8~fc|}iWqi#lIN?6UpN6}Ae690js#(}l4*{6v2*Arv0DB59g{SkaAMC^z XqAQ>~k1W3H-BUpqT Date: Wed, 3 Jun 2026 22:08:44 +1200 Subject: [PATCH 03/23] adds the start of android battery core organ! Needs a sprite. --- maplestation.dme | 1 + .../loadouts/limb_items/limb_organs.dm | 12 +++++++++ .../loadouts/limb_items/limb_reskin_heads.dm | 2 +- .../species_types/synth/android_battery.dm | 27 +++++++++++++++++++ 4 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm diff --git a/maplestation.dme b/maplestation.dme index 3d9313e5143d..01c51b42ab6c 100644 --- a/maplestation.dme +++ b/maplestation.dme @@ -6704,6 +6704,7 @@ #include "maplestation_modules\code\modules\mob\living\carbon\human\species_types\animid\animid_prefs.dm" #include "maplestation_modules\code\modules\mob\living\carbon\human\species_types\animid\animid_rat.dm" #include "maplestation_modules\code\modules\mob\living\carbon\human\species_types\synth\android.dm" +#include "maplestation_modules\code\modules\mob\living\carbon\human\species_types\synth\android_battery.dm" #include "maplestation_modules\code\modules\mob\living\carbon\human\species_types\synth\android_brain.dm" #include "maplestation_modules\code\modules\mob\living\carbon\human\species_types\synth\android_ears.dm" #include "maplestation_modules\code\modules\mob\living\carbon\human\species_types\synth\android_effects.dm" diff --git a/maplestation_modules/code/modules/loadouts/limb_items/limb_organs.dm b/maplestation_modules/code/modules/loadouts/limb_items/limb_organs.dm index 55c9cda35d40..ff73779b6c09 100644 --- a/maplestation_modules/code/modules/loadouts/limb_items/limb_organs.dm +++ b/maplestation_modules/code/modules/loadouts/limb_items/limb_organs.dm @@ -52,3 +52,15 @@ ui_zone = BODY_ZONE_L_ARM pref_list_slot = ORGAN_SLOT_LEFT_ARM_AUG // Yeah you can have one in both arms if you want, don't really care + + +//battery core stuff +/datum/limb_option_datum/organ/synthetic + tooltip = "Can only be selected by Androids or Synthetics." + +/datum/limb_option_datum/organ/synthetic/can_be_selected(datum/preferences/prefs) + return ispath(prefs.read_preference(/datum/preference/choiced/species), /datum/species/android) + +/datum/limb_option_datum/organ/synthetic/battery_core + name = "Battery Core" + limb_path = /obj/item/organ/stomach/ethereal/android/battery_core diff --git a/maplestation_modules/code/modules/loadouts/limb_items/limb_reskin_heads.dm b/maplestation_modules/code/modules/loadouts/limb_items/limb_reskin_heads.dm index ec7851cb6dfd..1ff021b160bd 100644 --- a/maplestation_modules/code/modules/loadouts/limb_items/limb_reskin_heads.dm +++ b/maplestation_modules/code/modules/loadouts/limb_items/limb_reskin_heads.dm @@ -72,7 +72,7 @@ limb_path = /obj/item/bodypart/head/robot/cloak /datum/limb_option_datum/bodypart/cybernetic_head/gumhead - name = "S-Tech GUM Model hHead" + name = "S-Tech GUM Model Head" limb_path = /obj/item/bodypart/head/robot/gumhead /datum/limb_option_datum/bodypart/cybernetic_head/skull diff --git a/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm new file mode 100644 index 000000000000..0f8e323ace45 --- /dev/null +++ b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm @@ -0,0 +1,27 @@ +//Adds a new android stomach type which has more charge than the android stomach, but makes it impossible to eat. +/obj/item/organ/stomach/ethereal/android/battery_core + name = "Battery Core" + desc = "This is a large battery that stores charge for an android. Since it is missing the standard bioreactor, it holds more energy, however the user cannot eat to gain power." + icon_state = /obj/item/organ/stomach/cybernetic/tier2::icon_state //TEMPORARY SPRITE + + passive_drain_multiplier = 0.3 //drains slower than default + stomach_blood_transfer_rate = 0 //chems don't work too... + + +//stop eating + +#define NUTRITION_MULTIPLIER 0 //does this even work? +#define BOOZE_MULTIPLIER 0 +/obj/item/organ/stomach/ethereal/android/battery_core/effective_charge() + . = ..() + +/obj/item/organ/stomach/ethereal/android/battery_core/handle_chemical(mob/living/carbon/source, datum/reagent/chem, seconds_per_tick, times_fired) + //No booze, no drink, no food. It is not a stomach, it is a battery! + return NONE + +#undef NUTRITION_MULTIPLIER +#undef BOOZE_MULTIPLIER + + +/datum/component/edible/proc/TryToEat(mob/living/eater, mob/living/feeder) + . = ..() From eb30ece75675176e8379c84154010c539fe2dcff Mon Sep 17 00:00:00 2001 From: Constellado <64122807+Constellado@users.noreply.github.com> Date: Wed, 3 Jun 2026 22:13:16 +1200 Subject: [PATCH 04/23] Woops, forgot to remove a broken thing I did before committing. Should be fixed. --- .../carbon/human/species_types/synth/android_battery.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm index 0f8e323ace45..6db401f2629d 100644 --- a/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm +++ b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm @@ -21,7 +21,3 @@ #undef NUTRITION_MULTIPLIER #undef BOOZE_MULTIPLIER - - -/datum/component/edible/proc/TryToEat(mob/living/eater, mob/living/feeder) - . = ..() From 16bfb5f2ed3511b7924355fe8d3c465cd723a16f Mon Sep 17 00:00:00 2001 From: Constellado <64122807+Constellado@users.noreply.github.com> Date: Wed, 3 Jun 2026 22:35:32 +1200 Subject: [PATCH 05/23] makes overcharging with the new organ less often So I don't have to worry about it as much in game. --- .../species_types/synth/android_battery.dm | 53 ++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm index 6db401f2629d..550af321d360 100644 --- a/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm +++ b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm @@ -4,7 +4,7 @@ desc = "This is a large battery that stores charge for an android. Since it is missing the standard bioreactor, it holds more energy, however the user cannot eat to gain power." icon_state = /obj/item/organ/stomach/cybernetic/tier2::icon_state //TEMPORARY SPRITE - passive_drain_multiplier = 0.3 //drains slower than default + passive_drain_multiplier = 0.3 //drains slower than default robots stomach_blood_transfer_rate = 0 //chems don't work too... @@ -21,3 +21,54 @@ #undef NUTRITION_MULTIPLIER #undef BOOZE_MULTIPLIER + + +/obj/item/organ/stomach/ethereal/android/battery_core/handle_charge(mob/living/carbon/carbon, seconds_per_tick, times_fired) + //tweaked version which lowers the chance of shocking to make it handle overcharged a bit better (I hate shocking people so bad.) Pretend it has some overcurrent protection or something. + var/has_flags = NONE + switch(cell.charge()) + if(-INFINITY to ETHEREAL_CHARGE_NONE) + carbon.add_mood_event(ALERT_ETHEREAL_CHARGE, /datum/mood_event/android_no_charge) + if(!death_timer) + carbon.add_max_consciousness_value(NO_CHARGE, CONSCIOUSNESS_MAX * 0.4) + carbon.add_consciousness_modifier(NO_CHARGE, -30) + death_timer = addtimer(CALLBACK(src, PROC_REF(turn_off), carbon), 30 SECONDS, TIMER_UNIQUE|TIMER_STOPPABLE|TIMER_DELETE_ME) + to_chat(carbon, span_userdanger("Power levels critical: Shutdown in 30 seconds without recharge!")) + has_flags |= HAS_CON_MOD | HAS_MOOD_EVENT | HAS_DEATH_TIMER + + if(ETHEREAL_CHARGE_NONE to ETHEREAL_CHARGE_LOWPOWER) + carbon.add_mood_event(ALERT_ETHEREAL_CHARGE, /datum/mood_event/android_decharged) + carbon.add_max_consciousness_value(NO_CHARGE, CONSCIOUSNESS_MAX * 0.6) + carbon.add_consciousness_modifier(NO_CHARGE, -20) + has_flags |= HAS_CON_MOD | HAS_MOOD_EVENT + + if(ETHEREAL_CHARGE_LOWPOWER to ETHEREAL_CHARGE_NORMAL) + carbon.add_mood_event(ALERT_ETHEREAL_CHARGE, /datum/mood_event/android_low_power) + has_flags |= HAS_MOOD_EVENT + + if(ETHEREAL_CHARGE_NORMAL to ETHEREAL_CHARGE_ALMOSTFULL) + EMPTY_BLOCK_GUARD + + if(ETHEREAL_CHARGE_ALMOSTFULL to ETHEREAL_CHARGE_FULL) + carbon.add_mood_event(ALERT_ETHEREAL_CHARGE, /datum/mood_event/android_charged) + has_flags |= HAS_MOOD_EVENT + + if(ETHEREAL_CHARGE_FULL to ETHEREAL_CHARGE_OVERLOAD) + carbon.add_mood_event(ALERT_ETHEREAL_CHARGE, /datum/mood_event/android_overcharged) + has_flags |= HAS_MOOD_EVENT + + if(ETHEREAL_CHARGE_OVERLOAD to ETHEREAL_CHARGE_DANGEROUS) + carbon.add_mood_event(ALERT_ETHEREAL_CHARGE, /datum/mood_event/android_supercharged) + has_flags |= HAS_MOOD_EVENT + if(SPT_PROB(0.5, seconds_per_tick)) // UPDATED FROM 5% to 0.5% each second for ethereals to explosively release excess energy if it reaches dangerous levels + discharge_process(carbon) + + carbon.hud_used?.hunger?.update_hunger_bar() + if(!(has_flags & HAS_MOOD_EVENT)) + carbon.clear_mood_event(ALERT_ETHEREAL_CHARGE) + if(!(has_flags & HAS_CON_MOD)) + carbon.remove_max_consciousness_value(NO_CHARGE) + carbon.remove_consciousness_modifier(NO_CHARGE) + if(!(has_flags & HAS_DEATH_TIMER) && death_timer) + deltimer(death_timer) + death_timer = null From 13ce7d99c6e59066e44196c3d2ed625f6d247fcc Mon Sep 17 00:00:00 2001 From: Constellado <64122807+Constellado@users.noreply.github.com> Date: Wed, 3 Jun 2026 22:37:52 +1200 Subject: [PATCH 06/23] Comment tweaks --- .../carbon/human/species_types/synth/android_battery.dm | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm index 550af321d360..38161ad5f813 100644 --- a/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm +++ b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm @@ -8,8 +8,7 @@ stomach_blood_transfer_rate = 0 //chems don't work too... -//stop eating - +//stop eating benefits #define NUTRITION_MULTIPLIER 0 //does this even work? #define BOOZE_MULTIPLIER 0 /obj/item/organ/stomach/ethereal/android/battery_core/effective_charge() @@ -22,9 +21,8 @@ #undef NUTRITION_MULTIPLIER #undef BOOZE_MULTIPLIER - +//Tweaked charge code which majes overcharged shocking less often (I hate shocking people so bad.) Pretend it has some overcurrent protection or something. /obj/item/organ/stomach/ethereal/android/battery_core/handle_charge(mob/living/carbon/carbon, seconds_per_tick, times_fired) - //tweaked version which lowers the chance of shocking to make it handle overcharged a bit better (I hate shocking people so bad.) Pretend it has some overcurrent protection or something. var/has_flags = NONE switch(cell.charge()) if(-INFINITY to ETHEREAL_CHARGE_NONE) From 9e18cf9dd9cb9dc1bc51131916371b10fe1c5825 Mon Sep 17 00:00:00 2001 From: Constellado <64122807+Constellado@users.noreply.github.com> Date: Wed, 3 Jun 2026 22:39:01 +1200 Subject: [PATCH 07/23] Adds required defines --- .../carbon/human/species_types/synth/android_battery.dm | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm index 38161ad5f813..b16449ad32f6 100644 --- a/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm +++ b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm @@ -21,6 +21,11 @@ #undef NUTRITION_MULTIPLIER #undef BOOZE_MULTIPLIER + +#define NO_CHARGE "Low Power" +#define HAS_CON_MOD (1 << 0) +#define HAS_MOOD_EVENT (1 << 1) +#define HAS_DEATH_TIMER (1 << 2) //Tweaked charge code which majes overcharged shocking less often (I hate shocking people so bad.) Pretend it has some overcurrent protection or something. /obj/item/organ/stomach/ethereal/android/battery_core/handle_charge(mob/living/carbon/carbon, seconds_per_tick, times_fired) var/has_flags = NONE @@ -70,3 +75,7 @@ if(!(has_flags & HAS_DEATH_TIMER) && death_timer) deltimer(death_timer) death_timer = null + +#undef EAT_TIME_FORCE_FEED +#undef EAT_TIME_VORACIOUS_MULT +#undef EAT_TIME_VORACIOUS_FULL_MULT From 7fd0ca722f73b4cc651be2f99e60fe31fd782aac Mon Sep 17 00:00:00 2001 From: Constellado <64122807+Constellado@users.noreply.github.com> Date: Wed, 3 Jun 2026 22:42:15 +1200 Subject: [PATCH 08/23] another comment tweak --- .../living/carbon/human/species_types/synth/android_battery.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm index b16449ad32f6..d2effbe722ab 100644 --- a/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm +++ b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm @@ -63,7 +63,7 @@ if(ETHEREAL_CHARGE_OVERLOAD to ETHEREAL_CHARGE_DANGEROUS) carbon.add_mood_event(ALERT_ETHEREAL_CHARGE, /datum/mood_event/android_supercharged) has_flags |= HAS_MOOD_EVENT - if(SPT_PROB(0.5, seconds_per_tick)) // UPDATED FROM 5% to 0.5% each second for ethereals to explosively release excess energy if it reaches dangerous levels + if(SPT_PROB(0.5, seconds_per_tick)) // UPDATED FROM 5% to 0.5% each second for the android to explosively release excess energy if it reaches dangerous levels discharge_process(carbon) carbon.hud_used?.hunger?.update_hunger_bar() From fbce704315563844cea0499dc87aa9ca976e3e48 Mon Sep 17 00:00:00 2001 From: Constellado <64122807+Constellado@users.noreply.github.com> Date: Wed, 3 Jun 2026 22:44:42 +1200 Subject: [PATCH 09/23] woops, wrong defines was undefined. Fixed. --- .../carbon/human/species_types/synth/android_battery.dm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm index d2effbe722ab..d36882f3785f 100644 --- a/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm +++ b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm @@ -26,6 +26,7 @@ #define HAS_CON_MOD (1 << 0) #define HAS_MOOD_EVENT (1 << 1) #define HAS_DEATH_TIMER (1 << 2) + //Tweaked charge code which majes overcharged shocking less often (I hate shocking people so bad.) Pretend it has some overcurrent protection or something. /obj/item/organ/stomach/ethereal/android/battery_core/handle_charge(mob/living/carbon/carbon, seconds_per_tick, times_fired) var/has_flags = NONE @@ -76,6 +77,7 @@ deltimer(death_timer) death_timer = null -#undef EAT_TIME_FORCE_FEED -#undef EAT_TIME_VORACIOUS_MULT -#undef EAT_TIME_VORACIOUS_FULL_MULT +#undef NO_CHARGE +#undef HAS_CON_MOD +#undef HAS_MOOD_EVENT +#undef HAS_DEATH_TIMER From 7e4f9b4f420274e485c29bf5f8c698b6e4a98d5c Mon Sep 17 00:00:00 2001 From: Constellado <64122807+Constellado@users.noreply.github.com> Date: Wed, 3 Jun 2026 22:46:15 +1200 Subject: [PATCH 10/23] comment typo fixed --- .../living/carbon/human/species_types/synth/android_battery.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm index d36882f3785f..2f57ece245e7 100644 --- a/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm +++ b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm @@ -27,7 +27,7 @@ #define HAS_MOOD_EVENT (1 << 1) #define HAS_DEATH_TIMER (1 << 2) -//Tweaked charge code which majes overcharged shocking less often (I hate shocking people so bad.) Pretend it has some overcurrent protection or something. +//Tweaked charge code which makes overcharged shocking less often (I hate shocking people so bad.) Pretend it has some overcurrent protection or something. /obj/item/organ/stomach/ethereal/android/battery_core/handle_charge(mob/living/carbon/carbon, seconds_per_tick, times_fired) var/has_flags = NONE switch(cell.charge()) From 6913855c60bb4af1d907c2122d13c5011331b1c1 Mon Sep 17 00:00:00 2001 From: Constellado <64122807+Constellado@users.noreply.github.com> Date: Wed, 3 Jun 2026 22:48:03 +1200 Subject: [PATCH 11/23] maplestation story content dme fix --- maplestation.dme | 2 ++ 1 file changed, 2 insertions(+) diff --git a/maplestation.dme b/maplestation.dme index 01c51b42ab6c..25c104c2c202 100644 --- a/maplestation.dme +++ b/maplestation.dme @@ -6789,6 +6789,7 @@ #include "maplestation_modules\code\modules\vending\wardrobes.dm" #include "maplestation_modules\code\modules\wiremod\component_printer.dm" #include "maplestation_modules\code\modules\wiremod\shells.dm" +#ifdef MAPLESTATION_STORY_CONTENT #include "maplestation_modules\story_content\albert_equipment\code\albertclothing.dm" #include "maplestation_modules\story_content\albert_equipment\code\albertitem.dm" #include "maplestation_modules\story_content\alraune_miscitems\code\alrmiscitem.dm" @@ -6827,4 +6828,5 @@ #include "maplestation_modules\story_content\volkan_equipment\code\volkanpets_ai.dm" #include "maplestation_modules\story_content\volkan_equipment\datums\loadout_datum.dm" #include "maplestation_modules\story_content\wollys_items\code\wollysitems.dm" +#endif // MAPLESTATION_STORY_CONTENT // END_INCLUDE From 251d76b590b24e3b2f71096f32a74ee295d9a983 Mon Sep 17 00:00:00 2001 From: Constellado <64122807+Constellado@users.noreply.github.com> Date: Mon, 8 Jun 2026 11:11:39 +1200 Subject: [PATCH 12/23] Fix! --- .../code/modules/surgery/bodyparts/cyber_reskins.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/maplestation_modules/code/modules/surgery/bodyparts/cyber_reskins.dm b/maplestation_modules/code/modules/surgery/bodyparts/cyber_reskins.dm index 99dc4f0aa762..2ccc2085db22 100644 --- a/maplestation_modules/code/modules/surgery/bodyparts/cyber_reskins.dm +++ b/maplestation_modules/code/modules/surgery/bodyparts/cyber_reskins.dm @@ -465,25 +465,31 @@ // -- Previously synth head coverings -- /obj/item/bodypart/head/robot/helm + icon_state = "robotic_head" icon = 'maplestation_modules/icons/mob/augmentation/vintage_cybersun.dmi' icon_static = 'maplestation_modules/icons/mob/augmentation/vintage_cybersun.dmi' /obj/item/bodypart/head/robot/nemo + icon_state = "robotic_head" icon = 'maplestation_modules/icons/mob/augmentation/flat.dmi' icon_static = 'maplestation_modules/icons/mob/augmentation/flat.dmi' /obj/item/bodypart/head/robot/cloak + icon_state = "robotic_head" icon = 'maplestation_modules/icons/mob/augmentation/cloak.dmi' icon_static = 'maplestation_modules/icons/mob/augmentation/cloak.dmi' /obj/item/bodypart/head/robot/gumhead + icon_state = "robotic_head" icon = 'maplestation_modules/icons/mob/augmentation/s-tech.dmi' icon_static = 'maplestation_modules/icons/mob/augmentation/s-tech.dmi' /obj/item/bodypart/head/robot/skull + icon_state = "robotic_head" icon = 'maplestation_modules/icons/mob/augmentation/skull.dmi' icon_static = 'maplestation_modules/icons/mob/augmentation/skull.dmi' /obj/item/bodypart/head/robot/drone + icon_state = "robotic_head" icon = 'maplestation_modules/icons/mob/augmentation/drone.dmi' icon_static = 'maplestation_modules/icons/mob/augmentation/drone.dmi' From d2feafaf2542bab0e7da49fb97203691371db054 Mon Sep 17 00:00:00 2001 From: Constellado <64122807+Constellado@users.noreply.github.com> Date: Tue, 9 Jun 2026 15:18:53 +1200 Subject: [PATCH 13/23] adds headflags to the new heads The drone head can have hair! --- .../code/modules/surgery/bodyparts/cyber_reskins.dm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/maplestation_modules/code/modules/surgery/bodyparts/cyber_reskins.dm b/maplestation_modules/code/modules/surgery/bodyparts/cyber_reskins.dm index 2ccc2085db22..3ab95d8d324e 100644 --- a/maplestation_modules/code/modules/surgery/bodyparts/cyber_reskins.dm +++ b/maplestation_modules/code/modules/surgery/bodyparts/cyber_reskins.dm @@ -468,28 +468,35 @@ icon_state = "robotic_head" icon = 'maplestation_modules/icons/mob/augmentation/vintage_cybersun.dmi' icon_static = 'maplestation_modules/icons/mob/augmentation/vintage_cybersun.dmi' + head_flags = HEAD_EYECOLOR|HEAD_EYESPRITES|HEAD_EYEHOLES /obj/item/bodypart/head/robot/nemo icon_state = "robotic_head" icon = 'maplestation_modules/icons/mob/augmentation/flat.dmi' icon_static = 'maplestation_modules/icons/mob/augmentation/flat.dmi' + head_flags = NONE /obj/item/bodypart/head/robot/cloak icon_state = "robotic_head" icon = 'maplestation_modules/icons/mob/augmentation/cloak.dmi' icon_static = 'maplestation_modules/icons/mob/augmentation/cloak.dmi' + head_flags = NONE /obj/item/bodypart/head/robot/gumhead icon_state = "robotic_head" icon = 'maplestation_modules/icons/mob/augmentation/s-tech.dmi' icon_static = 'maplestation_modules/icons/mob/augmentation/s-tech.dmi' + head_flags = NONE /obj/item/bodypart/head/robot/skull icon_state = "robotic_head" icon = 'maplestation_modules/icons/mob/augmentation/skull.dmi' icon_static = 'maplestation_modules/icons/mob/augmentation/skull.dmi' + head_flags = HEAD_EYECOLOR|HEAD_EYESPRITES|HEAD_EYEHOLES /obj/item/bodypart/head/robot/drone icon_state = "robotic_head" icon = 'maplestation_modules/icons/mob/augmentation/drone.dmi' icon_static = 'maplestation_modules/icons/mob/augmentation/drone.dmi' + head_flags = HEAD_EYECOLOR|HEAD_EYESPRITES|HEAD_HAIR + From 576d17f05138d1e6d5ae777a40e7682dc9ee3b39 Mon Sep 17 00:00:00 2001 From: Constellado <64122807+Constellado@users.noreply.github.com> Date: Tue, 9 Jun 2026 15:30:30 +1200 Subject: [PATCH 14/23] allows for synth eye colours Why didn't they have eye colours before? no idea. It is now added. --- code/modules/surgery/bodyparts/robot_bodyparts.dm | 2 +- .../code/modules/surgery/bodyparts/cyber_reskins.dm | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/surgery/bodyparts/robot_bodyparts.dm b/code/modules/surgery/bodyparts/robot_bodyparts.dm index 00fc8f0cebb3..67548e188ae7 100644 --- a/code/modules/surgery/bodyparts/robot_bodyparts.dm +++ b/code/modules/surgery/bodyparts/robot_bodyparts.dm @@ -393,7 +393,7 @@ damage_examines = list(BRUTE = ROBOTIC_BRUTE_EXAMINE_TEXT, BURN = ROBOTIC_BURN_EXAMINE_TEXT) - head_flags = HEAD_EYESPRITES + head_flags = HEAD_EYESPRITES | HEAD_EYECOLOR bodypart_flags = BODYPART_UNHUSKABLE var/obj/item/assembly/flash/handheld/flash1 = null diff --git a/maplestation_modules/code/modules/surgery/bodyparts/cyber_reskins.dm b/maplestation_modules/code/modules/surgery/bodyparts/cyber_reskins.dm index 3ab95d8d324e..2df7482a009e 100644 --- a/maplestation_modules/code/modules/surgery/bodyparts/cyber_reskins.dm +++ b/maplestation_modules/code/modules/surgery/bodyparts/cyber_reskins.dm @@ -468,7 +468,6 @@ icon_state = "robotic_head" icon = 'maplestation_modules/icons/mob/augmentation/vintage_cybersun.dmi' icon_static = 'maplestation_modules/icons/mob/augmentation/vintage_cybersun.dmi' - head_flags = HEAD_EYECOLOR|HEAD_EYESPRITES|HEAD_EYEHOLES /obj/item/bodypart/head/robot/nemo icon_state = "robotic_head" From 0897dcc894bddcbb79d606ec7c4d9f7bd110ca48 Mon Sep 17 00:00:00 2001 From: Constellado <64122807+Constellado@users.noreply.github.com> Date: Tue, 9 Jun 2026 15:51:49 +1200 Subject: [PATCH 15/23] sprite updates --- .../icons/mob/augmentation/drone.dmi | Bin 371 -> 539 bytes .../icons/mob/augmentation/flat.dmi | Bin 373 -> 616 bytes .../icons/mob/augmentation/vintage_cybersun.dmi | Bin 431 -> 772 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/maplestation_modules/icons/mob/augmentation/drone.dmi b/maplestation_modules/icons/mob/augmentation/drone.dmi index 0ad912e5fb7131980ed7c4d4540c55e873c7a3a3..de8aef4b3bcf928331910fed83a50342f7200724 100644 GIT binary patch literal 539 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=B~>92B`&GO$wiq3C7Jno3=9>F zsy%!8+#CcLUf*7R<3jzJH9{`ju0DHa&;4K&c}a~i^+x*)?|{|Ut!?KxcD=o^=ex90 zfy_s}D`(Rf7#Nd0T^vIyZoR#=vA5Ylpf&MDa|esyCB`of>?$Tsk|hrO7Z?>K1$hG) z%bQKaqN2-_EZRJ>LZ(8}(q$>XU*LO^P3OUJ_ z|Kv54izIX_gs*h|Huc84+^@zfSaTk)s@&YS`1dD&0buyz1V2ol&AD*(XG1@Of%_97 z$;tBt4`!LIV7{b#AX0Em`(mScW`cR#8_qsuT(v6d)TS8w{Z=at&wt*^DB`$|Yhhuf u+k<#UpAL<#Yri*})=NC#V#Hz5yQ%s-t1SbbJ`ZySsql35b6Mw<&;$UpDAaQR delta 356 zcmV-q0h|7t1oHxr7=Hu<00013M{Ml?000tDOjJd{z`!XfDYCM%hlhuyrKKw?HB{JA z<^TWy0d!JMQvg8b*k%9#0C9R$Sad{Xb7OL8aCB*JZU6vyoKseCa&`CgQ*iP1U+tuX0001zNkl_TOb0+D15`~GVE<(>H-A?O;(~0At8)LVcyPF5W|L_7O#0@;69|$`D000092B`&GO$wiq3C7Jno3=9>F zsy%!8+#CcLUf*7R<3jzJH9{`ju0DHa&;4K&c}a~i^+x*)?|{|Ut!?KxcD=o^=ex90 zfy_s}D`(Rf7#P=kx;TbZ+VikUwCO@`LoDJ|8pcS`p#ZPCJ zQk$AT6T*71qISgxAJKB8jE~}s@7{+ni$^* zegBNV8A5DNS~E&RT_ zp)gJ)lo^E!S9FHL{Xs(J8!`!rg)<48Yk=4WahyNp3E=}05^m5AegFUf07*qoM6N<$ Eg0WbTSpWb4 diff --git a/maplestation_modules/icons/mob/augmentation/vintage_cybersun.dmi b/maplestation_modules/icons/mob/augmentation/vintage_cybersun.dmi index 99d45c74ca35faf6b52848a8c9c365975f491154..d8ff296b08eeb778b75623891a47236d332a0525 100644 GIT binary patch delta 760 zcmZ3_+`=|NqMn0|fq`LFX5l>`RZ@et@)RQT|c{V^G#DAaq^Hd|&XLj$!YT`e?^C^D+bMNna+UIyx zCwu-p!713lkjAieYiVD7pSjsJ=WXKmZd`eEcK@C&2{!u$8M^-eT6;rw`V=>n+8z0# zi6u4HX3p=f-XDG2DrLd?yBYtQ7!4}3@{eo(`=j%?Z}I;B68eiS{9L_iQIHIucX67x{|32Z$)sSe$1EGRjDvoeD)JOjGe;%HC zM3$NHsB*izq@}GTpUi^o^+#AWw79DO$Hu4MeSPFc!Uu+5e;6GZ1NO{+zTrYi$ye+7 zcJ+mV0e=qvoqJ^Y@i%*zKb1G0-95km!(aE#n7BF8;`uxcZDklXsnxe@_AFa-@8hdEl&hR`Xg8^tZfUAFHJ3cx@h;p?awnE9p5p; zsH;7`7kfUo-Lzr4Kod*F=|{DU4_0`o)jsLl`1I>ufiIeZdm6r0USC`^vCC`mW5az6 l_q?IrK=TDiv}TPBQ*zzm0OoYZbYR+M@O1TaS?83{1OPCER_g!& delta 417 zcmV;S0bc%u2CoB<7=Hu<00013M{Ml?001FSOjJd{z`zFw2@(?;EigVtNmSn7<#&3B zh>V&xIYKWnIgyi^wzcsY00001bW%=J06^y0W&i*Hae7o(bVOxyV{&P5bZKvH004NL zQ&wj_ALlgi27%>}-EfQ|q00000 LNkvXXu0mjfA2OWI From a4caf8ab04d269cbb6ff16e489973592790f0fd9 Mon Sep 17 00:00:00 2001 From: Constellado <64122807+Constellado@users.noreply.github.com> Date: Tue, 9 Jun 2026 16:08:59 +1200 Subject: [PATCH 16/23] Adds Clara's head. --- icons/map_icons/clothing/head/_head.dmi | Bin 4133 -> 3813 bytes icons/map_icons/items/pda.dmi | Bin 11621 -> 10988 bytes .../loadouts/limb_items/limb_reskin_heads.dm | 4 ++++ .../surgery/bodyparts/cyber_reskins.dm | 5 +++++ .../icons/mob/augmentation/FSS.dmi | Bin 0 -> 850 bytes 5 files changed, 9 insertions(+) create mode 100644 maplestation_modules/icons/mob/augmentation/FSS.dmi diff --git a/icons/map_icons/clothing/head/_head.dmi b/icons/map_icons/clothing/head/_head.dmi index d01a9749b869c2d7744d1ef946a621d86371d0c9..1eb5d384894961006a83e6c92d6ae5e476e29c79 100644 GIT binary patch delta 3221 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 diff --git a/icons/map_icons/items/pda.dmi b/icons/map_icons/items/pda.dmi index 0712af49864f20397079b5c060e65008f60a5394..925d3d233bc05467602f35930a061beaec93729f 100644 GIT binary patch literal 10988 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 z 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 diff --git a/maplestation_modules/code/modules/loadouts/limb_items/limb_reskin_heads.dm b/maplestation_modules/code/modules/loadouts/limb_items/limb_reskin_heads.dm index 1ff021b160bd..64498dd22199 100644 --- a/maplestation_modules/code/modules/loadouts/limb_items/limb_reskin_heads.dm +++ b/maplestation_modules/code/modules/loadouts/limb_items/limb_reskin_heads.dm @@ -82,3 +82,7 @@ /datum/limb_option_datum/bodypart/cybernetic_head/drone name = "Drone Head" limb_path = /obj/item/bodypart/head/robot/drone + +/datum/limb_option_datum/bodypart/cybernetic_head/fss_clara + name = "FSS Redesigned Head" + limb_path = /obj/item/bodypart/head/robot/fss_clara diff --git a/maplestation_modules/code/modules/surgery/bodyparts/cyber_reskins.dm b/maplestation_modules/code/modules/surgery/bodyparts/cyber_reskins.dm index 2df7482a009e..cb2ccc8a8d86 100644 --- a/maplestation_modules/code/modules/surgery/bodyparts/cyber_reskins.dm +++ b/maplestation_modules/code/modules/surgery/bodyparts/cyber_reskins.dm @@ -499,3 +499,8 @@ icon_static = 'maplestation_modules/icons/mob/augmentation/drone.dmi' head_flags = HEAD_EYECOLOR|HEAD_EYESPRITES|HEAD_HAIR +/obj/item/bodypart/head/robot/fss_clara + icon_state = "robotic_head" + icon = 'maplestation_modules/icons/mob/augmentation/FSS.dmi' + icon_static = 'maplestation_modules/icons/mob/augmentation/FSS.dmi' + head_flags = HEAD_EYECOLOR|HEAD_EYESPRITES diff --git a/maplestation_modules/icons/mob/augmentation/FSS.dmi b/maplestation_modules/icons/mob/augmentation/FSS.dmi new file mode 100644 index 0000000000000000000000000000000000000000..54865b59241ef5efbc528ba3c577be1dfa3521d9 GIT binary patch literal 850 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=B~>92B`&GO$wiq3C7Jno3=9>F zsy%!8+#CcLUf*7R<3jzJH9{`ju0DHa&;4K&c}a~i^+x*)?|{|Ut!?KxcD=o^=ex90 zfy_s}D`(Rf7?@^yx;TbZ+_f@&g6kUc|dxaN|1hpBSiXPwdcxs_({r`{MRi971s++R$ z;=~J#@3z^6FkH;Y`MdOt$dw;U-a7tZsQUl#akK6Q+20#(Y`K&9_1nAK>jeV-Tzb^B z#XfiQXI_V*cN?yMw^d&5x7?-Q^kmD{{snFpHA_O4sj2sLo3mYrc08Y}^S3w5al&?a zj)dhc3@i!^j2sROOacwqm^r#%dBgW!+O)%`=Xq*fUQ|_e^%@h8KfaPB%NMtQyOH0s z!2QSK^MSERvpF>4=6gC^kj&e6HKiwkrQy-#^q``5IZ+oh*_e`;8Qxa*FgSe7xKj7F z?8wh)8!yYbmn2^@W9s@o-`&AGPCWmXiYeOx4i=Vt$N7>BE)$HcXEXjdue?CDe?i3& ztph)9te7=@YIsMzsX}6D_g{H?k^Vz}&nNOGD6`Dnz~}WKhRJP?=Z(Hc%#06Kc-2*S zoZa|@@zRZo*x30iyjpfK>0OBrVSSu0as8vq(u*HwI51eN;`Vk~co>84^ Date: Tue, 9 Jun 2026 16:29:57 +1200 Subject: [PATCH 17/23] Clara head positional adjustments --- .../icons/mob/augmentation/FSS.dmi | Bin 850 -> 859 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/maplestation_modules/icons/mob/augmentation/FSS.dmi b/maplestation_modules/icons/mob/augmentation/FSS.dmi index 54865b59241ef5efbc528ba3c577be1dfa3521d9..307e490fa534f2217a6143340163c8ddcd474b0f 100644 GIT binary patch delta 665 zcmV;K0%rZv2HOUZq<^AGL_t(|+U?pwNEA^R2k>tXQBlOYmjY2Kwq*+pgbh3wtk_nE zq@tojhp;4&E`=RBbV%wFLRbNOS+qukqzj-rz_$9LIfay89+lrqxUaYkbkacuR@KdaKYQZ~y_O$HU zT_Mk3yp+x-U4QC4Zps#bz8(;C^C&9-)inpbL-D9uzj^mjJ$cm9`zXUh|H}?=tL>fw z2!|sp4`s5bjt|@KmLI_X{$cwcsXZL{JuJ0aZ?<{cckEOMXnuZfRyrQF+xZ4)gqG{g zs(B#bHL%sZA7SslN*Ny;HE!M*0F`y~UOcv6a`{22PYuMZHt*jBL7sjffXz~qAOjkc zF9QXCV10F_>7rLz6_wGEg3L@$NMB#Cm4F2Kq+TPL3h&uwKNvwg_O;(pDX~oiG_Pk8 zP)LRm)0rX|XM?E|NjY^gB}j^afU*IAcpgUppm_wfpL!f|KBw)(<0u_W+D1V0{&@sM z^16A`kkl9eM&BM z=;qNd{)TZr8jBl^#{>e{EJc$q0vH((U~APP$x_l#E!L&c00000NkvXXu0mjfl6p53 delta 651 zcmV;60(AY`2GRzQq<@)7L_t(|+U?p;NEA^V2k_q>qN0d(F9o7PY>OQvgbh3wtk_nN z_6LFv31LYfT?#vN=#bPUgs>ziA_yuhC?|0t*)FxzgixTOdr=YevWh4w9!9?pp3X&d z-#G7}-|ywU*~`rDGw;nFelL>EW@R@gLI47o0o2ykd4ofF>3@9rHd2?WvHsvanVdA; zxaK93C*@PuyNFc)6n`{cB~JHe`S*W7e&znkDuVGt6q`qnpLs7j+SjgcHn+(Ad$*15 zUo-%2?*9I%=C1ok0U)*zaR2J+q?E*Ba=9TbAG#cwE)=A{-!(!g8enF2*}HP-yc{@K zBClS*k&fq`>VJ1Ulq~>#KOpGh5i0=Y700~em2owH|M81@^T_Icl(Er~&;jnYK2!kF zXl(tZ%oNo4r0qfY0DAx7;CE%gmo zz0$I{OpNDcer{TNdwZ-jNc>G1bf=?-_SkQXphx(l&rw}sn+PagpGiQ_8E(GSWQ<@0 zfa23 Date: Tue, 9 Jun 2026 17:43:22 +1200 Subject: [PATCH 18/23] Adds sprite for the stomach and tooltips for specific heads --- icons/map_icons/clothing/head/_head.dmi | Bin 3813 -> 4133 bytes icons/map_icons/items/pda.dmi | Bin 10988 -> 11621 bytes maplestation.dme | 2 -- .../loadouts/limb_items/limb_organs.dm | 2 +- .../loadouts/limb_items/limb_reskin_heads.dm | 2 ++ .../species_types/synth/android_battery.dm | 3 ++- .../icons/obj/medical/organs/organs.dmi | Bin 0 -> 502 bytes 7 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 maplestation_modules/icons/obj/medical/organs/organs.dmi diff --git a/icons/map_icons/clothing/head/_head.dmi b/icons/map_icons/clothing/head/_head.dmi index 1eb5d384894961006a83e6c92d6ae5e476e29c79..d01a9749b869c2d7744d1ef946a621d86371d0c9 100644 GIT binary patch delta 3561 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 delta 3221 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 literal 10988 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 z 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 literal 0 HcmV?d00001 From f563b6eeab7e124260f5b7162fba5f5d0f3a3e7a Mon Sep 17 00:00:00 2001 From: Constellado <64122807+Constellado@users.noreply.github.com> Date: Tue, 9 Jun 2026 17:55:14 +1200 Subject: [PATCH 19/23] adjust battery description --- .../living/carbon/human/species_types/synth/android_battery.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm index 7a52b7aa3e88..7d2e8916c7d5 100644 --- a/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm +++ b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm @@ -1,7 +1,7 @@ //Adds a new android stomach type which has more charge than the android stomach, but makes it impossible to eat. /obj/item/organ/stomach/ethereal/android/battery_core name = "Battery Core" - desc = "This is a large battery that stores charge for an android. Since it is missing the standard bioreactor, it holds more energy, however the user cannot eat to gain power." + desc = "This is a stomach replacement that stores charge for an android. It replaces the bioreactor with batteries for more energy, as a result the user cannot eat to gain energy." icon = 'maplestation_modules/icons/obj/medical/organs/organs.dmi' icon_state = "stomach_battery" From 57c4ecbfd6f9163b634e664431ac0508eae83468 Mon Sep 17 00:00:00 2001 From: Constellado <64122807+Constellado@users.noreply.github.com> Date: Tue, 9 Jun 2026 17:59:36 +1200 Subject: [PATCH 20/23] Fixes tooltips and description --- .../code/modules/loadouts/limb_items/limb_organs.dm | 3 ++- .../living/carbon/human/species_types/synth/android_battery.dm | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/maplestation_modules/code/modules/loadouts/limb_items/limb_organs.dm b/maplestation_modules/code/modules/loadouts/limb_items/limb_organs.dm index 7ddfe5ecda5b..171334f3718d 100644 --- a/maplestation_modules/code/modules/loadouts/limb_items/limb_organs.dm +++ b/maplestation_modules/code/modules/loadouts/limb_items/limb_organs.dm @@ -56,11 +56,12 @@ //battery core stuff /datum/limb_option_datum/organ/synthetic - tooltip = "Replaces the stomach with a battery with more charge, but cannot process food or chemicals. Only available for androids and synthetics" + tooltip = "Unique to Androids and Synthetics." /datum/limb_option_datum/organ/synthetic/can_be_selected(datum/preferences/prefs) return ispath(prefs.read_preference(/datum/preference/choiced/species), /datum/species/android) /datum/limb_option_datum/organ/synthetic/battery_core + tooltip = "Replaces the stomach with a battery with more charge, but cannot process food or chemicals. Unique to Androids and Synthetics." name = "Battery Core" limb_path = /obj/item/organ/stomach/ethereal/android/battery_core diff --git a/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm index 7d2e8916c7d5..e7af25e2dc4c 100644 --- a/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm +++ b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/synth/android_battery.dm @@ -1,7 +1,7 @@ //Adds a new android stomach type which has more charge than the android stomach, but makes it impossible to eat. /obj/item/organ/stomach/ethereal/android/battery_core name = "Battery Core" - desc = "This is a stomach replacement that stores charge for an android. It replaces the bioreactor with batteries for more energy, as a result the user cannot eat to gain energy." + desc = "A robotic stomach replacement with many layers of batteries instead of a bioreactor." icon = 'maplestation_modules/icons/obj/medical/organs/organs.dmi' icon_state = "stomach_battery" From 9c99650465a39a85723a6d305f00e70b42ce139e Mon Sep 17 00:00:00 2001 From: Constellado <64122807+Constellado@users.noreply.github.com> Date: Tue, 9 Jun 2026 18:28:10 +1200 Subject: [PATCH 21/23] Fix drone DMI --- .../icons/mob/augmentation/drone.dmi | Bin 539 -> 596 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/maplestation_modules/icons/mob/augmentation/drone.dmi b/maplestation_modules/icons/mob/augmentation/drone.dmi index de8aef4b3bcf928331910fed83a50342f7200724..70419364dcb1f6871747ec3d92bc48c6e7868391 100644 GIT binary patch delta 397 zcmV;80doGE1k?nOq<@=9L_t(|+U?rGtwdlD2XHFTfRl?j>VO_};Gzd-J-FyV4|L!t zE>0Ryf%ir-n=g3p#bA=R`=5)&VP<|yc9R*qZCmS;!v?@V1c;(&*hvjA!C zAP8R9`o0&}a2kLMa9#IxZJH)Egd_YbUxFBb5x98`0LtBUonIA(;qD$^KU>2ofZy~r z5bC;K;yAWE&)eM_$I)t<#!8ap{Q)RU1Ztk*aR4eHP1E&JqeqT|&#S6BUBDFtGbGKQ z26&gNnCJOX0LO850K6bkmZg>F`Lh6wKu3n)(AW_;+E1XyDb6-82G~OQzQ3Mp rFGvi-AO>#y7JzpMlYs#m7oQbhMrnFbahIf900000NkvXXu0mjfvW&E0 delta 384 zcmcb@GMi<>lKLc17srr_TW@b|>}_@sXia?4+`%GviSdgAyNZdEWQha+1x7_lLEZqy z@@5mUsOa(}%lDE$;+rCy=KkzS@!ni_z4YGP$IJyz4JN+g#cy}>-u(CLQh?u?Xq~sy(Kg#heQNMiIw#Tnh^; u-5$g<`gCY?UHiS+v|i!?7b6b4-c8l#S#25c^m&*wNQI}XpUXO@geCyfSeNGj From f9d83ab60e8bdf90fe2a05d2b8c3a52e8c698c9c Mon Sep 17 00:00:00 2001 From: Constellado <64122807+Constellado@users.noreply.github.com> Date: Mon, 15 Jun 2026 11:30:53 +1200 Subject: [PATCH 22/23] Update maplestation.dme part 1 --- maplestation.dme | 1 + 1 file changed, 1 insertion(+) diff --git a/maplestation.dme b/maplestation.dme index 95425d15f965..7ed0e538971c 100644 --- a/maplestation.dme +++ b/maplestation.dme @@ -6790,6 +6790,7 @@ #include "maplestation_modules\code\modules\vending\wardrobes.dm" #include "maplestation_modules\code\modules\wiremod\component_printer.dm" #include "maplestation_modules\code\modules\wiremod\shells.dm" +#ifdef MAPLESTATION_STORY_CONTENT #include "maplestation_modules\story_content\albert_equipment\code\albertclothing.dm" #include "maplestation_modules\story_content\albert_equipment\code\albertitem.dm" #include "maplestation_modules\story_content\alraune_miscitems\code\alrmiscitem.dm" From ea97d92a2d35e23559dba86c45d9d75d9c8187fc Mon Sep 17 00:00:00 2001 From: Constellado <64122807+Constellado@users.noreply.github.com> Date: Mon, 15 Jun 2026 11:31:40 +1200 Subject: [PATCH 23/23] Update maplestation.dme part 2 --- maplestation.dme | 1 + 1 file changed, 1 insertion(+) diff --git a/maplestation.dme b/maplestation.dme index 7ed0e538971c..bbb1ccd90af3 100644 --- a/maplestation.dme +++ b/maplestation.dme @@ -6829,4 +6829,5 @@ #include "maplestation_modules\story_content\volkan_equipment\code\volkanpets_ai.dm" #include "maplestation_modules\story_content\volkan_equipment\datums\loadout_datum.dm" #include "maplestation_modules\story_content\wollys_items\code\wollysitems.dm" +#endif // MAPLESTATION_STORY_CONTENT // END_INCLUDE