]> git.localhorst.tv Git - l2e.git/blobdiff - test-data/test.l2s
put stat increments in level ladder
[l2e.git] / test-data / test.l2s
index 36c119aab537580fdc4f5686c90dd979a91ebcbb..7b187aafbeaf4d62228c57a90afb8fe818818162 100644 (file)
@@ -1,3 +1,7 @@
+include "ikaris.l2h"
+include "items.l2h"
+include "spells.l2h"
+
 Number frameTime 33
 Number twoFramesTime 66
 Number fourFramesTime 132
@@ -16,13 +20,13 @@ export PartyLayout heroesLayout {
                < 48,136>,
                <128,136>,
                < 80,152>,
-               <160,152>
+               <160,152>,
+               <216,144>
        ]
 }
 
 Sprite lizardSprite {
-       // using pathes relative to project root until path resolution is implemented
-       image: "test-data/monster.png",
+       image: :"monster.png",
        size: <64,64>
 }
 
@@ -41,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> },
@@ -54,7 +61,7 @@ export Monster lizard {
        },
        meleeAnimation: SimpleAnimation {
                sprite: Sprite {
-                       image: "test-data/attack-monster.png",
+                       image: :"attack-monster.png",
                        size: <96,64>
                },
                frametime: frameTime,
@@ -63,13 +70,13 @@ export Monster lizard {
 }
 
 Sprite maximSprite {
-       image: "test-data/maxim.png",
+       image: :"maxim.png",
        size: <64,64>
 }
 export Hero maxim {
        name: "Maxim",
        level: 1,
-       sprite: maximSprite,
+       battleSprite: maximSprite,
        maxHealth: 33,
        health: 33,
        maxMana: 20,
@@ -84,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> },
@@ -122,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> }
@@ -130,22 +144,33 @@ export Hero maxim {
        },
        meleeAnimation: SimpleAnimation {
                sprite: Sprite {
-                       image: "test-data/melee-maxim.png",
+                       image: :"melee-maxim.png",
                        size: <96,96>
                },
                frametime: twoFramesTime,
                framecount: 4
+       },
+       mapEntity: Entity {
+               animation: SimpleAnimation{
+                       sprite: Sprite {
+                               image: :"maxim-map.png",
+                               size: <32,64>
+                       },
+                       frametime: 120,
+                       framecount: 2
+               },
+               spriteOffset: <0,-32>
        }
 }
 
 Sprite selanSprite {
-       image: "test-data/selan.png",
+       image: :"selan.png",
        size: <64,64>
 }
 export Hero selan {
        name: "Selan",
        level: 1,
-       sprite: selanSprite,
+       battleSprite: selanSprite,
        maxHealth: 28,
        health: 28,
        maxMana: 23,
@@ -160,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> },
@@ -185,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> },
@@ -200,22 +228,33 @@ export Hero selan {
        },
        meleeAnimation: SimpleAnimation {
                sprite: Sprite {
-                       image: "test-data/melee-selan.png",
+                       image: :"melee-selan.png",
                        size: <96,96>
                },
                frametime: twoFramesTime,
                framecount: 4
+       },
+       mapEntity: Entity {
+               animation: SimpleAnimation{
+                       sprite: Sprite {
+                               image: :"selan-map.png",
+                               size: <32,64>
+                       },
+                       frametime: 120,
+                       framecount: 2
+               },
+               spriteOffset: <0,-32>
        }
 }
 
 Sprite guySprite {
-       image: "test-data/guy.png",
+       image: :"guy.png",
        size: <64,64>
 }
 export Hero guy {
        name: "Guy",
        level: 1,
-       sprite: guySprite,
+       battleSprite: guySprite,
        maxHealth: 38,
        health: 38,
        maxMana: 0,
@@ -230,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> },
@@ -253,22 +294,33 @@ export Hero guy {
        },
        meleeAnimation: SimpleAnimation {
                sprite: Sprite {
-                       image: "test-data/melee-guy.png",
+                       image: :"melee-guy.png",
                        size: <96,96>
                },
                frametime: fourFramesTime,
                framecount: 4
+       },
+       mapEntity: Entity {
+               animation: SimpleAnimation{
+                       sprite: Sprite {
+                               image: :"guy-map.png",
+                               size: <32,64>
+                       },
+                       frametime: 120,
+                       framecount: 2
+               },
+               spriteOffset: <0,-32>
        }
 }
 
 Sprite dekarSprite {
-       image: "test-data/dekar.png",
+       image: :"dekar.png",
        size: <64,64>
 }
 export Hero dekar {
        name: "Dekar",
        level: 1,
-       sprite: dekarSprite,
+       battleSprite: dekarSprite,
        maxHealth: 38,
        health: 38,
        maxMana: 0,
@@ -283,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> },
@@ -308,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> },
@@ -324,82 +379,630 @@ export Hero dekar {
        },
        meleeAnimation: SimpleAnimation {
                sprite: Sprite {
-                       image: "test-data/melee-dekar.png",
+                       image: :"melee-dekar.png",
                        size: <96,96>
                },
                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: "test-data/swap-cursor.png",
+Sprite handCursor {
+       image: :"cursor-hand.png",
        size: <32,32>
 }
-export Sprite attackIcons {
-       image: "test-data/attack-type-icons.png",
-       size: <32,32>
+
+Font normalFont {
+       sprite: Sprite {
+               image: :"normal-font.png",
+               size: <16,16>
+       },
+       rowoffset: -2
 }
-export Sprite attackChoiceIcons {
-       image: "test-data/attack-choice-icons.png",
-       size: <16,16>
+
+Font disabledFont {
+       sprite: Sprite {
+               image: :"disabled-font.png",
+               size: <16,16>
+       },
+       rowoffset: -2
 }
-export Sprite moveIcons {
-       image: "test-data/move-icons.png",
-       size: <32,32>
+
+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>
+       },
+
+       titleFrame: Frame {
+               image: :"title-frame.png",
+               border: <16,16>
+       },
+       titleFont: Font {
+               sprite: Sprite {
+                       image: :"large-font.png",
+                       size: <16,32>
+               },
+               rowoffset: -2
+       },
+
+       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",
+
+       escapeText: "Escapes."
 }
 
-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> }
-       ]
+Font menuFont {
+       sprite: Sprite {
+               image: :"menu-font.png",
+               size: <16, 16>
+       },
+       rowoffset: -2
+}
+Font menuInactiveFont {
+       sprite: Sprite {
+               image: :"menu-font-inactive.png",
+               size: <16, 16>
+       },
+       rowoffset: -2
+}
+Sprite menuCursor {
+       image: :"menu-cursor.png",
+       size: <32, 16>
 }
-export Sprite bigNumbers {
-       image: "test-data/big-numbers.png",
-       size: <16,32>
+Sprite menuActiveCursor {
+       image: :"menu-cursor-active.png",
+       size: <32, 18>
 }
-export Sprite bigGreenNumbers {
-       image: "test-data/big-green-numbers.png",
-       size: <16,32>
+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 heroTagLabels {
-       image: "test-data/hero-tag-sprites.png",
-       size: <32,16>
+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>
+       }
 }