diff --git a/code/modules/mob/living/living_active_block.dm b/code/modules/mob/living/living_active_block.dm index 4560b33bdb..e1b90716b6 100644 --- a/code/modules/mob/living/living_active_block.dm +++ b/code/modules/mob/living/living_active_block.dm @@ -81,11 +81,6 @@ if(!(combat_flags & COMBAT_FLAG_BLOCK_CAPABLE)) to_chat(src, "You're not something that can actively block.") return FALSE - // QOL: Attempt to toggle on combat mode if it isn't already - SEND_SIGNAL(src, COMSIG_ENABLE_COMBAT_MODE) - if(!SEND_SIGNAL(src, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_ACTIVE)) - to_chat(src, "You must be in combat mode to actively block!") - return FALSE // QOL: Instead of trying to just block with held item, grab first available item. var/obj/item/I = find_active_block_item() if(!I) @@ -94,6 +89,11 @@ if(!I.can_active_block()) to_chat(src, "[I] is either not capable of being used to actively block, or is not currently in a state that can! (Try wielding it if it's twohanded, for example.)") return + // QOL: Attempt to toggle on combat mode if it isn't already + SEND_SIGNAL(src, COMSIG_ENABLE_COMBAT_MODE) + if(!SEND_SIGNAL(src, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_ACTIVE)) + to_chat(src, "You must be in combat mode to actively block!") + return FALSE var/datum/block_parry_data/data = I.get_block_parry_data() var/delay = data.block_start_delay combat_flags |= COMBAT_FLAG_ACTIVE_BLOCK_STARTING @@ -111,9 +111,8 @@ */ /mob/living/proc/find_active_block_item() var/obj/item/held = get_active_held_item() - if(!held.can_active_block()) - for(var/i in held_items - held) - var/obj/item/I = i + if(!held?.can_active_block()) + for(var/obj/item/I in held_items - held) if(I.can_active_block()) return I return held diff --git a/code/modules/mob/living/living_active_parry.dm b/code/modules/mob/living/living_active_parry.dm index 6ae83c5647..50b51d4d95 100644 --- a/code/modules/mob/living/living_active_parry.dm +++ b/code/modules/mob/living/living_active_parry.dm @@ -20,17 +20,12 @@ if(!(combat_flags & COMBAT_FLAG_PARRY_CAPABLE)) to_chat(src, "You are not something that can parry attacks.") return - //QOL: Try to enable combat mode if it isn't already - SEND_SIGNAL(src, COMSIG_ENABLE_COMBAT_MODE) - 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 var/obj/item/using_item = get_active_held_item() + var/datum/block_parry_data/data var/method - if(using_item.can_active_parry()) + if(using_item?.can_active_parry()) data = using_item.block_parry_data method = ITEM_PARRY else if(mind?.martial_art?.can_martial_parry) @@ -48,6 +43,11 @@ data = backup.block_parry_data using_item = backup method = ITEM_PARRY + //QOL: Try to enable combat mode if it isn't already + SEND_SIGNAL(src, COMSIG_ENABLE_COMBAT_MODE) + if(!SEND_SIGNAL(src, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_ACTIVE)) + to_chat(src, "You must be in combat mode to parry!") + return FALSE data = return_block_parry_datum(data) var/full_parry_duration = data.parry_time_windup + data.parry_time_active + data.parry_time_spindown // no system in place to "fallback" if out of the 3 the top priority one can't parry due to constraints but something else can. @@ -75,8 +75,7 @@ * Does not look at active held item. */ /mob/living/proc/find_backup_parry_item() - for(var/i in held_items - get_active_held_item()) - var/obj/item/I = i + for(var/obj/item/I in held_items - get_active_held_item()) if(I.can_active_parry()) return I