FBP Internal Components (#7445)

* Starts work on FBP components

* Complete

* Map

* Tweakening.

* P r e c i s i o n

* P r e c i s i o n Engineering
This commit is contained in:
Mechoid
2020-08-20 18:39:46 -07:00
committed by GitHub
parent 42e23055a8
commit 85d13382df
25 changed files with 340 additions and 54 deletions
@@ -209,32 +209,37 @@
if(stat == DEAD) return
to_chat(src, "<span class='notice'>Performing self-diagnostic, please wait...</span>")
sleep(50)
var/output = "<span class='notice'>Self-Diagnostic Results:\n</span>"
output += "Internal Temperature: [convert_k2c(bodytemperature)] Degrees Celsius\n"
spawn(50)
var/output = "<span class='notice'>Self-Diagnostic Results:\n</span>"
output += "Current Battery Charge: [nutrition]\n"
output += "Internal Temperature: [convert_k2c(bodytemperature)] Degrees Celsius\n"
var/toxDam = getToxLoss()
if(toxDam)
output += "System Instability: <span class='warning'>[toxDam > 25 ? "Severe" : "Moderate"]</span>. Seek charging station for cleanup.\n"
else
output += "System Instability: <span style='color:green;'>OK</span>\n"
if(isSynthetic())
output += "Current Battery Charge: [nutrition]\n"
for(var/obj/item/organ/external/EO in organs)
if(EO.brute_dam || EO.burn_dam)
output += "[EO.name] - <span class='warning'>[EO.burn_dam + EO.brute_dam > ROBOLIMB_REPAIR_CAP ? "Heavy Damage" : "Light Damage"]</span>\n"
else
output += "[EO.name] - <span style='color:green;'>OK</span>\n"
if(isSynthetic())
var/toxDam = getToxLoss()
if(toxDam)
output += "System Instability: <span class='warning'>[toxDam > 25 ? "Severe" : "Moderate"]</span>. Seek charging station for cleanup.\n"
else
output += "System Instability: <span style='color:green;'>OK</span>\n"
for(var/obj/item/organ/IO in internal_organs)
if(IO.damage)
output += "[IO.name] - <span class='warning'>[IO.damage > 10 ? "Heavy Damage" : "Light Damage"]</span>\n"
else
output += "[IO.name] - <span style='color:green;'>OK</span>\n"
for(var/obj/item/organ/external/EO in organs)
if(EO.robotic >= ORGAN_ASSISTED)
if(EO.brute_dam || EO.burn_dam)
output += "[EO.name] - <span class='warning'>[EO.burn_dam + EO.brute_dam > ROBOLIMB_REPAIR_CAP ? "Heavy Damage" : "Light Damage"]</span>\n"
else
output += "[EO.name] - <span style='color:green;'>OK</span>\n"
to_chat(src,output)
for(var/obj/item/organ/IO in internal_organs)
if(IO.robotic >= ORGAN_ASSISTED)
if(IO.damage)
output += "[IO.name] - <span class='warning'>[IO.damage > 10 ? "Heavy Damage" : "Light Damage"]</span>\n"
else
output += "[IO.name] - <span style='color:green;'>OK</span>\n"
to_chat(src,output)
/mob/living/carbon/human
var/next_sonar_ping = 0
+14 -11
View File
@@ -777,9 +777,12 @@
if (species.body_temperature == null)
return //this species doesn't have metabolic thermoregulation
// FBPs will overheat, prosthetic limbs are fine.
if(robobody_count)
bodytemperature += round(robobody_count*1.75)
// FBPs will overheat when alive, prosthetic limbs are fine.
if(stat != DEAD && robobody_count)
bodytemperature += round(robobody_count*1.15)
var/obj/item/organ/internal/robotic/heatsink/HS = internal_organs_by_name[O_HEATSINK]
if(!HS || HS.is_broken())
bodytemperature += round(robobody_count*0.5)
var/body_temperature_difference = species.body_temperature - bodytemperature
@@ -898,14 +901,14 @@
if(reagents)
chem_effects.Cut()
if(!isSynthetic())
if(touching)
touching.metabolize()
if(ingested)
ingested.metabolize()
if(bloodstr)
bloodstr.metabolize()
if(touching)
touching.metabolize()
if(ingested)
ingested.metabolize()
if(bloodstr)
bloodstr.metabolize()
if(!isSynthetic())
var/total_phoronloss = 0
for(var/obj/item/I in src)
@@ -1429,7 +1432,7 @@
if(prob(5))
to_chat(src, "<span class='danger'>You lose directional control!</span>")
Confuse(10)
if (getToxLoss() >= 45)
if (getToxLoss() >= 45 && !isSynthetic())
spawn vomit()
@@ -41,6 +41,7 @@
var/show_ssd = "fast asleep"
var/virus_immune
var/short_sighted // Permanent weldervision.
var/blood_name = "blood" // Name for the species' blood.
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
@@ -63,6 +63,14 @@
else
return blood_color
/datum/species/proc/get_blood_name(var/mob/living/carbon/human/H)
if(H)
var/datum/robolimb/company = H.isSynthetic()
if(company)
return company.blood_name
else
return blood_name
/datum/species/proc/get_virus_immune(var/mob/living/carbon/human/H)
return ((H && H.isSynthetic()) ? 1 : virus_immune)
@@ -34,6 +34,8 @@ var/datum/species/shapeshifter/promethean/prometheans
secondary_langs = list(LANGUAGE_PROMETHEAN, LANGUAGE_SOL_COMMON) // For some reason, having this as their species language does not allow it to be chosen.
assisted_langs = list(LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX) // Prometheans are weird, let's just assume they can use basically any language.
blood_name = "gelatinous ooze"
breath_type = null
poison_type = null