Refactor /mob/unEquip. (#27720)

* Refactor /mob/unEquip.

* fix things found in testing

* more fixes from testing

* fix removal of hooded suits

* fix flayers inability to deploy swarmprod

* fix changeling blade activation

* unnecessary parens

* pass default unequip args to proc overrides

* fix belts being able to forceMove into full hands
This commit is contained in:
warriorstar-orion
2025-01-10 01:58:35 +00:00
committed by GitHub
parent 17602326bc
commit 0eafad8475
213 changed files with 587 additions and 585 deletions
+2 -3
View File
@@ -52,8 +52,7 @@
if(!is_pen(P))
return
to_chat(user, "<span class='notice'>You slide [P] into [src].</span>")
user.unEquip(P)
P.forceMove(src)
user.transfer_item_to(P, src)
containedpen = P
else
if(!containedpen)
@@ -96,7 +95,7 @@
/obj/item/clipboard/attackby__legacy__attackchain(obj/item/W, mob/user)
if(isPaperwork(W)) //If it's a photo, paper bundle, or piece of paper, place it on the clipboard.
user.unEquip(W)
user.unequip(W)
W.forceMove(src)
to_chat(user, "<span class='notice'>You clip [W] onto [src].</span>")
playsound(loc, "pageturn", 50, 1)
+2 -3
View File
@@ -44,8 +44,7 @@
to_chat(user, "<span class='notice'>There's already a signaller attached!</span>")
return
var/obj/item/assembly/signaler/signal = I
user.unEquip(signal)
signal.forceMove(src)
user.transfer_item_to(signal, src)
attached_signaler = signal
if(signal.receiving)
RegisterSignal(attached_signaler, COMSIG_ASSEMBLY_PULSED, PROC_REF(on_signal))
@@ -83,7 +82,7 @@
if(over_object == M)
if(!remove_item_from_storage(M))
M.unEquip(src)
M.unequip(src)
M.put_in_hands(src)
anchored = FALSE
+1 -1
View File
@@ -126,7 +126,7 @@
/obj/structure/filingcabinet/proc/insert(obj/item/O, mob/user)
if(!is_type_in_list(O, accepted_items))
return
if(!user.unEquip(O))
if(!user.unequip(O))
return
to_chat(user, "<span class='notice'>You put [O.name] in [src].</span>")
O.loc = src
+9 -9
View File
@@ -415,38 +415,38 @@
B.name = name
else if(P.name != "paper" && P.name != "photo")
B.name = P.name
user.unEquip(P)
user.drop_item_to_ground(P)
if(ishuman(user))
var/mob/living/carbon/human/h_user = user
if(h_user.r_hand == src)
h_user.unEquip(src)
h_user.unequip(src)
h_user.put_in_r_hand(B)
else if(h_user.l_hand == src)
h_user.unEquip(src)
h_user.unequip(src)
h_user.put_in_l_hand(B)
else if(h_user.l_store == src)
h_user.unEquip(src)
h_user.unequip(src)
B.loc = h_user
B.layer = ABOVE_HUD_LAYER
B.plane = ABOVE_HUD_PLANE
h_user.l_store = B
h_user.update_inv_pockets()
else if(h_user.r_store == src)
h_user.unEquip(src)
h_user.unequip(src)
B.loc = h_user
B.layer = ABOVE_HUD_LAYER
B.plane = ABOVE_HUD_PLANE
h_user.r_store = B
h_user.update_inv_pockets()
else if(h_user.head == src)
h_user.unEquip(src)
h_user.unequip(src)
h_user.put_in_hands(B)
else if(!isturf(src.loc))
src.loc = get_turf(h_user)
if(h_user.client) h_user.client.screen -= src
h_user.put_in_hands(B)
to_chat(user, "<span class='notice'>You clip [P] to [(src.name == "paper") ? "the paper" : src.name].</span>")
src.loc = B
forceMove(B)
P.loc = B
B.amount++
B.update_icon()
@@ -481,7 +481,7 @@
if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(10))
user.visible_message("<span class='warning'>[user] accidentally ignites [user.p_themselves()]!</span>", \
"<span class='userdanger'>You miss the paper and accidentally light yourself on fire!</span>")
user.unEquip(P)
user.drop_item_to_ground(P)
user.adjust_fire_stacks(1)
user.IgniteMob()
return
@@ -489,7 +489,7 @@
if(!Adjacent(user)) //to prevent issues as a result of telepathically lighting a paper
return
user.unEquip(src)
user.drop_item_to_ground(src)
user.visible_message("<span class='danger'>[user] lights [src] ablaze with [P]!</span>", "<span class='danger'>You light [src] on fire!</span>")
fire_act()
+3 -9
View File
@@ -40,8 +40,7 @@
if(screen == 2)
screen = 1
to_chat(user, "<span class='notice'>You add [(P.name == "paper") ? "the paper" : P.name] to [(src.name == "paper bundle") ? "the paper bundle" : src.name].</span>")
user.unEquip(P)
P.loc = src
user.transfer_item_to(P, src)
if(ishuman(user))
var/mob/living/carbon/human/H = user
H.update_inv_l_hand()
@@ -53,14 +52,12 @@
if(screen == 2)
screen = 1
to_chat(user, "<span class='notice'>You add [(W.name == "photo") ? "the photo" : W.name] to [(src.name == "paper bundle") ? "the paper bundle" : src.name].</span>")
user.unEquip(W)
W.loc = src
user.transfer_item_to(W, src)
else if(W.get_heat())
burnpaper(W, user)
else if(istype(W, /obj/item/paper_bundle))
user.unEquip(W)
for(var/obj/O in W)
O.loc = src
O.add_fingerprint(usr)
@@ -91,8 +88,6 @@
user.visible_message("<span class='[class]'>[user] burns right through [src], turning it to ash. It flutters through the air before settling on the floor in a heap.</span>", \
"<span class='[class]'>You burn right through [src], turning it to ash. It flutters through the air before settling on the floor in a heap.</span>")
user.unEquip(src)
new /obj/effect/decal/cleanable/ash(get_turf(src))
qdel(src)
@@ -168,7 +163,7 @@
to_chat(usr, "<span class='notice'>You remove [W] from the bundle.</span>")
if(amount == 1)
var/obj/item/paper/P = get_page(1)
usr.unEquip(src)
usr.unequip(src)
usr.put_in_hands(P)
usr.unset_machine() // Ensure the bundle GCs
for(var/obj/O in src) // just in case we somehow lose something (it's happened, especially with photos)
@@ -219,7 +214,6 @@
O.plane = initial(O.plane)
O.add_fingerprint(user)
user.unEquip(src)
qdel(src)
/obj/item/paper_bundle/update_desc()
+3 -3
View File
@@ -37,18 +37,18 @@
if(over_object == M)
if(!remove_item_from_storage(M))
M.unEquip(src)
M.drop_item_to_ground(src)
M.put_in_hands(src)
else if(is_screen_atom(over_object))
switch(over_object.name)
if("r_hand")
if(!remove_item_from_storage(M))
M.unEquip(src)
M.drop_item_to_ground(src)
M.put_in_r_hand(src)
if("l_hand")
if(!remove_item_from_storage(M))
M.unEquip(src)
M.drop_item_to_ground(src)
M.put_in_l_hand(src)
add_fingerprint(M)
+3 -3
View File
@@ -74,14 +74,14 @@
if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(10))
user.visible_message("<span class='warning'>[user] accidentally ignites [user.p_themselves()]!</span>", \
"<span class='userdanger'>You miss [src] and accidentally light yourself on fire!</span>")
user.unEquip(P)
user.drop_item_to_ground(P)
user.adjust_fire_stacks(1)
user.IgniteMob()
return
if(!in_range(user, src)) //to prevent issues as a result of telepathically lighting a paper
return
user.unEquip(src)
user.drop_item_to_ground(src)
user.visible_message("<span class='danger'>[user] lights [src] on fire with [P]!</span>", "<span class='danger'>You lights [src] on fire!</span>")
fire_act()
@@ -113,7 +113,7 @@
if((!in_range(src, user)) || user.stat || user.restrained())
return
to_chat(user, "<span class='notice'>You fold [src] into the shape of a plane!</span>")
user.unEquip(src)
user.unequip(src) // forceMove happens in paperplane/Initialize
I = new /obj/item/paperplane(user, src)
user.put_in_hands(I)
else
+3 -3
View File
@@ -74,7 +74,7 @@
"<span class='[class]'>You burn right through [src], turning it to ash. It flutters through the air before settling on the floor in a heap.</span>")
if(user.is_in_inactive_hand(src))
user.unEquip(src)
user.unequip(src)
new /obj/effect/decal/cleanable/ash(get_turf(src))
qdel(src)
@@ -149,10 +149,10 @@
if((!M.restrained() && !M.stat && M.back == src))
switch(over_object.name)
if("r_hand")
M.unEquip(src)
M.unequip(src)
M.put_in_r_hand(src)
if("l_hand")
M.unEquip(src)
M.unequip(src)
M.put_in_l_hand(src)
add_fingerprint(usr)
return