Return of the neck slot! (#27188)
* this turned out to be wayyyy more than just a test * remove bedsheet icons from back.dmi * hud+better icons * error fixed * fixes a few bedsheet icons * Update code/game/objects/items/weapons/storage/garment.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> Signed-off-by: Bm0n <92271472+Bm0n@users.noreply.github.com> * review * spacing * TGUI Bundle Rebuild * TGUI Bundle Rebuild * TGUI Bundle Rebuild * TGUI Bundle Rebuild * lint? * guh * lint * TGUI Bundle Rebuild * test * fix * dead golem fix * TGUI Bundle Rebuild * TGUI Bundle Rebuild * TGUI Bundle Rebuild --------- Signed-off-by: Bm0n <92271472+Bm0n@users.noreply.github.com> Co-authored-by: Bmon <no@email.com> Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
@@ -25,8 +25,9 @@
|
||||
#define ITEM_SLOT_PDA (1<<20) // pda
|
||||
#define ITEM_SLOT_ACCESSORY (1<<21) // accessories
|
||||
#define ITEM_SLOT_COLLAR (1<<22) // pet collar
|
||||
#define ITEM_SLOT_AMOUNT_FLAG (1<<ITEM_SLOT_AMOUNT)
|
||||
#define ITEM_SLOT_AMOUNT 22 // IF YOU ADD ANY NEW CLOTHING SLOTS, MAKE SURE TO UPDATE THIS TO THE AMOUNT OF SLOTS.
|
||||
#define ITEM_SLOT_NECK (1<<23) // neck
|
||||
#define ITEM_SLOT_AMOUNT_FLAG (1<<(ITEM_SLOT_AMOUNT-1))
|
||||
#define ITEM_SLOT_AMOUNT 24 // IF YOU ADD ANY NEW CLOTHING SLOTS, MAKE SURE TO UPDATE THIS TO THE AMOUNT OF SLOTS.
|
||||
|
||||
/// Translates an ITEM_SLOT back to an index that can be looked up in inv_slots. e.g. (1<<19) becomes 19.
|
||||
#define ITEM_SLOT_2_INDEX(slot) (log(2, slot) + 1)
|
||||
|
||||
@@ -111,11 +111,13 @@
|
||||
#define ui_gloves "WEST+2:10,SOUTH+1:7"
|
||||
|
||||
|
||||
#define ui_glasses "WEST:6,SOUTH+2:9"
|
||||
#define ui_glasses "WEST:6,SOUTH+3:11"
|
||||
#define ui_mask "WEST+1:8,SOUTH+2:9"
|
||||
#define ui_l_ear "WEST+2:10,SOUTH+2:9"
|
||||
#define ui_r_ear "WEST+2:10,SOUTH+3:11"
|
||||
|
||||
#define ui_neck "WEST:6,SOUTH+2:9"
|
||||
|
||||
#define ui_head "WEST+1:8,SOUTH+3:11"
|
||||
|
||||
// AI
|
||||
|
||||
@@ -185,32 +185,33 @@
|
||||
#define FOAM_REACT_BEFORE_SPREAD (1<<3)
|
||||
|
||||
//Human Overlays Indexes/////////
|
||||
#define EYES_OVERLAY_LAYER 48
|
||||
#define MISC_LAYER 47 // Handles eye_shine() -> cybernetic eyes, specific eye traits.
|
||||
#define WING_LAYER 46
|
||||
#define WING_UNDERLIMBS_LAYER 45
|
||||
#define MUTANTRACE_LAYER 44
|
||||
#define TAIL_UNDERLIMBS_LAYER 43 //Tail split-rendering.
|
||||
#define LIMBS_LAYER 42
|
||||
#define MARKINGS_LAYER 41
|
||||
#define INTORGAN_LAYER 40
|
||||
#define UNDERWEAR_LAYER 39
|
||||
#define MUTATIONS_LAYER 38
|
||||
#define H_DAMAGE_LAYER 37
|
||||
#define UNIFORM_LAYER 36
|
||||
#define ID_LAYER 35
|
||||
#define HANDS_LAYER 34 //Exists to overlay hands over jumpsuits
|
||||
#define SHOES_LAYER 33
|
||||
#define L_FOOT_BLOOD_LAYER 32 // Blood overlay separation Left-Foot
|
||||
#define R_FOOT_BLOOD_LAYER 31 // Blood overlay separation Right-Foot
|
||||
#define GLOVES_LAYER 30
|
||||
#define L_HAND_BLOOD_LAYER 29 // Blood overlay separation Left-Hand
|
||||
#define R_HAND_BLOOD_LAYER 28 // Blood overlay separation Right-Hand
|
||||
#define LEFT_EAR_LAYER 27
|
||||
#define RIGHT_EAR_LAYER 26
|
||||
#define BELT_LAYER 25 //Possible make this an overlay of something required to wear a belt?
|
||||
#define SUIT_LAYER 24
|
||||
#define SPECIAL_BELT_LAYER 23
|
||||
#define EYES_OVERLAY_LAYER 49
|
||||
#define MISC_LAYER 48 // Handles eye_shine() -> cybernetic eyes, specific eye traits.
|
||||
#define WING_LAYER 47
|
||||
#define WING_UNDERLIMBS_LAYER 46
|
||||
#define MUTANTRACE_LAYER 45
|
||||
#define TAIL_UNDERLIMBS_LAYER 44 //Tail split-rendering.
|
||||
#define LIMBS_LAYER 43
|
||||
#define MARKINGS_LAYER 42
|
||||
#define INTORGAN_LAYER 41
|
||||
#define UNDERWEAR_LAYER 40
|
||||
#define MUTATIONS_LAYER 39
|
||||
#define H_DAMAGE_LAYER 38
|
||||
#define UNIFORM_LAYER 37
|
||||
#define ID_LAYER 36
|
||||
#define HANDS_LAYER 35 //Exists to overlay hands over jumpsuits
|
||||
#define SHOES_LAYER 34
|
||||
#define L_FOOT_BLOOD_LAYER 33 // Blood overlay separation Left-Foot
|
||||
#define R_FOOT_BLOOD_LAYER 32 // Blood overlay separation Right-Foot
|
||||
#define GLOVES_LAYER 31
|
||||
#define L_HAND_BLOOD_LAYER 30 // Blood overlay separation Left-Hand
|
||||
#define R_HAND_BLOOD_LAYER 29 // Blood overlay separation Right-Hand
|
||||
#define LEFT_EAR_LAYER 28
|
||||
#define RIGHT_EAR_LAYER 27
|
||||
#define BELT_LAYER 26 //Possible make this an overlay of something required to wear a belt?
|
||||
#define SUIT_LAYER 25
|
||||
#define SPECIAL_BELT_LAYER 24
|
||||
#define NECK_LAYER 23
|
||||
#define SUIT_STORE_LAYER 22
|
||||
#define BACK_LAYER 21
|
||||
#define HEAD_ACCESSORY_LAYER 20
|
||||
@@ -233,7 +234,7 @@
|
||||
#define HALO_LAYER 3 //blood cult ascended halo, because there's currently no better solution for adding/removing
|
||||
#define FIRE_LAYER 2 //If you're on fire
|
||||
#define FROZEN_LAYER 1
|
||||
#define TOTAL_LAYERS 48
|
||||
#define TOTAL_LAYERS 49
|
||||
|
||||
///Access Region Codes///
|
||||
#define REGION_ALL 0
|
||||
|
||||
@@ -198,6 +198,16 @@
|
||||
inv_box.alpha = ui_alpha
|
||||
toggleable_inventory += inv_box
|
||||
|
||||
inv_box = new /atom/movable/screen/inventory()
|
||||
inv_box.name = "neck"
|
||||
inv_box.icon = ui_style
|
||||
inv_box.icon_state = "neck"
|
||||
inv_box.screen_loc = ui_neck
|
||||
inv_box.slot_id = ITEM_SLOT_NECK
|
||||
inv_box.color = ui_color
|
||||
inv_box.alpha = ui_alpha
|
||||
toggleable_inventory += inv_box
|
||||
|
||||
inv_box = new /atom/movable/screen/inventory()
|
||||
inv_box.name = "back"
|
||||
inv_box.icon = ui_style
|
||||
@@ -434,6 +444,9 @@
|
||||
if(H.wear_mask)
|
||||
H.wear_mask.screen_loc = ui_mask
|
||||
screenmob.client.screen += H.wear_mask
|
||||
if(H.neck)
|
||||
H.neck.screen_loc = ui_neck
|
||||
screenmob.client.screen += H.neck
|
||||
if(H.head)
|
||||
H.head.screen_loc = ui_head
|
||||
screenmob.client.screen += H.head
|
||||
@@ -454,6 +467,8 @@
|
||||
screenmob.client.screen -= H.wear_suit
|
||||
if(H.wear_mask)
|
||||
screenmob.client.screen -= H.wear_mask
|
||||
if(H.neck)
|
||||
screenmob.client.screen -= H.neck
|
||||
if(H.head)
|
||||
screenmob.client.screen -= H.head
|
||||
|
||||
|
||||
@@ -616,6 +616,10 @@
|
||||
var/obj/item/voice_changer/V = target
|
||||
V.set_voice(usr)
|
||||
|
||||
/datum/action/item_action/herald
|
||||
name = "Mirror Walk"
|
||||
desc = "Use near a mirror to enter it."
|
||||
|
||||
// for clothing accessories like holsters
|
||||
/datum/action/item_action/accessory
|
||||
check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUNNED|AB_CHECK_LYING|AB_CHECK_CONSCIOUS
|
||||
@@ -637,9 +641,6 @@
|
||||
name = "View Storage"
|
||||
|
||||
|
||||
/datum/action/item_action/accessory/herald
|
||||
name = "Mirror Walk"
|
||||
desc = "Use near a mirror to enter it."
|
||||
|
||||
//Preset for spells
|
||||
/datum/action/spell_action
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
var/shoes = null
|
||||
var/head = null
|
||||
var/mask = null
|
||||
var/neck = null
|
||||
var/l_ear = null
|
||||
var/r_ear = null
|
||||
var/glasses = null
|
||||
@@ -85,6 +86,8 @@
|
||||
equip_item(H, head, ITEM_SLOT_HEAD)
|
||||
if(mask)
|
||||
equip_item(H, mask, ITEM_SLOT_MASK)
|
||||
if(neck)
|
||||
equip_item(H, neck, ITEM_SLOT_NECK)
|
||||
if(l_ear)
|
||||
equip_item(H, l_ear, ITEM_SLOT_LEFT_EAR)
|
||||
if(r_ear)
|
||||
@@ -172,6 +175,8 @@
|
||||
H.wear_suit.add_fingerprint(H, 1)
|
||||
if(H.wear_mask)
|
||||
H.wear_mask.add_fingerprint(H, 1)
|
||||
if(H.neck)
|
||||
H.neck.add_fingerprint(H, 1)
|
||||
if(H.head)
|
||||
H.head.add_fingerprint(H, 1)
|
||||
if(H.shoes)
|
||||
@@ -199,7 +204,7 @@
|
||||
return 1
|
||||
|
||||
/datum/outfit/proc/get_chameleon_disguise_info()
|
||||
var/list/types = list(uniform, suit, back, belt, gloves, shoes, head, mask, l_ear, r_ear, glasses, id, l_pocket, r_pocket, suit_store, r_hand, l_hand, pda)
|
||||
var/list/types = list(uniform, suit, back, belt, gloves, shoes, head, mask, neck, l_ear, r_ear, glasses, id, l_pocket, r_pocket, suit_store, r_hand, l_hand, pda)
|
||||
types += chameleon_extras
|
||||
listclearnulls(types)
|
||||
return types
|
||||
@@ -225,6 +230,7 @@
|
||||
shoes = text2path(outfit_data["shoes"])
|
||||
head = text2path(outfit_data["head"])
|
||||
mask = text2path(outfit_data["mask"])
|
||||
neck = text2path(outfit_data["neck"])
|
||||
l_ear = text2path(outfit_data["l_ear"])
|
||||
r_ear = text2path(outfit_data["r_ear"])
|
||||
glasses = text2path(outfit_data["glasses"])
|
||||
@@ -281,6 +287,7 @@
|
||||
.["shoes"] = shoes
|
||||
.["head"] = head
|
||||
.["mask"] = mask
|
||||
.["neck"] = neck
|
||||
.["l_ear"] = l_ear
|
||||
.["r_ear"] = r_ear
|
||||
.["glasses"] = glasses
|
||||
|
||||
@@ -27,6 +27,8 @@
|
||||
head = item_path
|
||||
if(ITEM_SLOT_MASK)
|
||||
mask = item_path
|
||||
if(ITEM_SLOT_NECK)
|
||||
neck = item_path
|
||||
if(ITEM_SLOT_LEFT_EAR)
|
||||
l_ear = item_path
|
||||
if(ITEM_SLOT_RIGHT_EAR)
|
||||
@@ -70,7 +72,7 @@
|
||||
|
||||
// Copy equipment
|
||||
var/list/result = list()
|
||||
var/list/slots_to_check = list(ITEM_SLOT_JUMPSUIT, ITEM_SLOT_BACK, ITEM_SLOT_OUTER_SUIT, ITEM_SLOT_BELT, ITEM_SLOT_GLOVES, ITEM_SLOT_SHOES, ITEM_SLOT_HEAD, ITEM_SLOT_MASK, ITEM_SLOT_LEFT_EAR, ITEM_SLOT_RIGHT_EAR, ITEM_SLOT_EYES, ITEM_SLOT_ID, ITEM_SLOT_PDA, ITEM_SLOT_SUIT_STORE, ITEM_SLOT_LEFT_POCKET, ITEM_SLOT_RIGHT_POCKET)
|
||||
var/list/slots_to_check = list(ITEM_SLOT_JUMPSUIT, ITEM_SLOT_BACK, ITEM_SLOT_OUTER_SUIT, ITEM_SLOT_BELT, ITEM_SLOT_GLOVES, ITEM_SLOT_SHOES, ITEM_SLOT_HEAD, ITEM_SLOT_MASK, ITEM_SLOT_LEFT_EAR, ITEM_SLOT_RIGHT_EAR, ITEM_SLOT_EYES, ITEM_SLOT_ID, ITEM_SLOT_PDA, ITEM_SLOT_SUIT_STORE, ITEM_SLOT_LEFT_POCKET, ITEM_SLOT_RIGHT_POCKET, ITEM_SLOT_NECK)
|
||||
for(var/s in slots_to_check)
|
||||
var/obj/item/I = get_item_by_slot(s)
|
||||
var/vedits = collect_vv(I)
|
||||
|
||||
@@ -1061,6 +1061,9 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons)
|
||||
if(belt)
|
||||
if(belt.clean_blood(radiation_clean))
|
||||
update_inv_belt()
|
||||
if(neck)
|
||||
if(neck.clean_blood(radiation_clean))
|
||||
update_inv_neck()
|
||||
..(clean_hands, clean_mask, clean_feet)
|
||||
update_icons() //apply the now updated overlays to the mob
|
||||
|
||||
|
||||
@@ -865,6 +865,8 @@ GLOBAL_DATUM_INIT(welding_sparks, /mutable_appearance, mutable_appearance('icons
|
||||
owner.update_inv_ears()
|
||||
if(flags & ITEM_SLOT_MASK)
|
||||
owner.update_inv_wear_mask()
|
||||
if(flags & ITEM_SLOT_NECK)
|
||||
owner.update_inv_neck()
|
||||
if(flags & ITEM_SLOT_HEAD)
|
||||
owner.update_inv_head()
|
||||
if(flags & ITEM_SLOT_SHOES)
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
/obj/item/clothing/suit/space,
|
||||
/obj/item/clothing/mask/cigarette,
|
||||
/obj/item/clothing/mask/facehugger, //Why would you do this
|
||||
/obj/item/clothing/neck/cloak,
|
||||
/obj/item/clothing/accessory/medal,
|
||||
/obj/item/clothing/suit/armor/riot,
|
||||
/obj/item/clothing/suit/armor/reactive,
|
||||
@@ -33,6 +34,7 @@
|
||||
new /obj/item/clothing/head/beret/captain(src)
|
||||
new /obj/item/clothing/head/beret/captain/white(src)
|
||||
new /obj/item/clothing/head/crown/fancy(src)
|
||||
new /obj/item/clothing/neck/cloak/captain(src)
|
||||
new /obj/item/clothing/suit/armor/vest/capcarapace(src)
|
||||
new /obj/item/clothing/suit/armor/vest/capcarapace/jacket(src)
|
||||
new /obj/item/clothing/suit/armor/vest/capcarapace/jacket/tunic(src)
|
||||
@@ -58,6 +60,7 @@
|
||||
/obj/item/storage/bag/garment/head_of_personnel/populate_contents()
|
||||
new /obj/item/clothing/head/hop(src)
|
||||
new /obj/item/clothing/head/beret/hop(src)
|
||||
new /obj/item/clothing/neck/cloak/head_of_personnel(src)
|
||||
new /obj/item/clothing/suit/mantle/armor/hop(src)
|
||||
new /obj/item/clothing/suit/armor/vest(src)
|
||||
new /obj/item/clothing/suit/hopcoat(src)
|
||||
@@ -83,6 +86,7 @@
|
||||
/obj/item/storage/bag/garment/head_of_security/populate_contents()
|
||||
new /obj/item/clothing/head/HoS(src)
|
||||
new /obj/item/clothing/head/beret/hos(src)
|
||||
new /obj/item/clothing/neck/cloak/head_of_security(src)
|
||||
new /obj/item/clothing/suit/armor/hos(src)
|
||||
new /obj/item/clothing/suit/armor/hos/alt(src)
|
||||
new /obj/item/clothing/suit/mantle/armor(src)
|
||||
@@ -101,6 +105,7 @@
|
||||
|
||||
/obj/item/storage/bag/garment/research_director/populate_contents()
|
||||
new /obj/item/clothing/head/beret/sci(src)
|
||||
new /obj/item/clothing/neck/cloak/research_director(src)
|
||||
new /obj/item/clothing/under/rank/rnd/research_director(src)
|
||||
new /obj/item/clothing/suit/storage/labcoat/rd(src)
|
||||
new /obj/item/clothing/suit/mantle/labcoat(src)
|
||||
@@ -122,6 +127,7 @@
|
||||
new /obj/item/clothing/head/surgery/blue(src)
|
||||
new /obj/item/clothing/head/surgery/green(src)
|
||||
new /obj/item/clothing/head/surgery/purple(src)
|
||||
new /obj/item/clothing/neck/cloak/chief_medical_officer(src)
|
||||
new /obj/item/clothing/under/rank/medical/chief_medical_officer(src)
|
||||
new /obj/item/clothing/under/rank/medical/chief_medical_officer/skirt(src)
|
||||
new /obj/item/clothing/under/rank/medical/scrubs(src)
|
||||
@@ -143,6 +149,7 @@
|
||||
new /obj/item/clothing/head/hardhat/white(src)
|
||||
new /obj/item/clothing/head/beret/ce(src)
|
||||
new /obj/item/clothing/head/beret/eng(src)
|
||||
new /obj/item/clothing/neck/cloak/chief_engineer(src)
|
||||
new /obj/item/clothing/under/rank/engineering/chief_engineer(src)
|
||||
new /obj/item/clothing/under/rank/engineering/chief_engineer/skirt(src)
|
||||
new /obj/item/clothing/suit/mantle/chief_engineer(src)
|
||||
@@ -225,6 +232,7 @@
|
||||
new /obj/item/clothing/shoes/brown(src)
|
||||
new /obj/item/clothing/head/qm(src)
|
||||
new /obj/item/clothing/head/beret/qm(src)
|
||||
new /obj/item/clothing/neck/cloak/quartermaster(src)
|
||||
new /obj/item/clothing/head/hardhat/orange(src)
|
||||
new /obj/item/clothing/suit/qmcoat(src)
|
||||
new /obj/item/clothing/suit/mantle/qm(src)
|
||||
|
||||
@@ -9,7 +9,6 @@ LINEN BINS
|
||||
desc = "A surprisingly soft linen bedsheet."
|
||||
icon = 'icons/obj/bedsheet.dmi'
|
||||
icon_state = "sheet"
|
||||
item_state = "bedsheet"
|
||||
lefthand_file = 'icons/mob/inhands/bedsheet_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/bedsheet_righthand.dmi'
|
||||
layer = 4
|
||||
@@ -19,7 +18,7 @@ LINEN BINS
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
item_color = "white"
|
||||
resistance_flags = FLAMMABLE
|
||||
slot_flags = ITEM_SLOT_BACK
|
||||
slot_flags = ITEM_SLOT_NECK
|
||||
dog_fashion = /datum/dog_fashion/head/ghost
|
||||
dyeing_key = DYE_REGISTRY_BEDSHEET
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"inventory-glasses.png" = 'icons/ui_icons/inventory/glasses.png',
|
||||
"inventory-head.png" = 'icons/ui_icons/inventory/head.png',
|
||||
"inventory-mask.png" = 'icons/ui_icons/inventory/mask.png',
|
||||
"inventory-neck.png" = 'icons/ui_icons/inventory/neck.png',
|
||||
"inventory-ears.png" = 'icons/ui_icons/inventory/ears.png',
|
||||
"inventory-uniform.png" = 'icons/ui_icons/inventory/uniform.png',
|
||||
"inventory-suit.png" = 'icons/ui_icons/inventory/suit.png',
|
||||
|
||||
@@ -1185,3 +1185,9 @@
|
||||
deconstruct(FALSE)
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/clothing/neck
|
||||
name = "necklace"
|
||||
icon = 'icons/obj/clothing/neck.dmi'
|
||||
body_parts_covered = UPPER_TORSO
|
||||
slot_flags = ITEM_SLOT_NECK
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
//Cloaks. No, not THAT kind of cloak.
|
||||
|
||||
/obj/item/clothing/neck/cloak
|
||||
name = "grey cloak"
|
||||
desc = "It's a cloak that can be worn around your neck in a pretty dull color."
|
||||
icon_state = "cloak"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
body_parts_covered = UPPER_TORSO | ARMS
|
||||
|
||||
/obj/item/clothing/neck/cloak/head_of_security
|
||||
name = "head of security's cloak"
|
||||
desc = "Worn by the leader of Brigston, ruling the station with an iron fist."
|
||||
icon_state = "hoscloak"
|
||||
|
||||
/obj/item/clothing/neck/cloak/quartermaster
|
||||
name = "quartermaster's cloak"
|
||||
desc = "Worn by the God-emperor of Cargonia, supplying the station with the necessary tools for survival."
|
||||
icon_state = "qmcloak"
|
||||
|
||||
/obj/item/clothing/neck/cloak/chief_medical_officer
|
||||
name = "chief medical officer's cloak"
|
||||
desc = "Worn by the leader of Medistan, the valiant men and women keeping pestilence at bay."
|
||||
icon_state = "cmocloak"
|
||||
|
||||
/obj/item/clothing/neck/cloak/chief_engineer
|
||||
name = "chief engineer's cloak"
|
||||
desc = "Worn by the leader of both Atmosia and Delamistan, wielder of unlimited power."
|
||||
icon_state = "cecloak"
|
||||
|
||||
/obj/item/clothing/neck/cloak/research_director
|
||||
name = "research director's cloak"
|
||||
desc = "Worn by the leader of Scientopia, the greatest thaumaturgist and researcher of rapid unexpected self disassembly."
|
||||
icon_state = "rdcloak"
|
||||
|
||||
/obj/item/clothing/neck/cloak/captain
|
||||
name = "captain's cloak"
|
||||
desc = "Worn by the supreme leader of Space Station 13."
|
||||
icon_state = "capcloak"
|
||||
|
||||
/obj/item/clothing/neck/cloak/captain/Initialize(mapload)
|
||||
. = ..()
|
||||
desc = "Worn by the supreme leader of [station_name()]."
|
||||
|
||||
/obj/item/clothing/neck/cloak/head_of_personnel
|
||||
name = "head of personnel's cloak"
|
||||
desc = "Worn by the Head of Personnel. It smells faintly of bureaucracy."
|
||||
icon_state = "hopcloak"
|
||||
@@ -30,7 +30,7 @@
|
||||
)
|
||||
|
||||
/obj/item/clothing/suit/mantle/armor/captain
|
||||
name = "captain's cloak"
|
||||
name = "captain's mantle"
|
||||
desc = "An armor-plated piece of fashion for the ruling elite. Protect your upper half in style."
|
||||
icon_state = "capmantle"
|
||||
item_state = "capmantle"
|
||||
|
||||
@@ -231,6 +231,8 @@
|
||||
items += glasses
|
||||
if(gloves)
|
||||
items += gloves
|
||||
if(neck)
|
||||
items += neck
|
||||
if(shoes)
|
||||
items += shoes
|
||||
if(wear_id)
|
||||
|
||||
@@ -82,6 +82,10 @@
|
||||
"<span class='userdanger'>[user] [muzzle.locked ? "locks" : "unlocks"] [source]'s [muzzle.name].</span>")
|
||||
|
||||
|
||||
/datum/strippable_item/mob_item_slot/neck
|
||||
key = STRIPPABLE_ITEM_NECK
|
||||
item_slot = ITEM_SLOT_NECK
|
||||
|
||||
/datum/strippable_item/mob_item_slot/handcuffs
|
||||
key = STRIPPABLE_ITEM_HANDCUFFS
|
||||
item_slot = ITEM_SLOT_HANDCUFFED
|
||||
|
||||
@@ -184,7 +184,7 @@ emp_act
|
||||
/mob/living/carbon/human/proc/getarmor_organ(obj/item/organ/external/def_zone, type)
|
||||
if(!type || !def_zone) return 0
|
||||
var/protection = 0
|
||||
var/list/body_parts = list(head, wear_mask, wear_suit, w_uniform, back, gloves, shoes, belt, s_store, glasses, l_ear, r_ear, wear_id) //Everything but pockets. Pockets are l_store and r_store. (if pockets were allowed, putting something armored, gloves or hats for example, would double up on the armor)
|
||||
var/list/body_parts = list(head, wear_mask, wear_suit, w_uniform, back, gloves, shoes, belt, s_store, glasses, l_ear, r_ear, wear_id, neck) //Everything but pockets. Pockets are l_store and r_store. (if pockets were allowed, putting something armored, gloves or hats for example, would double up on the armor)
|
||||
for(var/bp in body_parts)
|
||||
if(!bp) continue
|
||||
if(bp && isclothing(bp))
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
var/obj/item/clothing/shoes = null
|
||||
var/obj/item/belt = null
|
||||
var/obj/item/clothing/gloves = null
|
||||
var/obj/item/clothing/neck = null
|
||||
var/obj/item/clothing/glasses = null
|
||||
var/obj/item/l_ear = null
|
||||
var/obj/item/r_ear = null
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
list("[p_are()] holding", l_hand, "in", "left hand"),
|
||||
list("[p_are()] holding", r_hand, "in", "right hand"),
|
||||
list("[p_are()] wearing", head, "on", "head"),
|
||||
list("[p_are()] wearing", neck, "around", "neck"),
|
||||
list("[p_are()] wearing", !skip_jumpsuit && w_uniform, null, null, length(w_uniform?.accessories) && "[english_accessory_list(w_uniform)]"),
|
||||
list("[p_are()] wearing", wear_suit, null, null),
|
||||
list("[p_are()] carrying", !skip_suit_storage && s_store, "on", wear_suit && wear_suit.name),
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
return has_organ("chest")
|
||||
if(ITEM_SLOT_MASK)
|
||||
return has_organ("head")
|
||||
if(ITEM_SLOT_NECK)
|
||||
return has_organ("chest")
|
||||
if(ITEM_SLOT_HANDCUFFED)
|
||||
return has_organ("l_hand") && has_organ("r_hand")
|
||||
if(ITEM_SLOT_LEGCUFFED)
|
||||
@@ -96,6 +98,9 @@
|
||||
else if(I == gloves)
|
||||
gloves = null
|
||||
update_inv_gloves()
|
||||
else if(I == neck)
|
||||
neck = null
|
||||
update_inv_neck()
|
||||
else if(I == glasses)
|
||||
glasses = null
|
||||
var/obj/item/clothing/glasses/G = I
|
||||
@@ -222,6 +227,9 @@
|
||||
wear_mask_update(I, toggle_off = TRUE)
|
||||
update_misc_effects()
|
||||
update_inv_wear_mask()
|
||||
if(ITEM_SLOT_NECK)
|
||||
neck = I
|
||||
update_inv_neck()
|
||||
if(ITEM_SLOT_HANDCUFFED)
|
||||
handcuffed = I
|
||||
update_inv_handcuffed()
|
||||
@@ -356,6 +364,8 @@
|
||||
return back
|
||||
if(ITEM_SLOT_MASK)
|
||||
return wear_mask
|
||||
if(ITEM_SLOT_NECK)
|
||||
return neck
|
||||
if(ITEM_SLOT_HANDCUFFED)
|
||||
return handcuffed
|
||||
if(ITEM_SLOT_LEGCUFFED)
|
||||
|
||||
@@ -353,6 +353,9 @@
|
||||
if(gloves)
|
||||
if(gloves.max_heat_protection_temperature && gloves.max_heat_protection_temperature >= temperature)
|
||||
thermal_protection_flags |= gloves.heat_protection
|
||||
if(neck)
|
||||
if(neck.max_heat_protection_temperature && neck.max_heat_protection_temperature >= temperature)
|
||||
thermal_protection_flags |= neck.heat_protection
|
||||
if(wear_mask)
|
||||
if(wear_mask.max_heat_protection_temperature && wear_mask.max_heat_protection_temperature >= temperature)
|
||||
thermal_protection_flags |= wear_mask.heat_protection
|
||||
@@ -414,6 +417,9 @@
|
||||
if(gloves)
|
||||
if(gloves.min_cold_protection_temperature && gloves.min_cold_protection_temperature <= temperature)
|
||||
thermal_protection_flags |= gloves.cold_protection
|
||||
if(neck)
|
||||
if(neck.min_cold_protection_temperature && neck.min_cold_protection_temperature <= temperature)
|
||||
thermal_protection_flags |= neck.cold_protection
|
||||
if(wear_mask)
|
||||
if(wear_mask.min_cold_protection_temperature && wear_mask.min_cold_protection_temperature <= temperature)
|
||||
thermal_protection_flags |= wear_mask.cold_protection
|
||||
@@ -528,6 +534,8 @@
|
||||
covered |= shoes.body_parts_covered
|
||||
if(gloves)
|
||||
covered |= gloves.body_parts_covered
|
||||
if(neck)
|
||||
covered |= neck.body_parts_covered
|
||||
if(wear_mask)
|
||||
covered |= wear_mask.body_parts_covered
|
||||
|
||||
|
||||
@@ -1111,7 +1111,7 @@
|
||||
if(!(dna.species.bodyflags & HAS_SKIN_TONE))
|
||||
s_tone = 0
|
||||
|
||||
var/list/thing_to_check = list(ITEM_SLOT_MASK, ITEM_SLOT_HEAD, ITEM_SLOT_SHOES, ITEM_SLOT_GLOVES, ITEM_SLOT_LEFT_EAR, ITEM_SLOT_RIGHT_EAR, ITEM_SLOT_EYES, ITEM_SLOT_LEFT_HAND, ITEM_SLOT_RIGHT_HAND)
|
||||
var/list/thing_to_check = list(ITEM_SLOT_MASK, ITEM_SLOT_HEAD, ITEM_SLOT_SHOES, ITEM_SLOT_GLOVES, ITEM_SLOT_LEFT_EAR, ITEM_SLOT_RIGHT_EAR, ITEM_SLOT_EYES, ITEM_SLOT_LEFT_HAND, ITEM_SLOT_RIGHT_HAND, ITEM_SLOT_NECK)
|
||||
var/list/kept_items[0]
|
||||
var/list/item_flags[0]
|
||||
for(var/thing in thing_to_check)
|
||||
|
||||
@@ -5,6 +5,7 @@ GLOBAL_LIST_INIT(strippable_human_items, create_strippable_list(list(
|
||||
/datum/strippable_item/mob_item_slot/head,
|
||||
/datum/strippable_item/mob_item_slot/back,
|
||||
/datum/strippable_item/mob_item_slot/mask,
|
||||
/datum/strippable_item/mob_item_slot/neck,
|
||||
/datum/strippable_item/mob_item_slot/eyes,
|
||||
/datum/strippable_item/mob_item_slot/left_ear,
|
||||
/datum/strippable_item/mob_item_slot/right_ear,
|
||||
|
||||
@@ -539,6 +539,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts)
|
||||
update_inv_w_uniform()
|
||||
update_inv_wear_id()
|
||||
update_inv_gloves()
|
||||
update_inv_neck()
|
||||
update_inv_glasses()
|
||||
update_inv_ears()
|
||||
update_inv_shoes()
|
||||
@@ -1059,6 +1060,22 @@ GLOBAL_LIST_EMPTY(damage_icon_parts)
|
||||
overlays_standing[FACEMASK_LAYER] = standing
|
||||
apply_overlay(FACEMASK_LAYER)
|
||||
|
||||
/mob/living/carbon/human/update_inv_neck()
|
||||
remove_overlay(NECK_LAYER)
|
||||
if(client && hud_used)
|
||||
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[ITEM_SLOT_2_INDEX(ITEM_SLOT_NECK)]
|
||||
if(inv)
|
||||
inv.update_icon()
|
||||
|
||||
if(neck)
|
||||
update_hud_neck(neck)
|
||||
if(neck.icon_override)
|
||||
overlays_standing[NECK_LAYER] = mutable_appearance(neck.icon_override, "[neck.icon_state]", layer = -NECK_LAYER)
|
||||
else if(neck.sprite_sheets && neck.sprite_sheets[dna.species.sprite_sheet_name])
|
||||
overlays_standing[NECK_LAYER] = mutable_appearance(neck.sprite_sheets[dna.species.sprite_sheet_name], "[neck.icon_state]", layer = -NECK_LAYER)
|
||||
else
|
||||
overlays_standing[NECK_LAYER] = mutable_appearance('icons/mob/clothing/neck.dmi', "[neck.icon_state]", layer = -NECK_LAYER)
|
||||
apply_overlay(NECK_LAYER)
|
||||
|
||||
/mob/living/carbon/human/update_inv_back()
|
||||
..()
|
||||
@@ -1232,6 +1249,12 @@ GLOBAL_LIST_EMPTY(damage_icon_parts)
|
||||
client.screen += worn_item
|
||||
update_observer_view(worn_item, TRUE)
|
||||
|
||||
/mob/living/carbon/human/proc/update_hud_neck(obj/item/worn_item)
|
||||
worn_item.screen_loc = ui_neck
|
||||
if((client && hud_used && hud_used.hud_version == HUD_STYLE_STANDARD) && (hud_used.inventory_shown && hud_used.hud_shown))
|
||||
client.screen += worn_item
|
||||
update_observer_view(worn_item, TRUE)
|
||||
|
||||
/mob/living/carbon/human/update_hud_back(obj/item/worn_item)
|
||||
worn_item.screen_loc = ui_back
|
||||
if(client && hud_used?.hud_shown && hud_used.hud_version == HUD_STYLE_STANDARD)
|
||||
|
||||
@@ -773,6 +773,8 @@
|
||||
return !H.gloves && (I.slot_flags & ITEM_SLOT_GLOVES)
|
||||
if(ITEM_SLOT_SHOES)
|
||||
return !H.shoes && (I.slot_flags & ITEM_SLOT_SHOES)
|
||||
if(ITEM_SLOT_NECK)
|
||||
return !H.neck && (I.slot_flags & ITEM_SLOT_NECK)
|
||||
if(ITEM_SLOT_BELT)
|
||||
if(H.belt)
|
||||
return FALSE
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
species_traits = list(NOT_SELECTABLE)
|
||||
skinned_type = /obj/item/stack/sheet/animalhide/monkey
|
||||
greater_form = /datum/species/human
|
||||
no_equip = ITEM_SLOT_BELT | ITEM_SLOT_ID | ITEM_SLOT_LEFT_EAR | ITEM_SLOT_RIGHT_EAR | ITEM_SLOT_EYES | ITEM_SLOT_GLOVES | ITEM_SLOT_SHOES | ITEM_SLOT_OUTER_SUIT | ITEM_SLOT_JUMPSUIT | ITEM_SLOT_LEFT_POCKET | ITEM_SLOT_RIGHT_POCKET | ITEM_SLOT_SUIT_STORE | ITEM_SLOT_PDA
|
||||
no_equip = ITEM_SLOT_BELT | ITEM_SLOT_ID | ITEM_SLOT_LEFT_EAR | ITEM_SLOT_RIGHT_EAR | ITEM_SLOT_EYES | ITEM_SLOT_GLOVES | ITEM_SLOT_SHOES | ITEM_SLOT_OUTER_SUIT | ITEM_SLOT_JUMPSUIT | ITEM_SLOT_LEFT_POCKET | ITEM_SLOT_RIGHT_POCKET | ITEM_SLOT_SUIT_STORE | ITEM_SLOT_PDA | ITEM_SLOT_NECK
|
||||
inherent_factions = list("jungle", "monkey")
|
||||
can_craft = FALSE
|
||||
is_small = 1
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
mouse_opacity = MOUSE_OPACITY_ICON
|
||||
death_sound = 'sound/misc/demon_dies.ogg'
|
||||
deathmessage = "begins to shudder as it becomes transparent..."
|
||||
loot_drop = /obj/item/clothing/accessory/necklace/herald_cloak
|
||||
loot_drop = /obj/item/clothing/neck/cloak/herald_cloak
|
||||
|
||||
|
||||
attack_action_types = list(/datum/action/innate/elite_attack/herald_trishot,
|
||||
@@ -257,22 +257,21 @@
|
||||
|
||||
//Herald's loot: Cloak of the Prophet
|
||||
|
||||
/obj/item/clothing/accessory/necklace/herald_cloak
|
||||
/obj/item/clothing/neck/cloak/herald_cloak
|
||||
name = "cloak of the prophet"
|
||||
desc = "A cloak which lts you travel through a perfect reflection of the world."
|
||||
icon = 'icons/obj/lavaland/elite_trophies.dmi'
|
||||
icon_state = "herald_cloak"
|
||||
item_state = "herald_cloak"
|
||||
item_color = "herald_cloak"
|
||||
slot_flags = ITEM_SLOT_ACCESSORY
|
||||
allow_duplicates = FALSE
|
||||
actions_types = list(/datum/action/item_action/accessory/herald)
|
||||
actions_types = list(/datum/action/item_action/herald)
|
||||
|
||||
/obj/item/clothing/accessory/necklace/herald_cloak/attack_self()
|
||||
if(has_suit)
|
||||
mirror_walk()
|
||||
|
||||
/obj/item/clothing/accessory/necklace/herald_cloak/proc/mirror_walk()
|
||||
/obj/item/clothing/neck/cloak/herald_cloak/item_action_slot_check(slot)
|
||||
if(slot == ITEM_SLOT_NECK)
|
||||
return TRUE
|
||||
|
||||
/obj/item/clothing/neck/cloak/herald_cloak/ui_action_click()
|
||||
var/found_mirror = FALSE
|
||||
var/list/mirrors_to_use = list()
|
||||
var/list/areaindex = list()
|
||||
|
||||
@@ -402,7 +402,7 @@
|
||||
if(prob(10))
|
||||
belt = pick(/obj/item/storage/belt/mining/vendor, /obj/item/storage/belt/utility/full)
|
||||
if(prob(50))
|
||||
back = /obj/item/bedsheet/rd/royal_cape
|
||||
neck = /obj/item/bedsheet/rd/royal_cape
|
||||
if(prob(10))
|
||||
l_pocket = pick(/obj/item/crowbar/power, /obj/item/wrench/power, /obj/item/weldingtool/experimental)
|
||||
if("YeOlde")
|
||||
|
||||
@@ -309,6 +309,7 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list( \
|
||||
ITEM_SLOT_JUMPSUIT,\
|
||||
ITEM_SLOT_OUTER_SUIT,\
|
||||
ITEM_SLOT_MASK,\
|
||||
ITEM_SLOT_NECK,\
|
||||
ITEM_SLOT_HEAD,\
|
||||
ITEM_SLOT_SHOES,\
|
||||
ITEM_SLOT_GLOVES,\
|
||||
@@ -393,6 +394,15 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list( \
|
||||
else
|
||||
return 0
|
||||
return 1
|
||||
if(ITEM_SLOT_NECK)
|
||||
if(!(slot_flags & ITEM_SLOT_NECK))
|
||||
return 0
|
||||
if(H.neck)
|
||||
if(!(H.neck.flags & NODROP))
|
||||
return 2
|
||||
else
|
||||
return 0
|
||||
return 1
|
||||
if(ITEM_SLOT_SHOES)
|
||||
if(!(slot_flags & ITEM_SLOT_SHOES))
|
||||
return 0
|
||||
|
||||
@@ -40,6 +40,9 @@
|
||||
/mob/proc/update_inv_gloves()
|
||||
return
|
||||
|
||||
/mob/proc/update_inv_neck()
|
||||
return
|
||||
|
||||
/mob/proc/update_mutations()
|
||||
return
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 110 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
@@ -1759,6 +1759,7 @@
|
||||
#include "code\modules\clothing\masks\gasmask.dm"
|
||||
#include "code\modules\clothing\masks\misc_masks.dm"
|
||||
#include "code\modules\clothing\masks\voicemodulator.dm"
|
||||
#include "code\modules\clothing\neck\cloaks.dm"
|
||||
#include "code\modules\clothing\patreon\hats.dm"
|
||||
#include "code\modules\clothing\patreon\patreon_glasses.dm"
|
||||
#include "code\modules\clothing\shoes\colour.dm"
|
||||
|
||||
@@ -95,7 +95,7 @@ const SLOTS: Record<
|
||||
> = {
|
||||
eyes: {
|
||||
displayName: 'eyewear',
|
||||
gridSpot: getGridSpotKey([1, 0]),
|
||||
gridSpot: getGridSpotKey([0, 0]),
|
||||
image: 'inventory-glasses.png',
|
||||
},
|
||||
|
||||
@@ -111,6 +111,12 @@ const SLOTS: Record<
|
||||
image: 'inventory-mask.png',
|
||||
},
|
||||
|
||||
neck: {
|
||||
displayName: 'neck',
|
||||
gridSpot: getGridSpotKey([1, 0]),
|
||||
image: 'inventory-neck.png',
|
||||
},
|
||||
|
||||
pet_collar: {
|
||||
displayName: 'collar',
|
||||
gridSpot: getGridSpotKey([1, 1]),
|
||||
@@ -237,7 +243,7 @@ const ALTERNATIVE_SLOTS: Record<
|
||||
> = {
|
||||
eyes: {
|
||||
displayName: 'eyewear',
|
||||
gridSpot: getGridSpotKey([1, 0]),
|
||||
gridSpot: getGridSpotKey([0, 0]),
|
||||
image: 'inventory-glasses.png',
|
||||
},
|
||||
|
||||
@@ -253,6 +259,12 @@ const ALTERNATIVE_SLOTS: Record<
|
||||
image: 'inventory-mask.png',
|
||||
},
|
||||
|
||||
neck: {
|
||||
displayName: 'neck',
|
||||
gridSpot: getGridSpotKey([1, 0]),
|
||||
image: 'inventory-neck.png',
|
||||
},
|
||||
|
||||
pet_collar: {
|
||||
displayName: 'collar',
|
||||
gridSpot: getGridSpotKey([1, 1]),
|
||||
|
||||