From 2fc81a3d4d373d18d36fd79158f17d8678171731 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Mon, 8 Feb 2016 12:00:02 +1030 Subject: [PATCH 1/6] Added an economic modifier for Teshari. --- code/modules/economy/economy_misc.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/economy/economy_misc.dm b/code/modules/economy/economy_misc.dm index bb076d6bc70..63121371565 100644 --- a/code/modules/economy/economy_misc.dm +++ b/code/modules/economy/economy_misc.dm @@ -52,6 +52,7 @@ /datum/species/skrell = 12, /datum/species/tajaran = 7, /datum/species/unathi = 7, + /datum/species/teshari = 9, // Skrell sponsored! /datum/species/vox = 1 ) From 2e83dfba51165a9f6de473ae8769798fd4b8aa94 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Mon, 8 Feb 2016 13:13:27 +1030 Subject: [PATCH 2/6] Added blood volume and hunger variables for species. --- code/__defines/chemistry.dm | 2 +- code/game/machinery/adv_med.dm | 6 ++--- code/game/objects/items/devices/scanners.dm | 7 +++--- code/modules/economy/economy_misc.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 4 ++-- code/modules/mob/living/carbon/human/life.dm | 4 ++-- .../living/carbon/human/species/species.dm | 4 +++- .../carbon/human/species/station/seromi.dm | 2 ++ .../mob/living/carbon/metroid/metroid.dm | 2 +- code/modules/organs/blood.dm | 22 +++++++++---------- 10 files changed, 29 insertions(+), 26 deletions(-) diff --git a/code/__defines/chemistry.dm b/code/__defines/chemistry.dm index 3c1be97566f..95e980243f9 100644 --- a/code/__defines/chemistry.dm +++ b/code/__defines/chemistry.dm @@ -1,4 +1,4 @@ -#define HUNGER_FACTOR 0.05 // Factor of how fast mob nutrition decreases +#define DEFAULT_HUNGER_FACTOR 0.05 // Factor of how fast mob nutrition decreases #define REM 0.2 // Means 'Reagent Effect Multiplier'. This is how many units of reagent are consumed per tick diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index 55ac30cd5dd..db56d680a4b 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -256,7 +256,7 @@ var/list/occupant_data = list( "stationtime" = worldtime2text(), "stat" = H.stat, - "health" = H.health, + "health" = round(H.health/H.maxHealth)*100, "virus_present" = H.virus2.len, "bruteloss" = H.getBruteLoss(), "fireloss" = H.getFireLoss(), @@ -273,7 +273,7 @@ "stoxin_amount" = H.reagents.get_reagent_amount("stoxin"), "bicaridine_amount" = H.reagents.get_reagent_amount("bicaridine"), "dermaline_amount" = H.reagents.get_reagent_amount("dermaline"), - "blood_amount" = H.vessel.get_reagent_amount("blood"), + "blood_amount" = round(H.vessel.get_reagent_amount("blood") / H.species.blood_volume)*100, "disabilities" = H.sdisabilities, "lung_ruptured" = H.is_lung_ruptured(), "external_organs" = H.organs.Copy(), @@ -311,7 +311,7 @@ if(occ["borer_present"]) dat += "Large growth detected in frontal lobe, possibly cancerous. Surgical removal is recommended.
" - dat += text("[]\tBlood Level %: [] ([] units)
", (""), occ["blood_amount"]*100 / 560, occ["blood_amount"]) + dat += text("[]\tBlood Level %: [] ([] units)
", (""), occ["blood_amount"], occ["blood_amount"]) dat += text("Inaprovaline: [] units
", occ["inaprovaline_amount"]) dat += text("Soporific: [] units
", occ["stoxin_amount"]) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index b50e1268c93..63df3158dc1 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -159,12 +159,11 @@ REAGENT SCANNER break if(M:vessel) var/blood_volume = round(M:vessel.get_reagent_amount("blood")) - var/blood_percent = blood_volume / 560 + var/blood_percent = round(blood_volume / H.species.blood_volume)*100 var/blood_type = M.dna.b_type - blood_percent *= 100 - if(blood_volume <= 500 && blood_volume > 336) + if(blood_percent <= BLOOD_VOLUME_SAFE && blood_percent > BLOOD_VOLUME_BAD) user.show_message("Warning: Blood Level LOW: [blood_percent]% [blood_volume]cl. Type: [blood_type]") - else if(blood_volume <= 336) + else if(blood_percent <= BLOOD_VOLUME_BAD) user.show_message("Warning: Blood Level CRITICAL: [blood_percent]% [blood_volume]cl. Type: [blood_type]") else user.show_message("Blood Level Normal: [blood_percent]% [blood_volume]cl. Type: [blood_type]") diff --git a/code/modules/economy/economy_misc.dm b/code/modules/economy/economy_misc.dm index 63121371565..7b82c1662ca 100644 --- a/code/modules/economy/economy_misc.dm +++ b/code/modules/economy/economy_misc.dm @@ -50,9 +50,9 @@ /var/list/economic_species_modifier = list( /datum/species/human = 10, /datum/species/skrell = 12, + /datum/species/teshari = 9, // Skrell sponsored! /datum/species/tajaran = 7, /datum/species/unathi = 7, - /datum/species/teshari = 9, // Skrell sponsored! /datum/species/vox = 1 ) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 1b09c1b1e12..c799eabf953 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -36,9 +36,9 @@ . = ..() if(.) if(src.nutrition && src.stat != 2) - src.nutrition -= HUNGER_FACTOR/10 + src.nutrition -= DEFAULT_HUNGER_FACTOR/10 if(src.m_intent == "run") - src.nutrition -= HUNGER_FACTOR/10 + src.nutrition -= DEFAULT_HUNGER_FACTOR/10 if((FAT in src.mutations) && src.m_intent == "run" && src.bodytemperature <= 360) src.bodytemperature += 2 diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 4a8e099a726..8006d413319 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -896,7 +896,7 @@ // nutrition decrease if (nutrition > 0 && stat != 2) - nutrition = max (0, nutrition - HUNGER_FACTOR) + nutrition = max (0, nutrition - species.hunger_factor) if (nutrition > 450) if(overeatduration < 600) //capped so people don't take forever to unfat @@ -1303,7 +1303,7 @@ var/base_temperature = species.body_temperature if(base_temperature == null) //some species don't have a set metabolic temperature base_temperature = (species.heat_level_1 + species.cold_level_1)/2 - + var/temp_step if (bodytemperature >= base_temperature) temp_step = (species.heat_level_1 - base_temperature)/4 diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 0677171f05f..6451d847000 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -30,7 +30,9 @@ var/mob_size = MOB_MEDIUM var/show_ssd = "fast asleep" var/virus_immune - var/short_sighted + var/short_sighted // Permanent weldervision. + var/blood_volume = 500 // Initial blood volume. + var/hunger_factor = 0.05 // Multiplier for hunger. // Language/culture vars. var/default_language = "Galactic Common" // Default language is used when 'say' is used without modifiers. diff --git a/code/modules/mob/living/carbon/human/species/station/seromi.dm b/code/modules/mob/living/carbon/human/species/station/seromi.dm index 40fd5c63b82..54a7f37f0f4 100644 --- a/code/modules/mob/living/carbon/human/species/station/seromi.dm +++ b/code/modules/mob/living/carbon/human/species/station/seromi.dm @@ -30,6 +30,8 @@ holder_type = /obj/item/weapon/holder/human short_sighted = 1 gluttonous = 1 + blood_volume = 300 + hunger_factor = 1.2 spawn_flags = CAN_JOIN | IS_WHITELISTED appearance_flags = HAS_HAIR_COLOR | HAS_SKIN_COLOR | HAS_EYE_COLOR diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 8fa5c1247a2..b7a66b68420 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -385,4 +385,4 @@ /mob/living/carbon/slime/cannot_use_vents() if(Victim) return "You cannot ventcrawl while feeding." - ..() + ..() diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm index 798fbe52c17..25831b24332 100644 --- a/code/modules/organs/blood.dm +++ b/code/modules/organs/blood.dm @@ -2,13 +2,13 @@ BLOOD SYSTEM ****************************************************/ //Blood levels -var/const/BLOOD_VOLUME_SAFE = 501 -var/const/BLOOD_VOLUME_OKAY = 336 -var/const/BLOOD_VOLUME_BAD = 224 -var/const/BLOOD_VOLUME_SURVIVE = 122 +var/const/BLOOD_VOLUME_SAFE = 85 +var/const/BLOOD_VOLUME_OKAY = 75 +var/const/BLOOD_VOLUME_BAD = 60 +var/const/BLOOD_VOLUME_SURVIVE = 40 -/mob/living/carbon/human/var/datum/reagents/vessel //Container for blood and BLOOD ONLY. Do not transfer other chems here. -/mob/living/carbon/human/var/var/pale = 0 //Should affect how mob sprite is drawn, but currently doesn't. +/mob/living/carbon/human/var/datum/reagents/vessel // Container for blood and BLOOD ONLY. Do not transfer other chems here. +/mob/living/carbon/human/var/var/pale = 0 // Should affect how mob sprite is drawn, but currently doesn't. //Initializes blood vessels /mob/living/carbon/human/proc/make_blood() @@ -16,13 +16,13 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 if(vessel) return - vessel = new/datum/reagents(600) + vessel = new/datum/reagents(species.blood_volume) vessel.my_atom = src if(!should_have_organ(O_HEART)) //We want the var for safety but we can do without the actual blood. return - vessel.add_reagent("blood",560) + vessel.add_reagent("blood",(species.blood_volume * 0.95)) spawn(1) fixblood() @@ -44,10 +44,10 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 if(stat != DEAD && bodytemperature >= 170) //Dead or cryosleep people do not pump the blood. - var/blood_volume = round(vessel.get_reagent_amount("blood")) + var/blood_volume = round(vessel.get_reagent_amount("blood")/species.blood_volume)*100 // Percentage. //Blood regeneration if there is some space - if(blood_volume < 560 && blood_volume) + if(blood_volume < species.blood_volume && blood_volume) var/datum/reagent/blood/B = locate() in vessel.reagent_list //Grab some blood if(B) // Make sure there's some blood at all if(B.data["donor"] != src) //If it's not theirs, then we look for theirs @@ -205,7 +205,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 var/list/chems = list() chems = params2list(injected.data["trace_chem"]) for(var/C in chems) - src.reagents.add_reagent(C, (text2num(chems[C]) / 560) * amount)//adds trace chemicals to owner's blood + src.reagents.add_reagent(C, (text2num(chems[C]) / species.blood_volume) * amount)//adds trace chemicals to owner's blood reagents.update_total() //Transfers blood from reagents to vessel, respecting blood types compatability. From 86fdd0c86b4ab4f41f31d16a3dd7acc08a122f3b Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Mon, 8 Feb 2016 14:10:08 +1030 Subject: [PATCH 3/6] Fixes for previous. --- code/game/machinery/adv_med.dm | 2 +- code/game/machinery/iv_drip.dm | 2 +- code/game/objects/items/devices/scanners.dm | 10 +- code/modules/mob/living/carbon/carbon.dm | 1 - code/modules/mob/living/carbon/human/human.dm | 7 +- .../mob/living/carbon/human/human_damage.dm | 8 +- .../living/carbon/human/species/species.dm | 2 +- .../carbon/human/species/station/seromi.dm | 2 +- .../simple_animal/borer/borer_powers.dm | 2 +- code/modules/organs/blood.dm | 88 +++++++++--------- code/modules/organs/organ.dm | 2 +- icons/mob/species/seromi/head.dmi | Bin 46286 -> 46712 bytes icons/mob/species/seromi/suit.dmi | Bin 53436 -> 54732 bytes 13 files changed, 64 insertions(+), 62 deletions(-) diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index db56d680a4b..5aa321ca415 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -273,7 +273,7 @@ "stoxin_amount" = H.reagents.get_reagent_amount("stoxin"), "bicaridine_amount" = H.reagents.get_reagent_amount("bicaridine"), "dermaline_amount" = H.reagents.get_reagent_amount("dermaline"), - "blood_amount" = round(H.vessel.get_reagent_amount("blood") / H.species.blood_volume)*100, + "blood_amount" = round((H.vessel.get_reagent_amount("blood") / H.species.blood_volume)*100), "disabilities" = H.sdisabilities, "lung_ruptured" = H.is_lung_ruptured(), "external_organs" = H.organs.Copy(), diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index d694fd5d4ca..d2fa5478cbb 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -110,7 +110,7 @@ return // If the human is losing too much blood, beep. - if(T.vessel.get_reagent_amount("blood") < BLOOD_VOLUME_SAFE) if(prob(5)) + if(((T.vessel.get_reagent_amount("blood")/T.species.blood_volume)*100) < BLOOD_VOLUME_SAFE) visible_message("\The [src] beeps loudly.") var/datum/reagent/B = T.take_blood(beaker,amount) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 63df3158dc1..ef875940adc 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -61,7 +61,7 @@ REAGENT SCANNER user.show_message("Analyzing Results for [M]:") user.show_message("Overall Status: dead") else - user.show_message("Analyzing Results for [M]:\n\t Overall Status: [M.stat > 1 ? "dead" : "[M.health - M.halloss]% healthy"]") + user.show_message("Analyzing Results for [M]:\n\t Overall Status: [M.stat > 1 ? "dead" : "[round(M.health/M.maxHealth)*100]% healthy"]") user.show_message(" Key: Suffocation/Toxin/Burns/Brute", 1) user.show_message(" Damage Specifics: [OX] - [TX] - [BU] - [BR]") user.show_message("Body Temperature: [M.bodytemperature-T0C]°C ([M.bodytemperature*1.8-459.67]°F)", 1) @@ -158,10 +158,10 @@ REAGENT SCANNER user.show_message(text("Internal bleeding detected. Advanced scanner required for location."), 1) break if(M:vessel) - var/blood_volume = round(M:vessel.get_reagent_amount("blood")) - var/blood_percent = round(blood_volume / H.species.blood_volume)*100 - var/blood_type = M.dna.b_type - if(blood_percent <= BLOOD_VOLUME_SAFE && blood_percent > BLOOD_VOLUME_BAD) + var/blood_volume = H.vessel.get_reagent_amount("blood") + var/blood_percent = round((blood_volume / H.species.blood_volume)*100) + var/blood_type = H.dna.b_type + if((blood_percent <= BLOOD_VOLUME_SAFE) && (blood_percent > BLOOD_VOLUME_BAD)) user.show_message("Warning: Blood Level LOW: [blood_percent]% [blood_volume]cl. Type: [blood_type]") else if(blood_percent <= BLOOD_VOLUME_BAD) user.show_message("Warning: Blood Level CRITICAL: [blood_percent]% [blood_volume]cl. Type: [blood_type]") diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index c799eabf953..6b9cbf02589 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -4,7 +4,6 @@ ingested = new/datum/reagents/metabolism(1000, src, CHEM_INGEST) touching = new/datum/reagents/metabolism(1000, src, CHEM_TOUCH) reagents = bloodstr - ..() /mob/living/carbon/Life() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index a0636f453f4..94ee52c8221 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -895,7 +895,7 @@ /mob/living/carbon/human/revive() if(should_have_organ(O_HEART)) - vessel.add_reagent("blood",560-vessel.total_volume) + vessel.add_reagent("blood",species.blood_volume-vessel.total_volume) fixblood() species.create_organs(src) // Reset our organs/limbs. @@ -1113,7 +1113,10 @@ spawn(0) regenerate_icons() - vessel.add_reagent("blood",560-vessel.total_volume) + if(vessel.total_volume < species.blood_volume) + vessel.add_reagent("blood", species.blood_volume - vessel.total_volume) + else if(vessel.total_volume > species.blood_volume) + vessel.remove_reagent("blood", vessel.total_volume - species.blood_volume) fixblood() // Rebuild the HUD. If they aren't logged in then login() should reinstantiate it for them. diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 53d62dbea0e..e0451046ae5 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -318,10 +318,10 @@ In most cases it makes more sense to use apply_damage() instead! And make sure t This function restores the subjects blood to max. */ /mob/living/carbon/human/proc/restore_blood() - if(should_have_organ(O_HEART)) - var/blood_volume = vessel.get_reagent_amount("blood") - vessel.add_reagent("blood",560.0-blood_volume) - + if(!should_have_organ(O_HEART)) + return + if(vessel.total_volume < species.blood_volume) + vessel.add_reagent("blood", species.blood_volume - vessel.total_volume) /* This function restores all organs. diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 6451d847000..57eaf54a431 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -31,7 +31,7 @@ var/show_ssd = "fast asleep" var/virus_immune var/short_sighted // Permanent weldervision. - var/blood_volume = 500 // Initial blood volume. + var/blood_volume = 560 // Initial blood volume. var/hunger_factor = 0.05 // Multiplier for hunger. // Language/culture vars. diff --git a/code/modules/mob/living/carbon/human/species/station/seromi.dm b/code/modules/mob/living/carbon/human/species/station/seromi.dm index 54a7f37f0f4..faa27d93617 100644 --- a/code/modules/mob/living/carbon/human/species/station/seromi.dm +++ b/code/modules/mob/living/carbon/human/species/station/seromi.dm @@ -30,7 +30,7 @@ holder_type = /obj/item/weapon/holder/human short_sighted = 1 gluttonous = 1 - blood_volume = 300 + blood_volume = 400 hunger_factor = 1.2 spawn_flags = CAN_JOIN | IS_WHITELISTED diff --git a/code/modules/mob/living/simple_animal/borer/borer_powers.dm b/code/modules/mob/living/simple_animal/borer/borer_powers.dm index 0d539d44fc5..a95a22b948a 100644 --- a/code/modules/mob/living/simple_animal/borer/borer_powers.dm +++ b/code/modules/mob/living/simple_animal/borer/borer_powers.dm @@ -350,6 +350,6 @@ visible_message("With a hideous, rattling moan, [src] shudders back to life!") rejuvenate() - vessel.add_reagent("blood",560-vessel.total_volume) + restore_blood() fixblood() update_canmove() \ No newline at end of file diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm index 25831b24332..1bae132aed9 100644 --- a/code/modules/organs/blood.dm +++ b/code/modules/organs/blood.dm @@ -1,7 +1,7 @@ /**************************************************** BLOOD SYSTEM ****************************************************/ -//Blood levels +//Blood levels. These are percentages based on the species blood_volume far. var/const/BLOOD_VOLUME_SAFE = 85 var/const/BLOOD_VOLUME_OKAY = 75 var/const/BLOOD_VOLUME_BAD = 60 @@ -22,7 +22,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 40 if(!should_have_organ(O_HEART)) //We want the var for safety but we can do without the actual blood. return - vessel.add_reagent("blood",(species.blood_volume * 0.95)) + vessel.add_reagent("blood",species.blood_volume) spawn(1) fixblood() @@ -44,10 +44,11 @@ var/const/BLOOD_VOLUME_SURVIVE = 40 if(stat != DEAD && bodytemperature >= 170) //Dead or cryosleep people do not pump the blood. - var/blood_volume = round(vessel.get_reagent_amount("blood")/species.blood_volume)*100 // Percentage. + var/blood_volume_raw = vessel.get_reagent_amount("blood") + var/blood_volume = round((blood_volume_raw/species.blood_volume)*100) // Percentage. //Blood regeneration if there is some space - if(blood_volume < species.blood_volume && blood_volume) + if(blood_volume_raw < species.blood_volume) var/datum/reagent/blood/B = locate() in vessel.reagent_list //Grab some blood if(B) // Make sure there's some blood at all if(B.data["donor"] != src) //If it's not theirs, then we look for theirs @@ -75,46 +76,45 @@ var/const/BLOOD_VOLUME_SURVIVE = 40 blood_volume *= 0.3 //Effects of bloodloss - switch(blood_volume) - if(BLOOD_VOLUME_SAFE to 10000) - if(pale) - pale = 0 - update_body() - if(BLOOD_VOLUME_OKAY to BLOOD_VOLUME_SAFE) - if(!pale) - pale = 1 - update_body() - var/word = pick("dizzy","woosey","faint") - src << "\red You feel [word]" - if(prob(1)) - var/word = pick("dizzy","woosey","faint") - src << "\red You feel [word]" - if(oxyloss < 20) - oxyloss += 3 - if(BLOOD_VOLUME_BAD to BLOOD_VOLUME_OKAY) - if(!pale) - pale = 1 - update_body() - eye_blurry = max(eye_blurry,6) - if(oxyloss < 50) - oxyloss += 10 - oxyloss += 1 - if(prob(15)) - Paralyse(rand(1,3)) - var/word = pick("dizzy","woosey","faint") - src << "\red You feel extremely [word]" - if(BLOOD_VOLUME_SURVIVE to BLOOD_VOLUME_BAD) - oxyloss += 5 - toxloss += 3 - if(prob(15)) - var/word = pick("dizzy","woosey","faint") - src << "\red You feel extremely [word]" - if(0 to BLOOD_VOLUME_SURVIVE) - // There currently is a strange bug here. If the mob is not below -100 health - // when death() is called, apparently they will be just fine, and this way it'll - // spam deathgasp. Adjusting toxloss ensures the mob will stay dead. - toxloss += 300 // just to be safe! - death() + if(blood_volume >= BLOOD_VOLUME_SAFE) + if(pale) + pale = 0 + update_body() + else if(blood_volume >= BLOOD_VOLUME_OKAY) + if(!pale) + pale = 1 + update_body() + var/word = pick("dizzy","woosey","faint") + src << "\red You feel [word]" + if(prob(1)) + var/word = pick("dizzy","woosey","faint") + src << "\red You feel [word]" + if(oxyloss < 20) + oxyloss += 3 + else if(blood_volume >= BLOOD_VOLUME_BAD) + if(!pale) + pale = 1 + update_body() + eye_blurry = max(eye_blurry,6) + if(oxyloss < 50) + oxyloss += 10 + oxyloss += 1 + if(prob(15)) + Paralyse(rand(1,3)) + var/word = pick("dizzy","woosey","faint") + src << "\red You feel extremely [word]" + else if(blood_volume >= BLOOD_VOLUME_SURVIVE) + oxyloss += 5 + toxloss += 3 + if(prob(15)) + var/word = pick("dizzy","woosey","faint") + src << "\red You feel extremely [word]" + else + // There currently is a strange bug here. If the mob is not below -100 health + // when death() is called, apparently they will be just fine, and this way it'll + // spam deathgasp. Adjusting toxloss ensures the mob will stay dead. + toxloss += 300 // just to be safe! + death() // Without enough blood you slowly go hungry. if(blood_volume < BLOOD_VOLUME_SAFE) diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index 8b0f22445cf..27b4e74d406 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -117,7 +117,7 @@ var/list/organ_cache = list() if(germ_level >= INFECTION_LEVEL_THREE) die() - else if(owner.bodytemperature >= 170) //cryo stops germs from moving and doing their bad stuffs + else if(owner && owner.bodytemperature >= 170) //cryo stops germs from moving and doing their bad stuffs //** Handle antibiotics and curing infections handle_antibiotics() handle_rejection() diff --git a/icons/mob/species/seromi/head.dmi b/icons/mob/species/seromi/head.dmi index a931fc2d1f8b48d9247aaf6e09fb6665e8a6dd89..7305a6e216ecf6518ce0f5498cb03889ad159e5b 100644 GIT binary patch delta 7693 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 Y3tM(WU4yiU0YcNg|46gyo?X=c1A&fLGynhq delta 7234 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 XI(^}~)Gu?01}<4i#kWOo^uPQc%)7L> delta 13495 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 U;6D#Y@xbS)lKP`E#h35@4^b~ Date: Mon, 8 Feb 2016 20:21:04 +1030 Subject: [PATCH 4/6] Added several mobsize and Teshari checks to reagent processing. --- code/__defines/chemistry.dm | 1 + code/game/objects/structures.dm | 2 +- .../carbon/human/species/station/seromi.dm | 1 + .../Chemistry-Reagents-Core.dm | 9 ++++-- .../Chemistry-Reagents-Dispenser.dm | 5 ++- .../Chemistry-Reagents-Food-Drinks.dm | 11 +++++-- .../Chemistry-Reagents-Toxins.dm | 32 +++++++++++++------ code/modules/reagents/reagent_containers.dm | 2 +- 8 files changed, 46 insertions(+), 17 deletions(-) diff --git a/code/__defines/chemistry.dm b/code/__defines/chemistry.dm index 95e980243f9..4fbdebf6f11 100644 --- a/code/__defines/chemistry.dm +++ b/code/__defines/chemistry.dm @@ -23,6 +23,7 @@ #define IS_UNATHI 4 #define IS_TAJARA 5 #define IS_XENOS 6 +#define IS_TESHARI 7 #define CE_STABLE "stable" // Inaprovaline #define CE_ANTIBIOTIC "antibiotic" // Spaceacilin diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 5dea37ef51c..68c774c91f3 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -102,7 +102,7 @@ usr.visible_message("[user] starts climbing onto \the [src]!") climbers |= user - if(!do_after(user,50)) + if(!do_after(user,(issmall(user) ? 30 : 50))) climbers -= user return diff --git a/code/modules/mob/living/carbon/human/species/station/seromi.dm b/code/modules/mob/living/carbon/human/species/station/seromi.dm index faa27d93617..4b4058b9d51 100644 --- a/code/modules/mob/living/carbon/human/species/station/seromi.dm +++ b/code/modules/mob/living/carbon/human/species/station/seromi.dm @@ -15,6 +15,7 @@ base_color = "#001144" tail = "seromitail" tail_hair = "feathers" + reagent_tag = IS_TESHARI icobase = 'icons/mob/human_races/r_seromi.dmi' deform = 'icons/mob/human_races/r_seromi.dmi' diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm index 8a84af11f38..20225508c65 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm @@ -34,9 +34,13 @@ B.blood_DNA["UNKNOWN DNA STRUCTURE"] = "X*" /datum/reagent/blood/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) - if(dose > 5) + + var/effective_dose = dose + if(issmall(M)) effective_dose *= 2 + + if(effective_dose > 5) M.adjustToxLoss(removed) - if(dose > 15) + if(effective_dose > 15) M.adjustToxLoss(removed) if(data && data["virus2"]) var/list/vlist = data["virus2"] @@ -160,6 +164,7 @@ return /datum/reagent/fuel/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + if(issmall(M)) removed *= 2 M.adjustToxLoss(2 * removed) /datum/reagent/fuel/touch_mob(var/mob/living/L, var/amount) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm index ccdb834ef0f..26b58eed311 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm @@ -75,12 +75,13 @@ L.adjust_fire_stacks(amount / 15) /datum/reagent/ethanol/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + if(issmall(M)) removed *= 2 M.adjustToxLoss(removed * 2 * toxicity) return /datum/reagent/ethanol/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) + if(issmall(M)) removed *= 2 M.nutrition += nutriment_factor * removed - var/strength_mod = 1 if(alien == IS_SKRELL) strength_mod *= 5 @@ -237,6 +238,7 @@ color = "#C7C7C7" /datum/reagent/radium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + if(issmall(M)) removed *= 2 M.apply_effect(10 * removed, IRRADIATE, 0) // Radium may increase your chances to cure a disease if(M.virus2.len) for(var/ID in M.virus2) @@ -272,6 +274,7 @@ var/meltdose = 10 // How much is needed to melt /datum/reagent/acid/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + if(issmall(M)) removed *= 2 M.take_organ_damage(0, removed * power * 2) /datum/reagent/acid/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) // This is the most interesting diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm index 4b5580fed5c..498dcbed103 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -17,6 +17,7 @@ affect_ingest(M, alien, removed) /datum/reagent/nutriment/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) + if(issmall(M)) removed *= 2 // Small bodymass, more effect from lower volume. M.heal_organ_damage(0.5 * removed, 0) M.nutrition += nutriment_factor * removed // For hunger and fatness M.add_chemical_effect(CE_BLOODRESTORE, 4 * removed) @@ -27,9 +28,13 @@ color = "#440000" /datum/reagent/nutriment/protein/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) - if(alien && alien == IS_SKRELL) - M.adjustToxLoss(0.5 * removed) - return + switch(alien) + if(IS_SKRELL) + M.adjustToxLoss(0.5 * removed) + return + if(IS_TESHARI) + ..(M, alien, removed*1.2) // Teshari get a bit more nutrition from meat. + return ..() /datum/reagent/nutriment/protein/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm index d56183619e6..112887fa5d4 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm @@ -11,6 +11,7 @@ /datum/reagent/toxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(strength && alien != IS_DIONA) + if(issmall(M)) removed *= 2 // Small bodymass, more effect from lower volume. M.adjustToxLoss(strength * removed) /datum/reagent/toxin/plasticide @@ -281,12 +282,17 @@ /datum/reagent/soporific/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(alien == IS_DIONA) return - if(dose < 1) - if(dose == metabolism * 2 || prob(5)) + + var/effective_dose = dose + if(issmall(M)) + effective_dose *= 2 + + if(effective_dose < 1) + if(effective_dose == metabolism * 2 || prob(5)) M.emote("yawn") - else if(dose < 1.5) + else if(effective_dose < 1.5) M.eye_blurry = max(M.eye_blurry, 10) - else if(dose < 5) + else if(effective_dose < 5) if(prob(50)) M.Weaken(2) M.drowsyness = max(M.drowsyness, 20) @@ -306,16 +312,21 @@ /datum/reagent/chloralhydrate/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(alien == IS_DIONA) return - if(dose == metabolism) + + var/effective_dose = dose + if(issmall(M)) + effective_dose *= 2 + + if(effective_dose == metabolism) M.confused += 2 M.drowsyness += 2 - else if(dose < 2) + else if(effective_dose < 2) M.Weaken(30) M.eye_blurry = max(M.eye_blurry, 10) else M.sleeping = max(M.sleeping, 30) - if(dose > 1) + if(effective_dose > 1) M.adjustToxLoss(removed) /datum/reagent/chloralhydrate/beer2 //disguised as normal beer for use by emagged brobots @@ -426,12 +437,15 @@ if(alien == IS_DIONA) return M.druggy = max(M.druggy, 30) - if(dose < 1) + + var/effective_dose = dose + if(issmall(M)) effective_dose *= 2 + if(effective_dose < 1) M.apply_effect(3, STUTTER) M.make_dizzy(5) if(prob(5)) M.emote(pick("twitch", "giggle")) - else if(dose < 2) + else if(effective_dose < 2) M.apply_effect(3, STUTTER) M.make_jittery(5) M.make_dizzy(5) diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 3972213048e..f98d90b248e 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -107,7 +107,7 @@ return self_feed_message(user) - reagents.trans_to_mob(user, amount_per_transfer_from_this, CHEM_INGEST) + reagents.trans_to_mob(user, issmall(user) ? ceil(amount_per_transfer_from_this/2) : amount_per_transfer_from_this, CHEM_INGEST) feed_sound(user) return 1 else From e1460941a9ef998a7445f761e3741f8a2f886098 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Mon, 8 Feb 2016 20:35:04 +1030 Subject: [PATCH 5/6] Changelog. --- html/changelogs/Zuhayr-tesharireagents.yml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 html/changelogs/Zuhayr-tesharireagents.yml diff --git a/html/changelogs/Zuhayr-tesharireagents.yml b/html/changelogs/Zuhayr-tesharireagents.yml new file mode 100644 index 00000000000..5ed020fca4d --- /dev/null +++ b/html/changelogs/Zuhayr-tesharireagents.yml @@ -0,0 +1,9 @@ +author: N3X15 +delete-after: True +changes: + - rscadd: "Small species now take smaller bites/gulps from food and drink." + - rscadd: "Small species are now effected by alchol and toxins twice as much." + - rscadd: "blood_volume is now a species-level var and Teshari have lowered blood volume." + - rscadd: "Hunger is a species var and Teshari get hungry faster." + - rscadd: "Small mobs have a reduced climb delay." + - rscadd: "Teshari gain more nutrition from meat." From 5310a6dd4f8c469eef9ed4095a7500b177f14afd Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Mon, 8 Feb 2016 21:21:52 +1030 Subject: [PATCH 6/6] Update Zuhayr-tesharireagents.yml --- html/changelogs/Zuhayr-tesharireagents.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html/changelogs/Zuhayr-tesharireagents.yml b/html/changelogs/Zuhayr-tesharireagents.yml index 5ed020fca4d..4997d3a131b 100644 --- a/html/changelogs/Zuhayr-tesharireagents.yml +++ b/html/changelogs/Zuhayr-tesharireagents.yml @@ -1,4 +1,4 @@ -author: N3X15 +author: Zuhayr delete-after: True changes: - rscadd: "Small species now take smaller bites/gulps from food and drink."