From 95f05fbaeaeb9d38f4af41168c04319f50cec2f5 Mon Sep 17 00:00:00 2001 From: "giacomand@gmail.com" Date: Sat, 25 Aug 2012 21:01:39 +0000 Subject: [PATCH] -Changed choking. You have to stand still while lethally choking someone. It takes time to get into that lethal choke. When you are lethaling choking someone, they are still concious until the lack of oxygen knocks them out. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4542 316c924e-a436-60f5-8080-3fe189b3f50e --- code/modules/mob/mob_grab.dm | 50 +++++++++++++++++++++++++++--------- html/changelog.html | 1 + 2 files changed, 39 insertions(+), 12 deletions(-) diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index 31a79218fb8..22a0571c045 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -7,9 +7,13 @@ var/atom/movable/structure = null // if the grab is not grabbing a mob var/mob/assailant = null var/state = 1.0 - var/killing = 0.0 + + var/killing = 0.0 // 1 = about to kill, 2 = killing + var/kill_loc = null + var/allow_upgrade = 1.0 var/last_suffocate = 1.0 + layer = 21 abstract = 1.0 item_state = "nothing" @@ -94,7 +98,6 @@ for(var/obj/item/weapon/grab/G in affecting.grabbed_by) if (G.state == 2) allow_upgrade = 0 - //Foreach goto(341) if (allow_upgrade) hud1.icon_state = "reinforce" else @@ -102,9 +105,15 @@ else if (!( affecting.buckled )) affecting.loc = assailant.loc - if ((killing && state == 3)) - affecting.Stun(5) - affecting.Paralyse(3) + if ((killing == 2 && state == 3)) + if(assailant.loc != kill_loc) + for(var/mob/O in viewers(assailant, null)) + O.show_message(text("\red [] lost his tightened grip on []'s neck!", assailant, affecting), 1) + killing = 0 + hud1.icon_state = "disarm/kill" + return + affecting.Weaken(3) + affecting.Stun(3) // It will hamper your voice, being choked and all. affecting.losebreath = min(affecting.losebreath + 2, 3) return @@ -112,6 +121,8 @@ /obj/item/weapon/grab/proc/s_click(obj/screen/S as obj) if (!affecting) return + if(killing) + return if (assailant.next_move > world.time) return if ((!( assailant.canmove ) || assailant.lying)) @@ -144,6 +155,9 @@ if ((!( assailant.canmove ) || assailant.lying)) del(src) return + if(killing) + return + switch(S.id) if(1.0) if (state < 2) @@ -196,9 +210,22 @@ hud1.icon_state = "disarm/kill" hud1.name = "disarm/kill" else - if (state >= 3) - killing = !( killing ) - if (killing) + if (state >= 3 && !killing) + for(var/mob/O in viewers(assailant, null)) + O.show_message(text("\red [] starts to tighten his grip on []'s neck!", assailant, affecting), 1) + hud1.icon_state = "disarm/kill1" + killing = 1 + if(do_after(assailant, 50)) + if(killing == 2) + return + if(!affecting) + del(src) + return + if ((!( assailant.canmove ) || assailant.lying)) + del(src) + return + killing = 2 + kill_loc = assailant.loc for(var/mob/O in viewers(assailant, null)) O.show_message(text("\red [] has tightened his grip on []'s neck!", assailant, affecting), 1) affecting.attack_log += text("\[[time_stamp()]\] Has been strangled (kill intent) by [assailant.name] ([assailant.ckey])") @@ -207,12 +234,11 @@ assailant.next_move = world.time + 10 affecting.losebreath += 1 - hud1.icon_state = "disarm/kill1" else - hud1.icon_state = "disarm/kill" for(var/mob/O in viewers(assailant, null)) - O.show_message(text("\red [] has loosened the grip on []'s neck!", assailant, affecting), 1) - else + O.show_message(text("\red [] was unable to tighten his grip on []'s neck!", assailant, affecting), 1) + killing = 0 + hud1.icon_state = "disarm/kill" return diff --git a/html/changelog.html b/html/changelog.html index 71b0d6d6bb1..3f3e11280f1 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -71,6 +71,7 @@ should be listed in the changelog upon commit tho. Thanks. -->