6 Number twoFramesTime 66
7 Number fourFramesTime 132
8 Number fiveFramesTime 165 // darn, i really need to implement expressions
10 export PartyLayout monstersLayout {
18 export PartyLayout heroesLayout {
29 image: :"monster.png",
33 export Monster lizard {
50 attackAnimation: ComplexAnimation {
52 frametime: fourFramesTime,
55 [ ComplexAnimationFrame
56 { column: 0, row: 1, disposition: < 0, 16> },
57 { column: 0, row: 0, disposition: < 0, 16> },
58 { column: 0, row: 1, disposition: < 0, 16> },
59 { column: 0, row: 0, disposition: < 0, 16> }
62 meleeAnimation: SimpleAnimation {
64 image: :"attack-monster.png",
79 battleSprite: maximSprite,
95 // insensible test data
96 { exp: 10, maxHP: 5, maxMP: 3, atp: 2, str: 1 }
99 attackAnimation: ComplexAnimation {
101 frametime: frameTime,
104 [ ComplexAnimationFrame
105 { column: 1, row: 0, disposition: < 0, 0> },
106 { column: 1, row: 0, disposition: < 0, 0> },
107 { column: 1, row: 0, disposition: < 0, 0> },
108 { column: 1, row: 0, disposition: < 0, 0> },
109 { column: 1, row: 0, disposition: < 0, 0> },
110 { column: 1, row: 0, disposition: < 0, 0> },
111 { column: 1, row: 0, disposition: < 0, 0> },
112 { column: 1, row: 0, disposition: < 4,-1> },
113 { column: 1, row: 0, disposition: < 4,-1> },
114 { column: 2, row: 0, disposition: < 4,-2> },
115 { column: 2, row: 0, disposition: < 4,-2> },
116 { column: 2, row: 0, disposition: < 6,-2> },
117 { column: 2, row: 0, disposition: < 6,-2> },
118 { column: 2, row: 1, disposition: < 6,-1> },
119 { column: 2, row: 1, disposition: < 3,-1> },
120 { column: 2, row: 1, disposition: < 3,-1> },
121 { column: 2, row: 1, disposition: < 0, 0> },
122 { column: 2, row: 2, disposition: < 0, 0> },
123 { column: 2, row: 2, disposition: < 0, 0> },
124 { column: 2, row: 2, disposition: < 2, 0> },
125 { column: 1, row: 0, disposition: < 0, 0> },
126 { column: 1, row: 0, disposition: < 0, 0> },
127 { column: 1, row: 0, disposition: < 0, 0> },
128 { column: 1, row: 0, disposition: < 0, 0> },
129 { column: 1, row: 0, disposition: < 0, 0> },
130 { column: 1, row: 0, disposition: < 0, 0> },
131 { column: 1, row: 0, disposition: < 0, 0> }
134 spellAnimation: ComplexAnimation {
136 frametime: fiveFramesTime,
139 [ ComplexAnimationFrame
140 { column: 3, row: 0, disposition: < 0, 0> },
141 { column: 3, row: 0, disposition: < 0, 0> },
142 { column: 3, row: 1, disposition: < 0, 0> }
145 meleeAnimation: SimpleAnimation {
147 image: :"melee-maxim.png",
150 frametime: twoFramesTime,
154 animation: SimpleAnimation{
156 image: :"maxim-map.png",
162 spriteOffset: <0,-32>
173 battleSprite: selanSprite,
189 attackAnimation: ComplexAnimation {
191 frametime: frameTime,
194 [ ComplexAnimationFrame
195 { column: 1, row: 0, disposition: < 4, 0> },
196 { column: 1, row: 0, disposition: < 4, 0> },
197 { column: 1, row: 0, disposition: < 8, 2> },
198 { column: 2, row: 0, disposition: <10, 4> },
199 { column: 2, row: 0, disposition: <14, 4> },
200 { column: 2, row: 0, disposition: <12, 2> },
201 { column: 2, row: 0, disposition: <12, 2> },
202 { column: 2, row: 0, disposition: <12, 2> },
203 { column: 2, row: 1, disposition: <14, 2> },
204 { column: 2, row: 1, disposition: <14, 2> },
205 { column: 2, row: 1, disposition: < 2, 0> },
206 { column: 2, row: 2, disposition: <-2,-4> },
207 { column: 2, row: 2, disposition: <-8,-8> },
208 { column: 2, row: 2, disposition: < 0, 0> }
211 spellAnimation: ComplexAnimation {
213 frametime: frameTime,
216 [ ComplexAnimationFrame
217 { column: 3, row: 0, disposition: < 0, 0> },
218 { column: 3, row: 0, disposition: < 0, 0> },
219 { column: 3, row: 0, disposition: < 0, 0> },
220 { column: 3, row: 1, disposition: < 0, 0> },
221 { column: 3, row: 1, disposition: < 0, 0> },
222 { column: 3, row: 2, disposition: < 0, 0> },
223 { column: 3, row: 2, disposition: < 0, 0> },
224 { column: 3, row: 2, disposition: < 0, 0> },
225 { column: 3, row: 3, disposition: < 0, 0> },
226 { column: 3, row: 3, disposition: < 0, 0> }
229 meleeAnimation: SimpleAnimation {
231 image: :"melee-selan.png",
234 frametime: twoFramesTime,
238 animation: SimpleAnimation{
240 image: :"selan-map.png",
246 spriteOffset: <0,-32>
257 battleSprite: guySprite,
273 attackAnimation: ComplexAnimation {
275 frametime: frameTime,
278 [ ComplexAnimationFrame
279 { column: 1, row: 0, disposition: <-4, 0> },
280 { column: 1, row: 0, disposition: <-4, 0> },
281 { column: 1, row: 0, disposition: <-8, 0> },
282 { column: 1, row: 0, disposition: <-8, 0> },
283 { column: 2, row: 0, disposition: <-8, 0> },
284 { column: 2, row: 0, disposition: <-8, 0> },
285 { column: 2, row: 0, disposition: <-4, 0> },
286 { column: 2, row: 0, disposition: < 0, 0> },
287 { column: 2, row: 0, disposition: < 0, 0> },
288 { column: 2, row: 1, disposition: < 0, 0> },
289 { column: 2, row: 1, disposition: < 4, 0> },
290 { column: 2, row: 1, disposition: <10, 0> },
291 { column: 2, row: 2, disposition: <10, 0> },
292 { column: 2, row: 2, disposition: < 0, 0> }
295 meleeAnimation: SimpleAnimation {
297 image: :"melee-guy.png",
300 frametime: fourFramesTime,
304 animation: SimpleAnimation{
306 image: :"guy-map.png",
312 spriteOffset: <0,-32>
323 battleSprite: dekarSprite,
339 attackAnimation: ComplexAnimation {
341 frametime: frameTime,
344 [ ComplexAnimationFrame
345 { column: 1, row: 0, disposition: < 4, 0> },
346 { column: 1, row: 0, disposition: < 8, 2> },
347 { column: 2, row: 0, disposition: <12, 4> },
348 { column: 2, row: 0, disposition: <16, 4> },
349 { column: 2, row: 0, disposition: <10, 2> },
350 { column: 2, row: 0, disposition: <10, 2> },
351 { column: 2, row: 0, disposition: <10, 2> },
352 { column: 2, row: 0, disposition: <10, 2> },
353 { column: 2, row: 1, disposition: < 6, 2> },
354 { column: 2, row: 1, disposition: < 0, 0> },
355 { column: 2, row: 2, disposition: <-2, 0> },
356 { column: 2, row: 2, disposition: < 0, 0> },
357 { column: 2, row: 2, disposition: < 0, 0> },
358 { column: 2, row: 2, disposition: < 0, 0> }
361 spellAnimation: ComplexAnimation {
363 frametime: twoFramesTime,
366 [ ComplexAnimationFrame
367 { column: 3, row: 0, disposition: < 0, 0> },
368 { column: 3, row: 0, disposition: < 0, 0> },
369 { column: 3, row: 0, disposition: < 0, 0> },
370 { column: 3, row: 0, disposition: < 0, 0> },
371 { column: 3, row: 0, disposition: < 0, 0> },
372 { column: 3, row: 0, disposition: < 0, 0> },
373 { column: 3, row: 1, disposition: < 0, 0> },
374 { column: 3, row: 1, disposition: < 0, 0> },
375 { column: 3, row: 2, disposition: < 0, 0> },
376 { column: 3, row: 2, disposition: < 0, 0> },
377 { column: 3, row: 2, disposition: < 0, 0> }
380 meleeAnimation: SimpleAnimation {
382 image: :"melee-dekar.png",
385 frametime: twoFramesTime,
389 animation: SimpleAnimation{
391 image: :"dekar-map.png",
397 spriteOffset: <0,-32>
402 image: :"cursor-hand.png",
408 image: :"normal-font.png",
416 image: :"disabled-font.png",
422 export BattleResources battleResources {
424 image: :"swap-cursor.png",
427 attackIcons: Sprite {
428 image: :"attack-type-icons.png",
431 attackChoiceIcons: Sprite {
432 image: :"attack-choice-icons.png",
436 image: :"move-icons.png",
441 image: :"title-frame.png",
446 image: :"large-font.png",
452 numberAnimationPrototype: ComplexAnimation {
453 frametime: frameTime,
456 [ ComplexAnimationFrame
457 { column: 0, row: 0, disposition: < 0, 0> },
458 { column: 0, row: 0, disposition: < 0,-26> },
459 { column: 0, row: 0, disposition: < 0,-42> },
460 { column: 0, row: 0, disposition: < 0,-48> },
461 { column: 0, row: 0, disposition: < 0,-42> },
462 { column: 0, row: 0, disposition: < 0,-26> },
463 { column: 0, row: 0, disposition: < 0, 0> },
464 { column: 0, row: 0, disposition: < 0,-12> },
465 { column: 0, row: 0, disposition: < 0,-20> },
466 { column: 0, row: 0, disposition: < 0,-24> },
467 { column: 0, row: 0, disposition: < 0,-20> },
468 { column: 0, row: 0, disposition: < 0,-12> },
469 { column: 0, row: 0, disposition: < 0, 0> },
470 { column: 0, row: 0, disposition: < 0, -6> },
471 { column: 0, row: 0, disposition: < 0,-10> },
472 { column: 0, row: 0, disposition: < 0,-12> },
473 { column: 0, row: 0, disposition: < 0,-10> },
474 { column: 0, row: 0, disposition: < 0, -6> },
475 { column: 0, row: 0, disposition: < 0, 0> },
476 { column: 0, row: 0, disposition: < 0, 0> },
477 { column: 0, row: 0, disposition: < 0, 0> },
478 { column: 0, row: 0, disposition: < 0, 0> },
479 { column: 0, row: 0, disposition: < 0, 0> },
480 { column: 0, row: 0, disposition: < 0, 0> },
481 { column: 0, row: 0, disposition: < 0, 0> },
482 { column: 0, row: 0, disposition: < 0, 0> },
483 { column: 0, row: 0, disposition: < 0, 0> },
484 { column: 0, row: 0, disposition: < 0, 0> },
485 { column: 0, row: 0, disposition: < 0, 0> },
486 { column: 0, row: 0, disposition: < 0, 0> },
487 { column: 0, row: 0, disposition: < 0, 0> },
488 { column: 0, row: 0, disposition: < 0, 0> },
489 { column: 0, row: 0, disposition: < 0,-36> },
490 { column: 0, row: 0, disposition: < 0,-32> },
491 { column: 0, row: 0, disposition: < 0,-18> }
494 bigNumberSprite: Sprite {
495 image: :"big-numbers.png",
498 greenNumberSprite: Sprite {
499 image: :"big-green-numbers.png",
503 heroTagLabels: Sprite {
504 image: :"hero-tag-sprites.png",
519 image: :"numbers.png",
525 activeHeroTagFrame: Frame {
526 image: :"tag-frames.png",
529 heroTagFrame: Frame {
530 image: :"tag-frames.png",
535 smallHeroTagFrame: Frame {
536 image: :"small-tag-frame.png",
539 lastSmallHeroTagFrame: Frame {
540 image: :"small-tag-frame.png",
544 heroesBgColor: (24, 40, 49),
547 image: :"gauges.png",
556 image: :"gauges.png",
565 image: :"gauges.png",
575 image: :"select-frame.png",
578 normalFont: normalFont,
579 disabledFont: disabledFont,
581 image: :"cursor-hand.png",
585 weaponTargetCursor: Sprite {
586 image: :"targeting-icons.png",
589 magicTargetCursor: Sprite {
590 image: :"targeting-icons.png",
594 itemTargetCursor: Sprite {
595 image: :"targeting-icons.png",
600 weaponMenuIcon: swordIcon,
601 armorMenuIcon: armorIcon,
602 shieldMenuIcon: shieldIcon,
603 helmetMenuIcon: helmetIcon,
604 ringMenuIcon: ringIcon,
605 jewelMenuIcon: jewelIcon,
607 spellMenuHeadline: "Please choose a spell.",
608 spellMenuProperties: MenuProperties {
610 disabledFont: disabledFont,
622 itemMenuHeadline: "Please choose an item.",
623 itemMenuProperties: MenuProperties {
625 disabledFont: disabledFont,
637 ikariMenuHeadline: "Please choose equipment.",
638 ikariMenuProperties: MenuProperties {
640 disabledFont: disabledFont,
648 charsPerAdditionalText: 12,
649 additionalTextGap: 16
651 noEquipmentText: "No equip",
653 escapeText: "Escapes.",
655 victoryGetsText: "Gets",
656 victoryExpText: "EXP",
657 victoryGoldText: "GOLD",
658 victoryLevelUpText: "levels up",
659 victoryUpgradeText: "increases by",
660 victoryNextLevelText: "NXT.LEVEL",
662 victoryMHPText: "Max. HP",
663 victoryMMPText: "Max. MP",
664 victoryATPText: "ATP",
665 victoryDFPText: "DFP",
666 victorySTRText: "STR",
667 victoryAGLText: "AGL",
668 victoryINTText: "INT",
669 victoryGUTText: "GUT",
670 victoryMGRText: "MGR"
675 image: :"menu-font.png",
680 Font menuInactiveFont {
682 image: :"menu-font-inactive.png",
688 image: :"menu-cursor.png",
691 Sprite menuActiveCursor {
692 image: :"menu-cursor-active.png",
695 SimpleAnimation menuCursorAnimation {
697 frametime: fourFramesTime,
701 ComplexAnimation menuActiveCursorAnimation {
702 sprite: menuActiveCursor,
703 frametime: fourFramesTime,
706 [ ComplexAnimationFrame
722 export MenuResources menuResources {
724 image: :"menubg.png",
727 normalFont: menuFont,
728 inactiveFont: menuInactiveFont,
729 statusFont: normalFont,
730 statusLabels: Sprite {
731 image: :"status-labels.png",
735 image: :"status-frame.png",
739 mainMenu: MenuProperties {
746 cursorAnimation: menuCursorAnimation,
748 disabledFont: menuInactiveFont,
752 mainMenuItemText: "ITEM",
753 mainMenuSpellText: "SPELL",
754 mainMenuCapsuleText: "CAPSULE",
755 mainMenuEquipmentText: "EQUIP",
756 mainMenuStatusText: "STATUS",
757 mainMenuChangeText: "CHANGE",
758 mainMenuConfigText: "CONFIG",
759 mainMenuScenarioText: "SCENARIO",
760 mainMenuTimeText: "TIME",
761 mainMenuGoldText: "GOLD",
763 image: :"hero-cursor.png",
766 heroCursorBlinkTime: 532,
767 noEquipmentText: "No equip",
768 shoulderNav: Sprite {
769 image: :"shoulder-nav.png",
782 experienceLabel: "NOW EXP",
783 nextLevelLabel: "NEXT LEVEL",
784 statusMenu: MenuProperties {
790 cursorAnimation: menuCursorAnimation,
795 returnLabel: "RETURN",
796 itemMenu: MenuProperties {
803 selectedCursor: menuActiveCursor,
804 cursorAnimation: menuCursorAnimation,
805 selectedCursorAnimation: menuActiveCursorAnimation,
810 itemMenuUseText: "USE",
811 itemMenuSortText: "SORT",
812 itemMenuDropText: "DROP",
813 itemMenuSelectText: "SELECT",
814 inventoryMenu: MenuProperties {
820 selectedCursor: menuActiveCursor,
821 cursorAnimation: menuCursorAnimation,
822 selectedCursorAnimation: menuActiveCursorAnimation,
824 disabledFont: menuInactiveFont,
830 spellMenu: MenuProperties {
837 selectedCursor: menuActiveCursor,
838 cursorAnimation: menuCursorAnimation,
839 selectedCursorAnimation: menuActiveCursorAnimation,
841 disabledFont: menuInactiveFont,
845 equipmentActionMenu: MenuProperties {
851 selectedCursor: menuActiveCursor,
852 cursorAnimation: menuCursorAnimation,
853 selectedCursorAnimation: menuActiveCursorAnimation,
856 equipmentMenu: MenuProperties {
862 selectedCursor: menuActiveCursor,
863 cursorAnimation: menuCursorAnimation,
864 selectedCursorAnimation: menuActiveCursorAnimation,
869 equipMenuEquipLabel: "EQUIP",
870 equipMenuStrongestLabel: "STRONGEST",
871 equipMenuRemoveLabel: "REMOVE",
872 equipMenuRemoveAllLabel: "REMOVE ALL",
873 equipMenuDropLabel: "DROP",
874 configMenu: MenuProperties {
880 cursorAnimation: menuCursorAnimation,
884 configMessageSpeedLabel: "MESSAGE\n SPEED",
885 configMessageSpeedFast: "FAST",
886 configMessageSpeedNormal: "NORMAL",
887 configMessageSpeedSlow: "SLOW",
888 configBattleCursorLabel: "BATTLE\n CURSOR",
889 configStatusCursorLabel: "STATUS\n CURSOR",
890 configCursorClear: "CLEAR",
891 configCursorMemory: "MEMORY",
892 configMusicLabel: "MUSIC",
893 configMusicStereo: "STEREO",
894 configMusicMono: "MONO",
895 scenarioMenu: MenuProperties {
901 cursorAnimation: menuCursorAnimation,
904 scenarioMenuHeadline: "SCENARIO ITEM",
906 image: :"capsulebg.png",
909 capsuleMenu: MenuProperties {
914 selectedCursor: menuActiveCursor,
915 cursorAnimation: menuCursorAnimation,
916 selectedCursorAnimation: menuActiveCursorAnimation,
920 capsuleFeedMenu: MenuProperties {
926 selectedCursor: menuActiveCursor,
927 cursorAnimation: menuCursorAnimation,
928 selectedCursorAnimation: menuActiveCursorAnimation,
931 capsuleFeedLabel: "FEED",
932 capsuleChangeLabel: "CHANGE",
933 capsuleNameLabel: "NAME",
934 capsuleClassLabel: "CLASS",
935 capsuleAlignmentLabel: "ALI.",
936 capsuleTribeLabel: "TRIBE",
937 capsuleAttack1Label: "SP.1",
938 capsuleAttack2Label: "SP.2",
939 capsuleAttack3Label: "SP.3",
940 capsuleNoAttackText: "Nothing",
941 capsuleNotHungryText: "I'm not hungry.",
942 capsuleNameSelect: CharSelect {
945 image: :"alpha-cursor.png",
948 chars: "0123456789ABCDEabcdeFGHIJfghijKLMNOklmnoPQRSTpqrstUVWXYuvwxyZ!? z!? ",
952 capsuleSelectTopLeft: Sprite {
953 image: :"capsule-sprites.png",
957 capsuleSelectTopRight: Sprite {
958 image: :"capsule-sprites.png",
962 capsuleSelectTopRepeat: Texture {
963 image: :"capsule-sprites.png",
967 capsuleSelectBottomLeft: Sprite {
968 image: :"capsule-sprites.png",
972 capsuleSelectBottomRight: Sprite {
973 image: :"capsule-sprites.png",
977 capsuleSelectBottomRepeat: Sprite {
978 image: :"capsule-sprites.png",
982 capsuleSelectLeftRepeat: Texture {
983 image: :"capsule-sprites.png",
986 capsuleSelectRightRepeat: Texture {
987 image: :"capsule-sprites.png",
991 capsuleSelectLadder: Sprite {
992 image: :"capsule-sprites.png",
996 capsuleSelectCursor: Sprite {
997 image: :"capsule-sprites.png",
1001 capsuleAlignmentWheel: Sprite {
1002 image: :"capsule-sprites.png",
1006 capsuleAlignmentCursor: Sprite {
1007 image: :"capsule-sprites.png",
1011 capsuleGrowthLabel: Sprite {
1012 image: :"capsule-feed.png",
1015 capsuleGrowthBar: Sprite {
1016 image: :"capsule-feed.png",
1020 capsuleGrowthBarFilled: Sprite {
1021 image: :"capsule-feed.png",