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