diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm
index fb51d83c14..21c65905e4 100644
--- a/code/game/objects/items/weapons/cigs_lighters.dm
+++ b/code/game/objects/items/weapons/cigs_lighters.dm
@@ -119,7 +119,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM
user.update_inv_wear_mask(0)
user.update_inv_l_hand(0)
user.update_inv_r_hand(1)
- return
/obj/item/clothing/mask/cigarette/afterattack(obj/item/weapon/reagent_containers/glass/glass, mob/user as mob, proximity)
@@ -284,6 +283,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM
else if(istype(W, /obj/item/device/assembly/igniter))
light("[user] fiddles with [W], and manages to light their [name] with the power of science.")
+ user.update_inv_wear_mask(0)
+ user.update_inv_l_hand(0)
+ user.update_inv_r_hand(1)
+
/////////////////
//SMOKING PIPES//
/////////////////
@@ -361,6 +364,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM
else if(istype(W, /obj/item/device/assembly/igniter))
light("[user] fiddles with [W], and manages to light their [name] with the power of science.")
+ user.update_inv_wear_mask(0)
+ user.update_inv_l_hand(0)
+ user.update_inv_r_hand(1)
+
/obj/item/clothing/mask/cigarette/pipe/cobpipe
name = "corn cob pipe"
desc = "A nicotine delivery system popularized by folksy backwoodsmen, kept popular in the modern age and beyond by space hipsters."
diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm
index 711b0594a1..653e33b2dd 100644
--- a/code/modules/mob/inventory.dm
+++ b/code/modules/mob/inventory.dm
@@ -208,6 +208,7 @@
return 1
//Attemps to remove an object on a mob. Will not move it to another area or such, just removes from the mob.
+//It does call u_equip() though. So it can drop items to the floor but only if src is human.
/mob/proc/remove_from_mob(var/obj/O)
src.u_equip(O)
if (src.client)
@@ -242,16 +243,7 @@
/** BS12's proc to get the item in the active hand. Couldn't find the /tg/ equivalent. **/
/mob/proc/equipped()
- if(issilicon(src))
- if(isrobot(src))
- if(src:module_active)
- return src:module_active
- else
- if (hand)
- return l_hand
- else
- return r_hand
- return
+ return get_active_hand() //TODO: get rid of this proc
/mob/living/carbon/human/proc/equip_if_possible(obj/item/W, slot, del_on_fail = 1) // since byond doesn't seem to have pointers, this seems like the best way to do this :/
//warning: icky code
diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm
index 0a504ca148..7846a1ac26 100644
--- a/code/modules/mob/living/carbon/human/inventory.dm
+++ b/code/modules/mob/living/carbon/human/inventory.dm
@@ -753,13 +753,7 @@ It can still be worn/put on as normal.
if(slot_to_process)
if(strip_item) //Stripping an item from the mob
var/obj/item/W = strip_item
- target.u_equip(W)
- if (target.client)
- target.client.screen -= W
- if (W)
- W.loc = target.loc
- W.layer = initial(W.layer)
- W.dropped(target)
+ target.remove_from_mob(W)
W.add_fingerprint(source)
if(slot_to_process == slot_l_store) //pockets! Needs to process the other one too. Snowflake code, wooo! It's not like anyone will rewrite this anytime soon. If I'm wrong then... CONGRATULATIONS! ;)
if(target.r_store)
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index cc053f219d..0bdcf6d427 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -545,16 +545,9 @@ proc/get_damage_icon_part(damage_state, body_part)
overlays_standing[UNIFORM_LAYER] = null
// This really, really seems like it should not be mixed in the middle of display code...
// 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) ) //
- if(thing) //
- u_equip(thing) //
- if (client) //
- client.screen -= thing //
- //
- if (thing) //
- thing.loc = loc //
- thing.dropped(src) //
- thing.layer = initial(thing.layer)
+ for( var/obj/item/thing in list(r_store, l_store, wear_id, belt) )
+ if(thing)
+ remove_from_mob(thing)
if(update_icons) update_icons()
/mob/living/carbon/human/update_inv_wear_id(var/update_icons=1)
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 82a5384001..a93b000e0d 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -183,7 +183,7 @@ var/list/slot_equipment_priority = list( \
if(!istype(W)) return 0
for(var/slot in slot_equipment_priority)
- if(equip_to_slot_if_possible(W, slot, 0, 1, 1)) //del_on_fail = 0; disable_warning = 0; redraw_mob = 1
+ if(equip_to_slot_if_possible(W, slot, del_on_fail=0, disable_warning=1, redraw_mob=1))
return 1
return 0
diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm
index b45d0aafa7..a49ff2c408 100644
--- a/code/modules/organs/organ_external.dm
+++ b/code/modules/organs/organ_external.dm
@@ -596,14 +596,11 @@ Note that amputating the affected organ does in fact remove the infection from t
update_damages()
var/obj/organ //Dropped limb object
+ var/list/dropped_items
switch(body_part)
if(HEAD)
- organ= new /obj/item/weapon/organ/head(owner.loc, owner)
- owner.u_equip(owner.glasses)
- owner.u_equip(owner.head)
- owner.u_equip(owner.l_ear)
- owner.u_equip(owner.r_ear)
- owner.u_equip(owner.wear_mask)
+ organ = new /obj/item/weapon/organ/head(owner.loc, owner)
+ dropped_items = list(owner.glasses, owner.head, owner.l_ear, owner.r_ear, owner.wear_mask)
if(ARM_RIGHT)
if(status & ORGAN_ROBOT)
organ = new /obj/item/robot_parts/r_arm(owner.loc)
@@ -627,19 +624,22 @@ Note that amputating the affected organ does in fact remove the infection from t
if(HAND_RIGHT)
if(!(status & ORGAN_ROBOT))
organ= new /obj/item/weapon/organ/r_hand(owner.loc, owner)
- owner.u_equip(owner.gloves)
+ dropped_items = list(owner.gloves) //should probably make it so that you can still wear gloves if you have one hand
if(HAND_LEFT)
if(!(status & ORGAN_ROBOT))
organ= new /obj/item/weapon/organ/l_hand(owner.loc, owner)
- owner.u_equip(owner.gloves)
+ dropped_items = list(owner.gloves)
if(FOOT_RIGHT)
if(!(status & ORGAN_ROBOT))
organ= new /obj/item/weapon/organ/r_foot/(owner.loc, owner)
- owner.u_equip(owner.shoes)
+ dropped_items = list(owner.shoes)
if(FOOT_LEFT)
if(!(status & ORGAN_ROBOT))
organ = new /obj/item/weapon/organ/l_foot(owner.loc, owner)
- owner.u_equip(owner.shoes)
+ dropped_items = list(owner.shoes)
+ if(dropped_items)
+ for(var/obj/O in dropped_items)
+ owner.remove_from_mob(O)
destspawn = 1
//Robotic limbs explode if sabotaged.