mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-24 21:57:53 +01:00
Full Eye and Robot Organ Implementation
Tested work to implement eyes ad internal organs and the charpref selectable robotic organ replacements for heart and eyes, both for assisted and fully mechanical variants!
This commit is contained in:
@@ -60,7 +60,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
|
||||
if(heart.min_bruised_damage to heart.min_broken_damage)
|
||||
blood_volume *= 0.6
|
||||
if(heart.min_broken_damage to INFINITY)
|
||||
blood_volume *= 0.4
|
||||
blood_volume *= 0.3
|
||||
|
||||
//Effects of bloodloss
|
||||
switch(blood_volume)
|
||||
@@ -93,7 +93,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
|
||||
src << "\red You feel extremely [word]"
|
||||
if(BLOOD_VOLUME_SURVIVE to BLOOD_VOLUME_BAD)
|
||||
oxyloss += 5
|
||||
toxloss += 1
|
||||
toxloss += 3
|
||||
if(prob(15))
|
||||
var/word = pick("dizzy","woosey","faint")
|
||||
src << "\red You feel extremely [word]"
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
|
||||
/mob/living/carbon/human/var/list/organs = list()
|
||||
/mob/living/carbon/human/var/list/organs_by_name = list() // map organ names to organs
|
||||
/mob/living/carbon/human/var/list/internal_organs_by_name = list() // so internal organs have less ickiness too
|
||||
|
||||
//Creates and initializes and connects external and internal organs
|
||||
/mob/living/carbon/human/proc/make_organs()
|
||||
@@ -51,12 +52,12 @@
|
||||
organs_by_name["l_foot"] = new/datum/organ/external/l_foot(organs_by_name["l_leg"])
|
||||
organs_by_name["r_foot"] = new/datum/organ/external/r_foot(organs_by_name["r_leg"])
|
||||
|
||||
new/datum/organ/internal/heart(src)
|
||||
new/datum/organ/internal/lungs(src)
|
||||
new/datum/organ/internal/liver(src)
|
||||
new/datum/organ/internal/kidney(src)
|
||||
new/datum/organ/internal/brain(src)
|
||||
new/datum/organ/internal/eyes(src)
|
||||
internal_organs_by_name["heart"] = new/datum/organ/internal/heart(src)
|
||||
internal_organs_by_name["lungs"] = new/datum/organ/internal/lungs(src)
|
||||
internal_organs_by_name["liver"] = new/datum/organ/internal/liver(src)
|
||||
internal_organs_by_name["kidney"] = new/datum/organ/internal/kidney(src)
|
||||
internal_organs_by_name["brain"] = new/datum/organ/internal/brain(src)
|
||||
internal_organs_by_name["eyes"] = new/datum/organ/internal/eyes(src)
|
||||
|
||||
for(var/name in organs_by_name)
|
||||
organs += organs_by_name[name]
|
||||
|
||||
@@ -32,23 +32,47 @@
|
||||
|
||||
/datum/organ/internal/proc/take_damage(amount, var/silent=0)
|
||||
if(src.robotic == 2)
|
||||
src.damage += amount * 0.8
|
||||
src.damage += amount
|
||||
src.damage += (amount * 0.8)
|
||||
else
|
||||
src.damage += amount
|
||||
|
||||
var/datum/organ/external/parent = owner.get_organ(parent_organ)
|
||||
var/datum/organ/internal/eyes/E
|
||||
var/datum/organ/internal/heart/H
|
||||
if (!silent)
|
||||
owner.custom_pain("Something inside your [parent.display_name] hurts a lot.", 1)
|
||||
if(istype(E))
|
||||
owner.custom_pain("Your eyes burn like mad!", 1)
|
||||
if(istype(H))
|
||||
owner.custom_pain("You feel a sudden, stabbing pain inside of your [parent.display_name]!", 1)
|
||||
else owner.custom_pain("Something inside your [parent.display_name] hurts a lot.", 1)
|
||||
|
||||
|
||||
/datum/organ/internal/proc/emp_act(severity)
|
||||
if(src.robotic == 1)
|
||||
take_damage(15, 0)
|
||||
if(severity == 2)
|
||||
take_damage(5, 0)
|
||||
if(src.robotic == 2)
|
||||
take_damage(30, 0)
|
||||
if(severity == 2)
|
||||
take_damage(15, 0)
|
||||
switch(robotic)
|
||||
if(0)
|
||||
return
|
||||
if(1)
|
||||
switch (severity)
|
||||
if (1.0)
|
||||
take_damage(20,0)
|
||||
return
|
||||
if (2.0)
|
||||
take_damage(7,0)
|
||||
return
|
||||
if(3.0)
|
||||
take_damage(3,0)
|
||||
return
|
||||
if(2)
|
||||
switch (severity)
|
||||
if (1.0)
|
||||
take_damage(40,0)
|
||||
return
|
||||
if (2.0)
|
||||
take_damage(15,0)
|
||||
return
|
||||
if(3.0)
|
||||
take_damage(10,0)
|
||||
return
|
||||
|
||||
/datum/organ/internal/proc/mechanize() //Being used to make robutt hearts, etc
|
||||
robotic = 2
|
||||
@@ -130,9 +154,7 @@
|
||||
parent_organ = "head"
|
||||
|
||||
process() //Eye damage replaces the old eye_stat var.
|
||||
if(damage > min_bruised_damage)
|
||||
if(damage > min_broken_damage)
|
||||
owner.client.screen += global_hud.darkMask
|
||||
owner.eye_blind = 20
|
||||
else
|
||||
owner.client.screen += global_hud.vimpaired
|
||||
if(is_bruised())
|
||||
owner.eye_blurry = 20
|
||||
if(is_broken())
|
||||
owner.eye_blind = 20
|
||||
|
||||
Reference in New Issue
Block a user