From 3f7f5d4000fa5ecb154a4139108e2e39c0867be3 Mon Sep 17 00:00:00 2001 From: Cyberboss Date: Mon, 30 Jan 2017 15:28:31 -0500 Subject: [PATCH] Removes/Refactors /mob/unEquip (#22918) * Part1 * IT COMPILES!!!! * Fuck wait this was missing from that last * Update handlabeler.dm * Update handlabeler.dm * Fixes n shit * Fix this * Fixes #23310 * Fucking @RemieRichards was right * Fixes devil unEquip * WTF ARE BITFLAGS? * THERES THE FUCKING PROBLEM * Fixes --- code/datums/diseases/transformation.dm | 4 +- code/datums/diseases/wizarditis.dm | 6 +- code/datums/mind.dm | 2 +- code/game/atoms.dm | 5 +- .../gamemodes/changeling/powers/biodegrade.dm | 8 +- .../gamemodes/changeling/powers/mutations.dm | 13 +- .../clock_cult/clock_effects/clock_sigils.dm | 2 +- .../clock_items/clock_components.dm | 3 +- .../clock_cult/clock_items/clockwork_armor.dm | 8 +- .../clock_structures/geis_binding.dm | 4 +- code/game/gamemodes/cult/cult_items.dm | 18 +- code/game/gamemodes/cult/runes.dm | 2 +- .../gamemodes/devil/true_devil/inventory.dm | 6 +- code/game/gamemodes/nuclear/nuclearbomb.dm | 5 +- code/game/gamemodes/wizard/artefact.dm | 2 +- code/game/gamemodes/wizard/soulstone.dm | 6 +- code/game/gamemodes/wizard/spellbook.dm | 2 +- code/game/gamemodes/wizard/wizard.dm | 1 - code/game/machinery/autolathe.dm | 7 +- code/game/machinery/buttons.dm | 6 +- code/game/machinery/gulag_teleporter.dm | 2 +- code/game/machinery/recycler.dm | 2 +- code/game/machinery/teleporter.dm | 3 +- code/game/machinery/washing_machine.dm | 3 +- code/game/mecha/mech_fabricator.dm | 3 +- code/game/mecha/mecha.dm | 5 +- code/game/mecha/mecha_construction_paths.dm | 18 +- code/game/mecha/mecha_defense.dm | 3 +- code/game/objects/items.dm | 11 +- code/game/objects/items/candle.dm | 3 - code/game/objects/items/devices/PDA/PDA.dm | 12 +- .../objects/items/devices/laserpointer.dm | 3 +- .../objects/items/devices/lightreplacer.dm | 6 +- .../items/devices/radio/electropack.dm | 6 +- .../objects/items/devices/radio/headset.dm | 6 +- .../game/objects/items/devices/radio/radio.dm | 3 +- .../objects/items/devices/taperecorder.dm | 3 +- .../objects/items/devices/transfer_valve.dm | 10 +- code/game/objects/items/nuke_tools.dm | 4 +- code/game/objects/items/robot/robot_parts.dm | 30 +- .../game/objects/items/stacks/sheets/light.dm | 1 - code/game/objects/items/stacks/tiles/light.dm | 1 - code/game/objects/items/stacks/wrap.dm | 2 +- code/game/objects/items/toys.dm | 26 +- code/game/objects/items/weapons/RCD.dm | 30 +- .../objects/items/weapons/airlock_painter.dm | 3 +- .../objects/items/weapons/cigs_lighters.dm | 17 +- code/game/objects/items/weapons/defib.dm | 11 +- code/game/objects/items/weapons/explosives.dm | 4 +- .../objects/items/weapons/flamethrower.dm | 6 +- code/game/objects/items/weapons/gift.dm | 8 +- .../items/weapons/grenades/chem_grenade.dm | 9 +- .../objects/items/weapons/grenades/grenade.dm | 2 +- .../objects/items/weapons/grenades/plastic.dm | 12 +- code/game/objects/items/weapons/handcuffs.dm | 10 +- .../objects/items/weapons/holy_weapons.dm | 3 +- .../items/weapons/implants/implantpad.dm | 3 +- .../objects/items/weapons/melee/energy.dm | 2 - .../objects/items/weapons/pneumaticCannon.dm | 6 +- code/game/objects/items/weapons/powerfist.dm | 3 +- .../objects/items/weapons/storage/bags.dm | 2 +- .../objects/items/weapons/storage/firstaid.dm | 6 +- .../objects/items/weapons/storage/storage.dm | 11 +- code/game/objects/items/weapons/stunbaton.dm | 3 +- .../objects/items/weapons/tanks/tank_types.dm | 4 +- .../game/objects/items/weapons/tanks/tanks.dm | 2 +- .../objects/items/weapons/tanks/watertank.dm | 9 +- code/game/objects/items/weapons/teleprod.dm | 8 +- code/game/objects/items/weapons/tools.dm | 17 +- code/game/objects/items/weapons/twohanded.dm | 4 +- code/game/objects/items/weapons/weaponry.dm | 16 +- code/game/objects/structures/artstuff.dm | 2 +- .../objects/structures/beds_chairs/chair.dm | 1 - code/game/objects/structures/displaycase.dm | 3 +- code/game/objects/structures/noticeboard.dm | 3 +- code/modules/admin/secrets.dm | 2 +- code/modules/admin/topic.dm | 21 +- code/modules/admin/verbs/onlyone.dm | 2 +- code/modules/admin/verbs/randomverbs.dm | 2 +- code/modules/assembly/bomb.dm | 5 +- code/modules/assembly/holder.dm | 5 +- .../atmospherics/machinery/airalarm.dm | 2 +- code/modules/awaymissions/capture_the_flag.dm | 8 +- code/modules/clothing/chameleon.dm | 2 +- code/modules/clothing/clothing.dm | 6 +- code/modules/clothing/head/helmet.dm | 3 +- code/modules/clothing/shoes/bananashoes.dm | 2 +- .../modules/clothing/spacesuits/chronosuit.dm | 2 +- .../modules/clothing/spacesuits/flightsuit.dm | 27 +- code/modules/clothing/spacesuits/hardsuit.dm | 3 +- code/modules/clothing/suits/toggles.dm | 10 +- code/modules/detectivework/evidence.dm | 2 +- code/modules/events/wizard/curseditems.dm | 2 +- .../food_and_drinks/food/customizables.dm | 4 +- code/modules/food_and_drinks/food/snacks.dm | 6 +- .../kitchen_machinery/juicer.dm | 6 +- .../kitchen_machinery/smartfridge.dm | 12 +- code/modules/games/cas.dm | 2 +- code/modules/holodeck/computer_funcs.dm | 16 +- code/modules/hydroponics/beekeeping/beebox.dm | 8 +- code/modules/hydroponics/biogenerator.dm | 5 +- code/modules/hydroponics/grown.dm | 7 +- code/modules/hydroponics/grown/citrus.dm | 2 +- code/modules/hydroponics/grown/corn.dm | 2 - code/modules/hydroponics/grown/flowers.dm | 1 - code/modules/hydroponics/grown/nettle.dm | 1 - code/modules/hydroponics/grown/potato.dm | 5 +- code/modules/hydroponics/grown/root.dm | 5 +- code/modules/hydroponics/grown/tomato.dm | 2 - code/modules/hydroponics/grown/towercap.dm | 2 +- code/modules/hydroponics/hydroponics.dm | 4 +- .../mining/lavaland/necropolis_chests.dm | 6 +- code/modules/mining/mine_items.dm | 4 +- code/modules/mob/interactive.dm | 4 +- code/modules/mob/inventory.dm | 39 ++- code/modules/mob/living/bloodcrawl.dm | 1 - code/modules/mob/living/brain/MMI.dm | 3 +- .../living/carbon/alien/humanoid/humanoid.dm | 4 +- .../living/carbon/alien/humanoid/inventory.dm | 2 +- .../living/carbon/alien/larva/inventory.dm | 2 +- .../living/carbon/alien/special/facehugger.dm | 8 +- code/modules/mob/living/carbon/carbon.dm | 7 +- code/modules/mob/living/carbon/human/human.dm | 14 +- .../mob/living/carbon/human/inventory.dm | 12 +- .../mob/living/carbon/human/species.dm | 2 +- .../carbon/human/species_types/golems.dm | 4 +- .../carbon/human/species_types/zombies.dm | 4 +- .../mob/living/carbon/human/update_icons.dm | 6 +- code/modules/mob/living/carbon/inventory.dm | 2 +- .../mob/living/carbon/monkey/combat.dm | 5 +- code/modules/mob/living/living.dm | 37 +-- .../mob/living/silicon/pai/pai_shell.dm | 6 +- .../mob/living/silicon/robot/robot_defense.dm | 2 +- .../living/simple_animal/bot/construction.dm | 32 +- .../simple_animal/friendly/drone/_drone.dm | 8 +- .../friendly/drone/drones_as_items.dm | 2 +- .../simple_animal/friendly/drone/inventory.dm | 2 +- .../living/simple_animal/guardian/guardian.dm | 2 +- .../simple_animal/guardian/types/dextrous.dm | 4 +- .../hostile/megafauna/colossus.dm | 2 +- .../hostile/megafauna/hierophant.dm | 2 +- .../mob/living/simple_animal/parrot.dm | 3 +- .../mob/living/simple_animal/slime/slime.dm | 2 +- code/modules/mob/mob_movement.dm | 2 +- code/modules/mob/transform_procs.dm | 21 +- .../computers/item/computer_components.dm | 3 +- .../modular_computers/hardware/ai_slot.dm | 5 +- .../hardware/battery_module.dm | 3 +- .../modular_computers/hardware/card_slot.dm | 3 +- .../modular_computers/hardware/printer.dm | 5 +- .../suit/n_suit_verbs/energy_net_nets.dm | 2 +- .../suit/n_suit_verbs/ninja_sword_recall.dm | 6 +- code/modules/paperwork/clipboard.dm | 6 +- code/modules/paperwork/folders.dm | 3 +- code/modules/paperwork/handlabeler.dm | 5 +- code/modules/paperwork/paper.dm | 4 +- code/modules/paperwork/paper_cutter.dm | 7 +- code/modules/paperwork/paperbin.dm | 283 +++++++++--------- code/modules/paperwork/paperplane.dm | 9 +- code/modules/paperwork/photography.dm | 2 +- code/modules/power/antimatter/control.dm | 3 +- .../projectiles/ammunition/caseless.dm | 3 +- code/modules/projectiles/gun.dm | 3 +- code/modules/projectiles/guns/ballistic.dm | 21 +- .../projectiles/guns/ballistic/automatic.dm | 29 +- .../guns/ballistic/laser_gatling.dm | 9 +- .../projectiles/guns/ballistic/pistol.dm | 3 +- .../projectiles/guns/ballistic/revolver.dm | 2 +- .../guns/energy/kinetic_accelerator.dm | 4 +- .../projectiles/guns/grenade_launcher.dm | 3 +- code/modules/projectiles/guns/syringe_gun.dm | 3 +- code/modules/projectiles/pins.dm | 4 +- code/modules/projectiles/projectile/magic.dm | 2 +- .../reagents/reagent_containers/glass.dm | 1 - .../reagents/reagent_containers/pill.dm | 11 +- code/modules/recycling/sortingmachinery.dm | 4 +- .../ruins/objects_and_mobs/ash_walker_den.dm | 2 +- code/modules/spells/spell_types/barnyard.dm | 2 +- code/modules/spells/spell_types/lichdom.dm | 6 +- .../spell_types/spacetime_distortion.dm | 9 +- code/modules/spells/spell_types/summonitem.dm | 2 +- code/modules/surgery/bodyparts/bodyparts.dm | 2 +- .../surgery/bodyparts/dismemberment.dm | 12 +- code/modules/surgery/bodyparts/helpers.dm | 2 +- .../surgery/bodyparts/robot_bodyparts.dm | 6 +- code/modules/surgery/organs/augments_arms.dm | 5 +- .../modules/surgery/prosthetic_replacement.dm | 1 - code/modules/telesci/bscrystal.dm | 1 - code/modules/telesci/telesci_computer.dm | 4 +- 189 files changed, 643 insertions(+), 810 deletions(-) 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