#define SIDE_KICK_COMBO "DH" #define SHOULDER_FLIP_COMBO "GHDGHH" #define REPULSE_PUNCH_COMBO "GHGH" #define FOOT_SMASH_COMBO "HH" #define DEFT_SWITCH_COMBO "GDD" /datum/martial_art/the_rising_bass name = "The Rising Bass" id = MARTIALART_RISINGBASS dodge_chance = 100 allow_temp_override = FALSE help_verb = /mob/living/carbon/human/proc/rising_bass_help /datum/martial_art/the_rising_bass/proc/check_streak(mob/living/carbon/human/A, mob/living/carbon/human/D) if(findtext(streak,SIDE_KICK_COMBO)) streak = "" sideKick(A,D) return 1 if(findtext(streak,SHOULDER_FLIP_COMBO)) streak = "" shoulderFlip(A,D) return 1 if(findtext(streak,REPULSE_PUNCH_COMBO)) streak = "" repulsePunch(A,D) return 1 if(findtext(streak,FOOT_SMASH_COMBO)) streak = "" footSmash(A,D) return 1 if(findtext(streak,DEFT_SWITCH_COMBO)) streak = "" deftSwitch(A,D) return 1 return 0 /datum/martial_art/the_rising_bass/proc/sideKick(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!D.IsKnockdown() || D.lying == 0) var/turf/H = get_step(D, A.dir & (NORTH | SOUTH) ? pick(EAST, WEST) : pick(NORTH, SOUTH)) A.do_attack_animation(D, ATTACK_EFFECT_KICK) D.visible_message("[A] kicks [D] in the side, sliding them over!", \ "[A] kicks you in the side, forcing you to step away!") playsound(get_turf(A), 'sound/weapons/thudswoosh.ogg', 50, 1, -1) D.apply_damage(5, BRUTE, BODY_ZONE_CHEST) D.Knockdown(60) var/L = H for(var/obj/i in H.contents) if(!istype(i,/mob) && i.density == 1) L = D.loc D.forceMove(L) log_combat(A, D, "side kicked (Rising Bass)") return 1 return basic_hit(A,D) /datum/martial_art/the_rising_bass/proc/shoulderFlip(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!D.IsKnockdown() || !D.lying) var/turf/H = get_step(A, get_dir(D,A)) var/L = H for(var/obj/i in H.contents) if(!istype(i,/mob) && i.density == 1)//(i.anchored == 1 && i.density == 1) || istype(i,/obj/structure) || istype(i,/turf/closed) L = A.loc A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) D.visible_message("[A] flips [D] over their shoulder, slamming them into the ground!", \ "[A] flips you over their shoulder, slamming you into the ground!") playsound(get_turf(A), 'sound/weapons/thudswoosh.ogg', 50, 1, -1) D.emote("scream") D.apply_damage(10, BRUTE, BODY_ZONE_CHEST) D.apply_damage(30, BRUTE, BODY_ZONE_HEAD) D.Sleeping(60) D.Knockdown(300) D.forceMove(L) log_combat(A, D, "shoulder flipped (Rising Bass)") return 1 return basic_hit(A,D) /datum/martial_art/the_rising_bass/proc/repulsePunch(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!D.IsKnockdown() || !D.lying) A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) D.visible_message("[A] smashes [D] in the chest, throwing them away!", \ "[A] smashes you in the chest, repelling you away!") playsound(get_turf(A), 'sound/weapons/punch1.ogg', 50, 1, -1) var/atom/F = get_edge_target_turf(D, get_dir(A, get_step_away(D, A))) D.throw_at(F, 10, 1) D.apply_damage(10, BRUTE, BODY_ZONE_CHEST) D.Knockdown(90) log_combat(A, D, "repulse punched (Rising Bass)") return 1 return basic_hit(A,D) /datum/martial_art/the_rising_bass/proc/footSmash(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!D.IsKnockdown() || !D.lying) A.do_attack_animation(D, ATTACK_EFFECT_KICK) D.visible_message("[A] smashes their foot down on [D]'s foot!", \ "[A] smashes your foot!") playsound(get_turf(A), 'sound/weapons/punch1.ogg', 50, 1, -1) D.apply_damage(5, BRUTE, pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)) D.dropItemToGround(D.get_active_held_item()) log_combat(A, D, "foot smashed (Rising Bass)") return 1 return basic_hit(A,D) /datum/martial_art/the_rising_bass/proc/deftSwitch(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!D.IsKnockdown() || !D.lying) if (D.get_active_held_item()) var/obj/item/G = D.get_active_held_item() if (G && !(G.item_flags & (ABSTRACT|DROPDEL)) && D.temporarilyRemoveItemFromInventory(G)) A.put_in_hands(G) D.visible_message("[A] slaps [D]'s hands, taking [G] from them!", \ "[A] slaps you, taking [G] from you!") log_combat(A, D, "deft switched (Rising Bass)") return 1 else to_chat(A, "[G] can't be taken out of [D]'s hands!") return 0 /datum/martial_art/the_rising_bass/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) add_to_streak("D",D) if(check_streak(A,D)) return 1 return ..() /datum/martial_art/the_rising_bass/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) add_to_streak("H",D) if(check_streak(A,D)) return 1 return ..() /datum/martial_art/the_rising_bass/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D) add_to_streak("G",D) if(check_streak(A,D)) return 1 return ..() /mob/living/carbon/human/proc/rising_bass_help() set name = "Recall Teachings" set desc = "Remember the martial techniques of the Rising Bass clan." set category = "Rising Bass" to_chat(usr, "You retreat inward and recall the teachings of the Rising Bass...") to_chat(usr, "Side Kick: Disarm Harm. Forces opponent to step to the side.") to_chat(usr, "Shoulder Flip: Grab Harm Disarm Grab Harm Harm. Flips opponent over your shoulder and stuns.") to_chat(usr, "Repulse Punch: Grab Harm Grab Harm. Slams the opponent far away from you.") to_chat(usr, "Foot Smash: Harm Harm. Stuns opponent, minor damage.") to_chat(usr, "Deft Switch: Grab Disarm Disarm. Switches the opponent's held item for your own. Most useful with nothing in your hand.") /datum/martial_art/the_rising_bass/teach(mob/living/carbon/human/H, make_temporary = FALSE) . = ..() if(!.) return ADD_TRAIT(H, TRAIT_NOGUNS, RISING_BASS_TRAIT) ADD_TRAIT(H, TRAIT_AUTO_CATCH_ITEM, RISING_BASS_TRAIT) /datum/martial_art/the_rising_bass/on_remove(mob/living/carbon/human/H) . = ..() REMOVE_TRAIT(H, TRAIT_NOGUNS, RISING_BASS_TRAIT) REMOVE_TRAIT(H, TRAIT_AUTO_CATCH_ITEM, RISING_BASS_TRAIT)