Merge pull request #15377 from KillianKirilenko/kk-blood

Blood Reagents Refactor
This commit is contained in:
Heroman3003
2023-09-13 07:51:31 +10:00
committed by GitHub
12 changed files with 32 additions and 13 deletions
@@ -5,6 +5,8 @@
#define ORGANICS 1
#define SYNTHETICS 2
var/global/list/valid_bloodreagents = list("iron","copper","phoron","silver","gold","slimejelly") //allowlist-based so people don't make their blood restored by alcohol or something really silly. use reagent IDs!
/datum/preferences
var/custom_species // Custom species name, can't be changed due to it having been used in savefiles already.
var/custom_base // What to base the custom species on
@@ -115,6 +117,7 @@
S["neu_traits"] >> pref.neu_traits
S["neg_traits"] >> pref.neg_traits
S["blood_color"] >> pref.blood_color
S["blood_reagents"] >> pref.blood_reagents
S["traits_cheating"] >> pref.traits_cheating
S["max_traits"] >> pref.max_traits
@@ -135,6 +138,7 @@
S["neu_traits"] << pref.neu_traits
S["neg_traits"] << pref.neg_traits
S["blood_color"] << pref.blood_color
S["blood_reagents"] << pref.blood_reagents
S["traits_cheating"] << pref.traits_cheating
S["max_traits"] << pref.max_traits
@@ -154,6 +158,7 @@
if(!pref.neg_traits) pref.neg_traits = list()
pref.blood_color = sanitize_hexcolor(pref.blood_color, default="#A10808")
pref.blood_reagents = sanitize_text(pref.blood_reagents, initial(pref.blood_reagents))
if(!pref.traits_cheating)
var/datum/species/S = GLOB.all_species[pref.species]
@@ -253,6 +258,7 @@
//Any additional non-trait settings can be applied here
new_S.blood_color = pref.blood_color
new_S.blood_reagents = pref.blood_reagents
if(pref.species == SPECIES_CUSTOM)
//Statistics for this would be nice
@@ -305,6 +311,8 @@
. += "<b>Blood Color: </b>" //People that want to use a certain species to have that species traits (xenochimera/promethean/spider) should be able to set their own blood color.
. += "<a href='?src=\ref[src];blood_color=1'>Set Color</a>"
. += "<a href='?src=\ref[src];blood_reset=1'>R</a><br>"
. += "<b>Blood Reagent: </b>" //Wanna be copper-based? Go ahead.
. += "<a href='?src=\ref[src];blood_reagents=1'>[pref.blood_reagents]</a><br>"
. += "<br>"
. += "<b>Custom Say: </b>"
@@ -362,6 +370,12 @@
pref.blood_color = "#A10808"
return TOPIC_REFRESH
else if(href_list["blood_reagents"])
var/new_blood_reagents = tgui_input_list(user, "Choose your character's blood restoration reagent:", "Character Preference", valid_bloodreagents)
if(new_blood_reagents && CanUseTopic(user))
pref.blood_reagents = new_blood_reagents
return TOPIC_REFRESH
else if(href_list["clicked_pos_trait"])
var/datum/trait/trait = text2path(href_list["clicked_pos_trait"])
var/choice = tgui_alert(usr, "Remove [initial(trait.name)] and regain [initial(trait.cost)] points?","Remove Trait",list("Remove","Cancel"))
+1
View File
@@ -44,6 +44,7 @@ var/list/preferences_datums = list()
var/bday_announce = FALSE //Public announcement for birthdays
var/spawnpoint = "Arrivals Shuttle" //where this character will spawn (0-2).
var/b_type = "A+" //blood type (not-chooseable)
var/blood_reagents = "iron" //blood restoration reagents
var/backbag = 2 //backpack type
var/pdachoice = 1 //PDA type
var/h_style = "Bald" //Hair type
@@ -508,7 +508,7 @@
if (R.fields["id"] == E.fields["id"])
if(hasHUD(usr,"medical"))
var/list/medical_hud_text = list()
medical_hud_text += "<b>Name:</b> [R.fields["name"]] <b>Blood Type:</b> [R.fields["b_type"]]"
medical_hud_text += "<b>Name:</b> [R.fields["name"]] <b>Blood Type:</b> [R.fields["b_type"]] <b>Blood Basis:</b> [R.fields["blood_reagent"]]"
medical_hud_text += "<b>Species:</b> [R.fields["species"]]"
medical_hud_text += "<b>DNA:</b> [R.fields["b_dna"]]"
medical_hud_text += "<b>Minor Disabilities:</b> [R.fields["mi_dis"]]"
@@ -42,6 +42,7 @@
var/virus_immune
var/short_sighted // Permanent weldervision.
var/blood_name = "blood" // Name for the species' blood.
var/blood_reagents = "iron" // Reagent(s) that restore lost blood. goes by reagent IDs.
var/blood_volume = 560 // Initial blood volume.
var/bloodloss_rate = 1 // Multiplier for how fast a species bleeds out. Higher = Faster
var/blood_level_safe = 0.85 //"Safe" blood level; above this, you're OK
@@ -36,6 +36,7 @@ var/datum/species/shapeshifter/promethean/prometheans
assisted_langs = list(LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX) // Prometheans are weird, let's just assume they can use basically any language.
blood_name = "gelatinous ooze"
blood_reagents = "slimejelly"
breath_type = null
poison_type = null
@@ -314,6 +314,7 @@
flash_mod = 1.2
chemOD_mod = 0.9
blood_reagents = "copper"
bloodloss_rate = 1.5
ambiguous_genders = TRUE
@@ -201,6 +201,7 @@
flesh_color = "#AFA59E"
base_color = "#333333"
blood_color = "#240bc4"
blood_reagents = "copper"
reagent_tag = IS_ZORREN
color_mult = 1
@@ -180,6 +180,8 @@
/datum/reagent/proc/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
M.bloodstr.add_reagent(id, removed)
if(src.id == M.species.blood_reagents)
M.add_chemical_effect(CE_BLOODRESTORE, 8 * removed)
return
/datum/reagent/proc/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
@@ -79,10 +79,6 @@
taste_description = "pennies"
color = "#6E3B08"
/datum/reagent/copper/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_SKRELL || alien == IS_ZORREN)
M.add_chemical_effect(CE_BLOODRESTORE, 8 * removed)
/datum/reagent/ethanol
name = "Ethanol" //Parent class for all alcoholic reagents.
id = "ethanol"
@@ -246,10 +242,6 @@
reagent_state = SOLID
color = "#353535"
/datum/reagent/iron/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
if(alien != IS_DIONA && alien != IS_SKRELL && alien != IS_ZORREN)
M.add_chemical_effect(CE_BLOODRESTORE, 8 * removed)
/datum/reagent/lithium
name = "Lithium"
id = "lithium"