polats Claude Opus 4.8 (1M context) commited on
Commit
38a1e17
·
1 Parent(s): 6e155d8

Add Classes + Enemies sandbox tabs (synced from auto-battler)

Browse files

Wire the shared Classes/Enemies playgrounds (web/classesSandbox.js,
web/enemiesSandbox.js, bundled by build.sh from auto-battler) into the Space:
gr.Tab + #classes-stage / #enemies-stage full-bleed CSS, link classes.css, and
mount them from web/tiny.js (remapping /assets/ → /sprites/). The engine bundle
(web/engine.js) and nav.json refresh too.

build.sh: esbuild the two sandbox modules, copy classes.css + classes.json +
enemies.json + effects.json, and curate the ~44 CB skill icons + condition pips
into web/gw (served via a new /gw mount). The customize panel is read-only on the
Space (no /api). Future combat changes cascade with one build.sh run.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. app.py +14 -3
  2. build.sh +18 -0
  3. web/assets/classes.json +359 -0
  4. web/assets/effects.json +2417 -0
  5. web/assets/enemies.json +161 -0
  6. web/classesSandbox.js +0 -0
  7. web/enemiesSandbox.js +0 -0
  8. web/engine.js +93 -3
  9. web/gw/icons/condition-bleeding.jpg +0 -0
  10. web/gw/icons/condition-blind.jpg +0 -0
  11. web/gw/icons/condition-burning.jpg +0 -0
  12. web/gw/icons/condition-cracked-armor.jpg +0 -0
  13. web/gw/icons/condition-crippled.jpg +0 -0
  14. web/gw/icons/condition-dazed.jpg +0 -0
  15. web/gw/icons/condition-deep-wound.jpg +0 -0
  16. web/gw/icons/condition-disease.jpg +0 -0
  17. web/gw/icons/condition-poison.jpg +0 -0
  18. web/gw/icons/condition-weakness.jpg +0 -0
  19. web/gw/skills/1.jpg +0 -0
  20. web/gw/skills/101.jpg +0 -0
  21. web/gw/skills/1024.jpg +0 -0
  22. web/gw/skills/106.jpg +0 -0
  23. web/gw/skills/109.jpg +0 -0
  24. web/gw/skills/1114.jpg +0 -0
  25. web/gw/skills/115.jpg +0 -0
  26. web/gw/skills/118.jpg +0 -0
  27. web/gw/skills/121.jpg +0 -0
  28. web/gw/skills/135.jpg +0 -0
  29. web/gw/skills/1466.jpg +0 -0
  30. web/gw/skills/1470.jpg +0 -0
  31. web/gw/skills/150.jpg +0 -0
  32. web/gw/skills/153.jpg +0 -0
  33. web/gw/skills/1727.jpg +0 -0
  34. web/gw/skills/240.jpg +0 -0
  35. web/gw/skills/245.jpg +0 -0
  36. web/gw/skills/252.jpg +0 -0
  37. web/gw/skills/281.jpg +0 -0
  38. web/gw/skills/282.jpg +0 -0
  39. web/gw/skills/283.jpg +0 -0
  40. web/gw/skills/307.jpg +0 -0
  41. web/gw/skills/312.jpg +0 -0
  42. web/gw/skills/331.jpg +0 -0
  43. web/gw/skills/332.jpg +0 -0
  44. web/gw/skills/348.jpg +0 -0
  45. web/gw/skills/352.jpg +0 -0
  46. web/gw/skills/372.jpg +0 -0
  47. web/gw/skills/382.jpg +0 -0
  48. web/gw/skills/384.jpg +0 -0
  49. web/gw/skills/385.jpg +0 -0
  50. web/gw/skills/391.jpg +0 -0
app.py CHANGED
@@ -110,17 +110,18 @@ THEME = ('<style>'
110
  # Gradio still hides it (display:none on the inactive tab's ancestor).
111
  '.gradio-container .tabitem{padding:0 !important;}'
112
  '.gradio-container .tabs{border:0 !important;}'
113
- '#sprite-stage,#persona-stage,#diary-stage{position:fixed !important;top:0;bottom:0;'
114
  'right:0;left:var(--tac-w,240px);height:auto !important;z-index:1;}'
115
  'body.tac-collapsed #sprite-stage,body.tac-collapsed #persona-stage,'
116
- 'body.tac-collapsed #diary-stage{left:0;}'
117
- '@media (max-width:768px){#sprite-stage,#persona-stage,#diary-stage{left:0;}}'
118
  '</style>')
119
  HEAD = ('<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">'
120
  + HIDE_TABS + FONTS + THEME +
121
  '<link rel="stylesheet" href="/web/shell/sidebar.css">'
122
  '<link rel="stylesheet" href="/web/shell/spriteScene.css">'
123
  '<link rel="stylesheet" href="/web/shell/persona.css">'
 
124
  '<script type="module" src="/web/tiny.js"></script>'
125
  '<script src="/web/shell/sidebar.js"></script>')
126
  STAGE = "height:56vh;border:1px solid #20262e;border-radius:12px;overflow:hidden;background:#0b0e12"
@@ -207,6 +208,14 @@ with gr.Blocks(title="Tiny Army") as ui:
207
  # Sandbox: the Coding Model (Settings → Coding Model) authors a combat skill
208
  # for a chosen hero. Filled by web/skillForgePanel.js.
209
  gr.HTML('<div id="skillforge-stage" style="overflow:hidden"></div>')
 
 
 
 
 
 
 
 
210
  # Pixi canvases start hidden (0×0); re-measure them when a tab is shown.
211
  battle_tab.select(None, None, None, js="()=>window.tinyResize&&window.tinyResize()")
212
  sprite_tab.select(None, None, None, js="()=>window.tinyResize&&window.tinyResize()")
@@ -246,6 +255,8 @@ fastapi_app.mount("/web", StaticFiles(directory=WEB), name="web")
246
  # NOTE: serve sprite assets at /sprites, NOT /assets — Gradio serves its own UI
247
  # bundle from /assets, and mounting there shadows it (breaks the whole UI).
248
  fastapi_app.mount("/sprites", StaticFiles(directory=os.path.join(WEB, "assets")), name="sprites")
 
 
249
 
250
 
251
  def _sse(event, data):
 
110
  # Gradio still hides it (display:none on the inactive tab's ancestor).
111
  '.gradio-container .tabitem{padding:0 !important;}'
112
  '.gradio-container .tabs{border:0 !important;}'
113
+ '#sprite-stage,#persona-stage,#diary-stage,#classes-stage,#enemies-stage{position:fixed !important;top:0;bottom:0;'
114
  'right:0;left:var(--tac-w,240px);height:auto !important;z-index:1;}'
115
  'body.tac-collapsed #sprite-stage,body.tac-collapsed #persona-stage,'
116
+ 'body.tac-collapsed #diary-stage,body.tac-collapsed #classes-stage,body.tac-collapsed #enemies-stage{left:0;}'
117
+ '@media (max-width:768px){#sprite-stage,#persona-stage,#diary-stage,#classes-stage,#enemies-stage{left:0;}}'
118
  '</style>')
119
  HEAD = ('<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">'
120
  + HIDE_TABS + FONTS + THEME +
121
  '<link rel="stylesheet" href="/web/shell/sidebar.css">'
122
  '<link rel="stylesheet" href="/web/shell/spriteScene.css">'
123
  '<link rel="stylesheet" href="/web/shell/persona.css">'
124
+ '<link rel="stylesheet" href="/web/shell/classes.css">'
125
  '<script type="module" src="/web/tiny.js"></script>'
126
  '<script src="/web/shell/sidebar.js"></script>')
127
  STAGE = "height:56vh;border:1px solid #20262e;border-radius:12px;overflow:hidden;background:#0b0e12"
 
208
  # Sandbox: the Coding Model (Settings → Coding Model) authors a combat skill
209
  # for a chosen hero. Filled by web/skillForgePanel.js.
210
  gr.HTML('<div id="skillforge-stage" style="overflow:hidden"></div>')
211
+ with gr.Tab("Classes"):
212
+ # Sandbox: the shared Classes playground (web/classesSandbox.js, synced from
213
+ # auto-battler) — class picker + WASD combat + customize panel.
214
+ gr.HTML('<div id="classes-stage" style="overflow:hidden"></div>')
215
+ with gr.Tab("Enemies"):
216
+ # Sandbox: the shared Enemies playground (web/enemiesSandbox.js) — enemy
217
+ # roster + WASD combat + stats/skill customize panel.
218
+ gr.HTML('<div id="enemies-stage" style="overflow:hidden"></div>')
219
  # Pixi canvases start hidden (0×0); re-measure them when a tab is shown.
220
  battle_tab.select(None, None, None, js="()=>window.tinyResize&&window.tinyResize()")
221
  sprite_tab.select(None, None, None, js="()=>window.tinyResize&&window.tinyResize()")
 
255
  # NOTE: serve sprite assets at /sprites, NOT /assets — Gradio serves its own UI
256
  # bundle from /assets, and mounting there shadows it (breaks the whole UI).
257
  fastapi_app.mount("/sprites", StaticFiles(directory=os.path.join(WEB, "assets")), name="sprites")
258
+ # Skill + condition icons for the Classes sandbox (curated subset under web/gw).
259
+ fastapi_app.mount("/gw", StaticFiles(directory=os.path.join(WEB, "gw")), name="gw")
260
 
261
 
262
  def _sse(event, data):
build.sh CHANGED
@@ -14,16 +14,34 @@ npx --yes esbuild "$AB/src/engine/teamBattle.js" --bundle --format=esm --ou
14
  npx --yes esbuild "$AB/src/render/spriteSheet.js" --bundle --format=esm --outfile=web/sheet.js
15
  npx --yes esbuild "$AB/src/render/spriteScene.js" --bundle --format=esm --outfile=web/scene.js
16
  npx --yes esbuild "$AB/src/render/spritePlayground.js" --bundle --format=esm --outfile=web/playground.js
 
 
 
 
17
 
18
  # 2. App shell (nav IR + sidebar CSS/JS) + the playground chrome CSS → copied
19
  # verbatim, so they can't drift from the React app, which renders the same files.
20
  mkdir -p web/shell
21
  cp "$AB/src/shell/nav.json" "$AB/src/shell/sidebar.css" "$AB/src/shell/sidebar.js" web/shell/
22
  cp "$AB/src/render/spriteScene.css" web/shell/spriteScene.css
 
23
 
24
  # 3. Assets → use auto-battler's FULL character manifest (so the Space lists every
25
  # character, like the app) and curate every sheet it references (~1 MB).
26
  cp "$AB/public/assets/characters.json" web/assets/characters.json
 
 
 
 
 
27
  AB="$AB" python3 curate_assets.py
28
 
 
 
 
 
 
 
 
 
29
  echo "synced web/{engine,sheet,scene}.js + web/shell/* + assets from $AB"
 
14
  npx --yes esbuild "$AB/src/render/spriteSheet.js" --bundle --format=esm --outfile=web/sheet.js
15
  npx --yes esbuild "$AB/src/render/spriteScene.js" --bundle --format=esm --outfile=web/scene.js
16
  npx --yes esbuild "$AB/src/render/spritePlayground.js" --bundle --format=esm --outfile=web/playground.js
17
+ # Classes sandbox — the full page (picker + WASD combat + customize) as one bundle;
18
+ # pulls in the shared combatRenderer + engine. Pixi injected by web/tiny.js.
19
+ npx --yes esbuild "$AB/src/render/classesSandbox.js" --bundle --format=esm --outfile=web/classesSandbox.js
20
+ npx --yes esbuild "$AB/src/render/enemiesSandbox.js" --bundle --format=esm --outfile=web/enemiesSandbox.js
21
 
22
  # 2. App shell (nav IR + sidebar CSS/JS) + the playground chrome CSS → copied
23
  # verbatim, so they can't drift from the React app, which renders the same files.
24
  mkdir -p web/shell
25
  cp "$AB/src/shell/nav.json" "$AB/src/shell/sidebar.css" "$AB/src/shell/sidebar.js" web/shell/
26
  cp "$AB/src/render/spriteScene.css" web/shell/spriteScene.css
27
+ cp "$AB/src/views/classes.css" web/shell/classes.css
28
 
29
  # 3. Assets → use auto-battler's FULL character manifest (so the Space lists every
30
  # character, like the app) and curate every sheet it references (~1 MB).
31
  cp "$AB/public/assets/characters.json" web/assets/characters.json
32
+ # Classes sandbox data: the effects catalogue + the class config (sprite/anim/skill
33
+ # choices). Served at /sprites/* (web/assets is mounted there); tiny.js fetches them.
34
+ cp "$AB/public/assets/effects.json" web/assets/effects.json
35
+ cp "$AB/public/classes.json" web/assets/classes.json
36
+ cp "$AB/public/enemies.json" web/assets/enemies.json
37
  AB="$AB" python3 curate_assets.py
38
 
39
+ # 4. /gw icons the Classes sandbox shows — just the ~44 CB skill icons (NOT all
40
+ # 1484 GW icons) + the condition pips. Served at /gw (mounted in app.py).
41
+ AB_ABS="$(cd "$AB" && pwd)"
42
+ mkdir -p web/gw/skills web/gw/icons
43
+ cp "$AB"/public/gw/icons/*.jpg web/gw/icons/ 2>/dev/null || true
44
+ node --input-type=module -e "import {CB_SKILLS} from 'file://$AB_ABS/src/engine/skills.js'; for (const s of CB_SKILLS) console.log(s.id)" \
45
+ | while IFS= read -r id; do cp "$AB/public/gw/skills/$id.jpg" web/gw/skills/ 2>/dev/null || true; done
46
+
47
  echo "synced web/{engine,sheet,scene}.js + web/shell/* + assets from $AB"
web/assets/classes.json ADDED
@@ -0,0 +1,359 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "classes": {
3
+ "Warrior": {
4
+ "sprite": "true-heroes-iii-fighter",
5
+ "bar": [],
6
+ "attackAnim": "figther-cataclysm",
7
+ "attackEffect": "none",
8
+ "attackType": "melee",
9
+ "projectile": "none"
10
+ },
11
+ "Ranger": {
12
+ "sprite": "true-heroes-iii-ranger",
13
+ "bar": [],
14
+ "attackType": "ranged",
15
+ "attackAnim": "attack",
16
+ "attackEffects": [],
17
+ "projectile": "auto"
18
+ },
19
+ "Monk": {
20
+ "sprite": "true-heroes-ii-cleric",
21
+ "bar": [],
22
+ "attackAnim": "attack"
23
+ },
24
+ "Necromancer": {
25
+ "sprite": "true-heroes-iv-blood-mage",
26
+ "bar": [],
27
+ "attackAnim": "attack",
28
+ "attackType": "melee"
29
+ },
30
+ "Mesmer": {
31
+ "sprite": "true-heroes-ii-bard",
32
+ "bar": [],
33
+ "attackType": "ranged",
34
+ "attackAnim": "jump"
35
+ },
36
+ "Elementalist": {
37
+ "sprite": "true-heroes-iii-wizard",
38
+ "bar": [],
39
+ "attackType": "ranged",
40
+ "attackAnim": "jump"
41
+ },
42
+ "Assassin": {
43
+ "sprite": "true-heroes-iv-ninja-assassin",
44
+ "bar": [],
45
+ "attackAnim": "thousand-blades-start"
46
+ },
47
+ "Ritualist": {
48
+ "sprite": "true-heroes-iv-tech-augmented-gunslinger",
49
+ "bar": [],
50
+ "attackAnim": "attack",
51
+ "attackType": "ranged"
52
+ },
53
+ "Paragon": {
54
+ "sprite": "true-heroes-ii-paladin",
55
+ "bar": []
56
+ },
57
+ "Dervish": {
58
+ "sprite": "dark-brotherhood-devoted-blade",
59
+ "bar": []
60
+ }
61
+ },
62
+ "skills": {
63
+ "1": {
64
+ "effects": [
65
+ "auto",
66
+ "special-apotheosis"
67
+ ]
68
+ },
69
+ "101": {
70
+ "anim": "blood-spikes",
71
+ "effects": [
72
+ "special-blood-spikes"
73
+ ]
74
+ },
75
+ "106": {
76
+ "anim": "blood-shards-diagonal",
77
+ "effects": [
78
+ "flail-sickness"
79
+ ]
80
+ },
81
+ "109": {
82
+ "anim": "extract-blood",
83
+ "effects": [
84
+ "special-drain"
85
+ ]
86
+ },
87
+ "115": {
88
+ "anim": "consume-blood",
89
+ "effects": [
90
+ "special-drain"
91
+ ]
92
+ },
93
+ "118": {
94
+ "anim": "blood-shards-orthogonal",
95
+ "effects": [
96
+ "special-blood-shards-orthogonal"
97
+ ]
98
+ },
99
+ "121": {
100
+ "anim": "extract-power",
101
+ "effects": [
102
+ "special-drain"
103
+ ]
104
+ },
105
+ "135": {
106
+ "anim": "extract-power",
107
+ "effects": [
108
+ "special-drain"
109
+ ]
110
+ },
111
+ "150": {
112
+ "anim": "blood-slam",
113
+ "effects": [
114
+ "special-blood-slam"
115
+ ]
116
+ },
117
+ "153": {
118
+ "anim": "extract-blood",
119
+ "effects": [
120
+ "special-drain"
121
+ ]
122
+ },
123
+ "240": {
124
+ "anim": "cleric-divine-fire-orthogonal",
125
+ "effects": [
126
+ "special-divine-fire-projectile",
127
+ "special-divine-fire-impact"
128
+ ]
129
+ },
130
+ "245": {
131
+ "effects": [
132
+ "auto",
133
+ "special-dome-base-dictum",
134
+ "special-dome-dictum"
135
+ ]
136
+ },
137
+ "252": {
138
+ "anim": "cleric-divine-fire-diagonal",
139
+ "effects": [
140
+ "special-divine-fire-impact"
141
+ ]
142
+ },
143
+ "281": {
144
+ "anim": "cleric-idle-start",
145
+ "effects": [
146
+ "special-healing-words-pray"
147
+ ]
148
+ },
149
+ "282": {
150
+ "anim": "cleric-idle-start",
151
+ "effects": [
152
+ "special-healing-words-pray"
153
+ ]
154
+ },
155
+ "283": {
156
+ "anim": "cleric-idle-start",
157
+ "effects": [
158
+ "special-healing-words-pray"
159
+ ]
160
+ },
161
+ "307": {
162
+ "effects": [
163
+ "auto",
164
+ "special-spirit-guardian-pray"
165
+ ]
166
+ },
167
+ "312": {
168
+ "anim": "cleric-divine-fire-orthogonal",
169
+ "effects": [
170
+ "special-divine-fire-impact"
171
+ ]
172
+ },
173
+ "331": {
174
+ "effects": [
175
+ "auto",
176
+ "flail-stun",
177
+ "special-single-melee-attack",
178
+ "special-shard-impact"
179
+ ],
180
+ "anim": "figther-cataclysm"
181
+ },
182
+ "332": {
183
+ "effects": [
184
+ "auto",
185
+ "special-shield-bash",
186
+ "flail-sleep"
187
+ ]
188
+ },
189
+ "348": {
190
+ "anim": "figther-idle-special",
191
+ "effects": [
192
+ "auto",
193
+ "special-dissonant-chord-impact"
194
+ ]
195
+ },
196
+ "352": {
197
+ "anim": "figther-tempest",
198
+ "effects": [
199
+ "auto",
200
+ "slashm-bleeding",
201
+ "shot-poison"
202
+ ]
203
+ },
204
+ "372": {
205
+ "anim": "figther-swirl",
206
+ "effects": [
207
+ "special-swirl"
208
+ ]
209
+ },
210
+ "382": {
211
+ "anim": "figther-uppercut",
212
+ "effect": "slashl-bleeding",
213
+ "effects": [
214
+ "slashl-bleeding",
215
+ "slashm-fire",
216
+ "special-blood-slam",
217
+ "weapon-sword-fire"
218
+ ]
219
+ },
220
+ "384": {
221
+ "effects": [
222
+ "lash-bleeding",
223
+ "slashm-fire"
224
+ ],
225
+ "anim": "jump"
226
+ },
227
+ "385": {
228
+ "anim": "figther-cataclysm",
229
+ "effects": [
230
+ "flail-fire",
231
+ "flail-ice",
232
+ "slashl-petrification"
233
+ ]
234
+ },
235
+ "391": {
236
+ "anim": "ranger-double-shot-orthogonal",
237
+ "effects": [
238
+ "shot-bleeding",
239
+ "weapon-bow-bleeding"
240
+ ]
241
+ },
242
+ "393": {
243
+ "anim": "ranger-double-shot-orthogonal",
244
+ "effects": [
245
+ "shot-ice",
246
+ "weapon-bow-ice"
247
+ ]
248
+ },
249
+ "409": {
250
+ "anim": "ranger-double-shot-orthogonal",
251
+ "effects": [
252
+ "shot-shock",
253
+ "weapon-bow-shock"
254
+ ]
255
+ },
256
+ "426": {
257
+ "anim": "ranger-triple-shot",
258
+ "effects": [
259
+ "shot-shock",
260
+ "weapon-bow-shock"
261
+ ]
262
+ },
263
+ "435": {
264
+ "anim": "ranger-double-shot-orthogonal",
265
+ "effects": [
266
+ "flail-poison",
267
+ "lash-poison",
268
+ "weapon-viper-scimitar",
269
+ "flail-stun"
270
+ ]
271
+ },
272
+ "446": {
273
+ "anim": "ranger-idle-special",
274
+ "effects": [
275
+ "special-healing-words-pray"
276
+ ]
277
+ },
278
+ "775": {
279
+ "anim": "thousand-blades-end",
280
+ "effects": [
281
+ "special-thousand-blades"
282
+ ]
283
+ },
284
+ "780": {
285
+ "anim": "thousand-blades-start",
286
+ "effects": [
287
+ "weapon-dagger-bleeding",
288
+ "slashs-bleeding"
289
+ ]
290
+ },
291
+ "782": {
292
+ "anim": "thousand-blades-start",
293
+ "effects": [
294
+ "weapon-dagger-bleeding",
295
+ "slashs-bleeding"
296
+ ]
297
+ },
298
+ "784": {
299
+ "anim": "thousand-blades-start",
300
+ "effects": [
301
+ "weapon-dagger-poison",
302
+ "slashs-poison"
303
+ ]
304
+ },
305
+ "858": {
306
+ "anim": "thousand-blades-start",
307
+ "effects": [
308
+ "weapon-dagger-petrification",
309
+ "slashs-petrification"
310
+ ]
311
+ },
312
+ "952": {
313
+ "anim": "deadly-dash-start",
314
+ "effects": [
315
+ "special-drain"
316
+ ]
317
+ },
318
+ "988": {
319
+ "anim": "thousand-blades-end",
320
+ "effects": [
321
+ "weapon-dagger-shock",
322
+ "slashs-shock"
323
+ ]
324
+ },
325
+ "1024": {
326
+ "anim": "thousand-blades-start",
327
+ "effects": [
328
+ "weapon-dagger-ice",
329
+ "slashs-ice"
330
+ ]
331
+ },
332
+ "1114": {
333
+ "effects": [
334
+ "auto",
335
+ "special-holy-hammer-impact"
336
+ ]
337
+ },
338
+ "1466": {
339
+ "anim": "ranger-double-shot-orthogonal",
340
+ "effects": [
341
+ "shot-fire",
342
+ "weapon-bow-fire"
343
+ ]
344
+ },
345
+ "1470": {
346
+ "anim": "ranger-triple-shot",
347
+ "effects": [
348
+ "shot-bleeding",
349
+ "weapon-bow-bleeding"
350
+ ]
351
+ },
352
+ "1727": {
353
+ "anim": "ranger-idle-special",
354
+ "effects": [
355
+ "special-swirl"
356
+ ]
357
+ }
358
+ }
359
+ }
web/assets/effects.json ADDED
@@ -0,0 +1,2417 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "generatedFrom": "Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets",
3
+ "effects": [
4
+ {
5
+ "category": "status",
6
+ "key": "bleeding",
7
+ "label": "Bleeding",
8
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Status%20Effects/Status_bleeding.png",
9
+ "cell": 32,
10
+ "frames": 8
11
+ },
12
+ {
13
+ "category": "status",
14
+ "key": "fear",
15
+ "label": "Fear",
16
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Status%20Effects/Status_fear.png",
17
+ "cell": 32,
18
+ "frames": 8
19
+ },
20
+ {
21
+ "category": "status",
22
+ "key": "fire",
23
+ "label": "Fire",
24
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Status%20Effects/Status_fire.png",
25
+ "cell": 32,
26
+ "frames": 8
27
+ },
28
+ {
29
+ "category": "status",
30
+ "key": "ice",
31
+ "label": "Ice",
32
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Status%20Effects/Status_ice.png",
33
+ "cell": 32,
34
+ "frames": 8
35
+ },
36
+ {
37
+ "category": "status",
38
+ "key": "nature",
39
+ "label": "Nature",
40
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Status%20Effects/Status_nature.png",
41
+ "cell": 32,
42
+ "frames": 8
43
+ },
44
+ {
45
+ "category": "status",
46
+ "key": "petrification",
47
+ "label": "Petrification",
48
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Status%20Effects/Status_petrification.png",
49
+ "cell": 32,
50
+ "frames": 8
51
+ },
52
+ {
53
+ "category": "status",
54
+ "key": "poison",
55
+ "label": "Poison",
56
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Status%20Effects/Status_poisson.png",
57
+ "cell": 32,
58
+ "frames": 8
59
+ },
60
+ {
61
+ "category": "status",
62
+ "key": "shock",
63
+ "label": "Shock",
64
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Status%20Effects/Status_shock.png",
65
+ "cell": 32,
66
+ "frames": 8
67
+ },
68
+ {
69
+ "category": "status",
70
+ "key": "sickness",
71
+ "label": "Sickness",
72
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Status%20Effects/Status_sickness.png",
73
+ "cell": 32,
74
+ "frames": 8
75
+ },
76
+ {
77
+ "category": "status",
78
+ "key": "sleep",
79
+ "label": "Sleep",
80
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Status%20Effects/Status_sleep.png",
81
+ "cell": 32,
82
+ "frames": 8
83
+ },
84
+ {
85
+ "category": "status",
86
+ "key": "stun",
87
+ "label": "Stun",
88
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Status%20Effects/Status_stun.png",
89
+ "cell": 32,
90
+ "frames": 8
91
+ },
92
+ {
93
+ "category": "hit",
94
+ "key": "bleeding",
95
+ "label": "Bleeding",
96
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Hit%20Effects/Hit_bleeding.png",
97
+ "cell": 32,
98
+ "frames": 4
99
+ },
100
+ {
101
+ "category": "hit",
102
+ "key": "fear",
103
+ "label": "Fear",
104
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Hit%20Effects/Hit_fear.png",
105
+ "cell": 32,
106
+ "frames": 4
107
+ },
108
+ {
109
+ "category": "hit",
110
+ "key": "fire",
111
+ "label": "Fire",
112
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Hit%20Effects/Hit_fire.png",
113
+ "cell": 32,
114
+ "frames": 4
115
+ },
116
+ {
117
+ "category": "hit",
118
+ "key": "ice",
119
+ "label": "Ice",
120
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Hit%20Effects/Hit_ice.png",
121
+ "cell": 32,
122
+ "frames": 4
123
+ },
124
+ {
125
+ "category": "hit",
126
+ "key": "nature",
127
+ "label": "Nature",
128
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Hit%20Effects/Hit_nature.png",
129
+ "cell": 32,
130
+ "frames": 4
131
+ },
132
+ {
133
+ "category": "hit",
134
+ "key": "petrification",
135
+ "label": "Petrification",
136
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Hit%20Effects/Hit_petrification.png",
137
+ "cell": 32,
138
+ "frames": 4
139
+ },
140
+ {
141
+ "category": "hit",
142
+ "key": "poison",
143
+ "label": "Poison",
144
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Hit%20Effects/Hit_poisson.png",
145
+ "cell": 32,
146
+ "frames": 4
147
+ },
148
+ {
149
+ "category": "hit",
150
+ "key": "shock",
151
+ "label": "Shock",
152
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Hit%20Effects/Hit_shock.png",
153
+ "cell": 32,
154
+ "frames": 4
155
+ },
156
+ {
157
+ "category": "hit",
158
+ "key": "sickness",
159
+ "label": "Sickness",
160
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Hit%20Effects/Hit_sickness.png",
161
+ "cell": 32,
162
+ "frames": 4
163
+ },
164
+ {
165
+ "category": "hit",
166
+ "key": "sleep",
167
+ "label": "Sleep",
168
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Hit%20Effects/Hit_sleep.png",
169
+ "cell": 32,
170
+ "frames": 4
171
+ },
172
+ {
173
+ "category": "hit",
174
+ "key": "stun",
175
+ "label": "Stun",
176
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Hit%20Effects/Hit_stun.png",
177
+ "cell": 32,
178
+ "frames": 4
179
+ },
180
+ {
181
+ "category": "projectile",
182
+ "key": "arrow-bleeding",
183
+ "label": "Arrow · bleeding",
184
+ "type": "arrow",
185
+ "element": "bleeding",
186
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Shot/Arrow/Arrow_bleeding.png",
187
+ "cell": 32,
188
+ "rows": 4,
189
+ "cols": 1,
190
+ "frames": 1
191
+ },
192
+ {
193
+ "category": "projectile",
194
+ "key": "arrow-fear",
195
+ "label": "Arrow · fear",
196
+ "type": "arrow",
197
+ "element": "fear",
198
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Shot/Arrow/Arrow_fear.png",
199
+ "cell": 32,
200
+ "rows": 4,
201
+ "cols": 1,
202
+ "frames": 1
203
+ },
204
+ {
205
+ "category": "projectile",
206
+ "key": "arrow-fire",
207
+ "label": "Arrow · fire",
208
+ "type": "arrow",
209
+ "element": "fire",
210
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Shot/Arrow/Arrow_fire.png",
211
+ "cell": 32,
212
+ "rows": 4,
213
+ "cols": 1,
214
+ "frames": 1
215
+ },
216
+ {
217
+ "category": "projectile",
218
+ "key": "arrow-ice",
219
+ "label": "Arrow · ice",
220
+ "type": "arrow",
221
+ "element": "ice",
222
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Shot/Arrow/Arrow_ice.png",
223
+ "cell": 32,
224
+ "rows": 4,
225
+ "cols": 1,
226
+ "frames": 1
227
+ },
228
+ {
229
+ "category": "projectile",
230
+ "key": "arrow-nature",
231
+ "label": "Arrow · nature",
232
+ "type": "arrow",
233
+ "element": "nature",
234
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Shot/Arrow/Arrow_nature.png",
235
+ "cell": 32,
236
+ "rows": 4,
237
+ "cols": 1,
238
+ "frames": 1
239
+ },
240
+ {
241
+ "category": "projectile",
242
+ "key": "arrow-petrification",
243
+ "label": "Arrow · petrification",
244
+ "type": "arrow",
245
+ "element": "petrification",
246
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Shot/Arrow/Arrow_petrification.png",
247
+ "cell": 32,
248
+ "rows": 4,
249
+ "cols": 1,
250
+ "frames": 1
251
+ },
252
+ {
253
+ "category": "projectile",
254
+ "key": "arrow-poison",
255
+ "label": "Arrow · poison",
256
+ "type": "arrow",
257
+ "element": "poison",
258
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Shot/Arrow/Arrow_poisson.png",
259
+ "cell": 32,
260
+ "rows": 4,
261
+ "cols": 1,
262
+ "frames": 1
263
+ },
264
+ {
265
+ "category": "projectile",
266
+ "key": "arrow-shock",
267
+ "label": "Arrow · shock",
268
+ "type": "arrow",
269
+ "element": "shock",
270
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Shot/Arrow/Arrow_shock.png",
271
+ "cell": 32,
272
+ "rows": 4,
273
+ "cols": 1,
274
+ "frames": 1
275
+ },
276
+ {
277
+ "category": "projectile",
278
+ "key": "arrow-sickness",
279
+ "label": "Arrow · sickness",
280
+ "type": "arrow",
281
+ "element": "sickness",
282
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Shot/Arrow/Arrow_sickness.png",
283
+ "cell": 32,
284
+ "rows": 4,
285
+ "cols": 1,
286
+ "frames": 1
287
+ },
288
+ {
289
+ "category": "projectile",
290
+ "key": "arrow-sleep",
291
+ "label": "Arrow · sleep",
292
+ "type": "arrow",
293
+ "element": "sleep",
294
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Shot/Arrow/Arrow_sleep.png",
295
+ "cell": 32,
296
+ "rows": 4,
297
+ "cols": 1,
298
+ "frames": 1
299
+ },
300
+ {
301
+ "category": "projectile",
302
+ "key": "arrow-stun",
303
+ "label": "Arrow · stun",
304
+ "type": "arrow",
305
+ "element": "stun",
306
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Shot/Arrow/Arrow_stun.png",
307
+ "cell": 32,
308
+ "rows": 4,
309
+ "cols": 1,
310
+ "frames": 1
311
+ },
312
+ {
313
+ "category": "attack",
314
+ "key": "flail-bleeding",
315
+ "label": "Flail · bleeding",
316
+ "type": "flail",
317
+ "element": "bleeding",
318
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Flail/Flail_bleeding.png",
319
+ "cell": 32,
320
+ "rows": 4,
321
+ "cols": 3,
322
+ "frames": 3
323
+ },
324
+ {
325
+ "category": "attack",
326
+ "key": "flail-fear",
327
+ "label": "Flail · fear",
328
+ "type": "flail",
329
+ "element": "fear",
330
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Flail/Flail_fear.png",
331
+ "cell": 32,
332
+ "rows": 4,
333
+ "cols": 3,
334
+ "frames": 3
335
+ },
336
+ {
337
+ "category": "attack",
338
+ "key": "flail-fire",
339
+ "label": "Flail · fire",
340
+ "type": "flail",
341
+ "element": "fire",
342
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Flail/Flail_fire.png",
343
+ "cell": 32,
344
+ "rows": 4,
345
+ "cols": 3,
346
+ "frames": 3
347
+ },
348
+ {
349
+ "category": "attack",
350
+ "key": "flail-ice",
351
+ "label": "Flail · ice",
352
+ "type": "flail",
353
+ "element": "ice",
354
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Flail/Flail_ice.png",
355
+ "cell": 32,
356
+ "rows": 4,
357
+ "cols": 3,
358
+ "frames": 3
359
+ },
360
+ {
361
+ "category": "attack",
362
+ "key": "flail-nature",
363
+ "label": "Flail · nature",
364
+ "type": "flail",
365
+ "element": "nature",
366
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Flail/Flail_nature.png",
367
+ "cell": 32,
368
+ "rows": 4,
369
+ "cols": 3,
370
+ "frames": 3
371
+ },
372
+ {
373
+ "category": "attack",
374
+ "key": "flail-petrification",
375
+ "label": "Flail · petrification",
376
+ "type": "flail",
377
+ "element": "petrification",
378
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Flail/Flail_petrification.png",
379
+ "cell": 32,
380
+ "rows": 4,
381
+ "cols": 3,
382
+ "frames": 3
383
+ },
384
+ {
385
+ "category": "attack",
386
+ "key": "flail-poison",
387
+ "label": "Flail · poison",
388
+ "type": "flail",
389
+ "element": "poison",
390
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Flail/Flail_poisson.png",
391
+ "cell": 32,
392
+ "rows": 4,
393
+ "cols": 3,
394
+ "frames": 3
395
+ },
396
+ {
397
+ "category": "attack",
398
+ "key": "flail-shock",
399
+ "label": "Flail · shock",
400
+ "type": "flail",
401
+ "element": "shock",
402
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Flail/Flail_shock.png",
403
+ "cell": 32,
404
+ "rows": 4,
405
+ "cols": 3,
406
+ "frames": 3
407
+ },
408
+ {
409
+ "category": "attack",
410
+ "key": "flail-sickness",
411
+ "label": "Flail · sickness",
412
+ "type": "flail",
413
+ "element": "sickness",
414
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Flail/Flail_sickness.png",
415
+ "cell": 32,
416
+ "rows": 4,
417
+ "cols": 3,
418
+ "frames": 3
419
+ },
420
+ {
421
+ "category": "attack",
422
+ "key": "flail-sleep",
423
+ "label": "Flail · sleep",
424
+ "type": "flail",
425
+ "element": "sleep",
426
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Flail/Flail_sleep.png",
427
+ "cell": 32,
428
+ "rows": 4,
429
+ "cols": 3,
430
+ "frames": 3
431
+ },
432
+ {
433
+ "category": "attack",
434
+ "key": "flail-stun",
435
+ "label": "Flail · stun",
436
+ "type": "flail",
437
+ "element": "stun",
438
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Flail/Flail_stun.png",
439
+ "cell": 32,
440
+ "rows": 4,
441
+ "cols": 3,
442
+ "frames": 3
443
+ },
444
+ {
445
+ "category": "attack",
446
+ "key": "lash-bleeding",
447
+ "label": "Lash · bleeding",
448
+ "type": "lash",
449
+ "element": "bleeding",
450
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Lash/Lash_bleeding.png",
451
+ "cell": 32,
452
+ "rows": 4,
453
+ "cols": 3,
454
+ "frames": 3
455
+ },
456
+ {
457
+ "category": "attack",
458
+ "key": "lash-fear",
459
+ "label": "Lash · fear",
460
+ "type": "lash",
461
+ "element": "fear",
462
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Lash/Lash_fear.png",
463
+ "cell": 32,
464
+ "rows": 4,
465
+ "cols": 3,
466
+ "frames": 3
467
+ },
468
+ {
469
+ "category": "attack",
470
+ "key": "lash-fire",
471
+ "label": "Lash · fire",
472
+ "type": "lash",
473
+ "element": "fire",
474
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Lash/Lash_fire.png",
475
+ "cell": 32,
476
+ "rows": 4,
477
+ "cols": 3,
478
+ "frames": 3
479
+ },
480
+ {
481
+ "category": "attack",
482
+ "key": "lash-ice",
483
+ "label": "Lash · ice",
484
+ "type": "lash",
485
+ "element": "ice",
486
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Lash/Lash_ice.png",
487
+ "cell": 32,
488
+ "rows": 4,
489
+ "cols": 3,
490
+ "frames": 3
491
+ },
492
+ {
493
+ "category": "attack",
494
+ "key": "lash-nature",
495
+ "label": "Lash · nature",
496
+ "type": "lash",
497
+ "element": "nature",
498
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Lash/Lash_nature.png",
499
+ "cell": 32,
500
+ "rows": 4,
501
+ "cols": 3,
502
+ "frames": 3
503
+ },
504
+ {
505
+ "category": "attack",
506
+ "key": "lash-petrification",
507
+ "label": "Lash · petrification",
508
+ "type": "lash",
509
+ "element": "petrification",
510
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Lash/Lash_petrification.png",
511
+ "cell": 32,
512
+ "rows": 4,
513
+ "cols": 3,
514
+ "frames": 3
515
+ },
516
+ {
517
+ "category": "attack",
518
+ "key": "lash-poison",
519
+ "label": "Lash · poison",
520
+ "type": "lash",
521
+ "element": "poison",
522
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Lash/Lash_poisson.png",
523
+ "cell": 32,
524
+ "rows": 4,
525
+ "cols": 3,
526
+ "frames": 3
527
+ },
528
+ {
529
+ "category": "attack",
530
+ "key": "lash-shock",
531
+ "label": "Lash · shock",
532
+ "type": "lash",
533
+ "element": "shock",
534
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Lash/Lash_shock.png",
535
+ "cell": 32,
536
+ "rows": 4,
537
+ "cols": 3,
538
+ "frames": 3
539
+ },
540
+ {
541
+ "category": "attack",
542
+ "key": "lash-sickness",
543
+ "label": "Lash · sickness",
544
+ "type": "lash",
545
+ "element": "sickness",
546
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Lash/Lash_sickness.png",
547
+ "cell": 32,
548
+ "rows": 4,
549
+ "cols": 3,
550
+ "frames": 3
551
+ },
552
+ {
553
+ "category": "attack",
554
+ "key": "lash-sleep",
555
+ "label": "Lash · sleep",
556
+ "type": "lash",
557
+ "element": "sleep",
558
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Lash/Lash_sleep.png",
559
+ "cell": 32,
560
+ "rows": 4,
561
+ "cols": 3,
562
+ "frames": 3
563
+ },
564
+ {
565
+ "category": "attack",
566
+ "key": "lash-stun",
567
+ "label": "Lash · stun",
568
+ "type": "lash",
569
+ "element": "stun",
570
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Lash/Lash_stun.png",
571
+ "cell": 32,
572
+ "rows": 4,
573
+ "cols": 3,
574
+ "frames": 3
575
+ },
576
+ {
577
+ "category": "attack",
578
+ "key": "pierce-bleeding",
579
+ "label": "Pierce · bleeding",
580
+ "type": "pierce",
581
+ "element": "bleeding",
582
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Pierce/Pierce_bleeding.png",
583
+ "cell": 32,
584
+ "rows": 4,
585
+ "cols": 3,
586
+ "frames": 3
587
+ },
588
+ {
589
+ "category": "attack",
590
+ "key": "pierce-fear",
591
+ "label": "Pierce · fear",
592
+ "type": "pierce",
593
+ "element": "fear",
594
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Pierce/Pierce_fear.png",
595
+ "cell": 32,
596
+ "rows": 4,
597
+ "cols": 3,
598
+ "frames": 3
599
+ },
600
+ {
601
+ "category": "attack",
602
+ "key": "pierce-fire",
603
+ "label": "Pierce · fire",
604
+ "type": "pierce",
605
+ "element": "fire",
606
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Pierce/Pierce_fire.png",
607
+ "cell": 32,
608
+ "rows": 4,
609
+ "cols": 3,
610
+ "frames": 3
611
+ },
612
+ {
613
+ "category": "attack",
614
+ "key": "pierce-ice",
615
+ "label": "Pierce · ice",
616
+ "type": "pierce",
617
+ "element": "ice",
618
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Pierce/Pierce_ice.png",
619
+ "cell": 32,
620
+ "rows": 4,
621
+ "cols": 3,
622
+ "frames": 3
623
+ },
624
+ {
625
+ "category": "attack",
626
+ "key": "pierce-nature",
627
+ "label": "Pierce · nature",
628
+ "type": "pierce",
629
+ "element": "nature",
630
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Pierce/Pierce_nature.png",
631
+ "cell": 32,
632
+ "rows": 4,
633
+ "cols": 3,
634
+ "frames": 3
635
+ },
636
+ {
637
+ "category": "attack",
638
+ "key": "pierce-petrification",
639
+ "label": "Pierce · petrification",
640
+ "type": "pierce",
641
+ "element": "petrification",
642
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Pierce/Pierce_petrification.png",
643
+ "cell": 32,
644
+ "rows": 4,
645
+ "cols": 3,
646
+ "frames": 3
647
+ },
648
+ {
649
+ "category": "attack",
650
+ "key": "pierce-poison",
651
+ "label": "Pierce · poison",
652
+ "type": "pierce",
653
+ "element": "poison",
654
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Pierce/Pierce_poisson.png",
655
+ "cell": 32,
656
+ "rows": 4,
657
+ "cols": 3,
658
+ "frames": 3
659
+ },
660
+ {
661
+ "category": "attack",
662
+ "key": "pierce-shock",
663
+ "label": "Pierce · shock",
664
+ "type": "pierce",
665
+ "element": "shock",
666
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Pierce/Pierce_shock.png",
667
+ "cell": 32,
668
+ "rows": 4,
669
+ "cols": 3,
670
+ "frames": 3
671
+ },
672
+ {
673
+ "category": "attack",
674
+ "key": "pierce-sickness",
675
+ "label": "Pierce · sickness",
676
+ "type": "pierce",
677
+ "element": "sickness",
678
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Pierce/Pierce_sickness.png",
679
+ "cell": 32,
680
+ "rows": 4,
681
+ "cols": 3,
682
+ "frames": 3
683
+ },
684
+ {
685
+ "category": "attack",
686
+ "key": "pierce-sleep",
687
+ "label": "Pierce · sleep",
688
+ "type": "pierce",
689
+ "element": "sleep",
690
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Pierce/Pierce_sleep.png",
691
+ "cell": 32,
692
+ "rows": 4,
693
+ "cols": 3,
694
+ "frames": 3
695
+ },
696
+ {
697
+ "category": "attack",
698
+ "key": "pierce-stun",
699
+ "label": "Pierce · stun",
700
+ "type": "pierce",
701
+ "element": "stun",
702
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Pierce/Pierce_stun.png",
703
+ "cell": 32,
704
+ "rows": 4,
705
+ "cols": 3,
706
+ "frames": 3
707
+ },
708
+ {
709
+ "category": "attack",
710
+ "key": "shot-bleeding",
711
+ "label": "Shot · bleeding",
712
+ "type": "shot",
713
+ "element": "bleeding",
714
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Shot/Front%20Layer/Shot_bleeding_f.png",
715
+ "cell": 32,
716
+ "rows": 4,
717
+ "cols": 8,
718
+ "frames": 8
719
+ },
720
+ {
721
+ "category": "attack",
722
+ "key": "shot-fear",
723
+ "label": "Shot · fear",
724
+ "type": "shot",
725
+ "element": "fear",
726
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Shot/Front%20Layer/Shot_fear_f.png",
727
+ "cell": 32,
728
+ "rows": 4,
729
+ "cols": 8,
730
+ "frames": 8
731
+ },
732
+ {
733
+ "category": "attack",
734
+ "key": "shot-fire",
735
+ "label": "Shot · fire",
736
+ "type": "shot",
737
+ "element": "fire",
738
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Shot/Front%20Layer/Shot_fire_f.png",
739
+ "cell": 32,
740
+ "rows": 4,
741
+ "cols": 8,
742
+ "frames": 8
743
+ },
744
+ {
745
+ "category": "attack",
746
+ "key": "shot-ice",
747
+ "label": "Shot · ice",
748
+ "type": "shot",
749
+ "element": "ice",
750
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Shot/Front%20Layer/Shot_ice_f.png",
751
+ "cell": 32,
752
+ "rows": 4,
753
+ "cols": 8,
754
+ "frames": 8
755
+ },
756
+ {
757
+ "category": "attack",
758
+ "key": "shot-nature",
759
+ "label": "Shot · nature",
760
+ "type": "shot",
761
+ "element": "nature",
762
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Shot/Front%20Layer/Shot_nature_f.png",
763
+ "cell": 32,
764
+ "rows": 4,
765
+ "cols": 8,
766
+ "frames": 8
767
+ },
768
+ {
769
+ "category": "attack",
770
+ "key": "shot-petrification",
771
+ "label": "Shot · petrification",
772
+ "type": "shot",
773
+ "element": "petrification",
774
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Shot/Front%20Layer/Shot_petrification_f.png",
775
+ "cell": 32,
776
+ "rows": 4,
777
+ "cols": 8,
778
+ "frames": 8
779
+ },
780
+ {
781
+ "category": "attack",
782
+ "key": "shot-poison",
783
+ "label": "Shot · poison",
784
+ "type": "shot",
785
+ "element": "poison",
786
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Shot/Front%20Layer/Shot_poisson_f.png",
787
+ "cell": 32,
788
+ "rows": 4,
789
+ "cols": 8,
790
+ "frames": 8
791
+ },
792
+ {
793
+ "category": "attack",
794
+ "key": "shot-shock",
795
+ "label": "Shot · shock",
796
+ "type": "shot",
797
+ "element": "shock",
798
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Shot/Front%20Layer/Shot_shock_f.png",
799
+ "cell": 32,
800
+ "rows": 4,
801
+ "cols": 8,
802
+ "frames": 8
803
+ },
804
+ {
805
+ "category": "attack",
806
+ "key": "shot-sickness",
807
+ "label": "Shot · sickness",
808
+ "type": "shot",
809
+ "element": "sickness",
810
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Shot/Front%20Layer/Shot_sickness_f.png",
811
+ "cell": 32,
812
+ "rows": 4,
813
+ "cols": 8,
814
+ "frames": 8
815
+ },
816
+ {
817
+ "category": "attack",
818
+ "key": "shot-sleep",
819
+ "label": "Shot · sleep",
820
+ "type": "shot",
821
+ "element": "sleep",
822
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Shot/Front%20Layer/Shot_sleep_f.png",
823
+ "cell": 32,
824
+ "rows": 4,
825
+ "cols": 8,
826
+ "frames": 8
827
+ },
828
+ {
829
+ "category": "attack",
830
+ "key": "shot-stun",
831
+ "label": "Shot · stun",
832
+ "type": "shot",
833
+ "element": "stun",
834
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/Shot/Front%20Layer/Shot_stun_f.png",
835
+ "cell": 32,
836
+ "rows": 4,
837
+ "cols": 8,
838
+ "frames": 8
839
+ },
840
+ {
841
+ "category": "attack",
842
+ "key": "slashl-bleeding",
843
+ "label": "SlashL · bleeding",
844
+ "type": "slashl",
845
+ "element": "bleeding",
846
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashL/Front%20Layer/SlashL_bleeding_f.png",
847
+ "cell": 32,
848
+ "rows": 4,
849
+ "cols": 6,
850
+ "frames": 6
851
+ },
852
+ {
853
+ "category": "attack",
854
+ "key": "slashl-fear",
855
+ "label": "SlashL · fear",
856
+ "type": "slashl",
857
+ "element": "fear",
858
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashL/Front%20Layer/SlashL_fear_f.png",
859
+ "cell": 32,
860
+ "rows": 4,
861
+ "cols": 6,
862
+ "frames": 6
863
+ },
864
+ {
865
+ "category": "attack",
866
+ "key": "slashl-fire",
867
+ "label": "SlashL · fire",
868
+ "type": "slashl",
869
+ "element": "fire",
870
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashL/Front%20Layer/SlashL_fire_f.png",
871
+ "cell": 32,
872
+ "rows": 4,
873
+ "cols": 6,
874
+ "frames": 6
875
+ },
876
+ {
877
+ "category": "attack",
878
+ "key": "slashl-ice",
879
+ "label": "SlashL · ice",
880
+ "type": "slashl",
881
+ "element": "ice",
882
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashL/Front%20Layer/SlashL_ice_f.png",
883
+ "cell": 32,
884
+ "rows": 4,
885
+ "cols": 6,
886
+ "frames": 6
887
+ },
888
+ {
889
+ "category": "attack",
890
+ "key": "slashl-nature",
891
+ "label": "SlashL · nature",
892
+ "type": "slashl",
893
+ "element": "nature",
894
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashL/Front%20Layer/SlashL_nature_f.png",
895
+ "cell": 32,
896
+ "rows": 4,
897
+ "cols": 6,
898
+ "frames": 6
899
+ },
900
+ {
901
+ "category": "attack",
902
+ "key": "slashl-petrification",
903
+ "label": "SlashL · petrification",
904
+ "type": "slashl",
905
+ "element": "petrification",
906
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashL/Front%20Layer/SlashL_petrification_f.png",
907
+ "cell": 32,
908
+ "rows": 4,
909
+ "cols": 6,
910
+ "frames": 6
911
+ },
912
+ {
913
+ "category": "attack",
914
+ "key": "slashl-poison",
915
+ "label": "SlashL · poison",
916
+ "type": "slashl",
917
+ "element": "poison",
918
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashL/Front%20Layer/SlashL_poisson_f.png",
919
+ "cell": 32,
920
+ "rows": 4,
921
+ "cols": 6,
922
+ "frames": 6
923
+ },
924
+ {
925
+ "category": "attack",
926
+ "key": "slashl-shock",
927
+ "label": "SlashL · shock",
928
+ "type": "slashl",
929
+ "element": "shock",
930
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashL/Front%20Layer/SlashL_shock_f.png",
931
+ "cell": 32,
932
+ "rows": 4,
933
+ "cols": 6,
934
+ "frames": 6
935
+ },
936
+ {
937
+ "category": "attack",
938
+ "key": "slashl-sickness",
939
+ "label": "SlashL · sickness",
940
+ "type": "slashl",
941
+ "element": "sickness",
942
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashL/Front%20Layer/SlashL_sickness_f.png",
943
+ "cell": 32,
944
+ "rows": 4,
945
+ "cols": 6,
946
+ "frames": 6
947
+ },
948
+ {
949
+ "category": "attack",
950
+ "key": "slashl-sleep",
951
+ "label": "SlashL · sleep",
952
+ "type": "slashl",
953
+ "element": "sleep",
954
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashL/Front%20Layer/SlashL_sleep_f.png",
955
+ "cell": 32,
956
+ "rows": 4,
957
+ "cols": 6,
958
+ "frames": 6
959
+ },
960
+ {
961
+ "category": "attack",
962
+ "key": "slashl-stun",
963
+ "label": "SlashL · stun",
964
+ "type": "slashl",
965
+ "element": "stun",
966
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashL/Front%20Layer/SlashL_stun_f.png",
967
+ "cell": 32,
968
+ "rows": 4,
969
+ "cols": 6,
970
+ "frames": 6
971
+ },
972
+ {
973
+ "category": "attack",
974
+ "key": "slashm-bleeding",
975
+ "label": "SlashM · bleeding",
976
+ "type": "slashm",
977
+ "element": "bleeding",
978
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashM/Front%20Layer/SlashM_bleeding_f.png",
979
+ "cell": 32,
980
+ "rows": 4,
981
+ "cols": 4,
982
+ "frames": 4
983
+ },
984
+ {
985
+ "category": "attack",
986
+ "key": "slashm-fear",
987
+ "label": "SlashM · fear",
988
+ "type": "slashm",
989
+ "element": "fear",
990
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashM/Front%20Layer/SlashM_fear_f.png",
991
+ "cell": 32,
992
+ "rows": 4,
993
+ "cols": 4,
994
+ "frames": 4
995
+ },
996
+ {
997
+ "category": "attack",
998
+ "key": "slashm-fire",
999
+ "label": "SlashM · fire",
1000
+ "type": "slashm",
1001
+ "element": "fire",
1002
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashM/Front%20Layer/SlashM_fire_f.png",
1003
+ "cell": 32,
1004
+ "rows": 4,
1005
+ "cols": 4,
1006
+ "frames": 4
1007
+ },
1008
+ {
1009
+ "category": "attack",
1010
+ "key": "slashm-ice",
1011
+ "label": "SlashM · ice",
1012
+ "type": "slashm",
1013
+ "element": "ice",
1014
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashM/Front%20Layer/SlashM_ice_f.png",
1015
+ "cell": 32,
1016
+ "rows": 4,
1017
+ "cols": 4,
1018
+ "frames": 4
1019
+ },
1020
+ {
1021
+ "category": "attack",
1022
+ "key": "slashm-nature",
1023
+ "label": "SlashM · nature",
1024
+ "type": "slashm",
1025
+ "element": "nature",
1026
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashM/Front%20Layer/SlashM_nature_f.png",
1027
+ "cell": 32,
1028
+ "rows": 4,
1029
+ "cols": 4,
1030
+ "frames": 4
1031
+ },
1032
+ {
1033
+ "category": "attack",
1034
+ "key": "slashm-petrification",
1035
+ "label": "SlashM · petrification",
1036
+ "type": "slashm",
1037
+ "element": "petrification",
1038
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashM/Front%20Layer/SlashM_petrification_f.png",
1039
+ "cell": 32,
1040
+ "rows": 4,
1041
+ "cols": 4,
1042
+ "frames": 4
1043
+ },
1044
+ {
1045
+ "category": "attack",
1046
+ "key": "slashm-poison",
1047
+ "label": "SlashM · poison",
1048
+ "type": "slashm",
1049
+ "element": "poison",
1050
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashM/Front%20Layer/SlashM_poisson_f.png",
1051
+ "cell": 32,
1052
+ "rows": 4,
1053
+ "cols": 4,
1054
+ "frames": 4
1055
+ },
1056
+ {
1057
+ "category": "attack",
1058
+ "key": "slashm-shock",
1059
+ "label": "SlashM · shock",
1060
+ "type": "slashm",
1061
+ "element": "shock",
1062
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashM/Front%20Layer/SlashM_shock_f.png",
1063
+ "cell": 32,
1064
+ "rows": 4,
1065
+ "cols": 4,
1066
+ "frames": 4
1067
+ },
1068
+ {
1069
+ "category": "attack",
1070
+ "key": "slashm-sickness",
1071
+ "label": "SlashM · sickness",
1072
+ "type": "slashm",
1073
+ "element": "sickness",
1074
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashM/Front%20Layer/SlashM_sickness_f.png",
1075
+ "cell": 32,
1076
+ "rows": 4,
1077
+ "cols": 4,
1078
+ "frames": 4
1079
+ },
1080
+ {
1081
+ "category": "attack",
1082
+ "key": "slashm-sleep",
1083
+ "label": "SlashM · sleep",
1084
+ "type": "slashm",
1085
+ "element": "sleep",
1086
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashM/Front%20Layer/SlashM_sleep_f.png",
1087
+ "cell": 32,
1088
+ "rows": 4,
1089
+ "cols": 4,
1090
+ "frames": 4
1091
+ },
1092
+ {
1093
+ "category": "attack",
1094
+ "key": "slashm-stun",
1095
+ "label": "SlashM · stun",
1096
+ "type": "slashm",
1097
+ "element": "stun",
1098
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashM/Front%20Layer/SlashM_stun_f%20.png",
1099
+ "cell": 32,
1100
+ "rows": 4,
1101
+ "cols": 4,
1102
+ "frames": 4
1103
+ },
1104
+ {
1105
+ "category": "attack",
1106
+ "key": "slashs-bleeding",
1107
+ "label": "SlashS · bleeding",
1108
+ "type": "slashs",
1109
+ "element": "bleeding",
1110
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashS/Front%20Layer/SlashS_bleeding_f.png",
1111
+ "cell": 32,
1112
+ "rows": 4,
1113
+ "cols": 4,
1114
+ "frames": 4
1115
+ },
1116
+ {
1117
+ "category": "attack",
1118
+ "key": "slashs-fear",
1119
+ "label": "SlashS · fear",
1120
+ "type": "slashs",
1121
+ "element": "fear",
1122
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashS/Front%20Layer/SlashS_fear_f.png",
1123
+ "cell": 32,
1124
+ "rows": 4,
1125
+ "cols": 4,
1126
+ "frames": 4
1127
+ },
1128
+ {
1129
+ "category": "attack",
1130
+ "key": "slashs-fire",
1131
+ "label": "SlashS · fire",
1132
+ "type": "slashs",
1133
+ "element": "fire",
1134
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashS/Front%20Layer/SlashS_fire_f.png",
1135
+ "cell": 32,
1136
+ "rows": 4,
1137
+ "cols": 4,
1138
+ "frames": 4
1139
+ },
1140
+ {
1141
+ "category": "attack",
1142
+ "key": "slashs-ice",
1143
+ "label": "SlashS · ice",
1144
+ "type": "slashs",
1145
+ "element": "ice",
1146
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashS/Front%20Layer/SlashS_ice_f.png",
1147
+ "cell": 32,
1148
+ "rows": 4,
1149
+ "cols": 4,
1150
+ "frames": 4
1151
+ },
1152
+ {
1153
+ "category": "attack",
1154
+ "key": "slashs-nature",
1155
+ "label": "SlashS · nature",
1156
+ "type": "slashs",
1157
+ "element": "nature",
1158
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashS/Front%20Layer/SlashS_nature_f.png",
1159
+ "cell": 32,
1160
+ "rows": 4,
1161
+ "cols": 4,
1162
+ "frames": 4
1163
+ },
1164
+ {
1165
+ "category": "attack",
1166
+ "key": "slashs-petrification",
1167
+ "label": "SlashS · petrification",
1168
+ "type": "slashs",
1169
+ "element": "petrification",
1170
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashS/Front%20Layer/SlashS_petrification_f.png",
1171
+ "cell": 32,
1172
+ "rows": 4,
1173
+ "cols": 4,
1174
+ "frames": 4
1175
+ },
1176
+ {
1177
+ "category": "attack",
1178
+ "key": "slashs-poison",
1179
+ "label": "SlashS · poison",
1180
+ "type": "slashs",
1181
+ "element": "poison",
1182
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashS/Front%20Layer/SlashS_poisson_f.png",
1183
+ "cell": 32,
1184
+ "rows": 4,
1185
+ "cols": 4,
1186
+ "frames": 4
1187
+ },
1188
+ {
1189
+ "category": "attack",
1190
+ "key": "slashs-shock",
1191
+ "label": "SlashS · shock",
1192
+ "type": "slashs",
1193
+ "element": "shock",
1194
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashS/Front%20Layer/SlashS_shock_f.png",
1195
+ "cell": 32,
1196
+ "rows": 4,
1197
+ "cols": 4,
1198
+ "frames": 4
1199
+ },
1200
+ {
1201
+ "category": "attack",
1202
+ "key": "slashs-sickness",
1203
+ "label": "SlashS · sickness",
1204
+ "type": "slashs",
1205
+ "element": "sickness",
1206
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashS/Front%20Layer/SlashS_sickness_f.png",
1207
+ "cell": 32,
1208
+ "rows": 4,
1209
+ "cols": 4,
1210
+ "frames": 4
1211
+ },
1212
+ {
1213
+ "category": "attack",
1214
+ "key": "slashs-sleep",
1215
+ "label": "SlashS · sleep",
1216
+ "type": "slashs",
1217
+ "element": "sleep",
1218
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashS/Front%20Layer/SlashS_sleep_f.png",
1219
+ "cell": 32,
1220
+ "rows": 4,
1221
+ "cols": 4,
1222
+ "frames": 4
1223
+ },
1224
+ {
1225
+ "category": "attack",
1226
+ "key": "slashs-stun",
1227
+ "label": "SlashS · stun",
1228
+ "type": "slashs",
1229
+ "element": "stun",
1230
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Standalone%20Effects/Attack%20Effects/SlashS/Front%20Layer/SlashS_stun_f.png",
1231
+ "cell": 32,
1232
+ "rows": 4,
1233
+ "cols": 4,
1234
+ "frames": 4
1235
+ },
1236
+ {
1237
+ "category": "weapon",
1238
+ "key": "weapon-icerberg-blade",
1239
+ "label": "Icerberg Blade",
1240
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Legendary%20Weapons/Icerberg%20Blade/Icerberg_blade_f.png",
1241
+ "cell": 32,
1242
+ "rows": 4,
1243
+ "cols": 6,
1244
+ "frames": 6
1245
+ },
1246
+ {
1247
+ "category": "weapon",
1248
+ "key": "weapon-thunderbolt-sword",
1249
+ "label": "Thunderbolt Sword",
1250
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Legendary%20Weapons/Thunderbolt%20Sword/Thunderbolt_sword_f.png",
1251
+ "cell": 32,
1252
+ "rows": 4,
1253
+ "cols": 6,
1254
+ "frames": 6
1255
+ },
1256
+ {
1257
+ "category": "weapon",
1258
+ "key": "weapon-viper-scimitar",
1259
+ "label": "Viper Scimitar",
1260
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Legendary%20Weapons/Viper%20Scimitar/Viper_scimitar_f.png",
1261
+ "cell": 32,
1262
+ "rows": 4,
1263
+ "cols": 6,
1264
+ "frames": 6
1265
+ },
1266
+ {
1267
+ "category": "weapon",
1268
+ "key": "weapon-volcano-mace",
1269
+ "label": "Volcano Mace",
1270
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Legendary%20Weapons/Volcano%20Mace/Volcano_mace_f.png",
1271
+ "cell": 32,
1272
+ "rows": 4,
1273
+ "cols": 6,
1274
+ "frames": 6
1275
+ },
1276
+ {
1277
+ "category": "weapon",
1278
+ "key": "weapon-bow-bleeding",
1279
+ "label": "Bow · bleeding",
1280
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Bow/Front%20Layer/Bow_bleeding_f.png",
1281
+ "cell": 32,
1282
+ "rows": 4,
1283
+ "cols": 8,
1284
+ "frames": 8
1285
+ },
1286
+ {
1287
+ "category": "weapon",
1288
+ "key": "weapon-bow-fear",
1289
+ "label": "Bow · fear",
1290
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Bow/Front%20Layer/Bow_fear_f.png",
1291
+ "cell": 32,
1292
+ "rows": 4,
1293
+ "cols": 8,
1294
+ "frames": 8
1295
+ },
1296
+ {
1297
+ "category": "weapon",
1298
+ "key": "weapon-bow-fire",
1299
+ "label": "Bow · fire",
1300
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Bow/Front%20Layer/Bow_fire_f.png",
1301
+ "cell": 32,
1302
+ "rows": 4,
1303
+ "cols": 8,
1304
+ "frames": 8
1305
+ },
1306
+ {
1307
+ "category": "weapon",
1308
+ "key": "weapon-bow-ice",
1309
+ "label": "Bow · ice",
1310
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Bow/Front%20Layer/Bow_ice_f.png",
1311
+ "cell": 32,
1312
+ "rows": 4,
1313
+ "cols": 8,
1314
+ "frames": 8
1315
+ },
1316
+ {
1317
+ "category": "weapon",
1318
+ "key": "weapon-bow-nature",
1319
+ "label": "Bow · nature",
1320
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Bow/Front%20Layer/Bow_nature_f.png",
1321
+ "cell": 32,
1322
+ "rows": 4,
1323
+ "cols": 8,
1324
+ "frames": 8
1325
+ },
1326
+ {
1327
+ "category": "weapon",
1328
+ "key": "weapon-bow-petrification",
1329
+ "label": "Bow · petrification",
1330
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Bow/Front%20Layer/Bow_petrification_f.png",
1331
+ "cell": 32,
1332
+ "rows": 4,
1333
+ "cols": 8,
1334
+ "frames": 8
1335
+ },
1336
+ {
1337
+ "category": "weapon",
1338
+ "key": "weapon-bow-poison",
1339
+ "label": "Bow · poison",
1340
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Bow/Front%20Layer/Bow_poisson_f.png",
1341
+ "cell": 32,
1342
+ "rows": 4,
1343
+ "cols": 8,
1344
+ "frames": 8
1345
+ },
1346
+ {
1347
+ "category": "weapon",
1348
+ "key": "weapon-bow-shock",
1349
+ "label": "Bow · shock",
1350
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Bow/Front%20Layer/Bow_shock_f.png",
1351
+ "cell": 32,
1352
+ "rows": 4,
1353
+ "cols": 8,
1354
+ "frames": 8
1355
+ },
1356
+ {
1357
+ "category": "weapon",
1358
+ "key": "weapon-bow-sickness",
1359
+ "label": "Bow · sickness",
1360
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Bow/Front%20Layer/Bow_sickness_f.png",
1361
+ "cell": 32,
1362
+ "rows": 4,
1363
+ "cols": 8,
1364
+ "frames": 8
1365
+ },
1366
+ {
1367
+ "category": "weapon",
1368
+ "key": "weapon-bow-sleep",
1369
+ "label": "Bow · sleep",
1370
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Bow/Front%20Layer/Bow_sleep_f.png",
1371
+ "cell": 32,
1372
+ "rows": 4,
1373
+ "cols": 8,
1374
+ "frames": 8
1375
+ },
1376
+ {
1377
+ "category": "weapon",
1378
+ "key": "weapon-bow-stun",
1379
+ "label": "Bow · stun",
1380
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Bow/Front%20Layer/Bow_stun_f.png",
1381
+ "cell": 32,
1382
+ "rows": 4,
1383
+ "cols": 8,
1384
+ "frames": 8
1385
+ },
1386
+ {
1387
+ "category": "weapon",
1388
+ "key": "weapon-dagger-bleeding",
1389
+ "label": "Dagger · bleeding",
1390
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Dagger/Front%20Layer/Dagger_bleeding_f.png",
1391
+ "cell": 32,
1392
+ "rows": 4,
1393
+ "cols": 4,
1394
+ "frames": 4
1395
+ },
1396
+ {
1397
+ "category": "weapon",
1398
+ "key": "weapon-dagger-fear",
1399
+ "label": "Dagger · fear",
1400
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Dagger/Front%20Layer/Dagger_fear_f.png",
1401
+ "cell": 32,
1402
+ "rows": 4,
1403
+ "cols": 4,
1404
+ "frames": 4
1405
+ },
1406
+ {
1407
+ "category": "weapon",
1408
+ "key": "weapon-dagger-fire",
1409
+ "label": "Dagger · fire",
1410
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Dagger/Front%20Layer/Dagger_fire_f.png",
1411
+ "cell": 32,
1412
+ "rows": 4,
1413
+ "cols": 4,
1414
+ "frames": 4
1415
+ },
1416
+ {
1417
+ "category": "weapon",
1418
+ "key": "weapon-dagger-ice",
1419
+ "label": "Dagger · ice",
1420
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Dagger/Front%20Layer/Dagger_ice_f.png",
1421
+ "cell": 32,
1422
+ "rows": 4,
1423
+ "cols": 4,
1424
+ "frames": 4
1425
+ },
1426
+ {
1427
+ "category": "weapon",
1428
+ "key": "weapon-dagger-nature",
1429
+ "label": "Dagger · nature",
1430
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Dagger/Front%20Layer/Dagger_nature_f.png",
1431
+ "cell": 32,
1432
+ "rows": 4,
1433
+ "cols": 4,
1434
+ "frames": 4
1435
+ },
1436
+ {
1437
+ "category": "weapon",
1438
+ "key": "weapon-dagger-petrification",
1439
+ "label": "Dagger · petrification",
1440
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Dagger/Front%20Layer/Dagger_petrification_f.png",
1441
+ "cell": 32,
1442
+ "rows": 4,
1443
+ "cols": 4,
1444
+ "frames": 4
1445
+ },
1446
+ {
1447
+ "category": "weapon",
1448
+ "key": "weapon-dagger-poison",
1449
+ "label": "Dagger · poison",
1450
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Dagger/Front%20Layer/Dagger_poisson_f.png",
1451
+ "cell": 32,
1452
+ "rows": 4,
1453
+ "cols": 4,
1454
+ "frames": 4
1455
+ },
1456
+ {
1457
+ "category": "weapon",
1458
+ "key": "weapon-dagger-shock",
1459
+ "label": "Dagger · shock",
1460
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Dagger/Front%20Layer/Dagger_shock_f.png",
1461
+ "cell": 32,
1462
+ "rows": 4,
1463
+ "cols": 4,
1464
+ "frames": 4
1465
+ },
1466
+ {
1467
+ "category": "weapon",
1468
+ "key": "weapon-dagger-sickness",
1469
+ "label": "Dagger · sickness",
1470
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Dagger/Front%20Layer/Dagger_sickness_f.png",
1471
+ "cell": 32,
1472
+ "rows": 4,
1473
+ "cols": 4,
1474
+ "frames": 4
1475
+ },
1476
+ {
1477
+ "category": "weapon",
1478
+ "key": "weapon-dagger-sleep",
1479
+ "label": "Dagger · sleep",
1480
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Dagger/Front%20Layer/Dagger_sleep_f.png",
1481
+ "cell": 32,
1482
+ "rows": 4,
1483
+ "cols": 4,
1484
+ "frames": 4
1485
+ },
1486
+ {
1487
+ "category": "weapon",
1488
+ "key": "weapon-dagger-stun",
1489
+ "label": "Dagger · stun",
1490
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Dagger/Front%20Layer/Dagger_stun_f.png",
1491
+ "cell": 32,
1492
+ "rows": 4,
1493
+ "cols": 4,
1494
+ "frames": 4
1495
+ },
1496
+ {
1497
+ "category": "weapon",
1498
+ "key": "weapon-flail-bleeding",
1499
+ "label": "Flail · bleeding",
1500
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Flail/Flail_bleeding.png",
1501
+ "cell": 32,
1502
+ "rows": 4,
1503
+ "cols": 3,
1504
+ "frames": 3
1505
+ },
1506
+ {
1507
+ "category": "weapon",
1508
+ "key": "weapon-flail-fear",
1509
+ "label": "Flail · fear",
1510
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Flail/Flail_fear.png",
1511
+ "cell": 32,
1512
+ "rows": 4,
1513
+ "cols": 3,
1514
+ "frames": 3
1515
+ },
1516
+ {
1517
+ "category": "weapon",
1518
+ "key": "weapon-flail-fire",
1519
+ "label": "Flail · fire",
1520
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Flail/Flail_fire.png",
1521
+ "cell": 32,
1522
+ "rows": 4,
1523
+ "cols": 3,
1524
+ "frames": 3
1525
+ },
1526
+ {
1527
+ "category": "weapon",
1528
+ "key": "weapon-flail-ice",
1529
+ "label": "Flail · ice",
1530
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Flail/Flail_ice.png",
1531
+ "cell": 32,
1532
+ "rows": 4,
1533
+ "cols": 3,
1534
+ "frames": 3
1535
+ },
1536
+ {
1537
+ "category": "weapon",
1538
+ "key": "weapon-flail-nature",
1539
+ "label": "Flail · nature",
1540
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Flail/Flail_nature.png",
1541
+ "cell": 32,
1542
+ "rows": 4,
1543
+ "cols": 3,
1544
+ "frames": 3
1545
+ },
1546
+ {
1547
+ "category": "weapon",
1548
+ "key": "weapon-flail-petrification",
1549
+ "label": "Flail · petrification",
1550
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Flail/Flail_petrification.png",
1551
+ "cell": 32,
1552
+ "rows": 4,
1553
+ "cols": 3,
1554
+ "frames": 3
1555
+ },
1556
+ {
1557
+ "category": "weapon",
1558
+ "key": "weapon-flail-poison",
1559
+ "label": "Flail · poison",
1560
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Flail/Flail_poisson.png",
1561
+ "cell": 32,
1562
+ "rows": 4,
1563
+ "cols": 3,
1564
+ "frames": 3
1565
+ },
1566
+ {
1567
+ "category": "weapon",
1568
+ "key": "weapon-flail-shock",
1569
+ "label": "Flail · shock",
1570
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Flail/Flail_shock.png",
1571
+ "cell": 32,
1572
+ "rows": 4,
1573
+ "cols": 3,
1574
+ "frames": 3
1575
+ },
1576
+ {
1577
+ "category": "weapon",
1578
+ "key": "weapon-flail-sickness",
1579
+ "label": "Flail · sickness",
1580
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Flail/Flail_sickness.png",
1581
+ "cell": 32,
1582
+ "rows": 4,
1583
+ "cols": 3,
1584
+ "frames": 3
1585
+ },
1586
+ {
1587
+ "category": "weapon",
1588
+ "key": "weapon-flail-sleep",
1589
+ "label": "Flail · sleep",
1590
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Flail/Flail_sleep.png",
1591
+ "cell": 32,
1592
+ "rows": 4,
1593
+ "cols": 3,
1594
+ "frames": 3
1595
+ },
1596
+ {
1597
+ "category": "weapon",
1598
+ "key": "weapon-flail-stun",
1599
+ "label": "Flail · stun",
1600
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Flail/Flail_stun.png",
1601
+ "cell": 32,
1602
+ "rows": 4,
1603
+ "cols": 3,
1604
+ "frames": 3
1605
+ },
1606
+ {
1607
+ "category": "weapon",
1608
+ "key": "weapon-longsword-bleeding",
1609
+ "label": "LongSword · bleeding",
1610
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/LongSword/Front%20layer/LongSword_bleeding_f.png",
1611
+ "cell": 32,
1612
+ "rows": 4,
1613
+ "cols": 6,
1614
+ "frames": 6
1615
+ },
1616
+ {
1617
+ "category": "weapon",
1618
+ "key": "weapon-longsword-fear",
1619
+ "label": "LongSword · fear",
1620
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/LongSword/Front%20layer/LongSword_fear_f.png",
1621
+ "cell": 32,
1622
+ "rows": 4,
1623
+ "cols": 6,
1624
+ "frames": 6
1625
+ },
1626
+ {
1627
+ "category": "weapon",
1628
+ "key": "weapon-longsword-fire",
1629
+ "label": "LongSword · fire",
1630
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/LongSword/Front%20layer/LongSword_fire_f.png",
1631
+ "cell": 32,
1632
+ "rows": 4,
1633
+ "cols": 6,
1634
+ "frames": 6
1635
+ },
1636
+ {
1637
+ "category": "weapon",
1638
+ "key": "weapon-longsword-ice",
1639
+ "label": "LongSword · ice",
1640
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/LongSword/Front%20layer/LongSword_ice_f.png",
1641
+ "cell": 32,
1642
+ "rows": 4,
1643
+ "cols": 6,
1644
+ "frames": 6
1645
+ },
1646
+ {
1647
+ "category": "weapon",
1648
+ "key": "weapon-longsword-nature",
1649
+ "label": "LongSword · nature",
1650
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/LongSword/Front%20layer/LongSword_nature_f.png",
1651
+ "cell": 32,
1652
+ "rows": 4,
1653
+ "cols": 6,
1654
+ "frames": 6
1655
+ },
1656
+ {
1657
+ "category": "weapon",
1658
+ "key": "weapon-longsword-petrification",
1659
+ "label": "LongSword · petrification",
1660
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/LongSword/Front%20layer/LongSword_petrification_f.png",
1661
+ "cell": 32,
1662
+ "rows": 4,
1663
+ "cols": 6,
1664
+ "frames": 6
1665
+ },
1666
+ {
1667
+ "category": "weapon",
1668
+ "key": "weapon-longsword-poison",
1669
+ "label": "LongSword · poison",
1670
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/LongSword/Front%20layer/LongSword_poisson_f.png",
1671
+ "cell": 32,
1672
+ "rows": 4,
1673
+ "cols": 6,
1674
+ "frames": 6
1675
+ },
1676
+ {
1677
+ "category": "weapon",
1678
+ "key": "weapon-longsword-shock",
1679
+ "label": "LongSword · shock",
1680
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/LongSword/Front%20layer/LongSword_shock_f.png",
1681
+ "cell": 32,
1682
+ "rows": 4,
1683
+ "cols": 6,
1684
+ "frames": 6
1685
+ },
1686
+ {
1687
+ "category": "weapon",
1688
+ "key": "weapon-longsword-sickness",
1689
+ "label": "LongSword · sickness",
1690
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/LongSword/Front%20layer/LongSword_sickness_f.png",
1691
+ "cell": 32,
1692
+ "rows": 4,
1693
+ "cols": 6,
1694
+ "frames": 6
1695
+ },
1696
+ {
1697
+ "category": "weapon",
1698
+ "key": "weapon-longsword-sleep",
1699
+ "label": "LongSword · sleep",
1700
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/LongSword/Front%20layer/LongSword_sleep_f.png",
1701
+ "cell": 32,
1702
+ "rows": 4,
1703
+ "cols": 6,
1704
+ "frames": 6
1705
+ },
1706
+ {
1707
+ "category": "weapon",
1708
+ "key": "weapon-longsword-stun",
1709
+ "label": "LongSword · stun",
1710
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/LongSword/Front%20layer/LongSword_stun_f.png",
1711
+ "cell": 32,
1712
+ "rows": 4,
1713
+ "cols": 6,
1714
+ "frames": 6
1715
+ },
1716
+ {
1717
+ "category": "weapon",
1718
+ "key": "weapon-spear-bleeding",
1719
+ "label": "Spear · bleeding",
1720
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Spear/Spear_bleeding.png",
1721
+ "cell": 32,
1722
+ "rows": 4,
1723
+ "cols": 3,
1724
+ "frames": 3
1725
+ },
1726
+ {
1727
+ "category": "weapon",
1728
+ "key": "weapon-spear-fear",
1729
+ "label": "Spear · fear",
1730
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Spear/Spear_fear.png",
1731
+ "cell": 32,
1732
+ "rows": 4,
1733
+ "cols": 3,
1734
+ "frames": 3
1735
+ },
1736
+ {
1737
+ "category": "weapon",
1738
+ "key": "weapon-spear-fire",
1739
+ "label": "Spear · fire",
1740
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Spear/Spear_fire.png",
1741
+ "cell": 32,
1742
+ "rows": 4,
1743
+ "cols": 3,
1744
+ "frames": 3
1745
+ },
1746
+ {
1747
+ "category": "weapon",
1748
+ "key": "weapon-spear-ice",
1749
+ "label": "Spear · ice",
1750
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Spear/Spear_ice.png",
1751
+ "cell": 32,
1752
+ "rows": 4,
1753
+ "cols": 3,
1754
+ "frames": 3
1755
+ },
1756
+ {
1757
+ "category": "weapon",
1758
+ "key": "weapon-spear-nature",
1759
+ "label": "Spear · nature",
1760
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Spear/Spear_nature.png",
1761
+ "cell": 32,
1762
+ "rows": 4,
1763
+ "cols": 3,
1764
+ "frames": 3
1765
+ },
1766
+ {
1767
+ "category": "weapon",
1768
+ "key": "weapon-spear-petrification",
1769
+ "label": "Spear · petrification",
1770
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Spear/Spear_petrification.png",
1771
+ "cell": 32,
1772
+ "rows": 4,
1773
+ "cols": 3,
1774
+ "frames": 3
1775
+ },
1776
+ {
1777
+ "category": "weapon",
1778
+ "key": "weapon-spear-poison",
1779
+ "label": "Spear · poison",
1780
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Spear/Spear_poisson.png",
1781
+ "cell": 32,
1782
+ "rows": 4,
1783
+ "cols": 3,
1784
+ "frames": 3
1785
+ },
1786
+ {
1787
+ "category": "weapon",
1788
+ "key": "weapon-spear-shock",
1789
+ "label": "Spear · shock",
1790
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Spear/Spear_shock.png",
1791
+ "cell": 32,
1792
+ "rows": 4,
1793
+ "cols": 3,
1794
+ "frames": 3
1795
+ },
1796
+ {
1797
+ "category": "weapon",
1798
+ "key": "weapon-spear-sickness",
1799
+ "label": "Spear · sickness",
1800
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Spear/Spear_sickness.png",
1801
+ "cell": 32,
1802
+ "rows": 4,
1803
+ "cols": 3,
1804
+ "frames": 3
1805
+ },
1806
+ {
1807
+ "category": "weapon",
1808
+ "key": "weapon-spear-sleep",
1809
+ "label": "Spear · sleep",
1810
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Spear/Spear_sleep.png",
1811
+ "cell": 32,
1812
+ "rows": 4,
1813
+ "cols": 3,
1814
+ "frames": 3
1815
+ },
1816
+ {
1817
+ "category": "weapon",
1818
+ "key": "weapon-spear-stun",
1819
+ "label": "Spear · stun",
1820
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Spear/Spear_stun.png",
1821
+ "cell": 32,
1822
+ "rows": 4,
1823
+ "cols": 3,
1824
+ "frames": 3
1825
+ },
1826
+ {
1827
+ "category": "weapon",
1828
+ "key": "weapon-sword-bleeding",
1829
+ "label": "Sword · bleeding",
1830
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Sword/Front%20Layer/Sword_bleeding_f.png",
1831
+ "cell": 32,
1832
+ "rows": 4,
1833
+ "cols": 4,
1834
+ "frames": 4
1835
+ },
1836
+ {
1837
+ "category": "weapon",
1838
+ "key": "weapon-sword-fear",
1839
+ "label": "Sword · fear",
1840
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Sword/Front%20Layer/Sword_fear_f.png",
1841
+ "cell": 32,
1842
+ "rows": 4,
1843
+ "cols": 4,
1844
+ "frames": 4
1845
+ },
1846
+ {
1847
+ "category": "weapon",
1848
+ "key": "weapon-sword-fire",
1849
+ "label": "Sword · fire",
1850
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Sword/Front%20Layer/Sword_fire_f.png",
1851
+ "cell": 32,
1852
+ "rows": 4,
1853
+ "cols": 4,
1854
+ "frames": 4
1855
+ },
1856
+ {
1857
+ "category": "weapon",
1858
+ "key": "weapon-sword-ice",
1859
+ "label": "Sword · ice",
1860
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Sword/Front%20Layer/Sword_ice_f.png",
1861
+ "cell": 32,
1862
+ "rows": 4,
1863
+ "cols": 4,
1864
+ "frames": 4
1865
+ },
1866
+ {
1867
+ "category": "weapon",
1868
+ "key": "weapon-sword-nature",
1869
+ "label": "Sword · nature",
1870
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Sword/Front%20Layer/Sword_nature_f.png",
1871
+ "cell": 32,
1872
+ "rows": 4,
1873
+ "cols": 4,
1874
+ "frames": 4
1875
+ },
1876
+ {
1877
+ "category": "weapon",
1878
+ "key": "weapon-sword-petrification",
1879
+ "label": "Sword · petrification",
1880
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Sword/Front%20Layer/Sword_petrification_f.png",
1881
+ "cell": 32,
1882
+ "rows": 4,
1883
+ "cols": 4,
1884
+ "frames": 4
1885
+ },
1886
+ {
1887
+ "category": "weapon",
1888
+ "key": "weapon-sword-poison",
1889
+ "label": "Sword · poison",
1890
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Sword/Front%20Layer/Sword_poisson_f.png",
1891
+ "cell": 32,
1892
+ "rows": 4,
1893
+ "cols": 4,
1894
+ "frames": 4
1895
+ },
1896
+ {
1897
+ "category": "weapon",
1898
+ "key": "weapon-sword-shock",
1899
+ "label": "Sword · shock",
1900
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Sword/Front%20Layer/Sword_shock_f.png",
1901
+ "cell": 32,
1902
+ "rows": 4,
1903
+ "cols": 4,
1904
+ "frames": 4
1905
+ },
1906
+ {
1907
+ "category": "weapon",
1908
+ "key": "weapon-sword-sickness",
1909
+ "label": "Sword · sickness",
1910
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Sword/Front%20Layer/Sword_sickness_f.png",
1911
+ "cell": 32,
1912
+ "rows": 4,
1913
+ "cols": 4,
1914
+ "frames": 4
1915
+ },
1916
+ {
1917
+ "category": "weapon",
1918
+ "key": "weapon-sword-sleep",
1919
+ "label": "Sword · sleep",
1920
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Sword/Front%20Layer/Sword_sleep_f.png",
1921
+ "cell": 32,
1922
+ "rows": 4,
1923
+ "cols": 4,
1924
+ "frames": 4
1925
+ },
1926
+ {
1927
+ "category": "weapon",
1928
+ "key": "weapon-sword-stun",
1929
+ "label": "Sword · stun",
1930
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Sword/Front%20Layer/Sword_stun_f%20.png",
1931
+ "cell": 32,
1932
+ "rows": 4,
1933
+ "cols": 4,
1934
+ "frames": 4
1935
+ },
1936
+ {
1937
+ "category": "weapon",
1938
+ "key": "weapon-whip-bleeding",
1939
+ "label": "Whip · bleeding",
1940
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Whip/Whip_bleeding.png",
1941
+ "cell": 32,
1942
+ "rows": 4,
1943
+ "cols": 3,
1944
+ "frames": 3
1945
+ },
1946
+ {
1947
+ "category": "weapon",
1948
+ "key": "weapon-whip-fear",
1949
+ "label": "Whip · fear",
1950
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Whip/Whip_fear.png",
1951
+ "cell": 32,
1952
+ "rows": 4,
1953
+ "cols": 3,
1954
+ "frames": 3
1955
+ },
1956
+ {
1957
+ "category": "weapon",
1958
+ "key": "weapon-whip-fire",
1959
+ "label": "Whip · fire",
1960
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Whip/Whip_fire.png",
1961
+ "cell": 32,
1962
+ "rows": 4,
1963
+ "cols": 3,
1964
+ "frames": 3
1965
+ },
1966
+ {
1967
+ "category": "weapon",
1968
+ "key": "weapon-whip-ice",
1969
+ "label": "Whip · ice",
1970
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Whip/Whip_ice.png",
1971
+ "cell": 32,
1972
+ "rows": 4,
1973
+ "cols": 3,
1974
+ "frames": 3
1975
+ },
1976
+ {
1977
+ "category": "weapon",
1978
+ "key": "weapon-whip-nature",
1979
+ "label": "Whip · nature",
1980
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Whip/Whip_nature.png",
1981
+ "cell": 32,
1982
+ "rows": 4,
1983
+ "cols": 3,
1984
+ "frames": 3
1985
+ },
1986
+ {
1987
+ "category": "weapon",
1988
+ "key": "weapon-whip-petrification",
1989
+ "label": "Whip · petrification",
1990
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Whip/Whip_petrification.png",
1991
+ "cell": 32,
1992
+ "rows": 4,
1993
+ "cols": 3,
1994
+ "frames": 3
1995
+ },
1996
+ {
1997
+ "category": "weapon",
1998
+ "key": "weapon-whip-poison",
1999
+ "label": "Whip · poison",
2000
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Whip/Whip_poisson.png",
2001
+ "cell": 32,
2002
+ "rows": 4,
2003
+ "cols": 3,
2004
+ "frames": 3
2005
+ },
2006
+ {
2007
+ "category": "weapon",
2008
+ "key": "weapon-whip-shock",
2009
+ "label": "Whip · shock",
2010
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Whip/Whip_shock.png",
2011
+ "cell": 32,
2012
+ "rows": 4,
2013
+ "cols": 3,
2014
+ "frames": 3
2015
+ },
2016
+ {
2017
+ "category": "weapon",
2018
+ "key": "weapon-whip-sickness",
2019
+ "label": "Whip · sickness",
2020
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Whip/Whip_sickness.png",
2021
+ "cell": 32,
2022
+ "rows": 4,
2023
+ "cols": 3,
2024
+ "frames": 3
2025
+ },
2026
+ {
2027
+ "category": "weapon",
2028
+ "key": "weapon-whip-sleep",
2029
+ "label": "Whip · sleep",
2030
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Whip/Whip_sleep.png",
2031
+ "cell": 32,
2032
+ "rows": 4,
2033
+ "cols": 3,
2034
+ "frames": 3
2035
+ },
2036
+ {
2037
+ "category": "weapon",
2038
+ "key": "weapon-whip-stun",
2039
+ "label": "Whip · stun",
2040
+ "url": "/assets/minifantasy/Minifantasy_Magic_Weapons_And_Effects_v1.0/Minifantasy_Magic_Weapons_And_Effects_Assets/Addon%20Effects%20(Minifantasy%20-%20Weapons)/Magic%20Weapons/Whip/Whip_stun.png",
2041
+ "cell": 32,
2042
+ "rows": 4,
2043
+ "cols": 3,
2044
+ "frames": 3
2045
+ },
2046
+ {
2047
+ "category": "special",
2048
+ "key": "special-apotheosis",
2049
+ "label": "Apotheosis",
2050
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_II_v1.0/Minifantasy_True_Heroes_II_Assets/Bard/Special_Animations/Apotheosis/ApotheosisEffect.png",
2051
+ "cell": 32,
2052
+ "rows": 4,
2053
+ "cols": 13,
2054
+ "frames": 13
2055
+ },
2056
+ {
2057
+ "category": "special",
2058
+ "key": "special-blades-dictum",
2059
+ "label": "Blades Dictum",
2060
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_II_v1.0/Minifantasy_True_Heroes_II_Assets/Paladin/Special_Animations/Dictums/BladesDictumEffect.png",
2061
+ "cell": 32,
2062
+ "rows": 4,
2063
+ "cols": 15,
2064
+ "frames": 15
2065
+ },
2066
+ {
2067
+ "category": "special",
2068
+ "key": "special-blood-shards-diagonal",
2069
+ "label": "Blood Shards Diagonal",
2070
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_IV_v1.1/Minifantasy_True_Heroes_IV_Assets/Blood_Mage/Special_Animations/Blood_Shard/Blood_Shards_Diagonal_Effect.png",
2071
+ "cell": 32,
2072
+ "rows": 4,
2073
+ "cols": 10,
2074
+ "frames": 10
2075
+ },
2076
+ {
2077
+ "category": "special",
2078
+ "key": "special-blood-shards-orthogonal",
2079
+ "label": "Blood Shards Orthogonal",
2080
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_IV_v1.1/Minifantasy_True_Heroes_IV_Assets/Blood_Mage/Special_Animations/Blood_Shard/Blood_Shards_Orthogonal_Effect.png",
2081
+ "cell": 32,
2082
+ "rows": 4,
2083
+ "cols": 10,
2084
+ "frames": 10
2085
+ },
2086
+ {
2087
+ "category": "special",
2088
+ "key": "special-blood-slam",
2089
+ "label": "Blood Slam",
2090
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_IV_v1.1/Minifantasy_True_Heroes_IV_Assets/Blood_Mage/Special_Animations/Blood_Slam/Blood_Slam_Effect.png",
2091
+ "cell": 32,
2092
+ "rows": 4,
2093
+ "cols": 6,
2094
+ "frames": 6
2095
+ },
2096
+ {
2097
+ "category": "special",
2098
+ "key": "special-blood-spikes",
2099
+ "label": "Blood Spikes",
2100
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_IV_v1.1/Minifantasy_True_Heroes_IV_Assets/Blood_Mage/Special_Animations/Blood_Spikes/Blood_Spikes_Effect.png",
2101
+ "cell": 32,
2102
+ "rows": 4,
2103
+ "cols": 8,
2104
+ "frames": 8
2105
+ },
2106
+ {
2107
+ "category": "special",
2108
+ "key": "special-cataclysm",
2109
+ "label": "Cataclysm",
2110
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_III_v1.1/Minifantasy_True_Heroes_III_Assets/Fighter/Special_Animations/Cataclysm/Cataclysm_Effect.png",
2111
+ "cell": 32,
2112
+ "rows": 4,
2113
+ "cols": 12,
2114
+ "frames": 12
2115
+ },
2116
+ {
2117
+ "category": "special",
2118
+ "key": "special-deflagration-only",
2119
+ "label": "Deflagration Only",
2120
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_III_v1.1/Minifantasy_True_Heroes_III_Assets/Wizard/Special_Animations/Fireball/Deflagration_Only_Effect.png",
2121
+ "cell": 64,
2122
+ "rows": 1,
2123
+ "cols": 24,
2124
+ "frames": 24
2125
+ },
2126
+ {
2127
+ "category": "special",
2128
+ "key": "special-dissonant-chord-impact",
2129
+ "label": "Dissonant Chord (impact)",
2130
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_II_v1.0/Minifantasy_True_Heroes_II_Assets/Bard/Special_Animations/Dissonant_Chord/DissonantChordImpact.png",
2131
+ "cell": 32,
2132
+ "rows": 1,
2133
+ "cols": 4,
2134
+ "frames": 4
2135
+ },
2136
+ {
2137
+ "category": "special",
2138
+ "key": "special-dissonant-chord-projectile",
2139
+ "label": "Dissonant Chord (projectile)",
2140
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_II_v1.0/Minifantasy_True_Heroes_II_Assets/Bard/Special_Animations/Dissonant_Chord/DissonantChordProjectile.png",
2141
+ "cell": 32,
2142
+ "rows": 3,
2143
+ "cols": 3,
2144
+ "frames": 3
2145
+ },
2146
+ {
2147
+ "category": "special",
2148
+ "key": "special-divine-fire-impact",
2149
+ "label": "Divine Fire (impact)",
2150
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_II_v1.0/Minifantasy_True_Heroes_II_Assets/Cleric/Special_Animations/Divine%20Fire/DivineFireImpact.png",
2151
+ "cell": 32,
2152
+ "rows": 1,
2153
+ "cols": 4,
2154
+ "frames": 4
2155
+ },
2156
+ {
2157
+ "category": "special",
2158
+ "key": "special-divine-fire-projectile",
2159
+ "label": "Divine Fire (projectile)",
2160
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_II_v1.0/Minifantasy_True_Heroes_II_Assets/Cleric/Special_Animations/Divine%20Fire/DivineFireProjectile.png",
2161
+ "cell": 32,
2162
+ "rows": 3,
2163
+ "cols": 3,
2164
+ "frames": 3
2165
+ },
2166
+ {
2167
+ "category": "special",
2168
+ "key": "special-dome-base-dictum",
2169
+ "label": "Dome Base Dictum",
2170
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_II_v1.0/Minifantasy_True_Heroes_II_Assets/Paladin/Special_Animations/Dictums/DomeBaseDictumEffect.png",
2171
+ "cell": 32,
2172
+ "rows": 4,
2173
+ "cols": 15,
2174
+ "frames": 15
2175
+ },
2176
+ {
2177
+ "category": "special",
2178
+ "key": "special-dome-dictum",
2179
+ "label": "Dome Dictum",
2180
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_II_v1.0/Minifantasy_True_Heroes_II_Assets/Paladin/Special_Animations/Dictums/DomeDictumEffect.png",
2181
+ "cell": 32,
2182
+ "rows": 4,
2183
+ "cols": 15,
2184
+ "frames": 15
2185
+ },
2186
+ {
2187
+ "category": "special",
2188
+ "key": "special-double-arrow-projectile",
2189
+ "label": "Double Arrow (projectile)",
2190
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_III_v1.1/Minifantasy_True_Heroes_III_Assets/Ranger/Special_Animations/Double_Shot/Double_Arrow_Projectile.png",
2191
+ "cell": 32,
2192
+ "rows": 3,
2193
+ "cols": 3,
2194
+ "frames": 3
2195
+ },
2196
+ {
2197
+ "category": "special",
2198
+ "key": "special-double-melee-attack",
2199
+ "label": "Double Melee Attack",
2200
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_III_v1.1/Minifantasy_True_Heroes_III_Assets/Ranger/Special_Animations/Double_Melee_Attack/Double_Melee_Attack_Effect.png",
2201
+ "cell": 32,
2202
+ "rows": 4,
2203
+ "cols": 5,
2204
+ "frames": 5
2205
+ },
2206
+ {
2207
+ "category": "special",
2208
+ "key": "special-drain",
2209
+ "label": "Drain",
2210
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_IV_v1.1/Minifantasy_True_Heroes_IV_Assets/Blood_Mage/Special_Animations/Vampirize/Drain_Effect.png",
2211
+ "cell": 32,
2212
+ "rows": 1,
2213
+ "cols": 7,
2214
+ "frames": 7
2215
+ },
2216
+ {
2217
+ "category": "special",
2218
+ "key": "special-explosion-full",
2219
+ "label": "Explosion Full",
2220
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_III_v1.1/Minifantasy_True_Heroes_III_Assets/Wizard/Special_Animations/Fireball/Explossion_Full_Effect.png",
2221
+ "cell": 64,
2222
+ "rows": 1,
2223
+ "cols": 26,
2224
+ "frames": 26
2225
+ },
2226
+ {
2227
+ "category": "special",
2228
+ "key": "special-explosion-only",
2229
+ "label": "Explosion Only",
2230
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_III_v1.1/Minifantasy_True_Heroes_III_Assets/Wizard/Special_Animations/Fireball/Explossion_Only_Effect.png",
2231
+ "cell": 64,
2232
+ "rows": 1,
2233
+ "cols": 5,
2234
+ "frames": 5
2235
+ },
2236
+ {
2237
+ "category": "special",
2238
+ "key": "special-fire-familiar-attack",
2239
+ "label": "Fire Familiar Attack",
2240
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_III_v1.1/Minifantasy_True_Heroes_III_Assets/Wizard/Special_Animations/Fire_Familiar/Fire_Familiar_Attack_Effect.png",
2241
+ "cell": 32,
2242
+ "rows": 4,
2243
+ "cols": 8,
2244
+ "frames": 8
2245
+ },
2246
+ {
2247
+ "category": "special",
2248
+ "key": "special-fire-torrent",
2249
+ "label": "Fire Torrent",
2250
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_III_v1.1/Minifantasy_True_Heroes_III_Assets/Wizard/Special_Animations/Fire_Torrent/Fire_Torrent_Effect.png",
2251
+ "cell": 64,
2252
+ "rows": 4,
2253
+ "cols": 20,
2254
+ "frames": 20
2255
+ },
2256
+ {
2257
+ "category": "special",
2258
+ "key": "special-fireball-projectile",
2259
+ "label": "Fireball (projectile)",
2260
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_III_v1.1/Minifantasy_True_Heroes_III_Assets/Wizard/Special_Animations/Fireball/Fireball_Projectile.png",
2261
+ "cell": 32,
2262
+ "rows": 3,
2263
+ "cols": 3,
2264
+ "frames": 3
2265
+ },
2266
+ {
2267
+ "category": "special",
2268
+ "key": "special-fth-projectile-impact",
2269
+ "label": "FTH Projectile (impact)",
2270
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_IV_v1.1/Minifantasy_True_Heroes_IV_Assets/Tech-Augmented_Gunslinger/Special_Animations/Fan_The_Hammer/FTH_Projectile_Impact.png",
2271
+ "cell": 32,
2272
+ "rows": 1,
2273
+ "cols": 13,
2274
+ "frames": 13
2275
+ },
2276
+ {
2277
+ "category": "special",
2278
+ "key": "special-healing-words-pray",
2279
+ "label": "Healing Words Pray",
2280
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_II_v1.0/Minifantasy_True_Heroes_II_Assets/Cleric/Special_Animations/Prayers/HealingWordsPrayEffect.png",
2281
+ "cell": 32,
2282
+ "rows": 4,
2283
+ "cols": 22,
2284
+ "frames": 22
2285
+ },
2286
+ {
2287
+ "category": "special",
2288
+ "key": "special-holy-hammer-impact",
2289
+ "label": "Holy Hammer (impact)",
2290
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_II_v1.0/Minifantasy_True_Heroes_II_Assets/Paladin/Special_Animations/Holy_Hammer/HolyHammerImpact.png",
2291
+ "cell": 32,
2292
+ "rows": 1,
2293
+ "cols": 6,
2294
+ "frames": 6
2295
+ },
2296
+ {
2297
+ "category": "special",
2298
+ "key": "special-shard-impact",
2299
+ "label": "Shard (impact)",
2300
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_IV_v1.1/Minifantasy_True_Heroes_IV_Assets/Blood_Mage/Special_Animations/Blood_Shard/Shard_Impact.png",
2301
+ "cell": 32,
2302
+ "rows": 1,
2303
+ "cols": 10,
2304
+ "frames": 10
2305
+ },
2306
+ {
2307
+ "category": "special",
2308
+ "key": "special-shard-projectile",
2309
+ "label": "Shard (projectile)",
2310
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_IV_v1.1/Minifantasy_True_Heroes_IV_Assets/Blood_Mage/Special_Animations/Blood_Shard/Shard_Projectiles.png",
2311
+ "cell": 32,
2312
+ "rows": 3,
2313
+ "cols": 3,
2314
+ "frames": 3
2315
+ },
2316
+ {
2317
+ "category": "special",
2318
+ "key": "special-shield-bash",
2319
+ "label": "Shield Bash",
2320
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_II_v1.0/Minifantasy_True_Heroes_II_Assets/Paladin/Special_Animations/Shield_Bash/ShieldBashEffect.png",
2321
+ "cell": 32,
2322
+ "rows": 4,
2323
+ "cols": 8,
2324
+ "frames": 8
2325
+ },
2326
+ {
2327
+ "category": "special",
2328
+ "key": "special-single-arrow-projectile",
2329
+ "label": "Single Arrow (projectile)",
2330
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_III_v1.1/Minifantasy_True_Heroes_III_Assets/Ranger/Special_Animations/Triple_Shot/Single_Arrow_Projectile.png",
2331
+ "cell": 32,
2332
+ "rows": 3,
2333
+ "cols": 3,
2334
+ "frames": 3
2335
+ },
2336
+ {
2337
+ "category": "special",
2338
+ "key": "special-single-melee-attack",
2339
+ "label": "Single Melee Attack",
2340
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_III_v1.1/Minifantasy_True_Heroes_III_Assets/Ranger/Special_Animations/Single_Melee_Attack/Single_Melee_Attack_Effect.png",
2341
+ "cell": 32,
2342
+ "rows": 4,
2343
+ "cols": 5,
2344
+ "frames": 5
2345
+ },
2346
+ {
2347
+ "category": "special",
2348
+ "key": "special-spirit-guardian-pray",
2349
+ "label": "Spirit Guardian Pray",
2350
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_II_v1.0/Minifantasy_True_Heroes_II_Assets/Cleric/Special_Animations/Prayers/SpiritGuardianPrayEffect.png",
2351
+ "cell": 32,
2352
+ "rows": 4,
2353
+ "cols": 22,
2354
+ "frames": 22
2355
+ },
2356
+ {
2357
+ "category": "special",
2358
+ "key": "special-swirl",
2359
+ "label": "Swirl",
2360
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_III_v1.1/Minifantasy_True_Heroes_III_Assets/Fighter/Special_Animations/Swirl/Figther_Swirl_Effect.png",
2361
+ "cell": 32,
2362
+ "rows": 4,
2363
+ "cols": 4,
2364
+ "frames": 4
2365
+ },
2366
+ {
2367
+ "category": "special",
2368
+ "key": "special-tempest",
2369
+ "label": "Tempest",
2370
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_III_v1.1/Minifantasy_True_Heroes_III_Assets/Fighter/Special_Animations/Tempest/Figther_Tempest_Effect.png",
2371
+ "cell": 32,
2372
+ "rows": 4,
2373
+ "cols": 7,
2374
+ "frames": 7
2375
+ },
2376
+ {
2377
+ "category": "special",
2378
+ "key": "special-thousand-blades",
2379
+ "label": "Thousand Blades",
2380
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_IV_v1.1/Minifantasy_True_Heroes_IV_Assets/Ninja_Assassin/Special_Animations/Thousand_Blades/Thousand_Blades_Effect.png",
2381
+ "cell": 32,
2382
+ "rows": 4,
2383
+ "cols": 12,
2384
+ "frames": 12
2385
+ },
2386
+ {
2387
+ "category": "special",
2388
+ "key": "special-uppercut",
2389
+ "label": "Uppercut",
2390
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_III_v1.1/Minifantasy_True_Heroes_III_Assets/Fighter/Special_Animations/Uppercut/Figther_Uppercut_Effect.png",
2391
+ "cell": 32,
2392
+ "rows": 4,
2393
+ "cols": 4,
2394
+ "frames": 4
2395
+ },
2396
+ {
2397
+ "category": "special",
2398
+ "key": "special-whip-attack",
2399
+ "label": "Whip Attack",
2400
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_IV_v1.1/Minifantasy_True_Heroes_IV_Assets/Tech-Augmented_Gunslinger/Special_Animations/Whip_Attack/Whip_Attack_Effect.png",
2401
+ "cell": 32,
2402
+ "rows": 4,
2403
+ "cols": 6,
2404
+ "frames": 6
2405
+ },
2406
+ {
2407
+ "category": "special",
2408
+ "key": "special-word-of-pain-pray",
2409
+ "label": "Word Of Pain Pray",
2410
+ "url": "/assets/minifantasy/Minifantasy_True_Heroes_II_v1.0/Minifantasy_True_Heroes_II_Assets/Cleric/Special_Animations/Prayers/WordOfPainPrayEffect.png",
2411
+ "cell": 32,
2412
+ "rows": 4,
2413
+ "cols": 22,
2414
+ "frames": 22
2415
+ }
2416
+ ]
2417
+ }
web/assets/enemies.json ADDED
@@ -0,0 +1,161 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "enemies": {
3
+ "feral-blade": {
4
+ "name": "Feral Blade",
5
+ "sprite": "dark-orc-army-feral-blade",
6
+ "attackType": "melee",
7
+ "attackAnim": "attack",
8
+ "attackEffects": [
9
+ "auto"
10
+ ],
11
+ "projectile": "auto",
12
+ "stats": {
13
+ "hp": 70,
14
+ "armor": 40,
15
+ "basicDamage": 14,
16
+ "skillDamage": 22
17
+ },
18
+ "skills": [
19
+ 385,
20
+ 384
21
+ ],
22
+ "skillCfg": {}
23
+ },
24
+ "orc-scout": {
25
+ "name": "Orc Scout",
26
+ "sprite": "dark-orc-army-orc-scout",
27
+ "attackType": "melee",
28
+ "attackAnim": "attack",
29
+ "attackEffects": [
30
+ "auto"
31
+ ],
32
+ "projectile": "auto",
33
+ "stats": {
34
+ "hp": 60,
35
+ "armor": 35,
36
+ "basicDamage": 12,
37
+ "skillDamage": 20
38
+ },
39
+ "skills": [],
40
+ "skillCfg": {}
41
+ },
42
+ "orc-raider": {
43
+ "name": "Orc Raider",
44
+ "sprite": "dark-orc-army-orc-raider",
45
+ "attackType": "melee",
46
+ "attackAnim": "attack",
47
+ "attackEffects": [
48
+ "auto"
49
+ ],
50
+ "projectile": "auto",
51
+ "stats": {
52
+ "hp": 90,
53
+ "armor": 50,
54
+ "basicDamage": 18,
55
+ "skillDamage": 28
56
+ },
57
+ "skills": [
58
+ 382
59
+ ],
60
+ "skillCfg": {}
61
+ },
62
+ "feral-berserker": {
63
+ "name": "Feral Berserker",
64
+ "sprite": "dark-orc-army-feral-berserker",
65
+ "attackType": "melee",
66
+ "attackAnim": "attack",
67
+ "attackEffects": [
68
+ "auto"
69
+ ],
70
+ "projectile": "auto",
71
+ "stats": {
72
+ "hp": 120,
73
+ "armor": 60,
74
+ "basicDamage": 22,
75
+ "skillDamage": 36
76
+ },
77
+ "skills": [
78
+ 384
79
+ ],
80
+ "skillCfg": {}
81
+ },
82
+ "feral-arbalist": {
83
+ "name": "Feral Arbalist",
84
+ "sprite": "dark-orc-army-feral-arbalist",
85
+ "attackType": "ranged",
86
+ "attackAnim": "attack",
87
+ "attackEffects": [],
88
+ "projectile": "auto",
89
+ "stats": {
90
+ "hp": 80,
91
+ "armor": 50,
92
+ "basicDamage": 16,
93
+ "skillDamage": 28
94
+ },
95
+ "skills": [
96
+ 435
97
+ ],
98
+ "skillCfg": {}
99
+ },
100
+ "feral-phalanx": {
101
+ "name": "Feral Phalanx",
102
+ "sprite": "dark-orc-army-feral-phalanx",
103
+ "attackType": "melee",
104
+ "attackAnim": "attack",
105
+ "attackEffects": [
106
+ "auto"
107
+ ],
108
+ "projectile": "auto",
109
+ "stats": {
110
+ "hp": 160,
111
+ "armor": 80,
112
+ "basicDamage": 16,
113
+ "skillDamage": 24
114
+ },
115
+ "skills": [
116
+ 384
117
+ ],
118
+ "skillCfg": {}
119
+ },
120
+ "warbreed-berserker": {
121
+ "name": "Warbreed Berserker",
122
+ "sprite": "dark-orc-army-warbreed-berserker",
123
+ "attackType": "melee",
124
+ "attackAnim": "attack",
125
+ "attackEffects": [
126
+ "auto"
127
+ ],
128
+ "projectile": "auto",
129
+ "stats": {
130
+ "hp": 180,
131
+ "armor": 70,
132
+ "basicDamage": 28,
133
+ "skillDamage": 44
134
+ },
135
+ "skills": [
136
+ 385
137
+ ],
138
+ "skillCfg": {}
139
+ },
140
+ "cave-troll": {
141
+ "name": "Cave Troll",
142
+ "sprite": "dark-orc-army-cave-troll",
143
+ "attackType": "melee",
144
+ "attackAnim": "attack",
145
+ "attackEffects": [
146
+ "auto"
147
+ ],
148
+ "projectile": "auto",
149
+ "stats": {
150
+ "hp": 400,
151
+ "armor": 90,
152
+ "basicDamage": 40,
153
+ "skillDamage": 70
154
+ },
155
+ "skills": [
156
+ 385
157
+ ],
158
+ "skillCfg": {}
159
+ }
160
+ }
161
+ }
web/classesSandbox.js ADDED
The diff for this file is too large to render. See raw diff
 
web/enemiesSandbox.js ADDED
The diff for this file is too large to render. See raw diff
 
web/engine.js CHANGED
@@ -791,6 +791,10 @@ function makeActor(unit, team, id, slot) {
791
  team,
792
  name: unit.name || id,
793
  profession: unit.profession || null,
 
 
 
 
794
  role: tpl.role,
795
  rank: unit.rank ?? 12,
796
  armor: tpl.armor ?? 0,
@@ -823,11 +827,15 @@ function makeActor(unit, team, id, slot) {
823
  kd: 0
824
  };
825
  }
826
- function makeTeamBattle({ seed = 1, players = [], enemies = [] } = {}) {
827
  const actors = [];
828
  players.filter(Boolean).slice(0, 5).forEach((u, i) => actors.push(makeActor(u, "player", `P${i}`, i)));
829
  enemies.filter(Boolean).slice(0, 5).forEach((u, i) => actors.push(makeActor(u, "enemy", `E${i}`, i)));
830
- return { t: 0, rng: makeRng(seed), actors, projectiles: [], log: [], over: false, winner: null };
 
 
 
 
831
  }
832
  var ADJACENT_GW = 140;
833
  var BODY_RADIUS = { melee: 35, ranged: 32 };
@@ -971,6 +979,7 @@ function kill(b, a) {
971
  if (!a.alive) return;
972
  a.alive = false;
973
  a.hp = 0;
 
974
  log(b, "death", a);
975
  if (hasCond(a, "disease")) for (const x of adjacentTo(b, a)) applyCondition(b, x, "disease", 10);
976
  }
@@ -1303,8 +1312,9 @@ function skillTarget(b, a, s, foe) {
1303
  if (s.target === "other_ally") return mostWoundedAlly(b, a, false);
1304
  return foe;
1305
  }
1306
- function usable(b, a, s, tgt, foe) {
1307
  if (!tgt) return false;
 
1308
  if (b.t < (a.recharge[s.name] || 0)) return false;
1309
  if (s.cost?.energy && a.energy < s.cost.energy) return false;
1310
  if (s.cost?.adrenaline && a.adrenaline < s.cost.adrenaline) return false;
@@ -1441,9 +1451,82 @@ function resolveOverlaps(b) {
1441
  }
1442
  }
1443
  var isImmovable = (b, a) => !!a.casting || isKd(b, a);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1444
  function step(b, dt) {
1445
  if (b.over) return;
1446
  b.t += dt;
 
 
 
1447
  for (const a of b.actors) {
1448
  if (!a.alive) continue;
1449
  a.energy = Math.min(a.maxEnergy, a.energy + a.energyRegen * dt);
@@ -1471,6 +1554,11 @@ function step(b, dt) {
1471
  a.casting = null;
1472
  continue;
1473
  }
 
 
 
 
 
1474
  if (a.casting) {
1475
  a.casting.left -= dt;
1476
  if (a.casting.left <= 0) {
@@ -1496,6 +1584,7 @@ function step(b, dt) {
1496
  }
1497
  }
1498
  resolveOverlaps(b);
 
1499
  const playerAlive = b.actors.some((a) => a.alive && a.team === "player");
1500
  const enemyAlive = b.actors.some((a) => a.alive && a.team === "enemy");
1501
  if (!playerAlive || !enemyAlive) {
@@ -1520,6 +1609,7 @@ export {
1520
  isSupport,
1521
  makeTeamBattle,
1522
  runToEnd,
 
1523
  skillById,
1524
  step,
1525
  val
 
791
  team,
792
  name: unit.name || id,
793
  profession: unit.profession || null,
794
+ // control: 'ai' (autonomous), 'player' (driven by b.input via setInput) or
795
+ // 'dummy' (passive target — takes damage, never acts). Sandboxes use the
796
+ // latter two so the Classes/Enemies hero fights real engine dummies.
797
+ control: unit.control || "ai",
798
  role: tpl.role,
799
  rank: unit.rank ?? 12,
800
  armor: tpl.armor ?? 0,
 
827
  kd: 0
828
  };
829
  }
830
+ function makeTeamBattle({ seed = 1, players = [], enemies = [], sandbox = false, respawnDummies = 0, freeCast = false } = {}) {
831
  const actors = [];
832
  players.filter(Boolean).slice(0, 5).forEach((u, i) => actors.push(makeActor(u, "player", `P${i}`, i)));
833
  enemies.filter(Boolean).slice(0, 5).forEach((u, i) => actors.push(makeActor(u, "enemy", `E${i}`, i)));
834
+ return { t: 0, rng: makeRng(seed), actors, projectiles: [], log: [], over: false, winner: null, sandbox, respawnDummies, freeCast, input: {} };
835
+ }
836
+ function setInput(b, id, cmd) {
837
+ if (!b.input) b.input = {};
838
+ b.input[id] = { ...b.input[id] || {}, ...cmd };
839
  }
840
  var ADJACENT_GW = 140;
841
  var BODY_RADIUS = { melee: 35, ranged: 32 };
 
979
  if (!a.alive) return;
980
  a.alive = false;
981
  a.hp = 0;
982
+ a.deadAt = b.t;
983
  log(b, "death", a);
984
  if (hasCond(a, "disease")) for (const x of adjacentTo(b, a)) applyCondition(b, x, "disease", 10);
985
  }
 
1312
  if (s.target === "other_ally") return mostWoundedAlly(b, a, false);
1313
  return foe;
1314
  }
1315
+ function usable(b, a, s, tgt, foe, free = false) {
1316
  if (!tgt) return false;
1317
+ if (free) return true;
1318
  if (b.t < (a.recharge[s.name] || 0)) return false;
1319
  if (s.cost?.energy && a.energy < s.cost.energy) return false;
1320
  if (s.cost?.adrenaline && a.adrenaline < s.cost.adrenaline) return false;
 
1451
  }
1452
  }
1453
  var isImmovable = (b, a) => !!a.casting || isKd(b, a);
1454
+ function stepPlayer(b, a, foe, dt) {
1455
+ const cmd = b.input && b.input[a.id] || {};
1456
+ const mx = cmd.moveX || 0, my = cmd.moveY || 0;
1457
+ if (mx || my) {
1458
+ const len = Math.hypot(mx, my) || 1;
1459
+ const speed = a.moveSpeed * moveSpeedMult(b, a);
1460
+ a.x = clampField(a.x + mx / len * speed * dt, a.radius, FIELD.w);
1461
+ a.y = clampField(a.y + my / len * speed * dt, a.radius, FIELD.h);
1462
+ a.moving = true;
1463
+ a.faceX = mx < 0 ? -1 : mx > 0 ? 1 : a.faceX;
1464
+ a.faceY = my < 0 ? -1 : my > 0 ? 1 : a.faceY;
1465
+ a.facing = a.faceX;
1466
+ }
1467
+ if (a.casting) {
1468
+ a.casting.left -= dt;
1469
+ if (a.casting.left <= 0) {
1470
+ const { skill, target } = a.casting;
1471
+ a.casting = null;
1472
+ performSkill(b, a, target?.alive ? target : foe, skill);
1473
+ }
1474
+ return;
1475
+ }
1476
+ const action = cmd.action;
1477
+ if (!action) return;
1478
+ const free = !!b.freeCast;
1479
+ if (free) {
1480
+ a.energy = a.maxEnergy;
1481
+ a.adrenaline = 25;
1482
+ }
1483
+ const clear = () => {
1484
+ if (b.input) b.input[a.id] = { ...cmd, action: null };
1485
+ };
1486
+ if (action === "basic") {
1487
+ if (!free && a.role !== "ranged" && edgeGap(a, foe) > reachOf(a)) {
1488
+ clear();
1489
+ return;
1490
+ }
1491
+ if (!free && a.attackTimer > 0) return;
1492
+ fireOnAction(b, a);
1493
+ strike(b, a, foe, null);
1494
+ clear();
1495
+ return;
1496
+ }
1497
+ const s = a.bar.find((x) => x.id === action);
1498
+ if (!s) {
1499
+ clear();
1500
+ return;
1501
+ }
1502
+ const tgt = skillTarget(b, a, s, foe);
1503
+ if (!usable(b, a, s, tgt, foe, free)) return;
1504
+ const cast = (s.cast || 0) * (hasCond(a, "dazed") ? 2 : 1);
1505
+ if (cast <= 0) performSkill(b, a, tgt, s);
1506
+ else {
1507
+ applyActivationPenalty(b, a, s, cast);
1508
+ a.casting = { skill: s, target: tgt, left: cast };
1509
+ }
1510
+ clear();
1511
+ }
1512
+ function reviveDummy(b, a) {
1513
+ a.alive = true;
1514
+ a.hp = a.maxHp = a.baseMaxHp;
1515
+ a.energy = a.maxEnergy;
1516
+ a.adrenaline = 0;
1517
+ a.conds = [];
1518
+ a.marks = {};
1519
+ a.mods = [];
1520
+ a.casting = null;
1521
+ a.kd = 0;
1522
+ a.deadAt = null;
1523
+ }
1524
  function step(b, dt) {
1525
  if (b.over) return;
1526
  b.t += dt;
1527
+ if (b.sandbox && b.respawnDummies) {
1528
+ for (const a of b.actors) if (!a.alive && a.control === "dummy" && a.deadAt != null && b.t - a.deadAt >= b.respawnDummies) reviveDummy(b, a);
1529
+ }
1530
  for (const a of b.actors) {
1531
  if (!a.alive) continue;
1532
  a.energy = Math.min(a.maxEnergy, a.energy + a.energyRegen * dt);
 
1554
  a.casting = null;
1555
  continue;
1556
  }
1557
+ if (a.control === "dummy") continue;
1558
+ if (a.control === "player") {
1559
+ stepPlayer(b, a, enemy, dt);
1560
+ continue;
1561
+ }
1562
  if (a.casting) {
1563
  a.casting.left -= dt;
1564
  if (a.casting.left <= 0) {
 
1584
  }
1585
  }
1586
  resolveOverlaps(b);
1587
+ if (b.sandbox) return;
1588
  const playerAlive = b.actors.some((a) => a.alive && a.team === "player");
1589
  const enemyAlive = b.actors.some((a) => a.alive && a.team === "enemy");
1590
  if (!playerAlive || !enemyAlive) {
 
1609
  isSupport,
1610
  makeTeamBattle,
1611
  runToEnd,
1612
+ setInput,
1613
  skillById,
1614
  step,
1615
  val
web/gw/icons/condition-bleeding.jpg ADDED
web/gw/icons/condition-blind.jpg ADDED
web/gw/icons/condition-burning.jpg ADDED
web/gw/icons/condition-cracked-armor.jpg ADDED
web/gw/icons/condition-crippled.jpg ADDED
web/gw/icons/condition-dazed.jpg ADDED
web/gw/icons/condition-deep-wound.jpg ADDED
web/gw/icons/condition-disease.jpg ADDED
web/gw/icons/condition-poison.jpg ADDED
web/gw/icons/condition-weakness.jpg ADDED
web/gw/skills/1.jpg ADDED
web/gw/skills/101.jpg ADDED
web/gw/skills/1024.jpg ADDED
web/gw/skills/106.jpg ADDED
web/gw/skills/109.jpg ADDED
web/gw/skills/1114.jpg ADDED
web/gw/skills/115.jpg ADDED
web/gw/skills/118.jpg ADDED
web/gw/skills/121.jpg ADDED
web/gw/skills/135.jpg ADDED
web/gw/skills/1466.jpg ADDED
web/gw/skills/1470.jpg ADDED
web/gw/skills/150.jpg ADDED
web/gw/skills/153.jpg ADDED
web/gw/skills/1727.jpg ADDED
web/gw/skills/240.jpg ADDED
web/gw/skills/245.jpg ADDED
web/gw/skills/252.jpg ADDED
web/gw/skills/281.jpg ADDED
web/gw/skills/282.jpg ADDED
web/gw/skills/283.jpg ADDED
web/gw/skills/307.jpg ADDED
web/gw/skills/312.jpg ADDED
web/gw/skills/331.jpg ADDED
web/gw/skills/332.jpg ADDED
web/gw/skills/348.jpg ADDED
web/gw/skills/352.jpg ADDED
web/gw/skills/372.jpg ADDED
web/gw/skills/382.jpg ADDED
web/gw/skills/384.jpg ADDED
web/gw/skills/385.jpg ADDED
web/gw/skills/391.jpg ADDED