First pass at a qdel() garbage collection system for tgstation

Works pretty well. If it can't GC something, it'll just del() it and be done.
Speed is amazing, holy shit.

New procs you should be aware of:
qdel(atom/movable) - sets up an object for garbage collection. Call this rather than del(atom/movable).
atom/movable/Destroy() - called right before the object is GC'd, so it still has a loc. Also called if the object is del()'d.
new controller - garbage.dm has all the details on this. Basically it nulls all references on GC'd objects and force del() them if necessary.
Generally speaking, objects should use Destroy() for behavior prior to deletion rather than Del(). You should also always call the parent so the object gets the right gc_destroyed var set.

ISSUES:
Tries to GC mobs atm. This actually works for new players, not so much for humans/monkies/simple_animals/anything. I'm guessing it needs to clear out their mind and HUD and maybe other things.
Gibbing is really bugged. It works, but the overlays just sit there for awhile and ugh. I'm very tempted just to del() mob/living and mob/camera and call it a day.
qdel() equipment doesn't unequip the item.
Pipes don't generally GC correctly. Debugging suggests they get referenced in many pipenets and that isn't cleared properly. However some do work fine. Need assistance here.
Bots don't GC, probably in the radio controller.
Lots of other shit doesn't GC but it's hard to find them because of the pipe spam.
I think I'm calling Destroy() twice by accident.
This commit is contained in:
MrPerson
2014-02-23 14:55:12 -08:00
parent 2979e26798
commit 9eee3e5067
432 changed files with 2672 additions and 2569 deletions
+204 -204
View File
@@ -435,7 +435,7 @@ var/global/list/g_fancy_list_of_safe_types = null
for(var/atom/O in world)
if(istype(O, hsbitem))
counter++
del(O)
qdel(O)
log_admin("[key_name(src)] has deleted all ([counter]) instances of [hsbitem].")
message_admins("[key_name_admin(src)] has deleted all ([counter]) instances of [hsbitem].", 0)
feedback_add_details("admin_verb","DELA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -505,7 +505,7 @@ var/global/list/g_fancy_list_of_safe_types = null
var/mob/adminmob = src.mob
M.ckey = src.ckey
if( isobserver(adminmob) )
del(adminmob)
qdel(adminmob)
feedback_add_details("admin_verb","ADC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -649,7 +649,7 @@ var/global/list/g_fancy_list_of_safe_types = null
for (var/obj/item/I in M)
if (istype(I, /obj/item/weapon/implant))
continue
del(I)
qdel(I)
switch(dresscode)
if ("naked")
//do nothing
@@ -657,222 +657,222 @@ var/global/list/g_fancy_list_of_safe_types = null
if ("assistant grey")
var/obj/item/weapon/storage/backpack/BPK = new/obj/item/weapon/storage/backpack(M)
new /obj/item/weapon/storage/box/survival(BPK)
M.equip_to_slot_or_del(BPK, slot_back,1)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_qdel(BPK, slot_back,1)
M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_qdel(new /obj/item/clothing/under/color/grey(M), slot_w_uniform)
M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes)
var/obj/item/weapon/card/id/W = new(M)
W.name = "[M.real_name]'s ID Card (Assistant)"
W.assignment = "Assistant"
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
M.equip_to_slot_or_qdel(W, slot_wear_id)
var/obj/item/device/pda/P = new(M)
P.owner = M.real_name
P.ownjob = "Assistant"
P.name = "PDA-[M.real_name] (Assistant)"
M.equip_to_slot_or_del(P, slot_belt)
M.equip_to_slot_or_qdel(P, slot_belt)
if ("standard space gear")
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space(M), slot_head)
M.equip_to_slot_or_qdel(new /obj/item/clothing/under/color/grey(M), slot_w_uniform)
M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/space(M), slot_wear_suit)
M.equip_to_slot_or_qdel(new /obj/item/clothing/head/helmet/space(M), slot_head)
var /obj/item/weapon/tank/jetpack/J = new /obj/item/weapon/tank/jetpack/oxygen(M)
M.equip_to_slot_or_del(J, slot_back)
M.equip_to_slot_or_qdel(J, slot_back)
J.toggle()
M.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(M), slot_wear_mask)
M.equip_to_slot_or_qdel(new /obj/item/clothing/mask/breath(M), slot_wear_mask)
J.Topic(null, list("stat" = 1))
if ("tournament standard red","tournament standard green") //we think stunning weapon is too overpowered to use it on tournaments. --rastaf0
if (dresscode=="tournament standard red")
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/red(M), slot_w_uniform)
M.equip_to_slot_or_qdel(new /obj/item/clothing/under/color/red(M), slot_w_uniform)
else
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/green(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_qdel(new /obj/item/clothing/under/color/green(M), slot_w_uniform)
M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/thunderdome(M), slot_head)
M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/armor/vest(M), slot_wear_suit)
M.equip_to_slot_or_qdel(new /obj/item/clothing/head/helmet/thunderdome(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse_rifle/destroyer(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/kitchenknife(M), slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/grenade/smokebomb(M), slot_r_store)
M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/energy/pulse_rifle/destroyer(M), slot_r_hand)
M.equip_to_slot_or_qdel(new /obj/item/weapon/kitchenknife(M), slot_l_hand)
M.equip_to_slot_or_qdel(new /obj/item/weapon/grenade/smokebomb(M), slot_r_store)
if ("tournament gangster") //gangster are supposed to fight each other. --rastaf0
M.equip_to_slot_or_del(new /obj/item/clothing/under/det(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_qdel(new /obj/item/clothing/under/det(M), slot_w_uniform)
M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/det_suit(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/head/det_hat(M), slot_head)
M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/det_suit(M), slot_wear_suit)
M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses)
M.equip_to_slot_or_qdel(new /obj/item/clothing/head/det_hat(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_l_store)
M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/projectile(M), slot_r_hand)
M.equip_to_slot_or_qdel(new /obj/item/ammo_box/a357(M), slot_l_store)
if ("tournament chef") //Steven Seagal FTW
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chef(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/chef(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/head/chefhat(M), slot_head)
M.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/chef(M), slot_w_uniform)
M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/chef(M), slot_wear_suit)
M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_qdel(new /obj/item/clothing/head/chefhat(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/rollingpin(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/kitchenknife(M), slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/kitchenknife(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/kitchenknife(M), slot_s_store)
M.equip_to_slot_or_qdel(new /obj/item/weapon/kitchen/rollingpin(M), slot_r_hand)
M.equip_to_slot_or_qdel(new /obj/item/weapon/kitchenknife(M), slot_l_hand)
M.equip_to_slot_or_qdel(new /obj/item/weapon/kitchenknife(M), slot_r_store)
M.equip_to_slot_or_qdel(new /obj/item/weapon/kitchenknife(M), slot_s_store)
if ("tournament janitor")
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/janitor(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/janitor(M), slot_w_uniform)
M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes)
var/obj/item/weapon/storage/backpack/backpack = new(M)
for(var/obj/item/I in backpack)
del(I)
M.equip_to_slot_or_del(backpack, slot_back)
qdel(I)
M.equip_to_slot_or_qdel(backpack, slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/mop(M), slot_r_hand)
M.equip_to_slot_or_qdel(new /obj/item/weapon/mop(M), slot_r_hand)
var/obj/item/weapon/reagent_containers/glass/bucket/bucket = new(M)
bucket.reagents.add_reagent("water", 70)
M.equip_to_slot_or_del(bucket, slot_l_hand)
M.equip_to_slot_or_qdel(bucket, slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/grenade/chem_grenade/cleaner(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/grenade/chem_grenade/cleaner(M), slot_l_store)
M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
M.equip_to_slot_or_qdel(new /obj/item/weapon/grenade/chem_grenade/cleaner(M), slot_r_store)
M.equip_to_slot_or_qdel(new /obj/item/weapon/grenade/chem_grenade/cleaner(M), slot_l_store)
M.equip_to_slot_or_qdel(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
M.equip_to_slot_or_qdel(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
M.equip_to_slot_or_qdel(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
M.equip_to_slot_or_qdel(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
M.equip_to_slot_or_qdel(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
M.equip_to_slot_or_qdel(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
M.equip_to_slot_or_qdel(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
if ("pirate")
M.equip_to_slot_or_del(new /obj/item/clothing/under/pirate(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/head/bandana(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/pirate(M), slot_r_hand)
M.equip_to_slot_or_qdel(new /obj/item/clothing/under/pirate(M), slot_w_uniform)
M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/brown(M), slot_shoes)
M.equip_to_slot_or_qdel(new /obj/item/clothing/head/bandana(M), slot_head)
M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses)
M.equip_to_slot_or_qdel(new /obj/item/weapon/melee/energy/sword/pirate(M), slot_r_hand)
if ("space pirate")
M.equip_to_slot_or_del(new /obj/item/clothing/under/pirate(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/pirate(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/pirate(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses)
M.equip_to_slot_or_qdel(new /obj/item/clothing/under/pirate(M), slot_w_uniform)
M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/brown(M), slot_shoes)
M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/space/pirate(M), slot_wear_suit)
M.equip_to_slot_or_qdel(new /obj/item/clothing/head/helmet/space/pirate(M), slot_head)
M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/pirate(M), slot_r_hand)
M.equip_to_slot_or_qdel(new /obj/item/weapon/melee/energy/sword/pirate(M), slot_r_hand)
/*
if ("soviet soldier")
M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(M), slot_head)
M.equip_to_slot_or_qdel(new /obj/item/clothing/under/soviet(M), slot_w_uniform)
M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_qdel(new /obj/item/clothing/head/ushanka(M), slot_head)
*/
if("tunnel clown")//Tunnel clowns rule!
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/clown(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/clown_shoes(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/clothing/head/chaplain_hood(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/chaplain_hoodie(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(M), slot_l_store)
M.equip_to_slot_or_del(new /obj/item/weapon/bikehorn(M), slot_r_store)
M.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/clown(M), slot_w_uniform)
M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/clown_shoes(M), slot_shoes)
M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/black(M), slot_gloves)
M.equip_to_slot_or_qdel(new /obj/item/clothing/mask/gas/clown_hat(M), slot_wear_mask)
M.equip_to_slot_or_qdel(new /obj/item/clothing/head/chaplain_hood(M), slot_head)
M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses)
M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/chaplain_hoodie(M), slot_wear_suit)
M.equip_to_slot_or_qdel(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(M), slot_l_store)
M.equip_to_slot_or_qdel(new /obj/item/weapon/bikehorn(M), slot_r_store)
var/obj/item/weapon/card/id/W = new(M)
W.name = "[M.real_name]'s ID Card"
W.access = get_all_accesses()
W.assignment = "Tunnel Clown!"
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
M.equip_to_slot_or_qdel(W, slot_wear_id)
var/obj/item/weapon/twohanded/fireaxe/fire_axe = new(M)
M.equip_to_slot_or_del(fire_axe, slot_r_hand)
M.equip_to_slot_or_qdel(fire_axe, slot_r_hand)
if("masked killer")
M.equip_to_slot_or_del(new /obj/item/clothing/under/overalls(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/latex(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/clothing/head/welding(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/apron(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/weapon/kitchenknife(M), slot_l_store)
M.equip_to_slot_or_del(new /obj/item/weapon/scalpel(M), slot_r_store)
M.equip_to_slot_or_qdel(new /obj/item/clothing/under/overalls(M), slot_w_uniform)
M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/white(M), slot_shoes)
M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/latex(M), slot_gloves)
M.equip_to_slot_or_qdel(new /obj/item/clothing/mask/surgical(M), slot_wear_mask)
M.equip_to_slot_or_qdel(new /obj/item/clothing/head/welding(M), slot_head)
M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses)
M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/apron(M), slot_wear_suit)
M.equip_to_slot_or_qdel(new /obj/item/weapon/kitchenknife(M), slot_l_store)
M.equip_to_slot_or_qdel(new /obj/item/weapon/scalpel(M), slot_r_store)
var/obj/item/weapon/twohanded/fireaxe/fire_axe = new(M)
M.equip_to_slot_or_del(fire_axe, slot_r_hand)
M.equip_to_slot_or_qdel(fire_axe, slot_r_hand)
for(var/obj/item/carried_item in M.contents)
if(!istype(carried_item, /obj/item/weapon/implant))//If it's not an implant.
carried_item.add_blood(M)//Oh yes, there will be blood...
if("assassin")
M.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/tie/waistcoat(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword(M), slot_l_store)
M.equip_to_slot_or_qdel(new /obj/item/clothing/under/suit_jacket(M), slot_w_uniform)
M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/black(M), slot_gloves)
M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses)
M.equip_to_slot_or_qdel(new /obj/item/clothing/tie/waistcoat(M), slot_wear_suit)
M.equip_to_slot_or_qdel(new /obj/item/weapon/melee/energy/sword(M), slot_l_store)
var/obj/item/weapon/storage/secure/briefcase/sec_briefcase = new(M)
for(var/obj/item/briefcase_item in sec_briefcase)
del(briefcase_item)
qdel(briefcase_item)
for(var/i=3, i>0, i--)
sec_briefcase.contents += new /obj/item/weapon/spacecash/c1000
sec_briefcase.contents += new /obj/item/weapon/gun/energy/crossbow
sec_briefcase.contents += new /obj/item/weapon/gun/projectile/revolver/mateba
sec_briefcase.contents += new /obj/item/ammo_box/a357
sec_briefcase.contents += new /obj/item/weapon/plastique
M.equip_to_slot_or_del(sec_briefcase, slot_l_hand)
M.equip_to_slot_or_qdel(sec_briefcase, slot_l_hand)
var/obj/item/device/pda/heads/pda = new(M)
pda.owner = M.real_name
pda.ownjob = "Reaper"
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
M.equip_to_slot_or_del(pda, slot_belt)
M.equip_to_slot_or_qdel(pda, slot_belt)
var/obj/item/weapon/card/id/syndicate/W = new(M)
W.name = "[M.real_name]'s ID Card"
W.access = get_all_accesses()
W.assignment = "Reaper"
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
M.equip_to_slot_or_qdel(W, slot_wear_id)
// DEATH SQUADS
if("death commando")//Was looking to add this for a while.
var/obj/item/device/radio/R = new /obj/item/device/radio/headset(M)
R.set_frequency(1441)
M.equip_to_slot_or_del(R, slot_ears)
M.equip_to_slot_or_qdel(R, slot_ears)
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/green(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/swat(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/swat(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal(M), slot_glasses)
M.equip_to_slot_or_qdel(new /obj/item/clothing/under/color/green(M), slot_w_uniform)
M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/swat(M), slot_shoes)
M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/armor/swat(M), slot_wear_suit)
M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/combat(M), slot_gloves)
M.equip_to_slot_or_qdel(new /obj/item/clothing/head/helmet/space/deathsquad(M), slot_head)
M.equip_to_slot_or_qdel(new /obj/item/clothing/mask/gas/swat(M), slot_wear_mask)
M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/thermal(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack)
M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/security(M), slot_back)
M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/regular(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/flashbangs(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
M.equip_to_slot_or_qdel(new /obj/item/ammo_box/a357(M), slot_in_backpack)
M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/firstaid/regular(M), slot_in_backpack)
M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/flashbangs(M), slot_in_backpack)
M.equip_to_slot_or_qdel(new /obj/item/device/flashlight(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/plastique(M), slot_in_backpack)
M.equip_to_slot_or_qdel(new /obj/item/weapon/plastique(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword(M), slot_l_store)
M.equip_to_slot_or_del(new /obj/item/weapon/grenade/flashbang(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen(M), slot_s_store)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_belt)
M.equip_to_slot_or_qdel(new /obj/item/weapon/melee/energy/sword(M), slot_l_store)
M.equip_to_slot_or_qdel(new /obj/item/weapon/grenade/flashbang(M), slot_r_store)
M.equip_to_slot_or_qdel(new /obj/item/weapon/tank/emergency_oxygen(M), slot_s_store)
M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_belt)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse_rifle(M), slot_r_hand)
M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/energy/pulse_rifle(M), slot_r_hand)
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(M)//Here you go Deuryn
@@ -886,28 +886,28 @@ var/global/list/g_fancy_list_of_safe_types = null
W.access += get_centcom_access("Death Commando")//Let's add their alloted Centcom access.
W.assignment = "Death Commando"
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
M.equip_to_slot_or_qdel(W, slot_wear_id)
/*
if("syndicate commando")
M.equip_syndicate_commando()
*/
if("centcom official")
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_officer(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_com(M), slot_ears)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_belt)
M.equip_to_slot_or_del(new /obj/item/weapon/pen(M), slot_l_store)
M.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/centcom_officer(M), slot_w_uniform)
M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/black(M), slot_gloves)
M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_com(M), slot_ears)
M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses)
M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/energy/gun(M), slot_belt)
M.equip_to_slot_or_qdel(new /obj/item/weapon/pen(M), slot_l_store)
var/obj/item/device/pda/heads/pda = new(M)
pda.owner = M.real_name
pda.ownjob = "Centcom Official"
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
M.equip_to_slot_or_del(pda, slot_r_store)
M.equip_to_slot_or_qdel(pda, slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/clipboard(M), slot_l_hand)
M.equip_to_slot_or_qdel(new /obj/item/weapon/clipboard(M), slot_l_hand)
var/obj/item/weapon/card/id/W = new(M)
W.name = "[M.real_name]'s ID Card (Centcom Official)"
@@ -915,20 +915,20 @@ var/global/list/g_fancy_list_of_safe_types = null
W.access = get_centcom_access("Centcom Official")
W.assignment = "Centcom Official"
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
M.equip_to_slot_or_qdel(W, slot_wear_id)
if("centcom commander")
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_commander(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/bulletproof(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cent(M), slot_ears)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/cohiba(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/clothing/head/centhat(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_belt)
M.equip_to_slot_or_del(new /obj/item/weapon/lighter/zippo(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_l_store)
M.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/centcom_commander(M), slot_w_uniform)
M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/armor/bulletproof(M), slot_wear_suit)
M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/swat(M), slot_shoes)
M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/combat(M), slot_gloves)
M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_cent(M), slot_ears)
M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses)
M.equip_to_slot_or_qdel(new /obj/item/clothing/mask/cigarette/cigar/cohiba(M), slot_wear_mask)
M.equip_to_slot_or_qdel(new /obj/item/clothing/head/centhat(M), slot_head)
M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_belt)
M.equip_to_slot_or_qdel(new /obj/item/weapon/lighter/zippo(M), slot_r_store)
M.equip_to_slot_or_qdel(new /obj/item/ammo_box/a357(M), slot_l_store)
var/obj/item/weapon/card/id/W = new(M)
W.name = "[M.real_name]'s ID Card (Centcom Commander)"
@@ -937,23 +937,23 @@ var/global/list/g_fancy_list_of_safe_types = null
W.access += get_centcom_access("Centcom Commander")
W.assignment = "Centcom Commander"
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
M.equip_to_slot_or_qdel(W, slot_wear_id)
if("special ops officer")
var/obj/item/device/radio/headset/R = new /obj/item/device/radio/headset/headset_cent(M)
R.set_frequency(1441)
M.equip_to_slot_or_del(R, slot_ears)
M.equip_to_slot_or_qdel(R, slot_ears)
M.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate/combat(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/swat/officer(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat/combat(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/havana(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad/beret(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse_rifle/M1911(M), slot_belt)
M.equip_to_slot_or_del(new /obj/item/weapon/lighter/zippo(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
M.equip_to_slot_or_qdel(new /obj/item/clothing/under/syndicate/combat(M), slot_w_uniform)
M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/armor/swat/officer(M), slot_wear_suit)
M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/swat/combat(M), slot_shoes)
M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/combat(M), slot_gloves)
M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses)
M.equip_to_slot_or_qdel(new /obj/item/clothing/mask/cigarette/cigar/havana(M), slot_wear_mask)
M.equip_to_slot_or_qdel(new /obj/item/clothing/head/helmet/space/deathsquad/beret(M), slot_head)
M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/energy/pulse_rifle/M1911(M), slot_belt)
M.equip_to_slot_or_qdel(new /obj/item/weapon/lighter/zippo(M), slot_r_store)
M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
var/obj/item/weapon/card/id/W = new(M)
W.name = "[M.real_name]'s ID Card (Special Ops Officer)"
@@ -962,53 +962,53 @@ var/global/list/g_fancy_list_of_safe_types = null
W.access += get_centcom_access("Special Ops Officer")
W.assignment = "Special Ops Officer"
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
M.equip_to_slot_or_qdel(W, slot_wear_id)
if("blue wizard")
M.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/staff(M), slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack)
M.equip_to_slot_or_qdel(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform)
M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/wizrobe(M), slot_wear_suit)
M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/sandal(M), slot_shoes)
M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_qdel(new /obj/item/clothing/head/wizard(M), slot_head)
M.equip_to_slot_or_qdel(new /obj/item/weapon/teleportation_scroll(M), slot_r_store)
M.equip_to_slot_or_qdel(new /obj/item/weapon/spellbook(M), slot_r_hand)
M.equip_to_slot_or_qdel(new /obj/item/weapon/staff(M), slot_l_hand)
M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box(M), slot_in_backpack)
if("red wizard")
M.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/red(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/red(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/staff(M), slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack)
M.equip_to_slot_or_qdel(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform)
M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/wizrobe/red(M), slot_wear_suit)
M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/sandal(M), slot_shoes)
M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_qdel(new /obj/item/clothing/head/wizard/red(M), slot_head)
M.equip_to_slot_or_qdel(new /obj/item/weapon/teleportation_scroll(M), slot_r_store)
M.equip_to_slot_or_qdel(new /obj/item/weapon/spellbook(M), slot_r_hand)
M.equip_to_slot_or_qdel(new /obj/item/weapon/staff(M), slot_l_hand)
M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box(M), slot_in_backpack)
if("marisa wizard")
M.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/marisa(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal/marisa(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/marisa(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/staff(M), slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack)
M.equip_to_slot_or_qdel(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform)
M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/wizrobe/marisa(M), slot_wear_suit)
M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/sandal/marisa(M), slot_shoes)
M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_qdel(new /obj/item/clothing/head/wizard/marisa(M), slot_head)
M.equip_to_slot_or_qdel(new /obj/item/weapon/teleportation_scroll(M), slot_r_store)
M.equip_to_slot_or_qdel(new /obj/item/weapon/spellbook(M), slot_r_hand)
M.equip_to_slot_or_qdel(new /obj/item/weapon/staff(M), slot_l_hand)
M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box(M), slot_in_backpack)
if("soviet admiral")
M.equip_to_slot_or_del(new /obj/item/clothing/head/hgpiratecap(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat/combat(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cent(M), slot_ears)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/hgpirate(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_belt)
M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform)
M.equip_to_slot_or_qdel(new /obj/item/clothing/head/hgpiratecap(M), slot_head)
M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/swat/combat(M), slot_shoes)
M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/combat(M), slot_gloves)
M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_cent(M), slot_ears)
M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses)
M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/hgpirate(M), slot_wear_suit)
M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_belt)
M.equip_to_slot_or_qdel(new /obj/item/clothing/under/soviet(M), slot_w_uniform)
var/obj/item/weapon/card/id/W = new(M)
W.name = "[M.real_name]'s ID Card (Admiral)"
W.icon_state = "centcom"
@@ -1016,20 +1016,20 @@ var/global/list/g_fancy_list_of_safe_types = null
W.access += get_centcom_access("Admiral")
W.assignment = "Admiral"
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
M.equip_to_slot_or_qdel(W, slot_wear_id)
if("mobster")
M.equip_to_slot_or_del(new /obj/item/clothing/head/fedora(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/tommygun(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/really_black(M), slot_w_uniform)
M.equip_to_slot_or_qdel(new /obj/item/clothing/head/fedora(M), slot_head)
M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/laceup(M), slot_shoes)
M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/black(M), slot_gloves)
M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses)
M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/projectile/automatic/tommygun(M), slot_r_hand)
M.equip_to_slot_or_qdel(new /obj/item/clothing/under/suit_jacket/really_black(M), slot_w_uniform)
var/obj/item/weapon/card/id/W = new(M)
W.name = "[M.real_name]'s ID Card"
W.assignment = "Assistant"
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
M.equip_to_slot_or_qdel(W, slot_wear_id)
M.regenerate_icons()