From ca2ff33292cfaa3412d2c476d825cecfe80ea36a Mon Sep 17 00:00:00 2001 From: necromanceranne <40847847+necromanceranne@users.noreply.github.com> Date: Tue, 23 Apr 2024 01:43:58 +1000 Subject: [PATCH] Rocky DLXIII: Fitness to Athletics, Athletics skill influences Boxing against Boxers, Boxing overhaul, Evil Boxing (#82611) ## About The Pull Request ### Changes Fitness skill to Athletics skill; Removes the sprite growth as the only meaningful reward Basically just a rebranding so that it is more broad in its concept. It isn't just about peak physique. It's about how you can apply it too. Reaching Legendary rewards you with the Golden Gloves. ### Boxing Overhaul I started it in this pr here https://github.com/tgstation/tgstation/pull/80635 But this is a more significant overhaul of boxing from the ground up. Namely, it now is majorly influenced by the Athletics skill, and also more thoroughly aligns with conventional punching in its current state. However, a major component of this is that boxing's breadth of mechanics is only relevant when used against another boxer. Non-boxer targets are only ever going to get smacked by a stamina punch, as it is currently (and more or less the same values too). Additionally, boxers cannot punch someone who is either unconscious or in stamina crit, so it can't be used to maintain stamcrit. - Boxing now has a One-Two Punch mechanic. Swapping between the left and right mouse buttons to punch and maintaining this causes every second punch to do more damage (to boxers). Breaking this chain by punching with the same button twice will cause you to lose damage (against boxers). - Boxing now can have crits occur below 50 stamina damage (against boxers). However, to knock someone out clean, the target must be staggered from a previous crit first. (Or I guess be staggered at all, maybe their shoelaces were tied or something). Crit probabilities are determined by adding your Athletics probability skill bonuses to your unarmed effectiveness, and then reduced by the targets own Athletics skill bonuses. It is hard for two athletes to knock each other out in one blow. It is trivial for a legendary boxer to knock out a novice in a single punch. Cybernetically enhanced boxers are dangerously effective at boxing. - Boxers can block other boxers by using throw mode, but the chances of doing so is based on Athletics skill bonuses. A successful block causes the attacker to take stamina damage (as does the blocker, but less so). - Participating in boxing increases the Athletics skill. Your gains are probably slower than normal training, but you at least get some reward for doing so. Only relevant if your opponent is a boxer. Get a sparring partner! ### Evil Boxing (Admin Only) So this is all well and good, but what if you're a scoundrel with no care for the other person in this equation? Well, that's where Evil Boxing comes in. Evil Boxing has absolutely no restrictions at all, and can freely use its boxing abilities against anyone. Even non-boxers. You can even grab people! Wow, what a scumbag. I bet you even king hit people. Thankfully, only an admin can make you into an Evil Boxer. ### Strength and Stimmed Mutations now benefit Exercising and Boxing (against boxers) Both mutations have a flimsy increase to instability of 5 because of how incredibly particular the bonus is. Strength now reduces the amount of stamina damage inflicted via exercising by half. Strength also adds a +2 damage bonus on boxing punches while boxing against boxers (this doesn't influence normal unarmed attacks whatsoever, or boxing against nonboxers). Obviously, evil boxers just get this benefit against everyone because they're knaves. Stimmed increases the duration of the exercised status effect by one factor. (That is, if you have no other modifiers, it will double the duration on its own) ## Why It's Good For The Game @Jacquerel was racking their brain trying to come up with an alternative to the skill rewards of Fitness. At the moment, sprite growth is not only a really bad bonus (it does literally nothing but make you big, and thus is actually a detriment due to how intrusive sprite size is with interaction, and plays weird with other sprite changing effects), but isn't really all that interesting for all the effort put in. Problem is, how do you make Fitness meaningful without making it a powergame mechanic? Simple! You make it applicable to a really niche, self-contained but still utilized game mechanic that is engaging to participate in and makes you meaningfully very good in it. AND scratches that power scaling itch that many players have. Boxing is reasonably self-contained as is, but pretty bland due to how old it is. While maintaining that self-contained nature, I hoped to expand the interactivity of boxing a little bit by giving it a small mini-game in of itself. And also introduce ways to simulate the idea of boxing a bit better. The idea of being an Evil Boxer is funny. For every Rocky, there is a [Insert Rocky Villain Here that isn't Creed]. But in this case, it's probably some Syndicate douchebag looking to punch clowns into a coma and inspire the mime to take up shadowboxing in revenge. ## Changelog :cl: add: Replaces Fitness with Athletics; same skill, but now more specifically applicable to boxing. add: Athletics does not increase sprite size. balance: Overhauls Boxing to add a lot more depth to the interactions. Only applicable to other boxers, however. You can still punch the snot out of non-boxers though. But only up to stamcrit or unconsciousness. No hitting someone who can't fight back! balance: Adds Evil Boxing, which is the evil and fucked up version of boxing that you kill people with and are allowed to flout the sacred rules of boxing as you please. Everyone is a victim! /:cl: --- code/__DEFINES/melee.dm | 1 + code/__DEFINES/traits/declarations.dm | 9 + code/__DEFINES/traits/sources.dm | 1 + code/_globalvars/traits/_traits.dm | 3 + code/datums/martial/boxing.dm | 292 ++++++++++++++---- code/datums/mutations/body.dm | 27 ++ code/datums/skills/athletics.dm | 27 ++ code/datums/skills/fitness.dm | 23 -- code/datums/status_effects/buffs.dm | 11 +- code/datums/status_effects/debuffs/debuffs.dm | 2 +- .../objects/structures/gym/punching_bag.dm | 5 +- .../objects/structures/gym/weight_machine.dm | 10 +- .../objects/structures/lavaland/gulag_vent.dm | 5 +- code/modules/clothing/gloves/boxing.dm | 32 ++ code/modules/mob/living/carbon/human/human.dm | 2 +- icons/mob/clothing/hands.dmi | Bin 17715 -> 17998 bytes icons/obj/clothing/gloves.dmi | Bin 29739 -> 29425 bytes tgstation.dme | 2 +- 18 files changed, 362 insertions(+), 90 deletions(-) create mode 100644 code/datums/skills/athletics.dm delete mode 100644 code/datums/skills/fitness.dm diff --git a/code/__DEFINES/melee.dm b/code/__DEFINES/melee.dm index 2b06303386a..8b3a422fc0b 100644 --- a/code/__DEFINES/melee.dm +++ b/code/__DEFINES/melee.dm @@ -1,6 +1,7 @@ //Martial arts defines #define MARTIALART_BOXING "boxing" +#define MARTIALART_EVIL_BOXING "evil boxing" #define MARTIALART_CQC "CQC" #define MARTIALART_KRAVMAGA "krav maga" #define MARTIALART_MUSHPUNCH "mushroom punch" diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index 6a83f33083a..f2cb9069fb6 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -520,6 +520,15 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Prevents you from twohanding weapons. #define TRAIT_NO_TWOHANDING "no_twohanding" +/// Improves boxing damage against boxers and athletics experience gain +#define TRAIT_STRENGTH "strength" + +/// Increases the duration of having exercised +#define TRAIT_STIMMED "stimmed" + +/// Indicates that the target is able to be boxed at a boxer's full power. +#define TRAIT_BOXING_READY "boxing_ready" + /// Halves the time of tying a tie. #define TRAIT_FAST_TYING "fast_tying" diff --git a/code/__DEFINES/traits/sources.dm b/code/__DEFINES/traits/sources.dm index 56bcbf3c90d..278510bd23f 100644 --- a/code/__DEFINES/traits/sources.dm +++ b/code/__DEFINES/traits/sources.dm @@ -137,6 +137,7 @@ #define LOCKED_HELMET_TRAIT "locked-helmet" #define NINJA_SUIT_TRAIT "ninja-suit" #define SLEEPING_CARP_TRAIT "sleeping_carp" +#define BOXING_TRAIT "boxing" #define TIMESTOP_TRAIT "timestop" #define LIFECANDLE_TRAIT "lifecandle" #define VENTCRAWLING_TRAIT "ventcrawling" diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 985fc8ea930..dd0c89c2211 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -495,6 +495,9 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_XRAY_VISION" = TRAIT_XRAY_VISION, "TRAIT_DISCO_DANCER" = TRAIT_DISCO_DANCER, "TRAIT_MAFIAINITIATE" = TRAIT_MAFIAINITIATE, + "TRAIT_STRENGTH" = TRAIT_STRENGTH, + "TRAIT_STIMMED" = TRAIT_STIMMED, + "TRAIT_BOXING_READY" = TRAIT_BOXING_READY, ), /obj/item = list( "TRAIT_APC_SHOCKING" = TRAIT_APC_SHOCKING, diff --git a/code/datums/martial/boxing.dm b/code/datums/martial/boxing.dm index ec111fb3cf0..8e20dfbef9c 100644 --- a/code/datums/martial/boxing.dm +++ b/code/datums/martial/boxing.dm @@ -1,87 +1,271 @@ +#define LEFT_RIGHT_COMBO "DH" +#define RIGHT_LEFT_COMBO "HD" +#define LEFT_LEFT_COMBO "HH" +#define RIGHT_RIGHT_COMBO "DD" + /datum/martial_art/boxing name = "Boxing" id = MARTIALART_BOXING pacifist_style = TRUE + ///Boolean on whether we are sportsmanlike in our tussling; TRUE means we have restrictions + var/honorable_boxer = TRUE + /// List of traits applied to users of this martial art. + var/list/boxing_traits = list(TRAIT_BOXING_READY) + /// Balloon alert cooldown for warning our boxer to alternate their blows to get more damage + COOLDOWN_DECLARE(warning_cooldown) /datum/martial_art/boxing/teach(mob/living/new_holder, make_temporary) if(!ishuman(new_holder)) return FALSE + new_holder.add_traits(boxing_traits, BOXING_TRAIT) + RegisterSignal(new_holder, COMSIG_LIVING_CHECK_BLOCK, PROC_REF(check_block)) return ..() -/datum/martial_art/boxing/disarm_act(mob/living/carbon/human/attacker, mob/living/defender) - attacker.balloon_alert(attacker, "can't disarm while boxing!") - return MARTIAL_ATTACK_FAIL +/datum/martial_art/boxing/on_remove(mob/living/remove_from) + remove_from.remove_traits(boxing_traits, BOXING_TRAIT) + UnregisterSignal(remove_from, list(COMSIG_LIVING_CHECK_BLOCK)) + return ..() -/datum/martial_art/boxing/grab_act(mob/living/carbon/human/attacker, mob/living/defender) - attacker.balloon_alert(attacker, "can't grab while boxing!") - return MARTIAL_ATTACK_FAIL +///Unlike most instances of this proc, this is actually called in _proc/tussle() +///Returns a multiplier on our skill damage bonus. +/datum/martial_art/boxing/proc/check_streak(mob/living/attacker, mob/living/defender) + var/combo_multiplier = 1 + + if(findtext(streak, LEFT_LEFT_COMBO) || findtext(streak, RIGHT_RIGHT_COMBO)) + reset_streak() + if(COOLDOWN_FINISHED(src, warning_cooldown)) + COOLDOWN_START(src, warning_cooldown, 2 SECONDS) + attacker.balloon_alert(attacker, "weak combo, alternate your hits!") + return combo_multiplier * 0.5 + + if(findtext(streak, LEFT_RIGHT_COMBO) || findtext(streak, RIGHT_LEFT_COMBO)) + reset_streak() + return combo_multiplier * 1.5 + + return combo_multiplier + +/datum/martial_art/boxing/disarm_act(mob/living/attacker, mob/living/defender) + if(honor_check(defender)) + add_to_streak("D", defender) + tussle(attacker, defender, "right hook", "right hooked") + return MARTIAL_ATTACK_SUCCESS + +/datum/martial_art/boxing/grab_act(mob/living/attacker, mob/living/defender) + if(honorable_boxer) + attacker.balloon_alert(attacker, "no grabbing while boxing!") + return MARTIAL_ATTACK_FAIL + return MARTIAL_ATTACK_INVALID //UNLESS YOU'RE EVIL + +/datum/martial_art/boxing/harm_act(mob/living/attacker, mob/living/defender) + if(honor_check(defender)) + add_to_streak("H", defender) + tussle(attacker, defender, "left hook", "left hooked") + return MARTIAL_ATTACK_SUCCESS + +// Our only boxing move, which occurs on literally all attacks; the tussle. However, quite a lot morphs the results of this proc. Combos, unlike most martial arts attacks, are checked in this proc rather than our standard unarmed procs +/datum/martial_art/boxing/proc/tussle(mob/living/attacker, mob/living/defender, atk_verb = "blind jab", atk_verbed = "blind jabbed") + + if(honorable_boxer) //Being a good sport, you never hit someone on the ground or already knocked down. It shows you're the better person. + if(defender.body_position == LYING_DOWN && defender.getStaminaLoss() >= 100 || defender.IsUnconscious()) //If they're in stamcrit or unconscious, don't bloody punch them + attacker.balloon_alert(attacker, "unsportsmanlike behaviour!") + return FALSE -/datum/martial_art/boxing/harm_act(mob/living/carbon/human/attacker, mob/living/defender) var/obj/item/bodypart/arm/active_arm = attacker.get_active_hand() + + //The values between which damage is rolled for punches + var/lower_force = active_arm.unarmed_damage_low + var/upper_force = active_arm.unarmed_damage_high + + //Determines knockout potential and armor penetration (if that matters) + var/base_unarmed_effectiveness = active_arm.unarmed_effectiveness + + //Determines attack sound based on attacker arm + var/attack_sound = active_arm.unarmed_attack_sound + + // Out athletics skill is added as a damage bonus + var/athletics_skill = attacker.mind?.get_skill_level(/datum/skill/athletics) + + // If true, grants experience for punching; we only gain experience if we punch another boxer. + var/grant_experience = FALSE + + // What type of damage does our kind of boxing do? Defaults to STAMINA, unless you're performing EVIL BOXING + var/damage_type = honorable_boxer ? STAMINA : attacker.get_attack_type() + attacker.do_attack_animation(defender, ATTACK_EFFECT_PUNCH) - var/damage = rand(5, 8) + active_arm.unarmed_damage_low - var/atk_verb = pick("left hook", "right hook", "straight punch") - if(damage <= 0) - playsound(defender, active_arm.unarmed_miss_sound, 25, TRUE, -1) - defender.visible_message( - span_warning("[attacker]'s [atk_verb] misses [defender]!"), - span_danger("You avoid [attacker]'s [atk_verb]!"), - span_hear("You hear a swoosh!"), - COMBAT_MESSAGE_RANGE, - attacker, - ) - to_chat(attacker, span_warning("Your [atk_verb] misses [defender]!")) - log_combat(attacker, defender, "attempted to hit", atk_verb) - return MARTIAL_ATTACK_FAIL + //Determines damage dealt on a punch. Against a boxing defender, we apply our skill bonus. + var/damage = rand(lower_force, upper_force) - if(defender.check_block(attacker, damage, "[attacker]'s [atk_verb]", UNARMED_ATTACK)) - return MARTIAL_ATTACK_FAIL + if(honor_check(defender)) + var/strength_bonus = HAS_TRAIT(attacker, TRAIT_STRENGTH) ? 2 : 0 //Investing into genetic strength improvements makes you a better boxer + damage += round(athletics_skill * check_streak(attacker, defender) + strength_bonus) + grant_experience = TRUE + + var/current_atk_verb = atk_verb + var/current_atk_verbed = atk_verbed + + if(is_detective_job(attacker.mind?.assigned_role)) //In short: discombobulate + current_atk_verb = "discombobulate" + current_atk_verbed = "discombulated" + + // Similar to a normal punch, should we have a value of 0 for our lower force, we simply miss outright. + if(!lower_force) + playsound(defender.loc, active_arm.unarmed_miss_sound, 25, TRUE, -1) + defender.visible_message(span_warning("[attacker]'s [current_atk_verb] misses [defender]!"), \ + span_danger("You avoid [attacker]'s [current_atk_verb]!"), span_hear("You hear a swoosh!"), COMBAT_MESSAGE_RANGE, attacker) + to_chat(attacker, span_warning("Your [current_atk_verb] misses [defender]!")) + log_combat(attacker, defender, "attempted to hit", current_atk_verb) + return FALSE + + if(defender.check_block(attacker, damage, "[attacker]'s [current_atk_verb]", UNARMED_ATTACK)) + return FALSE var/obj/item/bodypart/affecting = defender.get_bodypart(defender.get_random_valid_zone(attacker.zone_selected)) - var/armor_block = defender.run_armor_check(affecting, MELEE) + var/armor_block = defender.run_armor_check(affecting, MELEE, armour_penetration = base_unarmed_effectiveness) + + playsound(defender, attack_sound, 25, TRUE, -1) - playsound(defender, active_arm.unarmed_attack_sound, 25, TRUE, -1) defender.visible_message( - span_danger("[attacker] [atk_verb]ed [defender]!"), - span_userdanger("You're [atk_verb]ed by [attacker]!"), + span_danger("[attacker] [current_atk_verbed] [defender]!"), + span_userdanger("You're [current_atk_verbed] by [attacker]!"), span_hear("You hear a sickening sound of flesh hitting flesh!"), COMBAT_MESSAGE_RANGE, attacker, ) - to_chat(attacker, span_danger("You [atk_verb]ed [defender]!")) - defender.apply_damage(damage, STAMINA, affecting, armor_block) + + to_chat(attacker, span_danger("You [current_atk_verbed] [defender]!")) + + defender.apply_damage(damage, damage_type, affecting, armor_block) + log_combat(attacker, defender, "punched (boxing) ") - if(defender.getStaminaLoss() > 50 && istype(defender.mind?.martial_art, /datum/martial_art/boxing)) - var/knockout_prob = defender.getStaminaLoss() + rand(-15, 15) - if(defender.stat != DEAD && prob(knockout_prob)) - defender.visible_message( - span_danger("[attacker] knocks [defender] out with a haymaker!"), - span_userdanger("You're knocked unconscious by [attacker]!"), - span_hear("You hear a sickening sound of flesh hitting flesh!"), - COMBAT_MESSAGE_RANGE, - attacker, - ) - to_chat(attacker, span_danger("You knock [defender] out with a haymaker!")) - defender.apply_effect(20 SECONDS, EFFECT_KNOCKDOWN, armor_block) - defender.SetSleeping(10 SECONDS) - log_combat(attacker, defender, "knocked out (boxing) ") - return MARTIAL_ATTACK_SUCCESS + + if(grant_experience) + skill_experience_adjustment(attacker, (damage/lower_force)) + + if(defender.stat == DEAD || !honor_check(defender)) //early returning here so we don't worry about knockout probs + return TRUE + + //Determine our attackers athletics level as a knockout probability bonus + var/attacker_athletics_skill = (attacker.mind?.get_skill_modifier(/datum/skill/athletics, SKILL_RANDS_MODIFIER) + base_unarmed_effectiveness) + + // Defender boxing skill and armor block are used as a defense here. This has already factored in base_unarmed_effectiveness from the attacker + var/defender_athletics_skill = clamp(defender.mind?.get_skill_modifier(/datum/skill/athletics, SKILL_RANDS_MODIFIER), 0, 100) + + //Determine our final probability, using a clamp to stop any prob() weirdness. + var/final_knockout_probability = clamp(round(attacker_athletics_skill - defender_athletics_skill), 0 , 100) + + if(!prob(final_knockout_probability)) + return TRUE + + if(defender.get_timed_status_effect_duration(/datum/status_effect/staggered)) + defender.visible_message( + span_danger("[attacker] knocks [defender] out with a haymaker!"), + span_userdanger("You're knocked unconscious by [attacker]!"), + span_hear("You hear a sickening sound of flesh hitting flesh!"), + COMBAT_MESSAGE_RANGE, + attacker, + ) + to_chat(attacker, span_danger("You knock [defender] out with a haymaker!")) + defender.apply_effect(20 SECONDS, EFFECT_KNOCKDOWN, armor_block) + defender.SetSleeping(10 SECONDS) + log_combat(attacker, defender, "knocked out (boxing) ") + else + defender.visible_message( + span_danger("[attacker] staggers [defender] with a haymaker!"), + span_userdanger("You're nearly knocked off your feet by [attacker]!"), + span_hear("You hear a sickening sound of flesh hitting flesh!"), + COMBAT_MESSAGE_RANGE, + attacker, + ) + defender.adjust_staggered_up_to(STAGGERED_SLOWDOWN_LENGTH, 10 SECONDS) + to_chat(attacker, span_danger("You stagger [defender] with a haymaker!")) + log_combat(attacker, defender, "staggered (boxing) ") + + playsound(defender, 'sound/effects/coin2.ogg', 40, TRUE) + new /obj/effect/temp_visual/crit(get_turf(defender)) + skill_experience_adjustment(attacker, (damage/lower_force)) //double experience for a successful crit + + return TRUE + +/// Returns whether whoever is checked by this proc is complying with the rules of boxing. The boxer cannot block non-boxers, and cannot apply their scariest moves against non-boxers. +/datum/martial_art/boxing/proc/honor_check(mob/living/possible_boxer) + if(!honorable_boxer) + return TRUE //You scoundrel!! + + if(!HAS_TRAIT(possible_boxer, TRAIT_BOXING_READY)) + return FALSE + + return TRUE + +/// Handles our instances of experience gain while boxing. It also applies the exercised status effect. +/datum/martial_art/boxing/proc/skill_experience_adjustment(mob/living/boxer, experience_value) + //Boxing in heavier gravity gives you more experience + var/gravity_modifier = boxer.has_gravity() > STANDARD_GRAVITY ? 1 : 0.5 + + //You gotta sleep before you get any experience! + boxer.mind?.adjust_experience(/datum/skill/athletics, experience_value * gravity_modifier) + boxer.apply_status_effect(/datum/status_effect/exercised) + +/// Handles our blocking signals, similar to hit_reaction() on items. Only blocks while the boxer is in throw mode. +/datum/martial_art/boxing/proc/check_block(mob/living/boxer, atom/movable/hitby, damage, attack_text, attack_type, ...) + SIGNAL_HANDLER + + if(!can_use(boxer) || !boxer.throw_mode || boxer.incapacitated(IGNORE_GRAB)) + return NONE + + if(attack_type != UNARMED_ATTACK) + return NONE + + //Determines unarmed defense against boxers using our current active arm. + var/obj/item/bodypart/arm/active_arm = boxer.get_active_hand() + var/base_unarmed_effectiveness = active_arm.unarmed_effectiveness + + // Out athletics skill is added to our block potential + var/athletics_skill_rands = boxer.mind?.get_skill_modifier(/datum/skill/athletics, SKILL_RANDS_MODIFIER) + + var/block_chance = base_unarmed_effectiveness + athletics_skill_rands + + var/block_text = pick("block", "evade") + + if(!prob(block_chance)) + return NONE + + var/mob/living/attacker = GET_ASSAILANT(hitby) + + if(!honor_check(attacker)) + return NONE + + if(istype(attacker) && boxer.Adjacent(attacker)) + attacker.apply_damage(10, STAMINA) + boxer.apply_damage(5, STAMINA) + + boxer.visible_message( + span_danger("[boxer] [block_text]s [attack_text]!"), + span_userdanger("You [block_text] [attack_text]!"), + ) + if(block_text == "evade") + playsound(boxer.loc, active_arm.unarmed_miss_sound, 25, TRUE, -1) + + skill_experience_adjustment(boxer, 1) //just getting hit a bunch doesn't net you much experience + + return SUCCESSFUL_BLOCK /datum/martial_art/boxing/can_use(mob/living/martial_artist) if(!ishuman(martial_artist)) return FALSE return ..() -/obj/item/clothing/gloves/boxing +/// Evil Boxing; for sick, evil scoundrels. Has no honor, making it more lethal (therefore unable to be used by pacifists). +/// Grants Strength and Stimmed to speed up any experience gain. -/obj/item/clothing/gloves/boxing/Initialize(mapload) - . = ..() - var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/extendohand_l, /datum/crafting_recipe/extendohand_r) +/datum/martial_art/boxing/evil + name = "Evil Boxing" + id = MARTIALART_EVIL_BOXING + pacifist_style = FALSE + honorable_boxer = FALSE + boxing_traits = list(TRAIT_BOXING_READY, TRAIT_STRENGTH, TRAIT_STIMMED) - AddComponent( - /datum/component/slapcrafting,\ - slapcraft_recipes = slapcraft_recipe_list,\ - ) - - AddComponent(/datum/component/martial_art_giver, /datum/martial_art/boxing) +#undef LEFT_RIGHT_COMBO +#undef RIGHT_LEFT_COMBO +#undef LEFT_LEFT_COMBO +#undef RIGHT_RIGHT_COMBO diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm index de77727a3e4..b45d0a6499e 100644 --- a/code/datums/mutations/body.dm +++ b/code/datums/mutations/body.dm @@ -267,15 +267,42 @@ desc = "The user's muscles slightly expand." quality = POSITIVE text_gain_indication = "You feel strong." + instability = 5 difficulty = 16 +/datum/mutation/human/strong/on_acquiring(mob/living/carbon/human/owner) + . = ..() + if(.) + return + ADD_TRAIT(owner, TRAIT_STRENGTH, GENETIC_MUTATION) + +/datum/mutation/human/strong/on_losing(mob/living/carbon/human/owner) + . = ..() + if(.) + return + REMOVE_TRAIT(owner, TRAIT_STRENGTH, GENETIC_MUTATION) + + /datum/mutation/human/stimmed name = "Stimmed" desc = "The user's chemical balance is more robust." quality = POSITIVE text_gain_indication = "You feel stimmed." + instability = 5 difficulty = 16 +/datum/mutation/human/stimmed/on_acquiring(mob/living/carbon/human/owner) + . = ..() + if(.) + return + ADD_TRAIT(owner, TRAIT_STIMMED, GENETIC_MUTATION) + +/datum/mutation/human/stimmed/on_losing(mob/living/carbon/human/owner) + . = ..() + if(.) + return + REMOVE_TRAIT(owner, TRAIT_STIMMED, GENETIC_MUTATION) + /datum/mutation/human/insulated name = "Insulated" desc = "The affected person does not conduct electricity." diff --git a/code/datums/skills/athletics.dm b/code/datums/skills/athletics.dm new file mode 100644 index 00000000000..2ef336e5ba9 --- /dev/null +++ b/code/datums/skills/athletics.dm @@ -0,0 +1,27 @@ +/datum/skill/athletics + name = "Athletics" + title = "Athlete" + desc = "Twinkle twinkle little star, hit the gym and lift the bar." + // The skill value modifier effects the max duration that is possible for /datum/status_effect/exercised; The rands modifier determines block probability and crit probability while boxing against boxers + modifiers = list( + SKILL_VALUE_MODIFIER = list( + 1 MINUTES, + 1.5 MINUTES, + 2 MINUTES, + 2.5 MINUTES, + 3 MINUTES, + 3.5 MINUTES, + 5 MINUTES + ), + SKILL_RANDS_MODIFIER = list( + 0, + 5, + 10, + 15, + 20, + 30, + 50 + ) + ) + + skill_item_path = /obj/item/clothing/gloves/boxing/golden diff --git a/code/datums/skills/fitness.dm b/code/datums/skills/fitness.dm deleted file mode 100644 index 32be3f9d211..00000000000 --- a/code/datums/skills/fitness.dm +++ /dev/null @@ -1,23 +0,0 @@ -/datum/skill/fitness - name = "Fitness" - title = "Powerlifter" - desc = "Twinkle twinkle little star, hit the gym and lift the bar." - /// The skill value modifier effects the max duration that is possible for /datum/status_effect/exercised - modifiers = list(SKILL_VALUE_MODIFIER = list(1 MINUTES, 1.5 MINUTES, 2 MINUTES, 2.5 MINUTES, 3 MINUTES, 3.5 MINUTES, 5 MINUTES)) - /// How much bigger your mob becomes per level (these effects don't stack together) - var/static/size_boost = list(0, 1/16, 1/8, 3/16, 2/8, 3/8, 4/8) - // skill_item_path - your mob sprite gets bigger to showoff so we don't get a special item - -/datum/skill/fitness/level_gained(datum/mind/mind, new_level, old_level, silent) - . = ..() - var/old_gym_size = RESIZE_DEFAULT_SIZE + size_boost[old_level] - var/new_gym_size = RESIZE_DEFAULT_SIZE + size_boost[new_level] - - mind.current.update_transform(new_gym_size / old_gym_size) - -/datum/skill/fitness/level_lost(datum/mind/mind, new_level, old_level, silent) - . = ..() - var/old_gym_size = RESIZE_DEFAULT_SIZE + size_boost[old_level] - var/new_gym_size = RESIZE_DEFAULT_SIZE + size_boost[new_level] - - mind.current.update_transform(new_gym_size / old_gym_size) diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index 6cd180ab597..5784739cd9c 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -195,6 +195,9 @@ if(HAS_TRAIT(new_owner, TRAIT_HULK)) modifier += 0.5 + if(HAS_TRAIT(new_owner, TRAIT_STIMMED)) // Naturally produces stimulants to help get you PUMPED + modifier += 1 + if(HAS_TRAIT(new_owner, TRAIT_FAT)) // less xp until you get into shape modifier -= 0.5 @@ -209,10 +212,10 @@ if(new_owner.reagents.has_reagent(workout_reagent)) food_boost += supplementary_reagents_bonus[workout_reagent] - var/skill_level_boost = (new_owner.mind.get_skill_level(/datum/skill/fitness) - 1) * 2 SECONDS + var/skill_level_boost = (new_owner.mind.get_skill_level(/datum/skill/athletics) - 1) * 2 SECONDS bonus_time = (bonus_time + food_boost + skill_level_boost) * modifier - var/exhaustion_limit = new_owner.mind.get_skill_modifier(/datum/skill/fitness, SKILL_VALUE_MODIFIER) + world.time + var/exhaustion_limit = new_owner.mind.get_skill_modifier(/datum/skill/athletics, SKILL_VALUE_MODIFIER) + world.time if(duration + bonus_time >= exhaustion_limit) duration = exhaustion_limit to_chat(new_owner, span_userdanger("Your muscles are exhausted! Might be a good idea to sleep...")) @@ -228,10 +231,10 @@ /datum/status_effect/exercised/refresh(mob/living/new_owner, bonus_time) duration += workout_duration(new_owner, bonus_time) new_owner.clear_mood_event("exercise") // we need to reset the old mood event in case our fitness skill changes - new_owner.add_mood_event("exercise", /datum/mood_event/exercise, new_owner.mind.get_skill_level(/datum/skill/fitness)) + new_owner.add_mood_event("exercise", /datum/mood_event/exercise, new_owner.mind.get_skill_level(/datum/skill/athletics)) /datum/status_effect/exercised/on_apply() - owner.add_mood_event("exercise", /datum/mood_event/exercise, owner.mind.get_skill_level(/datum/skill/fitness)) + owner.add_mood_event("exercise", /datum/mood_event/exercise, owner.mind.get_skill_level(/datum/skill/athletics)) return ..() /datum/status_effect/exercised/on_remove() diff --git a/code/datums/status_effects/debuffs/debuffs.dm b/code/datums/status_effects/debuffs/debuffs.dm index b2a37356e53..ad5696e787f 100644 --- a/code/datums/status_effects/debuffs/debuffs.dm +++ b/code/datums/status_effects/debuffs/debuffs.dm @@ -224,7 +224,7 @@ var/datum/status_effect/exercised/exercised = carbon_owner.has_status_effect(/datum/status_effect/exercised) if(exercised && carbon_owner.mind) // the better you sleep, the more xp you gain - carbon_owner.mind.adjust_experience(/datum/skill/fitness, seconds_between_ticks * sleep_quality * SLEEP_QUALITY_WORKOUT_MULTIPLER) + carbon_owner.mind.adjust_experience(/datum/skill/athletics, seconds_between_ticks * sleep_quality * SLEEP_QUALITY_WORKOUT_MULTIPLER) carbon_owner.adjust_timed_status_effect(-1 * seconds_between_ticks * sleep_quality * SLEEP_QUALITY_WORKOUT_MULTIPLER, /datum/status_effect/exercised) if(prob(2)) to_chat(carbon_owner, span_notice("You feel your fitness improving!")) diff --git a/code/game/objects/structures/gym/punching_bag.dm b/code/game/objects/structures/gym/punching_bag.dm index f441887f2c1..ef0db16e953 100644 --- a/code/game/objects/structures/gym/punching_bag.dm +++ b/code/game/objects/structures/gym/punching_bag.dm @@ -57,9 +57,12 @@ stamina_exhaustion = 2 if (is_heavy_gravity) stamina_exhaustion *= 1.5 + + if(HAS_TRAIT(user, TRAIT_STRENGTH)) //The strong get reductions to stamina damage taken while exercising + stamina_exhaustion *= 0.5 user.adjustStaminaLoss(stamina_exhaustion) - user.mind?.adjust_experience(/datum/skill/fitness, is_heavy_gravity ? 0.2 : 0.1) + user.mind?.adjust_experience(/datum/skill/athletics, is_heavy_gravity ? 0.2 : 0.1) user.apply_status_effect(/datum/status_effect/exercised) /obj/structure/punching_bag/wrench_act_secondary(mob/living/user, obj/item/tool) diff --git a/code/game/objects/structures/gym/weight_machine.dm b/code/game/objects/structures/gym/weight_machine.dm index d3614ee6815..3c531f04889 100644 --- a/code/game/objects/structures/gym/weight_machine.dm +++ b/code/game/objects/structures/gym/weight_machine.dm @@ -109,7 +109,7 @@ if(do_after(user, 8 SECONDS, src) && user.has_gravity()) // with enough dedication, even clowns can overcome their handicaps - var/clumsy_chance = 30 - (user.mind.get_skill_level(/datum/skill/fitness) * 5) + var/clumsy_chance = 30 - (user.mind.get_skill_level(/datum/skill/athletics) * 5) if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(clumsy_chance)) playsound(src, 'sound/effects/bang.ogg', 50, TRUE) to_chat(user, span_warning("Your hand slips, causing the [name] to smash you!")) @@ -135,7 +135,7 @@ if(iscarbon(user)) var/gravity_modifier = user.has_gravity() > STANDARD_GRAVITY ? 2 : 1 // remember the real xp gain is from sleeping after working out - user.mind.adjust_experience(/datum/skill/fitness, WORKOUT_XP * gravity_modifier) + user.mind.adjust_experience(/datum/skill/athletics, WORKOUT_XP * gravity_modifier) user.apply_status_effect(/datum/status_effect/exercised, EXERCISE_STATUS_DURATION) end_workout() @@ -168,9 +168,13 @@ return TRUE // No weight? I could do this all day var/gravity_modifier = affected_gravity > STANDARD_GRAVITY ? 0.75 : 1 // the amount of workouts you can do before you hit stamcrit - var/workout_reps = total_workout_reps[user.mind.get_skill_level(/datum/skill/fitness)] * gravity_modifier + var/workout_reps = total_workout_reps[user.mind.get_skill_level(/datum/skill/athletics)] * gravity_modifier // total stamina drain of 1 workout calculated based on the workout length var/stamina_exhaustion = FLOOR(user.maxHealth / workout_reps / WORKOUT_LENGTH, 0.1) + + if(HAS_TRAIT(user, TRAIT_STRENGTH)) //The strong get reductions to stamina damage taken while exercising + stamina_exhaustion *= 0.5 + user.adjustStaminaLoss(stamina_exhaustion * seconds_per_tick) return TRUE diff --git a/code/game/objects/structures/lavaland/gulag_vent.dm b/code/game/objects/structures/lavaland/gulag_vent.dm index aa13a1621d8..b564908cdc6 100644 --- a/code/game/objects/structures/lavaland/gulag_vent.dm +++ b/code/game/objects/structures/lavaland/gulag_vent.dm @@ -34,9 +34,10 @@ occupied = FALSE if (!succeeded) return - living_user.mind?.adjust_experience(/datum/skill/fitness, 10) + var/stamina_damage_to_inflict = HAS_TRAIT(user, TRAIT_STRENGTH) ? 60 : 120 //Decreases the amount of stamina damage inflicted by half if you're STRONG + living_user.mind?.adjust_experience(/datum/skill/athletics, 10) living_user.apply_status_effect(/datum/status_effect/exercised) new spawned_boulder(get_turf(living_user)) living_user.visible_message(span_notice("[living_user] hauls a boulder out of [src].")) - living_user.apply_damage(120, STAMINA) + living_user.apply_damage(stamina_damage_to_inflict, STAMINA) playsound(src, 'sound/weapons/genhit.ogg', vol = 50, vary = TRUE) diff --git a/code/modules/clothing/gloves/boxing.dm b/code/modules/clothing/gloves/boxing.dm index deed90b1696..03b1cbb5bf7 100644 --- a/code/modules/clothing/gloves/boxing.dm +++ b/code/modules/clothing/gloves/boxing.dm @@ -6,6 +6,25 @@ equip_delay_other = 60 species_exception = list(/datum/species/golem) // now you too can be a golem boxing champion clothing_traits = list(TRAIT_CHUNKYFINGERS) + /// Determines the version of boxing (or any martial art for that matter) that the boxing gloves gives + var/style_to_give = /datum/martial_art/boxing + +/obj/item/clothing/gloves/boxing/Initialize(mapload) + . = ..() + var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/extendohand_l, /datum/crafting_recipe/extendohand_r) + + AddComponent( + /datum/component/slapcrafting,\ + slapcraft_recipes = slapcraft_recipe_list,\ + ) + + AddComponent(/datum/component/martial_art_giver, style_to_give) + +/obj/item/clothing/gloves/boxing/evil + name = "evil boxing gloves" + desc = "These strange gloves radiate an unsually evil aura." + greyscale_colors = "#21211f" + style_to_give = /datum/martial_art/boxing/evil /obj/item/clothing/gloves/boxing/green icon_state = "boxinggreen" @@ -18,3 +37,16 @@ /obj/item/clothing/gloves/boxing/yellow icon_state = "boxingyellow" greyscale_colors = "#d2a800" + +/obj/item/clothing/gloves/boxing/golden + name = "golden gloves" + desc = "The reigning champ of the station!" + icon_state = "boxinggold" + custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT*1) //LITERALLY GOLD + material_flags = MATERIAL_EFFECTS | MATERIAL_AFFECT_STATISTICS + equip_delay_other = 120 + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE + +/obj/item/clothing/gloves/boxing/golden/Initialize(mapload) + . = ..() + AddElement(/datum/element/skill_reward, /datum/skill/athletics) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index b3e41c89d48..07135351a91 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -915,7 +915,7 @@ var/carrydelay = 5 SECONDS //if you have latex you are faster at grabbing var/skills_space - var/fitness_level = mind.get_skill_level(/datum/skill/fitness) - 1 + var/fitness_level = mind.get_skill_level(/datum/skill/athletics) - 1 if(HAS_TRAIT(src, TRAIT_QUICKER_CARRY)) carrydelay -= 2 SECONDS else if(HAS_TRAIT(src, TRAIT_QUICK_CARRY)) diff --git a/icons/mob/clothing/hands.dmi b/icons/mob/clothing/hands.dmi index d0e5093d459c50fd89aa23a291fe26ed60b92f95..a670c33b7dcf6d4139a06f28e913962674168a67 100644 GIT binary patch literal 17998 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 EKj$s_kN^Mx diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index d8a2fc0bd13cd1cb03e215bd6097fdb114f3453e..d5099c64e7f6525c34e80e433178e77fbd2b84e6 100644 GIT binary patch literal 29425 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