mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-19 19:13:30 +01:00
Adds Corporate Judo, an optional alternative to the stun baton (deconflicted edition) (#21229)
* Adds Judo, Judo belt, and increased harm damage * Judo users can no longer use batons (any type) * Adds Discombobulate combo * adds Eye-poke combo * copy-paste related error fixes * adds throw (knockdown) combo * adds Armbar and Fatailty Combos * assorted changes (spelling, args, unneeded checks) * minor changes to belt item * updated desc, fixes belt item pathing * adds 3 belts to secvend * Adds sprites courtsey AVeryReulctantSpider * Assorted code cleanup (thx Henri) * minor grammatical issues * Adds Judo, Judo belt, and increased harm damage * Judo users can no longer use batons (any type) * Adds Discombobulate combo * adds Eye-poke combo * copy-paste related error fixes * adds throw (knockdown) combo * adds Armbar and Fatailty Combos * assorted changes (spelling, args, unneeded checks) * minor changes to belt item * updated desc, fixes belt item pathing * adds 3 belts to secvend * Adds sprites courtsey AVeryReulctantSpider * Assorted code cleanup (thx Henri) * minor grammatical issues * junk commit to re-open PR * pronoun consistancy * Lewc review #1 * de-jankification, buffs eye poke * Reduces harm intent damage from 10 to 7 * descriptions * lewc name change * weight class is now bulky * wheel throw fix, discombob buff (slight) * Throw buff (Grab > disarm) * partial lewcc review * assorted reviews (HIIYAA edition) * Eyepoke, discombobulate can be done on the ground * hal second pass review --------- Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
/datum/martial_combo/judo/armbar
|
||||
name = "Armbar"
|
||||
steps = list(MARTIAL_COMBO_STEP_DISARM, MARTIAL_COMBO_STEP_DISARM, MARTIAL_COMBO_STEP_GRAB)
|
||||
explaination_text = "place an opponent who has been knocked down into an armbar, immobilizing them"
|
||||
combo_text_override = "Disarm, disarm, grab"
|
||||
|
||||
/datum/martial_combo/judo/armbar/perform_combo(mob/living/carbon/human/user, mob/living/target, datum/martial_art/MA)
|
||||
if(!IS_HORIZONTAL(target) || user.IsKnockedDown())
|
||||
return MARTIAL_COMBO_FAIL
|
||||
target.visible_message("<span class='warning'>[user] puts [target] into an armbar!</span>", \
|
||||
"<span class='userdanger'>[user] wrestles you into an armbar!</span>")
|
||||
playsound(get_turf(user), 'sound/weapons/slashmiss.ogg', 40, TRUE, -1)
|
||||
target.apply_damage(45, STAMINA)
|
||||
target.Immobilize(5 SECONDS)
|
||||
target.KnockDown(5 SECONDS)
|
||||
add_attack_logs(user, target, "Melee attacked with martial-art [src] : Armbar", ATKLOG_ALL)
|
||||
return MARTIAL_COMBO_DONE
|
||||
@@ -0,0 +1,14 @@
|
||||
/datum/martial_combo/judo/discombobulate
|
||||
name = "Discombobulate"
|
||||
steps = list(MARTIAL_COMBO_STEP_DISARM, MARTIAL_COMBO_STEP_GRAB)
|
||||
explaination_text = "Deliver a palm strike to your opponents ear, briefly confusing them"
|
||||
combo_text_override = "Disarm, Grab"
|
||||
|
||||
/datum/martial_combo/judo/discombobulate/perform_combo(mob/living/carbon/human/user, mob/living/target, datum/martial_art/MA)
|
||||
target.visible_message("<span class='warning'>[user] strikes [target] in the head with [user.p_their()] palm!</span>", \
|
||||
"<span class='userdanger'>[user] strikes you with [user.p_their()] palm!</span>")
|
||||
playsound(get_turf(user), 'sound/weapons/slap.ogg', 40, TRUE, -1)
|
||||
target.apply_damage(10, STAMINA)
|
||||
target.AdjustConfused(5 SECONDS)
|
||||
add_attack_logs(user, target, "Melee attacked with martial-art [src] : Discombobulate", ATKLOG_ALL)
|
||||
return MARTIAL_COMBO_DONE
|
||||
@@ -0,0 +1,15 @@
|
||||
/datum/martial_combo/judo/eyepoke
|
||||
name = "Eye Poke"
|
||||
steps = list(MARTIAL_COMBO_STEP_DISARM, MARTIAL_COMBO_STEP_HARM)
|
||||
explaination_text = "Jab your opponent in the eye, damaging and blinding them breifly. Opponents with eye protection are still affected."
|
||||
combo_text_override = "Disarm, Harm"
|
||||
|
||||
/datum/martial_combo/judo/eyepoke/perform_combo(mob/living/carbon/human/user, mob/living/target, datum/martial_art/MA)
|
||||
target.visible_message("<span class='warning'>[user] jabs [target] in [user.p_their()] eyes!</span>", \
|
||||
"<span class='userdanger'>[user] jabs you in the eyes!</span>")
|
||||
playsound(get_turf(user), 'sound/weapons/whip.ogg', 40, TRUE, -1)
|
||||
target.apply_damage(10, BRUTE)
|
||||
target.AdjustEyeBlurry(50, 0, 30 SECONDS)
|
||||
target.EyeBlind(2 SECONDS)
|
||||
add_attack_logs(user, target, "Melee attacked with martial-art [src] : Eye Poke", ATKLOG_ALL)
|
||||
return MARTIAL_COMBO_DONE
|
||||
@@ -0,0 +1,15 @@
|
||||
/datum/martial_combo/judo/judothrow
|
||||
name = "Throw"
|
||||
steps = list(MARTIAL_COMBO_STEP_GRAB, MARTIAL_COMBO_STEP_DISARM)
|
||||
explaination_text = "Establish a gripset on your opponent and throw them to the floor, inflicting stamina damage"
|
||||
combo_text_override = "Grab, Disarm"
|
||||
/datum/martial_combo/judo/judothrow/perform_combo(mob/living/carbon/human/user, mob/living/target, datum/martial_art/MA)
|
||||
if(user.IsKnockedDown() || IS_HORIZONTAL(target))
|
||||
return MARTIAL_COMBO_FAIL
|
||||
target.visible_message("<span class='warning'>[user] judo throws [target] to ground!</span>", \
|
||||
"<span class='userdanger'>[user] judo throws you to the ground!</span>")
|
||||
playsound(get_turf(user), 'sound/weapons/slam.ogg', 40, TRUE, -1)
|
||||
target.apply_damage(25, STAMINA)
|
||||
target.KnockDown(7 SECONDS)
|
||||
add_attack_logs(user, target, "Melee attacked with martial-art [src] : Judo Throw", ATKLOG_ALL)
|
||||
return MARTIAL_COMBO_DONE
|
||||
@@ -0,0 +1,18 @@
|
||||
/datum/martial_combo/judo/wheelthrow
|
||||
name = "Wheel Throw"
|
||||
steps = list(MARTIAL_COMBO_STEP_GRAB, MARTIAL_COMBO_STEP_DISARM, MARTIAL_COMBO_STEP_HARM)
|
||||
explaination_text = "From an armbar, flip your opponent over your shoulder, slamming them onto the floor, leaving them stunned."
|
||||
combo_text_override = "Grab, Disarm, Harm"
|
||||
|
||||
/datum/martial_combo/judo/wheelthrow/perform_combo(mob/living/carbon/human/user, mob/living/target, datum/martial_art/MA)
|
||||
if(!IS_HORIZONTAL(target) || !target.IsImmobilized())
|
||||
return MARTIAL_COMBO_FAIL
|
||||
target.visible_message("<span class='warning'>[user] raises [target] over [user.p_their()] shoulder, and slams [target.p_them()] into the ground!</span>", \
|
||||
"<span class='userdanger'>[user] throws you over [user.p_their()] shoulder, slamming you into the ground!</span>")
|
||||
playsound(get_turf(user), 'sound/magic/tail_swing.ogg', 40, TRUE, -1)
|
||||
target.SpinAnimation(10, 1)
|
||||
target.apply_damage(200, STAMINA)
|
||||
target.KnockDown(15 SECONDS)
|
||||
target.SetConfused(10 SECONDS)
|
||||
add_attack_logs(user, target, "Melee attacked with martial-art [src] : Wheel Throw", ATKLOG_ALL)
|
||||
return MARTIAL_COMBO_DONE
|
||||
@@ -0,0 +1,65 @@
|
||||
/datum/martial_art/judo
|
||||
name = "Corporate Judo"
|
||||
has_explaination_verb = TRUE
|
||||
no_baton = TRUE
|
||||
combos = list(/datum/martial_combo/judo/discombobulate, /datum/martial_combo/judo/eyepoke, /datum/martial_combo/judo/judothrow, /datum/martial_combo/judo/armbar, /datum/martial_combo/judo/wheelthrow)
|
||||
weight = 5 //takes priority over boxing and drunkneness, less priority than krav or CQC/carp
|
||||
no_baton_reason = "<span class='warning'>The baton feels off balance in your hand due to your judo training!</span>"
|
||||
|
||||
//Corporate Judo Belt
|
||||
|
||||
/obj/item/judobelt
|
||||
name = "\improper Corporate Judo Belt"
|
||||
desc = "Teaches the wearer NT Corporate Judo."
|
||||
icon = 'icons/obj/clothing/belts.dmi'
|
||||
lefthand_file = 'icons/mob/inhands/equipment/belt_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/belt_righthand.dmi'
|
||||
icon_state = "judobelt"
|
||||
item_state = "judo"
|
||||
slot_flags = SLOT_BELT
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
var/datum/martial_art/judo/style
|
||||
|
||||
/obj/item/judobelt/Initialize()
|
||||
. = ..()
|
||||
style = new()
|
||||
|
||||
/obj/item/judobelt/equipped(mob/user, slot)
|
||||
if(!ishuman(user))
|
||||
return
|
||||
if(slot == slot_belt)
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(HAS_TRAIT(user, TRAIT_PACIFISM))
|
||||
to_chat(H, "<span class='warning'>The arts of Corporate Judo echo uselessly in your head, the thought of violence disgusts you!</span>")
|
||||
return
|
||||
style.teach(H, 1)
|
||||
to_chat(H, "<span class='userdanger'>The belt's nanites infuse you with the prowess of a black belt in Corporate Judo!</span>")
|
||||
to_chat(H, "<span class='danger'>See the martial arts tab for an explanation of combos.</span>")
|
||||
return
|
||||
|
||||
/obj/item/judobelt/dropped(mob/user)
|
||||
..()
|
||||
if(!ishuman(user))
|
||||
return
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.get_item_by_slot(slot_belt) == src)
|
||||
style.remove(H)
|
||||
to_chat(user, "<span class='sciradio'>You suddenly forget the arts of Corporate Judo...</span>")
|
||||
|
||||
//Increased harm damage
|
||||
/datum/martial_art/judo/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
MARTIAL_ARTS_ACT_CHECK
|
||||
var/picked_hit_type = pick("chops", "slices", "strikes")
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
|
||||
D.apply_damage(7, BRUTE)
|
||||
playsound(get_turf(D), 'sound/effects/hit_punch.ogg', 50, TRUE, -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 [src]")
|
||||
return TRUE
|
||||
|
||||
/datum/martial_art/judo/explaination_header(user)
|
||||
to_chat(user, "<b><i>You recall the teachings of Corporate Judo.</i></b>")
|
||||
|
||||
/datum/martial_art/cqc/explaination_footer(user)
|
||||
to_chat(user, "<b>Your unarmed strikes hit about twice as hard as your peers, on average.</b>")
|
||||
@@ -33,8 +33,12 @@
|
||||
var/in_stance = FALSE
|
||||
/// If the martial art allows parrying.
|
||||
var/can_parry = FALSE
|
||||
/// Set to TRUE to prevent users of this style from using stun batons (and stunprods)
|
||||
var/no_baton = FALSE
|
||||
/// The priority of which martial art is picked from all the ones someone knows, the higher the number, the higher the priority.
|
||||
var/weight = 0
|
||||
/// Message displayed when someone uses a baton when its forbidden by a martial art
|
||||
var/no_baton_reason = "Your martial arts training prevents you from wielding batons."
|
||||
|
||||
/datum/martial_art/New()
|
||||
. = ..()
|
||||
|
||||
Reference in New Issue
Block a user