diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index 494c78bce30..26449d93f85 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -886,7 +886,9 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) /datum/uplink_item/stealthy_weapons/cqc name = "CQC Manual" - desc = "A manual that teaches a single user tactical Close-Quarters Combat before self-destructing. Does not restrict weapon usage, but cannot be used alongside Gloves of the North Star." + desc = "A manual that teaches a single user tactical Close-Quarters Combat before self-destructing. \ + Changes your unarmed damage to deal non-lethal stamina damage. \ + Does not restrict weapon usage, but cannot be used alongside Gloves of the North Star." reference = "CQC" item = /obj/item/CQC_manual cost = 13 diff --git a/code/modules/martial_arts/combos/cqc/consecutive.dm b/code/modules/martial_arts/combos/cqc/consecutive.dm index faea03ebf51..bca508b616f 100644 --- a/code/modules/martial_arts/combos/cqc/consecutive.dm +++ b/code/modules/martial_arts/combos/cqc/consecutive.dm @@ -8,7 +8,7 @@ target.visible_message("[user] strikes [target]'s abdomen, neck and back consecutively", \ "[user] strikes your abdomen, neck and back consecutively!") 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 diff --git a/code/modules/martial_arts/combos/cqc/kick.dm b/code/modules/martial_arts/combos/cqc/kick.dm index c91416ad124..c509a64134b 100644 --- a/code/modules/martial_arts/combos/cqc/kick.dm +++ b/code/modules/martial_arts/combos/cqc/kick.dm @@ -8,17 +8,17 @@ if(!IS_HORIZONTAL(target) && user != target) target.visible_message("[user] kicks [target] back!", \ "[user] kicks you back!") - 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("[user] kicks [target]'s head, disorienting [target.p_them()]!", \ "[user] kicks your head, disorienting you!") - 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) diff --git a/code/modules/martial_arts/combos/cqc/pressure.dm b/code/modules/martial_arts/combos/cqc/pressure.dm index e47c2dc4257..96b482b22ab 100644 --- a/code/modules/martial_arts/combos/cqc/pressure.dm +++ b/code/modules/martial_arts/combos/cqc/pressure.dm @@ -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 diff --git a/code/modules/martial_arts/combos/cqc/restrain.dm b/code/modules/martial_arts/combos/cqc/restrain.dm index d43606ade98..d8c563b7fee 100644 --- a/code/modules/martial_arts/combos/cqc/restrain.dm +++ b/code/modules/martial_arts/combos/cqc/restrain.dm @@ -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("[user] locks [target] into a restraining position!", \ "[user] locks you into a restraining position!") - 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) diff --git a/code/modules/martial_arts/combos/cqc/slam.dm b/code/modules/martial_arts/combos/cqc/slam.dm index 091b842e4de..eaa5f88d29f 100644 --- a/code/modules/martial_arts/combos/cqc/slam.dm +++ b/code/modules/martial_arts/combos/cqc/slam.dm @@ -9,8 +9,8 @@ return MARTIAL_COMBO_FAIL target.visible_message("[user] slams [target] into the ground!", \ "[user] slams you into the ground!") - 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) diff --git a/code/modules/martial_arts/cqc.dm b/code/modules/martial_arts/cqc.dm index a16e967259a..dba941d1624 100644 --- a/code/modules/martial_arts/cqc.dm +++ b/code/modules/martial_arts/cqc.dm @@ -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("[A] knocks you out cold!") @@ -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("[A] [picked_hit_type] [D]!", \ "[A] [picked_hit_type] you!") 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("[A] leg sweeps [D]!", \ "[A] leg sweeps you!") - 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("[A] strikes [D]'s jaw with their hand!", \ "[A] strikes your jaw, disorienting you!") - 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("[A] attempted to disarm [D]!", "[A] attempted to disarm [D]!") - 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