diff --git a/code/modules/mob/living/living_active_block.dm b/code/modules/mob/living/living_active_block.dm index d96e6fb10a..c0d62f3a49 100644 --- a/code/modules/mob/living/living_active_block.dm +++ b/code/modules/mob/living/living_active_block.dm @@ -40,9 +40,13 @@ /// Visual effect setup for starting a directional block /mob/living/proc/active_block_effect_start() + visible_message("[src] raises their [active_block_item], dropping into a defensive stance!") + animate(src, pixel_x = get_standard_pixel_x_offset(), pixel_y = get_standard_pixel_y_offset(), time = 2.5, FALSE, SINE_EASING | EASE_OUT) /// Visual effect cleanup for starting a directional block /mob/living/proc/active_block_effect_end() + visible_message("[src] lowers their [active_block_item].") + animate(src, pixel_x = get_standard_pixel_x_offset(), pixel_y = get_standard_pixel_y_offset(), time = 2.5, FALSE, SINE_EASING | EASE_IN) /mob/living/get_standard_pixel_x_offset() . = ..() @@ -62,7 +66,7 @@ /// The amount of damage that is blocked. /obj/item/proc/active_block_damage_mitigation(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) - var/datum/block_parry_data/data = get_block_parry_data(I.block_parry_data) + var/datum/block_parry_data/data = get_block_parry_data(block_parry_data) var/absorption = data.block_damage_absorption_override[attack_type] var/efficiency = data.block_damage_multiplier_override[attack_type] var/limit = data.block_damage_limit_override[attack_type] @@ -87,7 +91,7 @@ /// Amount of stamina from damage blocked. Note that the damage argument is damage_blocked. /obj/item/proc/active_block_stamina_cost(mob/living/owner, atom/object, damage_blocked, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) - var/datum/block_parry_data/data = get_block_parry_data(I.block_parry_data) + var/datum/block_parry_data/data = get_block_parry_data(block_parry_data) var/efficiency = data.block_stamina_efficiency_override[attack_type] if(isnull(efficiency)) efficiency = data.block_stamina_efficiency @@ -95,7 +99,7 @@ /// Apply the stamina damage to our user, notice how damage argument is stamina_amount. /obj/item/proc/active_block_do_stamina_damage(mob/living/owner, atom/object, stamina_amount, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) - var/datum/block_parry_data/data = get_block_parry_data(I.block_parry_data) + var/datum/block_parry_data/data = get_block_parry_data(block_parry_data) if(iscarbon(owner)) var/mob/living/carbon/C = owner var/held_index = C.get_held_index_of_item(src) @@ -121,6 +125,7 @@ var/incoming_direction = get_dir(get_turf(attacker) || get_turf(object), src) if(!can_block_direction(owner.dir, incoming_direction)) return + var/datum/block_parry_data/data = get_block_parry_data(block_parry_data) block_return[BLOCK_RETURN_ACTIVE_BLOCK] = TRUE var/damage_mitigated = active_block_damage_mitigation(owner, object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, final_block_chance, block_return) var/final_damage = max(0, damage - damage_mitigated) @@ -134,6 +139,8 @@ owner.visible_message("[owner] blocks \the [attack_text] with [src]!") else owner.visible_message("[owner] dampens \the [attack_text] with [src]!") + if(length(data.block_sounds)) + playsound(loc, pickweight(data.block_sounds), 75, TRUE) /obj/item/proc/check_active_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) if(!CHECK_BITFIELD(item_flags, ITEM_CAN_BLOCK)) @@ -148,7 +155,7 @@ * Gets the list of directions we can block. Include DOWN to block attacks from our same tile. */ /obj/item/proc/blockable_directions() - var/datum/block_parry_data/data = get_block_parry_data(I.block_parry_data) + var/datum/block_parry_data/data = get_block_parry_data(block_parry_data) return data.can_block_directions /** diff --git a/code/modules/mob/living/living_blocking_parrying.dm b/code/modules/mob/living/living_blocking_parrying.dm index 9c9c72bfab..eb722973f0 100644 --- a/code/modules/mob/living/living_blocking_parrying.dm +++ b/code/modules/mob/living/living_blocking_parrying.dm @@ -79,6 +79,9 @@ GLOBAL_LIST_EMPTY(block_parry_data) /// Stamina dealt directly via adjustStaminaLossBuffered() per SECOND of block. var/block_stamina_cost_per_second = 1.5 + /// Sounds for blocking + var/list/block_sounds = list('sound/block_parry/block_metal1.ogg' = 1, 'sound/block_parry/block_metal1.ogg' = 1) + /////////// PARRYING //////////// /// Prioriry for [mob/do_run_block()] while we're being used to parry. // None - Parry is always highest priority! diff --git a/sound/block_parry/block_metal1.ogg b/sound/block_parry/block_metal1.ogg new file mode 100644 index 0000000000..c0f98249cd Binary files /dev/null and b/sound/block_parry/block_metal1.ogg differ diff --git a/sound/block_parry/block_metal2.ogg b/sound/block_parry/block_metal2.ogg new file mode 100644 index 0000000000..58c1233cea Binary files /dev/null and b/sound/block_parry/block_metal2.ogg differ diff --git a/sound/block_parry/sfx-parry.ogg b/sound/block_parry/sfx-parry.ogg new file mode 100644 index 0000000000..3429031bd9 Binary files /dev/null and b/sound/block_parry/sfx-parry.ogg differ