clibuddy 1.0.0
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/LICENSE +21 -0
- package/README.md +60 -0
- package/dist/adventure/adventureUI.d.ts +24 -0
- package/dist/adventure/adventureUI.js +290 -0
- package/dist/adventure/adventures.d.ts +4 -0
- package/dist/adventure/adventures.js +206 -0
- package/dist/adventure/biomes.d.ts +30 -0
- package/dist/adventure/biomes.js +80 -0
- package/dist/adventure/combat/combat.d.ts +14 -0
- package/dist/adventure/combat/combat.js +638 -0
- package/dist/adventure/combat/combatUI.d.ts +5 -0
- package/dist/adventure/combat/combatUI.js +116 -0
- package/dist/adventure/combat/conditions.d.ts +20 -0
- package/dist/adventure/combat/conditions.js +111 -0
- package/dist/adventure/combat/enemies.d.ts +4 -0
- package/dist/adventure/combat/enemies.js +430 -0
- package/dist/adventure/combat/gear.d.ts +3 -0
- package/dist/adventure/combat/gear.js +199 -0
- package/dist/adventure/combat/skills.d.ts +6 -0
- package/dist/adventure/combat/skills.js +197 -0
- package/dist/adventure/combat.d.ts +31 -0
- package/dist/adventure/combat.js +732 -0
- package/dist/adventure/combatUI.d.ts +5 -0
- package/dist/adventure/combatUI.js +116 -0
- package/dist/adventure/endless.d.ts +18 -0
- package/dist/adventure/endless.js +154 -0
- package/dist/adventure/enemies.d.ts +4 -0
- package/dist/adventure/enemies.js +320 -0
- package/dist/adventure/engine.d.ts +20 -0
- package/dist/adventure/engine.js +137 -0
- package/dist/adventure/gear.d.ts +3 -0
- package/dist/adventure/gear.js +149 -0
- package/dist/adventure/generation/biomes.d.ts +30 -0
- package/dist/adventure/generation/biomes.js +102 -0
- package/dist/adventure/generation/endless.d.ts +18 -0
- package/dist/adventure/generation/endless.js +154 -0
- package/dist/adventure/generation/generator.d.ts +9 -0
- package/dist/adventure/generation/generator.js +245 -0
- package/dist/adventure/generation/templates.d.ts +25 -0
- package/dist/adventure/generation/templates.js +228 -0
- package/dist/adventure/generator.d.ts +9 -0
- package/dist/adventure/generator.js +245 -0
- package/dist/adventure/skills.d.ts +6 -0
- package/dist/adventure/skills.js +197 -0
- package/dist/adventure/templates.d.ts +25 -0
- package/dist/adventure/templates.js +228 -0
- package/dist/adventure/types.d.ts +236 -0
- package/dist/adventure/types.js +97 -0
- package/dist/app/state.d.ts +49 -0
- package/dist/app/state.js +51 -0
- package/dist/buddy/activities.d.ts +16 -0
- package/dist/buddy/activities.js +90 -0
- package/dist/buddy/decay.d.ts +3 -0
- package/dist/buddy/decay.js +45 -0
- package/dist/buddy/leveling.d.ts +11 -0
- package/dist/buddy/leveling.js +25 -0
- package/dist/buddy/roll.d.ts +4 -0
- package/dist/buddy/roll.js +61 -0
- package/dist/buddy/species.d.ts +4 -0
- package/dist/buddy/species.js +592 -0
- package/dist/buddy/titles.d.ts +17 -0
- package/dist/buddy/titles.js +89 -0
- package/dist/buddy/types.d.ts +92 -0
- package/dist/buddy/types.js +21 -0
- package/dist/commands/actions.d.ts +2 -0
- package/dist/commands/actions.js +141 -0
- package/dist/commands/admin.d.ts +2 -0
- package/dist/commands/admin.js +202 -0
- package/dist/commands/registry.d.ts +25 -0
- package/dist/commands/registry.js +31 -0
- package/dist/commands/social.d.ts +2 -0
- package/dist/commands/social.js +92 -0
- package/dist/dialogue/engine.d.ts +7 -0
- package/dist/dialogue/engine.js +68 -0
- package/dist/dialogue/lines.d.ts +26 -0
- package/dist/dialogue/lines.js +294 -0
- package/dist/events/engine.d.ts +20 -0
- package/dist/events/engine.js +51 -0
- package/dist/events/events.d.ts +13 -0
- package/dist/events/events.js +149 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +1665 -0
- package/dist/inventory/finding.d.ts +11 -0
- package/dist/inventory/finding.js +99 -0
- package/dist/inventory/items.d.ts +31 -0
- package/dist/inventory/items.js +63 -0
- package/dist/minigames/copycat.d.ts +2 -0
- package/dist/minigames/copycat.js +153 -0
- package/dist/minigames/fetch.d.ts +2 -0
- package/dist/minigames/fetch.js +179 -0
- package/dist/minigames/moodmatch.d.ts +2 -0
- package/dist/minigames/moodmatch.js +144 -0
- package/dist/minigames/quickpaws.d.ts +2 -0
- package/dist/minigames/quickpaws.js +142 -0
- package/dist/minigames/registry.d.ts +5 -0
- package/dist/minigames/registry.js +16 -0
- package/dist/minigames/rpsplus.d.ts +2 -0
- package/dist/minigames/rpsplus.js +168 -0
- package/dist/minigames/treasurehunt.d.ts +2 -0
- package/dist/minigames/treasurehunt.js +146 -0
- package/dist/minigames/types.d.ts +30 -0
- package/dist/minigames/types.js +69 -0
- package/dist/rendering/commandPalette.d.ts +16 -0
- package/dist/rendering/commandPalette.js +77 -0
- package/dist/rendering/display.d.ts +9 -0
- package/dist/rendering/display.js +231 -0
- package/dist/rendering/inventoryUI.d.ts +14 -0
- package/dist/rendering/inventoryUI.js +99 -0
- package/dist/rendering/items.d.ts +7 -0
- package/dist/rendering/items.js +34 -0
- package/dist/rendering/listUtils.d.ts +3 -0
- package/dist/rendering/listUtils.js +24 -0
- package/dist/rendering/minigameUI.d.ts +11 -0
- package/dist/rendering/minigameUI.js +37 -0
- package/dist/rendering/overlayUI.d.ts +24 -0
- package/dist/rendering/overlayUI.js +184 -0
- package/dist/rendering/scene.d.ts +8 -0
- package/dist/rendering/scene.js +87 -0
- package/dist/rendering/screen.d.ts +43 -0
- package/dist/rendering/screen.js +97 -0
- package/dist/sound/sound.d.ts +11 -0
- package/dist/sound/sound.js +55 -0
- package/dist/state/save.d.ts +5 -0
- package/dist/state/save.js +100 -0
- package/dist/state/settings.d.ts +7 -0
- package/dist/state/settings.js +81 -0
- package/dist/story/mainStory.d.ts +4 -0
- package/dist/story/mainStory.js +3111 -0
- package/dist/story/npcs.d.ts +17 -0
- package/dist/story/npcs.js +137 -0
- package/dist/story/progress.d.ts +26 -0
- package/dist/story/progress.js +168 -0
- package/dist/story/seasonal.d.ts +6 -0
- package/dist/story/seasonal.js +96 -0
- package/dist/story/shop.d.ts +7 -0
- package/dist/story/shop.js +26 -0
- package/dist/story/sideQuests.d.ts +4 -0
- package/dist/story/sideQuests.js +151 -0
- package/dist/story/types.d.ts +61 -0
- package/dist/story/types.js +36 -0
- package/dist/updates.d.ts +23 -0
- package/dist/updates.js +142 -0
- package/package.json +53 -0
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ENEMIES = void 0;
|
|
4
|
+
exports.getEnemy = getEnemy;
|
|
5
|
+
exports.ENEMIES = {
|
|
6
|
+
// ─── Easy ──────────────────────────────────────────
|
|
7
|
+
squirrel: {
|
|
8
|
+
id: "squirrel",
|
|
9
|
+
name: "Cheeky Squirrel",
|
|
10
|
+
element: "nature",
|
|
11
|
+
aiBehavior: "aggressive",
|
|
12
|
+
art: [" /\\ ∩ ", " (°°)// ", " ('') "],
|
|
13
|
+
encounterLine: "A squirrel chatters angrily at you!",
|
|
14
|
+
attackLine: "Squirrel throws an acorn!",
|
|
15
|
+
defeatLine: "Squirrel scampers up a tree!",
|
|
16
|
+
baseHp: 15, baseAtk: 4, baseDef: 2, baseSpd: 6,
|
|
17
|
+
xpReward: 10,
|
|
18
|
+
dropChance: 0.3,
|
|
19
|
+
dropPool: ["berry", "stick"],
|
|
20
|
+
},
|
|
21
|
+
mushroom: {
|
|
22
|
+
id: "mushroom",
|
|
23
|
+
name: "Mischievous Mushroom",
|
|
24
|
+
element: "nature",
|
|
25
|
+
aiBehavior: "defensive",
|
|
26
|
+
defendLine: "Mushroom curls up defensively!",
|
|
27
|
+
art: [" .--. ", " / \\ ", " | oo | ", " \\__/ "],
|
|
28
|
+
encounterLine: "A mushroom bounces into your path!",
|
|
29
|
+
attackLine: "Mushroom bonks you with its cap!",
|
|
30
|
+
defeatLine: "Mushroom pops and deflates!",
|
|
31
|
+
baseHp: 20, baseAtk: 3, baseDef: 4, baseSpd: 3,
|
|
32
|
+
xpReward: 12,
|
|
33
|
+
dropChance: 0.3,
|
|
34
|
+
dropPool: ["herb", "berry"],
|
|
35
|
+
},
|
|
36
|
+
snail: {
|
|
37
|
+
id: "snail",
|
|
38
|
+
name: "Grumpy Snail",
|
|
39
|
+
element: "water",
|
|
40
|
+
aiBehavior: "defensive",
|
|
41
|
+
defendLine: "Snail retreats into its shell!",
|
|
42
|
+
art: [" @@ ", " (__)\\ ", " ====== "],
|
|
43
|
+
encounterLine: "A snail glares at you. Slowly.",
|
|
44
|
+
attackLine: "Snail slimes you!",
|
|
45
|
+
defeatLine: "Snail retreats into its shell.",
|
|
46
|
+
baseHp: 25, baseAtk: 2, baseDef: 6, baseSpd: 1,
|
|
47
|
+
xpReward: 10,
|
|
48
|
+
dropChance: 0.2,
|
|
49
|
+
dropPool: ["herb"],
|
|
50
|
+
},
|
|
51
|
+
// ─── Medium ────────────────────────────────────────
|
|
52
|
+
shadowfox: {
|
|
53
|
+
id: "shadowfox",
|
|
54
|
+
name: "Shadow Fox",
|
|
55
|
+
element: "shadow",
|
|
56
|
+
aiBehavior: "evasive",
|
|
57
|
+
baseDodge: 0.20,
|
|
58
|
+
art: [" /\\ /\\ ", "( o.o ) ", " > V < "],
|
|
59
|
+
encounterLine: "A dark fox appears from the shadows!",
|
|
60
|
+
attackLine: "Shadow Fox strikes swiftly!",
|
|
61
|
+
defeatLine: "Shadow Fox vanishes into the dark.",
|
|
62
|
+
baseHp: 45, baseAtk: 8, baseDef: 4, baseSpd: 8,
|
|
63
|
+
xpReward: 20,
|
|
64
|
+
dropChance: 0.4,
|
|
65
|
+
dropPool: ["fish", "ball", "iron_sword"],
|
|
66
|
+
},
|
|
67
|
+
golem: {
|
|
68
|
+
id: "golem",
|
|
69
|
+
name: "Crystal Golem",
|
|
70
|
+
element: "light",
|
|
71
|
+
aiBehavior: "defensive",
|
|
72
|
+
defendLine: "Golem braces with crystal arms!",
|
|
73
|
+
art: [" [===] ", " |o o| ", " |___| ", " /| |\\ "],
|
|
74
|
+
encounterLine: "A crystal golem blocks the path!",
|
|
75
|
+
attackLine: "Golem slams the ground!",
|
|
76
|
+
defeatLine: "Golem crumbles into sparkling dust.",
|
|
77
|
+
baseHp: 40, baseAtk: 5, baseDef: 5, baseSpd: 2,
|
|
78
|
+
xpReward: 25,
|
|
79
|
+
dropChance: 0.4,
|
|
80
|
+
dropPool: ["crystal_blade", "potion"],
|
|
81
|
+
},
|
|
82
|
+
crow: {
|
|
83
|
+
id: "crow",
|
|
84
|
+
name: "Trickster Crow",
|
|
85
|
+
element: "shadow",
|
|
86
|
+
aiBehavior: "tactical",
|
|
87
|
+
art: [" \\ / ", " (oo) ", " /||\\ "],
|
|
88
|
+
encounterLine: "A crow swoops down, cackling!",
|
|
89
|
+
attackLine: "Crow pecks viciously!",
|
|
90
|
+
defeatLine: "Crow flaps away, grumbling.",
|
|
91
|
+
baseHp: 25, baseAtk: 8, baseDef: 2, baseSpd: 7,
|
|
92
|
+
xpReward: 18,
|
|
93
|
+
dropChance: 0.35,
|
|
94
|
+
dropPool: ["ball", "puzzle"],
|
|
95
|
+
},
|
|
96
|
+
// ─── Hard ──────────────────────────────────────────
|
|
97
|
+
stormwolf: {
|
|
98
|
+
id: "stormwolf",
|
|
99
|
+
name: "Storm Wolf",
|
|
100
|
+
element: "nature",
|
|
101
|
+
aiBehavior: "berserker",
|
|
102
|
+
art: [" /\\_/\\ ~", "( o o )~", " \\ / ", " W W "],
|
|
103
|
+
encounterLine: "A wolf howls amidst crackling thunder!",
|
|
104
|
+
attackLine: "Storm Wolf lunges!",
|
|
105
|
+
defeatLine: "Storm Wolf slinks away, whimpering.",
|
|
106
|
+
baseHp: 60, baseAtk: 11, baseDef: 6, baseSpd: 6,
|
|
107
|
+
xpReward: 35,
|
|
108
|
+
dropChance: 0.5,
|
|
109
|
+
dropPool: ["chain_mail", "iron_sword", "potion"],
|
|
110
|
+
},
|
|
111
|
+
lavabeetle: {
|
|
112
|
+
id: "lavabeetle",
|
|
113
|
+
name: "Lava Beetle",
|
|
114
|
+
element: "fire",
|
|
115
|
+
aiBehavior: "aggressive",
|
|
116
|
+
art: [" *\\ /* ", " (>.<) ", " /===\\ "],
|
|
117
|
+
encounterLine: "A beetle glowing with heat scuttles toward you!",
|
|
118
|
+
attackLine: "Lava Beetle spits fire!",
|
|
119
|
+
defeatLine: "Lava Beetle cools down and scurries off.",
|
|
120
|
+
baseHp: 35, baseAtk: 12, baseDef: 4, baseSpd: 5,
|
|
121
|
+
xpReward: 30,
|
|
122
|
+
dropChance: 0.45,
|
|
123
|
+
dropPool: ["flame_scepter", "potion", "elixir"],
|
|
124
|
+
},
|
|
125
|
+
// ─── Bosses ────────────────────────────────────────
|
|
126
|
+
marshking: {
|
|
127
|
+
id: "marshking",
|
|
128
|
+
name: "The Marsh King",
|
|
129
|
+
element: "water",
|
|
130
|
+
aiBehavior: "tactical",
|
|
131
|
+
art: [" .---. ", "/ o o \\ ", "| VVV | ", "\\ / ", " '---' "],
|
|
132
|
+
encounterLine: "The ground trembles... The Marsh King rises!",
|
|
133
|
+
attackLine: "Marsh King lashes with a slimy tentacle!",
|
|
134
|
+
defeatLine: "The Marsh King sinks back into the swamp... defeated!",
|
|
135
|
+
baseHp: 80, baseAtk: 9, baseDef: 6, baseSpd: 4,
|
|
136
|
+
xpReward: 60,
|
|
137
|
+
dropChance: 0.8,
|
|
138
|
+
dropPool: ["crystal_blade", "crystal_armor", "elixir"],
|
|
139
|
+
isBoss: true,
|
|
140
|
+
specialMove: {
|
|
141
|
+
name: "Swamp Surge",
|
|
142
|
+
line: "Marsh King summons a wave of muck!",
|
|
143
|
+
damageMultiplier: 1.8,
|
|
144
|
+
chance: 0.4,
|
|
145
|
+
},
|
|
146
|
+
phase2Move: {
|
|
147
|
+
name: "Poison Tide",
|
|
148
|
+
line: "The Marsh King unleashes a toxic flood!",
|
|
149
|
+
damageMultiplier: 1.4,
|
|
150
|
+
chance: 0.5,
|
|
151
|
+
},
|
|
152
|
+
enrageAtkBonus: 0.3,
|
|
153
|
+
},
|
|
154
|
+
crystalguardian: {
|
|
155
|
+
id: "crystalguardian",
|
|
156
|
+
name: "The Crystal Guardian",
|
|
157
|
+
element: "light",
|
|
158
|
+
aiBehavior: "defensive",
|
|
159
|
+
defendLine: "Crystal Guardian raises a barrier of light!",
|
|
160
|
+
art: [" /===\\ ", "| o o |", "| A |", "|=====|", " \\===/ "],
|
|
161
|
+
encounterLine: "A towering crystal construct awakens!",
|
|
162
|
+
attackLine: "Crystal Guardian fires a beam of light!",
|
|
163
|
+
defeatLine: "The Crystal Guardian shatters into a thousand sparkles!",
|
|
164
|
+
baseHp: 80, baseAtk: 10, baseDef: 7, baseSpd: 3,
|
|
165
|
+
xpReward: 80,
|
|
166
|
+
dropChance: 0.9,
|
|
167
|
+
dropPool: ["crystal_blade", "crystal_armor", "dragon_fang", "dragon_scale_armor"],
|
|
168
|
+
isBoss: true,
|
|
169
|
+
specialMove: {
|
|
170
|
+
name: "Crystal Heal",
|
|
171
|
+
line: "Crystal Guardian glows and regenerates!",
|
|
172
|
+
damageMultiplier: -0.2,
|
|
173
|
+
chance: 0.35,
|
|
174
|
+
},
|
|
175
|
+
phase2Move: {
|
|
176
|
+
name: "Prismatic Beam",
|
|
177
|
+
line: "Crystal Guardian channels a devastating beam!",
|
|
178
|
+
damageMultiplier: 2.0,
|
|
179
|
+
chance: 0.45,
|
|
180
|
+
},
|
|
181
|
+
enrageAtkBonus: 0.3,
|
|
182
|
+
},
|
|
183
|
+
// ─── New Easy ──────────────────────────────────────
|
|
184
|
+
flamesprite: {
|
|
185
|
+
id: "flamesprite",
|
|
186
|
+
name: "Flame Sprite",
|
|
187
|
+
element: "fire",
|
|
188
|
+
aiBehavior: "aggressive",
|
|
189
|
+
art: [" *\\|/* ", " (!) ", " /\\ "],
|
|
190
|
+
encounterLine: "A tiny flame dances angrily toward you!",
|
|
191
|
+
attackLine: "Flame Sprite flicks a spark!",
|
|
192
|
+
defeatLine: "The flame flickers out... poof!",
|
|
193
|
+
baseHp: 12, baseAtk: 5, baseDef: 1, baseSpd: 7,
|
|
194
|
+
xpReward: 10,
|
|
195
|
+
dropChance: 0.25,
|
|
196
|
+
dropPool: ["herb", "berry"],
|
|
197
|
+
},
|
|
198
|
+
puddleslime: {
|
|
199
|
+
id: "puddleslime",
|
|
200
|
+
name: "Puddle Slime",
|
|
201
|
+
element: "water",
|
|
202
|
+
aiBehavior: "defensive",
|
|
203
|
+
defendLine: "Puddle Slime jiggles defensively!",
|
|
204
|
+
art: [" ~~~ ", " (o o) ", " \\___/ "],
|
|
205
|
+
encounterLine: "A blob of water gurgles at you!",
|
|
206
|
+
attackLine: "Puddle Slime splashes you!",
|
|
207
|
+
defeatLine: "Puddle Slime evaporates into mist.",
|
|
208
|
+
baseHp: 22, baseAtk: 2, baseDef: 5, baseSpd: 2,
|
|
209
|
+
xpReward: 10,
|
|
210
|
+
dropChance: 0.25,
|
|
211
|
+
dropPool: ["herb", "berry"],
|
|
212
|
+
},
|
|
213
|
+
// ─── New Medium ────────────────────────────────────
|
|
214
|
+
emberfox: {
|
|
215
|
+
id: "emberfox",
|
|
216
|
+
name: "Ember Fox",
|
|
217
|
+
element: "fire",
|
|
218
|
+
aiBehavior: "evasive",
|
|
219
|
+
baseDodge: 0.15,
|
|
220
|
+
art: [" /\\ /\\ ", "(*.* )~", " > V < "],
|
|
221
|
+
encounterLine: "A fox wreathed in embers snarls at you!",
|
|
222
|
+
attackLine: "Ember Fox lunges with fiery claws!",
|
|
223
|
+
defeatLine: "Ember Fox's flames die down as it retreats.",
|
|
224
|
+
baseHp: 40, baseAtk: 7, baseDef: 4, baseSpd: 9,
|
|
225
|
+
xpReward: 20,
|
|
226
|
+
dropChance: 0.35,
|
|
227
|
+
dropPool: ["fish", "potion", "flame_scepter"],
|
|
228
|
+
},
|
|
229
|
+
vinecreeper: {
|
|
230
|
+
id: "vinecreeper",
|
|
231
|
+
name: "Vine Creeper",
|
|
232
|
+
element: "nature",
|
|
233
|
+
aiBehavior: "tactical",
|
|
234
|
+
art: [" }|{ ", " /|o|\\ ", " \\|_|/ "],
|
|
235
|
+
encounterLine: "Vines lash out from the ground!",
|
|
236
|
+
attackLine: "Vine Creeper whips you with thorns!",
|
|
237
|
+
defeatLine: "The vines wither and retreat underground.",
|
|
238
|
+
baseHp: 22, baseAtk: 5, baseDef: 2, baseSpd: 3,
|
|
239
|
+
xpReward: 22,
|
|
240
|
+
dropChance: 0.35,
|
|
241
|
+
dropPool: ["herb", "potion", "thorn_whip"],
|
|
242
|
+
},
|
|
243
|
+
rustknight: {
|
|
244
|
+
id: "rustknight",
|
|
245
|
+
name: "Rust Knight",
|
|
246
|
+
element: "neutral",
|
|
247
|
+
aiBehavior: "defensive",
|
|
248
|
+
defendLine: "Rust Knight raises its corroded shield!",
|
|
249
|
+
art: [" [+] ", " /||\\ ", " _||_ "],
|
|
250
|
+
encounterLine: "An ancient suit of armor clanks to life!",
|
|
251
|
+
attackLine: "Rust Knight swings a rusty blade!",
|
|
252
|
+
defeatLine: "The armor collapses into a pile of rust.",
|
|
253
|
+
baseHp: 55, baseAtk: 8, baseDef: 8, baseSpd: 3,
|
|
254
|
+
xpReward: 24,
|
|
255
|
+
dropChance: 0.4,
|
|
256
|
+
dropPool: ["iron_sword", "chain_mail", "potion"],
|
|
257
|
+
},
|
|
258
|
+
// ─── New Hard ──────────────────────────────────────
|
|
259
|
+
crystalbasilisk: {
|
|
260
|
+
id: "crystalbasilisk",
|
|
261
|
+
name: "Crystal Basilisk",
|
|
262
|
+
element: "light",
|
|
263
|
+
aiBehavior: "tactical",
|
|
264
|
+
art: [" /\\_/\\ ", " {o o} ", " /====\\ ", " ~~~~ "],
|
|
265
|
+
encounterLine: "A serpent of crystal light slithers toward you!",
|
|
266
|
+
attackLine: "Crystal Basilisk strikes with a beam of light!",
|
|
267
|
+
defeatLine: "The basilisk shatters into prismatic shards!",
|
|
268
|
+
baseHp: 60, baseAtk: 10, baseDef: 7, baseSpd: 5,
|
|
269
|
+
xpReward: 32,
|
|
270
|
+
dropChance: 0.45,
|
|
271
|
+
dropPool: ["crystal_blade", "crystal_armor", "sunblade"],
|
|
272
|
+
},
|
|
273
|
+
bogwitch: {
|
|
274
|
+
id: "bogwitch",
|
|
275
|
+
name: "Bog Witch",
|
|
276
|
+
element: "water",
|
|
277
|
+
aiBehavior: "tactical",
|
|
278
|
+
art: [" /\\ ", " {><} ", " /||\\ ", " _/\\_ "],
|
|
279
|
+
encounterLine: "Cackling echoes from the mist... a witch emerges!",
|
|
280
|
+
attackLine: "Bog Witch hurls a curse!",
|
|
281
|
+
defeatLine: "The witch dissolves into swamp fog.",
|
|
282
|
+
baseHp: 55, baseAtk: 12, baseDef: 5, baseSpd: 4,
|
|
283
|
+
xpReward: 30,
|
|
284
|
+
dropChance: 0.45,
|
|
285
|
+
dropPool: ["potion", "elixir", "coral_plate"],
|
|
286
|
+
},
|
|
287
|
+
// ─── New Boss ──────────────────────────────────────
|
|
288
|
+
infernodrake: {
|
|
289
|
+
id: "infernodrake",
|
|
290
|
+
name: "The Inferno Drake",
|
|
291
|
+
element: "fire",
|
|
292
|
+
aiBehavior: "berserker",
|
|
293
|
+
art: [" /\\/\\ ", " {o><o} ", " /|/\\|\\ ", " \\~~~~/ ", " |||| "],
|
|
294
|
+
encounterLine: "The air shimmers with heat... The Inferno Drake descends!",
|
|
295
|
+
attackLine: "Inferno Drake rakes with burning claws!",
|
|
296
|
+
defeatLine: "The drake crashes down, its flames extinguished!",
|
|
297
|
+
baseHp: 85, baseAtk: 11, baseDef: 5, baseSpd: 5,
|
|
298
|
+
xpReward: 70,
|
|
299
|
+
dropChance: 0.85,
|
|
300
|
+
dropPool: ["dragon_fang", "flame_scepter", "dragon_scale_armor", "phoenix_tears"],
|
|
301
|
+
isBoss: true,
|
|
302
|
+
specialMove: {
|
|
303
|
+
name: "Flame Barrage",
|
|
304
|
+
line: "Inferno Drake unleashes a torrent of fire!",
|
|
305
|
+
damageMultiplier: 1.6,
|
|
306
|
+
chance: 0.5,
|
|
307
|
+
},
|
|
308
|
+
phase2Move: {
|
|
309
|
+
name: "Molten Breath",
|
|
310
|
+
line: "The Drake's breath turns to liquid fire!",
|
|
311
|
+
damageMultiplier: 1.8,
|
|
312
|
+
chance: 0.5,
|
|
313
|
+
},
|
|
314
|
+
enrageAtkBonus: 0.4,
|
|
315
|
+
},
|
|
316
|
+
// ─── Story Bosses ──────────────────────────────────
|
|
317
|
+
corruptedtreant: {
|
|
318
|
+
id: "corruptedtreant",
|
|
319
|
+
name: "Corrupted Treant",
|
|
320
|
+
element: "nature",
|
|
321
|
+
aiBehavior: "defensive",
|
|
322
|
+
defendLine: "The Treant's bark hardens with dark energy!",
|
|
323
|
+
art: [" /||\\ ", " /|##|\\ ", " ||##|| ", " \\||/ ", " _||_ "],
|
|
324
|
+
encounterLine: "The ancient tree MOVES — corrupted vines lash out!",
|
|
325
|
+
attackLine: "Corrupted Treant smashes with a gnarled fist!",
|
|
326
|
+
defeatLine: "The dark energy fades... the Treant returns to peaceful slumber.",
|
|
327
|
+
baseHp: 40, baseAtk: 6, baseDef: 4, baseSpd: 2,
|
|
328
|
+
xpReward: 40,
|
|
329
|
+
dropChance: 0.7,
|
|
330
|
+
dropPool: ["thorn_whip", "bark_shield", "crystal_crown"],
|
|
331
|
+
isBoss: true,
|
|
332
|
+
specialMove: {
|
|
333
|
+
name: "Root Eruption",
|
|
334
|
+
line: "Roots burst from the ground!",
|
|
335
|
+
damageMultiplier: 1.6,
|
|
336
|
+
chance: 0.4,
|
|
337
|
+
},
|
|
338
|
+
phase2Move: {
|
|
339
|
+
name: "Corruption Pulse",
|
|
340
|
+
line: "A wave of dark nature energy ripples outward!",
|
|
341
|
+
damageMultiplier: 1.4,
|
|
342
|
+
chance: 0.5,
|
|
343
|
+
},
|
|
344
|
+
enrageAtkBonus: 0.25,
|
|
345
|
+
},
|
|
346
|
+
corruptedgolem: {
|
|
347
|
+
id: "corruptedgolem",
|
|
348
|
+
name: "Corrupted Crystal Golem",
|
|
349
|
+
element: "light",
|
|
350
|
+
aiBehavior: "defensive",
|
|
351
|
+
defendLine: "Corrupted Golem channels dark crystal energy!",
|
|
352
|
+
art: [" [===] ", " |X X| ", " |___| ", " /| |\\ "],
|
|
353
|
+
encounterLine: "The Golem's crystals pulse with an unnatural dark light!",
|
|
354
|
+
attackLine: "Corrupted Golem fires a corrupted beam!",
|
|
355
|
+
defeatLine: "The corruption drains from the crystals... they shine pure again.",
|
|
356
|
+
baseHp: 70, baseAtk: 9, baseDef: 8, baseSpd: 2,
|
|
357
|
+
xpReward: 55,
|
|
358
|
+
dropChance: 0.7,
|
|
359
|
+
dropPool: ["crystal_blade", "crystal_armor", "crystal_crown"],
|
|
360
|
+
isBoss: true,
|
|
361
|
+
specialMove: {
|
|
362
|
+
name: "Crystal Storm",
|
|
363
|
+
line: "Shards of corrupted crystal fly everywhere!",
|
|
364
|
+
damageMultiplier: 1.7,
|
|
365
|
+
chance: 0.4,
|
|
366
|
+
},
|
|
367
|
+
enrageAtkBonus: 0.3,
|
|
368
|
+
},
|
|
369
|
+
// ─── Final Story Bosses ────────────────────────────
|
|
370
|
+
thestranger: {
|
|
371
|
+
id: "thestranger",
|
|
372
|
+
name: "The Stranger",
|
|
373
|
+
element: "shadow",
|
|
374
|
+
aiBehavior: "tactical",
|
|
375
|
+
art: [" /|\\ ", " {X.X} ", " /|||\\ ", " ||| ", " / \\ "],
|
|
376
|
+
encounterLine: "The Stranger steps from the shadows. \"You should have listened.\"",
|
|
377
|
+
attackLine: "The Stranger strikes with borrowed power!",
|
|
378
|
+
defeatLine: "The darkness lifts... a weary, ancient buddy stands before you, free at last.",
|
|
379
|
+
baseHp: 110, baseAtk: 14, baseDef: 8, baseSpd: 7,
|
|
380
|
+
xpReward: 100,
|
|
381
|
+
dropChance: 0.9,
|
|
382
|
+
dropPool: ["shadow_dagger", "shadow_cloak", "shadow_hood", "shadow_steps"],
|
|
383
|
+
isBoss: true,
|
|
384
|
+
specialMove: {
|
|
385
|
+
name: "Shadow Mimic",
|
|
386
|
+
line: "The Stranger copies your fighting style!",
|
|
387
|
+
damageMultiplier: 2.0,
|
|
388
|
+
chance: 0.45,
|
|
389
|
+
},
|
|
390
|
+
phase2Move: {
|
|
391
|
+
name: "Desperation Blast",
|
|
392
|
+
line: "\"I won't let it escape! Even if I have to stop YOU!\"",
|
|
393
|
+
damageMultiplier: 2.2,
|
|
394
|
+
chance: 0.5,
|
|
395
|
+
},
|
|
396
|
+
enrageAtkBonus: 0.35,
|
|
397
|
+
},
|
|
398
|
+
shadowbeast: {
|
|
399
|
+
id: "shadowbeast",
|
|
400
|
+
name: "The Shadow Beast",
|
|
401
|
+
element: "shadow",
|
|
402
|
+
aiBehavior: "berserker",
|
|
403
|
+
art: [" /\\\\/\\\\ ", " { O O } ", " /|\\||||/|\\ ", " \\/\\/\\/\\/\\/ ", " || || ", " _||__||_ "],
|
|
404
|
+
encounterLine: "The ground SHATTERS. A form of pure darkness rises, consuming all light. THE SHADOW BEAST AWAKENS.",
|
|
405
|
+
attackLine: "The Shadow Beast lashes out with tendrils of pure void!",
|
|
406
|
+
defeatLine: "The Beast SCREAMS — light pours through its cracks — and it dissolves into nothing. The world is saved.",
|
|
407
|
+
baseHp: 110, baseAtk: 15, baseDef: 7, baseSpd: 6,
|
|
408
|
+
xpReward: 200,
|
|
409
|
+
dropChance: 1.0,
|
|
410
|
+
dropPool: ["dragon_fang", "dragon_scale_armor", "dragon_helm", "dragon_greaves", "elementalist_orb"],
|
|
411
|
+
isBoss: true,
|
|
412
|
+
specialMove: {
|
|
413
|
+
name: "Void Consumption",
|
|
414
|
+
line: "The Shadow Beast devours the light itself!",
|
|
415
|
+
damageMultiplier: 2.5,
|
|
416
|
+
chance: 0.5,
|
|
417
|
+
},
|
|
418
|
+
phase2Move: {
|
|
419
|
+
name: "Element Storm",
|
|
420
|
+
line: "The Beast cycles through every element — fire, water, nature, light, shadow!",
|
|
421
|
+
damageMultiplier: 2.0,
|
|
422
|
+
chance: 0.6,
|
|
423
|
+
},
|
|
424
|
+
enrageAtkBonus: 0.5,
|
|
425
|
+
},
|
|
426
|
+
};
|
|
427
|
+
function getEnemy(id) {
|
|
428
|
+
return exports.ENEMIES[id];
|
|
429
|
+
}
|
|
430
|
+
//# sourceMappingURL=enemies.js.map
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GEAR_ITEMS = void 0;
|
|
4
|
+
exports.GEAR_ITEMS = [
|
|
5
|
+
// ─── Weapons ───────────────────────────────────────
|
|
6
|
+
{
|
|
7
|
+
id: "wooden_stick", name: "Wooden Stick", description: "+1 ATK",
|
|
8
|
+
rarity: "common", type: "weapon", statEffect: {}, xpBonus: 0, combatATK: 1,
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
id: "iron_sword", name: "Iron Sword", description: "+3 ATK",
|
|
12
|
+
rarity: "uncommon", type: "weapon", statEffect: {}, xpBonus: 0, combatATK: 3,
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
id: "crystal_blade", name: "Crystal Blade", description: "+5 ATK, +5% crit",
|
|
16
|
+
rarity: "rare", type: "weapon", statEffect: {}, xpBonus: 0, combatATK: 5, critBonus: 0.05,
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
id: "flame_scepter", name: "Flame Scepter", description: "+6 ATK, Fire, 15% burn on hit",
|
|
20
|
+
rarity: "epic", type: "weapon", statEffect: {}, xpBonus: 0, combatATK: 6,
|
|
21
|
+
gearElement: "fire", onHitEffect: "burn", onHitChance: 0.15, onHitPower: 3,
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
id: "frost_edge", name: "Frost Edge", description: "+6 ATK, Water, 10% freeze on hit",
|
|
25
|
+
rarity: "epic", type: "weapon", statEffect: {}, xpBonus: 0, combatATK: 6,
|
|
26
|
+
gearElement: "water", onHitEffect: "freeze", onHitChance: 0.10, onHitPower: 1,
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
id: "dragon_fang", name: "Dragon Fang", description: "+8 ATK, Fire, +10% crit, 20% burn",
|
|
30
|
+
rarity: "legendary", type: "weapon", statEffect: {}, xpBonus: 0, combatATK: 8,
|
|
31
|
+
gearElement: "fire", critBonus: 0.10, onHitEffect: "burn", onHitChance: 0.20, onHitPower: 5,
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
id: "shadow_dagger", name: "Shadow Dagger", description: "+7 ATK, Shadow, +15% dodge, 15% charm",
|
|
35
|
+
rarity: "legendary", type: "weapon", statEffect: {}, xpBonus: 0, combatATK: 7,
|
|
36
|
+
gearElement: "shadow", dodgeBonus: 0.15, onHitEffect: "charm", onHitChance: 0.15, onHitPower: 1,
|
|
37
|
+
},
|
|
38
|
+
// ─── Armor ─────────────────────────────────────────
|
|
39
|
+
{
|
|
40
|
+
id: "leaf_cloak", name: "Leaf Cloak", description: "+2 DEF",
|
|
41
|
+
rarity: "common", type: "armor", statEffect: {}, xpBonus: 0, combatDEF: 2,
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
id: "chain_mail", name: "Chain Mail", description: "+4 DEF",
|
|
45
|
+
rarity: "uncommon", type: "armor", statEffect: {}, xpBonus: 0, combatDEF: 4,
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
id: "crystal_armor", name: "Crystal Armor", description: "+7 DEF, +10 HP",
|
|
49
|
+
rarity: "rare", type: "armor", statEffect: {}, xpBonus: 0, combatDEF: 7, combatHP: 10,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: "phoenix_robe", name: "Phoenix Feather Robe", description: "+8 DEF, regen 3hp/t",
|
|
53
|
+
rarity: "epic", type: "armor", statEffect: {}, xpBonus: 0, combatDEF: 8,
|
|
54
|
+
// Regen applied at combat start as a condition
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
id: "thornmail", name: "Thornmail", description: "+6 DEF, reflect 3 dmg to attackers",
|
|
58
|
+
rarity: "epic", type: "armor", statEffect: {}, xpBonus: 0, combatDEF: 6,
|
|
59
|
+
// Reflect handled in applyDamageToPlayer
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
id: "dragon_scale_armor", name: "Dragon Scale Armor", description: "+12 DEF, +20 HP, -2 flat dmg",
|
|
63
|
+
rarity: "legendary", type: "armor", statEffect: {}, xpBonus: 0, combatDEF: 12, combatHP: 20, damageReduction: 2,
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
id: "shadow_cloak", name: "Shadow Cloak", description: "+8 DEF, +15% dodge",
|
|
67
|
+
rarity: "legendary", type: "armor", statEffect: {}, xpBonus: 0, combatDEF: 8, dodgeBonus: 0.15,
|
|
68
|
+
},
|
|
69
|
+
// ─── Accessories ───────────────────────────────────
|
|
70
|
+
{
|
|
71
|
+
id: "lucky_charm", name: "Lucky Charm", description: "+10% crit",
|
|
72
|
+
rarity: "uncommon", type: "accessory", statEffect: {}, xpBonus: 0, critBonus: 0.10,
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
id: "swift_boots", name: "Swift Boots", description: "+3 SPD",
|
|
76
|
+
rarity: "uncommon", type: "accessory", statEffect: {}, xpBonus: 0, combatSPD: 3,
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
id: "mana_crystal", name: "Mana Crystal", description: "+2 starting energy",
|
|
80
|
+
rarity: "rare", type: "accessory", statEffect: {}, xpBonus: 0, energyBonus: 2,
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
id: "life_pendant", name: "Life Pendant", description: "+15 HP",
|
|
84
|
+
rarity: "rare", type: "accessory", statEffect: {}, xpBonus: 0, combatHP: 15,
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
id: "berserker_ring", name: "Berserker Ring", description: "+20% ATK when HP < 30%",
|
|
88
|
+
rarity: "epic", type: "accessory", statEffect: {}, xpBonus: 0,
|
|
89
|
+
// Berserker effect handled in combat damage calc
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
id: "guardian_shield", name: "Guardian Shield", description: "Start with 15hp shield",
|
|
93
|
+
rarity: "epic", type: "accessory", statEffect: {}, xpBonus: 0,
|
|
94
|
+
},
|
|
95
|
+
// ─── New Weapons (element coverage) ────────────────
|
|
96
|
+
{
|
|
97
|
+
id: "thorn_whip", name: "Thorn Whip", description: "+4 ATK, Nature, 15% poison",
|
|
98
|
+
rarity: "rare", type: "weapon", statEffect: {}, xpBonus: 0, combatATK: 4,
|
|
99
|
+
gearElement: "nature", onHitEffect: "poison", onHitChance: 0.15, onHitPower: 3,
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
id: "sunblade", name: "Sunblade", description: "+6 ATK, Light, 10% blind",
|
|
103
|
+
rarity: "epic", type: "weapon", statEffect: {}, xpBonus: 0, combatATK: 6,
|
|
104
|
+
gearElement: "light", onHitEffect: "blind", onHitChance: 0.10, onHitPower: 1,
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
id: "midnight_bow", name: "Midnight Bow", description: "+4 ATK, Shadow, +10% dodge",
|
|
108
|
+
rarity: "rare", type: "weapon", statEffect: {}, xpBonus: 0, combatATK: 4,
|
|
109
|
+
gearElement: "shadow", dodgeBonus: 0.10,
|
|
110
|
+
},
|
|
111
|
+
// ─── New Armor (element coverage) ──────────────────
|
|
112
|
+
{
|
|
113
|
+
id: "bark_shield", name: "Bark Shield", description: "+6 DEF, +10 HP",
|
|
114
|
+
rarity: "rare", type: "armor", statEffect: {}, xpBonus: 0, combatDEF: 6, combatHP: 10,
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
id: "coral_plate", name: "Coral Plate", description: "+9 DEF, Water",
|
|
118
|
+
rarity: "epic", type: "armor", statEffect: {}, xpBonus: 0, combatDEF: 9,
|
|
119
|
+
},
|
|
120
|
+
// ─── New Accessories ───────────────────────────────
|
|
121
|
+
{
|
|
122
|
+
id: "nature_ring", name: "Nature Ring", description: "+5% dodge",
|
|
123
|
+
rarity: "uncommon", type: "accessory", statEffect: {}, xpBonus: 0, dodgeBonus: 0.05,
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
id: "fire_amulet", name: "Fire Amulet", description: "+5% crit, Fire",
|
|
127
|
+
rarity: "rare", type: "accessory", statEffect: {}, xpBonus: 0, critBonus: 0.05, gearElement: "fire",
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
id: "dodge_cloak", name: "Dodge Cloak", description: "+12% dodge",
|
|
131
|
+
rarity: "rare", type: "accessory", statEffect: {}, xpBonus: 0, dodgeBonus: 0.12,
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
id: "vampiric_fang", name: "Vampiric Fang", description: "Heal 3 HP per attack",
|
|
135
|
+
rarity: "epic", type: "accessory", statEffect: {}, xpBonus: 0,
|
|
136
|
+
// Heal on hit handled in combat
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
id: "elementalist_orb", name: "Elementalist Orb", description: "+3 energy, +5% crit, +10 HP",
|
|
140
|
+
rarity: "legendary", type: "accessory", statEffect: {}, xpBonus: 0,
|
|
141
|
+
energyBonus: 3, critBonus: 0.05, combatHP: 10,
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
id: "thunder_bracelet", name: "Thunder Bracelet", description: "+5 SPD, 10% stun",
|
|
145
|
+
rarity: "legendary", type: "accessory", statEffect: {}, xpBonus: 0,
|
|
146
|
+
combatSPD: 5, onHitEffect: "stun", onHitChance: 0.10, onHitPower: 1,
|
|
147
|
+
},
|
|
148
|
+
// ─── Helmets ───────────────────────────────────────
|
|
149
|
+
{
|
|
150
|
+
id: "leather_cap", name: "Leather Cap", description: "+5 HP",
|
|
151
|
+
rarity: "common", type: "helmet", statEffect: {}, xpBonus: 0, combatHP: 5,
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
id: "iron_helm", name: "Iron Helm", description: "+10 HP, +1 DEF",
|
|
155
|
+
rarity: "uncommon", type: "helmet", statEffect: {}, xpBonus: 0, combatHP: 10, combatDEF: 1,
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
id: "crystal_crown", name: "Crystal Crown", description: "+15 HP, +5% crit",
|
|
159
|
+
rarity: "rare", type: "helmet", statEffect: {}, xpBonus: 0, combatHP: 15, critBonus: 0.05,
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
id: "shadow_hood", name: "Shadow Hood", description: "+10 HP, +8% dodge",
|
|
163
|
+
rarity: "rare", type: "helmet", statEffect: {}, xpBonus: 0, combatHP: 10, dodgeBonus: 0.08,
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
id: "phoenix_crest", name: "Phoenix Crest", description: "+20 HP, burn immune",
|
|
167
|
+
rarity: "epic", type: "helmet", statEffect: {}, xpBonus: 0, combatHP: 20,
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
id: "dragon_helm", name: "Dragon Horned Helm", description: "+25 HP, +2 DEF, +5% crit",
|
|
171
|
+
rarity: "legendary", type: "helmet", statEffect: {}, xpBonus: 0, combatHP: 25, combatDEF: 2, critBonus: 0.05,
|
|
172
|
+
},
|
|
173
|
+
// ─── Boots ─────────────────────────────────────────
|
|
174
|
+
{
|
|
175
|
+
id: "sandals", name: "Sandals", description: "+1 SPD",
|
|
176
|
+
rarity: "common", type: "boots", statEffect: {}, xpBonus: 0, combatSPD: 1,
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
id: "leather_boots", name: "Leather Boots", description: "+2 SPD, +3% dodge",
|
|
180
|
+
rarity: "uncommon", type: "boots", statEffect: {}, xpBonus: 0, combatSPD: 2, dodgeBonus: 0.03,
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
id: "wind_runners", name: "Wind Runners", description: "+4 SPD, +8% dodge",
|
|
184
|
+
rarity: "rare", type: "boots", statEffect: {}, xpBonus: 0, combatSPD: 4, dodgeBonus: 0.08,
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
id: "shadow_steps", name: "Shadow Steps", description: "+3 SPD, +12% dodge",
|
|
188
|
+
rarity: "epic", type: "boots", statEffect: {}, xpBonus: 0, combatSPD: 3, dodgeBonus: 0.12,
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
id: "flame_treads", name: "Flame Treads", description: "+3 SPD, Fire, 10% burn on dodge",
|
|
192
|
+
rarity: "epic", type: "boots", statEffect: {}, xpBonus: 0, combatSPD: 3, gearElement: "fire",
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
id: "dragon_greaves", name: "Dragon Greaves", description: "+5 SPD, +10% dodge, +10 HP",
|
|
196
|
+
rarity: "legendary", type: "boots", statEffect: {}, xpBonus: 0, combatSPD: 5, dodgeBonus: 0.10, combatHP: 10,
|
|
197
|
+
},
|
|
198
|
+
];
|
|
199
|
+
//# sourceMappingURL=gear.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { SkillDef } from "../types";
|
|
2
|
+
export declare const SKILLS: SkillDef[];
|
|
3
|
+
/** Get skills available to a species at a given level */
|
|
4
|
+
export declare function getAvailableSkills(speciesId: string, level: number): SkillDef[];
|
|
5
|
+
export declare function getSkill(id: string): SkillDef | undefined;
|
|
6
|
+
//# sourceMappingURL=skills.d.ts.map
|