diff --git a/SVSim.BattleEngine/COPIED.manifest.tsv b/SVSim.BattleEngine/COPIED.manifest.tsv index 66623dc..a48e2f9 100644 --- a/SVSim.BattleEngine/COPIED.manifest.tsv +++ b/SVSim.BattleEngine/COPIED.manifest.tsv @@ -62,7 +62,7 @@ BattleFinishToOpponentDisConnectChecker.cs BattleFinishToOpponentDisConnectCheck BattleKeywordInfoListMgr.cs BattleKeywordInfoListMgr.cs a014170d0b3f5499635bcc2e29755dc2f3125d5a5a28b1741a4abc74b4abcf86 0 BattleLifeTimeSharedObject.cs BattleLifeTimeSharedObject.cs ab8bc3703d268752a1de56ab5d3e9ebd276980c20076eb0ca300838b3db13d5f 0 BattleLogTextBuilderAttachSkill.cs BattleLogTextBuilderAttachSkill.cs 11c585ae931fa3dc734bb231d6da61df3b51b803516ca2c5d88a0c78bc7c0104 0 -BattleManagerBase.cs BattleManagerBase.cs b4181eac7af0ed578835ea75b7003e1b3466331006a35cd84b40139825680eb7 0 +BattleManagerBase.cs BattleManagerBase.cs 849737bd494e33221b9f8672f67a685ca2372d23fae11ad2e1cfb5406caa5750 1 BattleMenuMgr.cs BattleMenuMgr.cs 7418699063e01641d0df1ed16773a9ac9418f418cc047fc18c5892eb7971d361 0 BattlePlayer.cs BattlePlayer.cs 001409844b46ddaf0a5edbce4e015749ece61053adf725a978987d7063a02632 0 BattlePlayerBase.cs BattlePlayerBase.cs 9d3a665158706460a52900008dcfcdf575dbe08cb6d3cc05e63e718b2885b51b 0 diff --git a/SVSim.BattleEngine/Engine/BattleManagerBase.cs b/SVSim.BattleEngine/Engine/BattleManagerBase.cs index d6fa1d1..1b9bd0d 100644 --- a/SVSim.BattleEngine/Engine/BattleManagerBase.cs +++ b/SVSim.BattleEngine/Engine/BattleManagerBase.cs @@ -1583,7 +1583,7 @@ public class BattleManagerBase return (int)Math.Floor((double)val * randomResult); } - public double StableRandomDouble() + public virtual double StableRandomDouble() { if (IsForecast) { @@ -1594,7 +1594,7 @@ public class BattleManagerBase return randomResult; } - public int StableRandomOnlySelf(int val) + public virtual int StableRandomOnlySelf(int val) { if (IsForecast) { diff --git a/SVSim.BattleEngine/Patches/BattleManagerBase.rng-virtual.patch b/SVSim.BattleEngine/Patches/BattleManagerBase.rng-virtual.patch new file mode 100644 index 0000000..f5bdb8f --- /dev/null +++ b/SVSim.BattleEngine/Patches/BattleManagerBase.rng-virtual.patch @@ -0,0 +1,13 @@ +RNG seam (DP5): make StableRandomDouble() and StableRandomOnlySelf(int) `virtual` so the authored +HeadlessBattleMgr can override all three RNG methods to delegate to an injected IRandomSource +(StableRandom(int) is already virtual). This decouples the authoritative RNG roll from IsForecast's +VFX-suppression+RNG-zeroing (design 2026-06-06-rng-seam, finding F2). ZERO logic change — only the +`virtual` keyword is added; the method bodies are byte-for-byte the decomp. + +--- Engine/BattleManagerBase.cs (~line 1586) +- public double StableRandomDouble() ++ public virtual double StableRandomDouble() + +--- Engine/BattleManagerBase.cs (~line 1597) +- public int StableRandomOnlySelf(int val) ++ public virtual int StableRandomOnlySelf(int val)