From 5f0cf0996705dc1594c9eb81a50bcede29c9573a Mon Sep 17 00:00:00 2001 From: nightred Date: Thu, 5 Mar 2020 08:56:06 -0600 Subject: [PATCH 1/5] Off hand item drop fix --- code/datums/components/twohanded.dm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/code/datums/components/twohanded.dm b/code/datums/components/twohanded.dm index e9f99a995ef..ac78e6d9601 100644 --- a/code/datums/components/twohanded.dm +++ b/code/datums/components/twohanded.dm @@ -100,8 +100,8 @@ unwield(user, show_message=TRUE) if(wielded) unwield(user) - if(source == offhand_item && !QDELETED(src)) - qdel(src) + if(source == offhand_item && !QDELETED(source)) + qdel(source) /// Triggered on attack self of the item containing the component /datum/component/two_handed/proc/on_attack_self(datum/source, mob/user) @@ -301,6 +301,10 @@ resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF var/wielded = FALSE // Off Hand tracking of wielded status +/obj/item/offhand/Initialize() + . = ..() + ADD_TRAIT(src, TRAIT_NODROP, ABSTRACT_ITEM_TRAIT) + /obj/item/offhand/Destroy() wielded = FALSE return ..() From 944fe34d80f74ebbc24c0034da141ce744257a6e Mon Sep 17 00:00:00 2001 From: nightred Date: Thu, 5 Mar 2020 12:22:55 -0600 Subject: [PATCH 2/5] telekinesis checks for held object --- code/datums/components/twohanded.dm | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/code/datums/components/twohanded.dm b/code/datums/components/twohanded.dm index ac78e6d9601..ec3d19dba08 100644 --- a/code/datums/components/twohanded.dm +++ b/code/datums/components/twohanded.dm @@ -107,7 +107,7 @@ /datum/component/two_handed/proc/on_attack_self(datum/source, mob/user) if(wielded) unwield(user) - else + if(user.is_holding(parent)) wield(user) /** @@ -117,7 +117,7 @@ * * user The mob/living/carbon that is wielding the item */ /datum/component/two_handed/proc/wield(mob/living/carbon/user) - if(wielded) + if(wielded || !istype(user)) return if(ismonkey(user)) to_chat(user, "It's too heavy for you to wield fully.") @@ -177,7 +177,7 @@ * * show_message (option) show a message to chat on unwield */ /datum/component/two_handed/proc/unwield(mob/living/carbon/user, show_message=TRUE) - if(!wielded || !user) + if(!wielded || !istype(user)) return // wield update status @@ -266,6 +266,11 @@ return if(held_item == parent) return COMPONENT_BLOCK_SWAP + // check if we are holding an item with telekinesis, is that item our parent? + if(istype(held_item, /obj/item/tk_grab)) + var/obj/item/tk_grab/tk_item = held_item + if (tk_item?.focus == parent) + return COMPONENT_BLOCK_SWAP /** * on_sharpen Triggers on usage of a sharpening stone on the item From e2f03055a918c40c71c4cd88f6df353b3a7b3559 Mon Sep 17 00:00:00 2001 From: nightred Date: Thu, 5 Mar 2020 12:25:38 -0600 Subject: [PATCH 3/5] oh lets not make a loop that was bad --- code/datums/components/twohanded.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/components/twohanded.dm b/code/datums/components/twohanded.dm index ec3d19dba08..f27d9cc9070 100644 --- a/code/datums/components/twohanded.dm +++ b/code/datums/components/twohanded.dm @@ -107,7 +107,7 @@ /datum/component/two_handed/proc/on_attack_self(datum/source, mob/user) if(wielded) unwield(user) - if(user.is_holding(parent)) + else if(user.is_holding(parent)) wield(user) /** From 695fec66c242d96b743a1298cdab8d9005e5772f Mon Sep 17 00:00:00 2001 From: nightred Date: Fri, 6 Mar 2020 09:47:53 -0600 Subject: [PATCH 4/5] remove some TK checks that are dead --- code/datums/components/twohanded.dm | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/code/datums/components/twohanded.dm b/code/datums/components/twohanded.dm index f27d9cc9070..a36da4b967d 100644 --- a/code/datums/components/twohanded.dm +++ b/code/datums/components/twohanded.dm @@ -117,7 +117,7 @@ * * user The mob/living/carbon that is wielding the item */ /datum/component/two_handed/proc/wield(mob/living/carbon/user) - if(wielded || !istype(user)) + if(wielded) return if(ismonkey(user)) to_chat(user, "It's too heavy for you to wield fully.") @@ -266,11 +266,6 @@ return if(held_item == parent) return COMPONENT_BLOCK_SWAP - // check if we are holding an item with telekinesis, is that item our parent? - if(istype(held_item, /obj/item/tk_grab)) - var/obj/item/tk_grab/tk_item = held_item - if (tk_item?.focus == parent) - return COMPONENT_BLOCK_SWAP /** * on_sharpen Triggers on usage of a sharpening stone on the item From baf9ef3e19fb2e4dc11e651c8b8ec521148025b0 Mon Sep 17 00:00:00 2001 From: nightred Date: Fri, 6 Mar 2020 09:49:50 -0600 Subject: [PATCH 5/5] one more useless check removed --- code/datums/components/twohanded.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/components/twohanded.dm b/code/datums/components/twohanded.dm index a36da4b967d..9cc824dd5e3 100644 --- a/code/datums/components/twohanded.dm +++ b/code/datums/components/twohanded.dm @@ -177,7 +177,7 @@ * * show_message (option) show a message to chat on unwield */ /datum/component/two_handed/proc/unwield(mob/living/carbon/user, show_message=TRUE) - if(!wielded || !istype(user)) + if(!wielded) return // wield update status