Fixes a couple more mob-related hard dels + fixes a balloon alert race condition from brimdemon fang (#92498)

## About The Pull Request

Tin, some more hard dels that were found. Additionally there was a
balloon alert meant to display phrases like "Kapow!" "Bam!" etc but it
is runtiming before it can do so because the mob gets deleted before the
balloon alert gets displayed. (solution for these sorts of issues is to
display the balloon alert on the `loc` instead.

## Why It's Good For The Game

Less chug, and a bugfix.

## Changelog

Probably nothing worth mentioning
This commit is contained in:
Bloop
2025-08-15 08:58:11 -04:00
committed by GitHub
parent 0bd054538a
commit dd37687c59
4 changed files with 24 additions and 10 deletions

View File

@@ -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":""]"

View File

@@ -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

View File

@@ -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)

View File

@@ -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()