I’ve programmed a simulator to try to compare the effectiveness of various DoW scripts.
The core of it is an implementation of the DoW mechanics. The mechanics are actually quite complicated, and so after blundering about for a bit, I realized I would never have any confidence that I’d got them correctly unless I could unit test it all properly, which led two a two-stage process - when the simulator reveals two competitors’ actions, it produces a “resolution plan”.
Here is the resolution plan for Andy’s Point vs. Joe’s Avoid:
[com.trilemma.bw.scripting.VsTest@32f88377[
tester=Andy
testerPool=4D
target=Joe
targetPool=5D
meet=[]
exceed=[Joe loses MoS dispo]
fail=[]
]]
Andy rolls 4D against Joe’s 5D, who will lose dispo equal to Andy’s MoS.
Here is the (more complicated) resolution plan for Andy’s Dismiss vs. Joe’s Rebuttal:
[com.trilemma.bw.scripting.StdTest@7b3aa36a[
tester=Joe
testerPool=2D
target=Andy
ob=0
meet=[]
exceed=[Andy loses MoS dispo]
fail=[]
], com.trilemma.bw.scripting.VsTest@7166c37e[
tester=Andy
testerPool=6D
target=Joe
targetPool=3D
meet=[]
exceed=[Joe loses MoS dispo]
fail=[]
], com.trilemma.bw.scripting.HesitateNext@2b76fbc2[
target=Andy
]]
There are three effects happening independently - Andy’s 4D+2D Dismiss against Joe’s 3D defensive rebuttal; Joe’s offensive 2D against Ob 0; Andy hesitating next round whatever else happens.
Joe’s Obfuscate vs. Andy’s Rebuttal is also fun:
[com.trilemma.bw.scripting.VsTest@68b0019f[
tester=Joe
testerPool=5D
target=Andy
targetPool=2D
meet=[]
exceed=[Andy +1 Ob]
fail=[Andy +1D,
com.trilemma.bw.scripting.StdTest@7166c37e[
ob=0
tester=Andy
target=Joe
testerPool=2D
meet=[]
exceed=[Joe loses MoS dispo]
fail=[]
]]
]]
Joe tests 5D vs. Andy’s defensive 2D. If Joe succeeds, Andy’s at +1 Ob to his next action. If Joe fails, Andy’s at +1D next volley. In addition, Andy gets to resolve his offensive dice, 2D vs. Ob 0, with Joe losing Mos dispo.