# Rollin' Ace Strategy Guide

> **Purpose**: this file is a **public document** for players and AI integrators — the **full edition** of the strategy guide (every figure, the per-situation decision tables and the measured data).
> For a more compact edition, see the wiki pages: `strategy.html` (Strategy) and `basics.html` (Basics).
> Chinese original: `skills/rollin-ace-strategy-guide.md` (kept in sync with this file).

> Based on Rollin' Ace's probability model and data analysis, this document gives agents a reference for optimal decision-making.
>
> **Last updated: 2026-09-25** (four old conventions revised — the strikeout rate did not count "a foul still counts as a strike", Mist's old 50% advance model,
> Cmd's availability window, and **§2 the two-option strategy** (the old rules "with 2 outs take the 1B to avoid the double play" and "decide by the run deficit" are both wrong;
> rewritten around "outs + base state"); plus a new **§10 self-play measurements** (the platform bot's offline self-play, bot-vs-bot figures)).

---

> **How to read this guide (suggested order)**: first see "how a plate appearance plays out" (§1) → then the decision you make most often, "swing / lay off on every pitch" (§3,
> once per pitch) → then "the two-option choice after contact" (§2, only in about one fifth of plate appearances) → items (§4 / §5) → modes (§6)
> → quick reference (§7 / §8). **The two-option choice is not the main loop** — it is a branch that only appears when the hit die shows the mystery face.

## 1. The plate appearance and the probability model (build the map first)

**How one plate appearance runs**: the defence picks a pitching gear once per half-inning → on every pitch you choose between "swing / lay off" (§3) → only a swing that does not whiff makes contact,
which switches to **that pitch type's** hit die (out / foul / single / two-option) → a mystery face opens the two-option choice (§2, about one fifth of plate appearances)
→ strikeout (3 strikes) / walk (4 balls) / out / reach base; 3 outs end the half-inning.

### 1.1 Whole-plate-appearance outcomes (swing everything + take the 1B on two-option · Balanced gear)

Ball/strike is the **only mode** (since 2026-09-21: the plain die roll was removed and its toggle deleted). After contact you **switch to the hit die of that pitch type**,
so the whole-plate-appearance probability is decided by "pitch type + whiff rate + that pitch type's hit die + the two-option branch" — the table below is the **outcome distribution of a whole plate appearance**:

| Two-option strategy | Hit rate | Out rate | Walk rate | Expected bases |
|---|---|---|---|---|
| Take the "1B" (conservative) | **48.7%** | **51.3%** | 0 | **0.487** |
| Roll the second die (aggressive) | 42.7% | 54.3% | 3.0% | **0.668** |

By gear (swing everything + take the 1B): Mostly balls 36.9% / Ball-heavy 40.4% / Balanced 48.7% / Strike-heavy 54.7% / Mostly strikes 58.8%.
Single-player (gears weighted Strike-heavy 30% · Balanced 50% · Ball-heavy 20%): **48.9%** (outs 51.1%, of which strikeouts 20.0%).

> **Convention**: this table and the numbers above are an **exact absorbing-Markov-chain solve** against the server dice faces
> (states = strikes 0~2 × balls 0~3, **including the hit-die "foul" loop**), recomputed 2026-09-27 with **`b1` whiff rate 40%** (raised from 20% on 2026-09-27).
> "Out rate" = strikeouts + fielding outs; "expected bases" counts only the batter's own advance (walk/single 1, double 2, triple 3, home run 4).

### 1.2 Strikeouts and walks

- **Swing everything**: no walks; strikeout rate (**counting "a foul ball also counts as a strike"**) — Mostly balls 38.8% / Ball-heavy 32.4% / Balanced **20.1%** / Strike-heavy 11.4% / Mostly strikes 5.5%.
- **Lay off everything**: no hits; the walk rate follows that gear's ball-family share — Mostly balls 93.8% / Ball-heavy 68.0% / Balanced **34.4%** / Strike-heavy 10.0% / Mostly strikes 0.9%; the rest are strikeouts (Balanced **65.6%**).

**Key conclusion**: with the Balanced gear (the default) swinging everything hits **48.7%**. Once the whiff rate exists, "swing" got stronger overall and is **no longer zero-sum** with "lay off"
(in the old 4-pitch-type model "swing" and "lay off" always summed to 1; now the Balanced gear gives 53.3% + 50.0% = **103.3%**).

### 1.3 Expected bases (Balanced gear · swing everything)

| Two-option | Bat | Hit rate | Out rate | Walk rate | Expected bases |
|---|---|---|---|---|---|
| Take 1B | no | 48.7% | 51.3% | 0 | **0.487** |
| Take 1B | yes | 48.7% | 51.3% | 0 | **0.974** |
| Roll the second die | no | 42.7% | 54.3% | 3.0% | **0.668** |
| Roll the second die | yes | 42.7% | 54.3% | 3.0% | **0.974** |

---

## 2. The two-option decision (**only when the hit die shows the mystery face**)

> ⚠️ **Revised 2026-09-25**: the old "with 2 outs → take the 1B (**to avoid the double play**)" and "with 0~1 outs decide by the **run deficit**"
> both fail — ① after 2 outs a double play **only retires the batter** (see Game Guide 2.2 / 9.3), so the extra penalty is gone and
> 2 outs should be **more** aggressive rather than more conservative; ② the two-option choice only affects **expected runs in the remaining half-inning**,
> not the "run deficit" (the deficit drives how aggressive you are with items / approach — see §5.1). The table below is the half-inning expectation recomputed from the server dice faces
> (covering all 24 "outs × base state" cells).

### 2.1 Decision table (**decided by outs + base state**, independent of the run deficit)

| Outs | Situation | Recommended | Reason (brackets: half-inning expected-run gap between the two branches) |
|---|---|---|---|
| **0** | all 8 states | **Take the 1B** | Plate continuity is worth the most: with a runner on third you bank the run, elsewhere the advance gain is steady (gap 0.04 ~ 0.30 runs) |
| **1** | runner on third (third / first+third / second+third) | **Take the 1B** | The runner on third banks the run; the double play is already downgraded to a single out (gap 0.04 ~ 0.17) |
| **1** | the rest (empty / first / second / first+second / loaded) | **Roll the second die** | Extra-base value beats the guaranteed advance — a **thin edge** (gap 0.01 ~ 0.18), staying conservative is acceptable too |
| **2** | **runner on third only** | **Take the 1B** | Guarantees that run home; rolling the second die scores 0 outright on the 1/6 double play (gap 0.04) |
| **2** | the other 7 states | **Roll the second die** | **The double play is downgraded to a single out** (after 2 outs only the batter is retired) and the extra-base upside remains (gap 0.13 ~ 0.61) |

**One line**: **with 0 outs always take the 1B; with 1 out check whether third base is occupied; with 2 outs always roll the second die — the only exception is "runner on third only".**

> Tone check: the 0-out and 2-out gaps are **significant** (0.13~0.61 runs); the five 1-out "roll the second die" cells are a **thin edge**
> (≤0.18 runs) — the difference is tiny, so **either preference is fine**.
>
> **How to use the run deficit**: the table above is in **expected runs for this half-inning** terms and looks only at outs and base state; **the deficit is only used to break ties
> inside "thin edge" cells** — e.g. late in the game, trailing by ≥3 and needing several runs at once, lean the thin-edge cells towards "roll the second die" (the 0-out empty-base gap is only 0.038,
> a thin edge; the 0-out runner-on-third gap of 0.288 is not something to touch). ⚠️ Do not treat the deficit as the main criterion — the old version wrote it wrong precisely because it did.

---

## 3. Per-pitch decision: swing / lay off (**the core**, made on every pitch)

### 3.1 There is **no globally optimal** approach: pick by the opponent's pitching gear

- "Swing" is resolved by the pitch type's **whiff rate** (dead-center 10% / strike 20% / nasty strike 50% / ball 40% / wide 80%); no whiff means contact;
  "lay off" never rolls the whiff rate — it is always "read a strike-family face wrong (strike +1) / read a ball-family face right (ball +1)".
- **Swing everything**: maximises the chance of contact and **never walks** ⇒ use it when the gear is unknown or the opponent is strike-heavy (Balanced hit rate 48.7%; 36.9% ~ 58.8% across gears).
- **When the opponent is clearly ball-heavy (bb / bbb) switch to "lay off"**: trade `b2`'s 80% whiff for a steady ball count and close in on a walk.
- Self-play measurements (2026-09-27, 1000 games per cell; side A on a fixed approach vs side B swinging everything — see §10):

| Opponent gear | Lay off everything | situation-mixed | adaptive to the opponent's gear |
|---|---|---|---|
| `bbb` mostly balls | **100.0%** | 67.3% | **100.0%** |
| `bb` ball-heavy | **96.9%** | 56.1% | 79.3% |
| `bs` balanced | 3.0% | 47.2% | 45.2% |
| `ss` strike-heavy | 0.1% | 51.2% | 48.0% |
| `sss` mostly strikes | 0.0% | 52.5% | 52.3% |

  ⇒ **"Lay off" only holds up against ball-heavy gears** (100% / 96.9%); against strike-heavy gears it almost always loses (3.0% / 0.1% / 0.0%);
  **"situation-mixed" is a soft adaptation**: the more ball-heavy the opponent, the better it does (`bbb` 67.3%), but at balanced and below it still loses to swinging everything (47% ~ 52%);
  only **adapting to the opponent's gear** wins the ball-heavy cells outright (79.3% / 100%) while roughly holding the balanced one
  (it dips slightly below 50% there because of gear-read errors).

### 3.2 When items can be used

**Before the plate appearance starts**: Bat, Mist, Sac, Hack
**During the plate appearance**: only Steal

### 3.3 Pitching gear × per-pitch probabilities (five gears for the defence)

Each of the defence's five "choose pitching strategy" gears is an independent 6-face die (5 pitch types in total), and together they decide the offence's per-pitch contact / correct-read chances:

| Gear | UI name | Contact chance when swinging | Correct-read chance when laying off | Strike-family share | Defensive value |
|---|---|---|---|---|---|
| bbb | Mostly balls | 38.3% | 83.3% | 16.7% | Bait whiffs, double-edged (gives walks) |
| bb | Ball-heavy | 43.3% | 66.7% | 33.3% | Punish wild swings, favours the patient hitter |
| bs | Balanced (default) | 53.3% | 50.0% | 50.0% | Neutral and safe |
| ss | Strike-heavy | 63.3% | 33.3% | 66.7% | Punish waiting, favours the swinger |
| sss | Mostly strikes | 73.3% | 16.7% | 83.3% | Extreme strikeout oriented |

> Conclusion (per-pitch view): **a ball-heavy gear makes "lay off" worthwhile**; **a strike-heavy gear makes "swing" worthwhile**. With many strike-family faces, "lay off" = reading it wrong (strike +1), i.e. handing over strikeouts.

### 3.4 Playing the ball/strike duel (player-facing)

**Offence: reading the gear**
- Opponent on a ball-heavy gear (bb / bbb): whiff risk is high, so **lay off more** and read balls (+1 ball) towards a walk; conservatively you can grind to bases loaded with three balls and then take the hard rule "must lay off" to force a run in.
- Opponent on a strike-heavy gear (ss / sss): many strike faces, so **swing more** for contact; waiting only gets read wrong (strike +1) and pushes you towards a strikeout.
- Hard rules that ignore the gear: **two strikes must swing** (swinging and laying off carry the same strikeout risk, and swinging still keeps the chance of contact); **with the bases loaded and three balls you must lay off** (a walk forces in a run).
- Measured strength (self-play measurements, §10): laying off everything wins **100% / 96.9%** against `bbb` / `bb`; against `ss` / `sss` it wins only **0.1% / 0.0%**.
  ⇒ Reading the opponent's gear is the entire value of this decision — **if you cannot tell, swing everything** (it never collapses against any gear).

**Defence: choosing the gear**
- First watch the opponent's swing / lay-off habits (in a Duel each pitch echoes whether the opponent chose swing or lay off, so the defence can accumulate a read):
  - Opponent **swings a lot** → go ball-heavy (bb, conservative) / mostly balls (bbb, gamble on whiffs but beware handing out walks).
  - Opponent **lays off a lot** → go strike-heavy (ss / sss): waiting means reading it wrong (+1 strike), so you can rush to two strikes and then hunt the strikeout.
  - Cannot tell, or playing safe → Balanced (bs).
- bbb is clearly double-edged: 5/6 balls, and if the opponent switches to "lay off" they will grind out a four-ball walk quickly (that is what the leftmost red "Danger" warning on the panel means); it suits specific scores / situations rather than being the default.

---

## 4. Item strategy

### 4.1 Expected bases by item

| Item | Expected bases (batter only) | Assessment |
|---|---|---|
| Bat (passive) | **0.974** | Strongest: every hit this plate appearance is upgraded one level (2× the Balanced baseline) |
| Hack | **1.167** | High risk, high reward: 4/6 out, 1/6 triple + 1/6 home run |
| Take 1B (no item · baseline) | **0.487** | Baseline (Balanced gear, swing everything) |
| Steal | needs a runner on first, second empty | 4/6 advance to second (**no out recorded**); 2/6 the runner on first is out |
| Sac | needs a runner on third, before 2 outs | 4/6 all runners advance one base (the runner on third scores); **an out is recorded either way** |
| Mist | needs a runner on base (**and 0 outs**) | 3/6 advance (one face moves the runner two bases) / 2/6 nothing (**the plate appearance is eaten**) / 1/6 **double play** |
| Cmd | not a base item | Resets the **half-inning** item allowance (see 4.2) |

> The figures assume the **Balanced** gear (the default) and swing-everything; against a strike-heavy opponent they are higher, against a ball-heavy one lower.
> ⚠️ An older version recorded Mist as 0.800 — that came from the old "50% advance whenever anyone is on base" model; in reality there is also
> **2/6 nothing (a wasted batter)** and **1/6 double play**, see 4.2.

### 4.2 When to use each item

**Bat (`bat`)** — the strongest passive
- Highest priority; use it whenever you have one
- Doubles the expected bases (0.49 → 0.98)

**Steal (`steal`)** — tactical advance
- Use with a runner on first and second base empty (before 2 outs)
- Success (4/6 = 66.67%): the runner on first takes second, **no out recorded**; failure (2/6): **the runner on first is out**

**Sac (`sac`)** — team sacrifice
- Use with a runner on third, before 2 outs
- Success (4/6 = 66.67%): all runners advance one base (the runner on third scores); failure (2/6): the bases are unchanged
- ⚠️ **An out is recorded either way** (the batter is out) ⇒ banned with 2 outs

**Mist (`mist`)** — random wildcard (**only with 0 outs and a runner on base**)
- 3/6 advance (face 1 "passed ball" / face 3 "wild pitch" move the runner one base; **face 2 "wild throw" moves them two bases**)
- 2/6 nothing happens — the base state is unchanged, but **the plate appearance is eaten** (a wasted batter)
- 1/6 "Nice Play" = **double play** (the batter plus **the runner closest to home** are out)
- ⚠️ **With 1 out that 1/6 double play ends the half-inning outright** ⇒ use it only with **0 outs**; with no runner on base the 1/2/3 faces degrade to "escaped it"

**Hack (`lun`)** — the blind-power gamble
- 4/6 swings through for an out, 1/6 triple, 1/6 home run ⇒ a hit rate of only 33.33%, but expected bases of 1.167
- A 2/3 chance of recording an out ⇒ only worth a gamble when trailing badly with a runner on base

**Cmd (`ling`)** — allowance refresh (**only when the half-inning allowance is down to its last charge**)
- Success (3/6 = 50%): resets **this half-inning's** item uses to 3 and clears the "used this half-inning" set
- Failure (3/6 = 50%): no effect, but it still consumes one charge
- ⚠️ **Once the allowance is full, no item (Cmd included) can be sent** (the server rejects anything over the cap). The only positive-EV window is
  sending Cmd when **"this half-inning has one charge left"**: success ⇒ three charges for free; failure ⇒ the allowance is exhausted (expectation 1.5 vs 1 for not sending it).

### 4.3 Item priority order

1. **Bat (`bat`)** — the strongest passive, always use it
2. **Steal (`steal`)** — runner on first with second empty, before 2 outs (an out is recorded only on failure)
3. **Sac (`sac`)** — runner on third and before 2 outs (**an out is recorded either way**, hence banned with 2 outs)
4. **Mist (`mist`)** — **0 outs** and a runner on base (with 1 out the 1/6 double play ends the half-inning)
5. **Hack (`lun`)** — trailing badly with a runner on base (a 2/3 chance of recording an out)
6. **Cmd (`ling`)** — **the half-inning allowance has one charge left** and there are still other items worth using

> **Using more items is better overall (self-play measurements, §10)**: with the four item policies playing each other, **the open-handed policy (Bat/Steal/Sac + Mist/Hack/Cmd) scores 52.5%** overall,
> above "auto" 49.2% and "all off" 43.8%, while **the most conservative policy (Bat/Sac/Steal only) comes last at 43.3%** (losing to all-off by 3pp).
> ⇒ The allowance (3 per half-inning) is **there to be used**: spending it fully is normal, there is no need to hoard it.

---

## 5. Reading the situation and pairing items

### 5.1 Run deficit and outs (**how aggressive** with items / approach)

> ⚠️ The two-option choice **does not look at the deficit** — follow the "outs + base state" table in §2.1. This table only answers "when trailing, should I open up items and gamble on extra-base hits".

| Deficit | 0 outs | 1 out | 2 outs |
|---|---|---|---|
| 1 run | Steady advance (items as usual per §4.3) | Mostly steady | Two-option per §2.1 (anything but "runner on third only" → roll the second die); pick items by situation |
| 2 runs | Can open up Mist / Hack | Prioritise items to hold third | Needs item help (Mist / Hack) |
| 3 runs | Aggressive chase (Hack) | Needs items + extra-base hits | Almost entirely dependent on items |
| 4+ runs | Must be aggressive | Needs Hack + Cmd together | Extremely hard, all on items |

### 5.2 Base state and item pairings

**Runner on first**:
- Steal → runner on second (scoring position)
- Sac → runner on second (batter out)
- Mist (passed ball / wild pitch) → runner on second
- Recommended: Steal > Sac > Mist

**Runner on second**:
- Sac → runner on third (high scoring chance)
- Mist (wild throw) → run scores
- Take 1B → runner on third
- Recommended: Sac (wild throw) > Take 1B > Mist

**Runner on third**:
- Sac → run scores (66.67% chance)
- Mist (any advance) → run scores
- Hack (triple / home run) → run scores
- Take 1B → run scores
- Recommended: Sac > Mist > Take 1B > Hack

**Bases loaded**:
- Take 1B → forces a run in (**whether to take it: see §2.1** — with 0 outs take the 1B; **with 2 outs and the bases loaded you should roll the second die instead**)
- Hack (home run) → up to +4 runs
- Sac → batter out but the runners advance
- Recommended: Take 1B (steady) > Hack (last resort)

### 5.3 Item combos

**Bat + take 1B**:
- Hit rate 48.7% (Balanced gear), but every hit is upgraded to a double
- Expected bases double from 0.487 to 0.974
- The strongest passive combo

**Bat + roll the second die**:
- Hit rate 42.7%, every hit upgraded
- Expected bases rise from 0.668 to 0.974
- 1B → 2B, 2B → 3B, 3B → HR

**Cmd + other items**:
- Send Cmd when **this half-inning has one charge left**: success resets the allowance (three charges for free), failure exhausts it — the only positive-EV window
- ⚠️ Two common mistakes: ① **sending Cmd while the allowance is full cannot go through** (the server always rejects it — a wasted attempt);
  ② sending Cmd when the allowance is plentiful is not better on expectation (with three charges left, Cmd's expectation is 2.5 < 3, a pure loss) — do not "send it as soon as you are done".

**Steal + Sac back to back**:
- Steal moves the runner to second → the sacrifice sends them home
- Needs two item uses
- Suits chasing runs with 0–1 outs

---

## 6. Mode-specific strategy

### 6.1 Bottom-9 Challenge (Challenge)

**Core goal**: clear a run of consecutive games, coming from behind in each one
**Basic strategy**:
- "Take the 1B" for a steady trip to first is the workhorse (Balanced hit rate ≈ 48.7%; weighted solo gears ≈ 48.9%)
- Two-option per the **§2.1 table**: with 0 outs take the 1B; with 1 out take the 1B when third base is occupied and roll the second die otherwise (thin edge); with 2 outs always roll the second die except "runner on third only" — the old "default to the 1B / decide by the deficit" rule is retired
- Bat first: it doubles the expected bases
- Steal to move runners into scoring position
- Sacrifice has high priority when a runner is on third

**Multi-game runs (resource management)**:
- Items carry over between games; allocate them sensibly
- Try not to spend Bat and Hack early (save them for the key games)
- Cmd refreshes are the core of a run (more refreshes = more item uses)
- 3 item charges per game — spend them fully
- Losing any single game ends the challenge; after a refresh you resume from the highest game already cleared
- Know the total number of games: clear the easy ones with basic play, concentrate items on the hard ones, go all-out in the last

**Maximising rewards**:
- Clear reward: 1 each of 4 of the 6 (random); individual games may also grant per their configuration
- Walk-off home run: Bat 3 / Hack 3 / Steal 2 / Sac 2 / Mist 2 / Cmd 2 (the best reward)
- Even on a failure, the end of a 3-OUT inning pays a weighted random reward (Steal/Sac 20% each, Bat/Hack/Mist/Cmd 15% each)
- Home runs (including Bat upgrades / from Hack) pay separately: Bat 2 / Hack 2

**Handling typical situations**:

| Situation | Recommended | Reason |
|---|---|---|
| 0 outs, runners on first and third | Take the 1B | A single scores one (gap 0.23 — a significant cell) |
| 1 out, runner on second | Roll the second die (thin edge, gap 0.05) | Extra-base expectation is slightly higher; taking the 1B is fine too |
| 2 outs, bases loaded | **Roll the second die** | The double play is downgraded to a single out and the extra-base upside is high (gap 0.44; the old "take the 1B to avoid the double play" is **wrong**) |
| 0 outs, bases empty, down by 3 | Roll the second die (thin edge, gap 0.04) | Expectations are almost level; when trailing, use the deficit to break the tie |
| 1 out, runner on first | Steal → take the 1B | After stealing second, a single scores them |

### 6.4 Duel (PvP)

**Core goal**: beat the opponent
**Attack / defence**:
- The away side bats first (top half)
- The away side does not stop in the top half (it plays the whole half even when leading)
- The home side taking the lead in the bottom half = walk-off, the match ends immediately
- Exploit the walk-off rule: the home side has a natural edge in the bottom half
- In the final inning (extras included) the home side stops the moment it takes the lead; in earlier innings it scores normally and plays the half out
- Duel records are tracked separately (cumulative wins / losses)

**Inning-count strategy**:
- 1–9 innings, 9 by default
- Fewer innings = more randomness (favours the weaker side)
- More innings = skill matters more (favours the stronger side)
- Extras: 0 outs with runners on first and second (a high-scoring spot)

**Item usage**:
- Items matter just as much in a Duel
- Bat applies passively and upgrades every hit
- Steal is available in Duels too
- Watch item timing across the side changes

**Disconnects and room reclamation**:
- Being away for more than **30 seconds** counts as offline; after a match the room closes automatically **30 seconds** later
- Rooms waiting for an opponent, or with no action for a long time, are reclaimed (about 10 minutes)
- One account can take part in only one Duel at a time (both creating and joining are restricted)

### 6.5 AI Duel (AI integration)

An AI joins a Duel room through the public endpoint and talks to the server: read the situation → execute an action. The decision rules are identical to a player's (the server runs the same situations and the same engine), so **just reuse the strategy in §2–§5**; the differences sit in the execution layer:

- **Act within the actions the server allows**: only act when it is your turn and the list of allowed actions is non-empty; a rejected operation returns the allowed set, so just correct yourself against it
- **Side changes and match end are advanced by the server**; the AI does not need to judge innings or the result itself
- Do not compute rules locally — the server engine is authoritative (judge success by the server's response)
- Seats, credentials, sessions, the concurrent-match limit and quotas — all **integration details** — follow the **“AI Access” site** (`open.yakidev.top`) and the public contract repo `rollinace_duel_api` (`doc/AI_DUEL_API.md` / `doc/QUICKSTART.md` / `doc/AI_DUEL_FAQ.md`)
- **Defensive gear selection (ball/strike)**: when defending, the AI decides by the role's configured "BS approach" (swing everything / swing-leaning / balanced / lay-off-leaning / lay off everything) and reads the opponent's swing / lay-off counters for that match to pick a countering gear (lots of swings → ball-heavy; lots of lay-offs → strike-heavy), pausing about 2 seconds before committing

---

## 7. Probability quick reference

| Event | Probability |
|---|---|
| Ball/strike hit rate (swing everything + take 1B · Balanced) | 48.7% |
| Ball/strike hit rate (solo weighted gears: strike-heavy 30 · balanced 50 · ball-heavy 20) | 48.9% |
| Strikeout rate (swing everything · Balanced, **counting "a foul counts as a strike"**) | 20.1% |
| Walk rate (lay off everything · Balanced) | 34.4% |
| Steal success rate / runner out on failure | 66.67% / 33.33% |
| Sacrifice success rate (**an out is recorded either way**) | 66.67% |
| Hack hit rate (4/6 out) | 33.33% |
| Cmd success rate (resets the **half-inning** allowance) | 50.00% |
| Mist: advance / nothing (eats the plate appearance) / double play | 3/6 · 2/6 · 1/6 (0 outs only) |

---

## 8. Decision trees

### 8.1 Two-option decision tree

```
Rolled Choose
    |
    +-- Outs = 0? --> Take the 1B (always)
    |
    +-- Outs = 1?
    |       |
    |       +-- Runner on third? --> Take the 1B (banks the run)
    |       |
    |       +-- Otherwise --> Roll the second die (thin edge; conservative is fine)
    |
    +-- Outs = 2?
            |
            +-- Runner on third only? --> Take the 1B (guarantees that run)
            |
            +-- Otherwise --> Roll the second die (the DP is only a single out now)
```

### 8.2 Item priority

| Priority | Item | Condition |
|---|---|---|
| 1 | Bat | use whenever you have one |
| 2 | Steal | runner on first, second empty, before 2 outs |
| 3 | Sac | runner on third, before 2 outs (an out is recorded either way) |
| 4 | Mist | **0 outs** and a runner on base |
| 5 | Hack | trailing badly with a runner on base |
| 6 | Cmd | **one charge left in the half-inning** and another item still usable |

### 8.3 Item timing decision tree

```
Inning starts
    |
    +-- Have Bat? --> pick Bat (passive, always active)
    |
    +-- One charge left this half-inning, and other items still available? --> Cmd (success resets the allowance)
    |
    +-- Plate appearance not started (plate=false)?
    |       |
    |       +-- yes --> anyone on base?
    |               |
    |               +-- runner on third (before 2 outs) --> Sac (66.67% scores; an out either way)
    |               |
    |               +-- 0 outs --> Mist (3/6 advance, one face moves two bases)
    |               |
    |               +-- runner on first, second empty (before 2 outs) --> Steal (advance to second, no out)
    |               |
    |               +-- bases empty, big deficit --> Hack (gamble on extra bases, a 2/3 chance of an out)
    |
    +-- Plate appearance in progress (plate=true)?
            |
            +-- runner on first, second empty? --> Steal available? --> use it (the only active item usable)
```

---

## 9. The maths behind it

### 9.1 Why "swing everything" is optimal against the Balanced gear

Let p be the probability that the player swings on a given pitch (with the Balanced gear: the whiff rate when swinging is `q` = 46.7%, the correct-read rate when laying off is `r` = 50%), then:
- Contact rate = p(1 − q) = 0.533p
- Whiff (strike +1) = pq = 0.467p
- Correct read (ball +1) = (1 − p)r = 0.5(1 − p)
- Wrong read (strike +1) = (1 − p)(1 − r) = 0.5(1 − p)

**Swinging everything (p = 1)**: contact rate 0.533, whiff 0.467, balls always 0 ⇒ the plate appearance can only end in contact or a strikeout, and the hit rate is the highest (48.7%).
**Laying off everything (p = 0)**: never contacts ⇒ 0 hit rate; the plate appearance can only end in a walk (34.38%) or a strikeout.

**Conclusion**: only contact can produce a hit, so swinging everything maximises the hit rate; the value of "lay off" is steering the plate appearance towards a walk (worthwhile only against a ball-heavy opponent).

> ⚠️ Addendum (self-play measurements, 2026-09-24): **this does not make "swing everything" globally optimal.** The "correct-read rate" above is a constant taken for the Balanced gear,
> whereas real opponents vary their gear — against `bbb` / `bb`, laying off everything wins **100% / 96.9%** while swinging everything wins only around 52% (§3.1 / §10).
> The right posture: **gear unknown → swing everything**; **clearly ball-heavy → switch to laying off**.

### 9.2 Why contact switches to the hit die of that pitch type

Ball/strike already has its own independent out source — the strikeout. If contact reused one single main die regardless of pitch type,
the quality of a hit would be unrelated to the pitch type ⇒ easy and hard pitches would pay the same after contact, with the whole cost loaded onto the whiff rate,
and the approach would degrade to "just see whether you can touch it".

Switching to **one hit die per pitch type** (dead-center is the strongest → wide is the most dangerous) means:
- the pitch type decides both "how easy it is to hit" (whiff rate) and "how strong it is after contact" (hit die);
- the penalty for a ball-heavy gear is therefore **doubled** (`b2` whiffs 80% *and* has 3 out faces on contact), and the reward for a strike-heavy gear is doubled too.

> This convention replaces the old "reuse one main die after contact" approach — **normal mode was removed on 2026-09-21**
> (ball/strike is the only mode), so there is no longer an "align with normal mode" target.

### 9.3 Why Bat doubles the expected bases

Take 1B without Bat (Balanced gear · swing everything):
- 48.7% chance of a 1B (bases = 1)
- 51.3% chance of an OUT (bases = 0)
- Expectation = 0.487 × 1 = **0.487**

Take 1B with Bat:
- 48.7% chance the 1B is upgraded to a 2B (bases = 2)
- 51.3% chance of an OUT (bases = 0; Bat does nothing)
- Expectation = 0.487 × 2 = **0.974**

**Why it doubles**: Bat adds 1 to the base count of every hit while the hit probability is unchanged, so the expected bases simply double. It is the single largest upgrade on the platform.

---

## 10. Appendix: self-play measurements

> **Source**: the platform bot's offline self-play (a contract simulator; each cell is **1000 ~ 16000 games**, 1 game = 9 innings).
> **Caveat**: this is a **bot-vs-bot** simulation, meant for comparing "which approach is relatively stronger";
> it is **not human win rates**. The simulator's dice faces / item semantics have been aligned with the live engine, but the real payoff still needs live validation.
> **Re-run 2026-09-27**: after the `b1` whiff rate went 20% → 40% the same grids were re-run; a single face's whiff rate
> moves **whole-game win rates** very little (most cells shift within ±3pp); what actually changes is the absolute probability structure (see §1).

### 10.1 Approach × opponent gear (side A on a fixed approach vs side B swinging everything, 1000 games/cell)

| Opponent gear | Lay off everything | situation-mixed | adaptive to the opponent's gear |
|---|---|---|---|
| `bbb` mostly balls | **100.0%** | 67.3% | **100.0%** |
| `bb` ball-heavy | **96.9%** | 56.1% | 79.3% |
| `bs` balanced | 3.0% | 47.2% | 45.2% |
| `ss` strike-heavy | 0.1% | 51.2% | 48.0% |
| `sss` mostly strikes | 0.0% | 52.5% | 52.3% |

⇒ **There is no global optimum**; the approach must follow the opponent's gear (see §3.1); "lay off" only holds against ball-heavy gears.

### 10.2 Two-option: four strategies playing each other (overall = combined vs the other three, 2000 games per pairing · re-run 2026-09-27)

| Strategy | Overall win rate |
|---|---|
| **Roll the second die** | **55.8%** |
| Expected-value table | 53.1% |
| Adaptive auto | 52.9% |
| Take the 1B | 35.1% |

⇒ In the current environment ("ball/strike always on + pitchers actively pitching off the plate"), **"roll the second die" is worth more than the old conclusion suggested** (it used to tie with the expected-value table),
while "take the 1B" sits at the bottom long-term. ⚠️ The two-option **optimum depends on the scoring environment** (change the pitcher gears and the ranking changes) — do not treat any ranking as law.

> 📌 This document's **pre-revision** matrix (take the 1B with 2 outs) scored **44.4%** overall under the 2026-09-24 convention — which is exactly why it sat near the bottom.
> After the revision that strategy became identical to the expected-value table and rose with it
> (**it has since been retired and no longer plays as a separate strategy**), so this figure is **for historical reference only**.

### 10.3 Item policies playing each other (2000 games per pairing · re-run 2026-09-27)

| Policy (side A) | vs all off | vs conservative | vs open-handed | vs auto | Overall |
|---|---|---|---|---|---|
| all off | — | 46.8 | 41.2 | 43.5 | 43.8 |
| conservative (Bat/Sac/Steal only) | 46.6 | — | 40.4 | 42.8 | **43.3 (last)** |
| **open-handed (Mist/Hack/Cmd)** | 54.0 | 53.1 | — | 50.5 | **52.5 (best)** |
| auto (situation-driven) | 51.1 | 50.0 | 46.4 | — | 49.2 |

⇒ **Use the items**: with 3 charges per half-inning, spending them fully usually beats hoarding them; the conservative route of only playing "Bat / Sac / Steal" is actually the weakest.

### 10.4 Side conclusions

- **Defensive gear choice**: against an opponent who always swings, the extreme gears (`bbb` / `sss`) beat the middle ones (87.6% vs 84.6%); **picking the gear from the opponent's swing / lay-off habits** is the defence's main source of gain.
- **Gear secrecy**: the opponent's true gear is no longer sent to the offence (only the defence sees it), so "reading the gear" must come from watching the pitch types and accumulating habits.
