From 6b774745b3ab152205b4294a87fb7ccc94725b57 Mon Sep 17 00:00:00 2001 From: Seris02 Date: Fri, 8 Nov 2019 20:06:42 +0800 Subject: [PATCH 01/14] adds the rising bass file so I can port the file over from my mac --- code/datums/martial/rising_bass.dm | 234 +++++++++++++++++++++++++++++ 1 file changed, 234 insertions(+) create mode 100644 code/datums/martial/rising_bass.dm diff --git a/code/datums/martial/rising_bass.dm b/code/datums/martial/rising_bass.dm new file mode 100644 index 0000000000..801e8c8c7a --- /dev/null +++ b/code/datums/martial/rising_bass.dm @@ -0,0 +1,234 @@ +#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" + id = MARTIALART_SLEEPINGCARP + deflection_chance = 100 + reroute_deflection = TRUE + no_guns = TRUE + allow_temp_override = FALSE + help_verb = /mob/living/carbon/human/proc/sleeping_carp_help + +/datum/martial_art/the_sleeping_carp/proc/check_streak(mob/living/carbon/human/A, 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(mob/living/carbon/human/A, mob/living/carbon/human/D) + if(!D.stat && !D.IsStun() && !D.IsKnockdown()) + A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) + 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.dropItemToGround(D.get_active_held_item()) + D.apply_damage(5, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) + D.Knockdown(60)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun() + return 1 + log_combat(A, D, "wrist wrenched (Sleeping Carp)") + return basic_hit(A,D) + +/datum/martial_art/the_sleeping_carp/proc/backKick(mob/living/carbon/human/A, mob/living/carbon/human/D) + if(A.dir == D.dir && !D.stat && !D.IsKnockdown()) + A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) + 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.Knockdown(80) + playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) + return 1 + log_combat(A, D, "back-kicked (Sleeping Carp)") + return basic_hit(A,D) + +/datum/martial_art/the_sleeping_carp/proc/kneeStomach(mob/living/carbon/human/A, mob/living/carbon/human/D) + if(!D.stat && !D.IsKnockdown()) + A.do_attack_animation(D, ATTACK_EFFECT_KICK) + 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.Knockdown(40)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun() + playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) + return 1 + log_combat(A, D, "stomach kneed (Sleeping Carp)") + return basic_hit(A,D) + +/datum/martial_art/the_sleeping_carp/proc/headKick(mob/living/carbon/human/A, mob/living/carbon/human/D) + if(!D.stat && !D.IsKnockdown()) + A.do_attack_animation(D, ATTACK_EFFECT_KICK) + D.visible_message("[A] kicks [D] in the head!", \ + "[A] kicks you in the jaw!") + D.apply_damage(20, BRUTE, BODY_ZONE_HEAD) + D.drop_all_held_items() + playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) + D.Knockdown(80)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun() + return 1 + log_combat(A, D, "head kicked (Sleeping Carp)") + return basic_hit(A,D) + +/datum/martial_art/the_sleeping_carp/proc/elbowDrop(mob/living/carbon/human/A, mob/living/carbon/human/D) + if(D.IsKnockdown() || D.resting || D.stat) + A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) + 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, BODY_ZONE_CHEST) + playsound(get_turf(D), 'sound/weapons/punch1.ogg', 75, 1, -1) + return 1 + log_combat(A, D, "elbow dropped (Sleeping Carp)") + return basic_hit(A,D) + +/datum/martial_art/the_sleeping_carp/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D) + add_to_streak("G",D) + if(check_streak(A,D)) + return 1 + if(A.grab_state >= GRAB_AGGRESSIVE) + D.grabbedby(A, 1) + else + A.start_pulling(D, 1) + if(A.pulling) + D.drop_all_held_items() + D.stop_pulling() + if(A.a_intent == INTENT_GRAB) + log_combat(A, D, "grabbed", addition="aggressively") + D.visible_message("[A] violently grabs [D]!", \ + "[A] violently grabs you!") + A.grab_state = GRAB_AGGRESSIVE //Instant aggressive grab + else + log_combat(A, D, "grabbed", addition="passively") + A.grab_state = GRAB_PASSIVE + return 1 + +/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, ATTACK_EFFECT_PUNCH) + 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.Knockdown(80) + log_combat(A, D, "[atk_verb] (Sleeping Carp)") + return 1 + + +/datum/martial_art/the_sleeping_carp/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 ..() + +/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.") + +/obj/item/twohanded/bostaff + name = "bo staff" + desc = "A long, tall staff made of polished wood. Traditionally used in ancient old-Earth martial arts. Can be wielded to both kill and incapacitate." + force = 10 + w_class = WEIGHT_CLASS_BULKY + slot_flags = ITEM_SLOT_BACK + force_unwielded = 10 + force_wielded = 24 + throwforce = 20 + throw_speed = 2 + attack_verb = list("smashed", "slammed", "whacked", "thwacked") + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "bostaff0" + lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' + block_chance = 50 + +/obj/item/twohanded/bostaff/update_icon() + icon_state = "bostaff[wielded]" + return + +/obj/item/twohanded/bostaff/attack(mob/target, mob/living/user) + add_fingerprint(user) + if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50)) + to_chat(user, "You club yourself over the head with [src].") + user.Knockdown(60) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD) + else + user.take_bodypart_damage(2*force) + return + if(iscyborg(target)) + return ..() + if(!isliving(target)) + return ..() + var/mob/living/carbon/C = target + if(C.stat) + to_chat(user, "It would be dishonorable to attack a foe while they cannot retaliate.") + return + if(user.a_intent == INTENT_DISARM) + if(!wielded) + return ..() + if(!ishuman(target)) + return ..() + var/mob/living/carbon/human/H = target + var/list/fluffmessages = list("[user] clubs [H] with [src]!", \ + "[user] smacks [H] with the butt of [src]!", \ + "[user] broadsides [H] with [src]!", \ + "[user] smashes [H]'s head with [src]!", \ + "[user] beats [H] with front of [src]!", \ + "[user] twirls and slams [H] with [src]!") + H.visible_message("[pick(fluffmessages)]", \ + "[pick(fluffmessages)]") + playsound(get_turf(user), 'sound/effects/woodhit.ogg', 75, 1, -1) + H.adjustStaminaLoss(rand(13,20)) + if(prob(10)) + H.visible_message("[H] collapses!", \ + "Your legs give out!") + H.Knockdown(80) + if(H.staminaloss && !H.IsSleeping()) + var/total_health = (H.health - H.staminaloss) + if(total_health <= HEALTH_THRESHOLD_CRIT && !H.stat) + H.visible_message("[user] delivers a heavy hit to [H]'s head, knocking [H.p_them()] out cold!", \ + "[user] knocks you unconscious!") + H.SetSleeping(600) + H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 15, 150) + else + return ..() + +/obj/item/twohanded/bostaff/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(wielded) + return ..() + return 0 From b9238d02905fa75ed8589cfa6c18e2b7997bcb3c Mon Sep 17 00:00:00 2001 From: Seris02 <49109742+Seris02@users.noreply.github.com> Date: Fri, 8 Nov 2019 20:14:41 +0800 Subject: [PATCH 02/14] copying my file from my mac henk --- code/datums/martial/rising_bass.dm | 246 +++++------------------------ 1 file changed, 40 insertions(+), 206 deletions(-) diff --git a/code/datums/martial/rising_bass.dm b/code/datums/martial/rising_bass.dm index 801e8c8c7a..8e291032d0 100644 --- a/code/datums/martial/rising_bass.dm +++ b/code/datums/martial/rising_bass.dm @@ -1,234 +1,68 @@ -#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" +#define SIDE_KICK_COMBO "DH" +#define SHOULDER_FLIP_COMBO "GHDGG" +#define REPULSE_PUNCH_COMBO "GHGH" +#define FOOT_SMASH_COMBO "HH" +#define DEFT_SWITCH_COMBO "GDD" -/datum/martial_art/the_sleeping_carp - name = "The Sleeping Carp" - id = MARTIALART_SLEEPINGCARP - deflection_chance = 100 - reroute_deflection = TRUE +/datum/martial_art/the_rising_bass + name = "The Rising Bass" + id = MARTIALART_RISINGBASS + var/dodge_chance = 100 no_guns = TRUE allow_temp_override = FALSE - help_verb = /mob/living/carbon/human/proc/sleeping_carp_help + help_verb = /mob/living/carbon/human/proc/rising_bass_help /datum/martial_art/the_sleeping_carp/proc/check_streak(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(findtext(streak,WRIST_WRENCH_COMBO)) + if(findtext(streak,SIDE_KICK_COMBO)) streak = "" - wristWrench(A,D) + sideKick(A,D) return 1 - if(findtext(streak,BACK_KICK_COMBO)) + if(findtext(streak,SHOULDER_FLIP_COMBO)) streak = "" - backKick(A,D) + shoulderFlip(A,D) return 1 - if(findtext(streak,STOMACH_KNEE_COMBO)) + if(findtext(streak,REPULSE_PUNCH_COMBO)) streak = "" - kneeStomach(A,D) + repulsePunch(A,D) return 1 - if(findtext(streak,HEAD_KICK_COMBO)) + if(findtext(streak,FOOT_SMASH_COMBO)) streak = "" - headKick(A,D) + footSmash(A,D) return 1 - if(findtext(streak,ELBOW_DROP_COMBO)) + if(findtext(streak,DEFT_SWITCH_COMBO)) streak = "" - elbowDrop(A,D) + deftSwitch(A,D) return 1 return 0 -/datum/martial_art/the_sleeping_carp/proc/wristWrench(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(!D.stat && !D.IsStun() && !D.IsKnockdown()) +/datum/martial_art/the_sleeping_carp/proc/sideKick(mob/living/carbon/human/A, mob/living/carbon/human/D) + if(!D.IsKnockdown()) + 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(10, BRUTE, BODY_ZONE_CHEST) + D.Knockdown(60) + return 1 + log_combat(A, D, "side kicked (Rising Bass)") + return basic_hit(A,D) + +/datum/martial_art/the_sleeping_carp/proc/shoulderFlip(mob/living/carbon/human/A, mob/living/carbon/human/D) + if(!D.IsKnockdown()) A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) - D.visible_message("[A] grabs [D]'s wrist and wrenches it sideways!", \ - "[A] grabs your wrist and violently wrenches it to the side!") + 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.dropItemToGround(D.get_active_held_item()) - D.apply_damage(5, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) - D.Knockdown(60)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun() + D.apply_damage(10, BRUTE, BODY_ZONE_CHEST) + D.apply_damage(30, BRUTE, BODY_ZONE_HEAD) + D.Knockdown(300) return 1 - log_combat(A, D, "wrist wrenched (Sleeping Carp)") + log_combat(A, D, "shoulder flipped (Rising Bass)") return basic_hit(A,D) -/datum/martial_art/the_sleeping_carp/proc/backKick(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(A.dir == D.dir && !D.stat && !D.IsKnockdown()) - A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) - 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.Knockdown(80) - playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) - return 1 - log_combat(A, D, "back-kicked (Sleeping Carp)") - return basic_hit(A,D) - -/datum/martial_art/the_sleeping_carp/proc/kneeStomach(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(!D.stat && !D.IsKnockdown()) - A.do_attack_animation(D, ATTACK_EFFECT_KICK) - 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.Knockdown(40)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun() - playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) - return 1 - log_combat(A, D, "stomach kneed (Sleeping Carp)") - return basic_hit(A,D) - -/datum/martial_art/the_sleeping_carp/proc/headKick(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(!D.stat && !D.IsKnockdown()) - A.do_attack_animation(D, ATTACK_EFFECT_KICK) - D.visible_message("[A] kicks [D] in the head!", \ - "[A] kicks you in the jaw!") - D.apply_damage(20, BRUTE, BODY_ZONE_HEAD) - D.drop_all_held_items() - playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) - D.Knockdown(80)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun() - return 1 - log_combat(A, D, "head kicked (Sleeping Carp)") - return basic_hit(A,D) - -/datum/martial_art/the_sleeping_carp/proc/elbowDrop(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(D.IsKnockdown() || D.resting || D.stat) - A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) - 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, BODY_ZONE_CHEST) - playsound(get_turf(D), 'sound/weapons/punch1.ogg', 75, 1, -1) - return 1 - log_combat(A, D, "elbow dropped (Sleeping Carp)") - return basic_hit(A,D) - -/datum/martial_art/the_sleeping_carp/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D) - add_to_streak("G",D) - if(check_streak(A,D)) - return 1 - if(A.grab_state >= GRAB_AGGRESSIVE) - D.grabbedby(A, 1) - else - A.start_pulling(D, 1) - if(A.pulling) - D.drop_all_held_items() - D.stop_pulling() - if(A.a_intent == INTENT_GRAB) - log_combat(A, D, "grabbed", addition="aggressively") - D.visible_message("[A] violently grabs [D]!", \ - "[A] violently grabs you!") - A.grab_state = GRAB_AGGRESSIVE //Instant aggressive grab - else - log_combat(A, D, "grabbed", addition="passively") - A.grab_state = GRAB_PASSIVE - return 1 - -/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, ATTACK_EFFECT_PUNCH) - 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.Knockdown(80) - log_combat(A, D, "[atk_verb] (Sleeping Carp)") - return 1 -/datum/martial_art/the_sleeping_carp/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 ..() -/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.") - -/obj/item/twohanded/bostaff - name = "bo staff" - desc = "A long, tall staff made of polished wood. Traditionally used in ancient old-Earth martial arts. Can be wielded to both kill and incapacitate." - force = 10 - w_class = WEIGHT_CLASS_BULKY - slot_flags = ITEM_SLOT_BACK - force_unwielded = 10 - force_wielded = 24 - throwforce = 20 - throw_speed = 2 - attack_verb = list("smashed", "slammed", "whacked", "thwacked") - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "bostaff0" - lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' - block_chance = 50 - -/obj/item/twohanded/bostaff/update_icon() - icon_state = "bostaff[wielded]" - return - -/obj/item/twohanded/bostaff/attack(mob/target, mob/living/user) - add_fingerprint(user) - if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50)) - to_chat(user, "You club yourself over the head with [src].") - user.Knockdown(60) - if(ishuman(user)) - var/mob/living/carbon/human/H = user - H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD) - else - user.take_bodypart_damage(2*force) - return - if(iscyborg(target)) - return ..() - if(!isliving(target)) - return ..() - var/mob/living/carbon/C = target - if(C.stat) - to_chat(user, "It would be dishonorable to attack a foe while they cannot retaliate.") - return - if(user.a_intent == INTENT_DISARM) - if(!wielded) - return ..() - if(!ishuman(target)) - return ..() - var/mob/living/carbon/human/H = target - var/list/fluffmessages = list("[user] clubs [H] with [src]!", \ - "[user] smacks [H] with the butt of [src]!", \ - "[user] broadsides [H] with [src]!", \ - "[user] smashes [H]'s head with [src]!", \ - "[user] beats [H] with front of [src]!", \ - "[user] twirls and slams [H] with [src]!") - H.visible_message("[pick(fluffmessages)]", \ - "[pick(fluffmessages)]") - playsound(get_turf(user), 'sound/effects/woodhit.ogg', 75, 1, -1) - H.adjustStaminaLoss(rand(13,20)) - if(prob(10)) - H.visible_message("[H] collapses!", \ - "Your legs give out!") - H.Knockdown(80) - if(H.staminaloss && !H.IsSleeping()) - var/total_health = (H.health - H.staminaloss) - if(total_health <= HEALTH_THRESHOLD_CRIT && !H.stat) - H.visible_message("[user] delivers a heavy hit to [H]'s head, knocking [H.p_them()] out cold!", \ - "[user] knocks you unconscious!") - H.SetSleeping(600) - H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 15, 150) - else - return ..() - -/obj/item/twohanded/bostaff/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(wielded) - return ..() - return 0 From 8dfbc652cb1321be25316cef0dc96cd57ed93515 Mon Sep 17 00:00:00 2001 From: Seris02 Date: Sat, 9 Nov 2019 21:11:36 +0800 Subject: [PATCH 03/14] ADDS THE NEW MARTIAL ART - RISING BASS!! --- code/__DEFINES/melee.dm | 3 +- code/datums/martial.dm | 1 + code/datums/martial/rising_bass.dm | 337 +++++++----------- code/game/objects/items/granters.dm | 17 + .../mob/living/carbon/human/human_defense.dm | 21 ++ code/modules/uplink/uplink_items.dm | 11 +- tgstation.dme | 1 + 7 files changed, 188 insertions(+), 203 deletions(-) diff --git a/code/__DEFINES/melee.dm b/code/__DEFINES/melee.dm index cb4a433211..b166b9d21a 100644 --- a/code/__DEFINES/melee.dm +++ b/code/__DEFINES/melee.dm @@ -7,4 +7,5 @@ #define MARTIALART_MUSHPUNCH "mushroom punch" #define MARTIALART_KRAVMAGA "krav maga" #define MARTIALART_CQC "CQC" -#define MARTIALART_PLASMAFIST "plasma fist" \ No newline at end of file +#define MARTIALART_PLASMAFIST "plasma fist" +#define MARTIALART_RISINGBASS "rising bass" \ No newline at end of file diff --git a/code/datums/martial.dm b/code/datums/martial.dm index d119759efc..11aa9250dc 100644 --- a/code/datums/martial.dm +++ b/code/datums/martial.dm @@ -8,6 +8,7 @@ var/deflection_chance = 0 //Chance to deflect projectiles var/reroute_deflection = FALSE //Delete the bullet, or actually deflect it in some direction? var/block_chance = 0 //Chance to block melee attacks using items while on throw mode. + var/dodge_chance = 0 var/restraining = 0 //used in cqc's disarm_act to check if the disarmed is being restrained and so whether they should be put in a chokehold or not var/help_verb var/no_guns = FALSE diff --git a/code/datums/martial/rising_bass.dm b/code/datums/martial/rising_bass.dm index 801e8c8c7a..30152ab002 100644 --- a/code/datums/martial/rising_bass.dm +++ b/code/datums/martial/rising_bass.dm @@ -1,234 +1,169 @@ -#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" +#define SIDE_KICK_COMBO "DH" +#define SHOULDER_FLIP_COMBO "GHDGGHD" +#define REPULSE_PUNCH_COMBO "GHGH" +#define FOOT_SMASH_COMBO "HH" +#define DEFT_SWITCH_COMBO "GDD" -/datum/martial_art/the_sleeping_carp - name = "The Sleeping Carp" - id = MARTIALART_SLEEPINGCARP - deflection_chance = 100 - reroute_deflection = TRUE +/datum/martial_art/the_rising_bass + name = "The Rising Bass" + id = MARTIALART_RISINGBASS + dodge_chance = 100 no_guns = TRUE allow_temp_override = FALSE - help_verb = /mob/living/carbon/human/proc/sleeping_carp_help + help_verb = /mob/living/carbon/human/proc/rising_bass_help -/datum/martial_art/the_sleeping_carp/proc/check_streak(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(findtext(streak,WRIST_WRENCH_COMBO)) +/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 = "" - wristWrench(A,D) + sideKick(A,D) return 1 - if(findtext(streak,BACK_KICK_COMBO)) + if(findtext(streak,SHOULDER_FLIP_COMBO)) streak = "" - backKick(A,D) + shoulderFlip(A,D) return 1 - if(findtext(streak,STOMACH_KNEE_COMBO)) + if(findtext(streak,REPULSE_PUNCH_COMBO)) streak = "" - kneeStomach(A,D) + repulsePunch(A,D) return 1 - if(findtext(streak,HEAD_KICK_COMBO)) + if(findtext(streak,FOOT_SMASH_COMBO)) streak = "" - headKick(A,D) + footSmash(A,D) return 1 - if(findtext(streak,ELBOW_DROP_COMBO)) + if(findtext(streak,DEFT_SWITCH_COMBO)) streak = "" - elbowDrop(A,D) + deftSwitch(A,D) return 1 return 0 -/datum/martial_art/the_sleeping_carp/proc/wristWrench(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(!D.stat && !D.IsStun() && !D.IsKnockdown()) +/datum/martial_art/the_rising_bass/proc/sideKick(mob/living/carbon/human/A, mob/living/carbon/human/D) + if(!D.IsKnockdown()) + var/turf/H + switch(A.dir) + if(NORTH) + H = get_step(get_step(A,NORTH),pick(EAST,WEST)) + if(EAST) + H = get_step(get_step(A,EAST),pick(SOUTH,NORTH)) + if(SOUTH) + H = get_step(get_step(A,SOUTH),pick(EAST,WEST)) + if(WEST) + H = get_step(get_step(A,WEST),pick(SOUTH,NORTH)) + 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/turf/L = H + //for(var/obj/i in H.contents) + 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 = D.loc + D.forceMove(L) + return 1 + log_combat(A, D, "side kicked (Rising Bass)") + 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()) + var/turf/H + switch(A.dir) + if(NORTH) + H = get_step(A,SOUTH) + if(EAST) + H = get_step(A,WEST) + if(SOUTH) + H = get_step(A,NORTH) + if(WEST) + H = get_step(A,EAST) + 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] grabs [D]'s wrist and wrenches it sideways!", \ - "[A] grabs your wrist and violently wrenches it to the side!") + 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.SetSleeping(60) + D.Knockdown(300) + D.forceMove(L) + return 1 + log_combat(A, D, "shoulder flipped (Rising Bass)") + 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()) + 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) + return 1 + log_combat(A, D, "repulse punched (Rising Bass)") + 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()) + 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()) - D.apply_damage(5, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) - D.Knockdown(60)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun() return 1 - log_combat(A, D, "wrist wrenched (Sleeping Carp)") + log_combat(A, D, "foot smashed (Rising Bass)") return basic_hit(A,D) -/datum/martial_art/the_sleeping_carp/proc/backKick(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(A.dir == D.dir && !D.stat && !D.IsKnockdown()) - A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) - 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.Knockdown(80) - playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) - return 1 - log_combat(A, D, "back-kicked (Sleeping Carp)") +/datum/martial_art/the_rising_bass/proc/deftSwitch(mob/living/carbon/human/A, mob/living/carbon/human/D) + if(!D.IsKnockdown()) + if (D.get_active_held_item()) + var/obj/item/G = D.get_active_held_item() + D.visible_message("[A] slaps [D]'s hands, taking [G] from them!", \ + "[A] slaps you, taking [G] from you!") + D.temporarilyRemoveItemFromInventory(G, TRUE) + A.put_in_hands(G) + return 1 + log_combat(A, D, "deft switched (Rising Bass)") return basic_hit(A,D) -/datum/martial_art/the_sleeping_carp/proc/kneeStomach(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(!D.stat && !D.IsKnockdown()) - A.do_attack_animation(D, ATTACK_EFFECT_KICK) - 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.Knockdown(40)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun() - playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) - return 1 - log_combat(A, D, "stomach kneed (Sleeping Carp)") - return basic_hit(A,D) - -/datum/martial_art/the_sleeping_carp/proc/headKick(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(!D.stat && !D.IsKnockdown()) - A.do_attack_animation(D, ATTACK_EFFECT_KICK) - D.visible_message("[A] kicks [D] in the head!", \ - "[A] kicks you in the jaw!") - D.apply_damage(20, BRUTE, BODY_ZONE_HEAD) - D.drop_all_held_items() - playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) - D.Knockdown(80)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun() - return 1 - log_combat(A, D, "head kicked (Sleeping Carp)") - return basic_hit(A,D) - -/datum/martial_art/the_sleeping_carp/proc/elbowDrop(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(D.IsKnockdown() || D.resting || D.stat) - A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) - 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, BODY_ZONE_CHEST) - playsound(get_turf(D), 'sound/weapons/punch1.ogg', 75, 1, -1) - return 1 - log_combat(A, D, "elbow dropped (Sleeping Carp)") - return basic_hit(A,D) - -/datum/martial_art/the_sleeping_carp/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D) - add_to_streak("G",D) - if(check_streak(A,D)) - return 1 - if(A.grab_state >= GRAB_AGGRESSIVE) - D.grabbedby(A, 1) - else - A.start_pulling(D, 1) - if(A.pulling) - D.drop_all_held_items() - D.stop_pulling() - if(A.a_intent == INTENT_GRAB) - log_combat(A, D, "grabbed", addition="aggressively") - D.visible_message("[A] violently grabs [D]!", \ - "[A] violently grabs you!") - A.grab_state = GRAB_AGGRESSIVE //Instant aggressive grab - else - log_combat(A, D, "grabbed", addition="passively") - A.grab_state = GRAB_PASSIVE - return 1 - -/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, ATTACK_EFFECT_PUNCH) - 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.Knockdown(80) - log_combat(A, D, "[atk_verb] (Sleeping Carp)") - return 1 - - -/datum/martial_art/the_sleeping_carp/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) +/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 + //D.dropItemToGround(D.get_active_held_item()) + //D.visible_message("[A] disarms [D]!", \ + "[A] disarms you!") + //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 ..() -/mob/living/carbon/human/proc/sleeping_carp_help() +/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 Sleeping Carp clan." - set category = "Sleeping Carp" + 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 Sleeping Carp...") + to_chat(usr, "You retreat inward and recall the teachings of the Rising Bass...") - 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.") - -/obj/item/twohanded/bostaff - name = "bo staff" - desc = "A long, tall staff made of polished wood. Traditionally used in ancient old-Earth martial arts. Can be wielded to both kill and incapacitate." - force = 10 - w_class = WEIGHT_CLASS_BULKY - slot_flags = ITEM_SLOT_BACK - force_unwielded = 10 - force_wielded = 24 - throwforce = 20 - throw_speed = 2 - attack_verb = list("smashed", "slammed", "whacked", "thwacked") - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "bostaff0" - lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' - block_chance = 50 - -/obj/item/twohanded/bostaff/update_icon() - icon_state = "bostaff[wielded]" - return - -/obj/item/twohanded/bostaff/attack(mob/target, mob/living/user) - add_fingerprint(user) - if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50)) - to_chat(user, "You club yourself over the head with [src].") - user.Knockdown(60) - if(ishuman(user)) - var/mob/living/carbon/human/H = user - H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD) - else - user.take_bodypart_damage(2*force) - return - if(iscyborg(target)) - return ..() - if(!isliving(target)) - return ..() - var/mob/living/carbon/C = target - if(C.stat) - to_chat(user, "It would be dishonorable to attack a foe while they cannot retaliate.") - return - if(user.a_intent == INTENT_DISARM) - if(!wielded) - return ..() - if(!ishuman(target)) - return ..() - var/mob/living/carbon/human/H = target - var/list/fluffmessages = list("[user] clubs [H] with [src]!", \ - "[user] smacks [H] with the butt of [src]!", \ - "[user] broadsides [H] with [src]!", \ - "[user] smashes [H]'s head with [src]!", \ - "[user] beats [H] with front of [src]!", \ - "[user] twirls and slams [H] with [src]!") - H.visible_message("[pick(fluffmessages)]", \ - "[pick(fluffmessages)]") - playsound(get_turf(user), 'sound/effects/woodhit.ogg', 75, 1, -1) - H.adjustStaminaLoss(rand(13,20)) - if(prob(10)) - H.visible_message("[H] collapses!", \ - "Your legs give out!") - H.Knockdown(80) - if(H.staminaloss && !H.IsSleeping()) - var/total_health = (H.health - H.staminaloss) - if(total_health <= HEALTH_THRESHOLD_CRIT && !H.stat) - H.visible_message("[user] delivers a heavy hit to [H]'s head, knocking [H.p_them()] out cold!", \ - "[user] knocks you unconscious!") - H.SetSleeping(600) - H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 15, 150) - else - return ..() - -/obj/item/twohanded/bostaff/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(wielded) - return ..() - return 0 + to_chat(usr, "Side Kick: Disarm Harm. Forces opponent to step to the side.") + to_chat(usr, "Shoulder Flip: Grab Harm Disarm Grab Grab. 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.") \ No newline at end of file diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm index 6ea68bf548..97976e2366 100644 --- a/code/game/objects/items/granters.dm +++ b/code/game/objects/items/granters.dm @@ -397,6 +397,23 @@ name = "empty scroll" icon_state = "blankscroll" +/obj/item/book/granter/martial/bass + martial = /datum/martial_art/the_rising_bass + name = "shifting scroll" + martialname = "rising bass" + desc = "A paper scroll that seems to move even as you read it, the letters never seem to stay still." + greet = "You have learned the ancient martial art of the Rising Bass. Your skill at running away has increased quite a bit. Use the combos to get away from opponents quickly. Along with this, you now dodge all projectiles and catch anything thrown at you." + icon = 'icons/obj/wizard.dmi' + icon_state = "scroll2" + remarks = list("The trick is to disarm them...","Running away helps in many situations...","Never stay still...","Fighting won't help unless you're forced to...", "Crush their limbs to incapacitate them...", "Stay as far away as possible...") + +/obj/item/book/granter/martial/bass/onlearned(mob/living/carbon/user) + ..() + if(oneuse == TRUE) + desc = "It's completely blank." + name = "empty scroll" + icon_state = "blankscroll" + /obj/item/book/granter/martial/plasma_fist martial = /datum/martial_art/plasma_fist name = "frayed scroll" diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index a44779e05e..c85c0732b1 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -46,6 +46,12 @@ return spec_return if(mind) + if (mind.martial_art && mind.martial_art.dodge_chance) + if(!lying && dna && !dna.check_mutation(HULK)) + if(mind.martial_art.dodge_chance >= rand(0,100)) + var/dodgemessage = pick("dodges under the projectile!","dodges to the right of the projectile!","jumps over the projectile!") + visible_message("[src] [dodgemessage]", "You dodge the projectile!") + return -1 if(mind.martial_art && !incapacitated(FALSE, TRUE) && mind.martial_art.can_use(src) && mind.martial_art.deflection_chance) //Some martial arts users can deflect projectiles! if(prob(mind.martial_art.deflection_chance)) if(!lying && dna && !dna.check_mutation(HULK)) //But only if they're not lying down, and hulks can't do it @@ -141,6 +147,21 @@ skipcatch = TRUE blocked = TRUE else if(I) + if (mind) + if (mind.martial_art && mind.martial_art.dodge_chance == 100) //autocatch for rising bass + if (get_active_held_item()) + visible_message("[I] falls to the ground as [src] chops it out of the air!") + return 1 + else + if(!in_throw_mode) + throw_mode_on() + if(istype(AM, /obj/item)) + if(isturf(I.loc)) + I.attack_hand(src) + if(get_active_held_item() == I) + visible_message("[src] catches [I]!") + throw_mode_off() + return 1 if(I.throw_speed >= EMBED_THROWSPEED_THRESHOLD) if(can_embed(I)) if(prob(I.embedding.embed_chance) && !HAS_TRAIT(src, TRAIT_PIERCEIMMUNE)) diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index 280740688e..dc7204c29c 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -592,7 +592,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 2 /datum/uplink_item/stealthy_weapons/martialarts - name = "Martial Arts Scroll" + name = "Sleeping Carp Scroll" desc = "This scroll contains the secrets of an ancient martial arts technique. You will master unarmed combat, \ deflecting all ranged weapon fire, but you also refuse to use dishonorable ranged weaponry." item = /obj/item/book/granter/martial/carp @@ -600,6 +600,15 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) surplus = 0 exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) +/datum/uplink_item/stealthy_weapons/martialartstwo + name = "Rising Bass Scroll" + desc = "This scroll contains the secrets of an ancient martial arts technique. You will become proficient in fleeing situations, \ + and dodging all ranged weapon fire, but you will refuse to use dishonorable ranged weaponry." + item = /obj/item/book/granter/martial/bass + cost = 17 + surplus = 0 + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + /datum/uplink_item/stealthy_weapons/crossbow name = "Miniature Energy Crossbow" desc = "A short bow mounted across a tiller in miniature. Small enough to \ diff --git a/tgstation.dme b/tgstation.dme index 0ab92d863d..125640ecf3 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -475,6 +475,7 @@ #include "code\datums\martial\mushpunch.dm" #include "code\datums\martial\plasma_fist.dm" #include "code\datums\martial\psychotic_brawl.dm" +#include "code\datums\martial\rising_bass.dm" #include "code\datums\martial\sleeping_carp.dm" #include "code\datums\martial\wrestling.dm" #include "code\datums\mood_events\beauty_events.dm" From 68014392ca485aa8c72ee35ab59d3631a1fafc9a Mon Sep 17 00:00:00 2001 From: Seris02 Date: Sat, 9 Nov 2019 21:38:17 +0800 Subject: [PATCH 04/14] Fixes the fork? --- code/datums/martial/rising_bass.dm | 55 ++---------------------------- 1 file changed, 2 insertions(+), 53 deletions(-) diff --git a/code/datums/martial/rising_bass.dm b/code/datums/martial/rising_bass.dm index b9b6c3d131..09c6dae132 100644 --- a/code/datums/martial/rising_bass.dm +++ b/code/datums/martial/rising_bass.dm @@ -1,9 +1,5 @@ #define SIDE_KICK_COMBO "DH" -<<<<<<< HEAD #define SHOULDER_FLIP_COMBO "GHDGGHD" -======= -#define SHOULDER_FLIP_COMBO "GHDGG" ->>>>>>> b9238d02905fa75ed8589cfa6c18e2b7997bcb3c #define REPULSE_PUNCH_COMBO "GHGH" #define FOOT_SMASH_COMBO "HH" #define DEFT_SWITCH_COMBO "GDD" @@ -11,20 +7,12 @@ /datum/martial_art/the_rising_bass name = "The Rising Bass" id = MARTIALART_RISINGBASS -<<<<<<< HEAD dodge_chance = 100 -======= - var/dodge_chance = 100 ->>>>>>> b9238d02905fa75ed8589cfa6c18e2b7997bcb3c no_guns = TRUE allow_temp_override = FALSE help_verb = /mob/living/carbon/human/proc/rising_bass_help -<<<<<<< HEAD /datum/martial_art/the_rising_bass/proc/check_streak(mob/living/carbon/human/A, mob/living/carbon/human/D) -======= -/datum/martial_art/the_sleeping_carp/proc/check_streak(mob/living/carbon/human/A, mob/living/carbon/human/D) ->>>>>>> b9238d02905fa75ed8589cfa6c18e2b7997bcb3c if(findtext(streak,SIDE_KICK_COMBO)) streak = "" sideKick(A,D) @@ -47,7 +35,7 @@ return 1 return 0 -<<<<<<< HEAD + /datum/martial_art/the_rising_bass/proc/sideKick(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!D.IsKnockdown()) var/turf/H @@ -60,19 +48,13 @@ H = get_step(get_step(A,SOUTH),pick(EAST,WEST)) if(WEST) H = get_step(get_step(A,WEST),pick(SOUTH,NORTH)) -======= -/datum/martial_art/the_sleeping_carp/proc/sideKick(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(!D.IsKnockdown()) ->>>>>>> b9238d02905fa75ed8589cfa6c18e2b7997bcb3c 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) -<<<<<<< HEAD D.apply_damage(5, BRUTE, BODY_ZONE_CHEST) D.Knockdown(60) var/turf/L = H - //for(var/obj/i in H.contents) 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 = D.loc @@ -81,8 +63,6 @@ log_combat(A, D, "side kicked (Rising Bass)") 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()) var/turf/H @@ -155,10 +135,6 @@ add_to_streak("D",D) if(check_streak(A,D)) return 1 - //D.dropItemToGround(D.get_active_held_item()) - //D.visible_message("[A] disarms [D]!", \ - "[A] disarms you!") - //return 1 return ..() /datum/martial_art/the_rising_bass/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) @@ -184,31 +160,4 @@ to_chat(usr, "Shoulder Flip: Grab Harm Disarm Grab Grab. 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.") -======= - D.apply_damage(10, BRUTE, BODY_ZONE_CHEST) - D.Knockdown(60) - return 1 - log_combat(A, D, "side kicked (Rising Bass)") - return basic_hit(A,D) - -/datum/martial_art/the_sleeping_carp/proc/shoulderFlip(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(!D.IsKnockdown()) - 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.Knockdown(300) - return 1 - log_combat(A, D, "shoulder flipped (Rising Bass)") - return basic_hit(A,D) - - - - - - ->>>>>>> b9238d02905fa75ed8589cfa6c18e2b7997bcb3c + to_chat(usr, "Deft Switch: Grab Disarm Disarm. Switches the opponent's held item for your own. Most useful with nothing in your hand.") \ No newline at end of file From 7dc22e3ae09c7da596b53aa82c903aaf8a7561c5 Mon Sep 17 00:00:00 2001 From: Seris02 Date: Sun, 10 Nov 2019 10:25:23 +0800 Subject: [PATCH 05/14] makes rising bass a little less hacky with code --- code/datums/martial/rising_bass.dm | 42 +++++++++++------------------- 1 file changed, 15 insertions(+), 27 deletions(-) diff --git a/code/datums/martial/rising_bass.dm b/code/datums/martial/rising_bass.dm index 09c6dae132..cf804e1013 100644 --- a/code/datums/martial/rising_bass.dm +++ b/code/datums/martial/rising_bass.dm @@ -1,5 +1,5 @@ #define SIDE_KICK_COMBO "DH" -#define SHOULDER_FLIP_COMBO "GHDGGHD" +#define SHOULDER_FLIP_COMBO "GHDGHH" #define REPULSE_PUNCH_COMBO "GHGH" #define FOOT_SMASH_COMBO "HH" #define DEFT_SWITCH_COMBO "GDD" @@ -37,34 +37,22 @@ /datum/martial_art/the_rising_bass/proc/sideKick(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(!D.IsKnockdown()) - var/turf/H - switch(A.dir) - if(NORTH) - H = get_step(get_step(A,NORTH),pick(EAST,WEST)) - if(EAST) - H = get_step(get_step(A,EAST),pick(SOUTH,NORTH)) - if(SOUTH) - H = get_step(get_step(A,SOUTH),pick(EAST,WEST)) - if(WEST) - H = get_step(get_step(A,WEST),pick(SOUTH,NORTH)) + 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/turf/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 = D.loc - D.forceMove(L) + if (H) + D.Move(H, get_dir(D,H)) + log_combat(A, D, "side kicked (Rising Bass)") return 1 - log_combat(A, D, "side kicked (Rising Bass)") 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()) + if(!D.IsKnockdown() || !D.lying) var/turf/H switch(A.dir) if(NORTH) @@ -89,12 +77,12 @@ D.SetSleeping(60) D.Knockdown(300) D.forceMove(L) + log_combat(A, D, "shoulder flipped (Rising Bass)") return 1 - log_combat(A, D, "shoulder flipped (Rising Bass)") 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()) + 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!") @@ -103,33 +91,33 @@ 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 - log_combat(A, D, "repulse punched (Rising Bass)") 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()) + 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 - log_combat(A, D, "foot smashed (Rising Bass)") 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()) + if(!D.IsKnockdown() || !D.lying) if (D.get_active_held_item()) var/obj/item/G = D.get_active_held_item() D.visible_message("[A] slaps [D]'s hands, taking [G] from them!", \ "[A] slaps you, taking [G] from you!") D.temporarilyRemoveItemFromInventory(G, TRUE) A.put_in_hands(G) + log_combat(A, D, "deft switched (Rising Bass)") return 1 - log_combat(A, D, "deft switched (Rising Bass)") - return basic_hit(A,D) + 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) From 99ea3f9b711be0ad36847f1d3590201a08f45941 Mon Sep 17 00:00:00 2001 From: Seris02 Date: Sun, 10 Nov 2019 15:09:17 +0800 Subject: [PATCH 06/14] more fixes + fixes the last fixes. --- code/datums/martial/rising_bass.dm | 34 ++++++++----------- .../mob/living/carbon/carbon_defense.dm | 10 ++++++ .../mob/living/carbon/human/human_defense.dm | 21 +++--------- 3 files changed, 29 insertions(+), 36 deletions(-) diff --git a/code/datums/martial/rising_bass.dm b/code/datums/martial/rising_bass.dm index cf804e1013..082778cf8a 100644 --- a/code/datums/martial/rising_bass.dm +++ b/code/datums/martial/rising_bass.dm @@ -45,24 +45,18 @@ playsound(get_turf(A), 'sound/weapons/thudswoosh.ogg', 50, 1, -1) D.apply_damage(5, BRUTE, BODY_ZONE_CHEST) D.Knockdown(60) - if (H) - D.Move(H, get_dir(D,H)) + 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 - switch(A.dir) - if(NORTH) - H = get_step(A,SOUTH) - if(EAST) - H = get_step(A,WEST) - if(SOUTH) - H = get_step(A,NORTH) - if(WEST) - H = get_step(A,EAST) + 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) @@ -74,7 +68,7 @@ D.emote("scream") D.apply_damage(10, BRUTE, BODY_ZONE_CHEST) D.apply_damage(30, BRUTE, BODY_ZONE_HEAD) - D.SetSleeping(60) + D.Sleeping(60) D.Knockdown(300) D.forceMove(L) log_combat(A, D, "shoulder flipped (Rising Bass)") @@ -111,12 +105,14 @@ if(!D.IsKnockdown() || !D.lying) if (D.get_active_held_item()) var/obj/item/G = D.get_active_held_item() - D.visible_message("[A] slaps [D]'s hands, taking [G] from them!", \ - "[A] slaps you, taking [G] from you!") - D.temporarilyRemoveItemFromInventory(G, TRUE) - A.put_in_hands(G) - log_combat(A, D, "deft switched (Rising Bass)") - return 1 + 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) diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index b0e9b808df..e96e7ba060 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -50,6 +50,9 @@ /mob/living/carbon/proc/can_catch_item(skip_throw_mode_check) . = FALSE + if(mind) + if(mind.martial_art && mind.martial_art.dodge_chance == 100) + return TRUE if(!skip_throw_mode_check && !in_throw_mode) return if(get_active_held_item()) @@ -63,6 +66,13 @@ if(can_catch_item()) if(istype(AM, /obj/item)) var/obj/item/I = AM + if (mind) + if (mind.martial_art && mind.martial_art.dodge_chance == 100) //autocatch for rising bass + if (get_active_held_item()) + visible_message("[I] falls to the ground as [src] chops it out of the air!") + return 1 + if(!in_throw_mode) + throw_mode_on() if(isturf(I.loc)) I.attack_hand(src) if(get_active_held_item() == I) //if our attack_hand() picks up the item... diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index c85c0732b1..05ef815a99 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -147,22 +147,7 @@ skipcatch = TRUE blocked = TRUE else if(I) - if (mind) - if (mind.martial_art && mind.martial_art.dodge_chance == 100) //autocatch for rising bass - if (get_active_held_item()) - visible_message("[I] falls to the ground as [src] chops it out of the air!") - return 1 - else - if(!in_throw_mode) - throw_mode_on() - if(istype(AM, /obj/item)) - if(isturf(I.loc)) - I.attack_hand(src) - if(get_active_held_item() == I) - visible_message("[src] catches [I]!") - throw_mode_off() - return 1 - if(I.throw_speed >= EMBED_THROWSPEED_THRESHOLD) + if(I.throw_speed >= EMBED_THROWSPEED_THRESHOLD && !(mind.martial_art && mind.martial_art.dodge_chance == 100)) if(can_embed(I)) if(prob(I.embedding.embed_chance) && !HAS_TRAIT(src, TRAIT_PIERCEIMMUNE)) throw_alert("embeddedobject", /obj/screen/alert/embeddedobject) @@ -175,7 +160,9 @@ SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "embedded", /datum/mood_event/embedded) hitpush = FALSE skipcatch = TRUE //can't catch the now embedded item - + if (mind) + if (mind.martial_art && mind.martial_art.dodge_chance == 100) + skipcatch = FALSE return ..() /mob/living/carbon/human/grabbedby(mob/living/carbon/user, supress_message = 0) From 2d9f463fd7a1b02c11048fbe745d2ac73b38cc61 Mon Sep 17 00:00:00 2001 From: Seris02 <49109742+Seris02@users.noreply.github.com> Date: Sun, 10 Nov 2019 15:48:40 +0800 Subject: [PATCH 07/14] fixes a typo --- code/datums/martial/rising_bass.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/datums/martial/rising_bass.dm b/code/datums/martial/rising_bass.dm index 082778cf8a..d175322a7c 100644 --- a/code/datums/martial/rising_bass.dm +++ b/code/datums/martial/rising_bass.dm @@ -112,7 +112,7 @@ log_combat(A, D, "deft switched (Rising Bass)") return 1 else - to_chat(A, "[G] can't be taken out of [D]'s hands!") + 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) @@ -144,4 +144,4 @@ to_chat(usr, "Shoulder Flip: Grab Harm Disarm Grab Grab. 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.") \ No newline at end of file + to_chat(usr, "Deft Switch: Grab Disarm Disarm. Switches the opponent's held item for your own. Most useful with nothing in your hand.") From 31950c106f242372efe13652a599ee5c08bbd252 Mon Sep 17 00:00:00 2001 From: Seris02 Date: Tue, 10 Dec 2019 12:07:33 +0800 Subject: [PATCH 08/14] change cost to 18 tc --- code/modules/uplink/uplink_items.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index dc7204c29c..ebf7cf7bf2 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -605,7 +605,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) desc = "This scroll contains the secrets of an ancient martial arts technique. You will become proficient in fleeing situations, \ and dodging all ranged weapon fire, but you will refuse to use dishonorable ranged weaponry." item = /obj/item/book/granter/martial/bass - cost = 17 + cost = 18 surplus = 0 exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) From dfc8a1dc738e2709b80d83bd9064642e399b9c02 Mon Sep 17 00:00:00 2001 From: Seris02 <49109742+Seris02@users.noreply.github.com> Date: Wed, 11 Dec 2019 03:08:52 +0800 Subject: [PATCH 09/14] fixes it if it breaks I blame you again putnam --- code/modules/mob/living/carbon/human/human_defense.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 05ef815a99..5de6abd31b 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -48,7 +48,7 @@ if(mind) if (mind.martial_art && mind.martial_art.dodge_chance) if(!lying && dna && !dna.check_mutation(HULK)) - if(mind.martial_art.dodge_chance >= rand(0,100)) + if(prob(mind.martial_art.dodge_chance)) var/dodgemessage = pick("dodges under the projectile!","dodges to the right of the projectile!","jumps over the projectile!") visible_message("[src] [dodgemessage]", "You dodge the projectile!") return -1 From 4a68a5c33f3c5214d8fdbf0eafb15fb3bfe0a07e Mon Sep 17 00:00:00 2001 From: Seris02 <49109742+Seris02@users.noreply.github.com> Date: Mon, 16 Dec 2019 12:59:19 +0800 Subject: [PATCH 10/14] fixes combo text --- code/datums/martial/rising_bass.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/martial/rising_bass.dm b/code/datums/martial/rising_bass.dm index d175322a7c..01b37c5c65 100644 --- a/code/datums/martial/rising_bass.dm +++ b/code/datums/martial/rising_bass.dm @@ -141,7 +141,7 @@ 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 Grab. Flips opponent over your shoulder and stuns.") + 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.") From 757af250cfb2511bfcf7ca27bc33eb5f4ddf6f49 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sun, 22 Dec 2019 12:21:11 +0100 Subject: [PATCH 11/14] Fix goose meat. --- code/modules/mob/living/simple_animal/hostile/goose.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/hostile/goose.dm b/code/modules/mob/living/simple_animal/hostile/goose.dm index b67770fb4b..3bc8715c5c 100644 --- a/code/modules/mob/living/simple_animal/hostile/goose.dm +++ b/code/modules/mob/living/simple_animal/hostile/goose.dm @@ -9,7 +9,7 @@ mob_biotypes = list(MOB_ORGANIC, MOB_BEAST) speak_chance = 0 turns_per_move = 5 - butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 2) + butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 2) response_help = "pets" response_disarm = "gently pushes aside" response_harm = "kicks" From 6150dc5a15fd9b2dffb244214aa915f85170098d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 23 Dec 2019 18:56:10 -0600 Subject: [PATCH 12/14] Automatic changelog generation for PR #10269 [ci skip] --- html/changelogs/AutoChangeLog-pr-10269.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10269.yml diff --git a/html/changelogs/AutoChangeLog-pr-10269.yml b/html/changelogs/AutoChangeLog-pr-10269.yml new file mode 100644 index 0000000000..f38bb346e3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10269.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed goose meat." From a106fde6cc4265b40173edb1e9294333631c2c14 Mon Sep 17 00:00:00 2001 From: Seris02 Date: Tue, 24 Dec 2019 23:38:27 +0800 Subject: [PATCH 13/14] a few fixes here and there and updating it --- code/__DEFINES/traits.dm | 1 + code/datums/martial/cqc.dm | 1 - code/datums/martial/rising_bass.dm | 11 ++++++++++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 428d569531..439b3d1493 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -226,6 +226,7 @@ #define NINJA_SUIT_TRAIT "ninja-suit" #define ANTI_DROP_IMPLANT_TRAIT "anti-drop-implant" #define SLEEPING_CARP_TRAIT "sleeping_carp" +#define RISING_BASS_TRAIT "rising_bass" #define ABDUCTOR_ANTAGONIST "abductor-antagonist" #define MADE_UNCLONEABLE "made-uncloneable" #define NUKEOP_TRAIT "nuke-op" diff --git a/code/datums/martial/cqc.dm b/code/datums/martial/cqc.dm index 09a493a670..4ec16ac18c 100644 --- a/code/datums/martial/cqc.dm +++ b/code/datums/martial/cqc.dm @@ -10,7 +10,6 @@ help_verb = /mob/living/carbon/human/proc/CQC_help block_chance = 75 var/old_grab_state = null - var/restraining = FALSE /datum/martial_art/cqc/reset_streak(mob/living/carbon/human/new_target) . = ..() diff --git a/code/datums/martial/rising_bass.dm b/code/datums/martial/rising_bass.dm index 01b37c5c65..a3b71c6784 100644 --- a/code/datums/martial/rising_bass.dm +++ b/code/datums/martial/rising_bass.dm @@ -8,7 +8,6 @@ name = "The Rising Bass" id = MARTIALART_RISINGBASS dodge_chance = 100 - no_guns = TRUE allow_temp_override = FALSE help_verb = /mob/living/carbon/human/proc/rising_bass_help @@ -145,3 +144,13 @@ 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) + +/datum/martial_art/the_rising_bass/on_remove(mob/living/carbon/human/H) + . = ..() + REMOVE_TRAIT(H, TRAIT_NOGUNS, RISING_BASS_TRAIT) \ No newline at end of file From b48f18fbc6b83f9d4faf5e853f18c21c217f4dec Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 24 Dec 2019 09:57:13 -0600 Subject: [PATCH 14/14] Automatic changelog generation for PR #9751 [ci skip] --- html/changelogs/AutoChangeLog-pr-9751.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9751.yml diff --git a/html/changelogs/AutoChangeLog-pr-9751.yml b/html/changelogs/AutoChangeLog-pr-9751.yml new file mode 100644 index 0000000000..a2c22468c3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9751.yml @@ -0,0 +1,5 @@ +author: "Seris02" +delete-after: True +changes: + - rscadd: "Added Rising Bass and the shifting scroll." + - tweak: "Changes the martial arts scroll in the uplink to \"Sleeping Carp Scroll\""