@vibemancer/core 1.0.9 → 1.0.10
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.
|
@@ -95,9 +95,20 @@ interface ActionBuilder extends FinalAction {
|
|
|
95
95
|
* to `missile()` is overwritten before the shot leaves. That makes the enemy impossible
|
|
96
96
|
* to LEAD: you always fire where they are, never where they will be.
|
|
97
97
|
*
|
|
98
|
-
* `lockAim()` holds your angle for the whole cast
|
|
99
|
-
* and
|
|
100
|
-
*
|
|
98
|
+
* `lockAim()` holds your angle for the whole cast — but it is USUALLY THE WRONG TOOL for
|
|
99
|
+
* leading, and this comment used to claim the opposite. Measured over 1,140 matches
|
|
100
|
+
* against the built-ins: auto-aim wins 80.5%, lockAim with a computed lead wins 29.3%,
|
|
101
|
+
* and it degrades monotonically the more shots you lock.
|
|
102
|
+
*
|
|
103
|
+
* The reason is cast time. A cast runs 88-240 ticks — up to 2.4 SECONDS — and lockAim
|
|
104
|
+
* freezes the angle at cast START, so it is stale long before the missile leaves. No bot
|
|
105
|
+
* holds a heading that long.
|
|
106
|
+
*
|
|
107
|
+
* TO LEAD A TARGET, call `aim(degrees)` on every tick of the cast and recompute the lead
|
|
108
|
+
* each time: same harness, 85.4%. That is what makes `getLeadPosition` worth calling.
|
|
109
|
+
*
|
|
110
|
+
* lockAim is for aiming at a PLACE rather than a bot — a lava edge, an escape lane, an
|
|
111
|
+
* area you want denied — where a fixed angle is the point.
|
|
101
112
|
*
|
|
102
113
|
* Chainable — `missile(cfg, ai, angle).lockAim().move(0, 1)` aims, fires and kites.
|
|
103
114
|
*/
|
package/dist/index-browser.d.ts
CHANGED
|
@@ -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 aim, bH as analyzeThreats, bI as angleDiff, bJ as angleInRange, bK as angleTo, bL as applyDamage, bM as applyRulesetOverrides, bN as blink, bO as browserSandboxFight, bP as browserSandboxSimulate, bQ as calculateBlinkCooldown, bR as calculateMissileCastTime, bS as calculateMissileRadius, bT as calculateMissileSimilarity, bU as calculateShieldBlock, bV as calculateWarmupMultiplier, bW as canReplayMatch, bX as cancel, bY as cancelCast, bZ as clampPositionToArena, b_ as clampToArena, b$ as clearHooks, c0 as clearParamValues, c1 as completeCast, c3 as createEntitySeed, c5 as createInitialState, c6 as createRandom, c7 as createWorkerScript, c8 as currentRuleset, c9 as diagnoseTrace, ca as directionAway, cb as directionTo, cc as distanceTo, cd as effectiveTurnRateCost, ce as extractAction, cf as extractMissileAction, cg as extractStats, ch as extractTraceEvents, ci as fight, cj as findInRange, ck as findNearest, cl as fitMissileForEscapingTarget, cm as fitMissileToBudget, cn as flyStraight, co as formatDiagnosis, cp as formatStats, cq as formatTraceEvents, cr as formatTraceSummary, cs as generateCandidates, ct as generateCombos, cu as getAdaptiveMissileConfig, cv as getEffectiveRange, cw as getLeadPosition, cx as getMissileCastTime, cy as getMissileContext, cz as getPlayerState, cA as getWizardContext, cB as hashCombine, cC as homingMissile, cD as idle, cE as inRange, cF as interceptAngle, cG as isBannedBotName, cH as isInLava, cI as magnitude, cJ as matchesAnyBanRule, cL as missile, cM as move, cN as moveInDirection, cO as moveProjectile, cP as moveWizard, cQ as narrowRange, cR as nextRandom, cS as normalize, cT as normalizeAngle, cU as predictPosition, cW as resetAllHooks, cX as resetRuleset, cY as resolveWizardCollision, cZ as runWithHooks, c_ as runWizardWithContext, c$ as scoreFight, d0 as scoreFightAsWizard2, d1 as seekerMissile, d2 as setParamValues, d3 as shield, d4 as simulate, d5 as simulateMinDuration, d6 as sortByDistance, d7 as spiralMissile, d8 as startCast, d9 as startDiscovery, da as stopDiscovery, db as straightMissile, dc as summarizeTrace, dd as sweptCircleCollision, de as testBot, df as tick, dg as turnToAngle, dh as turnToward, di as updateShield, dj as useArenaSize, dk as useBlinkCooldown, dl as useCastProgress, dm as useCastingSpell, dn as useClosestThreat, dp as useDamageDealt, dq as useDamageTaken, dr as useEffect, ds as useEnemy, dt as useHealth, du as useLastHitTick, dv as useLastMissileConfig, dw as useMemo, dx as useMyProjectiles, dy as useMyThreatsToEnemy, dz as useParam, dA as usePosition, dB as useProjectiles, dC as useRandom, dD as useRef, dE as useShieldStrength, dF as useState, dG as useStatus, dH as useThreats, dI as useTick, dJ as useTicksUntilReady, dK as useVelocity, dL as validateHookCall, dM as validateMissileConfig, dN as withMissileContext, dO as withWizardContext, dP as wrapWithParams } from './index-browser-
|
|
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 aim, bH as analyzeThreats, bI as angleDiff, bJ as angleInRange, bK as angleTo, bL as applyDamage, bM as applyRulesetOverrides, bN as blink, bO as browserSandboxFight, bP as browserSandboxSimulate, bQ as calculateBlinkCooldown, bR as calculateMissileCastTime, bS as calculateMissileRadius, bT as calculateMissileSimilarity, bU as calculateShieldBlock, bV as calculateWarmupMultiplier, bW as canReplayMatch, bX as cancel, bY as cancelCast, bZ as clampPositionToArena, b_ as clampToArena, b$ as clearHooks, c0 as clearParamValues, c1 as completeCast, c3 as createEntitySeed, c5 as createInitialState, c6 as createRandom, c7 as createWorkerScript, c8 as currentRuleset, c9 as diagnoseTrace, ca as directionAway, cb as directionTo, cc as distanceTo, cd as effectiveTurnRateCost, ce as extractAction, cf as extractMissileAction, cg as extractStats, ch as extractTraceEvents, ci as fight, cj as findInRange, ck as findNearest, cl as fitMissileForEscapingTarget, cm as fitMissileToBudget, cn as flyStraight, co as formatDiagnosis, cp as formatStats, cq as formatTraceEvents, cr as formatTraceSummary, cs as generateCandidates, ct as generateCombos, cu as getAdaptiveMissileConfig, cv as getEffectiveRange, cw as getLeadPosition, cx as getMissileCastTime, cy as getMissileContext, cz as getPlayerState, cA as getWizardContext, cB as hashCombine, cC as homingMissile, cD as idle, cE as inRange, cF as interceptAngle, cG as isBannedBotName, cH as isInLava, cI as magnitude, cJ as matchesAnyBanRule, cL as missile, cM as move, cN as moveInDirection, cO as moveProjectile, cP as moveWizard, cQ as narrowRange, cR as nextRandom, cS as normalize, cT as normalizeAngle, cU as predictPosition, cW as resetAllHooks, cX as resetRuleset, cY as resolveWizardCollision, cZ as runWithHooks, c_ as runWizardWithContext, c$ as scoreFight, d0 as scoreFightAsWizard2, d1 as seekerMissile, d2 as setParamValues, d3 as shield, d4 as simulate, d5 as simulateMinDuration, d6 as sortByDistance, d7 as spiralMissile, d8 as startCast, d9 as startDiscovery, da as stopDiscovery, db as straightMissile, dc as summarizeTrace, dd as sweptCircleCollision, de as testBot, df as tick, dg as turnToAngle, dh as turnToward, di as updateShield, dj as useArenaSize, dk as useBlinkCooldown, dl as useCastProgress, dm as useCastingSpell, dn as useClosestThreat, dp as useDamageDealt, dq as useDamageTaken, dr as useEffect, ds as useEnemy, dt as useHealth, du as useLastHitTick, dv as useLastMissileConfig, dw as useMemo, dx as useMyProjectiles, dy as useMyThreatsToEnemy, dz as useParam, dA as usePosition, dB as useProjectiles, dC as useRandom, dD as useRef, dE as useShieldStrength, dF as useState, dG as useStatus, dH as useThreats, dI as useTick, dJ as useTicksUntilReady, dK as useVelocity, dL as validateHookCall, dM as validateMissileConfig, dN as withMissileContext, dO as withWizardContext, dP as wrapWithParams } from './index-browser-BLioGWvO.js';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { F as FightResult, S as SimulateResult } from './index-browser-
|
|
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 aim, bH as analyzeThreats, bI as angleDiff, bJ as angleInRange, bK as angleTo, bL as applyDamage, bM as applyRulesetOverrides, bN as blink, bO as browserSandboxFight, bP as browserSandboxSimulate, bQ as calculateBlinkCooldown, bR as calculateMissileCastTime, bS as calculateMissileRadius, bT as calculateMissileSimilarity, bU as calculateShieldBlock, bV as calculateWarmupMultiplier, bW as canReplayMatch, bX as cancel, bY as cancelCast, bZ as clampPositionToArena, b_ as clampToArena, b$ as clearHooks, c0 as clearParamValues, c1 as completeCast, c2 as createBudgetState, c3 as createEntitySeed, c4 as createFightBudget, c5 as createInitialState, c6 as createRandom, c7 as createWorkerScript, c8 as currentRuleset, c9 as diagnoseTrace, ca as directionAway, cb as directionTo, cc as distanceTo, cd as effectiveTurnRateCost, ce as extractAction, cf as extractMissileAction, cg as extractStats, ch as extractTraceEvents, ci as fight, cj as findInRange, ck as findNearest, cl as fitMissileForEscapingTarget, cm as fitMissileToBudget, cn as flyStraight, co as formatDiagnosis, cp as formatStats, cq as formatTraceEvents, cr as formatTraceSummary, cs as generateCandidates, ct as generateCombos, cu as getAdaptiveMissileConfig, cv as getEffectiveRange, cw as getLeadPosition, cx as getMissileCastTime, cy as getMissileContext, cz as getPlayerState, cA as getWizardContext, cB as hashCombine, cC as homingMissile, cD as idle, cE as inRange, cF as interceptAngle, cG as isBannedBotName, cH as isInLava, cI as magnitude, cJ as matchesAnyBanRule, cK as mayAct, cL as missile, cM as move, cN as moveInDirection, cO as moveProjectile, cP as moveWizard, cQ as narrowRange, cR as nextRandom, cS as normalize, cT as normalizeAngle, cU as predictPosition, cV as recordSpend, cW as resetAllHooks, cX as resetRuleset, cY as resolveWizardCollision, cZ as runWithHooks, c_ as runWizardWithContext, c$ as scoreFight, d0 as scoreFightAsWizard2, d1 as seekerMissile, d2 as setParamValues, d3 as shield, d4 as simulate, d5 as simulateMinDuration, d6 as sortByDistance, d7 as spiralMissile, d8 as startCast, d9 as startDiscovery, da as stopDiscovery, db as straightMissile, dc as summarizeTrace, dd as sweptCircleCollision, de as testBot, df as tick, dg as turnToAngle, dh as turnToward, di as updateShield, dj as useArenaSize, dk as useBlinkCooldown, dl as useCastProgress, dm as useCastingSpell, dn as useClosestThreat, dp as useDamageDealt, dq as useDamageTaken, dr as useEffect, ds as useEnemy, dt as useHealth, du as useLastHitTick, dv as useLastMissileConfig, dw as useMemo, dx as useMyProjectiles, dy as useMyThreatsToEnemy, dz as useParam, dA as usePosition, dB as useProjectiles, dC as useRandom, dD as useRef, dE as useShieldStrength, dF as useState, dG as useStatus, dH as useThreats, dI as useTick, dJ as useTicksUntilReady, dK as useVelocity, dL as validateHookCall, dM as validateMissileConfig, dN as withMissileContext, dO as withWizardContext, dP as wrapWithParams } from './index-browser-
|
|
1
|
+
import { F as FightResult, S as SimulateResult } from './index-browser-BLioGWvO.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 aim, bH as analyzeThreats, bI as angleDiff, bJ as angleInRange, bK as angleTo, bL as applyDamage, bM as applyRulesetOverrides, bN as blink, bO as browserSandboxFight, bP as browserSandboxSimulate, bQ as calculateBlinkCooldown, bR as calculateMissileCastTime, bS as calculateMissileRadius, bT as calculateMissileSimilarity, bU as calculateShieldBlock, bV as calculateWarmupMultiplier, bW as canReplayMatch, bX as cancel, bY as cancelCast, bZ as clampPositionToArena, b_ as clampToArena, b$ as clearHooks, c0 as clearParamValues, c1 as completeCast, c2 as createBudgetState, c3 as createEntitySeed, c4 as createFightBudget, c5 as createInitialState, c6 as createRandom, c7 as createWorkerScript, c8 as currentRuleset, c9 as diagnoseTrace, ca as directionAway, cb as directionTo, cc as distanceTo, cd as effectiveTurnRateCost, ce as extractAction, cf as extractMissileAction, cg as extractStats, ch as extractTraceEvents, ci as fight, cj as findInRange, ck as findNearest, cl as fitMissileForEscapingTarget, cm as fitMissileToBudget, cn as flyStraight, co as formatDiagnosis, cp as formatStats, cq as formatTraceEvents, cr as formatTraceSummary, cs as generateCandidates, ct as generateCombos, cu as getAdaptiveMissileConfig, cv as getEffectiveRange, cw as getLeadPosition, cx as getMissileCastTime, cy as getMissileContext, cz as getPlayerState, cA as getWizardContext, cB as hashCombine, cC as homingMissile, cD as idle, cE as inRange, cF as interceptAngle, cG as isBannedBotName, cH as isInLava, cI as magnitude, cJ as matchesAnyBanRule, cK as mayAct, cL as missile, cM as move, cN as moveInDirection, cO as moveProjectile, cP as moveWizard, cQ as narrowRange, cR as nextRandom, cS as normalize, cT as normalizeAngle, cU as predictPosition, cV as recordSpend, cW as resetAllHooks, cX as resetRuleset, cY as resolveWizardCollision, cZ as runWithHooks, c_ as runWizardWithContext, c$ as scoreFight, d0 as scoreFightAsWizard2, d1 as seekerMissile, d2 as setParamValues, d3 as shield, d4 as simulate, d5 as simulateMinDuration, d6 as sortByDistance, d7 as spiralMissile, d8 as startCast, d9 as startDiscovery, da as stopDiscovery, db as straightMissile, dc as summarizeTrace, dd as sweptCircleCollision, de as testBot, df as tick, dg as turnToAngle, dh as turnToward, di as updateShield, dj as useArenaSize, dk as useBlinkCooldown, dl as useCastProgress, dm as useCastingSpell, dn as useClosestThreat, dp as useDamageDealt, dq as useDamageTaken, dr as useEffect, ds as useEnemy, dt as useHealth, du as useLastHitTick, dv as useLastMissileConfig, dw as useMemo, dx as useMyProjectiles, dy as useMyThreatsToEnemy, dz as useParam, dA as usePosition, dB as useProjectiles, dC as useRandom, dD as useRef, dE as useShieldStrength, dF as useState, dG as useStatus, dH as useThreats, dI as useTick, dJ as useTicksUntilReady, dK as useVelocity, dL as validateHookCall, dM as validateMissileConfig, dN as withMissileContext, dO as withWizardContext, dP as wrapWithParams } from './index-browser-BLioGWvO.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* A compiled bot ready for sandboxed execution.
|
package/package.json
CHANGED
package/src/hooks/types.ts
CHANGED
|
@@ -108,9 +108,20 @@ export interface ActionBuilder extends FinalAction
|
|
|
108
108
|
* to `missile()` is overwritten before the shot leaves. That makes the enemy impossible
|
|
109
109
|
* to LEAD: you always fire where they are, never where they will be.
|
|
110
110
|
*
|
|
111
|
-
* `lockAim()` holds your angle for the whole cast
|
|
112
|
-
* and
|
|
113
|
-
*
|
|
111
|
+
* `lockAim()` holds your angle for the whole cast — but it is USUALLY THE WRONG TOOL for
|
|
112
|
+
* leading, and this comment used to claim the opposite. Measured over 1,140 matches
|
|
113
|
+
* against the built-ins: auto-aim wins 80.5%, lockAim with a computed lead wins 29.3%,
|
|
114
|
+
* and it degrades monotonically the more shots you lock.
|
|
115
|
+
*
|
|
116
|
+
* The reason is cast time. A cast runs 88-240 ticks — up to 2.4 SECONDS — and lockAim
|
|
117
|
+
* freezes the angle at cast START, so it is stale long before the missile leaves. No bot
|
|
118
|
+
* holds a heading that long.
|
|
119
|
+
*
|
|
120
|
+
* TO LEAD A TARGET, call `aim(degrees)` on every tick of the cast and recompute the lead
|
|
121
|
+
* each time: same harness, 85.4%. That is what makes `getLeadPosition` worth calling.
|
|
122
|
+
*
|
|
123
|
+
* lockAim is for aiming at a PLACE rather than a bot — a lava edge, an escape lane, an
|
|
124
|
+
* area you want denied — where a fixed angle is the point.
|
|
114
125
|
*
|
|
115
126
|
* Chainable — `missile(cfg, ai, angle).lockAim().move(0, 1)` aims, fires and kites.
|
|
116
127
|
*/
|