Makes fire overlay properly mask when using mining sphere MODule (#96578)

## About The Pull Request

Currently the overlay doesn't get masked as it is KEEP_APART and you end
up with a janky fire blender visual

<img width="141" height="129" alt="dreamseeker_NyvaUAPHnw"
src="https://github.com/user-attachments/assets/d50a7e57-9236-4c71-a186-6b34b3deb126"
/>

(Overlay update delay has been fixed after recording)
Not cached because its a single mob and the cost of updating said
overlay is minimal

## Changelog
🆑
fix: Made fire overlay properly mask when using mining sphere MODule
/🆑
This commit is contained in:
SmArtKar
2026-06-19 19:44:04 +02:00
committed by GitHub
parent 9984fa899a
commit c9edd15f2c
3 changed files with 34 additions and 9 deletions
+16 -1
View File
@@ -658,6 +658,8 @@
mod.wearer.add_movespeed_mod_immunities(REF(src), /datum/movespeed_modifier/damage_slowdown)
mod.wearer.add_movespeed_modifier(/datum/movespeed_modifier/sphere)
RegisterSignal(mod.wearer, COMSIG_MOB_STATCHANGE, PROC_REF(on_statchange))
RegisterSignal(mod.wearer, COMSIG_CARBON_GET_FIRE_OVERLAY, PROC_REF(replace_fire_overlay))
mod.wearer.update_appearance(UPDATE_ICON)
for(var/obj/item/part as anything in mod.get_parts(all = TRUE))
part.set_armor(part.get_armor().add_other_armor(armor_mod))
@@ -672,10 +674,23 @@
mod.wearer.RemoveElement(/datum/element/footstep, FOOTSTEP_OBJ_ROBOT, 1, -6, sound_vary = TRUE)
mod.wearer.AddElement(/datum/element/footstep, FOOTSTEP_MOB_HUMAN, 1, -6)
mod.wearer.remove_movespeed_modifier(/datum/movespeed_modifier/sphere)
UnregisterSignal(mod.wearer, COMSIG_MOB_STATCHANGE)
UnregisterSignal(mod.wearer, list(COMSIG_MOB_STATCHANGE, COMSIG_CARBON_GET_FIRE_OVERLAY))
mod.wearer.update_appearance(UPDATE_ICON)
for(var/obj/item/part as anything in mod.get_parts(all = TRUE))
part.set_armor(part.get_armor().subtract_other_armor(armor_mod))
/obj/item/mod/module/sphere_transform/proc/replace_fire_overlay(datum/source, stacks, on_fire, fire_icon, list/overrides)
SIGNAL_HANDLER
var/mutable_appearance/fire_overlay = mutable_appearance(
'icons/mob/effects/onfire.dmi',
fire_icon,
-HIGHEST_LAYER,
appearance_flags = RESET_COLOR|KEEP_APART,
)
fire_overlay.add_filter("mod_ball", 1, alpha_mask_filter(icon = icon('icons/mob/clothing/modsuit/mod_modules.dmi', "ball_mask"), flags = MASK_INVERSE))
overrides += fire_overlay
/obj/item/mod/module/sphere_transform/used(mob/activator)
if(!lavaland_equipment_pressure_check(get_turf(src)))
balloon_alert(activator, "too much pressure!")