From 0abc91c59d847ee90acde402cfdfc33cb9cfd5fb Mon Sep 17 00:00:00 2001 From: c0 Date: Sat, 18 Jun 2016 05:09:15 +0300 Subject: [PATCH] slot_equipment_priority no longer contributes to list init overhead --- code/game/objects/items.dm | 18 +----------------- code/modules/mob/mob.dm | 15 ++++++++++++++- .../reagents/reagent_containers/glass.dm | 10 ++++++++++ 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index dd1211f229f..c9eb1afd810 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -88,23 +88,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s var/hit_reaction_chance = 0 //If you want to have something unrelated to blocking/armour piercing etc. Maybe not needed, but trying to think ahead/allow more freedom //The list of slots by priority. equip_to_appropriate_slot() uses this list. Doesn't matter if a mob type doesn't have a slot. - var/list/slot_equipment_priority = list( \ - slot_back,\ - slot_wear_id,\ - slot_w_uniform,\ - slot_wear_suit,\ - slot_wear_mask,\ - slot_head,\ - slot_shoes,\ - slot_gloves,\ - slot_ears,\ - slot_glasses,\ - slot_belt,\ - slot_s_store,\ - slot_l_store,\ - slot_r_store,\ - slot_drone_storage\ - ) + var/list/slot_equipment_priority = null // for default list, see /mob/proc/equip_to_appropriate_slot() // Needs to be in /obj/item because corgis can wear a lot of // non-clothing items diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 49fdc9e6ed0..65595ed560c 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -231,8 +231,21 @@ var/next_mob_id = 0 //returns 0 if it cannot, 1 if successful /mob/proc/equip_to_appropriate_slot(obj/item/W) if(!istype(W)) return 0 + var/slot_priority = W.slot_equipment_priority - for(var/slot in W.slot_equipment_priority) + if(!slot_priority) + slot_priority = list( \ + slot_back, slot_wear_id,\ + slot_w_uniform, slot_wear_suit,\ + slot_wear_mask, slot_head,\ + slot_shoes, slot_gloves,\ + slot_ears, slot_glasses,\ + slot_belt, slot_s_store,\ + slot_l_store, slot_r_store,\ + slot_drone_storage\ + ) + + for(var/slot in slot_priority) if(equip_to_slot_if_possible(W, slot, 0, 1, 1)) //qdel_on_fail = 0; disable_warning = 1; redraw_mob = 1 return 1 diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index ea340562dab..ed2793afb02 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -228,6 +228,16 @@ flags_inv = HIDEHAIR slot_flags = SLOT_HEAD armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) //Weak melee protection, because you can wear it on your head + slot_equipment_priority = list( \ + slot_back, slot_wear_id,\ + slot_w_uniform, slot_wear_suit,\ + slot_wear_mask, slot_head,\ + slot_shoes, slot_gloves,\ + slot_ears, slot_glasses,\ + slot_belt, slot_s_store,\ + slot_l_store, slot_r_store,\ + slot_drone_storage + ) /obj/item/weapon/reagent_containers/glass/bucket/attackby(obj/O, mob/user, params) if(istype(O, /obj/item/weapon/mop))