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