include "ikaris.l2h" include "items.l2h" include "spells.l2h" Number frameTime 33 Number twoFramesTime 66 Number fourFramesTime 132 Number fiveFramesTime 165 // darn, i really need to implement expressions export PartyLayout monstersLayout { positions: [ < 88, 88>, <128, 88>, <168, 88>, <208, 88> ] } export PartyLayout heroesLayout { positions: [ < 48,136>, <128,136>, < 80,152>, <160,152>, <216,144> ] } Sprite lizardSprite { image: :"monster.png", size: <64,64> } export Monster lizard { name: "Lizard", sprite: lizardSprite, level: 1, maxHealth: 8, health: 8, stats: Stats { atp: 14, dfp: 6, str: 6, agl: 6, int: 6, gut: 6, mgr: 6 }, expReward: 8, goldReward: 5, attackAnimation: ComplexAnimation { sprite: lizardSprite, frametime: fourFramesTime, repeat: false, frames: [ ComplexAnimationFrame { column: 0, row: 1, disposition: < 0, 16> }, { column: 0, row: 0, disposition: < 0, 16> }, { column: 0, row: 1, disposition: < 0, 16> }, { column: 0, row: 0, disposition: < 0, 16> } ] }, meleeAnimation: SimpleAnimation { sprite: Sprite { image: :"attack-monster.png", size: <96,64> }, frametime: frameTime, framecount: 14 } } Sprite maximSprite { image: :"maxim.png", size: <64,64> } export Hero maxim { name: "Maxim", level: 1, battleSprite: maximSprite, maxHealth: 33, health: 33, maxMana: 20, mana: 20, ip: 0, stats: Stats { atp: 28, dfp: 22, str: 28, agl: 17, int: 14, 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: [ ComplexAnimationFrame { column: 1, row: 0, disposition: < 0, 0> }, { column: 1, row: 0, disposition: < 0, 0> }, { column: 1, row: 0, disposition: < 0, 0> }, { column: 1, row: 0, disposition: < 0, 0> }, { column: 1, row: 0, disposition: < 0, 0> }, { column: 1, row: 0, disposition: < 0, 0> }, { column: 1, row: 0, disposition: < 0, 0> }, { column: 1, row: 0, disposition: < 4,-1> }, { column: 1, row: 0, disposition: < 4,-1> }, { column: 2, row: 0, disposition: < 4,-2> }, { column: 2, row: 0, disposition: < 4,-2> }, { column: 2, row: 0, disposition: < 6,-2> }, { column: 2, row: 0, disposition: < 6,-2> }, { column: 2, row: 1, disposition: < 6,-1> }, { column: 2, row: 1, disposition: < 3,-1> }, { column: 2, row: 1, disposition: < 3,-1> }, { column: 2, row: 1, disposition: < 0, 0> }, { column: 2, row: 2, disposition: < 0, 0> }, { column: 2, row: 2, disposition: < 0, 0> }, { column: 2, row: 2, disposition: < 2, 0> }, { column: 1, row: 0, disposition: < 0, 0> }, { column: 1, row: 0, disposition: < 0, 0> }, { column: 1, row: 0, disposition: < 0, 0> }, { column: 1, row: 0, disposition: < 0, 0> }, { column: 1, row: 0, disposition: < 0, 0> }, { column: 1, row: 0, disposition: < 0, 0> }, { column: 1, row: 0, disposition: < 0, 0> } ] }, spellAnimation: ComplexAnimation { sprite: maximSprite, frametime: fiveFramesTime, repeat: false, frames: [ ComplexAnimationFrame { column: 3, row: 0, disposition: < 0, 0> }, { column: 3, row: 0, disposition: < 0, 0> }, { column: 3, row: 1, disposition: < 0, 0> } ] }, meleeAnimation: SimpleAnimation { sprite: Sprite { 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: :"selan.png", size: <64,64> } export Hero selan { name: "Selan", level: 1, battleSprite: selanSprite, maxHealth: 28, health: 28, maxMana: 23, mana: 23, ip: 0, stats: Stats { atp: 23, dfp: 21, str: 23, agl: 19, int: 22, gut: 80, mgr: 13 }, useMask: maskSelan, attackAnimation: ComplexAnimation { sprite: selanSprite, frametime: frameTime, repeat: false, frames: [ ComplexAnimationFrame { column: 1, row: 0, disposition: < 4, 0> }, { column: 1, row: 0, disposition: < 4, 0> }, { column: 1, row: 0, disposition: < 8, 2> }, { column: 2, row: 0, disposition: <10, 4> }, { column: 2, row: 0, disposition: <14, 4> }, { column: 2, row: 0, disposition: <12, 2> }, { column: 2, row: 0, disposition: <12, 2> }, { column: 2, row: 0, disposition: <12, 2> }, { column: 2, row: 1, disposition: <14, 2> }, { column: 2, row: 1, disposition: <14, 2> }, { column: 2, row: 1, disposition: < 2, 0> }, { column: 2, row: 2, disposition: <-2,-4> }, { column: 2, row: 2, disposition: <-8,-8> }, { column: 2, row: 2, disposition: < 0, 0> } ] }, spellAnimation: ComplexAnimation { sprite: selanSprite, frametime: frameTime, repeat: false, frames: [ ComplexAnimationFrame { column: 3, row: 0, disposition: < 0, 0> }, { column: 3, row: 0, disposition: < 0, 0> }, { column: 3, row: 0, disposition: < 0, 0> }, { column: 3, row: 1, disposition: < 0, 0> }, { column: 3, row: 1, disposition: < 0, 0> }, { column: 3, row: 2, disposition: < 0, 0> }, { column: 3, row: 2, disposition: < 0, 0> }, { column: 3, row: 2, disposition: < 0, 0> }, { column: 3, row: 3, disposition: < 0, 0> }, { column: 3, row: 3, disposition: < 0, 0> } ] }, meleeAnimation: SimpleAnimation { sprite: Sprite { 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: :"guy.png", size: <64,64> } export Hero guy { name: "Guy", level: 1, battleSprite: guySprite, maxHealth: 38, health: 38, maxMana: 0, mana: 0, ip: 0, stats: Stats { atp: 38, dfp: 25, str: 38, agl: 13, int: 8, gut: 90, mgr: 8 }, useMask: maskGuy, attackAnimation: ComplexAnimation { sprite: guySprite, frametime: frameTime, repeat: false, frames: [ ComplexAnimationFrame { column: 1, row: 0, disposition: <-4, 0> }, { column: 1, row: 0, disposition: <-4, 0> }, { column: 1, row: 0, disposition: <-8, 0> }, { column: 1, row: 0, disposition: <-8, 0> }, { column: 2, row: 0, disposition: <-8, 0> }, { column: 2, row: 0, disposition: <-8, 0> }, { column: 2, row: 0, disposition: <-4, 0> }, { column: 2, row: 0, disposition: < 0, 0> }, { column: 2, row: 0, disposition: < 0, 0> }, { column: 2, row: 1, disposition: < 0, 0> }, { column: 2, row: 1, disposition: < 4, 0> }, { column: 2, row: 1, disposition: <10, 0> }, { column: 2, row: 2, disposition: <10, 0> }, { column: 2, row: 2, disposition: < 0, 0> } ] }, meleeAnimation: SimpleAnimation { sprite: Sprite { 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: :"dekar.png", size: <64,64> } export Hero dekar { name: "Dekar", level: 1, battleSprite: dekarSprite, maxHealth: 38, health: 38, maxMana: 0, mana: 0, ip: 0, stats: Stats { atp: 46, dfp: 29, str: 46, agl: 13, int: 7, gut: 100, mgr: 5 }, useMask: maskDekar, attackAnimation: ComplexAnimation { sprite: dekarSprite, frametime: frameTime, repeat: false, frames: [ ComplexAnimationFrame { column: 1, row: 0, disposition: < 4, 0> }, { column: 1, row: 0, disposition: < 8, 2> }, { column: 2, row: 0, disposition: <12, 4> }, { column: 2, row: 0, disposition: <16, 4> }, { column: 2, row: 0, disposition: <10, 2> }, { column: 2, row: 0, disposition: <10, 2> }, { column: 2, row: 0, disposition: <10, 2> }, { column: 2, row: 0, disposition: <10, 2> }, { column: 2, row: 1, disposition: < 6, 2> }, { column: 2, row: 1, disposition: < 0, 0> }, { column: 2, row: 2, disposition: <-2, 0> }, { column: 2, row: 2, disposition: < 0, 0> }, { column: 2, row: 2, disposition: < 0, 0> }, { column: 2, row: 2, disposition: < 0, 0> } ] }, spellAnimation: ComplexAnimation { sprite: dekarSprite, frametime: twoFramesTime, repeat: false, frames: [ ComplexAnimationFrame { column: 3, row: 0, disposition: < 0, 0> }, { column: 3, row: 0, disposition: < 0, 0> }, { column: 3, row: 0, disposition: < 0, 0> }, { column: 3, row: 0, disposition: < 0, 0> }, { column: 3, row: 0, disposition: < 0, 0> }, { column: 3, row: 0, disposition: < 0, 0> }, { column: 3, row: 1, disposition: < 0, 0> }, { column: 3, row: 1, disposition: < 0, 0> }, { column: 3, row: 2, disposition: < 0, 0> }, { column: 3, row: 2, disposition: < 0, 0> }, { column: 3, row: 2, disposition: < 0, 0> } ] }, meleeAnimation: SimpleAnimation { sprite: Sprite { 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> } } Sprite handCursor { image: :"cursor-hand.png", size: <32,32> } Font normalFont { sprite: Sprite { image: :"normal-font.png", size: <16,16> }, rowoffset: -2 } Font disabledFont { sprite: Sprite { image: :"disabled-font.png", size: <16,16> }, rowoffset: -2 } 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.", defeatText: "Total Defeat.", victoryGetsText: "Gets", victoryExpText: "EXP", victoryGoldText: "GOLD", victoryLevelUpText: "levels up", victoryUpgradeText: "increases by", victoryNextLevelText: "NXT.LEVEL", victoryMHPText: "Max. HP", victoryMMPText: "Max. MP", victoryATPText: "ATP", victoryDFPText: "DFP", victorySTRText: "STR", victoryAGLText: "AGL", victoryINTText: "INT", victoryGUTText: "GUT", victoryMGRText: "MGR" } 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> } 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 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> } }