@vibemancer/core 0.1.0 → 0.1.2

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.
Files changed (50) hide show
  1. package/README.md +28 -28
  2. package/dist/{chunk-L7Z7OFXD.js → chunk-OL7ETV6V.js} +3 -3
  3. package/dist/chunk-OL7ETV6V.js.map +1 -0
  4. package/dist/index-browser.d.ts +1 -1
  5. package/dist/index-browser.js +1 -1
  6. package/dist/index.js +1 -1
  7. package/package.json +79 -78
  8. package/src/bots/berserker/01_Stormchaser.ts +457 -457
  9. package/src/bots/berserker/02_Stormcaller.ts +417 -417
  10. package/src/bots/berserker/03_Stormforger.ts +481 -481
  11. package/src/bots/caster/01_Flamecaller.ts +286 -286
  12. package/src/bots/caster/02_Pyromancer.ts +350 -350
  13. package/src/bots/caster/03_Infernalist.ts +492 -492
  14. package/src/bots/defensive/01_Turtle.ts +151 -151
  15. package/src/bots/defensive/02_Sentinel.ts +134 -134
  16. package/src/bots/defensive/03_Golem.ts +357 -357
  17. package/src/bots/duelist/01_Battlemage.ts +433 -433
  18. package/src/bots/duelist/02_Warmage.ts +438 -438
  19. package/src/bots/duelist/03_Archmage.ts +588 -588
  20. package/src/bots/homing/01_Bonemancer.ts +67 -67
  21. package/src/bots/homing/02_Lich.ts +356 -356
  22. package/src/bots/homing/03_Archlich.ts +220 -220
  23. package/src/bots/kiter/01_Spellspinner.ts +398 -398
  24. package/src/bots/kiter/02_Spellweaver.ts +378 -378
  25. package/src/bots/kiter/03_Spellbinder.ts +448 -448
  26. package/src/bots/melee/01_Shadowblade.ts +270 -270
  27. package/src/bots/melee/02_Nightblade.ts +437 -437
  28. package/src/bots/melee/03_Voidblade.ts +582 -582
  29. package/src/bots/sniper/01_Spellshot.ts +385 -385
  30. package/src/bots/sniper/02_Spelltracer.ts +441 -441
  31. package/src/bots/sniper/03_Spellseeker.ts +546 -546
  32. package/src/bots/standalone/Critter.ts +89 -89
  33. package/src/bots/standalone/Doombringer.ts +91 -91
  34. package/src/bots/standalone/Hogger.ts +228 -228
  35. package/src/bots/standalone/Rookie.ts +50 -50
  36. package/src/bots/standalone/TargetDummy.ts +21 -21
  37. package/src/bots/test/cheater.ts +405 -405
  38. package/src/bots/test/crasher.ts +81 -81
  39. package/src/engine/hooks-runtime.ts +394 -394
  40. package/src/engine/manual-match.ts +289 -289
  41. package/src/engine/missile-templates.ts +155 -155
  42. package/src/engine/physics.ts +143 -143
  43. package/src/engine/simulation.ts +828 -828
  44. package/src/engine/spells.ts +128 -128
  45. package/src/engine-version.ts +1 -1
  46. package/src/index.ts +23 -23
  47. package/src/rules.ts +254 -254
  48. package/src/types.ts +193 -193
  49. package/src/utils/index.ts +6 -6
  50. package/dist/chunk-L7Z7OFXD.js.map +0 -1
@@ -1,67 +1,67 @@
1
- import {WizardFunction, MissileAIFunction} from '../../types.js';
2
- import {angleTo} from '../../utils/angles.js';
3
-
4
- const SimpleHoming: MissileAIFunction = ({worldState}) =>
5
- {
6
- // Note: random is available but not used by this simple homing AI
7
- const enemy = worldState.enemies[0];
8
- return {
9
- turnToward: enemy?.position,
10
- };
11
- };
12
-
13
- /**
14
- * Bot: Bonemancer
15
- *
16
- * BEHAVIOR: Stands still and fires slow, homing missiles constantly. Every missile
17
- * tracks the enemy with turnRate 2 — they curve relentlessly toward the target.
18
- * No movement, no shields, just an unending stream of seeking projectiles. The
19
- * missiles are slow (speed 3) but long-lived (300 ticks) and will chase you across
20
- * the entire arena.
21
- *
22
- * NAMING RATIONALE: Named after Diablo 2's Bone Necromancer ("Bonemancer"), whose
23
- * signature spell Bone Spirit is a slow-moving, auto-tracking projectile that hunts
24
- * enemies relentlessly. That's exactly what this bot does — it stands in place and
25
- * spams seeking missiles. The homing behavior is the key identity: these aren't
26
- * aimed shots, they're heat-seeking spirits that chase you down. Every D2 player
27
- * knows the Bonemancer — it's one of the most iconic builds.
28
- *
29
- * PROGRESSION LINE: Bonemancer → Lich → Archlich
30
- * - Bonemancer (tier 1): Stationary, spams slow homing missiles
31
- * - Lich (tier 2): Future — enhanced homing with adaptive missiles and defense
32
- * - Archlich (tier 3): Future — master of tracking magic, undodgeable death swarm
33
- * The progression follows the D2 necromancer power fantasy: from bone apprentice
34
- * to undead overlord, each tier's missiles become harder to escape.
35
- *
36
- * TIER: 1 (base)
37
- */
38
- export const Bonemancer: WizardFunction = ({state}) =>
39
- {
40
- const enemy = state.enemies[0];
41
- if (!enemy)
42
- {
43
- return {move: {x: 0, y: 0}};
44
- }
45
-
46
- if (state.state === 'idle')
47
- {
48
- return {
49
- move: {x: 0, y: 0},
50
- startCast: {
51
- spell: 'missile',
52
- config: {
53
- damage: 12,
54
- speed: 3,
55
- turnRate: 2,
56
- duration: 300,
57
- },
58
- missileAI: SimpleHoming,
59
- direction: angleTo(state.position, enemy.position),
60
- },
61
- };
62
- }
63
-
64
- return {
65
- move: {x: 0, y: 0},
66
- };
67
- };
1
+ import {WizardFunction, MissileAIFunction} from '../../types.js';
2
+ import {angleTo} from '../../utils/angles.js';
3
+
4
+ const SimpleHoming: MissileAIFunction = ({worldState}) =>
5
+ {
6
+ // Note: random is available but not used by this simple homing AI
7
+ const enemy = worldState.enemies[0];
8
+ return {
9
+ turnToward: enemy?.position,
10
+ };
11
+ };
12
+
13
+ /**
14
+ * Bot: Bonemancer
15
+ *
16
+ * BEHAVIOR: Stands still and fires slow, homing missiles constantly. Every missile
17
+ * tracks the enemy with turnRate 2 — they curve relentlessly toward the target.
18
+ * No movement, no shields, just an unending stream of seeking projectiles. The
19
+ * missiles are slow (speed 3) but long-lived (300 ticks) and will chase you across
20
+ * the entire arena.
21
+ *
22
+ * NAMING RATIONALE: Named after Diablo 2's Bone Necromancer ("Bonemancer"), whose
23
+ * signature spell Bone Spirit is a slow-moving, auto-tracking projectile that hunts
24
+ * enemies relentlessly. That's exactly what this bot does — it stands in place and
25
+ * spams seeking missiles. The homing behavior is the key identity: these aren't
26
+ * aimed shots, they're heat-seeking spirits that chase you down. Every D2 player
27
+ * knows the Bonemancer — it's one of the most iconic builds.
28
+ *
29
+ * PROGRESSION LINE: Bonemancer → Lich → Archlich
30
+ * - Bonemancer (tier 1): Stationary, spams slow homing missiles
31
+ * - Lich (tier 2): Future — enhanced homing with adaptive missiles and defense
32
+ * - Archlich (tier 3): Future — master of tracking magic, undodgeable death swarm
33
+ * The progression follows the D2 necromancer power fantasy: from bone apprentice
34
+ * to undead overlord, each tier's missiles become harder to escape.
35
+ *
36
+ * TIER: 1 (base)
37
+ */
38
+ export const Bonemancer: WizardFunction = ({state}) =>
39
+ {
40
+ const enemy = state.enemies[0];
41
+ if (!enemy)
42
+ {
43
+ return {move: {x: 0, y: 0}};
44
+ }
45
+
46
+ if (state.state === 'idle')
47
+ {
48
+ return {
49
+ move: {x: 0, y: 0},
50
+ startCast: {
51
+ spell: 'missile',
52
+ config: {
53
+ damage: 12,
54
+ speed: 3,
55
+ turnRate: 2,
56
+ duration: 300,
57
+ },
58
+ missileAI: SimpleHoming,
59
+ direction: angleTo(state.position, enemy.position),
60
+ },
61
+ };
62
+ }
63
+
64
+ return {
65
+ move: {x: 0, y: 0},
66
+ };
67
+ };