diff --git a/code/datums/actions/mobs/transform_weapon.dm b/code/datums/actions/mobs/transform_weapon.dm index b268fac6414..ae6a080d27f 100644 --- a/code/datums/actions/mobs/transform_weapon.dm +++ b/code/datums/actions/mobs/transform_weapon.dm @@ -18,10 +18,9 @@ /datum/action/cooldown/mob_cooldown/transform_weapon/proc/do_transform(atom/target) if(!istype(owner, /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner)) return - var/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/BDM = owner - var/obj/item/melee/cleaving_saw/miner/miner_saw = BDM.miner_saw - miner_saw.attack_self(owner) - var/saw_open = HAS_TRAIT(miner_saw, TRAIT_TRANSFORM_ACTIVE) - BDM.rapid_melee = saw_open ? 3 : 5 - BDM.icon_state = "miner[saw_open ? "_transformed":""]" - BDM.icon_living = "miner[saw_open ? "_transformed":""]" + var/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/blood_drunk_miner = owner + blood_drunk_miner.miner_saw.attack_self(owner) + var/saw_open = HAS_TRAIT(blood_drunk_miner.miner_saw, TRAIT_TRANSFORM_ACTIVE) + blood_drunk_miner.rapid_melee = saw_open ? 3 : 5 + blood_drunk_miner.icon_state = "miner[saw_open ? "_transformed":""]" + blood_drunk_miner.icon_living = "miner[saw_open ? "_transformed":""]" diff --git a/code/modules/mining/equipment/kinetic_crusher/trophies_fauna.dm b/code/modules/mining/equipment/kinetic_crusher/trophies_fauna.dm index 2f5e4b8302b..c8bc6404fdb 100644 --- a/code/modules/mining/equipment/kinetic_crusher/trophies_fauna.dm +++ b/code/modules/mining/equipment/kinetic_crusher/trophies_fauna.dm @@ -138,7 +138,7 @@ /obj/item/crusher_trophy/brimdemon_fang/on_mark_detonation(mob/living/target, mob/living/user) . = ..() - target.balloon_alert_to_viewers("[pick(comic_phrases)]!") + target.loc.balloon_alert_to_viewers("[pick(comic_phrases)]!") playsound(target, 'sound/mobs/non-humanoids/brimdemon/brimdemon_crush.ogg', 100) // Bileworm diff --git a/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon.dm b/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon.dm index e314fe152ca..968801a7188 100644 --- a/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon.dm +++ b/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon.dm @@ -43,6 +43,10 @@ beam.Grant(src) ai_controller.set_blackboard_key(BB_TARGETED_ACTION, beam) +/mob/living/basic/mining/brimdemon/Destroy(force) + QDEL_NULL(beam) + return ..() + /mob/living/basic/mining/brimdemon/RangedAttack(atom/target, modifiers) beam.Trigger(target = target) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm index 1af4234db35..4f07a92bec1 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm @@ -46,7 +46,6 @@ Difficulty: Medium achievement_type = /datum/award/achievement/boss/blood_miner_kill crusher_achievement_type = /datum/award/achievement/boss/blood_miner_crusher score_achievement_type = /datum/award/score/blood_miner_score - var/obj/item/melee/cleaving_saw/miner/miner_saw death_message = "falls to the ground, decaying into glowing particles." death_sound = SFX_BODYFALL footstep_type = FOOTSTEP_MOB_HEAVY @@ -61,10 +60,13 @@ Difficulty: Medium var/datum/action/cooldown/mob_cooldown/dash_attack/dash_attack /// Transform weapon ability var/datum/action/cooldown/mob_cooldown/transform_weapon/transform_weapon + /// Their little saw + var/obj/item/melee/cleaving_saw/miner/miner_saw /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/Initialize(mapload) . = ..() miner_saw = new(src) + RegisterSignal(miner_saw, COMSIG_PREQDELETED, PROC_REF(on_saw_deleted)) ADD_TRAIT(src, TRAIT_NO_FLOATING_ANIM, INNATE_TRAIT) dash = new /datum/action/cooldown/mob_cooldown/dash @@ -78,11 +80,20 @@ Difficulty: Medium AddComponent(/datum/component/boss_music, 'sound/music/boss/bdm_boss.ogg', 167 SECONDS) -/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/Destroy() +/// Block deletion of their saw under normal circumstances. It is fused to their hands as far as we're concerned. +/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/proc/on_saw_deleted(datum/source, force) + SIGNAL_HANDLER + + if(!force) + return TRUE + +/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/Destroy(force) dash = null kinetic_accelerator = null dash_attack = null transform_weapon = null + UnregisterSignal(miner_saw, COMSIG_PREQDELETED) // unblock deletion, we are dead. + QDEL_NULL(miner_saw) return ..() /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/OpenFire()