mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-21 02:57:48 +01:00
CQC Balancing Tweaks/Buffs (#19493)
* Legsweep now picks you up from resting * Makes the description more descriptive * Buffs damage numbers all around * Makes CQC much quieter and stealthier * Okay maybe 25 is a bit too much * Restrain won't just instantly break anymore * Various tweaks after discussing with others * Update code/modules/martial_arts/combos/cqc/restrain.dm One day I'll learn spacing guidelines Co-authored-by: Edan <29551695+Edan52@users.noreply.github.com> Co-authored-by: Edan <29551695+Edan52@users.noreply.github.com>
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
target.visible_message("<span class='warning'>[user] strikes [target]'s abdomen, neck and back consecutively</span>", \
|
||||
"<span class='userdanger'>[user] strikes your abdomen, neck and back consecutively!</span>")
|
||||
playsound(get_turf(target), 'sound/weapons/cqchit2.ogg', 50, 1, -1)
|
||||
target.adjustStaminaLoss(60)
|
||||
target.adjustStaminaLoss(70)
|
||||
target.apply_damage(20, BRUTE)
|
||||
add_attack_logs(user, target, "Melee attacked with martial-art [src] : Consecutive", ATKLOG_ALL)
|
||||
return MARTIAL_COMBO_DONE
|
||||
|
||||
@@ -8,17 +8,17 @@
|
||||
if(!IS_HORIZONTAL(target) && user != target)
|
||||
target.visible_message("<span class='warning'>[user] kicks [target] back!</span>", \
|
||||
"<span class='userdanger'>[user] kicks you back!</span>")
|
||||
playsound(get_turf(user), 'sound/weapons/cqchit1.ogg', 50, 1, -1)
|
||||
playsound(get_turf(user), 'sound/weapons/cqchit1.ogg', 25, 1, -1)
|
||||
var/atom/throw_target = get_edge_target_turf(target, user.dir)
|
||||
target.throw_at(throw_target, 1, 14, user)
|
||||
target.apply_damage(15, STAMINA)
|
||||
target.apply_damage(25, STAMINA)
|
||||
target.Slowed(5 SECONDS)
|
||||
add_attack_logs(user, target, "Melee attacked with martial-art [src] : Kick", ATKLOG_ALL)
|
||||
. = MARTIAL_COMBO_DONE
|
||||
else if(IS_HORIZONTAL(target) && user != target)
|
||||
target.visible_message("<span class='warning'>[user] kicks [target]'s head, disorienting [target.p_them()]!</span>", \
|
||||
"<span class='userdanger'>[user] kicks your head, disorienting you!</span>")
|
||||
playsound(get_turf(user), 'sound/weapons/genhit1.ogg', 50, 1, -1)
|
||||
playsound(get_turf(user), 'sound/weapons/genhit1.ogg', 25, 1, -1)
|
||||
var/atom/throw_target = get_edge_target_turf(target, user.dir)
|
||||
target.throw_at(throw_target, 1, 8, user)
|
||||
target.adjustStaminaLoss(40)
|
||||
|
||||
@@ -9,6 +9,6 @@
|
||||
if(I && target.drop_item())
|
||||
user.put_in_hands(I)
|
||||
target.adjustStaminaLoss(40)
|
||||
playsound(get_turf(user), 'sound/weapons/cqchit1.ogg', 50, 1, -1)
|
||||
playsound(get_turf(user), 'sound/weapons/cqchit1.ogg', 5, 1, -1)
|
||||
add_attack_logs(user, target, "Melee attacked with martial-art [src] : Pressure", ATKLOG_ALL)
|
||||
return MARTIAL_COMBO_DONE
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/datum/martial_combo/cqc/restrain
|
||||
name = "Restrain"
|
||||
steps = list(MARTIAL_COMBO_STEP_GRAB, MARTIAL_COMBO_STEP_GRAB)
|
||||
explaination_text = "Locks opponents into a restraining position, disarm to begin a chokehold that will knock them out."
|
||||
explaination_text = "Locks opponents into a restraining position that is more effective the more stamina damage the target has taken, \
|
||||
disarm to begin a chokehold that will knock them out."
|
||||
combo_text_override = "Grab, switch hands, Grab"
|
||||
|
||||
/datum/martial_combo/cqc/restrain/perform_combo(mob/living/carbon/human/user, mob/living/target, datum/martial_art/MA)
|
||||
@@ -13,8 +14,16 @@
|
||||
if(!target.stat)
|
||||
target.visible_message("<span class='warning'>[user] locks [target] into a restraining position!</span>", \
|
||||
"<span class='userdanger'>[user] locks you into a restraining position!</span>")
|
||||
target.adjustStaminaLoss(20)
|
||||
target.Stun(3 SECONDS)
|
||||
var/stam_damage = target.getStaminaLoss()
|
||||
switch(stam_damage)
|
||||
if(0 to 40)
|
||||
target.Immobilize(4 SECONDS)
|
||||
target.adjustStaminaLoss(35)
|
||||
if(41 to 80)
|
||||
target.Stun(6 SECONDS)
|
||||
if(81 to 120)
|
||||
target.adjustStaminaLoss(40)
|
||||
|
||||
CQC.restraining = TRUE
|
||||
addtimer(CALLBACK(CQC, /datum/martial_art/cqc/.proc/drop_restraining), 5 SECONDS, TIMER_UNIQUE)
|
||||
add_attack_logs(user, target, "Melee attacked with martial-art [src] : Restrain", ATKLOG_ALL)
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
return MARTIAL_COMBO_FAIL
|
||||
target.visible_message("<span class='warning'>[user] slams [target] into the ground!</span>", \
|
||||
"<span class='userdanger'>[user] slams you into the ground!</span>")
|
||||
playsound(get_turf(user), 'sound/weapons/slam.ogg', 50, 1, -1)
|
||||
target.apply_damage(20, STAMINA)
|
||||
playsound(get_turf(user), 'sound/weapons/slam.ogg', 40, 1, -1)
|
||||
target.apply_damage(50, STAMINA)
|
||||
target.KnockDown(7 SECONDS)
|
||||
target.SetConfused(12 SECONDS)
|
||||
add_attack_logs(user, target, "Melee attacked with martial-art [src] : Slam", ATKLOG_ALL)
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
var/damage_multiplier = 1 + A.getStaminaLoss() / 100 //The chokehold is more effective the more tired the target is.
|
||||
while(do_mob(A, D, 2 SECONDS) && chokehold_active)
|
||||
D.apply_damage(10 * damage_multiplier, OXY)
|
||||
D.SetLoseBreath(3 SECONDS)
|
||||
if(D.getOxyLoss() >= 50 || D.health <= 20)
|
||||
D.visible_message("<span class ='danger>[A] puts [D] to sleep!</span>", \
|
||||
"<span class='userdanger'>[A] knocks you out cold!</span>")
|
||||
@@ -44,7 +45,7 @@
|
||||
MARTIAL_ARTS_ACT_CHECK
|
||||
var/obj/item/grab/G = D.grabbedby(A, 1)
|
||||
if(G)
|
||||
D.Stun(1 SECONDS) //Catch them off guard, but not long enough to do too much nonsense
|
||||
D.Immobilize(1 SECONDS) //Catch them off guard, but not long enough to do too much nonsense
|
||||
add_attack_logs(A, D, "Melee attacked with martial-art [src] : grabbed", ATKLOG_ALL)
|
||||
|
||||
return TRUE
|
||||
@@ -54,24 +55,25 @@
|
||||
add_attack_logs(A, D, "Melee attacked with martial-art [src]", ATKLOG_ALL)
|
||||
A.do_attack_animation(D)
|
||||
var/picked_hit_type = pick("CQC'd", "neck chopped", "gut punched", "Big Bossed")
|
||||
var/bonus_damage = 13
|
||||
var/bonus_damage = 20
|
||||
if(IS_HORIZONTAL(D))
|
||||
bonus_damage += 9 //Being stomped on doesn't feel good.
|
||||
bonus_damage += 10 //Being stomped on doesn't feel good.
|
||||
picked_hit_type = "stomps on"
|
||||
D.apply_damage(bonus_damage, STAMINA)
|
||||
if(picked_hit_type == "kicks" || picked_hit_type == "stomps on")
|
||||
playsound(get_turf(D), 'sound/weapons/cqchit2.ogg', 50, 1, -1)
|
||||
playsound(get_turf(D), 'sound/weapons/cqchit2.ogg', 10, 1, -1)
|
||||
else
|
||||
playsound(get_turf(D), 'sound/weapons/cqchit1.ogg', 50, 1, -1)
|
||||
playsound(get_turf(D), 'sound/weapons/cqchit1.ogg', 10, 1, -1)
|
||||
D.visible_message("<span class='danger'>[A] [picked_hit_type] [D]!</span>", \
|
||||
"<span class='userdanger'>[A] [picked_hit_type] you!</span>")
|
||||
add_attack_logs(A, D, "Melee attacked with martial-art [src] : [picked_hit_type]", ATKLOG_ALL)
|
||||
if(IS_HORIZONTAL(A) && !IS_HORIZONTAL(D))
|
||||
D.visible_message("<span class='warning'>[A] leg sweeps [D]!", \
|
||||
"<span class='userdanger'>[A] leg sweeps you!</span>")
|
||||
playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1)
|
||||
D.KnockDown(3 SECONDS)
|
||||
playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 10, 1, -1)
|
||||
D.KnockDown(5 SECONDS)
|
||||
A.SetKnockDown(0 SECONDS)
|
||||
A.resting = FALSE
|
||||
A.stand_up() //Quickly get up like the cool dude you are.
|
||||
add_attack_logs(A, D, "Melee attacked with martial-art [src] : Leg sweep", ATKLOG_ALL)
|
||||
return TRUE
|
||||
@@ -79,7 +81,7 @@
|
||||
/datum/martial_art/cqc/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
MARTIAL_ARTS_ACT_CHECK
|
||||
var/obj/item/grab/G = A.get_inactive_hand()
|
||||
if(restraining && istype(G) && G.affecting == D)
|
||||
if(restraining && istype(G) && G.affecting == D && !chokehold_active)
|
||||
start_chokehold(A, D)
|
||||
return TRUE
|
||||
else
|
||||
@@ -88,12 +90,12 @@
|
||||
if(!IS_HORIZONTAL(D) || !restraining)
|
||||
D.visible_message("<span class='warning'>[A] strikes [D]'s jaw with their hand!</span>", \
|
||||
"<span class='userdanger'>[A] strikes your jaw, disorienting you!</span>")
|
||||
playsound(get_turf(D), 'sound/weapons/cqchit1.ogg', 50, TRUE, -1)
|
||||
playsound(get_turf(D), 'sound/weapons/cqchit1.ogg', 5, TRUE, -1)
|
||||
D.SetSlur(4 SECONDS)
|
||||
D.apply_damage(8, STAMINA)
|
||||
D.apply_damage(15, STAMINA)
|
||||
else
|
||||
D.visible_message("<span class='danger'>[A] attempted to disarm [D]!</span>", "<span class='userdanger'>[A] attempted to disarm [D]!</span>")
|
||||
playsound(D, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
|
||||
playsound(D, 'sound/weapons/punchmiss.ogg', 5, 1, -1)
|
||||
|
||||
add_attack_logs(A, D, "Disarmed with martial-art [src]", ATKLOG_ALL)
|
||||
return TRUE
|
||||
|
||||
Reference in New Issue
Block a user