From ba9d3fa1eb2d438446b0391f3ece08d6b3649431 Mon Sep 17 00:00:00 2001 From: comma Date: Fri, 2 Aug 2013 18:40:30 +0400 Subject: [PATCH 1/5] High toxins level cause damage to liver. Antitoxin stops that damage, and heals liver if it's not too damaged (over 10 damage) --- code/modules/organs/organ_internal.dm | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/code/modules/organs/organ_internal.dm b/code/modules/organs/organ_internal.dm index 431804dd98e..232fa2bc0e0 100644 --- a/code/modules/organs/organ_internal.dm +++ b/code/modules/organs/organ_internal.dm @@ -27,11 +27,12 @@ H.internal_organs[src.name] = src src.owner = H -/datum/organ/internal/proc/take_damage(amount) +/datum/organ/internal/proc/take_damage(amount, var/silent=0) src.damage += amount var/datum/organ/external/parent = owner.get_organ(parent_organ) - owner.custom_pain("Something inside your [parent.display_name] hurts a lot.", 1) + if (!silent) + owner.custom_pain("Something inside your [parent.display_name] hurts a lot.", 1) /**************************************************** INTERNAL ORGANS DEFINES @@ -62,6 +63,21 @@ process() if(owner.life_tick % process_accuracy == 0) + //High toxins levels are dangerous + if(owner.getToxLoss() >= 60 && !owner.reagents.has_reagent("anti_toxin")) + //Healthy liver suffers on its own + if (src.damage < min_broken_damage) + src.damage += 0.2 * process_accuracy + //Damaged one shares the fun + else + var/victim = pick(owner.internal_organs) + var/datum/organ/internal/O = owner.internal_organs[victim] + O.damage += 0.2 * process_accuracy + + //Detox can heal small amounts of damage + if (owner.reagents.has_reagent("anti_toxin") && src.damage < src.min_bruised_damage) + src.damage -= 0.2 * process_accuracy + // Damaged liver means some chemicals are very dangerous if(src.damage >= src.min_bruised_damage) for(var/datum/reagent/R in owner.reagents.reagent_list) From 019e8aa0d49a156cc5307673d5d5090006378272 Mon Sep 17 00:00:00 2001 From: comma Date: Fri, 2 Aug 2013 18:41:07 +0400 Subject: [PATCH 2/5] Alcohol causes liver damage and some toxic damage, at the stage where you pass out. --- code/modules/reagents/Chemistry-Reagents.dm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 81dceaf7eb4..ea1dc6cbe40 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -2807,6 +2807,12 @@ datum if(d >= pass_out) M:paralysis = max(M:paralysis, 20) M:drowsyness = max(M:drowsyness, 30) + if(ishuman(M)) + var/mob/living/cabon.huan/H = M + var/datum/organ/internal/liver/L = H.internal_organs["liver"] + if (istype(L)) + L.take_damage(0.1, 1) + H.adjustToxLoss(0.1) holder.remove_reagent(src.id, 0.4) ..() @@ -3463,4 +3469,4 @@ datum else if(data >= 115 && prob(33)) M.confused = max(M.confused+15,15) ..() - return + return From fb1f32a427215da438bfc40f15d539ba5792a08a Mon Sep 17 00:00:00 2001 From: comma Date: Sat, 3 Aug 2013 23:05:04 +0400 Subject: [PATCH 3/5] Painkillers stop regular pain messages too, not only custom ones. --- code/modules/organs/pain.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/modules/organs/pain.dm b/code/modules/organs/pain.dm index 7919381c0f7..d894d0f0815 100644 --- a/code/modules/organs/pain.dm +++ b/code/modules/organs/pain.dm @@ -9,6 +9,12 @@ mob/var/next_pain_time = 0 // amount is a num from 1 to 100 mob/proc/pain(var/partname, var/amount, var/force, var/burning = 0) if(stat >= 2) return + if(reagents.has_reagent("tramadol")) + return + if(reagents.has_reagent("oxycodone")) + return + if(analgesic) + return if(world.time < next_pain_time && !force) return if(amount > 10 && istype(src,/mob/living/carbon/human)) From 4e68b1c042748b6105f6350391fd3229217d5757 Mon Sep 17 00:00:00 2001 From: comma Date: Sat, 3 Aug 2013 23:06:17 +0400 Subject: [PATCH 4/5] Bicaridine stops internal wounds from growing bigger over time. Does not stop bleeding itself though. --- code/modules/organs/organ_external.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 2dfecd2a9c7..5aac20bb238 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -320,7 +320,8 @@ // Internal wounds get worse over time. Low temperatures (cryo) stop them. if(W.internal && !W.is_treated() && owner.bodytemperature >= 170) - W.open_wound(0.1 * wound_update_accuracy) + if(!owner.reagents/has_reagent("bicaridine")) //bicard stops internal wounds from growing bigger with time + W.open_wound(0.1 * wound_update_accuracy) owner.vessel.remove_reagent("blood",0.07 * W.damage * wound_update_accuracy) if(prob(1 * wound_update_accuracy)) owner.custom_pain("You feel a stabbing pain in your [display_name]!",1) From f460deb459cdf189eaf7461f3ccfe20690161f90 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Sun, 4 Aug 2013 04:29:37 +0400 Subject: [PATCH 5/5] Typo --- code/modules/organs/organ_external.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 5aac20bb238..0429685ecfb 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -320,7 +320,7 @@ // Internal wounds get worse over time. Low temperatures (cryo) stop them. if(W.internal && !W.is_treated() && owner.bodytemperature >= 170) - if(!owner.reagents/has_reagent("bicaridine")) //bicard stops internal wounds from growing bigger with time + if(!owner.reagents.has_reagent("bicaridine")) //bicard stops internal wounds from growing bigger with time W.open_wound(0.1 * wound_update_accuracy) owner.vessel.remove_reagent("blood",0.07 * W.damage * wound_update_accuracy) if(prob(1 * wound_update_accuracy))