From 2d85f582e10c008e408e0372b5980ed500e49cef Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Sat, 16 Apr 2016 22:22:21 -0400 Subject: [PATCH 01/11] martial arts shit --- code/datums/martial.dm | 403 +----------------- .../weapons/implants/implant_krav_maga.dm | 38 ++ code/modules/Martial Arts/adminfu.dm | 97 +++++ code/modules/Martial Arts/brawling.dm | 106 +++++ code/modules/Martial Arts/krav_maga.dm | 162 +++++++ code/modules/Martial Arts/mimejutsu.dm | 0 code/modules/Martial Arts/plasma_fist.dm | 86 ++++ code/modules/Martial Arts/sleeping_carp.dm | 137 ++++++ code/modules/Martial Arts/wrestleing.dm | 67 +++ code/modules/mob/living/carbon/human/human.dm | 2 + .../mob/living/carbon/human/human_defines.dm | 1 + paradise.dme | 8 + 12 files changed, 707 insertions(+), 400 deletions(-) create mode 100644 code/game/objects/items/weapons/implants/implant_krav_maga.dm create mode 100644 code/modules/Martial Arts/adminfu.dm create mode 100644 code/modules/Martial Arts/brawling.dm create mode 100644 code/modules/Martial Arts/krav_maga.dm create mode 100644 code/modules/Martial Arts/mimejutsu.dm create mode 100644 code/modules/Martial Arts/plasma_fist.dm create mode 100644 code/modules/Martial Arts/sleeping_carp.dm create mode 100644 code/modules/Martial Arts/wrestleing.dm diff --git a/code/datums/martial.dm b/code/datums/martial.dm index 07355929572..4760e822c25 100644 --- a/code/datums/martial.dm +++ b/code/datums/martial.dm @@ -17,6 +17,9 @@ /datum/martial_art/proc/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) return 0 +/datum/martial_art/proc/help_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + return 0 + /datum/martial_art/proc/add_to_streak(var/element,var/mob/living/carbon/human/D) if(D != current_target) current_target = D @@ -80,406 +83,6 @@ if(help_verb) H.verbs -= help_verb -/datum/martial_art/boxing - name = "Boxing" - -/datum/martial_art/boxing/disarm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - to_chat(A, "Can't disarm while boxing!") - return 1 - -/datum/martial_art/boxing/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - to_chat(A, "Can't grab while boxing!") - return 1 - -/datum/martial_art/boxing/harm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - - A.do_attack_animation(D) - - var/atk_verb = pick("left hook","right hook","straight punch") - - var/damage = rand(5, 8) + A.species.punchdamagelow - if(!damage) - playsound(D.loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) - D.visible_message("[A] has attempted to hit [D] with a [atk_verb]!") - add_logs(D, A, "attempted to hit", atk_verb) - return 0 - - - var/obj/item/organ/external/affecting = D.get_organ(ran_zone(A.zone_sel.selecting)) - var/armor_block = D.run_armor_check(affecting, "melee") - - playsound(D.loc, 'sound/weapons/punch1.ogg', 25, 1, -1) - - D.visible_message("[A] has hit [D] with a [atk_verb]!", \ - "[A] has hit [D] with a [atk_verb]!") - - D.apply_damage(damage, STAMINA, affecting, armor_block) - add_logs(D, A, "punched") - if(D.getStaminaLoss() > 50) - var/knockout_prob = D.getStaminaLoss() + rand(-15,15) - if((D.stat != DEAD) && prob(knockout_prob)) - D.visible_message("[A] has knocked [D] out with a haymaker!", \ - "[A] has knocked [D] out with a haymaker!") - D.apply_effect(10,WEAKEN,armor_block) - D.SetSleeping(5) - D.forcesay(hit_appends) - else if(D.lying) - D.forcesay(hit_appends) - return 1 - -/datum/martial_art/drunk_brawling - name = "Drunken Brawling" - -/datum/martial_art/drunk_brawling/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - if(prob(70)) - A.visible_message("[A] tries to grab ahold of [D], but fails!", \ - "You fail to grab ahold of [D]!") - return 1 - D.grabbedby(A,1) - var/obj/item/weapon/grab/G = A.get_active_hand() - if(G) - D.visible_message("[A] grabs ahold of [D] drunkenly!", \ - "[A] grabs ahold of [D] drunkenly!") - return 1 - -/datum/martial_art/drunk_brawling/harm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - add_logs(D, A, "punched") - A.do_attack_animation(D) - - var/atk_verb = pick("jab","uppercut","overhand punch","drunken right hook","drunken left hook") - - var/damage = rand(0,6) - - if(atk_verb == "uppercut") - if(prob(90)) - damage = 0 - else //10% chance to do a massive amount of damage - damage = 14 - - if(prob(50)) //they are drunk, they aren't going to land half of their hits - damage = 0 - - if(!damage) - playsound(D.loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) - D.visible_message("[A] has attempted to hit [D] with a [atk_verb]!") - return 1 //returns 1 so that they actually miss and don't switch to attackhand damage - - var/obj/item/organ/external/affecting = D.get_organ(ran_zone(A.zone_sel.selecting)) - var/armor_block = D.run_armor_check(affecting, "melee") - - playsound(D.loc, 'sound/weapons/punch1.ogg', 25, 1, -1) - - - D.visible_message("[A] has hit [D] with a [atk_verb]!", \ - "[A] has hit [D] with a [atk_verb]!") - - D.apply_damage(damage, BRUTE, null, armor_block) - D.apply_effect(damage, STAMINA, armor_block) - if(D.getStaminaLoss() > 50) - var/knockout_prob = D.getStaminaLoss() + rand(-15,15) - if((D.stat != DEAD) && prob(knockout_prob)) - D.visible_message("[A] has knocked [D] out with a haymaker!", \ - "[A] has knocked [D] out with a haymaker!") - D.apply_effect(10,WEAKEN,armor_block) - D.Paralyse(5) - D.forcesay(hit_appends) - else if(D.lying) - D.forcesay(hit_appends) - return 1 - -/datum/martial_art/wrestling - name = "Wrestling" - help_verb = /mob/living/carbon/human/proc/wrestling_help - -// combo refence since wrestling uses a different format to sleeping carp and plasma fist. -// Clinch "G" -// Suplex "GD" -// Advanced grab "G" - -/datum/martial_art/wrestling/harm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - D.grabbedby(A,1) - var/obj/item/weapon/grab/G = A.get_active_hand() - if(G && prob(50)) - G.state = GRAB_AGGRESSIVE - D.visible_message("[A] has [D] in a clinch!", \ - "[A] has [D] in a clinch!") - else - D.visible_message("[A] fails to get [D] in a clinch!", \ - "[A] fails to get [D] in a clinch!") - return 1 - - -/datum/martial_art/wrestling/proc/Suplex(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - - D.visible_message("[A] suplexes [D]!", \ - "[A] suplexes [D]!") - D.forceMove(A.loc) - var/armor_block = D.run_armor_check(null, "melee") - D.apply_damage(30, BRUTE, null, armor_block) - D.apply_effect(6, WEAKEN, armor_block) - add_logs(D, A, "suplexed") - - A.SpinAnimation(10,1) - - D.SpinAnimation(10,1) - spawn(3) - armor_block = A.run_armor_check(null, "melee") - A.apply_effect(4, WEAKEN, armor_block) - return - -/datum/martial_art/wrestling/disarm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - if(istype(A.get_inactive_hand(),/obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = A.get_inactive_hand() - if(G.affecting == D) - Suplex(A,D) - return 1 - harm_act(A,D) - return 1 - -/datum/martial_art/wrestling/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - D.grabbedby(A,1) - D.visible_message("[A] holds [D] down!", \ - "[A] holds [D] down!") - var/obj/item/organ/external/affecting = D.get_organ(ran_zone(A.zone_sel.selecting)) - var/armor_block = D.run_armor_check(affecting, "melee") - D.apply_damage(10, STAMINA, affecting, armor_block) - return 1 - -/mob/living/carbon/human/proc/wrestling_help() - set name = "Recall Teachings" - set desc = "Remember how to wrestle." - set category = "Wrestling" - - to_chat(usr, "You flex your muscles and have a revelation...") - to_chat(usr, "Clinch: Grab. Passively gives you a chance to immediately aggressively grab someone. Not always successful.") - to_chat(usr, "Suplex: Disarm someone you are grabbing. Suplexes your target to the floor. Greatly injures them and leaves both you and your target on the floor.") - to_chat(usr, "Advanced grab: Grab. Passively causes stamina damage when grabbing someone.") - -#define TORNADO_COMBO "HHD" -#define THROWBACK_COMBO "DHD" -#define PLASMA_COMBO "HDDDH" - -/datum/martial_art/plasma_fist - name = "Plasma Fist" - help_verb = /mob/living/carbon/human/proc/plasma_fist_help - - -/datum/martial_art/plasma_fist/proc/check_streak(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - if(findtext(streak,TORNADO_COMBO)) - streak = "" - Tornado(A,D) - return 1 - if(findtext(streak,THROWBACK_COMBO)) - streak = "" - Throwback(A,D) - return 1 - if(findtext(streak,PLASMA_COMBO)) - streak = "" - Plasma(A,D) - return 1 - return 0 - -/datum/martial_art/plasma_fist/proc/Tornado(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - A.say("TORNADO SWEEP!") - spawn(0) - for(var/i in list(NORTH,SOUTH,EAST,WEST,EAST,SOUTH,NORTH,SOUTH,EAST,WEST,EAST,SOUTH)) - A.dir = i - playsound(A.loc, 'sound/weapons/punch1.ogg', 15, 1, -1) - sleep(1) - var/obj/effect/proc_holder/spell/aoe_turf/repulse/R = new(null) - var/list/turfs = list() - for(var/turf/T in range(1,A)) - turfs.Add(T) - R.cast(turfs) - return - -/datum/martial_art/plasma_fist/proc/Throwback(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - D.visible_message("[A] has hit [D] with Plasma Punch!", \ - "[A] has hit [D] with Plasma Punch!") - playsound(D.loc, 'sound/weapons/punch1.ogg', 50, 1, -1) - var/atom/throw_target = get_edge_target_turf(D, get_dir(D, get_step_away(D, A))) - D.throw_at(throw_target, 200, 4,A) - A.say("HYAH!") - return - -/datum/martial_art/plasma_fist/proc/Plasma(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - A.do_attack_animation(D) - playsound(D.loc, 'sound/weapons/punch1.ogg', 50, 1, -1) - A.say("PLASMA FIST!") - D.visible_message("[A] has hit [D] with THE PLASMA FIST TECHNIQUE!", \ - "[A] has hit [D] with THE PLASMA FIST TECHNIQUE!") - D.gib() - return - -/datum/martial_art/plasma_fist/harm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - add_to_streak("H",D) - if(check_streak(A,D)) - return 1 - basic_hit(A,D) - return 1 - -/datum/martial_art/plasma_fist/disarm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - add_to_streak("D",D) - if(check_streak(A,D)) - return 1 - basic_hit(A,D) - return 1 - -/datum/martial_art/plasma_fist/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - add_to_streak("G",D) - if(check_streak(A,D)) - return 1 - basic_hit(A,D) - return 1 - -/mob/living/carbon/human/proc/plasma_fist_help() - set name = "Recall Teachings" - set desc = "Remember the martial techniques of the Plasma Fist." - set category = "Plasma Fist" - - to_chat(usr, "You clench your fists and have a flashback of knowledge...") - to_chat(usr, "Tornado Sweep: Harm Harm Disarm. Repulses target and everyone back.") - to_chat(usr, "Throwback: Disarm Harm Disarm. Throws the target and an item at them.") - to_chat(usr, "The Plasma Fist: Harm Disarm Disarm Disarm Harm. Knocks the brain out of the opponent and gibs their body.") - -//Used by the gang of the same name. Uses combos. Basic attacks bypass armor and never miss -#define WRIST_WRENCH_COMBO "DD" -#define BACK_KICK_COMBO "HG" -#define STOMACH_KNEE_COMBO "GH" -#define HEAD_KICK_COMBO "DHH" -#define ELBOW_DROP_COMBO "HDHDH" -/datum/martial_art/the_sleeping_carp - name = "The Sleeping Carp" - deflection_chance = 100 - help_verb = /mob/living/carbon/human/proc/sleeping_carp_help - -/datum/martial_art/the_sleeping_carp/proc/check_streak(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - if(findtext(streak,WRIST_WRENCH_COMBO)) - streak = "" - wristWrench(A,D) - return 1 - if(findtext(streak,BACK_KICK_COMBO)) - streak = "" - backKick(A,D) - return 1 - if(findtext(streak,STOMACH_KNEE_COMBO)) - streak = "" - kneeStomach(A,D) - return 1 - if(findtext(streak,HEAD_KICK_COMBO)) - streak = "" - headKick(A,D) - return 1 - if(findtext(streak,ELBOW_DROP_COMBO)) - streak = "" - elbowDrop(A,D) - return 1 - return 0 - -/datum/martial_art/the_sleeping_carp/proc/wristWrench(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - if(!D.stat && !D.stunned && !D.weakened) - A.do_attack_animation(D) - D.visible_message("[A] grabs [D]'s wrist and wrenches it sideways!", \ - "[A] grabs your wrist and violently wrenches it to the side!") - playsound(get_turf(A), 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - D.emote("scream") - D.drop_item() - D.apply_damage(5, BRUTE, pick("l_arm", "r_arm")) - D.Stun(3) - return 1 - return basic_hit(A,D) - -/datum/martial_art/the_sleeping_carp/proc/backKick(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - if(A.dir == D.dir && !D.stat && !D.weakened) - A.do_attack_animation(D) - D.visible_message("[A] kicks [D] in the back!", \ - "[A] kicks you in the back, making you stumble and fall!") - step_to(D,get_step(D,D.dir),1) - D.Weaken(4) - playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) - return 1 - return basic_hit(A,D) - -/datum/martial_art/the_sleeping_carp/proc/kneeStomach(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - if(!D.stat && !D.weakened) - A.do_attack_animation(D) - D.visible_message("[A] knees [D] in the stomach!", \ - "[A] winds you with a knee in the stomach!") - D.audible_message("[D] gags!") - D.losebreath += 3 - D.Stun(2) - playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) - return 1 - return basic_hit(A,D) - -/datum/martial_art/the_sleeping_carp/proc/headKick(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - if(!D.stat && !D.weakened) - A.do_attack_animation(D) - D.visible_message("[A] kicks [D] in the head!", \ - "[A] kicks you in the jaw!") - D.apply_damage(20, BRUTE, "head") - D.drop_item() - playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) - D.Stun(4) - return 1 - return basic_hit(A,D) - -/datum/martial_art/the_sleeping_carp/proc/elbowDrop(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - if(D.weakened || D.resting || D.stat) - A.do_attack_animation(D) - D.visible_message("[A] elbow drops [D]!", \ - "[A] piledrives you with their elbow!") - if(D.stat) - D.death() //FINISH HIM! - D.apply_damage(50, BRUTE, "chest") - playsound(get_turf(D), 'sound/weapons/punch1.ogg', 75, 1, -1) - return 1 - return basic_hit(A,D) - -/datum/martial_art/the_sleeping_carp/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - add_to_streak("G",D) - if(check_streak(A,D)) - return 1 - D.grabbedby(A,1) - var/obj/item/weapon/grab/G = A.get_active_hand() - if(G) - G.state = GRAB_AGGRESSIVE //Instant aggressive grab - -/datum/martial_art/the_sleeping_carp/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) - add_to_streak("H",D) - if(check_streak(A,D)) - return 1 - A.do_attack_animation(D) - var/atk_verb = pick("punches", "kicks", "chops", "hits", "slams") - D.visible_message("[A] [atk_verb] [D]!", \ - "[A] [atk_verb] you!") - D.apply_damage(rand(10,15), BRUTE) - playsound(get_turf(D), 'sound/weapons/punch1.ogg', 25, 1, -1) - if(prob(D.getBruteLoss()) && !D.lying) - D.visible_message("[D] stumbles and falls!", "The blow sends you to the ground!") - D.Weaken(4) - return 1 - - -/datum/martial_art/the_sleeping_carp/disarm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - add_to_streak("D",D) - if(check_streak(A,D)) - return 1 - return ..() - -/mob/living/carbon/human/proc/sleeping_carp_help() - set name = "Recall Teachings" - set desc = "Remember the martial techniques of the Sleeping Carp clan." - set category = "Sleeping Carp" - - to_chat(usr, "You retreat inward and recall the teachings of the Sleeping Carp...") - - to_chat(usr, "Wrist Wrench: Disarm Disarm. Forces opponent to drop item in hand.") - to_chat(usr, "Back Kick: Harm Grab. Opponent must be facing away. Knocks down.") - to_chat(usr, "Stomach Knee: Grab Harm. Knocks the wind out of opponent and stuns.") - to_chat(usr, "Head Kick: Disarm Harm Harm. Decent damage, forces opponent to drop item in hand.") - to_chat(usr, "Elbow Drop: Harm Disarm Harm Disarm Harm. Opponent must be on the ground. Deals huge damage, instantly kills anyone in critical condition.") - //ITEMS /obj/item/clothing/gloves/boxing diff --git a/code/game/objects/items/weapons/implants/implant_krav_maga.dm b/code/game/objects/items/weapons/implants/implant_krav_maga.dm new file mode 100644 index 00000000000..3ba8d039b45 --- /dev/null +++ b/code/game/objects/items/weapons/implants/implant_krav_maga.dm @@ -0,0 +1,38 @@ +/obj/item/weapon/implant/krav_maga + name = "krav maga implant" + desc = "Teaches you the arts of Krav Maga in 5 short instructional videos beamed directly into your eyeballs." + icon = 'icons/obj/wizard.dmi' + icon_state ="scroll2" + activated = 1 + origin_tech = "materials=2;biotech=4;combat=5;syndicate=4" + var/datum/martial_art/krav_maga/style = new + +/obj/item/weapon/implant/krav_maga/get_data() + var/dat = {"Implant Specifications:
+ Name: Krav Maga Implant
+ Life: 4 hours after death of host
+ Implant Details:
+ Function: Teaches even the clumsiest host the arts of Krav Maga."} + return dat + +/obj/item/weapon/implant/krav_maga/activate() + var/mob/living/carbon/human/H = imp_in + if(!ishuman(H)) + return + style.teach(H) + qdel(src) + +/obj/item/weapon/implanter/krav_maga + name = "implanter (krav maga)" + +/obj/item/weapon/implanter/krav_maga/New() + imp = new /obj/item/weapon/implant/krav_maga(src) + ..() + +/obj/item/weapon/implantcase/krav_maga + name = "implant case - 'Krav Maga'" + desc = "A glass case containing an implant that can teach the user the art of Krav Maga." + +/obj/item/weapon/implantcase/krav_maga/New() + imp = new /obj/item/weapon/implant/krav_maga(src) + ..() \ No newline at end of file diff --git a/code/modules/Martial Arts/adminfu.dm b/code/modules/Martial Arts/adminfu.dm new file mode 100644 index 00000000000..585c4d7aef9 --- /dev/null +++ b/code/modules/Martial Arts/adminfu.dm @@ -0,0 +1,97 @@ +///Adminfu +//Help act:Heal/revie GP //p is for help +//Disarm:Stun +//Grab:Neck +//Harm:Gib +#define HEAL_COMBO "GP" + +/datum/martial_art/adminfu + name = "Way of the Dancing Admin" + help_verb = /mob/living/carbon/human/proc/adminfu_help + +/datum/martial_art/adminfu/proc/check_streak(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(findtext(streak,HEAL_COMBO)) + streak = "" + healPalm(A,D) + return 1 + return 0 + +/datum/martial_art/adminfu/harm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + + if(!D.stat)//do not kill what is dead... + A.do_attack_animation(D) + D.visible_message("[A] manifests a large glowing toolbox and shoves it in [D]'s chest!", \ + "[A] shoves a mystical toolbox in your chest!") + D.death() + + return 1 + + +/datum/martial_art/adminfu/disarm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + A.do_attack_animation(D) + D.Weaken(25) + D.Stun(25) + return 1 + +/datum/martial_art/adminfu/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + add_to_streak("G",D) + if(check_streak(A,D)) + return 1 + D.grabbedby(A,1) + var/obj/item/weapon/grab/G = A.get_active_hand() + if(G) + G.state = GRAB_NECK + +/datum/martial_art/adminfu/help_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + add_to_streak("P",D) + if(check_streak(A,D)) + return 1 + +/datum/martial_art/adminfu/proc/healPalm(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + A.do_attack_animation(D) + D.visible_message("[A] smacks [D] in the forehead!") + + //its the staff of healing code..hush + if(istype(D,/mob)) + var/old_stat = D.stat + if(isanimal(D) && D.stat == DEAD) + var/mob/living/simple_animal/O = D + var/mob/living/simple_animal/P = new O.type(O.loc) + P.real_name = O.real_name + P.name = O.name + if(iscorgi(O)) + var/mob/living/simple_animal/pet/corgi/C = O + if(C.inventory_head) + C.inventory_head.loc = C.loc + if(C.inventory_back) + C.inventory_back.loc = C.loc + if(O.mind) + O.mind.transfer_to(P) + else + P.key = O.key + qdel(O) + D = P + else + D.revive() + D.suiciding = 0 + if(!D.ckey) + for(var/mob/dead/observer/ghost in player_list) + if(D.real_name == ghost.real_name) + ghost.reenter_corpse() + break + if(old_stat != DEAD) + to_chat(D, "You feel great!") + else + to_chat(D, "You rise with a start, you're alive!!!") + return 1 + +/mob/living/carbon/human/proc/adminfu_help() + set name = "Recall Teachings" + set desc = "Remember the way of the dancing admin." + set category = "Adminfu" + + to_chat(usr, "Grab: Automatic Neck Grab.") + to_chat(usr, "Disarm: Stun/weaken") + to_chat(usr, "Harm: Death.") + to_chat(usr, "Healing Palm::Combo:Grab,Help intent. Heals or revives a crature.") + diff --git a/code/modules/Martial Arts/brawling.dm b/code/modules/Martial Arts/brawling.dm new file mode 100644 index 00000000000..06bd174a0e2 --- /dev/null +++ b/code/modules/Martial Arts/brawling.dm @@ -0,0 +1,106 @@ +/datum/martial_art/boxing + name = "Boxing" + +/datum/martial_art/boxing/disarm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + to_chat(A, "Can't disarm while boxing!") + return 1 + +/datum/martial_art/boxing/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + to_chat(A, "Can't grab while boxing!") + return 1 + +/datum/martial_art/boxing/harm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + + A.do_attack_animation(D) + + var/atk_verb = pick("left hook","right hook","straight punch") + + var/damage = rand(5, 8) + A.species.punchdamagelow + if(!damage) + playsound(D.loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) + D.visible_message("[A] has attempted to hit [D] with a [atk_verb]!") + add_logs(D, A, "attempted to hit", atk_verb) + return 0 + + + var/obj/item/organ/external/affecting = D.get_organ(ran_zone(A.zone_sel.selecting)) + var/armor_block = D.run_armor_check(affecting, "melee") + + playsound(D.loc, 'sound/weapons/punch1.ogg', 25, 1, -1) + + D.visible_message("[A] has hit [D] with a [atk_verb]!", \ + "[A] has hit [D] with a [atk_verb]!") + + D.apply_damage(damage, STAMINA, affecting, armor_block) + add_logs(D, A, "punched") + if(D.getStaminaLoss() > 50) + var/knockout_prob = D.getStaminaLoss() + rand(-15,15) + if((D.stat != DEAD) && prob(knockout_prob)) + D.visible_message("[A] has knocked [D] out with a haymaker!", \ + "[A] has knocked [D] out with a haymaker!") + D.apply_effect(10,WEAKEN,armor_block) + D.SetSleeping(5) + D.forcesay(hit_appends) + else if(D.lying) + D.forcesay(hit_appends) + return 1 + +/datum/martial_art/drunk_brawling + name = "Drunken Brawling" + +/datum/martial_art/drunk_brawling/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(prob(70)) + A.visible_message("[A] tries to grab ahold of [D], but fails!", \ + "You fail to grab ahold of [D]!") + return 1 + D.grabbedby(A,1) + var/obj/item/weapon/grab/G = A.get_active_hand() + if(G) + D.visible_message("[A] grabs ahold of [D] drunkenly!", \ + "[A] grabs ahold of [D] drunkenly!") + return 1 + +/datum/martial_art/drunk_brawling/harm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + add_logs(D, A, "punched") + A.do_attack_animation(D) + + var/atk_verb = pick("jab","uppercut","overhand punch","drunken right hook","drunken left hook") + + var/damage = rand(0,6) + + if(atk_verb == "uppercut") + if(prob(90)) + damage = 0 + else //10% chance to do a massive amount of damage + damage = 14 + + if(prob(50)) //they are drunk, they aren't going to land half of their hits + damage = 0 + + if(!damage) + playsound(D.loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) + D.visible_message("[A] has attempted to hit [D] with a [atk_verb]!") + return 1 //returns 1 so that they actually miss and don't switch to attackhand damage + + var/obj/item/organ/external/affecting = D.get_organ(ran_zone(A.zone_sel.selecting)) + var/armor_block = D.run_armor_check(affecting, "melee") + + playsound(D.loc, 'sound/weapons/punch1.ogg', 25, 1, -1) + + + D.visible_message("[A] has hit [D] with a [atk_verb]!", \ + "[A] has hit [D] with a [atk_verb]!") + + D.apply_damage(damage, BRUTE, null, armor_block) + D.apply_effect(damage, STAMINA, armor_block) + if(D.getStaminaLoss() > 50) + var/knockout_prob = D.getStaminaLoss() + rand(-15,15) + if((D.stat != DEAD) && prob(knockout_prob)) + D.visible_message("[A] has knocked [D] out with a haymaker!", \ + "[A] has knocked [D] out with a haymaker!") + D.apply_effect(10,WEAKEN,armor_block) + D.Paralyse(5) + D.forcesay(hit_appends) + else if(D.lying) + D.forcesay(hit_appends) + return 1 \ No newline at end of file diff --git a/code/modules/Martial Arts/krav_maga.dm b/code/modules/Martial Arts/krav_maga.dm new file mode 100644 index 00000000000..e28a79c316b --- /dev/null +++ b/code/modules/Martial Arts/krav_maga.dm @@ -0,0 +1,162 @@ +/datum/martial_art/krav_maga + name = "Krav Maga" + var/datum/action/neck_chop/neckchop = new/datum/action/neck_chop() + var/datum/action/leg_sweep/legsweep = new/datum/action/leg_sweep() + var/datum/action/lung_punch/lungpunch = new/datum/action/lung_punch() + +/datum/action/neck_chop + name = "Neck Chop - Injures the neck, stopping the victim from speaking for a while." + button_icon_state = "neckchop" + +/datum/action/neck_chop/Trigger() + owner << "Your next attack will be a Neck Chop." + owner.visible_message("[owner] assumes the Neck Chop stance!") + var/mob/living/carbon/human/H = owner + H.martial_art.streak = "neck_chop" + +/datum/action/leg_sweep + name = "Leg Sweep - Trips the victim, rendering them prone and unable to move for a short time." + button_icon_state = "legsweep" + +/datum/action/leg_sweep/Trigger() + owner << "Your next attack will be a Leg Sweep." + owner.visible_message("[owner] assumes the Leg Sweep stance!") + var/mob/living/carbon/human/H = owner + H.martial_art.streak = "leg_sweep" + +/datum/action/lung_punch//referred to internally as 'quick choke' + name = "Lung Punch - Delivers a strong punch just above the victim's abdomen, constraining the lungs. The victim will be unable to breathe for a short time." + button_icon_state = "lungpunch" + +/datum/action/lung_punch/Trigger() + owner << "Your next attack will be a Lung Punch." + owner.visible_message("[owner] assumes the Lung Punch stance!") + var/mob/living/carbon/human/H = owner + H.martial_art.streak = "quick_choke"//internal name for lung punch + +/datum/martial_art/krav_maga/teach(var/mob/living/carbon/human/H,var/make_temporary=0) + ..() + H << "You know the arts of Krav Maga!" + H << "Place your cursor over a move at the top of the screen to see what it does." + neckchop.Grant(H) + legsweep.Grant(H) + lungpunch.Grant(H) + +/datum/martial_art/krav_maga/remove(var/mob/living/carbon/human/H) + ..() + H << "You suddenly forget the arts of Krav Maga..." + neckchop.Remove(H) + legsweep.Remove(H) + lungpunch.Remove(H) + +/datum/martial_art/krav_maga/proc/check_streak(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + switch(streak) + if("neck_chop") + streak = "" + neck_chop(A,D) + return 1 + if("leg_sweep") + streak = "" + leg_sweep(A,D) + return 1 + if("quick_choke")//is actually lung punch + streak = "" + quick_choke(A,D) + return 1 + return 0 + +/datum/martial_art/krav_maga/proc/leg_sweep(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(D.stat || D.weakened) + return 0 + D.visible_message("[A] leg sweeps [D]!", \ + "[A] leg sweeps you!") + playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1) + D.apply_damage(5, BRUTE) + D.Weaken(4)//originally was 6, lowered since you could kill somebody in one stun + return 1 + +/datum/martial_art/krav_maga/proc/quick_choke(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)//is actually lung punch + D.visible_message("[A] pounds [D] on the chest!", \ + "[A] slams your chest! You can't breathe!") + playsound(get_turf(A), 'sound/effects/hit_punch.ogg', 50, 1, -1) + D.losebreath += 5 + D.adjustOxyLoss(10) + return 1 + +/datum/martial_art/krav_maga/proc/neck_chop(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + D.visible_message("[A] karate chops [D]'s neck!", \ + "[A] karate chops your neck, rendering you unable to speak for a short time!") + playsound(get_turf(A), 'sound/effects/hit_punch.ogg', 50, 1, -1) + D.apply_damage(5, BRUTE) + D.silent += 10 + return 1 + +datum/martial_art/krav_maga/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(check_streak(A,D)) + return 1 + ..() + +/datum/martial_art/krav_maga/harm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(check_streak(A,D)) + return 1 + add_logs(A, D, "punched") + A.do_attack_animation(D) + var/picked_hit_type = pick("punches", "kicks") + var/bonus_damage = 10 + if(D.weakened || D.resting || D.lying) + bonus_damage += 5 + picked_hit_type = "stomps on" + D.apply_damage(bonus_damage, BRUTE) + if(picked_hit_type == "kicks" || picked_hit_type == "stomps") + playsound(get_turf(D), 'sound/effects/hit_kick.ogg', 50, 1, -1) + else + playsound(get_turf(D), 'sound/effects/hit_punch.ogg', 50, 1, -1) + D.visible_message("[A] [picked_hit_type] [D]!", \ + "[A] [picked_hit_type] you!") + return 1 + +/datum/martial_art/krav_maga/disarm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(check_streak(A,D)) + return 1 + if(prob(60)) + if(D.hand) + if(istype(D.l_hand, /obj/item)) + var/obj/item/I = D.l_hand + D.drop_item() + A.put_in_hands(I) + else + if(istype(D.r_hand, /obj/item)) + var/obj/item/I = D.r_hand + D.drop_item() + A.put_in_hands(I) + D.visible_message("[A] has disarmed [D]!", \ + "[A] has disarmed [D]!") + playsound(D, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + else + D.visible_message("[A] attempted to disarm [D]!", \ + "[A] attempted to disarm [D]!") + playsound(D, 'sound/weapons/punchmiss.ogg', 25, 1, -1) + return 1 + +//Krav Maga Gloves + +/obj/item/clothing/gloves/krav_maga + desc = "These gloves can teach you to perform Krav Maga using nanochips." + name = "black gloves" + icon_state = "black" + item_state = "bgloves" + var/datum/martial_art/krav_maga/style = new + +/obj/item/clothing/gloves/krav_maga/equipped(mob/user, slot) + if(!ishuman(user)) + return + if(slot == slot_gloves) + var/mob/living/carbon/human/H = user + style.teach(H,1) + +/obj/item/clothing/gloves/krav_maga/dropped(mob/user) + if(!ishuman(user)) + return + var/mob/living/carbon/human/H = user + if(H.get_item_by_slot(slot_gloves) == src) + style.remove(H) \ No newline at end of file diff --git a/code/modules/Martial Arts/mimejutsu.dm b/code/modules/Martial Arts/mimejutsu.dm new file mode 100644 index 00000000000..e69de29bb2d diff --git a/code/modules/Martial Arts/plasma_fist.dm b/code/modules/Martial Arts/plasma_fist.dm new file mode 100644 index 00000000000..d2e047dc08d --- /dev/null +++ b/code/modules/Martial Arts/plasma_fist.dm @@ -0,0 +1,86 @@ +#define TORNADO_COMBO "HHD" +#define THROWBACK_COMBO "DHD" +#define PLASMA_COMBO "HDDDH" + +/datum/martial_art/plasma_fist + name = "Plasma Fist" + help_verb = /mob/living/carbon/human/proc/plasma_fist_help + + +/datum/martial_art/plasma_fist/proc/check_streak(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(findtext(streak,TORNADO_COMBO)) + streak = "" + Tornado(A,D) + return 1 + if(findtext(streak,THROWBACK_COMBO)) + streak = "" + Throwback(A,D) + return 1 + if(findtext(streak,PLASMA_COMBO)) + streak = "" + Plasma(A,D) + return 1 + return 0 + +/datum/martial_art/plasma_fist/proc/Tornado(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + A.say("TORNADO SWEEP!") + spawn(0) + for(var/i in list(NORTH,SOUTH,EAST,WEST,EAST,SOUTH,NORTH,SOUTH,EAST,WEST,EAST,SOUTH)) + A.dir = i + playsound(A.loc, 'sound/weapons/punch1.ogg', 15, 1, -1) + sleep(1) + var/obj/effect/proc_holder/spell/aoe_turf/repulse/R = new(null) + var/list/turfs = list() + for(var/turf/T in range(1,A)) + turfs.Add(T) + R.cast(turfs) + return + +/datum/martial_art/plasma_fist/proc/Throwback(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + D.visible_message("[A] has hit [D] with Plasma Punch!", \ + "[A] has hit [D] with Plasma Punch!") + playsound(D.loc, 'sound/weapons/punch1.ogg', 50, 1, -1) + var/atom/throw_target = get_edge_target_turf(D, get_dir(D, get_step_away(D, A))) + D.throw_at(throw_target, 200, 4,A) + A.say("HYAH!") + return + +/datum/martial_art/plasma_fist/proc/Plasma(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + A.do_attack_animation(D) + playsound(D.loc, 'sound/weapons/punch1.ogg', 50, 1, -1) + A.say("PLASMA FIST!") + D.visible_message("[A] has hit [D] with THE PLASMA FIST TECHNIQUE!", \ + "[A] has hit [D] with THE PLASMA FIST TECHNIQUE!") + D.gib() + return + +/datum/martial_art/plasma_fist/harm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + add_to_streak("H",D) + if(check_streak(A,D)) + return 1 + basic_hit(A,D) + return 1 + +/datum/martial_art/plasma_fist/disarm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + add_to_streak("D",D) + if(check_streak(A,D)) + return 1 + basic_hit(A,D) + return 1 + +/datum/martial_art/plasma_fist/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + add_to_streak("G",D) + if(check_streak(A,D)) + return 1 + basic_hit(A,D) + return 1 + +/mob/living/carbon/human/proc/plasma_fist_help() + set name = "Recall Teachings" + set desc = "Remember the martial techniques of the Plasma Fist." + set category = "Plasma Fist" + + to_chat(usr, "You clench your fists and have a flashback of knowledge...") + to_chat(usr, "Tornado Sweep: Harm Harm Disarm. Repulses target and everyone back.") + to_chat(usr, "Throwback: Disarm Harm Disarm. Throws the target and an item at them.") + to_chat(usr, "The Plasma Fist: Harm Disarm Disarm Disarm Harm. Knocks the brain out of the opponent and gibs their body.") \ No newline at end of file diff --git a/code/modules/Martial Arts/sleeping_carp.dm b/code/modules/Martial Arts/sleeping_carp.dm new file mode 100644 index 00000000000..3202f8fbe27 --- /dev/null +++ b/code/modules/Martial Arts/sleeping_carp.dm @@ -0,0 +1,137 @@ +//Used by the gang of the same name. Uses combos. Basic attacks bypass armor and never miss +#define WRIST_WRENCH_COMBO "DD" +#define BACK_KICK_COMBO "HG" +#define STOMACH_KNEE_COMBO "GH" +#define HEAD_KICK_COMBO "DHH" +#define ELBOW_DROP_COMBO "HDHDH" +/datum/martial_art/the_sleeping_carp + name = "The Sleeping Carp" + deflection_chance = 100 + help_verb = /mob/living/carbon/human/proc/sleeping_carp_help + +/datum/martial_art/the_sleeping_carp/proc/check_streak(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(findtext(streak,WRIST_WRENCH_COMBO)) + streak = "" + wristWrench(A,D) + return 1 + if(findtext(streak,BACK_KICK_COMBO)) + streak = "" + backKick(A,D) + return 1 + if(findtext(streak,STOMACH_KNEE_COMBO)) + streak = "" + kneeStomach(A,D) + return 1 + if(findtext(streak,HEAD_KICK_COMBO)) + streak = "" + headKick(A,D) + return 1 + if(findtext(streak,ELBOW_DROP_COMBO)) + streak = "" + elbowDrop(A,D) + return 1 + return 0 + +/datum/martial_art/the_sleeping_carp/proc/wristWrench(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(!D.stat && !D.stunned && !D.weakened) + A.do_attack_animation(D) + D.visible_message("[A] grabs [D]'s wrist and wrenches it sideways!", \ + "[A] grabs your wrist and violently wrenches it to the side!") + playsound(get_turf(A), 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + D.emote("scream") + D.drop_item() + D.apply_damage(5, BRUTE, pick("l_arm", "r_arm")) + D.Stun(3) + return 1 + return basic_hit(A,D) + +/datum/martial_art/the_sleeping_carp/proc/backKick(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(A.dir == D.dir && !D.stat && !D.weakened) + A.do_attack_animation(D) + D.visible_message("[A] kicks [D] in the back!", \ + "[A] kicks you in the back, making you stumble and fall!") + step_to(D,get_step(D,D.dir),1) + D.Weaken(4) + playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) + return 1 + return basic_hit(A,D) + +/datum/martial_art/the_sleeping_carp/proc/kneeStomach(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(!D.stat && !D.weakened) + A.do_attack_animation(D) + D.visible_message("[A] knees [D] in the stomach!", \ + "[A] winds you with a knee in the stomach!") + D.audible_message("[D] gags!") + D.losebreath += 3 + D.Stun(2) + playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) + return 1 + return basic_hit(A,D) + +/datum/martial_art/the_sleeping_carp/proc/headKick(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(!D.stat && !D.weakened) + A.do_attack_animation(D) + D.visible_message("[A] kicks [D] in the head!", \ + "[A] kicks you in the jaw!") + D.apply_damage(20, BRUTE, "head") + D.drop_item() + playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) + D.Stun(4) + return 1 + return basic_hit(A,D) + +/datum/martial_art/the_sleeping_carp/proc/elbowDrop(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(D.weakened || D.resting || D.stat) + A.do_attack_animation(D) + D.visible_message("[A] elbow drops [D]!", \ + "[A] piledrives you with their elbow!") + if(D.stat) + D.death() //FINISH HIM! + D.apply_damage(50, BRUTE, "chest") + playsound(get_turf(D), 'sound/weapons/punch1.ogg', 75, 1, -1) + return 1 + return basic_hit(A,D) + +/datum/martial_art/the_sleeping_carp/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + add_to_streak("G",D) + if(check_streak(A,D)) + return 1 + D.grabbedby(A,1) + var/obj/item/weapon/grab/G = A.get_active_hand() + if(G) + G.state = GRAB_AGGRESSIVE //Instant aggressive grab + +/datum/martial_art/the_sleeping_carp/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) + add_to_streak("H",D) + if(check_streak(A,D)) + return 1 + A.do_attack_animation(D) + var/atk_verb = pick("punches", "kicks", "chops", "hits", "slams") + D.visible_message("[A] [atk_verb] [D]!", \ + "[A] [atk_verb] you!") + D.apply_damage(rand(10,15), BRUTE) + playsound(get_turf(D), 'sound/weapons/punch1.ogg', 25, 1, -1) + if(prob(D.getBruteLoss()) && !D.lying) + D.visible_message("[D] stumbles and falls!", "The blow sends you to the ground!") + D.Weaken(4) + return 1 + + +/datum/martial_art/the_sleeping_carp/disarm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + add_to_streak("D",D) + if(check_streak(A,D)) + return 1 + return ..() + +/mob/living/carbon/human/proc/sleeping_carp_help() + set name = "Recall Teachings" + set desc = "Remember the martial techniques of the Sleeping Carp clan." + set category = "Sleeping Carp" + + to_chat(usr, "You retreat inward and recall the teachings of the Sleeping Carp...") + + to_chat(usr, "Wrist Wrench: Disarm Disarm. Forces opponent to drop item in hand.") + to_chat(usr, "Back Kick: Harm Grab. Opponent must be facing away. Knocks down.") + to_chat(usr, "Stomach Knee: Grab Harm. Knocks the wind out of opponent and stuns.") + to_chat(usr, "Head Kick: Disarm Harm Harm. Decent damage, forces opponent to drop item in hand.") + to_chat(usr, "Elbow Drop: Harm Disarm Harm Disarm Harm. Opponent must be on the ground. Deals huge damage, instantly kills anyone in critical condition.") diff --git a/code/modules/Martial Arts/wrestleing.dm b/code/modules/Martial Arts/wrestleing.dm new file mode 100644 index 00000000000..d0b3a4e697e --- /dev/null +++ b/code/modules/Martial Arts/wrestleing.dm @@ -0,0 +1,67 @@ +/datum/martial_art/wrestling + name = "Wrestling" + help_verb = /mob/living/carbon/human/proc/wrestling_help + +// combo refence since wrestling uses a different format to sleeping carp and plasma fist. +// Clinch "G" +// Suplex "GD" +// Advanced grab "G" + +/datum/martial_art/wrestling/harm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + D.grabbedby(A,1) + var/obj/item/weapon/grab/G = A.get_active_hand() + if(G && prob(50)) + G.state = GRAB_AGGRESSIVE + D.visible_message("[A] has [D] in a clinch!", \ + "[A] has [D] in a clinch!") + else + D.visible_message("[A] fails to get [D] in a clinch!", \ + "[A] fails to get [D] in a clinch!") + return 1 + + +/datum/martial_art/wrestling/proc/Suplex(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + + D.visible_message("[A] suplexes [D]!", \ + "[A] suplexes [D]!") + D.forceMove(A.loc) + var/armor_block = D.run_armor_check(null, "melee") + D.apply_damage(30, BRUTE, null, armor_block) + D.apply_effect(6, WEAKEN, armor_block) + add_logs(D, A, "suplexed") + + A.SpinAnimation(10,1) + + D.SpinAnimation(10,1) + spawn(3) + armor_block = A.run_armor_check(null, "melee") + A.apply_effect(4, WEAKEN, armor_block) + return + +/datum/martial_art/wrestling/disarm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(istype(A.get_inactive_hand(),/obj/item/weapon/grab)) + var/obj/item/weapon/grab/G = A.get_inactive_hand() + if(G.affecting == D) + Suplex(A,D) + return 1 + harm_act(A,D) + return 1 + +/datum/martial_art/wrestling/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + D.grabbedby(A,1) + D.visible_message("[A] holds [D] down!", \ + "[A] holds [D] down!") + var/obj/item/organ/external/affecting = D.get_organ(ran_zone(A.zone_sel.selecting)) + var/armor_block = D.run_armor_check(affecting, "melee") + D.apply_damage(10, STAMINA, affecting, armor_block) + return 1 + +/mob/living/carbon/human/proc/wrestling_help() + set name = "Recall Teachings" + set desc = "Remember how to wrestle." + set category = "Wrestling" + + to_chat(usr, "You flex your muscles and have a revelation...") + to_chat(usr, "Clinch: Grab. Passively gives you a chance to immediately aggressively grab someone. Not always successful.") + to_chat(usr, "Suplex: Disarm someone you are grabbing. Suplexes your target to the floor. Greatly injures them and leaves both you and your target on the floor.") + to_chat(usr, "Advanced grab: Grab. Passively causes stamina damage when grabbing someone.") diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 5d27605b13c..5ebda5b96d7 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -37,6 +37,8 @@ prev_gender = gender // Debug for plural genders make_blood() + martial_art = default_martial_art + var/mob/M = src faction |= "\ref[M]" //what diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index afbe24be5ac..f68b03ed964 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -1,3 +1,4 @@ +var/global/default_martial_art = new/datum/martial_art /mob/living/carbon/human hud_possible = list(HEALTH_HUD,STATUS_HUD,ID_HUD,WANTED_HUD,IMPLOYAL_HUD,IMPCHEM_HUD,IMPTRACK_HUD,SPECIALROLE_HUD,NATIONS_HUD) diff --git a/paradise.dme b/paradise.dme index deaf7fd35f4..9eb3ec350a1 100644 --- a/paradise.dme +++ b/paradise.dme @@ -826,6 +826,7 @@ #include "code\game\objects\items\weapons\implants\implant_death_alarm.dm" #include "code\game\objects\items\weapons\implants\implant_explosive.dm" #include "code\game\objects\items\weapons\implants\implant_freedom.dm" +#include "code\game\objects\items\weapons\implants\implant_krav_maga.dm" #include "code\game\objects\items\weapons\implants\implant_loyality.dm" #include "code\game\objects\items\weapons\implants\implant_misc.dm" #include "code\game\objects\items\weapons\implants\implant_storage.dm" @@ -1335,6 +1336,13 @@ #include "code\modules\logic\dual_input.dm" #include "code\modules\logic\logic_base.dm" #include "code\modules\logic\mono_input.dm" +#include "code\modules\Martial Arts\adminfu.dm" +#include "code\modules\Martial Arts\brawling.dm" +#include "code\modules\Martial Arts\krav_maga.dm" +#include "code\modules\Martial Arts\mimejutsu.dm" +#include "code\modules\Martial Arts\plasma_fist.dm" +#include "code\modules\Martial Arts\sleeping_carp.dm" +#include "code\modules\Martial Arts\wrestleing.dm" #include "code\modules\media\jukebox.dm" #include "code\modules\media\machinery.dm" #include "code\modules\media\mediamanager.dm" From d4d7535a1fd77b41e7eb8fc71a9be85225c4b75b Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Tue, 19 Apr 2016 16:01:03 -0400 Subject: [PATCH 02/11] kick punch --- code/modules/Martial Arts/adminfu.dm | 20 ++++++++++++++++++++ paradise.dme | 1 - sound/effects/hit_kick.ogg | Bin 0 -> 9396 bytes sound/effects/hit_punch.ogg | Bin 0 -> 8846 bytes 4 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 sound/effects/hit_kick.ogg create mode 100644 sound/effects/hit_punch.ogg diff --git a/code/modules/Martial Arts/adminfu.dm b/code/modules/Martial Arts/adminfu.dm index 585c4d7aef9..20c2dd8d5cd 100644 --- a/code/modules/Martial Arts/adminfu.dm +++ b/code/modules/Martial Arts/adminfu.dm @@ -95,3 +95,23 @@ to_chat(usr, "Harm: Death.") to_chat(usr, "Healing Palm::Combo:Grab,Help intent. Heals or revives a crature.") + +/obj/item/weapon/adminfu_scroll + name = "frayed scroll" + desc = "An aged and frayed scrap of paper written in shifting runes. There are hand-drawn illustrations of pugilism." + icon = 'icons/obj/wizard.dmi' + icon_state ="scroll2" + var/used = 0 + +/obj/item/weapon/plasma_fist_scroll/attack_self(mob/user as mob) + if(!ishuman(user)) + return + if(!used) + var/mob/living/carbon/human/H = user + var/datum/martial_art/adminfu/F = new/datum/martial_art/adminfu(null) + F.teach(H) + to_chat(H, "You have learned the ancient martial art of the Admins.") + used = 1 + desc = "It's completely blank." + name = "empty scroll" + icon_state = "blankscroll" diff --git a/paradise.dme b/paradise.dme index 9eb3ec350a1..88ab3cfe35f 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1339,7 +1339,6 @@ #include "code\modules\Martial Arts\adminfu.dm" #include "code\modules\Martial Arts\brawling.dm" #include "code\modules\Martial Arts\krav_maga.dm" -#include "code\modules\Martial Arts\mimejutsu.dm" #include "code\modules\Martial Arts\plasma_fist.dm" #include "code\modules\Martial Arts\sleeping_carp.dm" #include "code\modules\Martial Arts\wrestleing.dm" diff --git a/sound/effects/hit_kick.ogg b/sound/effects/hit_kick.ogg new file mode 100644 index 0000000000000000000000000000000000000000..850642de69913b0caea7783605ec0b3d966de021 GIT binary patch literal 9396 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 Date: Tue, 19 Apr 2016 17:30:13 -0400 Subject: [PATCH 03/11] before tiger kills me... --- code/{datums => modules/martial Arts}/martial.dm | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename code/{datums => modules/martial Arts}/martial.dm (100%) diff --git a/code/datums/martial.dm b/code/modules/martial Arts/martial.dm similarity index 100% rename from code/datums/martial.dm rename to code/modules/martial Arts/martial.dm From ec263dbfca55e4573fbeb65386947c5b2fd4fa12 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Fri, 22 Apr 2016 16:07:56 -0400 Subject: [PATCH 04/11] mimejutsu --- .../weapons/implants/implant_krav_maga.dm | 6 +- code/modules/Martial Arts/adminfu.dm | 2 +- code/modules/Martial Arts/krav_maga.dm | 20 +-- code/modules/Martial Arts/mimejutsu.dm | 119 ++++++++++++++++++ .../living/carbon/human/human_attackhand.dm | 2 + icons/mob/actions.dmi | Bin 62362 -> 63341 bytes icons/mob/hands.dmi | Bin 19282 -> 19581 bytes icons/obj/clothing/gloves.dmi | Bin 18310 -> 20445 bytes paradise.dme | 15 +-- 9 files changed, 145 insertions(+), 19 deletions(-) diff --git a/code/game/objects/items/weapons/implants/implant_krav_maga.dm b/code/game/objects/items/weapons/implants/implant_krav_maga.dm index 3ba8d039b45..0a742a9f0a9 100644 --- a/code/game/objects/items/weapons/implants/implant_krav_maga.dm +++ b/code/game/objects/items/weapons/implants/implant_krav_maga.dm @@ -19,8 +19,10 @@ var/mob/living/carbon/human/H = imp_in if(!ishuman(H)) return - style.teach(H) - qdel(src) + if(istype(H.martial_art, /datum/martial_art/krav_maga)) + style.remove(H) + else + style.teach(H,1) /obj/item/weapon/implanter/krav_maga name = "implanter (krav maga)" diff --git a/code/modules/Martial Arts/adminfu.dm b/code/modules/Martial Arts/adminfu.dm index 20c2dd8d5cd..6f8df44f53f 100644 --- a/code/modules/Martial Arts/adminfu.dm +++ b/code/modules/Martial Arts/adminfu.dm @@ -103,7 +103,7 @@ icon_state ="scroll2" var/used = 0 -/obj/item/weapon/plasma_fist_scroll/attack_self(mob/user as mob) +/obj/item/weapon/adminfu_scroll/attack_self(mob/user as mob) if(!ishuman(user)) return if(!used) diff --git a/code/modules/Martial Arts/krav_maga.dm b/code/modules/Martial Arts/krav_maga.dm index e28a79c316b..7267eec0306 100644 --- a/code/modules/Martial Arts/krav_maga.dm +++ b/code/modules/Martial Arts/krav_maga.dm @@ -72,7 +72,7 @@ "[A] leg sweeps you!") playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1) D.apply_damage(5, BRUTE) - D.Weaken(4)//originally was 6, lowered since you could kill somebody in one stun + D.Weaken(2) return 1 /datum/martial_art/krav_maga/proc/quick_choke(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)//is actually lung punch @@ -140,23 +140,25 @@ datum/martial_art/krav_maga/grab_act(var/mob/living/carbon/human/A, var/mob/livi //Krav Maga Gloves -/obj/item/clothing/gloves/krav_maga - desc = "These gloves can teach you to perform Krav Maga using nanochips." - name = "black gloves" - icon_state = "black" - item_state = "bgloves" +/obj/item/clothing/gloves/color/black/krav_maga var/datum/martial_art/krav_maga/style = new -/obj/item/clothing/gloves/krav_maga/equipped(mob/user, slot) +/obj/item/clothing/gloves/color/black/krav_maga/equipped(mob/user, slot) if(!ishuman(user)) return if(slot == slot_gloves) var/mob/living/carbon/human/H = user style.teach(H,1) -/obj/item/clothing/gloves/krav_maga/dropped(mob/user) +/obj/item/clothing/gloves/color/black/krav_maga/dropped(mob/user) if(!ishuman(user)) return var/mob/living/carbon/human/H = user if(H.get_item_by_slot(slot_gloves) == src) - style.remove(H) \ No newline at end of file + style.remove(H) + +/obj/item/clothing/gloves/color/black/krav_maga/sec//more obviously named, given to sec + name = "krav maga gloves" + desc = "These gloves can teach you to perform Krav Maga using nanochips." + icon_state = "fightgloves" + item_state = "fightgloves" \ No newline at end of file diff --git a/code/modules/Martial Arts/mimejutsu.dm b/code/modules/Martial Arts/mimejutsu.dm index e69de29bb2d..79133de67f0 100644 --- a/code/modules/Martial Arts/mimejutsu.dm +++ b/code/modules/Martial Arts/mimejutsu.dm @@ -0,0 +1,119 @@ +#define MIMECHUCKS_COMBO "DH" +#define MIMESMOKE_COMBO "DD" +#define MIMEPALM_COMBO "GD" + +/datum/martial_art/mimejutsu + name = "Mimejutsu" + help_verb = /mob/living/carbon/human/proc/mimejutsu_help + +/datum/martial_art/mimejutsu/proc/check_streak(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(findtext(streak,MIMECHUCKS_COMBO)) + streak = "" + mimeChuck(A,D) + return 1 + if(findtext(streak,MIMESMOKE_COMBO)) + streak = "" + mimeSmoke(A,D) + return 1 + if(findtext(streak,MIMEPALM_COMBO)) + streak = "" + mimePalm(A,D) + return 1 + return 0 + +/datum/martial_art/mimejutsu/proc/mimeChuck(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(!D.stat && !D.stunned && !D.weakened) + var/damage = rand(5, 8) + A.species.punchdamagelow + if(!damage) + playsound(D.loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) + D.visible_message("[A] swings invisible nunchcuks at [D]..and misses?") + return 0 + + + var/obj/item/organ/external/affecting = D.get_organ(ran_zone(A.zone_sel.selecting)) + var/armor_block = D.run_armor_check(affecting, "melee") + + D.visible_message("[A] has hit [D] with invisible nuncucks!", \ + "[A] has hit [D] with a with invisible nuncuck!") + playsound(get_turf(A), 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + + D.apply_damage(damage, STAMINA, affecting, armor_block) + add_logs(D, A, "mimechucked") + + return 1 + return basic_hit(A,D) + +/datum/martial_art/mimejutsu/proc/mimeSmoke(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + + D.visible_message("[A] throws an invisible smoke bomb!!") + + var/datum/effect/system/bad_smoke_spread/smoke = new /datum/effect/system/bad_smoke_spread() + smoke.set_up(5, 0, D.loc) + smoke.start() + + return basic_hit(A,D) + +/datum/martial_art/mimejutsu/proc/mimePalm(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(!D.stat && !D.stunned && !D.weakened) + D.visible_message("[A] has barely touched [D] with thier palm!", \ + "[A] hovers thier palm over your face!") + + var/atom/throw_target = get_edge_target_turf(D, get_dir(D, get_step_away(D, A))) + D.throw_at(throw_target, 200, 4,A) + return basic_hit(A,D) + + +/datum/martial_art/mimejutsu/disarm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + add_to_streak("D",D) + if(check_streak(A,D)) + return 1 + + return ..() + +/datum/martial_art/mimejutsu/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + add_to_streak("G",D) + if(check_streak(A,D)) + return 1 + + return 1 + +/datum/martial_art/mimejutsu/harm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + add_to_streak("H",D) + if(check_streak(A,D)) + return 1 + + A.do_attack_animation(D) + + return 1 + +/obj/item/weapon/mimejutsu_scroll + name = "Mimejutsu 'scroll'" + desc = "Its a beret with a note stapled to it..." + icon = 'icons/obj/clothing/hats.dmi' + icon_state = "beret" + var/used = 0 + +/obj/item/weapon/mimejutsu_scroll/attack_self(mob/user as mob) + if(!ishuman(user)) + return + if(!used) + var/mob/living/carbon/human/H = user + var/datum/martial_art/mimejutsu/F = new/datum/martial_art/mimejutsu(null) + F.teach(H) + to_chat(H, "You have learned the ancient martial art of mimes.") + used = 1 + desc = "It used to have something stapled to it..the staple is still there." + name = "beret with staple" + icon_state = "beret" + +/mob/living/carbon/human/proc/mimejutsu_help() + set name = "Recall Ancient Mimeing" + set desc = "Remember the martial techniques of Mimejutsu." + set category = "Mimejutsu" + + to_chat(usr, "You make a invisible box around yourself and recall the teachings of Mimejutsu...") + + to_chat(usr, "Mimechucks: Disarm Harm. Hits the opponent with invisible nunchucks.") + to_chat(usr, "Smokebomb: Disarm Disarm. Drops a mime smokebomb.") + to_chat(usr, "Silent Palm: Grab Disarm. Using mime energy throw someone back.") + diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 25be2232432..33cb567ba4a 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -55,6 +55,8 @@ switch(M.a_intent) if(I_HELP) + if(attacker_style && attacker_style.help_act(H, src))//adminfu only... + return 1 if(can_operate(src)) if(health >= config.health_threshold_crit) if(src.surgeries.len) diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index a284732587528f8707bce7dfab8d80ad97766ac5..652a1dc819373f00465573f3d2f441418d78c770 100644 GIT binary patch delta 5521 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 Te>4>~00000NkvXXu0mjft9!SM delta 4535 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 literal 19282 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 diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index cf82594e6c6065093ed686d5c2352c4d656fdbd0..4a41556989aa27456b4b9329e859a02522bbc2e5 100644 GIT binary patch literal 20445 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 literal 18310 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%0AVZ8*VppL5C`>BgmNYw0=Yl&3RX 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 diff --git a/paradise.dme b/paradise.dme index 88ab3cfe35f..3ea018738b8 100644 --- a/paradise.dme +++ b/paradise.dme @@ -188,7 +188,6 @@ #include "code\datums\datumvars.dm" #include "code\datums\gas_mixture.dm" #include "code\datums\hud.dm" -#include "code\datums\martial.dm" #include "code\datums\material_container.dm" #include "code\datums\mind.dm" #include "code\datums\mixed.dm" @@ -1336,12 +1335,14 @@ #include "code\modules\logic\dual_input.dm" #include "code\modules\logic\logic_base.dm" #include "code\modules\logic\mono_input.dm" -#include "code\modules\Martial Arts\adminfu.dm" -#include "code\modules\Martial Arts\brawling.dm" -#include "code\modules\Martial Arts\krav_maga.dm" -#include "code\modules\Martial Arts\plasma_fist.dm" -#include "code\modules\Martial Arts\sleeping_carp.dm" -#include "code\modules\Martial Arts\wrestleing.dm" +#include "code\modules\martial arts\adminfu.dm" +#include "code\modules\martial arts\brawling.dm" +#include "code\modules\martial arts\krav_maga.dm" +#include "code\modules\martial arts\martial.dm" +#include "code\modules\martial arts\mimejutsu.dm" +#include "code\modules\martial arts\plasma_fist.dm" +#include "code\modules\martial arts\sleeping_carp.dm" +#include "code\modules\martial arts\wrestleing.dm" #include "code\modules\media\jukebox.dm" #include "code\modules\media\machinery.dm" #include "code\modules\media\mediamanager.dm" From cce2e7e297062b2194d205d03a8117f5be0f259a Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Fri, 22 Apr 2016 21:42:59 -0400 Subject: [PATCH 05/11] THE CREW IS NOW 50 BUTTBOTS --- code/modules/Martial Arts/mimejutsu.dm | 2 +- icons/mob/actions.dmi | Bin 63341 -> 64378 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/Martial Arts/mimejutsu.dm b/code/modules/Martial Arts/mimejutsu.dm index 79133de67f0..3dfe5e6ea99 100644 --- a/code/modules/Martial Arts/mimejutsu.dm +++ b/code/modules/Martial Arts/mimejutsu.dm @@ -24,7 +24,7 @@ /datum/martial_art/mimejutsu/proc/mimeChuck(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) if(!D.stat && !D.stunned && !D.weakened) var/damage = rand(5, 8) + A.species.punchdamagelow - if(!damage) + if(!damage || prob(20))//just cuase i think missing with an invisible weapon is FUNNY playsound(D.loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) D.visible_message("[A] swings invisible nunchcuks at [D]..and misses?") return 0 diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index 652a1dc819373f00465573f3d2f441418d78c770..16d20417d2debad333a129aed25190d0ef9734a4 100644 GIT binary patch delta 6578 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 PX9lF9s;g3?42$?bL|3PU delta 5533 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 fS)f&XadG;8biVsDe>4>~00000NkvXXu0mjfZ Date: Fri, 22 Apr 2016 21:48:44 -0400 Subject: [PATCH 06/11] Doors are now harmful to the crew --- icons/mob/actions.dmi | Bin 64378 -> 65315 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index 16d20417d2debad333a129aed25190d0ef9734a4..82f08fbb1011acf8076f3bd032b5f2702d761c17 100644 GIT binary patch delta 7511 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 SO(75v=6j){rCg^7kNh940$rv6 delta 6566 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 BrM3V7 From 01e571bc91bcb17a535f9ca210279f52befbea1e Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Fri, 22 Apr 2016 22:43:41 -0400 Subject: [PATCH 07/11] don't start with me travis... --- code/modules/martial Arts/martial.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/martial Arts/martial.dm b/code/modules/martial Arts/martial.dm index 4760e822c25..d128e22c0f6 100644 --- a/code/modules/martial Arts/martial.dm +++ b/code/modules/martial Arts/martial.dm @@ -243,4 +243,4 @@ if(wielded) return 1 else - return 0 + return 0 \ No newline at end of file From 1a8ae7f82677c9a9c6ad25779b68053947123f5b Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Fri, 22 Apr 2016 23:53:06 -0400 Subject: [PATCH 08/11] removing the only change i can think of before travis started failing. --- code/modules/Martial Arts/mimejutsu.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/Martial Arts/mimejutsu.dm b/code/modules/Martial Arts/mimejutsu.dm index 3dfe5e6ea99..79133de67f0 100644 --- a/code/modules/Martial Arts/mimejutsu.dm +++ b/code/modules/Martial Arts/mimejutsu.dm @@ -24,7 +24,7 @@ /datum/martial_art/mimejutsu/proc/mimeChuck(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) if(!D.stat && !D.stunned && !D.weakened) var/damage = rand(5, 8) + A.species.punchdamagelow - if(!damage || prob(20))//just cuase i think missing with an invisible weapon is FUNNY + if(!damage) playsound(D.loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) D.visible_message("[A] swings invisible nunchcuks at [D]..and misses?") return 0 From 2f3754af775572d606d4dc37cd3516004310e504 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Fri, 22 Apr 2016 23:58:03 -0400 Subject: [PATCH 09/11] folder rename in progreess... --- code/modules/{Martial Arts => martial_arts}/adminfu.dm | 0 code/modules/{Martial Arts => martial_arts}/brawling.dm | 0 code/modules/{Martial Arts => martial_arts}/krav_maga.dm | 0 code/modules/{martial Arts => martial_arts}/martial.dm | 0 code/modules/{Martial Arts => martial_arts}/mimejutsu.dm | 0 code/modules/{Martial Arts => martial_arts}/plasma_fist.dm | 0 code/modules/{Martial Arts => martial_arts}/sleeping_carp.dm | 0 code/modules/{Martial Arts => martial_arts}/wrestleing.dm | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename code/modules/{Martial Arts => martial_arts}/adminfu.dm (100%) rename code/modules/{Martial Arts => martial_arts}/brawling.dm (100%) rename code/modules/{Martial Arts => martial_arts}/krav_maga.dm (100%) rename code/modules/{martial Arts => martial_arts}/martial.dm (100%) rename code/modules/{Martial Arts => martial_arts}/mimejutsu.dm (100%) rename code/modules/{Martial Arts => martial_arts}/plasma_fist.dm (100%) rename code/modules/{Martial Arts => martial_arts}/sleeping_carp.dm (100%) rename code/modules/{Martial Arts => martial_arts}/wrestleing.dm (100%) diff --git a/code/modules/Martial Arts/adminfu.dm b/code/modules/martial_arts/adminfu.dm similarity index 100% rename from code/modules/Martial Arts/adminfu.dm rename to code/modules/martial_arts/adminfu.dm diff --git a/code/modules/Martial Arts/brawling.dm b/code/modules/martial_arts/brawling.dm similarity index 100% rename from code/modules/Martial Arts/brawling.dm rename to code/modules/martial_arts/brawling.dm diff --git a/code/modules/Martial Arts/krav_maga.dm b/code/modules/martial_arts/krav_maga.dm similarity index 100% rename from code/modules/Martial Arts/krav_maga.dm rename to code/modules/martial_arts/krav_maga.dm diff --git a/code/modules/martial Arts/martial.dm b/code/modules/martial_arts/martial.dm similarity index 100% rename from code/modules/martial Arts/martial.dm rename to code/modules/martial_arts/martial.dm diff --git a/code/modules/Martial Arts/mimejutsu.dm b/code/modules/martial_arts/mimejutsu.dm similarity index 100% rename from code/modules/Martial Arts/mimejutsu.dm rename to code/modules/martial_arts/mimejutsu.dm diff --git a/code/modules/Martial Arts/plasma_fist.dm b/code/modules/martial_arts/plasma_fist.dm similarity index 100% rename from code/modules/Martial Arts/plasma_fist.dm rename to code/modules/martial_arts/plasma_fist.dm diff --git a/code/modules/Martial Arts/sleeping_carp.dm b/code/modules/martial_arts/sleeping_carp.dm similarity index 100% rename from code/modules/Martial Arts/sleeping_carp.dm rename to code/modules/martial_arts/sleeping_carp.dm diff --git a/code/modules/Martial Arts/wrestleing.dm b/code/modules/martial_arts/wrestleing.dm similarity index 100% rename from code/modules/Martial Arts/wrestleing.dm rename to code/modules/martial_arts/wrestleing.dm From a2c009d9341795e657a10aa64f06906f4162b2dd Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Sat, 23 Apr 2016 01:30:39 -0400 Subject: [PATCH 10/11] bweh --- paradise.dme | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/paradise.dme b/paradise.dme index b0f73e9778a..f5d6d0010f0 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1349,14 +1349,14 @@ #include "code\modules\logic\dual_input.dm" #include "code\modules\logic\logic_base.dm" #include "code\modules\logic\mono_input.dm" -#include "code\modules\martial arts\adminfu.dm" -#include "code\modules\martial arts\brawling.dm" -#include "code\modules\martial arts\krav_maga.dm" -#include "code\modules\martial arts\martial.dm" -#include "code\modules\martial arts\mimejutsu.dm" -#include "code\modules\martial arts\plasma_fist.dm" -#include "code\modules\martial arts\sleeping_carp.dm" -#include "code\modules\martial arts\wrestleing.dm" +#include "code\modules\martial_arts\adminfu.dm" +#include "code\modules\martial_arts\brawling.dm" +#include "code\modules\martial_arts\krav_maga.dm" +#include "code\modules\martial_arts\martial.dm" +#include "code\modules\martial_arts\mimejutsu.dm" +#include "code\modules\martial_arts\plasma_fist.dm" +#include "code\modules\martial_arts\sleeping_carp.dm" +#include "code\modules\martial_arts\wrestleing.dm" #include "code\modules\media\jukebox.dm" #include "code\modules\media\machinery.dm" #include "code\modules\media\mediamanager.dm" From 47f22e9152a633bb4761d3be63d9195cef87ab4b Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Sun, 24 Apr 2016 00:22:37 -0400 Subject: [PATCH 11/11] lol2chat --- code/modules/martial_arts/krav_maga.dm | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/code/modules/martial_arts/krav_maga.dm b/code/modules/martial_arts/krav_maga.dm index 7267eec0306..9b589878475 100644 --- a/code/modules/martial_arts/krav_maga.dm +++ b/code/modules/martial_arts/krav_maga.dm @@ -9,7 +9,10 @@ button_icon_state = "neckchop" /datum/action/neck_chop/Trigger() - owner << "Your next attack will be a Neck Chop." + if(owner.incapacitated()) + to_chat(owner, "You can't use Krav Maga while you're incapacitated.") + return + to_chat(owner, "Your next attack will be a Neck Chop.") owner.visible_message("[owner] assumes the Neck Chop stance!") var/mob/living/carbon/human/H = owner H.martial_art.streak = "neck_chop" @@ -19,7 +22,10 @@ button_icon_state = "legsweep" /datum/action/leg_sweep/Trigger() - owner << "Your next attack will be a Leg Sweep." + if(owner.incapacitated()) + to_chat(owner, "You can't use Krav Maga while you're incapacitated.") + return + to_chat(owner, "Your next attack will be a Leg Sweep.") owner.visible_message("[owner] assumes the Leg Sweep stance!") var/mob/living/carbon/human/H = owner H.martial_art.streak = "leg_sweep" @@ -29,22 +35,25 @@ button_icon_state = "lungpunch" /datum/action/lung_punch/Trigger() - owner << "Your next attack will be a Lung Punch." + if(owner.incapacitated()) + to_chat(owner, "You can't use Krav Maga while you're incapacitated.") + return + to_chat(owner, "Your next attack will be a Lung Punch.") owner.visible_message("[owner] assumes the Lung Punch stance!") var/mob/living/carbon/human/H = owner H.martial_art.streak = "quick_choke"//internal name for lung punch /datum/martial_art/krav_maga/teach(var/mob/living/carbon/human/H,var/make_temporary=0) ..() - H << "You know the arts of Krav Maga!" - H << "Place your cursor over a move at the top of the screen to see what it does." + to_chat(H, "You know the arts of Krav Maga!") + to_chat(H, "Place your cursor over a move at the top of the screen to see what it does.") neckchop.Grant(H) legsweep.Grant(H) lungpunch.Grant(H) /datum/martial_art/krav_maga/remove(var/mob/living/carbon/human/H) ..() - H << "You suddenly forget the arts of Krav Maga..." + to_chat(H, "You suddenly forget the arts of Krav Maga...") neckchop.Remove(H) legsweep.Remove(H) lungpunch.Remove(H)