* system may have problems because the user can't stop the
* autoroller for this number of rolls.
*/
-#define AUTOROLLER_STEP 25L
+#define AUTOROLLER_STEP 5431L
/*
* Define this to cut down processor use while autorolling
*/
-/*#define AUTOROLLER_DELAY*/
+#if 0
+# define AUTOROLLER_DELAY
+#endif
/*
* Maximum number of tries for selection of a proper quest monster
#endif
#ifdef JP
- {"¤¢¤Ê¤¿¤Ï¥¹¥¡¼¥ê¥Õ¥È¤Ë¾è¤Ã¤¿¤ê¤¹¤ë¤¤ï¤á¤ÆÄ̾ï¤Î¥¯¥¿¡¼¤Ç¤¹¡£¤¢¤Ê¤¿¤ÎÌÓ¤ÏÜô¿§¤Ç¤¹¡£", 65, 154, 0, 55},
- {"¤¢¤Ê¤¿¤ÏÄ̾ï¤Î¥¯¥¿¡¼Ã£¤¬Íê¤ê¤Ë¤·¤Æ¤¤¤ë¥Ñ¥Ñ¥¯¥¿¡¼¤Ç¤¹¡£¤¢¤Ê¤¿¤ÎÌÓ¤ÏÎп§¤Ç¤¹¡£", 95, 154, 0, 65},
- {"¤¢¤Ê¤¿¤Ï¤È¤Æ¤âÄÁ¤·¤¤¥È¥é¥¯¥¿¡¼¤Ç¤¹¡£¤¢¤Ê¤¿¤ÎÌӤϥȥé¤Î¤è¤¦¤Ê²«¤È¹õ¤Î¼ÊÌÏÍͤǤ¹¡£", 100, 154, 0, 80},
+ {"¤¢¤Ê¤¿¤ÏÉáÃÊ¥¶¥¯¥¶¥¯¥Ç¥¶¡¼¥È¤ÇÍ·¤ó¤Ç¤¤¤ë¡¢", 4, 154, 159, 50},
+ {"¤¢¤Ê¤¿¤ÏÉáÃÊ¥°¥é¥°¥é¥¿¥ï¡¼¤ÇÍ·¤ó¤Ç¤¤¤ë¡¢", 8, 154, 159, 50},
+ {"¤¢¤Ê¤¿¤ÏÉáÃʥۥإۥض®Ã«¤ÇÍ·¤ó¤Ç¤¤¤ë¡¢", 12, 154, 159, 50},
+ {"¤¢¤Ê¤¿¤ÏÉáÃʥɥץɥ×ÃÓ¤ÇÍ·¤ó¤Ç¤¤¤ë¡¢", 16, 154, 159, 50},
+ {"¤¢¤Ê¤¿¤ÏÉáÃʥƥ¯¥Æ¥¯»¨µ»¾ì¤ÇÍ·¤ó¤Ç¤¤¤ë¡¢", 20, 154, 159, 50},
+ {"¤¢¤Ê¤¿¤ÏÉáÃÊ¥Õ¥à¥Õ¥àȪ¤ÇÍ·¤ó¤Ç¤¤¤ë¡¢", 24, 154, 159, 50},
+ {"¤¢¤Ê¤¿¤ÏÉáÃÊ¥¯¥Î¥¯¥ÎÂì¤ÇÍ·¤ó¤Ç¤¤¤ë¡¢", 28, 154, 159, 50},
+ {"¤¢¤Ê¤¿¤ÏÉáÃÊ¥¯¥ê¥¯¥êÀî¤ÇÍ·¤ó¤Ç¤¤¤ë¡¢", 32, 154, 159, 50},
+ {"¤¢¤Ê¤¿¤ÏÉáÃʥƥê¥Æ¥ê¥¥ã¥ó¥×¾ì¤ÇÍ·¤ó¤Ç¤¤¤ë¡¢", 36, 154, 159, 50},
+ {"¤¢¤Ê¤¿¤ÏÉáÃÊ¥¯¥¿¡¼ÁüÁ°¤ÇÍ·¤ó¤Ç¤¤¤ë¡¢", 40, 154, 159, 50},
+ {"¤¢¤Ê¤¿¤ÏÉáÃʥƥ¯¥ÎÅò¤ÇÍ·¤ó¤Ç¤¤¤ë¡¢", 44, 154, 159, 50},
+ {"¤¢¤Ê¤¿¤ÏÉáÃʥƥ¯¥Î¥¢¥¤¥é¥ó¥É¤ÇÍ·¤ó¤Ç¤¤¤ë¡¢", 48, 154, 159, 50},
+ {"¤¢¤Ê¤¿¤ÏÉáÃʥƥ¯¥Î¥Þ¥ê¥ó¤ÇÍ·¤ó¤Ç¤¤¤ë¡¢", 52, 154, 159, 50},
+ {"¤¢¤Ê¤¿¤ÏÉáÃʥƥ¯¥Î¥É¡¼¥à¤ÇÍ·¤ó¤Ç¤¤¤ë¡¢", 56, 154, 159, 50},
+ {"¤¢¤Ê¤¿¤ÏÉáÃʥƥ¯¥Î¥Û¡¼¥ë¤ÇÍ·¤ó¤Ç¤¤¤ë¡¢", 60, 154, 159, 50},
+ {"¤¢¤Ê¤¿¤ÏÉáÃʥƥ¯¥Î¹â¸¶¤ÇÍ·¤ó¤Ç¤¤¤ë¡¢", 64, 154, 159, 50},
+ {"¤¢¤Ê¤¿¤ÏÉáÃʥƥ¯¥Î»Ô̱²ñ´Û¤ÇÍ·¤ó¤Ç¤¤¤ë¡¢", 68, 154, 159, 50},
+ {"¤¢¤Ê¤¿¤ÏÉáÃʥƥ¯¥Î¸ø±à¤ÇÍ·¤ó¤Ç¤¤¤ë¡¢", 72, 154, 159, 50},
+ {"¤¢¤Ê¤¿¤ÏÉáÃÊ¥¹¥¤¥¹¥¤¥¢¥ë¥×¥¹¤ÇÍ·¤ó¤Ç¤¤¤ë¡¢", 76, 154, 159, 65},
+ {"¤¢¤Ê¤¿¤ÏÉáÃÊ¥Ò¥½¥Ò¥½¿¹¤ÇÍ·¤ó¤Ç¤¤¤ë¡¢", 80, 154, 159, 65},
+ {"¤¢¤Ê¤¿¤ÏÉáÃʥƥ¯¥ÎÀ¸ÂÖ¸¦µæ½ê¤ÇÍ·¤ó¤Ç¤¤¤ë¡¢", 84, 154, 159, 65},
+ {"¤¢¤Ê¤¿¤ÏÉáÃʥƥ¯¥Î¥í¥±¥Ã¥Èȯ¼ÍÂæ¤ÇÍ·¤ó¤Ç¤¤¤ë¡¢", 88, 154, 159, 65},
+ {"¤¢¤Ê¤¿¤ÏÉáÃÊ¥Á¥ã¥¤¥Ê¥¦¥©¡¼¥ë¤ÇÍ·¤ó¤Ç¤¤¤ë¡¢", 92, 154, 159, 65},
+ {"¤¢¤Ê¤¿¤ÏÉáÃÊ¥¹¥Ú¡¼¥¹¥¦¥©¡¼¥ë¤ÇÍ·¤ó¤Ç¤¤¤ë¡¢", 96, 154, 159, 70},
+ {"¤¢¤Ê¤¿¤ÏÉáÃʥƥ¯¥Î¥ê¥¾¡¼¥È¥Û¥Æ¥ë¤ÇÍ·¤ó¤Ç¤¤¤ë¡¢", 100, 154, 159, 75},
+
+ {"ÉáÄ̤Υ¯¥¿¡¼¤Ç¤¹¡£", 70, 159, 160, 50},
+ {"¤ß¤ó¤Ê¤¬Íê¤ê¤Ë¤·¤Æ¤¤¤ë¿Æ¥¯¥¿¡¼¤Ç¤¹¡£", 85, 159, 160, 65},
+ {"ºû¤¬Â繥ʪ¤Ê¥Ñ¥ó¥À¥¯¥¿¡¼¤Ç¤¹¡£", 92, 159, 161, 75},
+ {"¤È¤Æ¤âÄÁ¤·¤¤¥È¥é¥¯¥¿¡¼¤Ç¤¹¡£", 96, 159, 162, 80},
+ {"¤È¤Æ¤âÄÁ¤·¤¤¥Ô¥«¥¯¥¿¡¼¤Ç¤¹¡£", 100, 159, 163, 90},
+
+ {"¤¢¤Ê¤¿¤ÏÀÖ¿§¤ÎÌÓ¤ò¤â¤Á¡¢", 6, 160, 164, 50},
+ {"¤¢¤Ê¤¿¤Ï¥¯¥ê¡¼¥à¿§¤ÎÌÓ¤ò¤â¤Á¡¢", 12, 160, 164, 50},
+ {"¤¢¤Ê¤¿¤Ï²«ÅÚ¿§¤ÎÌÓ¤ò¤â¤Á¡¢", 18, 160, 164, 50},
+ {"¤¢¤Ê¤¿¤Ï²«¿§¤ÎÌÓ¤ò¤â¤Á¡¢", 24, 160, 164, 50},
+ {"¤¢¤Ê¤¿¤Ï²«Î理ÎÌÓ¤ò¤â¤Á¡¢", 30, 160, 164, 50},
+ {"¤¢¤Ê¤¿¤ÏËõÃ㿧¤ÎÌÓ¤ò¤â¤Á¡¢", 36, 160, 164, 50},
+ {"¤¢¤Ê¤¿¤ÏÇ»¤¤Î理ÎÌÓ¤ò¤â¤Á¡¢", 42, 160, 164, 50},
+ {"¤¢¤Ê¤¿¤ÏÀÄÎ理ÎÌÓ¤ò¤â¤Á¡¢", 48, 160, 164, 50},
+ {"¤¢¤Ê¤¿¤Ï¿å¿§¤ÎÌÓ¤ò¤â¤Á¡¢", 54, 160, 164, 50},
+ {"¤¢¤Ê¤¿¤ÏÇö¤¤»ç¿§¤ÎÌÓ¤ò¤â¤Á¡¢", 60, 160, 164, 50},
+ {"¤¢¤Ê¤¿¤Ï»ç¿§¤ÎÌÓ¤ò¤â¤Á¡¢", 65, 160, 164, 50},
+ {"¤¢¤Ê¤¿¤Ï°«¿§¤ÎÌÓ¤ò¤â¤Á¡¢", 70, 160, 164, 60},
+ {"¤¢¤Ê¤¿¤Ï¥Ô¥ó¥¯¿§¤ÎÌÓ¤ò¤â¤Á¡¢", 75, 160, 164, 60},
+ {"¤¢¤Ê¤¿¤ÏÇò¿§¤ÎÌÓ¤ò¤â¤Á¡¢", 80, 160, 164, 60},
+ {"¤¢¤Ê¤¿¤ÏÀÄ¿§¤ÎÌÓ¤ò¤â¤Á¡¢", 85, 160, 164, 65},
+ {"¤¢¤Ê¤¿¤Ï¹õ¿§¤ÎÌÓ¤ò¤â¤Á¡¢", 90, 160, 164, 65},
+ {"¤¢¤Ê¤¿¤ÏÎ理ÎÌÓ¤ò¤â¤Á¡¢", 95, 160, 164, 65},
+ {"¤¢¤Ê¤¿¤ÏÜô¿§¤ÎÌÓ¤ò¤â¤Á¡¢", 100, 160, 164, 70},
+ {"¤¢¤Ê¤¿¤Ï¥Ñ¥ó¥À¤Î¤è¤¦¤ÊÇò¤È¹õ¤ÎÈÃÌÏÍͤÎÌÓ¤ò¤â¤Á¡¢", 100, 161, 164, 70},
+ {"¤¢¤Ê¤¿¤Ï¥È¥é¤Î¤è¤¦¤Ê²«¤È¹õ¤Î¼ÊÌÏÍͤÎÌÓ¤ò¤â¤Á¡¢", 100, 162, 164, 70},
+ {"¤¢¤Ê¤¿¤ÏÌÀ¤ë¤¯µ±¤¤¤Æ¤¤¤Æ¡¢", 100, 163, 164, 70},
+
+ {"¥Þ¥Õ¥é¡¼¤òÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 4, 164, 0, 50},
+ {"¥é¥¤¥¿¡¼¤òÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 8, 164, 0, 50},
+ {"¥ê¥â¥³¥ó¤òÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 12, 164, 0, 50},
+ {"¼ê¤Ì¤°¤¤¤òÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 16, 164, 0, 50},
+ {"µíÆý¥Ó¥ó¤òÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 20, 164, 0, 50},
+ {"¥Ó¥ó¤Î¤Õ¤¿¤òÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 24, 164, 0, 50},
+ {"Ìîµå˹¤òÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 28, 164, 0, 50},
+ {"Éâ¤ÎؤòÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 32, 164, 0, 50},
+ {"¥Ð¥Ã¥È¤òÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 36, 164, 0, 50},
+ {"Â纬¤òÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 40, 164, 0, 50},
+ {"¥ê¥å¥Ã¥¯¥µ¥Ã¥¯¤òÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 44, 164, 0, 50},
+ {"¾´ýÈפòÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 48, 164, 0, 50},
+ {"¾´ý¤Î¶ð¤òÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 52, 164, 0, 50},
+ {"»±¤òÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 56, 164, 0, 50},
+ {"¤ä¤«¤ó¤òÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 60, 164, 0, 50},
+ {"¤Û¤¦¤¤òÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 64, 164, 0, 50},
+ {"¥Æ¥£¥Ã¥·¥åÈ¢¤òÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 68, 164, 0, 50},
+ {"¥À¥ë¥Þ¤òÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 71, 164, 0, 50},
+ {"¥Ë¥ó¥¸¥ó¤òÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 75, 164, 0, 60},
+ {"¥Û¥ë¥ó¤òÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 79, 164, 0, 60},
+ {"¤ß¤«¤óÈ¢¤òÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 83, 164, 0, 60},
+ {"ÊõÈ¢¤òÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 86, 164, 0, 60},
+ {"¥Æ¥ó¥¬¥í¥ó¥Ï¥Ã¥È¤òÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 90, 164, 0, 60},
+ {"¥¢¥Õ¥í¤òÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 94, 164, 0, 65},
+ {"¤·¤ã¤±¤òÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 97, 164, 0, 65},
+ {"39¥Ü¥¦¥ä¤òÊõʪ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£", 100, 164, 0, 70},
+
#else
{"You are a normal Kutar. You have orange colored fur.", 65, 154, 0, 55},
{"You are a father Kutar, the patriarch of many normal Kutars. You have green colored fur.", 95, 154, 0, 65},
"This race is a blasphemous abomination produced by Chaos. It is not an independent race but rather a humanoid creature, most often a human, twisted by the Chaos, or a nightmarish crossbreed of a human and a beast. All Beastmen are accustomed to Chaos so much that they are untroubled by confusion and sound, although raw logrus can still have effects on them. Beastmen revel in chaos, as it twists them more and more. Beastmen are subject to mutations: when they have been created, they receive a random mutation. After that, every time they advance a level they have a small chance of gaining yet another mutation.",
-"The Ents are a powerful race dating from the beginning of the world, oldest of all animals or plants who inhabit Arda. Spirits of the land, they were summoned to guard the forests of Middle-earth. Being much like trees they are very slow but strong, and very susceptible to fire. As the Shepherds of the Trees, they have the innate ability to cause trees to rise about them for protection.",
+"The Ents are a powerful race dating from the beginning of the world, oldest of all animals or plants who inhabit Arda. Spirits of the land, they were summoned to guard the forests of Middle-earth. Being much like trees they are very clumsy but strong, and very susceptible to fire.",
"Archons are a higher class of angels. They are good at all skills, and are strong, wise, and are a favorite with any people. They are able to see the unseen, and their wings allow them to safely fly over traps and other dangerous places. However, belonging to a higher plane as they do, the experiences of this world do not leave a strong impression on them and they gain levels slowly.",
static cptr realm_jouhou[VALID_REALM] =
{
#ifdef JP
-"À¸Ì¿¤Ï¡Ö¤è¤¤¡×ËâË¡¤Ç¤¹¡£¤³¤ì¤Ï¼£ÎŤäËɸæ¤ËÈó¾ï¤ËÍê¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢¹¶·â¼öʸ¤â¤¤¤¯¤Ä¤«»ý¤Ã¤Æ¤¤¤Þ¤¹¡£¤½¤ì¤é¤Ï°Ëâ¤Î±ø¤ì¤¿¼êÀè¤ËÂй³¤¹¤ë¤¿¤á¤Ë¤è¤¯»È¤ï¤ì¤Þ¤¹¡£",
+"À¸Ì¿¤Ï²óÉüǽÎϤËÍ¥¤ì¤¿ËâË¡¤Ç¤¹¡£¼£ÎŤäËɸ桢´¶ÃÎËâË¡¤¬Â¿¤¯´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢¹¶·â¼öʸ¤â¤ï¤º¤«¤Ë»ý¤Ã¤Æ¤¤¤Þ¤¹¡£Æä˹â¥ì¥Ù¥ë¤Î¼öʸ¤Ë¤Ï¥¢¥ó¥Ç¥Ã¥É¤ò¿Ð¤Ëµ¢¤¹ÎϤò¤¢¤ë¤È¸À¤ï¤ì¤Æ¤¤¤Þ¤¹¡£",
"Àç½Ñ¤Ï¡Ömeta¡×Îΰè¤Ç¤¢¤ê¡¢´¶ÃΤä´ÕÄê¡¢¤µ¤é¤ËÂàµÑÍѤμöʸ¤ä¼«¿È¤ÎǽÎϤò¹â¤á¤ë¼öʸ¤Ê¤É¤ÎÊØÍø¤Ê¼öʸ¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£¤·¤«¤·¡¢Ä¾Àܹ¶·âÍѤμöʸ¤Ï»ý¤Ã¤Æ¤¤¤Þ¤»¤ó¡£",
"°Ëâ¤ÎËâË¡¤Ï°Å¹õ¤ÈƱÍÍÈó¾ï¤Ë¼Ù°¤Ê¥«¥Æ¥´¥ê¡¼¤Ç¤¹¡£ÍÍ¡¹¤Ê¹¶·âËâË¡¤ËÍ¥¤ì¡¢¤Þ¤¿°Ëâ¤Î¤´¤È¤ÃγÐǽÎϤòÆÀ¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¹â¥ì¥Ù¥ë¤Î¼öʸ¤Ï°Ëâ¤ò¼«ºß¤ËÁà¤ê¡¢¼«Ê¬¼«¿È¤ÎÆùÂΤò¤â°Ëâ²½¤µ¤»¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£",
+"Ç˼٤ϡÖÀµµÁ¡×¤ÎËâË¡¤Ç¤¹¡£Ä¾ÀÜŨ¤ò½ý¤Ä¤±¤ëËâË¡¤¬Â¿¤¯´Þ¤Þ¤ì¡¢Æä˼ٰ¤ÊŨ¤ËÂФ¹¤ëÎϤ϶²¤ë¤Ù¤¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£¤·¤«¤·¡¢Á±ÎɤÊŨ¤Ë¤Ï¤¢¤Þ¤ê¸ú²Ì¤¬¤¢¤ê¤Þ¤»¤ó¡£",
+
"²Î½¸¤Ï¡¢²Î¤Ë¤è¤Ã¤Æ¸ú²Ì¤òȯ´ø¤¹¤ëËâË¡¤Ç¤¹¡£ËâË¡¤ÈƱÍÍ¡¢»È¤Ã¤¿»þ¤Ë¸ú²Ì¤Î¤¢¤ë¤â¤Î¤È¡¢²Î¤¤Â³¤±¤ë¤³¤È¤Ë¤è¤Ã¤Æ»ý³¤·¤Æ¸ú²Ì¤òȯ´ø¤¹¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£¸å¼Ô¤Î¾ì¹ç¤Ï¡¢MP¤Î³¤¯¸Â¤ê¸ú²Ì¤òȯ´ø¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¤¬¡¢Æ±»þ¤Ë²Î¤¨¤ë²Î¤Ï1¤Ä¤À¤±¤È¤¤¤¦À©¸Â¤â¤¢¤ê¤Þ¤¹¡£",
"Éð·Ý¤Î½ñ¤Ï¡¢ÍÍ¡¹¤ÊÀïÆ®¤Îµ»¤Ë¤Ä¤¤¤Æ½ñ¤«¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤ÎËܤϵ»¤ò³Ð¤¨¤ë¤È¤¤ËÆɤàɬÍפ¬¤¢¤ê¤Þ¤¹¤¬¡¢°ìÅٳФ¨¤¿µ»¤Ï»È¤¦¤Î¤ËËܤò»ý¤ÄɬÍפϤ¢¤ê¤Þ¤»¤ó¡£µ»¤ò»È¤¦¤È¤¤Ë¤Ïɬ¤ºÉð´ï¤òÁõÈ÷¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¤¤¤±¤Þ¤»¤ó¡£"
#else
-"Life is 'good' magic; it relies mostly on healing and protective spells. It does have a few attack spells as well, but these are mostly used for harming and banishing foul minions of evil. ",
+"Life magic is very good for healing; it relies mostly on healing, protection and detection spells. Also life magic have a few attack spells as well. It said that some high level spell of life magic can disintegrate Undead monsters into ash.",
"Sorcery is a `meta` realm, including enchantment and general spells. It provides superb protection spells, spells to enhance your odds in combat and, most importantly, a vast selection of spells for gathering information. However, Sorcery has one weakness: it has no spells to deal direct damage to your enemies.",
"Demon is a very evil realm, same as Death. It provides various attack spells and devilish detection spells. at higher levels, Demon magic provides ability to dominate demons, and to polymorph yourself into a demon.",
+"Crusade is a realm of 'Justice'; It does have many attack spells which are mostly used for harming and banishing foul minions of evil, and these spells are not so effective for good monsters.",
+
"Music magic shows various effects as sing song. There is two type of song; the one which shows effects instantly and the other one shows effect continuously until SP runs out. But the latter type has a limit; only one song can be sing at the same time.",
"The books of Kendo describes various combat technique. it need to read the books when one studys the techniques, but it doesn't need to take around the books to use the techniques after one momorizes it. It need a weapon wielded to use the techniques."
static char realm_subinfo[VALID_REALM][41] =
{
#ifdef JP
-"´¶ÃΤȲóÉü¤ËÍ¥¤ì¡¢¹¶·â¤â¤Ç¤¤Þ¤¹",
+"´¶ÃΤȲóÉü¤ËÍ¥¤ì¤Æ¤¤¤Þ¤¹",
"¹¶·â¤Ï¤Ç¤¤Þ¤»¤ó¤¬Èó¾ï¤ËÊØÍø¤Ç¤¹",
"´¶ÃΤÈËɸæ¤ËÍ¥¤ì¤Æ¤¤¤Þ¤¹",
"Ç˲õŪ¤Ê¹¶·â¤ËÍ¥¤ì¤Æ¤¤¤Þ¤¹",
"¤ä¤ä¼å¤¤¤Ê¤¬¤é¤âÈó¾ï¤ËÊØÍø¤Ç¤¹",
"ľÀÜÀïÆ®¤ÎÊä½õ¤ËÍ¥¤ì¤Æ¤¤¤Þ¤¹",
"¹¶·â¤ÈËɸæ¤ÎξÌ̤ËÍ¥¤ì¤Æ¤¤¤Þ¤¹",
+"¼Ù°¤Ê²øʪ¤ËÂФ¹¤ë¹¶·â¤ËÍ¥¤ì¤Æ¤¤¤Þ¤¹",
"²Î¤Ç¤â²Î¤Ã¤Æ¤¤¤Þ¤·¤ç¤¦",
"ÁÇľ¤ËÅá¤Ç¤â¿¶¤Ã¤Æ¤¤¤Þ¤·¤ç¤¦"
#else
/*
- * Current stats
- */
-static s16b stat_use[6];
-
-/*
* Autoroll limit
*/
static s16b stat_limit[6];
(*count)++;
auto_select = REALM_DAEMON;
}
+ if (choices & CH_CRUSADE)
+ {
+ (*count)++;
+ auto_select = REALM_CRUSADE;
+ }
if (choices & CH_MUSIC)
{
(*count)++;
{
if (p_ptr->pclass == CLASS_PRIEST)
{
- if (p_ptr->realm1 == REALM_LIFE)
+ if (is_good_realm(p_ptr->realm1))
{
choices &= ~(CH_DEATH | CH_DAEMON);
}
- else if ((p_ptr->realm1 == REALM_DEATH) || (p_ptr->realm1 == REALM_DAEMON))
+ else
{
- choices &= ~(CH_LIFE);
+ choices &= ~(CH_LIFE | CH_CRUSADE);
}
}
}
/* Save the hp */
for (i = 0; i < PY_MAX_LEVEL; i++)
{
- birther_ptr->player_hp[i] = player_hp[i];
+ birther_ptr->player_hp[i] = p_ptr->player_hp[i];
}
birther_ptr->chaos_patron = p_ptr->chaos_patron;
/* Save the history */
for (i = 0; i < 4; i++)
{
- strcpy(birther_ptr->history[i], history[i]);
+ strcpy(birther_ptr->history[i], p_ptr->history[i]);
}
}
/* Load the hp */
for (i = 0; i < PY_MAX_LEVEL; i++)
{
- player_hp[i] = previous_char.player_hp[i];
+ p_ptr->player_hp[i] = previous_char.player_hp[i];
}
- p_ptr->mhp = player_hp[0];
- p_ptr->chp = player_hp[0];
+ p_ptr->mhp = p_ptr->player_hp[0];
+ p_ptr->chp = p_ptr->player_hp[0];
p_ptr->chaos_patron = previous_char.chaos_patron;
/* Load the history */
for (i = 0; i < 4; i++)
{
- strcpy(history[i], previous_char.history[i]);
+ strcpy(p_ptr->history[i], previous_char.history[i]);
}
/*** Save the previous data ***/
*/
static void get_stats(void)
{
- int i, j;
-
- int bonus;
-
- int dice[18];
-
-
/* Roll and verify some stats */
while (TRUE)
{
+ int i;
+ int sum = 0;
+
/* Roll some dice */
- for (j = i = 0; i < 18; i++)
+ for (i = 0; i < 2; i++)
{
- /* Roll the dice */
- dice[i] = randint1(3 + i % 3);
-
- /* Collect the maximum */
- j += dice[i];
+ s32b tmp = randint0(60*60*60);
+ int val;
+
+ /* Extract 5 + 1d3 + 1d4 + 1d5 */
+ val = 5 + 3;
+ val += tmp % 3; tmp /= 3;
+ val += tmp % 4; tmp /= 4;
+ val += tmp % 5; tmp /= 5;
+
+ /* Save that value */
+ sum += val;
+ p_ptr->stat_cur[3*i] = p_ptr->stat_max[3*i] = val;
+
+ /* Extract 5 + 1d3 + 1d4 + 1d5 */
+ val = 5 + 3;
+ val += tmp % 3; tmp /= 3;
+ val += tmp % 4; tmp /= 4;
+ val += tmp % 5; tmp /= 5;
+
+ /* Save that value */
+ sum += val;
+ p_ptr->stat_cur[3*i+1] = p_ptr->stat_max[3*i+1] = val;
+
+ /* Extract 5 + 1d3 + 1d4 + 1d5 */
+ val = 5 + 3;
+ val += tmp % 3; tmp /= 3;
+ val += tmp % 4; tmp /= 4;
+ val += tmp;
+
+ /* Save that value */
+ sum += val;
+ p_ptr->stat_cur[3*i+2] = p_ptr->stat_max[3*i+2] = val;
}
/* Verify totals */
- if ((j > 42) && (j < 57)) break;
+ if ((sum > 42+5*6) && (sum < 57+5*6)) break;
/* 57 was 54... I hate 'magic numbers' :< TY */
}
-
- /* Acquire the stats */
- for (i = 0; i < 6; i++)
- {
- /* Extract 5 + 1d3 + 1d4 + 1d5 */
- j = 5 + dice[3*i] + dice[3*i+1] + dice[3*i+2];
-
- /* Save that value */
- p_ptr->stat_max[i] = j;
-
- /* Obtain a "bonus" for "race" and "class" and "seikaku"*/
- bonus = rp_ptr->r_adj[i] + cp_ptr->c_adj[i] + ap_ptr->a_adj[i];
-
- /* Start fully healed */
- p_ptr->stat_cur[i] = p_ptr->stat_max[i];
-
- /* Efficiency -- Apply the racial/class bonuses */
- /* stat_use[i] = modify_stat_value(p_ptr->stat_max[i], bonus); */
- stat_use[i] = p_ptr->stat_max[i];
- }
}
void get_max_stats(void)
for (i = 0; i < 64; i++)
{
- if (p_ptr->pclass == CLASS_SORCERER) spell_exp[i] = 1600;
- else if (p_ptr->pclass == CLASS_RED_MAGE) spell_exp[i] = 1200;
- else spell_exp[i] = 0;
+ if (p_ptr->pclass == CLASS_SORCERER) p_ptr->spell_exp[i] = 1600;
+ else if (p_ptr->pclass == CLASS_RED_MAGE) p_ptr->spell_exp[i] = 1200;
+ else p_ptr->spell_exp[i] = 0;
}
for (i = 0; i < 5; i++)
for (j = 0; j < 64; j++)
- weapon_exp[i][j] = s_info[p_ptr->pclass].w_start[i][j];
+ p_ptr->weapon_exp[i][j] = s_info[p_ptr->pclass].w_start[i][j];
if(p_ptr->pseikaku == SEIKAKU_SEXY)
{
- weapon_exp[TV_HAFTED-TV_BOW][SV_WHIP] = 4000;
+ p_ptr->weapon_exp[TV_HAFTED-TV_BOW][SV_WHIP] = 4000;
}
for (i = 0; i < 10; i++)
- skill_exp[i] = s_info[p_ptr->pclass].s_start[i];
+ p_ptr->skill_exp[i] = s_info[p_ptr->pclass].s_start[i];
/* Hitdice */
if (p_ptr->pclass == CLASS_SORCERER)
while (TRUE)
{
/* Pre-calculate level 1 hitdice */
- player_hp[0] = p_ptr->hitdie;
+ p_ptr->player_hp[0] = p_ptr->hitdie;
for (i = 1; i < 4; i++)
{
j = randint1(p_ptr->hitdie);
- player_hp[0] += j;
+ p_ptr->player_hp[0] += j;
}
/* Roll the hitpoint values */
for (i = 1; i < PY_MAX_LEVEL; i++)
{
j = randint1(p_ptr->hitdie);
- player_hp[i] = player_hp[i - 1] + j;
+ p_ptr->player_hp[i] = p_ptr->player_hp[i - 1] + j;
}
/* XXX Could also require acceptable "mid-level" hitpoints */
/* Require "valid" hitpoints at highest level */
- if (player_hp[PY_MAX_LEVEL - 1] < min_value) continue;
- if (player_hp[PY_MAX_LEVEL - 1] > max_value) continue;
+ if (p_ptr->player_hp[PY_MAX_LEVEL - 1] < min_value) continue;
+ if (p_ptr->player_hp[PY_MAX_LEVEL - 1] > max_value) continue;
/* Acceptable */
break;
}
/* Initial hitpoints */
- p_ptr->mhp = player_hp[0];
+ p_ptr->mhp = p_ptr->player_hp[0];
}
char buf[240];
/* Clear the previous history strings */
- for (i = 0; i < 4; i++) history[i][0] = '\0';
+ for (i = 0; i < 4; i++) p_ptr->history[i][0] = '\0';
/* Clear the history text */
buf[0] = '\0';
t = temp;
for(i=0 ; i<4 ; i++){
if(t[0]==0)break;
- else {strcpy(history[i], t);t += strlen(t)+1;}
+ else {strcpy(p_ptr->history[i], t);t += strlen(t)+1;}
}
}
}
for (i = 0; i < 6; i++)
{
/* Mega-Hack -- reduce gold for high stats */
- if (stat_use[i] >= 18 + 50) gold -= 300;
- else if (stat_use[i] >= 18 + 20) gold -= 200;
- else if (stat_use[i] > 18) gold -= 150;
- else gold -= (stat_use[i] - 8) * 10;
+ if (p_ptr->stat_max[i] >= 18 + 50) gold -= 300;
+ else if (p_ptr->stat_max[i] >= 18 + 20) gold -= 200;
+ else if (p_ptr->stat_max[i] > 18) gold -= 150;
+ else gold -= (p_ptr->stat_max[i] - 8) * 10;
}
/* Minimum 100 gold */
j = rp_ptr->r_adj[i] + cp_ptr->c_adj[i] + ap_ptr->a_adj[i];
/* Obtain the current stat */
- m = adjust_stat(stat_use[i], j, TRUE);
+ m = adjust_stat(p_ptr->stat_max[i], j, TRUE);
/* Put the stat */
cnv_stat(m, buf);
/* Put the percent */
if (stat_match[i])
{
- p = 1000L * stat_match[i] / auto_round;
+ if (stat_match[i] > 1000000L)
+ {
+ /* Prevent overflow */
+ p = stat_match[i] / (auto_round / 1000L);
+ }
+ else
+ {
+ p = 1000L * stat_match[i] / auto_round;
+ }
+
attr = (p < 100) ? TERM_YELLOW : TERM_L_GREEN;
sprintf(buf, "%3d.%d%%", p/10, p%10);
c_put_str(attr, buf, 3+i, col+13);
/* Wipe the history */
for (i = 0; i < 4; i++)
{
- strcpy(history[i], "");
+ strcpy(p_ptr->history[i], "");
}
/* Wipe the quests */
/* Wipe the spells */
if (p_ptr->pclass == CLASS_SORCERER)
{
- spell_learned1 = spell_learned2 = 0xffffffffL;
- spell_worked1 = spell_worked2 = 0xffffffffL;
+ p_ptr->spell_learned1 = p_ptr->spell_learned2 = 0xffffffffL;
+ p_ptr->spell_worked1 = p_ptr->spell_worked2 = 0xffffffffL;
}
else
{
- spell_learned1 = spell_learned2 = 0L;
- spell_worked1 = spell_worked2 = 0L;
+ p_ptr->spell_learned1 = p_ptr->spell_learned2 = 0L;
+ p_ptr->spell_worked1 = p_ptr->spell_worked2 = 0L;
}
- spell_forgotten1 = spell_forgotten2 = 0L;
- for (i = 0; i < 64; i++) spell_order[i] = 99;
+ p_ptr->spell_forgotten1 = p_ptr->spell_forgotten2 = 0L;
+ for (i = 0; i < 64; i++) p_ptr->spell_order[i] = 99;
p_ptr->learned_spells = 0;
p_ptr->add_spells = 0;
p_ptr->knowledge = 0;
cheat_live = FALSE;
/* Assume no winning game */
- total_winner = FALSE;
+ p_ptr->total_winner = FALSE;
world_player = FALSE;
/* Assume no panic save */
- panic_save = 0;
+ p_ptr->panic_save = 0;
/* Assume no cheating */
- noscore = 0;
- wizard = FALSE;
+ p_ptr->noscore = 0;
+ p_ptr->wizard = FALSE;
/* Not waiting to report score */
- wait_report_score = FALSE;
+ p_ptr->wait_report_score = FALSE;
/* Default pet command settings */
p_ptr->pet_follow_distance = PET_FOLLOW_DIST;
p_ptr->leftbldg = FALSE;
for (i = 0; i < MAX_MANE; i++)
{
- mane_spell[i] = -1;
- mane_dam[i] = 0;
+ p_ptr->mane_spell[i] = -1;
+ p_ptr->mane_dam[i] = 0;
}
- mane_num = 0;
+ p_ptr->mane_num = 0;
p_ptr->exit_bldg = TRUE; /* only used for arena now -KMW- */
/* Reset rewards */
static void init_dungeon_quests(int number_of_quests)
{
int i;
+ monster_race *r_ptr;
/* Init the random quests */
init_flags = INIT_ASSIGN;
/* Prepare allocation table */
get_mon_num_prep(monster_quest, NULL);
+ /* Remove QUESTOR flag */
+ for (i = 1; i < max_r_idx; i++)
+ {
+ r_ptr = &r_info[i];
+ if (r_ptr->flags1 & RF1_QUESTOR) r_ptr->flags1 &= ~RF1_QUESTOR;
+ }
+
/* Generate quests */
for (i = MIN_RANDOM_QUEST + number_of_quests - 1; i >= MIN_RANDOM_QUEST; i--)
{
quest_type *q_ptr = &quest[i];
- monster_race *r_ptr;
monster_race *quest_r_ptr;
int r_idx;
/* Edit character background */
for (i = 0; i < 4; i++)
{
- sprintf(old_history[i], "%s", history[i]);
+ sprintf(old_history[i], "%s", p_ptr->history[i]);
}
/* Turn 0 to space */
for (i = 0; i < 4; i++)
{
- for (j = 0; history[i][j]; j++) /* loop */;
+ for (j = 0; p_ptr->history[i][j]; j++) /* loop */;
- for (; j < 59; j++) history[i][j] = ' ';
- history[i][59] = '\0';
+ for (; j < 59; j++) p_ptr->history[i][j] = ' ';
+ p_ptr->history[i][59] = '\0';
}
display_player(1);
#ifdef JP
- c_put_str(TERM_L_GREEN, "(¥¥ã¥é¥¯¥¿¡¼¤ÎÀ¸¤¤Î©¤Á - ÊÔ½¸¥â¡¼¥É)", 15, 20);
+ c_put_str(TERM_L_GREEN, "(¥¥ã¥é¥¯¥¿¡¼¤ÎÀ¸¤¤Î©¤Á - ÊÔ½¸¥â¡¼¥É)", 11, 20);
#else
- c_put_str(TERM_L_GREEN, "(Character Background - Edit Mode)", 15, 20);
+ c_put_str(TERM_L_GREEN, "(Character Background - Edit Mode)", 11, 20);
#endif
while (TRUE)
{
for (i = 0; i < 4; i++)
{
- put_str(history[i], i + 12, 10);
+ put_str(p_ptr->history[i], i + 12, 10);
}
#ifdef JP
- if (iskanji2(history[y], x))
- c_put_str(TERM_L_BLUE, format("%c%c", history[y][x],history[y][x+1]), y + 12, x + 10);
+ if (iskanji2(p_ptr->history[y], x))
+ c_put_str(TERM_L_BLUE, format("%c%c", p_ptr->history[y][x],p_ptr->history[y][x+1]), y + 12, x + 10);
else
#endif
- c_put_str(TERM_L_BLUE, format("%c", history[y][x]), y + 12, x + 10);
+ c_put_str(TERM_L_BLUE, format("%c", p_ptr->history[y][x]), y + 12, x + 10);
/* Place cursor just after cost of current stat */
Term_gotoxy(x + 10, y + 12);
y--;
if (y < 0) y = 3;
#ifdef JP
- if ((x > 0) && (iskanji2(history[y], x-1))) x--;
+ if ((x > 0) && (iskanji2(p_ptr->history[y], x-1))) x--;
#endif
}
else if (c == '2')
y++;
if (y > 3) y = 0;
#ifdef JP
- if ((x > 0) && (iskanji2(history[y], x-1))) x--;
+ if ((x > 0) && (iskanji2(p_ptr->history[y], x-1))) x--;
#endif
}
else if (c == '6')
{
#ifdef JP
- if (iskanji2(history[y], x)) x++;
+ if (iskanji2(p_ptr->history[y], x)) x++;
#endif
x++;
if (x > 58) x = 0;
{
x--;
#ifdef JP
- if ((x > 0) && (iskanji2(history[y], x-1))) x--;
+ if ((x > 0) && (iskanji2(p_ptr->history[y], x-1))) x--;
#endif
if (x < 0) x = 58;
}
{
for (i = 0; i < 4; i++)
{
- sprintf(history[i], "%s", old_history[i]);
- put_str(history[i], i + 12, 10);
+ sprintf(p_ptr->history[i], "%s", old_history[i]);
+ put_str(p_ptr->history[i], i + 12, 10);
}
break;
}
else if (c == '\010')
{
x--;
- history[y][x] = ' ';
+ p_ptr->history[y][x] = ' ';
#ifdef JP
- if ((x > 0) && (iskanji2(history[y], x-1)))
+ if ((x > 0) && (iskanji2(p_ptr->history[y], x-1)))
{
x--;
- history[y][x] = ' ';
+ p_ptr->history[y][x] = ' ';
}
#endif
if (x < 0) x = 58;
#endif
{
#ifdef JP
- if (iskanji2(history[y], x))
+ if (iskanji2(p_ptr->history[y], x))
{
- history[y][x+1] = ' ';
+ p_ptr->history[y][x+1] = ' ';
}
if (iskanji(c))
if (y > 3) y = 0;
}
- if (iskanji2(history[y], x+1))
+ if (iskanji2(p_ptr->history[y], x+1))
{
- history[y][x+2] = ' ';
+ p_ptr->history[y][x+2] = ' ';
}
- history[y][x++] = c;
+ p_ptr->history[y][x++] = c;
c = inkey();
}
#endif
- history[y][x++] = c;
+ p_ptr->history[y][x++] = c;
if (x > 58)
{
x = 0;
init_dungeon_quests(previous_char.quests);
init_turn();
+ sp_ptr = &sex_info[p_ptr->psex];
+ rp_ptr = &race_info[p_ptr->prace];
+ cp_ptr = &class_info[p_ptr->pclass];
+ ap_ptr = &seikaku_info[p_ptr->pseikaku];
+
/* Calc hitdie, but don't roll */
get_extra(FALSE);
auto_round++;
/* Hack -- Prevent overflow */
- if (auto_round >= 1000000L)
+ if (auto_round >= 1000000000L)
{
auto_round = 1;
for (i = 0; i < 6; i++)
{
/* This stat is okay */
- if (stat_use[i] >= stat_limit[i])
+ if (p_ptr->stat_max[i] >= stat_limit[i])
{
stat_match[i]++;
}
#ifdef AUTOROLLER_DELAY
/* Delay 1/10 second */
- if (flag) Term_xtra(TERM_XTRA_DELAY, 100);
+ if (flag) Term_xtra(TERM_XTRA_DELAY, 10);
#endif
/* Make sure they see everything */