The role of the limited processing flag on skills is to prevent infinite recursion loops that eventually cause a crash. The problem is that due to calcs.initEnv re-generating activeSkillList the flag is lost. This causes issues when there are more than one skill requiring such as flag as the application of the flag will alternate allowing for infinite recursion.
The proposed solution moves the flags from skills to a table in the root of the env table allowing for easier copying and querying of the flags deeper into the call stack. This solution is not ideal as preventing the recalculation of the activeSkillList would greatly speed things up but due to many data dependencies i have not found a good way to achieve that.
Fixes #8136
Description of the problem being solved:
The role of the limited processing flag on skills is to prevent infinite recursion loops that eventually cause a crash. The problem is that due to
calcs.initEnv
re-generatingactiveSkillList
the flag is lost. This causes issues when there are more than one skill requiring such as flag as the application of the flag will alternate allowing for infinite recursion.The proposed solution moves the flags from skills to a table in the root of the env table allowing for easier copying and querying of the flags deeper into the call stack. This solution is not ideal as preventing the recalculation of the
activeSkillList
would greatly speed things up but due to many data dependencies i have not found a good way to achieve that.Steps taken to verify a working solution: