diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm
index 61c1e8df625..5ce793536a4 100644
--- a/code/datums/uplink_item.dm
+++ b/code/datums/uplink_item.dm
@@ -853,7 +853,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
Unable to be understood by vampire and changeling agents."
reference = "SCS"
item = /obj/item/sleeping_carp_scroll
- cost = 17
+ cost = 13
excludefrom = list(/datum/game_mode/nuclear)
refundable = TRUE
cant_discount = TRUE
diff --git a/code/modules/martial_arts/combos/sleeping_carp/back_kick.dm b/code/modules/martial_arts/combos/sleeping_carp/back_kick.dm
deleted file mode 100644
index 3ebaa191e23..00000000000
--- a/code/modules/martial_arts/combos/sleeping_carp/back_kick.dm
+++ /dev/null
@@ -1,18 +0,0 @@
-/datum/martial_combo/sleeping_carp/back_kick
- name = "Back Kick"
- steps = list(MARTIAL_COMBO_STEP_HARM, MARTIAL_COMBO_STEP_GRAB)
- explaination_text = "Opponent must be facing away. Knocks down."
-
-/datum/martial_combo/sleeping_carp/back_kick/perform_combo(mob/living/carbon/human/user, mob/living/target, datum/martial_art/MA)
- if(user.dir == target.dir && !target.stat && !target.IsWeakened())
- user.do_attack_animation(target, ATTACK_EFFECT_KICK)
- target.visible_message("[user] kicks [target] in the back!", \
- "[user] kicks you in the back, making you stumble and fall!")
- step_to(target,get_step(target,target.dir),1)
- target.Weaken(4)
- playsound(get_turf(target), 'sound/weapons/punch1.ogg', 50, 1, -1)
- add_attack_logs(user, target, "Melee attacked with martial-art [src] : Back Kick", ATKLOG_ALL)
- if(prob(80))
- user.say(pick("SURRPRIZU!","BACK STRIKE!","WOPAH!", "WATAAH", "ZOTA!", "Never turn your back to the enemy!"))
- return MARTIAL_COMBO_DONE
- return MARTIAL_COMBO_DONE_BASIC_HIT
diff --git a/code/modules/martial_arts/combos/sleeping_carp/crashing_kick.dm b/code/modules/martial_arts/combos/sleeping_carp/crashing_kick.dm
new file mode 100644
index 00000000000..80765922114
--- /dev/null
+++ b/code/modules/martial_arts/combos/sleeping_carp/crashing_kick.dm
@@ -0,0 +1,18 @@
+/datum/martial_combo/sleeping_carp/crashing_kick
+ name = "Crashing Waves Kick"
+ steps = list(MARTIAL_COMBO_STEP_HARM, MARTIAL_COMBO_STEP_GRAB)
+ explaination_text = "Kicks the target square in the chest. Knocks down."
+
+/datum/martial_combo/sleeping_carp/crashing_kick/perform_combo(mob/living/carbon/human/user, mob/living/target, datum/martial_art/MA)
+ if(!target.stat && !target.IsWeakened())
+ user.do_attack_animation(target, ATTACK_EFFECT_KICK)
+ target.visible_message("[user] kicks [target] in the chest!",
+ "[user] kicks you in the chest, making you stumble and fall!")
+ step_to(target, get_step (target, target.dir), 1)
+ target.Weaken(4)
+ playsound(target, 'sound/weapons/punch1.ogg', 50, TRUE, -1)
+ add_attack_logs(user, target, "Melee attacked with martial-art [src] : Crashing Kick", ATKLOG_ALL)
+ if(prob(80))
+ user.say(pick("SURRPRIZU!", "WOPAH!", "WATAAH", "ZOTA!", "SOLE STRIKE!"))
+ return MARTIAL_COMBO_DONE
+ return MARTIAL_COMBO_DONE_BASIC_HIT
diff --git a/code/modules/martial_arts/combos/sleeping_carp/stomach_knee.dm b/code/modules/martial_arts/combos/sleeping_carp/stomach_knee.dm
index 312e575003d..b3fbd1cfaab 100644
--- a/code/modules/martial_arts/combos/sleeping_carp/stomach_knee.dm
+++ b/code/modules/martial_arts/combos/sleeping_carp/stomach_knee.dm
@@ -10,7 +10,7 @@
target.visible_message("[user] knees [target] in the stomach!", \
"[user] winds you with a knee in the stomach!")
target.audible_message("[target] gags!")
- target.AdjustLoseBreath(3)
+ target.AdjustLoseBreath(4)
target.Stun(2)
playsound(get_turf(target), 'sound/weapons/punch1.ogg', 50, 1, -1)
add_attack_logs(user, target, "Melee attacked with martial-art [src] : Stomach Knee", ATKLOG_ALL)
diff --git a/code/modules/martial_arts/martial.dm b/code/modules/martial_arts/martial.dm
index 15f4b7ac837..bef5fe73ef2 100644
--- a/code/modules/martial_arts/martial.dm
+++ b/code/modules/martial_arts/martial.dm
@@ -6,19 +6,31 @@
var/streak = ""
var/max_streak_length = 6
var/temporary = FALSE
- var/datum/martial_art/base = null // The permanent style
- var/deflection_chance = 0 //Chance to deflect projectiles
- var/block_chance = 0 //Chance to block melee attacks using items while on throw mode.
+ /// The permanent style
+ var/datum/martial_art/base = null
+ /// Chance to deflect projectiles while on throw mode
+ var/deflection_chance = 0
+ /// Can it reflect projectiles in a random direction?
+ var/reroute_deflection = FALSE
+ ///Chance to block melee attacks using items while on throw mode.
+ var/block_chance = 0
var/help_verb = null
- var/no_guns = FALSE //set to TRUE to prevent users of this style from using guns (sleeping carp, highlander). They can still pick them up, but not fire them.
- var/no_guns_message = "" //message to tell the style user if they try and use a gun while no_guns = TRUE (DISHONORABRU!)
+ ///set to TRUE to prevent users of this style from using guns (sleeping carp, highlander). They can still pick them up, but not fire them.
+ var/no_guns = FALSE
+ ///message to tell the style user if they try and use a gun while no_guns = TRUE (DISHONORABRU!)
+ var/no_guns_message = ""
- var/has_explaination_verb = FALSE // If the martial art has it's own explaination verb
+ /// If the martial art has it's own explaination verb
+ var/has_explaination_verb = FALSE
- var/list/combos = list() // What combos can the user do? List of combo types
- var/list/datum/martial_art/current_combos = list() // What combos are currently (possibly) being performed
- var/last_hit = 0 // When the last hit happened
- var/in_stance = FALSE // If the user is preparing a martial arts stance
+ /// What combos can the user do? List of combo types
+ var/list/combos = list()
+ /// What combos are currently (possibly) being performed
+ var/list/datum/martial_art/current_combos = list()
+ /// When the last hit happened
+ var/last_hit = 0
+ // If the user is preparing a martial arts stance
+ var/in_stance = FALSE
/datum/martial_art/New()
. = ..()
@@ -266,6 +278,7 @@
var/datum/martial_art/the_sleeping_carp/theSleepingCarp = new(null)
theSleepingCarp.teach(user)
+ user.faction |= list("carp") //makes space carp peaceful to sleeping carp users
user.drop_item()
visible_message("[src] lights up in fire and quickly burns to ash.")
new /obj/effect/decal/cleanable/ash(get_turf(src))
diff --git a/code/modules/martial_arts/sleeping_carp.dm b/code/modules/martial_arts/sleeping_carp.dm
index 7da1634b9da..59bfcef6bbe 100644
--- a/code/modules/martial_arts/sleeping_carp.dm
+++ b/code/modules/martial_arts/sleeping_carp.dm
@@ -2,10 +2,11 @@
/datum/martial_art/the_sleeping_carp
name = "The Sleeping Carp"
deflection_chance = 100
+ reroute_deflection = TRUE
no_guns = TRUE
no_guns_message = "Use of ranged weaponry would bring dishonor to the clan."
has_explaination_verb = TRUE
- combos = list(/datum/martial_combo/sleeping_carp/wrist_wrench, /datum/martial_combo/sleeping_carp/back_kick, /datum/martial_combo/sleeping_carp/stomach_knee, /datum/martial_combo/sleeping_carp/head_kick, /datum/martial_combo/sleeping_carp/elbow_drop)
+ combos = list(/datum/martial_combo/sleeping_carp/wrist_wrench, /datum/martial_combo/sleeping_carp/crashing_kick, /datum/martial_combo/sleeping_carp/stomach_knee, /datum/martial_combo/sleeping_carp/head_kick, /datum/martial_combo/sleeping_carp/elbow_drop)
/datum/martial_art/the_sleeping_carp/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
MARTIAL_ARTS_ACT_CHECK
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 4e3727aaf25..2277f3cc773 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -36,10 +36,16 @@ emp_act
P.on_hit(src, 100, def_zone)
return 2
- if(mind?.martial_art?.deflection_chance) //Some martial arts users can deflect projectiles!
+ if(mind?.martial_art?.deflection_chance && in_throw_mode) //Some martial arts users can deflect projectiles!
if(!lying && !HAS_TRAIT(src, TRAIT_HULK) && prob(mind.martial_art.deflection_chance)) //But only if they're not lying down, and hulks can't do it
add_attack_logs(P.firer, src, "hit by [P.type] but got deflected by martial arts '[mind.martial_art]'")
visible_message("[src] deflects the projectile; [p_they()] can't be hit with ranged weapons!", "You deflect the projectile!")
+ playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, TRUE)
+ if(mind.martial_art.reroute_deflection)
+ P.firer = src
+ P.setAngle(rand(0, 360))
+ return -1
+ else
return FALSE
var/obj/item/organ/external/organ = get_organ(check_zone(def_zone))
diff --git a/paradise.dme b/paradise.dme
index 87d2a7b506e..c77c887ccf7 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -1704,7 +1704,7 @@
#include "code\modules\martial_arts\combos\plasma_fist\plasma_fist.dm"
#include "code\modules\martial_arts\combos\plasma_fist\throwback.dm"
#include "code\modules\martial_arts\combos\plasma_fist\tornado_sweep.dm"
-#include "code\modules\martial_arts\combos\sleeping_carp\back_kick.dm"
+#include "code\modules\martial_arts\combos\sleeping_carp\crashing_kick.dm"
#include "code\modules\martial_arts\combos\sleeping_carp\elbow_drop.dm"
#include "code\modules\martial_arts\combos\sleeping_carp\head_kick.dm"
#include "code\modules\martial_arts\combos\sleeping_carp\stomach_knee.dm"