Adds Verie's fluff items + framework for hair accessories
@@ -3,6 +3,7 @@
|
||||
*/
|
||||
|
||||
var/global/list/ear_styles_list = list() // Stores /datum/sprite_accessory/ears indexed by type
|
||||
var/global/list/hair_accesories_list= list()// Stores /datum/sprite_accessory/hair_accessory indexed by type
|
||||
var/global/list/tail_styles_list = list() // Stores /datum/sprite_accessory/tail indexed by type
|
||||
var/global/list/wing_styles_list = list() // Stores /datum/sprite_accessory/wing indexed by type
|
||||
var/global/list/negative_traits = list() // Negative custom species traits, indexed by path
|
||||
@@ -451,6 +452,12 @@ var/global/list/remainless_species = list(SPECIES_PROMETHEAN,
|
||||
var/datum/sprite_accessory/wing/instance = new path()
|
||||
wing_styles_list[path] = instance
|
||||
|
||||
// Custom Hair Accessories
|
||||
paths = typesof(/datum/sprite_accessory/hair_accessory) - /datum/sprite_accessory/hair_accessory
|
||||
for(var/path in paths)
|
||||
var/datum/sprite_accessory/hair_accessory/instance = new path()
|
||||
hair_accesories_list[path] = instance
|
||||
|
||||
// Custom species traits
|
||||
paths = typesof(/datum/trait) - /datum/trait
|
||||
for(var/path in paths)
|
||||
|
||||
@@ -78,21 +78,22 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
|
||||
#define SUIT_STORE_LAYER 17 //Suit storage-slot item
|
||||
#define BACK_LAYER 18 //Back-slot item
|
||||
#define HAIR_LAYER 19 //The human's hair
|
||||
#define EARS_LAYER 20 //Both ear-slot items (combined image)
|
||||
#define EYES_LAYER 21 //Mob's eyes (used for glowing eyes)
|
||||
#define FACEMASK_LAYER 22 //Mask-slot item
|
||||
#define HEAD_LAYER 23 //Head-slot item
|
||||
#define HANDCUFF_LAYER 24 //Handcuffs, if the human is handcuffed, in a secret inv slot
|
||||
#define LEGCUFF_LAYER 25 //Same as handcuffs, for legcuffs
|
||||
#define L_HAND_LAYER 26 //Left-hand item
|
||||
#define R_HAND_LAYER 27 //Right-hand item
|
||||
#define WING_LAYER 28 //VOREStation edit. Simply move this up a number if things are added.
|
||||
#define TAIL_LAYER_ALT 29 //VOREStation edit. Simply move this up a number if things are added.
|
||||
#define MODIFIER_EFFECTS_LAYER 30 //Effects drawn by modifiers
|
||||
#define FIRE_LAYER 31 //'Mob on fire' overlay layer
|
||||
#define WATER_LAYER 32 //'Mob submerged' overlay layer
|
||||
#define TARGETED_LAYER 33 //'Aimed at' overlay layer
|
||||
#define TOTAL_LAYERS 33 //VOREStation edit. <---- KEEP THIS UPDATED, should always equal the highest number here, used to initialize a list.
|
||||
#define HAIR_ACCESSORY_LAYER 20 //VOREStation edit. Simply move this up a number if things are added.
|
||||
#define EARS_LAYER 21 //Both ear-slot items (combined image)
|
||||
#define EYES_LAYER 22 //Mob's eyes (used for glowing eyes)
|
||||
#define FACEMASK_LAYER 23 //Mask-slot item
|
||||
#define HEAD_LAYER 24 //Head-slot item
|
||||
#define HANDCUFF_LAYER 25 //Handcuffs, if the human is handcuffed, in a secret inv slot
|
||||
#define LEGCUFF_LAYER 26 //Same as handcuffs, for legcuffs
|
||||
#define L_HAND_LAYER 27 //Left-hand item
|
||||
#define R_HAND_LAYER 28 //Right-hand item
|
||||
#define WING_LAYER 29 //VOREStation edit. Simply move this up a number if things are added.
|
||||
#define TAIL_LAYER_ALT 30 //VOREStation edit. Simply move this up a number if things are added.
|
||||
#define MODIFIER_EFFECTS_LAYER 31 //Effects drawn by modifiers
|
||||
#define FIRE_LAYER 32 //'Mob on fire' overlay layer
|
||||
#define WATER_LAYER 33 //'Mob submerged' overlay layer
|
||||
#define TARGETED_LAYER 34 //'Aimed at' overlay layer
|
||||
#define TOTAL_LAYERS 34 //VOREStation edit. <---- KEEP THIS UPDATED, should always equal the highest number here, used to initialize a list.
|
||||
//////////////////////////////////
|
||||
|
||||
/mob/living/carbon/human
|
||||
@@ -408,6 +409,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
|
||||
|
||||
//Reset our hair
|
||||
remove_layer(HAIR_LAYER)
|
||||
remove_layer(HAIR_ACCESSORY_LAYER) //VOREStation Edit
|
||||
update_eyes() //Pirated out of here, for glowing eyes.
|
||||
|
||||
var/obj/item/organ/external/head/head_organ = get_organ(BP_HEAD)
|
||||
@@ -469,6 +471,22 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
|
||||
overlays_standing[HAIR_LAYER] = image(face_standing, layer = BODY_LAYER+HAIR_LAYER)
|
||||
apply_layer(HAIR_LAYER)
|
||||
|
||||
// VOREStation Edit - START
|
||||
var/icon/hair_acc_s = get_hair_accessory_overlay()
|
||||
var/image/hair_acc_s_image = null
|
||||
if(hair_acc_s)
|
||||
if(hair_accessory_style.ignores_lighting)
|
||||
hair_acc_s_image = image(hair_acc_s)
|
||||
hair_acc_s_image.plane = PLANE_LIGHTING_ABOVE
|
||||
hair_acc_s_image.appearance_flags = appearance_flags
|
||||
if (hair_acc_s_image)
|
||||
overlays_standing[HAIR_ACCESSORY_LAYER] = hair_acc_s_image
|
||||
apply_layer(HAIR_ACCESSORY_LAYER)
|
||||
return
|
||||
overlays_standing[HAIR_ACCESSORY_LAYER] = image(hair_acc_s, layer = BODY_LAYER+HAIR_ACCESSORY_LAYER)
|
||||
apply_layer(HAIR_ACCESSORY_LAYER)
|
||||
// VOREStation Edit - END
|
||||
|
||||
/mob/living/carbon/human/update_eyes()
|
||||
if(QDESTROYING(src))
|
||||
return
|
||||
|
||||
@@ -10,6 +10,16 @@
|
||||
/mob/living/carbon/human
|
||||
|
||||
// Horray Furries!
|
||||
var/datum/sprite_accessory/hair_accessory/hair_accessory_style = null
|
||||
var/r_acc = 30
|
||||
var/g_acc = 30
|
||||
var/b_acc = 30
|
||||
var/r_acc2 = 30
|
||||
var/g_acc2 = 30
|
||||
var/b_acc2 = 30
|
||||
var/r_acc3 = 30
|
||||
var/g_acc3 = 30
|
||||
var/b_acc3 = 30
|
||||
var/datum/sprite_accessory/ears/ear_style = null
|
||||
var/r_ears = 30
|
||||
var/g_ears = 30
|
||||
|
||||
@@ -20,6 +20,15 @@ var/global/list/wing_icon_cache = list()
|
||||
return ears_s
|
||||
return null
|
||||
|
||||
/mob/living/carbon/human/proc/get_hair_accessory_overlay()
|
||||
if(hair_accessory_style && !(head && (head.flags_inv & BLOCKHEADHAIR)))
|
||||
var/icon/hair_acc_s = icon(hair_accessory_style.icon, hair_accessory_style.icon_state)
|
||||
if(hair_accessory_style.do_colouration)
|
||||
hair_acc_s.Blend(rgb(src.r_ears, src.g_ears, src.b_ears), hair_accessory_style.color_blend_mode)
|
||||
return hair_acc_s
|
||||
return null
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/get_tail_image()
|
||||
//If you are FBP with tail style and didn't set a custom one
|
||||
var/datum/robolimb/model = isSynthetic()
|
||||
@@ -103,6 +112,7 @@ var/global/list/wing_icon_cache = list()
|
||||
|
||||
return image(wing_s)
|
||||
|
||||
|
||||
// TODO - Move this to where it should go ~Leshana
|
||||
/mob/proc/stop_flying()
|
||||
if(QDESTROYING(src))
|
||||
|
||||
@@ -2242,3 +2242,50 @@ Departamental Swimsuits, for general use
|
||||
|
||||
add_attack_logs(user, target, "Teleported [target] with via \the [src]'s [translocator]!")
|
||||
else ..()
|
||||
|
||||
//Vitoras: Verie
|
||||
/obj/item/clothing/suit/storage/hooded/fluff/verie
|
||||
name = "distressingly cyan hoodie"
|
||||
desc = "A cute, brightly colored hoodie perfect for occasional concealment of a verie silly nerd. A little tag inside \
|
||||
the collar bears only the letters \"VW.\""
|
||||
icon = 'icons/vore/custom_clothes_vr.dmi'
|
||||
icon_state = "verie_hoodie"
|
||||
|
||||
icon_override = 'icons/vore/custom_onmob_vr.dmi'
|
||||
item_state = "verie_hoodie"
|
||||
|
||||
hoodtype = /obj/item/clothing/head/hood/winter/fluff/verie
|
||||
|
||||
var/owner = "vitoras"
|
||||
|
||||
/obj/item/clothing/suit/storage/hooded/fluff/verie/ToggleHood()
|
||||
// If you ain't the robutt, you probably don't have the hair style that the hooded icon states are made for. sorry!
|
||||
var/mob/living/carbon/human/H = src.loc
|
||||
if (H.ckey != owner)
|
||||
to_chat(H, "Strange... the hood doesn't go over your head no matter how you try to put it up.")
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/clothing/head/hood/winter/fluff/verie
|
||||
name = "not-so-cyan hood"
|
||||
icon = 'icons/vore/custom_clothes_vr.dmi'
|
||||
icon_state = "verie_hood"
|
||||
|
||||
icon_override = 'icons/vore/custom_onmob_vr.dmi'
|
||||
item_state = "verie_hood"
|
||||
|
||||
/obj/item/clothing/under/fluff/verie
|
||||
name = "salaciously stylised suit"
|
||||
desc = "It's kind of difficult to identify the type of material that makes up this form-fitting suit. It is stretchy and flexible, but \
|
||||
is firm in its toughness, and clings tightly to the skin. Come to think of it, it glistens quite a bit in the light and- \
|
||||
oh god it's latex.\
|
||||
\n... A <b>Verie</b> appropriate material choice indeed." //the wordplay never ends
|
||||
icon = 'icons/vore/custom_clothes_vr.dmi'
|
||||
icon_state = "veriesuit"
|
||||
|
||||
icon_override = 'icons/vore/custom_onmob_vr.dmi'
|
||||
item_state = "veriesuit"
|
||||
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|FEET|ARMS|HANDS
|
||||
|
||||
|
||||
|
||||
@@ -1351,3 +1351,52 @@
|
||||
..()
|
||||
name = initial(name)
|
||||
desc = initial(desc)
|
||||
|
||||
//Vitoras: Verie
|
||||
/obj/item/weapon/fluff/verie
|
||||
name = "glowy hairbrush"
|
||||
desc = "A pulse of light periodically zips across the top of this blue brush. This... is not an ordinary hair care tool. \
|
||||
A small inscription can be seen in one side of the brush: \"THIS DEVICE IS ONLY COMPATIBLE WITH MODEL <b>RI</b> \
|
||||
POSITRONICS IN A MODEL <b>E</b> CHASSIS.\""
|
||||
icon = 'icons/vore/custom_items_vr.dmi'
|
||||
icon_state = "verie_brush"
|
||||
w_class = ITEMSIZE_TINY
|
||||
|
||||
var/owner = "vitoras"
|
||||
|
||||
/obj/item/weapon/fluff/verie/attack_self(mob/living/carbon/human/user)
|
||||
if (istype(user))
|
||||
// It's only made for Verie's chassis silly!
|
||||
if (user.ckey != owner)
|
||||
to_chat(user, "<span class='warning'>The brush's teeth are far too rough to even comb your hair. Apparently, \
|
||||
this device was not made for people like you.</span>")
|
||||
return
|
||||
|
||||
if (!user.hair_accessory_style)
|
||||
var/datum/sprite_accessory/hair_accessory/verie_hair_glow/V = new(user)
|
||||
user.hair_accessory_style = V
|
||||
user.update_hair()
|
||||
user.visible_message("[user] combs her hair. \The [src] leaves behind glowing cyan highlights as it passes through \
|
||||
her black strands.", \
|
||||
"<span class='notice'>You brush your hair. \The [src]'s teeth begin to vibrate and glow as they react to your nanites. \
|
||||
The teeth stimulate the nanites in your hair strands until your hair give off a brilliant, faintly pulsing \
|
||||
cyan glow!</span>")
|
||||
|
||||
else
|
||||
user.visible_message("[user] combs her hair. \The [src] brushes away her glowing cyan highlights. Neat!", \
|
||||
"<span class='notice'>You brush your hair. \The [src]'s teeth wipe away the glowing streaks in your hair \
|
||||
like a sponge scrubbing away a stain.</span>")
|
||||
user.hair_accessory_style = null
|
||||
for(var/datum/sprite_accessory/hair_accessory/verie_hair_glow/V in user)
|
||||
to_chat(user, "<span class='warning'>found a V to delete!</span>")
|
||||
qdel(V)
|
||||
user.update_hair()
|
||||
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='warning'>\The [src] isn't compatible with your body as it is now.</span>")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
BIN
icons/mob/vore/hair_accessories_vr.dmi
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 215 KiB After Width: | Height: | Size: 216 KiB |
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 15 KiB |