mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-26 06:29:23 +01:00
[MIRROR] Fermichem 2.4 - C2 medicine recipe adaptations and atunements to the new mechanics (#3701)
* Fermichem 2.4 - C2 medicine recipe adaptations and atunements to the new mechanics * Update human_defense.dm Co-authored-by: Thalpy <33956696+Thalpy@users.noreply.github.com> Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
This commit is contained in:
co-authored by
Thalpy
Gandalf2k15
parent
9b408206ec
commit
4032c73891
@@ -49,7 +49,7 @@
|
||||
/mob/living/brain/get_ear_protection()//no ears
|
||||
return 2
|
||||
|
||||
/mob/living/brain/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0)
|
||||
/mob/living/brain/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /atom/movable/screen/fullscreen/flash, length = 25)
|
||||
return // no eyes, no flashing
|
||||
|
||||
/mob/living/brain/can_be_revived()
|
||||
|
||||
@@ -597,7 +597,7 @@
|
||||
return embeds
|
||||
|
||||
|
||||
/mob/living/carbon/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0)
|
||||
/mob/living/carbon/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /atom/movable/screen/fullscreen/flash, length = 25)
|
||||
var/obj/item/organ/eyes/eyes = getorganslot(ORGAN_SLOT_EYES)
|
||||
if(!eyes) //can't flash what can't see!
|
||||
return
|
||||
|
||||
@@ -148,8 +148,6 @@
|
||||
if(get_bodypart(BODY_ZONE_HEAD) && !getorgan(/obj/item/organ/brain))
|
||||
. += "<span class='deadsay'>It appears that [t_his] brain is missing...</span>"
|
||||
|
||||
var/temp = getBruteLoss() //no need to calculate each of these twice
|
||||
|
||||
var/list/msg = list()
|
||||
|
||||
var/list/missing = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)
|
||||
@@ -202,6 +200,11 @@
|
||||
msg += "[t_He] [p_do()]n't seem all there.\n"
|
||||
|
||||
if(!(user == src && src.hal_screwyhud == SCREWYHUD_HEALTHY)) //fake healthy
|
||||
var/temp
|
||||
if(user == src && src.hal_screwyhud == SCREWYHUD_CRIT)//fake damage
|
||||
temp = 50
|
||||
else
|
||||
temp = getBruteLoss()
|
||||
if(temp)
|
||||
if(temp < 25)
|
||||
msg += "[t_He] [t_has] minor bruising.\n"
|
||||
|
||||
@@ -879,11 +879,16 @@
|
||||
hud_used.healthdoll.cut_overlays()
|
||||
if(stat != DEAD)
|
||||
hud_used.healthdoll.icon_state = "healthdoll_OVERLAY"
|
||||
for(var/X in bodyparts)
|
||||
var/obj/item/bodypart/BP = X
|
||||
var/damage = BP.burn_dam + BP.brute_dam
|
||||
var/comparison = (BP.max_damage/5)
|
||||
for(var/obj/item/bodypart/body_part as anything in bodyparts)
|
||||
var/icon_num = 0
|
||||
//Hallucinations
|
||||
if(body_part.type in hal_screwydoll)
|
||||
icon_num = hal_screwydoll[body_part.type]
|
||||
hud_used.healthdoll.add_overlay(mutable_appearance('icons/hud/screen_gen.dmi', "[body_part.body_zone][icon_num]"))
|
||||
continue
|
||||
//Not hallucinating
|
||||
var/damage = body_part.burn_dam + body_part.brute_dam
|
||||
var/comparison = (body_part.max_damage/5)
|
||||
if(damage)
|
||||
icon_num = 1
|
||||
if(damage > (comparison))
|
||||
@@ -897,7 +902,7 @@
|
||||
if(hal_screwyhud == SCREWYHUD_HEALTHY)
|
||||
icon_num = 0
|
||||
if(icon_num)
|
||||
hud_used.healthdoll.add_overlay(mutable_appearance('icons/hud/screen_gen.dmi', "[BP.body_zone][icon_num]"))
|
||||
hud_used.healthdoll.add_overlay(mutable_appearance('icons/hud/screen_gen.dmi', "[body_part.body_zone][icon_num]"))
|
||||
for(var/t in get_missing_limbs()) //Missing limbs
|
||||
hud_used.healthdoll.add_overlay(mutable_appearance('icons/hud/screen_gen.dmi', "[t]6"))
|
||||
for(var/t in get_disabled_limbs()) //Disabled limbs
|
||||
|
||||
@@ -688,18 +688,17 @@
|
||||
|
||||
var/list/missing = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)
|
||||
|
||||
for(var/X in bodyparts)
|
||||
var/obj/item/bodypart/LB = X
|
||||
missing -= LB.body_zone
|
||||
if(LB.is_pseudopart) //don't show injury text for fake bodyparts; ie chainsaw arms or synthetic armblades
|
||||
for(var/obj/item/bodypart/body_part as anything in bodyparts)
|
||||
missing -= body_part.body_zone
|
||||
if(body_part.is_pseudopart) //don't show injury text for fake bodyparts; ie chainsaw arms or synthetic armblades
|
||||
continue
|
||||
var/self_aware = FALSE
|
||||
if(HAS_TRAIT(src, TRAIT_SELF_AWARE))
|
||||
self_aware = TRUE
|
||||
var/limb_max_damage = LB.max_damage
|
||||
var/limb_max_damage = body_part.max_damage
|
||||
var/status = ""
|
||||
var/brutedamage = LB.brute_dam
|
||||
var/burndamage = LB.burn_dam
|
||||
var/brutedamage = body_part.brute_dam
|
||||
var/burndamage = body_part.burn_dam
|
||||
if(hallucination)
|
||||
if(prob(30))
|
||||
brutedamage += rand(30,40)
|
||||
@@ -712,21 +711,24 @@
|
||||
status = "no damage"
|
||||
|
||||
else
|
||||
if(body_part.type in hal_screwydoll)//Are we halucinating?
|
||||
brutedamage = (hal_screwydoll[body_part.type] * 0.2)*limb_max_damage
|
||||
|
||||
if(brutedamage > 0)
|
||||
status = LB.light_brute_msg
|
||||
status = body_part.light_brute_msg
|
||||
if(brutedamage > (limb_max_damage*0.4))
|
||||
status = LB.medium_brute_msg
|
||||
status = body_part.medium_brute_msg
|
||||
if(brutedamage > (limb_max_damage*0.8))
|
||||
status = LB.heavy_brute_msg
|
||||
status = body_part.heavy_brute_msg
|
||||
if(brutedamage > 0 && burndamage > 0)
|
||||
status += " and "
|
||||
|
||||
if(burndamage > (limb_max_damage*0.8))
|
||||
status += LB.heavy_burn_msg
|
||||
status += body_part.heavy_burn_msg
|
||||
else if(burndamage > (limb_max_damage*0.2))
|
||||
status += LB.medium_burn_msg
|
||||
status += body_part.medium_burn_msg
|
||||
else if(burndamage > 0)
|
||||
status += LB.light_burn_msg
|
||||
status += body_part.light_burn_msg
|
||||
|
||||
if(status == "")
|
||||
status = "OK"
|
||||
@@ -734,45 +736,45 @@
|
||||
if(status == "OK" || status == "no damage")
|
||||
no_damage = TRUE
|
||||
var/isdisabled = ""
|
||||
if(LB.bodypart_disabled)
|
||||
if(body_part.bodypart_disabled)
|
||||
isdisabled = " is disabled"
|
||||
if(no_damage)
|
||||
isdisabled += " but otherwise"
|
||||
else
|
||||
isdisabled += " and"
|
||||
combined_msg += "\t <span class='[no_damage ? "notice" : "warning"]'>Your [LB.name][isdisabled][self_aware ? " has " : " is "][status].</span>"
|
||||
combined_msg += "\t <span class='[no_damage ? "notice" : "warning"]'>Your [body_part.name][isdisabled][self_aware ? " has " : " is "][status].</span>"
|
||||
|
||||
for(var/thing in LB.wounds)
|
||||
for(var/thing in body_part.wounds)
|
||||
var/datum/wound/W = thing
|
||||
var/msg
|
||||
switch(W.severity)
|
||||
if(WOUND_SEVERITY_TRIVIAL)
|
||||
//msg = "\t <span class='danger'>Your [LB.name] is suffering [W.a_or_from] [lowertext(W.name)].</span>" //ORIGINAL
|
||||
msg = "\t <span class='danger'>Your [LB.name] is suffering [W.a_or_from] [W.get_topic_name(src)].</span>" //SKYRAT EDIT CHANGE - MEDICAL
|
||||
msg = "\t <span class='danger'>Your [body_part.name] is suffering [W.a_or_from] [W.get_topic_name(src)].</span>" //SKYRAT EDIT CHANGE - MEDICAL
|
||||
if(WOUND_SEVERITY_MODERATE)
|
||||
//msg = "\t <span class='warning'>Your [LB.name] is suffering [W.a_or_from] [lowertext(W.name)]!</span>" //ORIGINAL
|
||||
msg = "\t <span class='warning'>Your [LB.name] is suffering [W.a_or_from] [W.get_topic_name(src)]!</span>" //SKYRAT EDIT CHANGE - MEDICAL
|
||||
msg = "\t <span class='warning'>Your [body_part.name] is suffering [W.a_or_from] [W.get_topic_name(src)]!</span>" //SKYRAT EDIT CHANGE - MEDICAL
|
||||
if(WOUND_SEVERITY_SEVERE)
|
||||
//msg = "\t <span class='warning'><b>Your [LB.name] is suffering [W.a_or_from] [lowertext(W.name)]!</b></span>" //ORIGINAL
|
||||
msg = "\t <span class='warning'><b>Your [LB.name] is suffering [W.a_or_from] [W.get_topic_name(src)]!</b></span>" //SKYRAT EDIT CHANGE - MEDICAL
|
||||
msg = "\t <span class='warning'><b>Your [body_part.name] is suffering [W.a_or_from] [W.get_topic_name(src)]!</b></span>" //SKYRAT EDIT CHANGE - MEDICAL
|
||||
if(WOUND_SEVERITY_CRITICAL)
|
||||
//msg = "\t <span class='warning'><b>Your [LB.name] is suffering [W.a_or_from] [lowertext(W.name)]!!</b></span>" //ORIGINAL
|
||||
msg = "\t <span class='warning'><b>Your [LB.name] is suffering [W.a_or_from] [W.get_topic_name(src)]!!</b></span>" //SKYRAT EDIT CHANGE - MEDICAL
|
||||
msg = "\t <span class='warning'><b>Your [body_part.name] is suffering [W.a_or_from] [W.get_topic_name(src)]!!</b></span>" //SKYRAT EDIT CHANGE - MEDICAL
|
||||
combined_msg += msg
|
||||
|
||||
for(var/obj/item/I in LB.embedded_objects)
|
||||
for(var/obj/item/I in body_part.embedded_objects)
|
||||
if(I.isEmbedHarmless())
|
||||
combined_msg += "\t <a href='?src=[REF(src)];embedded_object=[REF(I)];embedded_limb=[REF(LB)]' class='warning'>There is \a [I] stuck to your [LB.name]!</a>"
|
||||
combined_msg += "\t <a href='?src=[REF(src)];embedded_object=[REF(I)];embedded_limb=[REF(body_part)]' class='warning'>There is \a [I] stuck to your [body_part.name]!</a>"
|
||||
else
|
||||
combined_msg += "\t <a href='?src=[REF(src)];embedded_object=[REF(I)];embedded_limb=[REF(LB)]' class='warning'>There is \a [I] embedded in your [LB.name]!</a>"
|
||||
combined_msg += "\t <a href='?src=[REF(src)];embedded_object=[REF(I)];embedded_limb=[REF(body_part)]' class='warning'>There is \a [I] embedded in your [body_part.name]!</a>"
|
||||
|
||||
//SKYRAT EDIT ADDITION BEGIN - MEDICAL
|
||||
if(LB.current_gauze)
|
||||
var/datum/bodypart_aid/current_gauze = LB.current_gauze
|
||||
combined_msg += "\t <span class='notice'>Your [LB.name] is [current_gauze.desc_prefix] with <a href='?src=[REF(current_gauze)];remove=1'>[current_gauze.get_description()]</a>.</span>"
|
||||
if(LB.current_splint)
|
||||
var/datum/bodypart_aid/current_splint = LB.current_splint
|
||||
combined_msg += "\t <span class='notice'>Your [LB.name] is [current_splint.desc_prefix] with <a href='?src=[REF(current_splint)];remove=1'>[current_splint.get_description()]</a>.</span>"
|
||||
if(body_part.current_gauze)
|
||||
var/datum/bodypart_aid/current_gauze = body_part.current_gauze
|
||||
combined_msg += "\t <span class='notice'>Your [body_part.name] is [current_gauze.desc_prefix] with <a href='?src=[REF(current_gauze)];remove=1'>[current_gauze.get_description()]</a>.</span>"
|
||||
if(body_part.current_splint)
|
||||
var/datum/bodypart_aid/current_splint = body_part.current_splint
|
||||
combined_msg += "\t <span class='notice'>Your [body_part.name] is [current_splint.desc_prefix] with <a href='?src=[REF(current_splint)];remove=1'>[current_splint.get_description()]</a>.</span>"
|
||||
//SKYRAT EDIT END
|
||||
|
||||
for(var/t in missing)
|
||||
|
||||
@@ -77,3 +77,6 @@
|
||||
|
||||
///Exposure to damaging heat levels increases stacks, stacks clean over time when temperatures are lower. Stack is consumed to add a wound.
|
||||
var/heat_exposure_stacks = 0
|
||||
|
||||
///human specific screwyhuds from hallucinations (define key (bodypart) to int value (severity)) - see /datum/hallucination/fake_health_doll
|
||||
var/hal_screwydoll
|
||||
|
||||
@@ -414,12 +414,12 @@
|
||||
return TRUE
|
||||
|
||||
//called when the mob receives a bright flash
|
||||
/mob/living/proc/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /atom/movable/screen/fullscreen/flash)
|
||||
/mob/living/proc/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /atom/movable/screen/fullscreen/flash, length = 25)
|
||||
if(HAS_TRAIT(src, TRAIT_NOFLASH))
|
||||
return FALSE
|
||||
if(get_eye_protection() < intensity && (override_blindness_check || !is_blind()))
|
||||
overlay_fullscreen("flash", type)
|
||||
addtimer(CALLBACK(src, .proc/clear_fullscreen, "flash", 25), 25)
|
||||
addtimer(CALLBACK(src, .proc/clear_fullscreen, "flash", length), length)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -57,5 +57,5 @@
|
||||
. = ..(Proj)
|
||||
updatehealth()
|
||||
|
||||
/mob/living/silicon/ai/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0)
|
||||
/mob/living/silicon/ai/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /atom/movable/screen/fullscreen/flash, length = 25)
|
||||
return // no eyes, no flashing
|
||||
|
||||
@@ -123,6 +123,6 @@
|
||||
Proj.on_hit(src, 0, piercing_hit)
|
||||
return BULLET_ACT_HIT
|
||||
|
||||
/mob/living/silicon/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /atom/movable/screen/fullscreen/flash/static)
|
||||
/mob/living/silicon/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /atom/movable/screen/fullscreen/flash/static, length = 25)
|
||||
if(affect_silicon)
|
||||
return ..()
|
||||
|
||||
@@ -302,7 +302,7 @@
|
||||
if(cleared)
|
||||
to_chat(src, "--- [class] alarm in [A.name] has been cleared.")
|
||||
|
||||
/mob/living/simple_animal/drone/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0)
|
||||
/mob/living/simple_animal/drone/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /atom/movable/screen/fullscreen/flash, length = 25)
|
||||
if(affect_silicon)
|
||||
return ..()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user