diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm
index 46744d81b89..97da8be2edc 100644
--- a/code/datums/diseases/transformation.dm
+++ b/code/datums/diseases/transformation.dm
@@ -46,9 +46,9 @@
return
affected_mob.notransform = 1
for(var/obj/item/W in affected_mob.get_equipped_items())
- affected_mob.unEquip(W)
+ affected_mob.dropItemToGround(W)
for(var/obj/item/I in affected_mob.held_items)
- affected_mob.unEquip(I)
+ affected_mob.dropItemToGround(I)
var/mob/living/new_mob = new new_form(affected_mob.loc)
if(istype(new_mob))
new_mob.a_intent = INTENT_HARM
diff --git a/code/datums/diseases/wizarditis.dm b/code/datums/diseases/wizarditis.dm
index f766b1992fd..8065e6e33e7 100644
--- a/code/datums/diseases/wizarditis.dm
+++ b/code/datums/diseases/wizarditis.dm
@@ -59,19 +59,19 @@ STI KALY - blind
var/mob/living/carbon/human/H = affected_mob
if(prob(chance))
if(!istype(H.head, /obj/item/clothing/head/wizard))
- if(!H.unEquip(H.head))
+ if(!H.dropItemToGround(H.head))
qdel(H.head)
H.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(H), slot_head)
return
if(prob(chance))
if(!istype(H.wear_suit, /obj/item/clothing/suit/wizrobe))
- if(!H.unEquip(H.wear_suit))
+ if(!H.dropItemToGround(H.wear_suit))
qdel(H.wear_suit)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(H), slot_wear_suit)
return
if(prob(chance))
if(!istype(H.shoes, /obj/item/clothing/shoes/sandal/magic))
- if(!H.unEquip(H.shoes))
+ if(!H.dropItemToGround(H.shoes))
qdel(H.shoes)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal/magic(H), slot_shoes)
return
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 1ade82e90aa..cf76a3aaa77 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -1237,7 +1237,7 @@
switch(href_list["common"])
if("undress")
for(var/obj/item/W in current)
- current.unEquip(W, 1) //The 1 forces all items to drop, since this is an admin undress.
+ current.dropItemToGround(W, TRUE) //The 1 forces all items to drop, since this is an admin undress.
if("takeuplink")
take_uplink()
memory = null//Remove any memory they may have had.
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index b56a36785a9..dab8a2ad0a2 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -109,8 +109,9 @@
var/atom/movable/M = A
if(isliving(M.loc))
var/mob/living/L = M.loc
- L.unEquip(M)
- M.loc = src
+ L.transferItemToLoc(M, src)
+ else
+ M.forceMove(src)
/atom/proc/assume_air(datum/gas_mixture/giver)
qdel(giver)
diff --git a/code/game/gamemodes/changeling/powers/biodegrade.dm b/code/game/gamemodes/changeling/powers/biodegrade.dm
index 6fd219064dc..68b05b839d5 100644
--- a/code/game/gamemodes/changeling/powers/biodegrade.dm
+++ b/code/game/gamemodes/changeling/powers/biodegrade.dm
@@ -59,16 +59,12 @@
/obj/effect/proc_holder/changeling/biodegrade/proc/dissolve_handcuffs(mob/living/carbon/human/user, obj/O)
if(O && user.handcuffed == O)
- user.unEquip(O)
- O.visible_message("[O] dissolves into a puddle of sizzling goop.")
- O.loc = get_turf(user)
+ visible_message("[O] dissolves into a puddle of sizzling goop.")
qdel(O)
/obj/effect/proc_holder/changeling/biodegrade/proc/dissolve_straightjacket(mob/living/carbon/human/user, obj/S)
if(S && user.wear_suit == S)
- user.unEquip(S)
- S.visible_message("[S] dissolves into a puddle of sizzling goop.")
- S.loc = get_turf(user)
+ visible_message("[S] dissolves into a puddle of sizzling goop.")
qdel(S)
/obj/effect/proc_holder/changeling/biodegrade/proc/open_closet(mob/living/carbon/human/user, obj/structure/closet/C)
diff --git a/code/game/gamemodes/changeling/powers/mutations.dm b/code/game/gamemodes/changeling/powers/mutations.dm
index 304fd36d66e..1b3e59e5189 100644
--- a/code/game/gamemodes/changeling/powers/mutations.dm
+++ b/code/game/gamemodes/changeling/powers/mutations.dm
@@ -29,7 +29,7 @@
/obj/effect/proc_holder/changeling/weapon/proc/check_weapon(mob/user, obj/item/hand_item)
if(istype(hand_item, weapon_type))
- user.unEquip(hand_item, 1) //DROPDEL will delete the item
+ user.temporarilyRemoveItemFromInventory(hand_item, TRUE) //DROPDEL will delete the item
if(!silent)
playsound(user, 'sound/effects/blobattack.ogg', 30, 1)
user.visible_message("With a sickening crunch, [user] reforms their [weapon_name_simple] into an arm!", "We assimilate the [weapon_name_simple] back into our body.", "[H] casts off their [suit_name_simple]!", "We cast off our [suit_name_simple][genetic_damage > 0 ? ", temporarily weakening our genomes." : "."]", "You hear the organic matter ripping and tearing!")
- H.unEquip(H.head, TRUE) //The qdel on dropped() takes care of it
- H.unEquip(H.wear_suit, TRUE)
+ H.temporarilyRemoveItemFromInventory(H.head, TRUE) //The qdel on dropped() takes care of it
+ H.temporarilyRemoveItemFromInventory(H.wear_suit, TRUE)
H.update_inv_wear_suit()
H.update_inv_head()
H.update_hair()
@@ -117,8 +117,8 @@
user << "\the [user.head] is stuck on your head, you cannot grow a [helmet_name_simple] over it!"
return
- user.unEquip(user.head)
- user.unEquip(user.wear_suit)
+ user.dropItemToGround(user.head)
+ user.dropItemToGround(user.wear_suit)
user.equip_to_slot_if_possible(new suit_type(user), slot_wear_suit, 1, 1, 1)
user.equip_to_slot_if_possible(new helmet_type(user), slot_head, 1, 1, 1)
@@ -312,7 +312,7 @@
/obj/item/projectile/tentacle/on_hit(atom/target, blocked = 0)
var/mob/living/carbon/human/H = firer
- H.unEquip(source.gun,1) //Unequip thus delete the tentacle on hit
+ H.dropItemToGround(source.gun, TRUE) //Unequip thus delete the tentacle on hit
if(blocked >= 100)
return 0
if(istype(target, /obj/item))
@@ -414,7 +414,6 @@
if(ishuman(loc))
var/mob/living/carbon/human/H = loc
H.visible_message("With a sickening crunch, [H] reforms his shield into an arm!", "We assimilate our shield into our body", "[L] collapses in on [L.p_them()]self as [src] flares bright blue!")
L << "\"[text2ratvar("Your life will not be wasted.")]\""
for(var/obj/item/W in L)
- if(!L.unEquip(W))
+ if(!L.dropItemToGround(W))
qdel(W)
L.dust()
else
diff --git a/code/game/gamemodes/clock_cult/clock_items/clock_components.dm b/code/game/gamemodes/clock_cult/clock_items/clock_components.dm
index 9a091fe3ee7..9a215c7e6c3 100644
--- a/code/game/gamemodes/clock_cult/clock_items/clock_components.dm
+++ b/code/game/gamemodes/clock_cult/clock_items/clock_components.dm
@@ -16,9 +16,8 @@
if(user.mind && user.mind.isholy)
user << "The power of your faith melts away the [src]!"
var/obj/item/weapon/ore/slag/wrath = new /obj/item/weapon/ore/slag
- user.unEquip(src)
- user.put_in_active_hand(wrath)
qdel(src)
+ user.put_in_active_hand(wrath)
if(is_servant_of_ratvar(user) && prob(20))
var/pickedmessage = pick(servant_of_ratvar_messages)
user << "[servant_of_ratvar_messages[pickedmessage] ? "[text2ratvar(pickedmessage)]" : pickedmessage]"
diff --git a/code/game/gamemodes/clock_cult/clock_items/clockwork_armor.dm b/code/game/gamemodes/clock_cult/clock_items/clockwork_armor.dm
index d4d6aeb853c..1c90cb96f30 100644
--- a/code/game/gamemodes/clock_cult/clock_items/clockwork_armor.dm
+++ b/code/game/gamemodes/clock_cult/clock_items/clockwork_armor.dm
@@ -44,7 +44,7 @@
user.emote("scream")
user.apply_damage(30, BRUTE, "head")
user.adjustBrainLoss(30)
- addtimer(CALLBACK(user, /mob/living.proc/unEquip), src, 1) //equipped happens before putting stuff on(but not before picking items up), 1). thus, we need to wait for it to be on before forcing it off.
+ addtimer(CALLBACK(user, /mob/living.proc/dropItemToGround), src, 1) //equipped happens before putting stuff on(but not before picking items up), 1). thus, we need to wait for it to be on before forcing it off.
/obj/item/clothing/head/helmet/clockwork/mob_can_equip(mob/M, mob/equipper, slot, disable_warning = 0)
if(equipper && !is_servant_of_ratvar(equipper))
@@ -106,7 +106,7 @@
user.apply_damage(15, BURN, "chest")
user.adjust_fire_stacks(2)
user.IgniteMob()
- addtimer(CALLBACK(user, /mob/living.proc/unEquip, src, 1), 1)
+ addtimer(CALLBACK(user, /mob/living.proc/dropItemToGround, src, TRUE), 1)
/obj/item/clothing/gloves/clockwork
name = "clockwork gauntlets"
@@ -166,7 +166,7 @@
user.emote("scream")
user.apply_damage(7, BRUTE, "l_arm")
user.apply_damage(7, BRUTE, "r_arm")
- addtimer(CALLBACK(user, /mob/living.proc/unEquip, src, 1), 1)
+ addtimer(CALLBACK(user, /mob/living.proc/dropItemToGround, src, TRUE), 1)
/obj/item/clothing/shoes/clockwork
name = "clockwork treads"
@@ -213,4 +213,4 @@
user.emote("scream")
user.apply_damage(7, BURN, "l_leg")
user.apply_damage(7, BURN, "r_leg")
- addtimer(CALLBACK(user, /mob/living.proc/unEquip, src, 1), 1)
+ addtimer(CALLBACK(user, /mob/living.proc/dropItemToGround, src, TRUE), 1)
diff --git a/code/game/gamemodes/clock_cult/clock_structures/geis_binding.dm b/code/game/gamemodes/clock_cult/clock_structures/geis_binding.dm
index 9da7519a53a..041a99c19a9 100644
--- a/code/game/gamemodes/clock_cult/clock_structures/geis_binding.dm
+++ b/code/game/gamemodes/clock_cult/clock_structures/geis_binding.dm
@@ -41,7 +41,7 @@
var/image/GB = new('icons/effects/clockwork_effects.dmi', src, "geisbinding_top", M.layer + 0.01)
add_overlay(GB)
for(var/obj/item/I in M.held_items)
- M.unEquip(I)
+ M.dropItemToGround(I)
for(var/i in M.get_empty_held_indexes())
var/obj/item/geis_binding/B = new(M)
M.put_in_hands(B, i)
@@ -61,7 +61,7 @@
animate(T, transform = matrix()*2, alpha = 0, time = 8, easing = EASE_OUT)
M.visible_message("[src] snaps into glowing pieces and dissipates!")
for(var/obj/item/geis_binding/GB in M.held_items)
- M.unEquip(GB, TRUE)
+ M.dropItemToGround(GB, TRUE)
/obj/structure/destructible/clockwork/geis_binding/relaymove(mob/user, direction)
if(isliving(user) && can_resist)
diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm
index 6d7aca5a289..f67b7fbb511 100644
--- a/code/game/gamemodes/cult/cult_items.dm
+++ b/code/game/gamemodes/cult/cult_items.dm
@@ -15,7 +15,7 @@
/obj/item/weapon/melee/cultblade/attack(mob/living/target, mob/living/carbon/human/user)
if(!iscultist(user))
user.Weaken(5)
- user.unEquip(src, 1)
+ user.dropItemToGround(src, TRUE)
user.visible_message("A powerful force shoves [user] away from [target]!", \
"\"You shouldn't play with sharp things. You'll poke someone's eye out.\"")
if(ishuman(user))
@@ -38,7 +38,7 @@
user << "A horrible force yanks at your arm!"
user.emote("scream")
user.apply_damage(30, BRUTE, pick("l_arm", "r_arm"))
- user.unEquip(src)
+ user.dropItemToGround(src)
/obj/item/weapon/melee/cultblade/dagger
name = "sacrificial dagger"
@@ -179,7 +179,7 @@
if(!is_servant_of_ratvar(user))
user << "\"I wouldn't advise that.\""
user << "An overwhelming sense of nausea overpowers you!"
- user.unEquip(src, 1)
+ user.dropItemToGround(src, TRUE)
user.Dizzy(30)
user.Weaken(5)
else
@@ -187,7 +187,7 @@
user << "The armor squeezes at your body!"
user.emote("scream")
user.adjustBruteLoss(25)
- user.unEquip(src, 1)
+ user.dropItemToGround(src, TRUE)
/obj/item/clothing/suit/hooded/cultrobes/cult_shield/hit_reaction(mob/living/carbon/human/owner, attack_text, isinhands)
if(current_charges)
@@ -231,7 +231,7 @@
if(!is_servant_of_ratvar(user))
user << "\"I wouldn't advise that.\""
user << "An overwhelming sense of nausea overpowers you!"
- user.unEquip(src, 1)
+ user.dropItemToGround(src, TRUE)
user.Dizzy(30)
user.Weaken(5)
else
@@ -239,7 +239,7 @@
user << "The robes squeeze at your body!"
user.emote("scream")
user.adjustBruteLoss(25)
- user.unEquip(src, 1)
+ user.dropItemToGround(src, TRUE)
/obj/item/clothing/glasses/night/cultblind
desc = "May nar-sie guide you through the darkness and shield you from the light."
@@ -253,7 +253,7 @@
..()
if(!iscultist(user))
user << "\"You want to be blind, do you?\""
- user.unEquip(src, 1)
+ user.dropItemToGround(src, TRUE)
user.Dizzy(30)
user.Weaken(5)
user.blind_eyes(30)
@@ -274,7 +274,7 @@
/obj/item/device/shuttle_curse/attack_self(mob/user)
if(!iscultist(user))
- user.unEquip(src, 1)
+ user.dropItemToGround(src, TRUE)
user.Weaken(5)
user << "A powerful force shoves you away from [src]!"
return
@@ -327,7 +327,7 @@
user << "\The [src] is dull and unmoving in your hands."
return
if(!iscultist(user))
- user.unEquip(src, 1)
+ user.dropItemToGround(src, TRUE)
step(src, pick(alldirs))
user << "\The [src] flickers out of your hands, your connection to this dimension is too strong!"
return
diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm
index 9c93e97a863..65cfd923e08 100644
--- a/code/game/gamemodes/cult/runes.dm
+++ b/code/game/gamemodes/cult/runes.dm
@@ -1004,5 +1004,5 @@ var/list/wall_runes = list()
new_human.visible_message("[new_human] suddenly dissolves into bones and ashes.", \
"Your link to the world fades. Your form breaks apart.")
for(var/obj/I in new_human)
- new_human.unEquip(I)
+ new_human.dropItemToGround(I)
new_human.dust()
diff --git a/code/game/gamemodes/devil/true_devil/inventory.dm b/code/game/gamemodes/devil/true_devil/inventory.dm
index 52feb42e289..a4af9484973 100644
--- a/code/game/gamemodes/devil/true_devil/inventory.dm
+++ b/code/game/gamemodes/devil/true_devil/inventory.dm
@@ -1,5 +1,5 @@
-/mob/living/carbon/true_devil/unEquip(obj/item/I, force)
- if(..(I,force))
+/mob/living/carbon/true_devil/doUnEquip(obj/item/I, force)
+ if(..())
update_inv_hands()
return 1
return 0
@@ -55,4 +55,4 @@
/mob/living/carbon/true_devil/apply_overlay(cache_index)
var/image/I = devil_overlays[cache_index]
if(I)
- add_overlay(I)
\ No newline at end of file
+ add_overlay(I)
diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm
index f8305a7ac37..4b182214daa 100644
--- a/code/game/gamemodes/nuclear/nuclearbomb.dm
+++ b/code/game/gamemodes/nuclear/nuclearbomb.dm
@@ -557,12 +557,11 @@ This is here to make the tiles around the station mininuke change when it's arme
if(ismob(loc))
var/mob/M = loc
- M.remove_from_mob(src)
- if(istype(loc, /obj/item/weapon/storage))
+ M.transferItemToLoc(src, targetturf, TRUE) //nodrops disks when?
+ else if(istype(loc, /obj/item/weapon/storage))
var/obj/item/weapon/storage/S = loc
S.remove_from_storage(src, targetturf)
// move the disc, so ghosts remain orbiting it even if it's "destroyed"
- forceMove(targetturf)
return targetturf
/obj/item/weapon/disk/nuclear/Destroy(force)
diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm
index 580de6de3c3..fa48e0c6fa4 100644
--- a/code/game/gamemodes/wizard/artefact.dm
+++ b/code/game/gamemodes/wizard/artefact.dm
@@ -182,7 +182,7 @@
//Funny gimmick, skeletons always seem to wear roman/ancient armour
/obj/item/device/necromantic_stone/proc/equip_roman_skeleton(mob/living/carbon/human/H)
for(var/obj/item/I in H)
- H.unEquip(I)
+ H.dropItemToGround(I)
var/hat = pick(/obj/item/clothing/head/helmet/roman, /obj/item/clothing/head/helmet/roman/legionaire)
H.equip_to_slot_or_del(new hat(H), slot_head)
diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm
index d5d7b88848a..45f00fa7fc3 100644
--- a/code/game/gamemodes/wizard/soulstone.dm
+++ b/code/game/gamemodes/wizard/soulstone.dm
@@ -125,7 +125,7 @@
var/mob/living/carbon/T = target
if(T.client != null)
for(var/obj/item/W in T)
- T.unEquip(W)
+ T.dropItemToGround(W)
init_shade(T, user)
return 1
else
@@ -149,7 +149,7 @@
getCultGhost(T,user)
else
for(var/obj/item/W in T)
- T.unEquip(W)
+ T.dropItemToGround(W)
init_shade(T, user, vic = 1)
qdel(T)
else
@@ -258,7 +258,7 @@
return 0
T.ckey = chosen_ghost.ckey
for(var/obj/item/W in T)
- T.unEquip(W)
+ T.dropItemToGround(W)
init_shade(T, U)
qdel(T)
return 1
diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm
index e93e4967af1..e40f5cd9370 100644
--- a/code/game/gamemodes/wizard/spellbook.dm
+++ b/code/game/gamemodes/wizard/spellbook.dm
@@ -881,7 +881,7 @@
magichead.flags |= NODROP //curses!
magichead.flags_inv &= ~HIDEFACE //so you can still see their face
magichead.voicechange = 1 //NEEEEIIGHH
- if(!user.unEquip(user.wear_mask))
+ if(!user.dropItemToGround(user.wear_mask))
qdel(user.wear_mask)
user.equip_to_slot_if_possible(magichead, slot_wear_mask, 1, 1)
qdel(src)
diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm
index 0978d9434e7..e2296f498a3 100644
--- a/code/game/gamemodes/wizard/wizard.dm
+++ b/code/game/gamemodes/wizard/wizard.dm
@@ -138,7 +138,6 @@
qdel(wizard_mob.head)
qdel(wizard_mob.shoes)
for(var/obj/item/I in wizard_mob.held_items)
- wizard_mob.unEquip(I)
qdel(I)
qdel(wizard_mob.r_store)
qdel(wizard_mob.l_store)
diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm
index 0435ba143e8..a6400e2ea6e 100644
--- a/code/game/machinery/autolathe.dm
+++ b/code/game/machinery/autolathe.dm
@@ -145,7 +145,7 @@
if(!materials.has_space(material_amount))
user << "The autolathe is full. Please remove metal or glass from the autolathe in order to insert more."
return 1
- if(!user.unEquip(O))
+ if(!user.temporarilyRemoveItemFromInventory(O))
user << "\The [O] is stuck to you and cannot be placed into the autolathe."
return 1
@@ -159,10 +159,15 @@
flick("autolathe_r",src)//plays glass insertion animation
user << "You insert [inserted] sheet[inserted>1 ? "s" : ""] to the autolathe."
use_power(inserted*100)
+ if(!qdeleted(O))
+ user.put_in_active_hand(O)
else
user << "You insert a material total of [inserted] to the autolathe."
use_power(max(500,inserted/10))
qdel(O)
+ else
+ user.put_in_active_hand(O)
+
busy = 0
updateUsrDialog()
return 1
diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm
index 101700d6c05..22965fa1d64 100644
--- a/code/game/machinery/buttons.dm
+++ b/code/game/machinery/buttons.dm
@@ -68,18 +68,16 @@
if(panel_open)
if(!device && istype(W, /obj/item/device/assembly))
- if(!user.unEquip(W))
+ if(!user.transferItemToLoc(W, src))
user << "\The [W] is stuck to you!"
return
- W.loc = src
device = W
user << "You add [W] to the button."
if(!board && istype(W, /obj/item/weapon/electronics/airlock))
- if(!user.unEquip(W))
+ if(!user.transferItemToLoc(W, src))
user << "\The [W] is stuck to you!"
return
- W.loc = src
board = W
if(board.one_access)
req_one_access = board.accesses
diff --git a/code/game/machinery/gulag_teleporter.dm b/code/game/machinery/gulag_teleporter.dm
index a72eff26c00..f879f4b4c48 100644
--- a/code/game/machinery/gulag_teleporter.dm
+++ b/code/game/machinery/gulag_teleporter.dm
@@ -137,7 +137,7 @@ The console is located at computer/gulag_teleporter.dm
if(linked_reclaimer)
linked_reclaimer.stored_items[occupant] = list()
for(var/obj/item/W in occupant)
- if(!is_type_in_typecache(W, required_items) && occupant.unEquip(W))
+ if(!is_type_in_typecache(W, required_items) && occupant.temporarilyRemoveItemFromInventory(W))
if(istype(W, /obj/item/weapon/restraints/handcuffs))
W.forceMove(get_turf(src))
continue
diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm
index ac5f7ac4d65..c7cad0458f4 100644
--- a/code/game/machinery/recycler.dm
+++ b/code/game/machinery/recycler.dm
@@ -183,7 +183,7 @@ var/const/SAFETY_COOLDOWN = 100
// Remove and recycle the equipped items
if(eat_victim_items)
for(var/obj/item/I in L.get_equipped_items())
- if(L.unEquip(I))
+ if(L.dropItemToGround(I))
eat(I, sound=FALSE)
// Instantly lie down, also go unconscious from the pain, before you die.
diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm
index a5f43c7e753..d618b4167e6 100644
--- a/code/game/machinery/teleporter.dm
+++ b/code/game/machinery/teleporter.dm
@@ -39,10 +39,9 @@
if(istype(I, /obj/item/device/gps))
var/obj/item/device/gps/L = I
if(L.locked_location && !(stat & (NOPOWER|BROKEN)))
- if(!user.unEquip(L))
+ if(!user.transferItemToLoc(L, src))
user << "\the [I] is stuck to your hand, you cannot put it in \the [src]!"
return
- L.loc = src
locked = L
user << "You insert the GPS device into the [name]'s slot."
else
diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm
index a7f9125cd22..b35a1f67a0e 100644
--- a/code/game/machinery/washing_machine.dm
+++ b/code/game/machinery/washing_machine.dm
@@ -207,13 +207,12 @@
user << "The washing machine is full!"
return 1
- if(!user.unEquip(W))
+ if(!user.transferItemToLoc(W, src))
user << "\The [W] is stuck to your hand, you cannot put it in the washing machine!"
return 1
if(istype(W,/obj/item/toy/crayon) || istype(W,/obj/item/weapon/stamp))
color_source = W
- W.loc = src
update_icon()
else
diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm
index 04ba104c143..3f937cf1806 100644
--- a/code/game/mecha/mech_fabricator.dm
+++ b/code/game/mecha/mech_fabricator.dm
@@ -444,7 +444,7 @@
if(!materials.has_space(material_amount))
user << "\The [src] is full. Please remove some materials from [src] in order to insert more."
return 1
- if(!user.unEquip(W))
+ if(!user.temporarilyRemoveItemFromInventory(W))
user << "\The [W] is stuck to you and cannot be placed into [src]."
return 1
@@ -452,6 +452,7 @@
if(inserted)
user << "You insert [inserted] sheet\s into [src]."
if(W && W.materials.len)
+ user.put_in_active_hand(W)
var/mat_overlay = "fab-load-[material2name(W.materials[1])]"
add_overlay(mat_overlay)
sleep(10)
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 03eff51f755..0df72c79ca9 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -892,15 +892,14 @@
else if(mmi_as_oc.brainmob.stat)
user << "Beta-rhythm below acceptable level!"
return 0
- if(!user.unEquip(mmi_as_oc))
+ if(!user.transferItemToLoc(mmi_as_oc, src))
user << "\the [mmi_as_oc] is stuck to your hand, you cannot put it in \the [src]!"
return
var/mob/brainmob = mmi_as_oc.brainmob
occupant = brainmob
- brainmob.loc = src //should allow relaymove
+ brainmob.forceMove(src) //should allow relaymove
brainmob.reset_perspective(src)
brainmob.canmove = 1
- mmi_as_oc.loc = src
mmi_as_oc.mecha = src
icon_state = initial(icon_state)
setDir(dir_in)
diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm
index 17a28beec44..4a0e3012492 100644
--- a/code/game/mecha/mecha_construction_paths.dm
+++ b/code/game/mecha/mecha_construction_paths.dm
@@ -481,8 +481,7 @@
if(diff==FORWARD)
user.visible_message("[user] installs scanner module to the [holder].", "You install scanner module to the [holder].")
var/obj/item/I = used_atom
- user.unEquip(I)
- I.loc = holder
+ user.transferItemToLoc(I, holder, TRUE)
holder.icon_state = "gygax11"
else
user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
@@ -500,8 +499,7 @@
if(diff==FORWARD)
user.visible_message("[user] installs capacitor to the [holder].", "You install capacitor to the [holder].")
var/obj/item/I = used_atom
- user.unEquip(I)
- I.loc = holder
+ user.transferItemToLoc(I, holder, TRUE)
holder.icon_state = "gygax13"
else
user.visible_message("[user] unfastens the scanner module.", "You unfasten the scanner module.")
@@ -1068,8 +1066,7 @@
if(diff==FORWARD)
user.visible_message("[user] installs scanner module to the [holder].", "You install phasic scanner module to the [holder].")
var/obj/item/I = used_atom
- user.unEquip(I)
- I.loc = holder
+ user.transferItemToLoc(I, holder, TRUE)
holder.icon_state = "durand11"
else
user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
@@ -1087,8 +1084,7 @@
if(diff==FORWARD)
user.visible_message("[user] installs capacitor to the [holder].", "You install capacitor to the [holder].")
var/obj/item/I = used_atom
- user.unEquip(I)
- I.loc = holder
+ user.transferItemToLoc(I, holder, TRUE)
holder.icon_state = "durand13"
else
user.visible_message("[user] unfastens the scanner module.", "You unfasten the scanner module.")
@@ -1375,8 +1371,7 @@
if(diff==FORWARD)
user.visible_message("[user] installs phasic scanner module to the [holder].", "You install scanner module to the [holder].")
var/obj/item/I = used_atom
- user.unEquip(I)
- I.loc = holder
+ user.transferItemToLoc(I, holder, TRUE)
holder.icon_state = "phazon11"
else
user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
@@ -1394,8 +1389,7 @@
if(diff==FORWARD)
user.visible_message("[user] installs super capacitor to the [holder].", "You install capacitor to the [holder].")
var/obj/item/I = used_atom
- user.unEquip(I)
- I.loc = holder
+ user.transferItemToLoc(I, holder, TRUE)
holder.icon_state = "phazon13"
else
user.visible_message("[user] unfastens the phasic scanner module.", "You unfasten the scanner module.")
diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm
index 2a27a20cde4..4a0c38514d5 100644
--- a/code/game/mecha/mecha_defense.dm
+++ b/code/game/mecha/mecha_defense.dm
@@ -258,10 +258,9 @@
return 1
else if(istype(W, /obj/item/mecha_parts/mecha_tracking))
- if(!user.unEquip(W))
+ if(!user.transferItemToLoc(W, src))
user << "\the [W] is stuck to your hand, you cannot put it in \the [src]!"
return
- W.forceMove(src)
trackers += W
user.visible_message("[user] attaches [W] to [src].", "You attach [W] to [src].")
diag_hud_set_mechtracking()
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 8cb17c6357b..758dffe0c80 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -107,9 +107,10 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s
actions_types = null
/obj/item/Destroy()
+ flags &= ~DROPDEL //prevent reqdels
if(ismob(loc))
var/mob/m = loc
- m.unEquip(src, 1)
+ m.temporarilyRemoveItemFromInventory(src, TRUE)
for(var/X in actions)
qdel(X)
return ..()
@@ -235,7 +236,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s
throwing = 0
if(loc == user)
- if(!user.unEquip(src))
+ if(!user.dropItemToGround(src))
return
pickup(user)
@@ -256,7 +257,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s
throwing = 0
if(loc == user)
- if(!user.unEquip(src))
+ if(!user.dropItemToGround(src))
return
pickup(user)
@@ -269,7 +270,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s
if(!A.has_fine_manipulation)
if(src in A.contents) // To stop Aliens having items stuck in their pockets
- A.unEquip(src)
+ A.dropItemToGround(src)
user << "Your claws aren't capable of such fine manipulation!"
return
attack_paw(A)
@@ -342,8 +343,6 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s
var/datum/action/A = X
A.Remove(user)
if(DROPDEL & flags)
- //Prevents infinite loops where Destroy() calls an objects dropped() function
- flags &= ~DROPDEL
qdel(src)
// called just as an item is picked up (loc is not yet changed)
diff --git a/code/game/objects/items/candle.dm b/code/game/objects/items/candle.dm
index e9fc4c85629..742edcbe8e1 100644
--- a/code/game/objects/items/candle.dm
+++ b/code/game/objects/items/candle.dm
@@ -58,9 +58,6 @@
wax--
if(!wax)
new/obj/item/trash/candle(src.loc)
- if(istype(src.loc, /mob))
- var/mob/M = src.loc
- M.unEquip(src, 1) //src is being deleted anyway
qdel(src)
update_icon()
open_flame()
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index bee90b89cc8..83ed5db715e 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -761,10 +761,9 @@ var/global/list/obj/item/device/pda/PDAs = list()
I = C
if(I && I.registered_name)
- if(!user.unEquip(I))
+ if(!user.transferItemToLoc(I, src))
return 0
var/obj/old_id = id
- I.forceMove(src)
id = I
if(old_id)
user.put_in_hands(old_id)
@@ -774,10 +773,9 @@ var/global/list/obj/item/device/pda/PDAs = list()
// access to status display signals
/obj/item/device/pda/attackby(obj/item/C, mob/user, params)
if(istype(C, /obj/item/weapon/cartridge) && !cartridge)
- if(!user.unEquip(C))
+ if(!user.transferItemToLoc(C, src))
return
cartridge = C
- cartridge.loc = src
user << "You insert [cartridge] into [src]."
if(cartridge.radio)
cartridge.radio.hostpda = src
@@ -803,9 +801,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
return //Return in case of failed check or when successful.
updateSelfDialog()//For the non-input related code.
else if(istype(C, /obj/item/device/paicard) && !src.pai)
- if(!user.unEquip(C))
+ if(!user.transferItemToLoc(C, src))
return
- C.loc = src
pai = C
user << "You slot \the [C] into [src]."
update_icon()
@@ -814,9 +811,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
if(inserted_item)
user << "There is already \a [inserted_item] in \the [src]!"
else
- if(!user.unEquip(C))
+ if(!user.transferItemToLoc(C, src))
return
- C.forceMove(src)
user << "You slide \the [C] into \the [src]."
inserted_item = C
update_icon()
diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm
index f31ba845a36..72c957f82d9 100644
--- a/code/game/objects/items/devices/laserpointer.dm
+++ b/code/game/objects/items/devices/laserpointer.dm
@@ -41,9 +41,8 @@
/obj/item/device/laser_pointer/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/weapon/stock_parts/micro_laser))
if(!diode)
- if(!user.unEquip(W))
+ if(!user.transferItemToLoc(W, src))
return
- W.loc = src
diode = W
user << "You install a [diode.name] in [src]."
else
diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm
index 7af4de841c6..a4825e904e8 100644
--- a/code/game/objects/items/devices/lightreplacer.dm
+++ b/code/game/objects/items/devices/lightreplacer.dm
@@ -93,7 +93,7 @@
if(uses >= max_uses)
user << "[src.name] is full."
return
- if(!user.unEquip(W))
+ if(!user.temporarilyRemoveItemFromInventory(W))
return
AddUses(round(increment*0.75))
user << "You insert a shard of glass into the [src.name]. You have [uses] light\s remaining."
@@ -104,12 +104,12 @@
var/obj/item/weapon/light/L = W
if(L.status == 0) // LIGHT OKAY
if(uses < max_uses)
- if(!user.unEquip(W))
+ if(!user.temporarilyRemoveItemFromInventory(W))
return
AddUses(1)
qdel(L)
else
- if(!user.unEquip(W))
+ if(!user.temporarilyRemoveItemFromInventory(W))
return
user << "You insert the [L.name] into the [src.name]"
AddShards(1, user)
diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm
index 87c97636ab5..2f0a8fe924f 100644
--- a/code/game/objects/items/devices/radio/electropack.dm
+++ b/code/game/objects/items/devices/radio/electropack.dm
@@ -39,15 +39,13 @@
var/obj/item/assembly/shock_kit/A = new /obj/item/assembly/shock_kit( user )
A.icon = 'icons/obj/assemblies.dmi'
- if(!user.unEquip(W))
+ if(!user.transferItemToLoc(W, A))
user << "[W] is stuck to your hand, you cannot attach it to [src]!"
return
- W.loc = A
W.master = A
A.part1 = W
- user.unEquip(src)
- loc = A
+ user.transferItemToLoc(src, A, TRUE)
master = A
A.part2 = src
diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm
index 082536c038b..dfcf3642a6c 100644
--- a/code/game/objects/items/devices/radio/headset.dm
+++ b/code/game/objects/items/devices/radio/headset.dm
@@ -246,15 +246,13 @@
return
if(!keyslot)
- if(!user.unEquip(W))
+ if(!user.transferItemToLoc(W, src))
return
- W.loc = src
keyslot = W
else
- if(!user.unEquip(W))
+ if(!user.transferItemToLoc(W, src))
return
- W.loc = src
keyslot2 = W
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index e631d41c494..a1d71960879 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -581,9 +581,8 @@
return
if(!keyslot)
- if(!user.unEquip(W))
+ if(!user.transferItemToLoc(W, src))
return
- W.loc = src
keyslot = W
recalculateChannels()
diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm
index fbada58249a..81ec8249361 100644
--- a/code/game/objects/items/devices/taperecorder.dm
+++ b/code/game/objects/items/devices/taperecorder.dm
@@ -32,9 +32,8 @@
/obj/item/device/taperecorder/attackby(obj/item/I, mob/user, params)
if(!mytape && istype(I, /obj/item/device/tape))
- if(!user.unEquip(I))
+ if(!user.transferItemToLoc(I,src))
return
- I.loc = src
mytape = I
user << "You insert [I] into [src]."
update_icon()
diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm
index fe25907e07d..4f6ee0d9b4a 100644
--- a/code/game/objects/items/devices/transfer_valve.dm
+++ b/code/game/objects/items/devices/transfer_valve.dm
@@ -22,18 +22,16 @@
return
if(!tank_one)
- if(!user.unEquip(item))
+ if(!user.transferItemToLoc(item, src))
return
tank_one = item
- item.loc = src
user << "You attach the tank to the transfer valve."
if(item.w_class > w_class)
w_class = item.w_class
else if(!tank_two)
- if(!user.unEquip(item))
+ if(!user.transferItemToLoc(item, src))
return
tank_two = item
- item.loc = src
user << "You attach the tank to the transfer valve."
if(item.w_class > w_class)
w_class = item.w_class
@@ -48,9 +46,9 @@
if(attached_device)
user << "There is already a device attached to the valve, remove it first!"
return
- user.remove_from_mob(item)
+ if(!user.transferItemToLoc(item, src))
+ return
attached_device = A
- A.loc = src
user << "You attach the [item] to the valve controls and secure it."
A.holder = src
A.toggle_secure() //this calls update_icon(), which calls update_icon() on the holder (i.e. the bomb).
diff --git a/code/game/objects/items/nuke_tools.dm b/code/game/objects/items/nuke_tools.dm
index 9f9a76f604f..7fe512bfaf1 100644
--- a/code/game/objects/items/nuke_tools.dm
+++ b/code/game/objects/items/nuke_tools.dm
@@ -39,7 +39,7 @@
/obj/item/nuke_core_container/proc/load(obj/item/nuke_core/ncore, mob/user)
if(core || !istype(ncore))
return 0
- ncore.loc = src
+ ncore.forceMove(src)
core = ncore
icon_state = "core_container_loaded"
user << "Container is sealing..."
@@ -56,7 +56,7 @@
/obj/item/nuke_core_container/attackby(obj/item/nuke_core/core, mob/user)
if(istype(core))
- if(!user.unEquip(core))
+ if(!user.temporarilyRemoveItemFromInventory(core))
user << "The [core] is stuck to your hand!"
return
else
diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm
index d0c2878a990..78308b5fcdd 100644
--- a/code/game/objects/items/robot/robot_parts.dm
+++ b/code/game/objects/items/robot/robot_parts.dm
@@ -71,19 +71,18 @@
var/obj/item/weapon/ed209_assembly/B = new /obj/item/weapon/ed209_assembly
B.loc = get_turf(src)
user << "You arm the robot frame."
- if (user.get_inactive_held_item()==src)
- user.unEquip(src)
- user.put_in_inactive_hand(B)
+ var/holding_this = user.get_inactive_held_item()==src
qdel(src)
+ if (holding_this)
+ user.put_in_inactive_hand(B)
else
user << "You need one sheet of metal to start building ED-209!"
return
else if(istype(W, /obj/item/bodypart/l_leg/robot))
if(src.l_leg)
return
- if(!user.unEquip(W))
+ if(!user.transferItemToLoc(W, src))
return
- W.forceMove(src)
W.icon_state = initial(W.icon_state)
W.cut_overlays()
src.l_leg = W
@@ -92,9 +91,8 @@
else if(istype(W, /obj/item/bodypart/r_leg/robot))
if(src.r_leg)
return
- if(!user.unEquip(W))
+ if(!user.transferItemToLoc(W, src))
return
- W.forceMove(src)
W.icon_state = initial(W.icon_state)
W.cut_overlays()
src.r_leg = W
@@ -103,9 +101,8 @@
else if(istype(W, /obj/item/bodypart/l_arm/robot))
if(src.l_arm)
return
- if(!user.unEquip(W))
+ if(!user.transferItemToLoc(W, src))
return
- W.forceMove(src)
W.icon_state = initial(W.icon_state)
W.cut_overlays()
src.l_arm = W
@@ -114,9 +111,8 @@
else if(istype(W, /obj/item/bodypart/r_arm/robot))
if(src.r_arm)
return
- if(!user.unEquip(W))
+ if(!user.transferItemToLoc(W, src))
return
- W.forceMove(src)
W.icon_state = initial(W.icon_state)//in case it is a dismembered robotic limb
W.cut_overlays()
src.r_arm = W
@@ -127,9 +123,8 @@
if(src.chest)
return
if(CH.wired && CH.cell)
- if(!user.unEquip(CH))
+ if(!user.transferItemToLoc(CH, src))
return
- CH.forceMove(src)
CH.icon_state = initial(CH.icon_state) //in case it is a dismembered robotic limb
CH.cut_overlays()
src.chest = CH
@@ -148,9 +143,8 @@
if(src.head)
return
if(HD.flash2 && HD.flash1)
- if(!user.unEquip(HD))
+ if(!user.transferItemToLoc(HD, src))
return
- HD.loc = src
HD.icon_state = initial(HD.icon_state)//in case it is a dismembered robotic limb
HD.cut_overlays()
src.head = HD
@@ -191,7 +185,7 @@
user << "This [M.name] does not seem to fit!"
return
- if(!user.unEquip(W))
+ if(!user.temporarilyRemoveItemFromInventory(W))
return
var/mob/living/silicon/robot/O = new /mob/living/silicon/robot(get_turf(loc))
@@ -235,7 +229,7 @@
O.cell = chest.cell
chest.cell.loc = O
chest.cell = null
- W.loc = O//Should fix cybros run time erroring when blown up. It got deleted before, along with the frame.
+ W.forceMove(O)//Should fix cybros run time erroring when blown up. It got deleted before, along with the frame.
if(O.mmi) //we delete the mmi created by robot/New()
qdel(O.mmi)
O.mmi = W //and give the real mmi to the borg.
@@ -243,7 +237,7 @@
feedback_inc("cyborg_birth",1)
- src.loc = O
+ forceMove(O)
O.robot_suit = src
if(!locomotion)
diff --git a/code/game/objects/items/stacks/sheets/light.dm b/code/game/objects/items/stacks/sheets/light.dm
index 10132b4d423..969ebe3d9dd 100644
--- a/code/game/objects/items/stacks/sheets/light.dm
+++ b/code/game/objects/items/stacks/sheets/light.dm
@@ -22,7 +22,6 @@
var/obj/item/stack/sheet/glass/G = new (user.loc)
G.add_fingerprint(user)
if(amount <= 0)
- user.unEquip(src, 1)
qdel(src)
else if(istype(O, /obj/item/stack/sheet/metal))
diff --git a/code/game/objects/items/stacks/tiles/light.dm b/code/game/objects/items/stacks/tiles/light.dm
index 1f585f3eecc..682060e0b6a 100644
--- a/code/game/objects/items/stacks/tiles/light.dm
+++ b/code/game/objects/items/stacks/tiles/light.dm
@@ -25,7 +25,6 @@
amount--
new/obj/item/stack/light_w(user.loc)
if(amount <= 0)
- user.unEquip(src, 1)
qdel(src)
else
return ..()
\ No newline at end of file
diff --git a/code/game/objects/items/stacks/wrap.dm b/code/game/objects/items/stacks/wrap.dm
index 784219fe9a6..d743f96ea56 100644
--- a/code/game/objects/items/stacks/wrap.dm
+++ b/code/game/objects/items/stacks/wrap.dm
@@ -59,7 +59,7 @@
if(!I.can_be_package_wrapped())
return
if(user.is_holding(I))
- if(!user.unEquip(I))
+ if(!user.dropItemToGround(I))
return
else if(!isturf(I.loc))
return
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 544967eab0f..73a75a4f7cd 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -249,8 +249,6 @@
if(hacked) // That's right, we'll only check the "original" "sword".
newSaber.hacked = 1
newSaber.item_color = "rainbow"
- user.unEquip(W)
- user.unEquip(src)
qdel(W)
qdel(src)
else if(istype(W, /obj/item/device/multitool))
@@ -733,7 +731,7 @@
if(istype(I, /obj/item/toy/cards/singlecard))
var/obj/item/toy/cards/singlecard/SC = I
if(SC.parentdeck == src)
- if(!user.unEquip(SC))
+ if(!user.temporarilyRemoveItemFromInventory(SC))
user << "The card is stuck to your hand, you can't add it to the deck!"
return
cards += SC.cardname
@@ -745,7 +743,7 @@
else if(istype(I, /obj/item/toy/cards/cardhand))
var/obj/item/toy/cards/cardhand/CH = I
if(CH.parentdeck == src)
- if(!user.unEquip(CH))
+ if(!user.temporarilyRemoveItemFromInventory(CH))
user << "The hand of cards is stuck to your hand, you can't add it to the deck!"
return
cards += CH.currenthand
@@ -769,8 +767,10 @@
else if(istype(over_object, /obj/screen/inventory/hand))
var/obj/screen/inventory/hand/H = over_object
if(!remove_item_from_storage(M))
- M.unEquip(src)
- M.put_in_hand(src, H.held_index)
+ M.temporarilyRemoveItemFromInventory(src, TRUE)
+ if(!M.put_in_hand(src, H.held_index))
+ qdel(src)
+ return
usr << "You pick up the deck."
else
@@ -834,20 +834,19 @@
N.parentdeck = src.parentdeck
N.cardname = src.currenthand[1]
N.apply_card_vars(N,O)
- cardUser.unEquip(src)
+ qdel(src)
N.pickup(cardUser)
cardUser.put_in_hands(N)
cardUser << "You also take [currenthand[1]] and hold it."
cardUser << browse(null, "window=cardhand")
- qdel(src)
return
/obj/item/toy/cards/cardhand/attackby(obj/item/toy/cards/singlecard/C, mob/living/user, params)
if(istype(C))
if(C.parentdeck == src.parentdeck)
src.currenthand += C.cardname
- user.unEquip(C)
user.visible_message("[user] adds a card to [user.p_their()] hand.", "You add the [C.cardname] to your hand.")
+ qdel(C)
interact(user)
if(currenthand.len > 4)
src.icon_state = "[deckstyle]_hand5"
@@ -855,7 +854,6 @@
src.icon_state = "[deckstyle]_hand4"
else if(currenthand.len > 2)
src.icon_state = "[deckstyle]_hand3"
- qdel(C)
else
user << "You can't mix cards from other decks!"
else
@@ -923,12 +921,11 @@
H.currenthand += src.cardname
H.parentdeck = C.parentdeck
H.apply_card_vars(H,C)
- user.unEquip(C)
- H.pickup(user)
- user.put_in_active_hand(H)
user << "You combine the [C.cardname] and the [src.cardname] into a hand."
qdel(C)
qdel(src)
+ H.pickup(user)
+ user.put_in_active_hand(H)
else
user << "You can't mix cards from other decks!"
@@ -936,8 +933,8 @@
var/obj/item/toy/cards/cardhand/H = I
if(H.parentdeck == parentdeck)
H.currenthand += cardname
- user.unEquip(src)
user.visible_message("[user] adds a card to [user.p_their()] hand.", "You add the [cardname] to your hand.")
+ qdel(src)
H.interact(user)
if(H.currenthand.len > 4)
H.icon_state = "[deckstyle]_hand5"
@@ -945,7 +942,6 @@
H.icon_state = "[deckstyle]_hand4"
else if(H.currenthand.len > 2)
H.icon_state = "[deckstyle]_hand3"
- qdel(src)
else
user << "You can't mix cards from other decks!"
else
diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm
index 8fbaba9b2d3..4b84a0b529f 100644
--- a/code/game/objects/items/weapons/RCD.dm
+++ b/code/game/objects/items/weapons/RCD.dm
@@ -263,8 +263,6 @@ RCD
if((matter + R.ammoamt) > max_matter)
user << "The RCD can't hold any more matter-units!"
return
- if(!user.unEquip(W))
- return
qdel(W)
matter += R.ammoamt
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
@@ -280,24 +278,16 @@ RCD
return ..()
/obj/item/weapon/rcd/proc/loadwithsheets(obj/item/stack/sheet/S, value, mob/user)
- var/maxsheets = round((max_matter-matter)/value) //calculate the max number of sheets that will fit in RCD
- if(maxsheets > 0)
- if(S.amount > maxsheets)
- //S.amount -= maxsheets
- S.use(maxsheets)
- matter += value*maxsheets
- playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
- user << "You insert [maxsheets] [S.name] sheets into the RCD. "
- else
- matter += value*(S.amount)
- user.unEquip()
- playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
- user << "You insert [S.amount] [S.name] sheets into the RCD. "
- S.use(S.amount)
-
- return 1
- user << "You can't insert any more [S.name] sheets into the RCD!"
- return 0
+ var/maxsheets = round((max_matter-matter)/value) //calculate the max number of sheets that will fit in RCD
+ if(maxsheets > 0)
+ var/amount_to_use = min(S.amount, maxsheets)
+ S.use(amount_to_use)
+ matter += value*amount_to_use
+ playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
+ user << "You insert [amount_to_use] [S.name] sheets into the RCD. "
+ return 1
+ user << "You can't insert any more [S.name] sheets into the RCD!"
+ return 0
/obj/item/weapon/rcd/attack_self(mob/user)
//Change the mode
diff --git a/code/game/objects/items/weapons/airlock_painter.dm b/code/game/objects/items/weapons/airlock_painter.dm
index 6120cdf397b..520323abcc3 100644
--- a/code/game/objects/items/weapons/airlock_painter.dm
+++ b/code/game/objects/items/weapons/airlock_painter.dm
@@ -109,9 +109,8 @@
if(ink)
user << "[src] already contains \a [ink]."
return
- if(!user.unEquip(W))
+ if(!user.transferItemToLoc(W, src))
return
- W.loc = src
user << "You install [W] into [src]."
ink = W
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm
index 14afba478b0..2a12e095430 100644
--- a/code/game/objects/items/weapons/cigs_lighters.dm
+++ b/code/game/objects/items/weapons/cigs_lighters.dm
@@ -163,18 +163,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM
var/datum/effect_system/reagents_explosion/e = new()
e.set_up(round(reagents.get_reagent_amount("plasma") / 2.5, 1), get_turf(src), 0, 0)
e.start()
- if(ismob(loc))
- var/mob/M = loc
- M.unEquip(src, 1)
qdel(src)
return
if(reagents.get_reagent_amount("welding_fuel")) // the fuel explodes, too, but much less violently
var/datum/effect_system/reagents_explosion/e = new()
e.set_up(round(reagents.get_reagent_amount("welding_fuel") / 5, 1), get_turf(src), 0, 0)
e.start()
- if(ismob(loc))
- var/mob/M = loc
- M.unEquip(src, 1)
qdel(src)
return
// allowing reagents to react after being lit
@@ -217,7 +211,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM
new type_butt(location)
if(ismob(loc))
M << "Your [name] goes out."
- M.unEquip(src, 1) //un-equip it so the overlays can update //Force the un-equip so the overlays update
qdel(src)
return
open_flame()
@@ -566,16 +559,14 @@ CIGARETTE PACKETS ARE IN FANCY.DM
if(istype(target, /obj/item/weapon/reagent_containers/food/snacks/grown))
var/obj/item/weapon/reagent_containers/food/snacks/grown/O = target
if(O.dry)
- user.unEquip(target, 1)
- user.unEquip(src, 1)
var/obj/item/clothing/mask/cigarette/rollie/R = new /obj/item/clothing/mask/cigarette/rollie(user.loc)
R.chem_volume = target.reagents.total_volume
target.reagents.trans_to(R, R.chem_volume)
+ qdel(target)
+ qdel(src)
user.put_in_active_hand(R)
user << "You roll the [target.name] into a rolling paper."
R.desc = "Dried [target.name] rolled up in a thin piece of paper."
- qdel(target)
- qdel(src)
else
user << "You need to dry this first!"
else
@@ -707,9 +698,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM
var/datum/effect_system/reagents_explosion/e = new()
e.set_up(round(reagents.get_reagent_amount("plasma") / 2.5, 1), get_turf(src), 0, 0)
e.start()
- if(ismob(loc))
- var/mob/M = loc
- M.unEquip(src, 1)
qdel(src)
return
reagents.remove_any(REAGENTS_METABOLISM)
@@ -744,7 +732,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM
if(prob(5))//small chance for the vape to break and deal damage if it's emagged
playsound(get_turf(src), 'sound/effects/pop_expl.ogg', 50, 0)
M.apply_damage(20, BURN, "head")
- M.unEquip(src, 1)
M.Weaken(15, 1, 0)
qdel(src)
var/datum/effect_system/spark_spread/sp = new /datum/effect_system/spark_spread
diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm
index c907ecaee25..d13d469812f 100644
--- a/code/game/objects/items/weapons/defib.dm
+++ b/code/game/objects/items/weapons/defib.dm
@@ -95,9 +95,10 @@
var/mob/M = src.loc
if(istype(over_object, /obj/screen/inventory/hand))
var/obj/screen/inventory/hand/H = over_object
- if(!M.unEquip(src))
+ if(!M.temporarilyRemoveItemFromInventory(src))
return
- M.put_in_hand(src, H.held_index)
+ if(!M.put_in_hand(src, H.held_index))
+ qdel(src) //wewie
/obj/item/weapon/defibrillator/attackby(obj/item/weapon/W, mob/user, params)
@@ -112,9 +113,8 @@
if(C.maxcharge < paddles.revivecost)
user << "[src] requires a higher capacity cell."
return
- if(!user.unEquip(W))
+ if(!user.transferItemToLoc(W, src))
return
- W.loc = src
bcell = W
user << "You install a cell in [src]."
update_icon()
@@ -191,7 +191,7 @@
/obj/item/weapon/defibrillator/proc/remove_paddles(mob/user) //this fox the bug with the paddles when other player stole you the defib when you have the paddles equiped
if(ismob(paddles.loc))
var/mob/M = paddles.loc
- M.unEquip(paddles,1)
+ M.dropItemToGround(paddles, TRUE)
return
/obj/item/weapon/defibrillator/Destroy()
@@ -337,7 +337,6 @@
if(!req_defib)
return 1 //If it doesn't need a defib, just say it exists
if (!mainunit || !istype(mainunit, /obj/item/weapon/defibrillator)) //To avoid weird issues from admin spawns
- M.unEquip(O)
qdel(O)
return 0
else
diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm
index 2b0b7fd82ca..8c967290645 100644
--- a/code/game/objects/items/weapons/explosives.dm
+++ b/code/game/objects/items/weapons/explosives.dm
@@ -82,10 +82,10 @@
user << "You start planting the bomb..."
if(do_after(user, 50, target = AM))
- if(!user.unEquip(src))
+ if(!user.temporarilyRemoveItemFromInventory(src))
return
src.target = AM
- loc = null
+ forceMove(null)
var/message = "[ADMIN_LOOKUPFLW(user)] planted [name] on [target.name] at [ADMIN_COORDJMP(target)] with [timer] second fuse"
bombers += message
diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm
index 5bf785c330f..c5b1ccdceb3 100644
--- a/code/game/objects/items/weapons/flamethrower.dm
+++ b/code/game/objects/items/weapons/flamethrower.dm
@@ -98,9 +98,8 @@
return
if(igniter)
return
- if(!user.unEquip(W))
+ if(!user.transferItemToLoc(W, src))
return
- I.loc = src
igniter = I
update_icon()
return
@@ -109,10 +108,9 @@
if(ptank)
user << "There is already a plasma tank loaded in [src]!"
return
- if(!user.unEquip(W))
+ if(!user.transferItemToLoc(W, src))
return
ptank = W
- W.loc = src
update_icon()
return
diff --git a/code/game/objects/items/weapons/gift.dm b/code/game/objects/items/weapons/gift.dm
index 439ce64ea74..4da249cd4d5 100644
--- a/code/game/objects/items/weapons/gift.dm
+++ b/code/game/objects/items/weapons/gift.dm
@@ -75,9 +75,7 @@
if(!ispath(gift_type,/obj/item))
return
- var/obj/item/I = new gift_type(M)
- M.unEquip(src, 1)
- M.put_in_hands(I)
- I.add_fingerprint(M)
qdel(src)
- return
+ var/obj/item/I = new gift_type(M)
+ M.put_in_hands(I)
+ I.add_fingerprint(M)
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm
index 461dd4e9fa6..552709d3491 100644
--- a/code/game/objects/items/weapons/grenades/chem_grenade.dm
+++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm
@@ -71,10 +71,9 @@
return
else
if(I.reagents.total_volume)
- if(!user.unEquip(I))
+ if(!user.transferItemToLoc(I, src))
return
user << "You add [I] to the [initial(name)] assembly."
- I.loc = src
beakers += I
else
user << "[I] is empty!"
@@ -84,12 +83,11 @@
var/obj/item/device/assembly_holder/A = I
if(isigniter(A.a_left) == isigniter(A.a_right)) //Check if either part of the assembly has an igniter, but if both parts are igniters, then fuck it
return
- if(!user.unEquip(I))
+ if(!user.transferItemToLoc(I, src))
return
nadeassembly = A
A.master = src
- A.loc = src
assemblyattacher = user.ckey
stage_change(WIRED)
@@ -229,10 +227,9 @@
//make a special case you might as well do it explicitly. -Sayu
/obj/item/weapon/grenade/chem_grenade/large/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/slime_extract) && stage == WIRED)
- if(!user.unEquip(I))
+ if(!user.transferItemToLoc(I, src))
return
user << "You add [I] to the [initial(name)] assembly."
- I.loc = src
beakers += I
else
return ..()
diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm
index a9eaf6eec58..93f70405fb4 100644
--- a/code/game/objects/items/weapons/grenades/grenade.dm
+++ b/code/game/objects/items/weapons/grenades/grenade.dm
@@ -71,7 +71,7 @@
/obj/item/weapon/grenade/proc/update_mob()
if(ismob(loc))
var/mob/M = loc
- M.unEquip(src)
+ M.dropItemToGround(src)
/obj/item/weapon/grenade/attackby(obj/item/weapon/W, mob/user, params)
diff --git a/code/game/objects/items/weapons/grenades/plastic.dm b/code/game/objects/items/weapons/grenades/plastic.dm
index cbd62293a6e..6f6cb133612 100644
--- a/code/game/objects/items/weapons/grenades/plastic.dm
+++ b/code/game/objects/items/weapons/grenades/plastic.dm
@@ -24,11 +24,10 @@
/obj/item/weapon/grenade/plastic/attackby(obj/item/I, mob/user, params)
if(!nadeassembly && istype(I, /obj/item/device/assembly_holder))
var/obj/item/device/assembly_holder/A = I
- if(!user.unEquip(I))
+ if(!user.transferItemToLoc(I, src))
return ..()
nadeassembly = A
A.master = src
- A.loc = src
assemblyattacher = user.ckey
user << "You add [A] to the [name]."
playsound(src, 'sound/weapons/tap.ogg', 20, 1)
@@ -36,7 +35,7 @@
return
if(nadeassembly && istype(I, /obj/item/weapon/wirecutters))
playsound(src, I.usesound, 20, 1)
- nadeassembly.loc = get_turf(src)
+ nadeassembly.forceMove(get_turf(src))
nadeassembly.master = null
nadeassembly = null
update_icon()
@@ -70,13 +69,14 @@
return
if (ismob(AM))
return
+
user << "You start planting the [src]. The timer is set to [det_time]..."
if(do_after(user, 50, target = AM))
- if(!user.unEquip(src))
+ if(!user.temporarilyRemoveItemFromInventory(src))
return
src.target = AM
- loc = null
+ forceMove(null) //Yep
message_admins("[ADMIN_LOOKUPFLW(user)] planted [name] on [target.name] at [ADMIN_COORDJMP(target)] with [det_time] second fuse",0,1)
log_game("[key_name(user)] planted [name] on [target.name] at [COORD(src)] with [det_time] second fuse")
@@ -85,6 +85,8 @@
if(!nadeassembly)
user << "You plant the bomb. Timer counting down from [det_time]."
addtimer(CALLBACK(src, .proc/prime), det_time*10)
+ else
+ qdel(src) //How?
/obj/item/weapon/grenade/plastic/suicide_act(mob/user)
message_admins("[key_name_admin(user)](?) (FLW) suicided with [src] at ([user.x],[user.y],[user.z] - JMP)",0,1)
diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm
index f09b2847b9d..1bed868084a 100644
--- a/code/game/objects/items/weapons/handcuffs.dm
+++ b/code/game/objects/items/weapons/handcuffs.dm
@@ -29,13 +29,13 @@
user << "Uh... how do those things work?!"
apply_cuffs(user,user)
return
-
+
// chance of monkey retaliation
if(istype(C, /mob/living/carbon/monkey) && prob(MONKEY_CUFF_RETALIATION_PROB))
var/mob/living/carbon/monkey/M
M = C
M.retaliate(user)
-
+
if(!C.handcuffed)
if(C.get_num_arms() >= 2 || C.get_arm_ignore())
C.visible_message("[user] is trying to put [src.name] on [C]!", \
@@ -165,8 +165,7 @@
var/obj/item/stack/rods/R = I
if (R.use(1))
var/obj/item/weapon/wirerod/W = new /obj/item/weapon/wirerod
- if(!remove_item_from_storage(user))
- user.unEquip(src)
+ remove_item_from_storage(user)
user.put_in_hands(W)
user << "You wrap the cable restraint around the top of the rod."
qdel(src)
@@ -186,8 +185,7 @@
M.use(6)
user.put_in_hands(S)
user << "You make some weights out of [I] and tie them to [src]."
- if(!remove_item_from_storage(user))
- user.unEquip(src)
+ remove_item_from_storage(user)
qdel(src)
else
return ..()
diff --git a/code/game/objects/items/weapons/holy_weapons.dm b/code/game/objects/items/weapons/holy_weapons.dm
index 2bdfb032548..06fae51dbde 100644
--- a/code/game/objects/items/weapons/holy_weapons.dm
+++ b/code/game/objects/items/weapons/holy_weapons.dm
@@ -49,9 +49,8 @@
if(holy_weapon)
holy_weapon.reskinned = TRUE
- M.unEquip(src)
- M.put_in_active_hand(holy_weapon)
qdel(src)
+ M.put_in_active_hand(holy_weapon)
/obj/item/weapon/nullrod/godhand
icon_state = "disintegrate"
diff --git a/code/game/objects/items/weapons/implants/implantpad.dm b/code/game/objects/items/weapons/implants/implantpad.dm
index b528d583f0b..cf190988edf 100644
--- a/code/game/objects/items/weapons/implants/implantpad.dm
+++ b/code/game/objects/items/weapons/implants/implantpad.dm
@@ -35,9 +35,8 @@
/obj/item/weapon/implantpad/attackby(obj/item/weapon/implantcase/C, mob/user, params)
if(istype(C, /obj/item/weapon/implantcase))
if(!case)
- if(!user.unEquip(C))
+ if(!user.transferItemToLoc(C, src))
return
- C.loc = src
case = C
update_icon()
else
diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm
index 004e797d031..f7a99fa1fbd 100644
--- a/code/game/objects/items/weapons/melee/energy.dm
+++ b/code/game/objects/items/weapons/melee/energy.dm
@@ -193,8 +193,6 @@
if(hacked || other_esword.hacked)
newSaber.hacked = TRUE
newSaber.item_color = "rainbow"
- user.unEquip(W)
- user.unEquip(src)
qdel(W)
qdel(src)
user.put_in_hands(newSaber)
diff --git a/code/game/objects/items/weapons/pneumaticCannon.dm b/code/game/objects/items/weapons/pneumaticCannon.dm
index badd8097791..a89accdaf61 100644
--- a/code/game/objects/items/weapons/pneumaticCannon.dm
+++ b/code/game/objects/items/weapons/pneumaticCannon.dm
@@ -61,12 +61,11 @@
if(IW.w_class > src.w_class)
user << "\The [IW] is too large to fit into \the [src]!"
return
- if(!user.unEquip(W))
+ if(!user.transferItemToLoc(W, src))
return
user << "You load \the [IW] into \the [src]."
loadedItems.Add(IW)
loadedWeightClass += IW.w_class
- IW.loc = src
@@ -147,11 +146,10 @@
if(src.tank)
user << "\The [src] already has a tank."
return
- if(!user.unEquip(thetank))
+ if(!user.transferItemToLoc(thetank, src))
return
user << "You hook \the [thetank] up to \the [src]."
src.tank = thetank
- thetank.loc = src
src.update_icons()
/obj/item/weapon/pneumatic_cannon/proc/update_icons()
diff --git a/code/game/objects/items/weapons/powerfist.dm b/code/game/objects/items/weapons/powerfist.dm
index 3c6b809ec7b..f6f4325b574 100644
--- a/code/game/objects/items/weapons/powerfist.dm
+++ b/code/game/objects/items/weapons/powerfist.dm
@@ -63,11 +63,10 @@
if(tank)
user << "\The [src] already has a tank."
return
- if(!user.unEquip(thetank))
+ if(!user.transferItemToLoc(thetank, src))
return
user << "You hook \the [thetank] up to \the [src]."
tank = thetank
- thetank.forceMove(src)
/obj/item/weapon/melee/powerfist/attack(mob/living/target, mob/living/user)
diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm
index 0e92e0c4314..2577e3f0b8e 100644
--- a/code/game/objects/items/weapons/storage/bags.dm
+++ b/code/game/objects/items/weapons/storage/bags.dm
@@ -194,7 +194,7 @@
break
if(!inserted || !S.amount)
- usr.unEquip(S)
+ usr.dropItemToGround(S)
if (usr.client && usr.s_active != src)
usr.client.screen -= S
S.dropped(usr)
diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm
index f8606ae6de9..ebdf0bc3d48 100644
--- a/code/game/objects/items/weapons/storage/firstaid.dm
+++ b/code/game/objects/items/weapons/storage/firstaid.dm
@@ -140,9 +140,11 @@
return ..()
if(!M.restrained() && !M.stat && istype(over_object, /obj/screen/inventory/hand))
var/obj/screen/inventory/hand/H = over_object
- if(!M.unEquip(src))
+ if(!M.temporarilyRemoveItemFromInventory(src))
+ return
+ if(!M.put_in_hand(src,H.held_index))
+ qdel(src)
return
- M.put_in_hand(src,H.held_index)
src.add_fingerprint(usr)
return
if(over_object == usr && in_range(src, usr) || usr.contents.Find(src))
diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm
index 067dd23ce35..b9169e8e05b 100644
--- a/code/game/objects/items/weapons/storage/storage.dm
+++ b/code/game/objects/items/weapons/storage/storage.dm
@@ -57,9 +57,11 @@
if(istype(over_object, /obj/screen/inventory/hand))
var/obj/screen/inventory/hand/H = over_object
- if(!M.unEquip(src))
+ if(!M.temporarilyRemoveItemFromInventory(src))
+ return
+ if(!M.put_in_hand(src,H.held_index))
+ qdel(src)
return
- M.put_in_hand(src,H.held_index)
add_fingerprint(usr)
@@ -303,13 +305,14 @@
if(!istype(W))
return 0
if(usr)
- if(!usr.unEquip(W))
+ if(!usr.transferItemToLoc(W, src))
return 0
+ else
+ W.forceMove(src)
if(silent)
prevent_warning = 1
if(W.pulledby)
W.pulledby.stop_pulling()
- W.loc = src
W.on_enter_storage(src)
if(usr)
if(usr.client && usr.s_active != src)
diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm
index 8e2c05d5ac4..77e34871406 100644
--- a/code/game/objects/items/weapons/stunbaton.dm
+++ b/code/game/objects/items/weapons/stunbaton.dm
@@ -73,9 +73,8 @@
if(C.maxcharge < hitcost)
user << "[src] requires a higher capacity cell."
return
- if(!user.unEquip(W))
+ if(!user.transferItemToLoc(W, src))
return
- W.loc = src
bcell = W
user << "You install a cell in [src]."
update_icon()
diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm
index 6ad20fc8f42..9617f8820a5 100644
--- a/code/game/objects/items/weapons/tanks/tank_types.dm
+++ b/code/game/objects/items/weapons/tanks/tank_types.dm
@@ -95,10 +95,10 @@
var/obj/item/weapon/flamethrower/F = W
if ((!F.status)||(F.ptank))
return
+ if(!user.transferItemToLoc(src, F))
+ return
src.master = F
F.ptank = src
- user.unEquip(src)
- src.loc = F
F.update_icon()
else
return ..()
diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm
index 4c2f7c5a5d7..d1025186ed6 100644
--- a/code/game/objects/items/weapons/tanks/tanks.dm
+++ b/code/game/objects/items/weapons/tanks/tanks.dm
@@ -118,7 +118,7 @@
playsound(loc, 'sound/effects/spray.ogg', 10, 1, -3)
if (H && !qdeleted(H))
for(var/obj/item/W in H)
- H.unEquip(W)
+ H.dropItemToGround(W)
if(prob(50))
step(W, pick(alldirs))
H.hair_style = "Bald"
diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm
index d944ab6f5c0..f6900215f43 100644
--- a/code/game/objects/items/weapons/tanks/watertank.dm
+++ b/code/game/objects/items/weapons/tanks/watertank.dm
@@ -67,14 +67,12 @@
/obj/item/weapon/watertank/proc/remove_noz()
if(ismob(noz.loc))
var/mob/M = noz.loc
- M.unEquip(noz, 1)
+ M.temporarilyRemoveItemFromInventory(noz, TRUE)
return
/obj/item/weapon/watertank/Destroy()
if (on)
- remove_noz()
qdel(noz)
- noz = null
return ..()
/obj/item/weapon/watertank/attack_hand(mob/user)
@@ -87,7 +85,7 @@
var/mob/M = src.loc
if(istype(M) && istype(over_object, /obj/screen/inventory/hand))
var/obj/screen/inventory/hand/H = over_object
- if(!M.unEquip(src))
+ if(!M.temporarilyRemoveItemFromInventory(src))
return
M.put_in_hand(src, H.held_index)
@@ -138,8 +136,7 @@
/proc/check_tank_exists(parent_tank, mob/living/carbon/human/M, obj/O)
if (!parent_tank || !istype(parent_tank, /obj/item/weapon/watertank)) //To avoid weird issues from admin spawns
- M.unEquip(O)
- qdel(0)
+ qdel(O)
return 0
else
return 1
diff --git a/code/game/objects/items/weapons/teleprod.dm b/code/game/objects/items/weapons/teleprod.dm
index c827ee91e73..7736dc2ff2c 100644
--- a/code/game/objects/items/weapons/teleprod.dm
+++ b/code/game/objects/items/weapons/teleprod.dm
@@ -30,13 +30,11 @@
if(istype(I, /obj/item/weapon/ore/bluespace_crystal))
if(!bcell)
var/obj/item/weapon/melee/baton/cattleprod/teleprod/S = new /obj/item/weapon/melee/baton/cattleprod/teleprod
- if(!remove_item_from_storage(user))
- user.unEquip(src)
- user.unEquip(I)
+ remove_item_from_storage(user)
+ qdel(src)
+ qdel(I)
user.put_in_hands(S)
user << "You place the bluespace crystal firmly into the igniter."
- qdel(I)
- qdel(src)
else
user.visible_message("You can't put the crystal onto the stunprod while it has a power cell installed!")
else
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index faf292516e5..c2467177804 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -73,9 +73,8 @@
playsound(get_turf(user),'sound/items/change_drill.ogg',50,1)
var/obj/item/weapon/wirecutters/power/s_drill = new /obj/item/weapon/screwdriver/power
user << "You attach the screw driver bit to [src]."
- user.unEquip(src)
- user.put_in_active_hand(s_drill)
qdel(src)
+ user.put_in_active_hand(s_drill)
/obj/item/weapon/wrench/power/suicide_act(mob/user)
user.visible_message("[user] is pressing [src] against [user.p_their()] head! It looks like [user.p_theyre()] trying to commit suicide!")
@@ -106,7 +105,7 @@
return
for(var/obj/item/W in user)
- user.unEquip(W)
+ user.dropItemToGround(W)
var/obj/item/weapon/wrench/medical/W = new /obj/item/weapon/wrench/medical(loc)
W.add_fingerprint(user)
@@ -203,9 +202,8 @@
playsound(get_turf(user),'sound/items/change_drill.ogg',50,1)
var/obj/item/weapon/wrench/power/b_drill = new /obj/item/weapon/wrench/power
user << "You attach the bolt driver bit to [src]."
- user.unEquip(src)
- user.put_in_active_hand(b_drill)
qdel(src)
+ user.put_in_active_hand(b_drill)
/obj/item/weapon/screwdriver/cyborg
name = "powered screwdriver"
@@ -302,9 +300,8 @@
playsound(get_turf(user),"sound/items/change_jaws.ogg",50,1)
var/obj/item/weapon/crowbar/power/pryjaws = new /obj/item/weapon/crowbar/power
user << "You attach the pry jaws to [src]."
- user.unEquip(src)
- user.put_in_active_hand(pryjaws)
qdel(src)
+ user.put_in_active_hand(pryjaws)
/*
* Welding Tool
*/
@@ -561,8 +558,7 @@
if (R.use(1))
var/obj/item/weapon/flamethrower/F = new /obj/item/weapon/flamethrower(user.loc)
if(!remove_item_from_storage(F))
- user.unEquip(src)
- loc = F
+ user.transferItemToLoc(src, F, TRUE)
F.weldtool = src
add_fingerprint(user)
user << "You add a rod to a welder, starting to build a flamethrower."
@@ -742,6 +738,5 @@
playsound(get_turf(user),"sound/items/change_jaws.ogg",50,1)
var/obj/item/weapon/wirecutters/power/cutjaws = new /obj/item/weapon/wirecutters/power
user << "You attach the cutting jaws to [src]."
- user.unEquip(src)
- user.put_in_active_hand(cutjaws)
qdel(src)
+ user.put_in_active_hand(cutjaws)
diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm
index d894da44792..45e969fe5ac 100644
--- a/code/game/objects/items/weapons/twohanded.dm
+++ b/code/game/objects/items/weapons/twohanded.dm
@@ -182,13 +182,13 @@
/obj/item/weapon/twohanded/required/wield(mob/living/carbon/user)
..()
if(!wielded)
- user.unEquip(src)
+ user.dropItemToGround(src)
/obj/item/weapon/twohanded/required/unwield(mob/living/carbon/user, show_message = TRUE)
if(show_message)
user << "You drop [src]."
..(user, FALSE)
- user.unEquip(src)
+ user.dropItemToGround(src)
/*
* Fireaxe
diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm
index 9f5a5fca8a8..4d4c51ee9bf 100644
--- a/code/game/objects/items/weapons/weaponry.dm
+++ b/code/game/objects/items/weapons/weaponry.dm
@@ -219,26 +219,24 @@ var/highlander_claymores = 0
if(istype(I, /obj/item/weapon/shard))
var/obj/item/weapon/twohanded/spear/S = new /obj/item/weapon/twohanded/spear
- if(!remove_item_from_storage(user))
- user.unEquip(src)
- user.unEquip(I)
+ remove_item_from_storage(user)
+ qdel(I)
+ qdel(src)
user.put_in_hands(S)
user << "You fasten the glass shard to the top of the rod with the cable."
- qdel(I)
- qdel(src)
else if(istype(I, /obj/item/device/assembly/igniter) && !(I.flags & NODROP))
var/obj/item/weapon/melee/baton/cattleprod/P = new /obj/item/weapon/melee/baton/cattleprod
- if(!remove_item_from_storage(user))
- user.unEquip(src)
- user.unEquip(I)
+ remove_item_from_storage(user)
- user.put_in_hands(P)
user << "You fasten [I] to the top of the rod with the cable."
+
qdel(I)
qdel(src)
+
+ user.put_in_hands(P)
else
return ..()
diff --git a/code/game/objects/structures/artstuff.dm b/code/game/objects/structures/artstuff.dm
index 07e16b77988..b4e80bf9dad 100644
--- a/code/game/objects/structures/artstuff.dm
+++ b/code/game/objects/structures/artstuff.dm
@@ -19,7 +19,7 @@
/obj/structure/easel/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/canvas))
var/obj/item/weapon/canvas/C = I
- user.unEquip(C)
+ user.dropItemToGround(C)
painting = C
C.loc = get_turf(src)
C.layer = layer+0.1
diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm
index 02d4b072fc4..b16d566d82e 100644
--- a/code/game/objects/structures/beds_chairs/chair.dm
+++ b/code/game/objects/structures/beds_chairs/chair.dm
@@ -254,7 +254,6 @@
if(remaining_mats)
for(var/M=1 to remaining_mats)
new stack_type(get_turf(loc))
- user.unEquip(src,1) //Even NODROP chairs are destroyed.
qdel(src)
diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm
index fac248ed1da..8c724c77c77 100644
--- a/code/game/objects/structures/displaycase.dm
+++ b/code/game/objects/structures/displaycase.dm
@@ -213,8 +213,7 @@
else if(istype(I, /obj/item/weapon/electronics/airlock))
user << "You start installing the electronics into [src]..."
playsound(src.loc, I.usesound, 50, 1)
- if(user.unEquip(I) && do_after(user, 30, target = src))
- I.loc = src
+ if(do_after(user, 30, target = src) && user.transferItemToLoc(I,src))
electronics = I
user << "You install the airlock electronics."
diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm
index 061599ae73c..07f9e27036d 100644
--- a/code/game/objects/structures/noticeboard.dm
+++ b/code/game/objects/structures/noticeboard.dm
@@ -29,9 +29,8 @@
user << "You are not authorized to add notices"
return
if(notices < 5)
- if(!user.unEquip(O))
+ if(!user.transferItemToLoc(O, src))
return
- O.loc = src
notices++
icon_state = "nboard0[notices]"
user << "You pin the [O] to the noticeboard."
diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm
index 86a1ff5dfe7..e0f3eb437bf 100644
--- a/code/modules/admin/secrets.dm
+++ b/code/modules/admin/secrets.dm
@@ -419,7 +419,7 @@
var/forename = names.len > 1 ? names[2] : names[1]
var/newname = "[forename]-[pick(honorifics["[H.gender]"])]"
H.fully_replace_character_name(H.real_name,newname)
- H.unEquip(H.w_uniform)
+ H.temporarilyRemoveItemFromInventory(H.w_uniform, TRUE)
H.equip_to_slot_or_del(I, slot_w_uniform)
I.flags |= NODROP
else
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 1b7cc509f99..00a3202b1fe 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -1347,12 +1347,7 @@
return
for(var/obj/item/I in M)
- M.unEquip(I)
- if(I)
- I.loc = M.loc
- I.layer = initial(I.layer)
- I.plane = initial(I.plane)
- I.dropped(M)
+ M.dropItemToGround(I, TRUE)
M.Paralyse(5)
sleep(5)
@@ -1378,12 +1373,7 @@
return
for(var/obj/item/I in M)
- M.unEquip(I)
- if(I)
- I.loc = M.loc
- I.layer = initial(I.layer)
- I.plane = initial(I.plane)
- I.dropped(M)
+ M.dropItemToGround(I, TRUE)
M.Paralyse(5)
sleep(5)
@@ -1432,12 +1422,7 @@
return
for(var/obj/item/I in M)
- M.unEquip(I)
- if(I)
- I.loc = M.loc
- I.layer = initial(I.layer)
- I.plane = initial(I.plane)
- I.dropped(M)
+ M.dropItemToGround(I, TRUE)
if(ishuman(M))
var/mob/living/carbon/human/observer = M
diff --git a/code/modules/admin/verbs/onlyone.dm b/code/modules/admin/verbs/onlyone.dm
index 3b4c5066d03..9a332042e8d 100644
--- a/code/modules/admin/verbs/onlyone.dm
+++ b/code/modules/admin/verbs/onlyone.dm
@@ -101,7 +101,7 @@ var/highlander = FALSE
var/obj/item/slot_item_ID = H.get_item_by_slot(slot_wear_id)
qdel(slot_item_ID)
var/obj/item/slot_item_hand = H.get_item_for_held_index(2)
- H.unEquip(slot_item_hand)
+ H.dropItemToGround(slot_item_hand)
var /obj/item/weapon/multisword/multi = new(H)
H.put_in_hands_or_del(multi)
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index 530f249c23e..5169fd490b8 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -10,7 +10,7 @@
return
for(var/obj/item/W in M)
- if(!M.unEquip(W))
+ if(!M.dropItemToGround(W))
qdel(W)
M.regenerate_icons()
diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm
index 192a1712b0d..96f3bddba2d 100644
--- a/code/modules/assembly/bomb.dm
+++ b/code/modules/assembly/bomb.dm
@@ -91,8 +91,9 @@
var/obj/item/device/onetankbomb/R = new /obj/item/device/onetankbomb(loc)
- M.remove_from_mob(src) //Remove the tank from your character,in case you were holding it
- M.put_in_hands(R) //Equips the bomb if possible, or puts it on the floor.
+ M.temporarilyRemoveItemFromInventory(src, TRUE) //Remove the tank from your character,in case you were holding it
+ if(!M.put_in_hands(R)) //Equips the bomb if possible, or puts it on the floor.
+ forceMove(M.loc)
R.bombassembly = S //Tell the bomb about its assembly part
S.master = R //Tell the assembly about its new owner
diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm
index b2ed47d2eb4..da49525d3f1 100644
--- a/code/modules/assembly/holder.dm
+++ b/code/modules/assembly/holder.dm
@@ -26,8 +26,9 @@
/obj/item/device/assembly_holder/proc/attach(obj/item/device/assembly/A, mob/user)
if(!A.remove_item_from_storage(src))
if(user)
- user.remove_from_mob(A)
- A.loc = src
+ user.transferItemToLoc(A, src)
+ else
+ A.forceMove(src)
A.holder = src
A.toggle_secure()
if(!a_left)
diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm
index ac72db5df55..b1ce7612734 100644
--- a/code/modules/atmospherics/machinery/airalarm.dm
+++ b/code/modules/atmospherics/machinery/airalarm.dm
@@ -691,7 +691,7 @@
return
if(0)
if(istype(W, /obj/item/weapon/electronics/airalarm))
- if(user.unEquip(W))
+ if(user.temporarilyRemoveItemFromInventory(W))
user << "You insert the circuit."
buildstage = 1
update_icon()
diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm
index 0c9a98397dc..c9bdd58a301 100644
--- a/code/modules/awaymissions/capture_the_flag.dm
+++ b/code/modules/awaymissions/capture_the_flag.dm
@@ -55,7 +55,7 @@
user << "You can't move your own flag!"
return
if(loc == user)
- if(!user.unEquip(src))
+ if(!user.dropItemToGround(src))
return
anchored = FALSE
pickup(user)
@@ -249,8 +249,7 @@
if(istype(I, /obj/item/weapon/twohanded/ctf))
var/obj/item/weapon/twohanded/ctf/flag = I
if(flag.team != src.team)
- user.unEquip(flag)
- flag.loc = get_turf(flag.reset)
+ user.transferItemToLoc(flag, get_turf(flag.reset), TRUE)
points++
for(var/mob/M in player_list)
var/area/mob_area = get_area(M)
@@ -266,7 +265,7 @@
M << "[team] team wins!"
M << "The game has been reset! Teams have been cleared. The machines will be active again in 30 seconds."
for(var/obj/item/weapon/twohanded/ctf/W in M)
- M.unEquip(W)
+ M.dropItemToGround(W)
M.dust()
for(var/obj/machinery/control_point/control in machines)
control.icon_state = "dominator"
@@ -563,7 +562,6 @@
var/outfit = CTF.ctf_gear
var/datum/outfit/O = new outfit
for(var/obj/item/weapon/gun/G in M)
- M.unEquip(G)
qdel(G)
O.equip(M)
M << "Ammunition reloaded!"
diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm
index dd14b2f6b37..5a5ffe2e5fc 100644
--- a/code/modules/clothing/chameleon.dm
+++ b/code/modules/clothing/chameleon.dm
@@ -59,7 +59,7 @@
if(new_headgear)
// Force drop the item in the headslot, even though
// it's NODROP
- D.unEquip(target, 1)
+ D.dropItemToGround(target, TRUE)
qdel(old_headgear)
// where is `slot_head` defined? WHO KNOWS
D.equip_to_slot(new_headgear, slot_head)
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index ae1aef243a6..3df446c4c8b 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -46,9 +46,11 @@
if(!M.restrained() && !M.stat && loc == M && istype(over_object, /obj/screen/inventory/hand))
var/obj/screen/inventory/hand/H = over_object
- if(!M.unEquip(src))
+ if(!M.temporarilyRemoveItemFromInventory(src))
+ return
+ if(!M.put_in_hand(src, H.held_index))
+ qdel(src)
return
- M.put_in_hand(src, H.held_index)
add_fingerprint(usr)
/obj/item/clothing/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback)
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index 78e5c03e526..7da319ce6e8 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -246,13 +246,12 @@
var/obj/item/device/flashlight/seclite/S = I
if(can_flashlight)
if(!F)
- if(!user.unEquip(S))
+ if(!user.transferItemToLoc(S, src))
return
user << "You click [S] into place on [src]."
if(S.on)
SetLuminosity(0)
F = S
- S.loc = src
update_icon()
update_helmlight(user)
verbs += /obj/item/clothing/head/helmet/proc/toggle_helmlight
diff --git a/code/modules/clothing/shoes/bananashoes.dm b/code/modules/clothing/shoes/bananashoes.dm
index 0167f9f8347..64cc93517dd 100644
--- a/code/modules/clothing/shoes/bananashoes.dm
+++ b/code/modules/clothing/shoes/bananashoes.dm
@@ -41,7 +41,7 @@
if(!bananium.get_item_material_amount(O))
user << "This item has no bananium!"
return
- if(!user.unEquip(O))
+ if(!user.dropItemToGround(O))
user << "You can't drop [O]!"
return
diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm
index a0475112582..46ac98b2246 100644
--- a/code/modules/clothing/spacesuits/chronosuit.dm
+++ b/code/modules/clothing/spacesuits/chronosuit.dm
@@ -128,7 +128,7 @@
exposed += user.held_items
for(var/exposed_item in exposed)
var/obj/item/exposed_I = exposed_item
- if(exposed_I && !(exposed_I.type in chronosafe_items) && user.unEquip(exposed_I))
+ if(exposed_I && !(exposed_I.type in chronosafe_items) && user.dropItemToGround(exposed_I))
user << "Your [exposed_I.name] got left behind."
user.ExtinguishMob()
diff --git a/code/modules/clothing/spacesuits/flightsuit.dm b/code/modules/clothing/spacesuits/flightsuit.dm
index 16d0d9381e6..fe099ed9a91 100644
--- a/code/modules/clothing/spacesuits/flightsuit.dm
+++ b/code/modules/clothing/spacesuits/flightsuit.dm
@@ -796,43 +796,38 @@
var/obj/item/weapon/stock_parts/S = I
if(istype(S, /obj/item/weapon/stock_parts/manipulator))
usermessage("[I] has been sucessfully installed into systems.")
- if(user.unEquip(I))
+ if(user.transferItemToLoc(I, src))
if(part_manip)
part_manip.forceMove(get_turf(src))
part_manip = null
- I.loc = src
part_manip = I
if(istype(S, /obj/item/weapon/stock_parts/scanning_module))
usermessage("[I] has been sucessfully installed into systems.")
- if(user.unEquip(I))
+ if(user.transferItemToLoc(I, src))
if(part_scan)
part_scan.forceMove(get_turf(src))
part_scan = null
- I.loc = src
part_scan = I
if(istype(S, /obj/item/weapon/stock_parts/micro_laser))
usermessage("[I] has been sucessfully installed into systems.")
- if(user.unEquip(I))
+ if(user.transferItemToLoc(I, src))
if(part_laser)
part_laser.forceMove(get_turf(src))
part_laser = null
- I.loc = src
part_laser = I
if(istype(S, /obj/item/weapon/stock_parts/matter_bin))
usermessage("[I] has been sucessfully installed into systems.")
- if(user.unEquip(I))
+ if(user.transferItemToLoc(I, src))
if(part_bin)
part_bin.forceMove(get_turf(src))
part_bin = null
- I.loc = src
part_bin = I
if(istype(S, /obj/item/weapon/stock_parts/capacitor))
usermessage("[I] has been sucessfully installed into systems.")
- if(user.unEquip(I))
+ if(user.transferItemToLoc(I, src))
if(part_cap)
part_cap.forceMove(get_turf(src))
part_cap = null
- I.loc = src
part_cap = I
update_parts()
..()
@@ -1084,7 +1079,7 @@
pack.flags &= ~NODROP
resync()
if(user)
- user.unEquip(pack, 1)
+ user.transferItemToLoc(pack, src, TRUE)
user.update_inv_wear_suit()
user.visible_message("[user]'s [pack.name] detaches from their back and retracts into their [src]!")
pack.loc = src
@@ -1115,7 +1110,7 @@
shoes.flags &= ~NODROP
playsound(src.loc, 'sound/mecha/mechmove03.ogg', 50, 1)
if(user)
- user.unEquip(shoes, 1)
+ user.transferItemToLoc(shoes, src, TRUE)
user.update_inv_wear_suit()
user.visible_message("[user]'s [shoes.name] retracts back into their [name]!")
shoes.loc = src
@@ -1151,7 +1146,7 @@
usermessage("You detach the flightpack.")
/obj/item/clothing/suit/space/hardsuit/flightsuit/proc/attach_pack(obj/item/device/flightpack/F)
- F.loc = src
+ F.forceMove(src)
pack = F
pack.relink_suit(src)
usermessage("You attach and fasten the flightpack.")
@@ -1163,7 +1158,7 @@
usermessage("You detach the flight shoes.")
/obj/item/clothing/suit/space/hardsuit/flightsuit/proc/attach_shoes(obj/item/clothing/shoes/flightshoes/S)
- S.loc = src
+ S.forceMove(src)
shoes = S
shoes.relink_suit(src)
usermessage("You attach and fasten a pair of flight shoes.")
@@ -1229,14 +1224,14 @@
addmsg += english_list(addmsglist)
usermessage("The flightpack you are trying to install is not fully assembled and operational![addmsg].", 1)
return FALSE
- if(user.unEquip(F))
+ if(user.temporarilyRemoveItemFromInventory(F))
attach_pack(F)
if(istype(I, /obj/item/clothing/shoes/flightshoes))
var/obj/item/clothing/shoes/flightshoes/S = I
if(shoes)
usermessage("There are already shoes installed!", 1)
return FALSE
- if(user.unEquip(S))
+ if(user.temporarilyRemoveItemFromInventory(S))
attach_shoes(S)
..()
diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm
index ca4687e27ea..775245d678b 100644
--- a/code/modules/clothing/spacesuits/hardsuit.dm
+++ b/code/modules/clothing/spacesuits/hardsuit.dm
@@ -103,9 +103,8 @@
user << "You cannot install the upgrade to [src] while wearing it."
return
- if(user.unEquip(I))
+ if(user.transferItemToLoc(I, src))
jetpack = I
- I.loc = src
user << "You successfully install the jetpack into [src]."
else if(istype(I, /obj/item/weapon/screwdriver))
diff --git a/code/modules/clothing/suits/toggles.dm b/code/modules/clothing/suits/toggles.dm
index 32ed6b1ae1c..a643d83149e 100644
--- a/code/modules/clothing/suits/toggles.dm
+++ b/code/modules/clothing/suits/toggles.dm
@@ -37,9 +37,10 @@
suittoggled = 0
if(ishuman(hood.loc))
var/mob/living/carbon/H = hood.loc
- H.unEquip(hood, 1)
+ H.transferItemToLoc(hood, src, TRUE)
H.update_inv_wear_suit()
- hood.loc = src
+ else
+ hood.forceMove(src)
for(var/X in actions)
var/datum/action/A = X
A.UpdateButtonIcon()
@@ -163,11 +164,12 @@
var/mob/living/carbon/H = helmet.loc
if(helmet.on)
helmet.attack_self(H)
- H.unEquip(helmet, 1)
+ H.transferItemToLoc(helmet, src, TRUE)
H.update_inv_wear_suit()
H << "The helmet on the hardsuit disengages."
playsound(src.loc, 'sound/mecha/mechmove03.ogg', 50, 1)
- helmet.loc = src
+ else
+ helmet.forceMove(src)
/obj/item/clothing/suit/space/hardsuit/dropped()
..()
diff --git a/code/modules/detectivework/evidence.dm b/code/modules/detectivework/evidence.dm
index cd4d7feddbc..27a1110328c 100644
--- a/code/modules/detectivework/evidence.dm
+++ b/code/modules/detectivework/evidence.dm
@@ -38,7 +38,7 @@
var/obj/item/weapon/storage/U = I.loc
U.remove_from_storage(I, src)
if(user.is_holding(I))
- user.unEquip(I)
+ user.dropItemToGround(I)
else
return
diff --git a/code/modules/events/wizard/curseditems.dm b/code/modules/events/wizard/curseditems.dm
index 099639d202b..593ad93d8a9 100644
--- a/code/modules/events/wizard/curseditems.dm
+++ b/code/modules/events/wizard/curseditems.dm
@@ -49,7 +49,7 @@
if(loadout[i])
var/obj/item/J = loadout[i]
var/obj/item/I = new J //dumb but required because of byond throwing a fit anytime new gets too close to a list
- H.unEquip(slots[i])
+ H.temporarilyRemoveItemFromInventory(slots[i], TRUE)
H.equip_to_slot_or_del(I, wearslots[i])
I.flags |= NODROP
I.name = "cursed " + I.name
diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm
index 9d5a63a9e4d..492a95831be 100644
--- a/code/modules/food_and_drinks/food/customizables.dm
+++ b/code/modules/food_and_drinks/food/customizables.dm
@@ -46,12 +46,11 @@
else if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/pizzaslice/custom) || istype(I, /obj/item/weapon/reagent_containers/food/snacks/cakeslice/custom))
user << "Adding [I.name] to [src] would make a mess."
else
- if(!user.unEquip(I))
+ if(!user.transferItemToLoc(I, src))
return
if(S.trash)
S.generate_trash(get_turf(user))
ingredients += S
- S.loc = src
mix_filling_color(S)
S.reagents.trans_to(src,min(S.reagents.total_volume, 15)) //limit of 15, we don't want our custom food to be completely filled by just one ingredient with large reagent volume.
update_overlays(S)
@@ -86,7 +85,6 @@
contents += O
if(I && user)
attackby(I, user)
- user.unEquip(BASE)
qdel(BASE)
/obj/item/weapon/reagent_containers/food/snacks/customizable/proc/mix_filling_color(obj/item/weapon/reagent_containers/food/snacks/S)
diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm
index 937a2d5f4da..7ad3b82c426 100644
--- a/code/modules/food_and_drinks/food/snacks.dm
+++ b/code/modules/food_and_drinks/food/snacks.dm
@@ -25,10 +25,9 @@
if(!usr)
return
if(!reagents.total_volume)
- usr.unEquip(src) //so icons update :[
var/obj/item/trash_item = generate_trash(usr)
- usr.put_in_hands(trash_item)
qdel(src)
+ usr.put_in_hands(trash_item)
/obj/item/weapon/reagent_containers/food/snacks/attack_self(mob/user)
@@ -42,7 +41,6 @@
eatverb = pick("bite","chew","nibble","gnaw","gobble","chomp")
if(!reagents.total_volume) //Shouldn't be needed but it checks to see if it has anything left in it.
user << "None of [src] left, oh no!"
- M.unEquip(src) //so icons update :[
qdel(src)
return 0
if(iscarbon(M))
@@ -318,7 +316,7 @@
user << "[src] is full."
return 0
user << "You slip [W] inside [src]."
- user.unEquip(W)
+ user.transferItemToLoc(W, src)
add_fingerprint(user)
contents += W
stored_item = 1
diff --git a/code/modules/food_and_drinks/kitchen_machinery/juicer.dm b/code/modules/food_and_drinks/kitchen_machinery/juicer.dm
index b732e1bf4dc..a2ed2fd1415 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/juicer.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/juicer.dm
@@ -46,10 +46,9 @@
if (beaker)
return 1
else
- if(!user.unEquip(O))
+ if(!user.transferItemToLoc(O, src))
user << "\the [O] is stuck to your hand, you cannot put it in \the [src]!"
return 0
- O.loc = src
beaker = O
src.verbs += /obj/machinery/juicer/verb/detach
update_icon()
@@ -58,10 +57,9 @@
if (!is_type_in_list(O, allowed_items))
user << "This object contains no fluid or extractable reagents."
return 1
- if(!user.unEquip(O))
+ if(!user.transferItemToLoc(O, src))
user << "\the [O] is stuck to your hand, you cannot put it in \the [src]!"
return 0
- O.loc = src
src.updateUsrDialog()
return 0
diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
index 20c2c28515d..7b5699b8a82 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
@@ -147,14 +147,14 @@
/obj/machinery/smartfridge/proc/load(obj/item/O)
if(istype(O.loc,/mob))
var/mob/M = O.loc
- if(!M.unEquip(O))
+ if(!M.transferItemToLoc(O, src))
usr << "\the [O] is stuck to your hand, you cannot put it in \the [src]!"
return
- else if(istype(O.loc,/obj/item/weapon/storage))
- var/obj/item/weapon/storage/S = O.loc
- S.remove_from_storage(O,src)
-
- O.loc = src
+ else
+ if(istype(O.loc,/obj/item/weapon/storage))
+ var/obj/item/weapon/storage/S = O.loc
+ S.remove_from_storage(O,src)
+ O.forceMove(src)
/obj/machinery/smartfridge/attack_paw(mob/user)
return src.attack_hand(user)
diff --git a/code/modules/games/cas.dm b/code/modules/games/cas.dm
index f1becca5ae6..2ea54b4bdf5 100644
--- a/code/modules/games/cas.dm
+++ b/code/modules/games/cas.dm
@@ -80,7 +80,7 @@ var/global/list/cards_against_space
/obj/item/toy/cards/deck/cas/attackby(obj/item/I, mob/living/user, params)
if(istype(I, /obj/item/toy/cards/singlecard/cas))
var/obj/item/toy/cards/singlecard/cas/SC = I
- if(!user.unEquip(SC))
+ if(!user.temporarilyRemoveItemFromInventory(SC))
user << "The card is stuck to your hand, you can't add it to the deck!"
return
var/datum/playingcard/RC // replace null datum for the re-added card
diff --git a/code/modules/holodeck/computer_funcs.dm b/code/modules/holodeck/computer_funcs.dm
index 33edb15d605..682dd22a581 100644
--- a/code/modules/holodeck/computer_funcs.dm
+++ b/code/modules/holodeck/computer_funcs.dm
@@ -102,18 +102,10 @@
return
var/turf/T = get_turf(obj)
for(var/atom/movable/AM in obj.contents) // these should be derezed if they were generated
- AM.loc = T // otherwise make sure they are dropped
-
- if(istype(obj))
- var/mob/M = obj.loc
- if(ismob(M))
- M.unEquip(obj, 1) //Holoweapons should always drop.
-
- for(var/mob/M in obj.contents)
- M.loc = obj.loc
- silent = 0
+ AM.loc = T
+ if(ismob(AM))
+ silent = FALSE // otherwise make sure they are dropped
if(!silent)
- var/obj/oldobj = obj
- visible_message("The [oldobj.name] fades away!")
+ visible_message("The [obj.name] fades away!")
qdel(obj)
\ No newline at end of file
diff --git a/code/modules/hydroponics/beekeeping/beebox.dm b/code/modules/hydroponics/beekeeping/beebox.dm
index fec53b66fa3..29dd541ca1f 100644
--- a/code/modules/hydroponics/beekeeping/beebox.dm
+++ b/code/modules/hydroponics/beekeeping/beebox.dm
@@ -146,8 +146,8 @@
var/obj/item/honey_frame/HF = I
if(honey_frames.len < BEEBOX_MAX_FRAMES)
visible_message("[user] adds a frame to the apiary.")
- user.unEquip(HF)
- HF.loc = src
+ if(!user.transferItemToLoc(HF, src))
+ return
honey_frames += HF
else
user << "There's no room for anymore frames in the apiary!"
@@ -162,9 +162,9 @@
return
var/obj/item/queen_bee/qb = I
- user.unEquip(qb)
+ user.temporarilyRemoveItemFromInventory(qb)
- qb.queen.loc = src
+ qb.queen.forceMove(src)
bees += qb.queen
queen_bee = qb.queen
qb.queen = null
diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm
index 3dc0194d40c..d8e32671cac 100644
--- a/code/modules/hydroponics/biogenerator.dm
+++ b/code/modules/hydroponics/biogenerator.dm
@@ -147,9 +147,8 @@
if(i >= max_items)
user << "The biogenerator is full! Activate it."
else
- user.unEquip(O)
- O.loc = src
- user << "You put [O.name] in [src.name]"
+ if(user.transferItemToLoc(O, src))
+ user << "You put [O.name] in [src.name]"
return 1 //no afterattack
else if (istype(O, /obj/item/weapon/disk/design_disk))
user.visible_message("[user] begins to load \the [O] in \the [src]...",
diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm
index bd8cfb4cd3a..8b489359d34 100644
--- a/code/modules/hydroponics/grown.dm
+++ b/code/modules/hydroponics/grown.dm
@@ -170,9 +170,10 @@
// For item-containing growns such as eggy or gatfruit
/obj/item/weapon/reagent_containers/food/snacks/grown/shell/attack_self(mob/user)
- user.unEquip(src)
+ var/obj/item/T
+ if(trash)
+ T = generate_trash()
+ qdel(src)
if(trash)
- var/obj/item/T = generate_trash()
user.put_in_hands(T)
user << "You open [src]\'s shell, revealing \a [T]."
- qdel(src)
diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm
index 0bba7389254..3a7ce53d163 100644
--- a/code/modules/hydroponics/grown/citrus.dm
+++ b/code/modules/hydroponics/grown/citrus.dm
@@ -126,7 +126,7 @@
/obj/item/weapon/reagent_containers/food/snacks/grown/firelemon/proc/update_mob()
if(ismob(loc))
var/mob/M = loc
- M.unEquip(src)
+ M.dropItemToGround(src)
/obj/item/weapon/reagent_containers/food/snacks/grown/firelemon/ex_act(severity)
qdel(src) //Ensuring that it's deleted by its own explosion
diff --git a/code/modules/hydroponics/grown/corn.dm b/code/modules/hydroponics/grown/corn.dm
index 76b5f1152ec..3c2169ddfee 100644
--- a/code/modules/hydroponics/grown/corn.dm
+++ b/code/modules/hydroponics/grown/corn.dm
@@ -39,9 +39,7 @@
if(W.is_sharp())
user << "You use [W] to fashion a pipe out of the corn cob!"
new /obj/item/clothing/mask/cigarette/pipe/cobpipe (user.loc)
- user.unEquip(src)
qdel(src)
- return
else
return ..()
diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm
index 984b005781d..8f2147d29ee 100644
--- a/code/modules/hydroponics/grown/flowers.dm
+++ b/code/modules/hydroponics/grown/flowers.dm
@@ -192,7 +192,6 @@
force -= rand(1, (force / 3) + 1)
else
usr << "All the petals have fallen off the [name] from violent whacking!"
- usr.unEquip(src)
qdel(src)
/obj/item/weapon/grown/novaflower/pickup(mob/living/carbon/human/user)
diff --git a/code/modules/hydroponics/grown/nettle.dm b/code/modules/hydroponics/grown/nettle.dm
index f6248c64c4e..1c9738fa44d 100644
--- a/code/modules/hydroponics/grown/nettle.dm
+++ b/code/modules/hydroponics/grown/nettle.dm
@@ -68,7 +68,6 @@
force -= rand(1, (force / 3) + 1) // When you whack someone with it, leaves fall off
else
usr << "All the leaves have fallen off the nettle from violent whacking."
- usr.unEquip(src)
qdel(src)
/obj/item/weapon/grown/nettle/basic
diff --git a/code/modules/hydroponics/grown/potato.dm b/code/modules/hydroponics/grown/potato.dm
index 83b51102b53..8164f5f162a 100644
--- a/code/modules/hydroponics/grown/potato.dm
+++ b/code/modules/hydroponics/grown/potato.dm
@@ -39,10 +39,9 @@
if(W.is_sharp())
user << "You cut the potato into wedges with [W]."
var/obj/item/weapon/reagent_containers/food/snacks/grown/potato/wedges/Wedges = new /obj/item/weapon/reagent_containers/food/snacks/grown/potato/wedges
- if(!remove_item_from_storage(user))
- user.unEquip(src)
- user.put_in_hands(Wedges)
+ remove_item_from_storage(user)
qdel(src)
+ user.put_in_hands(Wedges)
else
return ..()
diff --git a/code/modules/hydroponics/grown/root.dm b/code/modules/hydroponics/grown/root.dm
index 6b3510b5477..753b9a287a8 100644
--- a/code/modules/hydroponics/grown/root.dm
+++ b/code/modules/hydroponics/grown/root.dm
@@ -26,10 +26,9 @@
if(I.is_sharp())
user << "You sharpen the carrot into a shiv with [I]."
var/obj/item/weapon/kitchen/knife/carrotshiv/Shiv = new /obj/item/weapon/kitchen/knife/carrotshiv
- if(!remove_item_from_storage(user))
- user.unEquip(src)
- user.put_in_hands(Shiv)
+ remove_item_from_storage(user)
qdel(src)
+ user.put_in_hands(Shiv)
else
return ..()
diff --git a/code/modules/hydroponics/grown/tomato.dm b/code/modules/hydroponics/grown/tomato.dm
index c8d4db730dd..cdab5f9e155 100644
--- a/code/modules/hydroponics/grown/tomato.dm
+++ b/code/modules/hydroponics/grown/tomato.dm
@@ -138,6 +138,4 @@
K.move_to_delay -= round(seed.production / 50)
K.health = K.maxHealth
K.visible_message("The Killer Tomato growls as it suddenly awakens.")
- if(user)
- user.unEquip(src)
qdel(src)
diff --git a/code/modules/hydroponics/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm
index fdb03e3041a..1a24a761512 100644
--- a/code/modules/hydroponics/grown/towercap.dm
+++ b/code/modules/hydroponics/grown/towercap.dm
@@ -71,7 +71,7 @@
if(leaf.dry)
user.show_message("You wrap \the [W] around the log, turning it into a torch!")
var/obj/item/device/flashlight/flare/torch/T = new /obj/item/device/flashlight/flare/torch(user.loc)
- usr.unEquip(W)
+ usr.dropItemToGround(W)
usr.put_in_active_hand(T)
qdel(leaf)
qdel(src)
diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index 711fc6782d0..f132af1a445 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -772,14 +772,14 @@
if(!myseed)
if(istype(O, /obj/item/seeds/kudzu))
investigate_log("had Kudzu planted in it by [user.ckey]([user]) at ([x],[y],[z])","kudzu")
- user.unEquip(O)
+ if(!user.transferItemToLoc(O, src))
+ return
user << "You plant [O]."
dead = 0
myseed = O
age = 1
plant_health = myseed.endurance
lastcycle = world.time
- O.forceMove(src)
update_icon()
else
user << "[src] already has seeds in it!"
diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index 828641dfae9..b8b83f7cfdb 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -339,9 +339,11 @@
if(istype(over_object, /obj/screen/inventory/hand))
var/obj/screen/inventory/hand/H = over_object
- if(!M.unEquip(src))
+ if(!M.temporarilyRemoveItemFromInventory(src))
return
- M.put_in_hand(src, H.held_index)
+ if(!M.put_in_hand(src, H.held_index))
+ qdel(src)
+ return //fuck these things
add_fingerprint(usr)
diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm
index 1aa26092f02..1fb4b3786bf 100644
--- a/code/modules/mining/mine_items.dm
+++ b/code/modules/mining/mine_items.dm
@@ -200,11 +200,9 @@
if(istype(W,/obj/item/weapon/ore/glass))
user << "You fill the sandbag."
var/obj/item/stack/sheet/mineral/sandbags/I = new /obj/item/stack/sheet/mineral/sandbags
- user.unEquip(src)
+ qdel(src)
user.put_in_hands(I)
qdel(W)
- qdel(src)
- return
else
return ..()
diff --git a/code/modules/mob/interactive.dm b/code/modules/mob/interactive.dm
index 2d96883a554..77d669dbfaa 100644
--- a/code/modules/mob/interactive.dm
+++ b/code/modules/mob/interactive.dm
@@ -527,7 +527,7 @@
if(BP.can_be_inserted(I,0))
BP.handle_item_insertion(I,0)
else
- unEquip(I,TRUE)
+ dropItemToGround(I,TRUE)
update_hands = 1
/mob/living/carbon/human/interactive/proc/targetRange(towhere)
@@ -678,7 +678,7 @@
take_to_slot(C,1)
if(!equip_to_appropriate_slot(C))
var/obj/item/I = get_item_by_slot(C)
- unEquip(I)
+ dropItemToGround(I)
spawn(5)
equip_to_appropriate_slot(C)
update_hands = 1
diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm
index 7b17e260006..9ca2d1d0e48 100644
--- a/code/modules/mob/inventory.dm
+++ b/code/modules/mob/inventory.dm
@@ -236,14 +236,14 @@
if(!loc || !loc.allow_drop())
return
for(var/obj/item/I in held_items)
- unEquip(I)
+ dropItemToGround(I)
//Drops the item in our active hand.
/mob/proc/drop_item()
if(!loc || !loc.allow_drop())
return
var/obj/item/held = get_active_held_item()
- return unEquip(held)
+ return dropItemToGround(held)
//Here lie drop_from_inventory and before_item_take, already forgotten and not missed.
@@ -255,7 +255,27 @@
return FALSE
return TRUE
-/mob/proc/unEquip(obj/item/I, force) //Force overrides NODROP for things like wizarditis and admin undress.
+//The following functions are the same save for one small difference
+
+//for when you want the item to end up on the ground
+//will force move the item to the ground and call the turf's Entered
+/mob/proc/dropItemToGround(obj/item/I, force = FALSE)
+ return doUnEquip(I, force, loc, FALSE)
+
+//for when the item will be immediately placed in a loc other than the ground
+/mob/proc/transferItemToLoc(obj/item/I, newloc = null, force = FALSE)
+ return doUnEquip(I, force, newloc, FALSE)
+
+//visibly unequips I but it is NOT MOVED AND REMAINS IN SRC
+//item MUST BE FORCEMOVE'D OR QDEL'D
+/mob/proc/temporarilyRemoveItemFromInventory(obj/item/I, force = FALSE)
+ return doUnEquip(I, force, null, TRUE)
+
+//DO NOT CALL THIS PROC
+//use one of the above 2 helper procs
+//you may override it, but do not modify the args
+/mob/proc/doUnEquip(obj/item/I, force, newloc, no_move) //Force overrides NODROP for things like wizarditis and admin undress.
+ //Use no_move if the item is just gonna be immediately moved afterward
if(!I) //If there's nothing to drop, the drop is automatically succesfull. If(unEquip) should generally be used to check for NODROP.
return TRUE
@@ -272,18 +292,11 @@
I.layer = initial(I.layer)
I.plane = initial(I.plane)
I.appearance_flags &= ~NO_CLIENT_COLOR
- I.forceMove(loc)
+ if(!no_move && !(I.flags & DROPDEL)) //item may be moved/qdel'd immedietely, don't bother moving it
+ I.forceMove(newloc)
I.dropped(src)
return TRUE
-
-//Attemps to remove an object on a mob. Will not move it to another area or such, just removes from the mob.
-/mob/proc/remove_from_mob(var/obj/item/I)
- unEquip(I)
- I.screen_loc = null
- return TRUE
-
-
//Outdated but still in use apparently. This should at least be a human proc.
//Daily reminder to murder this - Remie.
/mob/living/proc/get_equipped_items()
@@ -385,7 +398,7 @@
/mob/proc/change_number_of_hands(amt)
if(amt < held_items.len)
for(var/i in held_items.len to amt step -1)
- unEquip(held_items[i])
+ dropItemToGround(held_items[i])
held_items.len = amt
if(hud_used)
diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm
index e6d569c7f9c..3a601a8711c 100644
--- a/code/modules/mob/living/bloodcrawl.dm
+++ b/code/modules/mob/living/bloodcrawl.dm
@@ -168,7 +168,6 @@
var/mob/living/carbon/C = src
for(var/obj/item/weapon/bloodcrawl/BC in C)
BC.flags = null
- C.unEquip(BC)
qdel(BC)
qdel(src.holder)
src.holder = null
diff --git a/code/modules/mob/living/brain/MMI.dm b/code/modules/mob/living/brain/MMI.dm
index f26894fd167..ae0d8a618f5 100644
--- a/code/modules/mob/living/brain/MMI.dm
+++ b/code/modules/mob/living/brain/MMI.dm
@@ -53,7 +53,7 @@
user << "You aren't sure where this brain came from, but you're pretty sure it's a useless brain!"
return
- if(!user.unEquip(O))
+ if(!user.transferItemToLoc(O, src))
return
var/mob/living/brain/B = newbrain.brainmob
if(!B.key)
@@ -70,7 +70,6 @@
living_mob_list += brainmob
brainmob.reset_perspective()
- newbrain.loc = src //P-put your brain in it
brain = newbrain
name = "Man-Machine Interface: [brainmob.real_name]"
diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
index 4cbe1445f9a..5ebb00e0092 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
@@ -66,8 +66,8 @@
visible_message("[usr] tries to empty [src]'s pouches.", \
"[usr] tries to empty [src]'s pouches.")
if(do_mob(usr, src, POCKET_STRIP_DELAY * 0.5))
- unEquip(r_store)
- unEquip(l_store)
+ dropItemToGround(r_store)
+ dropItemToGround(l_store)
/mob/living/carbon/alien/humanoid/cuff_resist(obj/item/I)
playsound(src, 'sound/voice/hiss5.ogg', 40, 1, 1) //Alien roars when starting to break free
diff --git a/code/modules/mob/living/carbon/alien/humanoid/inventory.dm b/code/modules/mob/living/carbon/alien/humanoid/inventory.dm
index a085a66055d..1248861062c 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/inventory.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/inventory.dm
@@ -1,4 +1,4 @@
-/mob/living/carbon/alien/humanoid/unEquip(obj/item/I)
+/mob/living/carbon/alien/humanoid/doUnEquip(obj/item/I)
. = ..()
if(!. || !I)
return
diff --git a/code/modules/mob/living/carbon/alien/larva/inventory.dm b/code/modules/mob/living/carbon/alien/larva/inventory.dm
index 3cb46a54b2e..239d21e7f5d 100644
--- a/code/modules/mob/living/carbon/alien/larva/inventory.dm
+++ b/code/modules/mob/living/carbon/alien/larva/inventory.dm
@@ -1,3 +1,3 @@
//can't unequip since it can't equip anything
-/mob/living/carbon/alien/larva/unEquip(obj/item/W)
+/mob/living/carbon/alien/larva/doUnEquip(obj/item/W)
return
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm
index 9098171b8bf..8c63836c783 100644
--- a/code/modules/mob/living/carbon/alien/special/facehugger.dm
+++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm
@@ -55,8 +55,8 @@ var/const/MAX_ACTIVE_TIME = 400
/obj/item/clothing/mask/facehugger/attack(mob/living/M, mob/user)
..()
- user.unEquip(src)
- Attach(M)
+ if(user.temporarilyRemoveItemFromInventory(src))
+ Attach(M)
/obj/item/clothing/mask/facehugger/examine(mob/user)
..()
@@ -157,7 +157,7 @@ var/const/MAX_ACTIVE_TIME = 400
if(W.flags & NODROP)
return FALSE
if(!istype(W,/obj/item/clothing/mask/facehugger))
- target.unEquip(W)
+ target.dropItemToGround(W)
target.visible_message("[src] tears [W] off of [target]'s face!", \
"[src] tears [W] off of [target]'s face!")
@@ -168,7 +168,7 @@ var/const/MAX_ACTIVE_TIME = 400
"[src] smashes against [H]'s [H.head]!")
Die()
return FALSE
- src.loc = target
+ forceMove(target)
target.equip_to_slot_if_possible(src, slot_wear_mask, 0, 1, 1)
// early returns and validity checks done: attach.
attached++
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index a9b4e7ad4ba..772b8bc54d7 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -157,7 +157,7 @@
else if(!(I.flags & (NODROP|ABSTRACT)))
thrown_thing = I
- unEquip(I)
+ dropItemToGround(I)
if(thrown_thing)
visible_message("[src] has thrown [thrown_thing].")
@@ -381,8 +381,7 @@
update_inv_legcuffed()
return
else
- unEquip(I)
- I.dropped()
+ dropItemToGround(I)
return
return TRUE
@@ -400,7 +399,7 @@
if(!I || (I.flags & (NODROP|ABSTRACT)))
return
- unEquip(I)
+ dropItemToGround(I)
var/modifier = 0
if(disabilities & CLUMSY)
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 9c33fad855c..0671dd11ff0 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -267,11 +267,13 @@
if(do_mob(usr, src, POCKET_STRIP_DELAY/delay_denominator)) //placing an item into the pocket is 4 times faster
if(pocket_item)
if(pocket_item == (pocket_id == slot_r_store ? r_store : l_store)) //item still in the pocket we search
- unEquip(pocket_item)
+ dropItemToGround(pocket_item)
else
if(place_item)
- usr.unEquip(place_item)
- equip_to_slot_if_possible(place_item, pocket_id, 0, 1)
+ if(place_item.mob_can_equip(src, usr, pocket_id, FALSE, TRUE))
+ usr.temporarilyRemoveItemFromInventory(place_item, TRUE)
+ equip_to_slot(place_item, pocket_id, TRUE)
+ //do nothing otherwise
// Update strip window
if(usr.machine == src && in_range(src, usr))
@@ -625,7 +627,7 @@
/mob/living/carbon/human/singularity_pull(S, current_size)
if(current_size >= STAGE_THREE)
for(var/obj/item/hand in held_items)
- if(prob(current_size * 5) && hand.w_class >= ((11-current_size)/2) && unEquip(hand))
+ if(prob(current_size * 5) && hand.w_class >= ((11-current_size)/2) && dropItemToGround(hand))
step_towards(hand, src)
src << "\The [S] pulls \the [hand] from your grip!"
rad_act(current_size * 3)
@@ -696,10 +698,10 @@
if(dna && dna.check_mutation(HULK))
say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
if(..(I, cuff_break = FAST_CUFFBREAK))
- unEquip(I)
+ dropItemToGround(I)
else
if(..())
- unEquip(I)
+ dropItemToGround(I)
/mob/living/carbon/human/clean_blood()
var/mob/living/carbon/human/H = src
diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm
index 75ef76eb08e..66e3b28331d 100644
--- a/code/modules/mob/living/carbon/human/inventory.dm
+++ b/code/modules/mob/living/carbon/human/inventory.dm
@@ -141,14 +141,14 @@
return not_handled //For future deeper overrides
-/mob/living/carbon/human/unEquip(obj/item/I)
+/mob/living/carbon/human/doUnEquip(obj/item/I, force)
. = ..() //See mob.dm for an explanation on this and some rage about people copypasting instead of calling ..() like they should.
if(!. || !I)
return
if(I == wear_suit)
if(s_store)
- unEquip(s_store, 1) //It makes no sense for your suit storage to stay on you if you drop your suit.
+ dropItemToGround(s_store, TRUE) //It makes no sense for your suit storage to stay on you if you drop your suit.
if(wear_suit.breakouttime) //when unequipping a straightjacket
update_action_buttons_icon() //certain action buttons may be usable again.
wear_suit = null
@@ -157,13 +157,13 @@
update_inv_wear_suit()
else if(I == w_uniform)
if(r_store)
- unEquip(r_store, 1) //Again, makes sense for pockets to drop.
+ dropItemToGround(r_store, TRUE) //Again, makes sense for pockets to drop.
if(l_store)
- unEquip(l_store, 1)
+ dropItemToGround(l_store, TRUE)
if(wear_id)
- unEquip(wear_id)
+ dropItemToGround(wear_id)
if(belt)
- unEquip(belt)
+ dropItemToGround(belt)
w_uniform = null
update_suit_sensors()
update_inv_w_uniform()
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 2071e7486f3..9718465ad06 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -106,7 +106,7 @@
for(var/slot_id in no_equip)
var/obj/item/thing = C.get_item_by_slot(slot_id)
if(thing && (!thing.species_exception || !is_type_in_list(src,thing.species_exception)))
- C.unEquip(thing)
+ C.dropItemToGround(thing)
var/obj/item/organ/heart/heart = C.getorganslot("heart")
var/obj/item/organ/lungs/lungs = C.getorganslot("lungs")
diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm
index 7b133bda11c..c91b7e370ba 100644
--- a/code/modules/mob/living/carbon/human/species_types/golems.dm
+++ b/code/modules/mob/living/carbon/human/species_types/golems.dm
@@ -236,7 +236,7 @@
/datum/species/golem/sand/spec_death(gibbed, mob/living/carbon/human/H)
H.visible_message("[H] turns into a pile of sand!")
for(var/obj/item/W in H)
- H.unEquip(W)
+ H.dropItemToGround(W)
for(var/i=1, i <= rand(3,5), i++)
new /obj/item/weapon/ore/glass(get_turf(H))
qdel(H)
@@ -266,7 +266,7 @@
playsound(H, "shatter", 70, 1)
H.visible_message("[H] shatters!")
for(var/obj/item/W in H)
- H.unEquip(W)
+ H.dropItemToGround(W)
for(var/i=1, i <= rand(3,5), i++)
new /obj/item/weapon/shard(get_turf(H))
qdel(H)
diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm
index f4fd85f5eb5..abd080bfaef 100644
--- a/code/modules/mob/living/carbon/human/species_types/zombies.dm
+++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm
@@ -32,7 +32,7 @@
for(var/V in C.held_items)
var/obj/item/I = V
if(istype(I))
- if(C.unEquip(I))
+ if(C.dropItemToGround(I))
var/obj/item/zombie_hand/zh = new /obj/item/zombie_hand()
C.put_in_hands(zh)
else //Entries in the list should only ever be items or null, so if it's not an item, we can assume it's an empty hand
@@ -49,7 +49,7 @@
. = ..()
for(var/obj/item/I in C.held_items)
if(istype(I, /obj/item/zombie_hand))
- C.unEquip(I, TRUE)
+ qdel(I)
// Your skin falls off
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index 7910244db72..a69f0714f51 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -136,9 +136,9 @@ There are several things that need to be remembered:
overlays_standing[UNIFORM_LAYER] = standing
else if(!(dna && dna.species.nojumpsuit))
- // Automatically drop anything in store / id / belt if you're not wearing a uniform.
- for(var/obj/item/thing in list(r_store, l_store, wear_id, belt))
- unEquip(thing)
+ // Automatically drop anything in store / id / belt if you're not wearing a uniform. //CHECK IF NECESARRY
+ for(var/obj/item/thing in list(r_store, l_store, wear_id, belt)) //
+ dropItemToGround(thing)
apply_overlay(UNIFORM_LAYER)
update_mutant_bodyparts()
diff --git a/code/modules/mob/living/carbon/inventory.dm b/code/modules/mob/living/carbon/inventory.dm
index bb7ff6f45b6..3ef5d6e8178 100644
--- a/code/modules/mob/living/carbon/inventory.dm
+++ b/code/modules/mob/living/carbon/inventory.dm
@@ -88,7 +88,7 @@
return not_handled
-/mob/living/carbon/unEquip(obj/item/I)
+/mob/living/carbon/doUnEquip(obj/item/I)
. = ..() //Sets the default return value to what the parent returns.
if(!. || !I) //We don't want to set anything to null if the parent returned 0.
return
diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm
index d7fad273cfe..a3fd57f9c5e 100644
--- a/code/modules/mob/living/carbon/monkey/combat.dm
+++ b/code/modules/mob/living/carbon/monkey/combat.dm
@@ -345,8 +345,7 @@
for(var/obj/item/I in M.held_items)
if(I == pickupTarget)
M.visible_message("[src] snatches [pickupTarget] from [M].", "[src] snatched [pickupTarget]!")
- M.unEquip(pickupTarget)
- if(!qdeleted(pickupTarget))
+ if(M.temporarilyRemoveItemFromInventory(pickupTarget) && !qdeleted(pickupTarget))
equip_item(pickupTarget)
pickpocketing = FALSE
pickupTarget = null
@@ -453,5 +452,5 @@
/mob/living/carbon/monkey/proc/monkeyDrop(var/obj/item/A)
if(A)
- unEquip(A, 1)
+ dropItemToGround(A, TRUE)
update_icons()
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 76677b2ac95..db95437256d 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -627,11 +627,11 @@
if(islist(where))
var/list/L = where
if(what == who.get_item_for_held_index(L[2]))
- who.unEquip(what)
- add_logs(src, who, "stripped", addition="of [what]")
+ if(who.dropItemToGround(what))
+ add_logs(src, who, "stripped", addition="of [what]")
if(what == who.get_item_by_slot(where))
- who.unEquip(what)
- add_logs(src, who, "stripped", addition="of [what]")
+ if(who.dropItemToGround(what))
+ add_logs(src, who, "stripped", addition="of [what]")
// The src mob is trying to place an item on someone
// Override if a certain mob should be behave differently when placing items (can't, for example)
@@ -642,25 +642,26 @@
return
if(what)
var/list/where_list
+ var/final_where
+
if(islist(where))
where_list = where
- if(!what.mob_can_equip(who, src, where[1], 1))
- src << "\The [what.name] doesn't fit in that place!"
- return
+ final_where = where[1]
else
- if(!what.mob_can_equip(who, src, where, 1))
- src << "\The [what.name] doesn't fit in that place!"
- return
+ final_where = where
+
+ if(!what.mob_can_equip(who, src, final_where, TRUE))
+ src << "\The [what.name] doesn't fit in that place!"
+ return
+
visible_message("[src] tries to put [what] on [who].")
if(do_mob(src, who, what.put_on_delay))
- if(what && Adjacent(who))
- unEquip(what)
- if(where_list)
- who.put_in_hand(what, where_list[2])
- else
- who.equip_to_slot_if_possible(what, where, 0, 1)
- add_logs(src, who, "equipped", what)
-
+ if(what && Adjacent(who) && what.mob_can_equip(who, src, final_where, TRUE))
+ if(temporarilyRemoveItemFromInventory(what))
+ if(where_list)
+ who.put_in_hand(what, where_list[2])
+ else
+ who.equip_to_slot(what, where, TRUE)
/mob/living/singularity_pull(S, current_size)
if(current_size >= STAGE_SIX)
diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm
index cab2148d475..50758e00c5f 100644
--- a/code/modules/mob/living/silicon/pai/pai_shell.dm
+++ b/code/modules/mob/living/silicon/pai/pai_shell.dm
@@ -26,12 +26,10 @@
P.visible_message("[src] ejects itself from [P]!")
if(istype(card.loc, /mob/living))
var/mob/living/L = card.loc
- if(!L.unEquip(card))
+ if(!L.transferItemToLoc(card, src))
src << "Error: Unable to expand to mobile form. Chassis is restrained by some device or person."
return FALSE
- var/turf/T = get_turf(card)
- forceMove(T)
- card.forceMove(src)
+ forceMove(get_turf(card))
if(client)
client.perspective = EYE_PERSPECTIVE
client.eye = src
diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm
index a15d335cff2..1266afa7960 100644
--- a/code/modules/mob/living/silicon/robot/robot_defense.dm
+++ b/code/modules/mob/living/silicon/robot/robot_defense.dm
@@ -5,7 +5,7 @@
user << "You begin to place [I] on [src]'s head..."
src << "[user] is placing [I] on your head..."
if(do_after(user, 30, target = src))
- user.unEquip(I, 1)
+ user.temporarilyRemoveItemFromInventory(I, TRUE)
place_on_head(I)
return
if(I.force && I.damtype != STAMINA && stat != DEAD) //only sparks if real damage is dealt.
diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm
index c156cf1fe38..98f055c476e 100644
--- a/code/modules/mob/living/simple_animal/bot/construction.dm
+++ b/code/modules/mob/living/simple_animal/bot/construction.dm
@@ -16,14 +16,13 @@
/obj/item/weapon/bucket_sensor/attackby(obj/item/W, mob/user as mob, params)
..()
if(istype(W, /obj/item/bodypart/l_arm/robot) || istype(W, /obj/item/bodypart/r_arm/robot))
- if(!user.unEquip(W))
+ if(!user.temporarilyRemoveItemFromInventory(W))
return
qdel(W)
var/turf/T = get_turf(loc)
var/mob/living/simple_animal/bot/cleanbot/A = new /mob/living/simple_animal/bot/cleanbot(T)
A.name = created_name
user << "You add the robot arm to the bucket and sensor assembly. Beep boop!"
- user.unEquip(src, 1)
qdel(src)
else if(istype(W, /obj/item/weapon/pen))
@@ -61,7 +60,7 @@
switch(build_step)
if(0,1)
if(istype(W, /obj/item/bodypart/l_leg/robot) || istype(W, /obj/item/bodypart/r_leg/robot))
- if(!user.unEquip(W))
+ if(!user.temporarilyRemoveItemFromInventory(W))
return
qdel(W)
build_step++
@@ -81,7 +80,7 @@
else if(istype(W, /obj/item/clothing/suit/bluetag))
newcolor = "b"
if(newcolor || istype(W, /obj/item/clothing/suit/armor/vest))
- if(!user.unEquip(W))
+ if(!user.temporarilyRemoveItemFromInventory(W))
return
lasercolor = newcolor
qdel(W)
@@ -112,7 +111,7 @@
if(!istype(W, /obj/item/clothing/head/helmet))
return
- if(!user.unEquip(W))
+ if(!user.temporarilyRemoveItemFromInventory(W))
return
qdel(W)
build_step++
@@ -123,7 +122,7 @@
if(5)
if(isprox(W))
- if(!user.unEquip(W))
+ if(!user.temporarilyRemoveItemFromInventory(W))
return
qdel(W)
build_step++
@@ -163,7 +162,7 @@
newname = "taser ED-209 assembly"
else
return
- if(!user.unEquip(W))
+ if(!user.temporarilyRemoveItemFromInventory(W))
return
name = newname
build_step++
@@ -183,14 +182,13 @@
if(9)
if(istype(W, /obj/item/weapon/stock_parts/cell))
- if(!user.unEquip(W))
+ if(!user.temporarilyRemoveItemFromInventory(W))
return
build_step++
user << "You complete the ED-209."
var/turf/T = get_turf(src)
new /mob/living/simple_animal/bot/ed209(T,created_name,lasercolor)
qdel(W)
- user.unEquip(src, 1)
qdel(src)
//Floorbot assemblies
@@ -231,7 +229,6 @@
var/obj/item/weapon/toolbox_tiles/B = new /obj/item/weapon/toolbox_tiles
user.put_in_hands(B)
user << "You add the tiles into the empty toolbox. They protrude from the top."
- user.unEquip(src, 1)
qdel(src)
else
user << "You need 10 floor tiles to start building a floorbot!"
@@ -245,7 +242,6 @@
B.created_name = created_name
user.put_in_hands(B)
user << "You add the sensor to the toolbox and tiles."
- user.unEquip(src, 1)
qdel(src)
else if(istype(W, /obj/item/weapon/pen))
@@ -265,7 +261,6 @@
var/mob/living/simple_animal/bot/floorbot/A = new /mob/living/simple_animal/bot/floorbot(T)
A.name = created_name
user << "You add the robot arm to the odd looking toolbox assembly. Boop beep!"
- user.unEquip(src, 1)
qdel(src)
else if(istype(W, /obj/item/weapon/pen))
var/t = stripped_input(user, "Enter new robot name", name, created_name,MAX_NAME_LEN)
@@ -316,7 +311,6 @@
qdel(S)
user.put_in_hands(A)
user << "You add the robot arm to the first aid kit."
- user.unEquip(src, 1)
qdel(src)
@@ -333,7 +327,7 @@
switch(build_step)
if(0)
if(istype(W, /obj/item/device/healthanalyzer))
- if(!user.unEquip(W))
+ if(!user.temporarilyRemoveItemFromInventory(W))
return
qdel(W)
build_step++
@@ -343,7 +337,7 @@
if(1)
if(isprox(W))
- if(!user.unEquip(W))
+ if(!user.temporarilyRemoveItemFromInventory(W))
return
qdel(W)
build_step++
@@ -352,7 +346,6 @@
var/mob/living/simple_animal/bot/medbot/S = new /mob/living/simple_animal/bot/medbot(T)
S.skin = skin
S.name = created_name
- user.unEquip(src, 1)
qdel(src)
//Secbot Assembly
@@ -383,7 +376,6 @@
var/obj/item/weapon/secbot_assembly/A = new /obj/item/weapon/secbot_assembly
user.put_in_hands(A)
user << "You add the signaler to the helmet."
- user.unEquip(src, 1)
qdel(src)
else
return
@@ -405,7 +397,7 @@
user << "You weld the hole in [src] shut!"
else if(isprox(I) && (build_step == 1))
- if(!user.unEquip(I))
+ if(!user.temporarilyRemoveItemFromInventory(I))
return
build_step++
user << "You add the prox sensor to [src]!"
@@ -414,7 +406,7 @@
qdel(I)
else if(((istype(I, /obj/item/bodypart/l_arm/robot)) || (istype(I, /obj/item/bodypart/r_arm/robot))) && (build_step == 2))
- if(!user.unEquip(I))
+ if(!user.temporarilyRemoveItemFromInventory(I))
return
build_step++
user << "You add the robot arm to [src]!"
@@ -423,7 +415,7 @@
qdel(I)
else if((istype(I, /obj/item/weapon/melee/baton)) && (build_step >= 3))
- if(!user.unEquip(I))
+ if(!user.temporarilyRemoveItemFromInventory(I))
return
build_step++
user << "You complete the Securitron! Beep boop."
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm
index f344613cef5..8e6a6296fe4 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm
@@ -130,9 +130,9 @@
/mob/living/simple_animal/drone/death(gibbed)
..(gibbed)
if(internal_storage)
- unEquip(internal_storage)
+ dropItemToGround(internal_storage)
if(head)
- unEquip(head)
+ dropItemToGround(head)
alert_drones(DRONE_NET_DISCONNECT)
@@ -142,9 +142,9 @@
/mob/living/simple_animal/drone/ratvar_act()
if(internal_storage)
- unEquip(internal_storage)
+ dropItemToGround(internal_storage)
if(head)
- unEquip(head)
+ dropItemToGround(head)
var/mob/living/simple_animal/drone/cogscarab/ratvar/R = new /mob/living/simple_animal/drone/cogscarab/ratvar(loc)
R.setDir(dir)
if(mind)
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm
index 61e29c0c76a..d75b7230c9f 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm
@@ -60,7 +60,7 @@
L << "[drone] is trying to escape!"
if(!do_after(drone, 50, target = L))
return
- L.unEquip(src)
+ L.dropItemToGround(src)
contents -= drone
drone.loc = get_turf(src)
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm b/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm
index 1437e77e56e..eeacd3ab97d 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm
@@ -6,7 +6,7 @@
//Drone hands
-/mob/living/simple_animal/drone/unEquip(obj/item/I, force)
+/mob/living/simple_animal/drone/doUnEquip(obj/item/I, force)
if(..(I,force))
update_inv_hands()
if(I == head)
diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm
index 7b49e29ad1c..af3001c2ecf 100644
--- a/code/modules/mob/living/simple_animal/guardian/guardian.dm
+++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm
@@ -136,7 +136,7 @@ var/global/list/parasites = list() //all currently existing/living guardians
visible_message("\The [src] dies along with its user!")
summoner.visible_message("[summoner]'s body is completely consumed by the strain of sustaining [src]!")
for(var/obj/item/W in summoner)
- if(!summoner.unEquip(W))
+ if(!summoner.dropItemToGround(W))
qdel(W)
summoner.dust()
death(TRUE)
diff --git a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm
index ed24b79cd12..dbfd48502aa 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm
@@ -22,7 +22,7 @@
/mob/living/simple_animal/hostile/guardian/dextrous/death(gibbed)
..()
if(internal_storage)
- unEquip(internal_storage)
+ dropItemToGround(internal_storage)
/mob/living/simple_animal/hostile/guardian/dextrous/examine(mob/user)
if(dextrous)
@@ -58,7 +58,7 @@
..() //lose items, then return
//SLOT HANDLING BULLSHIT FOR INTERNAL STORAGE
-/mob/living/simple_animal/hostile/guardian/dextrous/unEquip(obj/item/I, force)
+/mob/living/simple_animal/hostile/guardian/dextrous/doUnEquip(obj/item/I, force)
if(..(I,force))
update_inv_hands()
if(I == internal_storage)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
index ab6a55090ee..df86bd8e931 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
@@ -438,7 +438,7 @@ Difficulty: Very Hard
if(..() && ishuman(user) && !(user in affected_targets))
var/mob/living/carbon/human/H = user
for(var/obj/item/W in H)
- H.unEquip(W)
+ H.dropItemToGround(W)
var/datum/job/clown/C = new /datum/job/clown()
C.equip(H)
qdel(C)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
index 9fdad4b1e77..ad104e56778 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
@@ -114,7 +114,7 @@ Difficulty: Hard
/mob/living/simple_animal/hostile/megafauna/hierophant/devour(mob/living/L)
for(var/obj/item/W in L)
- if(!L.unEquip(W))
+ if(!L.dropItemToGround(W))
qdel(W)
visible_message(
"\"[pick(kill_phrases)]\"\n[src] annihilates [L]!",
diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm
index 52558ca647d..1a7e7e2355f 100644
--- a/code/modules/mob/living/simple_animal/parrot.dm
+++ b/code/modules/mob/living/simple_animal/parrot.dm
@@ -728,9 +728,8 @@
break
if(stolen_item)
- C.unEquip(stolen_item)
+ C.transferItemToLoc(stolen_item, src, TRUE)
held_item = stolen_item
- stolen_item.loc = src
visible_message("[src] grabs [held_item] out of [C]'s hand!", "You snag [held_item] out of [C]'s hand!", "You hear the sounds of wings flapping furiously.")
return held_item
diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm
index 19df9da0c51..f316a4d23a4 100644
--- a/code/modules/mob/living/simple_animal/slime/slime.dm
+++ b/code/modules/mob/living/simple_animal/slime/slime.dm
@@ -222,7 +222,7 @@ var/list/slime_colours = list("rainbow", "grey", "purple", "metal", "orange",
Feedon(Food)
..()
-/mob/living/simple_animal/slime/unEquip(obj/item/W)
+/mob/living/simple_animal/slime/doUnEquip(obj/item/W)
return
/mob/living/simple_animal/slime/start_pulling(atom/movable/AM)
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index a3f12c4d174..12df41b4288 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -12,7 +12,7 @@
return 1
return (!mover.density || !density || lying)
-
+
//The byond version of these verbs wait for the next tick before acting.
// instant verbs however can run mid tick or even during the time between ticks.
/client/verb/moveup()
diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm
index 5fe7e06b5ca..02f0821bd54 100644
--- a/code/modules/mob/transform_procs.dm
+++ b/code/modules/mob/transform_procs.dm
@@ -32,7 +32,7 @@
var/Itemlist = get_equipped_items()
Itemlist += held_items
for(var/obj/item/W in Itemlist)
- unEquip(W)
+ dropItemToGround(W)
//Make mob invisible and spawn animation
notransform = 1
@@ -174,14 +174,9 @@
var/Itemlist = get_equipped_items()
Itemlist += held_items
for(var/obj/item/W in Itemlist)
- unEquip(W)
+ dropItemToGround(W, TRUE)
if (client)
client.screen -= W
- if (W)
- W.loc = loc
- W.dropped(src)
- W.layer = initial(W.layer)
- W.plane = initial(W.plane)
@@ -308,7 +303,7 @@
if (notransform)
return
for(var/obj/item/W in src)
- unEquip(W)
+ dropItemToGround(W)
regenerate_icons()
notransform = 1
canmove = 0
@@ -352,7 +347,7 @@
if(delete_items)
qdel(W)
else
- unEquip(W)
+ dropItemToGround(W)
regenerate_icons()
notransform = 1
canmove = 0
@@ -403,7 +398,7 @@
if (notransform)
return
for(var/obj/item/W in src)
- unEquip(W)
+ dropItemToGround(W)
regenerate_icons()
notransform = 1
canmove = 0
@@ -433,7 +428,7 @@
if (notransform)
return
for(var/obj/item/W in src)
- unEquip(W)
+ dropItemToGround(W)
regenerate_icons()
notransform = 1
canmove = 0
@@ -475,7 +470,7 @@
if (notransform)
return
for(var/obj/item/W in src)
- unEquip(W)
+ dropItemToGround(W)
regenerate_icons()
notransform = 1
canmove = 0
@@ -504,7 +499,7 @@
if(notransform)
return
for(var/obj/item/W in src)
- unEquip(W)
+ dropItemToGround(W)
regenerate_icons()
notransform = 1
diff --git a/code/modules/modular_computers/computers/item/computer_components.dm b/code/modules/modular_computers/computers/item/computer_components.dm
index 0f27580a27f..be032a3ec5b 100644
--- a/code/modules/modular_computers/computers/item/computer_components.dm
+++ b/code/modules/modular_computers/computers/item/computer_components.dm
@@ -17,13 +17,12 @@
if(!can_install_component(H, user))
return FALSE
- if(user && !user.unEquip(H))
+ if(user && !user.transferItemToLoc(H, src))
return FALSE
all_components[H.device_type] = H
user << "You install \the [H] into \the [src]."
- H.forceMove(src)
H.holder = src
H.on_install(src, user)
diff --git a/code/modules/modular_computers/hardware/ai_slot.dm b/code/modules/modular_computers/hardware/ai_slot.dm
index 9e27b433c7a..63b6a33e56e 100644
--- a/code/modules/modular_computers/hardware/ai_slot.dm
+++ b/code/modules/modular_computers/hardware/ai_slot.dm
@@ -32,13 +32,10 @@
if(stored_card)
user << "You try to insert \the [I] into \the [src], but the slot is occupied."
return FALSE
- if(user && !user.unEquip(I))
+ if(user && !user.transferItemToLoc(I, src))
return FALSE
-
stored_card = I
-
- I.forceMove(src)
user << "You insert \the [I] into \the [src]."
return TRUE
diff --git a/code/modules/modular_computers/hardware/battery_module.dm b/code/modules/modular_computers/hardware/battery_module.dm
index ea61fc4ba19..92df5dfde8a 100644
--- a/code/modules/modular_computers/hardware/battery_module.dm
+++ b/code/modules/modular_computers/hardware/battery_module.dm
@@ -28,11 +28,10 @@
user << "This power cell is too large for \the [holder]!"
return FALSE
- if(user && !user.unEquip(I))
+ if(user && !user.transferItemToLoc(I, src))
return FALSE
battery = I
- I.forceMove(src)
user << "You connect \the [I] to \the [src]."
return TRUE
diff --git a/code/modules/modular_computers/hardware/card_slot.dm b/code/modules/modular_computers/hardware/card_slot.dm
index e865353d21e..c038fd09b39 100644
--- a/code/modules/modular_computers/hardware/card_slot.dm
+++ b/code/modules/modular_computers/hardware/card_slot.dm
@@ -46,14 +46,13 @@
if(stored_card && stored_card2)
user << "You try to insert \the [I] into \the [src], but its slots are occupied."
return FALSE
- if(user && !user.unEquip(I))
+ if(user && !user.transferItemToLoc(I, src))
return FALSE
if(!stored_card)
stored_card = I
else
stored_card2 = I
- I.forceMove(src)
user << "You insert \the [I] into \the [src]."
return TRUE
diff --git a/code/modules/modular_computers/hardware/printer.dm b/code/modules/modular_computers/hardware/printer.dm
index 6aedcea72e1..294ed329b08 100644
--- a/code/modules/modular_computers/hardware/printer.dm
+++ b/code/modules/modular_computers/hardware/printer.dm
@@ -40,13 +40,12 @@
/obj/item/weapon/computer_hardware/printer/try_insert(obj/item/I, mob/living/user = null)
if(istype(I, /obj/item/weapon/paper))
- if(user && !user.unEquip(I))
- return FALSE
-
if(stored_paper >= max_paper)
user << "You try to add \the [I] into [src], but its paper bin is full!"
return FALSE
+ if(user && !user.temporarilyRemoveItemFromInventory(I))
+ return FALSE
user << "You insert \the [I] into [src]'s paper recycler."
qdel(I)
stored_paper++
diff --git a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm
index 1ef1d02a533..1b1abe220f1 100644
--- a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm
+++ b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm
@@ -69,7 +69,7 @@ It is possible to destroy the net by the occupant or someone else.
continue//So all they're left with are shoes and uniform.
if(W == H.shoes)
continue
- M.unEquip(W)
+ M.dropItemToGround(W)
playsound(M.loc, 'sound/effects/sparks4.ogg', 50, 1)
new /obj/effect/overlay/temp/dir_setting/ninja/phase/out(get_turf(M), M.dir)
diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_sword_recall.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_sword_recall.dm
index de1e78e16d6..bba75d59005 100644
--- a/code/modules/ninja/suit/n_suit_verbs/ninja_sword_recall.dm
+++ b/code/modules/ninja/suit/n_suit_verbs/ninja_sword_recall.dm
@@ -26,13 +26,13 @@
if(!ninjacost(cost))
if(istype(energyKatana.loc, /mob/living/carbon))
var/mob/living/carbon/C = energyKatana.loc
- C.unEquip(energyKatana)
+ C.transferItemToLoc(energyKatana, get_turf(energyKatana), TRUE)
//Somebody swollowed my sword, probably the clown doing a circus act.
if(energyKatana in C.stomach_contents)
C.stomach_contents -= energyKatana
-
- energyKatana.loc = get_turf(energyKatana)
+ else
+ energyKatana.forceMove(get_turf(energyKatana))
if(inview) //If we can see the katana, throw it towards ourselves, damaging people as we go.
energyKatana.spark_system.start()
diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm
index 2944e345900..4b596241853 100644
--- a/code/modules/paperwork/clipboard.dm
+++ b/code/modules/paperwork/clipboard.dm
@@ -29,9 +29,8 @@
/obj/item/weapon/clipboard/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/paper))
- if(!user.unEquip(W))
+ if(!user.transferItemToLoc(W, src))
return
- W.loc = src
toppaper = W
user << "You clip the paper onto \the [src]."
update_icon()
@@ -79,9 +78,8 @@
var/obj/item/held = usr.get_active_held_item()
if(istype(held, /obj/item/weapon/pen))
var/obj/item/weapon/pen/W = held
- if(!usr.unEquip(W))
+ if(!usr.transferItemToLoc(W, src))
return
- W.loc = src
haspen = W
usr << "You slot [W] into [src]."
diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm
index 383bc0fe595..3798adac0e0 100644
--- a/code/modules/paperwork/folders.dm
+++ b/code/modules/paperwork/folders.dm
@@ -32,9 +32,8 @@
/obj/item/weapon/folder/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/paper) || istype(W, /obj/item/weapon/photo) || istype(W, /obj/item/documents))
- if(!user.unEquip(W))
+ if(!user.transferItemToLoc(W, src))
return
- W.loc = src
user << "You put [W] into [src]."
update_icon()
else if(istype(W, /obj/item/weapon/pen))
diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm
index 5af98751ff3..12148c61294 100644
--- a/code/modules/paperwork/handlabeler.dm
+++ b/code/modules/paperwork/handlabeler.dm
@@ -83,12 +83,9 @@
/obj/item/weapon/hand_labeler/attackby(obj/item/I, mob/user, params)
..()
if(istype(I, /obj/item/hand_labeler_refill))
- if(!user.unEquip(I))
- return
user << "You insert [I] into [src]."
qdel(I)
- labels_left = initial(labels_left)
- return
+ labels_left = initial(labels_left) //Yes, it's capped at its initial value
/obj/item/weapon/hand_labeler/borg
name = "cyborg-hand labeler"
diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index 43a3db65dff..ca8e06860d2 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -325,7 +325,7 @@
if(user.disabilities & CLUMSY && prob(10))
user.visible_message("[user] accidentally ignites themselves!", \
"You miss the paper and accidentally light yourself on fire!")
- user.unEquip(P)
+ user.dropItemToGround(P)
user.adjust_fire_stacks(1)
user.IgniteMob()
return
@@ -333,7 +333,7 @@
if(!(in_range(user, src))) //to prevent issues as a result of telepathically lighting a paper
return
- user.unEquip(src)
+ user.dropItemToGround(src)
user.visible_message("[user] lights [src] ablaze with [P]!", "You light [src] on fire!")
fire_act()
diff --git a/code/modules/paperwork/paper_cutter.dm b/code/modules/paperwork/paper_cutter.dm
index 3d61ae7c687..becfab8b41b 100644
--- a/code/modules/paperwork/paper_cutter.dm
+++ b/code/modules/paperwork/paper_cutter.dm
@@ -101,9 +101,10 @@
else if(istype(over_object, /obj/screen/inventory/hand))
var/obj/screen/inventory/hand/H = over_object
if(!remove_item_from_storage(M))
- if(!M.unEquip(src))
- return
- M.put_in_hand(src, H.held_index)
+ M.temporarilyRemoveItemFromInventory(src, TRUE)
+ if(!M.put_in_hand(src, H.held_index))
+ qdel(src) //rip
+ return
add_fingerprint(M)
diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm
index 79878af7a21..9969e51110c 100644
--- a/code/modules/paperwork/paperbin.dm
+++ b/code/modules/paperwork/paperbin.dm
@@ -1,142 +1,141 @@
-/obj/item/weapon/paper_bin
- name = "paper bin"
- desc = "Contains all the paper you'll never need."
- icon = 'icons/obj/bureaucracy.dmi'
- icon_state = "paper_bin1"
- item_state = "sheet-metal"
- throwforce = 0
- w_class = WEIGHT_CLASS_NORMAL
- throw_speed = 3
- throw_range = 7
- pressure_resistance = 8
- var/total_paper = 30
- var/list/papers = list()
- var/obj/item/weapon/pen/bin_pen
-
-/obj/item/weapon/paper_bin/Initialize(mapload)
- ..()
- if(!mapload)
- return
- var/obj/item/weapon/pen/P = locate(/obj/item/weapon/pen) in src.loc
- if(P && !bin_pen)
- P.loc = src
- bin_pen = P
- update_icon()
- var/static/warned = FALSE
- if(!warned)
- warning("one or more paperbins ate a pen duing initialize()")
- warned = TRUE
-
-/obj/item/weapon/paper_bin/fire_act(exposed_temperature, exposed_volume)
- if(!total_paper)
- return
- ..()
-
-/obj/item/weapon/paper_bin/Destroy()
- if(papers)
- for(var/i in papers)
- qdel(i)
- papers = null
- . = ..()
-
-/obj/item/weapon/paper_bin/fire_act(exposed_temperature, exposed_volume)
- if(total_paper)
- total_paper = 0
- update_icon()
- ..()
-
-/obj/item/weapon/paper_bin/MouseDrop(atom/over_object)
- var/mob/living/M = usr
- if(!istype(M) || M.incapacitated() || !Adjacent(M))
- return
-
- if(over_object == M)
- M.put_in_hands(src)
-
- else if(istype(over_object, /obj/screen/inventory/hand))
- var/obj/screen/inventory/hand/H = over_object
- if(!remove_item_from_storage(M))
- if(!M.unEquip(src))
- return
- M.put_in_hand(src, H.held_index)
-
- add_fingerprint(M)
-
-
-/obj/item/weapon/paper_bin/attack_paw(mob/user)
- return attack_hand(user)
-
-
-/obj/item/weapon/paper_bin/attack_hand(mob/user)
- if(user.lying)
- return
- user.changeNext_move(CLICK_CD_MELEE)
- if(bin_pen)
- var/obj/item/weapon/pen/P = bin_pen
- P.loc = user.loc
- user.put_in_hands(P)
- user << "You take [P] out of \the [src]."
- bin_pen = null
- update_icon()
- else if(total_paper >= 1)
- total_paper--
- update_icon()
- // If there's any custom paper on the stack, use that instead of creating a new paper.
- var/obj/item/weapon/paper/P
- if(papers.len > 0)
- P = papers[papers.len]
- papers.Remove(P)
- else
- P = new /obj/item/weapon/paper
- if(SSevent.holidays && SSevent.holidays[APRIL_FOOLS])
- if(prob(30))
- P.info = "HONK HONK HONK HONK HONK HONK HONK
HOOOOOOOOOOOOOOOOOOOOOONK
APRIL FOOLS"
- P.rigged = 1
- P.updateinfolinks()
-
- P.loc = user.loc
- user.put_in_hands(P)
- user << "You take [P] out of \the [src]."
- else
- user << "[src] is empty!"
-
- add_fingerprint(user)
-
-
-/obj/item/weapon/paper_bin/attackby(obj/item/I, mob/user, params)
- if(istype(I, /obj/item/weapon/paper))
- var/obj/item/weapon/paper/P = I
- if(!user.unEquip(P))
- return
- P.loc = src
- user << "You put [P] in [src]."
- papers.Add(P)
- total_paper++
- update_icon()
- else if(istype(I, /obj/item/weapon/pen))
- var/obj/item/weapon/pen/P = I
- if(!user.unEquip(P))
- return
- P.loc = src
- user << "You put [P] in [src]."
- bin_pen = P
- update_icon()
- else
- return ..()
-
-/obj/item/weapon/paper_bin/examine(mob/user)
- ..()
- if(total_paper)
- user << "It contains " + (total_paper > 1 ? "[total_paper] papers" : " one paper")+"."
- else
- user << "It doesn't contain anything."
-
-
-/obj/item/weapon/paper_bin/update_icon()
- if(total_paper < 1)
- icon_state = "paper_bin0"
- else
- icon_state = "paper_bin1"
- cut_overlays()
- if(bin_pen)
- add_overlay(image(icon=bin_pen.icon,icon_state=bin_pen.icon_state))
+/obj/item/weapon/paper_bin
+ name = "paper bin"
+ desc = "Contains all the paper you'll never need."
+ icon = 'icons/obj/bureaucracy.dmi'
+ icon_state = "paper_bin1"
+ item_state = "sheet-metal"
+ throwforce = 0
+ w_class = WEIGHT_CLASS_NORMAL
+ throw_speed = 3
+ throw_range = 7
+ pressure_resistance = 8
+ var/total_paper = 30
+ var/list/papers = list()
+ var/obj/item/weapon/pen/bin_pen
+
+/obj/item/weapon/paper_bin/Initialize(mapload)
+ ..()
+ if(!mapload)
+ return
+ var/obj/item/weapon/pen/P = locate(/obj/item/weapon/pen) in src.loc
+ if(P && !bin_pen)
+ P.loc = src
+ bin_pen = P
+ update_icon()
+ var/static/warned = FALSE
+ if(!warned)
+ warning("one or more paperbins ate a pen duing initialize()")
+ warned = TRUE
+
+/obj/item/weapon/paper_bin/fire_act(exposed_temperature, exposed_volume)
+ if(!total_paper)
+ return
+ ..()
+
+/obj/item/weapon/paper_bin/Destroy()
+ if(papers)
+ for(var/i in papers)
+ qdel(i)
+ papers = null
+ . = ..()
+
+/obj/item/weapon/paper_bin/fire_act(exposed_temperature, exposed_volume)
+ if(total_paper)
+ total_paper = 0
+ update_icon()
+ ..()
+
+/obj/item/weapon/paper_bin/MouseDrop(atom/over_object)
+ var/mob/living/M = usr
+ if(!istype(M) || M.incapacitated() || !Adjacent(M))
+ return
+
+ if(over_object == M)
+ M.put_in_hands(src)
+
+ else if(istype(over_object, /obj/screen/inventory/hand))
+ var/obj/screen/inventory/hand/H = over_object
+ if(!remove_item_from_storage(M))
+ M.temporarilyRemoveItemFromInventory(src, TRUE)
+ if(!M.put_in_hand(src, H.held_index))
+ qdel(src)
+ return
+
+ add_fingerprint(M)
+
+
+/obj/item/weapon/paper_bin/attack_paw(mob/user)
+ return attack_hand(user)
+
+
+/obj/item/weapon/paper_bin/attack_hand(mob/user)
+ if(user.lying)
+ return
+ user.changeNext_move(CLICK_CD_MELEE)
+ if(bin_pen)
+ var/obj/item/weapon/pen/P = bin_pen
+ P.loc = user.loc
+ user.put_in_hands(P)
+ user << "You take [P] out of \the [src]."
+ bin_pen = null
+ update_icon()
+ else if(total_paper >= 1)
+ total_paper--
+ update_icon()
+ // If there's any custom paper on the stack, use that instead of creating a new paper.
+ var/obj/item/weapon/paper/P
+ if(papers.len > 0)
+ P = papers[papers.len]
+ papers.Remove(P)
+ else
+ P = new /obj/item/weapon/paper
+ if(SSevent.holidays && SSevent.holidays[APRIL_FOOLS])
+ if(prob(30))
+ P.info = "HONK HONK HONK HONK HONK HONK HONK
HOOOOOOOOOOOOOOOOOOOOOONK
APRIL FOOLS"
+ P.rigged = 1
+ P.updateinfolinks()
+
+ P.loc = user.loc
+ user.put_in_hands(P)
+ user << "You take [P] out of \the [src]."
+ else
+ user << "[src] is empty!"
+
+ add_fingerprint(user)
+
+
+/obj/item/weapon/paper_bin/attackby(obj/item/I, mob/user, params)
+ if(istype(I, /obj/item/weapon/paper))
+ var/obj/item/weapon/paper/P = I
+ if(!user.transferItemToLoc(P, src))
+ return
+ user << "You put [P] in [src]."
+ papers.Add(P)
+ total_paper++
+ update_icon()
+ else if(istype(I, /obj/item/weapon/pen))
+ var/obj/item/weapon/pen/P = I
+ if(!user.transferItemToLoc(P, src))
+ return
+ user << "You put [P] in [src]."
+ bin_pen = P
+ update_icon()
+ else
+ return ..()
+
+/obj/item/weapon/paper_bin/examine(mob/user)
+ ..()
+ if(total_paper)
+ user << "It contains " + (total_paper > 1 ? "[total_paper] papers" : " one paper")+"."
+ else
+ user << "It doesn't contain anything."
+
+
+/obj/item/weapon/paper_bin/update_icon()
+ if(total_paper < 1)
+ icon_state = "paper_bin0"
+ else
+ icon_state = "paper_bin1"
+ cut_overlays()
+ if(bin_pen)
+ add_overlay(image(icon=bin_pen.icon,icon_state=bin_pen.icon_state))
diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm
index b29e0400933..a2726173966 100644
--- a/code/modules/paperwork/paperplane.dm
+++ b/code/modules/paperwork/paperplane.dm
@@ -47,9 +47,8 @@
/obj/item/weapon/paperplane/attack_self(mob/user)
user << "You unfold [src]."
- user.unEquip(src)
- user.put_in_hands(internalPaper)
qdel(src)
+ user.put_in_hands(internalPaper)
/obj/item/weapon/paperplane/attackby(obj/item/weapon/P, mob/living/carbon/human/user, params)
..()
@@ -73,14 +72,14 @@
if(user.disabilities & CLUMSY && prob(10))
user.visible_message("[user] accidentally ignites themselves!", \
"You miss the [src] and accidentally light yourself on fire!")
- user.unEquip(P)
+ user.dropItemToGround(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.dropItemToGround(src)
user.visible_message("[user] lights [src] ablaze with [P]!", "You light [src] on fire!")
fire_act()
@@ -108,7 +107,7 @@
if( (!in_range(src, user)) || user.stat || user.restrained() )
return
user << "You fold [src] into the shape of a plane!"
- user.unEquip(src)
+ user.temporarilyRemoveItemFromInventory(src)
I = new /obj/item/weapon/paperplane(loc, src)
user.put_in_hands(I)
else
diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm
index 55eb7d59da7..30d76518cb8 100644
--- a/code/modules/paperwork/photography.dm
+++ b/code/modules/paperwork/photography.dm
@@ -168,7 +168,7 @@
if(pictures_left)
user << "[src] still has some film in it!"
return
- if(!user.unEquip(I))
+ if(!user.temporarilyRemoveItemFromInventory(I))
return
user << "You insert [I] into [src]."
qdel(I)
diff --git a/code/modules/power/antimatter/control.dm b/code/modules/power/antimatter/control.dm
index 485165fa681..a5a69a1bf21 100644
--- a/code/modules/power/antimatter/control.dm
+++ b/code/modules/power/antimatter/control.dm
@@ -181,10 +181,9 @@
user << "There is already a [fueljar] inside!"
return
- if(!user.unEquip(W))
+ if(!user.transferItemToLoc(W, src))
return
fueljar = W
- W.forceMove(src)
user.visible_message("[user.name] loads an [W.name] into the [src.name].", \
"You load an [W.name].", \
"You hear a thunk.")
diff --git a/code/modules/projectiles/ammunition/caseless.dm b/code/modules/projectiles/ammunition/caseless.dm
index aa6c47e855c..67c2745a37f 100644
--- a/code/modules/projectiles/ammunition/caseless.dm
+++ b/code/modules/projectiles/ammunition/caseless.dm
@@ -87,9 +87,8 @@
else if (istype(A, /obj/item/weapon/pen))
if(modified)
if(!FD.pen)
- if(!user.unEquip(A))
+ if(!user.transferItemToLoc(A, FD))
return
- A.forceMove(FD)
FD.pen = A
FD.damage = 5
FD.nodamage = 0
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index a0fae47ea8f..bc2a1f045cb 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -279,13 +279,12 @@
if(istype(I, /obj/item/device/flashlight/seclite))
var/obj/item/device/flashlight/seclite/S = I
if(!gun_light)
- if(!user.unEquip(I))
+ if(!user.transferItemToLoc(I, src))
return
user << "You click [S] into place on [src]."
if(S.on)
SetLuminosity(0)
gun_light = S
- I.loc = src
update_icon()
update_gunlight(user)
verbs += /obj/item/weapon/gun/proc/toggle_gunlight
diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm
index a8dd8f9bcbe..ee0744b2753 100644
--- a/code/modules/projectiles/guns/ballistic.dm
+++ b/code/modules/projectiles/guns/ballistic.dm
@@ -56,21 +56,23 @@
if (istype(A, /obj/item/ammo_box/magazine))
var/obj/item/ammo_box/magazine/AM = A
if (!magazine && istype(AM, mag_type))
- user.remove_from_mob(AM)
- magazine = AM
- magazine.forceMove(src)
- user << "You load a new magazine into \the [src]."
- chamber_round()
- A.update_icon()
- update_icon()
- return 1
+ if(user.transferItemToLoc(AM, src))
+ magazine = AM
+ user << "You load a new magazine into \the [src]."
+ chamber_round()
+ A.update_icon()
+ update_icon()
+ return 1
+ else
+ user << "You cannot seem to get \the [src] out of your hands!"
+ return
else if (magazine)
user << "There's already a magazine in \the [src]."
if(istype(A, /obj/item/weapon/suppressor))
var/obj/item/weapon/suppressor/S = A
if(can_suppress)
if(!suppressed)
- if(!user.unEquip(A))
+ if(!user.transferItemToLoc(A, src))
return
user << "You screw [S] onto [src]."
suppressed = A
@@ -78,7 +80,6 @@
S.initial_w_class = w_class
fire_sound = 'sound/weapons/Gunshot_silenced.ogg'
w_class = WEIGHT_CLASS_NORMAL //so pistols do not fit in pockets when suppressed
- A.loc = src
update_icon()
return
else
diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm
index c53332c22ad..f7337e4ee19 100644
--- a/code/modules/projectiles/guns/ballistic/automatic.dm
+++ b/code/modules/projectiles/guns/ballistic/automatic.dm
@@ -34,21 +34,22 @@
if(istype(A, /obj/item/ammo_box/magazine))
var/obj/item/ammo_box/magazine/AM = A
if(istype(AM, mag_type))
- if(magazine)
- user << "You perform a tactical reload on \the [src], replacing the magazine."
- magazine.dropped()
- magazine.forceMove(get_turf(src.loc))
- magazine.update_icon()
- magazine = null
+ var/obj/item/ammo_box/magazine/oldmag = magazine
+ if(user.transferItemToLoc(AM, src))
+ magazine = AM
+ if(oldmag)
+ user << "You perform a tactical reload on \the [src], replacing the magazine."
+ oldmag.dropped()
+ oldmag.forceMove(get_turf(src.loc))
+ oldmag.update_icon()
+ else
+ user << "You insert the magazine into \the [src]."
+ chamber_round()
+ A.update_icon()
+ update_icon()
+ return 1
else
- user << "You insert the magazine into \the [src]."
- user.remove_from_mob(AM)
- magazine = AM
- magazine.loc = src
- chamber_round()
- A.update_icon()
- update_icon()
- return 1
+ user << "You cannot seem to get \the [src] out of your hands!"
/obj/item/weapon/gun/ballistic/automatic/ui_action_click()
burst_select()
diff --git a/code/modules/projectiles/guns/ballistic/laser_gatling.dm b/code/modules/projectiles/guns/ballistic/laser_gatling.dm
index dd656687c71..8f8585c29af 100644
--- a/code/modules/projectiles/guns/ballistic/laser_gatling.dm
+++ b/code/modules/projectiles/guns/ballistic/laser_gatling.dm
@@ -46,13 +46,13 @@
/obj/item/weapon/minigunpack/attackby(obj/item/weapon/W, mob/user, params)
if(W == gun) //Don't need armed check, because if you have the gun assume its armed.
- user.unEquip(gun,1)
+ user.dropItemToGround(gun, TRUE)
else
..()
/obj/item/weapon/minigunpack/dropped(mob/user)
if(armed)
- user.unEquip(gun,1)
+ user.dropItemToGround(gun, TRUE)
/obj/item/weapon/minigunpack/MouseDrop(atom/over_object)
if(armed)
@@ -67,9 +67,10 @@
if(istype(over_object, /obj/screen/inventory/hand))
var/obj/screen/inventory/hand/H = over_object
- if(!M.unEquip(src))
+ if(!M.temporarilyRemoveItemFromInventory(src))
return
- M.put_in_hand(src, H.held_index)
+ if(!M.put_in_hand(src, H.held_index))
+ qdel(src)
/obj/item/weapon/minigunpack/update_icon()
diff --git a/code/modules/projectiles/guns/ballistic/pistol.dm b/code/modules/projectiles/guns/ballistic/pistol.dm
index a28f1f0b64d..19f8fbffb2a 100644
--- a/code/modules/projectiles/guns/ballistic/pistol.dm
+++ b/code/modules/projectiles/guns/ballistic/pistol.dm
@@ -67,10 +67,9 @@
user << "As you try to pick up [src], it slips out of your grip.."
if(prob(50))
user << "..and vanishes from your vision! Where the hell did it go?"
- user.unEquip(src)
qdel(src)
user.update_icons()
else
user << "..and falls into view. Whew, that was a close one."
- user.unEquip(src)
+ user.dropItemToGround(src)
diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm
index f1aee97eb44..e4aae72ca6b 100644
--- a/code/modules/projectiles/guns/ballistic/revolver.dm
+++ b/code/modules/projectiles/guns/ballistic/revolver.dm
@@ -108,7 +108,7 @@
playsound(user, fire_sound, 50, 1)
user << "[src] blows up in your face!"
user.take_bodypart_damage(0,20)
- user.unEquip(src)
+ user.dropItemToGround(src)
return 0
..()
diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
index 1d0dc72e1f6..df867c4444e 100644
--- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
+++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
@@ -253,10 +253,10 @@
break
if(KA.get_remaining_mod_capacity() >= cost)
if(.)
+ if(!user.transferItemToLoc(src, KA))
+ return
user << "You install the modkit."
playsound(loc, 'sound/items/Screwdriver.ogg', 100, 1)
- user.unEquip(src)
- forceMove(KA)
KA.modkits += src
else
user << "The modkit you're trying to install would conflict with an already installed modkit. Use a crowbar to remove existing modkits."
diff --git a/code/modules/projectiles/guns/grenade_launcher.dm b/code/modules/projectiles/guns/grenade_launcher.dm
index 6972e1adc91..7f44205eca6 100644
--- a/code/modules/projectiles/guns/grenade_launcher.dm
+++ b/code/modules/projectiles/guns/grenade_launcher.dm
@@ -20,9 +20,8 @@
if((istype(I, /obj/item/weapon/grenade)))
if(grenades.len < max_grenades)
- if(!user.unEquip(I))
+ if(!user.transferItemToLoc(I, src))
return
- I.loc = src
grenades += I
user << "You put the grenade in the grenade launcher."
user << "[grenades.len] / [max_grenades] Grenades."
diff --git a/code/modules/projectiles/guns/syringe_gun.dm b/code/modules/projectiles/guns/syringe_gun.dm
index 3aae4b7e168..8da5ef5aecd 100644
--- a/code/modules/projectiles/guns/syringe_gun.dm
+++ b/code/modules/projectiles/guns/syringe_gun.dm
@@ -52,11 +52,10 @@
/obj/item/weapon/gun/syringe/attackby(obj/item/A, mob/user, params, show_msg = 1)
if(istype(A, /obj/item/weapon/reagent_containers/syringe))
if(syringes.len < max_syringes)
- if(!user.unEquip(A))
+ if(!user.transferItemToLoc(A, src))
return
user << "You load [A] into \the [src]."
syringes.Add(A)
- A.forceMove(src)
recharge_newshot()
return 1
else
diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm
index 97b3b0bfb70..c460400839b 100644
--- a/code/modules/projectiles/pins.dm
+++ b/code/modules/projectiles/pins.dm
@@ -31,7 +31,7 @@
user << "You remove [G]'s old pin."
if(!G.pin)
- if(!user.unEquip(src))
+ if(!user.temporarilyRemoveItemFromInventory(src))
return
gun_insert(user, G)
user << "You insert [src] into [G]."
@@ -45,7 +45,7 @@
/obj/item/device/firing_pin/proc/gun_insert(mob/living/user, obj/item/weapon/gun/G)
gun = G
- loc = gun
+ forceMove(gun)
gun.pin = src
return
diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm
index 961aa9a2a08..04a83ca3c05 100644
--- a/code/modules/projectiles/projectile/magic.dm
+++ b/code/modules/projectiles/projectile/magic.dm
@@ -173,7 +173,7 @@
Robot.notify_ai(1)
else
for(var/obj/item/W in contents)
- if(!M.unEquip(W))
+ if(!M.dropItemToGround(W))
qdel(W)
var/mob/living/new_mob
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index 16bfa2674fd..7993e9fe90f 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -255,7 +255,6 @@
else if(isprox(O))
user << "You add [O] to [src]."
qdel(O)
- user.unEquip(src)
qdel(src)
user.put_in_hands(new /obj/item/weapon/bucket_sensor)
else
diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm
index 9520ec001be..9bd316d467e 100644
--- a/code/modules/reagents/reagent_containers/pill.dm
+++ b/code/modules/reagents/reagent_containers/pill.dm
@@ -43,19 +43,12 @@
"[user] forces [M] to [apply_method] [src].")
- user.unEquip(src) //icon update
add_logs(user, M, "fed", reagentlist(src))
- loc = M //Put the pill inside the mob. This fixes the issue where the pill appears to drop to the ground after someone eats it.
-
if(reagents.total_volume)
reagents.reaction(M, apply_type)
reagents.trans_to(M, reagents.total_volume)
- qdel(src)
- return 1
- else
- qdel(src)
- return 1
- return 0
+ qdel(src)
+ return 1
/obj/item/weapon/reagent_containers/pill/afterattack(obj/target, mob/user , proximity)
diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm
index 9feb23f4e47..876309b60ee 100644
--- a/code/modules/recycling/sortingmachinery.dm
+++ b/code/modules/recycling/sortingmachinery.dm
@@ -82,7 +82,7 @@
AM.ex_act()
/obj/item/smallDelivery/attack_self(mob/user)
- user.unEquip(src)
+ user.temporarilyRemoveItemFromInventory(src, TRUE)
for(var/X in contents)
var/atom/movable/AM = X
user.put_in_hands(AM)
@@ -92,7 +92,7 @@
/obj/item/smallDelivery/attack_self_tk(mob/user)
if(ismob(loc))
var/mob/M = loc
- M.unEquip(src)
+ M.temporarilyRemoveItemFromInventory(src, TRUE)
for(var/X in contents)
var/atom/movable/AM = X
M.put_in_hands(AM)
diff --git a/code/modules/ruins/objects_and_mobs/ash_walker_den.dm b/code/modules/ruins/objects_and_mobs/ash_walker_den.dm
index 475f80a2425..c59850198e3 100644
--- a/code/modules/ruins/objects_and_mobs/ash_walker_den.dm
+++ b/code/modules/ruins/objects_and_mobs/ash_walker_den.dm
@@ -29,7 +29,7 @@
else
meat_counter ++
for(var/obj/item/W in H)
- H.unEquip(W)
+ H.dropItemToGround(W)
H.gib()
adjustHealth(-maxHealth * 0.05)//restores 5% hp of tendril
diff --git a/code/modules/spells/spell_types/barnyard.dm b/code/modules/spells/spell_types/barnyard.dm
index a63d91c6437..0603fe2fc46 100644
--- a/code/modules/spells/spell_types/barnyard.dm
+++ b/code/modules/spells/spell_types/barnyard.dm
@@ -42,7 +42,7 @@
magichead.flags_inv = null
target.visible_message("[target]'s face lights up in fire, and after the event a barnyard animal's head takes it's place!", \
"Your face burns up, and shortly after the fire you realise you have the face of a barnyard animal!")
- if(!target.unEquip(target.wear_mask))
+ if(!target.dropItemToGround(target.wear_mask))
qdel(target.wear_mask)
target.equip_to_slot_if_possible(magichead, slot_wear_mask, 1, 1)
playsound(get_turf(target), mSounds[randM], 50, 1)
diff --git a/code/modules/spells/spell_types/lichdom.dm b/code/modules/spells/spell_types/lichdom.dm
index 1e7fc5ee7f8..aad30a2b469 100644
--- a/code/modules/spells/spell_types/lichdom.dm
+++ b/code/modules/spells/spell_types/lichdom.dm
@@ -91,7 +91,7 @@
if(iscarbon(old_body))
var/mob/living/carbon/C = old_body
for(var/obj/item/W in C)
- C.unEquip(W)
+ C.dropItemToGround(W)
for(var/X in C.internal_organs)
var/obj/item/organ/I = X
I.Remove(C)
@@ -134,7 +134,7 @@
current_body = M.mind.current
if(ishuman(M))
var/mob/living/carbon/human/H = M
- H.unEquip(H.wear_suit)
- H.unEquip(H.head)
+ H.dropItemToGround(H.wear_suit)
+ H.dropItemToGround(H.head)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/black(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/black(H), slot_head)
diff --git a/code/modules/spells/spell_types/spacetime_distortion.dm b/code/modules/spells/spell_types/spacetime_distortion.dm
index 8d772a26738..63dae70ac10 100644
--- a/code/modules/spells/spell_types/spacetime_distortion.dm
+++ b/code/modules/spells/spell_types/spacetime_distortion.dm
@@ -82,10 +82,9 @@
/obj/effect/cross_action/spacetime_dist/proc/get_walker(atom/movable/AM)
busy = TRUE
- if(linked_dist)
- flick("purplesparkles", src)
- AM.forceMove(get_turf(src))
- playsound(get_turf(src),sound,70,0)
+ flick("purplesparkles", src)
+ AM.forceMove(get_turf(src))
+ playsound(get_turf(src),sound,70,0)
busy = FALSE
/obj/effect/cross_action/spacetime_dist/Crossed(atom/movable/AM)
@@ -93,7 +92,7 @@
walk_link(AM)
/obj/effect/cross_action/spacetime_dist/attackby(obj/item/W, mob/user, params)
- if(user.unEquip(W))
+ if(user.temporarilyRemoveItemFromInventory(W))
walk_link(W)
else
walk_link(user)
diff --git a/code/modules/spells/spell_types/summonitem.dm b/code/modules/spells/spell_types/summonitem.dm
index d082668630e..dd55a88bdb5 100644
--- a/code/modules/spells/spell_types/summonitem.dm
+++ b/code/modules/spells/spell_types/summonitem.dm
@@ -70,7 +70,7 @@
M.loc.visible_message("[M] suddenly appears!")
item_to_retrieve = null
break
- M.unEquip(item_to_retrieve)
+ M.dropItemToGround(item_to_retrieve)
if(iscarbon(M)) //Edge case housekeeping
var/mob/living/carbon/C = M
diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm
index 44af9335068..979f2623f41 100644
--- a/code/modules/surgery/bodyparts/bodyparts.dm
+++ b/code/modules/surgery/bodyparts/bodyparts.dm
@@ -67,7 +67,7 @@
else
H.visible_message("[user] jams [src] into [H]'s empty socket!",\
"[user] forces [src] into your empty socket, and it locks into place!")
- user.unEquip(src,1)
+ user.temporarilyRemoveItemFromInventory(src, TRUE)
attach_limb(C)
return
..()
diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm
index 32bff216855..dea1e05f7d4 100644
--- a/code/modules/surgery/bodyparts/dismemberment.dm
+++ b/code/modules/surgery/bodyparts/dismemberment.dm
@@ -85,7 +85,7 @@
update_limb(1)
C.bodyparts -= src
if(held_index)
- C.unEquip(owner.get_item_for_held_index(held_index), 1)
+ C.dropItemToGround(owner.get_item_for_held_index(held_index), 1)
C.hand_bodyparts[held_index] = null
owner = null
@@ -162,7 +162,7 @@
if(R)
R.update_icon()
if(C.gloves)
- C.unEquip(C.gloves, 1)
+ C.dropItemToGround(C.gloves, TRUE)
C.update_inv_gloves() //to remove the bloody hands overlay
@@ -180,7 +180,7 @@
if(L)
L.update_icon()
if(C.gloves)
- C.unEquip(C.gloves, 1)
+ C.dropItemToGround(C.gloves, TRUE)
C.update_inv_gloves() //to remove the bloody hands overlay
@@ -193,7 +193,7 @@
owner.legcuffed = null
owner.update_inv_legcuffed()
if(owner.shoes)
- owner.unEquip(owner.shoes, 1)
+ owner.dropItemToGround(owner.shoes, TRUE)
..()
/obj/item/bodypart/l_leg/drop_limb(special) //copypasta
@@ -205,7 +205,7 @@
owner.legcuffed = null
owner.update_inv_legcuffed()
if(owner.shoes)
- owner.unEquip(owner.shoes, 1)
+ owner.dropItemToGround(owner.shoes, TRUE)
..()
/obj/item/bodypart/head/drop_limb(special)
@@ -213,7 +213,7 @@
//Drop all worn head items
for(var/X in list(owner.glasses, owner.ears, owner.wear_mask, owner.head))
var/obj/item/I = X
- owner.unEquip(I, 1)
+ owner.dropItemToGround(I, TRUE)
name = "[owner.real_name]'s head"
..()
diff --git a/code/modules/surgery/bodyparts/helpers.dm b/code/modules/surgery/bodyparts/helpers.dm
index 85d4e87055f..2bc650656f5 100644
--- a/code/modules/surgery/bodyparts/helpers.dm
+++ b/code/modules/surgery/bodyparts/helpers.dm
@@ -270,4 +270,4 @@
U.adjusted = DIGITIGRADE_STYLE
H.update_inv_w_uniform()
if(H.shoes && !swap_back)
- H.unEquip(H.shoes)
+ H.dropItemToGround(H.shoes)
diff --git a/code/modules/surgery/bodyparts/robot_bodyparts.dm b/code/modules/surgery/bodyparts/robot_bodyparts.dm
index 24a9622a33d..6d0001c4211 100644
--- a/code/modules/surgery/bodyparts/robot_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/robot_bodyparts.dm
@@ -61,9 +61,8 @@
user << "You have already inserted a cell!"
return
else
- if(!user.unEquip(W))
+ if(!user.transferItemToLoc(W, src))
return
- W.loc = src
src.cell = W
user << "You insert the cell."
else if(istype(W, /obj/item/stack/cable_coil))
@@ -118,9 +117,8 @@
user << "You can't use a broken flash!"
return
else
- if(!user.unEquip(W))
+ if(!user.transferItemToLoc(F, src))
return
- F.loc = src
if(src.flash1)
src.flash2 = F
else
diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm
index a9dcf674556..86e497f1511 100644
--- a/code/modules/surgery/organs/augments_arms.dm
+++ b/code/modules/surgery/organs/augments_arms.dm
@@ -72,8 +72,7 @@
var/obj/item/device/assembly/flash/F = holder
F.SetLuminosity(0)
- owner.unEquip(holder, 1)
- holder.forceMove(src)
+ owner.transferItemToLoc(holder, src, TRUE)
holder = null
playsound(get_turf(owner), 'sound/mecha/mechmove03.ogg', 50, 1)
@@ -96,7 +95,7 @@
var/obj/item/arm_item = owner.get_active_held_item()
if(arm_item)
- if(!owner.unEquip(arm_item))
+ if(!owner.dropItemToGround(arm_item))
owner << "Your [arm_item] interferes with [src]!"
return
else
diff --git a/code/modules/surgery/prosthetic_replacement.dm b/code/modules/surgery/prosthetic_replacement.dm
index da3c36dd687..e37e99ffeef 100644
--- a/code/modules/surgery/prosthetic_replacement.dm
+++ b/code/modules/surgery/prosthetic_replacement.dm
@@ -60,7 +60,6 @@
else
target.regenerate_limb(target_zone)
user.visible_message("[user] finishes attaching [tool]!", "You attach [tool].")
- user.unEquip(tool)
qdel(tool)
if(istype(tool, /obj/item/weapon/twohanded/required/chainsaw))
var/obj/item/weapon/mounted_chainsaw/new_arm = new(target)
diff --git a/code/modules/telesci/bscrystal.dm b/code/modules/telesci/bscrystal.dm
index 2bd0ee63d95..c2944a52b36 100644
--- a/code/modules/telesci/bscrystal.dm
+++ b/code/modules/telesci/bscrystal.dm
@@ -26,7 +26,6 @@
new /obj/effect/particle_effect/sparks(loc)
playsound(src.loc, "sparks", 50, 1)
blink_mob(user)
- user.unEquip(src)
qdel(src)
/obj/item/weapon/ore/bluespace_crystal/proc/blink_mob(mob/living/L)
diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm
index 9ddd993c7e6..da73a5935cd 100644
--- a/code/modules/telesci/telesci_computer.dm
+++ b/code/modules/telesci/telesci_computer.dm
@@ -68,9 +68,9 @@
updateDialog()
else if(istype(W, /obj/item/device/gps))
if(!inserted_gps)
+ if(!user.transferItemToLoc(W, src))
+ return
inserted_gps = W
- user.unEquip(W)
- W.loc = src
user.visible_message("[user] inserts [W] into \the [src]'s GPS device slot.", "You insert [W] into \the [src]'s GPS device slot.")
else if(istype(W, /obj/item/device/multitool))
var/obj/item/device/multitool/M = W