diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index 1bdfe61f73..ffb7164e58 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -301,22 +301,37 @@ var/total_mass_on = 3.4 /datum/block_parry_data/dual_esword + block_damage_absorption = 5 + block_damage_multiplier = 0.3 + block_start_delay = 0 // instantaneous block + block_stamina_cost_per_second = 6 + block_stamina_efficiency = 2 + // slowdown + block_slowdown = 1 + // more efficient vs projectiles + block_stamina_efficiency_override = list( + "[ATTACK_TYPE_PROJECTILE]" = 4 + ) + // no attacking while blocking + block_lock_attacking = TRUE + parry_time_windup = 0 - parry_time_active = 40 + parry_time_active = 8 parry_time_spindown = 0 // we want to signal to players the most dangerous phase, the time when automatic counterattack is a thing. parry_time_windup_visual_override = 1 - parry_time_active_visual_override = 7 - parry_time_spindown_visual_override = 12 + parry_time_active_visual_override = 3 + parry_time_spindown_visual_override = 4 parry_flags = PARRY_DEFAULT_HANDLE_FEEDBACK // esword users can attack while parrying. - parry_time_perfect = 3 // first ds isn't perfect - parry_time_perfect_leeway = 2 - parry_imperfect_falloff_percent = 3.5 + parry_time_perfect = 2 // first ds isn't perfect + parry_time_perfect_leeway = 1 + parry_imperfect_falloff_percent = 20 parry_efficiency_to_counterattack = 100 - parry_efficiency_considered_successful = 65 // VERY generous - parry_efficiency_perfect = 100 - parry_failed_stagger_duration = 4 SECONDS - parry_cooldown = 1 SECONDS + parry_efficiency_considered_successful = 25 // VERY generous + parry_efficiency_perfect = 90 + parry_failed_stagger_duration = 3 SECONDS + parry_failed_clickcd_duration = CLICK_CD_MELEE + parry_cooldown = 3 SECONDS /obj/item/twohanded/dualsaber/suicide_act(mob/living/carbon/user) if(wielded) diff --git a/code/modules/mob/living/living_active_block.dm b/code/modules/mob/living/living_active_block.dm index 956b217f82..6472277b0b 100644 --- a/code/modules/mob/living/living_active_block.dm +++ b/code/modules/mob/living/living_active_block.dm @@ -1,9 +1,4 @@ // Active directional block system. Shared code is in [living_blocking_parrying.dm] -/mob/living/on_item_dropped(obj/item/I) - if(I == active_block_item) - stop_active_blocking() - return ..() - /mob/living/proc/stop_active_blocking(was_forced = FALSE) if(!(combat_flags & (COMBAT_FLAG_ACTIVE_BLOCK_STARTING | COMBAT_FLAG_ACTIVE_BLOCKING))) return FALSE diff --git a/code/modules/mob/living/living_blocking_parrying.dm b/code/modules/mob/living/living_blocking_parrying.dm index 3ae82dcd39..e96cfab1f9 100644 --- a/code/modules/mob/living/living_blocking_parrying.dm +++ b/code/modules/mob/living/living_blocking_parrying.dm @@ -43,7 +43,7 @@ GLOBAL_LIST_EMPTY(block_parry_data) /// Override absorption, list("[ATTACK_TYPE_DEFINE]" = absorption), see [block_damage_absorption] var/list/block_damage_absorption_override - /// Ratio of damage block above absorption amount, coefficient, lower is better, this is multiplied by damage to determine how much is blocked. + /// Ratio of damage to allow through above absorption and below limit. Multiplied by damage to determine how much to let through. Lower is better. var/block_damage_multiplier = 0.5 /// Override damage overrun efficiency, list("[ATTACK_TYPE_DEFINE]" = absorption), see [block_damage_efficiency] var/list/block_damage_multiplier_override @@ -170,3 +170,10 @@ GLOBAL_LIST_EMPTY(block_parry_data) if(!CHECK_MOBILITY(src, MOBILITY_USE)) to_chat(src, "Your parry is interrupted!") end_parry_sequence() + +/mob/living/on_item_dropped(obj/item/I) + if(I == active_block_item) + stop_active_blocking() + if(I == active_parry_item)) + end_parry_sequence() + return ..()