These are some reasons I felt the need to write a replacement:
- Effects that affect the same state cannot be combined - In playereffects, whenever a new effect would conflict with an existing effect on a player, the old effect is canceled before the new one is applied. This makes it impossible to e.g. have a weak but long-lasting effect come back into effect after a short, strong effect runs out, or to have speed multipliers multiply together, etc.
- No support for permanent effects - A player might have something that gives them a permanent boost, like an ability that makes them faster. This should be handled in the same effect framework, so that it is possible to have permanent and temporary modifications to player state coexist. Permanent effects would also allow privilege granting/revoking to work in the same framework, if the commands were overridden to use it.
- Effects cannot change while in effect - This is related to the above. If an effect is permanent, it might represent something like a player stat. In that case, you would want to be able to change it in case it changes.
- Effects cannot be tagged for searching - For magical_realm, I wanted to be able to write a dispel spell that only dispels magical effects. It would be nice to be able to tag effects as "magical" and then cancel all of them. This could currently be done if I registered all magical effects separately in some table, though.
What I decided to do was to write my own effects framework that is flexible enough to cover these use cases. I have a tentative API viewable at https://github.com/raymoo/monoidal_effe ... er/API.txt . The implementation is not done, but I already see how I would do it.
Regardless of popularity, I will probably still write it to use in my own mods, but how much interest is there in such a system, and what features would make it easier to adopt?