%{ #DEFINE SCRIPTVER 1 // script version #DEFINE LCDCLASS 255 // All LCD type #DEFINE IMAGETYPE 255 // All image type #DEFINE AUDIOTYPE 1 // All audio type #DEFINE VOCTYPE 255 // vocoder type(EVRC) #DEFINE SCRIPTTYPE 1 // script type(Stand Alone) #DEFINE SCRIPTCPID 31070 // script cp id #DEFINE SCRIPTID 10004 // script id #DEFINE SCRIPTNAME "DiceMaster" // script name %} #include "sscript.h" #include "DiceMaster.sbm" #include "diceopen.ssd" // ŸÀÌÆ² BGM #include "cuser_ok.ssd" // OK´©¸¦¶§ #include "ending.ssd" #include "battle_attack.ssd" #include "evt_battlein1.ssd" #include "battle_win.ssd" #include "battle_tloss.ssd" #define GS_TITLE 0 #define GS_MAIN 1 #define GS_STATUS 2 #define GS_MAP 3 #define GS_COMBAT 4 #define GS_DEAL 5 #define MS_DEFAULT 0 // ÁÖ»çÀ§ ´øÁö±â Àü #define MS_DICEING 1 // ÁÖ»çÀ§ ´øÁö´Â Áß #define MS_MOVE 2 // ÁÖ»çÀ§ ´øÁö°í À̵¿Áß #define MS_EVENT 3 // À̺¥Æ® ¹ß»ý #define MS_BACK 4 // ÈÄÁø #define CS_HEROTURN 0 #define CS_HEROTURN2 1 #define CS_ENEMYTURN 2 #define CS_ATTACK 3 int GameState; int MainState; int CombatState; int EventState; int EventFrame; int DealState; int LCD_x1, LCD_y1, LCD_x2, LCD_y2; // 120 x 80 int SoundFlag; int AniFrame; int HeroTx, HeroTy; int MapTx, MapTy; int MyItem[8]; int MyStatus[6]; /* HP STR GOLD att def max hp */ int MyAttItem; int MyDefItem; int MyDice; int MyScore; int MyFlag[10]; /* 0 : ÃÖÁ¾º¸½º º»Àû ÀÖ³ª? 1 : PX º»Àû ÀÖ³ª? 2 : µ¶ °¨¿° (¼ÓµµÀúÇÏ) 3 : µ¶ °¨¿° Åϼö 4 : µÎ¹è À̵¿ 5 ~ 9 : ¸ó½ºÅÍ¿ÍÀÇ ÀüÅõ ½Â¸® °æÇè */ int MonNum; int MonHP; int MonAtt; int MonDice; int DiceNum1, DiceNum2; struct { int type; // att : 0, def : 1, ace : 2 use : 3 evt : 10 int value; } ITEM[25]; struct { int x; int y; } BACK[24]; int BackHead, BackTail; int MoveNum, BackMax; struct { int x; int y; } UNDO[24]; int UndoIndex; int DealStore[19] = { 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 20, 21, 22, 23, 24 }; const string GameText[] = { // ÇÑ±Û 9°³ ¿µ¹® 19 // 0 "[ÆÇ] ½Ã·ÃÀÇ ´øÀü!!@¿ë»ç½ÃÇèÀÇ@ù¹øÂ° °ü¹®À̱º!", "ÁÁ¾Æ!! À̵ûÀ§@´øÀüÂëÀ̾ß@°¡»ÓÇÏÁö!!", // 2 "[PX] ÈÄÈÊ. ³ª´Â@¹°°ÇÀ» ÆÄ´Â @»ç¶÷ÀÌ´Ù", "[ÆÇ] ÀÀ? ¿ÜÆÇ¿ø?@[PX] ¹«½¼¼Ò¸®!@³ªµµ Á¶±³¶ó±¸!", "ÇÊ¿äÇÑ ¹°°ÇÀÌ@ÀÖÀ¸¸é »¡¸®@»ç¶ó±¸!!", // 5 "[PX] ¶Ç ¸¸³ª´Â±º@PXµîÀåÀÌ´Ù", // 6 "±×°Ç ÆÈ¼ö¾ø¾î!", // 7 "[ÆÇ] ÁÁ¾Æ!@¸ó½ºÅÍ¿ÍÀÇ ÀüÅõ!@°¢¿ÀÇØ¶ó!", // 8 "Ŭ·Î¹ö ¿­¼è°¡@ÇÊ¿äÇÑ ¹æÀÌ´Ù", "ÇÏÆ® ¿­¼è°¡@ÇÊ¿äÇÑ ¹æÀÌ´Ù", "´ÙÀÌ¾Æ ¿­¼è°¡@ÇÊ¿äÇÑ ¹æÀÌ´Ù", "½ºÆäÀÌµå ¿­¼è°¡@ÇÊ¿äÇÑ ¹æÀÌ´Ù", "Á¶Ä¿ ¿­¼è°¡@ÇÊ¿äÇÑ ¹æÀÌ´Ù", // 13 - ¿­¼è ¿ÀÇ "[ÆÇ] ÁÁ¾Æ!@ÀÌ ¿­¼è·Î@¿­¸®´Â±¸³ª", // 14 - ¸¶Áö¸· º¸½ºÀü "# º¯Å ±³°ü µîÀå", "[ÆÇ] º¯Å±³°ü!@[±³°ü] À߿ԴÙ@ÀÀ½Ã»ý!",//15 "¿©±â±îÁö ¿Â °ÍÀº@ÀÎÁ¤ÇØÁÖÁö@Ç㳪 ¸¶Áö¸· °ü¹®Àº", //16 "±×¸® ½±Áö¾ÊÀ»°É?",//17 "[ÆÇ] ¿À!@µåµð¾î ¸¶Áö¸·?",//18 "# °©Àڱ⠺®ÀÌ@¿ï¸®¸ç °Å´ëÇÑ@µå·¡°ïÀÌ µîÀå!",//19 "[ÆÇ] Çã°Æ!!@³ªº¸°í Á×À¸¶ó´Â@À̾߱âÀΰ¡!",//20 "[±³°ü] ÇÏÇÏ!@µå·¡°ïÀº Àâ¾Æ¾ß@¿ë»ç°¡ µÉ¼ö ÀÖÁö!",//21 "[ÆÇ] À̺Á!@³­ ¾ÆÁ÷ ¿ë»ç°¡@¾Æ´Ï¶ó±¸!!",//22 // 23 - ´Ù½Ã µå·¡°ï ÀüÅõ "[ÆÇ] À̹ø¿£@ÁöÁö ¾Ê°Ú´Ù!!", // 24 - µå·¡°ï ÀüÅõ¿¡¼­ ÆÐ "[ÆÇ] ¿¡±¸±¸±¸..@[±³°ü] ļÇÏÇÏÇÖ!@´õ ¼ö·ÃÀ» ÇØ¶ó!!", "[ÆÇ] T . T", // 26 "# µå·¡°ïÀº ±«¼ºÀ»@Áö¸£¸ç °¡·ç°¡@µÇ¾î ¾ø¾îÁø´Ù", "[ÆÇ] À̾ß!! ½Â¸®Çß´Ù@[±³°ü] ¿ÀÈ£~ ´ë´ÜÇѵ¥!![ÆÇ] ´ç±ÙÀÌÁö~!!", "[ÆÇ] ÀÌÁ¦ ¿ë»ç°¡@µÇ´Â °Ç°¡?", "[±³°ü] À½ °á°ú´Â@³ªÁß¿¡ ¹ßÇ¥ÇϰڴÙ.@°á°ú¸¦ ±â´Ù¸®µµ·Ï", // 30 "[AS°É] ¾È³çÇϼ¼¿ä!@´ç½ÅÀÇ µ·À» Á¶±Ý@¿Ã·ÁÁÖ°Ú¾î¿ä", "# ÆÇÀÇ ¼ÒÁö±ÝÀÌ@µÎ¹è°¡ µÇ¾ú´Ù", // 32 "[AS°É] ¾È³çÇϼ¼¿ä!@´ç½Å¿¡°Ô À̵¿ÀÇ@ÀÚÀ¯¸¦ µå¸®ÁÒ", "ÁÖ»çÀ§¸¦ ´øÁö¸é@µÎ¹è·Î °¥¼ö ÀÖ°Ô@ÇØµå¸±²²¿ä", // 34 "# ÁÖº¯¿¡¼­@¾Ë¼ö¾ø´Â °¡½º°¡@»Õ¾îÁ® ³ª¿Â´Ù", "# ÆÇÀº Á¤½ÅÀÌ@È¥¹ÌÇØÁ³´Ù", "# ÇÑÂüÈÄ ÆÇÀº@Á¤½ÅÀ» Â÷·È´Ù", "[ÆÇ] ¾Ñ!@µ·ÀÇ Àý¹ÝÀÌ@¾ø´Ù!!", "# ÆÇÀº À绡¸®@¹æµ¶¸éÀ»@Âø¿ëÇß´Ù", // 39 "# ¹«¾ð°¡ ÆÇÀ»@ºü¸¥¼Óµµ·Î@Ä¡°í Áö³ª°¬´Ù", // 40 "# ÆÇÀº À߸øÇؼ­@½ºÀ§Ä¡¸¦ ¹â¾Ò´Ù@Ƽµñ~", "[ÆÅ] ÀÃ!@µ¶È­»ìÀÌ´Ù!", "# ÆÇÀº ¿òÁ÷ÀÓÀÌ ´À·ÁÁ³´Ù", // 43 "# ÆÇÀÇ ¸ö¿¡ ÆÛÁø@µ¶ÀÇ È¿°ú°¡@»ç¶óÁ³´Ù", // 44 "# ÀüÅõ¿¡¼­ Á®¼­@µÚ·Î ¹°·¯³³´Ï´Ù", // 45 "Ŭ·Î¹ö ¿­¼èÀÔ¼ö", "ÇÏÆ® ¿­¼èÀÔ¼ö", "´ÙÀÌ¾Æ ¿­¼èÀÔ¼ö", "½ºÆäÀÌµå ¿­¼èÀÔ¼ö", // 49 "¾ÆÀÌÅÛÀ» ÀÔ¼öÇϳª@ºó¶õÀÌ ¾ø¾î¼­@°¡Áú¼ö ¾ø´Ù" }; const string ItemStr[] = { "¿ìµç¼Òµå", "½ºÆ¿¼Òµå", "ÆÄ¿ö¼Òµå", "ÅõÇÚµðµå¼Òµå", "¶ó±×³ª·ÎÅ©", "¿Õ°Ë", "·¹´õ¼ÅÃ÷", "¿ìµç¾Æ¸Ó", "üÀξƸÓ", "Ç÷¹ÀÌÆ®¾Æ¸Ó", "º»¸ÞÀÏ", "È÷µå¶ó¾Æ¸Ó", "ÇÁ¸®¹«ºêÁª", "ÇÁ¸®¹«ºêÁê¾ó", "¸Ó´Ï¾Æ¹Ä·¿", "½Â¸®ÀÇ Ææ´øÆ®", "Ŭ·Î¹öŰ", "ÇÏÆ®Å°", "´ÙÀ̾ÆÅ°", "½ºÆäÀ̵åŰ", "Á¶Ä¿Å°", "ÇØµ¶Á¦", "¹æµ¶¸é", "ÈûÀÇ ¿­¸Å", "Æ÷¼Ç" }; const string ItemExp[] = { "°ø°Ý·Â+1", "°ø°Ý·Â+2", "°ø°Ý·Â+3", "°ø°Ý·Â+4", "°ø°Ý·Â+5", "°ø°Ý·Â+6", "¹æ¾î·Â+1", "¹æ¾î·Â+2", "¹æ¾î·Â+3", "¹æ¾î·Â+4", "¹æ¾î·Â+5", "¹æ¾î·Â+6", "À̵¿+6", "À̵¿+12", "ÀüÅõÈÄ µ·2¹è", "ºñ±æ°æ¿ì½Â¸®", "", "", "", "", "", "µ¶ÁßÈ­", "°¡½ºÆ®·¦È¸ÇÇ", "Èû+1", "HP+1" }; int ItemMoney[] = { 10, 100, 500, 1000, 2000, 4000, 20, 200, 1000, 2000, 4000, 8000, 300, 700, 2000, 4000, 0, 0, 0, 0, 1000, 10, 800, 1000, 100, }; int Map1[230] = { // 46 x 5 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 1, 1, 4, 1, 1, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //1, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 3, 3, 3, 3, 3, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; int Map2[230] = { // 46 x 5 0, 0, 0, //2, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 1, 3, 0, 0, 0, 3, 1, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //3, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 3, 4, 1, 1, 4, 1, 1, 4, 3, 0, 0, 0, 0, 0, 0, 3, 4, 1, 1, 4, 3, 0, 0, 0, 3, 4, 1, 1, 4, 1, 1, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //4, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 3, 1, 3, 3, 3, 3, 3, 1, 3, 0, 0, 0, 0, 0, 0, 3, 1, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //5, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 0, 0, 0, 0, 0, 0, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, //6, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 4, 1, 1, 4, 3, 3, 4, 1, 1, 7, 3, 0, 0, 0, 0, 0, 0, 3, 4, 1, 1, 5, 3, 3, 4, 1, 1, 6, 1, 1, 4, 1, 1, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0 }; int Map3[230] = { // 46 x 5 0, 0, 3, // 7, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 1, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, // 8, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 1, 3, 3, 3, 3, 3, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 3, 3, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, // 9, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 4, 1, 1, 4, 3, 3, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 3, 3, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //10, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 3, 3, 3, 1, 3, 3, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 3, 3, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //11, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 3, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0 }; int Map4[230] = { // 46 x 5 0, 0, 0, //12, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 3, 4, 3, 3, 5, 1, 1, 4, 3, 3,10, 1, 1, 4, 1, 1, 2, 1, 1, 4, 1, 1, 4, 1, 1,10, 3, 0, 0, 0, 3, 4, 1, 1, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, //13, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 0, 0, 0, 3, 1, 3, 3, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, //14, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 0, 0, 0, 3, 1, 3, 3, 1, 3, 3, 3, 0, 0, 0, 0, 0, 0, //15, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 3, 4, 1, 1, 4, 3, 3, 4, 3, 3, 4, 3, 3, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 3, 3, 4, 3, 0, 0, 0, 3, 4, 3, 3, 4, 1, 1, 4, 3, 0, 0, 0, 0, 0, //16, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 0, 0, 0, 3, 1, 3, 3, 3, 3, 3, 1, 3, 0, 0 }; int Map5[230] = { // 46 x 5 0, 0, 0, //17, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 3, 3, 3, 1, 3, 0, 0, 0, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 0, 0, 0, 0, 3, //18, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 4, 1, 1, 4, 3, 0, 0, 0, 3, 4, 1, 1, 4, 3, 3, 4, 1, 1, 4, 1, 1, 4, 3, 3, 4, 3, 3, 5, 1, 1, 4, 1, 1, 4, 3, 3, 4, 1, 1, 4, 3, 0, 0, 0, 0, 0, //19, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 0, 0, 0, 0, 0, 0, //20, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 0, 0, 0, 0, 0, 0, //21, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 0, 0, 0, 3, 4, 3, 0, 0, 0, 3, 4, 1, 1, 4, 3, 3,11, 1, 1,10, 3, 3, 4, 3, 3, 4, 1, 1, 4, 1, 1, 4, 3, 3, 8, 1, 1, 4, 3, 0, 0 }; int Map6[230] = { // 46 x 5 0, 0, 0, //22, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 0, 0, 0, 3, 1, 3, 0, 0, 0, 3, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 0, 0, 0, 0, 0, //23, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 0, 0, 0, 3, 1, 3, 0, 0, 0, 3, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 0, 0, 0, 3, 1, 3, 3, 3, 3, 3, 1, 3, 0, 0, 0, 0, 0, //24, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 0, 0, 0, 3, 4, 3, 0, 0, 0, 3, 5, 3, 3, 4, 1, 1, 4, 1, 1, 4, 1, 1,10, 3, 3, 4, 3, 0, 0, 0, 3, 4, 3, 3, 4, 1, 1, 4, 3, 0, 0, 0, 0, 0, //25, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 0, 0, 0, 3, 1, 3, 0, 0, 0, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 0, 0, 0, 3, 1, 3, 3, 1, 3, 3, 3, 0, 0, 0, 0, 0, 0, //26, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 0, 0, 0, 3, 1, 3, 3, 1, 3, 0, 0, 0, 0, 0 }; int Map7[230] = { // 46 x 5 0, 0, 0, //27, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 3, 4, 1, 1, 4, 1, 1, 4, 3, 3,10, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1,10, 3, 0, 0, 0, 3, 4, 1, 1, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, //28, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, //29, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 0, 0, 0, 3, 1, 3, 3, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, //30, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 4, 1, 1, 4, 1, 1, 9, 3, 3, 4, 3, 3, 4, 3, 0, 0, 0, 3, 4, 3, 3, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //31, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 0, 0, 0, 3, 1, 3, 3, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; int Map8[230] = { // 46 x 5 0, 0, 0, //32, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 0, 0, 0, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //33, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 0, 0, 0, 3, 4, 3, 3, 4, 1, 1, 4, 1, 1, 5, 1, 1, 4, 1, 1, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //34, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 0, 0, 0, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //35, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //36, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 3, 4, 1, 1, 4, 1, 1, 4, 3, 3, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; int Map9[230] = { // 46 x 5 0, 0, 0, //37, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //38, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 0, 0, 0, 3, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //39, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2, 3, 4, 5, 6, 7, 8, 9,20, 1, 2, 3, 4, 5, 6, 7, 8, 9,30, 1, 2, 3, 4, 5, 6, 7, 8, 9,40, 0, 0, 0, 0, 0, 3, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; int Map10[46] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; int i; int index; int var_x, var_y; int var_mx, var_my; int var_sx, var_sy; int temp1, temp2; int tile; string status_str; string draw_str[3]; void InitGame() { LCD_x1 = swWidth / 2 - 60; LCD_y1 = swHeight / 2 - 40; LCD_x2 = LCD_x1 + 119; LCD_y2 = LCD_y1 + 79; HeroTx = 18 + 3; HeroTy = 12 + 3; MapTx = HeroTx - 3; MapTy = HeroTy - 3; // att item setting for(i = 0; i < 6; i++) { ITEM[i].type = 0; ITEM[i].value = 1 + i; } // def item setting for(i = 6; i < 12; i++) { ITEM[i].type = 1; ITEM[i].value = i - 5; } // accessory for(i = 12; i < 25; i++) { ITEM[i].type = 2; ITEM[i].value = i; } // use ITEM[12].type = 3; ITEM[13].type = 3; ITEM[21].type = 3; ITEM[23].type = 3; ITEM[24].type = 3; // event ITEM[16].type = 10; // Ŭ·Î¹öŰ ITEM[16].value = 0; ITEM[17].type = 10; // ÇÏÆ®Å° ITEM[17].value = 1; ITEM[18].type = 10; // ´ÙÀ̾ÆÅ° ITEM[18].value = 2; ITEM[19].type = 10; // ½ºÆäÀ̵åŰ ITEM[19].value = 3; ITEM[20].type = 11; // Á¶Ä¿Å° ITEM[20].value = 4; for(i = 0; i < 8; i++) { MyItem[i] = -1; } MyAttItem = 0; MyDefItem = 6; MyStatus[0] = 18; // HP MyStatus[1] = 1; // STR MyStatus[2] = 0; // GOLD MyStatus[3] = MyStatus[1]; // att MyStatus[4] = 0; // def MyStatus[5] = MyStatus[0]; // max hp if(MyAttItem >= 0) { MyStatus[3] += ITEM[MyAttItem].value; // att } if(MyDefItem >= 0) { MyStatus[4] = ITEM[MyDefItem].value; // def } for(i = 0; i < 10; i++) { MyFlag[i] = 0; } MyScore = 15000; SoundFlag = 1; BackHead = 0; BackTail = 0; BackMax = 0; DiceNum1 = 6; DiceNum2 = 6; } void GameTextOut(int x, int y, int gamestr) { int len; string gtemp2; StrCpy(status_str, gamestr); len = StrLen(status_str); temp1 = 0; temp2 = 0; for(i = 0; i < len; i++) { MakeStr1(gtemp2, "%d", GetChar(status_str, i)); if(AsciiToInt(gtemp2) == 64) { index = i - temp2; StrSub(draw_str[temp1], status_str, temp2, index); temp2 = i + 1; temp1++; } } index = i - temp2; StrSub(draw_str[temp1], status_str, temp2, index); temp2 = i + 1; temp1++; SetStrType(S_FONT_LARGE, S_BLACK, S_WHITE, S_ALIGN_LEFT); for(i = 0; i < temp1; i++) { DrawText(x, y, draw_str[i]); y += 12; } } void GameTextBox(int gamestr) { SetColor(S_WHITE); FillRect(LCD_x1 + 3, LCD_y1 + 26, LCD_x1 + 116, LCD_y1 + 75); SetColor(S_BLACK); DrawRect(LCD_x1 + 2, LCD_y1 + 25, LCD_x1 + 117, LCD_y1 + 76); GameTextOut(LCD_x1 + 4, LCD_y1 + 27, GameText[gamestr]); CopyImage(LCD_x1 + 55, LCD_y1 + 67, i_ok[swFrame2]); } // Item int GetEmptyItemPos() { for(i = 0; i < 8; i++) { if(MyItem[i] < 0) return i; } return -1; } int IsItem(int value) { for(i = 0; i < 8; i++) { if(MyItem[i] == value) return i; } return -1; } void EquipAttItem(int value) { temp1 = MyItem[value]; if(MyAttItem >= 0) { MyItem[value] = MyAttItem; } else { MyItem[value] = -1; } MyAttItem = temp1; MyStatus[3] = MyStatus[1] + ITEM[MyAttItem].value; if(SoundFlag) PlaySound(cuser_ok); } void EquipDefItem(int value) { temp1 = MyItem[value]; if(MyDefItem >= 0) { MyItem[value] = MyDefItem; } else { MyItem[value] = -1; } MyDefItem = temp1; MyStatus[4] = ITEM[MyDefItem].value; if(SoundFlag) PlaySound(cuser_ok); } void UseItem(int value) { temp1 = MyItem[value]; ITEM[12].type = 3; ITEM[13].type = 3; ITEM[21].type = 3; ITEM[23].type = 3; ITEM[24].type = 3; switch(temp1) { case 12 : // ÇÁ¸®¹«ºêÁª if(GameState == GS_MAIN && MainState == MS_DEFAULT) { MyItem[value] = -1; DiceNum1 = 3; DiceNum2 = 3; MoveNum = DiceNum1 + DiceNum2; UndoIndex = 0; MainState = MS_MOVE; } else { return; } break; case 13 : // ÇÁ¸®¹«ºêÁÖ¾ó if(GameState == GS_MAIN && MainState == MS_DEFAULT) { MyItem[value] = -1; DiceNum1 = 6; DiceNum2 = 6; MoveNum = DiceNum1 + DiceNum2; UndoIndex = 0; MainState = MS_MOVE; } else { return; } break; case 21 : // ÇØµ¶Á¦ MyItem[value] = -1; MyFlag[2] = 0; MyFlag[3] = 0; break; case 23 : // ÈûÀÇ¿­¸Å MyItem[value] = -1; MyStatus[1]++; MyStatus[3]++; break; case 24 : // ½ºÅ×¹Ì³ÊÆ÷¼Ç MyItem[value] = -1; MyStatus[0]++; if(MyStatus[0] > MyStatus[5]) MyStatus[5] = MyStatus[0]; // max hp break; } if(SoundFlag) PlaySound(cuser_ok); } void ActItem(int value) { temp1 = MyItem[value]; if(temp1 >= 0) { switch(ITEM[temp1].type) { case 0 :// att EquipAttItem(value); break; case 1 :// def EquipDefItem(value); break; case 3 :// use UseItem(value); break; // case 2 : // case 10 : // break; } } } void BuyItem() { temp1 = GetEmptyItemPos(); if(temp1 < 0) return; temp2 = DealStore[index]; if(MyStatus[2] < ItemMoney[temp2]) return; MyStatus[2] = MyStatus[2] - ItemMoney[temp2]; MyItem[temp1] = temp2; if(SoundFlag) PlaySound(cuser_ok); } void SellItem() { temp1 = MyItem[index]; if(ITEM[temp1].type == 10) return; MyStatus[2] = MyStatus[2] + (ItemMoney[temp1] / 2); MyItem[index] = -1; if(SoundFlag) PlaySound(cuser_ok); } // BACK void BackPush(int x, int y) { BACK[BackHead].x = x; BACK[BackHead].y = y; BackHead++; if(BackHead >= 24) BackHead = 0; if(BackMax < 24) { BackMax++; } else { BackTail = BackHead; } } int UndoCheck(int x, int y) { if(UndoIndex <= 0) return 0; temp1 = UndoIndex - 1; if(UNDO[temp1].x != x) return 0; if(UNDO[temp1].y != y) return 0; return 1; } int BackPop() { if(BackMax <= 0) return 0; BackMax--; HeroTx = BACK[BackTail].x; HeroTy = BACK[BackTail].y; BackTail++; if(BackTail >= 24) BackTail = 0; return 1; } // MAP int IsCanGo(int x, int y) { tile = GetTile(x, y); if(tile == 0) return 0; if(tile == 3) return 0; return 1; } void SetTile(int x, int y, int value) { tile = y * 46 + x; temp1 = tile / 230; temp2 = tile % 230; switch(temp1) { case 0 : Map1[temp2] = value; break; case 1 : Map2[temp2] = value; break; case 2 : Map3[temp2] = value; break; case 3 : Map4[temp2] = value; break; case 4 : Map5[temp2] = value; break; case 5 : Map6[temp2] = value; break; case 6 : Map7[temp2] = value; break; case 7 : Map8[temp2] = value; break; case 8 : Map9[temp2] = value; break; case 9 : Map10[temp2] = value; break; } } int GetTile(int x, int y) { tile = y * 46 + x; temp1 = tile / 230; temp2 = tile % 230; switch(temp1) { case 0 : tile = Map1[temp2]; break; case 1 : tile = Map2[temp2]; break; case 2 : tile = Map3[temp2]; break; case 3 : tile = Map4[temp2]; break; case 4 : tile = Map5[temp2]; break; case 5 : tile = Map6[temp2]; break; case 6 : tile = Map7[temp2]; break; case 7 : tile = Map8[temp2]; break; case 8 : tile = Map9[temp2]; break; case 9 : tile = Map10[temp2]; break; } return tile; } // À̺¥Æ® int CheckFoceEvent(int x, int y) { tile = GetTile(x, y); if(tile < 10) return 0; var_mx = x - 3; var_my = y - 3; switch(tile) { case 10 : // ¿­¼è ÇÊ¿ä À̺¥Æ® MainState = MS_EVENT; EventState = 1; if(var_mx == 12 && var_my == 12) { // Ŭ·Î¹ö temp1 = IsItem(16); if(temp1 >= 0) { MyItem[temp1] = -1; SetTile(x, y, 2); EventFrame = 13; } else { EventFrame = 8; } } else if(var_mx == 27 && var_my == 12) { // ÇÏÆ® temp1 = IsItem(17); if(temp1 >= 0) { MyItem[temp1] = -1; SetTile(x, y, 2); EventFrame = 13; } else { EventFrame = 9; } } else if(var_mx == 27 && var_my == 27) { // ´ÙÀÌ¾Æ temp1 = IsItem(18); if(temp1 >= 0) { MyItem[temp1] = -1; SetTile(x, y, 2); EventFrame = 13; } else { EventFrame = 10; } } else if(var_mx == 12 && var_my == 27) { // ½ºÆäÀ̵å temp1 = IsItem(19); if(temp1 >= 0) { MyItem[temp1] = -1; SetTile(x, y, 2); EventFrame = 13; } else { EventFrame = 11; } } else if(var_mx == 21 && var_my == 21) { // Á¶Ä¿ temp1 = IsItem(20); if(temp1 >= 0) { MyItem[temp1] = -1; SetTile(x, y, 2); EventFrame = 13; } else { EventFrame = 12; } } break; case 11 : // ÃÖÁ¾º¸½º À̺¥Æ® MainState = MS_EVENT; EventState = 2; if(MyFlag[0] == 0) { EventFrame = 14; } else { EventFrame = 23; } break; } return 1; } void CheckEvent() { tile = GetTile(HeroTx, HeroTy); if(tile < 4) return; if(SoundFlag) PlaySound(evt_battlein1); if(tile == 4) { // ÀÏ¹Ý À̺¥Æ® MainState = MS_EVENT; temp1 = Rand(0, 100); if(temp1 < 50) { // À̺¥Æ® ÀüÅõ EventState = 9; EventFrame = 7; while(1) { MonNum = Rand(0, 5); if(MonNum == 0) break; if(MyFlag[MonNum - 1] > 0) break; } } else if(temp1 < 60) { // as girl À̵¿¼­ºñ½º EventState = 10; EventFrame = 32; } else if(temp1 < 70) { // as girl µ·Áõ°¡¼­ºñ½º EventState = 11; EventFrame = 30; } else if(temp1 < 80) { // ¼Ò¸ÅÄ¡±â EventState = 12; EventFrame = 39; } else if(temp1 < 90) { // ¼ö¸é°¡½º - µ·°¨¼Ò EventState = 13; EventFrame = 34; } else { // µ¶ - ¼ÓµµÀúÇÏ EventState = 14; EventFrame = 40; } return; } else if(tile == 5) { // PX À̺¥Æ® MainState = MS_EVENT; EventState = 7; if(MyFlag[1] == 1) { EventFrame = 5; } else { EventFrame = 2; } return; } else if(tile == 6) { // Ŭ·Î¹ö temp1 = GetEmptyItemPos(); MainState = MS_EVENT; EventState = 1; if(temp1 < 0) { EventFrame = 49; } else { MyItem[temp1] = 16; SetTile(HeroTx, HeroTy, 2); EventFrame = 45; } return; } else if(tile == 7) { // ÇÏÆ® temp1 = GetEmptyItemPos(); MainState = MS_EVENT; EventState = 1; if(temp1 < 0) { EventFrame = 49; } else { MyItem[temp1] = 17; SetTile(HeroTx, HeroTy, 2); EventFrame = 46; } return; } else if(tile == 8) { // ´ÙÀÌ¾Æ temp1 = GetEmptyItemPos(); MainState = MS_EVENT; EventState = 1; if(temp1 < 0) { EventFrame = 49; } else { MyItem[temp1] = 18; SetTile(HeroTx, HeroTy, 2); EventFrame = 47; } return; } else if(tile == 9) { // ½ºÆäÀ̵å temp1 = GetEmptyItemPos(); MainState = MS_EVENT; EventState = 1; if(temp1 < 0) { EventFrame = 49; } else { MyItem[temp1] = 19; SetTile(HeroTx, HeroTy, 2); EventFrame = 48; } return; } } // Scene void SceneTitle_Init() { ClearWhite(); Draw_GameBorder(); CopyImage((LCD_x1 + 60) - 98 / 2, LCD_y1 + 8, title); SaveLCD(); } void SceneTitle_Do() { RestoreLCD(); CopyImage(LCD_x1 + 37, LCD_y1 + 69, titlehero[swFrame2]); if(swFrame2 > 0) CopyImage(LCD_x1 + 68, LCD_y1 + 38, c_sg_f); else CopyImage(LCD_x1 + 68, LCD_y1 + 39, c_sg_f); Flush(); } void SceneTitle_Key() { // if(swData == SWAP_KEY_OK) { GameState = GS_MAIN; // GameState = GS_COMBAT; // MonNum = 5; // SceneCombat_Init(); MainState = MS_EVENT;//MS_DEFAULT; EventState = 0; EventFrame = 0; // GameState = GS_DEAL; // SceneDeal_Init(); SceneMain_Init(); // } /* if(swData == SWAP_KEY_9) { MoveNum = 300; MainState = MS_MOVE; } */ } void SceneMain_Init() { Cache_MainBorder(); } void SM_default() { // ÁÖ»çÀ§¸¦ ´øÁö¼¼¿ä CopyImage(LCD_x1 + 2, LCD_y1 + 75, i_stand[0]); CopyImage(LCD_x1 + 5, LCD_y1 + 49, dice[DiceNum1 - 1]); CopyImage(LCD_x1 + 17, LCD_y1 + 49, dice[DiceNum2 - 1]); CopyImage(LCD_x1 + 10, LCD_y1 + 38, i_ok[swFrame2]); } void CopyUndoToBack() { MyScore -= UndoIndex; for(i = 0; i < UndoIndex; i++) { temp1 = UNDO[i].x; temp2 = UNDO[i].y; BackPush(temp1, temp2); } } void SMK_move() { switch(swData) { case SWAP_KEY_LEFT : if(MoveNum > 0) { var_x = HeroTx - 1; if(UndoCheck(var_x, HeroTy)) { UndoIndex--; MoveNum++; HeroTx = var_x; MapTx = HeroTx - 3; } else { if(IsCanGo(var_x, HeroTy)) { if(CheckFoceEvent(var_x, HeroTy) <= 0) { // °­Á¦ À̺¥Æ®¸¸ üũ MoveNum--; // BackPush(HeroTx, HeroTy); UNDO[UndoIndex].x = HeroTx; UNDO[UndoIndex].y = HeroTy; UndoIndex++; HeroTx = var_x; MapTx = HeroTx - 3; // MapTy = HeroTy - 3; if(MoveNum == 0) { CopyUndoToBack(); MainState = MS_DEFAULT; CheckEvent(); } } } } } break; case SWAP_KEY_UP : if(MoveNum > 0) { var_y = HeroTy - 1; if(UndoCheck(HeroTx, var_y)) { UndoIndex--; MoveNum++; HeroTy = var_y; MapTy = HeroTy - 3; } else { if(IsCanGo(HeroTx, var_y)) { if(CheckFoceEvent(HeroTx, var_y) <= 0) { // °­Á¦ À̺¥Æ®¸¸ üũ MoveNum--; // BackPush(HeroTx, HeroTy); UNDO[UndoIndex].x = HeroTx; UNDO[UndoIndex].y = HeroTy; UndoIndex++; HeroTy = var_y; // MapTx = HeroTx - 3; MapTy = HeroTy - 3; if(MoveNum == 0) { CopyUndoToBack(); MainState = MS_DEFAULT; CheckEvent(); } } } } } break; case SWAP_KEY_RIGHT : if(MoveNum > 0) { var_x = HeroTx + 1; if(UndoCheck(var_x, HeroTy)) { UndoIndex--; MoveNum++; HeroTx = var_x; MapTx = HeroTx - 3; } else { if(IsCanGo(var_x, HeroTy)) { if(CheckFoceEvent(var_x, HeroTy) <= 0) { // °­Á¦ À̺¥Æ®¸¸ üũ MoveNum--; // BackPush(HeroTx, HeroTy); UNDO[UndoIndex].x = HeroTx; UNDO[UndoIndex].y = HeroTy; UndoIndex++; HeroTx = var_x; MapTx = HeroTx - 3; // MapTy = HeroTy - 3; if(MoveNum == 0) { CopyUndoToBack(); MainState = MS_DEFAULT; CheckEvent(); } } } } } break; case SWAP_KEY_DOWN : if(MoveNum > 0) { var_y = HeroTy + 1; if(UndoCheck(HeroTx, var_y)) { UndoIndex--; MoveNum++; HeroTy = var_y; MapTy = HeroTy - 3; } else { if(IsCanGo(HeroTx, var_y)) { if(CheckFoceEvent(HeroTx, var_y) <= 0) { // °­Á¦ À̺¥Æ®¸¸ üũ MoveNum--; // BackPush(HeroTx, HeroTy); UNDO[UndoIndex].x = HeroTx; UNDO[UndoIndex].y = HeroTy; UndoIndex++; HeroTy = var_y; // MapTx = HeroTx - 3; MapTy = HeroTy - 3; if(MoveNum == 0) { CopyUndoToBack(); MainState = MS_DEFAULT; CheckEvent(); } } } } } break; case SWAP_KEY_1 : // »óꏱâ GameState = GS_STATUS; SceneStatus_Init(); break; case SWAP_KEY_2 : // ¸Êº¸±â GameState = GS_MAP; SceneMap_Init(); break; } } void SM_event() { if(EventState == 5) { SetColor(S_WHITE); FillRect(LCD_x1 + 3, LCD_y1 + 26, LCD_x1 + 116, LCD_y1 + 75); SetColor(S_BLACK); DrawRect(LCD_x1 + 2, LCD_y1 + 25, LCD_x1 + 117, LCD_y1 + 76); SetStrType(S_FONT_LARGE, S_BLACK, S_WHITE, S_ALIGN_LEFT); DrawText(LCD_x1 + 4, LCD_y1 + 27, "ÀüÅõ¿¡¼­ ½Â¸®"); MakeStr1(status_str, "%d GOLD¸¦ ÀÔ¼ö", MonDice); DrawText(LCD_x1 + 4, LCD_y1 + 39, status_str); CopyImage(LCD_x1 + 55, LCD_y1 + 67, i_ok[swFrame2]); } else if(EventState == 8) { SetColor(S_WHITE); FillRect(LCD_x1 + 3, LCD_y1 + 26, LCD_x1 + 116, LCD_y1 + 75); SetColor(S_BLACK); DrawRect(LCD_x1 + 2, LCD_y1 + 25, LCD_x1 + 117, LCD_y1 + 76); SetStrType(S_FONT_LARGE, S_BLACK, S_WHITE, S_ALIGN_LEFT); MakeStr1(status_str, "SCORE : %d", MyScore); DrawText(LCD_x1 + 4, LCD_y1 + 27, status_str); CopyImage(LCD_x1 + 55, LCD_y1 + 67, i_ok[swFrame2]); } else { GameTextBox(EventFrame); } } void SMK_event() { switch(EventState) { case 0 : // °ÔÀÓ ½ÃÀÛ EventFrame++; if(EventFrame >= 2) { MainState = MS_DEFAULT; } break; case 1 : // Ű ÇÊ¿ä À̺¥Æ® MainState = MS_DEFAULT; break; case 2 : // ÃÖÁ¾º¸½ºÀü if(MyFlag[0] == 0) { EventFrame++; if(EventFrame >= 23) { MyFlag[0] = 1; GameState = GS_COMBAT; MonNum = 5; SceneCombat_Init(); } } else { GameState = GS_COMBAT; MonNum = 5; SceneCombat_Init(); } break; case 3 : // º¸½ºÀü ½Â EventFrame++; if(EventFrame >= 30) { EventState = 8; } break; case 4 : // º¸½ºÀü ÆÐ EventFrame++; if(EventFrame >= 26) { MainState = MS_BACK; } break; case 5 : // ÀϹÝÀüÅõ ½Â MyStatus[2] += MonDice; MainState = MS_DEFAULT; break; case 6 : // ÀϹÝÀüÅõ ÆÐ MainState = MS_BACK; break; case 7 : // PX if(MyFlag[1] == 0) { EventFrame++; if(EventFrame >= 5) { MyFlag[1] = 1; GameState = GS_DEAL; MainState = MS_DEFAULT; SceneDeal_Init(); } } else { GameState = GS_DEAL; MainState = MS_DEFAULT; SceneDeal_Init(); } break; case 8 : // END InitGame(); GameState = GS_TITLE; SceneTitle_Init(); break; case 9 : // À̺¥Æ® ÀüÅõÇϱâ GameState = GS_COMBAT; SceneCombat_Init(); break; case 10 : // as girl À̵¿ µÎ¹è EventFrame++; if(EventFrame >= 34) { MyFlag[4] = 1; MainState = MS_DEFAULT; } break; case 11 : // as girl µ· µÎ¹è EventFrame++; if(EventFrame >= 32) { MyStatus[2] *= 2; MainState = MS_DEFAULT; } break; case 12 : // ¼Ò¸ÅÄ¡±â switch(EventFrame) { case 39 : EventFrame = 37; break; case 37 : MyStatus[2] /= 2; MainState = MS_DEFAULT; break; } break; case 13 : // ¼ö¸é°¡½º EventFrame++; if(IsItem(22) > 0) { // ¹æµ¶¸é ÀÖÀ» °æ¿ì switch(EventFrame) { case 37 : EventFrame = 38; break; case 39 : MainState = MS_DEFAULT; break; } } else { if(EventFrame >= 38) { MyStatus[2] /= 2; MainState = MS_DEFAULT; } } break; case 14 : // µ¶ EventFrame++; if(EventFrame >= 43) { MyFlag[2] = 1; MyFlag[3] = 3; MainState = MS_DEFAULT; } break; } } void SceneMain_Do() { RestoreLCD(); Draw_MainItem(); SetStrType(S_FONT_LARGE, S_BLACK, S_WHITE, S_ALIGN_LEFT); if(MyFlag[2] > 0) { if(swFrame2 > 0) DrawText(LCD_x1 + 4, LCD_y1 + 17, "Áßµ¶"); } switch(MainState) { case MS_DEFAULT : // ÁÖ»çÀ§ ´øÁö±â Àü Draw_Map(); CopyImage(LCD_x1 + 77, LCD_y1 + 45, gamehero[swFrame2]); SM_default(); break; case MS_DICEING : // ÁÖ»çÀ§ ´øÁö´Â Áß Draw_Map(); CopyImage(LCD_x1 + 77, LCD_y1 + 45, gamehero[swFrame2]); switch(AniFrame) { case 0 : CopyImage(LCD_x1 + 2, LCD_y1 + 75, i_stand[2]); CopyImage(LCD_x1 + 5, LCD_y1 + 57, dice[DiceNum1 - 1]); CopyImage(LCD_x1 + 17, LCD_y1 + 57, dice[DiceNum2 - 1]); break; case 1 : CopyImage(LCD_x1 + 2, LCD_y1 + 75, i_stand[0]); temp1 = Rand(0, 4); CopyImage(LCD_x1 + 3, LCD_y1 + 33, dicethrow[temp1]); temp1 = Rand(0, 4); CopyImage(LCD_x1 + 16, LCD_y1 + 33, dicethrow[temp1]); break; case 2 : CopyImage(LCD_x1 + 2, LCD_y1 + 75, i_stand[0]); temp1 = Rand(0, 4); CopyImage(LCD_x1 + 3, LCD_y1 + 45, dicethrow[temp1]); temp1 = Rand(0, 4); CopyImage(LCD_x1 + 16, LCD_y1 + 45, dicethrow[temp1]); break; case 3 : DiceNum1 = Rand(1, 7); DiceNum2 = Rand(1, 7); MoveNum = DiceNum1 + DiceNum2; if(MyFlag[4] > 0) { MyFlag[4] = 0; MoveNum *= 2; } if(MyFlag[2] > 0) { if(MyFlag[3] > 0) { MyFlag[3]--; if(MoveNum > 3) { MoveNum -= 3; } else { MoveNum = 1; } } else { MyFlag[2] = 0; } } CopyImage(LCD_x1 + 2, LCD_y1 + 75, i_stand[0]); CopyImage(LCD_x1 + 5, LCD_y1 + 49, dice[DiceNum1 - 1]); CopyImage(LCD_x1 + 17, LCD_y1 + 49, dice[DiceNum2 - 1]); UndoIndex = 0; MainState = MS_MOVE; break; } AniFrame++; break; case MS_MOVE : // ÁÖ»çÀ§ ´øÁö°í À̵¿Áß Draw_Map(); CopyImage(LCD_x1 + 77, LCD_y1 + 45, gamehero[swFrame2]); CopyImage(LCD_x1 + 2, LCD_y1 + 75, i_stand[0]); CopyImage(LCD_x1 + 5, LCD_y1 + 49, dice[DiceNum1 - 1]); CopyImage(LCD_x1 + 17, LCD_y1 + 49, dice[DiceNum2 - 1]); MakeStr1(status_str, "%2d", MoveNum); DrawText(LCD_x1 + 10, LCD_y1 + 36, status_str); break; case MS_EVENT : // À̺¥Æ® ¹ß»ý Draw_EventMap(); CopyImage(LCD_x1 + 77, LCD_y1 + 25, gamehero[swFrame2]); SM_event(); break; case MS_BACK : // ÈÄÁø (ÃÖ´ë 12) Draw_Map(); CopyImage(LCD_x1 + 77, LCD_y1 + 45, gamehero[swFrame2]); if(MoveNum > 0) { MoveNum--; temp1 = BackPop(); if(temp1 > 0) { MapTx = HeroTx - 3; MapTy = HeroTy - 3; } else { MainState = MS_DEFAULT; } } else { MainState = MS_DEFAULT; } break; } Flush(); } void SceneMain_Key() { switch(swData) { case SWAP_KEY_3 : // ¼Ò¸®Åä±Û case SWAP_KEY_7 : // s SoundFlag = 1 - SoundFlag; return; } switch(MainState) { case MS_DEFAULT : // ÁÖ»çÀ§ ´øÁö±â Àü switch(swData) { case SWAP_KEY_OK : MainState = MS_DICEING; AniFrame = 0; if(SoundFlag) PlaySound(cuser_ok); return; case SWAP_KEY_1 : // »óꏱâ GameState = GS_STATUS; SceneStatus_Init(); break; case SWAP_KEY_2 : // ¸Êº¸±â GameState = GS_MAP; SceneMap_Init(); break; case SWAP_KEY_1_L : // item»ç¿ë ActItem(0); break; case SWAP_KEY_2_L : // item»ç¿ë ActItem(1); break; case SWAP_KEY_3_L : // item»ç¿ë ActItem(2); break; case SWAP_KEY_4_L : // item»ç¿ë ActItem(3); break; case SWAP_KEY_5_L : // item»ç¿ë ActItem(4); break; case SWAP_KEY_6_L : // item»ç¿ë ActItem(5); break; } break; // case MS_DICEING : // ÁÖ»çÀ§ ´øÁö´Â Áß // MainState = MS_MOVE; // return; case MS_MOVE : // ÁÖ»çÀ§ ´øÁö°í À̵¿Áß SMK_move(); break; case MS_EVENT : // À̺¥Æ® ¹ß»ý if(swData == SWAP_KEY_OK) { SMK_event(); } break; // case MS_BACK : // ÈÄÁø - Ű ¾È¸ÔÀ½ // break; } } void SceneMap_Init() { MyScore--; ClearWhite(); CopyImage(LCD_x1 + 19, LCD_y1, i_map); SaveLCD(); var_sx = LCD_x1 + 20 + (HeroTx - 3) * 2; var_sy = LCD_y1 + (HeroTy - 3) * 2; } void SceneMap_Do() { RestoreLCD(); if(swFrame2) { SetColor(S_BLACK); } else { SetColor(S_WHITE); } FillRect(var_sx, var_sy, var_sx + 1, var_sy + 1); Flush(); } void SceneMap_Key() { GameState = GS_MAIN; SceneMain_Init(); } void SceneStatus_Init() { MyScore--; ClearWhite(); Draw_GameBorder(); SaveLCD(); index = 0; } void SceneStatus_Do() { RestoreLCD(); SetStrType(S_FONT_LARGE, S_BLACK, S_WHITE, S_ALIGN_LEFT); MakeStr1(status_str, "HP : %d", MyStatus[0]); DrawStr(LCD_x1 + 6, LCD_y1 + 4, status_str); MakeStr1(status_str, "STR : %d", MyStatus[1]); DrawStr(LCD_x1 + 6, LCD_y1 + 17, status_str); MakeStr1(status_str, "GOLD: %d", MyStatus[2]); DrawStr(LCD_x1 + 6, LCD_y1 + 30, status_str); if(index == -2) { if(swFrame2) { SetColor(S_BLACK); } else { SetColor(S_WHITE); } DrawRect(LCD_x1 + 5, LCD_y1 + 40, LCD_x1 + 17, LCD_y1 + 52); } if(MyAttItem >= 0) { CopyImage(LCD_x1 + 6, LCD_y1 + 41, i_item[MyAttItem]); if(index == -2) { SetColor(S_WHITE); FillRect(LCD_x1 + 5, LCD_y1 + 1, LCD_x1 + 85, LCD_y1 + 39); SetColor(S_BLACK); DrawRect(LCD_x1 + 5, LCD_y1 + 1, LCD_x1 + 85, LCD_y1 + 39); SetStrType(S_FONT_LARGE, S_BLACK, S_WHITE, S_ALIGN_LEFT); DrawStr(LCD_x1 + 7, LCD_y1 + 3, ItemStr[MyAttItem]); DrawStr(LCD_x1 + 7, LCD_y1 + 15, ItemExp[MyAttItem]); DrawStr(LCD_x1 + 7, LCD_y1 + 27, "1:ÇØÁ¦ 2:¹ö¸²"); } SetStrType(S_FONT_MEDIUM, S_BLACK, S_WHITE, S_ALIGN_LEFT); MakeStr1(status_str, "att : %d", ITEM[MyAttItem].value); DrawStr(LCD_x1 + 18, LCD_y1 + 41, status_str); } if(index == -1) { if(swFrame2) { SetColor(S_BLACK); } else { SetColor(S_WHITE); } DrawRect(LCD_x1 + 5, LCD_y1 + 51, LCD_x1 + 17, LCD_y1 + 63); } if(MyDefItem >= 0) { CopyImage(LCD_x1 + 6, LCD_y1 + 52, i_item[MyDefItem]); if(index == -1) { SetColor(S_WHITE); FillRect(LCD_x1 + 5, LCD_y1 + 1, LCD_x1 + 85, LCD_y1 + 39); SetColor(S_BLACK); DrawRect(LCD_x1 + 5, LCD_y1 + 1, LCD_x1 + 85, LCD_y1 + 39); SetStrType(S_FONT_LARGE, S_BLACK, S_WHITE, S_ALIGN_LEFT); DrawStr(LCD_x1 + 7, LCD_y1 + 3, ItemStr[MyDefItem]); DrawStr(LCD_x1 + 7, LCD_y1 + 15, ItemExp[MyDefItem]); DrawStr(LCD_x1 + 7, LCD_y1 + 27, "1:ÇØÁ¦ 2:¹ö¸²"); } SetStrType(S_FONT_MEDIUM, S_BLACK, S_WHITE, S_ALIGN_LEFT); MakeStr1(status_str, "def : %d", ITEM[MyDefItem].value); DrawStr(LCD_x1 + 18, LCD_y1 + 52, status_str); } Draw_StatusItem(index); if(index >= 0) { temp1 = MyItem[index]; if(temp1 >= 0) { SetColor(S_WHITE); FillRect(LCD_x1 + 38, LCD_y1 + 24, LCD_x1 + 118, LCD_y1 + 62); SetColor(S_BLACK); DrawRect(LCD_x1 + 38, LCD_y1 + 24, LCD_x1 + 118, LCD_y1 + 62); DrawText(LCD_x1 + 40, LCD_y1 + 26, ItemStr[temp1]); DrawText(LCD_x1 + 40, LCD_y1 + 38, ItemExp[temp1]); // att : 0, def : 1, ace : 2 use : 3 evt : 10 switch(ITEM[temp1].type) { case 0 : case 1 : DrawText(LCD_x1 + 40, LCD_y1 + 50, "1:ÀåÂø 2:¹ö¸²"); break; case 2 : DrawText(LCD_x1 + 40, LCD_y1 + 50, "2:¹ö¸²"); break; case 3 : DrawText(LCD_x1 + 40, LCD_y1 + 50, "1:»ç¿ë 2:¹ö¸²"); break; // case 10 : // À̺¥Æ® ¾ÆÀÌÅÛÀº ¹ö¸±¼ö ¾øÀ½ // DrawText(LCD_x1 + 40, LCD_y1 + 50, "2:¹ö¸²"); // break; } } } Flush(); } void SceneStatus_Key() { switch(swData) { case SWAP_KEY_LEFT : case SWAP_KEY_UP : index--; if(index < -2) index = 7; break; case SWAP_KEY_RIGHT : case SWAP_KEY_DOWN : index++; if(index > 7) index = -2; break; case SWAP_KEY_1 :// ÇØÁ¦, ÀåÂø, »ç¿ë switch(index) { case -2 : if(MyAttItem >= 0) { temp1 = GetEmptyItemPos(); if(temp1 >= 0) { MyItem[temp1] = MyAttItem; MyAttItem = -1; MyStatus[3] = MyStatus[1]; // att if(SoundFlag) PlaySound(cuser_ok); } } break; case -1 : if(MyDefItem >= 0) { temp1 = GetEmptyItemPos(); if(temp1 >= 0) { MyItem[temp1] = MyDefItem; MyDefItem = -1; MyStatus[4] = 0; // def if(SoundFlag) PlaySound(cuser_ok); } } break; default : ActItem(index); break; } break; case SWAP_KEY_2 :// ¹ö¸² switch(index) { case -2 : if(MyAttItem >= 0) { MyAttItem = -1; MyStatus[3] = MyStatus[1]; // att if(SoundFlag) PlaySound(cuser_ok); } break; case -1 : if(MyDefItem >= 0) { MyDefItem = -1; MyStatus[4] = 0; // def if(SoundFlag) PlaySound(cuser_ok); } break; default : temp1 = MyItem[index]; if(temp1 >= 0) { switch(ITEM[temp1].type) { case 0 :// att case 1 :// def case 2 :// ace case 3 :// use MyItem[index] = -1; if(SoundFlag) PlaySound(cuser_ok); break; // case 10 : // break; } } break; } break; default : GameState = GS_MAIN; SceneMain_Init(); break; } } void SceneCombat_Init() { ClearWhite(); Draw_GameBorder(); CopyImage(LCD_x1 + 6, LCD_y1 + 7, c_hero_f); // heroface SetStrType(S_FONT_LARGE, S_BLACK, S_WHITE, S_ALIGN_LEFT); DrawStr(LCD_x1 + 27, LCD_y1 + 6, "ÆÇ"); switch(MonNum) { case 0 : MonHP = 4; MonAtt = 7; CopyImage(LCD_x1 + 94, LCD_y1 + 54, c_m01_f); DrawStr(LCD_x1 + 6, LCD_y1 + 54, "½½¶óÀÓ"); break; case 1 : MonHP = 7; MonAtt = 7; CopyImage(LCD_x1 + 94, LCD_y1 + 54, c_m02_f); DrawStr(LCD_x1 + 6, LCD_y1 + 54, "½ºÄÌ·¹Åæ"); break; case 2 : MonHP = 8; MonAtt = 8; CopyImage(LCD_x1 + 94, LCD_y1 + 54, c_m03_f); DrawStr(LCD_x1 + 6, LCD_y1 + 54, "½ã´õ½½¶óÀÓ"); break; case 3 : MonHP = 10; MonAtt = 8; CopyImage(LCD_x1 + 94, LCD_y1 + 54, c_m06_f); DrawStr(LCD_x1 + 6, LCD_y1 + 54, "½ºÄ̸ÞÀÌÁö"); break; case 4 : MonHP = 10; MonAtt = 9; CopyImage(LCD_x1 + 94, LCD_y1 + 54, c_m04_f); DrawStr(LCD_x1 + 6, LCD_y1 + 54, "¿À¿ì°Å"); break; case 5 : MonHP = 15; MonAtt = 10; CopyImage(LCD_x1 + 94, LCD_y1 + 54, c_m05_f); DrawStr(LCD_x1 + 6, LCD_y1 + 54, "Ä«Çǵ巡°ï"); break; case 10 : MonHP = 12; MonAtt = 9; CopyImage(LCD_x1 + 94, LCD_y1 + 54, c_ab_f); DrawStr(LCD_x1 + 6, LCD_y1 + 54, "º¯Å±³°ü"); break; } SetColor(S_BLACK); DrawRect(LCD_x1 + 6, LCD_y1 + 27, LCD_x1 + 113, LCD_y1 + 52); SaveLCD(); CombatState = CS_HEROTURN; } void SceneCombat_Do() { RestoreLCD(); SetStrType(S_FONT_MEDIUM, S_BLACK, S_WHITE, S_ALIGN_LEFT); MakeStr2(status_str, "HP:%d, ATT:%d", MyStatus[0], MyStatus[3]); DrawStr(LCD_x1 + 27, LCD_y1 + 19, status_str); MakeStr2(status_str, "HP:%d, ATT:%d", MonHP, MonAtt); DrawStr(LCD_x1 + 6, LCD_y1 + 67, status_str); switch(CombatState) { case CS_HEROTURN : SetStrType(S_FONT_LARGE, S_BLACK, S_WHITE, S_ALIGN_CENTER); DrawStr(LCD_x1 + 59, LCD_y1 + 29, "ÁÖ»çÀ§¸¦ ´øÁ®¶ó!"); CopyImage(LCD_x1 + 53, LCD_y1 + 43, i_ok[swFrame2]); break; case CS_HEROTURN2 : CopyImage(LCD_x1 + 37, LCD_y1 + 33, c_hero_a[0]); switch(MonNum) { case 0 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m01_a[0]); break; case 1 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m02_a[0]); break; case 2 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m03_a[0]); break; case 3 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m06_a[0]); break; case 4 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m04_a[0]); break; case 5 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m05_a[0]); break; case 10 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_ab_a[0]); break; } //MakeStr1(status_str, "%2d", MyDice); //DrawText(LCD_x1 + 12, LCD_y1 + 34, status_str); CopyImage(LCD_x1 + 12, LCD_y1 + 35, dice[DiceNum1 - 1]); CopyImage(LCD_x1 + 24, LCD_y1 + 35, dice[DiceNum2 - 1]); DiceNum1 = Rand(1, 7); DiceNum2 = Rand(1, 7); MonDice = DiceNum1 + DiceNum2; CombatState = CS_ENEMYTURN; AniFrame = 0; break; case CS_ENEMYTURN : CopyImage(LCD_x1 + 37, LCD_y1 + 33, c_hero_a[0]); switch(MonNum) { case 0 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m01_a[0]); break; case 1 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m02_a[0]); break; case 2 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m03_a[0]); break; case 3 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m06_a[0]); break; case 4 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m04_a[0]); break; case 5 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m05_a[0]); break; case 10 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_ab_a[0]); break; } MakeStr1(status_str, "%2d", MyDice); DrawText(LCD_x1 + 12, LCD_y1 + 34, status_str); //MakeStr1(status_str, "%2d", MonDice); //DrawText(LCD_x1 + 96, LCD_y1 + 34, status_str); CopyImage(LCD_x1 + 85, LCD_y1 + 35, dice[DiceNum1 - 1]); CopyImage(LCD_x1 + 97, LCD_y1 + 35, dice[DiceNum2 - 1]); if(MyDice == MonDice) { if(IsItem(15) < 0) { // ½Â¸®ÀÇ Ææ´øÆ® À¯¹« CombatState = CS_HEROTURN; } } else { CombatState = CS_ATTACK; AniFrame = 0; } break; case CS_ATTACK : MakeStr1(status_str, "%2d", MyDice); DrawText(LCD_x1 + 12, LCD_y1 + 34, status_str); MakeStr1(status_str, "%2d", MonDice); DrawText(LCD_x1 + 96, LCD_y1 + 34, status_str); if(MyDice >= MonDice) { // À¯Àú°ø°Ý switch(MonNum) { case 0 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m01_a[0]); break; case 1 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m02_a[0]); break; case 2 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m03_a[0]); break; case 3 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m06_a[0]); break; case 4 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m04_a[0]); break; case 5 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m05_a[0]); break; case 10 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_ab_a[0]); break; } AniFrame++; switch(AniFrame) { case 1 : CopyImage(LCD_x1 + 37, LCD_y1 + 33, c_hero_a[1]); if(SoundFlag) PlaySound(battle_attack); break; case 2 : CopyImage(LCD_x1 + 37, LCD_y1 + 33, c_hero_a[0]); CopyImage(LCD_x1 + 66, LCD_y1 + 34, i_attack00); break; case 3 : CopyImage(LCD_x1 + 37, LCD_y1 + 33, c_hero_a[0]); temp1 = MonHP - MyStatus[3]; if(temp1 < 0) MonHP = 0; else MonHP = temp1; if(MonHP <= 0) { // ÀüÅõ ½Â¸® GameState = GS_MAIN; SceneMain_Init(); if(MonNum == 5) { MainState = MS_EVENT; EventState = 3; EventFrame = 26; //if(SoundFlag) PlaySound(ending); } else { if(MonNum < 5) { MyFlag[5 + MonNum] = 1; } MainState = MS_EVENT; EventState = 5; MonDice = Rand(1, (MonNum + 1) * 50); if(IsItem(14) >= 0) { MonDice *= 2; } MyScore += MonDice; if(SoundFlag) PlaySound(battle_win); } } else { CombatState = CS_HEROTURN; } break; } } else { // ¸ó½ºÅͰø°Ý CopyImage(LCD_x1 + 37, LCD_y1 + 33, c_hero_a[0]); if(AniFrame == 0) { switch(MonNum) { case 0 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m01_a[1]); break; case 1 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m02_a[1]); break; case 2 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m03_a[1]); break; case 3 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m04_a[1]); break; case 4 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m05_a[1]); break; case 5 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m06_a[1]); break; case 10 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_ab_a[1]); break; } if(SoundFlag) PlaySound(battle_attack); } else { switch(MonNum) { case 0 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m01_a[0]); break; case 1 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m02_a[0]); break; case 2 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m03_a[0]); break; case 3 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m04_a[0]); break; case 4 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m05_a[0]); break; case 5 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_m06_a[0]); break; case 10 : CopyImage(LCD_x1 + 65, LCD_y1 + 33, c_ab_a[0]); break; } } AniFrame++; switch(AniFrame) { case 2 : CopyImage(LCD_x1 + 38, LCD_y1 + 34, i_attack00); break; case 4 : temp1 = MyStatus[0] - (MonAtt - MyStatus[4]); if(temp1 < 0) MyStatus[0] = 0; else MyStatus[0] = temp1; if(MyStatus[0] <= 0) { // ÀüÅõ ÆÐ¹è MyStatus[0] = MyStatus[5]; MoveNum = Rand(6, 12); GameState = GS_MAIN; SceneMain_Init(); MainState = MS_EVENT; if(MonNum == 5) { EventState = 4; EventFrame = 24; } else { EventState = 6; EventFrame = 44; } MyScore -= MonNum; if(SoundFlag) PlaySound(battle_tloss); } else { CombatState = CS_HEROTURN; } break; } } break; } Flush(); } void SceneCombat_Key() { switch(swData) { case SWAP_KEY_3 : // ¼Ò¸®Åä±Û case SWAP_KEY_7 : // s SoundFlag = 1 - SoundFlag; return; } switch(CombatState) { case CS_HEROTURN : switch(swData) { case SWAP_KEY_1_L : // item»ç¿ë ActItem(0); break; case SWAP_KEY_2_L : // item»ç¿ë ActItem(1); break; case SWAP_KEY_3_L : // item»ç¿ë ActItem(2); break; case SWAP_KEY_4_L : // item»ç¿ë ActItem(3); break; case SWAP_KEY_5_L : // item»ç¿ë ActItem(4); break; case SWAP_KEY_6_L : // item»ç¿ë ActItem(5); break; default : DiceNum1 = Rand(1, 7); DiceNum2 = Rand(1, 7); MyDice = DiceNum1 + DiceNum2; CombatState = CS_HEROTURN2; AniFrame = 0; break; } break; /* case CS_HEROTURN2 : break; case CS_ENEMYTURN : break; case CS_ATTACK : break; */ } } void SceneDeal_Init() { ClearWhite(); SetColor(S_BLACK); DrawRect(LCD_x1, LCD_y1, LCD_x2, LCD_y1 + 67); SetStrType(S_FONT_LARGE, S_LGRAY, S_WHITE, S_ALIGN_LEFT); DrawStr(LCD_x1 + 2, LCD_y1 + 42, "<>Á¿ìÀ̵¿, ok:È®ÀÎ"); DrawStr(LCD_x1, LCD_y1 + 69, "1:»ç±â 2:ÆÈ±â 3:³ª°¨"); SaveLCD(); DealState = 0; index = 0; } void SceneDeal_Do() { RestoreLCD(); switch(DealState) { case 0 : // »ç±â temp1 = DealStore[index]; CopyImage(LCD_x1 + 2, LCD_y1 + 2, i_item[temp1]); SetStrType(S_FONT_LARGE, S_BLACK, S_WHITE, S_ALIGN_LEFT); MakeStr1(status_str, "GOLD:%d", ItemMoney[temp1]); DrawStr(LCD_x1 + 16, LCD_y1 + 2, status_str); CopyImage(LCD_x1 + 98, LCD_y1 + 2, c_px_f); DrawStr(LCD_x1 + 2, LCD_y1 + 16, ItemStr[temp1]); DrawStr(LCD_x1 + 2, LCD_y1 + 28, ItemExp[temp1]); MakeStr1(status_str, "¼ÒÁö±Ý:%d", MyStatus[2]); DrawStr(LCD_x1 + 2, LCD_y1 + 56, status_str); if(swFrame2) DrawStr(LCD_x1, LCD_y1 + 69, "1:»ç±â"); break; case 1 : // ÆÈ±â temp1 = MyItem[index]; SetStrType(S_FONT_LARGE, S_BLACK, S_WHITE, S_ALIGN_LEFT); if(temp1 == -1) { DrawStr(LCD_x1 + 2, LCD_y1 + 2, "ºñ¾îÀÖÀ½"); } else { CopyImage(LCD_x1 + 2, LCD_y1 + 2, i_item[temp1]); if(ITEM[temp1].type == 10) { if(swFrame2) DrawStr(LCD_x1 + 16, LCD_y1 + 2, "ÆÈ¼ö ¾øÀ½"); } else { MakeStr1(status_str, "GOLD:%d", ItemMoney[temp1] / 2); DrawStr(LCD_x1 + 16, LCD_y1 + 2, status_str); } DrawStr(LCD_x1 + 2, LCD_y1 + 16, ItemStr[temp1]); DrawStr(LCD_x1 + 2, LCD_y1 + 28, ItemExp[temp1]); } CopyImage(LCD_x1 + 98, LCD_y1 + 2, c_hero_f); MakeStr1(status_str, "¼ÒÁö±Ý:%d", MyStatus[2]); DrawStr(LCD_x1 + 2, LCD_y1 + 56, status_str); if(swFrame2) DrawStr(LCD_x1 + 42, LCD_y1 + 69, "2:ÆÈ±â"); break; } Flush(); } void SceneDeal_Key() { switch(swData) { case SWAP_KEY_LEFT : index--; if(index < 0) { switch(DealState) { case 0 : index = 18; break; case 1 : index = 7; break; } } break; case SWAP_KEY_RIGHT : index++; switch(DealState) { case 0 : if(index > 18) index = 0; break; case 1 : if(index > 7) index = 0; break; } break; case SWAP_KEY_1 : if(DealState != 0) { DealState = 0; index = 0; } else { // »ç±â BuyItem(); } break; case SWAP_KEY_2 : if(DealState != 1) { DealState = 1; index = 0; } else { // ÆÈ±â SellItem(); } break; case SWAP_KEY_3 : GameState = GS_MAIN; MainState = MS_DEFAULT; SceneMain_Init(); break; case SWAP_KEY_OK : switch(DealState) { case 0 : // »ç±â BuyItem(); break; case 1 : // ÆÈ±â SellItem(); break; } break; } } // Draw void Draw_GameBorder() { CopyImage(LCD_x1, LCD_y1, titlehline); CopyImage(LCD_x1 , LCD_y2 - 4, titlehline); CopyImage(LCD_x1, LCD_y1 + 5, titlevline); CopyImage(LCD_x2 - 4, LCD_y1 + 5, titlevline); } void Cache_MainBorder() { ClearWhite(); CopyImage(LCD_x1, LCD_y1, gamelayer01); CopyImage(LCD_x1 + 33, LCD_y1, gamelayer02); CopyImage(LCD_x1, LCD_y1 + 34, gamelayer03); CopyImage(LCD_x1 + 30, LCD_y1 + 34, gamelayer03); CopyImage(LCD_x1, LCD_y1 + 75, gamelayer04); CopyImage(LCD_x1 + 117, LCD_y1 + 5, gamelayer05); CopyImage(LCD_x1 + 33, LCD_y1 + 76, gamelayer06); SaveLCD(); } void Draw_Map() {// 70x70 (10x10 tile) // 46, 5 var_sy = LCD_y1 + 5; var_my = MapTy; for(var_y = 0; var_y < 7; var_y++) { var_sx = LCD_x1 + 46; for(var_x = 0; var_x < 7; var_x++) { var_mx = MapTx + var_x; tile = GetTile(var_mx, var_my); CopyImage(var_sx, var_sy, i_tile[tile]); var_sx += 10; } var_sy += 10; var_my++; } } void Draw_EventMap() {// var_sy = LCD_y1 + 5; var_my = HeroTy - 1; for(var_y = 0; var_y < 2; var_y++) { var_sx = LCD_x1 + 46; for(var_x = 0; var_x < 7; var_x++) { var_mx = MapTx + var_x; tile = GetTile(var_mx, var_my); CopyImage(var_sx, var_sy, i_tile[tile]); var_sx += 10; } var_sy += 10; var_my++; } } void Draw_MainItem() {// (11x11 item) // 34, 5 - (6 °³) var_x = LCD_x1 + 34; var_y = LCD_y1 + 5; SetColor(S_BLACK); for(i = 0; i < 6; i++) { if(MyItem[i] >= 0) { CopyImage(var_x, var_y, i_item[MyItem[i]]); } else { DrawRect(var_x, var_y, var_x + 10, var_y + 10); } var_y += 12; } } void Draw_StatusItem(int sel) {// (11x11 item) // 13, 64 - (8 °³) var_x = LCD_x1 + 13; var_y = LCD_y1 + 64; for(i = 0; i < 8; i++) { if(MyItem[i] >= 0) { CopyImage(var_x, var_y, i_item[MyItem[i]]); } else { SetColor(S_BLACK); DrawRect(var_x, var_y, var_x + 10, var_y + 10); } if(sel == i) { if(swFrame2) { SetColor(S_BLACK); } else { SetColor(S_WHITE); } DrawRect(var_x - 1, var_y - 1, var_x + 11, var_y + 11); } var_x += 12; } } // À̺¥Æ® void main() { InitGame(); GameState = GS_TITLE; SceneTitle_Init(); SetTimer(300, 1); if(SoundFlag) PlaySound(diceopen); } void EVENT_TIMEOUT() { switch(GameState) { case GS_TITLE : SceneTitle_Do(); break; case GS_MAIN : SceneMain_Do(); break; case GS_STATUS : SceneStatus_Do(); break; case GS_MAP : SceneMap_Do(); break; case GS_COMBAT : SceneCombat_Do(); break; case GS_DEAL : SceneDeal_Do(); break; } } void EVENT_KEYPRESS() { if(SoundFlag) StopSound(); switch(GameState) { case GS_TITLE : SceneTitle_Key(); break; case GS_MAIN : SceneMain_Key(); break; case GS_STATUS : SceneStatus_Key(); break; case GS_MAP : SceneMap_Key(); break; case GS_COMBAT : SceneCombat_Key(); break; case GS_DEAL : SceneDeal_Key(); break; } }