diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 0492522389..4dca87cf99 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -68,10 +68,44 @@ src.opened = 1 for(var/mob/living/M in get_turf(src)) + + if(M.lying) return //No spamming this on people. + M.Weaken(5) M << "\red You topple as \the [src] moves under you!" - return 1 + if(prob(100)) + + var/mob/living/carbon/human/H = M + if(!istype(M)) + H << "\red You land heavily!" + M.adjustBruteLoss(rand(15,30)) + return + + var/datum/organ/external/affecting + + switch(pick(list("ankle","wrist","head","knee","elbow"))) + if("ankle") + affecting = H.get_organ(pick("l_foot", "r_foot")) + if("knee") + affecting = H.get_organ(pick("l_leg", "r_leg")) + if("wrist") + affecting = H.get_organ(pick("l_hand", "r_hand")) + if("elbow") + affecting = H.get_organ(pick("l_arm", "r_arm")) + if("head") + affecting = H.get_organ("head") + + if(affecting) + M << "\red You land heavily on your [affecting.display_name]!" + affecting.take_damage(rand(15,30), 0) + else + H << "\red You land heavily!" + H.adjustBruteLoss(rand(15,30)) + + H.UpdateDamageIcon() + H.updatehealth() + return /obj/structure/closet/crate/close() if(!src.opened) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 584aba3d5a..aac7a2eb26 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -451,14 +451,48 @@ if(!flip(get_cardinal_dir(usr,src))) usr << "It won't budge." - else - usr.visible_message("[usr] flips \the [src]!") + return + usr.visible_message("[usr] flips \the [src]!") for(var/mob/living/M in get_turf(src)) + + if(M.lying) return //No spamming this on people. + M.Weaken(5) M << "\red You topple as \the [src] moves under you!" + if(prob(100)) + + var/mob/living/carbon/human/H = M + if(!istype(M)) + H << "\red You land heavily!" + M.adjustBruteLoss(rand(15,30)) + return + + var/datum/organ/external/affecting + + switch(pick(list("ankle","wrist","head","knee","elbow"))) + if("ankle") + affecting = H.get_organ(pick("l_foot", "r_foot")) + if("knee") + affecting = H.get_organ(pick("l_leg", "r_leg")) + if("wrist") + affecting = H.get_organ(pick("l_hand", "r_hand")) + if("elbow") + affecting = H.get_organ(pick("l_arm", "r_arm")) + if("head") + affecting = H.get_organ("head") + + if(affecting) + M << "\red You land heavily on your [affecting.display_name]!" + affecting.take_damage(rand(15,30), 0) + else + H << "\red You land heavily!" + H.adjustBruteLoss(rand(15,30)) + + H.UpdateDamageIcon() + H.updatehealth() return /obj/structure/table/proc/unflipping_check(var/direction)