5 * @brief 万色表現用にランダムな色を選択する関数 /
6 * Get a legal "multi-hued" color for drawing "spells"
10 TERM_COLOR mh_attr(int max)
12 switch (randint1(max))
14 case 1: return (TERM_RED);
15 case 2: return (TERM_GREEN);
16 case 3: return (TERM_BLUE);
17 case 4: return (TERM_YELLOW);
18 case 5: return (TERM_ORANGE);
19 case 6: return (TERM_VIOLET);
20 case 7: return (TERM_L_RED);
21 case 8: return (TERM_L_GREEN);
22 case 9: return (TERM_L_BLUE);
23 case 10: return (TERM_UMBER);
24 case 11: return (TERM_L_UMBER);
25 case 12: return (TERM_SLATE);
26 case 13: return (TERM_WHITE);
27 case 14: return (TERM_L_WHITE);
28 case 15: return (TERM_L_DARK);
36 * @brief 魔法属性に応じたエフェクトの色を返す /
37 * Return a color to use for the bolt/ball spells
41 TERM_COLOR spell_color(EFFECT_ID type)
43 /* Check if A.B.'s new graphics should be used (rr9) */
44 if (streq(ANGBAND_GRAF, "new") || streq(ANGBAND_GRAF, "ne2"))
49 case GF_PSY_SPEAR: return (0x06);
50 case GF_MISSILE: return (0x0F);
51 case GF_ACID: return (0x04);
52 case GF_ELEC: return (0x02);
53 case GF_FIRE: return (0x00);
54 case GF_COLD: return (0x01);
55 case GF_POIS: return (0x03);
56 case GF_HOLY_FIRE: return (0x00);
57 case GF_HELL_FIRE: return (0x00);
58 case GF_MANA: return (0x0E);
60 case GF_SEEKER: return (0x0E);
61 case GF_SUPER_RAY: return (0x0E);
63 case GF_ARROW: return (0x0F);
64 case GF_WATER: return (0x04);
65 case GF_NETHER: return (0x07);
66 case GF_CHAOS: return (mh_attr(15));
67 case GF_DISENCHANT: return (0x05);
68 case GF_NEXUS: return (0x0C);
69 case GF_CONFUSION: return (mh_attr(4));
70 case GF_SOUND: return (0x09);
71 case GF_SHARDS: return (0x08);
72 case GF_FORCE: return (0x09);
73 case GF_INERTIAL: return (0x09);
74 case GF_GRAVITY: return (0x09);
75 case GF_TIME: return (0x09);
76 case GF_LITE_WEAK: return (0x06);
77 case GF_LITE: return (0x06);
78 case GF_DARK_WEAK: return (0x07);
79 case GF_DARK: return (0x07);
80 case GF_PLASMA: return (0x0B);
81 case GF_METEOR: return (0x00);
82 case GF_ICE: return (0x01);
83 case GF_ROCKET: return (0x0F);
84 case GF_DEATH_RAY: return (0x07);
85 case GF_NUKE: return (mh_attr(2));
86 case GF_DISINTEGRATE: return (0x05);
98 case GF_CAUSE_4: return (0x0E);
99 case GF_HAND_DOOM: return (0x07);
100 case GF_CAPTURE: return (0x0E);
101 case GF_IDENTIFY: return (0x01);
102 case GF_ATTACK: return (0x0F);
103 case GF_PHOTO: return (0x06);
106 /* Normal tiles or ASCII */
112 /* Lookup the default colors for this type */
113 concptr s = quark_str(gf_color[type]);
115 if (!s) return (TERM_WHITE);
117 /* Pick a random color */
118 c = s[randint0(strlen(s))];
120 /* Lookup this color */
121 a = my_strchr(color_char, c) - color_char;
123 /* Invalid color (note check for < 0 removed, gave a silly
124 * warning because bytes are always >= 0 -- RG) */
125 if (a > 15) return (TERM_WHITE);
131 /* Standard "color" */
137 * @brief 始点から終点にかけた方向毎にボルトのキャラクタを返す /
138 * Find the attr/char pair to use for a spell effect
147 * It is moving (or has moved) from (x,y) to (nx,ny).
148 * If the distance is not "one", we (may) return "*".
151 u16b bolt_pict(POSITION y, POSITION x, POSITION ny, POSITION nx, EFFECT_ID typ)
161 if ((ny == y) && (nx == x)) base = 0x30;
164 else if (nx == x) base = 0x40;
167 else if (ny == y) base = 0x50;
170 else if ((ny - y) == (x - nx)) base = 0x60;
173 else if ((ny - y) == (nx - x)) base = 0x70;
178 /* Basic spell color */
179 k = spell_color(typ);
181 /* Obtain attr/char */
182 a = misc_to_attr[base + k];
183 c = misc_to_char[base + k];