mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-22 04:28:33 +01:00
Merge pull request #5285 from VOREStation/pol-accessories
Change accessories to use bitflags
This commit is contained in:
@@ -6,7 +6,7 @@ GLOBAL_LIST_BOILERPLATE(all_clothing, /obj/item/clothing)
|
||||
var/list/species_restricted = null //Only these species can wear this kit.
|
||||
var/gunshot_residue //Used by forensics.
|
||||
|
||||
var/list/accessories = list()
|
||||
var/list/accessories
|
||||
var/list/valid_accessory_slots
|
||||
var/list/restricted_accessory_slots
|
||||
var/list/starting_accessories
|
||||
@@ -584,8 +584,8 @@ GLOBAL_LIST_BOILERPLATE(all_clothing, /obj/item/clothing)
|
||||
SPECIES_VOX = 'icons/mob/species/vox/suit.dmi'
|
||||
)
|
||||
|
||||
valid_accessory_slots = list("over", "armband")
|
||||
restricted_accessory_slots = list("armband")
|
||||
valid_accessory_slots = (ACCESSORY_SLOT_OVER | ACCESSORY_SLOT_ARMBAND)
|
||||
restricted_accessory_slots = (ACCESSORY_SLOT_ARMBAND)
|
||||
|
||||
/obj/item/clothing/suit/update_clothing_icon()
|
||||
if (ismob(src.loc))
|
||||
@@ -627,15 +627,26 @@ GLOBAL_LIST_BOILERPLATE(all_clothing, /obj/item/clothing)
|
||||
//convenience var for defining the icon state for the overlay used when the clothing is worn.
|
||||
//Also used by rolling/unrolling.
|
||||
var/worn_state = null
|
||||
valid_accessory_slots = list("utility","armband","decor","over")
|
||||
restricted_accessory_slots = list("utility", "armband")
|
||||
valid_accessory_slots = (\
|
||||
ACCESSORY_SLOT_UTILITY\
|
||||
|ACCESSORY_SLOT_WEAPON\
|
||||
|ACCESSORY_SLOT_ARMBAND\
|
||||
|ACCESSORY_SLOT_DECOR\
|
||||
|ACCESSORY_SLOT_MEDAL\
|
||||
|ACCESSORY_SLOT_TIE\
|
||||
|ACCESSORY_SLOT_OVER)
|
||||
restricted_accessory_slots = (\
|
||||
ACCESSORY_SLOT_UTILITY\
|
||||
|ACCESSORY_SLOT_WEAPON\
|
||||
|ACCESSORY_SLOT_ARMBAND\
|
||||
|ACCESSORY_SLOT_TIE\
|
||||
|ACCESSORY_SLOT_OVER)
|
||||
|
||||
var/icon/rolled_down_icon = 'icons/mob/uniform_rolled_down.dmi'
|
||||
var/icon/rolled_down_sleeves_icon = 'icons/mob/uniform_sleeves_rolled.dmi'
|
||||
|
||||
|
||||
/obj/item/clothing/under/attack_hand(var/mob/user)
|
||||
if(accessories && accessories.len)
|
||||
if(LAZYLEN(accessories))
|
||||
..()
|
||||
if ((ishuman(usr) || issmall(usr)) && src.loc == user)
|
||||
return
|
||||
|
||||
@@ -1,20 +1,34 @@
|
||||
/obj/item/clothing/proc/can_attach_accessory(obj/item/clothing/accessory/A)
|
||||
if(src.valid_accessory_slots && (A.slot in src.valid_accessory_slots))
|
||||
if(accessories.len && restricted_accessory_slots && (A.slot in restricted_accessory_slots))
|
||||
for(var/obj/item/clothing/accessory/AC in accessories)
|
||||
if (AC.slot == A.slot)
|
||||
return FALSE
|
||||
return TRUE
|
||||
else
|
||||
//Just no, okay
|
||||
if(!A.slot)
|
||||
return FALSE
|
||||
|
||||
//Not valid at all, not in the valid list period.
|
||||
if((valid_accessory_slots & A.slot) != A.slot)
|
||||
return FALSE
|
||||
|
||||
//Find all consumed slots
|
||||
var/consumed_slots = 0
|
||||
for(var/thing in accessories)
|
||||
var/obj/item/clothing/accessory/AC = thing
|
||||
consumed_slots |= AC.slot
|
||||
|
||||
//Mask to just consumed restricted
|
||||
var/consumed_restricted = restricted_accessory_slots & consumed_slots
|
||||
|
||||
//They share at least one bit with the restricted slots
|
||||
if(consumed_restricted & A.slot)
|
||||
return FALSE
|
||||
|
||||
return TRUE
|
||||
|
||||
/obj/item/clothing/attackby(var/obj/item/I, var/mob/user)
|
||||
if(istype(I, /obj/item/clothing/accessory))
|
||||
var/obj/item/clothing/accessory/A = I
|
||||
if(attempt_attach_accessory(A, user))
|
||||
return
|
||||
|
||||
if(accessories.len)
|
||||
if(LAZYLEN(accessories))
|
||||
for(var/obj/item/clothing/accessory/A in accessories)
|
||||
A.attackby(I, user)
|
||||
return
|
||||
@@ -23,7 +37,7 @@
|
||||
|
||||
/obj/item/clothing/attack_hand(var/mob/user)
|
||||
//only forward to the attached accessory if the clothing is equipped (not in a storage)
|
||||
if(accessories.len && src.loc == user)
|
||||
if(LAZYLEN(accessories) && src.loc == user)
|
||||
for(var/obj/item/clothing/accessory/A in accessories)
|
||||
A.attack_hand(user)
|
||||
return
|
||||
@@ -54,7 +68,7 @@
|
||||
|
||||
/obj/item/clothing/examine(var/mob/user)
|
||||
..(user)
|
||||
if(accessories.len)
|
||||
if(LAZYLEN(accessories))
|
||||
for(var/obj/item/clothing/accessory/A in accessories)
|
||||
user << "\A [A] is attached to it."
|
||||
|
||||
@@ -65,7 +79,7 @@
|
||||
* items on spawn
|
||||
*/
|
||||
/obj/item/clothing/proc/attempt_attach_accessory(obj/item/clothing/accessory/A, mob/user)
|
||||
if(!valid_accessory_slots || !valid_accessory_slots.len)
|
||||
if(!valid_accessory_slots)
|
||||
if(user)
|
||||
to_chat(user, "<span class='warning'>You cannot attach accessories of any kind to \the [src].</span>")
|
||||
return FALSE
|
||||
@@ -83,14 +97,14 @@
|
||||
|
||||
|
||||
/obj/item/clothing/proc/attach_accessory(mob/user, obj/item/clothing/accessory/A)
|
||||
accessories += A
|
||||
LAZYADD(accessories,A)
|
||||
A.on_attached(src, user)
|
||||
src.verbs |= /obj/item/clothing/proc/removetie_verb
|
||||
update_accessory_slowdown()
|
||||
update_clothing_icon()
|
||||
|
||||
/obj/item/clothing/proc/remove_accessory(mob/user, obj/item/clothing/accessory/A)
|
||||
if(!(A in accessories))
|
||||
if(!LAZYLEN(accessories) || !(A in accessories))
|
||||
return
|
||||
|
||||
A.on_removed(user)
|
||||
@@ -111,13 +125,13 @@
|
||||
if(usr.stat) return
|
||||
if(!accessories.len) return
|
||||
var/obj/item/clothing/accessory/A
|
||||
if(accessories.len > 1)
|
||||
if(LAZYLEN(accessories))
|
||||
A = input("Select an accessory to remove from [src]") as null|anything in accessories
|
||||
else
|
||||
A = accessories[1]
|
||||
src.remove_accessory(usr,A)
|
||||
if(!accessories.len)
|
||||
if(A)
|
||||
remove_accessory(usr,A)
|
||||
if(!LAZYLEN(accessories))
|
||||
src.verbs -= /obj/item/clothing/proc/removetie_verb
|
||||
accessories = null
|
||||
|
||||
/obj/item/clothing/emp_act(severity)
|
||||
if(accessories.len)
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
name = "helmet"
|
||||
desc = "Standard Security gear. Protects the head from impacts."
|
||||
icon_state = "helmet"
|
||||
valid_accessory_slots = list(ACCESSORY_SLOT_HELM_C)
|
||||
restricted_accessory_slots = list(ACCESSORY_SLOT_HELM_C)
|
||||
valid_accessory_slots = (ACCESSORY_SLOT_HELM_C)
|
||||
restricted_accessory_slots = (ACCESSORY_SLOT_HELM_C)
|
||||
flags = THICKMATERIAL
|
||||
armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 0, rad = 0)
|
||||
flags_inv = HIDEEARS|HIDEEYES
|
||||
|
||||
@@ -492,8 +492,20 @@
|
||||
icon = 'icons/obj/clothing/modular_armor.dmi'
|
||||
item_icons = list(slot_wear_suit_str = 'icons/mob/modular_armor.dmi')
|
||||
icon_state = "pcarrier"
|
||||
valid_accessory_slots = list(ACCESSORY_SLOT_INSIGNIA, ACCESSORY_SLOT_ARMOR_C, ACCESSORY_SLOT_ARMOR_A, ACCESSORY_SLOT_ARMOR_L, ACCESSORY_SLOT_ARMOR_S, ACCESSORY_SLOT_ARMOR_M)
|
||||
restricted_accessory_slots = list(ACCESSORY_SLOT_INSIGNIA, ACCESSORY_SLOT_ARMOR_C, ACCESSORY_SLOT_ARMOR_A, ACCESSORY_SLOT_ARMOR_L, ACCESSORY_SLOT_ARMOR_S)
|
||||
valid_accessory_slots = (\
|
||||
ACCESSORY_SLOT_INSIGNIA\
|
||||
|ACCESSORY_SLOT_ARMOR_C\
|
||||
|ACCESSORY_SLOT_ARMOR_A\
|
||||
|ACCESSORY_SLOT_ARMOR_L\
|
||||
|ACCESSORY_SLOT_ARMOR_S\
|
||||
|ACCESSORY_SLOT_ARMOR_M)
|
||||
restricted_accessory_slots = (\
|
||||
ACCESSORY_SLOT_INSIGNIA\
|
||||
|ACCESSORY_SLOT_ARMOR_C\
|
||||
|ACCESSORY_SLOT_ARMOR_A\
|
||||
|ACCESSORY_SLOT_ARMOR_L\
|
||||
|ACCESSORY_SLOT_ARMOR_S\
|
||||
|ACCESSORY_SLOT_ARMOR_M)
|
||||
blood_overlay_type = "armor"
|
||||
|
||||
/obj/item/clothing/suit/armor/pcarrier/light
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
item_state_slots = list(slot_r_hand_str = "", slot_l_hand_str = "")
|
||||
slot_flags = SLOT_TIE
|
||||
w_class = ITEMSIZE_SMALL
|
||||
var/slot = "decor"
|
||||
var/slot = ACCESSORY_SLOT_DECOR
|
||||
var/obj/item/clothing/has_suit = null //the suit the tie may be attached to
|
||||
var/image/inv_overlay = null //overlay used when attached to clothing.
|
||||
var/image/mob_overlay = null
|
||||
@@ -95,6 +95,7 @@
|
||||
/obj/item/clothing/accessory/tie
|
||||
name = "blue tie"
|
||||
icon_state = "bluetie"
|
||||
slot = ACCESSORY_SLOT_TIE
|
||||
|
||||
/obj/item/clothing/accessory/tie/red
|
||||
name = "red tie"
|
||||
@@ -145,6 +146,7 @@
|
||||
name = "stethoscope"
|
||||
desc = "An outdated medical apparatus for listening to the sounds of the human body. It also makes you look like you know what you're doing."
|
||||
icon_state = "stethoscope"
|
||||
slot = ACCESSORY_SLOT_TIE
|
||||
|
||||
/obj/item/clothing/accessory/stethoscope/do_surgery(mob/living/carbon/human/M, mob/living/user)
|
||||
if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool
|
||||
@@ -206,6 +208,7 @@
|
||||
name = "bronze medal"
|
||||
desc = "A bronze medal."
|
||||
icon_state = "bronze"
|
||||
slot = ACCESSORY_SLOT_MEDAL
|
||||
|
||||
/obj/item/clothing/accessory/medal/conduct
|
||||
name = "distinguished conduct medal"
|
||||
@@ -260,6 +263,7 @@
|
||||
name = "green scarf"
|
||||
desc = "A stylish scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks."
|
||||
icon_state = "greenscarf"
|
||||
slot = ACCESSORY_SLOT_DECOR
|
||||
|
||||
/obj/item/clothing/accessory/scarf/red
|
||||
name = "red scarf"
|
||||
@@ -322,6 +326,7 @@
|
||||
icon_state = "bracelet"
|
||||
w_class = ITEMSIZE_TINY
|
||||
slot_flags = SLOT_TIE
|
||||
slot = ACCESSORY_SLOT_DECOR
|
||||
|
||||
/obj/item/clothing/accessory/bracelet/friendship
|
||||
name = "friendship bracelet"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "red armband"
|
||||
desc = "A fancy red armband!"
|
||||
icon_state = "red"
|
||||
slot = "armband"
|
||||
slot = ACCESSORY_SLOT_ARMBAND
|
||||
|
||||
/obj/item/clothing/accessory/armband/cargo
|
||||
name = "cargo armband"
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
desc = "Security Department detective's badge, made from gold."
|
||||
icon_state = "badge"
|
||||
slot_flags = SLOT_BELT | SLOT_TIE
|
||||
slot = ACCESSORY_SLOT_MEDAL
|
||||
|
||||
var/stored_name
|
||||
var/badge_string = "Corporate Security"
|
||||
|
||||
@@ -2,11 +2,13 @@
|
||||
name = "black vest"
|
||||
desc = "Slick black suit vest."
|
||||
icon_state = "det_vest"
|
||||
slot = ACCESSORY_SLOT_OVER
|
||||
|
||||
/obj/item/clothing/accessory/jacket/
|
||||
/obj/item/clothing/accessory/jacket
|
||||
name = "tan suit jacket"
|
||||
desc = "Cozy suit jacket."
|
||||
icon_state = "tan_jacket"
|
||||
slot = ACCESSORY_SLOT_OVER
|
||||
|
||||
/obj/item/clothing/accessory/jacket/charcoal
|
||||
name = "charcoal suit jacket"
|
||||
@@ -55,7 +57,7 @@
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
|
||||
siemens_coefficient = 0.9
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
slot = "over"
|
||||
slot = ACCESSORY_SLOT_OVER
|
||||
|
||||
sprite_sheets = list(
|
||||
"Teshari" = 'icons/mob/species/seromi/suit.dmi'
|
||||
@@ -176,6 +178,7 @@
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
siemens_coefficient = 0.9
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
slot = ACCESSORY_SLOT_OVER
|
||||
|
||||
/obj/item/clothing/accessory/hawaii/red
|
||||
icon_state = "hawaii2"
|
||||
@@ -201,6 +204,7 @@
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
siemens_coefficient = 0.9
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
slot = ACCESSORY_SLOT_OVER
|
||||
|
||||
/obj/item/clothing/accessory/wcoat/red
|
||||
name = "red waistcoat"
|
||||
@@ -242,6 +246,7 @@
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
siemens_coefficient = 0.9
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
slot = ACCESSORY_SLOT_OVER
|
||||
|
||||
/obj/item/clothing/accessory/sweater/pink
|
||||
name = "pink sweater"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "shoulder holster"
|
||||
desc = "A handgun holster."
|
||||
icon_state = "holster"
|
||||
slot = "utility"
|
||||
slot = ACCESSORY_SLOT_TORSO //Legacy/balance purposes
|
||||
concealed_holster = 1
|
||||
var/obj/item/holstered = null
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
name = "silver locket"
|
||||
desc = "A small locket of high-quality metal."
|
||||
icon_state = "locket"
|
||||
slot_flags = 0
|
||||
w_class = ITEMSIZE_SMALL
|
||||
slot_flags = SLOT_MASK | SLOT_TIE
|
||||
slot = ACCESSORY_SLOT_DECOR
|
||||
var/base_icon
|
||||
var/open
|
||||
var/obj/item/held //Item inside locket.
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
icon = 'icons/obj/card.dmi'
|
||||
icon_state = "permit"
|
||||
w_class = ITEMSIZE_TINY
|
||||
slot = ACCESSORY_SLOT_MEDAL
|
||||
var/owner = 0 //To prevent people from just renaming the thing if they steal it
|
||||
|
||||
/obj/item/clothing/accessory/permit/attack_self(mob/user as mob)
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
name = "load bearing equipment"
|
||||
desc = "Used to hold things when you don't have enough hands."
|
||||
icon_state = "webbing"
|
||||
slot = "utility"
|
||||
slot = ACCESSORY_SLOT_UTILITY
|
||||
show_messages = 1
|
||||
|
||||
var/slots = 3
|
||||
var/slots = 5
|
||||
var/obj/item/weapon/storage/internal/hold
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
|
||||
@@ -49,45 +49,40 @@
|
||||
name = "webbing"
|
||||
desc = "Sturdy mess of synthcotton belts and buckles, ready to share your burden."
|
||||
icon_state = "webbing"
|
||||
slots = 3
|
||||
|
||||
/obj/item/clothing/accessory/storage/black_vest
|
||||
name = "black webbing vest"
|
||||
desc = "Robust black synthcotton vest with lots of pockets to hold whatever you need, but cannot hold in hands."
|
||||
icon_state = "vest_black"
|
||||
slots = 5
|
||||
|
||||
/obj/item/clothing/accessory/storage/brown_vest
|
||||
name = "brown webbing vest"
|
||||
desc = "Worn brownish synthcotton vest with lots of pockets to unload your hands."
|
||||
icon_state = "vest_brown"
|
||||
slots = 5
|
||||
|
||||
/obj/item/clothing/accessory/storage/white_vest
|
||||
name = "white webbing vest"
|
||||
desc = "Durable white synthcotton vest with lots of pockets to carry essentials."
|
||||
icon_state = "vest_white"
|
||||
slots = 5
|
||||
|
||||
/obj/item/clothing/accessory/storage/black_drop_pouches
|
||||
name = "black drop pouches"
|
||||
gender = PLURAL
|
||||
desc = "Robust black synthcotton bags to hold whatever you need, but cannot hold in hands."
|
||||
icon_state = "thigh_black"
|
||||
slots = 5
|
||||
|
||||
/obj/item/clothing/accessory/storage/brown_drop_pouches
|
||||
name = "brown drop pouches"
|
||||
gender = PLURAL
|
||||
desc = "Worn brownish synthcotton bags to hold whatever you need, but cannot hold in hands."
|
||||
icon_state = "thigh_brown"
|
||||
slots = 5
|
||||
|
||||
/obj/item/clothing/accessory/storage/white_drop_pouches
|
||||
name = "white drop pouches"
|
||||
gender = PLURAL
|
||||
desc = "Durable white synthcotton bags to hold whatever you need, but cannot hold in hands."
|
||||
icon_state = "thigh_white"
|
||||
slots = 5
|
||||
|
||||
/obj/item/clothing/accessory/storage/knifeharness
|
||||
name = "decorated harness"
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/obj/item/clothing/under/vox
|
||||
has_sensor = 0
|
||||
species_restricted = list(SPECIES_VOX)
|
||||
valid_accessory_slots = list("vox")
|
||||
restricted_accessory_slots = list("vox")
|
||||
valid_accessory_slots = "vox"
|
||||
restricted_accessory_slots = "vox"
|
||||
phoronproof = 1
|
||||
|
||||
/obj/item/clothing/under/vox/vox_casual
|
||||
|
||||
Reference in New Issue
Block a user