]> git.localhorst.tv Git - l2e.git/blob - test-data/test.l2s
new language, new compiler
[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                 <216,144>
25         ]
26 }
27
28 Sprite lizardSprite {
29         image: :"monster.png",
30         size: <64,64>
31 }
32
33 export Monster lizard {
34         name: "Lizard",
35         sprite: lizardSprite,
36         level: 1,
37         maxHealth: 8,
38         health: 8,
39         stats: Stats {
40                 atp: 14,
41                 dfp:  6,
42                 str:  6,
43                 agl:  6,
44                 int:  6,
45                 gut:  6,
46                 mgr:  6
47         },
48         expReward: 8,
49         goldReward: 5,
50         attackAnimation: ComplexAnimation {
51                 sprite: lizardSprite,
52                 frametime: fourFramesTime,
53                 repeat: false,
54                 frames:
55                 [ ComplexAnimationFrame
56                         { column: 0, row: 1, disposition: < 0, 16> },
57                         { column: 0, row: 0, disposition: < 0, 16> },
58                         { column: 0, row: 1, disposition: < 0, 16> },
59                         { column: 0, row: 0, disposition: < 0, 16> }
60                 ]
61         },
62         meleeAnimation: SimpleAnimation {
63                 sprite: Sprite {
64                         image: :"attack-monster.png",
65                         size: <96,64>
66                 },
67                 frametime: frameTime,
68                 framecount: 14
69         }
70 }
71
72 Sprite maximSprite {
73         image: :"maxim.png",
74         size: <64,64>
75 }
76 export Hero maxim {
77         name: "Maxim",
78         level: 1,
79         battleSprite: maximSprite,
80         maxHealth: 33,
81         health: 33,
82         maxMana: 20,
83         mana: 20,
84         ip: 0,
85         stats: Stats {
86                 atp:  28,
87                 dfp:  22,
88                 str:  28,
89                 agl:  17,
90                 int:  14,
91                 gut: 100,
92                 mgr:  10
93         },
94         ladder: [ LevelUp
95                 // insensible test data
96                 { exp: 10, maxHP: 5, maxMP: 3, atp: 2, str: 1 }
97         ],
98         useMask: maskMaxim,
99         attackAnimation: ComplexAnimation {
100                 sprite: maximSprite,
101                 frametime: frameTime,
102                 repeat: false,
103                 frames:
104                 [ ComplexAnimationFrame
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: < 0, 0> },
110                         { column: 1, row: 0, disposition: < 0, 0> },
111                         { column: 1, row: 0, disposition: < 0, 0> },
112                         { column: 1, row: 0, disposition: < 4,-1> },
113                         { column: 1, row: 0, disposition: < 4,-1> },
114                         { column: 2, row: 0, disposition: < 4,-2> },
115                         { column: 2, row: 0, disposition: < 4,-2> },
116                         { column: 2, row: 0, disposition: < 6,-2> },
117                         { column: 2, row: 0, disposition: < 6,-2> },
118                         { column: 2, row: 1, disposition: < 6,-1> },
119                         { column: 2, row: 1, disposition: < 3,-1> },
120                         { column: 2, row: 1, disposition: < 3,-1> },
121                         { column: 2, row: 1, disposition: < 0, 0> },
122                         { column: 2, row: 2, disposition: < 0, 0> },
123                         { column: 2, row: 2, disposition: < 0, 0> },
124                         { column: 2, row: 2, disposition: < 2, 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                         { column: 1, row: 0, disposition: < 0, 0> },
130                         { column: 1, row: 0, disposition: < 0, 0> },
131                         { column: 1, row: 0, disposition: < 0, 0> }
132                 ]
133         },
134         spellAnimation: ComplexAnimation {
135                 sprite: maximSprite,
136                 frametime: fiveFramesTime,
137                 repeat: false,
138                 frames:
139                 [ ComplexAnimationFrame
140                         { column: 3, row: 0, disposition: < 0, 0> },
141                         { column: 3, row: 0, disposition: < 0, 0> },
142                         { column: 3, row: 1, disposition: < 0, 0> }
143                 ]
144         },
145         meleeAnimation: SimpleAnimation {
146                 sprite: Sprite {
147                         image: :"melee-maxim.png",
148                         size: <96,96>
149                 },
150                 frametime: twoFramesTime,
151                 framecount: 4
152         },
153         mapEntity: Entity {
154                 animation: SimpleAnimation{
155                         sprite: Sprite {
156                                 image: :"maxim-map.png",
157                                 size: <32,64>
158                         },
159                         frametime: 120,
160                         framecount: 2
161                 },
162                 spriteOffset: <0,-32>
163         }
164 }
165
166 Sprite selanSprite {
167         image: :"selan.png",
168         size: <64,64>
169 }
170 export Hero selan {
171         name: "Selan",
172         level: 1,
173         battleSprite: selanSprite,
174         maxHealth: 28,
175         health: 28,
176         maxMana: 23,
177         mana: 23,
178         ip: 0,
179         stats: Stats {
180                 atp: 23,
181                 dfp: 21,
182                 str: 23,
183                 agl: 19,
184                 int: 22,
185                 gut: 80,
186                 mgr: 13
187         },
188         useMask: maskSelan,
189         attackAnimation: ComplexAnimation {
190                 sprite: selanSprite,
191                 frametime: frameTime,
192                 repeat: false,
193                 frames:
194                 [ ComplexAnimationFrame
195                         { column: 1, row: 0, disposition: < 4, 0> },
196                         { column: 1, row: 0, disposition: < 4, 0> },
197                         { column: 1, row: 0, disposition: < 8, 2> },
198                         { column: 2, row: 0, disposition: <10, 4> },
199                         { column: 2, row: 0, disposition: <14, 4> },
200                         { column: 2, row: 0, disposition: <12, 2> },
201                         { column: 2, row: 0, disposition: <12, 2> },
202                         { column: 2, row: 0, disposition: <12, 2> },
203                         { column: 2, row: 1, disposition: <14, 2> },
204                         { column: 2, row: 1, disposition: <14, 2> },
205                         { column: 2, row: 1, disposition: < 2, 0> },
206                         { column: 2, row: 2, disposition: <-2,-4> },
207                         { column: 2, row: 2, disposition: <-8,-8> },
208                         { column: 2, row: 2, disposition: < 0, 0> }
209                 ]
210         },
211         spellAnimation: ComplexAnimation {
212                 sprite: selanSprite,
213                 frametime: frameTime,
214                 repeat: false,
215                 frames:
216                 [ ComplexAnimationFrame
217                         { column: 3, row: 0, disposition: < 0, 0> },
218                         { column: 3, row: 0, disposition: < 0, 0> },
219                         { column: 3, row: 0, disposition: < 0, 0> },
220                         { column: 3, row: 1, disposition: < 0, 0> },
221                         { column: 3, row: 1, disposition: < 0, 0> },
222                         { column: 3, row: 2, disposition: < 0, 0> },
223                         { column: 3, row: 2, disposition: < 0, 0> },
224                         { column: 3, row: 2, disposition: < 0, 0> },
225                         { column: 3, row: 3, disposition: < 0, 0> },
226                         { column: 3, row: 3, disposition: < 0, 0> }
227                 ]
228         },
229         meleeAnimation: SimpleAnimation {
230                 sprite: Sprite {
231                         image: :"melee-selan.png",
232                         size: <96,96>
233                 },
234                 frametime: twoFramesTime,
235                 framecount: 4
236         },
237         mapEntity: Entity {
238                 animation: SimpleAnimation{
239                         sprite: Sprite {
240                                 image: :"selan-map.png",
241                                 size: <32,64>
242                         },
243                         frametime: 120,
244                         framecount: 2
245                 },
246                 spriteOffset: <0,-32>
247         }
248 }
249
250 Sprite guySprite {
251         image: :"guy.png",
252         size: <64,64>
253 }
254 export Hero guy {
255         name: "Guy",
256         level: 1,
257         battleSprite: guySprite,
258         maxHealth: 38,
259         health: 38,
260         maxMana: 0,
261         mana: 0,
262         ip: 0,
263         stats: Stats {
264                 atp: 38,
265                 dfp: 25,
266                 str: 38,
267                 agl: 13,
268                 int:  8,
269                 gut: 90,
270                 mgr:  8
271         },
272         useMask: maskGuy,
273         attackAnimation: ComplexAnimation {
274                 sprite: guySprite,
275                 frametime: frameTime,
276                 repeat: false,
277                 frames:
278                 [ ComplexAnimationFrame
279                         { column: 1, row: 0, disposition: <-4, 0> },
280                         { column: 1, row: 0, disposition: <-4, 0> },
281                         { column: 1, row: 0, disposition: <-8, 0> },
282                         { column: 1, row: 0, disposition: <-8, 0> },
283                         { column: 2, row: 0, disposition: <-8, 0> },
284                         { column: 2, row: 0, disposition: <-8, 0> },
285                         { column: 2, row: 0, disposition: <-4, 0> },
286                         { column: 2, row: 0, disposition: < 0, 0> },
287                         { column: 2, row: 0, disposition: < 0, 0> },
288                         { column: 2, row: 1, disposition: < 0, 0> },
289                         { column: 2, row: 1, disposition: < 4, 0> },
290                         { column: 2, row: 1, disposition: <10, 0> },
291                         { column: 2, row: 2, disposition: <10, 0> },
292                         { column: 2, row: 2, disposition: < 0, 0> }
293                 ]
294         },
295         meleeAnimation: SimpleAnimation {
296                 sprite: Sprite {
297                         image: :"melee-guy.png",
298                         size: <96,96>
299                 },
300                 frametime: fourFramesTime,
301                 framecount: 4
302         },
303         mapEntity: Entity {
304                 animation: SimpleAnimation{
305                         sprite: Sprite {
306                                 image: :"guy-map.png",
307                                 size: <32,64>
308                         },
309                         frametime: 120,
310                         framecount: 2
311                 },
312                 spriteOffset: <0,-32>
313         }
314 }
315
316 Sprite dekarSprite {
317         image: :"dekar.png",
318         size: <64,64>
319 }
320 export Hero dekar {
321         name: "Dekar",
322         level: 1,
323         battleSprite: dekarSprite,
324         maxHealth: 38,
325         health: 38,
326         maxMana: 0,
327         mana: 0,
328         ip: 0,
329         stats: Stats {
330                 atp:  46,
331                 dfp:  29,
332                 str:  46,
333                 agl:  13,
334                 int:   7,
335                 gut: 100,
336                 mgr:   5
337         },
338         useMask: maskDekar,
339         attackAnimation: ComplexAnimation {
340                 sprite: dekarSprite,
341                 frametime: frameTime,
342                 repeat: false,
343                 frames:
344                 [ ComplexAnimationFrame
345                         { column: 1, row: 0, disposition: < 4, 0> },
346                         { column: 1, row: 0, disposition: < 8, 2> },
347                         { column: 2, row: 0, disposition: <12, 4> },
348                         { column: 2, row: 0, disposition: <16, 4> },
349                         { column: 2, row: 0, disposition: <10, 2> },
350                         { column: 2, row: 0, disposition: <10, 2> },
351                         { column: 2, row: 0, disposition: <10, 2> },
352                         { column: 2, row: 0, disposition: <10, 2> },
353                         { column: 2, row: 1, disposition: < 6, 2> },
354                         { column: 2, row: 1, disposition: < 0, 0> },
355                         { column: 2, row: 2, disposition: <-2, 0> },
356                         { column: 2, row: 2, disposition: < 0, 0> },
357                         { column: 2, row: 2, disposition: < 0, 0> },
358                         { column: 2, row: 2, disposition: < 0, 0> }
359                 ]
360         },
361         spellAnimation: ComplexAnimation {
362                 sprite: dekarSprite,
363                 frametime: twoFramesTime,
364                 repeat: false,
365                 frames:
366                 [ ComplexAnimationFrame
367                         { column: 3, row: 0, disposition: < 0, 0> },
368                         { column: 3, row: 0, disposition: < 0, 0> },
369                         { column: 3, row: 0, disposition: < 0, 0> },
370                         { column: 3, row: 0, disposition: < 0, 0> },
371                         { column: 3, row: 0, disposition: < 0, 0> },
372                         { column: 3, row: 0, disposition: < 0, 0> },
373                         { column: 3, row: 1, disposition: < 0, 0> },
374                         { column: 3, row: 1, disposition: < 0, 0> },
375                         { column: 3, row: 2, disposition: < 0, 0> },
376                         { column: 3, row: 2, disposition: < 0, 0> },
377                         { column: 3, row: 2, disposition: < 0, 0> }
378                 ]
379         },
380         meleeAnimation: SimpleAnimation {
381                 sprite: Sprite {
382                         image: :"melee-dekar.png",
383                         size: <96,96>
384                 },
385                 frametime: twoFramesTime,
386                 framecount: 4
387         },
388         mapEntity: Entity {
389                 animation: SimpleAnimation{
390                         sprite: Sprite {
391                                 image: :"dekar-map.png",
392                                 size: <32,64>
393                         },
394                         frametime: 120,
395                         framecount: 2
396                 },
397                 spriteOffset: <0,-32>
398         }
399 }
400
401 Sprite handCursor {
402         image: :"cursor-hand.png",
403         size: <32,32>
404 }
405
406 Font normalFont {
407         sprite: Sprite {
408                 image: :"normal-font.png",
409                 size: <16,16>
410         },
411         rowoffset: -2
412 }
413
414 Font disabledFont {
415         sprite: Sprite {
416                 image: :"disabled-font.png",
417                 size: <16,16>
418         },
419         rowoffset: -2
420 }
421
422 export BattleResources battleResources {
423         swapCursor: Sprite {
424                 image: :"swap-cursor.png",
425                 size: <32,32>
426         },
427         attackIcons: Sprite {
428                 image: :"attack-type-icons.png",
429                 size: <32,32>
430         },
431         attackChoiceIcons: Sprite {
432                 image: :"attack-choice-icons.png",
433                 size: <16,16>
434         },
435         moveIcons: Sprite {
436                 image: :"move-icons.png",
437                 size: <32,32>
438         },
439
440         titleFrame: Frame {
441                 image: :"title-frame.png",
442                 border: <16,16>
443         },
444         titleFont: Font {
445                 sprite: Sprite {
446                         image: :"large-font.png",
447                         size: <16,32>
448                 },
449                 rowoffset: -2
450         },
451
452         numberAnimationPrototype: ComplexAnimation {
453                 frametime: frameTime,
454                 repeat: false,
455                 frames:
456                 [ ComplexAnimationFrame
457                         { column: 0, row: 0, disposition: <  0,  0> },
458                         { column: 0, row: 0, disposition: <  0,-26> },
459                         { column: 0, row: 0, disposition: <  0,-42> },
460                         { column: 0, row: 0, disposition: <  0,-48> },
461                         { column: 0, row: 0, disposition: <  0,-42> },
462                         { column: 0, row: 0, disposition: <  0,-26> },
463                         { column: 0, row: 0, disposition: <  0,  0> },
464                         { column: 0, row: 0, disposition: <  0,-12> },
465                         { column: 0, row: 0, disposition: <  0,-20> },
466                         { column: 0, row: 0, disposition: <  0,-24> },
467                         { column: 0, row: 0, disposition: <  0,-20> },
468                         { column: 0, row: 0, disposition: <  0,-12> },
469                         { column: 0, row: 0, disposition: <  0,  0> },
470                         { column: 0, row: 0, disposition: <  0, -6> },
471                         { column: 0, row: 0, disposition: <  0,-10> },
472                         { column: 0, row: 0, disposition: <  0,-12> },
473                         { column: 0, row: 0, disposition: <  0,-10> },
474                         { column: 0, row: 0, disposition: <  0, -6> },
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,  0> },
482                         { column: 0, row: 0, disposition: <  0,  0> },
483                         { column: 0, row: 0, disposition: <  0,  0> },
484                         { column: 0, row: 0, disposition: <  0,  0> },
485                         { column: 0, row: 0, disposition: <  0,  0> },
486                         { column: 0, row: 0, disposition: <  0,  0> },
487                         { column: 0, row: 0, disposition: <  0,  0> },
488                         { column: 0, row: 0, disposition: <  0,  0> },
489                         { column: 0, row: 0, disposition: <  0,-36> },
490                         { column: 0, row: 0, disposition: <  0,-32> },
491                         { column: 0, row: 0, disposition: <  0,-18> }
492                 ]
493         },
494         bigNumberSprite: Sprite {
495                 image: :"big-numbers.png",
496                 size: <16,32>
497         },
498         greenNumberSprite: Sprite {
499                 image: :"big-green-numbers.png",
500                 size: <16,32>
501         },
502
503         heroTagLabels: Sprite {
504                 image: :"hero-tag-sprites.png",
505                 size: <32,16>
506         },
507         levelLabelCol: 0,
508         levelLabelRow: 0,
509         healthLabelCol: 0,
510         healthLabelRow: 1,
511         manaLabelCol: 0,
512         manaLabelRow: 2,
513         moveLabelCol: 0,
514         moveLabelRow: 3,
515         ikariLabelCol: 0,
516         ikariLabelRow: 4,
517         heroTagFont: Font {
518                 sprite: Sprite {
519                         image: :"numbers.png",
520                         size: <16,16>
521                 },
522                 rowoffset: -3
523         },
524
525         activeHeroTagFrame: Frame {
526                 image: :"tag-frames.png",
527                 border: <16,16>
528         },
529         heroTagFrame: Frame {
530                 image: :"tag-frames.png",
531                 border: <16,16>,
532                 offset: < 0,33>
533         },
534
535         smallHeroTagFrame: Frame {
536                 image: :"small-tag-frame.png",
537                 border: <8,16>
538         },
539         lastSmallHeroTagFrame: Frame {
540                 image: :"small-tag-frame.png",
541                 border: <8,16>,
542                 offset: <0,33>
543         },
544         heroesBgColor: (24, 40, 49),
545
546         healthGauge: Gauge {
547                 image: :"gauges.png",
548                 full:  <0,16>,
549                 empty: <0, 0>,
550                 height: 16,
551                 start:   6,
552                 repeat:  1,
553                 end:     6
554         },
555         manaGauge: Gauge {
556                 image: :"gauges.png",
557                 full:  <0,32>,
558                 empty: <0, 0>,
559                 height: 16,
560                 start:   6,
561                 repeat:  1,
562                 end:     6
563         },
564         ikariGauge: Gauge {
565                 image: :"gauges.png",
566                 full:  <0,48>,
567                 empty: <0, 0>,
568                 height: 16,
569                 start:   6,
570                 repeat:  1,
571                 end:     6
572         },
573
574         selectFrame: Frame {
575                 image: :"select-frame.png",
576                 border: <16,16>
577         },
578         normalFont: normalFont,
579         disabledFont: disabledFont,
580         menuCursor: Sprite {
581                 image: :"cursor-hand.png",
582                 size: <32,32>
583         },
584
585         weaponTargetCursor: Sprite {
586                 image: :"targeting-icons.png",
587                 size: <32,32>
588         },
589         magicTargetCursor: Sprite {
590                 image: :"targeting-icons.png",
591                 size: <32,32>,
592                 offset: <0,32>
593         },
594         itemTargetCursor: Sprite {
595                 image: :"targeting-icons.png",
596                 size: <32,32>,
597                 offset: <0,64>
598         },
599
600         weaponMenuIcon: swordIcon,
601         armorMenuIcon: armorIcon,
602         shieldMenuIcon: shieldIcon,
603         helmetMenuIcon: helmetIcon,
604         ringMenuIcon: ringIcon,
605         jewelMenuIcon: jewelIcon,
606
607         spellMenuHeadline: "Please choose a spell.",
608         spellMenuProperties: MenuProperties {
609                 font: normalFont,
610                 disabledFont: disabledFont,
611                 cursor: handCursor,
612                 charsPerEntry: 9,
613                 rows: 6,
614                 rowGap: 8,
615                 iconSpace: 0,
616                 cols: 2,
617                 colGap: 32,
618                 charsPerNumber: 2,
619                 delimiter: ":"
620         },
621
622         itemMenuHeadline: "Please choose an item.",
623         itemMenuProperties: MenuProperties {
624                 font: normalFont,
625                 disabledFont: disabledFont,
626                 cursor: handCursor,
627                 charsPerEntry: 15,
628                 rows: 6,
629                 rowGap: 8,
630                 iconSpace: 16,
631                 cols: 1,
632                 colGap: 32,
633                 charsPerNumber: 2,
634                 delimiter: ":"
635         },
636
637         ikariMenuHeadline: "Please choose equipment.",
638         ikariMenuProperties: MenuProperties {
639                 font: normalFont,
640                 disabledFont: disabledFont,
641                 cursor: handCursor,
642                 charsPerEntry: 12,
643                 rows: 6,
644                 rowGap: 8,
645                 iconSpace: 16,
646                 cols: 1,
647                 colGap: 32,
648                 charsPerAdditionalText: 12,
649                 additionalTextGap: 16
650         },
651         noEquipmentText: "No equip",
652
653         escapeText: "Escapes.",
654         defeatText: "Total Defeat.",
655
656         victoryGetsText: "Gets",
657         victoryExpText: "EXP",
658         victoryGoldText: "GOLD",
659         victoryLevelUpText: "levels up",
660         victoryUpgradeText: "increases by",
661         victoryNextLevelText: "NXT.LEVEL",
662
663         victoryMHPText: "Max. HP",
664         victoryMMPText: "Max. MP",
665         victoryATPText: "ATP",
666         victoryDFPText: "DFP",
667         victorySTRText: "STR",
668         victoryAGLText: "AGL",
669         victoryINTText: "INT",
670         victoryGUTText: "GUT",
671         victoryMGRText: "MGR"
672 }
673
674 Font menuFont {
675         sprite: Sprite {
676                 image: :"menu-font.png",
677                 size: <16, 16>
678         },
679         rowoffset: -2
680 }
681 Font menuInactiveFont {
682         sprite: Sprite {
683                 image: :"menu-font-inactive.png",
684                 size: <16, 16>
685         },
686         rowoffset: -2
687 }
688 Sprite menuCursor {
689         image: :"menu-cursor.png",
690         size: <32, 16>
691 }
692 Sprite menuActiveCursor {
693         image: :"menu-cursor-active.png",
694         size: <32, 18>
695 }
696 SimpleAnimation menuCursorAnimation {
697         sprite: menuCursor,
698         frametime: fourFramesTime,
699         framecount: 6,
700         repeat: true
701 }
702 ComplexAnimation menuActiveCursorAnimation {
703         sprite: menuActiveCursor,
704         frametime: fourFramesTime,
705         repeat: true,
706         frames:
707         [ ComplexAnimationFrame
708                 { row: 0 },
709                 { row: 0 },
710                 { row: 0 },
711                 { row: 0 },
712                 { row: 0 },
713                 { row: 0 },
714                 { row: 0 },
715                 { row: 0 },
716                 { row: 1 },
717                 { row: 2 },
718                 { row: 3 },
719                 { row: 4 }
720         ]
721 }
722
723 export MenuResources menuResources {
724         menubg: Texture {
725                 image: :"menubg.png",
726                 size: <64, 64>
727         },
728         normalFont: menuFont,
729         inactiveFont: menuInactiveFont,
730         statusFont: normalFont,
731         statusLabels: Sprite {
732                 image: :"status-labels.png",
733                 size: <32, 16>
734         },
735         statusFrame: Frame {
736                 image: :"status-frame.png",
737                 border: <32, 32>,
738                 repeat: <32, 32>
739         },
740         mainMenu: MenuProperties {
741                 cols: 2,
742                 rows: 4,
743                 charsPerEntry: 8,
744                 rowGap: 8,
745                 colGap: 32,
746                 cursor: menuCursor,
747                 cursorAnimation: menuCursorAnimation,
748                 font: menuFont,
749                 disabledFont: menuInactiveFont,
750                 wrapX: true,
751                 wrapY: true
752         },
753         mainMenuItemText: "ITEM",
754         mainMenuSpellText: "SPELL",
755         mainMenuCapsuleText: "CAPSULE",
756         mainMenuEquipmentText: "EQUIP",
757         mainMenuStatusText: "STATUS",
758         mainMenuChangeText: "CHANGE",
759         mainMenuConfigText: "CONFIG",
760         mainMenuScenarioText: "SCENARIO",
761         mainMenuTimeText: "TIME",
762         mainMenuGoldText: "GOLD",
763         heroCursor: Sprite {
764                 image: :"hero-cursor.png",
765                 size: <64, 16>
766         },
767         heroCursorBlinkTime: 532,
768         noEquipmentText: "No equip",
769         shoulderNav: Sprite {
770                 image: :"shoulder-nav.png",
771                 size: <160, 16>
772         },
773         atpLabel: "ATP",
774         dfpLabel: "DFP",
775         strLabel: "STR",
776         aglLabel: "AGL",
777         intLabel: "INT",
778         gutLabel: "GUT",
779         mgrLabel: "MGR",
780         hpLabel: "HP",
781         ipLabel: "IP",
782         levelLabel: "LEVEL",
783         experienceLabel: "NOW EXP",
784         nextLevelLabel: "NEXT LEVEL",
785         statusMenu: MenuProperties {
786                 cols: 2,
787                 rows: 1,
788                 charsPerEntry: 6,
789                 colGap: 16,
790                 cursor: menuCursor,
791                 cursorAnimation: menuCursorAnimation,
792                 font: menuFont,
793                 wrapX: true
794         },
795         nextLabel: "NEXT",
796         returnLabel: "RETURN",
797         itemMenu: MenuProperties {
798                 cols: 3,
799                 rows: 1,
800                 charsPerEntry: 5,
801                 rowGap: 8,
802                 colGap: 16,
803                 cursor: menuCursor,
804                 selectedCursor: menuActiveCursor,
805                 cursorAnimation: menuCursorAnimation,
806                 selectedCursorAnimation: menuActiveCursorAnimation,
807                 font: menuFont,
808                 wrapX: true,
809                 wrapY: true
810         },
811         itemMenuUseText: "USE",
812         itemMenuSortText: "SORT",
813         itemMenuDropText: "DROP",
814         itemMenuSelectText: "SELECT",
815         inventoryMenu: MenuProperties {
816                 cols: 1,
817                 rows: 6,
818                 charsPerEntry: 13,
819                 rowGap: 8,
820                 cursor: menuCursor,
821                 selectedCursor: menuActiveCursor,
822                 cursorAnimation: menuCursorAnimation,
823                 selectedCursorAnimation: menuActiveCursorAnimation,
824                 font: menuFont,
825                 disabledFont: menuInactiveFont,
826                 iconSpace: 16,
827                 charsPerNumber: 2,
828                 delimiter: ":",
829                 thirdColumnHack: 1
830         },
831         spellMenu: MenuProperties {
832                 cols: 2,
833                 rows: 6,
834                 charsPerEntry: 8,
835                 rowGap: 8,
836                 colGap: 48,
837                 cursor: menuCursor,
838                 selectedCursor: menuActiveCursor,
839                 cursorAnimation: menuCursorAnimation,
840                 selectedCursorAnimation: menuActiveCursorAnimation,
841                 font: menuFont,
842                 disabledFont: menuInactiveFont,
843                 charsPerNumber: 2,
844                 delimiter: ":"
845         },
846         equipmentActionMenu: MenuProperties {
847                 cols: 1,
848                 rows: 5,
849                 charsPerEntry: 10,
850                 rowGap: 8,
851                 cursor: menuCursor,
852                 selectedCursor: menuActiveCursor,
853                 cursorAnimation: menuCursorAnimation,
854                 selectedCursorAnimation: menuActiveCursorAnimation,
855                 font: menuFont
856         },
857         equipmentMenu: MenuProperties {
858                 cols: 1,
859                 rows: 6,
860                 charsPerEntry: 12,
861                 rowGap: 16,
862                 cursor: menuCursor,
863                 selectedCursor: menuActiveCursor,
864                 cursorAnimation: menuCursorAnimation,
865                 selectedCursorAnimation: menuActiveCursorAnimation,
866                 font: normalFont,
867                 iconSpace: 16,
868                 wrapY: true
869         },
870         equipMenuEquipLabel: "EQUIP",
871         equipMenuStrongestLabel: "STRONGEST",
872         equipMenuRemoveLabel: "REMOVE",
873         equipMenuRemoveAllLabel: "REMOVE ALL",
874         equipMenuDropLabel: "DROP",
875         configMenu: MenuProperties {
876                 cols: 1,
877                 rows: 4,
878                 charsPerEntry: 8,
879                 rowGap: 32,
880                 cursor: menuCursor,
881                 cursorAnimation: menuCursorAnimation,
882                 font: menuFont,
883                 wrapY: true
884         },
885         configMessageSpeedLabel: "MESSAGE\n   SPEED",
886         configMessageSpeedFast: "FAST",
887         configMessageSpeedNormal: "NORMAL",
888         configMessageSpeedSlow: "SLOW",
889         configBattleCursorLabel: "BATTLE\n  CURSOR",
890         configStatusCursorLabel: "STATUS\n  CURSOR",
891         configCursorClear: "CLEAR",
892         configCursorMemory: "MEMORY",
893         configMusicLabel: "MUSIC",
894         configMusicStereo: "STEREO",
895         configMusicMono: "MONO",
896         scenarioMenu: MenuProperties {
897                 cols: 1,
898                 rows: 6,
899                 charsPerEntry: 14,
900                 rowGap: 8,
901                 cursor: menuCursor,
902                 cursorAnimation: menuCursorAnimation,
903                 font: menuFont
904         },
905         scenarioMenuHeadline: "SCENARIO ITEM",
906         capsulebg: Texture {
907                 image: :"capsulebg.png",
908                 size: <64, 64>
909         },
910         capsuleMenu: MenuProperties {
911                 cols: 3,
912                 rows: 1,
913                 charsPerEntry: 7,
914                 cursor: menuCursor,
915                 selectedCursor: menuActiveCursor,
916                 cursorAnimation: menuCursorAnimation,
917                 selectedCursorAnimation: menuActiveCursorAnimation,
918                 font: menuFont,
919                 thirdColumnHack: 2
920         },
921         capsuleFeedMenu: MenuProperties {
922                 cols: 2,
923                 rows: 1,
924                 charsPerEntry: 7,
925                 colGap: 32,
926                 cursor: menuCursor,
927                 selectedCursor: menuActiveCursor,
928                 cursorAnimation: menuCursorAnimation,
929                 selectedCursorAnimation: menuActiveCursorAnimation,
930                 font: menuFont
931         },
932         capsuleFeedLabel: "FEED",
933         capsuleChangeLabel: "CHANGE",
934         capsuleNameLabel: "NAME",
935         capsuleClassLabel: "CLASS",
936         capsuleAlignmentLabel: "ALI.",
937         capsuleTribeLabel: "TRIBE",
938         capsuleAttack1Label: "SP.1",
939         capsuleAttack2Label: "SP.2",
940         capsuleAttack3Label: "SP.3",
941         capsuleNoAttackText: "Nothing",
942         capsuleNotHungryText: "I'm not hungry.",
943         capsuleNameSelect: CharSelect {
944                 font: menuFont,
945                 cursor: Sprite {
946                         image: :"alpha-cursor.png",
947                         size: <20, 28>
948                 },
949                 chars: "0123456789ABCDEabcdeFGHIJfghijKLMNOklmnoPQRSTpqrstUVWXYuvwxyZ!?  z!?  ",
950                 width: 10,
951                 groupX: 5
952         },
953         capsuleSelectTopLeft: Sprite {
954                 image: :"capsule-sprites.png",
955                 size: <32, 8>,
956                 offset: <64, 0>
957         },
958         capsuleSelectTopRight: Sprite {
959                 image: :"capsule-sprites.png",
960                 size: <32, 8>,
961                 offset: <128, 0>
962         },
963         capsuleSelectTopRepeat: Texture {
964                 image: :"capsule-sprites.png",
965                 size: <32, 8>,
966                 offset: <96, 0>
967         },
968         capsuleSelectBottomLeft: Sprite {
969                 image: :"capsule-sprites.png",
970                 size: <32, 32>,
971                 offset: <0, 32>
972         },
973         capsuleSelectBottomRight: Sprite {
974                 image: :"capsule-sprites.png",
975                 size: <32, 32>,
976                 offset: <128, 64>
977         },
978         capsuleSelectBottomRepeat: Sprite {
979                 image: :"capsule-sprites.png",
980                 size: <32, 32>,
981                 offset: <0, 64>
982         },
983         capsuleSelectLeftRepeat: Texture {
984                 image: :"capsule-sprites.png",
985                 size: <32, 32>
986         },
987         capsuleSelectRightRepeat: Texture {
988                 image: :"capsule-sprites.png",
989                 size: <32, 32>,
990                 offset: <128, 32>
991         },
992         capsuleSelectLadder: Sprite {
993                 image: :"capsule-sprites.png",
994                 size: <32, 24>,
995                 offset: <64, 8>
996         },
997         capsuleSelectCursor: Sprite {
998                 image: :"capsule-sprites.png",
999                 size: <32, 24>,
1000                 offset: <128, 8>
1001         },
1002         capsuleAlignmentWheel: Sprite {
1003                 image: :"capsule-sprites.png",
1004                 size: <128, 128>,
1005                 offset: <0, 128>
1006         },
1007         capsuleAlignmentCursor: Sprite {
1008                 image: :"capsule-sprites.png",
1009                 size: <32, 32>,
1010                 offset: <128, 128>
1011         },
1012         capsuleGrowthLabel: Sprite {
1013                 image: :"capsule-feed.png",
1014                 size: <32, 10>
1015         },
1016         capsuleGrowthBar: Sprite {
1017                 image: :"capsule-feed.png",
1018                 size: <8, 10>,
1019                 offset: <8, 10>
1020         },
1021         capsuleGrowthBarFilled: Sprite {
1022                 image: :"capsule-feed.png",
1023                 size: <8, 10>,
1024                 offset: <0, 10>
1025         }
1026 }