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