diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 10dca449fa..1104286f73 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -14,7 +14,7 @@ if(IS_STAMCRIT(L)) to_chat(L, "You are too exhausted to swing [src]!") return - if(!CHECK_MOBILITY(L, MOBILITY_USE)) + if(!CHECK_MOBILITY(L, MOBILITY_USE) && !(flags & ATTACKCHAIN_PARRY_COUNTERATTACK)) to_chat(L, "You are unable to swing [src] right now!") return if(tool_behaviour && target.tool_act(user, src, tool_behaviour)) diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index 9b9efe6f47..77be6cfd1b 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -309,11 +309,11 @@ var/total_mass_on = 3.4 /datum/block_parry_data/dual_esword - block_damage_absorption = 5 + block_damage_absorption = 2 block_damage_multiplier = 0.3 block_start_delay = 0 // instantaneous block - block_stamina_cost_per_second = 3 - block_stamina_efficiency = 2 + block_stamina_cost_per_second = 2 + block_stamina_efficiency = 3 // slowdown block_slowdown = 1 // no attacking while blocking @@ -329,7 +329,7 @@ parry_flags = PARRY_DEFAULT_HANDLE_FEEDBACK // esword users can attack while parrying. parry_time_perfect = 2 // first ds isn't perfect parry_time_perfect_leeway = 1 - parry_imperfect_falloff_percent = 20 + parry_imperfect_falloff_percent = 10 parry_efficiency_to_counterattack = 100 parry_efficiency_considered_successful = 25 // VERY generous parry_efficiency_perfect = 90 diff --git a/code/modules/mob/living/living_blocking_parrying.dm b/code/modules/mob/living/living_blocking_parrying.dm index 727fdba5d2..b97f5d2f20 100644 --- a/code/modules/mob/living/living_blocking_parrying.dm +++ b/code/modules/mob/living/living_blocking_parrying.dm @@ -159,6 +159,7 @@ GLOBAL_LIST_EMPTY(block_parry_data) return return total/div //groan + /** * Gets the percentage efficiency of our parry. * @@ -193,14 +194,20 @@ GLOBAL_LIST_EMPTY(block_parry_data) #define RENDER_ATTACK_TYPES(varname, desc) dat += "[#varname]
[desc]"; \ var/list/assembled__##varname = list(); \ for(var/bit in bitfield2list(varname)){ \ - assembled__##varname += "[GLOB.attack_type_names[num2text(bit)]]"; \ + var/name = GLOB.attack_type_names[num2text(bit)]; \ + if(name){ \ + assembled__##varname += "[name]"; \ + } \ } \ dat += "[english_list(assembled__##varname)]"; #define RENDER_BLOCK_DIRECTIONS(varname, desc) \ dat += "[#varname]
[desc]"; \ var/list/assembled__##varname = list(); \ for(var/bit in bitfield2list(varname)){ \ - assembled__##varname += "[GLOB.block_direction_names[num2text(bit)]]"; \ + var/name = GLOB.block_direction_names[num2text(bit)]; \ + if(name){ \ + assembled__##varname += "[name]"; \ + } \ } \ dat += "[english_list(assembled__##varname)]";