diff --git a/code/modules/mod/mod_core.dm b/code/modules/mod/mod_core.dm index caf162c9c41..ab5cc6ef9aa 100644 --- a/code/modules/mod/mod_core.dm +++ b/code/modules/mod/mod_core.dm @@ -466,6 +466,7 @@ /obj/item/mod/core/plasma/lavaland/Destroy() QDEL_NULL(particle_effect) + QDEL_NULL(mob_spawner) return ..() /obj/item/mod/core/plasma/lavaland/install(obj/item/mod/control/mod_unit) @@ -480,17 +481,22 @@ SIGNAL_HANDLER if(mod.active) particle_effect = new(mod.wearer, /particles/pollen, PARTICLE_ATTACH_MOB) - mob_spawner = mod.wearer.AddComponent(/datum/component/spawner, spawn_types=list(spawned_mob_type), spawn_time=5 SECONDS, max_spawned=3, faction=mod.wearer.faction) + mob_spawner = mod.wearer.AddComponent(/datum/component/spawner, \ + spawn_types = list(spawned_mob_type), \ + spawn_time = 5 SECONDS, \ + max_spawned = 3, \ + faction = mod.wearer.faction, \ + ) RegisterSignal(mob_spawner, COMSIG_SPAWNER_SPAWNED, PROC_REF(new_mob)) RegisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED, PROC_REF(spread_flowers)) + return - else - QDEL_NULL(particle_effect) - UnregisterSignal(mob_spawner, COMSIG_SPAWNER_SPAWNED) - UnregisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED) - for(var/datum/mob in mob_spawner.spawned_things) - qdel(mob) - qdel(mob_spawner) + QDEL_NULL(particle_effect) + UnregisterSignal(mob_spawner, COMSIG_SPAWNER_SPAWNED) + UnregisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED) + for(var/datum/mob in mob_spawner.spawned_things) + qdel(mob) + QDEL_NULL(mob_spawner) /obj/item/mod/core/plasma/lavaland/proc/new_mob(spawner, mob/living/basic/butterfly/lavaland/temporary/spawned) SIGNAL_HANDLER @@ -499,6 +505,9 @@ /obj/item/mod/core/plasma/lavaland/proc/spread_flowers(atom/source, atom/oldloc, dir, forced) SIGNAL_HANDLER + if (!isturf(oldloc)) + return + var/static/list/possible_flower_types = list( /obj/structure/flora/bush/lavendergrass/style_random, /obj/structure/flora/bush/flowers_yw/style_random, @@ -506,7 +515,7 @@ /obj/structure/flora/bush/flowers_pp/style_random, ) var/chosen_type = pick(possible_flower_types) - var/flower_boots = new chosen_type(get_turf(mod.wearer)) + var/flower_boots = new chosen_type(oldloc) animate(flower_boots, alpha = 0, 1 SECONDS) QDEL_IN(flower_boots, 1 SECONDS)