diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm index 0960eb0abb..8073945251 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 4d10672be6..066810c6de 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 62395c2f49..f15dc102e9 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 013050d9f9..175847ef98 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 ad3649f9ea..ca5683c090 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 ecc6a41fff..85fc051579 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 32b88c9213..865c29e217 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 1e74a8c9d1..f474a4a304 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