From 1f337ac65e5be514810d0787101a9bb069dab70a Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Fri, 29 May 2020 18:03:04 -0700 Subject: [PATCH] itnerrupt --- .../modules/mob/living/living_active_parry.dm | 20 +++++++++---------- .../mob/living/living_blocking_parrying.dm | 12 +++++++++++ 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/code/modules/mob/living/living_active_parry.dm b/code/modules/mob/living/living_active_parry.dm index 0ec523bb3d..8c332b5779 100644 --- a/code/modules/mob/living/living_active_parry.dm +++ b/code/modules/mob/living/living_active_parry.dm @@ -10,11 +10,14 @@ * Initiates a parrying sequence. */ /mob/living/proc/initiate_parry_sequence() + if(parrying) + return // already parrying if(!CHECK_MOBILITY(src, MOBILITY_USE)) to_chat(src, "You are incapacitated, or otherwise unable to swing a weapon to parry with!") return FALSE - if(parrying) - return // already parrying + if(!SEND_SIGNAL(src, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_ACTIVE)) + to_chat(src, "You must be in combat mode to parry!") + return FALSE var/datum/block_parry_data/data // Prioritize item, then martial art, then unarmed. // yanderedev else if time @@ -54,6 +57,8 @@ * Called via timer when the parry sequence ends. */ /mob/living/proc/end_parry_sequence() + if(!parrying) + return var/datum/block_parry_data/data = get_parry_data() var/list/effect_text = list() if(!length(successful_parries)) // didn't parry anything successfully @@ -94,14 +99,6 @@ /obj/item/proc/get_block_parry_data() return return_block_parry_datum(block_parry_data) -/** - * Called every life tick to handle blocking/parrying effects. - */ -/mob/living/proc/handle_block_parry(seconds = 1) - if(active_blocking) - var/datum/block_parry_data/data = return_block_parry_datum(active_block_item.block_parry_data) - adjustStaminaLossBuffered(data.block_stamina_cost_per_second * seconds) - //Stubs. /** @@ -186,6 +183,9 @@ var/stage = get_parry_stage() if(stage == NOT_PARRYING) return BLOCK_NONE + if(!CHECK_MOBILITY(src, MOBILITY_USE)) + to_chat(src, "Your parry is interrupted!") + end_parry_sequence() var/datum/block_parry_data/data = get_parry_data() if(attack_type && !(attack_type & data.parry_attack_types)) return BLOCK_NONE diff --git a/code/modules/mob/living/living_blocking_parrying.dm b/code/modules/mob/living/living_blocking_parrying.dm index 2f75f11142..a5971afed2 100644 --- a/code/modules/mob/living/living_blocking_parrying.dm +++ b/code/modules/mob/living/living_blocking_parrying.dm @@ -141,3 +141,15 @@ GLOBAL_LIST_EMPTY(block_parry_data) if(!div) return return total/div //groan + +/** + * Called every life tick to handle blocking/parrying effects. + */ +/mob/living/proc/handle_block_parry(seconds = 1) + if(active_blocking) + var/datum/block_parry_data/data = return_block_parry_datum(active_block_item.block_parry_data) + adjustStaminaLossBuffered(data.block_stamina_cost_per_second * seconds) + if(parrying) + if(!CHECK_MOBILITY(src, MOBILITY_USE)) + to_chat(src, "Your parry is interrupted!") + end_parry_sequence()