Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Yogvoxneo #2

Open
wants to merge 71 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
39bd223
add dna blocks
13spacemen Jan 18, 2024
38a46bb
remove vox eyes option
13spacemen Jan 20, 2024
12fd874
vox hair icon gen in handle_hair proc
13spacemen Jan 20, 2024
04099b5
add 2nd mutant color
13spacemen Jan 21, 2024
536ecca
vox V blue blood type
13spacemen Jan 21, 2024
2d158d5
lungs work properly
13spacemen Jan 22, 2024
1eef3b2
colortone proc grayscale arg
13spacemen Jan 23, 2024
a6992f7
more husking improvements
13spacemen Jan 24, 2024
3bba8c2
add husk color for dynamic husk icons
13spacemen Jan 24, 2024
4b3b206
arg for drawing blood in husk image gen
13spacemen Jan 25, 2024
8908c8c
vox bodies replaced by skin tone
13spacemen Jan 28, 2024
56a3d25
uncapitalized vox tail types
13spacemen Jan 29, 2024
7ee6665
update skin tone and tail procs
13spacemen Jan 29, 2024
05f8643
added some vox specific underwear
13spacemen Jan 29, 2024
1a717a3
improved skin tone and limb variant code
13spacemen Jan 29, 2024
a72722c
vox underwear pref icons
13spacemen Jan 29, 2024
ac57d29
sprite sheets system in icon code
13spacemen Jan 29, 2024
97f9a8e
many sprites added
13spacemen Jan 29, 2024
5fd34c7
changesource flags
13spacemen Jan 30, 2024
fa0673a
done underwear and undershirts
13spacemen Jan 30, 2024
318a04b
name procs
13spacemen Jan 30, 2024
4603efb
hair, facial hair progress, renamed hair to quills
13spacemen Jan 30, 2024
4c668ca
all hair and facial hair in
13spacemen Jan 30, 2024
0c834a0
add n2 pref, big n2 tank, suicide messages, butt sprites, tail wont u…
13spacemen Jan 30, 2024
e561d42
flag renames, add no vox allowed sign, default n2 tank is specialized
13spacemen Jan 30, 2024
9b73711
vox heart sprite, lang sprite, some lore
13spacemen Jan 30, 2024
82133e7
vox armalis scream added until armalis exist
13spacemen Jan 30, 2024
fb6feee
added bay vox clothes, disabled armalis scream for regular vox, added…
13spacemen Jan 31, 2024
04b48de
fix species specific icons, fix other sprites
13spacemen Jan 31, 2024
149327e
rearrange clothing, add scrap armor, crimson tail enabled
13spacemen Jan 31, 2024
6149175
all colored jumpsuits done
13spacemen Jan 31, 2024
e97811f
renamed a ton of vox icon states
13spacemen Jan 31, 2024
fb55a80
more sprite work
13spacemen Jan 31, 2024
6f41ca8
more sprite sheet stuff, if no species icon fall back to original icon
13spacemen Jan 31, 2024
445ebc1
color defines, code cleanup, commented out paradise race flags, get r…
13spacemen Jan 31, 2024
e9aa5bb
attempted repairing chest
13spacemen Feb 1, 2024
25088fe
fixed crimson tails
13spacemen Feb 1, 2024
98a8bb4
more sprite stuff
13spacemen Feb 1, 2024
6ef5318
less pointless sprite sheets definitions, singlelined sprite sheets d…
13spacemen Feb 6, 2024
ca08bb5
moved all undershirts to one file
13spacemen Feb 6, 2024
bb7da5d
head sprite stuff
13spacemen Feb 6, 2024
4ee38bf
fixed tail sprite errors
13spacemen Feb 8, 2024
c57a8b0
completed all heads
13spacemen Feb 8, 2024
7f94474
all legs done
13spacemen Feb 8, 2024
e6543e0
completed all arms
13spacemen Feb 8, 2024
a6ba035
completed all chest sprites
13spacemen Feb 8, 2024
a036737
added classic vox sprite
13spacemen Feb 8, 2024
2bdd4aa
vox organ and tail stuff
13spacemen Feb 9, 2024
5174a0b
hair gradient support, eyes static moved to species, order prefix for…
13spacemen Feb 9, 2024
a47dc22
undid random newlines and spaces, butt sprites in a dmi and based on …
13spacemen Feb 10, 2024
d06ebe2
added a ton of vox clothing sprites, species clothing defines, vox ca…
13spacemen Feb 10, 2024
f55fd6c
moth species define, removed redundant survival box code, lazy fetch …
13spacemen Feb 10, 2024
d8c7647
more code cleanup
13spacemen Feb 10, 2024
08b1216
vox organs no longer ORGAN_ROBOTIC, changed some descs of organs
13spacemen Feb 10, 2024
370ea1a
mmi proper cortical stack sprite, made some references to "brain" con…
13spacemen Feb 11, 2024
a474a92
add vox bird traumas, vox hide to maint loot, vox plushie to crate an…
13spacemen Feb 11, 2024
e5cb7b9
cold resist is back, removed burn and stun mods
13spacemen Feb 12, 2024
7784d2b
basic hair color and style changing support
13spacemen Feb 12, 2024
dad6abc
vox med jumpsuit crosses are blue
13spacemen Feb 12, 2024
5471d3e
correct vox skin tone colors in tgui, green renamed to lime, delete p…
13spacemen Feb 12, 2024
da6da9f
species sprite support for chameleon items
13spacemen Feb 12, 2024
a8bc46f
fixed vox prefs, removed plasmaman specific boxes, telomeres traits c…
13spacemen Feb 15, 2024
22c9358
fix dwarven miner box, fix linters
13spacemen Feb 15, 2024
85f8855
sorted and renamed many icon states
13spacemen Feb 15, 2024
5ec6395
lizard robe correctly in uniforms, sprited new signaltech vox jumpsui…
13spacemen Feb 16, 2024
da23a3f
vox blood color defines, maint loot, traumas
13spacemen Feb 17, 2024
fa9711f
added artist, recovery, clerk uniforms by Falcon2346 from /vg/station
13spacemen Feb 18, 2024
6ce012a
vox shaped bloody mob overlays, more use of species defines, species …
13spacemen Feb 19, 2024
28bd6e7
new winterhood, labcoat, chem labcoat, atmos, engine, rsecurity, para…
13spacemen Feb 25, 2024
a8554d8
unbound keys dont print message to chat
13spacemen Feb 25, 2024
9d8d10e
vox gene, cmo, green, tox, vir, robo labcoats done by me
13spacemen Feb 25, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion code/__DEFINES/DNA.dm
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
#define DNA_HAIR_STYLE_BLOCK 7

/// This number needs to equal the total number of DNA blocks
#define DNA_FEATURE_BLOCKS 22
#define DNA_FEATURE_BLOCKS 28

#define DNA_MUTANT_COLOR_BLOCK 1
#define DNA_ETHEREAL_COLOR_BLOCK 2
Expand All @@ -124,6 +124,12 @@
#define DNA_PRETERNIS_WEATHERING_BLOCK 20
#define DNA_PRETERNIS_ANTENNA_BLOCK 21
#define DNA_PRETERNIS_EYE_BLOCK 22
#define DNA_VOX_QUILLS_BLOCK 23
#define DNA_VOX_FACIAL_QUILLS_BLOCK 24
#define DNA_VOX_TAIL_MARKINGS_BLOCK 25
#define DNA_VOX_BODY_MARKINGS_BLOCK 26
#define DNA_VOX_SKIN_TONE_BLOCK 27
#define DNA_MUTANT_COLOR_SECONDARY 28

#define DNA_SEQUENCE_LENGTH 4
#define DNA_MUTATION_BLOCKS 8
Expand Down Expand Up @@ -188,6 +194,9 @@
/// has a tail
#define HAS_TAIL 27
#define NONANITES 28
#define HAIRCOLOR 29
#define FACEHAIRCOLOR 30
#define MUTCOLORS_SECONDARY 31

//organ slots
#define ORGAN_SLOT_BRAIN "brain"
Expand Down
9 changes: 9 additions & 0 deletions code/__DEFINES/colors.dm
Original file line number Diff line number Diff line change
Expand Up @@ -354,6 +354,7 @@

/// Color used for default blood
#define COLOR_BLOOD "#CC0000"
#define COLOR_BLOOD_VOX "#2299FC"

GLOBAL_LIST_INIT(cable_colors, list(
CABLE_COLOR_BLUE = CABLE_HEX_COLOR_BLUE,
Expand All @@ -372,6 +373,14 @@ GLOBAL_LIST_INIT(cable_colors, list(
#define COLOR_INPUT_DISABLED "#F0F0F0"
#define COLOR_INPUT_ENABLED "#D3B5B5"

//Color blending modes
#define COLOR_BLEND_MULTIPLY "multiply"
#define COLOR_BLEND_ADD "add"

//Color matrix
#define COLOR_MATRIX_ADD(color) list(COLOR_RED, COLOR_VIBRANT_LIME, COLOR_BLUE, color)
#define COLOR_MATRIX_OVERLAY(color) list(COLOR_BLACK, COLOR_BLACK, COLOR_BLACK, color)

/// Change color to red on ANSI terminal output, if enabled with -DANSICOLORS.
#ifdef ANSICOLORS
#define TEST_OUTPUT_RED(text) "\x1B\x5B1;31m[text]\x1B\x5B0m"
Expand Down
1 change: 1 addition & 0 deletions code/__DEFINES/is_helpers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list(
#define issnail(A) (is_species(A, /datum/species/snail))
#define isandroid(A) (is_species(A, /datum/species/android))
#define isdummy(A) (istype(A, /mob/living/carbon/human/dummy))
#define isvox(A) (is_species(A, /datum/species/vox))

//more carbon mobs
#define ismonkey(A) (istype(A, /mob/living/carbon/monkey))
Expand Down
4 changes: 4 additions & 0 deletions code/__DEFINES/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,10 @@
#define ALIEN_BODYPART "alien"
#define LARVA_BODYPART "larva"
#define DEVIL_BODYPART "devil"

#define SPECIES_VOX "vox"
#define SPECIES_MOTH "moth"

/*see __DEFINES/inventory.dm for bodypart bitflag defines*/

// Health/damage defines for carbon mobs
Expand Down
19 changes: 19 additions & 0 deletions code/__DEFINES/species_clothing_paths.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
//HUMAN PATHS
///The dmi for humanoid uniforms
#define DEFAULT_UNIFORM_FILE 'icons/mob/clothing/uniform/uniform.dmi'
///The dmi for humanoid shoes
#define DEFAULT_SHOES_FILE 'icons/mob/clothing/feet/feet.dmi'
///The dmi for humanoid oversuits
#define DEFAULT_SUIT_FILE 'icons/mob/clothing/suit/suit.dmi'

//VOX PATHS
#define VOX_MASK_FILE 'icons/mob/clothing/species/vox/mask.dmi'
#define VOX_HEAD_FILE 'icons/mob/clothing/species/vox/head.dmi'
#define VOX_BACK_FILE 'icons/mob/clothing/species/vox/back.dmi'
#define VOX_EARS_FILE 'icons/mob/clothing/species/vox/ears.dmi'
#define VOX_EYES_FILE 'icons/mob/clothing/species/vox/eyes.dmi'
#define VOX_SHOES_FILE 'icons/mob/clothing/species/vox/shoes.dmi'
#define VOX_GLOVES_FILE 'icons/mob/clothing/species/vox/gloves.dmi'
#define VOX_HELMET_FILE 'icons/mob/clothing/species/vox/helmet.dmi'
#define VOX_SUIT_FILE 'icons/mob/clothing/species/vox/suit.dmi'
#define VOX_UNIFORM_FILE 'icons/mob/clothing/species/vox/uniform.dmi'
9 changes: 9 additions & 0 deletions code/__HELPERS/global_lists.dm
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,15 @@
init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_screens, GLOB.ipc_screens_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_antennas, GLOB.ipc_antennas_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_chassis, GLOB.ipc_chassis_list)
// Vox bodyparts
init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_quills, GLOB.vox_quills_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_facial_quills, GLOB.vox_facial_quills_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_tails, GLOB.vox_tails_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_body_markings, GLOB.vox_body_markings_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_tail_markings, GLOB.vox_tail_markings_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails_animated/vox, GLOB.animated_vox_tails_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_tail_markings_animated, GLOB.animated_vox_tail_markings_list)




Expand Down
9 changes: 6 additions & 3 deletions code/__HELPERS/icons.dm
Original file line number Diff line number Diff line change
Expand Up @@ -228,10 +228,13 @@ world
/icon/proc/Greyify()
MapColors(0.75,0.3,0.3, 0.6,0.75,0.6, 0.10,0.10,0.50, 0,0,0)

/icon/proc/ColorTone(tone)
Greyify()
/icon/proc/ColorTone(tone, grayscale = FALSE)
if(grayscale)
GrayScale()
else
Greyify()

var/list/TONE = ReadRGB(tone)
var/list/TONE = rgb2num(tone)
var/gray = round(TONE[1]*0.3 + TONE[2]*0.59 + TONE[3]*0.11, 1)

var/icon/upper = (255-gray) ? new(src) : null
Expand Down
37 changes: 36 additions & 1 deletion code/__HELPERS/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -95,10 +95,21 @@
init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_antennas, GLOB.ipc_antennas_list)
if(!GLOB.ipc_chassis_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_chassis, GLOB.ipc_chassis_list)
if(!GLOB.vox_quills_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_quills, GLOB.vox_quills_list)
if(!GLOB.vox_facial_quills_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_facial_quills, GLOB.vox_facial_quills_list)
if(!GLOB.vox_tails_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_tails, GLOB.vox_tails_list)
if(!GLOB.vox_body_markings_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_body_markings, GLOB.vox_body_markings_list)
if(!GLOB.vox_tail_markings_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_tail_markings, GLOB.vox_tail_markings_list)

//For now we will always return none for tail_human and ears. this shit was unreadable if you do somethign like this make it at least readable
return(list(
"mcolor" = "#[pick("7F","FF")][pick("7F","FF")][pick("7F","FF")]",
"mcolor_secondary" = "#[pick("7F","FF")][pick("7F","FF")][pick("7F","FF")]",
"gradientstyle" = random_hair_gradient_style(10),
"gradientcolor" = "#[pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F")]",
"tail_lizard" = pick(GLOB.tails_list_lizard),
Expand Down Expand Up @@ -126,7 +137,12 @@
"pod_hair" = pick(GLOB.pod_hair_list),
"ipc_screen" = pick(GLOB.ipc_screens_list),
"ipc_antenna" = pick(GLOB.ipc_antennas_list),
"ipc_chassis" = pick(GLOB.ipc_chassis_list)
"ipc_chassis" = pick(GLOB.ipc_chassis_list),
"vox_skin_tone" = pick(GLOB.vox_skin_tones),
"vox_quills" = pick(GLOB.vox_quills_list),
"vox_facial_quills" = pick(GLOB.vox_facial_quills_list),
"vox_body_markings" = pick(GLOB.vox_body_markings_list),
"vox_tail_markings" = pick(GLOB.vox_tail_markings_list)
))

/proc/random_hair_style(gender)
Expand Down Expand Up @@ -191,6 +207,13 @@
if(!findname(.))
break

/proc/random_unique_vox_name(attempts_to_find_unique_name=10)
for(var/i in 1 to attempts_to_find_unique_name)
. = capitalize(vox_name())

if(!findname(.))
break

/proc/random_unique_ethereal_name(attempts_to_find_unique_name=10)
for(var/i in 1 to attempts_to_find_unique_name)
. = capitalize(ethereal_name())
Expand Down Expand Up @@ -260,6 +283,18 @@ GLOBAL_LIST_INIT(skin_tone_names, list(
"mixed4" = "Macadamia",
))

GLOBAL_LIST_INIT(vox_skin_tones, sortList(list(
"lime",
"crimson",
"nebula",
"azure",
"emerald",
"brown",
"plum",
"grey",
"mossy"
)))

GLOBAL_LIST_EMPTY(species_list)

/proc/age2agedescription(age)
Expand Down
7 changes: 7 additions & 0 deletions code/__HELPERS/names.dm
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,13 @@
/proc/plasmaman_name()
return "[pick(GLOB.plasmaman_names)] \Roman[rand(1,99)]"

/proc/vox_name()
var/sounds = rand(2,8)
var/vox_name = ""
for(var/sound in 1 to sounds)
vox_name += pick("ti","hi","ki","ya","ta","ha","ka","yi","chi","cha","kah")
return vox_name

/proc/moth_name()
return "[pick(GLOB.moth_first)] [pick(GLOB.moth_last)]"

Expand Down
8 changes: 8 additions & 0 deletions code/_globalvars/lists/flavor_misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,14 @@ GLOBAL_LIST_EMPTY(frills_list)
GLOBAL_LIST_EMPTY(spines_list)
GLOBAL_LIST_EMPTY(legs_list)
GLOBAL_LIST_EMPTY(animated_spines_list)
// Vox
GLOBAL_LIST_EMPTY(vox_quills_list)
GLOBAL_LIST_EMPTY(vox_facial_quills_list)
GLOBAL_LIST_EMPTY(vox_tails_list)
GLOBAL_LIST_EMPTY(vox_body_markings_list)
GLOBAL_LIST_EMPTY(vox_tail_markings_list)
GLOBAL_LIST_EMPTY(animated_vox_tails_list)
GLOBAL_LIST_EMPTY(animated_vox_tail_markings_list)
//Polysmorph
GLOBAL_LIST_EMPTY(tails_list_polysmorph)
GLOBAL_LIST_EMPTY(teeth_list)
Expand Down
7 changes: 5 additions & 2 deletions code/_globalvars/lists/maintenance_loot.dm
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,14 @@ GLOBAL_LIST_INIT(maintenance_loot_traditional,list(
/obj/item/clothing/mask/breath = W_UNCOMMON,
/obj/item/tank/internals/air = W_COMMON,
/obj/item/tank/internals/anesthetic = W_RARE,
/obj/item/tank/internals/nitrogen = W_RARE,
/obj/item/tank/internals/emergency_oxygen = W_UNCOMMON,
/obj/item/tank/internals/emergency_oxygen/empty = W_UNCOMMON,
/obj/item/tank/internals/emergency_oxygen/engi = W_RARE,
/obj/item/tank/internals/emergency_oxygen/engi/empty = W_RARE,
/obj/item/tank/internals/emergency_oxygen/double = W_MYTHICAL,
/obj/item/tank/internals/emergency_oxygen/double/empty = W_MYTHICAL,
/obj/item/tank/internals/emergency_oxygen/vox = W_MYTHICAL,
/obj/item/tank/internals/ipc_coolant = W_RARE,
/obj/item/tank/internals/ipc_coolant/empty = W_RARE,
/obj/item/tank/internals/plasma = W_LEGENDARY,
Expand Down Expand Up @@ -365,6 +367,7 @@ GLOBAL_LIST_INIT(maintenance_loot_traditional,list(
/obj/item/stack/sheet/animalhide/gorilla = W_RARE,
/obj/item/stack/sheet/animalhide/human = W_RARE,
/obj/item/stack/sheet/animalhide/lizard = W_RARE,
/obj/item/stack/sheet/animalhide/vox = W_RARE,
/obj/item/stack/sheet/animalhide/monkey = W_RARE,
/obj/item/stack/sheet/animalhide/xeno = W_RARE,
/obj/item/storage/bag/money = W_RARE,
Expand Down Expand Up @@ -578,6 +581,7 @@ GLOBAL_LIST_INIT(maintenance_loot_makeshift,list(
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/golem/adamantine = W_MYTHICAL,
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/gorilla = W_MYTHICAL,
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/lizard = W_MYTHICAL,
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/vox = W_MYTHICAL,
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/moth = W_MYTHICAL,
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/plant = W_MYTHICAL,
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/shadow = W_MYTHICAL,
Expand Down Expand Up @@ -655,7 +659,7 @@ GLOBAL_LIST_INIT(maintenance_loot_minor,list(
/obj/item/storage/box/cups = W_RARE,
/obj/item/storage/box/drinkingglasses = W_UNCOMMON,
/obj/item/storage/box/gloves = W_RARE,
/obj/item/storage/box/hug/survival = W_UNCOMMON,
/obj/item/storage/box/survival/hug = W_UNCOMMON,
/obj/item/storage/box/masks = W_RARE,
/obj/item/storage/box/pillbottles = W_RARE,
/obj/item/storage/box/rxglasses = W_RARE,
Expand Down Expand Up @@ -760,7 +764,6 @@ GLOBAL_LIST_INIT(maintenance_loot_minor,list(
/obj/item/storage/box/hug/medical = W_MYTHICAL,
/obj/item/storage/box/mixedcubes = W_RARE,
/obj/item/storage/box/monkeycubes = W_RARE,
/obj/item/storage/box/plasmaman = W_RARE,
/obj/item/storage/box/smart_metal_foam = W_RARE,
/obj/item/storage/firstaid = W_MYTHICAL,
/obj/item/storage/firstaid/ancient = W_MYTHICAL,
Expand Down
8 changes: 6 additions & 2 deletions code/controllers/subsystem/traumas.dm
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,10 @@ SUBSYSTEM_DEF(traumas)
/obj/item/clothing/suit/chickensuit, /obj/item/clothing/head/chicken,
/obj/item/clothing/suit/toggle/owlwings, /obj/item/clothing/under/owl, /obj/item/clothing/mask/gas/owl_mask,
/obj/item/clothing/under/griffin, /obj/item/clothing/shoes/griffin, /obj/item/clothing/head/griffin,
/obj/item/clothing/head/helmet/space/freedom, /obj/item/clothing/suit/space/freedom)),
/obj/item/clothing/head/helmet/space/freedom, /obj/item/clothing/suit/space/freedom, /obj/item/toy/plush/voxplushie,
/obj/item/clothing/mask/breath/vox, /obj/item/clothing/suit/space/vox, /obj/item/clothing/head/helmet/space/vox,
/obj/item/clothing/shoes/magboots/vox, /obj/item/clothing/gloves/color/yellow/vox, /obj/item/flag/species/vox, /obj/item/stack/sheet/animalhide/vox,
/obj/item/organ/tail/vox)),

"anime" = typecacheof(list(/obj/item/clothing/under/schoolgirl, /obj/item/katana, /obj/item/reagent_containers/food/snacks/sashimi, /obj/item/reagent_containers/food/snacks/chawanmushi,
/obj/item/reagent_containers/food/drinks/bottle/sake, /obj/item/throwing_star, /obj/item/clothing/head/kitty/genuine, /obj/item/clothing/suit/space/space_ninja,
Expand All @@ -161,7 +164,8 @@ SUBSYSTEM_DEF(traumas)
"the supernatural" = typecacheof(list(/datum/species/golem/clockwork, /datum/species/golem/runic)),
"aliens" = typecacheof(list(/datum/species/abductor, /datum/species/jelly, /datum/species/pod,
/datum/species/shadow, /datum/species/polysmorph)),
"anime" = typecacheof(list(/datum/species/human/felinid))
"anime" = typecacheof(list(/datum/species/human/felinid)),
"birds" = typecacheof(list(/datum/species/vox))
)

return SS_INIT_SUCCESS
Expand Down
4 changes: 4 additions & 0 deletions code/datums/blood_types.dm
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,10 @@
color = LIGHT_COLOR_BLUEGREEN
compatible_types = list(/datum/blood_type/lizard)

/datum/blood_type/vox
name = "V"
color = COLOR_BLOOD_VOX
compatible_types = list(/datum/blood_type/vox)

/datum/blood_type/universal/synthetic //Blood for preterni
name = "Synthetic"
Expand Down
7 changes: 6 additions & 1 deletion code/datums/components/bloodysoles.dm
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ Like its parent but can be applied to carbon mobs instead of clothing items
*/

/datum/component/bloodysoles/feet
var/static/mutable_appearance/bloody_feet
var/mutable_appearance/bloody_feet

/datum/component/bloodysoles/feet/Initialize()
if(!iscarbon(parent))
Expand All @@ -236,6 +236,11 @@ Like its parent but can be applied to carbon mobs instead of clothing items
/datum/component/bloodysoles/feet/update_icon()
. = list()
if(ishuman(wielder))// Monkeys get no bloody feet :(
var/obj/item/bodypart/l_leg/left_leg = wielder.get_bodypart(BODY_ZONE_L_LEG)
var/obj/item/bodypart/r_leg/right_leg = wielder.get_bodypart(BODY_ZONE_R_LEG)
if(left_leg?.species_id == right_leg?.species_id)
if(icon_exists(bloody_feet.icon, "shoeblood_[left_leg.species_id]"))
bloody_feet.icon_state = "shoeblood_[left_leg.species_id]"
if(HAS_BLOOD_DNA(wielder))
bloody_feet.color = get_blood_dna_color(wielder.return_blood_DNA())
. += bloody_feet
Expand Down
5 changes: 2 additions & 3 deletions code/datums/diseases/advance/symptoms/shedding.dm
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,13 @@ BONUS
to_chat(H, span_warning("Your hair starts to fall out in clumps..."))
addtimer(CALLBACK(src, PROC_REF(Shed), H, FALSE), 50)
if(5)
if(!(H.facial_hair_style == "Shaved") || !(H.hair_style == "Bald"))
if(!(H.facial_hair_style == "Shaved") || !(H.hair_style == "Bald") || !(H.hair_style == "None"))
to_chat(H, span_warning("Your hair starts to fall out in clumps..."))
addtimer(CALLBACK(src, PROC_REF(Shed), H, TRUE), 50)

/datum/symptom/shedding/proc/Shed(mob/living/carbon/human/H, fullbald)
if(fullbald)
H.facial_hair_style = "Shaved"
H.hair_style = "Bald"
H.dna.species.go_bald()
else
H.hair_style = "Balding Hair"
H.update_hair()
Loading