| @@ -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 << "<b><i>Your next attack will be a Neck Chop.</i></b>" | ||
| owner.visible_message("<span class='danger'>[owner] assumes the Neck Chop stance!</span>") | ||
| 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 << "<b><i>Your next attack will be a Leg Sweep.</i></b>" | ||
| owner.visible_message("<span class='danger'>[owner] assumes the Leg Sweep stance!</span>") | ||
| 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 << "<b><i>Your next attack will be a Lung Punch.</i></b>" | ||
| owner.visible_message("<span class='danger'>[owner] assumes the Lung Punch stance!</span>") | ||
| 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 << "<span class = 'userdanger'>You know the arts of Krav Maga!</span>" | ||
| H << "<span class = 'danger'>Place your cursor over a move at the top of the screen to see what it does.</span>" | ||
| neckchop.Grant(H) | ||
| legsweep.Grant(H) | ||
| lungpunch.Grant(H) | ||
|
|
||
| /datum/martial_art/krav_maga/remove(var/mob/living/carbon/human/H) | ||
| ..() | ||
| H << "<span class = 'userdanger'>You suddenly forget the arts of Krav Maga...</span>" | ||
| 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("<span class='warning'>[A] leg sweeps [D]!</span>", \ | ||
| "<span class='userdanger'>[A] leg sweeps you!</span>") | ||
| 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("<span class='warning'>[A] pounds [D] on the chest!</span>", \ | ||
| "<span class='userdanger'>[A] slams your chest! You can't breathe!</span>") | ||
| 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("<span class='warning'>[A] karate chops [D]'s neck!</span>", \ | ||
| "<span class='userdanger'>[A] karate chops your neck, rendering you unable to speak for a short time!</span>") | ||
| 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("<span class='danger'>[A] [picked_hit_type] [D]!</span>", \ | ||
| "<span class='userdanger'>[A] [picked_hit_type] you!</span>") | ||
| 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("<span class='danger'>[A] has disarmed [D]!</span>", \ | ||
| "<span class='userdanger'>[A] has disarmed [D]!</span>") | ||
| playsound(D, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) | ||
| else | ||
| D.visible_message("<span class='danger'>[A] attempted to disarm [D]!</span>", \ | ||
| "<span class='userdanger'>[A] attempted to disarm [D]!</span>") | ||
| playsound(D, 'sound/weapons/punchmiss.ogg', 25, 1, -1) | ||
| 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) |
| @@ -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("<span class='danger'>[A] has hit [D] with Plasma Punch!</span>", \ | ||
| "<span class='userdanger'>[A] has hit [D] with Plasma Punch!</span>") | ||
| 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("<span class='danger'>[A] has hit [D] with THE PLASMA FIST TECHNIQUE!</span>", \ | ||
| "<span class='userdanger'>[A] has hit [D] with THE PLASMA FIST TECHNIQUE!</span>") | ||
| 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, "<b><i>You clench your fists and have a flashback of knowledge...</i></b>") | ||
| to_chat(usr, "<span class='notice'>Tornado Sweep</span>: Harm Harm Disarm. Repulses target and everyone back.") | ||
| to_chat(usr, "<span class='notice'>Throwback</span>: Disarm Harm Disarm. Throws the target and an item at them.") | ||
| to_chat(usr, "<span class='notice'>The Plasma Fist</span>: Harm Disarm Disarm Disarm Harm. Knocks the brain out of the opponent and gibs their body.") |
| @@ -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("<span class='warning'>[A] grabs [D]'s wrist and wrenches it sideways!</span>", \ | ||
| "<span class='userdanger'>[A] grabs your wrist and violently wrenches it to the side!</span>") | ||
| 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("<span class='warning'>[A] kicks [D] in the back!</span>", \ | ||
| "<span class='userdanger'>[A] kicks you in the back, making you stumble and fall!</span>") | ||
| 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("<span class='warning'>[A] knees [D] in the stomach!</span>", \ | ||
| "<span class='userdanger'>[A] winds you with a knee in the stomach!</span>") | ||
| D.audible_message("<b>[D]</b> 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("<span class='warning'>[A] kicks [D] in the head!</span>", \ | ||
| "<span class='userdanger'>[A] kicks you in the jaw!</span>") | ||
| 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("<span class='warning'>[A] elbow drops [D]!</span>", \ | ||
| "<span class='userdanger'>[A] piledrives you with their elbow!</span>") | ||
| 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("<span class='danger'>[A] [atk_verb] [D]!</span>", \ | ||
| "<span class='userdanger'>[A] [atk_verb] you!</span>") | ||
| 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("<span class='warning'>[D] stumbles and falls!</span>", "<span class='userdanger'>The blow sends you to the ground!</span>") | ||
| 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, "<b><i>You retreat inward and recall the teachings of the Sleeping Carp...</i></b>") | ||
|
|
||
| to_chat(usr, "<span class='notice'>Wrist Wrench</span>: Disarm Disarm. Forces opponent to drop item in hand.") | ||
| to_chat(usr, "<span class='notice'>Back Kick</span>: Harm Grab. Opponent must be facing away. Knocks down.") | ||
| to_chat(usr, "<span class='notice'>Stomach Knee</span>: Grab Harm. Knocks the wind out of opponent and stuns.") | ||
| to_chat(usr, "<span class='notice'>Head Kick</span>: Disarm Harm Harm. Decent damage, forces opponent to drop item in hand.") | ||
| to_chat(usr, "<span class='notice'>Elbow Drop</span>: Harm Disarm Harm Disarm Harm. Opponent must be on the ground. Deals huge damage, instantly kills anyone in critical condition.") |
| @@ -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("<span class='danger'>[A] has [D] in a clinch!</span>", \ | ||
| "<span class='userdanger'>[A] has [D] in a clinch!</span>") | ||
| else | ||
| D.visible_message("<span class='danger'>[A] fails to get [D] in a clinch!</span>", \ | ||
| "<span class='userdanger'>[A] fails to get [D] in a clinch!</span>") | ||
| return 1 | ||
|
|
||
|
|
||
| /datum/martial_art/wrestling/proc/Suplex(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) | ||
|
|
||
| D.visible_message("<span class='danger'>[A] suplexes [D]!</span>", \ | ||
| "<span class='userdanger'>[A] suplexes [D]!</span>") | ||
| 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("<span class='danger'>[A] holds [D] down!</span>", \ | ||
| "<span class='userdanger'>[A] holds [D] down!</span>") | ||
| 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, "<b><i>You flex your muscles and have a revelation...</i></b>") | ||
| to_chat(usr, "<span class='notice'>Clinch</span>: Grab. Passively gives you a chance to immediately aggressively grab someone. Not always successful.") | ||
| to_chat(usr, "<span class='notice'>Suplex</span>: 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, "<span class='notice'>Advanced grab</span>: Grab. Passively causes stamina damage when grabbing someone.") |
| @@ -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 | ||
|
|
||