X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=test-data%2Ftest.l2s;h=1267b9f9854ffcd979177574d6331d78c0e85250;hb=f552d26f537af9fa48255bd71cdc1a0a1b860bac;hp=7357381f1d5fe682ffc942badb467ae5a3741d17;hpb=05112fcfdbd0c452c80b6786bf6121d6f63b852a;p=l2e.git diff --git a/test-data/test.l2s b/test-data/test.l2s index 7357381..1267b9f 100644 --- a/test-data/test.l2s +++ b/test-data/test.l2s @@ -1,13 +1,37 @@ +include "ikaris.l2h" +include "items.l2h" +include "spells.l2h" + Number frameTime 33 Number twoFramesTime 66 -Number fiveFramesTime 165 +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 { + image: :"monster.png", + size: <64,64> +} export Monster lizard { name: "Lizard", - sprite: Sprite { - image: "monster.png", - size: <64,64> - }, + sprite: lizardSprite, level: 1, maxHealth: 8, health: 8, @@ -20,9 +44,21 @@ export Monster lizard { gut: 6, mgr: 6 }, - attackAnimation: SimpleAnimation { + 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", + image: :"attack-monster.png", size: <96,64> }, frametime: frameTime, @@ -31,13 +67,13 @@ export Monster lizard { } Sprite maximSprite { - image: "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, @@ -52,11 +88,15 @@ export Hero maxim { gut: 100, mgr: 10 }, + ladder: [ + 10 + ], 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> }, @@ -90,7 +130,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> } @@ -98,10 +139,508 @@ export Hero maxim { }, meleeAnimation: SimpleAnimation { sprite: Sprite { - image: "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: :"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 + }, + 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 + }, + 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 + }, + 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." +} \ No newline at end of file