]> git.localhorst.tv Git - l2e.git/blob - test-data/test.l2s
500039f8e5756048daf9638b3fca42c40f994483
[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
655         victoryGetsText: "Gets",
656         victoryExpText: "EXP",
657         victoryGoldText: "GOLD",
658         victoryLevelUpText: "levels up",
659         victoryUpgradeText: "increases by",
660         victoryNextLevelText: "NXT.LEVEL",
661
662         victoryMHPText: "Max. HP",
663         victoryMMPText: "Max. MP",
664         victoryATPText: "ATP",
665         victoryDFPText: "DFP",
666         victorySTRText: "STR",
667         victoryAGLText: "AGL",
668         victoryINTText: "INT",
669         victoryGUTText: "GUT",
670         victoryMGRText: "MGR"
671 }
672
673 Font menuFont {
674         sprite: Sprite {
675                 image: :"menu-font.png",
676                 size: <16, 16>
677         },
678         rowoffset: -2
679 }
680 Font menuInactiveFont {
681         sprite: Sprite {
682                 image: :"menu-font-inactive.png",
683                 size: <16, 16>
684         },
685         rowoffset: -2
686 }
687 Sprite menuCursor {
688         image: :"menu-cursor.png",
689         size: <32, 16>
690 }
691 Sprite menuActiveCursor {
692         image: :"menu-cursor-active.png",
693         size: <32, 18>
694 }
695 SimpleAnimation menuCursorAnimation {
696         sprite: menuCursor,
697         frametime: fourFramesTime,
698         framecount: 6,
699         repeat: true
700 }
701 ComplexAnimation menuActiveCursorAnimation {
702         sprite: menuActiveCursor,
703         frametime: fourFramesTime,
704         repeat: true,
705         frames:
706         [ ComplexAnimationFrame
707                 { row: 0 },
708                 { row: 0 },
709                 { row: 0 },
710                 { row: 0 },
711                 { row: 0 },
712                 { row: 0 },
713                 { row: 0 },
714                 { row: 0 },
715                 { row: 1 },
716                 { row: 2 },
717                 { row: 3 },
718                 { row: 4 }
719         ]
720 }
721
722 export MenuResources menuResources {
723         menubg: Texture {
724                 image: :"menubg.png",
725                 size: <64, 64>
726         },
727         normalFont: menuFont,
728         inactiveFont: menuInactiveFont,
729         statusFont: normalFont,
730         statusLabels: Sprite {
731                 image: :"status-labels.png",
732                 size: <32, 16>
733         },
734         statusFrame: Frame {
735                 image: :"status-frame.png",
736                 border: <32, 32>,
737                 repeat: <32, 32>
738         },
739         mainMenu: MenuProperties {
740                 cols: 2,
741                 rows: 4,
742                 charsPerEntry: 8,
743                 rowGap: 8,
744                 colGap: 32,
745                 cursor: menuCursor,
746                 cursorAnimation: menuCursorAnimation,
747                 font: menuFont,
748                 disabledFont: menuInactiveFont,
749                 wrapX: true,
750                 wrapY: true
751         },
752         mainMenuItemText: "ITEM",
753         mainMenuSpellText: "SPELL",
754         mainMenuCapsuleText: "CAPSULE",
755         mainMenuEquipmentText: "EQUIP",
756         mainMenuStatusText: "STATUS",
757         mainMenuChangeText: "CHANGE",
758         mainMenuConfigText: "CONFIG",
759         mainMenuScenarioText: "SCENARIO",
760         mainMenuTimeText: "TIME",
761         mainMenuGoldText: "GOLD",
762         heroCursor: Sprite {
763                 image: :"hero-cursor.png",
764                 size: <64, 16>
765         },
766         heroCursorBlinkTime: 532,
767         noEquipmentText: "No equip",
768         shoulderNav: Sprite {
769                 image: :"shoulder-nav.png",
770                 size: <160, 16>
771         },
772         atpLabel: "ATP",
773         dfpLabel: "DFP",
774         strLabel: "STR",
775         aglLabel: "AGL",
776         intLabel: "INT",
777         gutLabel: "GUT",
778         mgrLabel: "MGR",
779         hpLabel: "HP",
780         ipLabel: "IP",
781         levelLabel: "LEVEL",
782         experienceLabel: "NOW EXP",
783         nextLevelLabel: "NEXT LEVEL",
784         statusMenu: MenuProperties {
785                 cols: 2,
786                 rows: 1,
787                 charsPerEntry: 6,
788                 colGap: 16,
789                 cursor: menuCursor,
790                 cursorAnimation: menuCursorAnimation,
791                 font: menuFont,
792                 wrapX: true
793         },
794         nextLabel: "NEXT",
795         returnLabel: "RETURN",
796         itemMenu: MenuProperties {
797                 cols: 3,
798                 rows: 1,
799                 charsPerEntry: 5,
800                 rowGap: 8,
801                 colGap: 16,
802                 cursor: menuCursor,
803                 selectedCursor: menuActiveCursor,
804                 cursorAnimation: menuCursorAnimation,
805                 selectedCursorAnimation: menuActiveCursorAnimation,
806                 font: menuFont,
807                 wrapX: true,
808                 wrapY: true
809         },
810         itemMenuUseText: "USE",
811         itemMenuSortText: "SORT",
812         itemMenuDropText: "DROP",
813         itemMenuSelectText: "SELECT",
814         inventoryMenu: MenuProperties {
815                 cols: 1,
816                 rows: 6,
817                 charsPerEntry: 13,
818                 rowGap: 8,
819                 cursor: menuCursor,
820                 selectedCursor: menuActiveCursor,
821                 cursorAnimation: menuCursorAnimation,
822                 selectedCursorAnimation: menuActiveCursorAnimation,
823                 font: menuFont,
824                 disabledFont: menuInactiveFont,
825                 iconSpace: 16,
826                 charsPerNumber: 2,
827                 delimiter: ":",
828                 thirdColumnHack: 1
829         },
830         spellMenu: MenuProperties {
831                 cols: 2,
832                 rows: 6,
833                 charsPerEntry: 8,
834                 rowGap: 8,
835                 colGap: 48,
836                 cursor: menuCursor,
837                 selectedCursor: menuActiveCursor,
838                 cursorAnimation: menuCursorAnimation,
839                 selectedCursorAnimation: menuActiveCursorAnimation,
840                 font: menuFont,
841                 disabledFont: menuInactiveFont,
842                 charsPerNumber: 2,
843                 delimiter: ":"
844         },
845         equipmentActionMenu: MenuProperties {
846                 cols: 1,
847                 rows: 5,
848                 charsPerEntry: 10,
849                 rowGap: 8,
850                 cursor: menuCursor,
851                 selectedCursor: menuActiveCursor,
852                 cursorAnimation: menuCursorAnimation,
853                 selectedCursorAnimation: menuActiveCursorAnimation,
854                 font: menuFont
855         },
856         equipmentMenu: MenuProperties {
857                 cols: 1,
858                 rows: 6,
859                 charsPerEntry: 12,
860                 rowGap: 16,
861                 cursor: menuCursor,
862                 selectedCursor: menuActiveCursor,
863                 cursorAnimation: menuCursorAnimation,
864                 selectedCursorAnimation: menuActiveCursorAnimation,
865                 font: normalFont,
866                 iconSpace: 16,
867                 wrapY: true
868         },
869         equipMenuEquipLabel: "EQUIP",
870         equipMenuStrongestLabel: "STRONGEST",
871         equipMenuRemoveLabel: "REMOVE",
872         equipMenuRemoveAllLabel: "REMOVE ALL",
873         equipMenuDropLabel: "DROP",
874         configMenu: MenuProperties {
875                 cols: 1,
876                 rows: 4,
877                 charsPerEntry: 8,
878                 rowGap: 32,
879                 cursor: menuCursor,
880                 cursorAnimation: menuCursorAnimation,
881                 font: menuFont,
882                 wrapY: true
883         },
884         configMessageSpeedLabel: "MESSAGE\n   SPEED",
885         configMessageSpeedFast: "FAST",
886         configMessageSpeedNormal: "NORMAL",
887         configMessageSpeedSlow: "SLOW",
888         configBattleCursorLabel: "BATTLE\n  CURSOR",
889         configStatusCursorLabel: "STATUS\n  CURSOR",
890         configCursorClear: "CLEAR",
891         configCursorMemory: "MEMORY",
892         configMusicLabel: "MUSIC",
893         configMusicStereo: "STEREO",
894         configMusicMono: "MONO",
895         scenarioMenu: MenuProperties {
896                 cols: 1,
897                 rows: 6,
898                 charsPerEntry: 14,
899                 rowGap: 8,
900                 cursor: menuCursor,
901                 cursorAnimation: menuCursorAnimation,
902                 font: menuFont
903         },
904         scenarioMenuHeadline: "SCENARIO ITEM",
905         capsulebg: Texture {
906                 image: :"capsulebg.png",
907                 size: <64, 64>
908         },
909         capsuleMenu: MenuProperties {
910                 cols: 3,
911                 rows: 1,
912                 charsPerEntry: 7,
913                 cursor: menuCursor,
914                 selectedCursor: menuActiveCursor,
915                 cursorAnimation: menuCursorAnimation,
916                 selectedCursorAnimation: menuActiveCursorAnimation,
917                 font: menuFont,
918                 thirdColumnHack: 2
919         },
920         capsuleFeedMenu: MenuProperties {
921                 cols: 2,
922                 rows: 1,
923                 charsPerEntry: 7,
924                 colGap: 32,
925                 cursor: menuCursor,
926                 selectedCursor: menuActiveCursor,
927                 cursorAnimation: menuCursorAnimation,
928                 selectedCursorAnimation: menuActiveCursorAnimation,
929                 font: menuFont
930         },
931         capsuleFeedLabel: "FEED",
932         capsuleChangeLabel: "CHANGE",
933         capsuleNameLabel: "NAME",
934         capsuleClassLabel: "CLASS",
935         capsuleAlignmentLabel: "ALI.",
936         capsuleTribeLabel: "TRIBE",
937         capsuleAttack1Label: "SP.1",
938         capsuleAttack2Label: "SP.2",
939         capsuleAttack3Label: "SP.3",
940         capsuleNoAttackText: "Nothing",
941         capsuleNotHungryText: "I'm not hungry.",
942         capsuleNameSelect: CharSelect {
943                 font: menuFont,
944                 cursor: Sprite {
945                         image: :"alpha-cursor.png",
946                         size: <20, 28>
947                 },
948                 chars: "0123456789ABCDEabcdeFGHIJfghijKLMNOklmnoPQRSTpqrstUVWXYuvwxyZ!?  z!?  ",
949                 width: 10,
950                 groupX: 5
951         },
952         capsuleSelectTopLeft: Sprite {
953                 image: :"capsule-sprites.png",
954                 size: <32, 8>,
955                 offset: <64, 0>
956         },
957         capsuleSelectTopRight: Sprite {
958                 image: :"capsule-sprites.png",
959                 size: <32, 8>,
960                 offset: <128, 0>
961         },
962         capsuleSelectTopRepeat: Texture {
963                 image: :"capsule-sprites.png",
964                 size: <32, 8>,
965                 offset: <96, 0>
966         },
967         capsuleSelectBottomLeft: Sprite {
968                 image: :"capsule-sprites.png",
969                 size: <32, 32>,
970                 offset: <0, 32>
971         },
972         capsuleSelectBottomRight: Sprite {
973                 image: :"capsule-sprites.png",
974                 size: <32, 32>,
975                 offset: <128, 64>
976         },
977         capsuleSelectBottomRepeat: Sprite {
978                 image: :"capsule-sprites.png",
979                 size: <32, 32>,
980                 offset: <0, 64>
981         },
982         capsuleSelectLeftRepeat: Texture {
983                 image: :"capsule-sprites.png",
984                 size: <32, 32>
985         },
986         capsuleSelectRightRepeat: Texture {
987                 image: :"capsule-sprites.png",
988                 size: <32, 32>,
989                 offset: <128, 32>
990         },
991         capsuleSelectLadder: Sprite {
992                 image: :"capsule-sprites.png",
993                 size: <32, 24>,
994                 offset: <64, 8>
995         },
996         capsuleSelectCursor: Sprite {
997                 image: :"capsule-sprites.png",
998                 size: <32, 24>,
999                 offset: <128, 8>
1000         },
1001         capsuleAlignmentWheel: Sprite {
1002                 image: :"capsule-sprites.png",
1003                 size: <128, 128>,
1004                 offset: <0, 128>
1005         },
1006         capsuleAlignmentCursor: Sprite {
1007                 image: :"capsule-sprites.png",
1008                 size: <32, 32>,
1009                 offset: <128, 128>
1010         },
1011         capsuleGrowthLabel: Sprite {
1012                 image: :"capsule-feed.png",
1013                 size: <32, 10>
1014         },
1015         capsuleGrowthBar: Sprite {
1016                 image: :"capsule-feed.png",
1017                 size: <8, 10>,
1018                 offset: <8, 10>
1019         },
1020         capsuleGrowthBarFilled: Sprite {
1021                 image: :"capsule-feed.png",
1022                 size: <8, 10>,
1023                 offset: <0, 10>
1024         }
1025 }