@@ -763,7 +763,11 @@ class ParticleSystemManager : public SubsystemInterface,
763763 ParticleSystemTemplate *newTemplate ( const AsciiString &name );
764764
765765 // / given a template, instantiate a particle system
766- ParticleSystem *createParticleSystem ( const ParticleSystemTemplate *sysTemplate, Bool createSlaves = TRUE );
766+ #if RETAIL_COMPATIBLE_CRC
767+ virtual ParticleSystem *createParticleSystem ( const ParticleSystemTemplate *sysTemplate, Bool createSlaves = TRUE );
768+ #else
769+ ParticleSystem* createParticleSystem (const ParticleSystemTemplate* sysTemplate, Bool createSlaves = TRUE );
770+ #endif
767771
768772 /* * given a template, instantiate a particle system.
769773 if attachTo is not null, attach the particle system to the given object.
@@ -839,11 +843,15 @@ class ParticleSystemManager : public SubsystemInterface,
839843
840844// TheSuperHackers @feature bobtista 31/01/2026
841845// ParticleSystemManager that does nothing. Used for Headless Mode.
842- // Generally does not load particle system templates. Certainly does not create particle systems.
846+ // Does not load particle system templates and does not create particle systems.
843847class ParticleSystemManagerDummy : public ParticleSystemManager
844848{
845849public:
846850#if RETAIL_COMPATIBLE_CRC
851+ // The creation of particle systems needs to be handled explicitly,
852+ // because they're not destroyed in the update function anymore.
853+ virtual ParticleSystem* createParticleSystem (const ParticleSystemTemplate* sysTemplate, Bool createSlaves = TRUE ) override { return nullptr ; }
854+
847855 // Must not overload init to keep loading the particle system templates,
848856 // which are unfortunately needed to preserve the correct logic crc.
849857#else
0 commit comments