From 2eb2a575df2760635358d71dda9c6e4534b3befc Mon Sep 17 00:00:00 2001 From: Hatterhat <31829017+Hatterhat@users.noreply.github.com> Date: Sun, 7 Aug 2022 19:12:47 -0500 Subject: [PATCH] gives the agateram an incredibly subpar dodgeroll (#15431) * a series of failed attempts and compromises * dumb gimmick code * goodbye das1 * trimming the fat, dodgeroll lock for full iframes Co-authored-by: Hatterhat --- .../game/objects/items/gladiator_items.dm | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/modular_skyrat/modules/gladiator/code/game/objects/items/gladiator_items.dm b/modular_skyrat/modules/gladiator/code/game/objects/items/gladiator_items.dm index a4db1b7c7a7..3d96edcb743 100644 --- a/modular_skyrat/modules/gladiator/code/game/objects/items/gladiator_items.dm +++ b/modular_skyrat/modules/gladiator/code/game/objects/items/gladiator_items.dm @@ -41,6 +41,10 @@ // aughhghghgh this really should be elementized but this works for now var/faction_bonus_force = 100 var/static/list/nemesis_factions = list("mining", "boss") + /// how much stamina does it cost to roll + var/roll_stamcost = 15 + /// how far do we roll? + var/roll_range = 3 /obj/item/claymore/agateram/attack(mob/living/target, mob/living/carbon/human/user) var/is_nemesis_faction = FALSE @@ -53,6 +57,38 @@ if(is_nemesis_faction) force -= faction_bonus_force +/obj/item/claymore/agateram/afterattack_secondary(atom/target, mob/living/user, params) // dark souls + if(user.IsImmobilized()) // no free dodgerolls + return + var/turf/where_to = get_turf(target) + user.apply_damage(damage = roll_stamcost, damagetype = STAMINA) + user.Immobilize(0.8 SECONDS) // you dont get to adjust your roll + user.throw_at(where_to, range = roll_range, speed = 1, force = MOVE_FORCE_NORMAL) + user.apply_status_effect(/datum/status_effect/dodgeroll_iframes) + playsound(user, SFX_BODYFALL, 50, TRUE) + playsound(user, SFX_RUSTLE, 50, TRUE) + return ..() + +/datum/status_effect/dodgeroll_iframes + id = "dodgeroll_dodging" + alert_type = null + status_type = STATUS_EFFECT_REFRESH + duration = 0.8 SECONDS // worth tweaking? + +/datum/status_effect/dodgeroll_iframes/on_apply() + RegisterSignal(owner, COMSIG_HUMAN_CHECK_SHIELDS, .proc/whiff) + return TRUE + +/datum/status_effect/dodgeroll_iframes/on_remove() + UnregisterSignal(owner, COMSIG_HUMAN_CHECK_SHIELDS) + return ..() + +/datum/status_effect/dodgeroll_iframes/proc/whiff() + SIGNAL_HANDLER + owner.balloon_alert_to_viewers("MISS!") + playsound(src, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1) + return SHIELD_BLOCK + /obj/structure/closet/crate/necropolis/gladiator name = "gladiator chest"