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