From e92cecdefe706d6e20bfd5e1776c811486e8a002 Mon Sep 17 00:00:00 2001 From: cib Date: Mon, 12 Nov 2012 12:51:28 +0100 Subject: [PATCH 01/17] Added basic germ code. This will only trigger in surgery for now - That is when you cut someone open in surgery, you'd better wash your hands before, or otherwise you'll get infected wounds. --- code/WorkInProgress/surgery.dm | 24 ++++++++++++++++--- code/datums/organs/organ_external.dm | 19 ++++++++++++++- code/datums/organs/wound.dm | 7 ++++-- code/game/atoms.dm | 8 ++++--- code/game/objects/items.dm | 4 ++-- code/game/objects/items/devices/scanners.dm | 3 +++ code/modules/mob/living/carbon/carbon.dm | 2 ++ .../mob/living/carbon/human/examine.dm | 2 ++ code/modules/mob/living/carbon/human/human.dm | 7 ++++++ code/modules/mob/living/carbon/human/life.dm | 8 ++++++- 10 files changed, 72 insertions(+), 12 deletions(-) diff --git a/code/WorkInProgress/surgery.dm b/code/WorkInProgress/surgery.dm index a7210ee6e0a..992dd30b9a7 100644 --- a/code/WorkInProgress/surgery.dm +++ b/code/WorkInProgress/surgery.dm @@ -57,6 +57,15 @@ proc/build_surgery_steps_list() var/datum/surgery_step/S = new T surgery_steps += S +proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) + if(!istype(user) || !istype(E)) return + + var/germ_level = user.germ_level + if(user.gloves) + germ_level = user.gloves.germ_level + + E.germ_level = germ_level + ////////////////////////////////////////////////////////////////// // COMMON STEPS // @@ -97,6 +106,7 @@ proc/build_surgery_steps_list() "\blue You have made an incision on [target]'s [affected.display_name] with \the [tool].",) affected.open = 1 affected.createwound(CUT, 1) + spread_germs_to_organ(affected, user) if (target_zone == "head") target.brain_op_stage = 1 @@ -126,6 +136,7 @@ proc/build_surgery_steps_list() "\blue You clamp bleeders in [target]'s [affected.display_name] with \the [tool].") affected.bandage() affected.status &= ~ORGAN_BLEEDING + spread_germs_to_organ(affected, user) fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -166,6 +177,7 @@ proc/build_surgery_steps_list() self_msg = "\blue You keep the incision open on [target]'s lower abdomen with \the [tool]." user.visible_message(msg, self_msg) affected.open = 2 + spread_germs_to_organ(affected, user) fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -199,6 +211,7 @@ proc/build_surgery_steps_list() user.visible_message("\blue [user] cauterizes the incision on [target]'s [affected.display_name] with \the [tool].", \ "\blue You cauterize the incision on [target]'s [affected.display_name] with \the [tool].") affected.open = 0 + affected.germ_level = 0 affected.status &= ~ORGAN_BLEEDING fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) @@ -282,7 +295,7 @@ proc/build_surgery_steps_list() ////////////////////////////////////////////////////////////////// -// INTERNAL WOUND PATCHING // +// INTERNAL WOUND PATCHING // ////////////////////////////////////////////////////////////////// @@ -346,6 +359,7 @@ proc/build_surgery_steps_list() user.visible_message("\blue [user] applies some [tool] to [target]'s bone in [affected.display_name]", \ "\blue You apply some [tool] to [target]'s bone in [affected.display_name] with \the [tool].") affected.stage = 1 + spread_germs_to_organ(affected, user) fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -373,10 +387,12 @@ proc/build_surgery_steps_list() user.visible_message("\blue [user] sets the bone in [target]'s [affected.display_name] in place with \the [tool].", \ "\blue You set the bone in [target]'s [affected.display_name] in place with \the [tool].") affected.stage = 2 + spread_germs_to_organ(affected, user) else user.visible_message("\blue [user] sets the bone in [target]'s [affected.display_name]\red in the WRONG place with \the [tool].", \ "\blue You set the bone in [target]'s [affected.display_name]\red in the WRONG place with \the [tool].") affected.fracture() + spread_germs_to_organ(affected, user) fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -403,6 +419,7 @@ proc/build_surgery_steps_list() user.visible_message("\blue [user] sets [target]'s [affected.display_name] skull with \the [tool]." , \ "\blue You set [target]'s [affected.display_name] skull with \the [tool].") affected.stage = 2 + spread_germs_to_organ(affected, user) fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -435,6 +452,7 @@ proc/build_surgery_steps_list() affected.status &= ~ORGAN_SPLINTED affected.stage = 0 affected.perma_injury = 0 + spread_germs_to_organ(affected, user) fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -691,7 +709,7 @@ proc/build_surgery_steps_list() "You begin to cut through [target]'s skull with \the [tool].") end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("\blue [user] has cut through [target]'s skull open with \the [tool].", \ + user.visible_message("\blue [user] has cut through [target]'s skull open with \the [tool].", \ "\blue You have cut through [target]'s skull open with \the [tool].") target.brain_op_stage = 2 @@ -976,4 +994,4 @@ proc/build_surgery_steps_list() var/datum/organ/external/affected = target.get_organ(target_zone) user.visible_message("\red [user]'s hand slips, damaging connectors on [target]'s [affected.display_name]!", \ "\red Your hand slips, damaging connectors on [target]'s [affected.display_name]!") - target.apply_damage(10, BRUTE, affected) \ No newline at end of file + target.apply_damage(10, BRUTE, affected) diff --git a/code/datums/organs/organ_external.dm b/code/datums/organs/organ_external.dm index 0c953e6843a..b67f3a07ef9 100644 --- a/code/datums/organs/organ_external.dm +++ b/code/datums/organs/organ_external.dm @@ -33,6 +33,9 @@ var/open = 0 var/stage = 0 + // INTERNAL germs inside the organ, this is BAD if it's greater 0 + var/germ_level = 0 + // how often wounds should be updated, a higher number means less often var/wound_update_accuracy = 20 // update every 20 ticks(roughly every minute) New(var/datum/organ/external/P) @@ -195,6 +198,11 @@ // amount of healing is spread over all the wounds W.heal_damage((wound_update_accuracy * amount * W.amount * config.organ_regeneration_multiplier) / (20*owner.number_wounds+1)) + if(W.germ_level > 100 && prob(10)) + owner.adjustToxLoss(1 * wound_update_accuracy) + if(W.germ_level > 1000) + owner.adjustToxLoss(1 * wound_update_accuracy) + // sync the organ's damage with its wounds src.update_damages() @@ -222,6 +230,12 @@ proc/get_damage_fire() return burn_dam + proc/is_infected() + for(var/datum/wound/W in wounds) + if(W.germ_level > 100) + return 1 + return 0 + process() // process wounds, doing healing etc., only do this every 4 ticks to save processing power if(owner.life_tick % wound_update_accuracy == 0) @@ -239,6 +253,9 @@ return if(config.bones_can_break && brute_dam > min_broken_damage * config.organ_health_multiplier && !(status & ORGAN_ROBOT)) src.fracture() + if(germ_level > 0) + for(var/datum/wound/W in wounds) if(!W.bandaged) + W.germ_level = max(W.germ_level, germ_level) return proc/fracture() @@ -694,4 +711,4 @@ obj/item/weapon/organ/r_hand icon_state = "r_hand_l" obj/item/weapon/organ/r_leg name = "right leg" - icon_state = "r_leg_l" \ No newline at end of file + icon_state = "r_leg_l" diff --git a/code/datums/organs/wound.dm b/code/datums/organs/wound.dm index 024419e1818..d52c37e7dce 100644 --- a/code/datums/organs/wound.dm +++ b/code/datums/organs/wound.dm @@ -41,6 +41,9 @@ // internal wounds can only be fixed through surgery var/internal = 0 + // amount of germs in the wound + var/germ_level = 0 + // helper lists var/tmp/list/desc_list = list() var/tmp/list/damage_list = list() @@ -143,7 +146,7 @@ /datum/wound/gaping_wound max_bleeding_stage = 2 stages = list("gaping wound" = 50, "large blood soaked clot" = 25, "large clot" = 15, "small angry scar" = 5, \ - "small straight scar" = 0) + "small straight scar" = 0) /datum/wound/big_gaping_wound max_bleeding_stage = 2 @@ -229,4 +232,4 @@ stages = list("severed vein" = 30, "cut vein" = 20, "damaged vein" = 10, "bruised vein" = 5) max_bleeding_stage = 0 - needs_treatment = 1 \ No newline at end of file + needs_treatment = 1 diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 8187ca46277..313a9106f48 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -9,6 +9,7 @@ var/last_bumped = 0 var/pass_flags = 0 var/throwpass = 0 + var/germ_level = 0 // The higher the germ level, the more germ on the atom. ///Chemistry. var/datum/reagents/reagents = null @@ -121,7 +122,7 @@ * Recursevly searches all atom contens (including contents contents and so on). * * ARGS: path - search atom contents for atoms of this type - * list/filter_path - if set, contents of atoms not of types in this list are excluded from search. + * list/filter_path - if set, contents of atoms not of types in this list are excluded from search. * * RETURNS: list of found atoms */ @@ -419,8 +420,8 @@ its easier to just keep the beam vertical. A.fingerprints = list() if(!istype(A.fingerprintshidden,/list)) A.fingerprintshidden = list() - A.fingerprints |= fingerprints //detective - A.fingerprintshidden |= fingerprintshidden //admin + A.fingerprints |= fingerprints //detective + A.fingerprintshidden |= fingerprintshidden //admin A.fingerprintslast = fingerprintslast @@ -555,6 +556,7 @@ its easier to just keep the beam vertical. /atom/proc/clean_blood() clean_prints() + src.germ_level = 0 if(istype(blood_DNA, /list)) del(blood_DNA) return 1 diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 74b3f42f133..647168dbc13 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -221,7 +221,7 @@ msg_admin_attack("ATTACK: [user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(src.damtype)])") //BS12 EDIT ALG - //spawn(1800) // this wont work right + //spawn(1800) // this wont work right // M.lastattacker = null ///////////////////////// @@ -624,7 +624,7 @@ user << "\red You're going to need to remove that mask/helmet/glasses first." return - if(istype(M, /mob/living/carbon/alien) || istype(M, /mob/living/carbon/metroid))//Aliens don't have eyes./N Metroids also don't have eyes! + if(istype(M, /mob/living/carbon/alien) || istype(M, /mob/living/carbon/metroid))//Aliens don't have eyes./N Metroids also don't have eyes! user << "\red You cannot locate any eyes on this creature!" return diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 359efb68e3f..0791e98e0de 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -138,6 +138,9 @@ MASS SPECTROMETER if(e.status & ORGAN_BROKEN) if(((e.name == "l_arm") || (e.name == "r_arm") || (e.name == "l_leg") || (e.name == "r_leg")) && (!(e.status & ORGAN_SPLINTED))) user << "\red Unsecured fracture in subject [limb]. Splinting recommended for transport." + if(e.is_infected()) + user << "\red Infected wound detected in subject [limb]. Disinfection recommended." + for(var/name in H.organs_by_name) var/datum/organ/external/e = H.organs_by_name[name] if(e.status & ORGAN_BROKEN) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 53f0571301e..0ef35d726dc 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -353,10 +353,12 @@ if(H.gloves) if(H.gloves.clean_blood()) H.update_inv_gloves(0) + H.gloves.germ_level = 0 else if(H.bloody_hands) H.bloody_hands = 0 H.update_inv_gloves(0) + H.germ_level = 0 update_icons() //apply the now updated overlays to the mob diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 5a2118aa359..2fe10e77623 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -280,6 +280,8 @@ var/this_wound_desc = W.desc if(W.bleeding()) this_wound_desc = "bleeding [this_wound_desc]" else if(W.bandaged) this_wound_desc = "bandaged [this_wound_desc]" + if(W.germ_level > 1000) this_wound_desc = "badly infected [this_wound_desc]" + else if(W.germ_level > 100) this_wound_desc = "infected [this_wound_desc]" if(this_wound_desc in wound_descriptors) wound_descriptors[this_wound_desc] += W.amount continue diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 860fbec5b2f..bef38169ce2 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -943,3 +943,10 @@ if(wear_suit && wear_suit.flags_inv & HIDEJUMPSUIT && ((head && head.flags_inv & HIDEMASK) || wear_mask)) return NEUTER return gender + + +/mob/living/carbon/human/proc/increase_germ_level(n) + if(gloves) + gloves.germ_level += n + else + germ_level += n diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index d79e70836fe..f2821a67086 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1166,6 +1166,12 @@ if(druggy) druggy = max(druggy-1, 0) + + // Increase germ_level by 1 on each life tick + germ_level += 1 + // If you're dirty, your gloves will become dirty, too. + if(gloves && germ_level > gloves.germ_level && prob(30)) + gloves.germ_level += 1 return 1 proc/handle_regular_hud_updates() @@ -1535,4 +1541,4 @@ Paralyse(rand(15,28)) #undef HUMAN_MAX_OXYLOSS -#undef HUMAN_CRIT_MAX_OXYLOSS \ No newline at end of file +#undef HUMAN_CRIT_MAX_OXYLOSS From 95181d96a8935095ecff839e1ec503a2a614d2ce Mon Sep 17 00:00:00 2001 From: cib Date: Mon, 12 Nov 2012 13:17:11 +0100 Subject: [PATCH 02/17] Several fixes to germs. --- code/WorkInProgress/surgery.dm | 2 +- code/datums/organs/organ_external.dm | 14 +++++++++++++- code/datums/organs/wound.dm | 4 +++- code/modules/mob/living/carbon/human/examine.dm | 2 +- code/modules/mob/living/carbon/human/life.dm | 7 ++++--- 5 files changed, 22 insertions(+), 7 deletions(-) diff --git a/code/WorkInProgress/surgery.dm b/code/WorkInProgress/surgery.dm index 992dd30b9a7..a3ca9f42ec6 100644 --- a/code/WorkInProgress/surgery.dm +++ b/code/WorkInProgress/surgery.dm @@ -134,7 +134,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) var/datum/organ/external/affected = target.get_organ(target_zone) user.visible_message("\blue [user] clamps bleeders in [target]'s [affected.display_name] with \the [tool].", \ "\blue You clamp bleeders in [target]'s [affected.display_name] with \the [tool].") - affected.bandage() + affected.clamp() affected.status &= ~ORGAN_BLEEDING spread_germs_to_organ(affected, user) diff --git a/code/datums/organs/organ_external.dm b/code/datums/organs/organ_external.dm index b67f3a07ef9..cf29a5dea61 100644 --- a/code/datums/organs/organ_external.dm +++ b/code/datums/organs/organ_external.dm @@ -203,6 +203,10 @@ if(W.germ_level > 1000) owner.adjustToxLoss(1 * wound_update_accuracy) + // Salving also helps against infection + if(W.germ_level > 0 && W.salved && prob(2)) + W.germ_level = 0 + // sync the organ's damage with its wounds src.update_damages() @@ -214,6 +218,14 @@ W.bandaged = 1 return rval + proc/clamp() + var/rval = 0 + for(var/datum/wound/W in wounds) + if(W.internal) continue + rval |= !W.clamped + W.clamped = 1 + return rval + proc/salve() var/rval = 0 for(var/datum/wound/W in wounds) @@ -254,7 +266,7 @@ if(config.bones_can_break && brute_dam > min_broken_damage * config.organ_health_multiplier && !(status & ORGAN_ROBOT)) src.fracture() if(germ_level > 0) - for(var/datum/wound/W in wounds) if(!W.bandaged) + for(var/datum/wound/W in wounds) if(!W.bandaged && !W.salved) W.germ_level = max(W.germ_level, germ_level) return diff --git a/code/datums/organs/wound.dm b/code/datums/organs/wound.dm index d52c37e7dce..b5baf346da0 100644 --- a/code/datums/organs/wound.dm +++ b/code/datums/organs/wound.dm @@ -25,6 +25,8 @@ // is the wound bandaged? var/tmp/bandaged = 0 + // Similar to bandaged, but works differently + var/tmp/clamped = 0 // is the wound salved? var/tmp/salved = 0 // is the wound disinfected? @@ -127,7 +129,7 @@ proc/bleeding() // internal wounds don't bleed in the sense of this function - return (!bandaged && (damage_type == BRUISE && damage >= 20 || damage_type == CUT) && current_stage <= max_bleeding_stage && !src.internal) + return (!(bandaged||clamped) && (damage_type == BRUISE && damage >= 20 || damage_type == CUT) && current_stage <= max_bleeding_stage && !src.internal) /** CUTS **/ /datum/wound/cut diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 2fe10e77623..362d8d0918a 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -281,7 +281,7 @@ if(W.bleeding()) this_wound_desc = "bleeding [this_wound_desc]" else if(W.bandaged) this_wound_desc = "bandaged [this_wound_desc]" if(W.germ_level > 1000) this_wound_desc = "badly infected [this_wound_desc]" - else if(W.germ_level > 100) this_wound_desc = "infected [this_wound_desc]" + else if(W.germ_level > 100) this_wound_desc = "lightly infected [this_wound_desc]" if(this_wound_desc in wound_descriptors) wound_descriptors[this_wound_desc] += W.amount continue diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index f2821a67086..101606f8044 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1167,10 +1167,11 @@ if(druggy) druggy = max(druggy-1, 0) - // Increase germ_level by 1 on each life tick - germ_level += 1 + // Increase germ_level regularly + if(prob(40)) + germ_level += 1 // If you're dirty, your gloves will become dirty, too. - if(gloves && germ_level > gloves.germ_level && prob(30)) + if(gloves && germ_level > gloves.germ_level && prob(10)) gloves.germ_level += 1 return 1 From b8b0694fba9ec73950c76c855e43c1c462fca837 Mon Sep 17 00:00:00 2001 From: cib Date: Mon, 12 Nov 2012 13:30:37 +0100 Subject: [PATCH 03/17] Added changelog. --- html/changelog.html | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/html/changelog.html b/html/changelog.html index dbfbcce1b1a..558cd1f60e7 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,14 @@ Stuff which is in development and not yet visible to players or just code relate should be listed in the changelog upon commit though. Thanks. --> +
+

November 12th

+

CIB updated:

+
    +
  • Wounds can now get infected in surgery if the surgeon doesn't wash his hands first. Infected wounds can be treated with ointment(though it'll take a while to take effect).
  • +
+
+

November 11th

CIB updated:

From 6d3e742992a8b4a4e543665d4eb2822be2d7d517 Mon Sep 17 00:00:00 2001 From: cib Date: Mon, 12 Nov 2012 13:38:55 +0100 Subject: [PATCH 04/17] Large amounts of damage can now trigger internal bleeding. --- code/datums/organs/organ_external.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/datums/organs/organ_external.dm b/code/datums/organs/organ_external.dm index cf29a5dea61..e0238d2eed5 100644 --- a/code/datums/organs/organ_external.dm +++ b/code/datums/organs/organ_external.dm @@ -462,7 +462,10 @@ W = new wound_type(damage) - + // Possibly trigger an internal wound, too. + if(damage > 10 && prob(damage)) + var/datum/wound/internal_bleeding/I = new (5) + wounds += I // check whether we can add the wound to an existing wound for(var/datum/wound/other in wounds) From 4b331f36768b2a9d3473337178fe3b1241985d34 Mon Sep 17 00:00:00 2001 From: cib Date: Mon, 12 Nov 2012 14:04:01 +0100 Subject: [PATCH 05/17] Fixes to internal bleeding. - Created internal wound doesn't close instantly anymore. - Small fix to body scanner display. --- code/datums/organs/organ_external.dm | 2 +- code/game/machinery/adv_med.dm | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/datums/organs/organ_external.dm b/code/datums/organs/organ_external.dm index e0238d2eed5..e07b39e9a8c 100644 --- a/code/datums/organs/organ_external.dm +++ b/code/datums/organs/organ_external.dm @@ -464,7 +464,7 @@ // Possibly trigger an internal wound, too. if(damage > 10 && prob(damage)) - var/datum/wound/internal_bleeding/I = new (5) + var/datum/wound/internal_bleeding/I = new (15) wounds += I // check whether we can add the wound to an existing wound diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index c5471bd696b..15dbadb0061 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -280,7 +280,7 @@ var/splint = "" var/internal_bleeding = "" for(var/datum/wound/W in e.wounds) if(W.internal) - internal_bleeding = "Internal Bleeding:" + internal_bleeding = "
Internal Bleeding" break if(e.status & ORGAN_SPLINTED) splint = "Splinted:" @@ -293,7 +293,7 @@ if(e.implant) imp = "Implanted:" if(!AN && !open && !infected & !imp) - AN = "None" + AN = "None:" if(!(e.status & ORGAN_DESTROYED)) dat += "[e.display_name][e.burn_dam][e.brute_dam][bled][AN][splint][open][infected][imp][internal_bleeding]" else @@ -306,4 +306,4 @@ dat = " Error: No Body Scanner connected." dat += text("

Close", user) user << browse(dat, "window=scanconsole;size=430x600") - return \ No newline at end of file + return From 6252dd8292d76ccf949f3f9bd72b609012cd61ed Mon Sep 17 00:00:00 2001 From: cib Date: Mon, 12 Nov 2012 14:19:18 +0100 Subject: [PATCH 06/17] Added changelog. --- html/changelog.html | 1 + 1 file changed, 1 insertion(+) diff --git a/html/changelog.html b/html/changelog.html index 558cd1f60e7..b2f8706ef7e 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -61,6 +61,7 @@ should be listed in the changelog upon commit though. Thanks. -->

CIB updated:

  • Wounds can now get infected in surgery if the surgeon doesn't wash his hands first. Infected wounds can be treated with ointment(though it'll take a while to take effect).
  • +
  • Large amounts of damage can now trigger internal bleeding. Internal bleeding can be recognized in the stationary body scanner, and can be treated through surgery with VeinOFix.
From 74c5235c9d553538b6daed8747de8b57e87cac8a Mon Sep 17 00:00:00 2001 From: CIB Date: Tue, 13 Nov 2012 14:11:03 +0100 Subject: [PATCH 07/17] Added back the "unknown substance" message --- code/game/objects/items/devices/scanners.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 0791e98e0de..ba3bf06f17f 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -1,4 +1,3 @@ - /* CONTAINS: T-RAY @@ -117,6 +116,9 @@ MASS SPECTROMETER user.show_message(text("\blue [] | [] | [] | []", fake_oxy > 50 ? "\red Severe oxygen deprivation detected\blue" : "Subject bloodstream oxygen level normal", M.getToxLoss() > 50 ? "\red Dangerous amount of toxins detected\blue" : "Subject bloodstream toxin level minimal", M.getFireLoss() > 50 ? "\red Severe burn damage detected\blue" : "Subject burn injury status O.K", M.getBruteLoss() > 50 ? "\red Severe anatomical damage detected\blue" : "Subject brute-force injury status O.K"), 1) else user.show_message(text("\blue [] | [] | [] | []", M.getOxyLoss() > 50 ? "\red Severe oxygen deprivation detected\blue" : "Subject bloodstream oxygen level normal", M.getToxLoss() > 50 ? "\red Dangerous amount of toxins detected\blue" : "Subject bloodstream toxin level minimal", M.getFireLoss() > 50 ? "\red Severe burn damage detected\blue" : "Subject burn injury status O.K", M.getBruteLoss() > 50 ? "\red Severe anatomical damage detected\blue" : "Subject brute-force injury status O.K"), 1) + if (istype(M, /mob/living/carbon/human)) + if(M:virus2 || M:reagents.total_volume > 0) + user.show_message(text("\red Warning: Unknown substance detected in subject's blood.")) if (M.getCloneLoss()) user.show_message(text("\red Subject appears to have been imperfectly cloned."), 1) for(var/datum/disease/D in M.viruses) From d693836fb2fc777564cadda3c802e46245cb793c Mon Sep 17 00:00:00 2001 From: CIB Date: Tue, 13 Nov 2012 14:12:40 +0100 Subject: [PATCH 08/17] Fixed a small issue with germs --- code/WorkInProgress/surgery.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/WorkInProgress/surgery.dm b/code/WorkInProgress/surgery.dm index a3ca9f42ec6..dacf5c73c6f 100644 --- a/code/WorkInProgress/surgery.dm +++ b/code/WorkInProgress/surgery.dm @@ -1,4 +1,3 @@ - //check if mob is lying down on something we can operate him on. /proc/can_operate(mob/living/carbon/M) return (locate(/obj/machinery/optable, M.loc) && M.resting) || \ @@ -64,7 +63,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) if(user.gloves) germ_level = user.gloves.germ_level - E.germ_level = germ_level + E.germ_level = max(E.germ_level, germ_level) ////////////////////////////////////////////////////////////////// From ef4ee093a5ffea35060dc846ffcb7015da65389c Mon Sep 17 00:00:00 2001 From: cib Date: Tue, 13 Nov 2012 16:01:43 +0100 Subject: [PATCH 09/17] Balance fixes to internal wounds. - Their damage now increases more slowly. - They now cause faster bleeding. - They can't be cured anymore with bicaridine etc. --- code/datums/organs/organ_external.dm | 6 +++--- code/datums/organs/wound.dm | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/code/datums/organs/organ_external.dm b/code/datums/organs/organ_external.dm index e07b39e9a8c..0a6d312bd9b 100644 --- a/code/datums/organs/organ_external.dm +++ b/code/datums/organs/organ_external.dm @@ -186,8 +186,8 @@ // let the GC handle the deletion of the wound if(W.internal && !W.is_treated()) // internal wounds get worse over time - W.open_wound(0.5 * wound_update_accuracy) - owner.vessel.remove_reagent("blood",0.1 * W.damage * wound_update_accuracy) + W.open_wound(0.1 * wound_update_accuracy) + owner.vessel.remove_reagent("blood",0.2 * W.damage * wound_update_accuracy) if(W.is_treated()) // slow healing @@ -206,7 +206,7 @@ // Salving also helps against infection if(W.germ_level > 0 && W.salved && prob(2)) W.germ_level = 0 - + // sync the organ's damage with its wounds src.update_damages() diff --git a/code/datums/organs/wound.dm b/code/datums/organs/wound.dm index b5baf346da0..c9ef227c904 100644 --- a/code/datums/organs/wound.dm +++ b/code/datums/organs/wound.dm @@ -99,8 +99,7 @@ // heal the given amount of damage, and if the given amount of damage was more // than what needed to be healed, return how much heal was left // set @heals_internal to also heal internal organ damage - // TODO: set heals_internal to 0 by default - proc/heal_damage(amount, heals_internal = 1) + proc/heal_damage(amount, heals_internal = 0) if(src.internal && !heals_internal) // heal nothing return amount From 2eb4022fe48fd206c1ca7756f7121b409d1945d8 Mon Sep 17 00:00:00 2001 From: cib Date: Tue, 13 Nov 2012 17:06:06 +0100 Subject: [PATCH 10/17] Surgery now triggers specialized pain messages if not done with anesthetic. --- code/WorkInProgress/surgery.dm | 9 +++++++++ code/datums/organs/pain.dm | 16 ++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/code/WorkInProgress/surgery.dm b/code/WorkInProgress/surgery.dm index a3ca9f42ec6..2e11833e1bb 100644 --- a/code/WorkInProgress/surgery.dm +++ b/code/WorkInProgress/surgery.dm @@ -99,6 +99,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) var/datum/organ/external/affected = target.get_organ(target_zone) user.visible_message("[user] starts the incision on [target]'s [affected.display_name] with \the [tool].", \ "You start the incision on [target]'s [affected.display_name] with \the [tool].") + target.custom_pain("You feel a horrible pain as if from a sharp knife in your [affected.display_name]!",1) end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -129,6 +130,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) var/datum/organ/external/affected = target.get_organ(target_zone) user.visible_message("[user] starts clamping bleeders in [target]'s [affected.display_name] with \the [tool].", \ "You start clamping bleeders in [target]'s [affected.display_name] with \the [tool].") + target.custom_pain("The pain in your [affected.display_name] is maddening!",1) end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -164,6 +166,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) msg = "[user] starts to pry open the incision and rearrange the organs in [target]'s lower abdomen with \the [tool]." self_msg = "You start to pry open the incision and rearrange the organs in [target]'s lower abdomen with \the [tool]." user.visible_message(msg, self_msg) + target.custom_pain("It feels like the skin on your [affected.display_name] is on fire!",1) end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -205,6 +208,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) var/datum/organ/external/affected = target.get_organ(target_zone) user.visible_message("[user] is beginning to cauterize the incision on [target]'s [affected.display_name] with \the [tool]." , \ "You are beginning to cauterize the incision on [target]'s [affected.display_name] with \the [tool].") + target.custom_pain("Your [affected.display_name] is being burned!",1) end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -248,6 +252,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("[user] starts to separating [target]'s appendix from the abdominal wall with \the [tool].", \ "You start to separating [target]'s appendix from the abdominal wall with \the [tool]." ) + target.custom_pain("The pain in your abdomen is living hell!",1) end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("\blue [user] has separated [target]'s appendix with \the [tool]." , \ @@ -272,6 +277,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("[user] starts removing [target]'s appendix with \the [tool].", \ "You start removing [target]'s appendix with \the [tool].") + target.custom_pain("Someone's ripping out your bowels!",1) end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("\blue [user] has removed [target]'s appendix with \the [tool].", \ @@ -317,6 +323,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) if (affected.stage == 0) user.visible_message("[user] starts patching the damaged vein in [target]'s [affected.display_name] with \the [tool]." , \ "You start patching the damaged vein in [target]'s [affected.display_name] with \the [tool].") + target.custom_pain("The pain in [affected.display_name] is unbearable!",1) end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -353,6 +360,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) if (affected.stage == 0) user.visible_message("[user] starts applying medication to the damaged bones in [target]'s [affected.display_name] with \the [tool]." , \ "You start applying medication to the damaged bones in [target]'s [affected.display_name] with \the [tool].") + target.custom_pain("Something in your [affected.display_name] is causing you a lot of pain!",1) end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -380,6 +388,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) var/datum/organ/external/affected = target.get_organ(target_zone) user.visible_message("[user] is beginning to set the bone in [target]'s [affected.display_name] in place with \the [tool]." , \ "You are beginning to set the bone in [target]'s [target_zone] in place with \the [tool].") + target.custom_pain("The pain in your [affected.display_name] is going to make you pass out!",1) end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) diff --git a/code/datums/organs/pain.dm b/code/datums/organs/pain.dm index d1e3ef9a081..750cd75f33a 100644 --- a/code/datums/organs/pain.dm +++ b/code/datums/organs/pain.dm @@ -42,6 +42,22 @@ mob/proc/pain(var/partname, var/amount, var/force, var/burning = 0) src << msg next_pain_time = world.time + (100 - amount) + +// message is the custom message to be displayed +// flash_strength is 0 for weak pain flash, 1 for strong pain flash +mob/living/carbon/human/proc/custom_pain(var/message, var/flash_strength) + if(stat >= 1) return + if(reagents.has_reagent("tramadol")) + return + if(reagents.has_reagent("oxycodone")) + return + if(analgesic) + return + var/msg = "\red [message]" + if(flash_strength >= 1) + msg = "\red [message]" + src << msg + mob/living/carbon/human/proc/handle_pain() // not when sleeping if(stat >= 2) return From 9a9e33b4ea941cc5e59bd3a5f3222d560a0162b6 Mon Sep 17 00:00:00 2001 From: cib Date: Tue, 13 Nov 2012 17:52:03 +0100 Subject: [PATCH 11/17] Disable silly radiation event mutations. --- code/game/gamemodes/events.dm | 7 ------- 1 file changed, 7 deletions(-) diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm index 6976b83d636..5f05f54081a 100644 --- a/code/game/gamemodes/events.dm +++ b/code/game/gamemodes/events.dm @@ -312,13 +312,6 @@ H.apply_effect((rand(15,75)),IRRADIATE,0) if (prob(5)) H.apply_effect((rand(90,150)),IRRADIATE,0) - if (prob(25)) - if (prob(75)) - randmutb(H) - domutcheck(H,null,1) - else - randmutg(H) - domutcheck(H,null,1) for(var/mob/living/carbon/monkey/M in living_mob_list) M.apply_effect((rand(15,75)),IRRADIATE,0) sleep(100) From ee785a17fce6fa3a1dbcee815aabb26903962475 Mon Sep 17 00:00:00 2001 From: cib Date: Tue, 13 Nov 2012 17:55:59 +0100 Subject: [PATCH 12/17] Radiation announcement now happens before radiation. --- code/game/gamemodes/events.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm index 5f05f54081a..facc5f88eb6 100644 --- a/code/game/gamemodes/events.dm +++ b/code/game/gamemodes/events.dm @@ -307,6 +307,8 @@ sleep(100) */ + command_alert("High levels of radiation detected near the station. Please report to the Med-bay if you feel strange.", "Anomaly Alert") + sleep(600) for(var/mob/living/carbon/human/H in living_mob_list) if(istype(H,/mob/living/carbon/human)) H.apply_effect((rand(15,75)),IRRADIATE,0) @@ -315,7 +317,7 @@ for(var/mob/living/carbon/monkey/M in living_mob_list) M.apply_effect((rand(15,75)),IRRADIATE,0) sleep(100) - command_alert("High levels of radiation detected near the station. Please report to the Med-bay if you feel strange.", "Anomaly Alert") + command_alert("Radiation levels are within standard parameters again.", "Anomaly Alert") world << sound('sound/AI/radiation.ogg') From 78ed2e54eb9de1e3e5b6bbe80513c6792bc66d60 Mon Sep 17 00:00:00 2001 From: cib Date: Tue, 13 Nov 2012 18:22:48 +0100 Subject: [PATCH 13/17] Added alien surgery. --- code/WorkInProgress/surgery.dm | 141 +++++++++++++++++- .../mob/living/carbon/carbon_defines.dm | 1 + 2 files changed, 141 insertions(+), 1 deletion(-) diff --git a/code/WorkInProgress/surgery.dm b/code/WorkInProgress/surgery.dm index bdd4b7e8b5a..748ffcfddd7 100644 --- a/code/WorkInProgress/surgery.dm +++ b/code/WorkInProgress/surgery.dm @@ -1,3 +1,4 @@ + //check if mob is lying down on something we can operate him on. /proc/can_operate(mob/living/carbon/M) return (locate(/obj/machinery/optable, M.loc) && M.resting) || \ @@ -63,7 +64,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) if(user.gloves) germ_level = user.gloves.germ_level - E.germ_level = max(E.germ_level, germ_level) + E.germ_level = germ_level ////////////////////////////////////////////////////////////////// @@ -1003,3 +1004,141 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) user.visible_message("\red [user]'s hand slips, damaging connectors on [target]'s [affected.display_name]!", \ "\red Your hand slips, damaging connectors on [target]'s [affected.display_name]!") target.apply_damage(10, BRUTE, affected) + + +////////////////////////////////////////////////////////////////// +// ALIEN SURGERY // +////////////////////////////////////////////////////////////////// + +/datum/surgery_step/alien + can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/embryo = 0 + for(var/datum/disease/alien_embryo/A in target.viruses) + embryo = 1 + break + + return embryo && target_zone == "chest" + +/datum/surgery_step/alien/saw_ribcage + required_tool = /obj/item/weapon/circular_saw + + min_duration = 50 + max_duration = 70 + + can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/datum/organ/external/affected = target.get_organ(target_zone) + return ..() && target.embryo_op_stage == 0 && affected.open >= 2 + + begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + user.visible_message("[user] begins to cut through [target]'s ribcage with \the [tool].", \ + "You begin to cut through [target]'s ribcage with \the [tool].") + + end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + user.visible_message("\blue [user] has cut through [target]'s ribcage open with \the [tool].", \ + "\blue You have cut through [target]'s ribcage open with \the [tool].") + target.embryo_op_stage = 1 + + fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + user.visible_message("\red [user]'s hand slips, cracking [target]'s ribcage with \the [tool]!" , \ + "\red Your hand slips, cracking [target]'s ribcage with \the [tool]!" ) + + +/datum/surgery_step/alien/retract_ribcage + required_tool = /obj/item/weapon/retractor + + min_duration = 30 + max_duration = 40 + + can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + return ..() && target.embryo_op_stage == 1 + + begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/msg = "[user] starts to force open the ribcage in [target]'s torso with \the [tool]." + var/self_msg = "You start to force open the ribcage in [target]'s torso with \the [tool]." + user.visible_message(msg, self_msg) + + end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/msg = "\blue [user] forces open [target]'s ribcage with \the [tool]." + var/self_msg = "\blue You force open [target]'s ribcage with \the [tool]." + user.visible_message(msg, self_msg) + target.embryo_op_stage = 2 + + // Whoops! + if(prob(10)) + var/datum/organ/external/affected = target.get_organ(target_zone) + affected.fracture() + + fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/msg = "\red [user]'s hand slips, breaking [target]'s ribcage!" + var/self_msg = "\red Your hand slips, breaking [target]'s ribcage!" + user.visible_message(msg, self_msg) + var/datum/organ/external/affected = target.get_organ(target_zone) + affected.fracture() + +/datum/surgery_step/alien/remove_embryo + required_tool = /obj/item/weapon/hemostat + + min_duration = 80 + max_duration = 100 + + can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + return ..() && target.embryo_op_stage == 2 + + begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/msg = "[user] starts to pull something out from [target]'s ribcage with \the [tool]." + var/self_msg = "You start to pull something out from [target]'s ribcage with \the [tool]." + user.visible_message(msg, self_msg) + + end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + user.visible_message("\red [user] rips the larva out of [target]'s ribcage!", + "You rip the larva out of [target]'s ribcage!") + + var/mob/living/carbon/alien/larva/stupid = new(target.loc) + stupid.death(0) + + target.embryo_op_stage = 3 + + for(var/datum/disease/alien_embryo in target.viruses) + alien_embryo.cure() + +/datum/surgery_step/alien/close_ribcage + required_tool = /obj/item/weapon/retractor + + min_duration = 20 + max_duration = 40 + + can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + return target.embryo_op_stage >= 2 + + begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/msg = "[user] starts bending [target]'s ribcage back into place with \the [tool]." + var/self_msg = "You start bending [target]'s ribcage back into place with \the [tool]." + user.visible_message(msg, self_msg) + + end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/msg = "[user] bends [target]'s ribcage back into place with \the [tool]." + var/self_msg = "You bends [target]'s ribcage back into place with \the [tool]." + user.visible_message(msg, self_msg) + + target.embryo_op_stage = 1 + +/datum/surgery_step/alien/mend_ribcage + required_tool = /obj/item/weapon/bonegel + + min_duration = 20 + max_duration = 40 + + can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + return target.embryo_op_stage == 1 + + begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/msg = "[user] starts applying \the [tool] to [target]'s ribcage." + var/self_msg = "You start applying \the [tool] to [target]'s ribcage." + user.visible_message(msg, self_msg) + + end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/msg = "[user] applied \the [tool] to [target]'s ribcage." + var/self_msg = "You applied \the [tool] to [target]'s ribcage." + user.visible_message(msg, self_msg) + + target.embryo_op_stage = 0 diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index 430f01c80fd..a3c046db523 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -2,6 +2,7 @@ gender = MALE var/list/stomach_contents = list() var/brain_op_stage = 0.0 + var/embryo_op_stage = 0 /* var/eye_op_stage = 0.0 var/appendix_op_stage = 0.0 From 48f84e711a12cdd50657af7d391bea5416b9cf7b Mon Sep 17 00:00:00 2001 From: cib Date: Tue, 13 Nov 2012 18:28:27 +0100 Subject: [PATCH 14/17] Added pain messages to alien surgery. --- code/WorkInProgress/surgery.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/WorkInProgress/surgery.dm b/code/WorkInProgress/surgery.dm index 748ffcfddd7..cf36046dec1 100644 --- a/code/WorkInProgress/surgery.dm +++ b/code/WorkInProgress/surgery.dm @@ -1032,6 +1032,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("[user] begins to cut through [target]'s ribcage with \the [tool].", \ "You begin to cut through [target]'s ribcage with \the [tool].") + target.custom_pain("Something hurts horribly in your chest!",1) end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("\blue [user] has cut through [target]'s ribcage open with \the [tool].", \ @@ -1056,6 +1057,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) var/msg = "[user] starts to force open the ribcage in [target]'s torso with \the [tool]." var/self_msg = "You start to force open the ribcage in [target]'s torso with \the [tool]." user.visible_message(msg, self_msg) + target.custom_pain("Something hurts horribly in your chest!",1) end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/msg = "\blue [user] forces open [target]'s ribcage with \the [tool]." @@ -1088,6 +1090,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) var/msg = "[user] starts to pull something out from [target]'s ribcage with \the [tool]." var/self_msg = "You start to pull something out from [target]'s ribcage with \the [tool]." user.visible_message(msg, self_msg) + target.custom_pain("Something hurts horribly in your chest!",1) end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("\red [user] rips the larva out of [target]'s ribcage!", @@ -1114,6 +1117,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) var/msg = "[user] starts bending [target]'s ribcage back into place with \the [tool]." var/self_msg = "You start bending [target]'s ribcage back into place with \the [tool]." user.visible_message(msg, self_msg) + target.custom_pain("Something hurts horribly in your chest!",1) end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/msg = "[user] bends [target]'s ribcage back into place with \the [tool]." @@ -1135,6 +1139,8 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) var/msg = "[user] starts applying \the [tool] to [target]'s ribcage." var/self_msg = "You start applying \the [tool] to [target]'s ribcage." user.visible_message(msg, self_msg) + target.custom_pain("Something hurts horribly in your chest!",1) + end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/msg = "[user] applied \the [tool] to [target]'s ribcage." From c1fb2766b7bfc3caf9f6620621c7cd4777f0698b Mon Sep 17 00:00:00 2001 From: cib Date: Tue, 13 Nov 2012 18:54:54 +0100 Subject: [PATCH 15/17] Increased the progression time for appendicitis and alien embryo. --- code/datums/diseases/alien_embryo.dm | 1 + code/datums/diseases/appendicitis.dm | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/code/datums/diseases/alien_embryo.dm b/code/datums/diseases/alien_embryo.dm index 0e9f41e8b50..91dcf517981 100644 --- a/code/datums/diseases/alien_embryo.dm +++ b/code/datums/diseases/alien_embryo.dm @@ -40,6 +40,7 @@ permeability_mod = 15//likely to infect can_carry = 0 var/gibbed = 0 + stage_minimum_age = 300 /datum/disease/alien_embryo/stage_act() ..() diff --git a/code/datums/diseases/appendicitis.dm b/code/datums/diseases/appendicitis.dm index 79374d24788..ee579a294d5 100644 --- a/code/datums/diseases/appendicitis.dm +++ b/code/datums/diseases/appendicitis.dm @@ -12,7 +12,7 @@ severity = "Medium" longevity = 1000 hidden = list(0, 1) - stage_minimum_age = 100 // at least 100 life ticks per stage + stage_minimum_age = 300 // at least 200 life ticks per stage /datum/disease/appendicitis/stage_act() ..() From 24004956197c7ffd5d19a89c0f35e6ede49fe240 Mon Sep 17 00:00:00 2001 From: Ater Ignis Date: Wed, 14 Nov 2012 00:45:21 +0400 Subject: [PATCH 16/17] seems i broke some >_< --- code/game/dna.dm | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/code/game/dna.dm b/code/game/dna.dm index 1af645e2942..d4628e6f9a7 100644 --- a/code/game/dna.dm +++ b/code/game/dna.dm @@ -395,6 +395,7 @@ M.dna.check_integrity() M.disabilities = 0 + M.sdisabilities = 0 var/old_mutations = M.mutations M.mutations = list() @@ -454,7 +455,7 @@ M << "\blue Your muscles hurt." M.mutations.Add(HULK) if (isblockon(getblock(M.dna.struc_enzymes, HEADACHEBLOCK,3),HEADACHEBLOCK)) - M.disabilities |= 2 + M.disabilities |= EPILEPSY M << "\red You get a headache." if (isblockon(getblock(M.dna.struc_enzymes, FAKEBLOCK,3),FAKEBLOCK)) M << "\red You feel strange." @@ -466,13 +467,13 @@ else randmutg(M) if (isblockon(getblock(M.dna.struc_enzymes, COUGHBLOCK,3),COUGHBLOCK)) - M.disabilities |= 4 + M.disabilities |= COUGHING M << "\red You start coughing." if (isblockon(getblock(M.dna.struc_enzymes, CLUMSYBLOCK,3),CLUMSYBLOCK)) M << "\red You feel lightheaded." M.mutations.Add(CLUMSY) if (isblockon(getblock(M.dna.struc_enzymes, TWITCHBLOCK,3),TWITCHBLOCK)) - M.disabilities |= 8 + M.disabilities |= TOURETTES M << "\red You twitch." if (isblockon(getblock(M.dna.struc_enzymes, XRAYBLOCK,3),XRAYBLOCK)) if(probinj(30,inj) || (XRAY in old_mutations)) @@ -482,25 +483,25 @@ M.see_invisible = 2 M.mutations.Add(XRAY) if (isblockon(getblock(M.dna.struc_enzymes, NERVOUSBLOCK,3),NERVOUSBLOCK)) - M.disabilities |= 16 + M.disabilities |= NERVOUS M << "\red You feel nervous." if (isblockon(getblock(M.dna.struc_enzymes, FIREBLOCK,3),FIREBLOCK)) if(probinj(30,inj) || (COLD_RESISTANCE in old_mutations)) M << "\blue Your body feels warm." M.mutations.Add(COLD_RESISTANCE) if (isblockon(getblock(M.dna.struc_enzymes, BLINDBLOCK,3),BLINDBLOCK)) - M.disabilities |= 128 + M.sdisabilities |= BLIND M << "\red You can't seem to see anything." if (isblockon(getblock(M.dna.struc_enzymes, TELEBLOCK,3),TELEBLOCK)) if(probinj(15,inj) || (TK in old_mutations)) M << "\blue You feel smarter." M.mutations.Add(TK) if (isblockon(getblock(M.dna.struc_enzymes, DEAFBLOCK,3),DEAFBLOCK)) - M.disabilities |= 32 + M.sdisabilities |= DEAF M.ear_deaf = 1 M << "\red Its kinda quiet.." if (isblockon(getblock(M.dna.struc_enzymes, GLASSESBLOCK,3),GLASSESBLOCK)) - M.disabilities |= 1 + M.disabilities |= NEARSIGHTED M << "Your eyes feel weird..." /* If you want the new mutations to work, UNCOMMENT THIS. From 2b56956d678ec0f79ca43e1402d0bf694c274b6f Mon Sep 17 00:00:00 2001 From: MrYeti Date: Tue, 13 Nov 2012 19:56:52 -0500 Subject: [PATCH 17/17] Added Smash Recipe Custom Item --- code/modules/customitems/item_defines.dm | 6 ++++++ config/custom_items.txt | 1 + 2 files changed, 7 insertions(+) diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index 396a97a79eb..35f43aed2ae 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -55,6 +55,12 @@ icon_state = "david_fanning_1" item_state = "david_fanning_1" +/obj/item/fluff/john_mckeever_1 //kirbyelder: John McKeever + name = "Suspicious Paper" + desc = "A piece of paper reading: Smash = 1/3 Leaf Juice, 1/3 Tricker, 1/3 Aajkli Extract" + icon_state = "paper" + item_state = "paper" + ////////////////////////////////// ////////// Usable Items ////////// ////////////////////////////////// diff --git a/config/custom_items.txt b/config/custom_items.txt index e7454b7555f..c5a4c37f99a 100644 --- a/config/custom_items.txt +++ b/config/custom_items.txt @@ -20,6 +20,7 @@ foolamancer: Edvin Telephosphor: /obj/item/clothing/head/fluff/edvin_telephospho furohman: Fay Sullivan: /obj/item/weapon/lighter/zippo/fluff/fay_sullivan_1 gvazdas: Sarah Carbrokes: /obj/item/fluff/sarah_carbrokes_1 jamini: Edwin Atweeke: /obj/item/clothing/suit/labcoat/fluff/burnt +kirbyelder: John McKeever: /obj/item/paper/fluff/john_mckeever_1 leonheart11: Johann Erzatz: /obj/item/weapon/reagent_containers/food/drinks/flask/fluff/johann_erzatz_1 lexusjjss: Lexus Langg: /obj/item/weapon/clipboard/fluff/smallnote, /obj/item/weapon/reagent_containers/food/drinks/flask/fluff/shinyflask lexusjjss: Zachary Tomlinson: /obj/item/weapon/clipboard/fluff/smallnote, /obj/item/weapon/reagent_containers/food/drinks/flask/fluff/shinyflask