OSDN Git Service

[fix] #41503 超能力者でゲームを開始しようとするとクラッシュ
[hengband/hengband.git] / src / locale / english.c
1 #include "locale/english.h"
2 #include "util/string-processor.h"
3
4 /*!
5  * @brief 英単語、句、説を複数形を変換する / Pluralize a monster name
6  * @param Name 変換したい文字列の参照ポインタ
7  * @return なし
8  */
9 void plural_aux(char *Name)
10 {
11         int NameLen = strlen(Name);
12
13         if (angband_strstr(Name, "Disembodied hand"))
14         {
15                 strcpy(Name, "Disembodied hands that strangled people");
16         }
17         else if (angband_strstr(Name, "Colour out of space"))
18         {
19                 strcpy(Name, "Colours out of space");
20         }
21         else if (angband_strstr(Name, "stairway to hell"))
22         {
23                 strcpy(Name, "stairways to hell");
24         }
25         else if (angband_strstr(Name, "Dweller on the threshold"))
26         {
27                 strcpy(Name, "Dwellers on the threshold");
28         }
29         else if (angband_strstr(Name, " of "))
30         {
31                 concptr aider = angband_strstr(Name, " of ");
32                 char dummy[80];
33                 int i = 0;
34                 concptr ctr = Name;
35
36                 while (ctr < aider)
37                 {
38                         dummy[i] = *ctr;
39                         ctr++; i++;
40                 }
41
42                 if (dummy[i - 1] == 's')
43                 {
44                         strcpy(&(dummy[i]), "es");
45                         i++;
46                 }
47                 else
48                 {
49                         strcpy(&(dummy[i]), "s");
50                 }
51
52                 strcpy(&(dummy[i + 1]), aider);
53                 strcpy(Name, dummy);
54         }
55         else if (angband_strstr(Name, "coins"))
56         {
57                 char dummy[80];
58                 strcpy(dummy, "piles of ");
59                 strcat(dummy, Name);
60                 strcpy(Name, dummy);
61                 return;
62         }
63         else if (angband_strstr(Name, "Manes"))
64         {
65                 return;
66         }
67         else if (streq(&(Name[NameLen - 2]), "ey"))
68         {
69                 strcpy(&(Name[NameLen - 2]), "eys");
70         }
71         else if (Name[NameLen - 1] == 'y')
72         {
73                 strcpy(&(Name[NameLen - 1]), "ies");
74         }
75         else if (streq(&(Name[NameLen - 4]), "ouse"))
76         {
77                 strcpy(&(Name[NameLen - 4]), "ice");
78         }
79         else if (streq(&(Name[NameLen - 2]), "us"))
80         {
81                 strcpy(&(Name[NameLen - 2]), "i");
82         }
83         else if (streq(&(Name[NameLen - 6]), "kelman"))
84         {
85                 strcpy(&(Name[NameLen - 6]), "kelmen");
86         }
87         else if (streq(&(Name[NameLen - 8]), "wordsman"))
88         {
89                 strcpy(&(Name[NameLen - 8]), "wordsmen");
90         }
91         else if (streq(&(Name[NameLen - 7]), "oodsman"))
92         {
93                 strcpy(&(Name[NameLen - 7]), "oodsmen");
94         }
95         else if (streq(&(Name[NameLen - 7]), "eastman"))
96         {
97                 strcpy(&(Name[NameLen - 7]), "eastmen");
98         }
99         else if (streq(&(Name[NameLen - 8]), "izardman"))
100         {
101                 strcpy(&(Name[NameLen - 8]), "izardmen");
102         }
103         else if (streq(&(Name[NameLen - 5]), "geist"))
104         {
105                 strcpy(&(Name[NameLen - 5]), "geister");
106         }
107         else if (streq(&(Name[NameLen - 2]), "ex"))
108         {
109                 strcpy(&(Name[NameLen - 2]), "ices");
110         }
111         else if (streq(&(Name[NameLen - 2]), "lf"))
112         {
113                 strcpy(&(Name[NameLen - 2]), "lves");
114         }
115         else if (suffix(Name, "ch") ||
116                 suffix(Name, "sh") ||
117                 suffix(Name, "nx") ||
118                 suffix(Name, "s") ||
119                 suffix(Name, "o"))
120         {
121                 strcpy(&(Name[NameLen]), "es");
122         }
123         else
124         {
125                 strcpy(&(Name[NameLen]), "s");
126         }
127 }
128
129 /*
130  * Check a char for "vowel-hood"
131  */
132 bool is_a_vowel(int ch)
133 {
134     switch (ch) {
135     case 'a':
136     case 'e':
137     case 'i':
138     case 'o':
139     case 'u':
140     case 'A':
141     case 'E':
142     case 'I':
143     case 'O':
144     case 'U':
145         return TRUE;
146     }
147
148     return FALSE;
149 }