]> git.localhorst.tv Git - l2e.git/blobdiff - test-data/test.l2s
put stat increments in level ladder
[l2e.git] / test-data / test.l2s
index dd039e83368cf99e8cee1064ab773def9b984f3e..7b187aafbeaf4d62228c57a90afb8fe818818162 100644 (file)
@@ -1,6 +1,6 @@
-include "ikaris.l2s"
-include "items.l2s"
-include "spells.l2s"
+include "ikaris.l2h"
+include "items.l2h"
+include "spells.l2h"
 
 Number frameTime 33
 Number twoFramesTime 66
@@ -20,7 +20,8 @@ export PartyLayout heroesLayout {
                < 48,136>,
                <128,136>,
                < 80,152>,
-               <160,152>
+               <160,152>,
+               <216,144>
        ]
 }
 
@@ -44,11 +45,14 @@ export Monster lizard {
                gut:  6,
                mgr:  6
        },
+       expReward: 8,
+       goldReward: 5,
        attackAnimation: ComplexAnimation {
                sprite: lizardSprite,
                frametime: fourFramesTime,
                repeat: false,
-               frames: [
+               frames:
+               [ ComplexAnimationFrame
                        { column: 0, row: 1, disposition: < 0, 16> },
                        { column: 0, row: 0, disposition: < 0, 16> },
                        { column: 0, row: 1, disposition: < 0, 16> },
@@ -72,7 +76,7 @@ Sprite maximSprite {
 export Hero maxim {
        name: "Maxim",
        level: 1,
-       sprite: maximSprite,
+       battleSprite: maximSprite,
        maxHealth: 33,
        health: 33,
        maxMana: 20,
@@ -87,11 +91,17 @@ export Hero maxim {
                gut: 100,
                mgr:  10
        },
+       ladder: [ LevelUp
+               // insensible test data
+               { exp: 10, maxHP: 5, maxMP: 3, atp: 2, str: 1 }
+       ],
+       useMask: maskMaxim,
        attackAnimation: ComplexAnimation {
                sprite: maximSprite,
                frametime: frameTime,
                repeat: false,
-               frames: [
+               frames:
+               [ ComplexAnimationFrame
                        { column: 1, row: 0, disposition: < 0, 0> },
                        { column: 1, row: 0, disposition: < 0, 0> },
                        { column: 1, row: 0, disposition: < 0, 0> },
@@ -125,7 +135,8 @@ export Hero maxim {
                sprite: maximSprite,
                frametime: fiveFramesTime,
                repeat: false,
-               frames: [
+               frames:
+               [ ComplexAnimationFrame
                        { column: 3, row: 0, disposition: < 0, 0> },
                        { column: 3, row: 0, disposition: < 0, 0> },
                        { column: 3, row: 1, disposition: < 0, 0> }
@@ -138,6 +149,17 @@ export Hero maxim {
                },
                frametime: twoFramesTime,
                framecount: 4
+       },
+       mapEntity: Entity {
+               animation: SimpleAnimation{
+                       sprite: Sprite {
+                               image: :"maxim-map.png",
+                               size: <32,64>
+                       },
+                       frametime: 120,
+                       framecount: 2
+               },
+               spriteOffset: <0,-32>
        }
 }
 
@@ -148,7 +170,7 @@ Sprite selanSprite {
 export Hero selan {
        name: "Selan",
        level: 1,
-       sprite: selanSprite,
+       battleSprite: selanSprite,
        maxHealth: 28,
        health: 28,
        maxMana: 23,
@@ -163,11 +185,13 @@ export Hero selan {
                gut: 80,
                mgr: 13
        },
+       useMask: maskSelan,
        attackAnimation: ComplexAnimation {
                sprite: selanSprite,
                frametime: frameTime,
                repeat: false,
-               frames: [
+               frames:
+               [ ComplexAnimationFrame
                        { column: 1, row: 0, disposition: < 4, 0> },
                        { column: 1, row: 0, disposition: < 4, 0> },
                        { column: 1, row: 0, disposition: < 8, 2> },
@@ -188,7 +212,8 @@ export Hero selan {
                sprite: selanSprite,
                frametime: frameTime,
                repeat: false,
-               frames: [
+               frames:
+               [ ComplexAnimationFrame
                        { column: 3, row: 0, disposition: < 0, 0> },
                        { column: 3, row: 0, disposition: < 0, 0> },
                        { column: 3, row: 0, disposition: < 0, 0> },
@@ -208,6 +233,17 @@ export Hero selan {
                },
                frametime: twoFramesTime,
                framecount: 4
+       },
+       mapEntity: Entity {
+               animation: SimpleAnimation{
+                       sprite: Sprite {
+                               image: :"selan-map.png",
+                               size: <32,64>
+                       },
+                       frametime: 120,
+                       framecount: 2
+               },
+               spriteOffset: <0,-32>
        }
 }
 
@@ -218,7 +254,7 @@ Sprite guySprite {
 export Hero guy {
        name: "Guy",
        level: 1,
-       sprite: guySprite,
+       battleSprite: guySprite,
        maxHealth: 38,
        health: 38,
        maxMana: 0,
@@ -233,11 +269,13 @@ export Hero guy {
                gut: 90,
                mgr:  8
        },
+       useMask: maskGuy,
        attackAnimation: ComplexAnimation {
                sprite: guySprite,
                frametime: frameTime,
                repeat: false,
-               frames: [
+               frames:
+               [ ComplexAnimationFrame
                        { column: 1, row: 0, disposition: <-4, 0> },
                        { column: 1, row: 0, disposition: <-4, 0> },
                        { column: 1, row: 0, disposition: <-8, 0> },
@@ -261,6 +299,17 @@ export Hero guy {
                },
                frametime: fourFramesTime,
                framecount: 4
+       },
+       mapEntity: Entity {
+               animation: SimpleAnimation{
+                       sprite: Sprite {
+                               image: :"guy-map.png",
+                               size: <32,64>
+                       },
+                       frametime: 120,
+                       framecount: 2
+               },
+               spriteOffset: <0,-32>
        }
 }
 
@@ -271,7 +320,7 @@ Sprite dekarSprite {
 export Hero dekar {
        name: "Dekar",
        level: 1,
-       sprite: dekarSprite,
+       battleSprite: dekarSprite,
        maxHealth: 38,
        health: 38,
        maxMana: 0,
@@ -286,11 +335,13 @@ export Hero dekar {
                gut: 100,
                mgr:   5
        },
+       useMask: maskDekar,
        attackAnimation: ComplexAnimation {
                sprite: dekarSprite,
                frametime: frameTime,
                repeat: false,
-               frames: [
+               frames:
+               [ ComplexAnimationFrame
                        { column: 1, row: 0, disposition: < 4, 0> },
                        { column: 1, row: 0, disposition: < 8, 2> },
                        { column: 2, row: 0, disposition: <12, 4> },
@@ -311,7 +362,8 @@ export Hero dekar {
                sprite: dekarSprite,
                frametime: twoFramesTime,
                repeat: false,
-               frames: [
+               frames:
+               [ ComplexAnimationFrame
                        { column: 3, row: 0, disposition: < 0, 0> },
                        { column: 3, row: 0, disposition: < 0, 0> },
                        { column: 3, row: 0, disposition: < 0, 0> },
@@ -332,189 +384,625 @@ export Hero dekar {
                },
                frametime: twoFramesTime,
                framecount: 4
+       },
+       mapEntity: Entity {
+               animation: SimpleAnimation{
+                       sprite: Sprite {
+                               image: :"dekar-map.png",
+                               size: <32,64>
+                       },
+                       frametime: 120,
+                       framecount: 2
+               },
+               spriteOffset: <0,-32>
        }
 }
 
-export Sprite swapCursor {
-       image: :"swap-cursor.png",
-       size: <32,32>
-}
-export Sprite attackIcons {
-       image: :"attack-type-icons.png",
-       size: <32,32>
-}
-export Sprite attackChoiceIcons {
-       image: :"attack-choice-icons.png",
-       size: <16,16>
-}
-export Sprite moveIcons {
-       image: :"move-icons.png",
+Sprite handCursor {
+       image: :"cursor-hand.png",
        size: <32,32>
 }
 
-export Frame titleFrame {
-       image: :"title-frame.png",
-       border: <16,16>
-}
-
-export Font largeFont {
+Font normalFont {
        sprite: Sprite {
-               image: :"large-font.png",
-               size: <16,32>
+               image: :"normal-font.png",
+               size: <16,16>
        },
        rowoffset: -2
 }
 
-export ComplexAnimation numberAnimationPrototype {
-       frametime: frameTime,
-       repeat: false,
-       frames: [
-               { column: 0, row: 0, disposition: <  0,  0> },
-               { column: 0, row: 0, disposition: <  0,-26> },
-               { column: 0, row: 0, disposition: <  0,-42> },
-               { column: 0, row: 0, disposition: <  0,-48> },
-               { column: 0, row: 0, disposition: <  0,-42> },
-               { column: 0, row: 0, disposition: <  0,-26> },
-               { column: 0, row: 0, disposition: <  0,  0> },
-               { column: 0, row: 0, disposition: <  0,-12> },
-               { column: 0, row: 0, disposition: <  0,-20> },
-               { column: 0, row: 0, disposition: <  0,-24> },
-               { column: 0, row: 0, disposition: <  0,-20> },
-               { column: 0, row: 0, disposition: <  0,-12> },
-               { column: 0, row: 0, disposition: <  0,  0> },
-               { column: 0, row: 0, disposition: <  0, -6> },
-               { column: 0, row: 0, disposition: <  0,-10> },
-               { column: 0, row: 0, disposition: <  0,-12> },
-               { column: 0, row: 0, disposition: <  0,-10> },
-               { column: 0, row: 0, disposition: <  0, -6> },
-               { column: 0, row: 0, disposition: <  0,  0> },
-               { column: 0, row: 0, disposition: <  0,  0> },
-               { column: 0, row: 0, disposition: <  0,  0> },
-               { column: 0, row: 0, disposition: <  0,  0> },
-               { column: 0, row: 0, disposition: <  0,  0> },
-               { column: 0, row: 0, disposition: <  0,  0> },
-               { column: 0, row: 0, disposition: <  0,  0> },
-               { column: 0, row: 0, disposition: <  0,  0> },
-               { column: 0, row: 0, disposition: <  0,  0> },
-               { column: 0, row: 0, disposition: <  0,  0> },
-               { column: 0, row: 0, disposition: <  0,  0> },
-               { column: 0, row: 0, disposition: <  0,  0> },
-               { column: 0, row: 0, disposition: <  0,  0> },
-               { column: 0, row: 0, disposition: <  0,  0> },
-               { column: 0, row: 0, disposition: <  0,-36> },
-               { column: 0, row: 0, disposition: <  0,-32> },
-               { column: 0, row: 0, disposition: <  0,-18> }
-       ]
-}
-export Sprite bigNumbers {
-       image: :"big-numbers.png",
-       size: <16,32>
-}
-export Sprite bigGreenNumbers {
-       image: :"big-green-numbers.png",
-       size: <16,32>
-}
-
-export Sprite heroTagLabels {
-       image: :"hero-tag-sprites.png",
-       size: <32,16>
-}
-export Font heroTagFont {
+Font disabledFont {
        sprite: Sprite {
-               image: :"numbers.png",
+               image: :"disabled-font.png",
                size: <16,16>
        },
-       rowoffset: -3
+       rowoffset: -2
 }
 
-export Frame activeHeroTagFrame {
-       image: :"tag-frames.png",
-       border: <16,16>
-}
-export Frame heroTagFrame {
-       image: :"tag-frames.png",
-       border: <16,16>,
-       offset: < 0,33>
-}
+export BattleResources battleResources {
+       swapCursor: Sprite {
+               image: :"swap-cursor.png",
+               size: <32,32>
+       },
+       attackIcons: Sprite {
+               image: :"attack-type-icons.png",
+               size: <32,32>
+       },
+       attackChoiceIcons: Sprite {
+               image: :"attack-choice-icons.png",
+               size: <16,16>
+       },
+       moveIcons: Sprite {
+               image: :"move-icons.png",
+               size: <32,32>
+       },
 
-export Frame smallHeroTagFrame {
-       image: :"small-tag-frame.png",
-       border: <8,16>
-}
-export Frame lastSmallHeroTagFrame {
-       image: :"small-tag-frame.png",
-       border: <8,16>,
-       offset: <0,33>
-}
+       titleFrame: Frame {
+               image: :"title-frame.png",
+               border: <16,16>
+       },
+       titleFont: Font {
+               sprite: Sprite {
+                       image: :"large-font.png",
+                       size: <16,32>
+               },
+               rowoffset: -2
+       },
 
-export Gauge healthGauge {
-       image: :"gauges.png",
-       full:  <0,16>,
-       empty: <0, 0>,
-       height: 16,
-       start:   6,
-       repeat:  1,
-       end:     6
-}
-export Gauge manaGauge {
-       image: :"gauges.png",
-       full:  <0,32>,
-       empty: <0, 0>,
-       height: 16,
-       start:   6,
-       repeat:  1,
-       end:     6
-}
-export Gauge ikariGauge {
-       image: :"gauges.png",
-       full:  <0,48>,
-       empty: <0, 0>,
-       height: 16,
-       start:   6,
-       repeat:  1,
-       end:     6
-}
+       numberAnimationPrototype: ComplexAnimation {
+               frametime: frameTime,
+               repeat: false,
+               frames:
+               [ ComplexAnimationFrame
+                       { column: 0, row: 0, disposition: <  0,  0> },
+                       { column: 0, row: 0, disposition: <  0,-26> },
+                       { column: 0, row: 0, disposition: <  0,-42> },
+                       { column: 0, row: 0, disposition: <  0,-48> },
+                       { column: 0, row: 0, disposition: <  0,-42> },
+                       { column: 0, row: 0, disposition: <  0,-26> },
+                       { column: 0, row: 0, disposition: <  0,  0> },
+                       { column: 0, row: 0, disposition: <  0,-12> },
+                       { column: 0, row: 0, disposition: <  0,-20> },
+                       { column: 0, row: 0, disposition: <  0,-24> },
+                       { column: 0, row: 0, disposition: <  0,-20> },
+                       { column: 0, row: 0, disposition: <  0,-12> },
+                       { column: 0, row: 0, disposition: <  0,  0> },
+                       { column: 0, row: 0, disposition: <  0, -6> },
+                       { column: 0, row: 0, disposition: <  0,-10> },
+                       { column: 0, row: 0, disposition: <  0,-12> },
+                       { column: 0, row: 0, disposition: <  0,-10> },
+                       { column: 0, row: 0, disposition: <  0, -6> },
+                       { column: 0, row: 0, disposition: <  0,  0> },
+                       { column: 0, row: 0, disposition: <  0,  0> },
+                       { column: 0, row: 0, disposition: <  0,  0> },
+                       { column: 0, row: 0, disposition: <  0,  0> },
+                       { column: 0, row: 0, disposition: <  0,  0> },
+                       { column: 0, row: 0, disposition: <  0,  0> },
+                       { column: 0, row: 0, disposition: <  0,  0> },
+                       { column: 0, row: 0, disposition: <  0,  0> },
+                       { column: 0, row: 0, disposition: <  0,  0> },
+                       { column: 0, row: 0, disposition: <  0,  0> },
+                       { column: 0, row: 0, disposition: <  0,  0> },
+                       { column: 0, row: 0, disposition: <  0,  0> },
+                       { column: 0, row: 0, disposition: <  0,  0> },
+                       { column: 0, row: 0, disposition: <  0,  0> },
+                       { column: 0, row: 0, disposition: <  0,-36> },
+                       { column: 0, row: 0, disposition: <  0,-32> },
+                       { column: 0, row: 0, disposition: <  0,-18> }
+               ]
+       },
+       bigNumberSprite: Sprite {
+               image: :"big-numbers.png",
+               size: <16,32>
+       },
+       greenNumberSprite: Sprite {
+               image: :"big-green-numbers.png",
+               size: <16,32>
+       },
+
+       heroTagLabels: Sprite {
+               image: :"hero-tag-sprites.png",
+               size: <32,16>
+       },
+       levelLabelCol: 0,
+       levelLabelRow: 0,
+       healthLabelCol: 0,
+       healthLabelRow: 1,
+       manaLabelCol: 0,
+       manaLabelRow: 2,
+       moveLabelCol: 0,
+       moveLabelRow: 3,
+       ikariLabelCol: 0,
+       ikariLabelRow: 4,
+       heroTagFont: Font {
+               sprite: Sprite {
+                       image: :"numbers.png",
+                       size: <16,16>
+               },
+               rowoffset: -3
+       },
+
+       activeHeroTagFrame: Frame {
+               image: :"tag-frames.png",
+               border: <16,16>
+       },
+       heroTagFrame: Frame {
+               image: :"tag-frames.png",
+               border: <16,16>,
+               offset: < 0,33>
+       },
+
+       smallHeroTagFrame: Frame {
+               image: :"small-tag-frame.png",
+               border: <8,16>
+       },
+       lastSmallHeroTagFrame: Frame {
+               image: :"small-tag-frame.png",
+               border: <8,16>,
+               offset: <0,33>
+       },
+       heroesBgColor: (24, 40, 49),
+
+       healthGauge: Gauge {
+               image: :"gauges.png",
+               full:  <0,16>,
+               empty: <0, 0>,
+               height: 16,
+               start:   6,
+               repeat:  1,
+               end:     6
+       },
+       manaGauge: Gauge {
+               image: :"gauges.png",
+               full:  <0,32>,
+               empty: <0, 0>,
+               height: 16,
+               start:   6,
+               repeat:  1,
+               end:     6
+       },
+       ikariGauge: Gauge {
+               image: :"gauges.png",
+               full:  <0,48>,
+               empty: <0, 0>,
+               height: 16,
+               start:   6,
+               repeat:  1,
+               end:     6
+       },
+
+       selectFrame: Frame {
+               image: :"select-frame.png",
+               border: <16,16>
+       },
+       normalFont: normalFont,
+       disabledFont: disabledFont,
+       menuCursor: Sprite {
+               image: :"cursor-hand.png",
+               size: <32,32>
+       },
+
+       weaponTargetCursor: Sprite {
+               image: :"targeting-icons.png",
+               size: <32,32>
+       },
+       magicTargetCursor: Sprite {
+               image: :"targeting-icons.png",
+               size: <32,32>,
+               offset: <0,32>
+       },
+       itemTargetCursor: Sprite {
+               image: :"targeting-icons.png",
+               size: <32,32>,
+               offset: <0,64>
+       },
+
+       weaponMenuIcon: swordIcon,
+       armorMenuIcon: armorIcon,
+       shieldMenuIcon: shieldIcon,
+       helmetMenuIcon: helmetIcon,
+       ringMenuIcon: ringIcon,
+       jewelMenuIcon: jewelIcon,
+
+       spellMenuHeadline: "Please choose a spell.",
+       spellMenuProperties: MenuProperties {
+               font: normalFont,
+               disabledFont: disabledFont,
+               cursor: handCursor,
+               charsPerEntry: 9,
+               rows: 6,
+               rowGap: 8,
+               iconSpace: 0,
+               cols: 2,
+               colGap: 32,
+               charsPerNumber: 2,
+               delimiter: ":"
+       },
+
+       itemMenuHeadline: "Please choose an item.",
+       itemMenuProperties: MenuProperties {
+               font: normalFont,
+               disabledFont: disabledFont,
+               cursor: handCursor,
+               charsPerEntry: 15,
+               rows: 6,
+               rowGap: 8,
+               iconSpace: 16,
+               cols: 1,
+               colGap: 32,
+               charsPerNumber: 2,
+               delimiter: ":"
+       },
+
+       ikariMenuHeadline: "Please choose equipment.",
+       ikariMenuProperties: MenuProperties {
+               font: normalFont,
+               disabledFont: disabledFont,
+               cursor: handCursor,
+               charsPerEntry: 12,
+               rows: 6,
+               rowGap: 8,
+               iconSpace: 16,
+               cols: 1,
+               colGap: 32,
+               charsPerAdditionalText: 12,
+               additionalTextGap: 16
+       },
+       noEquipmentText: "No equip",
 
-export Frame selectFrame {
-       image: :"select-frame.png",
-       border: <16,16>
+       escapeText: "Escapes."
 }
-export Font normalFont {
+
+Font menuFont {
        sprite: Sprite {
-               image: :"normal-font.png",
-               size: <16,16>
+               image: :"menu-font.png",
+               size: <16, 16>
        },
        rowoffset: -2
 }
-export Font disabledFont {
+Font menuInactiveFont {
        sprite: Sprite {
-               image: :"disabled-font.png",
-               size: <16,16>
+               image: :"menu-font-inactive.png",
+               size: <16, 16>
        },
        rowoffset: -2
 }
-export Sprite handCursor {
-       image: :"cursor-hand.png",
-       size: <32,32>
+Sprite menuCursor {
+       image: :"menu-cursor.png",
+       size: <32, 16>
+}
+Sprite menuActiveCursor {
+       image: :"menu-cursor-active.png",
+       size: <32, 18>
+}
+SimpleAnimation menuCursorAnimation {
+       sprite: menuCursor,
+       frametime: fourFramesTime,
+       framecount: 6,
+       repeat: true
+}
+ComplexAnimation menuActiveCursorAnimation {
+       sprite: menuActiveCursor,
+       frametime: fourFramesTime,
+       repeat: true,
+       frames:
+       [ ComplexAnimationFrame
+               { row: 0 },
+               { row: 0 },
+               { row: 0 },
+               { row: 0 },
+               { row: 0 },
+               { row: 0 },
+               { row: 0 },
+               { row: 0 },
+               { row: 1 },
+               { row: 2 },
+               { row: 3 },
+               { row: 4 }
+       ]
 }
 
-export Sprite weaponTargetCursor {
-       image: :"targeting-icons.png",
-       size: <32,32>
-}
-export Sprite magicTargetCursor {
-       image: :"targeting-icons.png",
-       size: <32,32>,
-       offset: <0,32>
-}
-export Sprite itemTargetCursor {
-       image: :"targeting-icons.png",
-       size: <32,32>,
-       offset: <0,64>
+export MenuResources menuResources {
+       menubg: Texture {
+               image: :"menubg.png",
+               size: <64, 64>
+       },
+       normalFont: menuFont,
+       inactiveFont: menuInactiveFont,
+       statusFont: normalFont,
+       statusLabels: Sprite {
+               image: :"status-labels.png",
+               size: <32, 16>
+       },
+       statusFrame: Frame {
+               image: :"status-frame.png",
+               border: <32, 32>,
+               repeat: <32, 32>
+       },
+       mainMenu: MenuProperties {
+               cols: 2,
+               rows: 4,
+               charsPerEntry: 8,
+               rowGap: 8,
+               colGap: 32,
+               cursor: menuCursor,
+               cursorAnimation: menuCursorAnimation,
+               font: menuFont,
+               disabledFont: menuInactiveFont,
+               wrapX: true,
+               wrapY: true
+       },
+       mainMenuItemText: "ITEM",
+       mainMenuSpellText: "SPELL",
+       mainMenuCapsuleText: "CAPSULE",
+       mainMenuEquipmentText: "EQUIP",
+       mainMenuStatusText: "STATUS",
+       mainMenuChangeText: "CHANGE",
+       mainMenuConfigText: "CONFIG",
+       mainMenuScenarioText: "SCENARIO",
+       mainMenuTimeText: "TIME",
+       mainMenuGoldText: "GOLD",
+       heroCursor: Sprite {
+               image: :"hero-cursor.png",
+               size: <64, 16>
+       },
+       heroCursorBlinkTime: 532,
+       noEquipmentText: "No equip",
+       shoulderNav: Sprite {
+               image: :"shoulder-nav.png",
+               size: <160, 16>
+       },
+       atpLabel: "ATP",
+       dfpLabel: "DFP",
+       strLabel: "STR",
+       aglLabel: "AGL",
+       intLabel: "INT",
+       gutLabel: "GUT",
+       mgrLabel: "MGR",
+       hpLabel: "HP",
+       ipLabel: "IP",
+       levelLabel: "LEVEL",
+       experienceLabel: "NOW EXP",
+       nextLevelLabel: "NEXT LEVEL",
+       statusMenu: MenuProperties {
+               cols: 2,
+               rows: 1,
+               charsPerEntry: 6,
+               colGap: 16,
+               cursor: menuCursor,
+               cursorAnimation: menuCursorAnimation,
+               font: menuFont,
+               wrapX: true
+       },
+       nextLabel: "NEXT",
+       returnLabel: "RETURN",
+       itemMenu: MenuProperties {
+               cols: 3,
+               rows: 1,
+               charsPerEntry: 5,
+               rowGap: 8,
+               colGap: 16,
+               cursor: menuCursor,
+               selectedCursor: menuActiveCursor,
+               cursorAnimation: menuCursorAnimation,
+               selectedCursorAnimation: menuActiveCursorAnimation,
+               font: menuFont,
+               wrapX: true,
+               wrapY: true
+       },
+       itemMenuUseText: "USE",
+       itemMenuSortText: "SORT",
+       itemMenuDropText: "DROP",
+       itemMenuSelectText: "SELECT",
+       inventoryMenu: MenuProperties {
+               cols: 1,
+               rows: 6,
+               charsPerEntry: 13,
+               rowGap: 8,
+               cursor: menuCursor,
+               selectedCursor: menuActiveCursor,
+               cursorAnimation: menuCursorAnimation,
+               selectedCursorAnimation: menuActiveCursorAnimation,
+               font: menuFont,
+               disabledFont: menuInactiveFont,
+               iconSpace: 16,
+               charsPerNumber: 2,
+               delimiter: ":",
+               thirdColumnHack: 1
+       },
+       spellMenu: MenuProperties {
+               cols: 2,
+               rows: 6,
+               charsPerEntry: 8,
+               rowGap: 8,
+               colGap: 48,
+               cursor: menuCursor,
+               selectedCursor: menuActiveCursor,
+               cursorAnimation: menuCursorAnimation,
+               selectedCursorAnimation: menuActiveCursorAnimation,
+               font: menuFont,
+               disabledFont: menuInactiveFont,
+               charsPerNumber: 2,
+               delimiter: ":"
+       },
+       equipmentActionMenu: MenuProperties {
+               cols: 1,
+               rows: 5,
+               charsPerEntry: 10,
+               rowGap: 8,
+               cursor: menuCursor,
+               selectedCursor: menuActiveCursor,
+               cursorAnimation: menuCursorAnimation,
+               selectedCursorAnimation: menuActiveCursorAnimation,
+               font: menuFont
+       },
+       equipmentMenu: MenuProperties {
+               cols: 1,
+               rows: 6,
+               charsPerEntry: 12,
+               rowGap: 16,
+               cursor: menuCursor,
+               selectedCursor: menuActiveCursor,
+               cursorAnimation: menuCursorAnimation,
+               selectedCursorAnimation: menuActiveCursorAnimation,
+               font: normalFont,
+               iconSpace: 16,
+               wrapY: true
+       },
+       equipMenuEquipLabel: "EQUIP",
+       equipMenuStrongestLabel: "STRONGEST",
+       equipMenuRemoveLabel: "REMOVE",
+       equipMenuRemoveAllLabel: "REMOVE ALL",
+       equipMenuDropLabel: "DROP",
+       configMenu: MenuProperties {
+               cols: 1,
+               rows: 4,
+               charsPerEntry: 8,
+               rowGap: 32,
+               cursor: menuCursor,
+               cursorAnimation: menuCursorAnimation,
+               font: menuFont,
+               wrapY: true
+       },
+       configMessageSpeedLabel: "MESSAGE\n   SPEED",
+       configMessageSpeedFast: "FAST",
+       configMessageSpeedNormal: "NORMAL",
+       configMessageSpeedSlow: "SLOW",
+       configBattleCursorLabel: "BATTLE\n  CURSOR",
+       configStatusCursorLabel: "STATUS\n  CURSOR",
+       configCursorClear: "CLEAR",
+       configCursorMemory: "MEMORY",
+       configMusicLabel: "MUSIC",
+       configMusicStereo: "STEREO",
+       configMusicMono: "MONO",
+       scenarioMenu: MenuProperties {
+               cols: 1,
+               rows: 6,
+               charsPerEntry: 14,
+               rowGap: 8,
+               cursor: menuCursor,
+               cursorAnimation: menuCursorAnimation,
+               font: menuFont
+       },
+       scenarioMenuHeadline: "SCENARIO ITEM",
+       capsulebg: Texture {
+               image: :"capsulebg.png",
+               size: <64, 64>
+       },
+       capsuleMenu: MenuProperties {
+               cols: 3,
+               rows: 1,
+               charsPerEntry: 7,
+               cursor: menuCursor,
+               selectedCursor: menuActiveCursor,
+               cursorAnimation: menuCursorAnimation,
+               selectedCursorAnimation: menuActiveCursorAnimation,
+               font: menuFont,
+               thirdColumnHack: 2
+       },
+       capsuleFeedMenu: MenuProperties {
+               cols: 2,
+               rows: 1,
+               charsPerEntry: 7,
+               colGap: 32,
+               cursor: menuCursor,
+               selectedCursor: menuActiveCursor,
+               cursorAnimation: menuCursorAnimation,
+               selectedCursorAnimation: menuActiveCursorAnimation,
+               font: menuFont
+       },
+       capsuleFeedLabel: "FEED",
+       capsuleChangeLabel: "CHANGE",
+       capsuleNameLabel: "NAME",
+       capsuleClassLabel: "CLASS",
+       capsuleAlignmentLabel: "ALI.",
+       capsuleTribeLabel: "TRIBE",
+       capsuleAttack1Label: "SP.1",
+       capsuleAttack2Label: "SP.2",
+       capsuleAttack3Label: "SP.3",
+       capsuleNoAttackText: "Nothing",
+       capsuleNotHungryText: "I'm not hungry.",
+       capsuleNameSelect: CharSelect {
+               font: menuFont,
+               cursor: Sprite {
+                       image: :"alpha-cursor.png",
+                       size: <20, 28>
+               },
+               chars: "0123456789ABCDEabcdeFGHIJfghijKLMNOklmnoPQRSTpqrstUVWXYuvwxyZ!?  z!?  ",
+               width: 10,
+               groupX: 5
+       },
+       capsuleSelectTopLeft: Sprite {
+               image: :"capsule-sprites.png",
+               size: <32, 8>,
+               offset: <64, 0>
+       },
+       capsuleSelectTopRight: Sprite {
+               image: :"capsule-sprites.png",
+               size: <32, 8>,
+               offset: <128, 0>
+       },
+       capsuleSelectTopRepeat: Texture {
+               image: :"capsule-sprites.png",
+               size: <32, 8>,
+               offset: <96, 0>
+       },
+       capsuleSelectBottomLeft: Sprite {
+               image: :"capsule-sprites.png",
+               size: <32, 32>,
+               offset: <0, 32>
+       },
+       capsuleSelectBottomRight: Sprite {
+               image: :"capsule-sprites.png",
+               size: <32, 32>,
+               offset: <128, 64>
+       },
+       capsuleSelectBottomRepeat: Sprite {
+               image: :"capsule-sprites.png",
+               size: <32, 32>,
+               offset: <0, 64>
+       },
+       capsuleSelectLeftRepeat: Texture {
+               image: :"capsule-sprites.png",
+               size: <32, 32>
+       },
+       capsuleSelectRightRepeat: Texture {
+               image: :"capsule-sprites.png",
+               size: <32, 32>,
+               offset: <128, 32>
+       },
+       capsuleSelectLadder: Sprite {
+               image: :"capsule-sprites.png",
+               size: <32, 24>,
+               offset: <64, 8>
+       },
+       capsuleSelectCursor: Sprite {
+               image: :"capsule-sprites.png",
+               size: <32, 24>,
+               offset: <128, 8>
+       },
+       capsuleAlignmentWheel: Sprite {
+               image: :"capsule-sprites.png",
+               size: <128, 128>,
+               offset: <0, 128>
+       },
+       capsuleAlignmentCursor: Sprite {
+               image: :"capsule-sprites.png",
+               size: <32, 32>,
+               offset: <128, 128>
+       },
+       capsuleGrowthLabel: Sprite {
+               image: :"capsule-feed.png",
+               size: <32, 10>
+       },
+       capsuleGrowthBar: Sprite {
+               image: :"capsule-feed.png",
+               size: <8, 10>,
+               offset: <8, 10>
+       },
+       capsuleGrowthBarFilled: Sprite {
+               image: :"capsule-feed.png",
+               size: <8, 10>,
+               offset: <0, 10>
+       }
 }
-
-export String spellMenuHeadline "Please choose a spell."
-export String itemMenuHeadline "Please choose an item."
-export String ikariMenuHeadline "Please choose equipment."
-export String noEquipmentText "No equip"
-export String escapeText "Escapes."