From 5c5f452cd4ac09a0ab490ef5076810a695b2ce55 Mon Sep 17 00:00:00 2001 From: cib Date: Mon, 27 Feb 2012 00:44:25 -0800 Subject: [PATCH] Changes to autopsy. - Increased the chance to get the murder weapon right. - New damage types detectable by autopsy: Hot air(fire), explosions, electrocution. --- .../objects/items/weapons/surgery_tools.dm | 9 +++++-- code/modules/mob/living/carbon/carbon.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 25 ++++++++++--------- .../mob/living/carbon/human/human_damage.dm | 4 +-- code/modules/mob/living/carbon/human/life.dm | 14 ++++++----- code/modules/mob/living/damage_procs.dm | 4 +-- code/modules/mob/living/living.dm | 4 +-- code/modules/mob/organ/organ.dm | 4 ++- 8 files changed, 38 insertions(+), 28 deletions(-) diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm index 0960eb0abbb..80739452518 100644 --- a/code/game/objects/items/weapons/surgery_tools.dm +++ b/code/game/objects/items/weapons/surgery_tools.dm @@ -337,7 +337,7 @@ CIRCULAR SAW if(!W.pretend_weapon) // the more hits, the more likely it is that we get the right weapon type - if(prob(W.hits * 10 + W.damage)) + if(prob(50 + W.hits * 10 + W.damage)) W.pretend_weapon = W.weapon else W.pretend_weapon = pick("mechanical toolbox", "wirecutters", "revolver", "crowbar", "fire extinguisher", "tomato soup", "oxygen tank", "emergency oxygen tank", "laser", "bullet") @@ -357,8 +357,13 @@ CIRCULAR SAW /obj/item/weapon/autopsy_scanner/verb/print_data() set src in view(usr, 1) + set name = "Print Data" if(usr.stat) - src << "No." + usr << "No." + return + + if(wdata.len == 0) + usr << "* There is no data about any wounds in the scanners database. You may have to scan more bodyparts, or otherwise this wound type may not be in the scanner's database." return var/scan_data = "" diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 4d10672be6b..066810c6dea 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -124,7 +124,7 @@ shock_damage *= siemens_coeff if (shock_damage<1) return 0 - src.take_overall_damage(0,shock_damage) + src.take_overall_damage(0,shock_damage,"Electrocution") //src.burn_skin(shock_damage) //src.adjustFireLoss(shock_damage) //burn_skin will do this for us //src.updatehealth() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 62395c2f492..f15dc102e9f 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -291,19 +291,20 @@ for(var/name in organs) var/datum/organ/external/temp = organs[name] + var/au_msg = "Explosion" // for autopsy switch(temp.name) if("head") - temp.take_damage(b_loss * 0.2, f_loss * 0.2) + temp.take_damage(b_loss * 0.2, f_loss * 0.2, 0, used_weapon = au_msg) if("chest") - temp.take_damage(b_loss * 0.4, f_loss * 0.4) + temp.take_damage(b_loss * 0.4, f_loss * 0.4, 0, used_weapon = au_msg) if("l_arm") - temp.take_damage(b_loss * 0.05, f_loss * 0.05) + temp.take_damage(b_loss * 0.05, f_loss * 0.05, 0, used_weapon = au_msg) if("r_arm") - temp.take_damage(b_loss * 0.05, f_loss * 0.05) + temp.take_damage(b_loss * 0.05, f_loss * 0.05, 0, used_weapon = au_msg) if("l_leg") - temp.take_damage(b_loss * 0.05, f_loss * 0.05) + temp.take_damage(b_loss * 0.05, f_loss * 0.05, 0, used_weapon = au_msg) if("r_leg") - temp.take_damage(b_loss * 0.05, f_loss * 0.05) + temp.take_damage(b_loss * 0.05, f_loss * 0.05, 0, used_weapon = au_msg) UpdateDamageIcon() @@ -2373,7 +2374,7 @@ It can still be worn/put on as normal. UpdateDamageIcon() // damage MANY external organs, in random order -/mob/living/carbon/human/take_overall_damage(var/brute, var/burn) +/mob/living/carbon/human/take_overall_damage(var/brute, var/burn, var/used_weapon = null) var/list/datum/organ/external/parts = get_damageable_organs() while(parts.len && (brute>0 || burn>0) ) @@ -2382,7 +2383,7 @@ It can still be worn/put on as normal. var/brute_was = picked.brute_dam var/burn_was = picked.burn_dam - picked.take_damage(brute,burn) + picked.take_damage(brute,burn, 0, used_weapon) brute -= (picked.brute_dam-brute_was) burn -= (picked.burn_dam-burn_was) @@ -2463,9 +2464,9 @@ It can still be worn/put on as normal. amount+= O.brute_dam return amount -/mob/living/carbon/human/adjustBruteLoss(var/amount) +/mob/living/carbon/human/adjustBruteLoss(var/amount, var/used_weapon = null) if(amount > 0) - take_overall_damage(amount, 0) + take_overall_damage(amount, 0, used_weapon) else heal_overall_damage(-amount, 0) @@ -2476,9 +2477,9 @@ It can still be worn/put on as normal. amount+= O.burn_dam return amount -/mob/living/carbon/human/adjustFireLoss(var/amount) +/mob/living/carbon/human/adjustFireLoss(var/amount,var/used_weapon = null) if(amount > 0) - take_overall_damage(0, amount) + take_overall_damage(0, amount, used_weapon) else heal_overall_damage(0, -amount) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 013050d9f9d..175847ef982 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -58,9 +58,9 @@ switch(damagetype) if(BRUTE) - organ.take_damage(damage, 0, sharp) + organ.take_damage(damage, 0, sharp, used_weapon) if(BURN) - organ.take_damage(0, damage, sharp) + organ.take_damage(0, damage, sharp, used_weapon) if(used_weapon) organ.add_wound(used_weapon, damage) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index ad3649f9ead..ca5683c090c 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -720,17 +720,19 @@ else discomfort *= 1.5 //Dangercon 2011 - Upping damage by use of magic numbers - Errorage + var/au_msg = "High Temperature" + switch(body_part) if(HEAD) - apply_damage(2.5*discomfort, BURN, "head") + apply_damage(2.5*discomfort, BURN, "head", used_weapon = au_msg) if(UPPER_TORSO) - apply_damage(2.5*discomfort, BURN, "chest") + apply_damage(2.5*discomfort, BURN, "chest", used_weapon = au_msg) if(LEGS) - apply_damage(0.6*discomfort, BURN, "l_leg") - apply_damage(0.6*discomfort, BURN, "r_leg") + apply_damage(0.6*discomfort, BURN, "l_leg", used_weapon = au_msg) + apply_damage(0.6*discomfort, BURN, "r_leg", used_weapon = au_msg) if(ARMS) - apply_damage(0.4*discomfort, BURN, "l_arm") - apply_damage(0.4*discomfort, BURN, "r_arm") + apply_damage(0.4*discomfort, BURN, "l_arm", used_weapon = au_msg) + apply_damage(0.4*discomfort, BURN, "r_arm", used_weapon = au_msg) handle_chemicals_in_body() if(reagents && stat != 2) reagents.metabolize(src) diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index ecc6a41fff8..85fc051579c 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -12,10 +12,10 @@ if(!damage || (blocked >= 2)) return 0 switch(damagetype) if(BRUTE) - adjustBruteLoss(damage/(blocked+1)) + adjustBruteLoss(damage/(blocked+1), used_weapon) if(BURN) if(mutations & COLD_RESISTANCE) damage = 0 - adjustFireLoss(damage/(blocked+1)) + adjustFireLoss(damage/(blocked+1), used_weapon) if(TOX) adjustToxLoss(damage/(blocked+1)) if(OXY) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 32b88c92135..865c29e217c 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -15,7 +15,7 @@ //sort of a legacy burn method for /electrocute, /shock, and the e_chair -/mob/living/proc/burn_skin(burn_amount) +/mob/living/proc/burn_skin(burn_amount, used_weapon = null) if(istype(src, /mob/living/carbon/human)) if(src.mutations2 & mShock) return 0 @@ -28,7 +28,7 @@ for(var/name in H.organs) var/datum/organ/external/affecting = H.organs[name] if(!affecting) continue - if(affecting.take_damage(0, divided_damage+extradam)) + if(affecting.take_damage(0, divided_damage+extradam, 0, used_weapon)) extradam = 0 else extradam += divided_damage diff --git a/code/modules/mob/organ/organ.dm b/code/modules/mob/organ/organ.dm index 1e74a8c9d19..f474a4a3049 100644 --- a/code/modules/mob/organ/organ.dm +++ b/code/modules/mob/organ/organ.dm @@ -71,7 +71,7 @@ owner = H H.organs[name] = src - proc/take_damage(brute, burn, sharp) + proc/take_damage(brute, burn, sharp, used_weapon = null) if((brute <= 0) && (burn <= 0)) return 0 if(destroyed) @@ -117,6 +117,8 @@ if(broken) owner.emote("scream") + if(used_weapon) add_wound(used_weapon, brute + burn) + var/result = src.update_icon() return result