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."
658 image: :"menu-font.png",
663 Font menuInactiveFont {
665 image: :"menu-font-inactive.png",
671 image: :"menu-cursor.png",
674 Sprite menuActiveCursor {
675 image: :"menu-cursor-active.png",
678 SimpleAnimation menuCursorAnimation {
680 frametime: fourFramesTime,
684 ComplexAnimation menuActiveCursorAnimation {
685 sprite: menuActiveCursor,
686 frametime: fourFramesTime,
689 [ ComplexAnimationFrame
705 export MenuResources menuResources {
707 image: :"menubg.png",
710 normalFont: menuFont,
711 inactiveFont: menuInactiveFont,
712 statusFont: normalFont,
713 statusLabels: Sprite {
714 image: :"status-labels.png",
718 image: :"status-frame.png",
722 mainMenu: MenuProperties {
729 cursorAnimation: menuCursorAnimation,
731 disabledFont: menuInactiveFont,
735 mainMenuItemText: "ITEM",
736 mainMenuSpellText: "SPELL",
737 mainMenuCapsuleText: "CAPSULE",
738 mainMenuEquipmentText: "EQUIP",
739 mainMenuStatusText: "STATUS",
740 mainMenuChangeText: "CHANGE",
741 mainMenuConfigText: "CONFIG",
742 mainMenuScenarioText: "SCENARIO",
743 mainMenuTimeText: "TIME",
744 mainMenuGoldText: "GOLD",
746 image: :"hero-cursor.png",
749 heroCursorBlinkTime: 532,
750 noEquipmentText: "No equip",
751 shoulderNav: Sprite {
752 image: :"shoulder-nav.png",
765 experienceLabel: "NOW EXP",
766 nextLevelLabel: "NEXT LEVEL",
767 statusMenu: MenuProperties {
773 cursorAnimation: menuCursorAnimation,
778 returnLabel: "RETURN",
779 itemMenu: MenuProperties {
786 selectedCursor: menuActiveCursor,
787 cursorAnimation: menuCursorAnimation,
788 selectedCursorAnimation: menuActiveCursorAnimation,
793 itemMenuUseText: "USE",
794 itemMenuSortText: "SORT",
795 itemMenuDropText: "DROP",
796 itemMenuSelectText: "SELECT",
797 inventoryMenu: MenuProperties {
803 selectedCursor: menuActiveCursor,
804 cursorAnimation: menuCursorAnimation,
805 selectedCursorAnimation: menuActiveCursorAnimation,
807 disabledFont: menuInactiveFont,
813 spellMenu: MenuProperties {
820 selectedCursor: menuActiveCursor,
821 cursorAnimation: menuCursorAnimation,
822 selectedCursorAnimation: menuActiveCursorAnimation,
824 disabledFont: menuInactiveFont,
828 equipmentActionMenu: MenuProperties {
834 selectedCursor: menuActiveCursor,
835 cursorAnimation: menuCursorAnimation,
836 selectedCursorAnimation: menuActiveCursorAnimation,
839 equipmentMenu: MenuProperties {
845 selectedCursor: menuActiveCursor,
846 cursorAnimation: menuCursorAnimation,
847 selectedCursorAnimation: menuActiveCursorAnimation,
852 equipMenuEquipLabel: "EQUIP",
853 equipMenuStrongestLabel: "STRONGEST",
854 equipMenuRemoveLabel: "REMOVE",
855 equipMenuRemoveAllLabel: "REMOVE ALL",
856 equipMenuDropLabel: "DROP",
857 configMenu: MenuProperties {
863 cursorAnimation: menuCursorAnimation,
867 configMessageSpeedLabel: "MESSAGE\n SPEED",
868 configMessageSpeedFast: "FAST",
869 configMessageSpeedNormal: "NORMAL",
870 configMessageSpeedSlow: "SLOW",
871 configBattleCursorLabel: "BATTLE\n CURSOR",
872 configStatusCursorLabel: "STATUS\n CURSOR",
873 configCursorClear: "CLEAR",
874 configCursorMemory: "MEMORY",
875 configMusicLabel: "MUSIC",
876 configMusicStereo: "STEREO",
877 configMusicMono: "MONO",
878 scenarioMenu: MenuProperties {
884 cursorAnimation: menuCursorAnimation,
887 scenarioMenuHeadline: "SCENARIO ITEM",
889 image: :"capsulebg.png",
892 capsuleMenu: MenuProperties {
897 selectedCursor: menuActiveCursor,
898 cursorAnimation: menuCursorAnimation,
899 selectedCursorAnimation: menuActiveCursorAnimation,
903 capsuleFeedMenu: MenuProperties {
909 selectedCursor: menuActiveCursor,
910 cursorAnimation: menuCursorAnimation,
911 selectedCursorAnimation: menuActiveCursorAnimation,
914 capsuleFeedLabel: "FEED",
915 capsuleChangeLabel: "CHANGE",
916 capsuleNameLabel: "NAME",
917 capsuleClassLabel: "CLASS",
918 capsuleAlignmentLabel: "ALI.",
919 capsuleTribeLabel: "TRIBE",
920 capsuleAttack1Label: "SP.1",
921 capsuleAttack2Label: "SP.2",
922 capsuleAttack3Label: "SP.3",
923 capsuleNoAttackText: "Nothing",
924 capsuleNotHungryText: "I'm not hungry.",
925 capsuleNameSelect: CharSelect {
928 image: :"alpha-cursor.png",
931 chars: "0123456789ABCDEabcdeFGHIJfghijKLMNOklmnoPQRSTpqrstUVWXYuvwxyZ!? z!? ",
935 capsuleSelectTopLeft: Sprite {
936 image: :"capsule-sprites.png",
940 capsuleSelectTopRight: Sprite {
941 image: :"capsule-sprites.png",
945 capsuleSelectTopRepeat: Texture {
946 image: :"capsule-sprites.png",
950 capsuleSelectBottomLeft: Sprite {
951 image: :"capsule-sprites.png",
955 capsuleSelectBottomRight: Sprite {
956 image: :"capsule-sprites.png",
960 capsuleSelectBottomRepeat: Sprite {
961 image: :"capsule-sprites.png",
965 capsuleSelectLeftRepeat: Texture {
966 image: :"capsule-sprites.png",
969 capsuleSelectRightRepeat: Texture {
970 image: :"capsule-sprites.png",
974 capsuleSelectLadder: Sprite {
975 image: :"capsule-sprites.png",
979 capsuleSelectCursor: Sprite {
980 image: :"capsule-sprites.png",
984 capsuleAlignmentWheel: Sprite {
985 image: :"capsule-sprites.png",
989 capsuleAlignmentCursor: Sprite {
990 image: :"capsule-sprites.png",
994 capsuleGrowthLabel: Sprite {
995 image: :"capsule-feed.png",
998 capsuleGrowthBar: Sprite {
999 image: :"capsule-feed.png",
1003 capsuleGrowthBarFilled: Sprite {
1004 image: :"capsule-feed.png",