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