@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.
- package/README.md +28 -28
- package/dist/{chunk-L7Z7OFXD.js → chunk-OL7ETV6V.js} +3 -3
- package/dist/chunk-OL7ETV6V.js.map +1 -0
- package/dist/index-browser.d.ts +1 -1
- package/dist/index-browser.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +79 -78
- package/src/bots/berserker/01_Stormchaser.ts +457 -457
- package/src/bots/berserker/02_Stormcaller.ts +417 -417
- package/src/bots/berserker/03_Stormforger.ts +481 -481
- package/src/bots/caster/01_Flamecaller.ts +286 -286
- package/src/bots/caster/02_Pyromancer.ts +350 -350
- package/src/bots/caster/03_Infernalist.ts +492 -492
- package/src/bots/defensive/01_Turtle.ts +151 -151
- package/src/bots/defensive/02_Sentinel.ts +134 -134
- package/src/bots/defensive/03_Golem.ts +357 -357
- package/src/bots/duelist/01_Battlemage.ts +433 -433
- package/src/bots/duelist/02_Warmage.ts +438 -438
- package/src/bots/duelist/03_Archmage.ts +588 -588
- package/src/bots/homing/01_Bonemancer.ts +67 -67
- package/src/bots/homing/02_Lich.ts +356 -356
- package/src/bots/homing/03_Archlich.ts +220 -220
- package/src/bots/kiter/01_Spellspinner.ts +398 -398
- package/src/bots/kiter/02_Spellweaver.ts +378 -378
- package/src/bots/kiter/03_Spellbinder.ts +448 -448
- package/src/bots/melee/01_Shadowblade.ts +270 -270
- package/src/bots/melee/02_Nightblade.ts +437 -437
- package/src/bots/melee/03_Voidblade.ts +582 -582
- package/src/bots/sniper/01_Spellshot.ts +385 -385
- package/src/bots/sniper/02_Spelltracer.ts +441 -441
- package/src/bots/sniper/03_Spellseeker.ts +546 -546
- package/src/bots/standalone/Critter.ts +89 -89
- package/src/bots/standalone/Doombringer.ts +91 -91
- package/src/bots/standalone/Hogger.ts +228 -228
- package/src/bots/standalone/Rookie.ts +50 -50
- package/src/bots/standalone/TargetDummy.ts +21 -21
- package/src/bots/test/cheater.ts +405 -405
- package/src/bots/test/crasher.ts +81 -81
- package/src/engine/hooks-runtime.ts +394 -394
- package/src/engine/manual-match.ts +289 -289
- package/src/engine/missile-templates.ts +155 -155
- package/src/engine/physics.ts +143 -143
- package/src/engine/simulation.ts +828 -828
- package/src/engine/spells.ts +128 -128
- package/src/engine-version.ts +1 -1
- package/src/index.ts +23 -23
- package/src/rules.ts +254 -254
- package/src/types.ts +193 -193
- package/src/utils/index.ts +6 -6
- 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
|
+
};
|