]> git.localhorst.tv Git - l2e.git/blob - test-data/test.l2s
refactored battle resources to better compatibility with loader
[l2e.git] / test-data / test.l2s
1 include "ikaris.l2s"
2 include "items.l2s"
3 include "spells.l2s"
4
5 Number frameTime 33
6 Number twoFramesTime 66
7 Number fourFramesTime 132
8 Number fiveFramesTime 165 // darn, i really need to implement expressions
9
10 export PartyLayout monstersLayout {
11         positions: [
12                 < 88, 88>,
13                 <128, 88>,
14                 <168, 88>,
15                 <208, 88>
16         ]
17 }
18 export PartyLayout heroesLayout {
19         positions: [
20                 < 48,136>,
21                 <128,136>,
22                 < 80,152>,
23                 <160,152>
24         ]
25 }
26
27 Sprite lizardSprite {
28         image: :"monster.png",
29         size: <64,64>
30 }
31
32 export Monster lizard {
33         name: "Lizard",
34         sprite: lizardSprite,
35         level: 1,
36         maxHealth: 8,
37         health: 8,
38         stats: Stats {
39                 atp: 14,
40                 dfp:  6,
41                 str:  6,
42                 agl:  6,
43                 int:  6,
44                 gut:  6,
45                 mgr:  6
46         },
47         attackAnimation: ComplexAnimation {
48                 sprite: lizardSprite,
49                 frametime: fourFramesTime,
50                 repeat: false,
51                 frames: [
52                         { column: 0, row: 1, disposition: < 0, 16> },
53                         { column: 0, row: 0, disposition: < 0, 16> },
54                         { column: 0, row: 1, disposition: < 0, 16> },
55                         { column: 0, row: 0, disposition: < 0, 16> }
56                 ]
57         },
58         meleeAnimation: SimpleAnimation {
59                 sprite: Sprite {
60                         image: :"attack-monster.png",
61                         size: <96,64>
62                 },
63                 frametime: frameTime,
64                 framecount: 14
65         }
66 }
67
68 Sprite maximSprite {
69         image: :"maxim.png",
70         size: <64,64>
71 }
72 export Hero maxim {
73         name: "Maxim",
74         level: 1,
75         sprite: maximSprite,
76         maxHealth: 33,
77         health: 33,
78         maxMana: 20,
79         mana: 20,
80         ip: 0,
81         stats: Stats {
82                 atp:  28,
83                 dfp:  22,
84                 str:  28,
85                 agl:  17,
86                 int:  14,
87                 gut: 100,
88                 mgr:  10
89         },
90         attackAnimation: ComplexAnimation {
91                 sprite: maximSprite,
92                 frametime: frameTime,
93                 repeat: false,
94                 frames: [
95                         { column: 1, row: 0, disposition: < 0, 0> },
96                         { column: 1, row: 0, disposition: < 0, 0> },
97                         { column: 1, row: 0, disposition: < 0, 0> },
98                         { column: 1, row: 0, disposition: < 0, 0> },
99                         { column: 1, row: 0, disposition: < 0, 0> },
100                         { column: 1, row: 0, disposition: < 0, 0> },
101                         { column: 1, row: 0, disposition: < 0, 0> },
102                         { column: 1, row: 0, disposition: < 4,-1> },
103                         { column: 1, row: 0, disposition: < 4,-1> },
104                         { column: 2, row: 0, disposition: < 4,-2> },
105                         { column: 2, row: 0, disposition: < 4,-2> },
106                         { column: 2, row: 0, disposition: < 6,-2> },
107                         { column: 2, row: 0, disposition: < 6,-2> },
108                         { column: 2, row: 1, disposition: < 6,-1> },
109                         { column: 2, row: 1, disposition: < 3,-1> },
110                         { column: 2, row: 1, disposition: < 3,-1> },
111                         { column: 2, row: 1, disposition: < 0, 0> },
112                         { column: 2, row: 2, disposition: < 0, 0> },
113                         { column: 2, row: 2, disposition: < 0, 0> },
114                         { column: 2, row: 2, disposition: < 2, 0> },
115                         { column: 1, row: 0, disposition: < 0, 0> },
116                         { column: 1, row: 0, disposition: < 0, 0> },
117                         { column: 1, row: 0, disposition: < 0, 0> },
118                         { column: 1, row: 0, disposition: < 0, 0> },
119                         { column: 1, row: 0, disposition: < 0, 0> },
120                         { column: 1, row: 0, disposition: < 0, 0> },
121                         { column: 1, row: 0, disposition: < 0, 0> }
122                 ]
123         },
124         spellAnimation: ComplexAnimation {
125                 sprite: maximSprite,
126                 frametime: fiveFramesTime,
127                 repeat: false,
128                 frames: [
129                         { column: 3, row: 0, disposition: < 0, 0> },
130                         { column: 3, row: 0, disposition: < 0, 0> },
131                         { column: 3, row: 1, disposition: < 0, 0> }
132                 ]
133         },
134         meleeAnimation: SimpleAnimation {
135                 sprite: Sprite {
136                         image: :"melee-maxim.png",
137                         size: <96,96>
138                 },
139                 frametime: twoFramesTime,
140                 framecount: 4
141         }
142 }
143
144 Sprite selanSprite {
145         image: :"selan.png",
146         size: <64,64>
147 }
148 export Hero selan {
149         name: "Selan",
150         level: 1,
151         sprite: selanSprite,
152         maxHealth: 28,
153         health: 28,
154         maxMana: 23,
155         mana: 23,
156         ip: 0,
157         stats: Stats {
158                 atp: 23,
159                 dfp: 21,
160                 str: 23,
161                 agl: 19,
162                 int: 22,
163                 gut: 80,
164                 mgr: 13
165         },
166         attackAnimation: ComplexAnimation {
167                 sprite: selanSprite,
168                 frametime: frameTime,
169                 repeat: false,
170                 frames: [
171                         { column: 1, row: 0, disposition: < 4, 0> },
172                         { column: 1, row: 0, disposition: < 4, 0> },
173                         { column: 1, row: 0, disposition: < 8, 2> },
174                         { column: 2, row: 0, disposition: <10, 4> },
175                         { column: 2, row: 0, disposition: <14, 4> },
176                         { column: 2, row: 0, disposition: <12, 2> },
177                         { column: 2, row: 0, disposition: <12, 2> },
178                         { column: 2, row: 0, disposition: <12, 2> },
179                         { column: 2, row: 1, disposition: <14, 2> },
180                         { column: 2, row: 1, disposition: <14, 2> },
181                         { column: 2, row: 1, disposition: < 2, 0> },
182                         { column: 2, row: 2, disposition: <-2,-4> },
183                         { column: 2, row: 2, disposition: <-8,-8> },
184                         { column: 2, row: 2, disposition: < 0, 0> }
185                 ]
186         },
187         spellAnimation: ComplexAnimation {
188                 sprite: selanSprite,
189                 frametime: frameTime,
190                 repeat: false,
191                 frames: [
192                         { column: 3, row: 0, disposition: < 0, 0> },
193                         { column: 3, row: 0, disposition: < 0, 0> },
194                         { column: 3, row: 0, disposition: < 0, 0> },
195                         { column: 3, row: 1, disposition: < 0, 0> },
196                         { column: 3, row: 1, disposition: < 0, 0> },
197                         { column: 3, row: 2, disposition: < 0, 0> },
198                         { column: 3, row: 2, disposition: < 0, 0> },
199                         { column: 3, row: 2, disposition: < 0, 0> },
200                         { column: 3, row: 3, disposition: < 0, 0> },
201                         { column: 3, row: 3, disposition: < 0, 0> }
202                 ]
203         },
204         meleeAnimation: SimpleAnimation {
205                 sprite: Sprite {
206                         image: :"melee-selan.png",
207                         size: <96,96>
208                 },
209                 frametime: twoFramesTime,
210                 framecount: 4
211         }
212 }
213
214 Sprite guySprite {
215         image: :"guy.png",
216         size: <64,64>
217 }
218 export Hero guy {
219         name: "Guy",
220         level: 1,
221         sprite: guySprite,
222         maxHealth: 38,
223         health: 38,
224         maxMana: 0,
225         mana: 0,
226         ip: 0,
227         stats: Stats {
228                 atp: 38,
229                 dfp: 25,
230                 str: 38,
231                 agl: 13,
232                 int:  8,
233                 gut: 90,
234                 mgr:  8
235         },
236         attackAnimation: ComplexAnimation {
237                 sprite: guySprite,
238                 frametime: frameTime,
239                 repeat: false,
240                 frames: [
241                         { column: 1, row: 0, disposition: <-4, 0> },
242                         { column: 1, row: 0, disposition: <-4, 0> },
243                         { column: 1, row: 0, disposition: <-8, 0> },
244                         { column: 1, row: 0, disposition: <-8, 0> },
245                         { column: 2, row: 0, disposition: <-8, 0> },
246                         { column: 2, row: 0, disposition: <-8, 0> },
247                         { column: 2, row: 0, disposition: <-4, 0> },
248                         { column: 2, row: 0, disposition: < 0, 0> },
249                         { column: 2, row: 0, disposition: < 0, 0> },
250                         { column: 2, row: 1, disposition: < 0, 0> },
251                         { column: 2, row: 1, disposition: < 4, 0> },
252                         { column: 2, row: 1, disposition: <10, 0> },
253                         { column: 2, row: 2, disposition: <10, 0> },
254                         { column: 2, row: 2, disposition: < 0, 0> }
255                 ]
256         },
257         meleeAnimation: SimpleAnimation {
258                 sprite: Sprite {
259                         image: :"melee-guy.png",
260                         size: <96,96>
261                 },
262                 frametime: fourFramesTime,
263                 framecount: 4
264         }
265 }
266
267 Sprite dekarSprite {
268         image: :"dekar.png",
269         size: <64,64>
270 }
271 export Hero dekar {
272         name: "Dekar",
273         level: 1,
274         sprite: dekarSprite,
275         maxHealth: 38,
276         health: 38,
277         maxMana: 0,
278         mana: 0,
279         ip: 0,
280         stats: Stats {
281                 atp:  46,
282                 dfp:  29,
283                 str:  46,
284                 agl:  13,
285                 int:   7,
286                 gut: 100,
287                 mgr:   5
288         },
289         attackAnimation: ComplexAnimation {
290                 sprite: dekarSprite,
291                 frametime: frameTime,
292                 repeat: false,
293                 frames: [
294                         { column: 1, row: 0, disposition: < 4, 0> },
295                         { column: 1, row: 0, disposition: < 8, 2> },
296                         { column: 2, row: 0, disposition: <12, 4> },
297                         { column: 2, row: 0, disposition: <16, 4> },
298                         { column: 2, row: 0, disposition: <10, 2> },
299                         { column: 2, row: 0, disposition: <10, 2> },
300                         { column: 2, row: 0, disposition: <10, 2> },
301                         { column: 2, row: 0, disposition: <10, 2> },
302                         { column: 2, row: 1, disposition: < 6, 2> },
303                         { column: 2, row: 1, disposition: < 0, 0> },
304                         { column: 2, row: 2, disposition: <-2, 0> },
305                         { column: 2, row: 2, disposition: < 0, 0> },
306                         { column: 2, row: 2, disposition: < 0, 0> },
307                         { column: 2, row: 2, disposition: < 0, 0> }
308                 ]
309         },
310         spellAnimation: ComplexAnimation {
311                 sprite: dekarSprite,
312                 frametime: twoFramesTime,
313                 repeat: false,
314                 frames: [
315                         { column: 3, row: 0, disposition: < 0, 0> },
316                         { column: 3, row: 0, disposition: < 0, 0> },
317                         { column: 3, row: 0, disposition: < 0, 0> },
318                         { column: 3, row: 0, disposition: < 0, 0> },
319                         { column: 3, row: 0, disposition: < 0, 0> },
320                         { column: 3, row: 0, disposition: < 0, 0> },
321                         { column: 3, row: 1, disposition: < 0, 0> },
322                         { column: 3, row: 1, disposition: < 0, 0> },
323                         { column: 3, row: 2, disposition: < 0, 0> },
324                         { column: 3, row: 2, disposition: < 0, 0> },
325                         { column: 3, row: 2, disposition: < 0, 0> }
326                 ]
327         },
328         meleeAnimation: SimpleAnimation {
329                 sprite: Sprite {
330                         image: :"melee-dekar.png",
331                         size: <96,96>
332                 },
333                 frametime: twoFramesTime,
334                 framecount: 4
335         }
336 }
337
338 export Sprite swapCursor {
339         image: :"swap-cursor.png",
340         size: <32,32>
341 }
342 export Sprite attackIcons {
343         image: :"attack-type-icons.png",
344         size: <32,32>
345 }
346 export Sprite attackChoiceIcons {
347         image: :"attack-choice-icons.png",
348         size: <16,16>
349 }
350 export Sprite moveIcons {
351         image: :"move-icons.png",
352         size: <32,32>
353 }
354
355 export Frame titleFrame {
356         image: :"title-frame.png",
357         border: <16,16>
358 }
359
360 export Font largeFont {
361         sprite: Sprite {
362                 image: :"large-font.png",
363                 size: <16,32>
364         },
365         rowoffset: -2
366 }
367
368 export ComplexAnimation numberAnimationPrototype {
369         frametime: frameTime,
370         repeat: false,
371         frames: [
372                 { column: 0, row: 0, disposition: <  0,  0> },
373                 { column: 0, row: 0, disposition: <  0,-26> },
374                 { column: 0, row: 0, disposition: <  0,-42> },
375                 { column: 0, row: 0, disposition: <  0,-48> },
376                 { column: 0, row: 0, disposition: <  0,-42> },
377                 { column: 0, row: 0, disposition: <  0,-26> },
378                 { column: 0, row: 0, disposition: <  0,  0> },
379                 { column: 0, row: 0, disposition: <  0,-12> },
380                 { column: 0, row: 0, disposition: <  0,-20> },
381                 { column: 0, row: 0, disposition: <  0,-24> },
382                 { column: 0, row: 0, disposition: <  0,-20> },
383                 { column: 0, row: 0, disposition: <  0,-12> },
384                 { column: 0, row: 0, disposition: <  0,  0> },
385                 { column: 0, row: 0, disposition: <  0, -6> },
386                 { column: 0, row: 0, disposition: <  0,-10> },
387                 { column: 0, row: 0, disposition: <  0,-12> },
388                 { column: 0, row: 0, disposition: <  0,-10> },
389                 { column: 0, row: 0, disposition: <  0, -6> },
390                 { column: 0, row: 0, disposition: <  0,  0> },
391                 { column: 0, row: 0, disposition: <  0,  0> },
392                 { column: 0, row: 0, disposition: <  0,  0> },
393                 { column: 0, row: 0, disposition: <  0,  0> },
394                 { column: 0, row: 0, disposition: <  0,  0> },
395                 { column: 0, row: 0, disposition: <  0,  0> },
396                 { column: 0, row: 0, disposition: <  0,  0> },
397                 { column: 0, row: 0, disposition: <  0,  0> },
398                 { column: 0, row: 0, disposition: <  0,  0> },
399                 { column: 0, row: 0, disposition: <  0,  0> },
400                 { column: 0, row: 0, disposition: <  0,  0> },
401                 { column: 0, row: 0, disposition: <  0,  0> },
402                 { column: 0, row: 0, disposition: <  0,  0> },
403                 { column: 0, row: 0, disposition: <  0,  0> },
404                 { column: 0, row: 0, disposition: <  0,-36> },
405                 { column: 0, row: 0, disposition: <  0,-32> },
406                 { column: 0, row: 0, disposition: <  0,-18> }
407         ]
408 }
409 export Sprite bigNumbers {
410         image: :"big-numbers.png",
411         size: <16,32>
412 }
413 export Sprite bigGreenNumbers {
414         image: :"big-green-numbers.png",
415         size: <16,32>
416 }
417
418 export Sprite heroTagLabels {
419         image: :"hero-tag-sprites.png",
420         size: <32,16>
421 }
422 export Font heroTagFont {
423         sprite: Sprite {
424                 image: :"numbers.png",
425                 size: <16,16>
426         },
427         rowoffset: -3
428 }
429
430 export Frame activeHeroTagFrame {
431         image: :"tag-frames.png",
432         border: <16,16>
433 }
434 export Frame heroTagFrame {
435         image: :"tag-frames.png",
436         border: <16,16>,
437         offset: < 0,33>
438 }
439
440 export Frame smallHeroTagFrame {
441         image: :"small-tag-frame.png",
442         border: <8,16>
443 }
444 export Frame lastSmallHeroTagFrame {
445         image: :"small-tag-frame.png",
446         border: <8,16>,
447         offset: <0,33>
448 }
449 export Color heroesBgColor (24, 40, 49)
450
451 export Gauge healthGauge {
452         image: :"gauges.png",
453         full:  <0,16>,
454         empty: <0, 0>,
455         height: 16,
456         start:   6,
457         repeat:  1,
458         end:     6
459 }
460 export Gauge manaGauge {
461         image: :"gauges.png",
462         full:  <0,32>,
463         empty: <0, 0>,
464         height: 16,
465         start:   6,
466         repeat:  1,
467         end:     6
468 }
469 export Gauge ikariGauge {
470         image: :"gauges.png",
471         full:  <0,48>,
472         empty: <0, 0>,
473         height: 16,
474         start:   6,
475         repeat:  1,
476         end:     6
477 }
478
479 export Frame selectFrame {
480         image: :"select-frame.png",
481         border: <16,16>
482 }
483 export Font normalFont {
484         sprite: Sprite {
485                 image: :"normal-font.png",
486                 size: <16,16>
487         },
488         rowoffset: -2
489 }
490 export Font disabledFont {
491         sprite: Sprite {
492                 image: :"disabled-font.png",
493                 size: <16,16>
494         },
495         rowoffset: -2
496 }
497 export Sprite handCursor {
498         image: :"cursor-hand.png",
499         size: <32,32>
500 }
501
502 export Sprite weaponTargetCursor {
503         image: :"targeting-icons.png",
504         size: <32,32>
505 }
506 export Sprite magicTargetCursor {
507         image: :"targeting-icons.png",
508         size: <32,32>,
509         offset: <0,32>
510 }
511 export Sprite itemTargetCursor {
512         image: :"targeting-icons.png",
513         size: <32,32>,
514         offset: <0,64>
515 }
516
517 export String spellMenuHeadline "Please choose a spell."
518 export MenuProperties spellMenuPrototype {
519         font: normalFont,
520         disabledFont: disabledFont,
521         cursor: handCursor,
522         charsPerEntry: 9,
523         rows: 6,
524         rowGap: 8,
525         iconSpace: 0,
526         cols: 2,
527         colGap: 32,
528         charsPerNumber: 2,
529         delimiter: ":"
530 }
531
532 export String itemMenuHeadline "Please choose an item."
533 export MenuProperties itemMenuPrototype {
534         font: normalFont,
535         disabledFont: disabledFont,
536         cursor: handCursor,
537         charsPerEntry: 15,
538         rows: 6,
539         rowGap: 8,
540         iconSpace: 16,
541         cols: 1,
542         colGap: 32,
543         charsPerNumber: 2,
544         delimiter: ":"
545 }
546
547 export String ikariMenuHeadline "Please choose equipment."
548 export MenuProperties ikariMenuPrototype {
549         font: normalFont,
550         disabledFont: disabledFont,
551         cursor: handCursor,
552         charsPerEntry: 12,
553         rows: 6,
554         rowGap: 8,
555         iconSpace: 16,
556         cols: 1,
557         colGap: 32,
558         charsPerAdditionalText: 12,
559         additionalTextGap: 16
560 }
561 export String noEquipmentText "No equip"
562
563 export String escapeText "Escapes."