X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Finit1.c;h=97e1f72e46fa6ff8f9d0f942ec8e85615de4d705;hb=84c58762171463d0e15000104057a55dff7b7158;hp=46cda7d129f6e4a0fba8fe77ee06d2151804ad48;hpb=679cedbb81f0faeeaa7fda6fadf66f657b331108;p=hengband%2Fhengband.git diff --git a/src/init1.c b/src/init1.c index 46cda7d12..97e1f72e4 100644 --- a/src/init1.c +++ b/src/init1.c @@ -247,6 +247,7 @@ static cptr f_info_flags[] = "UNPERM", "TELEPORTABLE", "CONVERT", + "GLASS", }; @@ -728,7 +729,7 @@ static cptr k_info_flags[] = "HIDE_TYPE", "SHOW_MODS", "XXX1", - "FEATHER", + "LEVITATION", "LITE", "SEE_INVIS", "TELEPATHY", @@ -770,6 +771,7 @@ static cptr k_info_flags[] = "ESP_NONLIVING", "ESP_UNIQUE", "FULL_NAME", + "FIXED_FLAVOR", }; @@ -856,7 +858,7 @@ static cptr d_info_flags1[] = * Returns FALSE when there isn't enough space available to store * the text. */ -static bool add_text(u32b *offset, header *head, cptr buf) +static bool add_text(u32b *offset, header *head, cptr buf, bool normal_text) { /* Hack -- Verify space */ if (head->text_size + strlen(buf) + 8 > FAKE_TEXT_SIZE) @@ -866,7 +868,34 @@ static bool add_text(u32b *offset, header *head, cptr buf) if (*offset == 0) { /* Advance and save the text index */ - *offset = ++head->text_size; + *offset = ++head->text_size; + } + + /* Additional text */ + else if (normal_text) + { + /* + * If neither the end of the last line nor + * the beginning of current line is not a space, + * fill up a space as a correct separator of two words. + */ + if (head->text_size > 0 && +#ifdef JP + (*(head->text_ptr + head->text_size - 1) != ' ') && + ((head->text_size == 1) || !iskanji(*(head->text_ptr + head->text_size - 2))) && + (buf[0] != ' ') && !iskanji(buf[0]) +#else + (*(head->text_ptr + head->text_size - 1) != ' ') && + (buf[0] != ' ') +#endif + ) + { + /* Append a space */ + *(head->text_ptr + head->text_size) = ' '; + + /* Advance the index */ + head->text_size++; + } } /* Append chars to the text */ @@ -1108,7 +1137,7 @@ errr parse_v_info(char *buf, header *head) s = buf+2; /* Store the text */ - if (!add_text(&v_ptr->text, head, s)) return (7); + if (!add_text(&v_ptr->text, head, s, FALSE)) return (7); } /* Process 'X' for "Extra info" (one line only) */ @@ -1528,7 +1557,7 @@ errr parse_f_info(char *buf, header *head) else if (buf[0] == 'G') { int j; - byte def_attr[F_LIT_MAX]; + byte s_attr; char char_tmp[F_LIT_MAX]; /* Paranoia */ @@ -1541,43 +1570,29 @@ errr parse_f_info(char *buf, header *head) char_tmp[F_LIT_STANDARD] = buf[2]; /* Extract the color */ - def_attr[F_LIT_STANDARD] = color_char_to_attr(buf[4]); + s_attr = color_char_to_attr(buf[4]); /* Paranoia */ - if (def_attr[F_LIT_STANDARD] > 127) return (1); + if (s_attr > 127) return (1); - /* Save the default values for lighting */ - for (j = 0; j < F_LIT_MAX; j++) - { - f_ptr->d_attr[j] = def_attr[F_LIT_STANDARD]; - f_ptr->d_char[j] = char_tmp[F_LIT_STANDARD]; - } + /* Save the standard values */ + f_ptr->d_attr[F_LIT_STANDARD] = s_attr; + f_ptr->d_char[F_LIT_STANDARD] = char_tmp[F_LIT_STANDARD]; /* Is this feature supports lighting? */ if (buf[5] == ':') { - def_attr[F_LIT_LITE] = lighting_colours[def_attr[F_LIT_STANDARD]][0]; - def_attr[F_LIT_DARK] = lighting_colours[def_attr[F_LIT_STANDARD]][1]; - def_attr[F_LIT_DARKDARK] = lighting_colours[lighting_colours[def_attr[F_LIT_STANDARD]][1]][1]; - /* G:c:a:LIT (default) */ - if (streq(buf + 6, "LIT")) - { - for (j = F_LIT_NS_BEGIN; j < F_LIT_MAX; j++) - { - f_ptr->d_attr[j] = def_attr[j]; - } - } + apply_default_feat_lighting(f_ptr->d_attr, f_ptr->d_char); - /* G:c:a:lc:la:dc:da:Dc:Da */ - else + /* G:c:a:lc:la:dc:da */ + if (!streq(buf + 6, "LIT")) { char attr_lite_tmp[F_LIT_MAX - F_LIT_NS_BEGIN]; - if ((F_LIT_MAX - F_LIT_NS_BEGIN) * 2 != sscanf(buf + 6, "%c:%c:%c:%c:%c:%c", + if ((F_LIT_MAX - F_LIT_NS_BEGIN) * 2 != sscanf(buf + 6, "%c:%c:%c:%c", &char_tmp[F_LIT_LITE], &attr_lite_tmp[F_LIT_LITE - F_LIT_NS_BEGIN], - &char_tmp[F_LIT_DARK], &attr_lite_tmp[F_LIT_DARK - F_LIT_NS_BEGIN], - &char_tmp[F_LIT_DARKDARK], &attr_lite_tmp[F_LIT_DARKDARK - F_LIT_NS_BEGIN])) return 1; + &char_tmp[F_LIT_DARK], &attr_lite_tmp[F_LIT_DARK - F_LIT_NS_BEGIN])) return 1; if (buf[F_LIT_MAX * 4 + 1]) return 1; for (j = F_LIT_NS_BEGIN; j < F_LIT_MAX; j++) @@ -1586,11 +1601,10 @@ errr parse_f_info(char *buf, header *head) { case '*': /* Use default lighting */ - f_ptr->d_attr[j] = def_attr[j]; break; case '-': /* No lighting support */ - f_ptr->d_attr[j] = def_attr[F_LIT_STANDARD]; + f_ptr->d_attr[j] = f_ptr->d_attr[F_LIT_STANDARD]; break; default: /* Extract the color */ @@ -1602,7 +1616,15 @@ errr parse_f_info(char *buf, header *head) } } } - else if (buf[5]) return 1; + else if (!buf[5]) + { + for (j = F_LIT_NS_BEGIN; j < F_LIT_MAX; j++) + { + f_ptr->d_attr[j] = s_attr; + f_ptr->d_char[j] = char_tmp[F_LIT_STANDARD]; + } + } + else return 1; } /* Hack -- Process 'F' for flags */ @@ -1825,19 +1847,19 @@ errr parse_k_info(char *buf, header *head) /* Process 'N' for "New/Number/Name" */ if (buf[0] == 'N') { +#ifdef JP + char *flavor; +#endif + /* Find the colon before the name */ s = my_strchr(buf+2, ':'); - /* Verify that colon */ + /* Verify that colon */ if (!s) return (1); /* Nuke the colon, advance to the name */ *s++ = '\0'; -#ifdef JP - /* Paranoia -- require a name */ - if (!*s) return (1); -#endif /* Get the index */ i = atoi(buf+2); @@ -1854,6 +1876,22 @@ errr parse_k_info(char *buf, header *head) k_ptr = &k_info[i]; #ifdef JP + /* Paranoia -- require a name */ + if (!*s) return (1); + + /* Find the colon before the flavor */ + flavor = my_strchr(s, ':'); + + /* Verify that colon */ + if (flavor) + { + /* Nuke the colon, advance to the flavor */ + *flavor++ = '\0'; + + /* Store the flavor */ + if (!add_name(&k_ptr->flavor_name, head, flavor)) return (7); + } + /* Store the name */ if (!add_name(&k_ptr->name, head, s)) return (7); #endif @@ -1873,9 +1911,24 @@ errr parse_k_info(char *buf, header *head) #else else if (buf[0] == 'E') { - /* Acquire the Text */ + char *flavor; + + /* Acquire the name */ s = buf+2; + /* Find the colon before the flavor */ + flavor = my_strchr(s, ':'); + + /* Verify that colon */ + if (flavor) + { + /* Nuke the colon, advance to the flavor */ + *flavor++ = '\0'; + + /* Store the flavor */ + if (!add_name(&k_ptr->flavor_name, head, flavor)) return (7); + } + /* Store the name */ if (!add_name(&k_ptr->name, head, s)) return (7); } @@ -1897,7 +1950,7 @@ errr parse_k_info(char *buf, header *head) #endif /* Store the text */ - if (!add_text(&k_ptr->text, head, s)) return (7); + if (!add_text(&k_ptr->text, head, s, TRUE)) return (7); } /* Process 'G' for "Graphics" (one line only) */ @@ -2165,7 +2218,7 @@ errr parse_a_info(char *buf, header *head) #endif /* Store the text */ - if (!add_text(&a_ptr->text, head, s)) return (7); + if (!add_text(&a_ptr->text, head, s, TRUE)) return (7); } @@ -2372,7 +2425,7 @@ errr parse_e_info(char *buf, header *head) s = buf+2; /* Store the text */ - if (!add_text(&e_ptr->text, head, s)) return (7); + if (!add_text(&e_ptr->text, head, s, TRUE)) return (7); } #endif @@ -2612,7 +2665,7 @@ errr parse_r_info(char *buf, header *head) #endif /* Store the text */ - if (!add_text(&r_ptr->text, head, s)) return (7); + if (!add_text(&r_ptr->text, head, s, TRUE)) return (7); } /* Process 'G' for "Graphics" (one line only) */ @@ -2966,7 +3019,7 @@ errr parse_d_info(char *buf, header *head) #endif /* Store the text */ - if (!add_text(&d_ptr->text, head, s)) return (7); + if (!add_text(&d_ptr->text, head, s, TRUE)) return (7); } /* Process 'W' for "More Info" (one line only) */