Tests assert that for Type=Pvp, A's InitBattle gets Matched with A's ctx as selfInfo and B's ctx as oppoInfo, and symmetrically for B. Same for Loaded/BattleStart. Swap stays per-sender (each runs their own mulligan).
Tests assert that for Type=Pvp, A's InitBattle gets Matched with A's ctx as selfInfo and B's ctx as oppoInfo, and symmetrically for B. Same for Loaded/BattleStart. Swap stays per-sender (each runs their own mulligan).