Ported custom items system.

This commit is contained in:
Chinsky
2012-10-30 02:27:51 +04:00
parent 51423e139e
commit 6f1852449d
7 changed files with 98 additions and 16 deletions
+1 -10
View File
@@ -284,17 +284,8 @@
name = "old red flashlight"
desc = "A very old, childlike flashlight."
icon = 'custom_items.dmi'
icon_state = "wolfflight0"
w_class = 2
icon_state = "wolfflight"
item_state = "wolfflight"
flags = FPRINT | TABLEPASS | CONDUCT
slot_flags = SLOT_BELT
m_amt = 50
g_amt = 20
on = 0
brightness_on = 4 //luminosity when on
icon_on = "wolfflight1"
icon_off = "wolfflight0"
//////////////////////////////////
//////////// Clothing ////////////
+3 -4
View File
@@ -39,7 +39,6 @@
I.registered_name = M.real_name
I.access = C.access
I.assignment = C.assignment
I.over_jumpsuit = C.over_jumpsuit
I.blood_type = C.blood_type
I.dna_hash = C.dna_hash
I.fingerprint_hash = C.fingerprint_hash
@@ -50,13 +49,13 @@
I.name = "[M.real_name]'s Lifetime ID Card ([M.mind.role_alt_title ? M.mind.role_alt_title : M.mind.assigned_role])"
else if(M.ckey == "nerezza" && M.real_name == "Asher Spock") //This is an Odysseus Specialist ID
I.name = "[M.real_name]'s Odysseus Specialist ID Card ([M.mind.role_alt_title ? M.mind.role_alt_title : M.mind.assigned_role])"
I.access += list(ACCESS_ROBOTICS) //Station-based mecha pilots need this to access the recharge bay.
I.access += list(access_robotics) //Station-based mecha pilots need this to access the recharge bay.
else if(M.ckey == "roaper" && M.real_name == "Ian Colm") //This is a Technician ID
I.name = "[M.real_name]'s Technician ID ([M.mind.role_alt_title ? M.mind.role_alt_title : M.mind.assigned_role])"
//replace old ID
del(C)
ok = M.equip_if_possible(I, M.slot_wear_id, 0) //if 1, last argument deletes on fail
ok = M.equip_if_possible(I, slot_wear_id, 0) //if 1, last argument deletes on fail
break
else if(istype(M.back,/obj/item/weapon/storage) && M.back:contents.len < M.back:storage_slots) // Try to place it in something on the mob's back
Item.loc = M.back
@@ -64,7 +63,7 @@
else
for(var/obj/item/weapon/storage/S in M.contents) // Try to place it in any item that can store stuff, on the mob.
if (S:len < S:storage_slots)
if (S.contents.len < S.storage_slots)
Item.loc = S
ok = 1
break
+90 -1
View File
@@ -225,4 +225,93 @@
return l_hand
else
return r_hand
return
return
/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
var/equipped = 0
switch(slot)
if(slot_back)
if(!src.back)
src.back = W
equipped = 1
if(slot_wear_mask)
if(!src.wear_mask)
src.wear_mask = W
equipped = 1
if(slot_handcuffed)
if(!src.handcuffed)
src.handcuffed = W
equipped = 1
if(slot_l_hand)
if(!src.l_hand)
src.l_hand = W
equipped = 1
if(slot_r_hand)
if(!src.r_hand)
src.r_hand = W
equipped = 1
if(slot_belt)
if(!src.belt && src.w_uniform)
src.belt = W
equipped = 1
if(slot_wear_id)
if(!src.wear_id && src.w_uniform)
src.wear_id = W
equipped = 1
if(slot_ears)
if(!src.ears)
src.ears = W
equipped = 1
if(slot_glasses)
if(!src.glasses)
src.glasses = W
equipped = 1
if(slot_gloves)
if(!src.gloves)
src.gloves = W
equipped = 1
if(slot_head)
if(!src.head)
src.head = W
equipped = 1
if(slot_shoes)
if(!src.shoes)
src.shoes = W
equipped = 1
if(slot_wear_suit)
if(!src.wear_suit)
src.wear_suit = W
equipped = 1
if(slot_w_uniform)
if(!src.w_uniform)
src.w_uniform = W
equipped = 1
if(slot_l_store)
if(!src.l_store && src.w_uniform)
src.l_store = W
equipped = 1
if(slot_r_store)
if(!src.r_store && src.w_uniform)
src.r_store = W
equipped = 1
if(slot_s_store)
if(!src.s_store && src.wear_suit)
src.s_store = W
equipped = 1
if(slot_in_backpack)
if (src.back && istype(src.back, /obj/item/weapon/storage/backpack))
var/obj/item/weapon/storage/backpack/B = src.back
if(B.contents.len < B.storage_slots && W.w_class <= B.max_w_class)
W.loc = B
equipped = 1
if(equipped)
W.layer = 20
if(src.back && W.loc != src.back)
W.loc = src
else
if (del_on_fail)
del(W)
return equipped
@@ -370,6 +370,7 @@
var/mob/living/carbon/human/character = create_character() //creates the human and transfers vars and mind
job_master.EquipRank(character, rank, 1) //equips the human
EquipCustomItems(character)
character.loc = pick(latejoin)
character.lastarea = get_area(loc)