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> ] } Sprite lizardSprite { // using pathes relative to project root until path resolution is implemented image: "test-data/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 }, attackAnimation: ComplexAnimation { sprite: lizardSprite, frametime: fourFramesTime, repeat: false, frames: [ { 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: "test-data/attack-monster.png", size: <96,64> }, frametime: frameTime, framecount: 14 } } Sprite maximSprite { image: "test-data/maxim.png", size: <64,64> } export Hero maxim { name: "Maxim", level: 1, sprite: 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 }, attackAnimation: ComplexAnimation { sprite: maximSprite, frametime: frameTime, repeat: false, frames: [ { 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: [ { 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: "test-data/melee-maxim.png", size: <96,96> }, frametime: twoFramesTime, framecount: 4 } } Sprite selanSprite { image: "test-data/selan.png", size: <64,64> } export Hero selan { name: "Selan", level: 1, sprite: 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 }, attackAnimation: ComplexAnimation { sprite: selanSprite, frametime: frameTime, repeat: false, frames: [ { 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: [ { 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: "test-data/melee-selan.png", size: <96,96> }, frametime: twoFramesTime, framecount: 4 } } Sprite guySprite { image: "test-data/guy.png", size: <64,64> } export Hero guy { name: "Guy", level: 1, sprite: 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 }, attackAnimation: ComplexAnimation { sprite: guySprite, frametime: frameTime, repeat: false, frames: [ { 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: "test-data/melee-guy.png", size: <96,96> }, frametime: fourFramesTime, framecount: 4 } } Sprite dekarSprite { image: "test-data/dekar.png", size: <64,64> } export Hero dekar { name: "Dekar", level: 1, sprite: 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 }, attackAnimation: ComplexAnimation { sprite: dekarSprite, frametime: frameTime, repeat: false, frames: [ { 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: [ { 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: "test-data/melee-dekar.png", size: <96,96> }, frametime: twoFramesTime, framecount: 4 } } export Sprite swapCursor { image: "test-data/swap-cursor.png", size: <32,32> } export Sprite attackIcons { image: "test-data/attack-type-icons.png", size: <32,32> } export Sprite attackChoiceIcons { image: "test-data/attack-choice-icons.png", size: <16,16> } export Sprite moveIcons { image: "test-data/move-icons.png", size: <32,32> } export Frame titleFrame { image: "test-data/title-frame.png", border: <16,16> } export Font largeFont { sprite: Sprite { image: "test-data/large-font.png", size: <16,32> }, 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: "test-data/big-numbers.png", size: <16,32> } export Sprite bigGreenNumbers { image: "test-data/big-green-numbers.png", size: <16,32> } export Sprite heroTagLabels { image: "test-data/hero-tag-sprites.png", size: <32,16> } export Font heroTagFont { sprite: Sprite { image: "test-data/numbers.png", size: <16,16> }, rowoffset: -3 } export Frame activeHeroTagFrame { image: "test-data/tag-frames.png", border: <16,16> } export Frame heroTagFrame { image: "test-data/tag-frames.png", border: <16,16>, offset: < 0,33> } export Frame smallHeroTagFrame { image: "test-data/small-tag-frame.png", border: <8,16> } export Frame lastSmallHeroTagFrame { image: "test-data/small-tag-frame.png", border: <8,16>, offset: <0,33> } export Gauge healthGauge { image: "test-data/gauges.png", full: <0,16>, empty: <0, 0>, height: 16, start: 6, repeat: 1, end: 6 } export Gauge manaGauge { image: "test-data/gauges.png", full: <0,32>, empty: <0, 0>, height: 16, start: 6, repeat: 1, end: 6 } export Gauge ikariGauge { image: "test-data/gauges.png", full: <0,48>, empty: <0, 0>, height: 16, start: 6, repeat: 1, end: 6 } export Frame selectFrame { image: "test-data/select-frame.png", border: <16,16> } export Font normalFont { sprite: Sprite { image: "test-data/normal-font.png", size: <16,16> }, rowoffset: -2 } export Font disabledFont { sprite: Sprite { image: "test-data/disabled-font.png", size: <16,16> }, rowoffset: -2 } export Sprite handCursor { image: "test-data/cursor-hand.png", size: <32,32> } export Sprite weaponTargetCursor { image: "test-data/targeting-icons.png", size: <32,32> } export Sprite magicTargetCursor { image: "test-data/targeting-icons.png", size: <32,32>, offset: <0,32> } export Sprite itemTargetCursor { image: "test-data/targeting-icons.png", size: <32,32>, offset: <0,64> }