From b6f9130a260baf0c6333c854ee99cf1f078ad185 Mon Sep 17 00:00:00 2001 From: TheKillfish <145384199+TheKillfish@users.noreply.github.com> Date: Tue, 9 Jan 2024 14:05:44 +0100 Subject: [PATCH] Rage of the Space Bear & The Bearserker Pelt (#23050) * Adds Bearserk combos * Adds main Bearserk file * Adds Berserker Bear Pelt to uplink items Blacklisted from Nuclear and SST because Nukies always use modsuits, and SST won't be very stealthy if it's rocking the martial arts bear pelt. * Update bearserk.dm Minor tweak * Update uplink_traitor.dm Another minor tweak * Update bear_jaws.dm * Update paw_slam.dm * Update smokey.dm * Update uplink_traitor.dm * Update bear_jaws.dm * More Balance Tweaks * Whoopsies forgot a thing * Improved flavour text for Uplink Please give a warm welcome to a new cult (that only exists in flavour); Children of Ursa Major! * More Changes * Updated flavour text for Bear Jaws * Updated flavour text for Bear Jaws * Added a bit of Smoh'Kie to Smokey * Minor alteration * Minor flavour text tweak Made with love and copious amounts of vodka * I had an even better pun idea * Made cost identical to Carp * Ticked the files * Swapped the weights of Bearserk and Carp * Moved some resistances to a status buff * Fixed inexplicably formed code bugs * More inexplicable code fuckery *scream * Part 1 of Swapping weights of Bearserk and Carp * Second part * Added Suggestion Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> * Added Suggestion Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> * Added Suggestion Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> * Added Suggestion I do agree the IsWeakened is rather redundant Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> * Added Suggestion Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> * Added Suggestion Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> * Added Suggestion Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> * Added Suggestion Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> * Added Suggestion * Added Suggestion * Added Suggestion * Added Suggestion However, considering the && are causing check fails, this may be reverted * Added Suggestion * Added Suggestion, may be reverted if issues arise * Added Suggestion Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> * Added Suggestion Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> * Removed Antag Checks on Equipping and Unequipping the Pelt As per Contrabang's suggestion * Added a Suggestion and sound for Bearserker Rage * Added Suggestion I like consistency, so thank you Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> * Added placeholder status icon * Added Suggestion Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> * Added Suggestion Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> * Added Suggestion Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> --------- Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> --- code/__DEFINES/status_effects.dm | 2 + code/datums/status_effects/buffs.dm | 27 +++++++ code/datums/uplink_items/uplink_traitor.dm | 10 +++ code/modules/martial_arts/bearserk.dm | 73 +++++++++++++++++++ .../martial_arts/combos/bearserk/bear_jaws.dm | 26 +++++++ .../martial_arts/combos/bearserk/paw_slam.dm | 30 ++++++++ .../martial_arts/combos/bearserk/smokey.dm | 17 +++++ paradise.dme | 4 + 8 files changed, 189 insertions(+) create mode 100644 code/modules/martial_arts/bearserk.dm create mode 100644 code/modules/martial_arts/combos/bearserk/bear_jaws.dm create mode 100644 code/modules/martial_arts/combos/bearserk/paw_slam.dm create mode 100644 code/modules/martial_arts/combos/bearserk/smokey.dm diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index a7ee1856f94..d61a34be869 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -60,6 +60,8 @@ #define STATUS_EFFECT_REVOLUTION_PROTECT /datum/status_effect/rev_protection +#define STATUS_EFFECT_BEARSERKER_RAGE /datum/status_effect/bearserker_rage + ///////////// // DEBUFFS // ///////////// diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index d6579063212..21b74fb6328 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -747,3 +747,30 @@ /datum/status_effect/bookwyrm duration = BRAIN_DAMAGE_MOB_TIME alert_type = null + +/datum/status_effect/bearserker_rage + id = "bearserker rage" + duration = 5 SECONDS + status_type = STATUS_EFFECT_REFRESH + alert_type = /obj/screen/alert/status_effect/bearserker_rage + +/obj/screen/alert/status_effect/bearserker_rage + name = "Bearserker Rage" + desc = "Blood flows between your fingers, and Foh'Sie roars; \"MORE BLOOD!\"" + icon_state = "blood" + +/datum/status_effect/bearserker_rage/on_apply() + . = ..() + if(. && ishuman(owner)) + var/mob/living/carbon/human/H = owner + H.physiology.stamina_mod *= 0.75 + H.physiology.heat_mod *= 0.5 + add_attack_logs(owner, owner, "gained bearserker rage resistances", ATKLOG_ALL) + owner.playsound_local(get_turf(owner), 'sound/effects/singlebeat.ogg', 40, TRUE, use_reverb = FALSE) + +/datum/status_effect/bearserker_rage/on_remove() + if(ishuman(owner)) + var/mob/living/carbon/human/H = owner + H.physiology.stamina_mod /= 0.75 + H.physiology.heat_mod /= 0.5 + add_attack_logs(owner, owner, "lost bearserker rage resistances", ATKLOG_ALL) diff --git a/code/datums/uplink_items/uplink_traitor.dm b/code/datums/uplink_items/uplink_traitor.dm index ecbd9908794..200d399b54e 100644 --- a/code/datums/uplink_items/uplink_traitor.dm +++ b/code/datums/uplink_items/uplink_traitor.dm @@ -412,6 +412,16 @@ excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) cant_discount = TRUE +/datum/uplink_item/stealthy_weapons/bearserk + name = "Bearserker Pelt" + desc = "A bear pelt that infuses the wearer with bear spirits and knowledge on an occultic martial art known as Rage of the Space Bear. \ + The pelt itself is also armored, providing the wearer great longevity. \ + Made with love, lots of spirits and lots of the other kind of spirits by the Sydnicate-affiliated cult, Children of Ursa Major." + reference = "BSP" + item = /obj/item/clothing/head/bearpelt/bearserk + cost = 65 + excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) + /datum/uplink_item/stealthy_tools/traitor_belt name = "Traitor's Toolbelt" desc = "A robust seven-slot belt made for carrying a broad variety of weapons, ammunition and explosives. It's modelled after the standard NT toolbelt so as to avoid suspicion while wearing it." diff --git a/code/modules/martial_arts/bearserk.dm b/code/modules/martial_arts/bearserk.dm new file mode 100644 index 00000000000..2614e4ef352 --- /dev/null +++ b/code/modules/martial_arts/bearserk.dm @@ -0,0 +1,73 @@ +/datum/martial_art/bearserk + weight = 9 // Higher weight than Krav-Maga, brute force overrules + name = "Rage of the Space Bear" + has_explaination_verb = TRUE + combos = list(/datum/martial_combo/bearserk/bear_jaws, /datum/martial_combo/bearserk/paw_slam, /datum/martial_combo/bearserk/smokey) + +/datum/martial_art/bearserk/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) + MARTIAL_ARTS_ACT_CHECK + A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) + var/atk_verb = pick("punches", "claws", "hits", "mauls") + playsound(get_turf(D), 'sound/weapons/punch1.ogg', 25, TRUE, -1) + D.visible_message("[A] [atk_verb] [D]!", "[A] [atk_verb] you!") + D.apply_damage(10, BRUTE, A.zone_selected) + if(isliving(D) && D.stat != DEAD) + A.adjustStaminaLoss(-10) + add_attack_logs(A, D, "Melee attacked with martial-art [src] : Punched", ATKLOG_ALL) + return TRUE + +/datum/martial_art/bearserk/explaination_header(user) + to_chat(usr, "Quelling the ursine rage for a moment, you ponder on how a Space Bear fights...") + +/datum/martial_art/bearserk/explaination_footer(user) + to_chat(user, "All combos recover stamina and grant a stamina resistance buff, so get aggressive!.") + +/datum/martial_art/bearserk/teach(mob/living/carbon/human/H, make_temporary=0) + ..() + if(HAS_TRAIT(H, TRAIT_PACIFISM)) + to_chat(H, "You feel otherworldly rage flicker briefly in your mind, before you reject such violent thoughts and calm down. \ + At the very least, the weighty pelt still protects your body.") + return + to_chat(H, "Like a berserker of old, you harness the Rage of the Space Bear!") + to_chat(H, "The occultic, ursine might and anger of Foh'Sie and Smoh'Kie flows through your body, making you far more dangerous in unarmed combat. \ + You can learn more about this newfound strength in the Recall Teachings verb in the martial arts tab.") + +/datum/martial_art/bearserk/remove(mob/living/carbon/human/H) + ..() + to_chat(H, "The ancient fury of bears leaves your mind...") + +// The Pelt + +/obj/item/clothing/head/bearpelt/bearserk + armor = list(MELEE = 30, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 20, RAD = 0, FIRE = 10, ACID = 10) + body_parts_covered = UPPER_TORSO|HEAD|ARMS + var/datum/martial_art/bearserk/style + +/obj/item/clothing/head/bearpelt/bearserk/Initialize() + . = ..() + style = new() + +/obj/item/clothing/head/bearpelt/bearserk/equipped(mob/user, slot) + ..() + if(!ishuman(user)) + return + var/mob/living/carbon/human/H = user + if(slot == SLOT_HUD_HEAD) + style.teach(H, TRUE) + H.faction |= "russian" // Russian Hardbass Begins + H.physiology.stun_mod *= 0.80 + +/obj/item/clothing/head/bearpelt/bearserk/dropped(mob/user, datum/reagent/R) + ..() + if(!ishuman(user)) + return + var/mob/living/carbon/human/H = user + if(H.get_item_by_slot(SLOT_HUD_HEAD) == src) + H.faction -= "russian" // Hardbass stops + H.physiology.stun_mod /= 0.80 + +/obj/item/clothing/head/bearpelt/bearserk/examine(mob/user) + . = ..() + if(isAntag(user)) + . += "Wearing this armored pelt grants you the strength of the space bear. \ + It also makes wild bears and Russians neutral towards you." diff --git a/code/modules/martial_arts/combos/bearserk/bear_jaws.dm b/code/modules/martial_arts/combos/bearserk/bear_jaws.dm new file mode 100644 index 00000000000..44963659157 --- /dev/null +++ b/code/modules/martial_arts/combos/bearserk/bear_jaws.dm @@ -0,0 +1,26 @@ +/datum/martial_combo/bearserk/bear_jaws + name = "Bear Jaws" + steps = list(MARTIAL_COMBO_STEP_HARM, MARTIAL_COMBO_STEP_GRAB) + explaination_text = "Bite your opponent like a true lunatic, with even more savagery against knocked down targets." + +/datum/martial_combo/bearserk/bear_jaws/perform_combo(mob/living/carbon/human/user, mob/living/target, datum/martial_art/MA) + user.do_attack_animation(target, ATTACK_EFFECT_BITE) + playsound(get_turf(target), 'sound/weapons/bite.ogg', 25, vary = TRUE, extrarange = -1) + if(IS_HORIZONTAL(target)) + target.visible_message("[user] leaps onto [target] and bites them!", + "[user] leaps onto you and bites you like a real savage!") + target.apply_damage(20, BRUTE, user.zone_selected, sharp = TRUE) + if(isliving(target) && target.stat != DEAD) + user.adjustStaminaLoss(-30) + user.apply_status_effect(STATUS_EFFECT_BEARSERKER_RAGE) + add_attack_logs(user, target, "Melee attacked with martial-art [MA] : Bear Jaws", ATKLOG_ALL) + return MARTIAL_COMBO_DONE + var/atk_verb = pick("bites", "gnaws", "tears at") + target.visible_message("[user] [atk_verb] [target]!", + "[user] [atk_verb] you!") + target.apply_damage(10, BRUTE, user.zone_selected, sharp = TRUE) + if(isliving(target) && target.stat != DEAD) + user.adjustStaminaLoss(-15) + user.apply_status_effect(STATUS_EFFECT_BEARSERKER_RAGE) + add_attack_logs(user, target, "Melee attacked with martial-art [MA] : Bear Jaws", ATKLOG_ALL) + return MARTIAL_COMBO_DONE diff --git a/code/modules/martial_arts/combos/bearserk/paw_slam.dm b/code/modules/martial_arts/combos/bearserk/paw_slam.dm new file mode 100644 index 00000000000..0853cb1c5a9 --- /dev/null +++ b/code/modules/martial_arts/combos/bearserk/paw_slam.dm @@ -0,0 +1,30 @@ +/datum/martial_combo/bearserk/paw_slam + name = "Paw Slam" + steps = list(MARTIAL_COMBO_STEP_DISARM, MARTIAL_COMBO_STEP_HARM) + explaination_text = "Slap an opponent with a mighty paw, knocking them down. Beats down harder on already knocked down opponents." + +/datum/martial_combo/bearserk/paw_slam/perform_combo(mob/living/carbon/human/user, mob/living/target, datum/martial_art/MA) + if(IS_HORIZONTAL(target)) + user.do_attack_animation(target, ATTACK_EFFECT_PUNCH) + target.visible_message("[user] pounds down on [target] with both fists!", \ + "[user] pounds down on you with both fists!") + playsound(get_turf(target), 'sound/weapons/punch1.ogg', 25, vary = TRUE, extrarange = -1) + target.apply_damage(20, BRUTE, user.zone_selected) + target.Slowed(2 SECONDS) + if(isliving(target) && target.stat != DEAD) + user.adjustStaminaLoss(-15) + user.apply_status_effect(STATUS_EFFECT_BEARSERKER_RAGE) + add_attack_logs(user, target, "Melee attacked with martial-art [src] : Paw Slam", ATKLOG_ALL) + return MARTIAL_COMBO_DONE + user.do_attack_animation(target, ATTACK_EFFECT_DISARM) + target.visible_message("[user] strikes [target] to the ground with a mighty slap!", \ + "[user] slaps you so hard, you fall over!") + playsound(get_turf(user), 'sound/weapons/slap.ogg', 25, vary = TRUE, extrarange = -1) + target.apply_damage(10, BRUTE, user.zone_selected) + target.KnockDown(4 SECONDS) + target.Slowed(6 SECONDS) + if(isliving(target) && target.stat != DEAD) + user.adjustStaminaLoss(-15) + user.apply_status_effect(STATUS_EFFECT_BEARSERKER_RAGE) + add_attack_logs(user, target, "Melee attacked with martial-art [src] : Paw Slam", ATKLOG_ALL) + return MARTIAL_COMBO_DONE diff --git a/code/modules/martial_arts/combos/bearserk/smokey.dm b/code/modules/martial_arts/combos/bearserk/smokey.dm new file mode 100644 index 00000000000..27737d6cf53 --- /dev/null +++ b/code/modules/martial_arts/combos/bearserk/smokey.dm @@ -0,0 +1,17 @@ +/datum/martial_combo/bearserk/smokey + name = "Smokey" + steps = list(MARTIAL_COMBO_STEP_DISARM, MARTIAL_COMBO_STEP_DISARM) + explaination_text = "Mentally channel the occultic fury of Smoh'Kie to set your opponent aflame!" + +/datum/martial_combo/bearserk/smokey/perform_combo(mob/living/carbon/human/user, mob/living/target, datum/martial_art/MA) + if(!isliving(target)) + return + user.do_attack_animation(target, ATTACK_EFFECT_PUNCH) + target.visible_message("[user] sets [target] on fire with otherwordly powers!", \ + "As [user] punches you with a searing fist, these words echo in your mind; \"remember... only YOU can prevent forest fires!\"") + target.apply_damage(10, BURN, user.zone_selected) + playsound(get_turf(user), 'sound/weapons/punch1.ogg', 25, vary = TRUE, extrarange = -1) + target.adjust_fire_stacks(1.5) + target.IgniteMob() + add_attack_logs(user, target, "Melee attacked with martial-art [src] : Smokey", ATKLOG_ALL) + return MARTIAL_COMBO_DONE diff --git a/paradise.dme b/paradise.dme index 6e58f585c00..c3b2f0552d2 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1908,6 +1908,7 @@ #include "code\modules\mapping\windoor_access_helpers.dm" #include "code\modules\maptext_alerts\text_blurbs.dm" #include "code\modules\martial_arts\adminfu.dm" +#include "code\modules\martial_arts\bearserk.dm" #include "code\modules\martial_arts\brawling.dm" #include "code\modules\martial_arts\cqc.dm" #include "code\modules\martial_arts\grav_stomp.dm" @@ -1921,6 +1922,9 @@ #include "code\modules\martial_arts\wrestling.dm" #include "code\modules\martial_arts\combos\martial_combo.dm" #include "code\modules\martial_arts\combos\adminfu\healing_palm.dm" +#include "code\modules\martial_arts\combos\bearserk\bear_jaws.dm" +#include "code\modules\martial_arts\combos\bearserk\paw_slam.dm" +#include "code\modules\martial_arts\combos\bearserk\smokey.dm" #include "code\modules\martial_arts\combos\cqc\consecutive.dm" #include "code\modules\martial_arts\combos\cqc\kick.dm" #include "code\modules\martial_arts\combos\cqc\pressure.dm"