From 5000bdef2c766cbfa9602abe49ac35dc63ec855f Mon Sep 17 00:00:00 2001 From: Roxy <75404941+TealSeer@users.noreply.github.com> Date: Sat, 17 May 2025 14:36:06 -0400 Subject: [PATCH] Clean up nitrogen lung quirk code - Change code to store type of old lungs, not instance - Delete old lungs instead of trying to move them to nullspace, fixes runtime - Fix hardcoded nitrogen lungs path in mutantlungs setting - Use the right proc to attach the dogtag to the uniform - Fix dogtag not setting examine text properly - Fix override of attach_accessory that was missing args --- .../code/lewd_clothing/lewd_maid.dm | 2 +- .../datums/quirks/neutral_quirks/equipping.dm | 6 +++- .../datums/quirks/neutral_quirks/lungs.dm | 35 ++++++++----------- 3 files changed, 20 insertions(+), 23 deletions(-) diff --git a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_clothing/lewd_maid.dm b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_clothing/lewd_maid.dm index dcb8743bb98..828875e60cb 100644 --- a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_clothing/lewd_maid.dm +++ b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_clothing/lewd_maid.dm @@ -80,7 +80,7 @@ icon_state = icon_state = "[initial(base_icon_state)]_[current_color]" inhand_icon_state = "[initial(base_icon_state)]_[current_color]" -/obj/item/clothing/under/costume/lewdmaid/attach_accessory(obj/item/attack_item) +/obj/item/clothing/under/costume/lewdmaid/attach_accessory(obj/item/attack_item, mob/living/user, attach_message = TRUE) . = ..() var/obj/item/clothing/accessory/prime_accessory = attached_accessories[1] var/accessory_color = prime_accessory.icon_state diff --git a/modular_zubbers/code/datums/quirks/neutral_quirks/equipping.dm b/modular_zubbers/code/datums/quirks/neutral_quirks/equipping.dm index 5bf30e490ff..3b30363e8d7 100644 --- a/modular_zubbers/code/datums/quirks/neutral_quirks/equipping.dm +++ b/modular_zubbers/code/datums/quirks/neutral_quirks/equipping.dm @@ -44,8 +44,12 @@ if(!ispath(item_path)) continue var/item = new item_path(carbon_holder.loc) + var/success = FALSE for(var/slot as anything in stored_items[item_path]) - carbon_holder.equip_to_storage(item, slot, indirect_action = TRUE) + success = carbon_holder.equip_to_storage(item, slot, indirect_action = TRUE) + if(success) + break + equipped_items[item] = success for (var/item as anything in equipped_items) on_equip_item(item, equipped_items[item]) diff --git a/modular_zubbers/code/datums/quirks/neutral_quirks/lungs.dm b/modular_zubbers/code/datums/quirks/neutral_quirks/lungs.dm index 37d534d639a..2aa6941014a 100644 --- a/modular_zubbers/code/datums/quirks/neutral_quirks/lungs.dm +++ b/modular_zubbers/code/datums/quirks/neutral_quirks/lungs.dm @@ -1,8 +1,7 @@ /datum/quirk/equipping/lungs abstract_parent_type = /datum/quirk/equipping/lungs icon = FA_ICON_LUNGS - var/obj/item/organ/lungs/lungs_holding - var/obj/item/organ/lungs/lungs_added + var/old_lungs = null var/lungs_typepath = /obj/item/organ/lungs stored_items = list(/obj/item/clothing/accessory/breathing = list(ITEM_SLOT_BACK)) var/breath_type = "oxygen" @@ -11,28 +10,20 @@ var/mob/living/carbon/human/carbon_holder = quirk_holder if (!istype(carbon_holder) || !lungs_typepath) return - var/current_lungs = carbon_holder.get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs/current_lungs = carbon_holder.get_organ_slot(ORGAN_SLOT_LUNGS) if (istype(current_lungs, lungs_typepath)) return - lungs_holding = current_lungs - if(!isnull(lungs_holding)) - lungs_holding.organ_flags |= ORGAN_FROZEN // stop decay on the old lungs - lungs_added = new lungs_typepath - lungs_added.Insert(carbon_holder, special = TRUE) - if(!isnull(lungs_holding)) - lungs_holding.moveToNullspace() // save them for later - carbon_holder.dna.species.mutantlungs = /obj/item/organ/lungs/nitrogen + old_lungs = current_lungs?.type + var/obj/item/organ/lungs/lungs_added = new lungs_typepath + lungs_added.Insert(carbon_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED) + carbon_holder.dna.species.mutantlungs = lungs_typepath /datum/quirk/equipping/lungs/remove() var/mob/living/carbon/carbon_holder = quirk_holder - if (!istype(carbon_holder) || !istype(lungs_holding)) + if (!istype(carbon_holder) || isnull(old_lungs)) return - var/obj/item/organ/lungs/lungs = carbon_holder.get_organ_slot(ORGAN_SLOT_LUNGS) - if (lungs != lungs_added && lungs != lungs_holding) - qdel(lungs_holding) - return - lungs_holding.Insert(carbon_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED) - lungs_holding.organ_flags &= ~ORGAN_FROZEN + var/obj/item/organ/lungs/new_lungs = new old_lungs + new_lungs.Insert(carbon_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED) carbon_holder.dna.species.mutantlungs = initial(carbon_holder.dna.species.mutantlungs) /datum/quirk/equipping/lungs/on_equip_item(obj/item/equipped, success) @@ -41,10 +32,12 @@ return var/obj/item/clothing/accessory/breathing/acc = equipped acc.breath_type = breath_type - if(!human_holder?.w_uniform) + if(!istype(human_holder)) return - if (acc.can_attach_accessory(human_holder?.w_uniform, human_holder)) - acc.attach(human_holder.w_uniform, human_holder) + var/obj/item/clothing/under/worn_uniform = human_holder.w_uniform + if(!istype(worn_uniform)) + return + worn_uniform.attach_accessory(acc, human_holder, attach_message = FALSE) /obj/item/clothing/accessory/breathing name = "breathing dogtag"