18OE — Open for Alpha
Fast triage view · bugs and missing features sorted by impact. For full rulebook picture → Rulebook Coverage · For in-flight work → Implementation Tracker
Critical Bugs — fix before any playtesting
No HIGH bugs open.
Missing Alpha Features — not yet implemented
| Area | Feature |
|---|---|
| Train Purchase | |
| First-round insolvency: president cash → treasury; company receives reserved 2+2; presidential cert → Open Market; president paid face value | |
| Forced purchase — president covers shortfall; else national conversion (majors) or insolvency (minors/regionals) | |
| Train type lock for inter-company purchases — minors may only sell to minors, regionals to regionals, majors to majors (§11.3) | |
| OR Steps (Major) | |
| Investigate `Engine::Step::Exchange` in OR step list — minor exchange abilities fire in SR only; confirm Exchange never triggers during OR and remove if vestigial | |
| Stock Rounds | |
| Reserved secondary shares — during Initial SR only, each player may designate one regional's secondary (25%) share as reserved; no other player may purchase it until the second SR; cancelled if regional expands to major before its first OR | |
| Trade with another player — during own SR turn, controlling player may offer personal share trade to any other player; recipient not obligated to accept | |
| Voluntary regional removal — player may remove one unfloated regional during Regional/Minor Phase; max 6 total | |
| Track Laying | |
| First-OR green tile exception (§11.1.9) — Phase 2 only, first OR after float: if RR cannot connect home token to any town/city via land or ferry without a sea crossing, it may lay one non-city green tile at cost of all remaining tile points; requires ≥1 tile point; cannot be exploited deliberately | |
| Auction Phase | |
| All-pass price reduction — if all players consecutively pass before opening packet is sold, privates pay dividends then all items on topmost row reduce by £5; repeats; items reaching £0 must all be taken by next player | |
| Map & Components | |
| Audit OE-specific tile upgrade paths against physical manifest | |
| N31 Lille second token slot for White Cliffs Ferry — pre-printed Lille tile needs a secondary station slot; confirm against physical map | |
| OE19 — tile type unknown; must be identified and defined | |
| OE20–OE22 — brown double-town path edge orientations needed | |
| OE9–OE11 — green double-town path edge orientations needed | |
| Verify M28 London / AA82 Constantinople / I20 Dublin / O28 Le Havre / X33 Marseille are in `yellow:` section in map.rb (edges added in 18oe_testing; section move not yet confirmed) | |
| Verify standard tile quantities against physical tile manifest | |
| Minor Abilities | |
| **7.13** Minor M (CIWL) — holds 10 Pullman cars (see §11.6.2) | |
| Private Abilities | |
| **8.2** Barclay, Bevan, Barclay & Tritton — owner selects one of three abilities at time of use | |
| **8.8** Swift Metropolitan Line — from Phase 4, one controlled RR may keep one 2+2 outside train limit | |
| Token Transfer Between Majors | |
| Cost: token value (paying major) + token value (receiving major, same zone) + transfer fee (Normal £20 / Grand £40 / Metropolis £60) | |
| During major's OR Transfer Tokens step: controlling player transfers one token between two majors | |
| Selling a token: returns to charter at highest-cost open position | |
| Tests | |
| Basic game flow (auction → regional/minor → major phase) | |
| Pullman Cars | |
| Company with zero trains but holds Pullman: retain until next train acquired | |
| Discard order: rusted trains first; Pullman voluntarily returnable to Open Market | |
| Minor M free Pullman: if Minor M not closed at Phase 4 start, places free Pullman | |
| Tests | |
| Minor ability transfer | |
| Pullman Cars | |
| Pullman asset type — does not count against train limit; max 1 per non-national company | |
| Tests | |
| Pullman car revenue | |
| Pullman Cars | |
| Purchase from Minor M: £150 + £15 royalty; J-minor discount on price only | |
| Purchase from Open Market: £150, no royalty; available Phase 4+ | |
| Purchase from another RR: negotiated price | |
| Revenue bonus: +£10 × assigned train level, once per OR | |
| Tests | |
| Smoke spec — `Engine::Game::G18OE.new(%w[A B C D])` does not raise | |
| Stock market movement (right/left/up/down, edge cases) | |
| Train phase transitions (rusting, limits) | |
Partial Implementations — need completion
| Area | Feature |
|---|---|
| Minor Abilities | |
| **D** (Green Junction) — DTokenPlacement step; assign action during track window; any non-metro non-offboard city; Phase 5 transition already wired | |
| **L** (Krasnaya Strela) — KrasnayaStrelaAssign step wired; train-choice before Route step; D-train doubling exception in `18oe_dtrain_doubling` (BUG-031) | |
| Private Abilities | |
| **Barclay, Bevan, Barclay & Tritton** — option 3 (block DOWN): `bbbt_protect!` sets `@bbbt_protected_corp`; `sell_shares_and_change_price` override passes `movement: :none`; `finish_bbbt_sr!` clears + closes at SR end; options 1 (re-par) and 2 (reserve share) deferred to beta | |
| **Brandt & Brandau** — `count_per_or: 2` + free tile wired; routing exclusion implemented (non-owning RRs blocked via `@bbe_hexes`); **still needed**: removal mechanic (pay terrain cost + tile point) | |
| **Central Circle** — hex_bonus approximation (£10/£20/£40/£60 by phase via after_phase_change); SR window via extra_action:true already wired; city-as-town routing deferred to beta (BUG-032) | |
| **Hochberg Mining** — HochbergPlacement step (rough terrain ≥ £45); routing exclusion via check_route_token override; removal mechanic pending browser test | |
| **Swift Metropolitan Line** — SR `choose` action (Phase 4+); claim_sml_train! assigns rusted 2+2 outside train limit (buyable=false, rusted=true); num_corp_trains + must_buy_train? exclude SML train; route restriction §11.3.8 free via base check_overlap | |
Medium Bugs — rule violations in specific cases
| ID | Rule violated | Symptom |
|---|---|---|
| BUG-034 | Minor E/F standalone 33% terrain discount not implemented | When an RR owning E or F builds on matching terrain *outside* their zone (no zone discount applies), they receive 0% discount instead of 33%. The zone-augmentat |
| BUG-033 | HMLC routing exclusion hook needs validation | Unknown until browser testing. `check_route_token` is called once per route; `route.paths` iteration should catch Hochberg hexes for non-owner RRs. If the hook |
Low Bugs — cosmetic / edge-case
No LOW bugs open.