02-24-2021, 04:44 PM
(This post was last modified: 02-24-2021, 04:46 PM by dale walton.)
Take it as referring to exception traces to the status window when the AI is playing. You know your code and why those traces are there. And I am assuming that they are there so that we can tell you when we see them...
As to the other bugs (post#1). It looks like you won't have time to figure out what they are, and I have worked around them but when I have time aand think about it again, I'll try to send you a clear tested sample.
Basically I'm saying that (and (moveA) (moveB) (then (consequence))) executes the consequence twice, but the (then consequence) should be independent and occur after both moves A & B have finished.
In comparison: -- With (or) if internally you translate that as moveA+then OR moveB+then it is OK,
but it is NOT OK to translate when using (and), to MoveA+then AND moveB+then, precisely because the results of the (consequence) would occur twice with potentially different values at the same time! Both legs of the (and) must first be completed, before a consequence can be applied, as the consequence could independently depend on both of the legs..
If the system can't handle this, you need to remove (then) as an allowed part of (and) in the documentation. - But it would be useful if it worked.
As to the other bugs (post#1). It looks like you won't have time to figure out what they are, and I have worked around them but when I have time aand think about it again, I'll try to send you a clear tested sample.
Basically I'm saying that (and (moveA) (moveB) (then (consequence))) executes the consequence twice, but the (then consequence) should be independent and occur after both moves A & B have finished.
In comparison: -- With (or) if internally you translate that as moveA+then OR moveB+then it is OK,
but it is NOT OK to translate when using (and), to MoveA+then AND moveB+then, precisely because the results of the (consequence) would occur twice with potentially different values at the same time! Both legs of the (and) must first be completed, before a consequence can be applied, as the consequence could independently depend on both of the legs..
If the system can't handle this, you need to remove (then) as an allowed part of (and) in the documentation. - But it would be useful if it worked.