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) /datum/action/cooldown/mob_cooldown/transform_weapon/proc/do_transform(atom/target)
if(!istype(owner, /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner)) if(!istype(owner, /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner))
return return
var/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/BDM = owner var/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/blood_drunk_miner = owner
var/obj/item/melee/cleaving_saw/miner/miner_saw = BDM.miner_saw blood_drunk_miner.miner_saw.attack_self(owner)
miner_saw.attack_self(owner) var/saw_open = HAS_TRAIT(blood_drunk_miner.miner_saw, TRAIT_TRANSFORM_ACTIVE)
var/saw_open = HAS_TRAIT(miner_saw, TRAIT_TRANSFORM_ACTIVE) blood_drunk_miner.rapid_melee = saw_open ? 3 : 5
BDM.rapid_melee = saw_open ? 3 : 5 blood_drunk_miner.icon_state = "miner[saw_open ? "_transformed":""]"
BDM.icon_state = "miner[saw_open ? "_transformed":""]" blood_drunk_miner.icon_living = "miner[saw_open ? "_transformed":""]"
BDM.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) /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) playsound(target, 'sound/mobs/non-humanoids/brimdemon/brimdemon_crush.ogg', 100)
// Bileworm // Bileworm

View File

@@ -43,6 +43,10 @@
beam.Grant(src) beam.Grant(src)
ai_controller.set_blackboard_key(BB_TARGETED_ACTION, beam) 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) /mob/living/basic/mining/brimdemon/RangedAttack(atom/target, modifiers)
beam.Trigger(target = target) beam.Trigger(target = target)

View File

@@ -46,7 +46,6 @@ Difficulty: Medium
achievement_type = /datum/award/achievement/boss/blood_miner_kill achievement_type = /datum/award/achievement/boss/blood_miner_kill
crusher_achievement_type = /datum/award/achievement/boss/blood_miner_crusher crusher_achievement_type = /datum/award/achievement/boss/blood_miner_crusher
score_achievement_type = /datum/award/score/blood_miner_score 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_message = "falls to the ground, decaying into glowing particles."
death_sound = SFX_BODYFALL death_sound = SFX_BODYFALL
footstep_type = FOOTSTEP_MOB_HEAVY footstep_type = FOOTSTEP_MOB_HEAVY
@@ -61,10 +60,13 @@ Difficulty: Medium
var/datum/action/cooldown/mob_cooldown/dash_attack/dash_attack var/datum/action/cooldown/mob_cooldown/dash_attack/dash_attack
/// Transform weapon ability /// Transform weapon ability
var/datum/action/cooldown/mob_cooldown/transform_weapon/transform_weapon 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) /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/Initialize(mapload)
. = ..() . = ..()
miner_saw = new(src) miner_saw = new(src)
RegisterSignal(miner_saw, COMSIG_PREQDELETED, PROC_REF(on_saw_deleted))
ADD_TRAIT(src, TRAIT_NO_FLOATING_ANIM, INNATE_TRAIT) ADD_TRAIT(src, TRAIT_NO_FLOATING_ANIM, INNATE_TRAIT)
dash = new /datum/action/cooldown/mob_cooldown/dash 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) 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 dash = null
kinetic_accelerator = null kinetic_accelerator = null
dash_attack = null dash_attack = null
transform_weapon = null transform_weapon = null
UnregisterSignal(miner_saw, COMSIG_PREQDELETED) // unblock deletion, we are dead.
QDEL_NULL(miner_saw)
return ..() return ..()
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/OpenFire() /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/OpenFire()