diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm index 07ab3a3ce3e..15881915ed5 100644 --- a/code/modules/mining/equipment/kinetic_crusher.dm +++ b/code/modules/mining/equipment/kinetic_crusher.dm @@ -57,7 +57,7 @@ /obj/item/kinetic_crusher/examine(mob/living/user) . = ..() - . += span_notice("Mark a large creature with the destabilizing force, then hit them in melee to do [force + detonation_damage] damage.") + . += span_notice("Mark a large creature with a destabilizing force with right-click, then hit them in melee to do [force + detonation_damage] damage.") . += span_notice("Does [force + detonation_damage + backstab_bonus] damage if the target is backstabbed, instead of [force + detonation_damage].") for(var/t in trophies) var/obj/item/crusher_trophy/T = t @@ -97,27 +97,6 @@ C.total_damage += target_health - target.health //we did some damage, but let's not assume how much we did /obj/item/kinetic_crusher/afterattack(atom/target, mob/living/user, proximity_flag, clickparams) - . = ..() - var/modifiers = params2list(clickparams) - if(!wielded) - return - if(!proximity_flag && charged)//Mark a target, or mine a tile. - var/turf/proj_turf = user.loc - if(!isturf(proj_turf)) - return - var/obj/projectile/destabilizer/D = new /obj/projectile/destabilizer(proj_turf) - for(var/t in trophies) - var/obj/item/crusher_trophy/T = t - T.on_projectile_fire(D, user) - D.preparePixelProjectile(target, user, modifiers) - D.firer = user - D.hammer_synced = src - playsound(user, 'sound/weapons/plasma_cutter.ogg', 100, TRUE) - D.fire() - charged = FALSE - update_appearance() - addtimer(CALLBACK(src, .proc/Recharge), charge_time) - return if(proximity_flag && isliving(target)) var/mob/living/L = target var/datum/status_effect/crusher_mark/CM = L.has_status_effect(/datum/status_effect/crusher_mark) @@ -146,6 +125,39 @@ C.total_damage += detonation_damage L.apply_damage(detonation_damage, BRUTE, blocked = def_check) +/obj/item/kinetic_crusher/attack_secondary(atom/target, mob/living/user, clickparams) + return SECONDARY_ATTACK_CONTINUE_CHAIN + +/obj/item/kinetic_crusher/afterattack_secondary(atom/target, mob/living/user, clickparams) + if(!wielded) + balloon_alert(user, "wield it first!") + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + if(target == user) + balloon_alert(user, "can't aim at yourself!") + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + fire_kinetic_blast(target, user, clickparams) + user.changeNext_move(CLICK_CD_MELEE) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + +/obj/item/kinetic_crusher/proc/fire_kinetic_blast(atom/target, mob/living/user, clickparams) + if(!charged) + return + var/modifiers = params2list(clickparams) + var/turf/proj_turf = user.loc + if(!isturf(proj_turf)) + return + var/obj/projectile/destabilizer/destabilizer = new(proj_turf) + for(var/obj/item/crusher_trophy/attached_trophy as anything in trophies) + attached_trophy.on_projectile_fire(destabilizer, user) + destabilizer.preparePixelProjectile(target, user, modifiers) + destabilizer.firer = user + destabilizer.hammer_synced = src + playsound(user, 'sound/weapons/plasma_cutter.ogg', 100, TRUE) + destabilizer.fire() + charged = FALSE + update_appearance() + addtimer(CALLBACK(src, .proc/Recharge), charge_time) + /obj/item/kinetic_crusher/proc/Recharge() if(!charged) charged = TRUE