The full-custom blood colour quirk, again (#4332)

## About The Pull Request
Technically, this is also a bugfix for the removed portion of the evil
quirk.

This is a blood colour quirk which aims to create an entirely new
blood_type datum per color-modified base type, and acts as a launching
pad into developing more blood stuff.

As an additional note: In our testing injected blood wouldn't override
the recipient's blood colour. However if this does happen at all in
live, do state such!

## Why It's Good For The Game

Blood colour good? Near-fully custom blood color better?

## Proof Of Testing
oh hey it works now. The three lizards in the video use red blood,
cyan/vox blood, and white/nanite blood respectively.

https://github.com/user-attachments/assets/cec6465f-68de-4c6f-97f4-58061f4f7241

Not rigorously tested, but my process was to only dev the lizard type
then copy to everything else... so it should be fine? Just to show it
should work on blood types with existing compatible_type fields though -
as in, it actually copies the list:
<img width="491" height="260" alt="Screenshot_92"
src="https://github.com/user-attachments/assets/9c257d44-1233-4276-9d88-599e124b2838"
/>

## What We Learnt
Trust our gut. We shouldve replaced it ages ago but thought original
refactorer knew better

## Changelog

🆑
add: blood colour quirk. it's mechanically near-identical to the normal
type.
code: more blood colour presets. yum.

---------

Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com>
This commit is contained in:
aKromatopzia
2025-11-20 12:46:06 -05:00
committed by GitHub
co-authored by LT3 Arturlang
parent 3f0e8956b5
commit 48dc5f593d
8 changed files with 444 additions and 0 deletions
@@ -0,0 +1,41 @@
///see modular_zubbers\code\modules\quirks\neutral_quirks\unique_blood_color.dm
///manual colour input
/datum/preference/color/input_blood_color
category = PREFERENCE_CATEGORY_MANUALLY_RENDERED
savefile_key = "input_blood_color"
savefile_identifier = PREFERENCE_CHARACTER
/datum/preference/color/input_blood_color/create_default_value()
return BLOOD_COLOR_BLACK
/datum/preference/color/input_blood_color/is_accessible(datum/preferences/preferences)
if (!..(preferences))
return FALSE
return /datum/quirk/item_quirk/unique_blood_color::name in preferences.all_quirks
/datum/preference/color/input_blood_color/apply_to_human(mob/living/carbon/human/target, value)
return
///colour preset selection
/datum/preference/choiced/select_blood_color
category = PREFERENCE_CATEGORY_MANUALLY_RENDERED
savefile_key = "select_blood_color"
savefile_identifier = PREFERENCE_CHARACTER
can_randomize = FALSE
/datum/preference/choiced/select_blood_color/create_default_value()
return "Custom"
/datum/preference/choiced/select_blood_color/is_accessible(datum/preferences/preferences)
if (!..(preferences))
return FALSE
return /datum/quirk/item_quirk/unique_blood_color::name in preferences.all_quirks
/datum/preference/choiced/select_blood_color/apply_to_human(mob/living/carbon/human/target, value)
return
/datum/preference/choiced/select_blood_color/init_possible_values()
return list("Custom") + assoc_to_keys(GLOB.custom_blood_colors)