Changes to autopsy.

- Increased the chance to get the murder weapon right.
- New damage types detectable by autopsy: Hot air(fire), explosions, electrocution.
This commit is contained in:
cib
2012-02-27 00:44:25 -08:00
parent 2c59cbd71d
commit 5c5f452cd4
8 changed files with 38 additions and 28 deletions
+1 -1
View File
@@ -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()
+13 -12
View File
@@ -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)
@@ -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)
+8 -6
View File
@@ -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)
+2 -2
View File
@@ -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)
+2 -2
View File
@@ -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
+3 -1
View File
@@ -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