]> git.localhorst.tv Git - l2e.git/blob - test-data/test.l2s
split headers off of ikaris, items, and spells
[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                         { 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 Sprite handCursor {
339         image: :"cursor-hand.png",
340         size: <32,32>
341 }
342
343 Font normalFont {
344         sprite: Sprite {
345                 image: :"normal-font.png",
346                 size: <16,16>
347         },
348         rowoffset: -2
349 }
350
351 Font disabledFont {
352         sprite: Sprite {
353                 image: :"disabled-font.png",
354                 size: <16,16>
355         },
356         rowoffset: -2
357 }
358
359 export BattleResources battleResources {
360         swapCursor: Sprite {
361                 image: :"swap-cursor.png",
362                 size: <32,32>
363         },
364         attackIcons: Sprite {
365                 image: :"attack-type-icons.png",
366                 size: <32,32>
367         },
368         attackChoiceIcons: Sprite {
369                 image: :"attack-choice-icons.png",
370                 size: <16,16>
371         },
372         moveIcons: Sprite {
373                 image: :"move-icons.png",
374                 size: <32,32>
375         },
376         
377         titleFrame: Frame {
378                 image: :"title-frame.png",
379                 border: <16,16>
380         },
381         titleFont: Font {
382                 sprite: Sprite {
383                         image: :"large-font.png",
384                         size: <16,32>
385                 },
386                 rowoffset: -2
387         },
388         
389         numberAnimationPrototype: ComplexAnimation {
390                 frametime: frameTime,
391                 repeat: false,
392                 frames: [
393                         { column: 0, row: 0, disposition: <  0,  0> },
394                         { column: 0, row: 0, disposition: <  0,-26> },
395                         { column: 0, row: 0, disposition: <  0,-42> },
396                         { column: 0, row: 0, disposition: <  0,-48> },
397                         { column: 0, row: 0, disposition: <  0,-42> },
398                         { column: 0, row: 0, disposition: <  0,-26> },
399                         { column: 0, row: 0, disposition: <  0,  0> },
400                         { column: 0, row: 0, disposition: <  0,-12> },
401                         { column: 0, row: 0, disposition: <  0,-20> },
402                         { column: 0, row: 0, disposition: <  0,-24> },
403                         { column: 0, row: 0, disposition: <  0,-20> },
404                         { column: 0, row: 0, disposition: <  0,-12> },
405                         { column: 0, row: 0, disposition: <  0,  0> },
406                         { column: 0, row: 0, disposition: <  0, -6> },
407                         { column: 0, row: 0, disposition: <  0,-10> },
408                         { column: 0, row: 0, disposition: <  0,-12> },
409                         { column: 0, row: 0, disposition: <  0,-10> },
410                         { column: 0, row: 0, disposition: <  0, -6> },
411                         { column: 0, row: 0, disposition: <  0,  0> },
412                         { column: 0, row: 0, disposition: <  0,  0> },
413                         { column: 0, row: 0, disposition: <  0,  0> },
414                         { column: 0, row: 0, disposition: <  0,  0> },
415                         { column: 0, row: 0, disposition: <  0,  0> },
416                         { column: 0, row: 0, disposition: <  0,  0> },
417                         { column: 0, row: 0, disposition: <  0,  0> },
418                         { column: 0, row: 0, disposition: <  0,  0> },
419                         { column: 0, row: 0, disposition: <  0,  0> },
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,-36> },
426                         { column: 0, row: 0, disposition: <  0,-32> },
427                         { column: 0, row: 0, disposition: <  0,-18> }
428                 ]
429         },
430         bigNumberSprite: Sprite {
431                 image: :"big-numbers.png",
432                 size: <16,32>
433         },
434         greenNumberSprite: Sprite {
435                 image: :"big-green-numbers.png",
436                 size: <16,32>
437         },
438         
439         heroTagLabels: Sprite {
440                 image: :"hero-tag-sprites.png",
441                 size: <32,16>
442         },
443         levelLabelCol: 0,
444         levelLabelRow: 0,
445         healthLabelCol: 0,
446         healthLabelRow: 1,
447         manaLabelCol: 0,
448         manaLabelRow: 2,
449         moveLabelCol: 0,
450         moveLabelRow: 3,
451         ikariLabelCol: 0,
452         ikariLabelRow: 4,
453         heroTagFont: Font {
454                 sprite: Sprite {
455                         image: :"numbers.png",
456                         size: <16,16>
457                 },
458                 rowoffset: -3
459         },
460         
461         activeHeroTagFrame: Frame {
462                 image: :"tag-frames.png",
463                 border: <16,16>
464         },
465         heroTagFrame: Frame {
466                 image: :"tag-frames.png",
467                 border: <16,16>,
468                 offset: < 0,33>
469         },
470         
471         smallHeroTagFrame: Frame {
472                 image: :"small-tag-frame.png",
473                 border: <8,16>
474         },
475         lastSmallHeroTagFrame: Frame {
476                 image: :"small-tag-frame.png",
477                 border: <8,16>,
478                 offset: <0,33>
479         },
480         heroesBgColor: (24, 40, 49),
481         
482         healthGauge: Gauge {
483                 image: :"gauges.png",
484                 full:  <0,16>,
485                 empty: <0, 0>,
486                 height: 16,
487                 start:   6,
488                 repeat:  1,
489                 end:     6
490         },
491         manaGauge: Gauge {
492                 image: :"gauges.png",
493                 full:  <0,32>,
494                 empty: <0, 0>,
495                 height: 16,
496                 start:   6,
497                 repeat:  1,
498                 end:     6
499         },
500         ikariGauge: Gauge {
501                 image: :"gauges.png",
502                 full:  <0,48>,
503                 empty: <0, 0>,
504                 height: 16,
505                 start:   6,
506                 repeat:  1,
507                 end:     6
508         },
509         
510         selectFrame: Frame {
511                 image: :"select-frame.png",
512                 border: <16,16>
513         },
514         normalFont: normalFont,
515         disabledFont: disabledFont,
516         menuCursor: Sprite {
517                 image: :"cursor-hand.png",
518                 size: <32,32>
519         },
520         
521         weaponTargetCursor: Sprite {
522                 image: :"targeting-icons.png",
523                 size: <32,32>
524         },
525         magicTargetCursor: Sprite {
526                 image: :"targeting-icons.png",
527                 size: <32,32>,
528                 offset: <0,32>
529         },
530         itemTargetCursor: Sprite {
531                 image: :"targeting-icons.png",
532                 size: <32,32>,
533                 offset: <0,64>
534         },
535         
536         weaponMenuIcon: swordIcon,
537         armorMenuIcon: armorIcon,
538         shieldMenuIcon: shieldIcon,
539         helmetMenuIcon: helmetIcon,
540         ringMenuIcon: ringIcon,
541         jewelMenuIcon: jewelIcon,
542         
543         spellMenuHeadline: "Please choose a spell.",
544         spellMenuProperties: MenuProperties {
545                 font: normalFont,
546                 disabledFont: disabledFont,
547                 cursor: handCursor,
548                 charsPerEntry: 9,
549                 rows: 6,
550                 rowGap: 8,
551                 iconSpace: 0,
552                 cols: 2,
553                 colGap: 32,
554                 charsPerNumber: 2,
555                 delimiter: ":"
556         },
557         
558         itemMenuHeadline: "Please choose an item.",
559         itemMenuProperties: MenuProperties {
560                 font: normalFont,
561                 disabledFont: disabledFont,
562                 cursor: handCursor,
563                 charsPerEntry: 15,
564                 rows: 6,
565                 rowGap: 8,
566                 iconSpace: 16,
567                 cols: 1,
568                 colGap: 32,
569                 charsPerNumber: 2,
570                 delimiter: ":"
571         },
572         
573         ikariMenuHeadline: "Please choose equipment.",
574         ikariMenuProperties: MenuProperties {
575                 font: normalFont,
576                 disabledFont: disabledFont,
577                 cursor: handCursor,
578                 charsPerEntry: 12,
579                 rows: 6,
580                 rowGap: 8,
581                 iconSpace: 16,
582                 cols: 1,
583                 colGap: 32,
584                 charsPerAdditionalText: 12,
585                 additionalTextGap: 16
586         },
587         noEquipmentText: "No equip",
588         
589         escapeText: "Escapes."
590 }