mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-27 15:01:04 +01:00
Updates knifing
Fixes weirdness with knifing where attempting to knife someone before `world.time >= (G.last_action + 20)` could be met. Knifing damage scales with weapon force and an attempted measure of throat protection. Knifing switches on harm intent.
This commit is contained in:
@@ -34,23 +34,6 @@ attacked_by() will handle hitting/missing/logging as it does now, and will call
|
||||
|
||||
if(!istype(M) || (can_operate(M) && do_surgery(M,user,src))) return 0
|
||||
|
||||
// Knifing
|
||||
if(edge)
|
||||
for(var/obj/item/weapon/grab/G in M.grabbed_by)
|
||||
if(G.assailant == user && G.state >= GRAB_NECK && world.time >= (G.last_action + 20))
|
||||
//TODO: better alternative for applying damage multiple times? Nice knifing sound?
|
||||
M.apply_damage(20, BRUTE, "head", 0, sharp=sharp, edge=edge)
|
||||
M.apply_damage(20, BRUTE, "head", 0, sharp=sharp, edge=edge)
|
||||
M.apply_damage(20, BRUTE, "head", 0, sharp=sharp, edge=edge)
|
||||
M.adjustOxyLoss(60) // Brain lacks oxygen immediately, pass out
|
||||
flick(G.hud.icon_state, G.hud)
|
||||
G.last_action = world.time
|
||||
user.visible_message("<span class='danger'>[user] slit [M]'s throat open with \the [name]!</span>")
|
||||
user.attack_log += "\[[time_stamp()]\]<font color='red'> Knifed [M.name] ([M.ckey]) with [name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(damtype)])</font>"
|
||||
M.attack_log += "\[[time_stamp()]\]<font color='orange'> Got knifed by [user.name] ([user.ckey]) with [name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(damtype)])</font>"
|
||||
msg_admin_attack("[key_name(user)] knifed [key_name(M)] with [name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(damtype)])" )
|
||||
return
|
||||
|
||||
/////////////////////////
|
||||
user.lastattacked = M
|
||||
M.lastattacker = user
|
||||
@@ -61,6 +44,12 @@ attacked_by() will handle hitting/missing/logging as it does now, and will call
|
||||
msg_admin_attack("[key_name(user)] attacked [key_name(M)] with [name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(damtype)])" )
|
||||
/////////////////////////
|
||||
|
||||
// Attacking someone with a weapon while they are neck-grabbed
|
||||
if(user.a_intent == I_HURT)
|
||||
for(var/obj/item/weapon/grab/G in M.grabbed_by)
|
||||
if(G.assailant == user && G.state >= GRAB_NECK)
|
||||
M.attack_throat(src, G, user)
|
||||
|
||||
var/power = force
|
||||
if(HULK in user.mutations)
|
||||
power *= 2
|
||||
@@ -72,7 +61,7 @@ attacked_by() will handle hitting/missing/logging as it does now, and will call
|
||||
|
||||
// Handle striking to cripple.
|
||||
var/dislocation_str
|
||||
if(user.a_intent == "disarm")
|
||||
if(user.a_intent == I_DISARM)
|
||||
dislocation_str = H.attack_joint(src, user, def_zone)
|
||||
if(H.attacked_by(src, user, def_zone) && hitsound)
|
||||
playsound(loc, hitsound, 50, 1, -1)
|
||||
|
||||
Reference in New Issue
Block a user