mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-30 02:52:30 +00:00
## About The Pull Request Chem smoke asks the smoke subsystem to cancel its spread, if it's qdel'd or otherwise reaches the end of its lifetime before it finishes spreading. However, an error in how chem smoke was coded causes it to queue spreading with the *foam* subsystem, rather than the *smoke* subsystem. This causes a runtime in SSsmoke, as it attempts to index into the spread carousel at a bucket index that was returned from SSfoam. This runtime actually happens spuriously during CI over on Monkestation. However, I only started noticing it because it kept appearing in failed runs on my fork - where I have the "Rerun flaky tests" workflow disabled. I was able to replicate the runtime locally, whilst debugging it on the Monkestation fork: 1. Tag any turf as the place to spawn the smoke at (I chose one right next to a door) 2. Use Debug -> Advanced ProcCall to spawn in chem smoke with a high range (`/proc/do_chem_smoke`, `range` = 10, `location` = the tagged turf) (Technically speaking, the high range isn't needed, but it makes it easier to trigger the runtime.) 3. Wait some time (I found that around 12 seconds worked on my machine, when using `range = 10`) 4. Do something to make the chem smoke start spreading (opening a door works) 5. Wait - if the chem smoke is still spreading when its lifetime is up, it will cancel its spread - and in turn, trigger the runtime. Following these same steps after the change in this PR seems to show that this fixes the runtime. ## Why It's Good For The Game Less runtimes = More gooder ## Changelog No player-facing changes.