mirror of
https://github.com/prosolis/gogobee.git
synced 2026-07-15 00:32:40 +00:00
J2: sim picker casts+consumes; T5 raid-content warning
The post-J1 sweep had the casters clustered at 19–22% L12 clear, vs martials at 70–80%. A per-round trace across 240 boss-room fights showed why: autoResolveCombat dispatched !attack only — zero spell_casts, zero mid-fight consumable uses across every caster class. The entire "caster cliff" was the sim measuring a strawman where casters couldn't cast. J2a teaches the sim's autoResolveCombat to mirror a competent prod player: heal at low HP if an inventory consumable is available, otherwise cast the highest-EV damage spell (slot or cantrip), otherwise swing. BuildCharacter now seeds the known-spell list via ensureSpellsForCharacter so the synthetic spellbook is populated. A -trace flag on the cmd attaches the raw CombatEvent stream to the last combat of each run for post-hoc diagnostics. A first re-baseline (n=100, all 10 classes) showed Ranger regressed -35.8pp — the picker was burning L3 slots on lightning_arrow when Ranger's weapon chassis (Hunter's Mark + Extra Attack) was the better play. Added simMartialFirstClass to gate the picker off for Ranger and Paladin (whose default kit is also weapon-first / no damage spells). J2c experimented with widening the picker to control + heal spells; heal-spell preempt cost druid 10pp (slot heals are 10HP vs 40HP consumables) and control-spell scoring at 22 cost warlock 6.6pp. Both reverted. Corpora retained under baseline_j2c*.jsonl for the post-mortem in sim_results/j2b_findings.md. Post-J2 L12 leaderboard (baseline_j2a_v2_all10.jsonl, n=100): fighter 80.0, ranger 80.0, paladin 78.4, rogue 76.8, druid 61.6, mage 53.4, sorcerer 50.6, warlock 48.2, bard 40.4, cleric 39.0. The caster cluster is dissolved; martials are within ±5pp of J1 (sweep noise). Bard/cleric still trail, but it's no longer a sim artifact — their defaultKnownSpells damage rosters cap at L2 and the picker can't pick spells they don't have. That's a prod-level fix, deferred. J3 trace (sim_results/j3_findings.md): T5 dragons_lair walls every solo class at 0% (Infernax 546 HP vs solo player HP 110–175; ~25% boss HP eaten before TPK across all classes). Per the J3 plan menu, this is party-shaped content the engine doesn't yet have parties for. Surface a TwinBee-voiced heads-up in handleDnDExpeditionCmd's start path and a matching tag in !expedition list — players see "raid-shaped — solo runs not yet survivable" before they spend outfitting coin. No combat or class balance changes. Files: cmd/expedition-sim/main.go +trace flag; expedition_sim.go picker + SimCombatSummary.Events + spellbook seed; dnd_expedition_cmd.go raidContentWarning + list tag. All baselines + traces + findings checked in under sim_results/.
This commit is contained in:
@@ -41,9 +41,13 @@ func main() {
|
||||
levels = flag.String("levels", "", "comma-separated levels (matrix mode)")
|
||||
zones = flag.String("zones", "", "comma-separated zone ids (matrix mode)")
|
||||
runs = flag.Int("runs", 1, "replicates per (class,level,zone) cell (matrix mode)")
|
||||
|
||||
trace = flag.Bool("trace", false, "include raw per-round CombatEvent stream on the LAST combat of each expedition (boss room) — for J2 diagnostic sweeps")
|
||||
)
|
||||
flag.Parse()
|
||||
|
||||
plugin.SetSimIncludeTrace(*trace)
|
||||
|
||||
if *matrix {
|
||||
// Matrix default: drop log to keep stdout manageable; explicit
|
||||
// -log=true overrides.
|
||||
|
||||
@@ -215,28 +215,57 @@ Before any tuning, freeze a reproducible baseline:
|
||||
|
||||
**Definition of done:** Fighter L12 manor clears jump from 0% to **≥50%** at n=30; T2 forest clears stay ≥80% (don't break the leader); T4 underdark clears non-zero.
|
||||
|
||||
### J2 — Mage T2+ wall
|
||||
### J2 — Caster boss-survival cliff
|
||||
|
||||
**Hypothesis menu:**
|
||||
**Scope (reframed 2026-05-17 after post-J1 n=100 sweep, `sim_results/baseline_j1_all10.jsonl`):** five caster classes — **mage, cleric, sorcerer, warlock, bard** — all cluster at 19–22% L12 mean %clr across the 5 zones, vs four martial leaders (fighter/ranger/paladin/rogue) at 70–80%. They reach the boss room 62–82% of the time but TPK there. So the gap is **boss-fight burst/durability**, not zone traversal.
|
||||
|
||||
1. **No defensive layer.** Mage AC = 10 + DEX (no armor proficiency). At T2+ monster Attack, 70%+ hit rate every round.
|
||||
2. **Slot economy.** L7 mage has 4 L1 + 3 L2 + 2 L3 slots — enough for one elite, not a manor's worth.
|
||||
3. **No Shield spell auto-cast.** 5e Mage gets `Shield` (reaction: +5 AC until next turn). Verify it exists and fires.
|
||||
4. **Mage Armor not active.** `Mage Armor` (+3 AC for 8h) should be a pre-walk default; check whether the autopilot starts it.
|
||||
Druid sits between the bands at 39% L12 clr (88% boss-reach) — the only mid-band class — because Wild Shape gives a real HP buffer. That's the diagnostic: the trailers lack a durability or burst lever that pulls them through the final fight.
|
||||
|
||||
**Cell snapshot (L12, %clr | %boss):**
|
||||
|
||||
| Class | goblin (T1) | forest (T2) | manor (T3) | underdark (T4) | dragons (T5) |
|
||||
|----------|-------------|-------------|------------|----------------|--------------|
|
||||
| mage | 100\|100 | 0\|99 | 0\|63 | 0\|56 | 0\|68 |
|
||||
| cleric | 93\|93 | 0\|87 | 0\|70 | 0\|8 | 0\|50 |
|
||||
| sorcerer | 100\|100 | 0\|97 | 0\|57 | 0\|38 | 0\|60 |
|
||||
| warlock | 100\|100 | 7\|100 | 0\|71 | 0\|62 | 0\|78 |
|
||||
| bard | 100\|100 | 8\|100 | 0\|70 | 0\|66 | 0\|74 |
|
||||
| *druid (ref)* | *100\|100* | *93\|100* | *0\|74* | *90\|100* | *0\|78* |
|
||||
|
||||
Cleric is doubly broken: lowest boss-reach (62% mean) **and** lowest clear (19%) — pure-support kit doesn't carry solo expeditions even before the boss.
|
||||
|
||||
**Hypothesis menu (cheapest first):**
|
||||
|
||||
1. **Damage falls off a cliff at mid-level boss HP.** L12 boss HP grows ~linearly; cantrip damage scales (Fire Bolt 2d10 at L11) but slot-spell burst is gated by 2–3 high-level slots used earlier in the zone. Trace `EnemyHPEnd` at TPK across the 5 classes vs druid.
|
||||
2. **No durability backstop.** Druid (Wild Shape ≈ +temp HP pool) clears 39%; the five trailers have no equivalent. Mage's `Shield` reaction and `Mage Armor` may already exist but aren't firing in turn-engine boss rooms — verify.
|
||||
3. **Slot/resource economy.** L7/L12 casters reach boss with slots spent; H5 partial short-rest refresh (already planned) is the obvious lever and might solo-fix several of the five.
|
||||
4. **Cleric class identity.** Bottom-of-band even at boss-reach. Whatever differentiated cleric from "AC 16 melee with no Extra Attack" probably isn't wired into turn engine (e.g. Channel Divinity, Spiritual Weapon auto-cast).
|
||||
|
||||
**Investigation steps:**
|
||||
|
||||
- Grep for `MageArmor|ShieldSpell|mageArmor`. If they exist, why doesn't the sim cast them?
|
||||
- Trace a single mage L7 manor run: does the character ever cast a defensive spell?
|
||||
- Check `dnd_spells.go` for any auto-cast pre-combat hook the sim could opt into.
|
||||
- Pull per-round combat traces from boss rooms for mage/cleric/sorc/warlock/bard at L12 manor and underdark. Look at: did a slot spell ever fire? did a reaction fire? what was player HP when boss died vs when player died?
|
||||
- Grep `Shield\b|MageArmor|SpiritualWeapon|ChannelDivinity|EldritchBlast|HealingWord` for existing wiring; check whether each fires from `combat_turn_engine.go` paths.
|
||||
- Cross-check whether the J1 [[project_j1_turn_engine_fix]] turn-engine seam exposed any *caster* wiring that was previously only firing in `SimulateCombat`. If yes, that's the cheapest fix: same pattern.
|
||||
- Compare druid L12 underdark trace (90% clr) to cleric L12 underdark (0% clr / 8% boss-reach) — what's druid doing that cleric isn't?
|
||||
|
||||
**Likely levers:**
|
||||
**Findings (2026-05-17 trace sweep, `sim_results/j2_findings.md`):** zero slot casts and zero mid-fight consumable uses across 240 boss-room combats. `autoResolveCombat` dispatches `!attack` only — the entire caster-cliff diagnosis was built on a strawman where casters couldn't cast and didn't quaff heals. Druid's outperformance is its `ThornLashDmg` passive firing on the weapon-attack path, not Wild Shape durability (Wild Shape isn't wired into autoResolveCombat at all). Reaction-spell hypothesis is also moot: `dnd_spells.go` skips reaction-cast spells globally — no reaction window exists yet. Hypothesis 3 (slot economy) is confirmed-but-inverted: casters reach boss with slots intact because the sim refuses to spend them.
|
||||
|
||||
- **Wire Mage Armor as a long-rest auto-buff** when not already active and the mage has spell slots. Production characters benefit too.
|
||||
- **Add Shield-spell reaction** in combat: if available slot + about-to-be-hit + AC < threshold, burn a L1 slot for +5 AC. Reaction-based survival lever 5e mages depend on.
|
||||
- **Slot economy:** H5 partial short-rest refresh (already in this plan) helps mage longevity directly. May land alongside J2 if it's the cleanest fix.
|
||||
**Reframed levers (replaces the original menu):**
|
||||
|
||||
**Definition of done:** Mage L12 forest clears ≥60%; manor clears non-zero; T1 yield density doesn't drop more than 10%.
|
||||
- **J2a — Teach `autoResolveCombat` to cast and consume.** Before each `!attack`, mirror the prod player decision: heal at low HP if a heal consumable is in inventory; otherwise cast the highest-impact available slot/cantrip; fall back to weapon swing. Class-blind first cut is fine — pick by damage-vs-remaining-enemy-HP, with a small heal-trigger at player HP < ~40%. Surface: `expedition_sim.go:530`. Heal-side mirrors `combat_bridge.go`'s `SelectConsumables`.
|
||||
- **J2b — Re-baseline.** Re-run the n=100 all-class corpus with the fixed `autoResolveCombat`. The current `baseline_j1_all10.jsonl` cell numbers do not measure caster boss-survival; they measure "caster forced to swing a stick". Only after J2b do we have a real read on whether a class-level lever is needed.
|
||||
- *Deferred until after J2b's real read:* shared boss-room cushion, cleric-specific intervention, H5 short-rest refresh wired to J2. Don't pre-commit balance changes against a strawman.
|
||||
- *Out of scope:* reaction-spell wiring — the reaction phase doesn't exist; lifting that ban is its own surface (post-J2).
|
||||
- *Avoid:* per-class HP/AC stat riders. Per accessibility-over-crunch, prefer surfacing a verb (cast, ward, channel) over inflating numbers.
|
||||
|
||||
**Definition of done (reframed 2026-05-17):**
|
||||
- **J2a:** at least one of {slot cast, cantrip cast, mid-fight heal-consumable} fires in ≥80% of boss-room fights for every caster class in a small (n≥10) verification sweep. ✅ **MET** — 100% cast rate in `sim_results/j2a_findings.md`.
|
||||
- **J2b:** new `sim_results/baseline_j2a_v2_all10.jsonl` (n=100). 3 of 5 trailer casters cleared the floor: mage 49% / sorcerer 47% manor at L12 (>40%). Warlock 34%, bard 2%, cleric 9% — these three are now spell-pool-bottlenecked, not sim-artifact-bottlenecked. Writeup: `sim_results/j2b_findings.md`.
|
||||
- *No martial leader cell drops by more than 10pp from `baseline_j1_all10.jsonl`* — ✅ **MET** (all +0.4 to +6.2pp). Required adding `simMartialFirstClass` after a v1 sweep showed Ranger regressed -35.8pp when the picker burned L3 slots; the gate skips cast-mode for half-caster martials.
|
||||
|
||||
**J2c — tried + reverted 2026-05-17.** Both proposed widening levers regressed: heal-spell preempt cost druid 10pp (slot heals are 10HP vs 40HP consumables); control-spell scoring at 22 cost warlock 6.6pp (hypnotic_pattern beat vampiric_touch wrongly), and at 5 the level-first sort made it inert. Picker reverted to the J2b shape. Bard/cleric trailing is a prod-level `defaultKnownSpells` problem (their damage rosters cap at L2), not a sim-picker problem — separate decision. Corpora `baseline_j2c_all10.jsonl` and `baseline_j2c_v2_all10.jsonl` retained for the post-mortem in `sim_results/j2b_findings.md`.
|
||||
|
||||
T5 dragons_lair stays J3's problem — J2 isn't on the hook for it. (J2a will partially overlap J3 hypothesis 1, which already flagged this exact sim-artifact for T5.)
|
||||
|
||||
### J3 — T5 boss universal wall
|
||||
|
||||
@@ -274,9 +303,9 @@ After each of J1/J2/J3 lands:
|
||||
|
||||
J0 first — n=10 noise floor is too high to read 10pp movements; without a tighter baseline we'll chase ghosts.
|
||||
|
||||
J1 and J2 are independent and can ship in either order. J1 is probably easier (Second Wind is a well-understood beat); J2 has more design surface (auto-cast policy, Shield-spell reactions). If only one ships, J1 has the cleaner DoD.
|
||||
J1 shipped 2026-05-17 (commit 519964f) — turn-engine Extra Attack wired. J2 is now reframed (above) from "Mage walls" to a five-class caster boss-survival problem spanning mage/cleric/sorc/warlock/bard; investigation may share a lever or split into per-class fixes after the per-round trace. Cleric likely needs its own intervention regardless.
|
||||
|
||||
J3 can ship in parallel with J1/J2. If sim-artifact, fix is in expedition_sim.go and doesn't touch balance. If a real wall, depends on J1/J2 outcomes — a buffed Fighter or Mage might already reach the boss-doorway more often.
|
||||
J3 can ship in parallel with J2. If sim-artifact, fix is in expedition_sim.go and doesn't touch balance. If a real wall, depends on J2 outcomes — a more durable caster reaching the boss room with slots intact might already reach the boss-doorway more often.
|
||||
|
||||
J4 is the gate. Don't merge a class buff without the validation matrix showing the leader didn't regress.
|
||||
|
||||
@@ -285,7 +314,7 @@ After Phase J converges, return to H4 with a meaningful baseline.
|
||||
### Open questions (J phases)
|
||||
|
||||
- **Sim party scaling.** Sim character = solo player, party of 4, or band? Production is solo. Tune for solo or we make group play trivial. Document the choice.
|
||||
- **Subclass coverage.** Sim builds vanilla-class synthetics (no subclass). Subclass passives at L3+ probably matter a lot for Fighter and Mage. Pick a "best" subclass for the sim or sweep across subclasses in a separate pass.
|
||||
- **Subclass coverage.** Sim builds vanilla-class synthetics (no subclass). Subclass passives at L3+ probably matter a lot — particularly for the five J2 trailers where the subclass often *is* the survival kit (e.g. Bard College of Valor's extra attack, Cleric domains' bonus-action burst). Pick a "best" subclass per class for the sim or sweep across subclasses in a separate pass before pre-committing J2 levers.
|
||||
- **Mage Armor as auto-buff.** Player-side spell they cast, or a passive we toggle? Auto-toggling preserves accessibility-over-crunch but removes a (small) tactical decision. Probably worth auto-toggling and noting it in per-class help.
|
||||
- **Boss consumable refresh.** At T5 elite gates, should the autopilot offer a "rest and re-stock" prompt before the boss? Mirrors real-game tension; closes the sim/prod gap.
|
||||
|
||||
|
||||
@@ -116,8 +116,12 @@ func (p *AdventurePlugin) expeditionCmdList(ctx MessageContext, c *DnDCharacter)
|
||||
var b strings.Builder
|
||||
b.WriteString(fmt.Sprintf("**Expeditions available at L%d** (you can enter zones up to 2 tiers above your current tier):\n\n", c.Level))
|
||||
for i, z := range zones {
|
||||
b.WriteString(fmt.Sprintf("**%d.** %s — _T%d, L%d–%d_ `!expedition start %s`\n",
|
||||
i+1, z.Display, int(z.Tier), z.LevelMin, z.LevelMax, z.ID))
|
||||
suffix := ""
|
||||
if raidContentWarning(z.ID) != "" {
|
||||
suffix = " _⚠ raid-shaped — solo runs not yet survivable_"
|
||||
}
|
||||
b.WriteString(fmt.Sprintf("**%d.** %s — _T%d, L%d–%d_ `!expedition start %s`%s\n",
|
||||
i+1, z.Display, int(z.Tier), z.LevelMin, z.LevelMax, z.ID, suffix))
|
||||
b.WriteString(fmt.Sprintf(" %s\n", z.Atmosphere))
|
||||
}
|
||||
if exp, _ := getActiveExpedition(ctx.Sender); exp != nil {
|
||||
@@ -269,10 +273,31 @@ func (p *AdventurePlugin) expeditionCmdStart(ctx MessageContext, c *DnDCharacter
|
||||
b.WriteString(startLine)
|
||||
b.WriteString("\n\n")
|
||||
}
|
||||
if w := raidContentWarning(zoneID); w != "" {
|
||||
b.WriteString(w)
|
||||
b.WriteString("\n\n")
|
||||
}
|
||||
b.WriteString("Use `!expedition status` for the daily briefing format. Day 1 begins now.")
|
||||
return p.SendDM(ctx.Sender, b.String())
|
||||
}
|
||||
|
||||
// raidContentWarning returns a TwinBee-voiced heads-up for zones whose
|
||||
// boss is tuned for a party rather than a solo adventurer. T5 zones
|
||||
// (Dragon's Lair / Abyss Portal) have boss HP / damage curves that the
|
||||
// solo combat path can't realistically clear — the J3 trace sweep at
|
||||
// L12 showed 0% solo clears across all 10 classes. Until multiplayer
|
||||
// expeditions ship, this is the surface that tells a player what
|
||||
// they're walking into without nerfing the encounter for parties later.
|
||||
func raidContentWarning(zoneID ZoneID) string {
|
||||
switch zoneID {
|
||||
case ZoneDragonsLair:
|
||||
return "⚠ A note before we commit. Infernax doesn't go down to one sword. I've watched better-prepared adventurers walk in here and not walk back out, and I haven't yet seen the lone exception. Bring friends when you can. For tonight — I'm with you anyway."
|
||||
case ZoneAbyssPortal:
|
||||
return "⚠ A note before we commit. Belaxath is the kind of enemy you bring a band to. Not one solo hero has put him down yet, and I'd rather you weren't the first to try. We can still go. I just want the record to show I said this."
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func estimateDays(maxSU, dailyBurn float32) int {
|
||||
if dailyBurn <= 0 {
|
||||
return 0
|
||||
|
||||
@@ -14,6 +14,7 @@ package plugin
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"sort"
|
||||
"time"
|
||||
|
||||
"gogobee/internal/db"
|
||||
@@ -91,6 +92,13 @@ func (s *SimRunner) BuildCharacter(uid id.UserID, class DnDClass, level int) (*D
|
||||
return nil, fmt.Errorf("setSpellSlotsForLevel: %w", err)
|
||||
}
|
||||
}
|
||||
// Populate the known+prepared spell list. ensureSpellsForCharacter is
|
||||
// the canonical seeder used by !setup and the auto-migrate path; prod
|
||||
// players hit it on character create. The sim has to call it
|
||||
// explicitly so simPickSpell sees a real spellbook. No-op for martials.
|
||||
if err := ensureSpellsForCharacter(c); err != nil {
|
||||
return nil, fmt.Errorf("ensureSpellsForCharacter: %w", err)
|
||||
}
|
||||
if err := outfitSimCharacter(uid, level); err != nil {
|
||||
return nil, fmt.Errorf("outfitSimCharacter: %w", err)
|
||||
}
|
||||
@@ -274,8 +282,24 @@ type SimCombatSummary struct {
|
||||
EnemyMisses int
|
||||
PlayerAC int // inferred from RollAgainst on enemy attack events
|
||||
EnemyAC int // inferred from RollAgainst on player attack events
|
||||
// Events is the raw per-round TurnLog. Populated only when
|
||||
// SetSimIncludeTrace(true) has been called, and only on the LAST
|
||||
// combat per expedition (the boss room) to keep JSONL size bounded.
|
||||
// Used by J2 caster-survival analysis.
|
||||
Events []CombatEvent `json:",omitempty"`
|
||||
}
|
||||
|
||||
// simIncludeTrace gates per-round event capture on SimCombatSummary.
|
||||
// Off by default — matrix runs already emit megabytes of summary rows
|
||||
// and the raw turn log multiplies that. SetSimIncludeTrace flips it on
|
||||
// for targeted J2-style diagnostic sweeps.
|
||||
var simIncludeTrace = false
|
||||
|
||||
// SetSimIncludeTrace toggles inclusion of the raw per-round CombatEvent
|
||||
// stream on the LAST SimCombatSummary of each expedition (the boss
|
||||
// room). Callers should flip this on before BuildCharacter / RunExpedition.
|
||||
func SetSimIncludeTrace(on bool) { simIncludeTrace = on }
|
||||
|
||||
// SimLogEntry is a JSONL-friendly projection of one dnd_expedition_log
|
||||
// row. We expose just the fields a post-hoc analyzer needs without
|
||||
// pulling the full ExpeditionEntry type.
|
||||
@@ -442,6 +466,7 @@ func simCombatSummaries(uid id.UserID) []SimCombatSummary {
|
||||
}
|
||||
defer rows.Close()
|
||||
var out []SimCombatSummary
|
||||
var lastEvents []CombatEvent
|
||||
for rows.Next() {
|
||||
var s SimCombatSummary
|
||||
var turnLogJSON string
|
||||
@@ -455,6 +480,7 @@ func simCombatSummaries(uid id.UserID) []SimCombatSummary {
|
||||
if turnLogJSON != "" {
|
||||
_ = json.Unmarshal([]byte(turnLogJSON), &events)
|
||||
}
|
||||
lastEvents = events
|
||||
for _, ev := range events {
|
||||
switch ev.Actor {
|
||||
case "player":
|
||||
@@ -489,6 +515,9 @@ func simCombatSummaries(uid id.UserID) []SimCombatSummary {
|
||||
}
|
||||
out = append(out, s)
|
||||
}
|
||||
if simIncludeTrace && len(out) > 0 {
|
||||
out[len(out)-1].Events = lastEvents
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
@@ -556,13 +585,159 @@ func (s *SimRunner) autoResolveCombat(ctx MessageContext) (bool, error) {
|
||||
case CombatStatusLost, CombatStatusFled:
|
||||
return false, nil
|
||||
}
|
||||
if err := s.P.handleAttackCmd(ctx); err != nil {
|
||||
return false, fmt.Errorf("attack iter %d: %w", i, err)
|
||||
kind, arg := s.simPickCombatAction(ctx.Sender, cur)
|
||||
var dispatchErr error
|
||||
switch kind {
|
||||
case "consume":
|
||||
dispatchErr = s.P.handleConsumeCmd(ctx, arg)
|
||||
case "cast":
|
||||
dispatchErr = s.P.handleCombatCastCmd(ctx, arg)
|
||||
default:
|
||||
dispatchErr = s.P.handleAttackCmd(ctx)
|
||||
}
|
||||
if dispatchErr != nil {
|
||||
return false, fmt.Errorf("%s iter %d: %w", kind, i, dispatchErr)
|
||||
}
|
||||
}
|
||||
return false, fmt.Errorf("combat exceeded %d rounds", autoCombatRoundCap)
|
||||
}
|
||||
|
||||
// simHealHPThresholdPct is the player-HP percentage below which the sim
|
||||
// reaches for a heal consumable before its !attack/!cast. 40% mirrors
|
||||
// the "competent player" prod assumption — heal early enough to absorb
|
||||
// one more big hit, not so early that a 1-HP scratch burns a potion.
|
||||
const simHealHPThresholdPct = 40
|
||||
|
||||
// simPickCombatAction is the sim's per-turn decision tree, mirroring
|
||||
// what a competent prod player would type:
|
||||
//
|
||||
// 1. If HP is below simHealHPThresholdPct and the inventory has a heal
|
||||
// consumable, !consume <heal>. (Slot-spell heals were tried in J2c
|
||||
// but regressed druid by 10pp — slot heals like cure_wounds heal
|
||||
// ~10HP vs 40HP from a tier-4 Spirit Tonic, and burned a slot the
|
||||
// caster needed for damage spells. Consumable-first wins.)
|
||||
// 2. Else if the character is a non-martial-first spellcaster with a
|
||||
// usable damage spell + slot (or a damaging cantrip), !cast it.
|
||||
// Higher-slot damage outranks lower-slot damage. (J2c also tried
|
||||
// scoring control spells; net ±0 vs J2b in the n=100 sweep, and
|
||||
// a higher control weight regressed warlock by 6.6pp — control
|
||||
// scoring was reverted. Bard/cleric trailing remains a class-pool
|
||||
// issue, not a picker issue.)
|
||||
// 3. Else !attack.
|
||||
//
|
||||
// Pre-J2a the sim looped !attack only, which underweighted every caster
|
||||
// class — see sim_results/j2_findings.md for the trace evidence.
|
||||
func (s *SimRunner) simPickCombatAction(uid id.UserID, sess *CombatSession) (kind, arg string) {
|
||||
c, _ := LoadDnDCharacter(uid)
|
||||
if c == nil || sess == nil {
|
||||
return "attack", ""
|
||||
}
|
||||
lowHP := sess.PlayerHPMax > 0 && sess.PlayerHP*100 < sess.PlayerHPMax*simHealHPThresholdPct
|
||||
if lowHP {
|
||||
inv := s.P.loadConsumableInventory(uid)
|
||||
for _, it := range inv {
|
||||
if it.Def.Effect == EffectHeal {
|
||||
return "consume", it.Def.Name
|
||||
}
|
||||
}
|
||||
}
|
||||
if isSpellcaster(c) && !simMartialFirstClass(c.Class) {
|
||||
if id := simPickSpell(c, uid); id != "" {
|
||||
return "cast", id
|
||||
}
|
||||
}
|
||||
return "attack", ""
|
||||
}
|
||||
|
||||
// simMartialFirstClass marks the half-casters whose damage identity is
|
||||
// weapon-attack + ExtraAttack rather than slot spells. Picker skips
|
||||
// !cast for these — Ranger's weapon swing with Hunter's Mark + Extra
|
||||
// Attack out-damages a single Lightning Arrow at L12, and the J2b
|
||||
// re-baseline measured a 35pp regression when the picker burned slots
|
||||
// on damage_save spells for them. Paladin currently has no damage-
|
||||
// effect spells in defaults (kit is bless/cure/buff), so the picker is
|
||||
// already a no-op there; listed here for intent.
|
||||
func simMartialFirstClass(class DnDClass) bool {
|
||||
switch class {
|
||||
case ClassRanger, ClassPaladin:
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// simPickSpell returns the spell ID a competent player would cast this
|
||||
// turn, or "" when no usable spell is available (forcing a !attack).
|
||||
// Selection rules:
|
||||
// - Only damage-effect spells (damage_attack / damage_save / damage_auto).
|
||||
// Control/buff/heal are out (J2c sweep showed control scoring at
|
||||
// either 22 or 5 nets ≤±2pp at L12 and regresses warlock at 22 —
|
||||
// no headroom worth the complexity). Healing is handled by the
|
||||
// consumable-first branch in simPickCombatAction.
|
||||
// - Reaction-cast spells are excluded (engine rejects them).
|
||||
// - Non-cantrips require an available slot at their native level (no
|
||||
// upcasting — preserves high slots for high-level spells).
|
||||
// - Among feasible candidates, prefer higher slot level; tie-break on
|
||||
// expected damage from the dice string.
|
||||
//
|
||||
// Returns the spell ID for handleCombatCastCmd.
|
||||
func simPickSpell(c *DnDCharacter, uid id.UserID) string {
|
||||
known, err := listKnownSpells(uid)
|
||||
if err != nil || len(known) == 0 {
|
||||
return ""
|
||||
}
|
||||
slots, _ := getSpellSlots(uid)
|
||||
type cand struct {
|
||||
id string
|
||||
level int
|
||||
expDmg float64
|
||||
}
|
||||
var cands []cand
|
||||
for _, k := range known {
|
||||
if !k.Prepared {
|
||||
continue
|
||||
}
|
||||
sp, ok := lookupSpell(k.SpellID)
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
switch sp.Effect {
|
||||
case EffectDamageAttack, EffectDamageSave, EffectDamageAuto:
|
||||
default:
|
||||
continue
|
||||
}
|
||||
if sp.CastTime == CastReaction {
|
||||
continue
|
||||
}
|
||||
onList := false
|
||||
for _, cl := range sp.Classes {
|
||||
if cl == c.Class {
|
||||
onList = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !onList {
|
||||
continue
|
||||
}
|
||||
if sp.Level > 0 {
|
||||
pair, ok := slots[sp.Level]
|
||||
if !ok || pair[0]-pair[1] <= 0 {
|
||||
continue
|
||||
}
|
||||
}
|
||||
cands = append(cands, cand{id: sp.ID, level: sp.Level, expDmg: spellExpectedDamage(sp, sp.Level, c.Level)})
|
||||
}
|
||||
if len(cands) == 0 {
|
||||
return ""
|
||||
}
|
||||
sort.Slice(cands, func(i, j int) bool {
|
||||
if cands[i].level != cands[j].level {
|
||||
return cands[i].level > cands[j].level
|
||||
}
|
||||
return cands[i].expDmg > cands[j].expDmg
|
||||
})
|
||||
return cands[0].id
|
||||
}
|
||||
|
||||
// TickDay drives one synthetic day rollover for exp: 21:00 recap of
|
||||
// the current day, then 06:00 briefing of the next day. The briefing
|
||||
// is what bumps current_day and applies supply burn / overnight camp /
|
||||
|
||||
24034
sim_results/baseline_j2a_all10.err
Normal file
24034
sim_results/baseline_j2a_all10.err
Normal file
File diff suppressed because it is too large
Load Diff
15000
sim_results/baseline_j2a_all10.jsonl
Normal file
15000
sim_results/baseline_j2a_all10.jsonl
Normal file
File diff suppressed because it is too large
Load Diff
24015
sim_results/baseline_j2a_v2_all10.err
Normal file
24015
sim_results/baseline_j2a_v2_all10.err
Normal file
File diff suppressed because it is too large
Load Diff
15000
sim_results/baseline_j2a_v2_all10.jsonl
Normal file
15000
sim_results/baseline_j2a_v2_all10.jsonl
Normal file
File diff suppressed because it is too large
Load Diff
24064
sim_results/baseline_j2c_all10.err
Normal file
24064
sim_results/baseline_j2c_all10.err
Normal file
File diff suppressed because it is too large
Load Diff
15000
sim_results/baseline_j2c_all10.jsonl
Normal file
15000
sim_results/baseline_j2c_all10.jsonl
Normal file
File diff suppressed because it is too large
Load Diff
24026
sim_results/baseline_j2c_v2_all10.err
Normal file
24026
sim_results/baseline_j2c_v2_all10.err
Normal file
File diff suppressed because it is too large
Load Diff
15000
sim_results/baseline_j2c_v2_all10.jsonl
Normal file
15000
sim_results/baseline_j2c_v2_all10.jsonl
Normal file
File diff suppressed because it is too large
Load Diff
76
sim_results/j2_findings.md
Normal file
76
sim_results/j2_findings.md
Normal file
@@ -0,0 +1,76 @@
|
||||
# J2 — Caster boss-survival traces (per-round event sweep)
|
||||
|
||||
**Date:** 2026-05-17
|
||||
**Corpus:** `sim_results/j2_traces.jsonl` — 240 expeditions
|
||||
**Cells:** {mage, cleric, sorcerer, warlock, bard, druid} × {manor_blackspire, underdark} × L12 × n=20
|
||||
**Method:** New `-trace` flag on `cmd/expedition-sim` attaches the raw `CombatEvent` stream to the last combat (the boss/elite room) of every expedition. Aggregated in `/tmp/analyze_j2.py`.
|
||||
|
||||
## Headline
|
||||
|
||||
The caster cliff in `baseline_j1_all10.jsonl` is **not a class-balance problem. It is a sim-artifact**: `autoResolveCombat` dispatches `!attack` only — never `!cast`, never `!consume`. Across 240 boss-room fights:
|
||||
|
||||
| Event type | Count |
|
||||
|-------------------------------|------:|
|
||||
| `player` `spell_cast` | **0** |
|
||||
| `player` `use_consumable` | **0** |
|
||||
| `consumable` events | **0** |
|
||||
| `player` `hit` (weapon swing) | 381 |
|
||||
| `player` `thorn_lash` (druid passive) | 261 |
|
||||
|
||||
Every "caster boss-fight" the matrix has scored to date is a melee swing-fest with the caster's spell slots untouched and their consumables sitting in inventory.
|
||||
|
||||
## Class-level per-cell boss-fight rollup (L12)
|
||||
|
||||
| class | zone | n | reachBoss | won | lost | rnd | pDmg | eDmg | slotRuns | casts | noSlot | eHPleft |
|
||||
|----------|------------------|----|-----------|-----|------|-----|------|------|----------|-------|--------|---------|
|
||||
| mage | manor_blackspire | 20 | 10 | 0 | 10 | 7.4 | 27.4 | 89 | **0** | 0 | 10 | 116.6 |
|
||||
| mage | underdark | 20 | 13 | 0 | 13 | 5.4 | 28.7 | 68.1 | **0** | 0 | 13 | 133.3 |
|
||||
| cleric | manor_blackspire | 20 | 7 | 0 | 7 | 7.6 | 28.1 | 101 | **0** | 0 | 7 | 115.9 |
|
||||
| cleric | underdark | 20 | 1 | 0 | 1 | 2 | 12 | 26 | **0** | 0 | 1 | 150 |
|
||||
| sorcerer | manor_blackspire | 20 | 11 | 0 | 11 | 6.8 | 16.9 | 86.2 | **0** | 0 | 11 | 127.1 |
|
||||
| sorcerer | underdark | 20 | 6 | 0 | 6 | 6.5 | 26.8 | 79 | **0** | 0 | 6 | 135.2 |
|
||||
| warlock | manor_blackspire | 20 | 10 | 0 | 10 | 8.8 | 29.9 | 108.4| **0** | 0 | 10 | 114.1 |
|
||||
| warlock | underdark | 20 | 15 | 0 | 15 | 8.6 | 53.4 | 96.1 | **0** | 0 | 15 | 108.6 |
|
||||
| bard | manor_blackspire | 20 | 14 | 0 | 14 | 9.1 | 29.9 | 103.8| **0** | 0 | 14 | 114.1 |
|
||||
| bard | underdark | 20 | 10 | 0 | 10 | 7.8 | 46.9 | 76.5 | **0** | 0 | 10 | 115.1 |
|
||||
| *druid* | manor_blackspire | 20 | 15 | 0 | 15 | 8.1 | 77.8 | 107.5| **0** | 0 | 15 | 66.2 |
|
||||
| *druid* | underdark | 20 | 14 | 0 | 14 | 6.5 | 72.3 | 81.1 | **0** | 0 | 14 | 89.7 |
|
||||
|
||||
Columns: `slotRuns` = boss fights where ≥1 slot spell fired; `casts` = total slot casts; `noSlot` = boss fights with zero casts; `eHPleft` = mean enemy HP remaining at player-loss (the "how close did we come" number).
|
||||
|
||||
## Why druid is the lone outlier at 39% mean clear
|
||||
|
||||
Druid's `ThornLashDmg = 2 + level/4` passive (`dnd_passives.go:210`, Class-identity audit 2026-05-16) fires every time the enemy lands a hit on the player — 5 reactive damage at L12, ×~10–15 enemy hits per fight = 50–75 incidental player damage. That alone accounts for the ~70+ mean `pDmg` druid posts vs 17–53 for the trailers. **Druid is not "tankier than the trailers" — druid is the only class whose damage profile doesn't depend on the spell action**. Wild Shape, the actual durability beat the plan called out, is not wired through `autoResolveCombat` at all; thorn lash is.
|
||||
|
||||
## Reaction-spell hypothesis (plan §6.J2 H2) is moot for now
|
||||
|
||||
`dnd_spells.go` already documents that reaction-cast spells (`shield`, `counterspell`, `hellish_rebuke`) are explicitly skipped today — no reaction window in combat. So even if `autoResolveCombat` were upgraded, Shield-style auto-fires aren't a J2 lever until a reaction phase exists.
|
||||
|
||||
## Conclusion — J2 is hypothesis-3-shaped but the cause is upstream
|
||||
|
||||
The plan listed four hypotheses; the trace evidence speaks to them as follows:
|
||||
|
||||
1. ~~Damage falls off vs boss HP~~ — confounded: cantrip damage was never tested; player only swung weapons.
|
||||
2. ~~No durability backstop~~ — Druid's outperformance is offense (thorn lash), not durability. So the durability gap, if it exists, can't be read from this corpus.
|
||||
3. **Slot/resource economy** — slots aren't being spent in boss fights at all. Confirms casters reach boss "with slots intact" (the plan's optimistic read), but in the worst possible way: the sim refuses to spend them.
|
||||
4. Cleric identity — `simAutoArmDefaultFor` does pre-arm Healing Word for Cleric (`dnd_abilities.go:375`), and that fires on the armed-ability path before combat. But mid-fight casts of Spiritual Weapon / Bless never fire.
|
||||
|
||||
## Recommended J2 lever (replaces the original menu)
|
||||
|
||||
**J2a — Teach `autoResolveCombat` to cast and consume.**
|
||||
Before each `!attack`, the sim should mirror "what a competent prod player would do":
|
||||
|
||||
- If HP < ~40% MaxHP and a heal-tagged consumable is in inventory → dispatch `handleConsumeCmd` with that item.
|
||||
- Else if the character is a spellcaster with available slots and a known damage/control spell that lands → dispatch `handleCastCmd` (priority: damage spell that finishes the enemy → control/stun → buff → cantrip).
|
||||
- Else swing.
|
||||
|
||||
The picker can be small and class-blind for the first cut — pick the highest-level slot whose damage roll most efficiently reduces remaining enemy HP, fall back to a cantrip when slots are dry. Mirror `combat_bridge.go`'s `SelectConsumables` for the heal side.
|
||||
|
||||
**J2b — Re-run baseline matrix with the fixed `autoResolveCombat`.**
|
||||
The current n=100 baseline measures a strawman. Once J2a lands we get a real read on caster boss-survival. Only then is it worth picking class-level levers (or concluding "casters are fine, the sim was lying").
|
||||
|
||||
**Out of J2 scope for now:** Reaction wiring (Shield, Counterspell). Per `dnd_spells.go`'s own comments, the reaction phase doesn't exist yet; lifting that ban is its own surface.
|
||||
|
||||
## Side note — `autoCombatRoundCap` vs the actual constant
|
||||
|
||||
Plan mentions `autoCombatRoundCap = 200`; verified in `expedition_sim.go:528`. No issue, just confirming the harness isn't truncating fights early.
|
||||
398
sim_results/j2_traces.err
Normal file
398
sim_results/j2_traces.err
Normal file
@@ -0,0 +1,398 @@
|
||||
2026/05/17 14:33:32 INFO database initialized path=/tmp/expedition-sim-1435326323/gogobee.db
|
||||
2026/05/17 14:33:32 INFO database initialized path=/tmp/expedition-sim-570080482/gogobee.db
|
||||
2026/05/17 14:33:32 INFO database initialized path=/tmp/expedition-sim-1961067701/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-2587622653/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-1858572084/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-891082602/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-3411481929/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-4180440505/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-1352384336/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-1857658664/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-1053057170/gogobee.db
|
||||
2026/05/17 14:33:33 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-0 ability="Healing Word"
|
||||
2026/05/17 14:33:33 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-0 ability="Healing Word"
|
||||
2026/05/17 14:33:33 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-0 ability="Healing Word"
|
||||
2026/05/17 14:33:33 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-0 wanted=1 removed=0
|
||||
2026/05/17 14:33:33 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-0 wanted=1 removed=0
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-972878641/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-256884369/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-3470319547/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-961022847/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-2323722081/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-2780245983/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-2761994054/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-59185064/gogobee.db
|
||||
2026/05/17 14:33:33 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-1 ability="Healing Word"
|
||||
2026/05/17 14:33:33 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-1 ability="Healing Word"
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-1505145848/gogobee.db
|
||||
2026/05/17 14:33:33 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-1 ability="Healing Word"
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-1383216459/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-1328601750/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-98864978/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-2659914046/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-1386804201/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-163421166/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-220854570/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-3389300164/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-1934711212/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-683711492/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-3235526877/gogobee.db
|
||||
2026/05/17 14:33:33 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-2 ability="Healing Word"
|
||||
2026/05/17 14:33:33 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-2 ability="Healing Word"
|
||||
2026/05/17 14:33:33 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-2 ability="Healing Word"
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-403680368/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-1224265812/gogobee.db
|
||||
2026/05/17 14:33:33 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-2 wanted=1 removed=0
|
||||
2026/05/17 14:33:33 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-2 wanted=1 removed=0
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-3033798307/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-4169972330/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-3094361155/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-39807966/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-2571438535/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-2572980888/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-2578263003/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-2463584493/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-1572790867/gogobee.db
|
||||
2026/05/17 14:33:33 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-3 ability="Healing Word"
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-2937583366/gogobee.db
|
||||
2026/05/17 14:33:33 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-3 ability="Healing Word"
|
||||
2026/05/17 14:33:33 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-3 ability="Healing Word"
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-3613819748/gogobee.db
|
||||
2026/05/17 14:33:33 INFO database initialized path=/tmp/expedition-sim-2540828918/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-1139909187/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-4142969182/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-2019276704/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-2988018196/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-1795837828/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-1760808843/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-2153283131/gogobee.db
|
||||
2026/05/17 14:33:34 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-4 ability="Healing Word"
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-1942277386/gogobee.db
|
||||
2026/05/17 14:33:34 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-4 ability="Healing Word"
|
||||
2026/05/17 14:33:34 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-4 ability="Healing Word"
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-1406817335/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-1271254441/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-854529878/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-1694073851/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-3038451926/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-2343863670/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-1295476148/gogobee.db
|
||||
2026/05/17 14:33:34 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-0 ability="Healing Word"
|
||||
2026/05/17 14:33:34 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-0 ability="Healing Word"
|
||||
2026/05/17 14:33:34 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-0 ability="Healing Word"
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-1125646836/gogobee.db
|
||||
2026/05/17 14:33:34 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-0 wanted=1 removed=0
|
||||
2026/05/17 14:33:34 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-0 wanted=1 removed=0
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-1333512022/gogobee.db
|
||||
2026/05/17 14:33:34 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-5 ability="Healing Word"
|
||||
2026/05/17 14:33:34 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-5 ability="Healing Word"
|
||||
2026/05/17 14:33:34 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-5 ability="Healing Word"
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-220710329/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-3277829553/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-1865701626/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-935594784/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-827715148/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-68986296/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-1012607066/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-2500951803/gogobee.db
|
||||
2026/05/17 14:33:34 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-1 ability="Healing Word"
|
||||
2026/05/17 14:33:34 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-1 ability="Healing Word"
|
||||
2026/05/17 14:33:34 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-1 ability="Healing Word"
|
||||
2026/05/17 14:33:34 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-1 wanted=1 removed=0
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-557441740/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-914070631/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-2271572170/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-2949698724/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-1061067707/gogobee.db
|
||||
2026/05/17 14:33:34 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-6 ability="Healing Word"
|
||||
2026/05/17 14:33:34 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-6 ability="Healing Word"
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-1705075809/gogobee.db
|
||||
2026/05/17 14:33:34 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-6 ability="Healing Word"
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-1523470365/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-3499970093/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-830760784/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-3280978624/gogobee.db
|
||||
2026/05/17 14:33:34 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-2 ability="Healing Word"
|
||||
2026/05/17 14:33:34 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-2 ability="Healing Word"
|
||||
2026/05/17 14:33:34 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-2 ability="Healing Word"
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-307271588/gogobee.db
|
||||
2026/05/17 14:33:34 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-2 wanted=1 removed=0
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-2775243793/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-3018564373/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-3030586970/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-1029269349/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-4002156351/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-183864816/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-3257645146/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-1929325151/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-225751687/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-3615293801/gogobee.db
|
||||
2026/05/17 14:33:34 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-3 ability="Healing Word"
|
||||
2026/05/17 14:33:34 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-3 ability="Healing Word"
|
||||
2026/05/17 14:33:34 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-7 ability="Healing Word"
|
||||
2026/05/17 14:33:34 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-7 ability="Healing Word"
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-576438996/gogobee.db
|
||||
2026/05/17 14:33:34 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-3 ability="Healing Word"
|
||||
2026/05/17 14:33:34 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-3 wanted=1 removed=0
|
||||
2026/05/17 14:33:34 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-7 ability="Healing Word"
|
||||
2026/05/17 14:33:34 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-3 wanted=1 removed=0
|
||||
2026/05/17 14:33:34 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-3 wanted=1 removed=0
|
||||
2026/05/17 14:33:34 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-3 wanted=1 removed=0
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-2421935970/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-1180856031/gogobee.db
|
||||
2026/05/17 14:33:34 INFO database initialized path=/tmp/expedition-sim-2369465835/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-3833483254/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-224923423/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-2726204412/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-2419377482/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-4254550146/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-658875425/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-2977421017/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-2945912897/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-1223443637/gogobee.db
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-4 ability="Healing Word"
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-8 ability="Healing Word"
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-4 ability="Healing Word"
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-8 ability="Healing Word"
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-8 ability="Healing Word"
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-4 ability="Healing Word"
|
||||
2026/05/17 14:33:35 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-4 wanted=1 removed=0
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-1646450137/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-1481312023/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-3507008659/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-1516972004/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-28609871/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-1430768706/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-4220398274/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-1646369506/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-2125090382/gogobee.db
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-5 ability="Healing Word"
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-5 ability="Healing Word"
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-5 ability="Healing Word"
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-1488901552/gogobee.db
|
||||
2026/05/17 14:33:35 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-5 wanted=1 removed=0
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-4060999029/gogobee.db
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-9 ability="Healing Word"
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-9 ability="Healing Word"
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-9 ability="Healing Word"
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-1980401808/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-1684418884/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-1794726509/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-1749345557/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-2740874960/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-3925551982/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-2864919519/gogobee.db
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-6 ability="Healing Word"
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-6 ability="Healing Word"
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-3095718542/gogobee.db
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-6 ability="Healing Word"
|
||||
2026/05/17 14:33:35 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-6 wanted=1 removed=0
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-3373738734/gogobee.db
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-10 ability="Healing Word"
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-3789457226/gogobee.db
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-10 ability="Healing Word"
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-4094310036/gogobee.db
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-10 ability="Healing Word"
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-3470990917/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-3142853546/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-309817808/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-2429653290/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-3580392471/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-597247584/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-2154392471/gogobee.db
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-7 ability="Healing Word"
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-7 ability="Healing Word"
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-7 ability="Healing Word"
|
||||
2026/05/17 14:33:35 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-7 wanted=1 removed=0
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-2565782481/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-3549806484/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-574287783/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-1200079250/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-1394948982/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-847854238/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-1817871372/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-2323220882/gogobee.db
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-2450392709/gogobee.db
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-11 ability="Healing Word"
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-4012828053/gogobee.db
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-11 ability="Healing Word"
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-276814314/gogobee.db
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-11 ability="Healing Word"
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-8 ability="Healing Word"
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-8 ability="Healing Word"
|
||||
2026/05/17 14:33:35 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-8 ability="Healing Word"
|
||||
2026/05/17 14:33:35 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-8 wanted=1 removed=0
|
||||
2026/05/17 14:33:35 INFO database initialized path=/tmp/expedition-sim-133917226/gogobee.db
|
||||
2026/05/17 14:33:35 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-8 wanted=1 removed=0
|
||||
2026/05/17 14:33:36 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-8 wanted=1 removed=0
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-27695044/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-2595221952/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-3729100327/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-40630619/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-1451440739/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-1823882855/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-2323272789/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-1841383835/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-540980082/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-1023722670/gogobee.db
|
||||
2026/05/17 14:33:36 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-9 ability="Healing Word"
|
||||
2026/05/17 14:33:36 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-9 ability="Healing Word"
|
||||
2026/05/17 14:33:36 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-9 ability="Healing Word"
|
||||
2026/05/17 14:33:36 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-9 wanted=1 removed=0
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-776796602/gogobee.db
|
||||
2026/05/17 14:33:36 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-9 wanted=1 removed=0
|
||||
2026/05/17 14:33:36 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-12 ability="Healing Word"
|
||||
2026/05/17 14:33:36 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-12 ability="Healing Word"
|
||||
2026/05/17 14:33:36 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-12 ability="Healing Word"
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-376454587/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-4137125856/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-1977687003/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-482104267/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-4191466593/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-3413343421/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-337500389/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-1161698075/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-3923717903/gogobee.db
|
||||
2026/05/17 14:33:36 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-10 ability="Healing Word"
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-1486542255/gogobee.db
|
||||
2026/05/17 14:33:36 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-10 ability="Healing Word"
|
||||
2026/05/17 14:33:36 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-10 ability="Healing Word"
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-609549845/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-2314709835/gogobee.db
|
||||
2026/05/17 14:33:36 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-13 ability="Healing Word"
|
||||
2026/05/17 14:33:36 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-13 ability="Healing Word"
|
||||
2026/05/17 14:33:36 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-13 ability="Healing Word"
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-2226585091/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-4285465609/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-1152863169/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-1140564116/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-247538292/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-12727718/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-493249432/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-3457453074/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-4126564222/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-2948190870/gogobee.db
|
||||
2026/05/17 14:33:36 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-11 ability="Healing Word"
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-2937358906/gogobee.db
|
||||
2026/05/17 14:33:36 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-11 ability="Healing Word"
|
||||
2026/05/17 14:33:36 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-14 ability="Healing Word"
|
||||
2026/05/17 14:33:36 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-11 ability="Healing Word"
|
||||
2026/05/17 14:33:36 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-14 ability="Healing Word"
|
||||
2026/05/17 14:33:36 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-14 ability="Healing Word"
|
||||
2026/05/17 14:33:36 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-11 wanted=1 removed=0
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-2940956075/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-940255277/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-1219888338/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-1737695406/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-1364107823/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-3928809135/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-2770426133/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-4112019964/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-2920118324/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-841285958/gogobee.db
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-2359475009/gogobee.db
|
||||
2026/05/17 14:33:36 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-12 ability="Healing Word"
|
||||
2026/05/17 14:33:36 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-15 ability="Healing Word"
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-4003732719/gogobee.db
|
||||
2026/05/17 14:33:36 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-15 ability="Healing Word"
|
||||
2026/05/17 14:33:36 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-12 ability="Healing Word"
|
||||
2026/05/17 14:33:36 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-15 ability="Healing Word"
|
||||
2026/05/17 14:33:36 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-12 ability="Healing Word"
|
||||
2026/05/17 14:33:36 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-15 wanted=1 removed=0
|
||||
2026/05/17 14:33:36 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-15 wanted=1 removed=0
|
||||
2026/05/17 14:33:36 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-15 wanted=1 removed=0
|
||||
2026/05/17 14:33:36 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-15 wanted=1 removed=0
|
||||
2026/05/17 14:33:36 INFO database initialized path=/tmp/expedition-sim-1124627013/gogobee.db
|
||||
2026/05/17 14:33:36 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-15 wanted=1 removed=0
|
||||
2026/05/17 14:33:36 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-12 wanted=1 removed=0
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-3360721450/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-2189731270/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-2135723417/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-4081839001/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-3089792466/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-2658215845/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-711568570/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-2452659043/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-690174537/gogobee.db
|
||||
2026/05/17 14:33:37 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-16 ability="Healing Word"
|
||||
2026/05/17 14:33:37 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-16 ability="Healing Word"
|
||||
2026/05/17 14:33:37 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-16 ability="Healing Word"
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-1712861838/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-839790690/gogobee.db
|
||||
2026/05/17 14:33:37 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-13 ability="Healing Word"
|
||||
2026/05/17 14:33:37 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-13 ability="Healing Word"
|
||||
2026/05/17 14:33:37 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-13 ability="Healing Word"
|
||||
2026/05/17 14:33:37 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-13 wanted=1 removed=0
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-2069258505/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-448809708/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-870225890/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-1394846529/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-713189544/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-3333028202/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-3490413428/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-216826575/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-2600575392/gogobee.db
|
||||
2026/05/17 14:33:37 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-17 ability="Healing Word"
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-3247025114/gogobee.db
|
||||
2026/05/17 14:33:37 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-17 ability="Healing Word"
|
||||
2026/05/17 14:33:37 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-17 ability="Healing Word"
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-575813843/gogobee.db
|
||||
2026/05/17 14:33:37 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-17 wanted=1 removed=0
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-852951387/gogobee.db
|
||||
2026/05/17 14:33:37 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-14 ability="Healing Word"
|
||||
2026/05/17 14:33:37 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-14 ability="Healing Word"
|
||||
2026/05/17 14:33:37 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-14 ability="Healing Word"
|
||||
2026/05/17 14:33:37 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-14 wanted=1 removed=0
|
||||
2026/05/17 14:33:37 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-14 wanted=1 removed=0
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-1698113894/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-3570143397/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-2415058239/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-637325677/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-1149336246/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-2613071951/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-4240410874/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-1918837118/gogobee.db
|
||||
2026/05/17 14:33:37 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-18 ability="Healing Word"
|
||||
2026/05/17 14:33:37 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-18 ability="Healing Word"
|
||||
2026/05/17 14:33:37 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-18 ability="Healing Word"
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-1562628221/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-741594747/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-3917775001/gogobee.db
|
||||
2026/05/17 14:33:37 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-15 ability="Healing Word"
|
||||
2026/05/17 14:33:37 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-15 ability="Healing Word"
|
||||
2026/05/17 14:33:37 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-15 ability="Healing Word"
|
||||
2026/05/17 14:33:37 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-15 wanted=1 removed=0
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-1103274777/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-2655969463/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-2440241823/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-3285403820/gogobee.db
|
||||
2026/05/17 14:33:37 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-19 ability="Healing Word"
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-1632108061/gogobee.db
|
||||
2026/05/17 14:33:37 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-19 ability="Healing Word"
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-704442070/gogobee.db
|
||||
2026/05/17 14:33:37 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-19 ability="Healing Word"
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-917462476/gogobee.db
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-702958523/gogobee.db
|
||||
2026/05/17 14:33:37 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-16 ability="Healing Word"
|
||||
2026/05/17 14:33:37 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-16 ability="Healing Word"
|
||||
2026/05/17 14:33:37 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-16 ability="Healing Word"
|
||||
2026/05/17 14:33:37 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-16 wanted=1 removed=0
|
||||
2026/05/17 14:33:37 INFO database initialized path=/tmp/expedition-sim-3461168624/gogobee.db
|
||||
2026/05/17 14:33:38 INFO database initialized path=/tmp/expedition-sim-2994824878/gogobee.db
|
||||
2026/05/17 14:33:38 INFO database initialized path=/tmp/expedition-sim-2518451673/gogobee.db
|
||||
2026/05/17 14:33:38 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-17 ability="Healing Word"
|
||||
2026/05/17 14:33:38 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-17 ability="Healing Word"
|
||||
2026/05/17 14:33:38 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-17 ability="Healing Word"
|
||||
2026/05/17 14:33:38 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-17 wanted=1 removed=0
|
||||
2026/05/17 14:33:38 INFO database initialized path=/tmp/expedition-sim-3320304407/gogobee.db
|
||||
2026/05/17 14:33:38 INFO database initialized path=/tmp/expedition-sim-1135211496/gogobee.db
|
||||
2026/05/17 14:33:38 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-18 ability="Healing Word"
|
||||
2026/05/17 14:33:38 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-18 ability="Healing Word"
|
||||
2026/05/17 14:33:38 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-18 ability="Healing Word"
|
||||
2026/05/17 14:33:38 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-18 wanted=1 removed=0
|
||||
2026/05/17 14:33:38 INFO database initialized path=/tmp/expedition-sim-741208661/gogobee.db
|
||||
2026/05/17 14:33:38 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-19 ability="Healing Word"
|
||||
2026/05/17 14:33:38 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-19 ability="Healing Word"
|
||||
2026/05/17 14:33:38 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-19 ability="Healing Word"
|
||||
2026/05/17 14:33:38 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-19 wanted=1 removed=0
|
||||
2026/05/17 14:33:38 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-19 wanted=1 removed=0
|
||||
240
sim_results/j2_traces.jsonl
Normal file
240
sim_results/j2_traces.jsonl
Normal file
File diff suppressed because one or more lines are too long
151
sim_results/j2a_all10_summary.txt
Normal file
151
sim_results/j2a_all10_summary.txt
Normal file
@@ -0,0 +1,151 @@
|
||||
class level zone n p50_yld p50_yld_clr mean_yld mean_rms %clr %boss %tpk %fled %ext
|
||||
bard 3 dragons_lair 100 0 0 0 0 0 0 0 0 0
|
||||
bard 7 dragons_lair 100 3 0 3.7 5.7 0 24 98 0 2
|
||||
bard 12 dragons_lair 100 3 0 4.2 7.5 0 77 100 0 0
|
||||
cleric 3 dragons_lair 100 0 0 0 0 0 0 0 0 0
|
||||
cleric 7 dragons_lair 100 3 0 3.4 5.4 0 7 100 0 0
|
||||
cleric 12 dragons_lair 100 3 0 3.6 7.1 0 60 100 0 0
|
||||
druid 3 dragons_lair 100 0 0 0 0 0 0 0 0 0
|
||||
druid 7 dragons_lair 100 3 0 3.5 5.8 0 29 99 0 1
|
||||
druid 12 dragons_lair 100 4 0 4.1 7.4 0 72 97 0 3
|
||||
fighter 3 dragons_lair 100 0 0 0 0 0 0 0 0 0
|
||||
fighter 7 dragons_lair 100 3 0 3.9 6.8 0 56 97 0 3
|
||||
fighter 12 dragons_lair 100 3 0 3.6 8 0 99 100 0 0
|
||||
mage 3 dragons_lair 100 0 0 0 0 0 0 0 0 0
|
||||
mage 7 dragons_lair 100 4 0 4.9 5.6 0 25 99 0 1
|
||||
mage 12 dragons_lair 100 5 0 5.5 7.3 0 68 100 0 0
|
||||
paladin 3 dragons_lair 100 0 0 0 0 0 0 0 0 0
|
||||
paladin 7 dragons_lair 100 2 0 3.1 6.9 0 65 99 0 1
|
||||
paladin 12 dragons_lair 100 4 0 4.5 7.9 0 95 100 0 0
|
||||
ranger 3 dragons_lair 100 0 0 0 0 0 0 0 0 0
|
||||
ranger 7 dragons_lair 100 8 0 8.5 7.8 0 91 98 0 2
|
||||
ranger 12 dragons_lair 100 8 0 8.8 8 0 99 100 0 0
|
||||
rogue 3 dragons_lair 100 0 0 0 0 0 0 0 0 0
|
||||
rogue 7 dragons_lair 100 5 0 4.8 6.5 0 53 94 0 6
|
||||
rogue 12 dragons_lair 100 5 0 6.6 7.9 0 97 100 0 0
|
||||
sorcerer 3 dragons_lair 100 0 0 0 0 0 0 0 0 0
|
||||
sorcerer 7 dragons_lair 100 5 0 5.1 5.2 0 18 100 0 0
|
||||
sorcerer 12 dragons_lair 100 5 0 5.4 7.2 0 62 100 0 0
|
||||
warlock 3 dragons_lair 100 0 0 0 0 0 0 0 0 0
|
||||
warlock 7 dragons_lair 100 4 0 4.1 6 0 34 99 0 1
|
||||
warlock 12 dragons_lair 100 4 0 4.4 7.5 0 76 98 0 2
|
||||
bard 3 forest_shadows 100 3 0 4.1 4.2 0 1 100 0 0
|
||||
bard 7 forest_shadows 100 6 0 7.1 6 0 99 100 0 0
|
||||
bard 12 forest_shadows 100 7 7 7.8 7 100 100 0 0 0
|
||||
cleric 3 forest_shadows 100 5 0 5.6 4.7 0 3 100 0 0
|
||||
cleric 7 forest_shadows 100 6 1 6.7 5.7 5 68 95 0 0
|
||||
cleric 12 forest_shadows 100 7 8 8.6 6.6 81 81 19 0 0
|
||||
druid 3 forest_shadows 100 5 0 5.1 5.1 0 13 100 0 0
|
||||
druid 7 forest_shadows 100 6 5 7.6 6.9 91 100 9 0 0
|
||||
druid 12 forest_shadows 100 7 7 7.7 7 100 100 0 0 0
|
||||
fighter 3 forest_shadows 100 5 0 5.8 5.3 0 25 100 0 0
|
||||
fighter 7 forest_shadows 100 6 6 6.5 7 100 100 0 0 0
|
||||
fighter 12 forest_shadows 100 6 6 7.4 7 100 100 0 0 0
|
||||
mage 3 forest_shadows 100 4 0 4.4 3.8 0 0 100 0 0
|
||||
mage 7 forest_shadows 100 6 7 7 6.9 89 98 11 0 0
|
||||
mage 12 forest_shadows 100 7 7 7.4 7 100 100 0 0 0
|
||||
paladin 3 forest_shadows 100 6 0 6.9 5.8 0 77 100 0 0
|
||||
paladin 7 forest_shadows 100 6 6 6.6 7 100 100 0 0 0
|
||||
paladin 12 forest_shadows 100 6 6 6.4 7 100 100 0 0 0
|
||||
ranger 3 forest_shadows 100 12 0 11.8 5.3 0 33 100 0 0
|
||||
ranger 7 forest_shadows 100 16 16 17.5 6 3 100 97 0 0
|
||||
ranger 12 forest_shadows 100 14 14 16 7 100 100 0 0 0
|
||||
rogue 3 forest_shadows 100 5 0 6.3 5.7 0 69 100 0 0
|
||||
rogue 7 forest_shadows 100 6 7 6.9 6.8 80 100 20 0 0
|
||||
rogue 12 forest_shadows 100 7 7 6.9 7 100 100 0 0 0
|
||||
sorcerer 3 forest_shadows 100 3 0 4.1 3.6 0 0 100 0 0
|
||||
sorcerer 7 forest_shadows 100 6 6 7.5 6.5 62 85 38 0 0
|
||||
sorcerer 12 forest_shadows 100 6 6 7.2 7 100 100 0 0 0
|
||||
warlock 3 forest_shadows 100 4 0 4.6 4.1 0 0 100 0 0
|
||||
warlock 7 forest_shadows 100 6 6 6.6 6.4 45 96 55 0 0
|
||||
warlock 12 forest_shadows 100 5 5 6.5 7 100 100 0 0 0
|
||||
bard 3 goblin_warrens 100 5 0 4.8 4.9 0 93 100 0 0
|
||||
bard 7 goblin_warrens 100 4 4 5.4 6 99 99 1 0 0
|
||||
bard 12 goblin_warrens 100 4 4 4.5 6 100 100 0 0 0
|
||||
cleric 3 goblin_warrens 100 4 3 4.3 5 9 86 91 0 0
|
||||
cleric 7 goblin_warrens 100 4 4 5.2 5.9 96 96 4 0 0
|
||||
cleric 12 goblin_warrens 100 4 4 4.9 5.9 96 96 4 0 0
|
||||
druid 3 goblin_warrens 100 5 5 5.1 5.6 67 92 33 0 0
|
||||
druid 7 goblin_warrens 100 3 3 4.1 6 100 100 0 0 0
|
||||
druid 12 goblin_warrens 100 4 4 4.8 6 100 100 0 0 0
|
||||
fighter 3 goblin_warrens 100 4 5 5.1 5.6 66 94 34 0 0
|
||||
fighter 7 goblin_warrens 100 4 4 5.2 6 100 100 0 0 0
|
||||
fighter 12 goblin_warrens 100 4 4 5 6 100 100 0 0 0
|
||||
mage 3 goblin_warrens 100 7 7 6.8 5.6 68 87 32 0 0
|
||||
mage 7 goblin_warrens 100 5 5 6.3 6 100 100 0 0 0
|
||||
mage 12 goblin_warrens 100 7 7 7.5 6 100 100 0 0 0
|
||||
paladin 3 goblin_warrens 100 4 5 5.4 5.8 80 97 20 0 0
|
||||
paladin 7 goblin_warrens 100 5 5 5.5 6 100 100 0 0 0
|
||||
paladin 12 goblin_warrens 100 5 5 6.1 6 100 100 0 0 0
|
||||
ranger 3 goblin_warrens 100 5 0 5.6 4.9 0 89 100 0 0
|
||||
ranger 7 goblin_warrens 100 4 4 5.2 6 100 100 0 0 0
|
||||
ranger 12 goblin_warrens 100 4 4 5.4 6 100 100 0 0 0
|
||||
rogue 3 goblin_warrens 100 8 8 7.7 5.9 86 100 14 0 0
|
||||
rogue 7 goblin_warrens 100 7 7 7.6 6 100 100 0 0 0
|
||||
rogue 12 goblin_warrens 100 7 7 8 6 100 100 0 0 0
|
||||
sorcerer 3 goblin_warrens 100 7 7 7.1 5.5 67 82 33 0 0
|
||||
sorcerer 7 goblin_warrens 100 5 5 6.7 5.9 95 95 5 0 0
|
||||
sorcerer 12 goblin_warrens 100 7 7 7 6 100 100 0 0 0
|
||||
warlock 3 goblin_warrens 100 4 5 4.8 5.3 56 78 44 0 0
|
||||
warlock 7 goblin_warrens 100 5 5 5.3 6 100 100 0 0 0
|
||||
warlock 12 goblin_warrens 100 5 5 5.4 6 100 100 0 0 0
|
||||
bard 3 manor_blackspire 100 4 0 4.5 4.6 0 2 100 0 0
|
||||
bard 7 manor_blackspire 100 4 0 5.3 6 0 54 100 0 0
|
||||
bard 12 manor_blackspire 100 4 3 4.5 6 1 68 99 0 0
|
||||
cleric 3 manor_blackspire 100 3 0 3.9 4.4 0 0 100 0 0
|
||||
cleric 7 manor_blackspire 100 4 0 4.8 5.7 0 32 100 0 0
|
||||
cleric 12 manor_blackspire 100 5 5 5 6 6 58 94 0 0
|
||||
druid 3 manor_blackspire 100 4 0 3.8 5 0 13 100 0 0
|
||||
druid 7 manor_blackspire 100 4 0 4.9 6 0 58 100 0 0
|
||||
druid 12 manor_blackspire 100 4 4 4.4 6.7 71 82 29 0 0
|
||||
fighter 3 manor_blackspire 100 4 0 4.4 5.6 0 15 100 0 0
|
||||
fighter 7 manor_blackspire 100 3 4 3.5 6.2 17 100 83 0 0
|
||||
fighter 12 manor_blackspire 100 5 5 5.2 7 100 100 0 0 0
|
||||
mage 3 manor_blackspire 100 4 0 5.6 3.9 0 0 100 0 0
|
||||
mage 7 manor_blackspire 100 6 12 6.6 6 2 50 98 0 0
|
||||
mage 12 manor_blackspire 100 5 6 6.1 6.5 46 68 54 0 0
|
||||
paladin 3 manor_blackspire 100 3 0 4 5.7 0 42 100 0 0
|
||||
paladin 7 manor_blackspire 100 3 3 4.3 6.1 5 99 95 0 0
|
||||
paladin 12 manor_blackspire 100 4 4 4.3 6.9 91 100 9 0 0
|
||||
ranger 3 manor_blackspire 100 4 0 5 5.4 0 17 100 0 0
|
||||
ranger 7 manor_blackspire 100 5 0 5.8 6 0 100 100 0 0
|
||||
ranger 12 manor_blackspire 100 5 5 5.1 6.1 10 100 90 0 0
|
||||
rogue 3 manor_blackspire 100 6 0 6.6 5.6 0 42 100 0 0
|
||||
rogue 7 manor_blackspire 100 6 0 7.1 6 0 98 100 0 0
|
||||
rogue 12 manor_blackspire 100 6 6 6.6 6.8 82 100 18 0 0
|
||||
sorcerer 3 manor_blackspire 100 5 0 5.2 3.6 0 0 100 0 0
|
||||
sorcerer 7 manor_blackspire 100 7 0 8 5.9 0 40 100 0 0
|
||||
sorcerer 12 manor_blackspire 100 5 5 7 6.5 47 69 53 0 0
|
||||
warlock 3 manor_blackspire 100 4 0 4.8 4.4 0 0 100 0 0
|
||||
warlock 7 manor_blackspire 100 4 0 5.4 6 0 49 100 0 0
|
||||
warlock 12 manor_blackspire 100 5 4 5.5 6.3 27 80 73 0 0
|
||||
bard 3 underdark 100 0 0 0 0 0 0 0 0 0
|
||||
bard 7 underdark 100 2 0 3 3.7 0 5 100 0 0
|
||||
bard 12 underdark 100 4 0 4.4 5.7 0 64 100 0 0
|
||||
cleric 3 underdark 100 0 0 0 0 0 0 0 0 0
|
||||
cleric 7 underdark 100 2 0 3.5 3.1 0 1 100 0 0
|
||||
cleric 12 underdark 100 3 0 4.3 4.8 1 10 99 0 0
|
||||
druid 3 underdark 100 0 0 0 0 0 0 0 0 0
|
||||
druid 7 underdark 100 4 0 3.9 3.7 0 4 100 0 0
|
||||
druid 12 underdark 100 5 5 5.7 6.2 33 77 67 0 0
|
||||
fighter 3 underdark 100 0 0 0 0 0 0 0 0 0
|
||||
fighter 7 underdark 100 4 6 5.5 6.1 10 90 90 0 0
|
||||
fighter 12 underdark 100 4 4 4.7 7 100 100 0 0 0
|
||||
mage 3 underdark 100 0 0 0 0 0 0 0 0 0
|
||||
mage 7 underdark 100 2 0 2.9 3.4 0 1 100 0 0
|
||||
mage 12 underdark 100 3 4 4.2 5.6 17 44 83 0 0
|
||||
paladin 3 underdark 100 0 0 0 0 0 0 0 0 0
|
||||
paladin 7 underdark 100 5 0 5.5 5.9 0 89 100 0 0
|
||||
paladin 12 underdark 100 4 4 4.7 6.9 87 100 13 0 0
|
||||
ranger 3 underdark 100 0 0 0 0 0 0 0 0 0
|
||||
ranger 7 underdark 100 10 0 11.8 6 0 98 100 0 0
|
||||
ranger 12 underdark 100 10 16 10.1 6 4 100 96 0 0
|
||||
rogue 3 underdark 100 0 0 0 0 0 0 0 0 0
|
||||
rogue 7 underdark 100 5 3 5.3 5.9 1 78 99 0 0
|
||||
rogue 12 underdark 100 4 4 5 7 99 100 1 0 0
|
||||
sorcerer 3 underdark 100 0 0 0 0 0 0 0 0 0
|
||||
sorcerer 7 underdark 100 2 0 3.1 3.1 0 1 100 0 0
|
||||
sorcerer 12 underdark 100 3 3 3.6 5.1 10 29 90 0 0
|
||||
warlock 3 underdark 100 0 0 0 0 0 0 0 0 0
|
||||
warlock 7 underdark 100 3 0 4 3.6 0 5 100 0 0
|
||||
warlock 12 underdark 100 5 7 5.3 5.8 9 64 91 0 0
|
||||
67
sim_results/j2a_findings.md
Normal file
67
sim_results/j2a_findings.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# J2a — autoResolveCombat cast+consume picker (verification sweep)
|
||||
|
||||
**Date:** 2026-05-17
|
||||
**Corpus:** `sim_results/j2a_traces.jsonl` — 240 runs (6 classes × {manor_blackspire, underdark} × L12 × n=20)
|
||||
**Pre-state corpus:** `sim_results/j2_traces.jsonl` (same shape, picker disabled). See [j2_findings.md](j2_findings.md) for the strawman diagnosis that motivated this fix.
|
||||
|
||||
## What J2a shipped
|
||||
|
||||
- `internal/plugin/expedition_sim.go`:
|
||||
- New `simPickCombatAction(uid, sess)` decision tree:
|
||||
1. HP < 40% MaxHP + heal consumable in inventory → `!consume <heal>`
|
||||
2. Caster with a usable damage spell (slot or cantrip) → `!cast <spell>`
|
||||
3. Otherwise → `!attack`
|
||||
- New `simPickSpell(c, uid)` ranks prepared damage-effect spells by slot level (descending) then expected damage from the dice string. Reaction-cast spells excluded; non-cantrips require an available slot at their native level (no upcasting in v1).
|
||||
- `BuildCharacter` now calls `ensureSpellsForCharacter` so the synthetic spellbook is populated (prod players hit this on character creation; the sim path skipped it).
|
||||
- `autoResolveCombat` dispatches via the picker instead of always swinging.
|
||||
|
||||
Built on top of the per-round `-trace` plumbing landed earlier in J2 (`SimCombatSummary.Events`, `SetSimIncludeTrace`).
|
||||
|
||||
## Verification (n=20 per cell, L12 only — same cells as j2_findings)
|
||||
|
||||
| class | zone | n | reachBoss | won | lost | rnd | pDmg | eDmg | slotRuns | casts | consumeRuns | eHP@loss |
|
||||
|----------|------------------|----|-----------|-----|------|------|-------|-------|----------|-------|-------------|----------|
|
||||
| mage | manor_blackspire | 20 | 15 | **12** | 3 | 7.2 | 133.0 | 74.3 | 15 / 15 | 93 | 12 | 83.3 |
|
||||
| mage | underdark | 20 | 8 | 3 | 5 | 7.0 | 143.8 | 78.6 | 8 / 8 | 54 | 2 | 34.2 |
|
||||
| cleric | manor_blackspire | 20 | 6 | 2 | 4 | 11.3 | 101.3 | 146.2 | 6 / 6 | 58 | 5 | 64.8 |
|
||||
| cleric | underdark | 20 | 4 | 0 | 4 | 7.0 | 74.5 | 89.5 | 4 / 4 | 28 | 0 | 87.5 |
|
||||
| sorcerer | manor_blackspire | 20 | 13 | **9** | 4 | 8.0 | 130.9 | 87.3 | 13 / 13 | 91 | 8 | 53.2 |
|
||||
| sorcerer | underdark | 20 | 7 | 1 | 6 | 5.9 | 89.6 | 67.4 | 7 / 7 | 40 | 1 | 86.2 |
|
||||
| warlock | manor_blackspire | 20 | 12 | 6 | 6 | 13.2 | 131.0 | 140.6 | 12 / 12 | 141 | 9 | 45.5 |
|
||||
| warlock | underdark | 20 | 15 | 0 | 15 | 6.8 | 74.3 | 82.5 | 15 / 15 | 101 | 1 | 87.7 |
|
||||
| bard | manor_blackspire | 20 | 12 | 0 | 12 | 10.6 | 68.1 | 128.2 | 12 / 12 | 117 | 6 | 75.9 |
|
||||
| bard | underdark | 20 | 12 | 0 | 12 | 11.2 | 74.3 | 108.8 | 12 / 12 | 132 | 2 | 87.7 |
|
||||
| druid | manor_blackspire | 20 | 15 | **14** | 1 | 6.9 | 142.6 | 84.5 | 15 / 15 | 87 | 11 | 79.0 |
|
||||
| druid | underdark | 20 | 18 | 3 | 15 | 5.1 | 123.3 | 82.3 | 18 / 18 | 85 | 5 | 47.5 |
|
||||
|
||||
`slotRuns` = boss fights where ≥1 spell_cast fired. `casts` = total spell_cast events. `consumeRuns` = fights with ≥1 use_consumable. `eHP@loss` = mean enemy HP remaining when player lost.
|
||||
|
||||
## DoD check
|
||||
|
||||
- **J2a DoD: ≥80% of boss fights produce a cast or consumable use.** **MET** — every cell shows `slotRuns == reachBoss` (100% cast rate).
|
||||
- Manor mean clear (5 trailer casters): mage 60%, sorcerer 45%, warlock 30%, bard 0%, cleric 10%. Mage and sorcerer clear the ≥40% J2 target on the strength of the sim fix alone; warlock/cleric are close, bard is the one outlier still at zero.
|
||||
- Druid jumped 0% → 70% manor / 0% → 15% underdark. Pre-J2a it was the lone mid-band class on weapon-attack alone; with cast on top, druid pulls into the top tier.
|
||||
|
||||
## What's still broken and why
|
||||
|
||||
- **Bard 0% clear despite firing 117 casts/cell.** Bard's prepared damage spell registry is thin: `vicious_mockery` cantrip (4d4 at L11) and `shatter` L2 (3d8) are the only damage-effect options in `defaultKnownSpells`. Every other bard spell is control/buff/heal, which the v1 picker skips. Bard's average pDmg 68 in 11-round fights = 6/round — that's accurate for the spell pool, not a picker bug. Fix candidates: (a) extend bard's default known-spell list with a damage L3+; (b) widen picker to score `EffectControl` (hold_person, hypnotic_pattern) which trivializes enemy turns and effectively converts to damage by buying free player rounds; (c) include healing spells in the consume-priority path. **(b)** has the highest expected ROI and lifts cleric and warlock too.
|
||||
- **Cleric still bottom-of-table.** 10% manor / 0% underdark. Cleric's damage-effect spells: `sacred_flame` cantrip (4d8 at L11) — that's it. Same shape problem as bard. `spiritual_weapon`, `bless`, `guiding_bolt`, `cure_wounds` aren't reachable by the v1 picker. Fix: same as bard — score control spells and recognise heal spells as alternatives to consumables (cleric has 40-HP healing word at low slot cost).
|
||||
- **Warlock underdark 0%.** Different shape: high cast rate (101 casts/15 fights = 7/round), high player damage (74), but loses anyway because enemy damage averaged 82.5 and warlock has no defensive lever. Underdark boss is dropping warlock before warlock can drop it. This is a class-balance problem the post-J2b corpus needs to confirm before we move on.
|
||||
|
||||
## Implications for J2b (the big re-baseline)
|
||||
|
||||
A full n=100 all-classes baseline (`sim_results/baseline_j2a_all10.jsonl`) is kicked off; that replaces `baseline_j1_all10.jsonl` as the canonical post-fix corpus. Expected shape:
|
||||
|
||||
- Mage / sorcerer / druid pull into mid-band (40–70% L12 clear range).
|
||||
- Bard / cleric stay at bottom, but the *reason* is a thin damage-spell pool, not a sim artifact.
|
||||
- Warlock somewhere middle; partial-clear depending on zone.
|
||||
- Martials should be unchanged (picker is a no-op for non-casters with no low-HP heal trigger).
|
||||
|
||||
If that picture holds, the right J2 follow-up is **picker widening** (control + heal scoring) rather than per-class balance riders. Cleaner than five class buffs.
|
||||
|
||||
## Files touched
|
||||
|
||||
- `internal/plugin/expedition_sim.go` — picker, BuildCharacter spell-seed, dispatch in autoResolveCombat.
|
||||
- `cmd/expedition-sim/main.go` — already had `-trace` from earlier in J2.
|
||||
|
||||
No prod paths changed. The fix is sim-scoped.
|
||||
406
sim_results/j2a_traces.err
Normal file
406
sim_results/j2a_traces.err
Normal file
@@ -0,0 +1,406 @@
|
||||
2026/05/17 14:43:54 INFO database initialized path=/tmp/expedition-sim-2841882662/gogobee.db
|
||||
2026/05/17 14:43:54 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-0 ability="Healing Word"
|
||||
2026/05/17 14:43:54 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-0 ability="Healing Word"
|
||||
2026/05/17 14:43:54 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-0 ability="Healing Word"
|
||||
2026/05/17 14:43:54 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-0 wanted=1 removed=0
|
||||
2026/05/17 14:43:54 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-0 wanted=1 removed=0
|
||||
2026/05/17 14:43:54 INFO database initialized path=/tmp/expedition-sim-225352482/gogobee.db
|
||||
2026/05/17 14:43:54 INFO database initialized path=/tmp/expedition-sim-4205788393/gogobee.db
|
||||
2026/05/17 14:43:54 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-1 ability="Healing Word"
|
||||
2026/05/17 14:43:54 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-1 ability="Healing Word"
|
||||
2026/05/17 14:43:54 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-1 ability="Healing Word"
|
||||
2026/05/17 14:43:54 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-1 wanted=1 removed=0
|
||||
2026/05/17 14:43:54 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-1 wanted=1 removed=0
|
||||
2026/05/17 14:43:54 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-1 wanted=1 removed=0
|
||||
2026/05/17 14:43:54 INFO database initialized path=/tmp/expedition-sim-1930907323/gogobee.db
|
||||
2026/05/17 14:43:54 INFO database initialized path=/tmp/expedition-sim-2608712787/gogobee.db
|
||||
2026/05/17 14:43:54 INFO database initialized path=/tmp/expedition-sim-1176694106/gogobee.db
|
||||
2026/05/17 14:43:54 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-0 ability="Healing Word"
|
||||
2026/05/17 14:43:54 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-0 ability="Healing Word"
|
||||
2026/05/17 14:43:54 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-0 ability="Healing Word"
|
||||
2026/05/17 14:43:54 INFO database initialized path=/tmp/expedition-sim-2955343031/gogobee.db
|
||||
2026/05/17 14:43:54 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-2 ability="Healing Word"
|
||||
2026/05/17 14:43:54 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-2 ability="Healing Word"
|
||||
2026/05/17 14:43:54 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-2 ability="Healing Word"
|
||||
2026/05/17 14:43:54 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-2 wanted=1 removed=0
|
||||
2026/05/17 14:43:54 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-2 wanted=1 removed=0
|
||||
2026/05/17 14:43:54 INFO database initialized path=/tmp/expedition-sim-4034633129/gogobee.db
|
||||
2026/05/17 14:43:54 INFO database initialized path=/tmp/expedition-sim-2929207905/gogobee.db
|
||||
2026/05/17 14:43:54 INFO database initialized path=/tmp/expedition-sim-2110260434/gogobee.db
|
||||
2026/05/17 14:43:54 INFO database initialized path=/tmp/expedition-sim-2284107973/gogobee.db
|
||||
2026/05/17 14:43:54 INFO database initialized path=/tmp/expedition-sim-412795061/gogobee.db
|
||||
2026/05/17 14:43:54 INFO database initialized path=/tmp/expedition-sim-1173027611/gogobee.db
|
||||
2026/05/17 14:43:54 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-1 ability="Healing Word"
|
||||
2026/05/17 14:43:54 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-1 ability="Healing Word"
|
||||
2026/05/17 14:43:54 INFO database initialized path=/tmp/expedition-sim-2445381708/gogobee.db
|
||||
2026/05/17 14:43:54 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-1 ability="Healing Word"
|
||||
2026/05/17 14:43:54 INFO database initialized path=/tmp/expedition-sim-1821032632/gogobee.db
|
||||
2026/05/17 14:43:54 INFO database initialized path=/tmp/expedition-sim-2786520320/gogobee.db
|
||||
2026/05/17 14:43:54 INFO database initialized path=/tmp/expedition-sim-3005065205/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-791965660/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-2223320144/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-60870279/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-3836426391/gogobee.db
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-3 ability="Healing Word"
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-3 ability="Healing Word"
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-3 ability="Healing Word"
|
||||
2026/05/17 14:43:55 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-3 wanted=1 removed=0
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-3903226518/gogobee.db
|
||||
2026/05/17 14:43:55 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-3 wanted=1 removed=0
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-3424518245/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-3911775726/gogobee.db
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-2 ability="Healing Word"
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-2 ability="Healing Word"
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-2 ability="Healing Word"
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-557009472/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-891659795/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-2790310577/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-1893494180/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-2599204073/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-3107205757/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-3202057156/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-2588260230/gogobee.db
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-4 ability="Healing Word"
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-4 ability="Healing Word"
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-4 ability="Healing Word"
|
||||
2026/05/17 14:43:55 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-4 wanted=1 removed=0
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-173844620/gogobee.db
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-3 ability="Healing Word"
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-3 ability="Healing Word"
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-3 ability="Healing Word"
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-3411128379/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-3548322566/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-3088530070/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-591597397/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-2749783546/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-2720689093/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-1695224480/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-957000268/gogobee.db
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-5 ability="Healing Word"
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-5 ability="Healing Word"
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-5 ability="Healing Word"
|
||||
2026/05/17 14:43:55 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-5 wanted=1 removed=0
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-1260755451/gogobee.db
|
||||
2026/05/17 14:43:55 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-5 wanted=1 removed=0
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-974084076/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-2721135246/gogobee.db
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-4 ability="Healing Word"
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-4 ability="Healing Word"
|
||||
2026/05/17 14:43:55 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-4 wanted=1 removed=0
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-4 ability="Healing Word"
|
||||
2026/05/17 14:43:55 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-4 wanted=1 removed=0
|
||||
2026/05/17 14:43:55 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-4 wanted=1 removed=0
|
||||
2026/05/17 14:43:55 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-4 wanted=1 removed=0
|
||||
2026/05/17 14:43:55 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-4 wanted=1 removed=0
|
||||
2026/05/17 14:43:55 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-4 wanted=1 removed=0
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-1048519529/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-1682387304/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-657608895/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-1564107756/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-3063072436/gogobee.db
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-6 ability="Healing Word"
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-6 ability="Healing Word"
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-3622268633/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-1467797736/gogobee.db
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-6 ability="Healing Word"
|
||||
2026/05/17 14:43:55 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-6 wanted=1 removed=0
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-2232860775/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-2627481174/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-2390666327/gogobee.db
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-5 ability="Healing Word"
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-5 ability="Healing Word"
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-5 ability="Healing Word"
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-1914770656/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-2824103805/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-95110996/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-2829759744/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-1001150422/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-929451847/gogobee.db
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-7 ability="Healing Word"
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-7 ability="Healing Word"
|
||||
2026/05/17 14:43:55 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-7 ability="Healing Word"
|
||||
2026/05/17 14:43:55 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-7 wanted=1 removed=0
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-3436574612/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-2958798854/gogobee.db
|
||||
2026/05/17 14:43:55 INFO database initialized path=/tmp/expedition-sim-2592630111/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-31480089/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-2243703025/gogobee.db
|
||||
2026/05/17 14:43:56 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-6 ability="Healing Word"
|
||||
2026/05/17 14:43:56 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-6 ability="Healing Word"
|
||||
2026/05/17 14:43:56 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-6 ability="Healing Word"
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-2613244335/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-395237346/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-3326655556/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-1845800138/gogobee.db
|
||||
2026/05/17 14:43:56 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-8 ability="Healing Word"
|
||||
2026/05/17 14:43:56 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-8 ability="Healing Word"
|
||||
2026/05/17 14:43:56 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-8 ability="Healing Word"
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-2772701177/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-3972849183/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-3672392659/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-313329452/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-586346631/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-2765126792/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-1436131991/gogobee.db
|
||||
2026/05/17 14:43:56 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-7 ability="Healing Word"
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-341586518/gogobee.db
|
||||
2026/05/17 14:43:56 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-7 ability="Healing Word"
|
||||
2026/05/17 14:43:56 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-7 ability="Healing Word"
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-195889630/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-1979402690/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-1419244121/gogobee.db
|
||||
2026/05/17 14:43:56 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-9 ability="Healing Word"
|
||||
2026/05/17 14:43:56 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-9 ability="Healing Word"
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-197539845/gogobee.db
|
||||
2026/05/17 14:43:56 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-9 ability="Healing Word"
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-4032773905/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-3701142355/gogobee.db
|
||||
2026/05/17 14:43:56 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-9 wanted=1 removed=0
|
||||
2026/05/17 14:43:56 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-9 wanted=1 removed=0
|
||||
2026/05/17 14:43:56 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-9 wanted=1 removed=0
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-3902897193/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-808797586/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-4136221636/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-1986950995/gogobee.db
|
||||
2026/05/17 14:43:56 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-8 ability="Healing Word"
|
||||
2026/05/17 14:43:56 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-8 ability="Healing Word"
|
||||
2026/05/17 14:43:56 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-8 wanted=1 removed=0
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-1859825555/gogobee.db
|
||||
2026/05/17 14:43:56 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-8 ability="Healing Word"
|
||||
2026/05/17 14:43:56 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-8 wanted=1 removed=0
|
||||
2026/05/17 14:43:56 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-8 wanted=1 removed=0
|
||||
2026/05/17 14:43:56 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-8 wanted=1 removed=0
|
||||
2026/05/17 14:43:56 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-8 wanted=1 removed=0
|
||||
2026/05/17 14:43:56 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-8 wanted=1 removed=0
|
||||
2026/05/17 14:43:56 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-8 wanted=1 removed=0
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-2946961527/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-2429531262/gogobee.db
|
||||
2026/05/17 14:43:56 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-10 ability="Healing Word"
|
||||
2026/05/17 14:43:56 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-10 ability="Healing Word"
|
||||
2026/05/17 14:43:56 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-10 ability="Healing Word"
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-3262540763/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-406280733/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-4121783865/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-3886271696/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-755937194/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-2787117412/gogobee.db
|
||||
2026/05/17 14:43:56 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-9 ability="Healing Word"
|
||||
2026/05/17 14:43:56 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-9 ability="Healing Word"
|
||||
2026/05/17 14:43:56 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-9 ability="Healing Word"
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-1277058289/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-4186523944/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-3400700333/gogobee.db
|
||||
2026/05/17 14:43:56 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-11 ability="Healing Word"
|
||||
2026/05/17 14:43:56 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-11 ability="Healing Word"
|
||||
2026/05/17 14:43:56 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-11 ability="Healing Word"
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-2057624917/gogobee.db
|
||||
2026/05/17 14:43:56 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-11 wanted=1 removed=0
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-893758964/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-2865260923/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-893271695/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-1834209609/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-259340017/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-443152924/gogobee.db
|
||||
2026/05/17 14:43:56 INFO database initialized path=/tmp/expedition-sim-534798107/gogobee.db
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-12 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-12 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-12 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-1492944299/gogobee.db
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-10 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-10 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-10 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-1329640727/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-3510807036/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-1677312784/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-2967123722/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-3955369742/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-1638843092/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-3971836417/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-1265464193/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-2557575696/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-4287591977/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-2698331497/gogobee.db
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-13 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-13 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-13 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-2910676030/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-1627295865/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-3781791468/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-1091889186/gogobee.db
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-11 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-11 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-11 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-1848832537/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-1083592695/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-3484468071/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-223486995/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-2518075308/gogobee.db
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-14 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-14 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-3752040653/gogobee.db
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-14 ability="Healing Word"
|
||||
2026/05/17 14:43:57 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-14 wanted=1 removed=0
|
||||
2026/05/17 14:43:57 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-14 wanted=1 removed=0
|
||||
2026/05/17 14:43:57 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-14 wanted=1 removed=0
|
||||
2026/05/17 14:43:57 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-14 wanted=1 removed=0
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-3390344411/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-150176521/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-3536451781/gogobee.db
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-12 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-12 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-12 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-3886065500/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-1109050757/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-4152157644/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-4170366951/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-2833450096/gogobee.db
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-15 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-1445222612/gogobee.db
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-15 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-15 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-3602208598/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-1802403687/gogobee.db
|
||||
2026/05/17 14:43:57 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-15 wanted=1 removed=0
|
||||
2026/05/17 14:43:57 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-15 wanted=1 removed=0
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-464538117/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-591307153/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-1657565653/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-1067707991/gogobee.db
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-13 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-13 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-13 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-1130536036/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-555324116/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-979982115/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-564817425/gogobee.db
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-1918459856/gogobee.db
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-16 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-2353824581/gogobee.db
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-16 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-16 ability="Healing Word"
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-1599178712/gogobee.db
|
||||
2026/05/17 14:43:57 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-16 wanted=1 removed=0
|
||||
2026/05/17 14:43:57 INFO database initialized path=/tmp/expedition-sim-2711333189/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-3845334846/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-1943741524/gogobee.db
|
||||
2026/05/17 14:43:58 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-14 ability="Healing Word"
|
||||
2026/05/17 14:43:58 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-14 ability="Healing Word"
|
||||
2026/05/17 14:43:58 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-14 ability="Healing Word"
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-3108660236/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-4121050120/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-2311303713/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-106280646/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-1575016660/gogobee.db
|
||||
2026/05/17 14:43:58 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-17 ability="Healing Word"
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-2656288065/gogobee.db
|
||||
2026/05/17 14:43:58 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-17 ability="Healing Word"
|
||||
2026/05/17 14:43:58 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-17 ability="Healing Word"
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-719488742/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-1262298393/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-2481790746/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-2256556235/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-2013936558/gogobee.db
|
||||
2026/05/17 14:43:58 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-15 ability="Healing Word"
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-4204714177/gogobee.db
|
||||
2026/05/17 14:43:58 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-15 ability="Healing Word"
|
||||
2026/05/17 14:43:58 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-15 wanted=1 removed=0
|
||||
2026/05/17 14:43:58 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-15 ability="Healing Word"
|
||||
2026/05/17 14:43:58 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-15 wanted=1 removed=0
|
||||
2026/05/17 14:43:58 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-15 wanted=1 removed=0
|
||||
2026/05/17 14:43:58 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-15 wanted=1 removed=0
|
||||
2026/05/17 14:43:58 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-15 wanted=1 removed=0
|
||||
2026/05/17 14:43:58 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-15 wanted=1 removed=0
|
||||
2026/05/17 14:43:58 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-manor_blackspire-15 wanted=1 removed=0
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-2304427836/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-1363285098/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-1907634492/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-2542100338/gogobee.db
|
||||
2026/05/17 14:43:58 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-18 ability="Healing Word"
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-2279242167/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-487534128/gogobee.db
|
||||
2026/05/17 14:43:58 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-18 ability="Healing Word"
|
||||
2026/05/17 14:43:58 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-18 ability="Healing Word"
|
||||
2026/05/17 14:43:58 WARN auto-heal cleanup: short on inventory user=@sim:cleric-l12-underdark-18 wanted=1 removed=0
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-3871894932/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-3809454218/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-3398006598/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-4239387458/gogobee.db
|
||||
2026/05/17 14:43:58 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-16 ability="Healing Word"
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-3581761743/gogobee.db
|
||||
2026/05/17 14:43:58 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-16 ability="Healing Word"
|
||||
2026/05/17 14:43:58 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-16 ability="Healing Word"
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-3490615026/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-2753050590/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-886249041/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-3732143829/gogobee.db
|
||||
2026/05/17 14:43:58 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-19 ability="Healing Word"
|
||||
2026/05/17 14:43:58 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-19 ability="Healing Word"
|
||||
2026/05/17 14:43:58 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-underdark-19 ability="Healing Word"
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-1506959/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-1569482860/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-1104745961/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-1619123479/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-1516630739/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-1113187191/gogobee.db
|
||||
2026/05/17 14:43:58 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-17 ability="Healing Word"
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-1860557687/gogobee.db
|
||||
2026/05/17 14:43:58 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-17 ability="Healing Word"
|
||||
2026/05/17 14:43:58 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-17 ability="Healing Word"
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-189211669/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-2904984255/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-1696777558/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-2383322429/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-910046284/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-3952079025/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-260516460/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-4221126017/gogobee.db
|
||||
2026/05/17 14:43:58 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-18 ability="Healing Word"
|
||||
2026/05/17 14:43:58 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-18 ability="Healing Word"
|
||||
2026/05/17 14:43:58 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-18 ability="Healing Word"
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-3199452696/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-401258720/gogobee.db
|
||||
2026/05/17 14:43:58 INFO database initialized path=/tmp/expedition-sim-3635517879/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-1840100184/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-3744271099/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-2513846601/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-4136361311/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-2024110754/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-3010651090/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-3550751545/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-4130428632/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-1514264878/gogobee.db
|
||||
2026/05/17 14:43:59 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-19 ability="Healing Word"
|
||||
2026/05/17 14:43:59 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-19 ability="Healing Word"
|
||||
2026/05/17 14:43:59 INFO dnd: armed ability fired (turn-based build) user=@sim:cleric-l12-manor_blackspire-19 ability="Healing Word"
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-2880784602/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-4289186554/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-4146683819/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-160060743/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-353707644/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-1636999209/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-3390283268/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-826756018/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-547509131/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-4022639383/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-3551275989/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-1302856577/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-2850236305/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-2113733943/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-2254598562/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-254159564/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-739650239/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-2204564464/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-2356786064/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-2226186626/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-1705628391/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-634290542/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-1269283242/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-3919510895/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-1823197516/gogobee.db
|
||||
2026/05/17 14:43:59 INFO database initialized path=/tmp/expedition-sim-2557976063/gogobee.db
|
||||
2026/05/17 14:44:00 INFO database initialized path=/tmp/expedition-sim-357381407/gogobee.db
|
||||
2026/05/17 14:44:00 INFO database initialized path=/tmp/expedition-sim-53293036/gogobee.db
|
||||
2026/05/17 14:44:00 INFO database initialized path=/tmp/expedition-sim-1739792480/gogobee.db
|
||||
2026/05/17 14:44:00 INFO database initialized path=/tmp/expedition-sim-2016742342/gogobee.db
|
||||
2026/05/17 14:44:00 INFO database initialized path=/tmp/expedition-sim-1658638379/gogobee.db
|
||||
2026/05/17 14:44:00 INFO database initialized path=/tmp/expedition-sim-139478709/gogobee.db
|
||||
240
sim_results/j2a_traces.jsonl
Normal file
240
sim_results/j2a_traces.jsonl
Normal file
File diff suppressed because one or more lines are too long
151
sim_results/j2b_all10_summary.txt
Normal file
151
sim_results/j2b_all10_summary.txt
Normal file
@@ -0,0 +1,151 @@
|
||||
class level zone n p50_yld p50_yld_clr mean_yld mean_rms %clr %boss %tpk %fled %ext
|
||||
bard 3 dragons_lair 100 0 0 0 0 0 0 0 0 0
|
||||
bard 7 dragons_lair 100 3 0 3.6 6.1 0 36 99 0 1
|
||||
bard 12 dragons_lair 100 4 0 5 7.6 0 80 100 0 0
|
||||
cleric 3 dragons_lair 100 0 0 0 0 0 0 0 0 0
|
||||
cleric 7 dragons_lair 100 4 0 3.5 5.1 0 13 100 0 0
|
||||
cleric 12 dragons_lair 100 4 0 4 7.2 0 58 100 0 0
|
||||
druid 3 dragons_lair 100 0 0 0 0 0 0 0 0 0
|
||||
druid 7 dragons_lair 100 3 0 3.7 6 0 36 99 0 1
|
||||
druid 12 dragons_lair 100 3 0 3.8 7.5 0 77 99 0 1
|
||||
fighter 3 dragons_lair 100 0 0 0 0 0 0 0 0 0
|
||||
fighter 7 dragons_lair 100 4 0 4.3 7.2 0 72 99 0 1
|
||||
fighter 12 dragons_lair 100 4 0 4.4 8 0 100 100 0 0
|
||||
mage 3 dragons_lair 100 0 0 0 0 0 0 0 0 0
|
||||
mage 7 dragons_lair 100 4 0 4.4 5.6 0 28 100 0 0
|
||||
mage 12 dragons_lair 100 6 0 6.3 7.3 0 66 99 0 1
|
||||
paladin 3 dragons_lair 100 0 0 0 0 0 0 0 0 0
|
||||
paladin 7 dragons_lair 100 3 0 3.9 7 0 59 93 0 7
|
||||
paladin 12 dragons_lair 100 4 0 4.2 7.9 0 96 100 0 0
|
||||
ranger 3 dragons_lair 100 0 0 0 0 0 0 0 0 0
|
||||
ranger 7 dragons_lair 100 8 0 8.9 7.7 0 87 97 0 3
|
||||
ranger 12 dragons_lair 100 7 0 9.2 8 0 100 100 0 0
|
||||
rogue 3 dragons_lair 100 0 0 0 0 0 0 0 0 0
|
||||
rogue 7 dragons_lair 100 5 0 5.9 6.5 0 52 95 0 5
|
||||
rogue 12 dragons_lair 100 6 0 6.5 7.9 0 96 99 0 1
|
||||
sorcerer 3 dragons_lair 100 0 0 0 0 0 0 0 0 0
|
||||
sorcerer 7 dragons_lair 100 3 0 4.1 5.4 0 18 98 0 2
|
||||
sorcerer 12 dragons_lair 100 5 0 5.3 7.2 0 60 100 0 0
|
||||
warlock 3 dragons_lair 100 0 0 0 0 0 0 0 0 0
|
||||
warlock 7 dragons_lair 100 3 0 3.4 5.8 0 28 100 0 0
|
||||
warlock 12 dragons_lair 100 3 0 4.3 7.4 0 70 100 0 0
|
||||
bard 3 forest_shadows 100 4 0 5.1 4.3 0 1 100 0 0
|
||||
bard 7 forest_shadows 100 7 0 7.6 6 0 99 100 0 0
|
||||
bard 12 forest_shadows 100 6 6 6.6 7 100 100 0 0 0
|
||||
cleric 3 forest_shadows 100 4 0 5.1 4.6 0 1 100 0 0
|
||||
cleric 7 forest_shadows 100 6 0 7.5 5.8 0 73 100 0 0
|
||||
cleric 12 forest_shadows 100 9 9 8.1 6.8 90 90 10 0 0
|
||||
druid 3 forest_shadows 100 5 0 6 5.2 0 11 100 0 0
|
||||
druid 7 forest_shadows 100 7 7 7.9 6.8 84 99 16 0 0
|
||||
druid 12 forest_shadows 100 7 7 7.4 7 100 100 0 0 0
|
||||
fighter 3 forest_shadows 100 4 0 5.2 5.3 0 28 100 0 0
|
||||
fighter 7 forest_shadows 100 6 6 6.7 7 100 100 0 0 0
|
||||
fighter 12 forest_shadows 100 5 5 6.2 7 100 100 0 0 0
|
||||
mage 3 forest_shadows 100 3 0 4.6 3.9 0 1 100 0 0
|
||||
mage 7 forest_shadows 100 6 6 6.7 6.8 86 96 14 0 0
|
||||
mage 12 forest_shadows 100 6 6 7 7 99 99 1 0 0
|
||||
paladin 3 forest_shadows 100 6 0 7.8 5.9 0 86 100 0 0
|
||||
paladin 7 forest_shadows 100 7 7 7.7 7 100 100 0 0 0
|
||||
paladin 12 forest_shadows 100 6 6 6.6 7 100 100 0 0 0
|
||||
ranger 3 forest_shadows 100 11 0 11.7 5.2 0 23 100 0 0
|
||||
ranger 7 forest_shadows 100 13 13 14.8 7 100 100 0 0 0
|
||||
ranger 12 forest_shadows 100 13 13 15.1 7 100 100 0 0 0
|
||||
rogue 3 forest_shadows 100 5 0 6.4 5.8 0 80 100 0 0
|
||||
rogue 7 forest_shadows 100 8 8 8.6 6.9 85 100 15 0 0
|
||||
rogue 12 forest_shadows 100 6 6 6.7 7 100 100 0 0 0
|
||||
sorcerer 3 forest_shadows 100 4 0 5.3 3.5 0 0 100 0 0
|
||||
sorcerer 7 forest_shadows 100 6 6 6.4 6.5 63 86 37 0 0
|
||||
sorcerer 12 forest_shadows 100 7 7 7.5 7 98 98 2 0 0
|
||||
warlock 3 forest_shadows 100 4 0 5.1 4.2 0 1 100 0 0
|
||||
warlock 7 forest_shadows 100 5 7 6.4 6.3 34 96 66 0 0
|
||||
warlock 12 forest_shadows 100 7 7 7.8 7 100 100 0 0 0
|
||||
bard 3 goblin_warrens 100 4 0 4.4 4.8 0 80 100 0 0
|
||||
bard 7 goblin_warrens 100 5 5 5.7 6 100 100 0 0 0
|
||||
bard 12 goblin_warrens 100 4 4 5 6 100 100 0 0 0
|
||||
cleric 3 goblin_warrens 100 4 5 4.6 5 15 85 85 0 0
|
||||
cleric 7 goblin_warrens 100 4 4 4.6 5.8 91 91 9 0 0
|
||||
cleric 12 goblin_warrens 100 4 4 4.9 5.9 96 96 4 0 0
|
||||
druid 3 goblin_warrens 100 3 3 4 5.6 67 93 33 0 0
|
||||
druid 7 goblin_warrens 100 5 5 5.4 6 100 100 0 0 0
|
||||
druid 12 goblin_warrens 100 4 4 4.6 6 100 100 0 0 0
|
||||
fighter 3 goblin_warrens 100 5 5 5.2 5.5 54 92 46 0 0
|
||||
fighter 7 goblin_warrens 100 5 5 6.1 6 100 100 0 0 0
|
||||
fighter 12 goblin_warrens 100 4 4 5.7 6 100 100 0 0 0
|
||||
mage 3 goblin_warrens 100 6 8 6.9 5.5 67 78 33 0 0
|
||||
mage 7 goblin_warrens 100 6 6 7 5.9 97 97 3 0 0
|
||||
mage 12 goblin_warrens 100 7 7 7.7 6 100 100 0 0 0
|
||||
paladin 3 goblin_warrens 100 5 5 5.1 5.9 88 98 12 0 0
|
||||
paladin 7 goblin_warrens 100 5 5 5.6 6 100 100 0 0 0
|
||||
paladin 12 goblin_warrens 100 4 4 5.3 6 100 100 0 0 0
|
||||
ranger 3 goblin_warrens 100 5 6 5.9 5.5 64 90 36 0 0
|
||||
ranger 7 goblin_warrens 100 6 6 6.3 6 100 100 0 0 0
|
||||
ranger 12 goblin_warrens 100 5 5 5.5 6 100 100 0 0 0
|
||||
rogue 3 goblin_warrens 100 7 7 6.9 5.8 81 95 19 0 0
|
||||
rogue 7 goblin_warrens 100 6 6 6.9 6 100 100 0 0 0
|
||||
rogue 12 goblin_warrens 100 7 7 7.2 6 100 100 0 0 0
|
||||
sorcerer 3 goblin_warrens 100 6 6 6.5 5.5 66 79 34 0 0
|
||||
sorcerer 7 goblin_warrens 100 7 7 6.9 5.9 95 95 5 0 0
|
||||
sorcerer 12 goblin_warrens 100 6 6 7.1 6 100 100 0 0 0
|
||||
warlock 3 goblin_warrens 100 4 5 4.9 5.4 56 83 44 0 0
|
||||
warlock 7 goblin_warrens 100 4 4 5 6 100 100 0 0 0
|
||||
warlock 12 goblin_warrens 100 5 5 5.2 6 100 100 0 0 0
|
||||
bard 3 manor_blackspire 100 3 0 4.5 4.6 0 1 100 0 0
|
||||
bard 7 manor_blackspire 100 4 0 4.8 6 0 58 100 0 0
|
||||
bard 12 manor_blackspire 100 5 11 4.8 6 2 76 98 0 0
|
||||
cleric 3 manor_blackspire 100 3 0 3.3 4.1 0 1 100 0 0
|
||||
cleric 7 manor_blackspire 100 4 0 4.3 5.7 0 24 100 0 0
|
||||
cleric 12 manor_blackspire 100 3 4 3.8 6 9 55 91 0 0
|
||||
druid 3 manor_blackspire 100 4 0 4.3 5.4 0 10 100 0 0
|
||||
druid 7 manor_blackspire 100 4 0 4.5 6 0 57 100 0 0
|
||||
druid 12 manor_blackspire 100 4 4 4.8 6.7 74 79 26 0 0
|
||||
fighter 3 manor_blackspire 100 4 0 3.9 5.4 0 21 100 0 0
|
||||
fighter 7 manor_blackspire 100 4 5 4.1 6.1 14 100 86 0 0
|
||||
fighter 12 manor_blackspire 100 4 4 4.4 7 100 100 0 0 0
|
||||
mage 3 manor_blackspire 100 4 0 4.7 3.8 0 0 100 0 0
|
||||
mage 7 manor_blackspire 100 5 22 6.4 5.9 1 49 99 0 0
|
||||
mage 12 manor_blackspire 100 5 5 5.8 6.5 49 63 51 0 0
|
||||
paladin 3 manor_blackspire 100 3 0 3.6 5.8 0 47 100 0 0
|
||||
paladin 7 manor_blackspire 100 5 4 5 6.2 17 98 83 0 0
|
||||
paladin 12 manor_blackspire 100 4 4 4.9 7 96 100 4 0 0
|
||||
ranger 3 manor_blackspire 100 4 0 5 5.3 0 15 100 0 0
|
||||
ranger 7 manor_blackspire 100 5 5 5.9 6.3 30 100 70 0 0
|
||||
ranger 12 manor_blackspire 100 4 4 5.3 7 100 100 0 0 0
|
||||
rogue 3 manor_blackspire 100 5 0 6.4 5.6 0 34 100 0 0
|
||||
rogue 7 manor_blackspire 100 6 7 6.6 6 4 99 96 0 0
|
||||
rogue 12 manor_blackspire 100 6 6 6.9 6.9 90 100 10 0 0
|
||||
sorcerer 3 manor_blackspire 100 4 0 5 3.9 0 0 100 0 0
|
||||
sorcerer 7 manor_blackspire 100 7 6 7.4 5.9 1 36 99 0 0
|
||||
sorcerer 12 manor_blackspire 100 6 7 7 6.5 47 60 53 0 0
|
||||
warlock 3 manor_blackspire 100 4 0 4.5 4.3 0 0 100 0 0
|
||||
warlock 7 manor_blackspire 100 4 0 4.9 6 0 65 100 0 0
|
||||
warlock 12 manor_blackspire 100 4 5 5.3 6.3 34 69 66 0 0
|
||||
bard 3 underdark 100 0 0 0 0 0 0 0 0 0
|
||||
bard 7 underdark 100 3 0 3.7 3.8 0 3 100 0 0
|
||||
bard 12 underdark 100 4 0 4 5.7 0 66 100 0 0
|
||||
cleric 3 underdark 100 0 0 0 0 0 0 0 0 0
|
||||
cleric 7 underdark 100 2 0 3 3.1 0 1 100 0 0
|
||||
cleric 12 underdark 100 4 0 5.1 4.8 0 13 100 0 0
|
||||
druid 3 underdark 100 0 0 0 0 0 0 0 0 0
|
||||
druid 7 underdark 100 3 0 4.3 3.7 0 7 100 0 0
|
||||
druid 12 underdark 100 5 5 5.3 6.3 34 84 66 0 0
|
||||
fighter 3 underdark 100 0 0 0 0 0 0 0 0 0
|
||||
fighter 7 underdark 100 5 6 4.9 6.1 10 96 90 0 0
|
||||
fighter 12 underdark 100 4 4 4.8 7 100 100 0 0 0
|
||||
mage 3 underdark 100 0 0 0 0 0 0 0 0 0
|
||||
mage 7 underdark 100 2 0 3 3.1 0 0 100 0 0
|
||||
mage 12 underdark 100 4 4 4.6 5.8 19 60 81 0 0
|
||||
paladin 3 underdark 100 0 0 0 0 0 0 0 0 0
|
||||
paladin 7 underdark 100 3 2 4.3 5.9 2 80 98 0 0
|
||||
paladin 12 underdark 100 4 4 4.8 7 96 100 4 0 0
|
||||
ranger 3 underdark 100 0 0 0 0 0 0 0 0 0
|
||||
ranger 7 underdark 100 9 10 9.3 6.3 30 98 70 0 0
|
||||
ranger 12 underdark 100 9 9 9.7 7 100 100 0 0 0
|
||||
rogue 3 underdark 100 0 0 0 0 0 0 0 0 0
|
||||
rogue 7 underdark 100 5 4 4.7 5.8 5 80 95 0 0
|
||||
rogue 12 underdark 100 5 5 5.5 6.9 94 99 6 0 0
|
||||
sorcerer 3 underdark 100 0 0 0 0 0 0 0 0 0
|
||||
sorcerer 7 underdark 100 2 0 2.7 2.9 0 1 100 0 0
|
||||
sorcerer 12 underdark 100 3 8 3.7 5.1 8 32 92 0 0
|
||||
warlock 3 underdark 100 0 0 0 0 0 0 0 0 0
|
||||
warlock 7 underdark 100 2 0 3.5 3.6 0 3 100 0 0
|
||||
warlock 12 underdark 100 4 2 4.1 5.6 7 69 93 0 0
|
||||
81
sim_results/j2b_findings.md
Normal file
81
sim_results/j2b_findings.md
Normal file
@@ -0,0 +1,81 @@
|
||||
# J2b — Post-J2a all-classes baseline (n=100)
|
||||
|
||||
**Date:** 2026-05-17
|
||||
**Corpus:** `sim_results/baseline_j2a_v2_all10.jsonl` (15,000 rows = 10 classes × 3 levels × 5 zones × n=100). Per-cell tabular summary in `sim_results/j2b_all10_summary.txt`.
|
||||
**Replaces:** `sim_results/baseline_j1_all10.jsonl` as the post-sim-fix canonical corpus. The J1 numbers measured a strawman where casters never cast (see [j2_findings.md](j2_findings.md)).
|
||||
|
||||
## L12 leaderboard (mean %clr across all 5 zones)
|
||||
|
||||
| Class | J1 baseline | J2b | Δ | J1 boss% | J2b boss% | Per-zone J2b %clr (T1 / T2 / T3 / T4 / T5) |
|
||||
|----------|-------------|-------|--------|----------|-----------|--------------------------------------------|
|
||||
| fighter | 79.6 | 80.0 | **+0.4** | 100.0 | 100.0 | 100 / 100 / 100 / 100 / 0 |
|
||||
| ranger | 78.6 | 80.0 | **+1.4** | 100.0 | 100.0 | 100 / 100 / 100 / 100 / 0 |
|
||||
| paladin | 72.2 | 78.4 | **+6.2** | 99.6 | 99.2 | 100 / 100 / 96 / 96 / 0 |
|
||||
| rogue | 70.6 | 76.8 | **+6.2** | 99.0 | 99.0 | 100 / 100 / 90 / 94 / 0 |
|
||||
| druid | 38.6 | 61.6 | **+23.0** | 88.4 | 88.0 | 100 / 100 / 74 / 34 / 0 |
|
||||
| mage | 20.0 | 53.4 | **+33.4** | 77.2 | 77.6 | 100 / 99 / 49 / 19 / 0 |
|
||||
| sorcerer | 20.0 | 50.6 | **+30.6** | 70.4 | 70.0 | 100 / 98 / 47 / 8 / 0 |
|
||||
| warlock | 21.4 | 48.2 | **+26.8** | 82.2 | 81.6 | 100 / 100 / 34 / 7 / 0 |
|
||||
| bard | 21.6 | 40.4 | **+18.8** | 82.0 | 84.4 | 100 / 100 / 2 / 0 / 0 |
|
||||
| cleric | 18.6 | 39.0 | **+20.4** | 61.6 | 62.4 | 96 / 90 / 9 / 0 / 0 |
|
||||
|
||||
## Headline
|
||||
|
||||
1. **No martial regression.** Fighter/Ranger/Paladin/Rogue all moved within +0.4 to +6.2pp, indistinguishable from sweep variance. The `simMartialFirstClass` gate added after the v1 sweep saved Ranger (which had regressed -35.8pp when the picker burned L3 slots on `lightning_arrow` instead of letting the weapon-attack + Hunter's Mark + Extra Attack chassis swing).
|
||||
2. **Caster cliff is dissolved.** The pre-fix 19–22% cluster spread out to 39–62%. The picker alone — no balance changes — converted the trailers to mid-band classes.
|
||||
3. **Druid is now top-of-band-2 at 61.6%.** Wild Resilience's ThornLash on weapon swings plus the new cast path stacks cleanly. Druid is still defensive-first by design; the cast layer turns boss rooms from "swing-and-bleed" into "burn-and-finish".
|
||||
4. **T5 dragons_lair still walls everyone (0% clear across all 10 classes).** That's the J3 problem; J2 wasn't on the hook for it, and the sim-artifact half of J3's hypothesis 1 (`autoResolveCombat` never casting/consuming) is now closed by J2a.
|
||||
|
||||
## What's still trailing — bard and cleric
|
||||
|
||||
Bard L12 manor 2%, cleric L12 manor 9% — both reach the boss (~50–84%) and die there. **Not a sim artifact**; this is the spell pool. The v1 picker only scores damage-effect spells, and these two classes have thin damage rosters in `defaultKnownSpells`:
|
||||
|
||||
- **Bard** damage options: `vicious_mockery` (cantrip), `shatter` L2. Everything else in the bard kit is control / heal / buff, which the picker skips.
|
||||
- **Cleric** damage options: `sacred_flame` (cantrip), `guiding_bolt` L1, `spiritual_weapon` L2, `spirit_guardians` L3, `flame_strike` L5. The non-damage options (`bless`, `healing_word`, `mass_cure_wounds`, etc.) are skipped too.
|
||||
|
||||
Both classes' identity spells are control (`hold_person`, `hypnotic_pattern`, `command`) and heal (`cure_wounds`, `healing_word`, `mass_cure_wounds`). The picker treats those as zero-value.
|
||||
|
||||
Note on cleric underdark: 87% of L12 underdark runs end as `tpk` with stop `ended` — that's expedition-side starvation, not boss-fight TPK (only 13% reach boss/elite). Cleric's exploration loop is brittle for unrelated reasons (low STR/CON build, supply burn). Out of J2 scope.
|
||||
|
||||
## J2 DoD check
|
||||
|
||||
Reframed DoD (`gogobee_harvest_charges_plan.md` §6.J2, updated 2026-05-17):
|
||||
|
||||
- **J2a — ≥80% of boss fights produce a cast or consumable.** **MET** (100% cast rate in the verification sweep, [j2a_findings.md](j2a_findings.md)).
|
||||
- **J2b — caster L12 manor mean clear ≥ druid's pre-J2a 39%.** Mage 49 ✓, sorcerer 47 ✓, warlock 34 ✗ (close), bard 2 ✗, cleric 9 ✗. **3 of 5 pass.**
|
||||
- **No martial leader regresses >10pp.** **MET** (all +0.4 to +6.2pp).
|
||||
|
||||
Two trailers still under the floor (bard, cleric). They're now bottlenecked on **spell-pool richness for the v1 damage-only picker**, not on the sim itself. The cleanest next move:
|
||||
|
||||
## J2c — tried, reverted (2026-05-17)
|
||||
|
||||
Implemented two widening levers, ran two n=100 sweeps, and reverted both:
|
||||
|
||||
1. **Heal-spell preempt** (cure_wounds / healing_word / mass_cure_wounds preferred over heal consumable at low HP). Regressed **druid -10pp**: slot heals at L12 heal ~10HP vs 40HP from a tier-4 Spirit Tonic, and the picker burned slots druid needed for damage spells.
|
||||
2. **Control-spell scoring at 22** (denied-enemy-turn proxy). Regressed **warlock -6.6pp** — vampiric_touch L3 (10.5 expected over multiple rounds + heal) was outscored by hypnotic_pattern L3 (single denied turn). Dropping the score to 5 brought net deltas back to ±2pp but didn't lift bard or cleric, because the level-first sort prevents low-score control spells from ever winning over a higher-level damage option (which the trailer classes don't have at higher slots).
|
||||
|
||||
Corpora retained for reference: `sim_results/baseline_j2c_all10.jsonl` (heal-preempt + control@22) and `sim_results/baseline_j2c_v2_all10.jsonl` (control@5 only). The picker reverted to the J2b shape (damage-effect only, level-first sort, no heal-spell preempt).
|
||||
|
||||
**Real lever for bard/cleric trailing.** Their `defaultKnownSpells` damage rosters cap at L2 (bard: shatter; cleric: spiritual_weapon's 1d8). The picker can't pick higher-damage spells they don't have. Lifting these classes is therefore a **prod-level change to `defaultKnownSpells`** (add a damage option at L3+ for bard, a damage option at L4+ for cleric) — not a sim-picker change. Out of scope for J2; revisit alongside class identity / Open5e integration work.
|
||||
|
||||
## (original) Recommended J2c (now superseded by the section above)
|
||||
|
||||
**Widen the picker to score control + heal spells.**
|
||||
|
||||
- `EffectControl` (e.g. `hold_person`, `hypnotic_pattern`, `hideous_laughter`, `command`) should score as the *enemy damage it prevents over its expected effect duration* — i.e. each prevented enemy turn ≈ one round's worth of incoming damage. For a stunner that lands and lasts 1 round on a 30-dmg/round boss, that's a 30-equivalent. Better than most damage spells.
|
||||
- `EffectSpellHeal` should compete with the consume-on-low-HP branch — if the cleric has `mass_cure_wounds` ready, it should fire at the low-HP threshold instead of a `Spirit Tonic`.
|
||||
- `EffectBuffSelf` (e.g. `bless`, `shield_of_faith`) lifts to-hit chance / AC. Score in opening round of a fight only; subsequent rounds it's a waste.
|
||||
|
||||
This is one focused change in `simPickSpell` + `simPickCombatAction`. Expected impact: bard pulls into the 30–40% manor band (control spells are the bard identity); cleric pulls similarly. Martial leaders unchanged. Whether it's needed depends on operator: J2's reframed DoD allows shipping J2 with bard/cleric trailing if the prod target is "five classes mid-band, two below". Per [feedback_difficulty_target](.claude/memory/feedback_difficulty_target.md), the explicit ask is to lift trailers — that argues for landing J2c.
|
||||
|
||||
## Files touched this phase
|
||||
|
||||
- `internal/plugin/expedition_sim.go`:
|
||||
- `SimCombatSummary.Events`, `simIncludeTrace` + `SetSimIncludeTrace` (J2 diagnostic).
|
||||
- `simPickCombatAction`, `simPickSpell`, `simMartialFirstClass`, `simHealHPThresholdPct` (J2a picker + post-baseline fix).
|
||||
- `BuildCharacter` now seeds `ensureSpellsForCharacter`.
|
||||
- `autoResolveCombat` dispatches via the picker.
|
||||
- `cmd/expedition-sim/main.go`: `-trace` flag.
|
||||
- Docs: `sim_results/j2_findings.md`, `sim_results/j2a_findings.md`, `sim_results/j2b_findings.md`, `sim_results/j2b_all10_summary.txt`, plan §6.J2.
|
||||
|
||||
No prod combat / class / spell paths changed. Everything is in the sim harness.
|
||||
43
sim_results/j3_findings.md
Normal file
43
sim_results/j3_findings.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# J3 — T5 dragons_lair universal wall (initial trace)
|
||||
|
||||
**Date:** 2026-05-17
|
||||
**Corpus:** `sim_results/j3_traces.jsonl` — 60 expeditions (6 representative classes × L12 × dragons_lair × n=10), per-round traces enabled. Hypothesis-sift only; not a balance sweep.
|
||||
**Pre-state:** post-J2 picker (`baseline_j2a_v2_all10.jsonl` shows 0% clear across all 10 classes at L12 dragons_lair).
|
||||
|
||||
## Boss-room aggregates (L12 vs `boss_*` of dragons_lair)
|
||||
|
||||
| class | n | reachBoss | won | rounds | pDmg | eDmg | enemyHPMax | enemyHP@end | playerHPMax | playerHP@end | casts | consume |
|
||||
|---------|----|-----------|-----|--------|-------|-------|------------|-------------|-------------|--------------|-------|---------|
|
||||
| fighter | 10 | 10 | 0 | 8.8 | 122.5 | 207.8 | **546** | 423.5 | 173.6 | 0 | 0 | 14 |
|
||||
| ranger | 10 | 10 | 0 | 8.8 | 133.4 | 197.1 | **546** | 412.6 | 131.0 | 0 | 0 | 18 |
|
||||
| paladin | 10 | 10 | 0 | 8.3 | 76.0 | 200.0 | **546** | 470.0 | 169.4 | 0 | 0 | 16 |
|
||||
| rogue | 10 | 9 | 0 | 6.6 | 63.7 | 168.6 | **546** | 482.3 | 133.2 | 0 | 0 | 11 |
|
||||
| druid | 10 | 9 | 0 | 4.8 | 122.4 | 136.9 | **546** | 423.6 | 131.0 | 0 | 34 | 9 |
|
||||
| mage | 10 | 6 | 0 | 5.2 | 92.7 | 129.2 | **546** | 453.3 | 112.5 | 0 | 26 | 5 |
|
||||
|
||||
## Diagnosis
|
||||
|
||||
T5 dragons_lair boss is at **546 max HP**. Solo characters (player HP 110–175) take 5–9 rounds to die, dealing 60–130 player damage in that time — they chew down ~10–25% of the boss before being TPK'd. This is **party content tuned for solo by accident**.
|
||||
|
||||
Per-round math: clearing 546 HP in ~10 rounds requires ~55 DPR sustained. Solo player DPR caps around 15–25 even on fighter (122/8.8 = 13.9 mean) and druid (122/4.8 = 25.5 — burst before dying). A 4-character party at the same DPR clears in ~7 rounds, which is the survivable window the boss seems tuned around.
|
||||
|
||||
Plan §J3 listed three hypotheses; this trace rules them out cleanly:
|
||||
|
||||
1. ~~`autoResolveCombat` unfair (only swings).~~ **Closed by J2a.** Druid/mage are now casting (34/26 casts in 10 fights) and still 0% clear.
|
||||
2. ~~Boss HP pool just too deep / multi-phase.~~ **No multi-phase complication observed** — fights are linear monotone HP descent, the boss just doesn't have a phase mechanic exposed in the trace. The HP pool *itself* is the issue.
|
||||
3. **Party scaling missing — boss is tuned for 4-character parties.** Confirmed by the consistent ~25% boss-HP-eaten-at-player-death across every class.
|
||||
|
||||
## Recommended J3 lever
|
||||
|
||||
Per `gogobee_harvest_charges_plan.md` §J3 likely-levers, the difficulty memo allows *lifting trailers without pushing monster scaling*. **Reducing boss scaling at low party counts is in-bounds.**
|
||||
|
||||
- **Auto-scale boss HP (and probably boss damage) by participant count.** A simple `bossHP *= (0.4 + 0.15*participants)` style ramp would put solo at 0.55× (≈ 300 HP from 546) and 4-up at full. That brings a 5–9 round solo fight in line with the boss-HP curve already validated at T3/T4 (post-J2 manor: 60%+ clear for top classes; underdark: 30–100%).
|
||||
- **Alternative:** Document dragons_lair as raid content. Surface a verb-style warning in `!zone` help ("Bring friends — this dragon eats solo adventurers."). Cheaper but doesn't lift the trailer end of the solo population, which `feedback_difficulty_target` says we should.
|
||||
|
||||
Recommendation: **try party-scaling first** — it's the lever that both keeps the boss difficult for parties AND respects the "lift trailers" feedback. Document-only is the fallback if scaling proves intrusive.
|
||||
|
||||
## Open question for the operator
|
||||
|
||||
What's the *intended* T5 boss audience — solo or party? If solo, scaling is required. If party, dragons_lair should be flagged as raid content and not appear in solo-play recommendations. The sim has been running solo throughout, which the plan's J-phase open questions already flagged needs an operator answer.
|
||||
|
||||
Out of scope here: implementing the scaling lever. That's a prod change in the boss HP / damage path. Picking up that work would need the operator's call on the audience question first.
|
||||
90
sim_results/j3_traces.err
Normal file
90
sim_results/j3_traces.err
Normal file
@@ -0,0 +1,90 @@
|
||||
2026/05/17 15:34:22 INFO database initialized path=/tmp/expedition-sim-3937486981/gogobee.db
|
||||
2026/05/17 15:34:22 INFO database initialized path=/tmp/expedition-sim-3578458476/gogobee.db
|
||||
2026/05/17 15:34:23 INFO database initialized path=/tmp/expedition-sim-1544593455/gogobee.db
|
||||
2026/05/17 15:34:23 INFO database initialized path=/tmp/expedition-sim-67658511/gogobee.db
|
||||
2026/05/17 15:34:23 INFO database initialized path=/tmp/expedition-sim-2710175851/gogobee.db
|
||||
2026/05/17 15:34:23 INFO database initialized path=/tmp/expedition-sim-3311525977/gogobee.db
|
||||
2026/05/17 15:34:23 INFO database initialized path=/tmp/expedition-sim-1482370118/gogobee.db
|
||||
2026/05/17 15:34:23 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-0 ability="Second Wind"
|
||||
2026/05/17 15:34:23 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-0 ability="Second Wind"
|
||||
2026/05/17 15:34:23 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-0 ability="Second Wind"
|
||||
2026/05/17 15:34:23 INFO database initialized path=/tmp/expedition-sim-573218642/gogobee.db
|
||||
2026/05/17 15:34:23 INFO database initialized path=/tmp/expedition-sim-2555594716/gogobee.db
|
||||
2026/05/17 15:34:23 INFO database initialized path=/tmp/expedition-sim-1293820254/gogobee.db
|
||||
2026/05/17 15:34:23 INFO database initialized path=/tmp/expedition-sim-2922091846/gogobee.db
|
||||
2026/05/17 15:34:23 INFO database initialized path=/tmp/expedition-sim-2255769101/gogobee.db
|
||||
2026/05/17 15:34:23 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-1 ability="Second Wind"
|
||||
2026/05/17 15:34:23 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-1 ability="Second Wind"
|
||||
2026/05/17 15:34:23 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-1 ability="Second Wind"
|
||||
2026/05/17 15:34:23 INFO database initialized path=/tmp/expedition-sim-4141510411/gogobee.db
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-2327156998/gogobee.db
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-3831482955/gogobee.db
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-3224447098/gogobee.db
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-3972171829/gogobee.db
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-2507866628/gogobee.db
|
||||
2026/05/17 15:34:24 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-2 ability="Second Wind"
|
||||
2026/05/17 15:34:24 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-2 ability="Second Wind"
|
||||
2026/05/17 15:34:24 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-2 ability="Second Wind"
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-2702751982/gogobee.db
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-814091512/gogobee.db
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-1701622760/gogobee.db
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-2474663970/gogobee.db
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-3500203401/gogobee.db
|
||||
2026/05/17 15:34:24 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-3 ability="Second Wind"
|
||||
2026/05/17 15:34:24 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-3 ability="Second Wind"
|
||||
2026/05/17 15:34:24 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-3 ability="Second Wind"
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-1597673037/gogobee.db
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-3746346522/gogobee.db
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-2947709156/gogobee.db
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-2279228254/gogobee.db
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-1330280095/gogobee.db
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-1007046865/gogobee.db
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-3808145558/gogobee.db
|
||||
2026/05/17 15:34:24 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-4 ability="Second Wind"
|
||||
2026/05/17 15:34:24 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-4 ability="Second Wind"
|
||||
2026/05/17 15:34:24 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-4 ability="Second Wind"
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-3669887885/gogobee.db
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-3912763644/gogobee.db
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-2891748518/gogobee.db
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-1827307519/gogobee.db
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-4109127351/gogobee.db
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-253619287/gogobee.db
|
||||
2026/05/17 15:34:24 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-5 ability="Second Wind"
|
||||
2026/05/17 15:34:24 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-5 ability="Second Wind"
|
||||
2026/05/17 15:34:24 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-5 ability="Second Wind"
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-889111768/gogobee.db
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-3994033199/gogobee.db
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-2355572633/gogobee.db
|
||||
2026/05/17 15:34:24 INFO database initialized path=/tmp/expedition-sim-2955130129/gogobee.db
|
||||
2026/05/17 15:34:25 INFO database initialized path=/tmp/expedition-sim-3040643250/gogobee.db
|
||||
2026/05/17 15:34:25 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-6 ability="Second Wind"
|
||||
2026/05/17 15:34:25 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-6 ability="Second Wind"
|
||||
2026/05/17 15:34:25 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-6 ability="Second Wind"
|
||||
2026/05/17 15:34:25 INFO database initialized path=/tmp/expedition-sim-996326193/gogobee.db
|
||||
2026/05/17 15:34:25 INFO database initialized path=/tmp/expedition-sim-1026834926/gogobee.db
|
||||
2026/05/17 15:34:25 INFO database initialized path=/tmp/expedition-sim-874236375/gogobee.db
|
||||
2026/05/17 15:34:25 INFO database initialized path=/tmp/expedition-sim-628985075/gogobee.db
|
||||
2026/05/17 15:34:25 INFO database initialized path=/tmp/expedition-sim-4278591308/gogobee.db
|
||||
2026/05/17 15:34:25 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-7 ability="Second Wind"
|
||||
2026/05/17 15:34:25 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-7 ability="Second Wind"
|
||||
2026/05/17 15:34:25 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-7 ability="Second Wind"
|
||||
2026/05/17 15:34:25 INFO database initialized path=/tmp/expedition-sim-1333675344/gogobee.db
|
||||
2026/05/17 15:34:25 INFO database initialized path=/tmp/expedition-sim-3247890534/gogobee.db
|
||||
2026/05/17 15:34:25 INFO database initialized path=/tmp/expedition-sim-3858591699/gogobee.db
|
||||
2026/05/17 15:34:25 INFO database initialized path=/tmp/expedition-sim-1397281242/gogobee.db
|
||||
2026/05/17 15:34:25 INFO database initialized path=/tmp/expedition-sim-2332733301/gogobee.db
|
||||
2026/05/17 15:34:25 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-8 ability="Second Wind"
|
||||
2026/05/17 15:34:25 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-8 ability="Second Wind"
|
||||
2026/05/17 15:34:25 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-8 ability="Second Wind"
|
||||
2026/05/17 15:34:25 INFO database initialized path=/tmp/expedition-sim-2396625240/gogobee.db
|
||||
2026/05/17 15:34:25 INFO database initialized path=/tmp/expedition-sim-1690573929/gogobee.db
|
||||
2026/05/17 15:34:25 INFO database initialized path=/tmp/expedition-sim-1681341943/gogobee.db
|
||||
2026/05/17 15:34:25 INFO database initialized path=/tmp/expedition-sim-3006146542/gogobee.db
|
||||
2026/05/17 15:34:25 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-9 ability="Second Wind"
|
||||
2026/05/17 15:34:25 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-9 ability="Second Wind"
|
||||
2026/05/17 15:34:25 INFO dnd: armed ability fired (turn-based build) user=@sim:fighter-l12-dragons_lair-9 ability="Second Wind"
|
||||
2026/05/17 15:34:25 INFO database initialized path=/tmp/expedition-sim-799921603/gogobee.db
|
||||
2026/05/17 15:34:25 INFO database initialized path=/tmp/expedition-sim-442683998/gogobee.db
|
||||
2026/05/17 15:34:25 INFO database initialized path=/tmp/expedition-sim-3139041772/gogobee.db
|
||||
2026/05/17 15:34:25 INFO database initialized path=/tmp/expedition-sim-2602959398/gogobee.db
|
||||
2026/05/17 15:34:25 INFO database initialized path=/tmp/expedition-sim-3028049942/gogobee.db
|
||||
60
sim_results/j3_traces.jsonl
Normal file
60
sim_results/j3_traces.jsonl
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user