Zizzo wrote:
[sound F/X: source diving] I think I'd have to completely overload Map:displayEffects() and have it keep track of which effects it had drawn in which tiles.
[sound F/X: source diving] Hmm, now that I look at it, the computationally expensive ones like Corrosive Vapour use particles, which aren't managed in :displayEffects(). Basically, :addEffect() drops an individual particle emitter on each affected grid, and then :processEffects() removes them when the effect expires or moves. Hence the slowdown with overlapping effects, since you have multiple particle emitters running on each overlapping grid.
What this means, I think, is that I might be able to get away with hijacking Map:particleEmitter() and Map:removeParticleEmitter() to do a sort of "reference counting" — have only one vapour particle on a given grid, but keep track of how many are "supposed" to be there, so that removing it the right number of times will make it actually go away. That would probably be doable via superloading, which means I wouldn't have to break it out into a separate addon after all. Will probably need game options to control all these behaviors, though…
So for now, give me a little time to put something together and test it.
Doctornull wrote:
This is amazing and totally belongs in zOmnibus.
*blush* [bows] Yeah, in my internal list of addons and how suitable they're likely to be for inclusion in ZOmnibus and/or ZOmnibus Lite (whenever the next merge sweep ends up happening), this one is currently in the "probably good, but would maybe need a game option to turn it off" category.