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