diff --git a/code/datums/martial/berserker.dm b/code/datums/martial/berserker.dm index be2b1ad31b9..e0c06e35828 100644 --- a/code/datums/martial/berserker.dm +++ b/code/datums/martial/berserker.dm @@ -1,6 +1,6 @@ #define HARD_PUNCH_COMBO "HH" #define SHOULDERCHECK_COMBO "HD" -#define CHOKE_SLAM_COMBO "HG" +#define WRIST_WRENCH_COMBO "DD" /datum/martial_art/berserker name = "Berserker Rites" @@ -18,9 +18,9 @@ streak = "" shoulderCheck(A,D) return TRUE - if(findtext(streak,CHOKE_SLAM_COMBO)) + if(findtext(streak,WRIST_WRENCH_COMBO)) streak = "" - chokeSlam(A,D) + wristWrench(A,D) return TRUE return FALSE @@ -65,28 +65,44 @@ return TRUE ///chokeslam: Harm Grab combo, knocks people down, deals stamina damage while they're on the floor -/datum/martial_art/berserker/proc/chokeSlam(mob/living/carbon/human/A, mob/living/carbon/human/D) - var/damage = damage_roll(A,D) - A.do_attack_animation(D, ATTACK_EFFECT_KICK) - var/obj/item/bodypart/affecting = D.get_bodypart(BODY_ZONE_HEAD) - var/armor_block = D.run_armor_check(affecting, "melee") - playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, TRUE, -1) - if((D.mobility_flags & MOBILITY_STAND)) - D.apply_damage(damage*0.5, BRUTE, BODY_ZONE_HEAD, armor_block, wound_bonus = CANT_WOUND) - D.DefaultCombatKnockdown(10, null, TRUE) - D.apply_damage(damage + 20, STAMINA, BODY_ZONE_HEAD, armor_block, wound_bonus = CANT_WOUND) //A cit specific change form the tg port to really punish anyone who tries to stand up - D.visible_message(span_warning("[A] grabs [D] by the throat, slamming them face first into the ground!"), \ - span_userdanger("[A] grabs you by the throat, slammed your head into the ground!"), span_hear("You hear a sickening sound of flesh hitting flesh!"), COMBAT_MESSAGE_RANGE, A) - to_chat(A, span_danger("You chokeslam [D]!")) - else - D.apply_damage(damage*0.5, BRUTE, BODY_ZONE_HEAD, armor_block, wound_bonus = CANT_WOUND) - D.apply_damage(damage + 20, STAMINA, BODY_ZONE_HEAD, armor_block, wound_bonus = CANT_WOUND) - D.drop_all_held_items() - D.visible_message(span_warning("[A] pummels [D]!"), \ - span_userdanger("You are kicked in the head by [A]!"), span_hear("You hear a sickening sound of flesh hitting flesh!"), COMBAT_MESSAGE_RANGE, A) - to_chat(A, span_danger("You pummel [D]!")) - log_combat(A, D, "chokeslammed (Berserker") - return TRUE +//datum/martial_art/berserker/proc/chokeSlam(mob/living/carbon/human/A, mob/living/carbon/human/D) + //var/damage = damage_roll(A,D) + //A.do_attack_animation(D, ATTACK_EFFECT_KICK) + //var/obj/item/bodypart/affecting = D.get_bodypart(BODY_ZONE_HEAD) + //var/armor_block = D.run_armor_check(affecting, "melee") + //playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, TRUE, -1) + //if((D.mobility_flags & MOBILITY_STAND)) + //D.apply_damage(damage*0.5, BRUTE, BODY_ZONE_HEAD, armor_block, wound_bonus = CANT_WOUND) + //D.DefaultCombatKnockdown(10, null, TRUE) + //D.apply_damage(damage + 20, STAMINA, BODY_ZONE_HEAD, armor_block, wound_bonus = CANT_WOUND) //A cit specific change form the tg port to really punish anyone who tries to stand up + //D.visible_message(span_warning("[A] grabs [D] by the throat, slamming them face first into the ground!"), + //span_userdanger("[A] grabs you by the throat, slammed your head into the ground!"), span_hear("You hear a sickening sound of flesh hitting flesh!"), COMBAT_MESSAGE_RANGE, A) + //to_chat(A, span_danger("You chokeslam [D]!")) + //else + //D.apply_damage(damage*0.5, BRUTE, BODY_ZONE_HEAD, armor_block, wound_bonus = CANT_WOUND) + //D.apply_damage(damage + 20, STAMINA, BODY_ZONE_HEAD, armor_block, wound_bonus = CANT_WOUND) + //D.drop_all_held_items() + //D.visible_message(span_warning("[A] pummels [D]!"), + //span_userdanger("You are kicked in the head by [A]!"), span_hear("You hear a sickening sound of flesh hitting flesh!"), COMBAT_MESSAGE_RANGE, A) + //to_chat(A, span_danger("You pummel [D]!")) + //log_combat(A, D, "chokeslammed (Berserker") + //return TRUE + +/datum/martial_art/berserker/proc/wristWrench(mob/living/carbon/human/A, mob/living/carbon/human/D) + log_combat(A, D, "wrist wrenched (Berserker)") + 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, TRUE, -1) + D.emote("scream") + D.dropItemToGround(D.get_active_held_item()) + D.apply_damage(10, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) + D.apply_damage(20, STAMINA, pick(A.zone_selected)) + to_chat(A, span_danger("You wrench [D]'s wrist!")) + log_combat(A, D, "wrist wrenched (Berserker)") + + return TRUE + /datum/martial_art/berserker/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D) add_to_streak("G",D) @@ -124,20 +140,24 @@ . = ..() if(!.) return - ADD_TRAIT(H, TRAIT_NOGUNS, BERSERKER_TRAIT) - ADD_TRAIT(H, TRAIT_PIERCEIMMUNE, BERSERKER_TRAIT) - ADD_TRAIT(H, TRAIT_NODISMEMBER, BERSERKER_TRAIT) - ADD_TRAIT(H, TRAIT_BERSERKER, BERSERKER_TRAIT) + ADD_TRAIT(H, TRAIT_NODRUGS, TRAIT_BERSERKER) + ADD_TRAIT(H, TRAIT_NOGUNS, TRAIT_BERSERKER) + //ADD_TRAIT(H, TRAIT_PIERCEIMMUNE, BERSERKER_TRAIT) + //ADD_TRAIT(H, TRAIT_NODISMEMBER, BERSERKER_TRAIT) + ADD_TRAIT(H, TRAIT_AUTO_CATCH_ITEM, TRAIT_BERSERKER) + ADD_TRAIT(H, TRAIT_BERSERKER, TRAIT_BERSERKER) H.physiology.stamina_mod *= 0.3 //more stamina H.physiology.stun_mod *= 0.3 //better stun resistance /datum/martial_art/berserker/on_remove(mob/living/carbon/human/H) . = ..() - REMOVE_TRAIT(H, TRAIT_NOGUNS, BERSERKER_TRAIT) - REMOVE_TRAIT(H, TRAIT_PIERCEIMMUNE, BERSERKER_TRAIT) - REMOVE_TRAIT(H, TRAIT_NODISMEMBER, BERSERKER_TRAIT) + REMOVE_TRAIT(H, TRAIT_NODRUGS, TRAIT_BERSERKER) + REMOVE_TRAIT(H, TRAIT_NOGUNS, TRAIT_BERSERKER) + //REMOVE_TRAIT(H, TRAIT_PIERCEIMMUNE, BERSERKER_TRAIT) + //REMOVE_TRAIT(H, TRAIT_NODISMEMBER, BERSERKER_TRAIT) REMOVE_TRAIT(H, TRAIT_BERSERKER, BERSERKER_TRAIT) + REMOVE_TRAIT(H, TRAIT_AUTO_CATCH_ITEM, TRAIT_BERSERKER) H.physiology.stamina_mod = initial(H.physiology.stamina_mod) H.physiology.stun_mod = initial(H.physiology.stun_mod) @@ -150,6 +170,6 @@ to_chat(usr, "Gutpunch: Harm Harm. Deal additional damage every second punch, with a chance for even more damage!") to_chat(usr, "Shoulder Check: Harm Disarm. Launch people brutally across rooms, and away from you.") - to_chat(usr, "Chokeslam: Harm Grab. Chokeslam to the floor. Against prone targets, deal additional stamina damage and disarm them.") + to_chat(usr, span_notice("Wrist Wrench: Disarm Disarm. Grab and painfully wrench someone's wrist, disarming them and dealing minor brute and stamina damage.")) to_chat(usr, span_notice("In addition, your body is better conditioned, giving you further stamina and increased stun resistance.")) - + //to_chat(usr, "Chokeslam: Harm Grab. Chokeslam to the floor. Against prone targets, deal additional stamina damage and disarm them.") diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm index f900eff5e90..50533ba303d 100644 --- a/code/game/objects/items/granters.dm +++ b/code/game/objects/items/granters.dm @@ -511,7 +511,7 @@ martial = /datum/martial_art/berserker name = "berserker's rites" martialname = "berserkers rites" - desc = "A paper scroll detailing the sacred rites of the berserker. It is against the law of the Legion for any not walking the path of the berserker to read this." + desc = "A paper scroll detailing the sacred rites of a tribal berserker, the words are awash with primal, barely contained fury." greet = span_sciradio("You have mastered the rites of the berserker. Use the help verb to see your combos.") icon = 'icons/obj/wizard.dmi' icon_state = "scroll2" diff --git a/code/game/objects/items/loadout_beacons.dm b/code/game/objects/items/loadout_beacons.dm index e5e3928e7f4..93f293eb382 100644 --- a/code/game/objects/items/loadout_beacons.dm +++ b/code/game/objects/items/loadout_beacons.dm @@ -2422,3 +2422,9 @@ GLOBAL_LIST_EMPTY(loadout_boxes) entry_flags = LOADOUT_FLAG_WASTER entry_class = LOADOUT_CAT_SHIELD spawn_thing = /obj/item/shield/coyote/riotweathered + +/datum/loadout_box/beserker + entry_tag = "Berserker's rites" + entry_flags = LOADOUT_FLAG_WASTER + entry_class = LOADOUT_CAT_MISC + spawn_thing = /obj/item/book/granter/martial/berserker