@vibemancer/core 1.0.7 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -463,6 +463,7 @@ declare const RULES: {
463
463
  MISSILE_MIN_CAST_TIME: number;
464
464
  MISSILE_BASE_RADIUS: number;
465
465
  MISSILE_DAMAGE_RADIUS_SCALE: number;
466
+ MISSILE_RADIUS_MULTIPLIER: number;
466
467
  MISSILE_BASE_CAST: number;
467
468
  MISSILE_DAMAGE_SCALE: number;
468
469
  MISSILE_DAMAGE_POWER: number;
@@ -608,7 +609,7 @@ declare function currentRuleset(): Record<string, number>;
608
609
  * Used to gate spectator replays: a recorded match can only be re-simulated when
609
610
  * the runtime engine version matches the version that produced the match.
610
611
  */
611
- declare const ENGINE_VERSION = 4204441759696527;
612
+ declare const ENGINE_VERSION = 3523070221336433;
612
613
  /**
613
614
  * Historical versions that denote the SAME engine as `ENGINE_VERSION`.
614
615
  *
@@ -1 +1 @@
1
- export { A as ALL_BOTS, a as ARENA_MAX, b as ARENA_MIN, c as ARENA_SIZE, d as ARENA_WATER_BUFFER, e as ActionBuilder, f as AnalyzedThreat, g as Archlich, h as Archmage, B as BLINK_CAST_TIME, i as BLINK_COOLDOWN, j as BLINK_MAX_COOLDOWN, k as BLINK_MAX_RANGE, l as BLINK_MIN_COOLDOWN, m as BLINK_RANGE, n as BOT_GROUPS, o as Battlemage, p as BlinkEvent, q as Bonemancer, s as BotError, t as BrowserManualMatchSandbox, u as BrowserMatchSandbox, v as BrowserSandboxOptions, C as CASTING_MOVEMENT_MULT, x as COLLISION_RADIUS, y as CastCancelEvent, z as CastStartEvent, D as Critter, H as DEFAULT_SEED, I as Doombringer, J as ENGINE_VERSION, K as EQUIVALENT_ENGINE_VERSIONS, L as EnemyState, M as FIGHT_SPAWN_DISTANCES, F as FightResult, O as FightStats, P as FightWinner, Q as FinalAction, R as Flamecaller, T as GCD_DURATION, U as GameConfig, V as GameState, W as Golem, X as Hero, Y as Hogger, Z as HomingParams, _ as HookState, $ as Infernalist, a0 as InternalWizardState, a1 as KNOCKBACK_DAMAGE_THRESHOLD, a2 as KNOCKBACK_DECAY, a3 as KNOCKBACK_DELAY, a4 as KNOCKBACK_SPEED_PER_DAMAGE, a5 as LAVA_BORDER_WIDTH, a6 as Lich, a7 as MATCH_DURATION, a8 as MAX_HEALTH, a9 as MISSILE_BASE_CAST, aa as MISSILE_BASE_RADIUS, ab as MISSILE_DAMAGE_POWER, ac as MISSILE_DAMAGE_RADIUS_SCALE, ad as MISSILE_DAMAGE_SCALE, ae as MISSILE_HOMING_COEFF, af as MISSILE_MIN_CAST_TIME, ag as MISSILE_MIN_DAMAGE, ah as MISSILE_MIN_DURATION, ai as MISSILE_MIN_SPEED, aj as MISSILE_RADIUS_PER_DAMAGE, ak as MISSILE_SPEED_DURATION_BASELINE, al as MISSILE_SPEED_DURATION_COEFF, am as MISSILE_TURN_DURATION_COEFF, an as MOVEMENT_SPEED, ao as MOVE_SPEED, ap as ManualMatch, aq as ManualMatchInitOptions, ar as ManualMatchOptions, as as ManualMatchStepRequest, at as MatchWinner, au as MissileAction, av as MissileActions, aw as MissileConfig, ax as MissileContext, ay as MissileExpiredEvent, az as MissileFunction, aA as MissileHitEvent, aB as MissileLaunchEvent, aC as MissileOobEvent, aD as MissileTemplate, aE as Nightblade, aF as ParamDeclaration, aG as Position, aH as ProjectileState, aI as Pyromancer, aJ as RULES, aK as RULESET_RANGES, aL as RefObject, aM as Rookie, aN as SHIELD_CAST_TIME, aO as SHIELD_DECAY_PER_SECOND, aP as SHIELD_DECAY_RATE, aQ as SHIELD_MAX_BLOCK, aR as SHIELD_MAX_STRENGTH, aS as SHIELD_MIN_BLOCK, aT as SHIELD_MIN_STRENGTH, aU as SPAWN_DISTANCE, aV as SeekerParams, aW as Sentinel, aX as Shadowblade, aY as ShieldBlockEvent, aZ as ShieldStartEvent, a_ as SimEvent, S as SimulateResult, a$ as Spellbinder, b0 as Spellseeker, b1 as Spellshot, b2 as Spellspinner, b3 as Spelltracer, b4 as Spellweaver, b5 as SpiralParams, b6 as StepResult, b7 as Stormcaller, b8 as Stormchaser, b9 as Stormforger, ba as StraightParams, bb as TICKS_PER_SECOND, bc as TICK_DURATION_MS, bd as TargetDummy, be as TestBotBuilder, bf as TestFightResult, bg as TestSimulateResult, bh as TraceBotSummary, bi as TraceEvent, bj as TraceEventType, bk as TraceSummary, bl as Turtle, bm as Velocity, bn as Voidblade, bo as WARMUP_DURATION_TOLERANCE, bp as WARMUP_MAX_BONUS, bq as WARMUP_MAX_PENALTY, br as WARMUP_SPEED_TOLERANCE, bs as WARMUP_TURN_TOLERANCE, bt as WIZARD_HEALTH, bu as WIZARD_RADIUS, bv as Warmage, bw as WizardActions, bx as WizardContext, by as WizardDeathEvent, bz as WizardEntry, bA as WizardFunction, bB as WizardGroup, bC as WizardLavaDeathEvent, bD as WizardState, bE as WorkerFactory, bF as WorkerLike, bG as analyzeThreats, bH as angleDiff, bI as angleInRange, bJ as angleTo, bK as applyDamage, bL as applyRulesetOverrides, bM as blink, bN as browserSandboxFight, bO as browserSandboxSimulate, bP as calculateBlinkCooldown, bQ as calculateMissileCastTime, bR as calculateMissileRadius, bS as calculateMissileSimilarity, bT as calculateShieldBlock, bU as calculateWarmupMultiplier, bV as canReplayMatch, bW as cancel, bX as cancelCast, bY as clampPositionToArena, bZ as clampToArena, b_ as clearHooks, b$ as clearParamValues, c0 as completeCast, c2 as createEntitySeed, c4 as createInitialState, c5 as createRandom, c6 as createWorkerScript, c7 as currentRuleset, c8 as diagnoseTrace, c9 as directionAway, ca as directionTo, cb as distanceTo, cc as effectiveTurnRateCost, cd as extractAction, ce as extractMissileAction, cf as extractStats, cg as extractTraceEvents, ch as fight, ci as findInRange, cj as findNearest, ck as fitMissileForEscapingTarget, cl as fitMissileToBudget, cm as flyStraight, cn as formatDiagnosis, co as formatStats, cp as formatTraceEvents, cq as formatTraceSummary, cr as generateCandidates, cs as generateCombos, ct as getAdaptiveMissileConfig, cu as getEffectiveRange, cv as getLeadPosition, cw as getMissileCastTime, cx as getMissileContext, cy as getPlayerState, cz as getWizardContext, cA as hashCombine, cB as homingMissile, cC as idle, cD as inRange, cE as interceptAngle, cF as isBannedBotName, cG as isInLava, cH as magnitude, cI as matchesAnyBanRule, cK as missile, cL as move, cM as moveInDirection, cN as moveProjectile, cO as moveWizard, cP as narrowRange, cQ as nextRandom, cR as normalize, cS as normalizeAngle, cT as predictPosition, cV as resetAllHooks, cW as resetRuleset, cX as resolveWizardCollision, cY as runWithHooks, cZ as runWizardWithContext, c_ as scoreFight, c$ as scoreFightAsWizard2, d0 as seekerMissile, d1 as setParamValues, d2 as shield, d3 as simulate, d4 as simulateMinDuration, d5 as sortByDistance, d6 as spiralMissile, d7 as startCast, d8 as startDiscovery, d9 as stopDiscovery, da as straightMissile, db as summarizeTrace, dc as sweptCircleCollision, dd as testBot, de as tick, df as turnToAngle, dg as turnToward, dh as updateShield, di as useArenaSize, dj as useBlinkCooldown, dk as useCastProgress, dl as useCastingSpell, dm as useClosestThreat, dn as useDamageDealt, dp as useDamageTaken, dq as useEffect, dr as useEnemy, ds as useHealth, dt as useLastHitTick, du as useLastMissileConfig, dv as useMemo, dw as useMyProjectiles, dx as useMyThreatsToEnemy, dy as useParam, dz as usePosition, dA as useProjectiles, dB as useRandom, dC as useRef, dD as useShieldStrength, dE as useState, dF as useStatus, dG as useThreats, dH as useTick, dI as useTicksUntilReady, dJ as useVelocity, dK as validateHookCall, dL as validateMissileConfig, dM as withMissileContext, dN as withWizardContext, dO as wrapWithParams } from './index-browser-iiIpqpDl.js';
1
+ export { A as ALL_BOTS, a as ARENA_MAX, b as ARENA_MIN, c as ARENA_SIZE, d as ARENA_WATER_BUFFER, e as ActionBuilder, f as AnalyzedThreat, g as Archlich, h as Archmage, B as BLINK_CAST_TIME, i as BLINK_COOLDOWN, j as BLINK_MAX_COOLDOWN, k as BLINK_MAX_RANGE, l as BLINK_MIN_COOLDOWN, m as BLINK_RANGE, n as BOT_GROUPS, o as Battlemage, p as BlinkEvent, q as Bonemancer, s as BotError, t as BrowserManualMatchSandbox, u as BrowserMatchSandbox, v as BrowserSandboxOptions, C as CASTING_MOVEMENT_MULT, x as COLLISION_RADIUS, y as CastCancelEvent, z as CastStartEvent, D as Critter, H as DEFAULT_SEED, I as Doombringer, J as ENGINE_VERSION, K as EQUIVALENT_ENGINE_VERSIONS, L as EnemyState, M as FIGHT_SPAWN_DISTANCES, F as FightResult, O as FightStats, P as FightWinner, Q as FinalAction, R as Flamecaller, T as GCD_DURATION, U as GameConfig, V as GameState, W as Golem, X as Hero, Y as Hogger, Z as HomingParams, _ as HookState, $ as Infernalist, a0 as InternalWizardState, a1 as KNOCKBACK_DAMAGE_THRESHOLD, a2 as KNOCKBACK_DECAY, a3 as KNOCKBACK_DELAY, a4 as KNOCKBACK_SPEED_PER_DAMAGE, a5 as LAVA_BORDER_WIDTH, a6 as Lich, a7 as MATCH_DURATION, a8 as MAX_HEALTH, a9 as MISSILE_BASE_CAST, aa as MISSILE_BASE_RADIUS, ab as MISSILE_DAMAGE_POWER, ac as MISSILE_DAMAGE_RADIUS_SCALE, ad as MISSILE_DAMAGE_SCALE, ae as MISSILE_HOMING_COEFF, af as MISSILE_MIN_CAST_TIME, ag as MISSILE_MIN_DAMAGE, ah as MISSILE_MIN_DURATION, ai as MISSILE_MIN_SPEED, aj as MISSILE_RADIUS_PER_DAMAGE, ak as MISSILE_SPEED_DURATION_BASELINE, al as MISSILE_SPEED_DURATION_COEFF, am as MISSILE_TURN_DURATION_COEFF, an as MOVEMENT_SPEED, ao as MOVE_SPEED, ap as ManualMatch, aq as ManualMatchInitOptions, ar as ManualMatchOptions, as as ManualMatchStepRequest, at as MatchWinner, au as MissileAction, av as MissileActions, aw as MissileConfig, ax as MissileContext, ay as MissileExpiredEvent, az as MissileFunction, aA as MissileHitEvent, aB as MissileLaunchEvent, aC as MissileOobEvent, aD as MissileTemplate, aE as Nightblade, aF as ParamDeclaration, aG as Position, aH as ProjectileState, aI as Pyromancer, aJ as RULES, aK as RULESET_RANGES, aL as RefObject, aM as Rookie, aN as SHIELD_CAST_TIME, aO as SHIELD_DECAY_PER_SECOND, aP as SHIELD_DECAY_RATE, aQ as SHIELD_MAX_BLOCK, aR as SHIELD_MAX_STRENGTH, aS as SHIELD_MIN_BLOCK, aT as SHIELD_MIN_STRENGTH, aU as SPAWN_DISTANCE, aV as SeekerParams, aW as Sentinel, aX as Shadowblade, aY as ShieldBlockEvent, aZ as ShieldStartEvent, a_ as SimEvent, S as SimulateResult, a$ as Spellbinder, b0 as Spellseeker, b1 as Spellshot, b2 as Spellspinner, b3 as Spelltracer, b4 as Spellweaver, b5 as SpiralParams, b6 as StepResult, b7 as Stormcaller, b8 as Stormchaser, b9 as Stormforger, ba as StraightParams, bb as TICKS_PER_SECOND, bc as TICK_DURATION_MS, bd as TargetDummy, be as TestBotBuilder, bf as TestFightResult, bg as TestSimulateResult, bh as TraceBotSummary, bi as TraceEvent, bj as TraceEventType, bk as TraceSummary, bl as Turtle, bm as Velocity, bn as Voidblade, bo as WARMUP_DURATION_TOLERANCE, bp as WARMUP_MAX_BONUS, bq as WARMUP_MAX_PENALTY, br as WARMUP_SPEED_TOLERANCE, bs as WARMUP_TURN_TOLERANCE, bt as WIZARD_HEALTH, bu as WIZARD_RADIUS, bv as Warmage, bw as WizardActions, bx as WizardContext, by as WizardDeathEvent, bz as WizardEntry, bA as WizardFunction, bB as WizardGroup, bC as WizardLavaDeathEvent, bD as WizardState, bE as WorkerFactory, bF as WorkerLike, bG as analyzeThreats, bH as angleDiff, bI as angleInRange, bJ as angleTo, bK as applyDamage, bL as applyRulesetOverrides, bM as blink, bN as browserSandboxFight, bO as browserSandboxSimulate, bP as calculateBlinkCooldown, bQ as calculateMissileCastTime, bR as calculateMissileRadius, bS as calculateMissileSimilarity, bT as calculateShieldBlock, bU as calculateWarmupMultiplier, bV as canReplayMatch, bW as cancel, bX as cancelCast, bY as clampPositionToArena, bZ as clampToArena, b_ as clearHooks, b$ as clearParamValues, c0 as completeCast, c2 as createEntitySeed, c4 as createInitialState, c5 as createRandom, c6 as createWorkerScript, c7 as currentRuleset, c8 as diagnoseTrace, c9 as directionAway, ca as directionTo, cb as distanceTo, cc as effectiveTurnRateCost, cd as extractAction, ce as extractMissileAction, cf as extractStats, cg as extractTraceEvents, ch as fight, ci as findInRange, cj as findNearest, ck as fitMissileForEscapingTarget, cl as fitMissileToBudget, cm as flyStraight, cn as formatDiagnosis, co as formatStats, cp as formatTraceEvents, cq as formatTraceSummary, cr as generateCandidates, cs as generateCombos, ct as getAdaptiveMissileConfig, cu as getEffectiveRange, cv as getLeadPosition, cw as getMissileCastTime, cx as getMissileContext, cy as getPlayerState, cz as getWizardContext, cA as hashCombine, cB as homingMissile, cC as idle, cD as inRange, cE as interceptAngle, cF as isBannedBotName, cG as isInLava, cH as magnitude, cI as matchesAnyBanRule, cK as missile, cL as move, cM as moveInDirection, cN as moveProjectile, cO as moveWizard, cP as narrowRange, cQ as nextRandom, cR as normalize, cS as normalizeAngle, cT as predictPosition, cV as resetAllHooks, cW as resetRuleset, cX as resolveWizardCollision, cY as runWithHooks, cZ as runWizardWithContext, c_ as scoreFight, c$ as scoreFightAsWizard2, d0 as seekerMissile, d1 as setParamValues, d2 as shield, d3 as simulate, d4 as simulateMinDuration, d5 as sortByDistance, d6 as spiralMissile, d7 as startCast, d8 as startDiscovery, d9 as stopDiscovery, da as straightMissile, db as summarizeTrace, dc as sweptCircleCollision, dd as testBot, de as tick, df as turnToAngle, dg as turnToward, dh as updateShield, di as useArenaSize, dj as useBlinkCooldown, dk as useCastProgress, dl as useCastingSpell, dm as useClosestThreat, dn as useDamageDealt, dp as useDamageTaken, dq as useEffect, dr as useEnemy, ds as useHealth, dt as useLastHitTick, du as useLastMissileConfig, dv as useMemo, dw as useMyProjectiles, dx as useMyThreatsToEnemy, dy as useParam, dz as usePosition, dA as useProjectiles, dB as useRandom, dC as useRef, dD as useShieldStrength, dE as useState, dF as useStatus, dG as useThreats, dH as useTick, dI as useTicksUntilReady, dJ as useVelocity, dK as validateHookCall, dL as validateMissileConfig, dM as withMissileContext, dN as withWizardContext, dO as wrapWithParams } from './index-browser-ClmR9SkR.js';
@@ -225,7 +225,7 @@ import {
225
225
  withMissileContext,
226
226
  withWizardContext,
227
227
  wrapWithParams
228
- } from "./chunk-NR326XEY.js";
228
+ } from "./chunk-MUU3ELH5.js";
229
229
  export {
230
230
  ALL_BOTS,
231
231
  ARENA_MAX,
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { F as FightResult, S as SimulateResult } from './index-browser-iiIpqpDl.js';
2
- export { A as ALL_BOTS, a as ARENA_MAX, b as ARENA_MIN, c as ARENA_SIZE, d as ARENA_WATER_BUFFER, e as ActionBuilder, f as AnalyzedThreat, g as Archlich, h as Archmage, B as BLINK_CAST_TIME, i as BLINK_COOLDOWN, j as BLINK_MAX_COOLDOWN, k as BLINK_MAX_RANGE, l as BLINK_MIN_COOLDOWN, m as BLINK_RANGE, n as BOT_GROUPS, o as Battlemage, p as BlinkEvent, q as Bonemancer, r as BotBudgetState, s as BotError, t as BrowserManualMatchSandbox, u as BrowserMatchSandbox, v as BrowserSandboxOptions, w as BudgetLimits, C as CASTING_MOVEMENT_MULT, x as COLLISION_RADIUS, y as CastCancelEvent, z as CastStartEvent, D as Critter, E as DEFAULT_BUDGET, G as DEFAULT_FIGHT_BACKSTOP_MS, H as DEFAULT_SEED, I as Doombringer, J as ENGINE_VERSION, K as EQUIVALENT_ENGINE_VERSIONS, L as EnemyState, M as FIGHT_SPAWN_DISTANCES, N as FightBudget, O as FightStats, P as FightWinner, Q as FinalAction, R as Flamecaller, T as GCD_DURATION, U as GameConfig, V as GameState, W as Golem, X as Hero, Y as Hogger, Z as HomingParams, _ as HookState, $ as Infernalist, a0 as InternalWizardState, a1 as KNOCKBACK_DAMAGE_THRESHOLD, a2 as KNOCKBACK_DECAY, a3 as KNOCKBACK_DELAY, a4 as KNOCKBACK_SPEED_PER_DAMAGE, a5 as LAVA_BORDER_WIDTH, a6 as Lich, a7 as MATCH_DURATION, a8 as MAX_HEALTH, a9 as MISSILE_BASE_CAST, aa as MISSILE_BASE_RADIUS, ab as MISSILE_DAMAGE_POWER, ac as MISSILE_DAMAGE_RADIUS_SCALE, ad as MISSILE_DAMAGE_SCALE, ae as MISSILE_HOMING_COEFF, af as MISSILE_MIN_CAST_TIME, ag as MISSILE_MIN_DAMAGE, ah as MISSILE_MIN_DURATION, ai as MISSILE_MIN_SPEED, aj as MISSILE_RADIUS_PER_DAMAGE, ak as MISSILE_SPEED_DURATION_BASELINE, al as MISSILE_SPEED_DURATION_COEFF, am as MISSILE_TURN_DURATION_COEFF, an as MOVEMENT_SPEED, ao as MOVE_SPEED, ap as ManualMatch, aq as ManualMatchInitOptions, ar as ManualMatchOptions, as as ManualMatchStepRequest, at as MatchWinner, au as MissileAction, av as MissileActions, aw as MissileConfig, ax as MissileContext, ay as MissileExpiredEvent, az as MissileFunction, aA as MissileHitEvent, aB as MissileLaunchEvent, aC as MissileOobEvent, aD as MissileTemplate, aE as Nightblade, aF as ParamDeclaration, aG as Position, aH as ProjectileState, aI as Pyromancer, aJ as RULES, aK as RULESET_RANGES, aL as RefObject, aM as Rookie, aN as SHIELD_CAST_TIME, aO as SHIELD_DECAY_PER_SECOND, aP as SHIELD_DECAY_RATE, aQ as SHIELD_MAX_BLOCK, aR as SHIELD_MAX_STRENGTH, aS as SHIELD_MIN_BLOCK, aT as SHIELD_MIN_STRENGTH, aU as SPAWN_DISTANCE, aV as SeekerParams, aW as Sentinel, aX as Shadowblade, aY as ShieldBlockEvent, aZ as ShieldStartEvent, a_ as SimEvent, a$ as Spellbinder, b0 as Spellseeker, b1 as Spellshot, b2 as Spellspinner, b3 as Spelltracer, b4 as Spellweaver, b5 as SpiralParams, b6 as StepResult, b7 as Stormcaller, b8 as Stormchaser, b9 as Stormforger, ba as StraightParams, bb as TICKS_PER_SECOND, bc as TICK_DURATION_MS, bd as TargetDummy, be as TestBotBuilder, bf as TestFightResult, bg as TestSimulateResult, bh as TraceBotSummary, bi as TraceEvent, bj as TraceEventType, bk as TraceSummary, bl as Turtle, bm as Velocity, bn as Voidblade, bo as WARMUP_DURATION_TOLERANCE, bp as WARMUP_MAX_BONUS, bq as WARMUP_MAX_PENALTY, br as WARMUP_SPEED_TOLERANCE, bs as WARMUP_TURN_TOLERANCE, bt as WIZARD_HEALTH, bu as WIZARD_RADIUS, bv as Warmage, bw as WizardActions, bx as WizardContext, by as WizardDeathEvent, bz as WizardEntry, bA as WizardFunction, bB as WizardGroup, bC as WizardLavaDeathEvent, bD as WizardState, bE as WorkerFactory, bF as WorkerLike, bG as analyzeThreats, bH as angleDiff, bI as angleInRange, bJ as angleTo, bK as applyDamage, bL as applyRulesetOverrides, bM as blink, bN as browserSandboxFight, bO as browserSandboxSimulate, bP as calculateBlinkCooldown, bQ as calculateMissileCastTime, bR as calculateMissileRadius, bS as calculateMissileSimilarity, bT as calculateShieldBlock, bU as calculateWarmupMultiplier, bV as canReplayMatch, bW as cancel, bX as cancelCast, bY as clampPositionToArena, bZ as clampToArena, b_ as clearHooks, b$ as clearParamValues, c0 as completeCast, c1 as createBudgetState, c2 as createEntitySeed, c3 as createFightBudget, c4 as createInitialState, c5 as createRandom, c6 as createWorkerScript, c7 as currentRuleset, c8 as diagnoseTrace, c9 as directionAway, ca as directionTo, cb as distanceTo, cc as effectiveTurnRateCost, cd as extractAction, ce as extractMissileAction, cf as extractStats, cg as extractTraceEvents, ch as fight, ci as findInRange, cj as findNearest, ck as fitMissileForEscapingTarget, cl as fitMissileToBudget, cm as flyStraight, cn as formatDiagnosis, co as formatStats, cp as formatTraceEvents, cq as formatTraceSummary, cr as generateCandidates, cs as generateCombos, ct as getAdaptiveMissileConfig, cu as getEffectiveRange, cv as getLeadPosition, cw as getMissileCastTime, cx as getMissileContext, cy as getPlayerState, cz as getWizardContext, cA as hashCombine, cB as homingMissile, cC as idle, cD as inRange, cE as interceptAngle, cF as isBannedBotName, cG as isInLava, cH as magnitude, cI as matchesAnyBanRule, cJ as mayAct, cK as missile, cL as move, cM as moveInDirection, cN as moveProjectile, cO as moveWizard, cP as narrowRange, cQ as nextRandom, cR as normalize, cS as normalizeAngle, cT as predictPosition, cU as recordSpend, cV as resetAllHooks, cW as resetRuleset, cX as resolveWizardCollision, cY as runWithHooks, cZ as runWizardWithContext, c_ as scoreFight, c$ as scoreFightAsWizard2, d0 as seekerMissile, d1 as setParamValues, d2 as shield, d3 as simulate, d4 as simulateMinDuration, d5 as sortByDistance, d6 as spiralMissile, d7 as startCast, d8 as startDiscovery, d9 as stopDiscovery, da as straightMissile, db as summarizeTrace, dc as sweptCircleCollision, dd as testBot, de as tick, df as turnToAngle, dg as turnToward, dh as updateShield, di as useArenaSize, dj as useBlinkCooldown, dk as useCastProgress, dl as useCastingSpell, dm as useClosestThreat, dn as useDamageDealt, dp as useDamageTaken, dq as useEffect, dr as useEnemy, ds as useHealth, dt as useLastHitTick, du as useLastMissileConfig, dv as useMemo, dw as useMyProjectiles, dx as useMyThreatsToEnemy, dy as useParam, dz as usePosition, dA as useProjectiles, dB as useRandom, dC as useRef, dD as useShieldStrength, dE as useState, dF as useStatus, dG as useThreats, dH as useTick, dI as useTicksUntilReady, dJ as useVelocity, dK as validateHookCall, dL as validateMissileConfig, dM as withMissileContext, dN as withWizardContext, dO as wrapWithParams } from './index-browser-iiIpqpDl.js';
1
+ import { F as FightResult, S as SimulateResult } from './index-browser-ClmR9SkR.js';
2
+ export { A as ALL_BOTS, a as ARENA_MAX, b as ARENA_MIN, c as ARENA_SIZE, d as ARENA_WATER_BUFFER, e as ActionBuilder, f as AnalyzedThreat, g as Archlich, h as Archmage, B as BLINK_CAST_TIME, i as BLINK_COOLDOWN, j as BLINK_MAX_COOLDOWN, k as BLINK_MAX_RANGE, l as BLINK_MIN_COOLDOWN, m as BLINK_RANGE, n as BOT_GROUPS, o as Battlemage, p as BlinkEvent, q as Bonemancer, r as BotBudgetState, s as BotError, t as BrowserManualMatchSandbox, u as BrowserMatchSandbox, v as BrowserSandboxOptions, w as BudgetLimits, C as CASTING_MOVEMENT_MULT, x as COLLISION_RADIUS, y as CastCancelEvent, z as CastStartEvent, D as Critter, E as DEFAULT_BUDGET, G as DEFAULT_FIGHT_BACKSTOP_MS, H as DEFAULT_SEED, I as Doombringer, J as ENGINE_VERSION, K as EQUIVALENT_ENGINE_VERSIONS, L as EnemyState, M as FIGHT_SPAWN_DISTANCES, N as FightBudget, O as FightStats, P as FightWinner, Q as FinalAction, R as Flamecaller, T as GCD_DURATION, U as GameConfig, V as GameState, W as Golem, X as Hero, Y as Hogger, Z as HomingParams, _ as HookState, $ as Infernalist, a0 as InternalWizardState, a1 as KNOCKBACK_DAMAGE_THRESHOLD, a2 as KNOCKBACK_DECAY, a3 as KNOCKBACK_DELAY, a4 as KNOCKBACK_SPEED_PER_DAMAGE, a5 as LAVA_BORDER_WIDTH, a6 as Lich, a7 as MATCH_DURATION, a8 as MAX_HEALTH, a9 as MISSILE_BASE_CAST, aa as MISSILE_BASE_RADIUS, ab as MISSILE_DAMAGE_POWER, ac as MISSILE_DAMAGE_RADIUS_SCALE, ad as MISSILE_DAMAGE_SCALE, ae as MISSILE_HOMING_COEFF, af as MISSILE_MIN_CAST_TIME, ag as MISSILE_MIN_DAMAGE, ah as MISSILE_MIN_DURATION, ai as MISSILE_MIN_SPEED, aj as MISSILE_RADIUS_PER_DAMAGE, ak as MISSILE_SPEED_DURATION_BASELINE, al as MISSILE_SPEED_DURATION_COEFF, am as MISSILE_TURN_DURATION_COEFF, an as MOVEMENT_SPEED, ao as MOVE_SPEED, ap as ManualMatch, aq as ManualMatchInitOptions, ar as ManualMatchOptions, as as ManualMatchStepRequest, at as MatchWinner, au as MissileAction, av as MissileActions, aw as MissileConfig, ax as MissileContext, ay as MissileExpiredEvent, az as MissileFunction, aA as MissileHitEvent, aB as MissileLaunchEvent, aC as MissileOobEvent, aD as MissileTemplate, aE as Nightblade, aF as ParamDeclaration, aG as Position, aH as ProjectileState, aI as Pyromancer, aJ as RULES, aK as RULESET_RANGES, aL as RefObject, aM as Rookie, aN as SHIELD_CAST_TIME, aO as SHIELD_DECAY_PER_SECOND, aP as SHIELD_DECAY_RATE, aQ as SHIELD_MAX_BLOCK, aR as SHIELD_MAX_STRENGTH, aS as SHIELD_MIN_BLOCK, aT as SHIELD_MIN_STRENGTH, aU as SPAWN_DISTANCE, aV as SeekerParams, aW as Sentinel, aX as Shadowblade, aY as ShieldBlockEvent, aZ as ShieldStartEvent, a_ as SimEvent, a$ as Spellbinder, b0 as Spellseeker, b1 as Spellshot, b2 as Spellspinner, b3 as Spelltracer, b4 as Spellweaver, b5 as SpiralParams, b6 as StepResult, b7 as Stormcaller, b8 as Stormchaser, b9 as Stormforger, ba as StraightParams, bb as TICKS_PER_SECOND, bc as TICK_DURATION_MS, bd as TargetDummy, be as TestBotBuilder, bf as TestFightResult, bg as TestSimulateResult, bh as TraceBotSummary, bi as TraceEvent, bj as TraceEventType, bk as TraceSummary, bl as Turtle, bm as Velocity, bn as Voidblade, bo as WARMUP_DURATION_TOLERANCE, bp as WARMUP_MAX_BONUS, bq as WARMUP_MAX_PENALTY, br as WARMUP_SPEED_TOLERANCE, bs as WARMUP_TURN_TOLERANCE, bt as WIZARD_HEALTH, bu as WIZARD_RADIUS, bv as Warmage, bw as WizardActions, bx as WizardContext, by as WizardDeathEvent, bz as WizardEntry, bA as WizardFunction, bB as WizardGroup, bC as WizardLavaDeathEvent, bD as WizardState, bE as WorkerFactory, bF as WorkerLike, bG as analyzeThreats, bH as angleDiff, bI as angleInRange, bJ as angleTo, bK as applyDamage, bL as applyRulesetOverrides, bM as blink, bN as browserSandboxFight, bO as browserSandboxSimulate, bP as calculateBlinkCooldown, bQ as calculateMissileCastTime, bR as calculateMissileRadius, bS as calculateMissileSimilarity, bT as calculateShieldBlock, bU as calculateWarmupMultiplier, bV as canReplayMatch, bW as cancel, bX as cancelCast, bY as clampPositionToArena, bZ as clampToArena, b_ as clearHooks, b$ as clearParamValues, c0 as completeCast, c1 as createBudgetState, c2 as createEntitySeed, c3 as createFightBudget, c4 as createInitialState, c5 as createRandom, c6 as createWorkerScript, c7 as currentRuleset, c8 as diagnoseTrace, c9 as directionAway, ca as directionTo, cb as distanceTo, cc as effectiveTurnRateCost, cd as extractAction, ce as extractMissileAction, cf as extractStats, cg as extractTraceEvents, ch as fight, ci as findInRange, cj as findNearest, ck as fitMissileForEscapingTarget, cl as fitMissileToBudget, cm as flyStraight, cn as formatDiagnosis, co as formatStats, cp as formatTraceEvents, cq as formatTraceSummary, cr as generateCandidates, cs as generateCombos, ct as getAdaptiveMissileConfig, cu as getEffectiveRange, cv as getLeadPosition, cw as getMissileCastTime, cx as getMissileContext, cy as getPlayerState, cz as getWizardContext, cA as hashCombine, cB as homingMissile, cC as idle, cD as inRange, cE as interceptAngle, cF as isBannedBotName, cG as isInLava, cH as magnitude, cI as matchesAnyBanRule, cJ as mayAct, cK as missile, cL as move, cM as moveInDirection, cN as moveProjectile, cO as moveWizard, cP as narrowRange, cQ as nextRandom, cR as normalize, cS as normalizeAngle, cT as predictPosition, cU as recordSpend, cV as resetAllHooks, cW as resetRuleset, cX as resolveWizardCollision, cY as runWithHooks, cZ as runWizardWithContext, c_ as scoreFight, c$ as scoreFightAsWizard2, d0 as seekerMissile, d1 as setParamValues, d2 as shield, d3 as simulate, d4 as simulateMinDuration, d5 as sortByDistance, d6 as spiralMissile, d7 as startCast, d8 as startDiscovery, d9 as stopDiscovery, da as straightMissile, db as summarizeTrace, dc as sweptCircleCollision, dd as testBot, de as tick, df as turnToAngle, dg as turnToward, dh as updateShield, di as useArenaSize, dj as useBlinkCooldown, dk as useCastProgress, dl as useCastingSpell, dm as useClosestThreat, dn as useDamageDealt, dp as useDamageTaken, dq as useEffect, dr as useEnemy, ds as useHealth, dt as useLastHitTick, du as useLastMissileConfig, dv as useMemo, dw as useMyProjectiles, dx as useMyThreatsToEnemy, dy as useParam, dz as usePosition, dA as useProjectiles, dB as useRandom, dC as useRef, dD as useShieldStrength, dE as useState, dF as useStatus, dG as useThreats, dH as useTick, dI as useTicksUntilReady, dJ as useVelocity, dK as validateHookCall, dL as validateMissileConfig, dM as withMissileContext, dN as withWizardContext, dO as wrapWithParams } from './index-browser-ClmR9SkR.js';
3
3
 
4
4
  /**
5
5
  * A compiled bot ready for sandboxed execution.
package/dist/index.js CHANGED
@@ -231,7 +231,7 @@ import {
231
231
  withMissileContext,
232
232
  withWizardContext,
233
233
  wrapWithParams
234
- } from "./chunk-NR326XEY.js";
234
+ } from "./chunk-MUU3ELH5.js";
235
235
 
236
236
  // src/engine/sandbox.ts
237
237
  import ivm from "isolated-vm";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibemancer/core",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
4
4
  "description": "Vibemancer game engine - competitive programming wizard battle arena",
5
5
  "type": "module",
6
6
  "author": "Low Entry",
@@ -185,7 +185,9 @@ export class ManualMatch
185
185
 
186
186
  this.history.push(getPlayerState(0, this.wizards, this.projectiles, this.currentTick, result.events));
187
187
 
188
- // Track death and add grace period (0.5s = 50 ticks at 100 tps)
188
+ // Track death and add grace period (2s = 200 ticks at 100 tps), matching
189
+ // simulation.ts. The window is what makes a Draw reachable: a second death inside
190
+ // it is still recorded. Pinned by tests/death-grace-period.test.ts.
189
191
  if (!this.deathTick && (this.wizards[0]!.health <= 0 || this.wizards[1]!.health <= 0))
190
192
  {
191
193
  this.deathTick = this.currentTick;
@@ -9,7 +9,7 @@
9
9
  * Used to gate spectator replays: a recorded match can only be re-simulated when
10
10
  * the runtime engine version matches the version that produced the match.
11
11
  */
12
- export const ENGINE_VERSION = 4204441759696527;
12
+ export const ENGINE_VERSION = 3523070221336433;
13
13
 
14
14
  /**
15
15
  * Historical versions that denote the SAME engine as `ENGINE_VERSION`.