AM_CONFIG_HEADER(src/autoconf.h)
-AM_INIT_AUTOMAKE(hengband, 1.1.0b)
+AM_INIT_AUTOMAKE(hengband, 1.3.0)
AC_ARG_WITH(setgid,
[ --with-setgid=NAME install hengband as group NAME],
F:IM_FIRE | IM_COLD | IM_ELEC | IM_ACID |
F:SUST_STR | SUST_DEX | SUST_CON |
F:SUST_INT | SUST_WIS | SUST_CHR |
-F:INSTA_ART | XTRA_POWER | XTRA_H_RES
+F:INSTA_ART | XTRA_POWER | XTRA_H_RES |
+F:ESP_DEMON | ESP_UNDEAD
D:$"One Ring to rule them all, One Ring to find them, One Ring to bring
D:$them all and in the darkness bind them." Made of massive gold, and
D:$set with runes in the foul speech of Mordor, Isildur's Bane possesses
D:ÉáÄ̤μԤϤ½¤ì¤ò¿È¤ËÉÕ¤±¤ë¤À¤±¤ÇÏĤá¤é¤ì»ÙÇÛ¤µ¤ì¤Æ¤·¤Þ¤¦¡£
-N:15:¥Ñ¥é¥ó¥Æ¥£¥¢¤Î
-E:of Westernesse
+N:15:¥Ñ¥é¥ó¥Æ¥£¥¢¤ÎÀÐ
+E:Palantir~ of Westernesse
I:39:8:3
W:60:50:10:60000
P:0:1d1:0:0:0
-F:WIS | CHR | ACTIVATE | TELEPATHY | INSTA_ART
+F:WIS | CHR | ACTIVATE | TELEPATHY | INSTA_ART | FULL_NAME
D:$A shining white ball of unbreakable crystal, the ancient palantiri,
D:$or 'far-watchers', were used by kings of Numenor and later by the Exiles
D:$for rapid communication between distant lands.
P:15:2d4:-2:0:40
F:STR | CHR | HIDE_TYPE |
F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_DARK |
-F:RES_DISEN | XTRA_H_RES | ACTIVATE
+F:RES_DISEN | XTRA_H_RES | ACTIVATE | ESP_ANIMAL
D:¿¿À¤³¦¥¢¥ó¥Ð¡¼¤Î¥¢¡¼¥Ç¥ó¤Î¿¹¤ò¼é¤ë¥¸¥å¥ê¥¢¥ó¤Î¶ä¤Î³»¤À¡£
W:15:30:30:62500
P:0:2d5:12:15:0
F:INT | DEX | HIDE_TYPE | SPEED | XTRA_RES_OR_POWER |
-F:SLAY_TROLL | SLAY_GIANT | FREE_ACT | SEE_INVIS | SHOW_MODS
+F:SLAY_TROLL | SLAY_GIANT | FREE_ACT | SEE_INVIS | SHOW_MODS |
+F:ESP_ORC | ESP_TROLL | ESP_GIANT
D:$A short thrusting blade with a large guard worn by Maedhros the Tall,
D:$eldest son of Feanor, and wielded with his left hand after the loss of
D:$his right hand in the pits of Thangorodrim.
W:20:20:150:40000
P:0:2d5:10:15:0
F:SEARCH |
-F:SLAY_EVIL | BRAND_FIRE | SLAY_ORC | RES_FIRE | RES_LITE | LITE |
-F:SLOW_DIGEST | SHOW_MODS | RIDING | XTRA_RES_OR_POWER
+F:SLAY_EVIL | BRAND_FIRE | KILL_ORC | RES_FIRE | RES_LITE | LITE |
+F:SLOW_DIGEST | SHOW_MODS | RIDING | XTRA_RES_OR_POWER |
+F:ESP_ORC | ESP_TROLL | ESP_GIANT
D:$This fiery, shining blade earned its sobriquet "Foe-Hammer" from dying orcs
D:$who dared to come near hidden Gondolin.
D:¤³¤Îdz¤¨¤ë¤è¤¦¤Ëµ±¤¯·õ¤Ï¡Ø¥ª¥ë¥¯¥ê¥¹¥È¡Ù¤ÈÂФòÀ®¤·¡¢
I:23:16:3
W:20:20:150:40000
P:0:2d5:10:15:0
-F:STEALTH | SLAY_EVIL | BRAND_COLD | SLAY_ORC | RES_COLD | LITE |
-F:SLOW_DIGEST | SHOW_MODS | RIDING | XTRA_RES_OR_POWER
+F:STEALTH | SLAY_EVIL | BRAND_COLD | KILL_ORC | RES_COLD | LITE |
+F:SLOW_DIGEST | SHOW_MODS | RIDING | XTRA_RES_OR_POWER |
+F:ESP_ORC | ESP_TROLL | ESP_GIANT
D:$This coldly gleaming blade is called simply "Biter", by orcs who came to
D:$know its power all too well.
D:¤³¤ÎÎ䤿¤¯µ±¤¯·õ¤Ï¡Ø¥°¥é¥à¥É¥ê¥ó¥°¡Ù¤ÈÂФòÀ®¤·¡¢¥ª¡¼¥¯¤¿¤Á¤«¤é¤Ï
P:0:4d5:22:25:0
F:SPEED | REGEN | ACTIVATE | SHOW_MODS | RIDING |
F:SLAY_EVIL | BRAND_COLD | SLAY_UNDEAD | SLAY_DEMON | SLAY_TROLL |
-F:FREE_ACT | RES_COLD | RES_LITE | LITE | SEE_INVIS | SLOW_DIGEST |
+F:FREE_ACT | RES_COLD | RES_LITE | LITE | SEE_INVIS | SLOW_DIGEST |
+F:ESP_ORC | ESP_TROLL | ESP_GIANT
D:$The weapon of Fingolfin, High King of the Noldor; it shines like a column
D:$of ice lit by light unquenchable. Morgoth came but unwillingly to meet it
D:$of old; his lame foot will remind him of its might should be meet it again.
W:50:50:130:66666
P:0:11d5:-30:7:0
F:DEX | CHR | STEALTH | HIDE_TYPE | SPEED | AGGRAVATE | VORPAL |
-F:SLAY_HUMAN | SLAY_TROLL | SLAY_ORC | SEE_INVIS | SHOW_MODS
+F:SLAY_HUMAN | SLAY_TROLL | SLAY_ORC | SEE_INVIS | SHOW_MODS |
+F:ESP_ORC | ESP_TROLL | ESP_HUMAN
D:»ý¤Ã¤¿¼Ô¤ò»¦Ù¤¥Þ¥·¡¼¥ó¤ËÊѤ¨¤ë¼ö¤ï¤ì¤¿·õ¤À¡£¤¢¤Ê¤¿¤Ë¤Ï¤³¤Î·õ¤Î
D:·ì¤Ëµ²¤¨¤¿¶«¤Ó¤¬Ê¹¤³¤¨¤ë¤À¤í¤¦¡£
W:20:15:75:100000
P:0:1d6:7:8:0
F:STR | DEX | CON | BLOWS | SLAY_EVIL | SLAY_UNDEAD | SLAY_ORC |
-F:FREE_ACT | RES_LITE | LITE | SEE_INVIS | SHOW_MODS | XTRA_H_RES | QUESTITEM
+F:FREE_ACT | RES_LITE | LITE | SEE_INVIS | SHOW_MODS | XTRA_H_RES | QUESTITEM |
+F:ESP_ORC | ESP_TROLL | ESP_GIANT
D:$"I will give you a name, and I shall call you Sting." The perfect size
D:$for Bilbo, and stamped forever by the courage he found in Mirkwood, this
D:$sturdy little blade grants the wearer combat prowess and survival
I:23:5:0
W:15:30:30:40000
P:0:2d5:12:14:0
-F:KILL_DRAGON | IM_FIRE | XTRA_RES_OR_POWER
+F:KILL_DRAGON | ESP_DRAGON | IM_FIRE | XTRA_RES_OR_POWER
D:$At the Nirnaeth the Dwarves stayed the onslaught of Glaurung, and
D:$Azaghal their lord drove this short blade into the drake's belly before
D:$he was trampled underfoot. The black blood of the Father of Dragons
F:DEX | BLOWS | SLAY_EVIL | SLAY_UNDEAD | SLAY_ORC | SLAY_DEMON |
F:FREE_ACT | SEE_INVIS | SHOW_MODS | RES_DARK | RES_DISEN | SPEED
-N:141:¥×¥é¥Á¥Ê¥¤¥§¥ó¥À¡¼°õ
-E:'The Platinum Yendorian Express Card'
+N:141:¥×¥é¥Á¥Ê¥¤¥§¥ó¥À¡¼°õ¥¨¥¯¥¹¥×¥ì¥¹¥«¡¼¥É
+E:& Platinum Yendorian Express Card~
I:50:0:3
W:127:1:2:1000000
P:0:1d1:15:15:25
F:STR | INT | WIS | DEX | CON | CHR | SPEED | STEALTH | HIDE_TYPE |
F:ACTIVATE | HOLD_LIFE | FREE_ACT | SEE_INVIS | TELEPATHY |
F:FEATHER | SLOW_DIGEST | REGEN | SEARCH | LITE | WARNING |
-F:INSTA_ART | QUESTITEM
+F:INSTA_ART | QUESTITEM | FULL_NAME
N:142:¡Ø¥¦¥©¡¼¥Ñ¥ë¥Ö¥ì¡¼¥É¡Ù
E:'Worpal Blade'
F:RES_CHAOS | SEE_INVIS | TELEPATHY | AGGRAVATE | DRAIN_EXP | SHOW_MODS |
F:CHAOTIC | CURSED | HEAVY_CURSE | LITE
-# The Long Sword Of Falis
+# The Long Sword of Falis
N:155:»ê¹â¿À¥Õ¥¡¥ê¥¹¤Î
E:of Falis
W:30:90:250:100000
P:0:4d6:13:21:0
F:STR | HIDE_TYPE |
-F:VORPAL | SLAY_DRAGON | SLAY_GIANT |
+F:VORPAL | SLAY_DRAGON | KILL_GIANT |
F:FREE_ACT | LITE | FEATHER | SHOW_MODS
D:¹äÎÏ̵ÁФΥǥó¥Þ¡¼¥¯¤Î±Ñͺ²¦¥Ù¡¼¥ª¥¦¥ë¥Õ¤¬µð¿Í²¤«¤éÃ¥¤¤¡¢
D:ºÇ¸å¤ÎÀ襤¤Ç¤Ï¤³¤Î·õ¤Ë¤è¤Ã¤Æε¤òÂ༣¤·¤¿¡£
I:23:17:2
W:60:150:130:100000
P:0:4d5:-10:25:0
-F:VORPAL | VAMPIRIC | SLAY_EVIL | SLAY_DEMON | AGGRAVATE | LITE | CON
+F:VORPAL | VAMPIRIC | SLAY_EVIL | KILL_DEMON | ESP_DEMON |
+F:AGGRAVATE | LITE | CON
D:Èà½÷¤Ï»Ë¾åºÇ¶¯¤ÎÇËÍÅÅá¤À¡£
D:¼ë¶â¤Ëµ±¤¯Åá¿È¤ÇËâÀ¤Î¿´Â¡¤ò¤Ä¤é¤Ì¤¡¢¤½¤ÎÌ¿¤ò¿©¤Ù¤Ä¤¯¤¹¡£
F:SLAY_DRAGON | SLAY_DEMON | SLAY_ANIMAL | FREE_ACT | HOLD_LIFE |
F:RES_COLD | RES_NEXUS |
F:SEE_INVIS | SLOW_DIGEST | REGEN | ACTIVATE |
-F:BLESSED | SHOW_MODS | RIDING
+F:BLESSED | SHOW_MODS | RIDING | ESP_ANIMAL
D:Àç̾¤òÀ¶¸»Ì¯Æ»¿¿·¯¡¢¿ÀÀ粤¤Ã¤Æ¤ÎÉð¿À¤Ç¤¢¤ëÆóϺ¿¿·¯¤Î»°ÀíÅá¤À¡£
D:Èà¤Ï°Îµ¤äËâ¿À¡¢¼«Á³¤ÎÍÅËâ¤ò¿¿ôƤȲ¤·¤¿¡£
-N:165:¥¬¥é¥¹¤Î
-E:of Glass
+N:165:¥¬¥é¥¹¤Î·¤
+E:Pair~ of Glass Slippers
I:30:2:-3
W:40:40:20:40000
P:0:1d1:0:0:0
F:DEX | HIDE_TYPE | SUST_CHR | STEALTH | SPEED |
F:RES_LITE | RES_DARK | RES_NEXUS |
-F:RES_NETHER | RES_CHAOS | LITE
+F:RES_NETHER | RES_CHAOS | LITE | FULL_NAME
N:166:¿å¸Í²«Ìç¤Î
E:of Mito Koumon
W:20:20:150:35000
P:0:2d5:18:9:0
F:CON | SEARCH | BLOWS |
-F:SLAY_EVIL | KILL_DRAGON |
+F:SLAY_EVIL | KILL_DRAGON | ESP_DRAGON |
F:SHOW_MODS
D:¡Ö¡Ä¤½¤Î̾¤âÍ̾¤Ê¥«¥¦¥Ç¥£¥â¥ë¥À¥¯¥¹·õ¡¢¤Ä¤Þ¤êʪ¸ì¤ÎËܤʤÉ
D:¤Ç¤ª¤Ê¤¸¤ß¤Î¡¢¤¢¤Î¯¤Ë¤¤¤ï¤æ¤ë³úÈøÅá¤Ç¤¢¤ë¤¾¡£¡Ä夬£µ¥Þ¥¤
# ·õ¤Ç¤¹¡¥¤¿¤Ö¤ó¸µ¤Î¥½¡¼¥¹¤¬ÄÖ¤ê¤ò´Ö°ã¤¨¤Á¤ã¤Ã¤¿¤ó¤À¤è¤Í¡¥
#
N:184:¡Ø¥¢¥é¥ó¥ë¡¼¥¹¡Ù
-E:'Arunruth'
+E:'Aranruth'
I:23:16:4
W:20:45:150:50000
P:0:3d5:20:12:0
F:DEX | HIDE_TYPE |
F:SLAY_DEMON | SLAY_ORC | FREE_ACT | RES_COLD | FEATHER |
-F:SLOW_DIGEST | ACTIVATE | SHOW_MODS
+F:SLOW_DIGEST | ACTIVATE | SHOW_MODS |
+F:ESP_ORC | ESP_TROLL | ESP_GIANT | ESP_DEMON
D:$The beautiful sword of Thingol, justly named "King's Ire". It glistens
D:$ icy enough to freeze the hearts of demons, and you feel supple and
D:$ lightfooted as you clasp its hilt of gold and silver inlay.
I:34:7:0
W:50:6:160:90000
P:10:1d6:0:0:20
-F:LITE | RES_BLIND | RES_DARK | RES_NETHER | RES_ELEC | RES_FIRE | ACTIVATE
+F:LITE | RES_BLIND | RES_DARK | RES_NETHER | RES_ELEC | RES_FIRE |
+F:ACTIVATE | ESP_GOOD
D:$A shining shield, once borne by the great mariner Earendil, "scored with
D:$runes to keep all wounds and harm from him".
D:¤«¤Ä¤Æ°ÎÂç¤Ê¤ëÁ¥¾è¤ê¥¨¥¢¥ì¥ó¥Ç¥£¥ë¤¬¿È¤ËÉÕ¤±¤Æ¤¤¤¿µ±¤¯½â¤À¡£
W:15:8:30:22500
P:0:2d6:6:9:0
F:DEX | CHR | HIDE_TYPE | RIDING |
-F:SLAY_ANIMAL | BRAND_FIRE | ACTIVATE
+F:KILL_ANIMAL | ESP_ANIMAL | BRAND_FIRE | ACTIVATE
D:Ë¿¹ñ¥µ¡¼¥«¥¹ÃĤǻÈÍѤµ¤ì¤¿Í³½ïÀµ¤·¤¤ÌԽûȤ¤¤Î¾Ú¤À¡£
D:¤³¤Î¥à¥Á¤Î²»¤Ï¤É¤ó¤ÊÌԽäǤâ¿Ì¤¨¾å¤¬¤é¤»¤ë¤³¤È¤¬¤Ç¤¤ë¡£
W:20:8:100:60000
P:0:2d9:15:2:0
F:DEX | STEALTH | SEARCH | RES_FIRE | BRAND_POIS |
-F:ACTIVATE | SEE_INVIS | SHOW_MODS
+F:ACTIVATE | SEE_INVIS | SHOW_MODS | WARNING
N:199:¡Ø¥Ö¥é¥Ã¥Ç¥£¡¦¥à¡¼¥ó¡Ù
E:'Bloody Moon'
W:30:50:140:120000
P:0:4d4:12:16:0
F:STR | CHR | STEALTH | SPEED |
-F:SLAY_EVIL | SLAY_UNDEAD | SLAY_GIANT | SLAY_ANIMAL |
+F:SLAY_EVIL | KILL_UNDEAD | SLAY_GIANT | SLAY_ANIMAL |
F:RES_NETHER | RES_FEAR | RES_DARK | RES_COLD
D:¡Ö½â»ý¤Ä²µ½÷¡×¤³¤È¥í¡¼¥Ï¥ó²¦¹ñ¤Î¥¨¥ª¥¦¥£¥óɱ¤¬¡¢
D:¥Ù¥ì¥ó¥Î¡¼¥ë¤ÎÌî¤Ë¤ª¤¤¤ÆËⲦ¤Ë¿¶¤ë¤Ã¤¿·õ¤À¡£
E:of Telepathy
X:33:20
W:0:18:0:15000
-F:TELEPATHY
+#F:TELEPATHY
N:34:µÞ®²óÉü¤Î
E:of Regeneration
X:24:20
W:0:36:0:5000
C:0:0:0:3
-F:WIS |
+F:WIS | ESP_GOOD |
F:BLESSED | XTRA_POWER
# 67 (unused)
C:5:5:0:2
F:STR | DEX | CON |
F:SLAY_ORC | SLAY_TROLL | SLAY_GIANT |
+F:ESP_ORC | ESP_TROLL | ESP_GIANT |
F:FREE_ACT | SEE_INVIS
N:69:Äɲù¶·â¤Î
X:24:20
W:0:90:0:6000
C:0:0:0:2
-F:INT | SLAY_ANIMAL | REGEN
+F:INT | KILL_ANIMAL | REGEN | ESP_ANIMAL
N:89:*ÌǼÙ*¤Î
E:of *Slay* Evil
X:24:20
W:0:90:0:5000
C:0:0:0:2
-F:WIS | SLAY_EVIL | BLESSED | RES_FEAR
+F:WIS | SLAY_EVIL | BLESSED | RES_FEAR | ESP_EVIL
N:90:*¥¢¥ó¥Ç¥Ã¥É¥¹¥ì¥¤¥ä¡¼*¤Î
E:of *Slay* Undead
X:24:24
W:0:90:0:8000
C:0:0:0:2
-F:WIS | SLAY_UNDEAD | SEE_INVIS | RES_NETHER
+F:WIS | KILL_UNDEAD | SEE_INVIS | RES_NETHER | ESP_UNDEAD
N:91:*¥Ç¡¼¥â¥ó¥¹¥ì¥¤¥ä¡¼*¤Î
E:of *Slay* Demon
X:24:16
W:0:90:0:4000
C:0:0:0:2
-F:INT | SLAY_DEMON
+F:INT | KILL_DEMON | ESP_DEMON
N:92:*¥ª¡¼¥¯¥¹¥ì¥¤¥ä¡¼*¤Î
E:of *Slay* Orc
X:24:14
W:0:60:0:4000
C:0:0:0:2
-F:DEX | SLAY_ORC
+F:DEX | KILL_ORC | ESP_ORC
N:93:*¥È¥í¥ë¥¹¥ì¥¤¥ä¡¼*¤Î
E:of *Slay* Troll
X:24:14
W:0:60:0:4000
C:0:0:0:2
-F:STR | SLAY_TROLL
+F:STR | KILL_TROLL | ESP_TROLL
N:94:*¥¸¥ã¥¤¥¢¥ó¥È¥¹¥ì¥¤¥ä¡¼*¤Î
E:of *Slay* Giant
X:24:16
W:0:60:0:4000
C:0:0:0:2
-F:STR | SLAY_GIANT
+F:STR | KILL_GIANT | ESP_GIANT
N:95:*¥É¥é¥´¥ó¥¹¥ì¥¤¥ä¡¼*¤Î
E:of *Slay* Dragon
X:24:24
W:0:90:0:6000
C:0:0:0:1
-F:CON | SLAY_DRAGON | KILL_DRAGON | XTRA_E_RES | XTRA_D_RES
+F:CON | SLAY_DRAGON | KILL_DRAGON | XTRA_E_RES | XTRA_D_RES | ESP_DRAGON
#JZ#
N:96:(µÛ·ì)
X:24:0
W:0:36:0:0
C:20:20:10:0
-F:SEE_INVIS | AGGRAVATE | HEAVY_CURSE | CURSED
+F:SEE_INVIS | AGGRAVATE | HEAVY_CURSE | CURSED |
+F:SLAY_UNDEAD | BRAND_POIS | ESP_UNDEAD
F:RANDOM_CURSE2
N:103:*¿Í¶ô¤¤*¤Î
X:24:16
W:0:60:0:4000
C:0:0:0:2
-F:DEX | SLAY_HUMAN
+F:DEX | KILL_HUMAN | ESP_HUMAN
### Missile Launchers ###
F:SHOW_MODS | INSTA_ART
N:589:& ÀÐ
-E:& Palantir~
+E:& Crystal Ball~
G:*:y
I:39:8:0
W:60:0:10:60000
****************************************
- ** Hengband 1.1.0b **
+ ** Hengband 1.3.0 **
****************************************
Based on Moria: Copyright (c) 1985 Robert Alan Koeneke
***************************************
- ** ÊѶòÈÚÅÜ 1.1.0b **
+ ** ÊѶòÈÚÅÜ 1.3.0 **
***************************************
Based on Moria: Copyright (c) 1985 Robert Alan Koeneke
{
switch (randint0(6))
{
- case 0: o_ptr->art_flags2 |= (TR2_SUST_STR); break;
- case 1: o_ptr->art_flags2 |= (TR2_SUST_INT); break;
- case 2: o_ptr->art_flags2 |= (TR2_SUST_WIS); break;
- case 3: o_ptr->art_flags2 |= (TR2_SUST_DEX); break;
- case 4: o_ptr->art_flags2 |= (TR2_SUST_CON); break;
- case 5: o_ptr->art_flags2 |= (TR2_SUST_CHR); break;
+ case 0: add_flag(o_ptr->art_flags, TR_SUST_STR); break;
+ case 1: add_flag(o_ptr->art_flags, TR_SUST_INT); break;
+ case 2: add_flag(o_ptr->art_flags, TR_SUST_WIS); break;
+ case 3: add_flag(o_ptr->art_flags, TR_SUST_DEX); break;
+ case 4: add_flag(o_ptr->art_flags, TR_SUST_CON); break;
+ case 5: add_flag(o_ptr->art_flags, TR_SUST_CHR); break;
}
}
{
switch (randint0(12))
{
- case 0: o_ptr->art_flags2 |= (TR2_RES_POIS); break;
- case 1: o_ptr->art_flags2 |= (TR2_RES_LITE); break;
- case 2: o_ptr->art_flags2 |= (TR2_RES_DARK); break;
- case 3: o_ptr->art_flags2 |= (TR2_RES_SHARDS); break;
- case 4: o_ptr->art_flags2 |= (TR2_RES_BLIND); break;
- case 5: o_ptr->art_flags2 |= (TR2_RES_CONF); break;
- case 6: o_ptr->art_flags2 |= (TR2_RES_SOUND); break;
- case 7: o_ptr->art_flags2 |= (TR2_RES_NETHER); break;
- case 8: o_ptr->art_flags2 |= (TR2_RES_NEXUS); break;
- case 9: o_ptr->art_flags2 |= (TR2_RES_CHAOS); break;
- case 10: o_ptr->art_flags2 |= (TR2_RES_DISEN); break;
- case 11: o_ptr->art_flags2 |= (TR2_RES_FEAR); break;
+ case 0: add_flag(o_ptr->art_flags, TR_RES_POIS); break;
+ case 1: add_flag(o_ptr->art_flags, TR_RES_LITE); break;
+ case 2: add_flag(o_ptr->art_flags, TR_RES_DARK); break;
+ case 3: add_flag(o_ptr->art_flags, TR_RES_SHARDS); break;
+ case 4: add_flag(o_ptr->art_flags, TR_RES_BLIND); break;
+ case 5: add_flag(o_ptr->art_flags, TR_RES_CONF); break;
+ case 6: add_flag(o_ptr->art_flags, TR_RES_SOUND); break;
+ case 7: add_flag(o_ptr->art_flags, TR_RES_NETHER); break;
+ case 8: add_flag(o_ptr->art_flags, TR_RES_NEXUS); break;
+ case 9: add_flag(o_ptr->art_flags, TR_RES_CHAOS); break;
+ case 10: add_flag(o_ptr->art_flags, TR_RES_DISEN); break;
+ case 11: add_flag(o_ptr->art_flags, TR_RES_FEAR); break;
}
}
{
switch (randint0(10))
{
- case 0: o_ptr->art_flags2 |= (TR2_RES_LITE); break;
- case 1: o_ptr->art_flags2 |= (TR2_RES_DARK); break;
- case 2: o_ptr->art_flags2 |= (TR2_RES_SHARDS); break;
- case 3: o_ptr->art_flags2 |= (TR2_RES_BLIND); break;
- case 4: o_ptr->art_flags2 |= (TR2_RES_CONF); break;
- case 5: o_ptr->art_flags2 |= (TR2_RES_SOUND); break;
- case 6: o_ptr->art_flags2 |= (TR2_RES_NETHER); break;
- case 7: o_ptr->art_flags2 |= (TR2_RES_NEXUS); break;
- case 8: o_ptr->art_flags2 |= (TR2_RES_CHAOS); break;
- case 9: o_ptr->art_flags2 |= (TR2_RES_FEAR); break;
+ case 0: add_flag(o_ptr->art_flags, TR_RES_LITE); break;
+ case 1: add_flag(o_ptr->art_flags, TR_RES_DARK); break;
+ case 2: add_flag(o_ptr->art_flags, TR_RES_SHARDS); break;
+ case 3: add_flag(o_ptr->art_flags, TR_RES_BLIND); break;
+ case 4: add_flag(o_ptr->art_flags, TR_RES_CONF); break;
+ case 5: add_flag(o_ptr->art_flags, TR_RES_SOUND); break;
+ case 6: add_flag(o_ptr->art_flags, TR_RES_NETHER); break;
+ case 7: add_flag(o_ptr->art_flags, TR_RES_NEXUS); break;
+ case 8: add_flag(o_ptr->art_flags, TR_RES_CHAOS); break;
+ case 9: add_flag(o_ptr->art_flags, TR_RES_FEAR); break;
}
}
{
switch (randint0(4))
{
- case 0: o_ptr->art_flags2 |= (TR2_RES_ACID); break;
- case 1: o_ptr->art_flags2 |= (TR2_RES_ELEC); break;
- case 2: o_ptr->art_flags2 |= (TR2_RES_COLD); break;
- case 3: o_ptr->art_flags2 |= (TR2_RES_FIRE); break;
+ case 0: add_flag(o_ptr->art_flags, TR_RES_ACID); break;
+ case 1: add_flag(o_ptr->art_flags, TR_RES_ELEC); break;
+ case 2: add_flag(o_ptr->art_flags, TR_RES_COLD); break;
+ case 3: add_flag(o_ptr->art_flags, TR_RES_FIRE); break;
}
}
{
if (one_in_(7))
{
- o_ptr->art_flags2 |= (TR2_RES_POIS);
+ add_flag(o_ptr->art_flags, TR_RES_POIS);
}
else
{
*/
void one_ability(object_type *o_ptr)
{
- switch (randint0(8))
+ switch (randint0(10))
{
- case 0: o_ptr->art_flags3 |= (TR3_FEATHER); break;
- case 1: o_ptr->art_flags3 |= (TR3_LITE); break;
- case 2: o_ptr->art_flags3 |= (TR3_SEE_INVIS); break;
- case 3: o_ptr->art_flags3 |= (TR3_WARNING); break;
- case 4: o_ptr->art_flags3 |= (TR3_SLOW_DIGEST); break;
- case 5: o_ptr->art_flags3 |= (TR3_REGEN); break;
- case 6: o_ptr->art_flags2 |= (TR2_FREE_ACT); break;
- case 7: o_ptr->art_flags2 |= (TR2_HOLD_LIFE); break;
+ case 0: add_flag(o_ptr->art_flags, TR_FEATHER); break;
+ case 1: add_flag(o_ptr->art_flags, TR_LITE); break;
+ case 2: add_flag(o_ptr->art_flags, TR_SEE_INVIS); break;
+ case 3: add_flag(o_ptr->art_flags, TR_WARNING); break;
+ case 4: add_flag(o_ptr->art_flags, TR_SLOW_DIGEST); break;
+ case 5: add_flag(o_ptr->art_flags, TR_REGEN); break;
+ case 6: add_flag(o_ptr->art_flags, TR_FREE_ACT); break;
+ case 7: add_flag(o_ptr->art_flags, TR_HOLD_LIFE); break;
+ case 8:
+ case 9:
+ switch (randint1(9))
+ {
+ case 1: add_flag(o_ptr->art_flags, TR_ESP_ANIMAL); break;
+ case 2: add_flag(o_ptr->art_flags, TR_ESP_UNDEAD); break;
+ case 3: add_flag(o_ptr->art_flags, TR_ESP_DEMON); break;
+ case 4: add_flag(o_ptr->art_flags, TR_ESP_ORC); break;
+ case 5: add_flag(o_ptr->art_flags, TR_ESP_TROLL); break;
+ case 6: add_flag(o_ptr->art_flags, TR_ESP_GIANT); break;
+ case 7: add_flag(o_ptr->art_flags, TR_ESP_DRAGON); break;
+ case 8: add_flag(o_ptr->art_flags, TR_ESP_HUMAN); break;
+ case 9: add_flag(o_ptr->art_flags, TR_ESP_GOOD); break;
+ }
+ break;
}
}
if (o_ptr->to_d > 0) o_ptr->to_d = 0 - (o_ptr->to_d + randint1(4));
o_ptr->curse_flags |= (TRC_HEAVY_CURSE | TRC_CURSED);
- o_ptr->art_flags3 &= ~(TR3_BLESSED);
+ remove_flag(o_ptr->art_flags, TR_BLESSED);
if (one_in_(4)) o_ptr->curse_flags |= TRC_PERMA_CURSE;
- if (one_in_(3)) o_ptr->art_flags3 |= TR3_TY_CURSE;
- if (one_in_(2)) o_ptr->art_flags3 |= TR3_AGGRAVATE;
- if (one_in_(3)) o_ptr->art_flags3 |= TR3_DRAIN_EXP;
- if (one_in_(2)) o_ptr->art_flags3 |= TR3_TELEPORT;
- else if (one_in_(3)) o_ptr->art_flags3 |= TR3_NO_TELE;
+ if (one_in_(3)) add_flag(o_ptr->art_flags, TR_TY_CURSE);
+ if (one_in_(2)) add_flag(o_ptr->art_flags, TR_AGGRAVATE);
+ if (one_in_(3)) add_flag(o_ptr->art_flags, TR_DRAIN_EXP);
+ if (one_in_(2)) add_flag(o_ptr->art_flags, TR_TELEPORT);
+ else if (one_in_(3)) add_flag(o_ptr->art_flags, TR_NO_TELE);
if ((p_ptr->pclass != CLASS_WARRIOR) && (p_ptr->pclass != CLASS_ARCHER) && (p_ptr->pclass != CLASS_CAVALRY) && (p_ptr->pclass != CLASS_BERSERKER) && (p_ptr->pclass != CLASS_SMITH) && one_in_(3))
- o_ptr->art_flags3 |= TR3_NO_MAGIC;
+ add_flag(o_ptr->art_flags, TR_NO_MAGIC);
}
switch (artifact_bias)
{
case BIAS_WARRIOR:
- if (!(o_ptr->art_flags1 & TR1_STR))
+ if (!(have_flag(o_ptr->art_flags, TR_STR)))
{
- o_ptr->art_flags1 |= TR1_STR;
+ add_flag(o_ptr->art_flags, TR_STR);
if (one_in_(2)) return;
}
- if (!(o_ptr->art_flags1 & TR1_CON))
+ if (!(have_flag(o_ptr->art_flags, TR_CON)))
{
- o_ptr->art_flags1 |= TR1_CON;
+ add_flag(o_ptr->art_flags, TR_CON);
if (one_in_(2)) return;
}
- if (!(o_ptr->art_flags1 & TR1_DEX))
+ if (!(have_flag(o_ptr->art_flags, TR_DEX)))
{
- o_ptr->art_flags1 |= TR1_DEX;
+ add_flag(o_ptr->art_flags, TR_DEX);
if (one_in_(2)) return;
}
break;
case BIAS_MAGE:
- if (!(o_ptr->art_flags1 & TR1_INT))
+ if (!(have_flag(o_ptr->art_flags, TR_INT)))
{
- o_ptr->art_flags1 |= TR1_INT;
+ add_flag(o_ptr->art_flags, TR_INT);
if (one_in_(2)) return;
}
- if ((o_ptr->tval == TV_GLOVES) && !(o_ptr->art_flags1 & TR1_MAGIC_MASTERY))
+ if ((o_ptr->tval == TV_GLOVES) && !(have_flag(o_ptr->art_flags, TR_MAGIC_MASTERY)))
{
- o_ptr->art_flags1 |= TR1_MAGIC_MASTERY;
+ add_flag(o_ptr->art_flags, TR_MAGIC_MASTERY);
if (one_in_(2)) return;
}
break;
case BIAS_PRIESTLY:
- if (!(o_ptr->art_flags1 & TR1_WIS))
+ if (!(have_flag(o_ptr->art_flags, TR_WIS)))
{
- o_ptr->art_flags1 |= TR1_WIS;
+ add_flag(o_ptr->art_flags, TR_WIS);
if (one_in_(2)) return;
}
break;
case BIAS_RANGER:
- if (!(o_ptr->art_flags1 & TR1_DEX))
+ if (!(have_flag(o_ptr->art_flags, TR_DEX)))
{
- o_ptr->art_flags1 |= TR1_DEX;
+ add_flag(o_ptr->art_flags, TR_DEX);
if (one_in_(2)) return;
}
- if (!(o_ptr->art_flags1 & TR1_CON))
+ if (!(have_flag(o_ptr->art_flags, TR_CON)))
{
- o_ptr->art_flags1 |= TR1_CON;
+ add_flag(o_ptr->art_flags, TR_CON);
if (one_in_(2)) return;
}
- if (!(o_ptr->art_flags1 & TR1_STR))
+ if (!(have_flag(o_ptr->art_flags, TR_STR)))
{
- o_ptr->art_flags1 |= TR1_STR;
+ add_flag(o_ptr->art_flags, TR_STR);
if (one_in_(2)) return;
}
break;
case BIAS_ROGUE:
- if (!(o_ptr->art_flags1 & TR1_STEALTH))
+ if (!(have_flag(o_ptr->art_flags, TR_STEALTH)))
{
- o_ptr->art_flags1 |= TR1_STEALTH;
+ add_flag(o_ptr->art_flags, TR_STEALTH);
if (one_in_(2)) return;
}
- if (!(o_ptr->art_flags1 & TR1_SEARCH))
+ if (!(have_flag(o_ptr->art_flags, TR_SEARCH)))
{
- o_ptr->art_flags1 |= TR1_SEARCH;
+ add_flag(o_ptr->art_flags, TR_SEARCH);
if (one_in_(2)) return;
}
break;
case BIAS_STR:
- if (!(o_ptr->art_flags1 & TR1_STR))
+ if (!(have_flag(o_ptr->art_flags, TR_STR)))
{
- o_ptr->art_flags1 |= TR1_STR;
+ add_flag(o_ptr->art_flags, TR_STR);
if (one_in_(2)) return;
}
break;
case BIAS_WIS:
- if (!(o_ptr->art_flags1 & TR1_WIS))
+ if (!(have_flag(o_ptr->art_flags, TR_WIS)))
{
- o_ptr->art_flags1 |= TR1_WIS;
+ add_flag(o_ptr->art_flags, TR_WIS);
if (one_in_(2)) return;
}
break;
case BIAS_INT:
- if (!(o_ptr->art_flags1 & TR1_INT))
+ if (!(have_flag(o_ptr->art_flags, TR_INT)))
{
- o_ptr->art_flags1 |= TR1_INT;
+ add_flag(o_ptr->art_flags, TR_INT);
if (one_in_(2)) return;
}
break;
case BIAS_DEX:
- if (!(o_ptr->art_flags1 & TR1_DEX))
+ if (!(have_flag(o_ptr->art_flags, TR_DEX)))
{
- o_ptr->art_flags1 |= TR1_DEX;
+ add_flag(o_ptr->art_flags, TR_DEX);
if (one_in_(2)) return;
}
break;
case BIAS_CON:
- if (!(o_ptr->art_flags1 & TR1_CON))
+ if (!(have_flag(o_ptr->art_flags, TR_CON)))
{
- o_ptr->art_flags1 |= TR1_CON;
+ add_flag(o_ptr->art_flags, TR_CON);
if (one_in_(2)) return;
}
break;
case BIAS_CHR:
- if (!(o_ptr->art_flags1 & TR1_CHR))
+ if (!(have_flag(o_ptr->art_flags, TR_CHR)))
{
- o_ptr->art_flags1 |= TR1_CHR;
+ add_flag(o_ptr->art_flags, TR_CHR);
if (one_in_(2)) return;
}
break;
if ((artifact_bias == BIAS_MAGE || artifact_bias == BIAS_PRIESTLY) && (o_ptr->tval == TV_SOFT_ARMOR) && (o_ptr->sval == SV_ROBE))
{
- if (!(o_ptr->art_flags3 & TR3_DEC_MANA) && one_in_(3))
+ if (!(have_flag(o_ptr->art_flags, TR_DEC_MANA)) && one_in_(3))
{
- o_ptr->art_flags3 |= TR3_DEC_MANA;
+ add_flag(o_ptr->art_flags, TR_DEC_MANA);
if (one_in_(2)) return;
}
}
switch (randint1(this_type))
{
case 1: case 2:
- o_ptr->art_flags1 |= TR1_STR;
+ add_flag(o_ptr->art_flags, TR_STR);
if (!artifact_bias && !one_in_(13))
artifact_bias = BIAS_STR;
else if (!artifact_bias && one_in_(7))
artifact_bias = BIAS_WARRIOR;
break;
case 3: case 4:
- o_ptr->art_flags1 |= TR1_INT;
+ add_flag(o_ptr->art_flags, TR_INT);
if (!artifact_bias && !one_in_(13))
artifact_bias = BIAS_INT;
else if (!artifact_bias && one_in_(7))
artifact_bias = BIAS_MAGE;
break;
case 5: case 6:
- o_ptr->art_flags1 |= TR1_WIS;
+ add_flag(o_ptr->art_flags, TR_WIS);
if (!artifact_bias && !one_in_(13))
artifact_bias = BIAS_WIS;
else if (!artifact_bias && one_in_(7))
artifact_bias = BIAS_PRIESTLY;
break;
case 7: case 8:
- o_ptr->art_flags1 |= TR1_DEX;
+ add_flag(o_ptr->art_flags, TR_DEX);
if (!artifact_bias && !one_in_(13))
artifact_bias = BIAS_DEX;
else if (!artifact_bias && one_in_(7))
artifact_bias = BIAS_ROGUE;
break;
case 9: case 10:
- o_ptr->art_flags1 |= TR1_CON;
+ add_flag(o_ptr->art_flags, TR_CON);
if (!artifact_bias && !one_in_(13))
artifact_bias = BIAS_CON;
else if (!artifact_bias && one_in_(9))
artifact_bias = BIAS_RANGER;
break;
case 11: case 12:
- o_ptr->art_flags1 |= TR1_CHR;
+ add_flag(o_ptr->art_flags, TR_CHR);
if (!artifact_bias && !one_in_(13))
artifact_bias = BIAS_CHR;
break;
case 13: case 14:
- o_ptr->art_flags1 |= TR1_STEALTH;
+ add_flag(o_ptr->art_flags, TR_STEALTH);
if (!artifact_bias && one_in_(3))
artifact_bias = BIAS_ROGUE;
break;
case 15: case 16:
- o_ptr->art_flags1 |= TR1_SEARCH;
+ add_flag(o_ptr->art_flags, TR_SEARCH);
if (!artifact_bias && one_in_(9))
artifact_bias = BIAS_RANGER;
break;
case 17: case 18:
- o_ptr->art_flags1 |= TR1_INFRA;
+ add_flag(o_ptr->art_flags, TR_INFRA);
break;
case 19:
- o_ptr->art_flags1 |= TR1_SPEED;
+ add_flag(o_ptr->art_flags, TR_SPEED);
if (!artifact_bias && one_in_(11))
artifact_bias = BIAS_ROGUE;
break;
case 20: case 21:
- o_ptr->art_flags1 |= TR1_TUNNEL;
+ add_flag(o_ptr->art_flags, TR_TUNNEL);
break;
case 22: case 23:
if (o_ptr->tval == TV_BOW) random_plus(o_ptr);
else
{
- o_ptr->art_flags1 |= TR1_BLOWS;
+ add_flag(o_ptr->art_flags, TR_BLOWS);
if (!artifact_bias && one_in_(11))
artifact_bias = BIAS_WARRIOR;
}
switch (artifact_bias)
{
case BIAS_ACID:
- if (!(o_ptr->art_flags2 & TR2_RES_ACID))
+ if (!(have_flag(o_ptr->art_flags, TR_RES_ACID)))
{
- o_ptr->art_flags2 |= TR2_RES_ACID;
+ add_flag(o_ptr->art_flags, TR_RES_ACID);
if (one_in_(2)) return;
}
- if (one_in_(BIAS_LUCK) && !(o_ptr->art_flags2 & TR2_IM_ACID))
+ if (one_in_(BIAS_LUCK) && !(have_flag(o_ptr->art_flags, TR_IM_ACID)))
{
- o_ptr->art_flags2 |= TR2_IM_ACID;
- if (!one_in_(IM_LUCK)) o_ptr->art_flags2 &= ~(TR2_IM_ELEC | TR2_IM_COLD | TR2_IM_FIRE);
+ add_flag(o_ptr->art_flags, TR_IM_ACID);
+ if (!one_in_(IM_LUCK))
+ {
+ remove_flag(o_ptr->art_flags, TR_IM_ELEC);
+ remove_flag(o_ptr->art_flags, TR_IM_COLD);
+ remove_flag(o_ptr->art_flags, TR_IM_FIRE);
+ }
if (one_in_(2)) return;
}
break;
case BIAS_ELEC:
- if (!(o_ptr->art_flags2 & TR2_RES_ELEC))
+ if (!(have_flag(o_ptr->art_flags, TR_RES_ELEC)))
{
- o_ptr->art_flags2 |= TR2_RES_ELEC;
+ add_flag(o_ptr->art_flags, TR_RES_ELEC);
if (one_in_(2)) return;
}
if ((o_ptr->tval >= TV_CLOAK) && (o_ptr->tval <= TV_HARD_ARMOR) &&
- !(o_ptr->art_flags3 & TR3_SH_ELEC))
+ !(have_flag(o_ptr->art_flags, TR_SH_ELEC)))
{
- o_ptr->art_flags3 |= TR3_SH_ELEC;
+ add_flag(o_ptr->art_flags, TR_SH_ELEC);
if (one_in_(2)) return;
}
- if (one_in_(BIAS_LUCK) && !(o_ptr->art_flags2 & TR2_IM_ELEC))
+ if (one_in_(BIAS_LUCK) && !(have_flag(o_ptr->art_flags, TR_IM_ELEC)))
{
- o_ptr->art_flags2 |= TR2_IM_ELEC;
- if (!one_in_(IM_LUCK)) o_ptr->art_flags2 &= ~(TR2_IM_ACID | TR2_IM_COLD | TR2_IM_FIRE);
+ add_flag(o_ptr->art_flags, TR_IM_ELEC);
+ if (!one_in_(IM_LUCK))
+ {
+ remove_flag(o_ptr->art_flags, TR_IM_ACID);
+ remove_flag(o_ptr->art_flags, TR_IM_COLD);
+ remove_flag(o_ptr->art_flags, TR_IM_FIRE);
+ }
+
if (one_in_(2)) return;
}
break;
case BIAS_FIRE:
- if (!(o_ptr->art_flags2 & TR2_RES_FIRE))
+ if (!(have_flag(o_ptr->art_flags, TR_RES_FIRE)))
{
- o_ptr->art_flags2 |= TR2_RES_FIRE;
+ add_flag(o_ptr->art_flags, TR_RES_FIRE);
if (one_in_(2)) return;
}
if ((o_ptr->tval >= TV_CLOAK) &&
(o_ptr->tval <= TV_HARD_ARMOR) &&
- !(o_ptr->art_flags3 & TR3_SH_FIRE))
+ !(have_flag(o_ptr->art_flags, TR_SH_FIRE)))
{
- o_ptr->art_flags3 |= TR3_SH_FIRE;
+ add_flag(o_ptr->art_flags, TR_SH_FIRE);
if (one_in_(2)) return;
}
if (one_in_(BIAS_LUCK) &&
- !(o_ptr->art_flags2 & TR2_IM_FIRE))
+ !(have_flag(o_ptr->art_flags, TR_IM_FIRE)))
{
- o_ptr->art_flags2 |= TR2_IM_FIRE;
- if (!one_in_(IM_LUCK)) o_ptr->art_flags2 &= ~(TR2_IM_ELEC | TR2_IM_COLD | TR2_IM_ACID);
+ add_flag(o_ptr->art_flags, TR_IM_FIRE);
+ if (!one_in_(IM_LUCK))
+ {
+ remove_flag(o_ptr->art_flags, TR_IM_ELEC);
+ remove_flag(o_ptr->art_flags, TR_IM_COLD);
+ remove_flag(o_ptr->art_flags, TR_IM_ACID);
+ }
if (one_in_(2)) return;
}
break;
case BIAS_COLD:
- if (!(o_ptr->art_flags2 & TR2_RES_COLD))
+ if (!(have_flag(o_ptr->art_flags, TR_RES_COLD)))
{
- o_ptr->art_flags2 |= TR2_RES_COLD;
+ add_flag(o_ptr->art_flags, TR_RES_COLD);
if (one_in_(2)) return;
}
if ((o_ptr->tval >= TV_CLOAK) &&
(o_ptr->tval <= TV_HARD_ARMOR) &&
- !(o_ptr->art_flags3 & TR3_SH_COLD))
+ !(have_flag(o_ptr->art_flags, TR_SH_COLD)))
{
- o_ptr->art_flags3 |= TR3_SH_COLD;
+ add_flag(o_ptr->art_flags, TR_SH_COLD);
if (one_in_(2)) return;
}
- if (one_in_(BIAS_LUCK) && !(o_ptr->art_flags2 & TR2_IM_COLD))
+ if (one_in_(BIAS_LUCK) && !(have_flag(o_ptr->art_flags, TR_IM_COLD)))
{
- o_ptr->art_flags2 |= TR2_IM_COLD;
- if (!one_in_(IM_LUCK)) o_ptr->art_flags2 &= ~(TR2_IM_ELEC | TR2_IM_ACID | TR2_IM_FIRE);
+ add_flag(o_ptr->art_flags, TR_IM_COLD);
+ if (!one_in_(IM_LUCK))
+ {
+ remove_flag(o_ptr->art_flags, TR_IM_ELEC);
+ remove_flag(o_ptr->art_flags, TR_IM_ACID);
+ remove_flag(o_ptr->art_flags, TR_IM_FIRE);
+ }
if (one_in_(2)) return;
}
break;
case BIAS_POIS:
- if (!(o_ptr->art_flags2 & TR2_RES_POIS))
+ if (!(have_flag(o_ptr->art_flags, TR_RES_POIS)))
{
- o_ptr->art_flags2 |= TR2_RES_POIS;
+ add_flag(o_ptr->art_flags, TR_RES_POIS);
if (one_in_(2)) return;
}
break;
case BIAS_WARRIOR:
- if (!one_in_(3) && (!(o_ptr->art_flags2 & TR2_RES_FEAR)))
+ if (!one_in_(3) && (!(have_flag(o_ptr->art_flags, TR_RES_FEAR))))
{
- o_ptr->art_flags2 |= TR2_RES_FEAR;
+ add_flag(o_ptr->art_flags, TR_RES_FEAR);
if (one_in_(2)) return;
}
- if (one_in_(3) && (!(o_ptr->art_flags3 & TR3_NO_MAGIC)))
+ if (one_in_(3) && (!(have_flag(o_ptr->art_flags, TR_NO_MAGIC))))
{
- o_ptr->art_flags3 |= TR3_NO_MAGIC;
+ add_flag(o_ptr->art_flags, TR_NO_MAGIC);
if (one_in_(2)) return;
}
break;
case BIAS_NECROMANTIC:
- if (!(o_ptr->art_flags2 & TR2_RES_NETHER))
+ if (!(have_flag(o_ptr->art_flags, TR_RES_NETHER)))
{
- o_ptr->art_flags2 |= TR2_RES_NETHER;
+ add_flag(o_ptr->art_flags, TR_RES_NETHER);
if (one_in_(2)) return;
}
- if (!(o_ptr->art_flags2 & TR2_RES_POIS))
+ if (!(have_flag(o_ptr->art_flags, TR_RES_POIS)))
{
- o_ptr->art_flags2 |= TR2_RES_POIS;
+ add_flag(o_ptr->art_flags, TR_RES_POIS);
if (one_in_(2)) return;
}
- if (!(o_ptr->art_flags2 & TR2_RES_DARK))
+ if (!(have_flag(o_ptr->art_flags, TR_RES_DARK)))
{
- o_ptr->art_flags2 |= TR2_RES_DARK;
+ add_flag(o_ptr->art_flags, TR_RES_DARK);
if (one_in_(2)) return;
}
break;
case BIAS_CHAOS:
- if (!(o_ptr->art_flags2 & TR2_RES_CHAOS))
+ if (!(have_flag(o_ptr->art_flags, TR_RES_CHAOS)))
{
- o_ptr->art_flags2 |= TR2_RES_CHAOS;
+ add_flag(o_ptr->art_flags, TR_RES_CHAOS);
if (one_in_(2)) return;
}
- if (!(o_ptr->art_flags2 & TR2_RES_CONF))
+ if (!(have_flag(o_ptr->art_flags, TR_RES_CONF)))
{
- o_ptr->art_flags2 |= TR2_RES_CONF;
+ add_flag(o_ptr->art_flags, TR_RES_CONF);
if (one_in_(2)) return;
}
- if (!(o_ptr->art_flags2 & TR2_RES_DISEN))
+ if (!(have_flag(o_ptr->art_flags, TR_RES_DISEN)))
{
- o_ptr->art_flags2 |= TR2_RES_DISEN;
+ add_flag(o_ptr->art_flags, TR_RES_DISEN);
if (one_in_(2)) return;
}
break;
random_resistance(o_ptr);
else
{
- o_ptr->art_flags2 |= TR2_IM_ACID;
+ add_flag(o_ptr->art_flags, TR_IM_ACID);
if (!artifact_bias)
artifact_bias = BIAS_ACID;
}
random_resistance(o_ptr);
else
{
- o_ptr->art_flags2 |= TR2_IM_ELEC;
+ add_flag(o_ptr->art_flags, TR_IM_ELEC);
if (!artifact_bias)
artifact_bias = BIAS_ELEC;
}
random_resistance(o_ptr);
else
{
- o_ptr->art_flags2 |= TR2_IM_COLD;
+ add_flag(o_ptr->art_flags, TR_IM_COLD);
if (!artifact_bias)
artifact_bias = BIAS_COLD;
}
random_resistance(o_ptr);
else
{
- o_ptr->art_flags2 |= TR2_IM_FIRE;
+ add_flag(o_ptr->art_flags, TR_IM_FIRE);
if (!artifact_bias)
artifact_bias = BIAS_FIRE;
}
case 5:
case 6:
case 13:
- o_ptr->art_flags2 |= TR2_RES_ACID;
+ add_flag(o_ptr->art_flags, TR_RES_ACID);
if (!artifact_bias)
artifact_bias = BIAS_ACID;
break;
case 7:
case 8:
case 14:
- o_ptr->art_flags2 |= TR2_RES_ELEC;
+ add_flag(o_ptr->art_flags, TR_RES_ELEC);
if (!artifact_bias)
artifact_bias = BIAS_ELEC;
break;
case 9:
case 10:
case 15:
- o_ptr->art_flags2 |= TR2_RES_FIRE;
+ add_flag(o_ptr->art_flags, TR_RES_FIRE);
if (!artifact_bias)
artifact_bias = BIAS_FIRE;
break;
case 11:
case 12:
case 16:
- o_ptr->art_flags2 |= TR2_RES_COLD;
+ add_flag(o_ptr->art_flags, TR_RES_COLD);
if (!artifact_bias)
artifact_bias = BIAS_COLD;
break;
case 17:
case 18:
- o_ptr->art_flags2 |= TR2_RES_POIS;
+ add_flag(o_ptr->art_flags, TR_RES_POIS);
if (!artifact_bias && !one_in_(4))
artifact_bias = BIAS_POIS;
else if (!artifact_bias && one_in_(2))
break;
case 19:
case 20:
- o_ptr->art_flags2 |= TR2_RES_FEAR;
+ add_flag(o_ptr->art_flags, TR_RES_FEAR);
if (!artifact_bias && one_in_(3))
artifact_bias = BIAS_WARRIOR;
break;
case 21:
- o_ptr->art_flags2 |= TR2_RES_LITE;
+ add_flag(o_ptr->art_flags, TR_RES_LITE);
break;
case 22:
- o_ptr->art_flags2 |= TR2_RES_DARK;
+ add_flag(o_ptr->art_flags, TR_RES_DARK);
break;
case 23:
case 24:
- o_ptr->art_flags2 |= TR2_RES_BLIND;
+ add_flag(o_ptr->art_flags, TR_RES_BLIND);
break;
case 25:
case 26:
- o_ptr->art_flags2 |= TR2_RES_CONF;
+ add_flag(o_ptr->art_flags, TR_RES_CONF);
if (!artifact_bias && one_in_(6))
artifact_bias = BIAS_CHAOS;
break;
case 27:
case 28:
- o_ptr->art_flags2 |= TR2_RES_SOUND;
+ add_flag(o_ptr->art_flags, TR_RES_SOUND);
break;
case 29:
case 30:
- o_ptr->art_flags2 |= TR2_RES_SHARDS;
+ add_flag(o_ptr->art_flags, TR_RES_SHARDS);
break;
case 31:
case 32:
- o_ptr->art_flags2 |= TR2_RES_NETHER;
+ add_flag(o_ptr->art_flags, TR_RES_NETHER);
if (!artifact_bias && one_in_(3))
artifact_bias = BIAS_NECROMANTIC;
break;
case 33:
case 34:
- o_ptr->art_flags2 |= TR2_RES_NEXUS;
+ add_flag(o_ptr->art_flags, TR_RES_NEXUS);
break;
case 35:
case 36:
- o_ptr->art_flags2 |= TR2_RES_CHAOS;
+ add_flag(o_ptr->art_flags, TR_RES_CHAOS);
if (!artifact_bias && one_in_(2))
artifact_bias = BIAS_CHAOS;
break;
case 37:
case 38:
- o_ptr->art_flags2 |= TR2_RES_DISEN;
+ add_flag(o_ptr->art_flags, TR_RES_DISEN);
break;
case 39:
if (o_ptr->tval >= TV_CLOAK && o_ptr->tval <= TV_HARD_ARMOR)
- o_ptr->art_flags3 |= TR3_SH_ELEC;
+ add_flag(o_ptr->art_flags, TR_SH_ELEC);
else
random_resistance(o_ptr);
if (!artifact_bias)
break;
case 40:
if (o_ptr->tval >= TV_CLOAK && o_ptr->tval <= TV_HARD_ARMOR)
- o_ptr->art_flags3 |= TR3_SH_FIRE;
+ add_flag(o_ptr->art_flags, TR_SH_FIRE);
else
random_resistance(o_ptr);
if (!artifact_bias)
case 41:
if (o_ptr->tval == TV_SHIELD || o_ptr->tval == TV_CLOAK ||
o_ptr->tval == TV_HELM || o_ptr->tval == TV_HARD_ARMOR)
- o_ptr->art_flags2 |= TR2_REFLECT;
+ add_flag(o_ptr->art_flags, TR_REFLECT);
else
random_resistance(o_ptr);
break;
case 42:
if (o_ptr->tval >= TV_CLOAK && o_ptr->tval <= TV_HARD_ARMOR)
- o_ptr->art_flags3 |= TR3_SH_COLD;
+ add_flag(o_ptr->art_flags, TR_SH_COLD);
else
random_resistance(o_ptr);
if (!artifact_bias)
switch (artifact_bias)
{
case BIAS_RANGER:
- if (!(o_ptr->art_flags2 & TR2_SUST_CON))
+ if (!(have_flag(o_ptr->art_flags, TR_SUST_CON)))
{
- o_ptr->art_flags2 |= TR2_SUST_CON;
+ add_flag(o_ptr->art_flags, TR_SUST_CON);
if (one_in_(2)) return;
}
break;
case BIAS_STR:
- if (!(o_ptr->art_flags2 & TR2_SUST_STR))
+ if (!(have_flag(o_ptr->art_flags, TR_SUST_STR)))
{
- o_ptr->art_flags2 |= TR2_SUST_STR;
+ add_flag(o_ptr->art_flags, TR_SUST_STR);
if (one_in_(2)) return;
}
break;
case BIAS_WIS:
- if (!(o_ptr->art_flags2 & TR2_SUST_WIS))
+ if (!(have_flag(o_ptr->art_flags, TR_SUST_WIS)))
{
- o_ptr->art_flags2 |= TR2_SUST_WIS;
+ add_flag(o_ptr->art_flags, TR_SUST_WIS);
if (one_in_(2)) return;
}
break;
case BIAS_INT:
- if (!(o_ptr->art_flags2 & TR2_SUST_INT))
+ if (!(have_flag(o_ptr->art_flags, TR_SUST_INT)))
{
- o_ptr->art_flags2 |= TR2_SUST_INT;
+ add_flag(o_ptr->art_flags, TR_SUST_INT);
if (one_in_(2)) return;
}
break;
case BIAS_DEX:
- if (!(o_ptr->art_flags2 & TR2_SUST_DEX))
+ if (!(have_flag(o_ptr->art_flags, TR_SUST_DEX)))
{
- o_ptr->art_flags2 |= TR2_SUST_DEX;
+ add_flag(o_ptr->art_flags, TR_SUST_DEX);
if (one_in_(2)) return;
}
break;
case BIAS_CON:
- if (!(o_ptr->art_flags2 & TR2_SUST_CON))
+ if (!(have_flag(o_ptr->art_flags, TR_SUST_CON)))
{
- o_ptr->art_flags2 |= TR2_SUST_CON;
+ add_flag(o_ptr->art_flags, TR_SUST_CON);
if (one_in_(2)) return;
}
break;
case BIAS_CHR:
- if (!(o_ptr->art_flags2 & TR2_SUST_CHR))
+ if (!(have_flag(o_ptr->art_flags, TR_SUST_CHR)))
{
- o_ptr->art_flags2 |= TR2_SUST_CHR;
+ add_flag(o_ptr->art_flags, TR_SUST_CHR);
if (one_in_(2)) return;
}
break;
case BIAS_CHAOS:
- if (!(o_ptr->art_flags3 & TR3_TELEPORT))
+ if (!(have_flag(o_ptr->art_flags, TR_TELEPORT)))
{
- o_ptr->art_flags3 |= TR3_TELEPORT;
+ add_flag(o_ptr->art_flags, TR_TELEPORT);
if (one_in_(2)) return;
}
break;
case BIAS_FIRE:
- if (!(o_ptr->art_flags3 & TR3_LITE))
+ if (!(have_flag(o_ptr->art_flags, TR_LITE)))
{
- o_ptr->art_flags3 |= TR3_LITE; /* Freebie */
+ add_flag(o_ptr->art_flags, TR_LITE); /* Freebie */
}
break;
}
- switch (randint1(32))
+ switch (randint1(33))
{
case 1:
- o_ptr->art_flags2 |= TR2_SUST_STR;
+ add_flag(o_ptr->art_flags, TR_SUST_STR);
if (!artifact_bias)
artifact_bias = BIAS_STR;
break;
case 2:
- o_ptr->art_flags2 |= TR2_SUST_INT;
+ add_flag(o_ptr->art_flags, TR_SUST_INT);
if (!artifact_bias)
artifact_bias = BIAS_INT;
break;
case 3:
- o_ptr->art_flags2 |= TR2_SUST_WIS;
+ add_flag(o_ptr->art_flags, TR_SUST_WIS);
if (!artifact_bias)
artifact_bias = BIAS_WIS;
break;
case 4:
- o_ptr->art_flags2 |= TR2_SUST_DEX;
+ add_flag(o_ptr->art_flags, TR_SUST_DEX);
if (!artifact_bias)
artifact_bias = BIAS_DEX;
break;
case 5:
- o_ptr->art_flags2 |= TR2_SUST_CON;
+ add_flag(o_ptr->art_flags, TR_SUST_CON);
if (!artifact_bias)
artifact_bias = BIAS_CON;
break;
case 6:
- o_ptr->art_flags2 |= TR2_SUST_CHR;
+ add_flag(o_ptr->art_flags, TR_SUST_CHR);
if (!artifact_bias)
artifact_bias = BIAS_CHR;
break;
case 7:
case 8:
case 14:
- o_ptr->art_flags2 |= TR2_FREE_ACT;
+ add_flag(o_ptr->art_flags, TR_FREE_ACT);
break;
case 9:
- o_ptr->art_flags2 |= TR2_HOLD_LIFE;
+ add_flag(o_ptr->art_flags, TR_HOLD_LIFE);
if (!artifact_bias && one_in_(5))
artifact_bias = BIAS_PRIESTLY;
else if (!artifact_bias && one_in_(6))
break;
case 10:
case 11:
- o_ptr->art_flags3 |= TR3_LITE;
+ add_flag(o_ptr->art_flags, TR_LITE);
break;
case 12:
case 13:
- o_ptr->art_flags3 |= TR3_FEATHER;
+ add_flag(o_ptr->art_flags, TR_FEATHER);
break;
case 15:
case 16:
case 17:
- o_ptr->art_flags3 |= TR3_SEE_INVIS;
- break;
- case 18:
- if (one_in_(3)) break;
- o_ptr->art_flags3 |= TR3_TELEPATHY;
- if (!artifact_bias && one_in_(9))
- artifact_bias = BIAS_MAGE;
+ add_flag(o_ptr->art_flags, TR_SEE_INVIS);
break;
case 19:
case 20:
- o_ptr->art_flags3 |= TR3_SLOW_DIGEST;
+ add_flag(o_ptr->art_flags, TR_SLOW_DIGEST);
break;
case 21:
case 22:
- o_ptr->art_flags3 |= TR3_REGEN;
+ add_flag(o_ptr->art_flags, TR_REGEN);
break;
case 23:
- o_ptr->art_flags3 |= TR3_TELEPORT;
+ add_flag(o_ptr->art_flags, TR_TELEPORT);
break;
case 24:
case 25:
case 29:
{
int bonus_h, bonus_d;
- o_ptr->art_flags3 |= TR3_SHOW_MODS;
+ add_flag(o_ptr->art_flags, TR_SHOW_MODS);
bonus_h = 4 + (randint1(11));
bonus_d = 4 + (randint1(11));
if ((o_ptr->tval != TV_SWORD) && (o_ptr->tval != TV_POLEARM) && (o_ptr->tval != TV_HAFTED) && (o_ptr->tval != TV_DIGGING) && (o_ptr->tval != TV_GLOVES) && (o_ptr->tval != TV_RING))
break;
}
case 30:
- o_ptr->art_flags3 |= TR3_NO_MAGIC;
+ add_flag(o_ptr->art_flags, TR_NO_MAGIC);
break;
case 31:
- o_ptr->art_flags3 |= TR3_NO_TELE;
+ add_flag(o_ptr->art_flags, TR_NO_TELE);
break;
case 32:
- o_ptr->art_flags3 |= TR3_WARNING;
+ add_flag(o_ptr->art_flags, TR_WARNING);
+ break;
+
+ case 18:
+ switch (randint1(3))
+ {
+ case 1:
+ add_flag(o_ptr->art_flags, TR_ESP_EVIL);
+ if (!artifact_bias && one_in_(3))
+ artifact_bias = BIAS_LAW;
+ break;
+ case 2:
+ add_flag(o_ptr->art_flags, TR_ESP_NONLIVING);
+ if (!artifact_bias && one_in_(3))
+ artifact_bias = BIAS_MAGE;
+ break;
+ case 3:
+ add_flag(o_ptr->art_flags, TR_TELEPATHY);
+ if (!artifact_bias && one_in_(9))
+ artifact_bias = BIAS_MAGE;
+ break;
+ }
break;
+
+ case 33:
+ {
+ int idx[3];
+ int n = randint1(3);
+
+ idx[0] = randint1(8);
+
+ idx[1] = randint1(7);
+ if (idx[1] >= idx[0]) idx[1]++;
+
+ idx[2] = randint1(6);
+ if (idx[2] >= idx[0]) idx[2]++;
+ if (idx[2] >= idx[1]) idx[2]++;
+
+ while (n--) switch (idx[n])
+ {
+ case 1:
+ add_flag(o_ptr->art_flags, TR_ESP_ANIMAL);
+ if (!artifact_bias && one_in_(4))
+ artifact_bias = BIAS_RANGER;
+ break;
+ case 2:
+ add_flag(o_ptr->art_flags, TR_ESP_UNDEAD);
+ if (!artifact_bias && one_in_(3))
+ artifact_bias = BIAS_PRIESTLY;
+ else if (!artifact_bias && one_in_(6))
+ artifact_bias = BIAS_NECROMANTIC;
+ break;
+ case 3:
+ add_flag(o_ptr->art_flags, TR_ESP_DEMON);
+ break;
+ case 4:
+ add_flag(o_ptr->art_flags, TR_ESP_ORC);
+ break;
+ case 5:
+ add_flag(o_ptr->art_flags, TR_ESP_TROLL);
+ break;
+ case 6:
+ add_flag(o_ptr->art_flags, TR_ESP_GIANT);
+ break;
+ case 7:
+ add_flag(o_ptr->art_flags, TR_ESP_HUMAN);
+ if (!artifact_bias && one_in_(6))
+ artifact_bias = BIAS_ROGUE;
+ break;
+ case 8:
+ add_flag(o_ptr->art_flags, TR_ESP_GOOD);
+ if (!artifact_bias && one_in_(3))
+ artifact_bias = BIAS_LAW;
+ break;
+ }
+ break;
+ }
}
}
case 1:
case 2:
case 3:
- o_ptr->art_flags3 |= TR3_XTRA_MIGHT;
- if (!one_in_(7)) o_ptr->art_flags3 &= ~(TR3_XTRA_SHOTS);
+ add_flag(o_ptr->art_flags, TR_XTRA_MIGHT);
+ if (!one_in_(7)) remove_flag(o_ptr->art_flags, TR_XTRA_SHOTS);
if (!artifact_bias && one_in_(9))
artifact_bias = BIAS_RANGER;
break;
default:
- o_ptr->art_flags3 |= TR3_XTRA_SHOTS;
- if (!one_in_(7)) o_ptr->art_flags3 &= ~(TR3_XTRA_MIGHT);
+ add_flag(o_ptr->art_flags, TR_XTRA_SHOTS);
+ if (!one_in_(7)) remove_flag(o_ptr->art_flags, TR_XTRA_MIGHT);
if (!artifact_bias && one_in_(9))
artifact_bias = BIAS_RANGER;
break;
switch (artifact_bias)
{
case BIAS_CHAOS:
- if (!(o_ptr->art_flags1 & TR1_CHAOTIC))
+ if (!(have_flag(o_ptr->art_flags, TR_CHAOTIC)))
{
- o_ptr->art_flags1 |= TR1_CHAOTIC;
+ add_flag(o_ptr->art_flags, TR_CHAOTIC);
if (one_in_(2)) return;
}
break;
case BIAS_PRIESTLY:
if((o_ptr->tval == TV_SWORD || o_ptr->tval == TV_POLEARM) &&
- !(o_ptr->art_flags3 & TR3_BLESSED))
+ !(have_flag(o_ptr->art_flags, TR_BLESSED)))
{
/* A free power for "priestly" random artifacts */
- o_ptr->art_flags3 |= TR3_BLESSED;
+ add_flag(o_ptr->art_flags, TR_BLESSED);
}
break;
case BIAS_NECROMANTIC:
- if (!(o_ptr->art_flags1 & TR1_VAMPIRIC))
+ if (!(have_flag(o_ptr->art_flags, TR_VAMPIRIC)))
{
- o_ptr->art_flags1 |= TR1_VAMPIRIC;
+ add_flag(o_ptr->art_flags, TR_VAMPIRIC);
if (one_in_(2)) return;
}
- if (!(o_ptr->art_flags1 & TR1_BRAND_POIS) && one_in_(2))
+ if (!(have_flag(o_ptr->art_flags, TR_BRAND_POIS)) && one_in_(2))
{
- o_ptr->art_flags1 |= TR1_BRAND_POIS;
+ add_flag(o_ptr->art_flags, TR_BRAND_POIS);
if (one_in_(2)) return;
}
break;
case BIAS_RANGER:
- if (!(o_ptr->art_flags1 & TR1_SLAY_ANIMAL))
+ if (!(have_flag(o_ptr->art_flags, TR_SLAY_ANIMAL)))
{
- o_ptr->art_flags1 |= TR1_SLAY_ANIMAL;
+ add_flag(o_ptr->art_flags, TR_SLAY_ANIMAL);
if (one_in_(2)) return;
}
break;
case BIAS_ROGUE:
if ((((o_ptr->tval == TV_SWORD) && (o_ptr->sval == SV_DAGGER)) ||
((o_ptr->tval == TV_POLEARM) && (o_ptr->sval == SV_SPEAR))) &&
- !(o_ptr->art_flags2 & TR2_THROW))
+ !(have_flag(o_ptr->art_flags, TR_THROW)))
{
/* Free power for rogues... */
- o_ptr->art_flags2 |= TR2_THROW;
+ add_flag(o_ptr->art_flags, TR_THROW);
}
- if (!(o_ptr->art_flags1 & TR1_BRAND_POIS))
+ if (!(have_flag(o_ptr->art_flags, TR_BRAND_POIS)))
{
- o_ptr->art_flags1 |= TR1_BRAND_POIS;
+ add_flag(o_ptr->art_flags, TR_BRAND_POIS);
if (one_in_(2)) return;
}
break;
case BIAS_POIS:
- if (!(o_ptr->art_flags1 & TR1_BRAND_POIS))
+ if (!(have_flag(o_ptr->art_flags, TR_BRAND_POIS)))
{
- o_ptr->art_flags1 |= TR1_BRAND_POIS;
+ add_flag(o_ptr->art_flags, TR_BRAND_POIS);
if (one_in_(2)) return;
}
break;
case BIAS_FIRE:
- if (!(o_ptr->art_flags1 & TR1_BRAND_FIRE))
+ if (!(have_flag(o_ptr->art_flags, TR_BRAND_FIRE)))
{
- o_ptr->art_flags1 |= TR1_BRAND_FIRE;
+ add_flag(o_ptr->art_flags, TR_BRAND_FIRE);
if (one_in_(2)) return;
}
break;
case BIAS_COLD:
- if (!(o_ptr->art_flags1 & TR1_BRAND_COLD))
+ if (!(have_flag(o_ptr->art_flags, TR_BRAND_COLD)))
{
- o_ptr->art_flags1 |= TR1_BRAND_COLD;
+ add_flag(o_ptr->art_flags, TR_BRAND_COLD);
if (one_in_(2)) return;
}
break;
case BIAS_ELEC:
- if (!(o_ptr->art_flags1 & TR1_BRAND_ELEC))
+ if (!(have_flag(o_ptr->art_flags, TR_BRAND_ELEC)))
{
- o_ptr->art_flags1 |= TR1_BRAND_ELEC;
+ add_flag(o_ptr->art_flags, TR_BRAND_ELEC);
if (one_in_(2)) return;
}
break;
case BIAS_ACID:
- if (!(o_ptr->art_flags1 & TR1_BRAND_ACID))
+ if (!(have_flag(o_ptr->art_flags, TR_BRAND_ACID)))
{
- o_ptr->art_flags1 |= TR1_BRAND_ACID;
+ add_flag(o_ptr->art_flags, TR_BRAND_ACID);
if (one_in_(2)) return;
}
break;
case BIAS_LAW:
- if (!(o_ptr->art_flags1 & TR1_SLAY_EVIL))
+ if (!(have_flag(o_ptr->art_flags, TR_SLAY_EVIL)))
{
- o_ptr->art_flags1 |= TR1_SLAY_EVIL;
+ add_flag(o_ptr->art_flags, TR_SLAY_EVIL);
if (one_in_(2)) return;
}
- if (!(o_ptr->art_flags1 & TR1_SLAY_UNDEAD))
+ if (!(have_flag(o_ptr->art_flags, TR_SLAY_UNDEAD)))
{
- o_ptr->art_flags1 |= TR1_SLAY_UNDEAD;
+ add_flag(o_ptr->art_flags, TR_SLAY_UNDEAD);
if (one_in_(2)) return;
}
- if (!(o_ptr->art_flags1 & TR1_SLAY_DEMON))
+ if (!(have_flag(o_ptr->art_flags, TR_SLAY_DEMON)))
{
- o_ptr->art_flags1 |= TR1_SLAY_DEMON;
+ add_flag(o_ptr->art_flags, TR_SLAY_DEMON);
if (one_in_(2)) return;
}
break;
{
case 1:
case 2:
- o_ptr->art_flags1 |= TR1_SLAY_ANIMAL;
+ add_flag(o_ptr->art_flags, TR_SLAY_ANIMAL);
break;
case 3:
case 4:
- o_ptr->art_flags1 |= TR1_SLAY_EVIL;
+ add_flag(o_ptr->art_flags, TR_SLAY_EVIL);
if (!artifact_bias && one_in_(2))
artifact_bias = BIAS_LAW;
else if (!artifact_bias && one_in_(9))
break;
case 5:
case 6:
- o_ptr->art_flags1 |= TR1_SLAY_UNDEAD;
+ add_flag(o_ptr->art_flags, TR_SLAY_UNDEAD);
if (!artifact_bias && one_in_(9))
artifact_bias = BIAS_PRIESTLY;
break;
case 7:
case 8:
- o_ptr->art_flags1 |= TR1_SLAY_DEMON;
+ add_flag(o_ptr->art_flags, TR_SLAY_DEMON);
if (!artifact_bias && one_in_(9))
artifact_bias = BIAS_PRIESTLY;
break;
case 9:
case 10:
- o_ptr->art_flags1 |= TR1_SLAY_ORC;
+ add_flag(o_ptr->art_flags, TR_SLAY_ORC);
break;
case 11:
case 12:
- o_ptr->art_flags1 |= TR1_SLAY_TROLL;
+ add_flag(o_ptr->art_flags, TR_SLAY_TROLL);
break;
case 13:
case 14:
- o_ptr->art_flags1 |= TR1_SLAY_GIANT;
+ add_flag(o_ptr->art_flags, TR_SLAY_GIANT);
break;
case 15:
case 16:
- o_ptr->art_flags1 |= TR1_SLAY_DRAGON;
+ add_flag(o_ptr->art_flags, TR_SLAY_DRAGON);
break;
case 17:
- o_ptr->art_flags1 |= TR1_KILL_DRAGON;
+ add_flag(o_ptr->art_flags, TR_KILL_DRAGON);
break;
case 18:
case 19:
if (o_ptr->tval == TV_SWORD)
{
- o_ptr->art_flags1 |= TR1_VORPAL;
+ add_flag(o_ptr->art_flags, TR_VORPAL);
if (!artifact_bias && one_in_(9))
artifact_bias = BIAS_WARRIOR;
}
random_slay(o_ptr);
break;
case 20:
- o_ptr->art_flags1 |= TR1_IMPACT;
+ add_flag(o_ptr->art_flags, TR_IMPACT);
break;
case 21:
case 22:
- o_ptr->art_flags1 |= TR1_BRAND_FIRE;
+ add_flag(o_ptr->art_flags, TR_BRAND_FIRE);
if (!artifact_bias)
artifact_bias = BIAS_FIRE;
break;
case 23:
case 24:
- o_ptr->art_flags1 |= TR1_BRAND_COLD;
+ add_flag(o_ptr->art_flags, TR_BRAND_COLD);
if (!artifact_bias)
artifact_bias = BIAS_COLD;
break;
case 25:
case 26:
- o_ptr->art_flags1 |= TR1_BRAND_ELEC;
+ add_flag(o_ptr->art_flags, TR_BRAND_ELEC);
if (!artifact_bias)
artifact_bias = BIAS_ELEC;
break;
case 27:
case 28:
- o_ptr->art_flags1 |= TR1_BRAND_ACID;
+ add_flag(o_ptr->art_flags, TR_BRAND_ACID);
if (!artifact_bias)
artifact_bias = BIAS_ACID;
break;
case 29:
case 30:
- o_ptr->art_flags1 |= TR1_BRAND_POIS;
+ add_flag(o_ptr->art_flags, TR_BRAND_POIS);
if (!artifact_bias && !one_in_(3))
artifact_bias = BIAS_POIS;
else if (!artifact_bias && one_in_(6))
artifact_bias = BIAS_ROGUE;
break;
case 31:
- o_ptr->art_flags1 |= TR1_VAMPIRIC;
+ add_flag(o_ptr->art_flags, TR_VAMPIRIC);
if (!artifact_bias)
artifact_bias = BIAS_NECROMANTIC;
break;
case 32:
- o_ptr->art_flags1 |= TR1_FORCE_WEAPON;
+ add_flag(o_ptr->art_flags, TR_FORCE_WEAPON);
if (!artifact_bias)
artifact_bias = (one_in_(2) ? BIAS_MAGE : BIAS_PRIESTLY);
break;
case 33:
case 34:
- o_ptr->art_flags3 |= TR3_SLAY_HUMAN;
+ add_flag(o_ptr->art_flags, TR_SLAY_HUMAN);
break;
default:
- o_ptr->art_flags1 |= TR1_CHAOTIC;
+ add_flag(o_ptr->art_flags, TR_CHAOTIC);
if (!artifact_bias)
artifact_bias = BIAS_CHAOS;
break;
/* A type was chosen... */
o_ptr->xtra2 = type;
- o_ptr->art_flags3 |= TR3_ACTIVATE;
+ add_flag(o_ptr->art_flags, TR_ACTIVATE);
o_ptr->timeout = 0;
}
s32b total_flags;
bool a_cursed = FALSE;
int warrior_artifact_bias = 0;
+ int i;
/* Reset artifact bias */
artifact_bias = 0;
o_ptr->name1 = 0;
o_ptr->name2 = 0;
- o_ptr->art_flags1 |= k_info[o_ptr->k_idx].flags1;
- o_ptr->art_flags2 |= k_info[o_ptr->k_idx].flags2;
- o_ptr->art_flags3 |= k_info[o_ptr->k_idx].flags3;
+ for (i = 0; i < TR_FLAG_SIZE; i++)
+ o_ptr->art_flags[i] |= k_info[o_ptr->k_idx].flags[i];
+
if (o_ptr->pval) has_pval = TRUE;
if (a_scroll && one_in_(4))
if (has_pval)
{
#if 0
- o_ptr->art_flags3 |= TR3_SHOW_MODS;
+ add_flag(o_ptr->art_flags, TR_SHOW_MODS);
/* This one commented out by gw's request... */
if (!a_scroll)
- o_ptr->art_flags3 |= TR3_HIDE_TYPE;
+ add_flag(o_ptr->art_flags, TR_HIDE_TYPE);
#endif
- if (o_ptr->art_flags1 & TR1_BLOWS)
+ if (have_flag(o_ptr->art_flags, TR_BLOWS))
{
o_ptr->pval = randint1(2);
if ((o_ptr->tval == TV_SWORD) && (o_ptr->sval == SV_HAYABUSA))
{
o_ptr->to_h += randint1(o_ptr->to_h > 19 ? 1 : 20 - o_ptr->to_h);
o_ptr->to_d += randint1(o_ptr->to_d > 19 ? 1 : 20 - o_ptr->to_d);
- if ((o_ptr->art_flags1 & TR1_WIS) && (o_ptr->pval > 0)) o_ptr->art_flags3 |= TR3_BLESSED;
+ if ((have_flag(o_ptr->art_flags, TR_WIS)) && (o_ptr->pval > 0)) add_flag(o_ptr->art_flags, TR_BLESSED);
}
/* Just to be sure */
- o_ptr->art_flags3 |= (TR3_IGNORE_ACID | TR3_IGNORE_ELEC |
- TR3_IGNORE_FIRE | TR3_IGNORE_COLD);
+ add_flag(o_ptr->art_flags, TR_IGNORE_ACID);
+ add_flag(o_ptr->art_flags, TR_IGNORE_ELEC);
+ add_flag(o_ptr->art_flags, TR_IGNORE_FIRE);
+ add_flag(o_ptr->art_flags, TR_IGNORE_COLD);
total_flags = flag_cost(o_ptr, o_ptr->pval);
if (cheat_peek) msg_format("%ld", total_flags);
}
}
- if (((artifact_bias == BIAS_MAGE) || (artifact_bias == BIAS_INT)) && (o_ptr->tval == TV_GLOVES)) o_ptr->art_flags2 |= TR2_FREE_ACT;
+ if (((artifact_bias == BIAS_MAGE) || (artifact_bias == BIAS_INT)) && (o_ptr->tval == TV_GLOVES)) add_flag(o_ptr->art_flags, TR_FREE_ACT);
if ((o_ptr->tval == TV_SWORD) && (o_ptr->sval == SV_DOKUBARI))
{
o_ptr->to_h = 0;
o_ptr->to_d = 0;
- o_ptr->art_flags1 &= ~(TR1_BLOWS);
- o_ptr->art_flags1 &= ~(TR1_FORCE_WEAPON);
- o_ptr->art_flags1 &= ~(TR1_SLAY_ANIMAL);
- o_ptr->art_flags1 &= ~(TR1_SLAY_EVIL);
- o_ptr->art_flags1 &= ~(TR1_SLAY_UNDEAD);
- o_ptr->art_flags1 &= ~(TR1_SLAY_DEMON);
- o_ptr->art_flags1 &= ~(TR1_SLAY_ORC);
- o_ptr->art_flags1 &= ~(TR1_SLAY_TROLL);
- o_ptr->art_flags1 &= ~(TR1_SLAY_GIANT);
- o_ptr->art_flags1 &= ~(TR1_SLAY_DRAGON);
- o_ptr->art_flags1 &= ~(TR1_KILL_DRAGON);
- o_ptr->art_flags3 &= ~(TR3_SLAY_HUMAN);
- o_ptr->art_flags1 &= ~(TR1_VORPAL);
- o_ptr->art_flags1 &= ~(TR1_BRAND_POIS);
- o_ptr->art_flags1 &= ~(TR1_BRAND_ACID);
- o_ptr->art_flags1 &= ~(TR1_BRAND_ELEC);
- o_ptr->art_flags1 &= ~(TR1_BRAND_FIRE);
- o_ptr->art_flags1 &= ~(TR1_BRAND_COLD);
+ remove_flag(o_ptr->art_flags, TR_BLOWS);
+ remove_flag(o_ptr->art_flags, TR_FORCE_WEAPON);
+ remove_flag(o_ptr->art_flags, TR_SLAY_ANIMAL);
+ remove_flag(o_ptr->art_flags, TR_SLAY_EVIL);
+ remove_flag(o_ptr->art_flags, TR_SLAY_UNDEAD);
+ remove_flag(o_ptr->art_flags, TR_SLAY_DEMON);
+ remove_flag(o_ptr->art_flags, TR_SLAY_ORC);
+ remove_flag(o_ptr->art_flags, TR_SLAY_TROLL);
+ remove_flag(o_ptr->art_flags, TR_SLAY_GIANT);
+ remove_flag(o_ptr->art_flags, TR_SLAY_DRAGON);
+ remove_flag(o_ptr->art_flags, TR_KILL_DRAGON);
+ remove_flag(o_ptr->art_flags, TR_SLAY_HUMAN);
+ remove_flag(o_ptr->art_flags, TR_VORPAL);
+ remove_flag(o_ptr->art_flags, TR_BRAND_POIS);
+ remove_flag(o_ptr->art_flags, TR_BRAND_ACID);
+ remove_flag(o_ptr->art_flags, TR_BRAND_ELEC);
+ remove_flag(o_ptr->art_flags, TR_BRAND_FIRE);
+ remove_flag(o_ptr->art_flags, TR_BRAND_COLD);
}
if (o_ptr->tval >= TV_BOOTS)
}
else
{
- o_ptr->art_flags3 |=
- (TR3_AGGRAVATE | TR3_TY_CURSE);
+ add_flag(o_ptr->art_flags, TR_AGGRAVATE);
+ add_flag(o_ptr->art_flags, TR_TY_CURSE);
o_ptr->curse_flags |=
(TRC_CURSED | TRC_HEAVY_CURSE);
o_ptr->curse_flags |= get_curse(2, o_ptr);
{
if (p_ptr->pclass != CLASS_SAMURAI)
{
- o_ptr->art_flags3 |= (TR3_NO_MAGIC);
+ add_flag(o_ptr->art_flags, TR_NO_MAGIC);
o_ptr->curse_flags |= (TRC_HEAVY_CURSE);
}
}
if (o_ptr->name1 == ART_XIAOLONG)
{
if (p_ptr->pclass == CLASS_MONK)
- o_ptr->art_flags1 |= TR1_BLOWS;
+ add_flag(o_ptr->art_flags, TR_BLOWS);
}
if (o_ptr->name1 == ART_BLOOD)
for (i = 0; i < dummy; i++)
{
int flag = randint0(19);
- if (flag == 18) o_ptr->art_flags3 |= TR3_SLAY_HUMAN;
- else o_ptr->art_flags1 |= (TR1_CHAOTIC << flag);
+ if (flag == 18) add_flag(o_ptr->art_flags, TR_SLAY_HUMAN);
+ else add_flag(o_ptr->art_flags, TR_CHAOTIC + flag);
}
dummy = randint1(2);
for (i = 0; i < dummy; i++)
for (i = 0; i < dummy; i++)
{
int tmp = randint0(11);
- if (tmp < 6) o_ptr->art_flags1 |= (TR1_STR << tmp);
- else o_ptr->art_flags1 |= (TR1_STEALTH << (tmp - 6));
+ if (tmp < 6) add_flag(o_ptr->art_flags, TR_STR + tmp);
+ else add_flag(o_ptr->art_flags, TR_STEALTH + tmp - 6);
}
}
*/
static void compare_weapon_aux2(object_type *o_ptr, int numblows,
int r, int c, int mult, cptr attr,
- u32b f1, u32b f2, u32b f3, byte color)
+ byte color)
{
char tmp_str[80];
static void compare_weapon_aux1(object_type *o_ptr, int col, int r)
{
int mult = 60;
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
+ int blow = p_ptr->num_blow[0];
/* Get the flags of the weapon */
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
if (p_ptr->riding)
{
if ((o_ptr->tval == TV_POLEARM) && ((o_ptr->sval == SV_LANCE) || (o_ptr->sval == SV_HEAVY_LANCE)))
mult = mult * (o_ptr->dd + 2) / o_ptr->dd;
}
- if ((p_ptr->pclass != CLASS_SAMURAI) && (f1 & TR1_FORCE_WEAPON) && (p_ptr->csp > (o_ptr->dd * o_ptr->ds / 5))) mult = mult * 7 / 2;
+ if ((p_ptr->pclass != CLASS_SAMURAI) && (have_flag(flgs, TR_FORCE_WEAPON)) && (p_ptr->csp > (o_ptr->dd * o_ptr->ds / 5))) mult = mult * 7 / 2;
/* Print the relevant lines */
#ifdef JP
-if (f1 & TR1_FORCE_WEAPON) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 1*mult, "ÍýÎÏ:", f1, f2, f3, TERM_L_BLUE);
-if (f1 & TR1_SLAY_ANIMAL) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 5*mult/2, "ưʪ:", f1, f2, f3, TERM_YELLOW);
-if (f1 & TR1_SLAY_EVIL) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 2*mult, "¼Ù°:", f1, f2, f3, TERM_YELLOW);
-if (f3 & TR3_SLAY_HUMAN) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 5*mult/2, "¿Í´Ö:", f1, f2, f3, TERM_YELLOW);
-if (f1 & TR1_SLAY_UNDEAD) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 3*mult, "ÉÔ»à:", f1, f2, f3, TERM_YELLOW);
-if (f1 & TR1_SLAY_DEMON) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 3*mult, "°Ëâ:", f1, f2, f3, TERM_YELLOW);
-if (f1 & TR1_SLAY_ORC) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 3*mult, "¥ª¡¼¥¯:", f1, f2, f3, TERM_YELLOW);
-if (f1 & TR1_SLAY_TROLL) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 3*mult, "¥È¥í¥ë:", f1, f2, f3, TERM_YELLOW);
-if (f1 & TR1_SLAY_GIANT) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 3*mult, "µð¿Í:", f1, f2, f3, TERM_YELLOW);
-if (f1 & TR1_KILL_DRAGON) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 5*mult, "ε:", f1, f2, f3, TERM_YELLOW);
-else if (f1 & TR1_SLAY_DRAGON) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 3*mult, "ε:", f1, f2, f3, TERM_YELLOW);
-if (f1 & TR1_BRAND_ACID) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 5*mult/2, "»À°À:", f1, f2, f3, TERM_RED);
-if (f1 & TR1_BRAND_ELEC) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 5*mult/2, "ÅÅ°À:", f1, f2, f3, TERM_RED);
-if (f1 & TR1_BRAND_FIRE) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 5*mult/2, "±ê°À:", f1, f2, f3, TERM_RED);
-if (f1 & TR1_BRAND_COLD) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 5*mult/2, "Îä°À:", f1, f2, f3, TERM_RED);
-if (f1 & TR1_BRAND_POIS) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 5*mult/2, "ÆÇ°À:", f1, f2, f3, TERM_RED);
-#else
- if (f1 & TR1_FORCE_WEAPON) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 1*mult, "Force :", f1, f2, f3, TERM_L_BLUE);
- if (f1 & TR1_SLAY_ANIMAL) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 5*mult/2, "Animals:", f1, f2, f3, TERM_YELLOW);
- if (f1 & TR1_SLAY_EVIL) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 2*mult, "Evil:", f1, f2, f3, TERM_YELLOW);
- if (f3 & TR3_SLAY_HUMAN) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 5*mult/2, "Human:", f1, f2, f3, TERM_YELLOW);
- if (f1 & TR1_SLAY_UNDEAD) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 3*mult, "Undead:", f1, f2, f3, TERM_YELLOW);
- if (f1 & TR1_SLAY_DEMON) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 3*mult, "Demons:", f1, f2, f3, TERM_YELLOW);
- if (f1 & TR1_SLAY_ORC) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 3*mult, "Orcs:", f1, f2, f3, TERM_YELLOW);
- if (f1 & TR1_SLAY_TROLL) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 3*mult, "Trolls:", f1, f2, f3, TERM_YELLOW);
- if (f1 & TR1_SLAY_GIANT) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 3*mult, "Giants:", f1, f2, f3, TERM_YELLOW);
- if (f1 & TR1_KILL_DRAGON) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 5*mult, "Dragons:", f1, f2, f3, TERM_YELLOW);
- else if (f1 & TR1_SLAY_DRAGON) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 3*mult, "Dragons:", f1, f2, f3, TERM_YELLOW);
- if (f1 & TR1_BRAND_ACID) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 5*mult/2, "Acid:", f1, f2, f3, TERM_RED);
- if (f1 & TR1_BRAND_ELEC) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 5*mult/2, "Elec:", f1, f2, f3, TERM_RED);
- if (f1 & TR1_BRAND_FIRE) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 5*mult/2, "Fire:", f1, f2, f3, TERM_RED);
- if (f1 & TR1_BRAND_COLD) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 5*mult/2, "Cold:", f1, f2, f3, TERM_RED);
- if (f1 & TR1_BRAND_POIS) compare_weapon_aux2(o_ptr, p_ptr->num_blow[0], r++, col, 5*mult/2, "Poison:", f1, f2, f3, TERM_RED);
+if (have_flag(flgs, TR_FORCE_WEAPON)) compare_weapon_aux2(o_ptr, blow, r++, col, 1*mult, "ÍýÎÏ:", TERM_L_BLUE);
+if (have_flag(flgs, TR_KILL_ANIMAL)) compare_weapon_aux2(o_ptr, blow, r++, col, 4*mult, "ưʪ:", TERM_YELLOW);
+ else if (have_flag(flgs, TR_SLAY_ANIMAL)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult/2, "ưʪ:", TERM_YELLOW);
+if (have_flag(flgs, TR_KILL_EVIL)) compare_weapon_aux2(o_ptr, blow, r++, col, 7*mult/2, "¼Ù°:", TERM_YELLOW);
+ else if (have_flag(flgs, TR_SLAY_EVIL)) compare_weapon_aux2(o_ptr, blow, r++, col, 2*mult, "¼Ù°:", TERM_YELLOW);
+if (have_flag(flgs, TR_KILL_HUMAN)) compare_weapon_aux2(o_ptr, blow, r++, col, 4*mult, "¿Í´Ö:", TERM_YELLOW);
+ else if (have_flag(flgs, TR_SLAY_HUMAN)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult/2, "¿Í´Ö:", TERM_YELLOW);
+if (have_flag(flgs, TR_KILL_UNDEAD)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult, "ÉÔ»à:", TERM_YELLOW);
+ else if (have_flag(flgs, TR_SLAY_UNDEAD)) compare_weapon_aux2(o_ptr, blow, r++, col, 3*mult, "ÉÔ»à:", TERM_YELLOW);
+if (have_flag(flgs, TR_KILL_DEMON)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult, "°Ëâ:", TERM_YELLOW);
+ else if (have_flag(flgs, TR_SLAY_DEMON)) compare_weapon_aux2(o_ptr, blow, r++, col, 3*mult, "°Ëâ:", TERM_YELLOW);
+if (have_flag(flgs, TR_KILL_ORC)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult, "¥ª¡¼¥¯:", TERM_YELLOW);
+ else if (have_flag(flgs, TR_SLAY_ORC)) compare_weapon_aux2(o_ptr, blow, r++, col, 3*mult, "¥ª¡¼¥¯:", TERM_YELLOW);
+if (have_flag(flgs, TR_KILL_TROLL)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult, "¥È¥í¥ë:", TERM_YELLOW);
+ else if (have_flag(flgs, TR_SLAY_TROLL)) compare_weapon_aux2(o_ptr, blow, r++, col, 3*mult, "¥È¥í¥ë:", TERM_YELLOW);
+if (have_flag(flgs, TR_KILL_GIANT)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult, "µð¿Í:", TERM_YELLOW);
+ else if (have_flag(flgs, TR_SLAY_GIANT)) compare_weapon_aux2(o_ptr, blow, r++, col, 3*mult, "µð¿Í:", TERM_YELLOW);
+if (have_flag(flgs, TR_KILL_DRAGON)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult, "ε:", TERM_YELLOW);
+else if (have_flag(flgs, TR_SLAY_DRAGON)) compare_weapon_aux2(o_ptr, blow, r++, col, 3*mult, "ε:", TERM_YELLOW);
+if (have_flag(flgs, TR_BRAND_ACID)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult/2, "»À°À:", TERM_RED);
+if (have_flag(flgs, TR_BRAND_ELEC)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult/2, "ÅÅ°À:", TERM_RED);
+if (have_flag(flgs, TR_BRAND_FIRE)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult/2, "±ê°À:", TERM_RED);
+if (have_flag(flgs, TR_BRAND_COLD)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult/2, "Îä°À:", TERM_RED);
+if (have_flag(flgs, TR_BRAND_POIS)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult/2, "ÆÇ°À:", TERM_RED);
+#else
+ if (have_flag(flgs, TR_FORCE_WEAPON)) compare_weapon_aux2(o_ptr, blow, r++, col, 1*mult, "Force :", TERM_L_BLUE);
+ if (have_flag(flgs, TR_KILL_ANIMAL)) compare_weapon_aux2(o_ptr, blow, r++, col, 4*mult, "Animals:", TERM_YELLOW);
+ else if (have_flag(flgs, TR_SLAY_ANIMAL)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult/2, "Animals:", TERM_YELLOW);
+ if (have_flag(flgs, TR_KILL_EVIL)) compare_weapon_aux2(o_ptr, blow, r++, col, 7*mult/2, "Evil:", TERM_YELLOW);
+ else if (have_flag(flgs, TR_SLAY_EVIL)) compare_weapon_aux2(o_ptr, blow, r++, col, 2*mult, "Evil:", TERM_YELLOW);
+ if (have_flag(flgs, TR_KILL_HUMAN)) compare_weapon_aux2(o_ptr, blow, r++, col, 4*mult, "Human:", TERM_YELLOW);
+ else if (have_flag(flgs, TR_SLAY_HUMAN)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult/2, "Human:", TERM_YELLOW);
+ if (have_flag(flgs, TR_KILL_UNDEAD)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult, "Undead:", TERM_YELLOW);
+ else if (have_flag(flgs, TR_SLAY_UNDEAD)) compare_weapon_aux2(o_ptr, blow, r++, col, 3*mult, "Undead:", TERM_YELLOW);
+ if (have_flag(flgs, TR_KILL_DEMON)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult, "Demons:", TERM_YELLOW);
+ else if (have_flag(flgs, TR_SLAY_DEMON)) compare_weapon_aux2(o_ptr, blow, r++, col, 3*mult, "Demons:", TERM_YELLOW);
+ if (have_flag(flgs, TR_KILL_ORC)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult, "Orcs:", TERM_YELLOW);
+ else if (have_flag(flgs, TR_SLAY_ORC)) compare_weapon_aux2(o_ptr, blow, r++, col, 3*mult, "Orcs:", TERM_YELLOW);
+ if (have_flag(flgs, TR_KILL_TROLL)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult, "Trolls:", TERM_YELLOW);
+ else if (have_flag(flgs, TR_SLAY_TROLL)) compare_weapon_aux2(o_ptr, blow, r++, col, 3*mult, "Trolls:", TERM_YELLOW);
+ if (have_flag(flgs, TR_KILL_GIANT)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult, "Giants:", TERM_YELLOW);
+ else if (have_flag(flgs, TR_SLAY_GIANT)) compare_weapon_aux2(o_ptr, blow, r++, col, 3*mult, "Giants:", TERM_YELLOW);
+ if (have_flag(flgs, TR_KILL_DRAGON)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult, "Dragons:", TERM_YELLOW);
+ else if (have_flag(flgs, TR_SLAY_DRAGON)) compare_weapon_aux2(o_ptr, blow, r++, col, 3*mult, "Dragons:", TERM_YELLOW);
+ if (have_flag(flgs, TR_BRAND_ACID)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult/2, "Acid:", TERM_RED);
+ if (have_flag(flgs, TR_BRAND_ELEC)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult/2, "Elec:", TERM_RED);
+ if (have_flag(flgs, TR_BRAND_FIRE)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult/2, "Fire:", TERM_RED);
+ if (have_flag(flgs, TR_BRAND_COLD)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult/2, "Cold:", TERM_RED);
+ if (have_flag(flgs, TR_BRAND_POIS)) compare_weapon_aux2(o_ptr, blow, r++, col, 5*mult/2, "Poison:", TERM_RED);
#endif
}
monster_race *r_ptr = &r_info[m_ptr->r_idx];
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
/* Extract the flags */
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
/* Some "weapons" and "ammo" do extra damage */
switch (o_ptr->tval)
case TV_DIGGING:
{
/* Slay Animal */
- if ((f1 & TR1_SLAY_ANIMAL) &&
+ if ((have_flag(flgs, TR_SLAY_ANIMAL)) &&
(r_ptr->flags3 & RF3_ANIMAL))
{
if (m_ptr->ml)
if (mult < 25) mult = 25;
}
+ /* Execute Animal */
+ if ((have_flag(flgs, TR_KILL_ANIMAL)) &&
+ (r_ptr->flags3 & RF3_ANIMAL))
+ {
+ if (m_ptr->ml)
+ {
+ r_ptr->r_flags3 |= RF3_ANIMAL;
+ }
+
+ if (mult < 40) mult = 40;
+ }
+
/* Slay Evil */
- if ((f1 & TR1_SLAY_EVIL) &&
+ if ((have_flag(flgs, TR_SLAY_EVIL)) &&
(r_ptr->flags3 & RF3_EVIL))
{
if (m_ptr->ml)
if (mult < 20) mult = 20;
}
+ /* Execute Evil */
+ if ((have_flag(flgs, TR_KILL_EVIL)) &&
+ (r_ptr->flags3 & RF3_EVIL))
+ {
+ if (m_ptr->ml)
+ {
+ r_ptr->r_flags3 |= RF3_EVIL;
+ }
+
+ if (mult < 35) mult = 35;
+ }
+
/* Slay Human */
- if ((f3 & TR3_SLAY_HUMAN) &&
+ if ((have_flag(flgs, TR_SLAY_HUMAN)) &&
(r_ptr->flags2 & RF2_HUMAN))
{
if (m_ptr->ml)
if (mult < 25) mult = 25;
}
+ /* Execute Human */
+ if ((have_flag(flgs, TR_KILL_HUMAN)) &&
+ (r_ptr->flags2 & RF2_HUMAN))
+ {
+ if (m_ptr->ml)
+ {
+ r_ptr->r_flags2 |= RF2_HUMAN;
+ }
+
+ if (mult < 40) mult = 40;
+ }
+
/* Slay Undead */
- if ((f1 & TR1_SLAY_UNDEAD) &&
+ if ((have_flag(flgs, TR_SLAY_UNDEAD)) &&
(r_ptr->flags3 & RF3_UNDEAD))
{
if (m_ptr->ml)
if (mult < 30) mult = 30;
}
+ /* Execute Undead */
+ if ((have_flag(flgs, TR_KILL_UNDEAD)) &&
+ (r_ptr->flags3 & RF3_UNDEAD))
+ {
+ if (m_ptr->ml)
+ {
+ r_ptr->r_flags3 |= RF3_UNDEAD;
+ }
+
+ if (mult < 50) mult = 50;
+ }
+
/* Slay Demon */
- if ((f1 & TR1_SLAY_DEMON) &&
+ if ((have_flag(flgs, TR_SLAY_DEMON)) &&
(r_ptr->flags3 & RF3_DEMON))
{
if (m_ptr->ml)
if (mult < 30) mult = 30;
}
+ /* Execute Demon */
+ if ((have_flag(flgs, TR_KILL_DEMON)) &&
+ (r_ptr->flags3 & RF3_DEMON))
+ {
+ if (m_ptr->ml)
+ {
+ r_ptr->r_flags3 |= RF3_DEMON;
+ }
+
+ if (mult < 50) mult = 50;
+ }
+
/* Slay Orc */
- if ((f1 & TR1_SLAY_ORC) &&
+ if ((have_flag(flgs, TR_SLAY_ORC)) &&
(r_ptr->flags3 & RF3_ORC))
{
if (m_ptr->ml)
if (mult < 30) mult = 30;
}
+ /* Execute Orc */
+ if ((have_flag(flgs, TR_KILL_ORC)) &&
+ (r_ptr->flags3 & RF3_ORC))
+ {
+ if (m_ptr->ml)
+ {
+ r_ptr->r_flags3 |= RF3_ORC;
+ }
+
+ if (mult < 50) mult = 50;
+ }
+
/* Slay Troll */
- if ((f1 & TR1_SLAY_TROLL) &&
+ if ((have_flag(flgs, TR_SLAY_TROLL)) &&
(r_ptr->flags3 & RF3_TROLL))
{
if (m_ptr->ml)
if (mult < 30) mult = 30;
}
+ /* Execute Troll */
+ if ((have_flag(flgs, TR_KILL_TROLL)) &&
+ (r_ptr->flags3 & RF3_TROLL))
+ {
+ if (m_ptr->ml)
+ {
+ r_ptr->r_flags3 |= RF3_TROLL;
+ }
+
+ if (mult < 50) mult = 50;
+ }
+
/* Slay Giant */
- if ((f1 & TR1_SLAY_GIANT) &&
+ if ((have_flag(flgs, TR_SLAY_GIANT)) &&
(r_ptr->flags3 & RF3_GIANT))
{
if (m_ptr->ml)
mult *= 3;
}
+ /* Execute Giant */
+ if ((have_flag(flgs, TR_KILL_GIANT)) &&
+ (r_ptr->flags3 & RF3_GIANT))
+ {
+ if (m_ptr->ml)
+ {
+ r_ptr->r_flags3 |= RF3_GIANT;
+ }
+
+ if (mult < 50) mult = 50;
+ }
+
/* Slay Dragon */
- if ((f1 & TR1_SLAY_DRAGON) &&
+ if ((have_flag(flgs, TR_SLAY_DRAGON)) &&
(r_ptr->flags3 & RF3_DRAGON))
{
if (m_ptr->ml)
}
/* Execute Dragon */
- if ((f1 & TR1_KILL_DRAGON) &&
+ if ((have_flag(flgs, TR_KILL_DRAGON)) &&
(r_ptr->flags3 & RF3_DRAGON))
{
if (m_ptr->ml)
}
/* Brand (Acid) */
- if ((f1 & TR1_BRAND_ACID) || (p_ptr->special_attack & (ATTACK_ACID)))
+ if ((have_flag(flgs, TR_BRAND_ACID)) || (p_ptr->special_attack & (ATTACK_ACID)))
{
/* Notice immunity */
if (r_ptr->flags3 & RF3_IM_ACID)
}
/* Brand (Elec) */
- if ((f1 & TR1_BRAND_ELEC) || (p_ptr->special_attack & (ATTACK_ELEC)) || (mode == HISSATSU_ELEC))
+ if ((have_flag(flgs, TR_BRAND_ELEC)) || (p_ptr->special_attack & (ATTACK_ELEC)) || (mode == HISSATSU_ELEC))
{
/* Notice immunity */
if (r_ptr->flags3 & RF3_IM_ELEC)
}
/* Otherwise, take the damage */
- else if (((f1 & TR1_BRAND_ELEC) || (p_ptr->special_attack & (ATTACK_ELEC))) && (mode == HISSATSU_ELEC))
+ else if (((have_flag(flgs, TR_BRAND_ELEC)) || (p_ptr->special_attack & (ATTACK_ELEC))) && (mode == HISSATSU_ELEC))
{
if (mult < 70) mult = 70;
}
}
/* Brand (Fire) */
- if ((f1 & TR1_BRAND_FIRE) || (p_ptr->special_attack & (ATTACK_FIRE)) || (mode == HISSATSU_FIRE))
+ if ((have_flag(flgs, TR_BRAND_FIRE)) || (p_ptr->special_attack & (ATTACK_FIRE)) || (mode == HISSATSU_FIRE))
{
/* Notice immunity */
if (r_ptr->flags3 & RF3_IM_FIRE)
}
/* Otherwise, take the damage */
- else if (((f1 & TR1_BRAND_FIRE) || (p_ptr->special_attack & (ATTACK_FIRE))) && (mode == HISSATSU_FIRE))
+ else if (((have_flag(flgs, TR_BRAND_FIRE)) || (p_ptr->special_attack & (ATTACK_FIRE))) && (mode == HISSATSU_FIRE))
{
if (r_ptr->flags3 & RF3_HURT_FIRE)
{
}
/* Brand (Cold) */
- if ((f1 & TR1_BRAND_COLD) || (p_ptr->special_attack & (ATTACK_COLD)) || (mode == HISSATSU_COLD))
+ if ((have_flag(flgs, TR_BRAND_COLD)) || (p_ptr->special_attack & (ATTACK_COLD)) || (mode == HISSATSU_COLD))
{
/* Notice immunity */
if (r_ptr->flags3 & RF3_IM_COLD)
}
}
/* Otherwise, take the damage */
- else if (((f1 & TR1_BRAND_COLD) || (p_ptr->special_attack & (ATTACK_COLD))) && (mode == HISSATSU_COLD))
+ else if (((have_flag(flgs, TR_BRAND_COLD)) || (p_ptr->special_attack & (ATTACK_COLD))) && (mode == HISSATSU_COLD))
{
if (r_ptr->flags3 & RF3_HURT_COLD)
{
}
/* Brand (Poison) */
- if ((f1 & TR1_BRAND_POIS) || (p_ptr->special_attack & (ATTACK_POIS)) || (mode == HISSATSU_POISON))
+ if ((have_flag(flgs, TR_BRAND_POIS)) || (p_ptr->special_attack & (ATTACK_POIS)) || (mode == HISSATSU_POISON))
{
/* Notice immunity */
if (r_ptr->flags3 & RF3_IM_POIS)
}
/* Otherwise, take the damage */
- else if (((f1 & TR1_BRAND_POIS) || (p_ptr->special_attack & (ATTACK_POIS))) && (mode == HISSATSU_POISON))
+ else if (((have_flag(flgs, TR_BRAND_POIS)) || (p_ptr->special_attack & (ATTACK_POIS))) && (mode == HISSATSU_POISON))
{
if (mult < 35) mult = 35;
}
if (mult == 10) mult = 40;
else if (mult < 60) mult = 60;
}
- if ((p_ptr->pclass != CLASS_SAMURAI) && (f1 & TR1_FORCE_WEAPON) && (p_ptr->csp > (o_ptr->dd * o_ptr->ds / 5)))
+ if ((p_ptr->pclass != CLASS_SAMURAI) && (have_flag(flgs, TR_FORCE_WEAPON)) && (p_ptr->csp > (o_ptr->dd * o_ptr->ds / 5)))
{
p_ptr->csp -= (1+(o_ptr->dd * o_ptr->ds / 5));
p_ptr->redraw |= (PR_MANA);
bool can_drain = FALSE;
int num_blow;
int drain_left = MAX_VAMPIRIC_DRAIN;
- u32b f1, f2, f3; /* A massive hack -- life-draining weapons */
+ u32b flgs[TR_FLAG_SIZE]; /* A massive hack -- life-draining weapons */
bool is_human = (r_ptr->d_char == 'p');
bool is_lowlevel = (r_ptr->level < (p_ptr->lev - 15));
bool zantetsu_mukou, e_j_mukou;
/* Hack -- bare hands do one damage */
k = 1;
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
/* Select a chaotic effect (50% chance) */
- if ((f1 & TR1_CHAOTIC) && one_in_(2))
+ if ((have_flag(flgs, TR_CHAOTIC)) && one_in_(2))
{
if (one_in_(10))
chg_virtue(V_CHANCE, 1);
}
/* Vampiric drain */
- if ((f1 & TR1_VAMPIRIC) || (chaos_effect == 1) || (mode == HISSATSU_DRAIN))
+ if ((have_flag(flgs, TR_VAMPIRIC)) || (chaos_effect == 1) || (mode == HISSATSU_DRAIN))
{
/* Only drain "living" monsters */
if (monster_living(r_ptr))
can_drain = FALSE;
}
- if ((f1 & TR1_VORPAL) && (randint1(vorpal_chance*3/2) == 1) && !zantetsu_mukou)
+ if ((have_flag(flgs, TR_VORPAL)) && (randint1(vorpal_chance*3/2) == 1) && !zantetsu_mukou)
vorpal_cut = TRUE;
else vorpal_cut = FALSE;
if ((o_ptr->tval == TV_POLEARM) && (o_ptr->sval == SV_DEATH_SCYTHE) && one_in_(3))
{
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
/* Sound */
sound(SOUND_HIT);
#endif
/* Extract the flags */
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
k = damroll(o_ptr->dd, o_ptr->ds);
{
if (!(p_ptr->resist_pois || p_ptr->oppose_pois) && (mult < 25))
mult = 25;
- if ((p_ptr->pclass != CLASS_SAMURAI) && (f1 & TR1_FORCE_WEAPON) && (p_ptr->csp > (p_ptr->msp / 30)))
+ if ((p_ptr->pclass != CLASS_SAMURAI) && (have_flag(flgs, TR_FORCE_WEAPON)) && (p_ptr->csp > (p_ptr->msp / 30)))
{
p_ptr->csp -= (1+(p_ptr->msp / 30));
p_ptr->redraw |= (PR_MANA);
monster_race *r_ptr = &r_info[m_ptr->r_idx];
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
/* Extract the flags */
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
/* Some "weapons" and "ammo" do extra damage */
switch (o_ptr->tval)
case TV_BOLT:
{
/* Slay Animal */
- if ((f1 & TR1_SLAY_ANIMAL) &&
+ if ((have_flag(flgs, TR_SLAY_ANIMAL)) &&
(r_ptr->flags3 & RF3_ANIMAL))
{
if (m_ptr->ml)
}
/* Slay Evil */
- if ((f1 & TR1_SLAY_EVIL) &&
+ if ((have_flag(flgs, TR_SLAY_EVIL)) &&
(r_ptr->flags3 & RF3_EVIL))
{
if (m_ptr->ml)
}
/* Slay Human */
- if ((f3 & TR3_SLAY_HUMAN) &&
+ if ((have_flag(flgs, TR_SLAY_HUMAN)) &&
(r_ptr->flags2 & RF2_HUMAN))
{
if (m_ptr->ml)
}
/* Slay Undead */
- if ((f1 & TR1_SLAY_UNDEAD) &&
+ if ((have_flag(flgs, TR_SLAY_UNDEAD)) &&
(r_ptr->flags3 & RF3_UNDEAD))
{
if (m_ptr->ml)
}
/* Slay Demon */
- if ((f1 & TR1_SLAY_DEMON) &&
+ if ((have_flag(flgs, TR_SLAY_DEMON)) &&
(r_ptr->flags3 & RF3_DEMON))
{
if (m_ptr->ml)
}
/* Slay Orc */
- if ((f1 & TR1_SLAY_ORC) &&
+ if ((have_flag(flgs, TR_SLAY_ORC)) &&
(r_ptr->flags3 & RF3_ORC))
{
if (m_ptr->ml)
}
/* Slay Troll */
- if ((f1 & TR1_SLAY_TROLL) &&
+ if ((have_flag(flgs, TR_SLAY_TROLL)) &&
(r_ptr->flags3 & RF3_TROLL))
{
if (m_ptr->ml)
}
/* Slay Giant */
- if ((f1 & TR1_SLAY_GIANT) &&
+ if ((have_flag(flgs, TR_SLAY_GIANT)) &&
(r_ptr->flags3 & RF3_GIANT))
{
if (m_ptr->ml)
}
/* Slay Dragon */
- if ((f1 & TR1_SLAY_DRAGON) &&
+ if ((have_flag(flgs, TR_SLAY_DRAGON)) &&
(r_ptr->flags3 & RF3_DRAGON))
{
if (m_ptr->ml)
}
/* Execute Dragon */
- if ((f1 & TR1_KILL_DRAGON) &&
+ if ((have_flag(flgs, TR_KILL_DRAGON)) &&
(r_ptr->flags3 & RF3_DRAGON))
{
if (m_ptr->ml)
}
/* Brand (Acid) */
- if ((f1 & TR1_BRAND_ACID) || (p_ptr->special_attack & (ATTACK_ACID)))
+ if ((have_flag(flgs, TR_BRAND_ACID)) || (p_ptr->special_attack & (ATTACK_ACID)))
{
/* Notice immunity */
if (r_ptr->flags3 & RF3_IM_ACID)
}
/* Brand (Elec) */
- if ((f1 & TR1_BRAND_ELEC) || (p_ptr->special_attack & (ATTACK_ELEC)))
+ if ((have_flag(flgs, TR_BRAND_ELEC)) || (p_ptr->special_attack & (ATTACK_ELEC)))
{
/* Notice immunity */
if (r_ptr->flags3 & RF3_IM_ELEC)
}
/* Brand (Fire) */
- if ((f1 & TR1_BRAND_FIRE) || (p_ptr->special_attack & (ATTACK_FIRE)))
+ if ((have_flag(flgs, TR_BRAND_FIRE)) || (p_ptr->special_attack & (ATTACK_FIRE)))
{
/* Notice immunity */
if (r_ptr->flags3 & RF3_IM_FIRE)
}
/* Brand (Cold) */
- if ((f1 & TR1_BRAND_COLD) || (p_ptr->special_attack & (ATTACK_COLD)))
+ if ((have_flag(flgs, TR_BRAND_COLD)) || (p_ptr->special_attack & (ATTACK_COLD)))
{
/* Notice immunity */
if (r_ptr->flags3 & RF3_IM_COLD)
}
/* Brand (Poison) */
- if ((f1 & TR1_BRAND_POIS) || (p_ptr->special_attack & (ATTACK_POIS)))
+ if ((have_flag(flgs, TR_BRAND_POIS)) || (p_ptr->special_attack & (ATTACK_POIS)))
{
/* Notice immunity */
if (r_ptr->flags3 & RF3_IM_POIS)
}
}
- if ((f1 & TR1_FORCE_WEAPON) && (p_ptr->csp > (p_ptr->msp / 30)))
+ if ((have_flag(flgs, TR_FORCE_WEAPON)) && (p_ptr->csp > (p_ptr->msp / 30)))
{
p_ptr->csp -= (1+(p_ptr->msp / 30));
p_ptr->redraw |= (PR_MANA);
int msec = delay_factor * delay_factor * delay_factor;
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
cptr q, s;
bool come_back = FALSE;
bool do_drop = TRUE;
object_copy(q_ptr, o_ptr);
/* Extract the thrown object's flags. */
- object_flags(q_ptr, &f1, &f2, &f3);
+ object_flags(q_ptr, flgs);
/* Distribute the charges of rods/wands between the stacks */
distribute_charges(o_ptr, q_ptr, 1);
/* Enforce a minimum "weight" of one pound */
div = ((q_ptr->weight > 10) ? q_ptr->weight : 10);
- if ((f2 & (TR2_THROW)) || boomerang) div /= 2;
+ if ((have_flag(flgs, TR_THROW)) || boomerang) div /= 2;
/* Hack -- Distance -- Reward strength, penalize weight */
tdis = (adj_str_blow[p_ptr->stat_ind[A_STR]] + 20) * mul / div;
/* Hack -- Handle stuff */
handle_stuff();
- if ((p_ptr->pclass == CLASS_NINJA) && ((q_ptr->tval == TV_SPIKE) || ((f2 & TR2_THROW) && (q_ptr->tval == TV_SWORD)))) shuriken = TRUE;
+ if ((p_ptr->pclass == CLASS_NINJA) && ((q_ptr->tval == TV_SPIKE) || ((have_flag(flgs, TR_THROW)) && (q_ptr->tval == TV_SWORD)))) shuriken = TRUE;
else shuriken = FALSE;
/* Chance of hitting */
- if (f2 & (TR2_THROW)) chance = ((p_ptr->skill_tht) +
+ if (have_flag(flgs, TR_THROW)) chance = ((p_ptr->skill_tht) +
((p_ptr->to_h_b + q_ptr->to_h) * BTH_PLUS_ADJ));
else chance = (p_ptr->skill_tht + (p_ptr->to_h_b * BTH_PLUS_ADJ));
tdam *= (mult+p_ptr->num_blow[item - INVEN_RARM]);
tdam += p_ptr->to_d_m;
}
- else if (f2 & (TR2_THROW))
+ else if (have_flag(flgs, TR_THROW))
{
tdam *= (3+mult);
tdam += p_ptr->to_d_m;
cptr japanese;
#endif
cptr english;
- u32b flag;
- int num;
+ int flag;
u32b except_flag;
} flag_insc_table;
#ifdef JP
static flag_insc_table flag_insc_plus[] =
{
- { "¹¶", "At", TR1_BLOWS, 1, 0 },
- { "®", "Sp", TR1_SPEED, 1, 0 },
- { "ÏÓ", "St", TR1_STR, 1, 0 },
- { "ÃÎ", "In", TR1_INT, 1, 0 },
- { "¸", "Wi", TR1_WIS, 1, 0 },
- { "´ï", "Dx", TR1_DEX, 1, 0 },
- { "ÂÑ", "Cn", TR1_CON, 1, 0 },
- { "̥", "Ch", TR1_CHR, 1, 0 },
- { "±£", "Sl", TR1_STEALTH, 1, 0 },
- { "õ", "Sr", TR1_SEARCH, 1, 0 },
- { "ÀÖ", "If", TR1_INFRA, 1, 0 },
- { "·¡", "Dg", TR1_TUNNEL, 1, 0 },
- { NULL, NULL, 0, 0, 0 }
+ { "¹¶", "At", TR_BLOWS, -1 },
+ { "®", "Sp", TR_SPEED, -1 },
+ { "ÏÓ", "St", TR_STR, -1 },
+ { "ÃÎ", "In", TR_INT, -1 },
+ { "¸", "Wi", TR_WIS, -1 },
+ { "´ï", "Dx", TR_DEX, -1 },
+ { "ÂÑ", "Cn", TR_CON, -1 },
+ { "̥", "Ch", TR_CHR, -1 },
+ { "±£", "Sl", TR_STEALTH, -1 },
+ { "õ", "Sr", TR_SEARCH, -1 },
+ { "ÀÖ", "If", TR_INFRA, -1 },
+ { "·¡", "Dg", TR_TUNNEL, -1 },
+ { NULL, NULL, 0, -1 }
};
static flag_insc_table flag_insc_immune[] =
{
- { "»À", "Ac", TR2_IM_ACID, 2, 0 },
- { "ÅÅ", "El", TR2_IM_ELEC, 2, 0 },
- { "²Ð", "Fi", TR2_IM_FIRE, 2, 0 },
- { "Îä", "Co", TR2_IM_COLD, 2, 0 },
- { NULL, NULL, 0, 0, 0 }
+ { "»À", "Ac", TR_IM_ACID, -1 },
+ { "ÅÅ", "El", TR_IM_ELEC, -1 },
+ { "²Ð", "Fi", TR_IM_FIRE, -1 },
+ { "Îä", "Co", TR_IM_COLD, -1 },
+ { NULL, NULL, 0, -1 }
};
static flag_insc_table flag_insc_resistance[] =
{
- { "»À", "Ac", TR2_RES_ACID, 2, TR2_IM_ACID },
- { "ÅÅ", "El", TR2_RES_ELEC, 2, TR2_IM_ELEC },
- { "²Ð", "Fi", TR2_RES_FIRE, 2, TR2_IM_FIRE },
- { "Îä", "Co", TR2_RES_COLD, 2, TR2_IM_COLD },
- { "ÆÇ", "Po", TR2_RES_POIS, 2, 0 },
- { "Á®", "Li", TR2_RES_LITE, 2, 0 },
- { "°Å", "Dk", TR2_RES_DARK, 2, 0 },
- { "ÇË", "Sh", TR2_RES_SHARDS, 2, 0 },
- { "ÌÕ", "Bl", TR2_RES_BLIND, 2, 0 },
- { "Íð", "Cf", TR2_RES_CONF, 2, 0 },
- { "¹ì", "So", TR2_RES_SOUND, 2, 0 },
- { "¹ö", "Nt", TR2_RES_NETHER, 2, 0 },
- { "°ø", "Nx", TR2_RES_NEXUS, 2, 0 },
- { "ÆÙ", "Ca", TR2_RES_CHAOS, 2, 0 },
- { "Îô", "Di", TR2_RES_DISEN, 2, 0 },
- { "¶²", "Fe", TR2_RES_FEAR, 2, 0 },
- { NULL, NULL, 0, 0, 0 }
+ { "»À", "Ac", TR_RES_ACID, TR_IM_ACID },
+ { "ÅÅ", "El", TR_RES_ELEC, TR_IM_ELEC },
+ { "²Ð", "Fi", TR_RES_FIRE, TR_IM_FIRE },
+ { "Îä", "Co", TR_RES_COLD, TR_IM_COLD },
+ { "ÆÇ", "Po", TR_RES_POIS, -1 },
+ { "Á®", "Li", TR_RES_LITE, -1 },
+ { "°Å", "Dk", TR_RES_DARK, -1 },
+ { "ÇË", "Sh", TR_RES_SHARDS, -1 },
+ { "ÌÕ", "Bl", TR_RES_BLIND, -1 },
+ { "Íð", "Cf", TR_RES_CONF, -1 },
+ { "¹ì", "So", TR_RES_SOUND, -1 },
+ { "¹ö", "Nt", TR_RES_NETHER, -1 },
+ { "°ø", "Nx", TR_RES_NEXUS, -1 },
+ { "ÆÙ", "Ca", TR_RES_CHAOS, -1 },
+ { "Îô", "Di", TR_RES_DISEN, -1 },
+ { "¶²", "Fe", TR_RES_FEAR, -1 },
+ { NULL, NULL, 0, -1 }
};
static flag_insc_table flag_insc_misc[] =
{
- { "ËâÎÏ", "Ma", TR3_DEC_MANA, 3, 0 },
- { "Åê", "Th", TR2_THROW, 2, 0 },
- { "ȿ", "Rf", TR2_REFLECT, 2, 0 },
- { "Ëã", "Fa", TR2_FREE_ACT, 2, 0 },
- { "ȑ", "Si", TR3_SEE_INVIS, 3, 0 },
- { "·Ð", "Hl", TR2_HOLD_LIFE, 2, 0 },
- { "´¶", "Esp", TR3_TELEPATHY, 3, 0 },
- { "ÃÙ", "Sd", TR3_SLOW_DIGEST, 3, 0 },
- { "³è", "Rg", TR3_REGEN, 3, 0 },
- { "Éâ", "Lv", TR3_FEATHER, 3, 0 },
- { "ÌÀ", "Lu", TR3_LITE, 3, 0 },
- { "·Ù", "Wr", TR3_WARNING, 3, 0 },
- { "ÇÜ", "Xm", TR3_XTRA_MIGHT, 3, 0 },
- { "¼Í", "Xs", TR3_XTRA_SHOTS, 3, 0 },
- { "ÅÜ", "Ag", TR3_AGGRAVATE, 3, 0 },
- { "½Ë", "Bs", TR3_BLESSED, 3, 0 },
+ { "ËâÎÏ", "Ma", TR_DEC_MANA, -1 },
+ { "Åê", "Th", TR_THROW, -1 },
+ { "ȿ", "Rf", TR_REFLECT, -1 },
+ { "Ëã", "Fa", TR_FREE_ACT, -1 },
+ { "ȑ", "Si", TR_SEE_INVIS, -1 },
+ { "·Ð", "Hl", TR_HOLD_LIFE, -1 },
+ { "´¶", "Esp", TR_TELEPATHY, -1 },
+ { "ÃÙ", "Sd", TR_SLOW_DIGEST, -1 },
+ { "³è", "Rg", TR_REGEN, -1 },
+ { "Éâ", "Lv", TR_FEATHER, -1 },
+ { "ÌÀ", "Lu", TR_LITE, -1 },
+ { "·Ù", "Wr", TR_WARNING, -1 },
+ { "ÇÜ", "Xm", TR_XTRA_MIGHT, -1 },
+ { "¼Í", "Xs", TR_XTRA_SHOTS, -1 },
+ { "ÅÜ", "Ag", TR_AGGRAVATE, -1 },
+ { "½Ë", "Bs", TR_BLESSED, -1 },
#if 0
- { "±Ê¼ö", "Pc", TR3_PERMA_CURSE, 3, 0 },
- { "¼ö", "Cu", TR3_HEAVY_CURSE, 3, TR3_PERMA_CURSE },
- { "´÷", "Ty", TR3_TY_CURSE, 3, 0 },
+ { "±Ê¼ö", "Pc", TR_PERMA_CURSE, -1 },
+ { "¼ö", "Cu", TR_HEAVY_CURSE, TR_PERMA_CURSE },
+ { "´÷", "Ty", TR_TY_CURSE, -1 },
#endif
- { NULL, NULL, 0, 0, 0 }
+ { NULL, NULL, 0, -1 }
};
static flag_insc_table flag_insc_aura[] =
{
- { "±ê", "F", TR3_SH_FIRE, 3, 0 },
- { "ÅÅ", "E", TR3_SH_ELEC, 3, 0 },
- { "Îä", "C", TR3_SH_COLD, 3, 0 },
- { "Ëâ", "M", TR3_NO_MAGIC, 3, 0 },
- { "½Ö", "T", TR3_NO_TELE, 3, 0 },
- { NULL, NULL, 0, 0, 0 }
+ { "±ê", "F", TR_SH_FIRE, -1 },
+ { "ÅÅ", "E", TR_SH_ELEC, -1 },
+ { "Îä", "C", TR_SH_COLD, -1 },
+ { "Ëâ", "M", TR_NO_MAGIC, -1 },
+ { "½Ö", "T", TR_NO_TELE, -1 },
+ { NULL, NULL, 0, -1 }
};
static flag_insc_table flag_insc_brand[] =
{
- { "»À", "A", TR1_BRAND_ACID, 1, 0 },
- { "ÅÅ", "E", TR1_BRAND_ELEC, 1, 0 },
- { "¾Æ", "F", TR1_BRAND_FIRE, 1, 0 },
- { "Åà", "Co", TR1_BRAND_COLD, 1, 0 },
- { "ÆÇ", "P", TR1_BRAND_POIS, 1, 0 },
- { "ÆÙ", "Ca", TR1_CHAOTIC, 1, 0 },
- { "µÛ", "V", TR1_VAMPIRIC, 1, 0 },
- { "¿Ì", "Q", TR1_IMPACT, 1, 0 },
- { "ÀÚ", "S", TR1_VORPAL, 1, 0 },
- { "Íý", "M", TR1_FORCE_WEAPON, 1, 0 },
- { NULL, NULL, 0, 0, 0 }
+ { "»À", "A", TR_BRAND_ACID, -1 },
+ { "ÅÅ", "E", TR_BRAND_ELEC, -1 },
+ { "¾Æ", "F", TR_BRAND_FIRE, -1 },
+ { "Åà", "Co", TR_BRAND_COLD, -1 },
+ { "ÆÇ", "P", TR_BRAND_POIS, -1 },
+ { "ÆÙ", "Ca", TR_CHAOTIC, -1 },
+ { "µÛ", "V", TR_VAMPIRIC, -1 },
+ { "¿Ì", "Q", TR_IMPACT, -1 },
+ { "ÀÚ", "S", TR_VORPAL, -1 },
+ { "Íý", "M", TR_FORCE_WEAPON, -1 },
+ { NULL, NULL, 0, -1 }
+};
+
+static flag_insc_table flag_insc_kill[] =
+{
+ { "¼Ù", "*", TR_KILL_EVIL, -1 },
+ { "¿Í", "p", TR_KILL_HUMAN, -1 },
+ { "ζ", "D", TR_KILL_DRAGON, -1 },
+ { "¥ª", "o", TR_KILL_ORC, -1 },
+ { "¥È", "T", TR_KILL_TROLL, -1 },
+ { "µð", "P", TR_KILL_GIANT, -1 },
+ { "¥Ç", "U", TR_KILL_DEMON, -1 },
+ { "Ȉ", "L", TR_KILL_UNDEAD, -1 },
+ { "ư", "Z", TR_KILL_ANIMAL, -1 },
+ { NULL, NULL, 0, -1 }
};
static flag_insc_table flag_insc_slay[] =
{
- { "¼Ù", "*", TR1_SLAY_EVIL, 1, 0 },
- { "¿Í", "p", TR3_SLAY_HUMAN, 3, 0 },
- { "ζ", "D", TR1_KILL_DRAGON, 1, 0 },
- { "ε", "d", TR1_SLAY_DRAGON, 1, TR1_KILL_DRAGON },
- { "¥ª", "o", TR1_SLAY_ORC, 1, 0 },
- { "¥È", "T", TR1_SLAY_TROLL, 1, 0 },
- { "µð", "P", TR1_SLAY_GIANT, 1, 0 },
- { "¥Ç", "U", TR1_SLAY_DEMON, 1, 0 },
- { "Ȉ", "L", TR1_SLAY_UNDEAD, 1, 0 },
- { "ư", "Z", TR1_SLAY_ANIMAL, 1, 0 },
- { NULL, NULL, 0, 0, 0 }
+ { "¼Ù", "*", TR_SLAY_EVIL, TR_KILL_EVIL },
+ { "¿Í", "p", TR_SLAY_HUMAN, TR_KILL_HUMAN },
+ { "ε", "d", TR_SLAY_DRAGON, TR_KILL_DRAGON },
+ { "¥ª", "o", TR_SLAY_ORC, TR_KILL_ORC },
+ { "¥È", "T", TR_SLAY_TROLL, TR_KILL_TROLL },
+ { "µð", "P", TR_SLAY_GIANT, TR_KILL_GIANT },
+ { "¥Ç", "U", TR_SLAY_DEMON, TR_KILL_DEMON },
+ { "Ȉ", "L", TR_SLAY_UNDEAD, TR_KILL_UNDEAD },
+ { "ư", "Z", TR_SLAY_ANIMAL, TR_KILL_ANIMAL },
+ { NULL, NULL, 0, -1 }
};
static flag_insc_table flag_insc_sust[] =
{
- { "ÏÓ", "St", TR2_SUST_STR, 2, 0 },
- { "ÃÎ", "In", TR2_SUST_INT, 2, 0 },
- { "¸", "Wi", TR2_SUST_WIS, 2, 0 },
- { "´ï", "Dx", TR2_SUST_DEX, 2, 0 },
- { "ÂÑ", "Cn", TR2_SUST_CON, 2, 0 },
- { "̥", "Ch", TR2_SUST_CHR, 2, 0 },
- { NULL, NULL, 0, 0, 0 }
+ { "ÏÓ", "St", TR_SUST_STR, -1 },
+ { "ÃÎ", "In", TR_SUST_INT, -1 },
+ { "¸", "Wi", TR_SUST_WIS, -1 },
+ { "´ï", "Dx", TR_SUST_DEX, -1 },
+ { "ÂÑ", "Cn", TR_SUST_CON, -1 },
+ { "̥", "Ch", TR_SUST_CHR, -1 },
+ { NULL, NULL, 0, -1 }
};
#else
static flag_insc_table flag_insc_plus[] =
{
- { "At", TR1_BLOWS, 1, 0 },
- { "Sp", TR1_SPEED, 1, 0 },
- { "St", TR1_STR, 1, 0 },
- { "In", TR1_INT, 1, 0 },
- { "Wi", TR1_WIS, 1, 0 },
- { "Dx", TR1_DEX, 1, 0 },
- { "Cn", TR1_CON, 1, 0 },
- { "Ch", TR1_CHR, 1, 0 },
- { "Sl", TR1_STEALTH, 1, 0 },
- { "Sr", TR1_SEARCH, 1, 0 },
- { "If", TR1_INFRA, 1, 0 },
- { "Dg", TR1_TUNNEL, 1, 0 },
- { NULL, 0, 0, 0 }
+ { "At", TR_BLOWS, -1 },
+ { "Sp", TR_SPEED, -1 },
+ { "St", TR_STR, -1 },
+ { "In", TR_INT, -1 },
+ { "Wi", TR_WIS, -1 },
+ { "Dx", TR_DEX, -1 },
+ { "Cn", TR_CON, -1 },
+ { "Ch", TR_CHR, -1 },
+ { "Sl", TR_STEALTH, -1 },
+ { "Sr", TR_SEARCH, -1 },
+ { "If", TR_INFRA, -1 },
+ { "Dg", TR_TUNNEL, -1 },
+ { NULL, 0, -1 }
};
static flag_insc_table flag_insc_immune[] =
{
- { "Ac", TR2_IM_ACID, 2, 0 },
- { "El", TR2_IM_ELEC, 2, 0 },
- { "Fi", TR2_IM_FIRE, 2, 0 },
- { "Co", TR2_IM_COLD, 2, 0 },
- { NULL, 0, 0, 0 }
+ { "Ac", TR_IM_ACID, -1 },
+ { "El", TR_IM_ELEC, -1 },
+ { "Fi", TR_IM_FIRE, -1 },
+ { "Co", TR_IM_COLD, -1 },
+ { NULL, 0, -1 }
};
static flag_insc_table flag_insc_resistance[] =
{
- { "Ac", TR2_RES_ACID, 2, TR2_IM_ACID },
- { "El", TR2_RES_ELEC, 2, TR2_IM_ELEC },
- { "Fi", TR2_RES_FIRE, 2, TR2_IM_FIRE },
- { "Co", TR2_RES_COLD, 2, TR2_IM_COLD },
- { "Po", TR2_RES_POIS, 2, 0 },
- { "Li", TR2_RES_LITE, 2, 0 },
- { "Dk", TR2_RES_DARK, 2, 0 },
- { "Sh", TR2_RES_SHARDS, 2, 0 },
- { "Bl", TR2_RES_BLIND, 2, 0 },
- { "Cf", TR2_RES_CONF, 2, 0 },
- { "So", TR2_RES_SOUND, 2, 0 },
- { "Nt", TR2_RES_NETHER, 2, 0 },
- { "Nx", TR2_RES_NEXUS, 2, 0 },
- { "Ca", TR2_RES_CHAOS, 2, 0 },
- { "Di", TR2_RES_DISEN, 2, 0 },
- { "Fe", TR2_RES_FEAR, 2, 0 },
- { NULL, 0, 0, 0 }
+ { "Ac", TR_RES_ACID, TR_IM_ACID },
+ { "El", TR_RES_ELEC, TR_IM_ELEC },
+ { "Fi", TR_RES_FIRE, TR_IM_FIRE },
+ { "Co", TR_RES_COLD, TR_IM_COLD },
+ { "Po", TR_RES_POIS, -1 },
+ { "Li", TR_RES_LITE, -1 },
+ { "Dk", TR_RES_DARK, -1 },
+ { "Sh", TR_RES_SHARDS, -1 },
+ { "Bl", TR_RES_BLIND, -1 },
+ { "Cf", TR_RES_CONF, -1 },
+ { "So", TR_RES_SOUND, -1 },
+ { "Nt", TR_RES_NETHER, -1 },
+ { "Nx", TR_RES_NEXUS, -1 },
+ { "Ca", TR_RES_CHAOS, -1 },
+ { "Di", TR_RES_DISEN, -1 },
+ { "Fe", TR_RES_FEAR, -1 },
+ { NULL, 0, -1 }
};
static flag_insc_table flag_insc_misc[] =
{
- { "Ma", TR3_DEC_MANA, 3, 0 },
- { "Th", TR2_THROW, 2, 0 },
- { "Rf", TR2_REFLECT, 2, 0 },
- { "Fa", TR2_FREE_ACT, 2, 0 },
- { "Si", TR3_SEE_INVIS, 3, 0 },
- { "Hl", TR2_HOLD_LIFE, 2, 0 },
- { "Esp", TR3_TELEPATHY, 3, 0 },
- { "Sd", TR3_SLOW_DIGEST, 3, 0 },
- { "Rg", TR3_REGEN, 3, 0 },
- { "Lv", TR3_FEATHER, 3, 0 },
- { "Lu", TR3_LITE, 3, 0 },
- { "Wr", TR3_WARNING, 3, 0 },
- { "Xm", TR3_XTRA_MIGHT, 3, 0 },
- { "Xs", TR3_XTRA_SHOTS, 3, 0 },
- { "Ag", TR3_AGGRAVATE, 3, 0 },
- { "Bs", TR3_BLESSED, 3, 0 },
+ { "Ma", TR_DEC_MANA, -1 },
+ { "Th", TR_THROW, -1 },
+ { "Rf", TR_REFLECT, -1 },
+ { "Fa", TR_FREE_ACT, -1 },
+ { "Si", TR_SEE_INVIS, -1 },
+ { "Hl", TR_HOLD_LIFE, -1 },
+ { "Esp", TR_TELEPATHY, -1 },
+ { "Sd", TR_SLOW_DIGEST, -1 },
+ { "Rg", TR_REGEN, -1 },
+ { "Lv", TR_FEATHER, -1 },
+ { "Lu", TR_LITE, -1 },
+ { "Wr", TR_WARNING, -1 },
+ { "Xm", TR_XTRA_MIGHT, -1 },
+ { "Xs", TR_XTRA_SHOTS, -1 },
+ { "Ag", TR_AGGRAVATE, -1 },
+ { "Bs", TR_BLESSED, -1 },
#if 0
- { "Pc", TR3_PERMA_CURSE, 3, 0 },
- { "Cu", TR3_HEAVY_CURSE, 3, TR3_PERMA_CURSE },
- { "Ty", TR3_TY_CURSE, 3, 0 },
+ { "Pc", TR_PERMA_CURSE, -1 },
+ { "Cu", TR_HEAVY_CURSE, TR_PERMA_CURSE },
+ { "Ty", TR_TY_CURSE, -1 },
#endif
#if 0
- { "De", TR3_DRAIN_EXP, 3, 0 },
+ { "De", TR_DRAIN_EXP, -1 },
#endif
- { NULL, 0, 0, 0 }
+ { NULL, 0, -1 }
};
static flag_insc_table flag_insc_aura[] =
{
- { "F", TR3_SH_FIRE, 3, 0 },
- { "E", TR3_SH_ELEC, 3, 0 },
- { "C", TR3_SH_COLD, 3, 0 },
- { "M", TR3_NO_MAGIC, 3, 0 },
- { "T", TR3_NO_TELE, 3, 0 },
- { NULL, 0, 0, 0 }
+ { "F", TR_SH_FIRE, -1 },
+ { "E", TR_SH_ELEC, -1 },
+ { "C", TR_SH_COLD, -1 },
+ { "M", TR_NO_MAGIC, -1 },
+ { "T", TR_NO_TELE, -1 },
+ { NULL, 0, -1 }
};
static flag_insc_table flag_insc_brand[] =
{
- { "A", TR1_BRAND_ACID, 1, 0 },
- { "E", TR1_BRAND_ELEC, 1, 0 },
- { "F", TR1_BRAND_FIRE, 1, 0 },
- { "Co", TR1_BRAND_COLD, 1, 0 },
- { "P", TR1_BRAND_POIS, 1, 0 },
- { "Ca", TR1_CHAOTIC, 1, 0 },
- { "V", TR1_VAMPIRIC, 1, 0 },
- { "Q", TR1_IMPACT, 1, 0 },
- { "S", TR1_VORPAL, 1, 0 },
- { "M", TR1_FORCE_WEAPON, 1, 0 },
- { NULL, 0, 0, 0 }
+ { "A", TR_BRAND_ACID, -1 },
+ { "E", TR_BRAND_ELEC, -1 },
+ { "F", TR_BRAND_FIRE, -1 },
+ { "Co", TR_BRAND_COLD, -1 },
+ { "P", TR_BRAND_POIS, -1 },
+ { "Ca", TR_CHAOTIC, -1 },
+ { "V", TR_VAMPIRIC, -1 },
+ { "Q", TR_IMPACT, -1 },
+ { "S", TR_VORPAL, -1 },
+ { "M", TR_FORCE_WEAPON, -1 },
+ { NULL, 0, -1 }
+};
+
+static flag_insc_table flag_insc_kill[] =
+{
+ { "*", TR_KILL_EVIL, -1 },
+ { "p", TR_KILL_HUMAN, -1 },
+ { "D", TR_KILL_DRAGON, -1 },
+ { "o", TR_KILL_ORC, -1 },
+ { "T", TR_KILL_TROLL, -1 },
+ { "P", TR_KILL_GIANT, -1 },
+ { "U", TR_KILL_DEMON, -1 },
+ { "L", TR_KILL_UNDEAD, -1 },
+ { "Z", TR_KILL_ANIMAL, -1 },
+ { NULL, 0, -1 }
};
static flag_insc_table flag_insc_slay[] =
{
- { "*", TR1_SLAY_EVIL, 1, 0 },
- { "p", TR3_SLAY_HUMAN, 3, 0 },
- { "D", TR1_KILL_DRAGON, 1, 0 },
- { "d", TR1_SLAY_DRAGON, 1, TR1_KILL_DRAGON },
- { "o", TR1_SLAY_ORC, 1, 0 },
- { "T", TR1_SLAY_TROLL, 1, 0 },
- { "P", TR1_SLAY_GIANT, 1, 0 },
- { "U", TR1_SLAY_DEMON, 1, 0 },
- { "L", TR1_SLAY_UNDEAD, 1, 0 },
- { "Z", TR1_SLAY_ANIMAL, 1, 0 },
- { NULL, 0, 0, 0 }
+ { "*", TR_SLAY_EVIL, TR_KILL_EVIL },
+ { "p", TR_SLAY_HUMAN, TR_KILL_HUMAN },
+ { "d", TR_SLAY_DRAGON, TR_KILL_DRAGON },
+ { "o", TR_SLAY_ORC, TR_KILL_ORC },
+ { "T", TR_SLAY_TROLL, TR_KILL_TROLL },
+ { "P", TR_SLAY_GIANT, TR_KILL_GIANT },
+ { "U", TR_SLAY_DEMON, TR_KILL_DEMON },
+ { "L", TR_SLAY_UNDEAD, TR_KILL_UNDEAD },
+ { "Z", TR_SLAY_ANIMAL, TR_KILL_ANIMAL },
+ { NULL, 0, -1 }
};
static flag_insc_table flag_insc_sust[] =
{
- { "St", TR2_SUST_STR, 2, 0 },
- { "In", TR2_SUST_INT, 2, 0 },
- { "Wi", TR2_SUST_WIS, 2, 0 },
- { "Dx", TR2_SUST_DEX, 2, 0 },
- { "Cn", TR2_SUST_CON, 2, 0 },
- { "Ch", TR2_SUST_CHR, 2, 0 },
- { NULL, 0, 0, 0 }
+ { "St", TR_SUST_STR, -1 },
+ { "In", TR_SUST_INT, -1 },
+ { "Wi", TR_SUST_WIS, -1 },
+ { "Dx", TR_SUST_DEX, -1 },
+ { "Cn", TR_SUST_CON, -1 },
+ { "Ch", TR_SUST_CHR, -1 },
+ { NULL, 0, -1 }
};
#endif
#define ADD_INSC(STR) (void)(strcat(ptr, (STR)), ptr += strlen(STR))
-static char *inscribe_flags_aux(flag_insc_table *f_ptr, u32b flag[], bool kanji, char *ptr)
+static char *inscribe_flags_aux(flag_insc_table *fi_ptr, u32b flgs[TR_FLAG_SIZE], bool kanji, char *ptr)
{
- while (f_ptr->num)
+ while (fi_ptr->english)
{
- if ((flag[f_ptr->num-1] & f_ptr->flag) &&
- !(flag[f_ptr->num-1] & f_ptr->except_flag))
+ if (have_flag(flgs, fi_ptr->flag) &&
+ (fi_ptr->except_flag == -1 || !have_flag(flgs, fi_ptr->except_flag)))
#ifdef JP
- ADD_INSC(kanji ? f_ptr->japanese : f_ptr->english);
+ ADD_INSC(kanji ? fi_ptr->japanese : fi_ptr->english);
#else
- ADD_INSC(f_ptr->english);
+ ADD_INSC(fi_ptr->english);
#endif
- f_ptr ++;
+ fi_ptr++;
}
return ptr;
}
-static bool have_flag_of(flag_insc_table *f_ptr, u32b flag[])
+static bool have_flag_of(flag_insc_table *fi_ptr, u32b flgs[TR_FLAG_SIZE])
{
- while (f_ptr->num)
+ while (fi_ptr->english)
{
- if ((flag[f_ptr->num-1] & f_ptr->flag) &&
- !(flag[f_ptr->num-1] & f_ptr->except_flag))
+ if (have_flag(flgs, fi_ptr->flag) &&
+ (fi_ptr->except_flag == -1 || !have_flag(flgs, fi_ptr->except_flag)))
return (TRUE);
- f_ptr++;
+ fi_ptr++;
}
return (FALSE);
bool kanji = FALSE;
bool all = TRUE;
- u32b flag[3];
+ u32b flgs[TR_FLAG_SIZE];
/* not fully identified */
if (!(o_ptr->ident & IDENT_MENTAL))
return quark_add(out_val);
/* Extract the flags */
- object_flags(o_ptr, &flag[0], &flag[1], &flag[2]);
+ object_flags(o_ptr, flgs);
*buff = '\0';
if (!all)
{
object_kind *k_ptr = &k_info[o_ptr->k_idx];
+ int j;
/* Base object */
- flag[0] &= ~k_ptr->flags1;
- flag[1] &= ~k_ptr->flags2;
- flag[2] &= ~k_ptr->flags3;
+ for (j = 0; j < TR_FLAG_SIZE; j++)
+ flgs[j] &= ~k_ptr->flags[j];
if (o_ptr->name1)
{
artifact_type *a_ptr = &a_info[o_ptr->name1];
- flag[0] &= ~a_ptr->flags1;
- flag[1] &= ~a_ptr->flags2;
- flag[2] &= ~(a_ptr->flags3 & ~TR3_TELEPORT);
+ for (j = 0; j < TR_FLAG_SIZE; j++)
+ flgs[j] &= ~a_ptr->flags[j];
}
if (o_ptr->name2)
{
ego_item_type *e_ptr = &e_info[o_ptr->name2];
- flag[0] &= ~e_ptr->flags1;
- flag[1] &= ~e_ptr->flags2;
- flag[2] &= ~(e_ptr->flags3 & ~TR3_TELEPORT);
+ for (j = 0; j < TR_FLAG_SIZE; j++)
+ flgs[j] &= ~e_ptr->flags[j];
}
}
/* Plusses */
- if (have_flag_of(flag_insc_plus, flag))
+ if (have_flag_of(flag_insc_plus, flgs))
{
if (kanji)
ADD_INSC("+");
}
- ptr = inscribe_flags_aux(flag_insc_plus, flag, kanji, ptr);
+ ptr = inscribe_flags_aux(flag_insc_plus, flgs, kanji, ptr);
/* Immunity */
- if (have_flag_of(flag_insc_immune, flag))
+ if (have_flag_of(flag_insc_immune, flgs))
{
if (!kanji && ptr != prev_ptr)
{
}
ADD_INSC("*");
}
- ptr = inscribe_flags_aux(flag_insc_immune, flag, kanji, ptr);
+ ptr = inscribe_flags_aux(flag_insc_immune, flgs, kanji, ptr);
/* Resistance */
- if (have_flag_of(flag_insc_resistance, flag))
+ if (have_flag_of(flag_insc_resistance, flgs))
{
if (kanji)
ADD_INSC("r");
prev_ptr = ptr;
}
}
- ptr = inscribe_flags_aux(flag_insc_resistance, flag, kanji, ptr);
+ ptr = inscribe_flags_aux(flag_insc_resistance, flgs, kanji, ptr);
/* Misc Ability */
- if (have_flag_of(flag_insc_misc, flag))
+ if (have_flag_of(flag_insc_misc, flgs))
{
if (ptr != prev_ptr)
{
prev_ptr = ptr;
}
}
- ptr = inscribe_flags_aux(flag_insc_misc, flag, kanji, ptr);
+ ptr = inscribe_flags_aux(flag_insc_misc, flgs, kanji, ptr);
/* Aura */
- if (have_flag_of(flag_insc_aura, flag))
+ if (have_flag_of(flag_insc_aura, flgs))
{
ADD_INSC("[");
}
- ptr = inscribe_flags_aux(flag_insc_aura, flag, kanji, ptr);
+ ptr = inscribe_flags_aux(flag_insc_aura, flgs, kanji, ptr);
/* Brand Weapon */
- if (have_flag_of(flag_insc_brand, flag))
+ if (have_flag_of(flag_insc_brand, flgs))
ADD_INSC("|");
- ptr = inscribe_flags_aux(flag_insc_brand, flag, kanji, ptr);
+ ptr = inscribe_flags_aux(flag_insc_brand, flgs, kanji, ptr);
+
+ /* Kill Weapon */
+ if (have_flag_of(flag_insc_kill, flgs))
+ ADD_INSC("/X");
+ ptr = inscribe_flags_aux(flag_insc_kill, flgs, kanji, ptr);
/* Slay Weapon */
- if (have_flag_of(flag_insc_slay, flag))
+ if (have_flag_of(flag_insc_slay, flgs))
ADD_INSC("/");
- ptr = inscribe_flags_aux(flag_insc_slay, flag, kanji, ptr);
+ ptr = inscribe_flags_aux(flag_insc_slay, flgs, kanji, ptr);
/* Random Teleport */
- if (flag[2] & (TR3_TELEPORT))
+ if (have_flag(flgs, TR_TELEPORT))
{
ADD_INSC(".");
}
/* sustain */
- if (have_flag_of(flag_insc_sust, flag))
+ if (have_flag_of(flag_insc_sust, flgs))
{
ADD_INSC("(");
}
- ptr = inscribe_flags_aux(flag_insc_sust, flag, kanji, ptr);
+ ptr = inscribe_flags_aux(flag_insc_sust, flgs, kanji, ptr);
if (ptr == start_percent)
ADD_INSC(" ");
int *j, byte tval, char *where)
{
char o_name[MAX_NLEN];
- u32b f[3];
+ u32b flgs[TR_FLAG_SIZE];
if (!o_ptr->k_idx)return;
if (o_ptr->tval != tval)return;
#endif
}
else {
- object_flags_known(o_ptr, &f[0], &f[1], &f[2]);
+ object_flags_known(o_ptr, flgs);
#ifdef JP
- if (f[1] & TR2_IM_ACID) fprintf(fff,"¡ö");
- else if (f[1] & TR2_RES_ACID) fprintf(fff,"¡Ü");
+ if (have_flag(flgs, TR_IM_ACID)) fprintf(fff,"¡ö");
+ else if (have_flag(flgs, TR_RES_ACID)) fprintf(fff,"¡Ü");
else fprintf(fff,"¡¦");
- if (f[1] & TR2_IM_ELEC) fprintf(fff,"¡ö");
- else if (f[1] & TR2_RES_ELEC) fprintf(fff,"¡Ü");
+ if (have_flag(flgs, TR_IM_ELEC)) fprintf(fff,"¡ö");
+ else if (have_flag(flgs, TR_RES_ELEC)) fprintf(fff,"¡Ü");
else fprintf(fff,"¡¦");
- if (f[1] & TR2_IM_FIRE) fprintf(fff,"¡ö");
- else if (f[1] & TR2_RES_FIRE) fprintf(fff,"¡Ü");
+ if (have_flag(flgs, TR_IM_FIRE)) fprintf(fff,"¡ö");
+ else if (have_flag(flgs, TR_RES_FIRE)) fprintf(fff,"¡Ü");
else fprintf(fff,"¡¦");
- if (f[1] & TR2_IM_COLD) fprintf(fff,"¡ö");
- else if (f[1] & TR2_RES_COLD) fprintf(fff,"¡Ü");
+ if (have_flag(flgs, TR_IM_COLD)) fprintf(fff,"¡ö");
+ else if (have_flag(flgs, TR_RES_COLD)) fprintf(fff,"¡Ü");
else fprintf(fff,"¡¦");
- if (f[1] & TR2_RES_POIS) fprintf(fff,"¡Ü");
+ if (have_flag(flgs, TR_RES_POIS)) fprintf(fff,"¡Ü");
else fprintf(fff,"¡¦");
- if (f[1] & TR2_RES_LITE) fprintf(fff,"¡Ü");
+ if (have_flag(flgs, TR_RES_LITE)) fprintf(fff,"¡Ü");
else fprintf(fff,"¡¦");
- if (f[1] & TR2_RES_DARK) fprintf(fff,"¡Ü");
+ if (have_flag(flgs, TR_RES_DARK)) fprintf(fff,"¡Ü");
else fprintf(fff,"¡¦");
- if (f[1] & TR2_RES_SHARDS) fprintf(fff,"¡Ü");
+ if (have_flag(flgs, TR_RES_SHARDS)) fprintf(fff,"¡Ü");
else fprintf(fff,"¡¦");
- if (f[1] & TR2_RES_SOUND) fprintf(fff,"¡Ü");
+ if (have_flag(flgs, TR_RES_SOUND)) fprintf(fff,"¡Ü");
else fprintf(fff,"¡¦");
- if (f[1] & TR2_RES_NETHER) fprintf(fff,"¡Ü");
+ if (have_flag(flgs, TR_RES_NETHER)) fprintf(fff,"¡Ü");
else fprintf(fff,"¡¦");
- if (f[1] & TR2_RES_NEXUS) fprintf(fff,"¡Ü");
+ if (have_flag(flgs, TR_RES_NEXUS)) fprintf(fff,"¡Ü");
else fprintf(fff,"¡¦");
- if (f[1] & TR2_RES_CHAOS) fprintf(fff,"¡Ü");
+ if (have_flag(flgs, TR_RES_CHAOS)) fprintf(fff,"¡Ü");
else fprintf(fff,"¡¦");
- if (f[1] & TR2_RES_DISEN) fprintf(fff,"¡Ü");
+ if (have_flag(flgs, TR_RES_DISEN)) fprintf(fff,"¡Ü");
else fprintf(fff,"¡¦");
fprintf(fff," ");
- if (f[1] & TR2_RES_BLIND) fprintf(fff,"¡Ü");
+ if (have_flag(flgs, TR_RES_BLIND)) fprintf(fff,"¡Ü");
else fprintf(fff,"¡¦");
- if (f[1] & TR2_RES_FEAR) fprintf(fff,"¡Ü");
+ if (have_flag(flgs, TR_RES_FEAR)) fprintf(fff,"¡Ü");
else fprintf(fff,"¡¦");
- if (f[1] & TR2_RES_CONF) fprintf(fff,"¡Ü");
+ if (have_flag(flgs, TR_RES_CONF)) fprintf(fff,"¡Ü");
else fprintf(fff,"¡¦");
- if (f[1] & TR2_FREE_ACT) fprintf(fff,"¡Ü");
+ if (have_flag(flgs, TR_FREE_ACT)) fprintf(fff,"¡Ü");
else fprintf(fff,"¡¦");
- if (f[2] & TR3_SEE_INVIS) fprintf(fff,"¡Ü");
+ if (have_flag(flgs, TR_SEE_INVIS)) fprintf(fff,"¡Ü");
else fprintf(fff,"¡¦");
- if (f[1] & TR2_HOLD_LIFE) fprintf(fff,"¡Ü");
+ if (have_flag(flgs, TR_HOLD_LIFE)) fprintf(fff,"¡Ü");
else fprintf(fff,"¡¦");
- if (f[2] & TR3_TELEPATHY) fprintf(fff,"¡Ü");
+ if (have_flag(flgs, TR_TELEPATHY)) fprintf(fff,"¡Ü");
else fprintf(fff,"¡¦");
- if (f[2] & TR3_SLOW_DIGEST) fprintf(fff,"¡Ü");
+ if (have_flag(flgs, TR_SLOW_DIGEST)) fprintf(fff,"¡Ü");
else fprintf(fff,"¡¦");
- if (f[2] & TR3_REGEN) fprintf(fff,"¡Ü");
+ if (have_flag(flgs, TR_REGEN)) fprintf(fff,"¡Ü");
else fprintf(fff,"¡¦");
- if (f[2] & TR3_FEATHER) fprintf(fff,"¡Ü");
+ if (have_flag(flgs, TR_FEATHER)) fprintf(fff,"¡Ü");
else fprintf(fff,"¡¦");
#else
- if (f[1] & TR2_IM_ACID) fprintf(fff,"* ");
- else if (f[1] & TR2_RES_ACID) fprintf(fff,"+ ");
+ if (have_flag(flgs, TR_IM_ACID)) fprintf(fff,"* ");
+ else if (have_flag(flgs, TR_RES_ACID)) fprintf(fff,"+ ");
else fprintf(fff,". ");
- if (f[1] & TR2_IM_ELEC) fprintf(fff,"* ");
- else if (f[1] & TR2_RES_ELEC) fprintf(fff,"+ ");
+ if (have_flag(flgs, TR_IM_ELEC)) fprintf(fff,"* ");
+ else if (have_flag(flgs, TR_RES_ELEC)) fprintf(fff,"+ ");
else fprintf(fff,". ");
- if (f[1] & TR2_IM_FIRE) fprintf(fff,"* ");
- else if (f[1] & TR2_RES_FIRE) fprintf(fff,"+ ");
+ if (have_flag(flgs, TR_IM_FIRE)) fprintf(fff,"* ");
+ else if (have_flag(flgs, TR_RES_FIRE)) fprintf(fff,"+ ");
else fprintf(fff,". ");
- if (f[1] & TR2_IM_COLD) fprintf(fff,"* ");
- else if (f[1] & TR2_RES_COLD) fprintf(fff,"+ ");
+ if (have_flag(flgs, TR_IM_COLD)) fprintf(fff,"* ");
+ else if (have_flag(flgs, TR_RES_COLD)) fprintf(fff,"+ ");
else fprintf(fff,". ");
- if (f[1] & TR2_RES_POIS) fprintf(fff,"+ ");
+ if (have_flag(flgs, TR_RES_POIS)) fprintf(fff,"+ ");
else fprintf(fff,". ");
- if (f[1] & TR2_RES_LITE) fprintf(fff,"+ ");
+ if (have_flag(flgs, TR_RES_LITE)) fprintf(fff,"+ ");
else fprintf(fff,". ");
- if (f[1] & TR2_RES_DARK) fprintf(fff,"+ ");
+ if (have_flag(flgs, TR_RES_DARK)) fprintf(fff,"+ ");
else fprintf(fff,". ");
- if (f[1] & TR2_RES_SHARDS) fprintf(fff,"+ ");
+ if (have_flag(flgs, TR_RES_SHARDS)) fprintf(fff,"+ ");
else fprintf(fff,". ");
- if (f[1] & TR2_RES_SOUND) fprintf(fff,"+ ");
+ if (have_flag(flgs, TR_RES_SOUND)) fprintf(fff,"+ ");
else fprintf(fff,". ");
- if (f[1] & TR2_RES_NETHER) fprintf(fff,"+ ");
+ if (have_flag(flgs, TR_RES_NETHER)) fprintf(fff,"+ ");
else fprintf(fff,". ");
- if (f[1] & TR2_RES_NEXUS) fprintf(fff,"+ ");
+ if (have_flag(flgs, TR_RES_NEXUS)) fprintf(fff,"+ ");
else fprintf(fff,". ");
- if (f[1] & TR2_RES_CHAOS) fprintf(fff,"+ ");
+ if (have_flag(flgs, TR_RES_CHAOS)) fprintf(fff,"+ ");
else fprintf(fff,". ");
- if (f[1] & TR2_RES_DISEN) fprintf(fff,"+ ");
+ if (have_flag(flgs, TR_RES_DISEN)) fprintf(fff,"+ ");
else fprintf(fff,". ");
fprintf(fff," ");
- if (f[1] & TR2_RES_BLIND) fprintf(fff,"+ ");
+ if (have_flag(flgs, TR_RES_BLIND)) fprintf(fff,"+ ");
else fprintf(fff,". ");
- if (f[1] & TR2_RES_FEAR) fprintf(fff,"+ ");
+ if (have_flag(flgs, TR_RES_FEAR)) fprintf(fff,"+ ");
else fprintf(fff,". ");
- if (f[1] & TR2_RES_CONF) fprintf(fff,"+ ");
+ if (have_flag(flgs, TR_RES_CONF)) fprintf(fff,"+ ");
else fprintf(fff,". ");
- if (f[1] & TR2_FREE_ACT) fprintf(fff,"+ ");
+ if (have_flag(flgs, TR_FREE_ACT)) fprintf(fff,"+ ");
else fprintf(fff,". ");
- if (f[2] & TR3_SEE_INVIS) fprintf(fff,"+ ");
+ if (have_flag(flgs, TR_SEE_INVIS)) fprintf(fff,"+ ");
else fprintf(fff,". ");
- if (f[1] & TR2_HOLD_LIFE) fprintf(fff,"+ ");
+ if (have_flag(flgs, TR_HOLD_LIFE)) fprintf(fff,"+ ");
else fprintf(fff,". ");
- if (f[2] & TR3_TELEPATHY) fprintf(fff,"+ ");
+ if (have_flag(flgs, TR_TELEPATHY)) fprintf(fff,"+ ");
else fprintf(fff,". ");
- if (f[2] & TR3_SLOW_DIGEST) fprintf(fff,"+ ");
+ if (have_flag(flgs, TR_SLOW_DIGEST)) fprintf(fff,"+ ");
else fprintf(fff,". ");
- if (f[2] & TR3_REGEN) fprintf(fff,"+ ");
+ if (have_flag(flgs, TR_REGEN)) fprintf(fff,"+ ");
else fprintf(fff,". ");
- if (f[2] & TR3_FEATHER) fprintf(fff,"+ ");
+ if (have_flag(flgs, TR_FEATHER)) fprintf(fff,"+ ");
else fprintf(fff,". ");
#endif
fprintf(fff,"\n");
*/
static bool item_tester_hook_activate(object_type *o_ptr)
{
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
/* Not known */
if (!object_known_p(o_ptr)) return (FALSE);
/* Extract the flags */
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
/* Check activation flag */
- if (f3 & (TR3_ACTIVATE)) return (TRUE);
+ if (have_flag(flgs, TR_ACTIVATE)) return (TRUE);
if ((o_ptr->tval > TV_CAPTURE) && o_ptr->xtra3)
{
#else
msg_print("Your scythe glows brightly!");
#endif
- o_ptr->art_flags1 = a_info[ART_BLOOD].flags1;
- o_ptr->art_flags2 = a_info[ART_BLOOD].flags2;
+ for (i = 0; i < TR_FLAG_SIZE; i++)
+ o_ptr->art_flags[i] = a_info[ART_BLOOD].flags[i];
+
dummy = randint1(2)+randint1(2);
for (i = 0; i < dummy; i++)
{
int flag = randint0(19);
- if (flag == 18) o_ptr->art_flags3 |= TR3_SLAY_HUMAN;
- else o_ptr->art_flags1 |= (TR1_CHAOTIC << flag);
+ if (flag == 18) add_flag(o_ptr->art_flags, TR_SLAY_HUMAN);
+ else add_flag(o_ptr->art_flags, TR_CHAOTIC + flag);
}
dummy = randint1(2);
for (i = 0; i < dummy; i++)
for (i = 0; i < dummy; i++)
{
int tmp = randint0(11);
- if (tmp < 6) o_ptr->art_flags1 |= (TR1_STR << tmp);
- else o_ptr->art_flags1 |= (TR1_STEALTH << (tmp - 6));
+ if (tmp < 6) add_flag(o_ptr->art_flags, TR_STR + tmp);
+ else add_flag(o_ptr->art_flags, TR_STEALTH + tmp - 6);
}
o_ptr->timeout = 3333;
if (p_ptr->prace == RACE_ANDROID) calc_android_exp();
*/
static bool item_tester_hook_use(object_type *o_ptr)
{
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
/* Ammo */
if (o_ptr->tval == p_ptr->tval_ammo)
if (&inventory[i] == o_ptr)
{
/* Extract the flags */
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
/* Check activation flag */
- if (f3 & TR3_ACTIVATE) return (TRUE);
+ if (have_flag(flgs, TR_ACTIVATE)) return (TRUE);
}
}
}
/* Savefile version for Hengband 1.1.1 and later */
#define H_VER_MAJOR 1
-#define H_VER_MINOR 1
-#define H_VER_PATCH 1
+#define H_VER_MINOR 3
+#define H_VER_PATCH 0
#define H_VER_EXTRA 0
/* Added for ZAngband */
#define FAKE_VERSION 0
#define FAKE_VER_MAJOR 11
-#define FAKE_VER_MINOR 1
-#define FAKE_VER_PATCH 1
+#define FAKE_VER_MINOR 3
+#define FAKE_VER_PATCH 0
#define ANGBAND_2_8_1
#define ZANGBAND
* powerful as actually granting resistance/immunity to the wearer.
*/
-#define TR1_STR 0x00000001L /* STR += "pval" */
-#define TR1_INT 0x00000002L /* INT += "pval" */
-#define TR1_WIS 0x00000004L /* WIS += "pval" */
-#define TR1_DEX 0x00000008L /* DEX += "pval" */
-#define TR1_CON 0x00000010L /* CON += "pval" */
-#define TR1_CHR 0x00000020L /* CHR += "pval" */
-#define TR1_MAGIC_MASTERY 0x00000040L /* Later */
-#define TR1_FORCE_WEAPON 0x00000080L /* Later */
-#define TR1_STEALTH 0x00000100L /* Stealth += "pval" */
-#define TR1_SEARCH 0x00000200L /* Search += "pval" */
-#define TR1_INFRA 0x00000400L /* Infra += "pval" */
-#define TR1_TUNNEL 0x00000800L /* Tunnel += "pval" */
-#define TR1_SPEED 0x00001000L /* Speed += "pval" */
-#define TR1_BLOWS 0x00002000L /* Blows += "pval" */
-#define TR1_CHAOTIC 0x00004000L
-#define TR1_VAMPIRIC 0x00008000L
-#define TR1_SLAY_ANIMAL 0x00010000L
-#define TR1_SLAY_EVIL 0x00020000L
-#define TR1_SLAY_UNDEAD 0x00040000L
-#define TR1_SLAY_DEMON 0x00080000L
-#define TR1_SLAY_ORC 0x00100000L
-#define TR1_SLAY_TROLL 0x00200000L
-#define TR1_SLAY_GIANT 0x00400000L
-#define TR1_SLAY_DRAGON 0x00800000L
-#define TR1_KILL_DRAGON 0x01000000L /* Execute Dragon */
-#define TR1_VORPAL 0x02000000L /* Later */
-#define TR1_IMPACT 0x04000000L /* Cause Earthquakes */
-#define TR1_BRAND_POIS 0x08000000L
-#define TR1_BRAND_ACID 0x10000000L
-#define TR1_BRAND_ELEC 0x20000000L
-#define TR1_BRAND_FIRE 0x40000000L
-#define TR1_BRAND_COLD 0x80000000L
-
-#define TR2_SUST_STR 0x00000001L
-#define TR2_SUST_INT 0x00000002L
-#define TR2_SUST_WIS 0x00000004L
-#define TR2_SUST_DEX 0x00000008L
-#define TR2_SUST_CON 0x00000010L
-#define TR2_SUST_CHR 0x00000020L
-#define TR2_RIDING 0x00000040L /* Later */
-#define TR2_XXX2 0x00000080L /* Later */
-#define TR2_IM_ACID 0x00000100L
-#define TR2_IM_ELEC 0x00000200L
-#define TR2_IM_FIRE 0x00000400L
-#define TR2_IM_COLD 0x00000800L
-#define TR2_THROW 0x00001000L /* Later */
-#define TR2_REFLECT 0x00002000L /* Reflect 'bolts' */
-#define TR2_FREE_ACT 0x00004000L /* Free Action */
-#define TR2_HOLD_LIFE 0x00008000L /* Hold Life */
-#define TR2_RES_ACID 0x00010000L
-#define TR2_RES_ELEC 0x00020000L
-#define TR2_RES_FIRE 0x00040000L
-#define TR2_RES_COLD 0x00080000L
-#define TR2_RES_POIS 0x00100000L
-#define TR2_RES_FEAR 0x00200000L /* Added for Zangband */
-#define TR2_RES_LITE 0x00400000L
-#define TR2_RES_DARK 0x00800000L
-#define TR2_RES_BLIND 0x01000000L
-#define TR2_RES_CONF 0x02000000L
-#define TR2_RES_SOUND 0x04000000L
-#define TR2_RES_SHARDS 0x08000000L
-#define TR2_RES_NETHER 0x10000000L
-#define TR2_RES_NEXUS 0x20000000L
-#define TR2_RES_CHAOS 0x40000000L
-#define TR2_RES_DISEN 0x80000000L
-
-
-#define TR3_SH_FIRE 0x00000001L /* Immolation (Fire) */
-#define TR3_SH_ELEC 0x00000002L /* Electric Sheath */
-#define TR3_SLAY_HUMAN 0x00000004L /* Slay human */
-#define TR3_SH_COLD 0x00000008L /* cold aura */
-#define TR3_NO_TELE 0x00000010L /* Anti-teleportation */
-#define TR3_NO_MAGIC 0x00000020L /* Anti-magic */
-#define TR3_DEC_MANA 0x00000040L /* ??? */
-#define TR3_TY_CURSE 0x00000080L /* The Ancient Curse */
-#define TR3_WARNING 0x00000100L /* Warning */
-#define TR3_HIDE_TYPE 0x00000200L /* Hide "pval" description */
-#define TR3_SHOW_MODS 0x00000400L /* Always show Tohit/Todam */
-#define TR3_XXX1 0x00000800L /* XXX1 */
-#define TR3_FEATHER 0x00001000L /* Feather Falling */
-#define TR3_LITE 0x00002000L /* Permanent Light */
-#define TR3_SEE_INVIS 0x00004000L /* See Invisible */
-#define TR3_TELEPATHY 0x00008000L /* Telepathy */
-#define TR3_SLOW_DIGEST 0x00010000L /* Item slows down digestion */
-#define TR3_REGEN 0x00020000L /* Item induces regeneration */
-#define TR3_XTRA_MIGHT 0x00040000L /* Bows get extra multiplier */
-#define TR3_XTRA_SHOTS 0x00080000L /* Bows get extra shots */
-#define TR3_IGNORE_ACID 0x00100000L /* Item ignores Acid Damage */
-#define TR3_IGNORE_ELEC 0x00200000L /* Item ignores Elec Damage */
-#define TR3_IGNORE_FIRE 0x00400000L /* Item ignores Fire Damage */
-#define TR3_IGNORE_COLD 0x00800000L /* Item ignores Cold Damage */
-#define TR3_ACTIVATE 0x01000000L /* Item can be activated */
-#define TR3_DRAIN_EXP 0x02000000L /* Item drains Experience */
-#define TR3_TELEPORT 0x04000000L /* Item teleports player */
-#define TR3_AGGRAVATE 0x08000000L /* Item aggravates monsters */
-#define TR3_BLESSED 0x10000000L /* Item is Blessed */
+#define have_flag(ARRAY, INDEX) !!((ARRAY)[(INDEX)/32] & (1L << ((INDEX)%32)))
+#define add_flag(ARRAY, INDEX) ((ARRAY)[(INDEX)/32] |= (1L << ((INDEX)%32)))
+#define remove_flag(ARRAY, INDEX) ((ARRAY)[(INDEX)/32] &= ~(1L << ((INDEX)%32)))
+#define is_pval_flag(INDEX) ((TR_STR <= (INDEX) && (INDEX) <= TR_MAGIC_MASTERY) || (TR_STEALTH <= (INDEX) && (INDEX) <= TR_BLOWS))
+#define have_pval_flags(ARRAY) !!((ARRAY)[0] & (0x00003f7f))
+
+
+#define TR_STR 0 /* STR += "pval" */
+#define TR_INT 1 /* INT += "pval" */
+#define TR_WIS 2 /* WIS += "pval" */
+#define TR_DEX 3 /* DEX += "pval" */
+#define TR_CON 4 /* CON += "pval" */
+#define TR_CHR 5 /* CHR += "pval" */
+#define TR_MAGIC_MASTERY 6 /* Later */
+#define TR_FORCE_WEAPON 7 /* Later */
+#define TR_STEALTH 8 /* Stealth += "pval" */
+#define TR_SEARCH 9 /* Search += "pval" */
+#define TR_INFRA 10 /* Infra += "pval" */
+#define TR_TUNNEL 11 /* Tunnel += "pval" */
+#define TR_SPEED 12 /* Speed += "pval" */
+#define TR_BLOWS 13 /* Blows += "pval" */
+#define TR_CHAOTIC 14
+#define TR_VAMPIRIC 15
+#define TR_SLAY_ANIMAL 16
+#define TR_SLAY_EVIL 17
+#define TR_SLAY_UNDEAD 18
+#define TR_SLAY_DEMON 19
+#define TR_SLAY_ORC 20
+#define TR_SLAY_TROLL 21
+#define TR_SLAY_GIANT 22
+#define TR_SLAY_DRAGON 23
+#define TR_KILL_DRAGON 24 /* Execute Dragon */
+#define TR_VORPAL 25 /* Later */
+#define TR_IMPACT 26 /* Cause Earthquakes */
+#define TR_BRAND_POIS 27
+#define TR_BRAND_ACID 28
+#define TR_BRAND_ELEC 29
+#define TR_BRAND_FIRE 30
+#define TR_BRAND_COLD 31
+
+#define TR_SUST_STR 32
+#define TR_SUST_INT 33
+#define TR_SUST_WIS 34
+#define TR_SUST_DEX 35
+#define TR_SUST_CON 36
+#define TR_SUST_CHR 37
+#define TR_RIDING 38
+#define TR_XXX2 39 /* Later */
+#define TR_IM_ACID 40
+#define TR_IM_ELEC 41
+#define TR_IM_FIRE 42
+#define TR_IM_COLD 43
+#define TR_THROW 44 /* Later */
+#define TR_REFLECT 45 /* Reflect 'bolts' */
+#define TR_FREE_ACT 46 /* Free Action */
+#define TR_HOLD_LIFE 47 /* Hold Life */
+#define TR_RES_ACID 48
+#define TR_RES_ELEC 49
+#define TR_RES_FIRE 50
+#define TR_RES_COLD 51
+#define TR_RES_POIS 52
+#define TR_RES_FEAR 53 /* Added for Zangband */
+#define TR_RES_LITE 54
+#define TR_RES_DARK 55
+#define TR_RES_BLIND 56
+#define TR_RES_CONF 57
+#define TR_RES_SOUND 58
+#define TR_RES_SHARDS 59
+#define TR_RES_NETHER 60
+#define TR_RES_NEXUS 61
+#define TR_RES_CHAOS 62
+#define TR_RES_DISEN 63
+
+#define TR_SH_FIRE 64 /* Immolation (Fire) */
+#define TR_SH_ELEC 65 /* Electric Sheath */
+#define TR_SLAY_HUMAN 66 /* Slay human */
+#define TR_SH_COLD 67 /* cold aura */
+#define TR_NO_TELE 68 /* Anti-teleportation */
+#define TR_NO_MAGIC 69 /* Anti-magic */
+#define TR_DEC_MANA 70 /* ??? */
+#define TR_TY_CURSE 71 /* The Ancient Curse */
+#define TR_WARNING 72 /* Warning */
+#define TR_HIDE_TYPE 73 /* Hide "pval" description */
+#define TR_SHOW_MODS 74 /* Always show Tohit/Todam */
+#define TR_XXX1 75 /* XXX1 */
+#define TR_FEATHER 76 /* Feather Falling */
+#define TR_LITE 77 /* Permanent Light */
+#define TR_SEE_INVIS 78 /* See Invisible */
+#define TR_TELEPATHY 79 /* Telepathy */
+#define TR_SLOW_DIGEST 80 /* Item slows down digestion */
+#define TR_REGEN 81 /* Item induces regeneration */
+#define TR_XTRA_MIGHT 82 /* Bows get extra multiplier */
+#define TR_XTRA_SHOTS 83 /* Bows get extra shots */
+#define TR_IGNORE_ACID 84 /* Item ignores Acid Damage */
+#define TR_IGNORE_ELEC 85 /* Item ignores Elec Damage */
+#define TR_IGNORE_FIRE 86 /* Item ignores Fire Damage */
+#define TR_IGNORE_COLD 87 /* Item ignores Cold Damage */
+#define TR_ACTIVATE 88 /* Item can be activated */
+#define TR_DRAIN_EXP 89 /* Item drains Experience */
+#define TR_TELEPORT 90 /* Item teleports player */
+#define TR_AGGRAVATE 91 /* Item aggravates monsters */
+#define TR_BLESSED 92 /* Item is Blessed */
+#define TR_XXX3 93
+#define TR_XXX4 94
+#define TR_XXX5 95
+
+#define TR_KILL_ANIMAL 96
+#define TR_KILL_EVIL 97
+#define TR_KILL_UNDEAD 98
+#define TR_KILL_DEMON 99
+#define TR_KILL_ORC 100
+#define TR_KILL_TROLL 101
+#define TR_KILL_GIANT 102
+#define TR_KILL_HUMAN 103
+#define TR_ESP_ANIMAL 104
+#define TR_ESP_UNDEAD 105
+#define TR_ESP_DEMON 106
+#define TR_ESP_ORC 107
+#define TR_ESP_TROLL 108
+#define TR_ESP_GIANT 109
+#define TR_ESP_DRAGON 110
+#define TR_ESP_HUMAN 111
+#define TR_ESP_EVIL 112
+#define TR_ESP_GOOD 113
+#define TR_ESP_NONLIVING 114
+#define TR_ESP_UNIQUE 115
+#define TR_FULL_NAME 116
+
+#define TR_FLAG_MAX 117
+#define TR_FLAG_SIZE 4
#define TRG_INSTA_ART 0x00000001L /* Item must be an artifact */
#define TRG_RANDOM_CURSE2 0x00008000L /* Item is Random Cursed */
-/*
- * Hack -- flag set 1 -- mask for "pval-dependant" flags.
- * Note that all "pval" dependant flags must be in "flags1".
- */
-#define TR1_PVAL_MASK \
- (TR1_STR | TR1_INT | TR1_WIS | TR1_DEX | \
- TR1_CON | TR1_CHR | \
- TR1_MAGIC_MASTERY | TR1_STEALTH | TR1_SEARCH | TR1_INFRA | \
- TR1_TUNNEL | TR1_SPEED | TR1_BLOWS)
-
-
#define MAX_CURSE 17
#define TRC_CURSED 0x00000001L
extern s16b m_bonus(int max, int level);
extern void reset_visuals(void);
-extern void object_flags(object_type *o_ptr, u32b *f1, u32b *f2, u32b *f3);
-extern void object_flags_known(object_type *o_ptr, u32b *f1, u32b *f2, u32b *f3);
+extern void object_flags(object_type *o_ptr, u32b flgs[TR_FLAG_SIZE]);
+extern void object_flags_known(object_type *o_ptr, u32b flgs[TR_FLAG_SIZE]);
extern void object_desc_store(char *buf, object_type *o_ptr, int pref, int mode);
extern cptr item_activation(object_type *o_ptr);
extern bool identify_fully_aux(object_type *o_ptr);
int xdis, xdev, xsav, xstl;
cptr desc;
int muta_att = 0;
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
int shots, shot_frac;
object_type *o_ptr;
o_ptr = &inventory[INVEN_RARM+i];
if (object_known_p(o_ptr)) damage[i] += o_ptr->to_d*100;
basedam = (o_ptr->dd * (o_ptr->ds + 1))*50;
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
if ((o_ptr->ident & IDENT_MENTAL) && ((o_ptr->name1 == ART_VORPAL_BLADE) || (o_ptr->name1 == ART_CHAINSWORD)))
{
/* vorpal blade */
basedam *= 5;
basedam /= 3;
}
- else if (object_known_p(o_ptr) && (f1 & TR1_VORPAL))
+ else if (object_known_p(o_ptr) && (have_flag(flgs, TR_VORPAL)))
{
/* vorpal flag only */
basedam *= 11;
basedam /= 9;
}
- if (object_known_p(o_ptr) && (p_ptr->pclass != CLASS_SAMURAI) && (f1 & TR1_FORCE_WEAPON) && (p_ptr->csp > (o_ptr->dd * o_ptr->ds / 5)))
+ if (object_known_p(o_ptr) && (p_ptr->pclass != CLASS_SAMURAI) && (have_flag(flgs, TR_FORCE_WEAPON)) && (p_ptr->csp > (o_ptr->dd * o_ptr->ds / 5)))
basedam = basedam * 7 / 2;
if (p_ptr->riding && (o_ptr->tval == TV_POLEARM) && ((o_ptr->sval == SV_LANCE) || (o_ptr->sval == SV_HEAVY_LANCE)))
basedam = basedam*(o_ptr->dd+2)/o_ptr->dd;
/*
* Obtain the "flags" for the player as if he was an item
*/
-static void player_flags(u32b *f1, u32b *f2, u32b *f3)
+static void player_flags(u32b flgs[TR_FLAG_SIZE])
{
+ int i;
+
/* Clear */
- (*f1) = (*f2) = (*f3) = 0L;
+ for (i = 0; i < TR_FLAG_SIZE; i++)
+ flgs[i] = 0L;
/* Classes */
switch (p_ptr->pclass)
{
case CLASS_WARRIOR:
if (p_ptr->lev > 44)
- (*f3) |= (TR3_REGEN);
+ add_flag(flgs, TR_REGEN);
case CLASS_SAMURAI:
if (p_ptr->lev > 29)
- (*f2) |= (TR2_RES_FEAR);
+ add_flag(flgs, TR_RES_FEAR);
break;
case CLASS_PALADIN:
if (p_ptr->lev > 39)
- (*f2) |= (TR2_RES_FEAR);
+ add_flag(flgs, TR_RES_FEAR);
break;
case CLASS_CHAOS_WARRIOR:
if (p_ptr->lev > 29)
- (*f2) |= (TR2_RES_CHAOS);
+ add_flag(flgs, TR_RES_CHAOS);
if (p_ptr->lev > 39)
- (*f2) |= (TR2_RES_FEAR);
+ add_flag(flgs, TR_RES_FEAR);
break;
case CLASS_MONK:
case CLASS_FORCETRAINER:
if ((p_ptr->lev > 9) && !heavy_armor())
- (*f1) |= TR1_SPEED;
+ add_flag(flgs, TR_SPEED);
if ((p_ptr->lev>24) && !heavy_armor())
- (*f2) |= (TR2_FREE_ACT);
+ add_flag(flgs, TR_FREE_ACT);
break;
case CLASS_NINJA:
if (heavy_armor())
- (*f1) |= TR1_SPEED;
+ add_flag(flgs, TR_SPEED);
else
{
if (!inventory[INVEN_LARM].tval || p_ptr->hidarite)
- (*f1) |= TR1_SPEED;
+ add_flag(flgs, TR_SPEED);
if (p_ptr->lev>24)
- (*f2) |= (TR2_FREE_ACT);
+ add_flag(flgs, TR_FREE_ACT);
}
- (*f3) |= TR3_SLOW_DIGEST;
- (*f2) |= TR2_RES_FEAR;
- if (p_ptr->lev > 19) (*f2) |= TR2_RES_POIS;
- if (p_ptr->lev > 24) (*f2) |= TR2_SUST_DEX;
- if (p_ptr->lev > 29) (*f3) |= TR3_SEE_INVIS;
+ add_flag(flgs, TR_SLOW_DIGEST);
+ add_flag(flgs, TR_RES_FEAR);
+ if (p_ptr->lev > 19) add_flag(flgs, TR_RES_POIS);
+ if (p_ptr->lev > 24) add_flag(flgs, TR_SUST_DEX);
+ if (p_ptr->lev > 29) add_flag(flgs, TR_SEE_INVIS);
break;
case CLASS_MINDCRAFTER:
if (p_ptr->lev > 9)
- (*f2) |= (TR2_RES_FEAR);
+ add_flag(flgs, TR_RES_FEAR);
if (p_ptr->lev > 19)
- (*f2) |= (TR2_SUST_WIS);
+ add_flag(flgs, TR_SUST_WIS);
if (p_ptr->lev > 29)
- (*f2) |= (TR2_RES_CONF);
+ add_flag(flgs, TR_RES_CONF);
if (p_ptr->lev > 39)
- (*f3) |= (TR3_TELEPATHY);
+ add_flag(flgs, TR_TELEPATHY);
break;
case CLASS_BARD:
- (*f2) |= (TR2_RES_SOUND);
+ add_flag(flgs, TR_RES_SOUND);
break;
case CLASS_BERSERKER:
- (*f2) |= (TR2_SUST_STR);
- (*f2) |= (TR2_SUST_DEX);
- (*f2) |= (TR2_SUST_CON);
- (*f3) |= (TR3_REGEN);
- (*f2) |= (TR2_FREE_ACT);
- (*f1) |= (TR1_SPEED);
- if (p_ptr->lev > 39) (*f2) |= (TR2_REFLECT);
+ add_flag(flgs, TR_SUST_STR);
+ add_flag(flgs, TR_SUST_DEX);
+ add_flag(flgs, TR_SUST_CON);
+ add_flag(flgs, TR_REGEN);
+ add_flag(flgs, TR_FREE_ACT);
+ add_flag(flgs, TR_SPEED);
+ if (p_ptr->lev > 39) add_flag(flgs, TR_REFLECT);
break;
case CLASS_MIRROR_MASTER:
- if(p_ptr->lev > 39)(*f2) |= (TR2_REFLECT);
+ if(p_ptr->lev > 39)add_flag(flgs, TR_REFLECT);
break;
default:
break; /* Do nothing */
switch(p_ptr->mimic_form)
{
case MIMIC_DEMON:
- (*f2) |= (TR2_HOLD_LIFE);
- (*f2) |= (TR2_RES_CHAOS);
- (*f2) |= (TR2_RES_NETHER);
- (*f2) |= (TR2_RES_FIRE);
- (*f3) |= (TR3_SEE_INVIS);
- (*f1) |= (TR1_SPEED);
+ add_flag(flgs, TR_HOLD_LIFE);
+ add_flag(flgs, TR_RES_CHAOS);
+ add_flag(flgs, TR_RES_NETHER);
+ add_flag(flgs, TR_RES_FIRE);
+ add_flag(flgs, TR_SEE_INVIS);
+ add_flag(flgs, TR_SPEED);
break;
case MIMIC_DEMON_LORD:
- (*f2) |= (TR2_HOLD_LIFE);
- (*f2) |= (TR2_RES_CHAOS);
- (*f2) |= (TR2_RES_NETHER);
- (*f2) |= (TR2_RES_FIRE);
- (*f2) |= (TR2_RES_COLD);
- (*f2) |= (TR2_RES_ELEC);
- (*f2) |= (TR2_RES_ACID);
- (*f2) |= (TR2_RES_POIS);
- (*f2) |= (TR2_RES_CONF);
- (*f2) |= (TR2_RES_DISEN);
- (*f2) |= (TR2_RES_NEXUS);
- (*f2) |= (TR2_RES_FEAR);
- (*f2) |= (TR2_IM_FIRE);
- (*f3) |= (TR3_SH_FIRE);
- (*f3) |= (TR3_SEE_INVIS);
- (*f3) |= (TR3_TELEPATHY);
- (*f3) |= (TR3_FEATHER);
- (*f1) |= (TR1_SPEED);
+ add_flag(flgs, TR_HOLD_LIFE);
+ add_flag(flgs, TR_RES_CHAOS);
+ add_flag(flgs, TR_RES_NETHER);
+ add_flag(flgs, TR_RES_FIRE);
+ add_flag(flgs, TR_RES_COLD);
+ add_flag(flgs, TR_RES_ELEC);
+ add_flag(flgs, TR_RES_ACID);
+ add_flag(flgs, TR_RES_POIS);
+ add_flag(flgs, TR_RES_CONF);
+ add_flag(flgs, TR_RES_DISEN);
+ add_flag(flgs, TR_RES_NEXUS);
+ add_flag(flgs, TR_RES_FEAR);
+ add_flag(flgs, TR_IM_FIRE);
+ add_flag(flgs, TR_SH_FIRE);
+ add_flag(flgs, TR_SEE_INVIS);
+ add_flag(flgs, TR_TELEPATHY);
+ add_flag(flgs, TR_FEATHER);
+ add_flag(flgs, TR_SPEED);
break;
case MIMIC_VAMPIRE:
- (*f2) |= (TR2_HOLD_LIFE);
- (*f2) |= (TR2_RES_DARK);
- (*f2) |= (TR2_RES_NETHER);
- if (p_ptr->pclass != CLASS_NINJA) (*f3) |= (TR3_LITE);
- (*f2) |= (TR2_RES_POIS);
- (*f2) |= (TR2_RES_COLD);
- (*f3) |= (TR3_SEE_INVIS);
- (*f1) |= (TR1_SPEED);
+ add_flag(flgs, TR_HOLD_LIFE);
+ add_flag(flgs, TR_RES_DARK);
+ add_flag(flgs, TR_RES_NETHER);
+ if (p_ptr->pclass != CLASS_NINJA) add_flag(flgs, TR_LITE);
+ add_flag(flgs, TR_RES_POIS);
+ add_flag(flgs, TR_RES_COLD);
+ add_flag(flgs, TR_SEE_INVIS);
+ add_flag(flgs, TR_SPEED);
break;
}
}
switch (p_ptr->prace)
{
case RACE_ELF:
- (*f2) |= (TR2_RES_LITE);
+ add_flag(flgs, TR_RES_LITE);
break;
case RACE_HOBBIT:
- (*f2) |= (TR2_SUST_DEX);
+ add_flag(flgs, TR_SUST_DEX);
break;
case RACE_GNOME:
- (*f2) |= (TR2_FREE_ACT);
+ add_flag(flgs, TR_FREE_ACT);
break;
case RACE_DWARF:
- (*f2) |= (TR2_RES_BLIND);
+ add_flag(flgs, TR_RES_BLIND);
break;
case RACE_HALF_ORC:
- (*f2) |= (TR2_RES_DARK);
+ add_flag(flgs, TR_RES_DARK);
break;
case RACE_HALF_TROLL:
- (*f2) |= (TR2_SUST_STR);
+ add_flag(flgs, TR_SUST_STR);
if (p_ptr->lev > 14)
{
- (*f3) |= (TR3_REGEN);
+ add_flag(flgs, TR_REGEN);
if (p_ptr->pclass == CLASS_WARRIOR)
{
- (*f3) |= (TR3_SLOW_DIGEST);
+ add_flag(flgs, TR_SLOW_DIGEST);
/*
* Let's not make Regeneration a disadvantage
* for the poor warriors who can never learn
}
break;
case RACE_AMBERITE:
- (*f2) |= (TR2_SUST_CON);
- (*f3) |= (TR3_REGEN); /* Amberites heal fast */
+ add_flag(flgs, TR_SUST_CON);
+ add_flag(flgs, TR_REGEN); /* Amberites heal fast */
break;
case RACE_HIGH_ELF:
- (*f2) |= (TR2_RES_LITE);
- (*f3) |= (TR3_SEE_INVIS);
+ add_flag(flgs, TR_RES_LITE);
+ add_flag(flgs, TR_SEE_INVIS);
break;
case RACE_BARBARIAN:
- (*f2) |= (TR2_RES_FEAR);
+ add_flag(flgs, TR_RES_FEAR);
break;
case RACE_HALF_OGRE:
- (*f2) |= (TR2_SUST_STR);
- (*f2) |= (TR2_RES_DARK);
+ add_flag(flgs, TR_SUST_STR);
+ add_flag(flgs, TR_RES_DARK);
break;
case RACE_HALF_GIANT:
- (*f2) |= (TR2_RES_SHARDS);
- (*f2) |= (TR2_SUST_STR);
+ add_flag(flgs, TR_RES_SHARDS);
+ add_flag(flgs, TR_SUST_STR);
break;
case RACE_HALF_TITAN:
- (*f2) |= (TR2_RES_CHAOS);
+ add_flag(flgs, TR_RES_CHAOS);
break;
case RACE_CYCLOPS:
- (*f2) |= (TR2_RES_SOUND);
+ add_flag(flgs, TR_RES_SOUND);
break;
case RACE_YEEK:
- (*f2) |= (TR2_RES_ACID);
+ add_flag(flgs, TR_RES_ACID);
if (p_ptr->lev > 19)
- (*f2) |= (TR2_IM_ACID);
+ add_flag(flgs, TR_IM_ACID);
break;
case RACE_KLACKON:
- (*f2) |= (TR2_RES_CONF);
- (*f2) |= (TR2_RES_ACID);
+ add_flag(flgs, TR_RES_CONF);
+ add_flag(flgs, TR_RES_ACID);
if (p_ptr->lev > 9)
- (*f1) |= TR1_SPEED;
+ add_flag(flgs, TR_SPEED);
break;
case RACE_KOBOLD:
- (*f2) |= (TR2_RES_POIS);
+ add_flag(flgs, TR_RES_POIS);
break;
case RACE_NIBELUNG:
- (*f2) |= (TR2_RES_DISEN);
- (*f2) |= (TR2_RES_DARK);
+ add_flag(flgs, TR_RES_DISEN);
+ add_flag(flgs, TR_RES_DARK);
break;
case RACE_DARK_ELF:
- (*f2) |= (TR2_RES_DARK);
+ add_flag(flgs, TR_RES_DARK);
if (p_ptr->lev > 19)
- (*f3) |= (TR3_SEE_INVIS);
+ add_flag(flgs, TR_SEE_INVIS);
break;
case RACE_DRACONIAN:
- (*f3) |= TR3_FEATHER;
+ add_flag(flgs, TR_FEATHER);
if (p_ptr->lev > 4)
- (*f2) |= (TR2_RES_FIRE);
+ add_flag(flgs, TR_RES_FIRE);
if (p_ptr->lev > 9)
- (*f2) |= (TR2_RES_COLD);
+ add_flag(flgs, TR_RES_COLD);
if (p_ptr->lev > 14)
- (*f2) |= (TR2_RES_ACID);
+ add_flag(flgs, TR_RES_ACID);
if (p_ptr->lev > 19)
- (*f2) |= (TR2_RES_ELEC);
+ add_flag(flgs, TR_RES_ELEC);
if (p_ptr->lev > 34)
- (*f2) |= (TR2_RES_POIS);
+ add_flag(flgs, TR_RES_POIS);
break;
case RACE_MIND_FLAYER:
- (*f2) |= (TR2_SUST_INT);
- (*f2) |= (TR2_SUST_WIS);
+ add_flag(flgs, TR_SUST_INT);
+ add_flag(flgs, TR_SUST_WIS);
if (p_ptr->lev > 14)
- (*f3) |= (TR3_SEE_INVIS);
+ add_flag(flgs, TR_SEE_INVIS);
if (p_ptr->lev > 29)
- (*f3) |= (TR3_TELEPATHY);
+ add_flag(flgs, TR_TELEPATHY);
break;
case RACE_IMP:
- (*f2) |= (TR2_RES_FIRE);
+ add_flag(flgs, TR_RES_FIRE);
if (p_ptr->lev > 9)
- (*f3) |= (TR3_SEE_INVIS);
+ add_flag(flgs, TR_SEE_INVIS);
break;
case RACE_GOLEM:
- (*f3) |= (TR3_SEE_INVIS);
- (*f2) |= (TR2_FREE_ACT);
- (*f2) |= (TR2_RES_POIS);
- (*f3) |= (TR3_SLOW_DIGEST);
+ add_flag(flgs, TR_SEE_INVIS);
+ add_flag(flgs, TR_FREE_ACT);
+ add_flag(flgs, TR_RES_POIS);
+ add_flag(flgs, TR_SLOW_DIGEST);
if (p_ptr->lev > 34)
- (*f2) |= (TR2_HOLD_LIFE);
+ add_flag(flgs, TR_HOLD_LIFE);
break;
case RACE_SKELETON:
- (*f3) |= (TR3_SEE_INVIS);
- (*f2) |= (TR2_RES_SHARDS);
- (*f2) |= (TR2_HOLD_LIFE);
- (*f2) |= (TR2_RES_POIS);
+ add_flag(flgs, TR_SEE_INVIS);
+ add_flag(flgs, TR_RES_SHARDS);
+ add_flag(flgs, TR_HOLD_LIFE);
+ add_flag(flgs, TR_RES_POIS);
if (p_ptr->lev > 9)
- (*f2) |= (TR2_RES_COLD);
+ add_flag(flgs, TR_RES_COLD);
break;
case RACE_ZOMBIE:
- (*f3) |= (TR3_SEE_INVIS);
- (*f2) |= (TR2_HOLD_LIFE);
- (*f2) |= (TR2_RES_NETHER);
- (*f2) |= (TR2_RES_POIS);
- (*f3) |= (TR3_SLOW_DIGEST);
+ add_flag(flgs, TR_SEE_INVIS);
+ add_flag(flgs, TR_HOLD_LIFE);
+ add_flag(flgs, TR_RES_NETHER);
+ add_flag(flgs, TR_RES_POIS);
+ add_flag(flgs, TR_SLOW_DIGEST);
if (p_ptr->lev > 4)
- (*f2) |= (TR2_RES_COLD);
+ add_flag(flgs, TR_RES_COLD);
break;
case RACE_VAMPIRE:
- (*f2) |= (TR2_HOLD_LIFE);
- (*f2) |= (TR2_RES_DARK);
- (*f2) |= (TR2_RES_NETHER);
- if (p_ptr->pclass != CLASS_NINJA) (*f3) |= (TR3_LITE);
- (*f2) |= (TR2_RES_POIS);
- (*f2) |= (TR2_RES_COLD);
+ add_flag(flgs, TR_HOLD_LIFE);
+ add_flag(flgs, TR_RES_DARK);
+ add_flag(flgs, TR_RES_NETHER);
+ if (p_ptr->pclass != CLASS_NINJA) add_flag(flgs, TR_LITE);
+ add_flag(flgs, TR_RES_POIS);
+ add_flag(flgs, TR_RES_COLD);
break;
case RACE_SPECTRE:
- (*f3) |= (TR3_FEATHER);
- (*f2) |= (TR2_FREE_ACT);
- (*f2) |= (TR2_RES_COLD);
- (*f3) |= (TR3_SEE_INVIS);
- (*f2) |= (TR2_HOLD_LIFE);
- (*f2) |= (TR2_RES_NETHER);
- (*f2) |= (TR2_RES_POIS);
- (*f3) |= (TR3_SLOW_DIGEST);
+ add_flag(flgs, TR_FEATHER);
+ add_flag(flgs, TR_FREE_ACT);
+ add_flag(flgs, TR_RES_COLD);
+ add_flag(flgs, TR_SEE_INVIS);
+ add_flag(flgs, TR_HOLD_LIFE);
+ add_flag(flgs, TR_RES_NETHER);
+ add_flag(flgs, TR_RES_POIS);
+ add_flag(flgs, TR_SLOW_DIGEST);
/* XXX pass_wall */
if (p_ptr->lev > 34)
- (*f3) |= TR3_TELEPATHY;
+ add_flag(flgs, TR_TELEPATHY);
break;
case RACE_SPRITE:
- (*f2) |= (TR2_RES_LITE);
- (*f3) |= (TR3_FEATHER);
+ add_flag(flgs, TR_RES_LITE);
+ add_flag(flgs, TR_FEATHER);
if (p_ptr->lev > 9)
- (*f1) |= (TR1_SPEED);
+ add_flag(flgs, TR_SPEED);
break;
case RACE_BEASTMAN:
- (*f2) |= (TR2_RES_SOUND);
- (*f2) |= (TR2_RES_CONF);
+ add_flag(flgs, TR_RES_SOUND);
+ add_flag(flgs, TR_RES_CONF);
break;
case RACE_ANGEL:
- (*f3) |= (TR3_FEATHER);
- (*f3) |= (TR3_SEE_INVIS);
+ add_flag(flgs, TR_FEATHER);
+ add_flag(flgs, TR_SEE_INVIS);
break;
case RACE_DEMON:
- (*f2) |= (TR2_RES_FIRE);
- (*f2) |= (TR2_RES_NETHER);
- (*f2) |= (TR2_HOLD_LIFE);
+ add_flag(flgs, TR_RES_FIRE);
+ add_flag(flgs, TR_RES_NETHER);
+ add_flag(flgs, TR_HOLD_LIFE);
if (p_ptr->lev > 9)
- (*f3) |= (TR3_SEE_INVIS);
+ add_flag(flgs, TR_SEE_INVIS);
break;
case RACE_DUNADAN:
- (*f2) |= (TR2_SUST_CON);
+ add_flag(flgs, TR_SUST_CON);
break;
case RACE_S_FAIRY:
- (*f3) |= (TR3_FEATHER);
+ add_flag(flgs, TR_FEATHER);
break;
case RACE_KUTA:
- (*f2) |= (TR2_RES_CONF);
+ add_flag(flgs, TR_RES_CONF);
break;
case RACE_ANDROID:
- (*f2) |= (TR2_FREE_ACT);
- (*f2) |= (TR2_RES_POIS);
- (*f3) |= (TR3_SLOW_DIGEST);
- (*f2) |= (TR2_HOLD_LIFE);
+ add_flag(flgs, TR_FREE_ACT);
+ add_flag(flgs, TR_RES_POIS);
+ add_flag(flgs, TR_SLOW_DIGEST);
+ add_flag(flgs, TR_HOLD_LIFE);
break;
default:
; /* Do nothing */
{
if (p_ptr->muta3 & MUT3_FLESH_ROT)
{
- (*f3) &= ~(TR3_REGEN);
+ remove_flag(flgs, TR_REGEN);
}
if ((p_ptr->muta3 & MUT3_XTRA_FAT) ||
(p_ptr->muta3 & MUT3_XTRA_LEGS) ||
(p_ptr->muta3 & MUT3_SHORT_LEG))
{
- (*f1) |= TR1_SPEED;
+ add_flag(flgs, TR_SPEED);
}
if (p_ptr->muta3 & MUT3_ELEC_TOUC)
{
- (*f3) |= TR3_SH_ELEC;
+ add_flag(flgs, TR_SH_ELEC);
}
if (p_ptr->muta3 & MUT3_FIRE_BODY)
{
- (*f3) |= TR3_SH_FIRE;
- (*f3) |= TR3_LITE;
+ add_flag(flgs, TR_SH_FIRE);
+ add_flag(flgs, TR_LITE);
}
if (p_ptr->muta3 & MUT3_WINGS)
{
- (*f3) |= TR3_FEATHER;
+ add_flag(flgs, TR_FEATHER);
}
if (p_ptr->muta3 & MUT3_FEARLESS)
{
- (*f2) |= (TR2_RES_FEAR);
+ add_flag(flgs, TR_RES_FEAR);
}
if (p_ptr->muta3 & MUT3_REGEN)
{
- (*f3) |= TR3_REGEN;
+ add_flag(flgs, TR_REGEN);
}
if (p_ptr->muta3 & MUT3_ESP)
{
- (*f3) |= TR3_TELEPATHY;
+ add_flag(flgs, TR_TELEPATHY);
}
if (p_ptr->muta3 & MUT3_MOTION)
{
- (*f2) |= TR2_FREE_ACT;
+ add_flag(flgs, TR_FREE_ACT);
}
}
if (p_ptr->pseikaku == SEIKAKU_SEXY)
- (*f3) |= TR3_AGGRAVATE;
+ add_flag(flgs, TR_AGGRAVATE);
if (p_ptr->pseikaku == SEIKAKU_MUNCHKIN)
{
- (*f2) |= (TR2_RES_BLIND);
- (*f2) |= (TR2_RES_CONF);
- (*f2) |= (TR2_HOLD_LIFE);
- (*f3) |= (TR3_LITE);
+ add_flag(flgs, TR_RES_BLIND);
+ add_flag(flgs, TR_RES_CONF);
+ add_flag(flgs, TR_HOLD_LIFE);
+ add_flag(flgs, TR_LITE);
if (p_ptr->lev > 9)
- (*f1) |= (TR1_SPEED);
+ add_flag(flgs, TR_SPEED);
}
if (p_ptr->special_defense & KATA_FUUJIN)
- (*f2) |= TR2_REFLECT;
+ add_flag(flgs, TR_REFLECT);
if (p_ptr->special_defense & KAMAE_GENBU)
- (*f2) |= TR2_REFLECT;
+ add_flag(flgs, TR_REFLECT);
if (p_ptr->special_defense & KAMAE_SUZAKU)
- (*f3) |= TR3_FEATHER;
+ add_flag(flgs, TR_FEATHER);
if (p_ptr->special_defense & KAMAE_SEIRYU)
{
- (*f2) |= (TR2_RES_FIRE);
- (*f2) |= (TR2_RES_COLD);
- (*f2) |= (TR2_RES_ACID);
- (*f2) |= (TR2_RES_ELEC);
- (*f2) |= (TR2_RES_POIS);
- (*f3) |= (TR3_FEATHER);
- (*f3) |= (TR3_SH_FIRE);
- (*f3) |= (TR3_SH_ELEC);
- (*f3) |= (TR3_SH_COLD);
+ add_flag(flgs, TR_RES_FIRE);
+ add_flag(flgs, TR_RES_COLD);
+ add_flag(flgs, TR_RES_ACID);
+ add_flag(flgs, TR_RES_ELEC);
+ add_flag(flgs, TR_RES_POIS);
+ add_flag(flgs, TR_FEATHER);
+ add_flag(flgs, TR_SH_FIRE);
+ add_flag(flgs, TR_SH_ELEC);
+ add_flag(flgs, TR_SH_COLD);
}
if (p_ptr->special_defense & KATA_MUSOU)
{
- (*f2) |= TR2_RES_FEAR;
- (*f2) |= TR2_RES_LITE;
- (*f2) |= TR2_RES_DARK;
- (*f2) |= TR2_RES_BLIND;
- (*f2) |= TR2_RES_CONF;
- (*f2) |= TR2_RES_SOUND;
- (*f2) |= TR2_RES_SHARDS;
- (*f2) |= TR2_RES_NETHER;
- (*f2) |= TR2_RES_NEXUS;
- (*f2) |= TR2_RES_CHAOS;
- (*f2) |= TR2_RES_DISEN;
- (*f2) |= TR2_REFLECT;
- (*f2) |= TR2_HOLD_LIFE;
- (*f2) |= TR2_FREE_ACT;
- (*f3) |= TR3_SH_FIRE;
- (*f3) |= TR3_SH_ELEC;
- (*f3) |= TR3_SH_COLD;
- (*f3) |= TR3_FEATHER;
- (*f3) |= TR3_LITE;
- (*f3) |= TR3_SEE_INVIS;
- (*f3) |= TR3_TELEPATHY;
- (*f3) |= TR3_SLOW_DIGEST;
- (*f3) |= TR3_REGEN;
- (*f2) |= (TR2_SUST_STR);
- (*f2) |= (TR2_SUST_INT);
- (*f2) |= (TR2_SUST_WIS);
- (*f2) |= (TR2_SUST_DEX);
- (*f2) |= (TR2_SUST_CON);
- (*f2) |= (TR2_SUST_CHR);
+ add_flag(flgs, TR_RES_FEAR);
+ add_flag(flgs, TR_RES_LITE);
+ add_flag(flgs, TR_RES_DARK);
+ add_flag(flgs, TR_RES_BLIND);
+ add_flag(flgs, TR_RES_CONF);
+ add_flag(flgs, TR_RES_SOUND);
+ add_flag(flgs, TR_RES_SHARDS);
+ add_flag(flgs, TR_RES_NETHER);
+ add_flag(flgs, TR_RES_NEXUS);
+ add_flag(flgs, TR_RES_CHAOS);
+ add_flag(flgs, TR_RES_DISEN);
+ add_flag(flgs, TR_REFLECT);
+ add_flag(flgs, TR_HOLD_LIFE);
+ add_flag(flgs, TR_FREE_ACT);
+ add_flag(flgs, TR_SH_FIRE);
+ add_flag(flgs, TR_SH_ELEC);
+ add_flag(flgs, TR_SH_COLD);
+ add_flag(flgs, TR_FEATHER);
+ add_flag(flgs, TR_LITE);
+ add_flag(flgs, TR_SEE_INVIS);
+ add_flag(flgs, TR_TELEPATHY);
+ add_flag(flgs, TR_SLOW_DIGEST);
+ add_flag(flgs, TR_REGEN);
+ add_flag(flgs, TR_SUST_STR);
+ add_flag(flgs, TR_SUST_INT);
+ add_flag(flgs, TR_SUST_WIS);
+ add_flag(flgs, TR_SUST_DEX);
+ add_flag(flgs, TR_SUST_CON);
+ add_flag(flgs, TR_SUST_CHR);
}
}
-static void tim_player_flags(u32b *f1, u32b *f2, u32b *f3, bool im_and_res)
+static void tim_player_flags(u32b flgs[TR_FLAG_SIZE], bool im_and_res)
{
+ int i;
+
/* Clear */
- (*f1) = (*f2) = (*f3) = 0L;
+ for (i = 0; i < TR_FLAG_SIZE; i++)
+ flgs[i] = 0L;
if (p_ptr->hero || p_ptr->shero || music_singing(MUSIC_HERO) || music_singing(MUSIC_SHERO))
- (*f2) |= TR2_RES_FEAR;
+ add_flag(flgs, TR_RES_FEAR);
if (p_ptr->tim_invis)
- (*f3) |= TR3_SEE_INVIS;
+ add_flag(flgs, TR_SEE_INVIS);
if (p_ptr->tim_regen)
- (*f3) |= TR3_REGEN;
+ add_flag(flgs, TR_REGEN);
if (p_ptr->tim_esp || music_singing(MUSIC_MIND))
- (*f3) |= TR3_TELEPATHY;
+ add_flag(flgs, TR_TELEPATHY);
if (p_ptr->fast || p_ptr->slow || music_singing(MUSIC_SPEED) || music_singing(MUSIC_SHERO))
- (*f1) |= TR1_SPEED;
+ add_flag(flgs, TR_SPEED);
if ((p_ptr->special_defense & KATA_MUSOU) || music_singing(MUSIC_RESIST))
{
- (*f2) |= (TR2_RES_FIRE);
- (*f2) |= (TR2_RES_COLD);
- (*f2) |= (TR2_RES_ACID);
- (*f2) |= (TR2_RES_ELEC);
- (*f2) |= (TR2_RES_POIS);
+ add_flag(flgs, TR_RES_FIRE);
+ add_flag(flgs, TR_RES_COLD);
+ add_flag(flgs, TR_RES_ACID);
+ add_flag(flgs, TR_RES_ELEC);
+ add_flag(flgs, TR_RES_POIS);
}
if (im_and_res)
{
if (p_ptr->oppose_acid && !(p_ptr->special_defense & DEFENSE_ACID) && !((prace_is_(RACE_YEEK)) && (p_ptr->lev > 19)))
- (*f2) |= TR2_RES_ACID;
+ add_flag(flgs, TR_RES_ACID);
if (p_ptr->oppose_elec && !(p_ptr->special_defense & DEFENSE_ELEC))
- (*f2) |= TR2_RES_ELEC;
+ add_flag(flgs, TR_RES_ELEC);
if (p_ptr->oppose_fire && !(p_ptr->special_defense & DEFENSE_FIRE))
- (*f2) |= TR2_RES_FIRE;
+ add_flag(flgs, TR_RES_FIRE);
if (p_ptr->oppose_cold && !(p_ptr->special_defense & DEFENSE_COLD))
- (*f2) |= TR2_RES_COLD;
+ add_flag(flgs, TR_RES_COLD);
}
else
{
if (p_ptr->oppose_acid)
- (*f2) |= TR2_RES_ACID;
+ add_flag(flgs, TR_RES_ACID);
if (p_ptr->oppose_elec)
- (*f2) |= TR2_RES_ELEC;
+ add_flag(flgs, TR_RES_ELEC);
if (p_ptr->oppose_fire)
- (*f2) |= TR2_RES_FIRE;
+ add_flag(flgs, TR_RES_FIRE);
if (p_ptr->oppose_cold)
- (*f2) |= TR2_RES_COLD;
+ add_flag(flgs, TR_RES_COLD);
}
if (p_ptr->oppose_pois)
- (*f2) |= TR2_RES_POIS;
+ add_flag(flgs, TR_RES_POIS);
if (p_ptr->special_attack & ATTACK_ACID)
- (*f1) |= TR1_BRAND_ACID;
+ add_flag(flgs, TR_BRAND_ACID);
if (p_ptr->special_attack & ATTACK_ELEC)
- (*f1) |= TR1_BRAND_ELEC;
+ add_flag(flgs, TR_BRAND_ELEC);
if (p_ptr->special_attack & ATTACK_FIRE)
- (*f1) |= TR1_BRAND_FIRE;
+ add_flag(flgs, TR_BRAND_FIRE);
if (p_ptr->special_attack & ATTACK_COLD)
- (*f1) |= TR1_BRAND_COLD;
+ add_flag(flgs, TR_BRAND_COLD);
if (p_ptr->special_attack & ATTACK_POIS)
- (*f1) |= TR1_BRAND_POIS;
+ add_flag(flgs, TR_BRAND_POIS);
if (p_ptr->special_defense & DEFENSE_ACID)
- (*f2) |= TR2_IM_ACID;
+ add_flag(flgs, TR_IM_ACID);
if (p_ptr->special_defense & DEFENSE_ELEC)
- (*f2) |= TR2_IM_ELEC;
+ add_flag(flgs, TR_IM_ELEC);
if (p_ptr->special_defense & DEFENSE_FIRE)
- (*f2) |= TR2_IM_FIRE;
+ add_flag(flgs, TR_IM_FIRE);
if (p_ptr->special_defense & DEFENSE_COLD)
- (*f2) |= TR2_IM_COLD;
+ add_flag(flgs, TR_IM_COLD);
if (p_ptr->wraith_form)
- (*f2) |= TR2_REFLECT;
+ add_flag(flgs, TR_REFLECT);
/* by henkma */
if (p_ptr->tim_reflect){
- (*f2) |= TR2_REFLECT;
+ add_flag(flgs, TR_REFLECT);
}
if (p_ptr->magicdef)
{
- (*f2) |= TR2_RES_BLIND;
- (*f2) |= TR2_RES_CONF;
- (*f2) |= TR2_REFLECT;
- (*f2) |= TR2_FREE_ACT;
- (*f3) |= TR3_FEATHER;
+ add_flag(flgs, TR_RES_BLIND);
+ add_flag(flgs, TR_RES_CONF);
+ add_flag(flgs, TR_REFLECT);
+ add_flag(flgs, TR_FREE_ACT);
+ add_flag(flgs, TR_FEATHER);
}
if (p_ptr->tim_res_nether)
{
- (*f2) |= TR2_RES_NETHER;
+ add_flag(flgs, TR_RES_NETHER);
}
if (p_ptr->tim_sh_fire)
{
- (*f3) |= TR3_SH_FIRE;
+ add_flag(flgs, TR_SH_FIRE);
}
if (p_ptr->ult_res)
{
- (*f2) |= TR2_RES_FEAR;
- (*f2) |= TR2_RES_LITE;
- (*f2) |= TR2_RES_DARK;
- (*f2) |= TR2_RES_BLIND;
- (*f2) |= TR2_RES_CONF;
- (*f2) |= TR2_RES_SOUND;
- (*f2) |= TR2_RES_SHARDS;
- (*f2) |= TR2_RES_NETHER;
- (*f2) |= TR2_RES_NEXUS;
- (*f2) |= TR2_RES_CHAOS;
- (*f2) |= TR2_RES_DISEN;
- (*f2) |= TR2_REFLECT;
- (*f2) |= TR2_HOLD_LIFE;
- (*f2) |= TR2_FREE_ACT;
- (*f3) |= TR3_SH_FIRE;
- (*f3) |= TR3_SH_ELEC;
- (*f3) |= TR3_SH_COLD;
- (*f3) |= TR3_FEATHER;
- (*f3) |= TR3_LITE;
- (*f3) |= TR3_SEE_INVIS;
- (*f3) |= TR3_TELEPATHY;
- (*f3) |= TR3_SLOW_DIGEST;
- (*f3) |= TR3_REGEN;
- (*f2) |= (TR2_SUST_STR);
- (*f2) |= (TR2_SUST_INT);
- (*f2) |= (TR2_SUST_WIS);
- (*f2) |= (TR2_SUST_DEX);
- (*f2) |= (TR2_SUST_CON);
- (*f2) |= (TR2_SUST_CHR);
+ add_flag(flgs, TR_RES_FEAR);
+ add_flag(flgs, TR_RES_LITE);
+ add_flag(flgs, TR_RES_DARK);
+ add_flag(flgs, TR_RES_BLIND);
+ add_flag(flgs, TR_RES_CONF);
+ add_flag(flgs, TR_RES_SOUND);
+ add_flag(flgs, TR_RES_SHARDS);
+ add_flag(flgs, TR_RES_NETHER);
+ add_flag(flgs, TR_RES_NEXUS);
+ add_flag(flgs, TR_RES_CHAOS);
+ add_flag(flgs, TR_RES_DISEN);
+ add_flag(flgs, TR_REFLECT);
+ add_flag(flgs, TR_HOLD_LIFE);
+ add_flag(flgs, TR_FREE_ACT);
+ add_flag(flgs, TR_SH_FIRE);
+ add_flag(flgs, TR_SH_ELEC);
+ add_flag(flgs, TR_SH_COLD);
+ add_flag(flgs, TR_FEATHER);
+ add_flag(flgs, TR_LITE);
+ add_flag(flgs, TR_SEE_INVIS);
+ add_flag(flgs, TR_TELEPATHY);
+ add_flag(flgs, TR_SLOW_DIGEST);
+ add_flag(flgs, TR_REGEN);
+ add_flag(flgs, TR_SUST_STR);
+ add_flag(flgs, TR_SUST_INT);
+ add_flag(flgs, TR_SUST_WIS);
+ add_flag(flgs, TR_SUST_DEX);
+ add_flag(flgs, TR_SUST_CON);
+ add_flag(flgs, TR_SUST_CHR);
}
}
*
*/
-static void known_obj_immunity(u32b *f1, u32b *f2, u32b *f3)
+static void known_obj_immunity(u32b flgs[TR_FLAG_SIZE])
{
int i;
/* Clear */
- (*f1) = (*f2) = (*f3) = 0L;
+ for (i = 0; i < TR_FLAG_SIZE; i++)
+ flgs[i] = 0L;
/* Check equipment */
for (i = INVEN_RARM; i < INVEN_TOTAL; i++)
{
- u32b o_f1, o_f2, o_f3;
+ u32b o_flgs[TR_FLAG_SIZE];
object_type *o_ptr;
if (!o_ptr->k_idx) continue;
/* Known flags */
- object_flags_known(o_ptr, &o_f1, &o_f2, &o_f3);
+ object_flags_known(o_ptr, o_flgs);
- if (o_f2 & TR2_IM_ACID) (*f2) |= TR2_RES_ACID;
- if (o_f2 & TR2_IM_ELEC) (*f2) |= TR2_RES_ELEC;
- if (o_f2 & TR2_IM_FIRE) (*f2) |= TR2_RES_FIRE;
- if (o_f2 & TR2_IM_COLD) (*f2) |= TR2_RES_COLD;
+ if (have_flag(flgs, TR_IM_ACID)) add_flag(flgs, TR_RES_ACID);
+ if (have_flag(flgs, TR_IM_ELEC)) add_flag(flgs, TR_RES_ELEC);
+ if (have_flag(flgs, TR_IM_FIRE)) add_flag(flgs, TR_RES_FIRE);
+ if (have_flag(flgs, TR_IM_COLD)) add_flag(flgs, TR_RES_COLD);
}
}
-static void player_immunity(u32b *f1, u32b *f2, u32b *f3)
+static void player_immunity(u32b flgs[TR_FLAG_SIZE])
{
+ int i;
+
/* Clear */
- (*f1) = (*f2) = (*f3) = 0L;
+ for (i = 0; i < TR_FLAG_SIZE; i++)
+ flgs[i] = 0L;
if (prace_is_(RACE_SPECTRE))
- (*f2) |= TR2_RES_NETHER;
+ add_flag(flgs, TR_RES_NETHER);
if (p_ptr->mimic_form == MIMIC_VAMPIRE || prace_is_(RACE_VAMPIRE))
- (*f2) |= TR2_RES_DARK;
+ add_flag(flgs, TR_RES_DARK);
if (p_ptr->mimic_form == MIMIC_DEMON_LORD)
- (*f2) |= TR2_RES_FIRE;
+ add_flag(flgs, TR_RES_FIRE);
else if (prace_is_(RACE_YEEK) && p_ptr->lev > 19)
- (*f2) |= TR2_RES_ACID;
+ add_flag(flgs, TR_RES_ACID);
}
-static void tim_player_immunity(u32b *f1, u32b *f2, u32b *f3)
+static void tim_player_immunity(u32b flgs[TR_FLAG_SIZE])
{
+ int i;
+
/* Clear */
- (*f1) = (*f2) = (*f3) = 0L;
+ for (i = 0; i < TR_FLAG_SIZE; i++)
+ flgs[i] = 0L;
if (p_ptr->special_defense & DEFENSE_ACID)
- (*f2) |= TR2_RES_ACID;
+ add_flag(flgs, TR_RES_ACID);
if (p_ptr->special_defense & DEFENSE_ELEC)
- (*f2) |= TR2_RES_ELEC;
+ add_flag(flgs, TR_RES_ELEC);
if (p_ptr->special_defense & DEFENSE_FIRE)
- (*f2) |= TR2_RES_FIRE;
+ add_flag(flgs, TR_RES_FIRE);
if (p_ptr->special_defense & DEFENSE_COLD)
- (*f2) |= TR2_RES_COLD;
+ add_flag(flgs, TR_RES_COLD);
if (p_ptr->wraith_form)
- (*f2) |= TR2_RES_DARK;
+ add_flag(flgs, TR_RES_DARK);
}
-static void player_vuln_flags(u32b *f1, u32b *f2, u32b *f3)
+static void player_vuln_flags(u32b flgs[TR_FLAG_SIZE])
{
+ int i;
+
/* Clear */
- (*f1) = (*f2) = (*f3) = 0L;
+ for (i = 0; i < TR_FLAG_SIZE; i++)
+ flgs[i] = 0L;
if ((p_ptr->muta3 & MUT3_VULN_ELEM) || (p_ptr->special_defense & KATA_KOUKIJIN))
{
- (*f2) |= TR2_RES_ACID;
- (*f2) |= TR2_RES_ELEC;
- (*f2) |= TR2_RES_FIRE;
- (*f2) |= TR2_RES_COLD;
+ add_flag(flgs, TR_RES_ACID);
+ add_flag(flgs, TR_RES_ELEC);
+ add_flag(flgs, TR_RES_FIRE);
+ add_flag(flgs, TR_RES_COLD);
}
if (prace_is_(RACE_ANDROID))
- (*f2) |= TR2_RES_ELEC;
+ add_flag(flgs, TR_RES_ELEC);
if (prace_is_(RACE_ENT))
- (*f2) |= TR2_RES_FIRE;
+ add_flag(flgs, TR_RES_FIRE);
if (prace_is_(RACE_VAMPIRE) || prace_is_(RACE_S_FAIRY) ||
(p_ptr->mimic_form == MIMIC_VAMPIRE))
- (*f2) |= TR2_RES_LITE;
+ add_flag(flgs, TR_RES_LITE);
}
/*
* Helper function, see below
*/
static void display_player_flag_aux(int row, int col, cptr header,
- int n, u32b flag1, u32b flag2,
- u32b im_f[], u32b vul_f)
+ int flag1, int flag2,
+ u32b im_f[3][TR_FLAG_SIZE],
+ u32b vul_f[TR_FLAG_SIZE])
{
int i;
- u32b f[4];
+ u32b flgs[TR_FLAG_SIZE], cflgs;
bool vuln = FALSE;
- if ((vul_f & flag1) && !((im_f[0] | im_f[1] | im_f[2]) & flag1))
+ if (have_flag(vul_f, flag1) && !(have_flag(im_f[0], flag1) || have_flag(im_f[1], flag1) || have_flag(im_f[2], flag1)))
vuln = TRUE;
/* Header */
for (i = INVEN_RARM; i < INVEN_TOTAL; i++)
{
object_type *o_ptr;
- f[0] = f[1] = f[2] = f[3] = 0L;
/* Object */
o_ptr = &inventory[i];
/* Known flags */
- object_flags_known(o_ptr, &f[0], &f[1], &f[2]);
- f[3] = o_ptr->curse_flags;
+ object_flags_known(o_ptr, flgs);
+ cflgs = o_ptr->curse_flags;
/* Default */
c_put_str((byte)(vuln ? TERM_RED : TERM_SLATE), ".", row, col);
/* Check flags */
- if (f[n - 1] & flag1) c_put_str((byte)(vuln ? TERM_L_RED : TERM_WHITE), "+", row, col);
- if (f[n - 1] & flag2) c_put_str(TERM_WHITE, "*", row, col);
+ if (((flag1 != -1) && have_flag(flgs, flag1)) ||
+ ((flag1 == -1) && (cflgs & (TRC_CURSED | TRC_HEAVY_CURSE))))
+ c_put_str((byte)(vuln ? TERM_L_RED : TERM_WHITE), "+", row, col);
+ if (((flag2 != -1) && have_flag(flgs, flag2)) ||
+ ((flag2 == -1) && (cflgs & TRC_PERMA_CURSE)))
+ c_put_str(TERM_WHITE, "*", row, col);
/* Advance */
col++;
}
/* Player flags */
- player_flags(&f[0], &f[1], &f[2]);
- f[3] = 0L;
+ player_flags(flgs);
/* Default */
c_put_str((byte)(vuln ? TERM_RED : TERM_SLATE), ".", row, col);
/* Check flags */
- if (f[n-1] & flag1) c_put_str((byte)(vuln ? TERM_L_RED : TERM_WHITE), "+", row, col);
+ if (have_flag(flgs, flag1)) c_put_str((byte)(vuln ? TERM_L_RED : TERM_WHITE), "+", row, col);
/* Timed player flags */
- tim_player_flags(&f[0], &f[1], &f[2], TRUE);
- f[3] = 0L;
+ tim_player_flags(flgs, TRUE);
/* Check flags */
- if (f[n-1] & flag1) c_put_str((byte)(vuln ? TERM_ORANGE : TERM_YELLOW), "#", row, col);
+ if (have_flag(flgs, flag1)) c_put_str((byte)(vuln ? TERM_ORANGE : TERM_YELLOW), "#", row, col);
/* Immunity */
- if (im_f[2] & flag1) c_put_str(TERM_YELLOW, "*", row, col);
- if (im_f[1] & flag1) c_put_str(TERM_WHITE, "*", row, col);
+ if (have_flag(im_f[2], flag1)) c_put_str(TERM_YELLOW, "*", row, col);
+ if (have_flag(im_f[1], flag1)) c_put_str(TERM_WHITE, "*", row, col);
/* Vulnerability */
if (vuln) c_put_str(TERM_RED, "v", row, col + 1);
int row;
int col;
- u32b im_f[3][3], vul_f[3];
+ u32b im_f[3][TR_FLAG_SIZE], vul_f[TR_FLAG_SIZE];
- known_obj_immunity(&im_f[0][0], &im_f[1][0], &im_f[2][0]);
- player_immunity(&im_f[0][1], &im_f[1][1], &im_f[2][1]);
- tim_player_immunity(&im_f[0][2], &im_f[1][2], &im_f[2][2]);
+ known_obj_immunity(im_f[0]);
+ player_immunity(im_f[1]);
+ tim_player_immunity(im_f[2]);
- player_vuln_flags(&vul_f[0], &vul_f[1], &vul_f[2]);
+ player_vuln_flags(vul_f);
/*** Set 1 ***/
c_put_str(TERM_WHITE, "abcdefghijkl@", row-1, col+8);
#ifdef JP
-display_player_flag_aux(row+0, col, "ÂÑ»À :", 2, TR2_RES_ACID, TR2_IM_ACID, im_f[1], vul_f[1]);
-display_player_flag_aux(row+1, col, "ÂÑÅÅ·â:", 2, TR2_RES_ELEC, TR2_IM_ELEC, im_f[1], vul_f[1]);
-display_player_flag_aux(row+2, col, "ÂѲбê:", 2, TR2_RES_FIRE, TR2_IM_FIRE, im_f[1], vul_f[1]);
-display_player_flag_aux(row+3, col, "ÂÑÎ䵤:", 2, TR2_RES_COLD, TR2_IM_COLD, im_f[1], vul_f[1]);
-display_player_flag_aux(row+4, col, "ÂÑÆÇ :", 2, TR2_RES_POIS, 0, im_f[1], vul_f[1]);
-display_player_flag_aux(row+5, col, "ÂÑÁ®¸÷:", 2, TR2_RES_LITE, 0, im_f[1], vul_f[1]);
-display_player_flag_aux(row+6, col, "ÂѰŹõ:", 2, TR2_RES_DARK, 0, im_f[1], vul_f[1]);
-display_player_flag_aux(row+7, col, "ÂÑÇËÊÒ:", 2, TR2_RES_SHARDS, 0, im_f[1], vul_f[1]);
-display_player_flag_aux(row+8, col, "ÂÑÌÕÌÜ:", 2, TR2_RES_BLIND, 0, im_f[1], vul_f[1]);
-display_player_flag_aux(row+9, col, "ÂѺ®Íð:", 2, TR2_RES_CONF, 0, im_f[1], vul_f[1]);
+display_player_flag_aux(row+0, col, "ÂÑ»À :", TR_RES_ACID, TR_IM_ACID, im_f, vul_f);
+display_player_flag_aux(row+1, col, "ÂÑÅÅ·â:", TR_RES_ELEC, TR_IM_ELEC, im_f, vul_f);
+display_player_flag_aux(row+2, col, "ÂѲбê:", TR_RES_FIRE, TR_IM_FIRE, im_f, vul_f);
+display_player_flag_aux(row+3, col, "ÂÑÎ䵤:", TR_RES_COLD, TR_IM_COLD, im_f, vul_f);
+display_player_flag_aux(row+4, col, "ÂÑÆÇ :", TR_RES_POIS, 0, im_f, vul_f);
+display_player_flag_aux(row+5, col, "ÂÑÁ®¸÷:", TR_RES_LITE, 0, im_f, vul_f);
+display_player_flag_aux(row+6, col, "ÂѰŹõ:", TR_RES_DARK, 0, im_f, vul_f);
+display_player_flag_aux(row+7, col, "ÂÑÇËÊÒ:", TR_RES_SHARDS, 0, im_f, vul_f);
+display_player_flag_aux(row+8, col, "ÂÑÌÕÌÜ:", TR_RES_BLIND, 0, im_f, vul_f);
+display_player_flag_aux(row+9, col, "ÂѺ®Íð:", TR_RES_CONF, 0, im_f, vul_f);
#else
- display_player_flag_aux(row+0, col, "Acid :", 2, TR2_RES_ACID, TR2_IM_ACID, im_f[1], vul_f[1]);
- display_player_flag_aux(row+1, col, "Elec :", 2, TR2_RES_ELEC, TR2_IM_ELEC, im_f[1], vul_f[1]);
- display_player_flag_aux(row+2, col, "Fire :", 2, TR2_RES_FIRE, TR2_IM_FIRE, im_f[1], vul_f[1]);
- display_player_flag_aux(row+3, col, "Cold :", 2, TR2_RES_COLD, TR2_IM_COLD, im_f[1], vul_f[1]);
- display_player_flag_aux(row+4, col, "Poison:", 2, TR2_RES_POIS, 0, im_f[1], vul_f[1]);
- display_player_flag_aux(row+5, col, "Light :", 2, TR2_RES_LITE, 0, im_f[1], vul_f[1]);
- display_player_flag_aux(row+6, col, "Dark :", 2, TR2_RES_DARK, 0, im_f[1], vul_f[1]);
- display_player_flag_aux(row+7, col, "Shard :", 2, TR2_RES_SHARDS, 0, im_f[1], vul_f[1]);
- display_player_flag_aux(row+8, col, "Blind :", 2, TR2_RES_BLIND, 0, im_f[1], vul_f[1]);
- display_player_flag_aux(row+9, col, "Conf :", 2, TR2_RES_CONF, 0, im_f[1], vul_f[1]);
+ display_player_flag_aux(row+0, col, "Acid :", TR_RES_ACID, TR_IM_ACID, im_f, vul_f);
+ display_player_flag_aux(row+1, col, "Elec :", TR_RES_ELEC, TR_IM_ELEC, im_f, vul_f);
+ display_player_flag_aux(row+2, col, "Fire :", TR_RES_FIRE, TR_IM_FIRE, im_f, vul_f);
+ display_player_flag_aux(row+3, col, "Cold :", TR_RES_COLD, TR_IM_COLD, im_f, vul_f);
+ display_player_flag_aux(row+4, col, "Poison:", TR_RES_POIS, 0, im_f, vul_f);
+ display_player_flag_aux(row+5, col, "Light :", TR_RES_LITE, 0, im_f, vul_f);
+ display_player_flag_aux(row+6, col, "Dark :", TR_RES_DARK, 0, im_f, vul_f);
+ display_player_flag_aux(row+7, col, "Shard :", TR_RES_SHARDS, 0, im_f, vul_f);
+ display_player_flag_aux(row+8, col, "Blind :", TR_RES_BLIND, 0, im_f, vul_f);
+ display_player_flag_aux(row+9, col, "Conf :", TR_RES_CONF, 0, im_f, vul_f);
#endif
c_put_str(TERM_WHITE, "abcdefghijkl@", row-1, col+8);
#ifdef JP
-display_player_flag_aux(row+0, col, "Âѹ첻:", 2, TR2_RES_SOUND, 0, im_f[1], vul_f[1]);
-display_player_flag_aux(row+1, col, "ÂÑÃϹö:", 2, TR2_RES_NETHER, 0, im_f[1], vul_f[1]);
-display_player_flag_aux(row+2, col, "ÂÑ°øº®:", 2, TR2_RES_NEXUS, 0, im_f[1], vul_f[1]);
-display_player_flag_aux(row+3, col, "ÂÑ¥«¥ª:", 2, TR2_RES_CHAOS, 0, im_f[1], vul_f[1]);
-display_player_flag_aux(row+4, col, "ÂÑÎô²½:", 2, TR2_RES_DISEN, 0, im_f[1], vul_f[1]);
-display_player_flag_aux(row+5, col, "ÂѶ²ÉÝ:", 2, TR2_RES_FEAR, 0, im_f[1], vul_f[1]);
-display_player_flag_aux(row+6, col, "È¿¼Í :", 2, TR2_REFLECT, 0, im_f[1], vul_f[1]);
-display_player_flag_aux(row+7, col, "²Ð±ê¥ª:", 3, TR3_SH_FIRE, 0, im_f[2], vul_f[2]);
-display_player_flag_aux(row+8, col, "Åŵ¤¥ª:", 3, TR3_SH_ELEC, 0, im_f[2], vul_f[2]);
-display_player_flag_aux(row+9, col, "Î䵤¥ª:", 3, TR3_SH_COLD, 0, im_f[2], vul_f[2]);
+display_player_flag_aux(row+0, col, "Âѹ첻:", TR_RES_SOUND, 0, im_f, vul_f);
+display_player_flag_aux(row+1, col, "ÂÑÃϹö:", TR_RES_NETHER, 0, im_f, vul_f);
+display_player_flag_aux(row+2, col, "ÂÑ°øº®:", TR_RES_NEXUS, 0, im_f, vul_f);
+display_player_flag_aux(row+3, col, "ÂÑ¥«¥ª:", TR_RES_CHAOS, 0, im_f, vul_f);
+display_player_flag_aux(row+4, col, "ÂÑÎô²½:", TR_RES_DISEN, 0, im_f, vul_f);
+display_player_flag_aux(row+5, col, "ÂѶ²ÉÝ:", TR_RES_FEAR, 0, im_f, vul_f);
+display_player_flag_aux(row+6, col, "È¿¼Í :", TR_REFLECT, 0, im_f, vul_f);
+display_player_flag_aux(row+7, col, "²Ð±ê¥ª:", TR_SH_FIRE, 0, im_f, vul_f);
+display_player_flag_aux(row+8, col, "Åŵ¤¥ª:", TR_SH_ELEC, 0, im_f, vul_f);
+display_player_flag_aux(row+9, col, "Î䵤¥ª:", TR_SH_COLD, 0, im_f, vul_f);
#else
- display_player_flag_aux(row+0, col, "Sound :", 2, TR2_RES_SOUND, 0, im_f[1], vul_f[1]);
- display_player_flag_aux(row+1, col, "Nether:", 2, TR2_RES_NETHER, 0, im_f[1], vul_f[1]);
- display_player_flag_aux(row+2, col, "Nexus :", 2, TR2_RES_NEXUS, 0, im_f[1], vul_f[1]);
- display_player_flag_aux(row+3, col, "Chaos :", 2, TR2_RES_CHAOS, 0, im_f[1], vul_f[1]);
- display_player_flag_aux(row+4, col, "Disnch:", 2, TR2_RES_DISEN, 0, im_f[1], vul_f[1]);
- display_player_flag_aux(row+5, col, "Fear :", 2, TR2_RES_FEAR, 0, im_f[1], vul_f[1]);
- display_player_flag_aux(row+6, col, "Reflct:", 2, TR2_REFLECT, 0, im_f[1], vul_f[1]);
- display_player_flag_aux(row+7, col, "AuFire:", 3, TR3_SH_FIRE, 0, im_f[2], vul_f[2]);
- display_player_flag_aux(row+8, col, "AuElec:", 3, TR3_SH_ELEC, 0, im_f[2], vul_f[2]);
- display_player_flag_aux(row+9, col, "AuCold:", 3, TR3_SH_COLD, 0, im_f[2], vul_f[2]);
+ display_player_flag_aux(row+0, col, "Sound :", TR_RES_SOUND, 0, im_f, vul_f);
+ display_player_flag_aux(row+1, col, "Nether:", TR_RES_NETHER, 0, im_f, vul_f);
+ display_player_flag_aux(row+2, col, "Nexus :", TR_RES_NEXUS, 0, im_f, vul_f);
+ display_player_flag_aux(row+3, col, "Chaos :", TR_RES_CHAOS, 0, im_f, vul_f);
+ display_player_flag_aux(row+4, col, "Disnch:", TR_RES_DISEN, 0, im_f, vul_f);
+ display_player_flag_aux(row+5, col, "Fear :", TR_RES_FEAR, 0, im_f, vul_f);
+ display_player_flag_aux(row+6, col, "Reflct:", TR_REFLECT, 0, im_f, vul_f);
+ display_player_flag_aux(row+7, col, "AuFire:", TR_SH_FIRE, 0, im_f, vul_f);
+ display_player_flag_aux(row+8, col, "AuElec:", TR_SH_ELEC, 0, im_f, vul_f);
+ display_player_flag_aux(row+9, col, "AuCold:", TR_SH_COLD, 0, im_f, vul_f);
#endif
c_put_str(TERM_WHITE, "abcdefghijkl@", row-1, col+12);
#ifdef JP
-display_player_flag_aux(row+0, col, "²Ã® :", 1, TR1_SPEED, 0, im_f[0], vul_f[0]);
-display_player_flag_aux(row+1, col, "ÂÑËãáã :", 2, TR2_FREE_ACT, 0, im_f[1], vul_f[1]);
-display_player_flag_aux(row+2, col, "Æ©ÌÀÂλëǧ:", 3, TR3_SEE_INVIS, 0, im_f[2], vul_f[2]);
-display_player_flag_aux(row+3, col, "·Ð¸³ÃÍÊÝ»ý:", 2, TR2_HOLD_LIFE, 0, im_f[2], vul_f[1]);
-display_player_flag_aux(row+4, col, "¥Æ¥ì¥Ñ¥·¡¼:", 3, TR3_TELEPATHY, 0, im_f[2], vul_f[2]);
-display_player_flag_aux(row+5, col, "Ãپò½ :", 3, TR3_SLOW_DIGEST, 0, im_f[2], vul_f[2]);
-display_player_flag_aux(row+6, col, "µÞ²óÉü :", 3, TR3_REGEN, 0, im_f[2], vul_f[2]);
-display_player_flag_aux(row+7, col, "ÉâÍ· :", 3, TR3_FEATHER, 0, im_f[2], vul_f[2]);
-display_player_flag_aux(row+8, col, "±Ê±ó¸÷¸» :", 3, TR3_LITE, 0, im_f[2], vul_f[2]);
-display_player_flag_aux(row+9, col, "¼ö¤¤ :", 4, (TRC_CURSED | TRC_HEAVY_CURSE), TRC_PERMA_CURSE, im_f[2], vul_f[2]);
-#else
- display_player_flag_aux(row+0, col, "Speed :", 1, TR1_SPEED, 0, im_f[0], vul_f[0]);
- display_player_flag_aux(row+1, col, "FreeAction:", 2, TR2_FREE_ACT, 0, im_f[1], vul_f[1]);
- display_player_flag_aux(row+2, col, "SeeInvisi.:", 3, TR3_SEE_INVIS, 0, im_f[2], vul_f[2]);
- display_player_flag_aux(row+3, col, "Hold Life :", 2, TR2_HOLD_LIFE, 0, im_f[1], vul_f[1]);
- display_player_flag_aux(row+4, col, "Telepathy :", 3, TR3_TELEPATHY, 0, im_f[2], vul_f[2]);
- display_player_flag_aux(row+5, col, "SlowDigest:", 3, TR3_SLOW_DIGEST, 0, im_f[2], vul_f[2]);
- display_player_flag_aux(row+6, col, "Regene. :", 3, TR3_REGEN, 0, im_f[2], vul_f[2]);
- display_player_flag_aux(row+7, col, "Levitation:", 3, TR3_FEATHER, 0, im_f[2], vul_f[2]);
- display_player_flag_aux(row+8, col, "Perm Lite :", 3, TR3_LITE, 0, im_f[2], vul_f[2]);
- display_player_flag_aux(row+9, col, "Cursed :", 4, (TRC_CURSED | TRC_HEAVY_CURSE), TRC_PERMA_CURSE, im_f[2], vul_f[2]);
+display_player_flag_aux(row+0, col, "²Ã® :", TR_SPEED, 0, im_f, vul_f);
+display_player_flag_aux(row+1, col, "ÂÑËãáã :", TR_FREE_ACT, 0, im_f, vul_f);
+display_player_flag_aux(row+2, col, "Æ©ÌÀÂλëǧ:", TR_SEE_INVIS, 0, im_f, vul_f);
+display_player_flag_aux(row+3, col, "·Ð¸³ÃÍÊÝ»ý:", TR_HOLD_LIFE, 0, im_f, vul_f);
+display_player_flag_aux(row+4, col, "¥Æ¥ì¥Ñ¥·¡¼:", TR_TELEPATHY, 0, im_f, vul_f);
+display_player_flag_aux(row+5, col, "Ãپò½ :", TR_SLOW_DIGEST, 0, im_f, vul_f);
+display_player_flag_aux(row+6, col, "µÞ²óÉü :", TR_REGEN, 0, im_f, vul_f);
+display_player_flag_aux(row+7, col, "ÉâÍ· :", TR_FEATHER, 0, im_f, vul_f);
+display_player_flag_aux(row+8, col, "±Ê±ó¸÷¸» :", TR_LITE, 0, im_f, vul_f);
+display_player_flag_aux(row+9, col, "¼ö¤¤ :", -1, -1, im_f, vul_f);
+#else
+ display_player_flag_aux(row+0, col, "Speed :", TR_SPEED, 0, im_f, vul_f);
+ display_player_flag_aux(row+1, col, "FreeAction:", TR_FREE_ACT, 0, im_f, vul_f);
+ display_player_flag_aux(row+2, col, "SeeInvisi.:", TR_SEE_INVIS, 0, im_f, vul_f);
+ display_player_flag_aux(row+3, col, "Hold Life :", TR_HOLD_LIFE, 0, im_f, vul_f);
+ display_player_flag_aux(row+4, col, "Telepathy :", TR_TELEPATHY, 0, im_f, vul_f);
+ display_player_flag_aux(row+5, col, "SlowDigest:", TR_SLOW_DIGEST, 0, im_f, vul_f);
+ display_player_flag_aux(row+6, col, "Regene. :", TR_REGEN, 0, im_f, vul_f);
+ display_player_flag_aux(row+7, col, "Levitation:", TR_FEATHER, 0, im_f, vul_f);
+ display_player_flag_aux(row+8, col, "Perm Lite :", TR_LITE, 0, im_f, vul_f);
+ display_player_flag_aux(row+9, col, "Cursed :", -1, -1, im_f, vul_f);
#endif
}
int row, col;
object_type *o_ptr;
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
s16b k_idx;
byte a;
k_idx = o_ptr->k_idx;
/* Acquire "known" flags */
- object_flags_known(o_ptr, &f1, &f2, &f3);
+ object_flags_known(o_ptr, flgs);
/* Initialize color based of sign of pval. */
for (stat = 0; stat < 6; stat++)
c = '.';
/* Boost */
- if (f1 & 1 << stat)
+ if (have_flag(flgs, stat))
{
/* Default */
c = '*';
if (o_ptr->pval < 10) c = '0' + o_ptr->pval;
}
- if (f2 & 1 << stat)
+ if (have_flag(flgs, stat + TR_SUST_STR))
{
/* Dark green for sustained stats */
a = TERM_GREEN;
}
/* Sustain */
- else if (f2 & 1 << stat)
+ else if (have_flag(flgs, stat + TR_SUST_STR))
{
/* Dark green "s" */
a = TERM_GREEN;
}
/* Player flags */
- player_flags(&f1, &f2, &f3);
+ player_flags(flgs);
/* Check stats */
for (stat = 0; stat < 6; stat++)
/* Sustain */
- if (f2 & 1<<stat)
+ if (have_flag(flgs, stat + TR_SUST_STR))
{
/* Dark green "s" */
a = TERM_GREEN;
object_type *o_ptr;
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
u16b b[6];
u16b color[6];
o_ptr = &inventory[i];
/* Known object flags */
- object_flags_known(o_ptr, &f1, &f2, &f3);
+ object_flags_known(o_ptr, flgs);
- if ((prace_is_(RACE_S_FAIRY)) && (f3 & TR3_AGGRAVATE))
+ if ((prace_is_(RACE_S_FAIRY)) && (have_flag(flgs, TR_AGGRAVATE)))
{
- f3 &= ~(TR3_AGGRAVATE);
- f1 |= TR1_STEALTH;
+ remove_flag(flgs, TR_AGGRAVATE);
+ add_flag(flgs, TR_STEALTH);
}
/* Incorporate */
- b[0] |= (f1 & 0xFFFF);
- b[1] |= (f1 >> 16);
- b[2] |= (f2 & 0xFFFF);
- b[3] |= (f2 >> 16);
- b[4] |= (f3 & 0xFFFF);
- b[5] |= (f3 >> 16);
+ b[0] |= (flgs[0] & 0xFFFF);
+ b[1] |= (flgs[0] >> 16);
+ b[2] |= (flgs[1] & 0xFFFF);
+ b[3] |= (flgs[1] >> 16);
+ b[4] |= (flgs[2] & 0xFFFF);
+ b[5] |= (flgs[2] >> 16);
}
/* Player flags */
- player_flags(&f1, &f2, &f3);
+ player_flags(flgs);
/* Incorporate */
- b[0] |= (f1 & 0xFFFF);
- b[1] |= (f1 >> 16);
- b[2] |= (f2 & 0xFFFF);
- b[3] |= (f2 >> 16);
- b[4] |= (f3 & 0xFFFF);
- b[5] |= (f3 >> 16);
+ b[0] |= (flgs[0] & 0xFFFF);
+ b[1] |= (flgs[0] >> 16);
+ b[2] |= (flgs[1] & 0xFFFF);
+ b[3] |= (flgs[1] >> 16);
+ b[4] |= (flgs[2] & 0xFFFF);
+ b[5] |= (flgs[2] >> 16);
/* Player flags */
- tim_player_flags(&f1, &f2, &f3, FALSE);
+ tim_player_flags(flgs, FALSE);
/* Incorporate */
- b[0] |= (f1 & 0xFFFF);
- b[1] |= (f1 >> 16);
- b[2] |= (f2 & 0xFFFF);
- b[3] |= (f2 >> 16);
- b[4] |= (f3 & 0xFFFF);
- b[5] |= (f3 >> 16);
- color[0] = (u16b)(f1 & 0xFFFF);
- color[1] = (u16b)(f1 >> 16);
- color[2] = (u16b)(f2 & 0xFFFF);
- color[3] = (u16b)(f2 >> 16);
- color[4] = (u16b)(f3 & 0xFFFF);
- color[5] = (u16b)(f3 >> 16);
+ b[0] |= (flgs[0] & 0xFFFF);
+ b[1] |= (flgs[0] >> 16);
+ b[2] |= (flgs[1] & 0xFFFF);
+ b[3] |= (flgs[1] >> 16);
+ b[4] |= (flgs[2] & 0xFFFF);
+ b[5] |= (flgs[2] >> 16);
+ color[0] = (u16b)(flgs[0] & 0xFFFF);
+ color[1] = (u16b)(flgs[0] >> 16);
+ color[2] = (u16b)(flgs[1] & 0xFFFF);
+ color[3] = (u16b)(flgs[1] >> 16);
+ color[4] = (u16b)(flgs[2] & 0xFFFF);
+ color[5] = (u16b)(flgs[2] >> 16);
/* Scan cols */
for (x = 0; x < 6; x++)
object_type *o_ptr;
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
u16b b[13][6];
u16b color[6];
/* Object */
o_ptr = &inventory[i];
- object_flags_known(o_ptr, &f1, &f2, &f3);
+ object_flags_known(o_ptr, flgs);
- if ((prace_is_(RACE_S_FAIRY)) && (f3 & TR3_AGGRAVATE))
+ if ((prace_is_(RACE_S_FAIRY)) && (have_flag(flgs, TR_AGGRAVATE)))
{
- f3 &= ~(TR3_AGGRAVATE);
- f1 |= TR1_STEALTH;
+ remove_flag(flgs, TR_AGGRAVATE);
+ add_flag(flgs, TR_STEALTH);
}
/* Incorporate */
- b[n][0] = (u16b)(f1 & 0xFFFF);
- b[n][1] = (u16b)(f1 >> 16);
- b[n][2] = (u16b)(f2 & 0xFFFF);
- b[n][3] = (u16b)(f2 >> 16);
- b[n][4] = (u16b)(f3 & 0xFFFF);
- b[n][5] = (u16b)(f3 >> 16);
+ b[n][0] = (u16b)(flgs[0] & 0xFFFF);
+ b[n][1] = (u16b)(flgs[0] >> 16);
+ b[n][2] = (u16b)(flgs[1] & 0xFFFF);
+ b[n][3] = (u16b)(flgs[1] >> 16);
+ b[n][4] = (u16b)(flgs[2] & 0xFFFF);
+ b[n][5] = (u16b)(flgs[2] >> 16);
}
n = 12;
/* Player flags */
- player_flags(&f1, &f2, &f3);
+ player_flags(flgs);
/* Incorporate */
- b[n][0] = (u16b)(f1 & 0xFFFF);
- b[n][1] = (u16b)(f1 >> 16);
- b[n][2] = (u16b)(f2 & 0xFFFF);
- b[n][3] = (u16b)(f2 >> 16);
- b[n][4] = (u16b)(f3 & 0xFFFF);
- b[n][5] = (u16b)(f3 >> 16);
+ b[n][0] = (u16b)(flgs[0] & 0xFFFF);
+ b[n][1] = (u16b)(flgs[0] >> 16);
+ b[n][2] = (u16b)(flgs[1] & 0xFFFF);
+ b[n][3] = (u16b)(flgs[1] >> 16);
+ b[n][4] = (u16b)(flgs[2] & 0xFFFF);
+ b[n][5] = (u16b)(flgs[2] >> 16);
/* Player flags */
- tim_player_flags(&f1, &f2, &f3, FALSE);
+ tim_player_flags(flgs, FALSE);
/* Incorporate */
- b[n][0] |= (f1 & 0xFFFF);
- b[n][1] |= (f1 >> 16);
- b[n][2] |= (f2 & 0xFFFF);
- b[n][3] |= (f2 >> 16);
- b[n][4] |= (f3 & 0xFFFF);
- b[n][5] |= (f3 >> 16);
- color[0] = (u16b)(f1 & 0xFFFF);
- color[1] = (u16b)(f1 >> 16);
- color[2] = (u16b)(f2 & 0xFFFF);
- color[3] = (u16b)(f2 >> 16);
- color[4] = (u16b)(f3 & 0xFFFF);
- color[5] = (u16b)(f3 >> 16);
+ b[n][0] |= (flgs[0] & 0xFFFF);
+ b[n][1] |= (flgs[0] >> 16);
+ b[n][2] |= (flgs[1] & 0xFFFF);
+ b[n][3] |= (flgs[1] >> 16);
+ b[n][4] |= (flgs[2] & 0xFFFF);
+ b[n][5] |= (flgs[3] >> 16);
+ color[0] = (u16b)(flgs[0] & 0xFFFF);
+ color[1] = (u16b)(flgs[0] >> 16);
+ color[2] = (u16b)(flgs[1] & 0xFFFF);
+ color[3] = (u16b)(flgs[1] >> 16);
+ color[4] = (u16b)(flgs[2] & 0xFFFF);
+ color[5] = (u16b)(flgs[2] >> 16);
/* Scan cols */
char tmp_val[MAX_NLEN+160];
char tmp_val2[MAX_NLEN+10];
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
object_type *bow_ptr;
monster_race *r_ptr = &r_info[o_ptr->pval];
/* Extract some flags */
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
/* See if the object is "aware" */
if (object_aware_p(o_ptr) || (o_ptr->ident & IDENT_MENTAL)) aware = TRUE;
}
}
+ /* Use full name from k_info or a_info */
+ if (aware && have_flag(flgs, TR_FULL_NAME))
+ {
+ if (known && o_ptr->name1) basenm = a_name + a_info[o_ptr->name1].name;
+ else basenm = get_object_name(o_ptr);
+ }
/* Start dumping the result */
t = tmp_val;
}
/* Hack -- Append "Artifact" or "Special" names */
- if (known)
+ if (known && !have_flag(flgs, TR_FULL_NAME))
{
/* Is it a new random artifact ? */
if (o_ptr->art_name)
/* Display the item like a weapon */
- if (f3 & (TR3_SHOW_MODS)) show_weapon = TRUE;
+ if (have_flag(flgs, TR_SHOW_MODS)) show_weapon = TRUE;
/* Display the item like a weapon */
if (o_ptr->to_h && o_ptr->to_d) show_weapon = TRUE;
power = (o_ptr->sval % 10);
/* Apply the "Extra Might" flag */
- if (f3 & (TR3_XTRA_MIGHT)) power++;
+ if (have_flag(flgs, TR_XTRA_MIGHT)) power++;
/* Append a special "damage" string */
t = object_desc_chr(t, ' ');
}
/* Dump "pval" flags for wearable items */
- if (known && (f1 & (TR1_PVAL_MASK)))
+ if (known && (have_pval_flags(flgs)))
{
/* Start the display */
t = object_desc_chr(t, ' ');
t = object_desc_int(t, o_ptr->pval);
/* Do not display the "pval" flags */
- if (f3 & (TR3_HIDE_TYPE))
+ if (have_flag(flgs, TR_HIDE_TYPE))
{
/* Nothing */
}
/* Speed */
- else if (f1 & (TR1_SPEED))
+ else if (have_flag(flgs, TR_SPEED))
{
/* Dump " to speed" */
#ifdef JP
}
/* Attack speed */
- else if (f1 & (TR1_BLOWS))
+ else if (have_flag(flgs, TR_BLOWS))
{
/* Add " attack" */
#ifdef JP
}
/* Stealth */
- else if (f1 & (TR1_STEALTH))
+ else if (have_flag(flgs, TR_STEALTH))
{
/* Dump " to stealth" */
#ifdef JP
}
/* Search */
- else if (f1 & (TR1_SEARCH))
+ else if (have_flag(flgs, TR_SEARCH))
{
/* Dump " to searching" */
#ifdef JP
}
/* Infravision */
- else if (f1 & (TR1_INFRA))
+ else if (have_flag(flgs, TR_INFRA))
{
/* Dump " to infravision" */
#ifdef JP
}
/* Tunneling */
- else if (f1 & (TR1_TUNNEL))
+ else if (have_flag(flgs, TR_TUNNEL))
{
/* Nothing */
}
case 21:
{
int total_damage = 0, basedam, i;
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
object_type *o_ptr;
if (!get_aim_dir(&dir)) return FALSE;
#ifdef JP
o_ptr = &inventory[INVEN_RARM+i];
basedam = (o_ptr->dd * (o_ptr->ds + 1)) * 50;
damage = o_ptr->to_d * 100;
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
if ((o_ptr->name1 == ART_VORPAL_BLADE) || (o_ptr->name1 == ART_CHAINSWORD))
{
/* vorpal blade */
basedam *= 5;
basedam /= 3;
}
- else if (object_known_p(o_ptr) && (f1 & TR1_VORPAL))
+ else if (object_known_p(o_ptr) && (have_flag(flgs, TR_VORPAL)))
{
/* vorpal flag only */
basedam *= 11;
{
int total_damage = 0, basedam, i;
int y, x;
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
object_type *o_ptr;
if (!get_rep_dir2(&dir)) return FALSE;
o_ptr = &inventory[INVEN_RARM+i];
basedam = (o_ptr->dd * (o_ptr->ds + 1)) * 50;
damage = o_ptr->to_d * 100;
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
if ((o_ptr->name1 == ART_VORPAL_BLADE) || (o_ptr->name1 == ART_CHAINSWORD))
{
/* vorpal blade */
basedam *= 5;
basedam /= 3;
}
- else if (object_known_p(o_ptr) && (f1 & TR1_VORPAL))
+ else if (object_known_p(o_ptr) && (have_flag(flgs, TR_VORPAL)))
{
/* vorpal flag only */
basedam *= 11;
/*
* Object flags
*/
-static cptr k_info_flags1[] =
+static cptr k_info_flags[] =
{
"STR",
"INT",
"BRAND_ACID",
"BRAND_ELEC",
"BRAND_FIRE",
- "BRAND_COLD"
-};
+ "BRAND_COLD",
-/*
- * Object flags
- */
-static cptr k_info_flags2[] =
-{
"SUST_STR",
"SUST_INT",
"SUST_WIS",
"RES_NETHER",
"RES_NEXUS",
"RES_CHAOS",
- "RES_DISEN"
-};
+ "RES_DISEN",
-/*
- * Object flags
- */
-static cptr k_info_flags3[] =
-{
"SH_FIRE",
"SH_ELEC",
"SLAY_HUMAN",
"TELEPORT",
"AGGRAVATE",
"BLESSED",
- "XXX1",
- "XXX2",
"XXX3",
+ "XXX4",
+ "XXX5",
+
+ "KILL_ANIMAL",
+ "KILL_EVIL",
+ "KILL_UNDEAD",
+ "KILL_DEMON",
+ "KILL_ORC",
+ "KILL_TROLL",
+ "KILL_GIANT",
+ "KILL_HUMAN",
+ "ESP_ANIMAL",
+ "ESP_UNDEAD",
+ "ESP_DEMON",
+ "ESP_ORC",
+ "ESP_TROLL",
+ "ESP_GIANT",
+ "ESP_DRAGON",
+ "ESP_HUMAN",
+ "ESP_EVIL",
+ "ESP_GOOD",
+ "ESP_NONLIVING",
+ "ESP_UNIQUE",
+ "FULL_NAME",
};
{
int i;
- /* Check flags1 */
- for (i = 0; i < 32; i++)
+ /* Check flags */
+ for (i = 0; i < TR_FLAG_MAX; i++)
{
- if (streq(what, k_info_flags1[i]))
+ if (streq(what, k_info_flags[i]))
{
- k_ptr->flags1 |= (1L << i);
- return (0);
- }
- }
-
- /* Check flags2 */
- for (i = 0; i < 32; i++)
- {
- if (streq(what, k_info_flags2[i]))
- {
- k_ptr->flags2 |= (1L << i);
- return (0);
- }
- }
-
- /* Check flags3 */
- for (i = 0; i < 32; i++)
- {
- if (streq(what, k_info_flags3[i]))
- {
- k_ptr->flags3 |= (1L << i);
+ add_flag(k_ptr->flags, i);
return (0);
}
}
{
int i;
- /* Check flags1 */
- for (i = 0; i < 32; i++)
- {
- if (streq(what, k_info_flags1[i]))
- {
- a_ptr->flags1 |= (1L << i);
- return (0);
- }
- }
-
- /* Check flags2 */
- for (i = 0; i < 32; i++)
+ /* Check flags */
+ for (i = 0; i < TR_FLAG_MAX; i++)
{
- if (streq(what, k_info_flags2[i]))
+ if (streq(what, k_info_flags[i]))
{
- a_ptr->flags2 |= (1L << i);
- return (0);
- }
- }
-
- /* Check flags3 */
- for (i = 0; i < 32; i++)
- {
- if (streq(what, k_info_flags3[i]))
- {
- a_ptr->flags3 |= (1L << i);
+ add_flag(a_ptr->flags, i);
return (0);
}
}
a_ptr = &a_info[i];
/* Ignore everything */
- a_ptr->flags3 |= (TR3_IGNORE_ACID);
- a_ptr->flags3 |= (TR3_IGNORE_ELEC);
- a_ptr->flags3 |= (TR3_IGNORE_FIRE);
- a_ptr->flags3 |= (TR3_IGNORE_COLD);
+ add_flag(a_ptr->flags, TR_IGNORE_ACID);
+ add_flag(a_ptr->flags, TR_IGNORE_ELEC);
+ add_flag(a_ptr->flags, TR_IGNORE_FIRE);
+ add_flag(a_ptr->flags, TR_IGNORE_COLD);
#ifdef JP
/* Store the name */
if (!add_name(&a_ptr->name, head, s)) return (7);
{
int i;
- /* Check flags1 */
- for (i = 0; i < 32; i++)
- {
- if (streq(what, k_info_flags1[i]))
- {
- e_ptr->flags1 |= (1L << i);
- return (0);
- }
- }
-
- /* Check flags2 */
- for (i = 0; i < 32; i++)
- {
- if (streq(what, k_info_flags2[i]))
- {
- e_ptr->flags2 |= (1L << i);
- return (0);
- }
- }
-
- /* Check flags3 */
- for (i = 0; i < 32; i++)
+ /* Check flags */
+ for (i = 0; i < TR_FLAG_MAX; i++)
{
- if (streq(what, k_info_flags3[i]))
+ if (streq(what, k_info_flags[i]))
{
- e_ptr->flags3 |= (1L << i);
+ add_flag(e_ptr->flags, i);
return (0);
}
}
rd_byte(&o_ptr->marked);
- /* Old flags */
- rd_u32b(&o_ptr->art_flags1);
- rd_u32b(&o_ptr->art_flags2);
- rd_u32b(&o_ptr->art_flags3);
+ /* Object flags */
+ rd_u32b(&o_ptr->art_flags[0]);
+ rd_u32b(&o_ptr->art_flags[1]);
+ rd_u32b(&o_ptr->art_flags[2]);
+ if (h_older_than(1, 3, 0, 0)) o_ptr->art_flags[3] = 0L;
+ else rd_u32b(&o_ptr->art_flags[3]);
if (z_older_than(11, 0, 11))
{
if (o_ptr->ident & 0x40)
{
o_ptr->curse_flags |= TRC_CURSED;
- if (o_ptr->art_flags3 & 0x40000000L) o_ptr->curse_flags |= TRC_HEAVY_CURSE;
- if (o_ptr->art_flags3 & 0x80000000L) o_ptr->curse_flags |= TRC_PERMA_CURSE;
+ if (o_ptr->art_flags[2] & 0x40000000L) o_ptr->curse_flags |= TRC_HEAVY_CURSE;
+ if (o_ptr->art_flags[2] & 0x80000000L) o_ptr->curse_flags |= TRC_PERMA_CURSE;
if (o_ptr->name1)
{
artifact_type *a_ptr = &a_info[o_ptr->name1];
if (e_ptr->gen_flags & (TRG_PERMA_CURSE)) o_ptr->curse_flags |= TRC_PERMA_CURSE;
}
}
- o_ptr->art_flags3 &= (0x1FFFFFFFL);
+ o_ptr->art_flags[2] &= (0x1FFFFFFFL);
}
else
{
{
switch (o_ptr->xtra2 % 6)
{
- case 0: o_ptr->art_flags2 |= (TR2_SUST_STR); break;
- case 1: o_ptr->art_flags2 |= (TR2_SUST_INT); break;
- case 2: o_ptr->art_flags2 |= (TR2_SUST_WIS); break;
- case 3: o_ptr->art_flags2 |= (TR2_SUST_DEX); break;
- case 4: o_ptr->art_flags2 |= (TR2_SUST_CON); break;
- case 5: o_ptr->art_flags2 |= (TR2_SUST_CHR); break;
+ case 0: add_flag(o_ptr->art_flags, TR_SUST_STR); break;
+ case 1: add_flag(o_ptr->art_flags, TR_SUST_INT); break;
+ case 2: add_flag(o_ptr->art_flags, TR_SUST_WIS); break;
+ case 3: add_flag(o_ptr->art_flags, TR_SUST_DEX); break;
+ case 4: add_flag(o_ptr->art_flags, TR_SUST_CON); break;
+ case 5: add_flag(o_ptr->art_flags, TR_SUST_CHR); break;
}
o_ptr->xtra2 = 0;
}
{
switch (o_ptr->xtra2 % 11)
{
- case 0: o_ptr->art_flags2 |= (TR2_RES_BLIND); break;
- case 1: o_ptr->art_flags2 |= (TR2_RES_CONF); break;
- case 2: o_ptr->art_flags2 |= (TR2_RES_SOUND); break;
- case 3: o_ptr->art_flags2 |= (TR2_RES_SHARDS); break;
- case 4: o_ptr->art_flags2 |= (TR2_RES_NETHER); break;
- case 5: o_ptr->art_flags2 |= (TR2_RES_NEXUS); break;
- case 6: o_ptr->art_flags2 |= (TR2_RES_CHAOS); break;
- case 7: o_ptr->art_flags2 |= (TR2_RES_DISEN); break;
- case 8: o_ptr->art_flags2 |= (TR2_RES_POIS); break;
- case 9: o_ptr->art_flags2 |= (TR2_RES_DARK); break;
- case 10: o_ptr->art_flags2 |= (TR2_RES_LITE); break;
+ case 0: add_flag(o_ptr->art_flags, TR_RES_BLIND); break;
+ case 1: add_flag(o_ptr->art_flags, TR_RES_CONF); break;
+ case 2: add_flag(o_ptr->art_flags, TR_RES_SOUND); break;
+ case 3: add_flag(o_ptr->art_flags, TR_RES_SHARDS); break;
+ case 4: add_flag(o_ptr->art_flags, TR_RES_NETHER); break;
+ case 5: add_flag(o_ptr->art_flags, TR_RES_NEXUS); break;
+ case 6: add_flag(o_ptr->art_flags, TR_RES_CHAOS); break;
+ case 7: add_flag(o_ptr->art_flags, TR_RES_DISEN); break;
+ case 8: add_flag(o_ptr->art_flags, TR_RES_POIS); break;
+ case 9: add_flag(o_ptr->art_flags, TR_RES_DARK); break;
+ case 10: add_flag(o_ptr->art_flags, TR_RES_LITE); break;
}
o_ptr->xtra2 = 0;
}
{
switch (o_ptr->xtra2 % 8)
{
- case 0: o_ptr->art_flags3 |= (TR3_FEATHER); break;
- case 1: o_ptr->art_flags3 |= (TR3_LITE); break;
- case 2: o_ptr->art_flags3 |= (TR3_SEE_INVIS); break;
- case 3: o_ptr->art_flags3 |= (TR3_WARNING); break;
- case 4: o_ptr->art_flags3 |= (TR3_SLOW_DIGEST); break;
- case 5: o_ptr->art_flags3 |= (TR3_REGEN); break;
- case 6: o_ptr->art_flags2 |= (TR2_FREE_ACT); break;
- case 7: o_ptr->art_flags2 |= (TR2_HOLD_LIFE); break;
+ case 0: add_flag(o_ptr->art_flags, TR_FEATHER); break;
+ case 1: add_flag(o_ptr->art_flags, TR_LITE); break;
+ case 2: add_flag(o_ptr->art_flags, TR_SEE_INVIS); break;
+ case 3: add_flag(o_ptr->art_flags, TR_WARNING); break;
+ case 4: add_flag(o_ptr->art_flags, TR_SLOW_DIGEST); break;
+ case 5: add_flag(o_ptr->art_flags, TR_REGEN); break;
+ case 6: add_flag(o_ptr->art_flags, TR_FREE_ACT); break;
+ case 7: add_flag(o_ptr->art_flags, TR_HOLD_LIFE); break;
}
o_ptr->xtra2 = 0;
}
if (z_older_than(10, 4, 9))
{
- if (o_ptr->art_flags1 & TR1_MAGIC_MASTERY)
+ if (have_flag(o_ptr->art_flags, TR_MAGIC_MASTERY))
{
- o_ptr->art_flags1 &= ~(TR1_MAGIC_MASTERY);
- o_ptr->art_flags3 |= (TR3_DEC_MANA);
+ remove_flag(o_ptr->art_flags, TR_MAGIC_MASTERY);
+ add_flag(o_ptr->art_flags, TR_DEC_MANA);
}
}
if ((r_ptr->flags2 & (RF2_TAKE_ITEM | RF2_KILL_ITEM)) &&
(!is_pet(m_ptr) || (p_ptr->pet_extra_flags & PF_PICKUP_ITEMS)))
{
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
u32b flg2 = 0L;
u32b flg3 = 0L;
char o_name[MAX_NLEN];
/* Extract some flags */
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
/* Acquire the object name */
object_desc(o_name, o_ptr, TRUE, 3);
monster_desc(m_name, m_ptr, 0x04);
/* React to objects that hurt the monster */
- if (f1 & TR1_KILL_DRAGON) flg3 |= (RF3_DRAGON);
- if (f1 & TR1_SLAY_DRAGON) flg3 |= (RF3_DRAGON);
- if (f1 & TR1_SLAY_TROLL) flg3 |= (RF3_TROLL);
- if (f1 & TR1_SLAY_GIANT) flg3 |= (RF3_GIANT);
- if (f1 & TR1_SLAY_ORC) flg3 |= (RF3_ORC);
- if (f1 & TR1_SLAY_DEMON) flg3 |= (RF3_DEMON);
- if (f1 & TR1_SLAY_UNDEAD) flg3 |= (RF3_UNDEAD);
- if (f1 & TR1_SLAY_ANIMAL) flg3 |= (RF3_ANIMAL);
- if (f1 & TR1_SLAY_EVIL) flg3 |= (RF3_EVIL);
- if (f3 & TR3_SLAY_HUMAN) flg2 |= (RF2_HUMAN);
+ if (have_flag(flgs, TR_KILL_DRAGON)) flg3 |= (RF3_DRAGON);
+ if (have_flag(flgs, TR_SLAY_DRAGON)) flg3 |= (RF3_DRAGON);
+ if (have_flag(flgs, TR_SLAY_TROLL)) flg3 |= (RF3_TROLL);
+ if (have_flag(flgs, TR_KILL_TROLL)) flg3 |= (RF3_TROLL);
+ if (have_flag(flgs, TR_KILL_GIANT)) flg3 |= (RF3_GIANT);
+ if (have_flag(flgs, TR_SLAY_GIANT)) flg3 |= (RF3_GIANT);
+ if (have_flag(flgs, TR_SLAY_ORC)) flg3 |= (RF3_ORC);
+ if (have_flag(flgs, TR_KILL_ORC)) flg3 |= (RF3_ORC);
+ if (have_flag(flgs, TR_SLAY_DEMON)) flg3 |= (RF3_DEMON);
+ if (have_flag(flgs, TR_KILL_DEMON)) flg3 |= (RF3_DEMON);
+ if (have_flag(flgs, TR_SLAY_UNDEAD)) flg3 |= (RF3_UNDEAD);
+ if (have_flag(flgs, TR_KILL_UNDEAD)) flg3 |= (RF3_UNDEAD);
+ if (have_flag(flgs, TR_SLAY_ANIMAL)) flg3 |= (RF3_ANIMAL);
+ if (have_flag(flgs, TR_KILL_ANIMAL)) flg3 |= (RF3_ANIMAL);
+ if (have_flag(flgs, TR_SLAY_EVIL)) flg3 |= (RF3_EVIL);
+ if (have_flag(flgs, TR_KILL_EVIL)) flg3 |= (RF3_EVIL);
+ if (have_flag(flgs, TR_SLAY_HUMAN)) flg2 |= (RF2_HUMAN);
+ if (have_flag(flgs, TR_KILL_HUMAN)) flg2 |= (RF2_HUMAN);
/* The object cannot be picked up by the monster */
if (artifact_p(o_ptr) || (r_ptr->flags3 & flg3) || (r_ptr->flags2 & flg2) ||
if (r_ptr->flags2 & (RF2_STUPID)) r_ptr->r_flags2 |= (RF2_STUPID);
}
}
+
+ /* Magical sensing */
+ if ((p_ptr->esp_animal) && (r_ptr->flags3 & (RF3_ANIMAL)))
+ {
+ flag = TRUE;
+ r_ptr->r_flags3 |= (RF3_ANIMAL);
+
+ }
+
+ /* Magical sensing */
+ if ((p_ptr->esp_undead) && (r_ptr->flags3 & (RF3_UNDEAD)))
+ {
+ flag = TRUE;
+ r_ptr->r_flags3 |= (RF3_UNDEAD);
+
+ }
+
+ /* Magical sensing */
+ if ((p_ptr->esp_demon) && (r_ptr->flags3 & (RF3_DEMON)))
+ {
+ flag = TRUE;
+ r_ptr->r_flags3 |= (RF3_DEMON);
+
+ }
+
+ /* Magical sensing */
+ if ((p_ptr->esp_orc) && (r_ptr->flags3 & (RF3_ORC)))
+ {
+ flag = TRUE;
+ r_ptr->r_flags3 |= (RF3_ORC);
+
+ }
+
+ /* Magical sensing */
+ if ((p_ptr->esp_troll) && (r_ptr->flags3 & (RF3_TROLL)))
+ {
+ flag = TRUE;
+ r_ptr->r_flags3 |= (RF3_TROLL);
+
+ }
+
+ /* Magical sensing */
+ if ((p_ptr->esp_giant) && (r_ptr->flags3 & (RF3_GIANT)))
+ {
+ flag = TRUE;
+ r_ptr->r_flags3 |= (RF3_GIANT);
+
+ }
+
+ /* Magical sensing */
+ if ((p_ptr->esp_dragon) && (r_ptr->flags3 & (RF3_DRAGON)))
+ {
+ flag = TRUE;
+ r_ptr->r_flags3 |= (RF3_DRAGON);
+
+ }
+
+ /* Magical sensing */
+ if ((p_ptr->esp_human) && (r_ptr->flags2 & (RF2_HUMAN)))
+ {
+ flag = TRUE;
+ r_ptr->r_flags2 |= (RF2_HUMAN);
+
+ }
+
+ /* Magical sensing */
+ if ((p_ptr->esp_evil) && (r_ptr->flags3 & (RF3_EVIL)))
+ {
+ flag = TRUE;
+ r_ptr->r_flags3 |= (RF3_EVIL);
+
+ }
+
+ /* Magical sensing */
+ if ((p_ptr->esp_good) && (r_ptr->flags3 & (RF3_GOOD)))
+ {
+ flag = TRUE;
+ r_ptr->r_flags3 |= (RF3_GOOD);
+
+ }
+
+ /* Magical sensing */
+ if ((p_ptr->esp_nonliving) &&
+ (r_ptr->flags3 & (RF3_NONLIVING)) &&
+ !(r_ptr->flags3 & (RF3_DEMON)) &&
+ !(r_ptr->flags3 & (RF3_UNDEAD)))
+ {
+ flag = TRUE;
+ r_ptr->r_flags3 |= (RF3_NONLIVING);
+
+ }
+
+ /* Magical sensing */
+ if ((p_ptr->esp_unique) && (r_ptr->flags1 & (RF1_UNIQUE)))
+ {
+ flag = TRUE;
+ r_ptr->r_flags1 |= (RF1_UNIQUE);
+
+ }
}
/* Normal line of sight, and not blind */
bool changed = FALSE;
int curse_power = 0;
u32b new_curse;
- u32b o1, o2, o3;
+ u32b oflgs[TR_FLAG_SIZE];
object_type *o_ptr = &inventory[INVEN_RARM + randint0(12)];
char o_name[MAX_NLEN];
if (!o_ptr->k_idx) return;
- object_flags(o_ptr, &o1, &o2, &o3);
+ object_flags(o_ptr, oflgs);
object_desc(o_name, o_ptr, FALSE, 0);
/* Extra, biased saving throw for blessed items */
- if ((o3 & TR3_BLESSED) && (randint1(888) > chance))
+ if (have_flag(oflgs, TR_BLESSED) && (randint1(888) > chance))
{
#ifdef JP
msg_format("%s¤Ï¼ö¤¤¤òÄ·¤ÍÊÖ¤·¤¿¡ª", o_name,
case 160+5:
{
int i, oldfy, oldfx;
- u32b f1 = 0 , f2 = 0 , f3 = 0;
+ u32b flgs[TR_FLAG_SIZE];
object_type *o_ptr;
oldfy = m_ptr->fy;
o_ptr = &inventory[i];
if(!cursed_p(o_ptr))
{
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
- if((f3 & TR3_TELEPORT) || (p_ptr->muta1 & MUT1_VTELEPORT) || (p_ptr->pclass == CLASS_IMITATOR))
+ if((have_flag(flgs, TR_TELEPORT)) || (p_ptr->muta1 & MUT1_VTELEPORT) || (p_ptr->pclass == CLASS_IMITATOR))
{
#ifdef JP
if(get_check_strict("¤Ä¤¤¤Æ¤¤¤¤Þ¤¹¤«¡©", CHECK_OKAY_CANCEL))
case 160+5:
{
int i, oldfy, oldfx;
- u32b f1 = 0 , f2 = 0 , f3 = 0;
+ u32b flgs[TR_FLAG_SIZE];
object_type *o_ptr;
oldfy = m_ptr->fy;
o_ptr = &inventory[i];
if(!cursed_p(o_ptr))
{
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
- if((f3 & TR3_TELEPORT) || (p_ptr->muta1 & MUT1_VTELEPORT) || (p_ptr->pclass == CLASS_IMITATOR))
+ if((have_flag(flgs, TR_TELEPORT)) || (p_ptr->muta1 & MUT1_VTELEPORT) || (p_ptr->pclass == CLASS_IMITATOR))
{
#ifdef JP
if(get_check_strict("¤Ä¤¤¤Æ¤¤¤¤Þ¤¹¤«¡©", CHECK_OKAY_CANCEL))
/*
* Obtain the "flags" for an item
*/
-void object_flags(object_type *o_ptr, u32b *f1, u32b *f2, u32b *f3)
+void object_flags(object_type *o_ptr, u32b flgs[TR_FLAG_SIZE])
{
object_kind *k_ptr = &k_info[o_ptr->k_idx];
+ int i;
/* Base object */
- (*f1) = k_ptr->flags1;
- (*f2) = k_ptr->flags2;
- (*f3) = k_ptr->flags3;
+ for (i = 0; i < TR_FLAG_SIZE; i++)
+ flgs[i] = k_ptr->flags[i];
/* Artifact */
if (o_ptr->name1)
{
artifact_type *a_ptr = &a_info[o_ptr->name1];
- (*f1) = a_ptr->flags1;
- (*f2) = a_ptr->flags2;
- (*f3) = a_ptr->flags3;
+ for (i = 0; i < TR_FLAG_SIZE; i++)
+ flgs[i] = a_ptr->flags[i];
}
/* Ego-item */
{
ego_item_type *e_ptr = &e_info[o_ptr->name2];
- (*f1) |= e_ptr->flags1;
- (*f2) |= e_ptr->flags2;
- (*f3) |= e_ptr->flags3;
+ for (i = 0; i < TR_FLAG_SIZE; i++)
+ flgs[i] |= e_ptr->flags[i];
if ((o_ptr->name2 == EGO_LITE_AURA_FIRE) && !o_ptr->xtra4 && (o_ptr->sval <= SV_LITE_LANTERN))
{
- (*f3) &= ~(TR3_SH_FIRE);
+ remove_flag(flgs, TR_SH_FIRE);
}
else if ((o_ptr->name2 == EGO_LITE_INFRA) && !o_ptr->xtra4 && (o_ptr->sval <= SV_LITE_LANTERN))
{
- (*f1) &= ~(TR1_INFRA);
+ remove_flag(flgs, TR_INFRA);
}
else if ((o_ptr->name2 == EGO_LITE_EYE) && !o_ptr->xtra4 && (o_ptr->sval <= SV_LITE_LANTERN))
{
- (*f2) &= ~(TR2_RES_BLIND);
- (*f3) &= ~(TR3_SEE_INVIS);
+ remove_flag(flgs, TR_RES_BLIND);
+ remove_flag(flgs, TR_SEE_INVIS);
}
}
/* Random artifact ! */
- if (o_ptr->art_flags1 || o_ptr->art_flags2 || o_ptr->art_flags3)
- {
- (*f1) |= o_ptr->art_flags1;
- (*f2) |= o_ptr->art_flags2;
- (*f3) |= o_ptr->art_flags3;
- }
+ for (i = 0; i < TR_FLAG_SIZE; i++)
+ flgs[i] |= o_ptr->art_flags[i];
if ((o_ptr->tval > TV_CAPTURE) && o_ptr->xtra3)
{
- if (o_ptr->xtra3 < 33)
- {
- (*f1) |= (0x00000001 << (o_ptr->xtra3-1));
- }
- else if (o_ptr->xtra3 < 65)
+ if (o_ptr->xtra3 <= 96)
{
- (*f2) |= (0x00000001 << (o_ptr->xtra3-33));
- }
- else if (o_ptr->xtra3 < 97)
- {
- (*f3) |= (0x00000001 << (o_ptr->xtra3-65));
+ add_flag(flgs, o_ptr->xtra3 - 1);
}
else if (o_ptr->xtra3 == ESSENCE_TMP_RES_ACID)
{
- (*f2) |= TR2_RES_ACID;
+ add_flag(flgs, TR_RES_ACID);
}
else if (o_ptr->xtra3 == ESSENCE_TMP_RES_ELEC)
{
- (*f2) |= TR2_RES_ELEC;
+ add_flag(flgs, TR_RES_ELEC);
}
else if (o_ptr->xtra3 == ESSENCE_TMP_RES_FIRE)
{
- (*f2) |= TR2_RES_FIRE;
+ add_flag(flgs, TR_RES_FIRE);
}
else if (o_ptr->xtra3 == ESSENCE_TMP_RES_COLD)
{
- (*f2) |= TR2_RES_COLD;
+ add_flag(flgs, TR_RES_COLD);
}
else if (o_ptr->xtra3 == ESSENCE_SH_FIRE)
{
- (*f2) |= TR2_RES_FIRE;
- (*f3) |= TR3_SH_FIRE;
+ add_flag(flgs, TR_RES_FIRE);
+ add_flag(flgs, TR_SH_FIRE);
}
else if (o_ptr->xtra3 == ESSENCE_SH_ELEC)
{
- (*f2) |= TR2_RES_ELEC;
- (*f3) |= TR3_SH_ELEC;
+ add_flag(flgs, TR_RES_ELEC);
+ add_flag(flgs, TR_SH_ELEC);
}
else if (o_ptr->xtra3 == ESSENCE_SH_COLD)
{
- (*f2) |= TR2_RES_COLD;
- (*f3) |= TR3_SH_COLD;
+ add_flag(flgs, TR_RES_COLD);
+ add_flag(flgs, TR_SH_COLD);
}
else if (o_ptr->xtra3 == ESSENCE_RESISTANCE)
{
- (*f2) |= (TR2_RES_ACID | TR2_RES_ELEC | TR2_RES_FIRE | TR2_RES_COLD);;
+ add_flag(flgs, TR_RES_ACID);
+ add_flag(flgs, TR_RES_ELEC);
+ add_flag(flgs, TR_RES_FIRE);
+ add_flag(flgs, TR_RES_COLD);
}
}
}
/*
* Obtain the "flags" for an item which are known to the player
*/
-void object_flags_known(object_type *o_ptr, u32b *f1, u32b *f2, u32b *f3)
+void object_flags_known(object_type *o_ptr, u32b flgs[TR_FLAG_SIZE])
{
bool spoil = FALSE;
+ int i;
object_kind *k_ptr = &k_info[o_ptr->k_idx];
/* Clear */
- (*f1) = (*f2) = (*f3) = 0L;
+ for (i = 0; i < TR_FLAG_SIZE; i++)
+ flgs[i] = 0;
if (!object_aware_p(o_ptr)) return;
/* Base object */
- (*f1) = k_ptr->flags1;
- (*f2) = k_ptr->flags2;
- (*f3) = k_ptr->flags3;
+ for (i = 0; i < TR_FLAG_SIZE; i++)
+ flgs[i] = k_ptr->flags[i];
/* Must be identified */
if (!object_known_p(o_ptr)) return;
{
ego_item_type *e_ptr = &e_info[o_ptr->name2];
- (*f1) |= e_ptr->flags1;
- (*f2) |= e_ptr->flags2;
- (*f3) |= e_ptr->flags3;
+ for (i = 0; i < TR_FLAG_SIZE; i++)
+ flgs[i] |= e_ptr->flags[i];
if ((o_ptr->name2 == EGO_LITE_AURA_FIRE) && !o_ptr->xtra4 && (o_ptr->sval <= SV_LITE_LANTERN))
{
- (*f3) &= ~(TR3_SH_FIRE);
+ remove_flag(flgs, TR_SH_FIRE);
}
else if ((o_ptr->name2 == EGO_LITE_INFRA) && !o_ptr->xtra4 && (o_ptr->sval <= SV_LITE_LANTERN))
{
- (*f1) &= ~(TR1_INFRA);
+ remove_flag(flgs, TR_INFRA);
}
else if ((o_ptr->name2 == EGO_LITE_EYE) && !o_ptr->xtra4 && (o_ptr->sval <= SV_LITE_LANTERN))
{
- (*f2) &= ~(TR2_RES_BLIND);
- (*f3) &= ~(TR3_SEE_INVIS);
+ remove_flag(flgs, TR_RES_BLIND);
+ remove_flag(flgs, TR_SEE_INVIS);
}
}
{
artifact_type *a_ptr = &a_info[o_ptr->name1];
- (*f1) = a_ptr->flags1;
- (*f2) = a_ptr->flags2;
- (*f3) = a_ptr->flags3;
+ for (i = 0; i < TR_FLAG_SIZE; i++)
+ flgs[i] = a_ptr->flags[i];
}
/* Random artifact ! */
- if (o_ptr->art_flags1 || o_ptr->art_flags2 || o_ptr->art_flags3)
- {
- (*f1) |= o_ptr->art_flags1;
- (*f2) |= o_ptr->art_flags2;
- (*f3) |= o_ptr->art_flags3;
- }
+ for (i = 0; i < TR_FLAG_SIZE; i++)
+ flgs[i] |= o_ptr->art_flags[i];
}
if ((o_ptr->tval > TV_CAPTURE) && o_ptr->xtra3)
{
- if (o_ptr->xtra3 < 33)
- {
- (*f1) |= (0x00000001 << (o_ptr->xtra3-1));
- }
- else if (o_ptr->xtra3 < 65)
- {
- (*f2) |= (0x00000001 << (o_ptr->xtra3-33));
- }
- else if (o_ptr->xtra3 < 97)
+ if (o_ptr->xtra3 <= 96)
{
- (*f3) |= (0x00000001 << (o_ptr->xtra3-65));
+ add_flag(flgs, o_ptr->xtra3 - 1);
}
else if (o_ptr->xtra3 == ESSENCE_TMP_RES_ACID)
{
- (*f2) |= TR2_RES_ACID;
+ add_flag(flgs, TR_RES_ACID);
}
else if (o_ptr->xtra3 == ESSENCE_TMP_RES_ELEC)
{
- (*f2) |= TR2_RES_ELEC;
+ add_flag(flgs, TR_RES_ELEC);
}
else if (o_ptr->xtra3 == ESSENCE_TMP_RES_FIRE)
{
- (*f2) |= TR2_RES_FIRE;
+ add_flag(flgs, TR_RES_FIRE);
}
else if (o_ptr->xtra3 == ESSENCE_TMP_RES_COLD)
{
- (*f2) |= TR2_RES_COLD;
+ add_flag(flgs, TR_RES_COLD);
}
else if (o_ptr->xtra3 == ESSENCE_SH_FIRE)
{
- (*f2) |= TR2_RES_FIRE;
- (*f3) |= TR3_SH_FIRE;
+ add_flag(flgs, TR_RES_FIRE);
+ add_flag(flgs, TR_SH_FIRE);
}
else if (o_ptr->xtra3 == ESSENCE_SH_ELEC)
{
- (*f2) |= TR2_RES_ELEC;
- (*f3) |= TR3_SH_ELEC;
+ add_flag(flgs, TR_RES_ELEC);
+ add_flag(flgs, TR_SH_ELEC);
}
else if (o_ptr->xtra3 == ESSENCE_SH_COLD)
{
- (*f2) |= TR2_RES_COLD;
- (*f3) |= TR3_SH_COLD;
+ add_flag(flgs, TR_RES_COLD);
+ add_flag(flgs, TR_SH_COLD);
}
else if (o_ptr->xtra3 == ESSENCE_RESISTANCE)
{
- (*f2) |= (TR2_RES_ACID | TR2_RES_ELEC | TR2_RES_FIRE | TR2_RES_COLD);;
+ add_flag(flgs, TR_RES_ACID);
+ add_flag(flgs, TR_RES_ELEC);
+ add_flag(flgs, TR_RES_FIRE);
+ add_flag(flgs, TR_RES_COLD);
}
}
}
*/
cptr item_activation(object_type *o_ptr)
{
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
/* Extract the flags */
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
/* Require activation ability */
#ifdef JP
-if (!(f3 & (TR3_ACTIVATE))) return ("¤Ê¤·");
+if (!(have_flag(flgs, TR_ACTIVATE))) return ("¤Ê¤·");
#else
- if (!(f3 & (TR3_ACTIVATE))) return ("nothing");
+ if (!(have_flag(flgs, TR_ACTIVATE))) return ("nothing");
#endif
{
int i = 0, j, k;
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
cptr info[128];
- u32b flag;
char o_name[MAX_NLEN];
int wid, hgt;
/* Extract the flags */
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
/* Extract the description */
{
}
/* Mega-Hack -- describe activation */
- if (f3 & (TR3_ACTIVATE))
+ if (have_flag(flgs, TR_ACTIVATE))
{
#ifdef JP
info[i++] = "»ÏÆ°¤·¤¿¤È¤¤Î¸ú²Ì...";
/* And then describe it fully */
- if (f2 & (TR2_RIDING))
+ if (have_flag(flgs, TR_RIDING))
{
if ((o_ptr->tval == TV_POLEARM) && ((o_ptr->sval == SV_LANCE) || (o_ptr->sval == SV_HEAVY_LANCE)))
#ifdef JP
#endif
}
- if (f1 & (TR1_STR))
+ if (have_flag(flgs, TR_STR))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÏÓÎϤ˱ƶÁ¤òµÚ¤Ü¤¹";
#endif
}
- if (f1 & (TR1_INT))
+ if (have_flag(flgs, TR_INT))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÃÎǽ¤Ë±Æ¶Á¤òµÚ¤Ü¤¹";
#endif
}
- if (f1 & (TR1_WIS))
+ if (have_flag(flgs, TR_WIS))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¸¤µ¤Ë±Æ¶Á¤òµÚ¤Ü¤¹";
#endif
}
- if (f1 & (TR1_DEX))
+ if (have_flag(flgs, TR_DEX))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï´ïÍѤµ¤Ë±Æ¶Á¤òµÚ¤Ü¤¹";
#endif
}
- if (f1 & (TR1_CON))
+ if (have_flag(flgs, TR_CON))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÂѵ×ÎϤ˱ƶÁ¤òµÚ¤Ü¤¹";
#endif
}
- if (f1 & (TR1_CHR))
+ if (have_flag(flgs, TR_CHR))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÌ¥ÎϤ˱ƶÁ¤òµÚ¤Ü¤¹";
}
- if (f1 & (TR1_MAGIC_MASTERY))
+ if (have_flag(flgs, TR_MAGIC_MASTERY))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏËâË¡Æ»¶ñ»ÈÍÑǽÎϤ˱ƶÁ¤òµÚ¤Ü¤¹";
#endif
}
- if (f1 & (TR1_STEALTH))
+ if (have_flag(flgs, TR_STEALTH))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï±£Ì©¹ÔưǽÎϤ˱ƶÁ¤òµÚ¤Ü¤¹";
#endif
}
- if (f1 & (TR1_SEARCH))
+ if (have_flag(flgs, TR_SEARCH))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ïõº÷ǽÎϤ˱ƶÁ¤òµÚ¤Ü¤¹";
#endif
}
- if (f1 & (TR1_INFRA))
+ if (have_flag(flgs, TR_INFRA))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÀÖ³°Àþ»ëÎϤ˱ƶÁ¤òµÚ¤Ü¤¹";
#endif
}
- if (f1 & (TR1_TUNNEL))
+ if (have_flag(flgs, TR_TUNNEL))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏºÎ·¡Ç½ÎϤ˱ƶÁ¤òµÚ¤Ü¤¹";
#endif
}
- if (f1 & (TR1_SPEED))
+ if (have_flag(flgs, TR_SPEED))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¥¹¥Ô¡¼¥É¤Ë±Æ¶Á¤òµÚ¤Ü¤¹";
#endif
}
- if (f1 & (TR1_BLOWS))
+ if (have_flag(flgs, TR_BLOWS))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÂÇ·â²ó¿ô¤Ë±Æ¶Á¤òµÚ¤Ü¤¹";
}
- if (f1 & (TR1_BRAND_ACID))
+ if (have_flag(flgs, TR_BRAND_ACID))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï»À¤Ë¤è¤Ã¤ÆÂ礤ʥÀ¥á¡¼¥¸¤òÍ¿¤¨¤ë";
#endif
}
- if (f1 & (TR1_BRAND_ELEC))
+ if (have_flag(flgs, TR_BRAND_ELEC))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÅÅ·â¤Ë¤è¤Ã¤ÆÂ礤ʥÀ¥á¡¼¥¸¤òÍ¿¤¨¤ë";
#endif
}
- if (f1 & (TR1_BRAND_FIRE))
+ if (have_flag(flgs, TR_BRAND_FIRE))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï²Ð±ê¤Ë¤è¤Ã¤ÆÂ礤ʥÀ¥á¡¼¥¸¤òÍ¿¤¨¤ë";
#endif
}
- if (f1 & (TR1_BRAND_COLD))
+ if (have_flag(flgs, TR_BRAND_COLD))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÎ䵤¤Ë¤è¤Ã¤ÆÂ礤ʥÀ¥á¡¼¥¸¤òÍ¿¤¨¤ë";
}
- if (f1 & (TR1_BRAND_POIS))
+ if (have_flag(flgs, TR_BRAND_POIS))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏŨ¤òÆǤ¹¤ë¡£";
}
- if (f1 & (TR1_CHAOTIC))
+ if (have_flag(flgs, TR_CHAOTIC))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¥«¥ª¥¹Åª¤Ê¸ú²Ì¤òµÚ¤Ü¤¹¡£";
}
- if (f1 & (TR1_VAMPIRIC))
+ if (have_flag(flgs, TR_VAMPIRIC))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏŨ¤«¤é¥Ò¥Ã¥È¥Ý¥¤¥ó¥È¤òµÛ¼ý¤¹¤ë¡£";
}
- if (f1 & (TR1_IMPACT))
+ if (have_flag(flgs, TR_IMPACT))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÃϿ̤òµ¯¤³¤¹¤³¤È¤¬¤Ç¤¤ë¡£";
}
- if (f1 & (TR1_VORPAL))
+ if (have_flag(flgs, TR_VORPAL))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÈó¾ï¤ËÀÚ¤ìÌ£¤¬±Ô¤¯Å¨¤òÀÚÃǤ¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£";
}
- if (f1 & (TR1_KILL_DRAGON))
+ if (have_flag(flgs, TR_KILL_DRAGON))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¥É¥é¥´¥ó¤Ë¤È¤Ã¤Æ¤ÎŷŨ¤Ç¤¢¤ë¡£";
#endif
}
- else if (f1 & (TR1_SLAY_DRAGON))
+ else if (have_flag(flgs, TR_SLAY_DRAGON))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¥É¥é¥´¥ó¤ËÂФ·¤ÆÆä˶²¤ë¤Ù¤ÎϤòȯ´ø¤¹¤ë¡£";
#endif
}
- if (f1 & (TR1_SLAY_ORC))
+
+ if (have_flag(flgs, TR_KILL_ORC))
+ {
+#ifdef JP
+info[i++] = "¤½¤ì¤Ï¥ª¡¼¥¯¤Ë¤È¤Ã¤Æ¤ÎŷŨ¤Ç¤¢¤ë¡£";
+#else
+ info[i++] = "It is a great bane of orcs.";
+#endif
+
+ }
+ if (have_flag(flgs, TR_SLAY_ORC))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¥ª¡¼¥¯¤ËÂФ·¤ÆÆä˶²¤ë¤Ù¤ÎϤòȯ´ø¤¹¤ë¡£";
#endif
}
- if (f1 & (TR1_SLAY_TROLL))
+
+ if (have_flag(flgs, TR_KILL_TROLL))
+ {
+#ifdef JP
+info[i++] = "¤½¤ì¤Ï¥È¥í¥ë¤Ë¤È¤Ã¤Æ¤ÎŷŨ¤Ç¤¢¤ë¡£";
+#else
+ info[i++] = "It is a great bane of trolls.";
+#endif
+
+ }
+ if (have_flag(flgs, TR_SLAY_TROLL))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¥È¥í¥ë¤ËÂФ·¤ÆÆä˶²¤ë¤Ù¤ÎϤòȯ´ø¤¹¤ë¡£";
#endif
}
- if (f1 & (TR1_SLAY_GIANT))
+
+ if (have_flag(flgs, TR_KILL_GIANT))
{
- if (o_ptr->name1 == ART_HRUNTING)
#ifdef JP
info[i++] = "¤½¤ì¤Ïµð¿Í¤Ë¤È¤Ã¤Æ¤ÎŷŨ¤Ç¤¢¤ë¡£";
#else
info[i++] = "It is a great bane of giants.";
#endif
- else
+ }
+ else if (have_flag(flgs, TR_SLAY_GIANT))
+ {
#ifdef JP
info[i++] = "¤½¤ì¤Ï¥¸¥ã¥¤¥¢¥ó¥È¤ËÂФ·¤ÆÆä˶²¤ë¤Ù¤ÎϤòȯ´ø¤¹¤ë¡£";
#else
#endif
}
- if (f1 & (TR1_SLAY_DEMON))
+
+ if (have_flag(flgs, TR_KILL_DEMON))
+ {
+#ifdef JP
+info[i++] = "¤½¤ì¤Ï¥Ç¡¼¥â¥ó¤Ë¤È¤Ã¤Æ¤ÎŷŨ¤Ç¤¢¤ë¡£";
+#else
+ info[i++] = "It is a great bane of demons.";
+#endif
+
+ }
+ if (have_flag(flgs, TR_SLAY_DEMON))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¥Ç¡¼¥â¥ó¤ËÂФ·¤ÆÀ»¤Ê¤ëÎϤòȯ´ø¤¹¤ë¡£";
#endif
}
- if (f1 & (TR1_SLAY_UNDEAD))
+
+ if (have_flag(flgs, TR_KILL_UNDEAD))
+ {
+#ifdef JP
+info[i++] = "¤½¤ì¤Ï¥¢¥ó¥Ç¥Ã¥É¤Ë¤È¤Ã¤Æ¤ÎŷŨ¤Ç¤¢¤ë¡£";
+#else
+ info[i++] = "It is a great bane of undead.";
+#endif
+
+ }
+ if (have_flag(flgs, TR_SLAY_UNDEAD))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¥¢¥ó¥Ç¥Ã¥É¤ËÂФ·¤ÆÀ»¤Ê¤ëÎϤòȯ´ø¤¹¤ë¡£";
#endif
}
- if (f1 & (TR1_SLAY_EVIL))
+
+ if (have_flag(flgs, TR_KILL_EVIL))
+ {
+#ifdef JP
+info[i++] = "¤½¤ì¤Ï¼Ù°¤Ê¤ë¸ºß¤Ë¤È¤Ã¤Æ¤ÎŷŨ¤Ç¤¢¤ë¡£";
+#else
+ info[i++] = "It is a great bane of evil monsters.";
+#endif
+
+ }
+ if (have_flag(flgs, TR_SLAY_EVIL))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¼Ù°¤Ê¤ë¸ºß¤ËÂФ·¤ÆÀ»¤Ê¤ëÎϤǹ¶·â¤¹¤ë¡£";
#endif
}
- if (f1 & (TR1_SLAY_ANIMAL))
+
+ if (have_flag(flgs, TR_KILL_ANIMAL))
+ {
+#ifdef JP
+info[i++] = "¤½¤ì¤Ï¼«Á³³¦¤Îưʪ¤Ë¤È¤Ã¤Æ¤ÎŷŨ¤Ç¤¢¤ë¡£";
+#else
+ info[i++] = "It is a great bane of natural creatures.";
+#endif
+
+ }
+ if (have_flag(flgs, TR_SLAY_ANIMAL))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¼«Á³³¦¤Îưʪ¤ËÂФ·¤ÆÆä˶²¤ë¤Ù¤ÎϤòȯ´ø¤¹¤ë¡£";
#endif
}
- if (f3 & (TR3_SLAY_HUMAN))
+
+ if (have_flag(flgs, TR_KILL_HUMAN))
+ {
+#ifdef JP
+info[i++] = "¤½¤ì¤Ï¿Í´Ö¤Ë¤È¤Ã¤Æ¤ÎŷŨ¤Ç¤¢¤ë¡£";
+#else
+ info[i++] = "It is a great bane of humans.";
+#endif
+
+ }
+ if (have_flag(flgs, TR_SLAY_HUMAN))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¿Í´Ö¤ËÂФ·¤ÆÆä˶²¤ë¤Ù¤ÎϤòȯ´ø¤¹¤ë¡£";
}
- if (f1 & (TR1_FORCE_WEAPON))
+ if (have_flag(flgs, TR_FORCE_WEAPON))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï»ÈÍѼԤÎËâÎϤò»È¤Ã¤Æ¹¶·â¤¹¤ë¡£";
#endif
}
- if (f3 & (TR3_DEC_MANA))
+ if (have_flag(flgs, TR_DEC_MANA))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏËâÎϤξÃÈñ¤ò²¡¤µ¤¨¤ë¡£";
#endif
}
- if (f2 & (TR2_SUST_STR))
+ if (have_flag(flgs, TR_SUST_STR))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¤¢¤Ê¤¿¤ÎÏÓÎϤò°Ý»ý¤¹¤ë¡£";
#endif
}
- if (f2 & (TR2_SUST_INT))
+ if (have_flag(flgs, TR_SUST_INT))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¤¢¤Ê¤¿¤ÎÃÎǽ¤ò°Ý»ý¤¹¤ë¡£";
#endif
}
- if (f2 & (TR2_SUST_WIS))
+ if (have_flag(flgs, TR_SUST_WIS))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¤¢¤Ê¤¿¤Î¸¤µ¤ò°Ý»ý¤¹¤ë¡£";
#endif
}
- if (f2 & (TR2_SUST_DEX))
+ if (have_flag(flgs, TR_SUST_DEX))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¤¢¤Ê¤¿¤Î´ïÍѤµ¤ò°Ý»ý¤¹¤ë¡£";
#endif
}
- if (f2 & (TR2_SUST_CON))
+ if (have_flag(flgs, TR_SUST_CON))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¤¢¤Ê¤¿¤ÎÂѵ×ÎϤò°Ý»ý¤¹¤ë¡£";
#endif
}
- if (f2 & (TR2_SUST_CHR))
+ if (have_flag(flgs, TR_SUST_CHR))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¤¢¤Ê¤¿¤ÎÌ¥ÎϤò°Ý»ý¤¹¤ë¡£";
}
- if (f2 & (TR2_IM_ACID))
+ if (have_flag(flgs, TR_IM_ACID))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï»À¤ËÂФ¹¤ë´°Á´¤ÊÌȱ֤ò¼ø¤±¤ë¡£";
#endif
}
- if (f2 & (TR2_IM_ELEC))
+ if (have_flag(flgs, TR_IM_ELEC))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÅÅ·â¤ËÂФ¹¤ë´°Á´¤ÊÌȱ֤ò¼ø¤±¤ë¡£";
#endif
}
- if (f2 & (TR2_IM_FIRE))
+ if (have_flag(flgs, TR_IM_FIRE))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï²Ð¤ËÂФ¹¤ë´°Á´¤ÊÌȱ֤ò¼ø¤±¤ë¡£";
#endif
}
- if (f2 & (TR2_IM_COLD))
+ if (have_flag(flgs, TR_IM_COLD))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï´¨¤µ¤ËÂФ¹¤ë´°Á´¤ÊÌȱ֤ò¼ø¤±¤ë¡£";
}
- if (f2 & (TR2_THROW))
+ if (have_flag(flgs, TR_THROW))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏŨ¤ËÅꤲ¤ÆÂ礤ʥÀ¥á¡¼¥¸¤òÍ¿¤¨¤ë¤³¤È¤¬¤Ç¤¤ë¡£";
#endif
}
- if (f2 & (TR2_FREE_ACT))
+ if (have_flag(flgs, TR_FREE_ACT))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏËãáã¤ËÂФ¹¤ë´°Á´¤ÊÌȱ֤ò¼ø¤±¤ë¡£";
#endif
}
- if (f2 & (TR2_HOLD_LIFE))
+ if (have_flag(flgs, TR_HOLD_LIFE))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÀ¸Ì¿Îϵۼý¤ËÂФ¹¤ëÂÑÀ¤ò¼ø¤±¤ë¡£";
#endif
}
- if (f2 & (TR2_RES_FEAR))
+ if (have_flag(flgs, TR_RES_FEAR))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¶²Éݤؤδ°Á´¤ÊÂÑÀ¤ò¼ø¤±¤ë¡£";
#endif
}
- if (f2 & (TR2_RES_ACID))
+ if (have_flag(flgs, TR_RES_ACID))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï»À¤Ø¤ÎÂÑÀ¤ò¼ø¤±¤ë¡£";
#endif
}
- if (f2 & (TR2_RES_ELEC))
+ if (have_flag(flgs, TR_RES_ELEC))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÅÅ·â¤Ø¤ÎÂÑÀ¤ò¼ø¤±¤ë¡£";
#endif
}
- if (f2 & (TR2_RES_FIRE))
+ if (have_flag(flgs, TR_RES_FIRE))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï²Ð¤Ø¤ÎÂÑÀ¤ò¼ø¤±¤ë¡£";
#endif
}
- if (f2 & (TR2_RES_COLD))
+ if (have_flag(flgs, TR_RES_COLD))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï´¨¤µ¤Ø¤ÎÂÑÀ¤ò¼ø¤±¤ë¡£";
#endif
}
- if (f2 & (TR2_RES_POIS))
+ if (have_flag(flgs, TR_RES_POIS))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÆǤؤÎÂÑÀ¤ò¼ø¤±¤ë¡£";
}
- if (f2 & (TR2_RES_LITE))
+ if (have_flag(flgs, TR_RES_LITE))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÁ®¸÷¤Ø¤ÎÂÑÀ¤ò¼ø¤±¤ë¡£";
#endif
}
- if (f2 & (TR2_RES_DARK))
+ if (have_flag(flgs, TR_RES_DARK))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï°Å¹õ¤Ø¤ÎÂÑÀ¤ò¼ø¤±¤ë¡£";
}
- if (f2 & (TR2_RES_BLIND))
+ if (have_flag(flgs, TR_RES_BLIND))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÌÕÌܤؤÎÂÑÀ¤ò¼ø¤±¤ë¡£";
#endif
}
- if (f2 & (TR2_RES_CONF))
+ if (have_flag(flgs, TR_RES_CONF))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ïº®Íð¤Ø¤ÎÂÑÀ¤ò¼ø¤±¤ë¡£";
#endif
}
- if (f2 & (TR2_RES_SOUND))
+ if (have_flag(flgs, TR_RES_SOUND))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¹ì²»¤Ø¤ÎÂÑÀ¤ò¼ø¤±¤ë¡£";
#endif
}
- if (f2 & (TR2_RES_SHARDS))
+ if (have_flag(flgs, TR_RES_SHARDS))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÇËÊҤؤÎÂÑÀ¤ò¼ø¤±¤ë¡£";
}
- if (f2 & (TR2_RES_NETHER))
+ if (have_flag(flgs, TR_RES_NETHER))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÃϹö¤Ø¤ÎÂÑÀ¤ò¼ø¤±¤ë¡£";
#endif
}
- if (f2 & (TR2_RES_NEXUS))
+ if (have_flag(flgs, TR_RES_NEXUS))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï°ø²Ìº®Íð¤Ø¤ÎÂÑÀ¤ò¼ø¤±¤ë¡£";
#endif
}
- if (f2 & (TR2_RES_CHAOS))
+ if (have_flag(flgs, TR_RES_CHAOS))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¥«¥ª¥¹¤Ø¤ÎÂÑÀ¤ò¼ø¤±¤ë¡£";
#endif
}
- if (f2 & (TR2_RES_DISEN))
+ if (have_flag(flgs, TR_RES_DISEN))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÎô²½¤Ø¤ÎÂÑÀ¤ò¼ø¤±¤ë¡£";
}
- if (f3 & (TR3_FEATHER))
+ if (have_flag(flgs, TR_FEATHER))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÃè¤ËÉ⤯¤³¤È¤ò²Äǽ¤Ë¤¹¤ë¡£";
#endif
}
- if (f3 & (TR3_LITE))
+ if (have_flag(flgs, TR_LITE))
{
if ((o_ptr->name2 == EGO_DARK) || (o_ptr->name1 == ART_NIGHT))
#ifdef JP
#endif
}
- if (f3 & (TR3_SEE_INVIS))
+ if (have_flag(flgs, TR_SEE_INVIS))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÆ©ÌÀ¤Ê¥â¥ó¥¹¥¿¡¼¤ò¸«¤ë¤³¤È¤ò²Äǽ¤Ë¤¹¤ë¡£";
#endif
}
- if (f3 & (TR3_TELEPATHY))
+ if (have_flag(flgs, TR_TELEPATHY))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤò¼ø¤±¤ë¡£";
#endif
}
- if (f3 & (TR3_SLOW_DIGEST))
+ if (have_flag(flgs, TR_ESP_ANIMAL))
+ {
+#ifdef JP
+info[i++] = "¤½¤ì¤Ï¼«Á³³¦¤ÎÀ¸Êª¤Î¸ºß¤ò´¶¤¸¤È¤ë¡£";
+#else
+ info[i++] = "It senses natural creatures.";
+#endif
+
+ }
+ if (have_flag(flgs, TR_ESP_UNDEAD))
+ {
+#ifdef JP
+info[i++] = "¤½¤ì¤Ï¥¢¥ó¥Ç¥Ã¥É¤Î¸ºß¤ò´¶¤¸¤È¤ë¡£";
+#else
+ info[i++] = "It senses undead.";
+#endif
+
+ }
+ if (have_flag(flgs, TR_ESP_DEMON))
+ {
+#ifdef JP
+info[i++] = "¤½¤ì¤Ï°Ëâ¤Î¸ºß¤ò´¶¤¸¤È¤ë¡£";
+#else
+ info[i++] = "It senses demons.";
+#endif
+
+ }
+ if (have_flag(flgs, TR_ESP_ORC))
+ {
+#ifdef JP
+info[i++] = "¤½¤ì¤Ï¥ª¡¼¥¯¤Î¸ºß¤ò´¶¤¸¤È¤ë¡£";
+#else
+ info[i++] = "It senses orcs.";
+#endif
+
+ }
+ if (have_flag(flgs, TR_ESP_TROLL))
+ {
+#ifdef JP
+info[i++] = "¤½¤ì¤Ï¥È¥í¥ë¤Î¸ºß¤ò´¶¤¸¤È¤ë¡£";
+#else
+ info[i++] = "It senses trolls.";
+#endif
+
+ }
+ if (have_flag(flgs, TR_ESP_GIANT))
+ {
+#ifdef JP
+info[i++] = "¤½¤ì¤Ïµð¿Í¤Î¸ºß¤ò´¶¤¸¤È¤ë¡£";
+#else
+ info[i++] = "It senses giants.";
+#endif
+
+ }
+ if (have_flag(flgs, TR_ESP_DRAGON))
+ {
+#ifdef JP
+info[i++] = "¤½¤ì¤Ï¥É¥é¥´¥ó¤Î¸ºß¤ò´¶¤¸¤È¤ë¡£";
+#else
+ info[i++] = "It senses dragons.";
+#endif
+
+ }
+ if (have_flag(flgs, TR_ESP_HUMAN))
+ {
+#ifdef JP
+info[i++] = "¤½¤ì¤Ï¿Í´Ö¤Î¸ºß¤ò´¶¤¸¤È¤ë¡£";
+#else
+ info[i++] = "It senses humans.";
+#endif
+
+ }
+ if (have_flag(flgs, TR_ESP_EVIL))
+ {
+#ifdef JP
+info[i++] = "¤½¤ì¤Ï¼Ù°¤ÊÀ¸¤Êª¤Î¸ºß¤ò´¶¤¸¤È¤ë¡£";
+#else
+ info[i++] = "It senses evil creatures.";
+#endif
+
+ }
+ if (have_flag(flgs, TR_ESP_GOOD))
+ {
+#ifdef JP
+info[i++] = "¤½¤ì¤ÏÁ±ÎɤÊÀ¸¤Êª¤Î¸ºß¤ò´¶¤¸¤È¤ë¡£";
+#else
+ info[i++] = "It senses good creatures.";
+#endif
+
+ }
+ if (have_flag(flgs, TR_ESP_NONLIVING))
+ {
+#ifdef JP
+info[i++] = "¤½¤ì¤Ï³èÆ°¤¹¤ë̵À¸ÊªÂΤθºß¤ò´¶¤¸¤È¤ë¡£";
+#else
+ info[i++] = "It senses non-living creatures.";
+#endif
+
+ }
+ if (have_flag(flgs, TR_ESP_UNIQUE))
+ {
+#ifdef JP
+info[i++] = "¤½¤ì¤ÏÆÃÊ̤ʶ¯Å¨¤Î¸ºß¤ò´¶¤¸¤È¤ë¡£";
+#else
+ info[i++] = "It senses unique monsters.";
+#endif
+
+ }
+ if (have_flag(flgs, TR_SLOW_DIGEST))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¤¢¤Ê¤¿¤Î¿·ÄÄÂå¼Õ¤òÃÙ¤¯¤¹¤ë¡£";
#endif
}
- if (f3 & (TR3_REGEN))
+ if (have_flag(flgs, TR_REGEN))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÂÎÎϲóÉüÎϤò¶¯²½¤¹¤ë¡£";
#endif
}
- if (f3 & (TR3_WARNING))
+ if (have_flag(flgs, TR_WARNING))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï´í¸±¤ËÂФ·¤Æ·Ù¹ð¤òȯ¤¹¤ë¡£";
#endif
}
- if (f2 & (TR2_REFLECT))
+ if (have_flag(flgs, TR_REFLECT))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÌð¤ä¥Ü¥ë¥È¤òÈ¿¼Í¤¹¤ë¡£";
#endif
}
- if (f3 & (TR3_SH_FIRE))
+ if (have_flag(flgs, TR_SH_FIRE))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï±ê¤Î¥Ð¥ê¥¢¤òÄ¥¤ë¡£";
#endif
}
- if (f3 & (TR3_SH_ELEC))
+ if (have_flag(flgs, TR_SH_ELEC))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÅŵ¤¤Î¥Ð¥ê¥¢¤òÄ¥¤ë¡£";
#endif
}
- if (f3 & (TR3_SH_COLD))
+ if (have_flag(flgs, TR_SH_COLD))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÎ䵤¤Î¥Ð¥ê¥¢¤òÄ¥¤ë¡£";
#endif
}
- if (f3 & (TR3_NO_MAGIC))
+ if (have_flag(flgs, TR_NO_MAGIC))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÈ¿ËâË¡¥Ð¥ê¥¢¤òÄ¥¤ë¡£";
#endif
}
- if (f3 & (TR3_NO_TELE))
+ if (have_flag(flgs, TR_NO_TELE))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¥Æ¥ì¥Ý¡¼¥È¤ò¼ÙË⤹¤ë¡£";
#endif
}
- if (f3 & (TR3_XTRA_MIGHT))
+ if (have_flag(flgs, TR_XTRA_MIGHT))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÌ𡿥ܥë¥È¡¿ÃƤò¤è¤ê¶¯ÎϤËȯ¼Í¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£";
#endif
}
- if (f3 & (TR3_XTRA_SHOTS))
+ if (have_flag(flgs, TR_XTRA_SHOTS))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÌ𡿥ܥë¥È¡¿ÃƤòÈó¾ï¤ËÁ᤯ȯ¼Í¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£";
}
- if (f3 & TR3_BLESSED)
+ if (have_flag(flgs, TR_BLESSED))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¿À¤Ë½ËÊ¡¤µ¤ì¤Æ¤¤¤ë¡£";
}
}
- if ((f3 & TR3_TY_CURSE) || (o_ptr->curse_flags & TRC_TY_CURSE))
+ if ((have_flag(flgs, TR_TY_CURSE)) || (o_ptr->curse_flags & TRC_TY_CURSE))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÂÀ¸Å¤Î²Ò¡¹¤·¤¤±åÇ°¤¬½É¤Ã¤Æ¤¤¤ë¡£";
#endif
}
- if ((f3 & TR3_AGGRAVATE) || (o_ptr->curse_flags & TRC_AGGRAVATE))
+ if ((have_flag(flgs, TR_AGGRAVATE)) || (o_ptr->curse_flags & TRC_AGGRAVATE))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÉÕ¶á¤Î¥â¥ó¥¹¥¿¡¼¤òÅܤ餻¤ë¡£";
#endif
}
- if ((f3 & (TR3_DRAIN_EXP)) || (o_ptr->curse_flags & TRC_DRAIN_EXP))
+ if ((have_flag(flgs, TR_DRAIN_EXP)) || (o_ptr->curse_flags & TRC_DRAIN_EXP))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï·Ð¸³ÃͤòµÛ¤¤¼è¤ë¡£";
#endif
}
- if ((f3 & (TR3_TELEPORT)) || (o_ptr->curse_flags & TRC_TELEPORT))
+ if ((have_flag(flgs, TR_TELEPORT)) || (o_ptr->curse_flags & TRC_TELEPORT))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï¥é¥ó¥À¥à¤Ê¥Æ¥ì¥Ý¡¼¥È¤ò°ú¤µ¯¤³¤¹¡£";
}
/* XTRA HACK ARTDESC */
- flag = TR3_IGNORE_ACID | TR3_IGNORE_ELEC | TR3_IGNORE_FIRE | TR3_IGNORE_COLD ;
- if ((f3 & flag) == flag)
+ if (have_flag(flgs, TR_IGNORE_ACID) &&
+ have_flag(flgs, TR_IGNORE_ELEC) &&
+ have_flag(flgs, TR_IGNORE_FIRE) &&
+ have_flag(flgs, TR_IGNORE_COLD))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï»À¡¦Åŷ⡦²Ð±ê¡¦Î䵤¤Ç¤Ï½ý¤Ä¤«¤Ê¤¤¡£";
info[i++] = "It cannot be harmed by the elements.";
#endif
} else {
- if (f3 & (TR3_IGNORE_ACID))
+ if (have_flag(flgs, TR_IGNORE_ACID))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï»À¤Ç¤Ï½ý¤Ä¤«¤Ê¤¤¡£";
#endif
}
- if (f3 & (TR3_IGNORE_ELEC))
+ if (have_flag(flgs, TR_IGNORE_ELEC))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÅÅ·â¤Ç¤Ï½ý¤Ä¤«¤Ê¤¤¡£";
#endif
}
- if (f3 & (TR3_IGNORE_FIRE))
+ if (have_flag(flgs, TR_IGNORE_FIRE))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï²Ð±ê¤Ç¤Ï½ý¤Ä¤«¤Ê¤¤¡£";
#endif
}
- if (f3 & (TR3_IGNORE_COLD))
+ if (have_flag(flgs, TR_IGNORE_COLD))
{
#ifdef JP
info[i++] = "¤½¤ì¤ÏÎ䵤¤Ç¤Ï½ý¤Ä¤«¤Ê¤¤¡£";
s32b flag_cost(object_type * o_ptr, int plusses)
{
s32b total = 0;
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
s32b tmp_cost;
int count;
+ int i;
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
if (o_ptr->name1)
{
artifact_type *a_ptr = &a_info[o_ptr->name1];
- f1 &= ~(a_ptr->flags1);
- f2 &= ~(a_ptr->flags2);
- f3 &= ~(a_ptr->flags3);
+ for (i = 0; i < TR_FLAG_SIZE; i++)
+ flgs[i] &= ~(a_ptr->flags[i]);
}
else
{
{
ego_item_type *e_ptr = &e_info[o_ptr->name2];
- f1 &= ~(e_ptr->flags1);
- f2 &= ~(e_ptr->flags2);
- f3 &= ~(e_ptr->flags3);
+ for (i = 0; i < TR_FLAG_SIZE; i++)
+ flgs[i] &= ~(e_ptr->flags[i]);
+
if ((o_ptr->tval == TV_RING) || (o_ptr->tval == TV_AMULET))
{
object_kind *k_ptr = &k_info[o_ptr->k_idx];
- f1 &= ~(k_ptr->flags1);
- f2 &= ~(k_ptr->flags2);
- f3 &= ~(k_ptr->flags3);
+ for (i = 0; i < TR_FLAG_SIZE; i++)
+ flgs[i] &= ~(k_ptr->flags[i]);
}
}
else if (o_ptr->art_name)
}
}
- if (f1 & TR1_STR) total += (1500 * plusses);
- if (f1 & TR1_INT) total += (1500 * plusses);
- if (f1 & TR1_WIS) total += (1500 * plusses);
- if (f1 & TR1_DEX) total += (1500 * plusses);
- if (f1 & TR1_CON) total += (1500 * plusses);
- if (f1 & TR1_CHR) total += (750 * plusses);
- if (f1 & TR1_MAGIC_MASTERY) total += (600 * plusses);
- if (f1 & TR1_STEALTH) total += (250 * plusses);
- if (f1 & TR1_SEARCH) total += (100 * plusses);
- if (f1 & TR1_INFRA) total += (150 * plusses);
- if (f1 & TR1_TUNNEL) total += (175 * plusses);
- if ((f1 & TR1_SPEED) && (plusses > 0))
+ if (have_flag(flgs, TR_STR)) total += (1500 * plusses);
+ if (have_flag(flgs, TR_INT)) total += (1500 * plusses);
+ if (have_flag(flgs, TR_WIS)) total += (1500 * plusses);
+ if (have_flag(flgs, TR_DEX)) total += (1500 * plusses);
+ if (have_flag(flgs, TR_CON)) total += (1500 * plusses);
+ if (have_flag(flgs, TR_CHR)) total += (750 * plusses);
+ if (have_flag(flgs, TR_MAGIC_MASTERY)) total += (600 * plusses);
+ if (have_flag(flgs, TR_STEALTH)) total += (250 * plusses);
+ if (have_flag(flgs, TR_SEARCH)) total += (100 * plusses);
+ if (have_flag(flgs, TR_INFRA)) total += (150 * plusses);
+ if (have_flag(flgs, TR_TUNNEL)) total += (175 * plusses);
+ if ((have_flag(flgs, TR_SPEED)) && (plusses > 0))
total += (10000 + (2500 * plusses));
- if ((f1 & TR1_BLOWS) && (plusses > 0))
+ if ((have_flag(flgs, TR_BLOWS)) && (plusses > 0))
total += (10000 + (2500 * plusses));
- if (f3 & TR3_DEC_MANA) total += 10000;
+ if (have_flag(flgs, TR_DEC_MANA)) total += 10000;
tmp_cost = 0;
count = 0;
- if (f1 & TR1_CHAOTIC) {total += 5000;count++;}
- if (f1 & TR1_VAMPIRIC) {total += 6500;count++;}
- if (f1 & TR1_FORCE_WEAPON) {tmp_cost += 2500;count++;}
- if (f1 & TR1_SLAY_ANIMAL) {tmp_cost += 1800;count++;}
- if (f1 & TR1_SLAY_EVIL) {tmp_cost += 2300;count++;}
- if (f3 & TR3_SLAY_HUMAN) {tmp_cost += 1800;count++;}
- if (f1 & TR1_SLAY_UNDEAD) {tmp_cost += 1800;count++;}
- if (f1 & TR1_SLAY_DEMON) {tmp_cost += 1800;count++;}
- if (f1 & TR1_SLAY_ORC) {tmp_cost += 1500;count++;}
- if (f1 & TR1_SLAY_TROLL) {tmp_cost += 1800;count++;}
- if (f1 & TR1_SLAY_GIANT) {tmp_cost += 1800;count++;}
- if (f1 & TR1_KILL_DRAGON) {tmp_cost += 2800;count++;}
- else if (f1 & TR1_SLAY_DRAGON) {tmp_cost += 1800;count++;}
-
- if (f1 & TR1_VORPAL) {tmp_cost += 2500;count++;}
- if (f1 & TR1_IMPACT) {tmp_cost += 2500;count++;}
- if (f1 & TR1_BRAND_POIS) {tmp_cost += 3800;count++;}
- if (f1 & TR1_BRAND_ACID) {tmp_cost += 3800;count++;}
- if (f1 & TR1_BRAND_ELEC) {tmp_cost += 3800;count++;}
- if (f1 & TR1_BRAND_FIRE) {tmp_cost += 2500;count++;}
- if (f1 & TR1_BRAND_COLD) {tmp_cost += 2500;count++;}
+ if (have_flag(flgs, TR_CHAOTIC)) {total += 5000;count++;}
+ if (have_flag(flgs, TR_VAMPIRIC)) {total += 6500;count++;}
+ if (have_flag(flgs, TR_FORCE_WEAPON)) {tmp_cost += 2500;count++;}
+ if (have_flag(flgs, TR_KILL_ANIMAL)) {tmp_cost += 2800;count++;}
+ else if (have_flag(flgs, TR_SLAY_ANIMAL)) {tmp_cost += 1800;count++;}
+ if (have_flag(flgs, TR_KILL_EVIL)) {tmp_cost += 3300;count++;}
+ else if (have_flag(flgs, TR_SLAY_EVIL)) {tmp_cost += 2300;count++;}
+ if (have_flag(flgs, TR_KILL_HUMAN)) {tmp_cost += 2800;count++;}
+ else if (have_flag(flgs, TR_SLAY_HUMAN)) {tmp_cost += 1800;count++;}
+ if (have_flag(flgs, TR_KILL_UNDEAD)) {tmp_cost += 2800;count++;}
+ else if (have_flag(flgs, TR_SLAY_UNDEAD)) {tmp_cost += 1800;count++;}
+ if (have_flag(flgs, TR_KILL_DEMON)) {tmp_cost += 2800;count++;}
+ else if (have_flag(flgs, TR_SLAY_DEMON)) {tmp_cost += 1800;count++;}
+ if (have_flag(flgs, TR_KILL_ORC)) {tmp_cost += 2500;count++;}
+ else if (have_flag(flgs, TR_SLAY_ORC)) {tmp_cost += 1500;count++;}
+ if (have_flag(flgs, TR_KILL_TROLL)) {tmp_cost += 2800;count++;}
+ else if (have_flag(flgs, TR_SLAY_TROLL)) {tmp_cost += 1800;count++;}
+ if (have_flag(flgs, TR_KILL_GIANT)) {tmp_cost += 2800;count++;}
+ else if (have_flag(flgs, TR_SLAY_GIANT)) {tmp_cost += 1800;count++;}
+ if (have_flag(flgs, TR_KILL_DRAGON)) {tmp_cost += 2800;count++;}
+ else if (have_flag(flgs, TR_SLAY_DRAGON)) {tmp_cost += 1800;count++;}
+
+ if (have_flag(flgs, TR_VORPAL)) {tmp_cost += 2500;count++;}
+ if (have_flag(flgs, TR_IMPACT)) {tmp_cost += 2500;count++;}
+ if (have_flag(flgs, TR_BRAND_POIS)) {tmp_cost += 3800;count++;}
+ if (have_flag(flgs, TR_BRAND_ACID)) {tmp_cost += 3800;count++;}
+ if (have_flag(flgs, TR_BRAND_ELEC)) {tmp_cost += 3800;count++;}
+ if (have_flag(flgs, TR_BRAND_FIRE)) {tmp_cost += 2500;count++;}
+ if (have_flag(flgs, TR_BRAND_COLD)) {tmp_cost += 2500;count++;}
total += (tmp_cost * count);
- if (f2 & TR2_SUST_STR) total += 850;
- if (f2 & TR2_SUST_INT) total += 850;
- if (f2 & TR2_SUST_WIS) total += 850;
- if (f2 & TR2_SUST_DEX) total += 850;
- if (f2 & TR2_SUST_CON) total += 850;
- if (f2 & TR2_SUST_CHR) total += 250;
- if (f2 & TR2_RIDING) total += 0;
- if (f2 & TR2_XXX2) total += 0;
- if (f2 & TR2_THROW) total += 5000;
- if (f2 & TR2_FREE_ACT) total += 4500;
- if (f2 & TR2_HOLD_LIFE) total += 8500;
+ if (have_flag(flgs, TR_SUST_STR)) total += 850;
+ if (have_flag(flgs, TR_SUST_INT)) total += 850;
+ if (have_flag(flgs, TR_SUST_WIS)) total += 850;
+ if (have_flag(flgs, TR_SUST_DEX)) total += 850;
+ if (have_flag(flgs, TR_SUST_CON)) total += 850;
+ if (have_flag(flgs, TR_SUST_CHR)) total += 250;
+ if (have_flag(flgs, TR_RIDING)) total += 0;
+ if (have_flag(flgs, TR_XXX2)) total += 0;
+ if (have_flag(flgs, TR_THROW)) total += 5000;
+ if (have_flag(flgs, TR_FREE_ACT)) total += 4500;
+ if (have_flag(flgs, TR_HOLD_LIFE)) total += 8500;
tmp_cost = 0;
count = 0;
- if (f2 & TR2_IM_ACID) {tmp_cost += 15000;count += 2;}
- if (f2 & TR2_IM_ELEC) {tmp_cost += 15000;count += 2;}
- if (f2 & TR2_IM_FIRE) {tmp_cost += 15000;count += 2;}
- if (f2 & TR2_IM_COLD) {tmp_cost += 15000;count += 2;}
- if (f2 & TR2_REFLECT) {tmp_cost += 5000;count += 2;}
- if (f2 & TR2_RES_ACID) {tmp_cost += 500;count++;}
- if (f2 & TR2_RES_ELEC) {tmp_cost += 500;count++;}
- if (f2 & TR2_RES_FIRE) {tmp_cost += 500;count++;}
- if (f2 & TR2_RES_COLD) {tmp_cost += 500;count++;}
- if (f2 & TR2_RES_POIS) {tmp_cost += 1000;count += 2;}
- if (f2 & TR2_RES_FEAR) {tmp_cost += 1000;count += 2;}
- if (f2 & TR2_RES_LITE) {tmp_cost += 800;count += 2;}
- if (f2 & TR2_RES_DARK) {tmp_cost += 800;count += 2;}
- if (f2 & TR2_RES_BLIND) {tmp_cost += 900;count += 2;}
- if (f2 & TR2_RES_CONF) {tmp_cost += 900;count += 2;}
- if (f2 & TR2_RES_SOUND) {tmp_cost += 900;count += 2;}
- if (f2 & TR2_RES_SHARDS) {tmp_cost += 900;count += 2;}
- if (f2 & TR2_RES_NETHER) {tmp_cost += 900;count += 2;}
- if (f2 & TR2_RES_NEXUS) {tmp_cost += 900;count += 2;}
- if (f2 & TR2_RES_CHAOS) {tmp_cost += 1000;count += 2;}
- if (f2 & TR2_RES_DISEN) {tmp_cost += 2000;count += 2;}
+ if (have_flag(flgs, TR_IM_ACID)) {tmp_cost += 15000;count += 2;}
+ if (have_flag(flgs, TR_IM_ELEC)) {tmp_cost += 15000;count += 2;}
+ if (have_flag(flgs, TR_IM_FIRE)) {tmp_cost += 15000;count += 2;}
+ if (have_flag(flgs, TR_IM_COLD)) {tmp_cost += 15000;count += 2;}
+ if (have_flag(flgs, TR_REFLECT)) {tmp_cost += 5000;count += 2;}
+ if (have_flag(flgs, TR_RES_ACID)) {tmp_cost += 500;count++;}
+ if (have_flag(flgs, TR_RES_ELEC)) {tmp_cost += 500;count++;}
+ if (have_flag(flgs, TR_RES_FIRE)) {tmp_cost += 500;count++;}
+ if (have_flag(flgs, TR_RES_COLD)) {tmp_cost += 500;count++;}
+ if (have_flag(flgs, TR_RES_POIS)) {tmp_cost += 1000;count += 2;}
+ if (have_flag(flgs, TR_RES_FEAR)) {tmp_cost += 1000;count += 2;}
+ if (have_flag(flgs, TR_RES_LITE)) {tmp_cost += 800;count += 2;}
+ if (have_flag(flgs, TR_RES_DARK)) {tmp_cost += 800;count += 2;}
+ if (have_flag(flgs, TR_RES_BLIND)) {tmp_cost += 900;count += 2;}
+ if (have_flag(flgs, TR_RES_CONF)) {tmp_cost += 900;count += 2;}
+ if (have_flag(flgs, TR_RES_SOUND)) {tmp_cost += 900;count += 2;}
+ if (have_flag(flgs, TR_RES_SHARDS)) {tmp_cost += 900;count += 2;}
+ if (have_flag(flgs, TR_RES_NETHER)) {tmp_cost += 900;count += 2;}
+ if (have_flag(flgs, TR_RES_NEXUS)) {tmp_cost += 900;count += 2;}
+ if (have_flag(flgs, TR_RES_CHAOS)) {tmp_cost += 1000;count += 2;}
+ if (have_flag(flgs, TR_RES_DISEN)) {tmp_cost += 2000;count += 2;}
total += (tmp_cost * count);
- if (f3 & TR3_SH_FIRE) total += 5000;
- if (f3 & TR3_SH_ELEC) total += 5000;
- if (f3 & TR3_SH_COLD) total += 5000;
- if (f3 & TR3_NO_TELE) total -= 10000;
- if (f3 & TR3_NO_MAGIC) total += 2500;
- if (f3 & TR3_TY_CURSE) total -= 15000;
- if (f3 & TR3_HIDE_TYPE) total += 0;
- if (f3 & TR3_SHOW_MODS) total += 0;
- if (f3 & TR3_FEATHER) total += 1250;
- if (f3 & TR3_LITE) total += 1250;
- if (f3 & TR3_SEE_INVIS) total += 2000;
- if (f3 & TR3_TELEPATHY) total += 20000;
- if (f3 & TR3_SLOW_DIGEST) total += 750;
- if (f3 & TR3_REGEN) total += 2500;
- if (f3 & TR3_WARNING) total += 2000;
- if (f3 & TR3_XTRA_MIGHT) total += 2250;
- if (f3 & TR3_XTRA_SHOTS) total += 10000;
- if (f3 & TR3_IGNORE_ACID) total += 100;
- if (f3 & TR3_IGNORE_ELEC) total += 100;
- if (f3 & TR3_IGNORE_FIRE) total += 100;
- if (f3 & TR3_IGNORE_COLD) total += 100;
- if (f3 & TR3_ACTIVATE) total += 100;
- if (f3 & TR3_DRAIN_EXP) total -= 12500;
- if (f3 & TR3_TELEPORT)
+ if (have_flag(flgs, TR_SH_FIRE)) total += 5000;
+ if (have_flag(flgs, TR_SH_ELEC)) total += 5000;
+ if (have_flag(flgs, TR_SH_COLD)) total += 5000;
+ if (have_flag(flgs, TR_NO_TELE)) total -= 10000;
+ if (have_flag(flgs, TR_NO_MAGIC)) total += 2500;
+ if (have_flag(flgs, TR_TY_CURSE)) total -= 15000;
+ if (have_flag(flgs, TR_HIDE_TYPE)) total += 0;
+ if (have_flag(flgs, TR_SHOW_MODS)) total += 0;
+ if (have_flag(flgs, TR_FEATHER)) total += 1250;
+ if (have_flag(flgs, TR_LITE)) total += 1250;
+ if (have_flag(flgs, TR_SEE_INVIS)) total += 2000;
+ if (have_flag(flgs, TR_TELEPATHY)) total += 20000;
+ if (have_flag(flgs, TR_ESP_ANIMAL)) total += 3000;
+ if (have_flag(flgs, TR_ESP_UNDEAD)) total += 3000;
+ if (have_flag(flgs, TR_ESP_DEMON)) total += 3000;
+ if (have_flag(flgs, TR_ESP_ORC)) total += 3000;
+ if (have_flag(flgs, TR_ESP_TROLL)) total += 3000;
+ if (have_flag(flgs, TR_ESP_GIANT)) total += 3000;
+ if (have_flag(flgs, TR_ESP_DRAGON)) total += 3000;
+ if (have_flag(flgs, TR_ESP_HUMAN)) total += 3000;
+ if (have_flag(flgs, TR_ESP_EVIL)) total += 10000;
+ if (have_flag(flgs, TR_ESP_GOOD)) total += 6000;
+ if (have_flag(flgs, TR_ESP_NONLIVING)) total += 6000;
+ if (have_flag(flgs, TR_ESP_UNIQUE)) total += 10000;
+ if (have_flag(flgs, TR_SLOW_DIGEST)) total += 750;
+ if (have_flag(flgs, TR_REGEN)) total += 2500;
+ if (have_flag(flgs, TR_WARNING)) total += 2000;
+ if (have_flag(flgs, TR_XTRA_MIGHT)) total += 2250;
+ if (have_flag(flgs, TR_XTRA_SHOTS)) total += 10000;
+ if (have_flag(flgs, TR_IGNORE_ACID)) total += 100;
+ if (have_flag(flgs, TR_IGNORE_ELEC)) total += 100;
+ if (have_flag(flgs, TR_IGNORE_FIRE)) total += 100;
+ if (have_flag(flgs, TR_IGNORE_COLD)) total += 100;
+ if (have_flag(flgs, TR_ACTIVATE)) total += 100;
+ if (have_flag(flgs, TR_DRAIN_EXP)) total -= 12500;
+ if (have_flag(flgs, TR_TELEPORT))
{
if (cursed_p(o_ptr))
total -= 7500;
else
total += 250;
}
- if (f3 & TR3_AGGRAVATE) total -= 10000;
- if (f3 & TR3_BLESSED) total += 750;
+ if (have_flag(flgs, TR_AGGRAVATE)) total -= 10000;
+ if (have_flag(flgs, TR_BLESSED)) total += 750;
if (o_ptr->curse_flags & TRC_CURSED) total -= 5000;
if (o_ptr->curse_flags & TRC_HEAVY_CURSE) total -= 12500;
if (o_ptr->curse_flags & TRC_PERMA_CURSE) total -= 15000;
/* Also, give some extra for activatable powers... */
- if (o_ptr->art_name && (o_ptr->art_flags3 & TR3_ACTIVATE))
+ if (o_ptr->art_name && (have_flag(o_ptr->art_flags, TR_ACTIVATE)))
{
int type = o_ptr->xtra2;
{
s32b value;
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
object_kind *k_ptr = &k_info[o_ptr->k_idx];
value = get_object_cost(o_ptr);
/* Extract some flags */
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
/* Artifact */
if (o_ptr->name1)
value += flag_cost(o_ptr, o_ptr->pval);
}
- else if (o_ptr->art_flags1 || o_ptr->art_flags2 || o_ptr->art_flags3)
+ else if (o_ptr->art_flags[0] || o_ptr->art_flags[1] || o_ptr->art_flags[2])
{
value += flag_cost(o_ptr, o_ptr->pval);
}
if (!o_ptr->pval) break;
/* Give credit for stat bonuses */
- if (f1 & (TR1_STR)) value += (o_ptr->pval * 200L);
- if (f1 & (TR1_INT)) value += (o_ptr->pval * 200L);
- if (f1 & (TR1_WIS)) value += (o_ptr->pval * 200L);
- if (f1 & (TR1_DEX)) value += (o_ptr->pval * 200L);
- if (f1 & (TR1_CON)) value += (o_ptr->pval * 200L);
- if (f1 & (TR1_CHR)) value += (o_ptr->pval * 200L);
+ if (have_flag(flgs, TR_STR)) value += (o_ptr->pval * 200L);
+ if (have_flag(flgs, TR_INT)) value += (o_ptr->pval * 200L);
+ if (have_flag(flgs, TR_WIS)) value += (o_ptr->pval * 200L);
+ if (have_flag(flgs, TR_DEX)) value += (o_ptr->pval * 200L);
+ if (have_flag(flgs, TR_CON)) value += (o_ptr->pval * 200L);
+ if (have_flag(flgs, TR_CHR)) value += (o_ptr->pval * 200L);
/* Give credit for stealth and searching */
- if (f1 & (TR1_MAGIC_MASTERY)) value += (o_ptr->pval * 100L);
- if (f1 & (TR1_STEALTH)) value += (o_ptr->pval * 100L);
- if (f1 & (TR1_SEARCH)) value += (o_ptr->pval * 100L);
+ if (have_flag(flgs, TR_MAGIC_MASTERY)) value += (o_ptr->pval * 100L);
+ if (have_flag(flgs, TR_STEALTH)) value += (o_ptr->pval * 100L);
+ if (have_flag(flgs, TR_SEARCH)) value += (o_ptr->pval * 100L);
/* Give credit for infra-vision and tunneling */
- if (f1 & (TR1_INFRA)) value += (o_ptr->pval * 50L);
- if (f1 & (TR1_TUNNEL)) value += (o_ptr->pval * 50L);
+ if (have_flag(flgs, TR_INFRA)) value += (o_ptr->pval * 50L);
+ if (have_flag(flgs, TR_TUNNEL)) value += (o_ptr->pval * 50L);
/* Give credit for extra attacks */
- if (f1 & (TR1_BLOWS)) value += (o_ptr->pval * 5000L);
+ if (have_flag(flgs, TR_BLOWS)) value += (o_ptr->pval * 5000L);
/* Give credit for speed bonus */
- if (f1 & (TR1_SPEED)) value += (o_ptr->pval * 10000L);
+ if (have_flag(flgs, TR_SPEED)) value += (o_ptr->pval * 10000L);
break;
}
*/
static bool object_similar_part(object_type *o_ptr, object_type *j_ptr)
{
+ int i;
+
/* Require identical object types */
if (o_ptr->k_idx != j_ptr->k_idx) return (0);
/* Hack -- Identical art_flags! */
- if ((o_ptr->art_flags1 != j_ptr->art_flags1) ||
- (o_ptr->art_flags2 != j_ptr->art_flags2) ||
- (o_ptr->art_flags3 != j_ptr->art_flags3))
- return (0);
+ for (i = 0; i < TR_FLAG_SIZE; i++)
+ if (o_ptr->art_flags[i] != j_ptr->art_flags[i]) return (0);
/* Hack -- Require identical "cursed" status */
if (o_ptr->curse_flags != j_ptr->curse_flags) return (0);
{
case EGO_HA:
if (one_in_(4) && (level > 40))
- o_ptr->art_flags1 |= TR1_BLOWS;
+ add_flag(o_ptr->art_flags, TR_BLOWS);
break;
case EGO_DF:
if (one_in_(3))
- o_ptr->art_flags2 |= TR2_RES_POIS;
+ add_flag(o_ptr->art_flags, TR_RES_POIS);
if (one_in_(3))
- o_ptr->art_flags3 |= TR3_WARNING;
+ add_flag(o_ptr->art_flags, TR_WARNING);
break;
case EGO_KILL_DRAGON:
if (one_in_(3))
- o_ptr->art_flags2 |= TR2_RES_POIS;
+ add_flag(o_ptr->art_flags, TR_RES_POIS);
break;
case EGO_WEST:
if (one_in_(3))
- o_ptr->art_flags2 |= TR2_RES_FEAR;
+ add_flag(o_ptr->art_flags, TR_RES_FEAR);
break;
case EGO_SLAYING_WEAPON:
if (one_in_(3)) /* double damage */
if (one_in_(5))
{
- o_ptr->art_flags1 |= TR1_BRAND_POIS;
+ add_flag(o_ptr->art_flags, TR_BRAND_POIS);
}
if (o_ptr->tval == TV_SWORD && one_in_(3))
{
- o_ptr->art_flags1 |= TR1_VORPAL;
+ add_flag(o_ptr->art_flags, TR_VORPAL);
}
break;
case EGO_TRUMP:
if (one_in_(5))
- o_ptr->art_flags1 |= TR1_SLAY_DEMON;
+ add_flag(o_ptr->art_flags, TR_SLAY_DEMON);
if (one_in_(7))
one_ability(o_ptr);
break;
case EGO_PATTERN:
if (one_in_(3))
- o_ptr->art_flags2 |= TR2_HOLD_LIFE;
+ add_flag(o_ptr->art_flags, TR_HOLD_LIFE);
if (one_in_(3))
- o_ptr->art_flags1 |= TR1_DEX;
+ add_flag(o_ptr->art_flags, TR_DEX);
if (one_in_(5))
- o_ptr->art_flags2 |= TR2_RES_FEAR;
+ add_flag(o_ptr->art_flags, TR_RES_FEAR);
break;
case EGO_SHARPNESS:
o_ptr->pval = m_bonus(5, level) + 1;
break;
case EGO_EARTHQUAKES:
if (one_in_(3) && (level > 60))
- o_ptr->art_flags1 |= TR1_BLOWS;
+ add_flag(o_ptr->art_flags, TR_BLOWS);
else
o_ptr->pval = m_bonus(3, level);
break;
case EGO_VAMPIRIC:
if (one_in_(5))
- o_ptr->art_flags3 |= TR3_SLAY_HUMAN;
+ add_flag(o_ptr->art_flags, TR_SLAY_HUMAN);
break;
}
switch (o_ptr->name2)
{
case EGO_MORGUL:
- if (one_in_(6)) o_ptr->art_flags3 |= TR3_TY_CURSE;
+ if (one_in_(6)) add_flag(o_ptr->art_flags, TR_TY_CURSE);
}
}
}
}
+static void add_esp_strong(object_type *o_ptr)
+{
+ switch (randint1(3))
+ {
+ case 1: add_flag(o_ptr->art_flags, TR_ESP_EVIL); break;
+ case 2: add_flag(o_ptr->art_flags, TR_ESP_NONLIVING); break;
+ case 3: add_flag(o_ptr->art_flags, TR_TELEPATHY); break;
+ }
+}
+
+
+static void add_esp_weak(object_type *o_ptr)
+{
+ int idx[3];
+ int n = randint1(3);
+
+ idx[0] = randint1(9);
+
+ idx[1] = randint1(8);
+ if (idx[1] >= idx[0]) idx[1]++;
+
+ idx[2] = randint1(7);
+ if (idx[2] >= idx[0]) idx[2]++;
+ if (idx[2] >= idx[1]) idx[2]++;
+
+ while (n--) switch (idx[n])
+ {
+ case 1: add_flag(o_ptr->art_flags, TR_ESP_ANIMAL); break;
+ case 2: add_flag(o_ptr->art_flags, TR_ESP_UNDEAD); break;
+ case 3: add_flag(o_ptr->art_flags, TR_ESP_DEMON); break;
+ case 4: add_flag(o_ptr->art_flags, TR_ESP_ORC); break;
+ case 5: add_flag(o_ptr->art_flags, TR_ESP_TROLL); break;
+ case 6: add_flag(o_ptr->art_flags, TR_ESP_GIANT); break;
+ case 7: add_flag(o_ptr->art_flags, TR_ESP_DRAGON); break;
+ case 8: add_flag(o_ptr->art_flags, TR_ESP_HUMAN); break;
+ case 9: add_flag(o_ptr->art_flags, TR_ESP_GOOD); break;
+ }
+}
+
+
/*
* Apply magic to an item known to be "armor"
*
{
case EGO_RESISTANCE:
if (one_in_(4))
- o_ptr->art_flags2 |= TR2_RES_POIS;
+ add_flag(o_ptr->art_flags, TR_RES_POIS);
break;
case EGO_ELVENKIND:
break;
o_ptr->weight = (2 * k_info[o_ptr->k_idx].weight / 3);
o_ptr->ac = k_info[o_ptr->k_idx].ac + 5;
if (one_in_(4))
- o_ptr->art_flags1 |= TR1_CON;
+ add_flag(o_ptr->art_flags, TR_CON);
break;
}
}
{
case EGO_ENDURANCE:
if (!one_in_(3)) one_high_resistance(o_ptr);
- if (one_in_(4)) o_ptr->art_flags2 |= TR2_RES_POIS;
+ if (one_in_(4)) add_flag(o_ptr->art_flags, TR_RES_POIS);
break;
case EGO_REFLECTION:
if (o_ptr->sval == SV_SHIELD_OF_DEFLECTION)
switch (o_ptr->name2)
{
+ case EGO_TELEPATHY:
+ add_esp_strong(o_ptr);
+ add_esp_weak(o_ptr);
+ break;
case EGO_MAGI:
case EGO_MIGHT:
- case EGO_TELEPATHY:
case EGO_REGENERATION:
case EGO_LORDLINESS:
break;
case EGO_SEEING:
- if (one_in_(3)) o_ptr->art_flags3 |= TR3_TELEPATHY;
+ if (one_in_(3))
+ {
+ if (one_in_(2)) add_esp_strong(o_ptr);
+ else add_esp_weak(o_ptr);
+ }
break;
default:/* not existing crown (wisdom,lite, etc...) */
ok_flag = FALSE;
case EGO_INFRAVISION:
break;
case EGO_SEEING:
- if (one_in_(7)) o_ptr->art_flags3 |= TR3_TELEPATHY;
+ if (one_in_(7)) add_flag(o_ptr->art_flags, TR_TELEPATHY);
break;
default:/* not existing helm (Magi, Might, etc...)*/
ok_flag = FALSE;
o_ptr->name2 = EGO_RING_THROW;
break;
case 3: case 4:
- if (k_ptr->flags3 & TR3_REGEN) break;
+ if (have_flag(k_ptr->flags, TR_REGEN)) break;
o_ptr->name2 = EGO_RING_REGEN;
break;
case 5: case 6:
- if (k_ptr->flags3 & TR3_LITE) break;
+ if (have_flag(k_ptr->flags, TR_LITE)) break;
o_ptr->name2 = EGO_RING_LITE;
break;
case 7: case 8:
- if (k_ptr->flags2 & TR3_TELEPORT) break;
+ if (have_flag(k_ptr->flags, TR_TELEPORT)) break;
o_ptr->name2 = EGO_RING_TELEPORT;
break;
case 9: case 10:
o_ptr->name2 = EGO_RING_SLAY;
break;
case 14:
- if ((k_ptr->flags1 & TR1_STR) || o_ptr->to_h || o_ptr->to_d) break;
+ if ((have_flag(k_ptr->flags, TR_STR)) || o_ptr->to_h || o_ptr->to_d) break;
o_ptr->name2 = EGO_RING_WIZARD;
break;
case 15:
- if (k_ptr->flags3 & TR3_ACTIVATE) break;
+ if (have_flag(k_ptr->flags, TR_ACTIVATE)) break;
o_ptr->name2 = EGO_RING_HERO;
break;
case 16:
- if (k_ptr->flags3 & TR3_ACTIVATE) break;
+ if (have_flag(k_ptr->flags, TR_ACTIVATE)) break;
if (tmp > 8) o_ptr->name2 = EGO_RING_MANA_BALL;
else if (tmp > 4) o_ptr->name2 = EGO_RING_MANA_BOLT;
else o_ptr->name2 = EGO_RING_MAGIC_MIS;
break;
case 17:
- if (k_ptr->flags3 & TR3_ACTIVATE) break;
- if (!(k_ptr->flags2 & TR2_RES_FIRE) && (k_ptr->flags2 & (TR2_RES_COLD | TR2_RES_ELEC | TR2_RES_ACID))) break;
+ if (have_flag(k_ptr->flags, TR_ACTIVATE)) break;
+ if (!(have_flag(k_ptr->flags, TR_RES_FIRE)) && (have_flag(k_ptr->flags, TR_RES_COLD) || have_flag(k_ptr->flags, TR_RES_ELEC) || have_flag(k_ptr->flags, TR_RES_ACID))) break;
if (tmp > 7) o_ptr->name2 = EGO_RING_DRAGON_F;
else if (tmp > 3) o_ptr->name2 = EGO_RING_FIRE_BALL;
else o_ptr->name2 = EGO_RING_FIRE_BOLT;
break;
case 18:
- if (k_ptr->flags3 & TR3_ACTIVATE) break;
- if (!(k_ptr->flags2 & TR2_RES_COLD) && (k_ptr->flags2 & (TR2_RES_FIRE | TR2_RES_ELEC | TR2_RES_ACID))) break;
+ if (have_flag(k_ptr->flags, TR_ACTIVATE)) break;
+ if (!(have_flag(k_ptr->flags, TR_RES_COLD)) && (have_flag(k_ptr->flags, TR_RES_FIRE) || have_flag(k_ptr->flags, TR_RES_ELEC) || have_flag(k_ptr->flags, TR_RES_ACID))) break;
if (tmp > 7) o_ptr->name2 = EGO_RING_DRAGON_C;
else if (tmp > 3) o_ptr->name2 = EGO_RING_COLD_BALL;
else o_ptr->name2 = EGO_RING_COLD_BOLT;
break;
case 19:
- if (k_ptr->flags3 & TR3_ACTIVATE) break;
- if (!(k_ptr->flags2 & TR2_RES_ELEC) && (k_ptr->flags2 & (TR2_RES_COLD | TR2_RES_FIRE | TR2_RES_ACID))) break;
+ if (have_flag(k_ptr->flags, TR_ACTIVATE)) break;
+ if (!(have_flag(k_ptr->flags, TR_RES_ELEC)) && (have_flag(k_ptr->flags, TR_RES_COLD) || have_flag(k_ptr->flags, TR_RES_FIRE) || have_flag(k_ptr->flags, TR_RES_ACID))) break;
if (tmp > 4) o_ptr->name2 = EGO_RING_ELEC_BALL;
else o_ptr->name2 = EGO_RING_ELEC_BOLT;
break;
case 20:
- if (k_ptr->flags3 & TR3_ACTIVATE) break;
- if (!(k_ptr->flags2 & TR2_RES_ACID) && (k_ptr->flags2 & (TR2_RES_COLD | TR2_RES_ELEC | TR2_RES_FIRE))) break;
+ if (have_flag(k_ptr->flags, TR_ACTIVATE)) break;
+ if (!(have_flag(k_ptr->flags, TR_RES_ACID)) && (have_flag(k_ptr->flags, TR_RES_COLD) || have_flag(k_ptr->flags, TR_RES_ELEC) || have_flag(k_ptr->flags, TR_RES_FIRE))) break;
if (tmp > 4) o_ptr->name2 = EGO_RING_ACID_BALL;
else o_ptr->name2 = EGO_RING_ACID_BOLT;
break;
if (o_ptr->to_d > 0) o_ptr->to_d = 0-o_ptr->to_d;
if (o_ptr->to_a > 0) o_ptr->to_a = 0-o_ptr->to_a;
if (o_ptr->pval > 0) o_ptr->pval = 0-o_ptr->pval;
- o_ptr->art_flags1 = 0;
- o_ptr->art_flags2 = 0;
+ o_ptr->art_flags[0] = 0;
+ o_ptr->art_flags[1] = 0;
while(!o_ptr->name2)
{
object_kind *k_ptr = &k_info[o_ptr->k_idx];
switch(randint1(5))
{
case 1:
- if (k_ptr->flags3 & TR3_DRAIN_EXP) break;
+ if (have_flag(k_ptr->flags, TR_DRAIN_EXP)) break;
o_ptr->name2 = EGO_RING_DRAIN_EXP;
break;
case 2:
o_ptr->name2 = EGO_RING_NO_MELEE;
break;
case 3:
- if (k_ptr->flags3 & TR3_AGGRAVATE) break;
+ if (have_flag(k_ptr->flags, TR_AGGRAVATE)) break;
o_ptr->name2 = EGO_RING_AGGRAVATE;
break;
case 4:
- if (k_ptr->flags3 & TR3_TY_CURSE) break;
+ if (have_flag(k_ptr->flags, TR_TY_CURSE)) break;
o_ptr->name2 = EGO_RING_TY_CURSE;
break;
case 5:
case SV_AMULET_RESISTANCE:
{
if (one_in_(5)) one_high_resistance(o_ptr);
- if (one_in_(5)) o_ptr->art_flags2 |= TR2_RES_POIS;
+ if (one_in_(5)) add_flag(o_ptr->art_flags, TR_RES_POIS);
}
break;
switch(randint1(21))
{
case 1: case 2:
- if (k_ptr->flags3 & TR3_SLOW_DIGEST) break;
+ if (have_flag(k_ptr->flags, TR_SLOW_DIGEST)) break;
o_ptr->name2 = EGO_AMU_SLOW_D;
break;
case 3: case 4:
o_ptr->name2 = EGO_AMU_INFRA;
break;
case 5: case 6:
- if (k_ptr->flags3 & TR3_SEE_INVIS) break;
+ if (have_flag(k_ptr->flags, TR_SEE_INVIS)) break;
o_ptr->name2 = EGO_AMU_SEE_INVIS;
break;
case 7: case 8:
- if (k_ptr->flags2 & TR2_HOLD_LIFE) break;
+ if (have_flag(k_ptr->flags, TR_HOLD_LIFE)) break;
o_ptr->name2 = EGO_AMU_HOLD_LIFE;
break;
case 9:
- if (k_ptr->flags3 & TR3_FEATHER) break;
+ if (have_flag(k_ptr->flags, TR_FEATHER)) break;
o_ptr->name2 = EGO_AMU_LEVITATION;
break;
case 10: case 11: case 21:
o_ptr->name2 = EGO_AMU_AC;
break;
case 12:
- if (k_ptr->flags2 & TR2_RES_FIRE) break;
+ if (have_flag(k_ptr->flags, TR_RES_FIRE)) break;
if (m_bonus(10, level) > 8)
o_ptr->name2 = EGO_AMU_RES_FIRE_;
else
o_ptr->name2 = EGO_AMU_RES_FIRE;
break;
case 13:
- if (k_ptr->flags2 & TR2_RES_COLD) break;
+ if (have_flag(k_ptr->flags, TR_RES_COLD)) break;
if (m_bonus(10, level) > 8)
o_ptr->name2 = EGO_AMU_RES_COLD_;
else
o_ptr->name2 = EGO_AMU_RES_COLD;
break;
case 14:
- if (k_ptr->flags2 & TR2_RES_ELEC) break;
+ if (have_flag(k_ptr->flags, TR_RES_ELEC)) break;
if (m_bonus(10, level) > 8)
o_ptr->name2 = EGO_AMU_RES_ELEC_;
else
o_ptr->name2 = EGO_AMU_RES_ELEC;
break;
case 15:
- if (k_ptr->flags2 & TR2_RES_ACID) break;
+ if (have_flag(k_ptr->flags, TR_RES_ACID)) break;
if (m_bonus(10, level) > 8)
o_ptr->name2 = EGO_AMU_RES_ACID_;
else
if (o_ptr->to_d > 0) o_ptr->to_d = 0-o_ptr->to_d;
if (o_ptr->to_a > 0) o_ptr->to_a = 0-o_ptr->to_a;
if (o_ptr->pval > 0) o_ptr->pval = 0-o_ptr->pval;
- o_ptr->art_flags1 = 0;
- o_ptr->art_flags2 = 0;
+ o_ptr->art_flags[0] = 0;
+ o_ptr->art_flags[1] = 0;
while(!o_ptr->name2)
{
object_kind *k_ptr = &k_info[o_ptr->k_idx];
switch(randint1(5))
{
case 1:
- if (k_ptr->flags3 & TR3_DRAIN_EXP) break;
+ if (have_flag(k_ptr->flags, TR_DRAIN_EXP)) break;
o_ptr->name2 = EGO_AMU_DRAIN_EXP;
break;
case 2:
o_ptr->name2 = EGO_AMU_FOOL;
break;
case 3:
- if (k_ptr->flags3 & TR3_AGGRAVATE) break;
+ if (have_flag(k_ptr->flags, TR_AGGRAVATE)) break;
o_ptr->name2 = EGO_AMU_AGGRAVATE;
break;
case 4:
- if (k_ptr->flags3 & TR3_TY_CURSE) break;
+ if (have_flag(k_ptr->flags, TR_TY_CURSE)) break;
o_ptr->name2 = EGO_AMU_TY_CURSE;
break;
case 5:
(p_ptr->pseikaku == SEIKAKU_SEXY))
{
o_ptr->pval = 3;
- o_ptr->art_flags1 |= (TR1_STR | TR1_INT | TR1_WIS | TR1_DEX | TR1_CON | TR1_CHR);
+ add_flag(o_ptr->art_flags, TR_STR);
+ add_flag(o_ptr->art_flags, TR_INT);
+ add_flag(o_ptr->art_flags, TR_WIS);
+ add_flag(o_ptr->art_flags, TR_DEX);
+ add_flag(o_ptr->art_flags, TR_CON);
+ add_flag(o_ptr->art_flags, TR_CHR);
}
if (o_ptr->art_name) rating += 30;
/* Hack -- obtain pval */
if (e_ptr->max_pval)
{
- if ((o_ptr->name2 == EGO_HA) && (o_ptr->art_flags1 & TR1_BLOWS))
+ if ((o_ptr->name2 == EGO_HA) && (have_flag(o_ptr->art_flags, TR_BLOWS)))
{
o_ptr->pval++;
if ((lev > 60) && one_in_(3) && ((o_ptr->dd*(o_ptr->ds+1)) < 15)) o_ptr->pval++;
/* Search Inventry */
for (i = INVEN_RARM; i < INVEN_TOTAL; i++)
{
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
object_type *o_ptr = &inventory[i];
- object_flags(o_ptr, &f1, &f2, &f3);
- if (f3 & (TR3_WARNING))
+ object_flags(o_ptr, flgs);
+ if (have_flag(flgs, TR_WARNING))
{
choices[number] = i;
number++;
int dec = 4;
bool observe = FALSE;
int old_ds, old_dd, old_to_h, old_to_d, old_ac, old_to_a, old_pval, old_name2;
- u32b old_f1, old_f2, old_f3, new_f1, new_f2, new_f3;
+ u32b old_flgs[TR_FLAG_SIZE], new_flgs[TR_FLAG_SIZE];
object_type *o_ptr;
cptr q, s;
byte iy, ix, marked, number;
energy_use = 100;
- object_flags(o_ptr, &old_f1, &old_f2, &old_f3);
- if (old_f1 & TR1_KILL_DRAGON) old_f1 |= TR1_SLAY_DRAGON;
+ object_flags(o_ptr, old_flgs);
+ if (have_flag(old_flgs, TR_KILL_DRAGON)) add_flag(old_flgs, TR_SLAY_DRAGON);
old_to_a = o_ptr->to_a;
old_ac = o_ptr->ac;
old_pval = o_ptr->pval;
old_name2 = o_ptr->name2;
if (o_ptr->curse_flags & (TRC_CURSED | TRC_HEAVY_CURSE | TRC_PERMA_CURSE)) dec--;
- if (old_f3 & (TR3_AGGRAVATE)) dec--;
- if (old_f3 & (TR3_NO_TELE)) dec--;
- if (old_f3 & (TR3_DRAIN_EXP)) dec--;
- if (old_f3 & (TR3_TY_CURSE)) dec--;
+ if (have_flag(old_flgs, TR_AGGRAVATE)) dec--;
+ if (have_flag(old_flgs, TR_NO_TELE)) dec--;
+ if (have_flag(old_flgs, TR_DRAIN_EXP)) dec--;
+ if (have_flag(old_flgs, TR_TY_CURSE)) dec--;
iy = o_ptr->iy;
ix = o_ptr->ix;
object_aware(o_ptr);
object_known(o_ptr);
- object_flags(o_ptr, &new_f1, &new_f2, &new_f3);
+ object_flags(o_ptr, new_flgs);
for (i = 0; i < 96; i++)
{
- if (i < 32)
- {
- int pval = 0;
+ int pval = 0;
+
+ if (is_pval_flag(i) && old_pval) pval = (have_flag(new_flgs, i)) ? old_pval-o_ptr->pval : old_pval;
- if (((1 << i) & TR1_PVAL_MASK) && old_pval) pval = ((new_f1 >> i) & 0x00000001) ? old_pval-o_ptr->pval : old_pval;
- if ((!((new_f1 >> i) & 0x00000001) || pval) && ((old_f1 >> i) & 0x00000001) && essence_info[i].link)
+ if ((!(have_flag(new_flgs, i)) || pval) && (have_flag(old_flgs, i)) && essence_info[i].link)
+ {
+ if (pval)
{
- drain_value[essence_info[i].link-1] += (10 * (pval ? pval : 1));
+ drain_value[essence_info[i].link-1] += 10 * pval;
}
- }
- else if (i < 64)
- {
- if (!((new_f2 >> (i-32)) & 0x00000001) && ((old_f2 >> (i-32)) & 0x00000001) && essence_info[i].link)
+ else if (essence_info[i].link != -1)
{
drain_value[essence_info[i].link-1] += 10;
}
- }
- else
- {
- if (!((new_f3 >> (i-64)) & 0x00000001) && ((old_f3 >> (i-64)) & 0x00000001) && essence_info[i].link)
+ else if (i == ESSENCE__SH__FIRE-1)
{
- if (essence_info[i].link == -1)
- {
- if (i == ESSENCE__SH__FIRE-1)
- {
- drain_value[ESSENCE_B_FIRE-1] += 10;
- drain_value[ESSENCE_RES_FIRE-1] += 10;
- }
- else if (i == ESSENCE__SH__ELEC-1)
- {
- drain_value[ESSENCE_B_ELEC-1] += 10;
- drain_value[ESSENCE_RES_ELEC-1] += 10;
- }
- else if (i == ESSENCE__SH__COLD-1)
- {
- drain_value[ESSENCE_B_COLD-1] += 10;
- drain_value[ESSENCE_RES_COLD-1] += 10;
- }
- }
- else drain_value[essence_info[i].link-1] += 10;
+ drain_value[ESSENCE_B_FIRE-1] += 10;
+ drain_value[ESSENCE_RES_FIRE-1] += 10;
+ }
+ else if (i == ESSENCE__SH__ELEC-1)
+ {
+ drain_value[ESSENCE_B_ELEC-1] += 10;
+ drain_value[ESSENCE_RES_ELEC-1] += 10;
+ }
+ else if (i == ESSENCE__SH__COLD-1)
+ {
+ drain_value[ESSENCE_B_COLD-1] += 10;
+ drain_value[ESSENCE_RES_COLD-1] += 10;
}
}
}
- if ((old_f1 & TR1_FORCE_WEAPON) && !(new_f1 & TR1_FORCE_WEAPON))
+ if ((have_flag(old_flgs, TR_FORCE_WEAPON)) && !(have_flag(new_flgs, TR_FORCE_WEAPON)))
{
drain_value[ESSENCE_INT-1] += 5;
drain_value[ESSENCE_WIS-1] += 5;
}
- if ((old_f1 & TR1_VORPAL) && !(new_f1 & TR1_VORPAL))
+ if ((have_flag(old_flgs, TR_VORPAL)) && !(have_flag(new_flgs, TR_VORPAL)))
{
drain_value[ESSENCE_B_POIS-1] += 5;
drain_value[ESSENCE_B_ACID-1] += 5;
drain_value[ESSENCE_B_FIRE-1] += 5;
drain_value[ESSENCE_B_COLD-1] += 5;
}
- if ((old_f3 & TR3_DEC_MANA) && !(new_f3 & TR3_DEC_MANA))
+ if ((have_flag(old_flgs, TR_DEC_MANA)) && !(have_flag(new_flgs, TR_DEC_MANA)))
{
drain_value[ESSENCE_INT-1] += 10;
}
- if ((old_f3 & TR3_XTRA_MIGHT) && !(new_f3 & TR3_XTRA_MIGHT))
+ if ((have_flag(old_flgs, TR_XTRA_MIGHT)) && !(have_flag(new_flgs, TR_XTRA_MIGHT)))
{
drain_value[ESSENCE_STR-1] += 10;
}
- if ((old_f3 & TR3_XTRA_SHOTS) && !(new_f3 & TR3_XTRA_SHOTS))
+ if ((have_flag(old_flgs, TR_XTRA_SHOTS)) && !(have_flag(new_flgs, TR_XTRA_SHOTS)))
{
drain_value[ESSENCE_DEX-1] += 10;
}
#endif
return;
}
- if ((num[i] < 32) && (TR1_PVAL_MASK & (0x1L << num[i])))
+ if ((num[i] < 32) && is_pval_flag(num[i]))
{
if (num[i] == ESSENCE_BLOWS-1)
{
return;
}
if (num[i] == ESSENCE_SUSTAIN-1)
- o_ptr->art_flags3 |= (TR3_IGNORE_ACID | TR3_IGNORE_ELEC | TR3_IGNORE_FIRE | TR3_IGNORE_COLD);
+ {
+ add_flag(o_ptr->art_flags, TR_IGNORE_ACID);
+ add_flag(o_ptr->art_flags, TR_IGNORE_ELEC);
+ add_flag(o_ptr->art_flags, TR_IGNORE_FIRE);
+ add_flag(o_ptr->art_flags, TR_IGNORE_COLD);
+ }
else o_ptr->xtra3 = num[i]+1;
}
cptr q, s;
object_type *o_ptr;
char o_name[MAX_NLEN];
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
item_tester_hook = item_tester_hook_kaji;
o_ptr->xtra4 = 0;
}
o_ptr->xtra3 = 0;
- object_flags(o_ptr, &f1, &f2, &f3);
- if (!(f1 & TR1_PVAL_MASK)) o_ptr->pval = 0;
+ object_flags(o_ptr, flgs);
+ if (!(have_pval_flags(flgs))) o_ptr->pval = 0;
#ifdef JP
msg_print("¥¨¥Ã¥»¥ó¥¹¤ò¼è¤êµî¤Ã¤¿¡£");
#else
wr_byte(o_ptr->marked);
- wr_u32b(o_ptr->art_flags1);
- wr_u32b(o_ptr->art_flags2);
- wr_u32b(o_ptr->art_flags3);
+ wr_u32b(o_ptr->art_flags[0]);
+ wr_u32b(o_ptr->art_flags[1]);
+ wr_u32b(o_ptr->art_flags[2]);
+ wr_u32b(o_ptr->art_flags[3]);
wr_u32b(o_ptr->curse_flags);
bool obvious = FALSE;
bool known = player_has_los_bold(y, x);
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
char o_name[MAX_NLEN];
next_o_idx = o_ptr->next_o_idx;
/* Extract the flags */
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
/* Get the "plural"-ness */
if (o_ptr->number > 1) plural = TRUE;
note_kill = (plural ? " melt!" : " melts!");
#endif
- if (f3 & (TR3_IGNORE_ACID)) ignore = TRUE;
+ if (have_flag(flgs, TR_IGNORE_ACID)) ignore = TRUE;
}
break;
}
note_kill = (plural ? " are destroyed!" : " is destroyed!");
#endif
- if (f3 & (TR3_IGNORE_ELEC)) ignore = TRUE;
+ if (have_flag(flgs, TR_IGNORE_ELEC)) ignore = TRUE;
}
break;
}
note_kill = (plural ? " burn up!" : " burns up!");
#endif
- if (f3 & (TR3_IGNORE_FIRE)) ignore = TRUE;
+ if (have_flag(flgs, TR_IGNORE_FIRE)) ignore = TRUE;
}
break;
}
#endif
do_kill = TRUE;
- if (f3 & (TR3_IGNORE_COLD)) ignore = TRUE;
+ if (have_flag(flgs, TR_IGNORE_COLD)) ignore = TRUE;
}
break;
}
note_kill = (plural ? " burn up!" : " burns up!");
#endif
- if (f3 & (TR3_IGNORE_FIRE)) ignore = TRUE;
+ if (have_flag(flgs, TR_IGNORE_FIRE)) ignore = TRUE;
}
if (hates_elec(o_ptr))
{
note_kill = (plural ? " are destroyed!" : " is destroyed!");
#endif
- if (f3 & (TR3_IGNORE_ELEC)) ignore = TRUE;
+ if (have_flag(flgs, TR_IGNORE_ELEC)) ignore = TRUE;
}
break;
}
note_kill = (plural ? " burn up!" : " burns up!");
#endif
- if (f3 & (TR3_IGNORE_FIRE)) ignore = TRUE;
+ if (have_flag(flgs, TR_IGNORE_FIRE)) ignore = TRUE;
}
if (hates_cold(o_ptr))
{
note_kill = (plural ? " shatter!" : " shatters!");
#endif
- if (f3 & (TR3_IGNORE_COLD)) ignore = TRUE;
+ if (have_flag(flgs, TR_IGNORE_COLD)) ignore = TRUE;
}
break;
}
note_kill = (plural ? " are destroyed!" : " is destroyed!");
#endif
- if (f2 & (TR2_RES_CHAOS)) ignore = TRUE;
+ if (have_flag(flgs, TR_RES_CHAOS)) ignore = TRUE;
else if ((o_ptr->tval == TV_SCROLL) && (o_ptr->sval == SV_SCROLL_CHAOS)) ignore = TRUE;
break;
}
char v_string [8] [128];
char s_string [6] [128];
- u32b f1 = 0L, f2 = 0L, f3 = 0L;
+ u32b flgs[TR_FLAG_SIZE];
object_type *o_ptr;
int percent;
+ for (j = 0; j < TR_FLAG_SIZE; j++)
+ flgs[j] = 0L;
+
p_ptr->knowledge |= (KNOW_STAT | KNOW_HPRATE);
strcpy(Dummy, "");
/* Acquire item flags from equipment */
for (k = INVEN_RARM; k < INVEN_TOTAL; k++)
{
- u32b t1, t2, t3;
+ u32b tflgs[TR_FLAG_SIZE];
o_ptr = &inventory[k];
if (!o_ptr->k_idx) continue;
/* Extract the flags */
- object_flags(o_ptr, &t1, &t2, &t3);
+ object_flags(o_ptr, tflgs);
/* Extract flags */
- f1 |= t1;
- f2 |= t2;
- f3 |= t3;
+ for (j = 0; j < TR_FLAG_SIZE; j++)
+ flgs[j] |= tflgs[j];
}
#ifdef JP
#endif
}
+ if (p_ptr->esp_animal)
+ {
+#ifdef JP
+info[i++] = "¤¢¤Ê¤¿¤Ï¼«Á³³¦¤ÎÀ¸Êª¤Î¸ºß¤ò´¶¤¸¤ëǽÎϤò»ý¤Ã¤Æ¤¤¤ë¡£";
+#else
+ info[i++] = "You sense natural creatures.";
+#endif
+
+ }
+ if (p_ptr->esp_undead)
+ {
+#ifdef JP
+info[i++] = "¤¢¤Ê¤¿¤Ï¥¢¥ó¥Ç¥Ã¥É¤Î¸ºß¤ò´¶¤¸¤ëǽÎϤò»ý¤Ã¤Æ¤¤¤ë¡£";
+#else
+ info[i++] = "You sense undead.";
+#endif
+
+ }
+ if (p_ptr->esp_demon)
+ {
+#ifdef JP
+info[i++] = "¤¢¤Ê¤¿¤Ï°Ëâ¤Î¸ºß¤ò´¶¤¸¤ëǽÎϤò»ý¤Ã¤Æ¤¤¤ë¡£";
+#else
+ info[i++] = "You sense demons.";
+#endif
+
+ }
+ if (p_ptr->esp_troll)
+ {
+#ifdef JP
+info[i++] = "¤¢¤Ê¤¿¤Ï¥È¥í¥ë¤Î¸ºß¤ò´¶¤¸¤ëǽÎϤò»ý¤Ã¤Æ¤¤¤ë¡£";
+#else
+ info[i++] = "You sense trolls.";
+#endif
+
+ }
+ if (p_ptr->esp_giant)
+ {
+#ifdef JP
+info[i++] = "¤¢¤Ê¤¿¤Ïµð¿Í¤Î¸ºß¤ò´¶¤¸¤ëǽÎϤò»ý¤Ã¤Æ¤¤¤ë¡£";
+#else
+ info[i++] = "You sense giants.";
+#endif
+
+ }
+ if (p_ptr->esp_dragon)
+ {
+#ifdef JP
+info[i++] = "¤¢¤Ê¤¿¤Ï¥É¥é¥´¥ó¤Î¸ºß¤ò´¶¤¸¤ëǽÎϤò»ý¤Ã¤Æ¤¤¤ë¡£";
+#else
+ info[i++] = "You sense dragons.";
+#endif
+
+ }
+ if (p_ptr->esp_human)
+ {
+#ifdef JP
+info[i++] = "¤¢¤Ê¤¿¤Ï¿Í´Ö¤Î¸ºß¤ò´¶¤¸¤ëǽÎϤò»ý¤Ã¤Æ¤¤¤ë¡£";
+#else
+ info[i++] = "You sense humans.";
+#endif
+
+ }
+ if (p_ptr->esp_evil)
+ {
+#ifdef JP
+info[i++] = "¤¢¤Ê¤¿¤Ï¼Ù°¤ÊÀ¸¤Êª¤Î¸ºß¤ò´¶¤¸¤ëǽÎϤò»ý¤Ã¤Æ¤¤¤ë¡£";
+#else
+ info[i++] = "You sense evil creatures.";
+#endif
+
+ }
+ if (p_ptr->esp_good)
+ {
+#ifdef JP
+info[i++] = "¤¢¤Ê¤¿¤ÏÁ±ÎɤÊÀ¸¤Êª¤Î¸ºß¤ò´¶¤¸¤ëǽÎϤò»ý¤Ã¤Æ¤¤¤ë¡£";
+#else
+ info[i++] = "You sense good creatures.";
+#endif
+
+ }
+ if (p_ptr->esp_nonliving)
+ {
+#ifdef JP
+info[i++] = "¤¢¤Ê¤¿¤Ï³èÆ°¤¹¤ë̵À¸ÊªÂΤθºß¤ò´¶¤¸¤ëǽÎϤò»ý¤Ã¤Æ¤¤¤ë¡£";
+#else
+ info[i++] = "You sense non-living creatures.";
+#endif
+
+ }
+ if (p_ptr->esp_unique)
+ {
+#ifdef JP
+info[i++] = "¤¢¤Ê¤¿¤ÏÆÃÊ̤ʶ¯Å¨¤Î¸ºß¤ò´¶¤¸¤ëǽÎϤò»ý¤Ã¤Æ¤¤¤ë¡£";
+#else
+ info[i++] = "You sense unique monsters.";
+#endif
+
+ }
if (p_ptr->hold_life)
{
#ifdef JP
}
- if (f1 & (TR1_STR))
+ if (have_flag(flgs, TR_STR))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÏÓÎϤÏÁõÈ÷¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£";
#endif
}
- if (f1 & (TR1_INT))
+ if (have_flag(flgs, TR_INT))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÃÎǽ¤ÏÁõÈ÷¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£";
#endif
}
- if (f1 & (TR1_WIS))
+ if (have_flag(flgs, TR_WIS))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤Î¸¤µ¤ÏÁõÈ÷¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£";
#endif
}
- if (f1 & (TR1_DEX))
+ if (have_flag(flgs, TR_DEX))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤Î´ïÍѤµ¤ÏÁõÈ÷¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£";
#endif
}
- if (f1 & (TR1_CON))
+ if (have_flag(flgs, TR_CON))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÂѵ×ÎϤÏÁõÈ÷¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£";
#endif
}
- if (f1 & (TR1_CHR))
+ if (have_flag(flgs, TR_CHR))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÌ¥ÎϤÏÁõÈ÷¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£";
}
- if (f1 & (TR1_STEALTH))
+ if (have_flag(flgs, TR_STEALTH))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤Î±£Ì©¹ÔưǽÎϤÏÁõÈ÷¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£";
#endif
}
- if (f1 & (TR1_SEARCH))
+ if (have_flag(flgs, TR_SEARCH))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤Îõº÷ǽÎϤÏÁõÈ÷¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£";
#endif
}
- if (f1 & (TR1_INFRA))
+ if (have_flag(flgs, TR_INFRA))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÀÖ³°Àþ»ëÎϤÏÁõÈ÷¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£";
#endif
}
- if (f1 & (TR1_TUNNEL))
+ if (have_flag(flgs, TR_TUNNEL))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎºÎ·¡Ç½ÎϤÏÁõÈ÷¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£";
#endif
}
- if (f1 & (TR1_SPEED))
+ if (have_flag(flgs, TR_SPEED))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤Î¥¹¥Ô¡¼¥É¤ÏÁõÈ÷¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£";
#endif
}
- if (f1 & (TR1_BLOWS))
+ if (have_flag(flgs, TR_BLOWS))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤Î¹¶·â®ÅÙ¤ÏÁõÈ÷¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£";
if (o_ptr->k_idx)
{
/* Indicate Blessing */
- if (f3 & (TR3_BLESSED))
+ if (have_flag(flgs, TR_BLESSED))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¿À¤Î½ËÊ¡¤ò¼õ¤±¤Æ¤¤¤ë¡£";
}
- if (f1 & (TR1_CHAOTIC))
+ if (have_flag(flgs, TR_CHAOTIC))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥í¥°¥ë¥¹¤Îħ¤Î°À¤ò¤â¤Ä¡£";
}
/* Hack */
- if (f1 & (TR1_IMPACT))
+ if (have_flag(flgs, TR_IMPACT))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤ÏÂÇ·â¤ÇÃϿ̤òȯÀ¸¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£";
}
- if (f1 & (TR1_VORPAL))
+ if (have_flag(flgs, TR_VORPAL))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤ÏÈó¾ï¤Ë±Ô¤¤¡£";
}
- if (f1 & (TR1_VAMPIRIC))
+ if (have_flag(flgs, TR_VAMPIRIC))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤ÏŨ¤«¤éÀ¸Ì¿ÎϤòµÛ¼ý¤¹¤ë¡£";
}
/* Special "Attack Bonuses" */
- if (f1 & (TR1_BRAND_ACID))
+ if (have_flag(flgs, TR_BRAND_ACID))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤ÏŨ¤òÍϤ«¤¹¡£";
#endif
}
- if (f1 & (TR1_BRAND_ELEC))
+ if (have_flag(flgs, TR_BRAND_ELEC))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤ÏŨ¤ò´¶ÅŤµ¤»¤ë¡£";
#endif
}
- if (f1 & (TR1_BRAND_FIRE))
+ if (have_flag(flgs, TR_BRAND_FIRE))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤ÏŨ¤òdz¤ä¤¹¡£";
#endif
}
- if (f1 & (TR1_BRAND_COLD))
+ if (have_flag(flgs, TR_BRAND_COLD))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤ÏŨ¤òÅà¤é¤»¤ë¡£";
#endif
}
- if (f1 & (TR1_BRAND_POIS))
+ if (have_flag(flgs, TR_BRAND_POIS))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤ÏŨ¤òÆǤǿ¯¤¹¡£";
}
/* Special "slay" flags */
- if (f1 & (TR1_SLAY_ANIMAL))
+ if (have_flag(flgs, TR_KILL_ANIMAL))
+ {
+#ifdef JP
+info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ïưʪ¤ÎŷŨ¤Ç¤¢¤ë¡£";
+#else
+ info[i++] = "Your weapon is a great bane of animals.";
+#endif
+
+ }
+ else if (have_flag(flgs, TR_SLAY_ANIMAL))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ïưʪ¤ËÂФ·¤Æ¶¯¤¤ÎϤòȯ´ø¤¹¤ë¡£";
#endif
}
- if (f1 & (TR1_SLAY_EVIL))
+ if (have_flag(flgs, TR_KILL_EVIL))
+ {
+#ifdef JP
+info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¼Ù°¤Ê¤ë¸ºß¤ÎŷŨ¤Ç¤¢¤ë¡£";
+#else
+ info[i++] = "Your weapon is a great bane of evil.";
+#endif
+
+ }
+ else if (have_flag(flgs, TR_SLAY_EVIL))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¼Ù°¤Ê¤ë¸ºß¤ËÂФ·¤Æ¶¯¤¤ÎϤòȯ´ø¤¹¤ë¡£";
#endif
}
- if (f3 & (TR3_SLAY_HUMAN))
+ if (have_flag(flgs, TR_KILL_HUMAN))
+ {
+#ifdef JP
+info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¿Í´Ö¤ÎŷŨ¤Ç¤¢¤ë¡£";
+#else
+ info[i++] = "Your weapon is a great bane of humans.";
+#endif
+
+ }
+ else if (have_flag(flgs, TR_SLAY_HUMAN))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¿Í´Ö¤ËÂФ·¤ÆÆä˶¯¤¤ÎϤòȯ´ø¤¹¤ë¡£";
#endif
}
- if (f1 & (TR1_SLAY_UNDEAD))
+ if (have_flag(flgs, TR_KILL_UNDEAD))
+ {
+#ifdef JP
+info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥¢¥ó¥Ç¥Ã¥É¤ÎŷŨ¤Ç¤¢¤ë¡£";
+#else
+ info[i++] = "Your weapon is a great bane of undead.";
+#endif
+
+ }
+ else if (have_flag(flgs, TR_SLAY_UNDEAD))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥¢¥ó¥Ç¥Ã¥É¤ËÂФ·¤Æ¿ÀÀ»¤Ê¤ëÎϤòȯ´ø¤¹¤ë¡£";
#endif
}
- if (f1 & (TR1_SLAY_DEMON))
+ if (have_flag(flgs, TR_KILL_DEMON))
+ {
+#ifdef JP
+info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥Ç¡¼¥â¥ó¤ÎŷŨ¤Ç¤¢¤ë¡£";
+#else
+ info[i++] = "Your weapon is a great bane of demons.";
+#endif
+
+ }
+ else if (have_flag(flgs, TR_SLAY_DEMON))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥Ç¡¼¥â¥ó¤ËÂФ·¤Æ¿ÀÀ»¤Ê¤ëÎϤòȯ´ø¤¹¤ë¡£";
#endif
}
- if (f1 & (TR1_SLAY_ORC))
+ if (have_flag(flgs, TR_KILL_ORC))
+ {
+#ifdef JP
+info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥ª¡¼¥¯¤ÎŷŨ¤Ç¤¢¤ë¡£";
+#else
+ info[i++] = "Your weapon is a great bane of orcs.";
+#endif
+
+ }
+ else if (have_flag(flgs, TR_SLAY_ORC))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥ª¡¼¥¯¤ËÂФ·¤ÆÆä˶¯¤¤ÎϤòȯ´ø¤¹¤ë¡£";
#endif
}
- if (f1 & (TR1_SLAY_TROLL))
+ if (have_flag(flgs, TR_KILL_TROLL))
+ {
+#ifdef JP
+info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥È¥í¥ë¤ÎŷŨ¤Ç¤¢¤ë¡£";
+#else
+ info[i++] = "Your weapon is a great bane of trolls.";
+#endif
+
+ }
+ else if (have_flag(flgs, TR_SLAY_TROLL))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥È¥í¥ë¤ËÂФ·¤ÆÆä˶¯¤¤ÎϤòȯ´ø¤¹¤ë¡£";
#endif
}
- if (f1 & (TR1_SLAY_GIANT))
+ if (have_flag(flgs, TR_KILL_GIANT))
+ {
+#ifdef JP
+info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥¸¥ã¥¤¥¢¥ó¥È¤ÎŷŨ¤Ç¤¢¤ë¡£";
+#else
+ info[i++] = "Your weapon is a great bane of giants.";
+#endif
+
+ }
+ else if (have_flag(flgs, TR_SLAY_GIANT))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥¸¥ã¥¤¥¢¥ó¥È¤ËÂФ·¤ÆÆä˶¯¤¤ÎϤòȯ´ø¤¹¤ë¡£";
}
/* Special "kill" flags */
- if (f1 & (TR1_KILL_DRAGON))
+ if (have_flag(flgs, TR_KILL_DRAGON))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥É¥é¥´¥ó¤ÎŷŨ¤Ç¤¢¤ë¡£";
#endif
}
- else if (f1 & (TR1_SLAY_DRAGON))
+ else if (have_flag(flgs, TR_SLAY_DRAGON))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥É¥é¥´¥ó¤ËÂФ·¤ÆÆä˶¯¤¤ÎϤòȯ´ø¤¹¤ë¡£";
}
- if (f1 & (TR1_FORCE_WEAPON))
+ if (have_flag(flgs, TR_FORCE_WEAPON))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤ÏMP¤ò»È¤Ã¤Æ¹¶·â¤¹¤ë¡£";
#endif
}
- if (f2 & (TR2_THROW))
+ if (have_flag(flgs, TR_THROW))
{
#ifdef JP
info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤ÏÅꤲ¤ä¤¹¤¤¡£";
{
int item;
object_type *o_ptr;
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
char o_name[MAX_NLEN];
cptr q, s;
object_desc(o_name, o_ptr, FALSE, 0);
/* Extract the flags */
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
if (cursed_p(o_ptr))
{
* artifact weapon they find. Ego weapons and normal weapons
* can be blessed automatically.
*/
- if (f3 & TR3_BLESSED)
+ if (have_flag(flgs, TR_BLESSED))
{
#ifdef JP
msg_format("%s ¤Ï´û¤Ë½ËÊ¡¤µ¤ì¤Æ¤¤¤ë¡£",
((o_ptr->number > 1) ? "" : "s"));
#endif
- o_ptr->art_flags3 |= TR3_BLESSED;
+ add_flag(o_ptr->art_flags, TR_BLESSED);
o_ptr->discount = 99;
}
else
{
int item;
object_type *o_ptr;
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
char o_name[MAX_NLEN];
cptr q, s;
object_desc(o_name, o_ptr, FALSE, 0);
/* Extract the flags */
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
if (o_ptr->k_idx && !artifact_p(o_ptr) && !ego_item_p(o_ptr) &&
!o_ptr->art_name && !cursed_p(o_ptr) && (o_ptr->sval != SV_SHIELD_OF_DEFLECTION))
*/
int set_acid_destroy(object_type *o_ptr)
{
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
if (!hates_acid(o_ptr)) return (FALSE);
- object_flags(o_ptr, &f1, &f2, &f3);
- if (f3 & TR3_IGNORE_ACID) return (FALSE);
+ object_flags(o_ptr, flgs);
+ if (have_flag(flgs, TR_IGNORE_ACID)) return (FALSE);
return (TRUE);
}
*/
int set_elec_destroy(object_type *o_ptr)
{
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
if (!hates_elec(o_ptr)) return (FALSE);
- object_flags(o_ptr, &f1, &f2, &f3);
- if (f3 & TR3_IGNORE_ELEC) return (FALSE);
+ object_flags(o_ptr, flgs);
+ if (have_flag(flgs, TR_IGNORE_ELEC)) return (FALSE);
return (TRUE);
}
*/
int set_fire_destroy(object_type *o_ptr)
{
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
if (!hates_fire(o_ptr)) return (FALSE);
- object_flags(o_ptr, &f1, &f2, &f3);
- if (f3 & TR3_IGNORE_FIRE) return (FALSE);
+ object_flags(o_ptr, flgs);
+ if (have_flag(flgs, TR_IGNORE_FIRE)) return (FALSE);
return (TRUE);
}
*/
int set_cold_destroy(object_type *o_ptr)
{
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
if (!hates_cold(o_ptr)) return (FALSE);
- object_flags(o_ptr, &f1, &f2, &f3);
- if (f3 & TR3_IGNORE_COLD) return (FALSE);
+ object_flags(o_ptr, flgs);
+ if (have_flag(flgs, TR_IGNORE_COLD)) return (FALSE);
return (TRUE);
}
static int minus_ac(void)
{
object_type *o_ptr = NULL;
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
char o_name[MAX_NLEN];
object_desc(o_name, o_ptr, FALSE, 0);
/* Extract the flags */
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
/* Object resists */
- if (f3 & TR3_IGNORE_ACID)
+ if (have_flag(flgs, TR_IGNORE_ACID))
{
#ifdef JP
msg_format("¤·¤«¤·%s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª", o_name);
/* Description */
object_desc(o_name, o_ptr, FALSE, 0);
- o_ptr->art_flags3 |= TR3_IGNORE_ACID;
+ add_flag(o_ptr->art_flags, TR_IGNORE_ACID);
if ((o_ptr->to_a < 0) && !cursed_p(o_ptr))
{
*/
bool curse_armor(void)
{
+ int i;
object_type *o_ptr;
char o_name[MAX_NLEN];
o_ptr->ac = 0;
o_ptr->dd = 0;
o_ptr->ds = 0;
- o_ptr->art_flags1 = 0;
- o_ptr->art_flags2 = 0;
- o_ptr->art_flags3 = 0;
+
+ for (i = 0; i < TR_FLAG_SIZE; i++)
+ o_ptr->art_flags[i] = 0;
/* Curse it */
o_ptr->curse_flags = TRC_CURSED;
*/
bool curse_weapon(bool force, int slot)
{
+ int i;
+
object_type *o_ptr;
char o_name[MAX_NLEN];
o_ptr->ac = 0;
o_ptr->dd = 0;
o_ptr->ds = 0;
- o_ptr->art_flags1 = 0;
- o_ptr->art_flags2 = 0;
- o_ptr->art_flags3 = 0;
+
+ for (i = 0; i < TR_FLAG_SIZE; i++)
+ o_ptr->art_flags[i] = 0;
/* Curse it */
*/
static bool store_object_similar(object_type *o_ptr, object_type *j_ptr)
{
+ int i;
+
/* Hack -- Identical items cannot be stacked */
if (o_ptr == j_ptr) return (0);
if (o_ptr->art_name || j_ptr->art_name) return (0);
/* Hack -- Identical art_flags! */
- if ((o_ptr->art_flags1 != j_ptr->art_flags1) ||
- (o_ptr->art_flags2 != j_ptr->art_flags2) ||
- (o_ptr->art_flags3 != j_ptr->art_flags3))
- return (0);
+ for (i = 0; i < TR_FLAG_SIZE; i++)
+ if (o_ptr->art_flags[i] != j_ptr->art_flags[i]) return (0);
/* Hack -- Never stack "powerful" items */
if (o_ptr->xtra1 || j_ptr->xtra1) return (0);
static bool is_blessed(object_type *o_ptr)
{
- u32b f1, f2, f3;
- object_flags(o_ptr, &f1, &f2, &f3);
- if (f3 & TR3_BLESSED) return (TRUE);
+ u32b flgs[TR_FLAG_SIZE];
+ object_flags(o_ptr, flgs);
+ if (have_flag(flgs, TR_BLESSED)) return (TRUE);
else return (FALSE);
}
s32b cost; /* Object "base cost" */
- u32b flags1; /* Flags, set 1 */
- u32b flags2; /* Flags, set 2 */
- u32b flags3; /* Flags, set 3 */
+ u32b flags[TR_FLAG_SIZE]; /* Flags */
u32b gen_flags; /* flags for generate */
s32b cost; /* Artifact "cost" */
- u32b flags1; /* Artifact Flags, set 1 */
- u32b flags2; /* Artifact Flags, set 2 */
- u32b flags3; /* Artifact Flags, set 3 */
+ u32b flags[TR_FLAG_SIZE]; /* Artifact Flags */
u32b gen_flags; /* flags for generate */
s32b cost; /* Ego-item "cost" */
- u32b flags1; /* Ego-Item Flags, set 1 */
- u32b flags2; /* Ego-Item Flags, set 2 */
- u32b flags3; /* Ego-Item Flags, set 3 */
+ u32b flags[TR_FLAG_SIZE]; /* Ego-Item Flags */
u32b gen_flags; /* flags for generate */
};
byte feeling; /* Game generated inscription number (eg, pseudo-id) */
- u32b art_flags1; /* Flags, set 1 Alas, these were necessary */
- u32b art_flags2; /* Flags, set 2 for the random artifacts of*/
- u32b art_flags3; /* Flags, set 3 Zangband */
+ u32b art_flags[TR_FLAG_SIZE]; /* Extra Flags for ego and artifacts */
u32b curse_flags; /* Flags for curse */
bool see_inv; /* Can see invisible */
bool regenerate; /* Regenerate hit pts */
bool hold_life; /* Resist life draining */
+
bool telepathy; /* Telepathy */
+ bool esp_animal;
+ bool esp_undead;
+ bool esp_demon;
+ bool esp_orc;
+ bool esp_troll;
+ bool esp_giant;
+ bool esp_dragon;
+ bool esp_human;
+ bool esp_evil;
+ bool esp_good;
+ bool esp_nonliving;
+ bool esp_unique;
+
bool slow_digest; /* Slower digestion */
bool bless_blade; /* Blessed blade */
bool xtra_might; /* Extra might bow */
struct flag_desc
{
- const u32b flag;
+ const int flag;
const char *const desc;
};
static flag_desc stat_flags_desc[] =
{
#ifdef JP
- { TR1_STR, "ÏÓÎÏ" },
- { TR1_INT, "ÃÎǽ" },
- { TR1_WIS, "¸¤µ" },
- { TR1_DEX, "´ïÍѤµ" },
- { TR1_CON, "Âѵ×ÎÏ" },
- { TR1_CHR, "Ì¥ÎÏ" }
+ { TR_STR, "ÏÓÎÏ" },
+ { TR_INT, "ÃÎǽ" },
+ { TR_WIS, "¸¤µ" },
+ { TR_DEX, "´ïÍѤµ" },
+ { TR_CON, "Âѵ×ÎÏ" },
+ { TR_CHR, "Ì¥ÎÏ" }
#else
- { TR1_STR, "STR" },
- { TR1_INT, "INT" },
- { TR1_WIS, "WIS" },
- { TR1_DEX, "DEX" },
- { TR1_CON, "CON" },
- { TR1_CHR, "CHR" }
+ { TR_STR, "STR" },
+ { TR_INT, "INT" },
+ { TR_WIS, "WIS" },
+ { TR_DEX, "DEX" },
+ { TR_CON, "CON" },
+ { TR_CHR, "CHR" }
#endif
};
static flag_desc pval_flags1_desc[] =
{
#ifdef JP
- { TR1_MAGIC_MASTERY, "ËâË¡Æ»¶ñ»ÈÍÑǽÎÏ" },
- { TR1_STEALTH, "±£Ì©" },
- { TR1_SEARCH, "õº÷" },
- { TR1_INFRA, "ÀÖ³°Àþ»ëÎÏ" },
- { TR1_TUNNEL, "ºÎ·¡" },
- { TR1_BLOWS, "¹¶·â²ó¿ô" },
- { TR1_SPEED, "¥¹¥Ô¡¼¥É" }
+ { TR_MAGIC_MASTERY, "ËâË¡Æ»¶ñ»ÈÍÑǽÎÏ" },
+ { TR_STEALTH, "±£Ì©" },
+ { TR_SEARCH, "õº÷" },
+ { TR_INFRA, "ÀÖ³°Àþ»ëÎÏ" },
+ { TR_TUNNEL, "ºÎ·¡" },
+ { TR_BLOWS, "¹¶·â²ó¿ô" },
+ { TR_SPEED, "¥¹¥Ô¡¼¥É" }
#else
- { TR1_STEALTH, "Stealth" },
- { TR1_SEARCH, "Searching" },
- { TR1_INFRA, "Infravision" },
- { TR1_TUNNEL, "Tunneling" },
- { TR1_BLOWS, "Attacks" },
- { TR1_SPEED, "Speed" }
+ { TR_STEALTH, "Stealth" },
+ { TR_SEARCH, "Searching" },
+ { TR_INFRA, "Infravision" },
+ { TR_TUNNEL, "Tunneling" },
+ { TR_BLOWS, "Attacks" },
+ { TR_SPEED, "Speed" }
#endif
};
static flag_desc slay_flags_desc[] =
{
#ifdef JP
- { TR1_SLAY_ANIMAL, "ưʪ" },
- { TR1_SLAY_EVIL, "¼Ù°" },
- { TR3_SLAY_HUMAN, "¿Í´Ö" },
- { TR1_SLAY_UNDEAD, "¥¢¥ó¥Ç¥Ã¥É" },
- { TR1_SLAY_DEMON, "°Ëâ" },
- { TR1_SLAY_ORC, "¥ª¡¼¥¯" },
- { TR1_SLAY_TROLL, "¥È¥í¥ë" },
- { TR1_SLAY_GIANT, "µð¿Í" },
- { TR1_SLAY_DRAGON, "¥É¥é¥´¥ó" },
- { TR1_KILL_DRAGON, "*¥É¥é¥´¥ó*" },
+ { TR_SLAY_ANIMAL, "ưʪ" },
+ { TR_KILL_ANIMAL, "*ưʪ*" },
+ { TR_SLAY_EVIL, "¼Ù°" },
+ { TR_KILL_EVIL, "*¼Ù°*" },
+ { TR_SLAY_HUMAN, "¿Í´Ö" },
+ { TR_KILL_HUMAN, "*¿Í´Ö*" },
+ { TR_SLAY_UNDEAD, "¥¢¥ó¥Ç¥Ã¥É" },
+ { TR_KILL_UNDEAD, "*¥¢¥ó¥Ç¥Ã¥É*" },
+ { TR_SLAY_DEMON, "°Ëâ" },
+ { TR_KILL_DEMON, "*°Ëâ*" },
+ { TR_SLAY_ORC, "¥ª¡¼¥¯" },
+ { TR_KILL_ORC, "*¥ª¡¼¥¯*" },
+ { TR_SLAY_TROLL, "¥È¥í¥ë" },
+ { TR_KILL_TROLL, "*¥È¥í¥ë*" },
+ { TR_SLAY_GIANT, "µð¿Í" },
+ { TR_KILL_GIANT, "*µð¿Í*" },
+ { TR_SLAY_DRAGON, "¥É¥é¥´¥ó" },
+ { TR_KILL_DRAGON, "*¥É¥é¥´¥ó*" },
#else
- { TR1_SLAY_ANIMAL, "Animal" },
- { TR1_SLAY_EVIL, "Evil" },
- { TR3_SLAY_HUMAN, "Human" },
- { TR1_SLAY_UNDEAD, "Undead" },
- { TR1_SLAY_DEMON, "Demon" },
- { TR1_SLAY_ORC, "Orc" },
- { TR1_SLAY_TROLL, "Troll" },
- { TR1_SLAY_GIANT, "Giant" },
- { TR1_SLAY_DRAGON, "Dragon" },
- { TR1_KILL_DRAGON, "Xdragon" }
+ { TR_SLAY_ANIMAL, "Animal" },
+ { TR_KILL_ANIMAL, "XAnimal" },
+ { TR_SLAY_EVIL, "Evil" },
+ { TR_KILL_EVIL, "XEvil" },
+ { TR_SLAY_HUMAN, "Human" },
+ { TR_KILL_HUMAN, "XHuman" },
+ { TR_SLAY_UNDEAD, "Undead" },
+ { TR_KILL_UNDEAD, "XUndead" },
+ { TR_SLAY_DEMON, "Demon" },
+ { TR_KILL_DEMON, "XDemon" },
+ { TR_SLAY_ORC, "Orc" },
+ { TR_KILL_ORC, "XOrc" },
+ { TR_SLAY_TROLL, "Troll" },
+ { TR_KILL_TROLL, "XTroll" },
+ { TR_SLAY_GIANT, "Giant" },
+ { TR_KILL_GIANT, "Xgiant" },
+ { TR_SLAY_DRAGON, "Dragon" },
+ { TR_KILL_DRAGON, "Xdragon" }
#endif
};
static flag_desc brand_flags_desc[] =
{
#ifdef JP
- { TR1_BRAND_ACID, "Íϲò" },
- { TR1_BRAND_ELEC, "ÅÅ·â" },
- { TR1_BRAND_FIRE, "¾Æ´þ" },
- { TR1_BRAND_COLD, "Åà·ë" },
- { TR1_BRAND_POIS, "ÆÇ»¦" },
-
- { TR1_FORCE_WEAPON, "ÍýÎÏ" },
- { TR1_CHAOTIC, "º®ÆÙ" },
- { TR1_VAMPIRIC, "µÛ·ì" },
- { TR1_IMPACT, "ÃÏ¿Ì" },
- { TR1_VORPAL, "ÀÚ¤ìÌ£" },
+ { TR_BRAND_ACID, "Íϲò" },
+ { TR_BRAND_ELEC, "ÅÅ·â" },
+ { TR_BRAND_FIRE, "¾Æ´þ" },
+ { TR_BRAND_COLD, "Åà·ë" },
+ { TR_BRAND_POIS, "ÆÇ»¦" },
+
+ { TR_FORCE_WEAPON, "ÍýÎÏ" },
+ { TR_CHAOTIC, "º®ÆÙ" },
+ { TR_VAMPIRIC, "µÛ·ì" },
+ { TR_IMPACT, "ÃÏ¿Ì" },
+ { TR_VORPAL, "ÀÚ¤ìÌ£" },
#else
- { TR1_BRAND_ACID, "Acid Brand" },
- { TR1_BRAND_ELEC, "Lightning Brand" },
- { TR1_BRAND_FIRE, "Flame Tongue" },
- { TR1_BRAND_COLD, "Frost Brand" },
- { TR1_BRAND_POIS, "Poisoned" },
-
- { TR1_FORCE_WEAPON, "Force" },
- { TR1_CHAOTIC, "Mark of Chaos" },
- { TR1_VAMPIRIC, "Vampiric" },
- { TR1_IMPACT, "Earthquake impact on hit" },
- { TR1_VORPAL, "Very sharp" },
+ { TR_BRAND_ACID, "Acid Brand" },
+ { TR_BRAND_ELEC, "Lightning Brand" },
+ { TR_BRAND_FIRE, "Flame Tongue" },
+ { TR_BRAND_COLD, "Frost Brand" },
+ { TR_BRAND_POIS, "Poisoned" },
+
+ { TR_FORCE_WEAPON, "Force" },
+ { TR_CHAOTIC, "Mark of Chaos" },
+ { TR_VAMPIRIC, "Vampiric" },
+ { TR_IMPACT, "Earthquake impact on hit" },
+ { TR_VORPAL, "Very sharp" },
#endif
};
static const flag_desc resist_flags_desc[] =
{
#ifdef JP
- { TR2_RES_ACID, "»À" },
- { TR2_RES_ELEC, "ÅÅ·â" },
- { TR2_RES_FIRE, "²Ð±ê" },
- { TR2_RES_COLD, "Î䵤" },
- { TR2_RES_POIS, "ÆÇ" },
- { TR2_RES_FEAR, "¶²ÉÝ"},
- { TR2_RES_LITE, "Á®¸÷" },
- { TR2_RES_DARK, "°Å¹õ" },
- { TR2_RES_BLIND, "ÌÕÌÜ" },
- { TR2_RES_CONF, "º®Íð" },
- { TR2_RES_SOUND, "¹ì²»" },
- { TR2_RES_SHARDS, "ÇËÊÒ" },
- { TR2_RES_NETHER, "ÃϹö" },
- { TR2_RES_NEXUS, "°ø²Ìº®Íð" },
- { TR2_RES_CHAOS, "¥«¥ª¥¹" },
- { TR2_RES_DISEN, "Îô²½" },
+ { TR_RES_ACID, "»À" },
+ { TR_RES_ELEC, "ÅÅ·â" },
+ { TR_RES_FIRE, "²Ð±ê" },
+ { TR_RES_COLD, "Î䵤" },
+ { TR_RES_POIS, "ÆÇ" },
+ { TR_RES_FEAR, "¶²ÉÝ"},
+ { TR_RES_LITE, "Á®¸÷" },
+ { TR_RES_DARK, "°Å¹õ" },
+ { TR_RES_BLIND, "ÌÕÌÜ" },
+ { TR_RES_CONF, "º®Íð" },
+ { TR_RES_SOUND, "¹ì²»" },
+ { TR_RES_SHARDS, "ÇËÊÒ" },
+ { TR_RES_NETHER, "ÃϹö" },
+ { TR_RES_NEXUS, "°ø²Ìº®Íð" },
+ { TR_RES_CHAOS, "¥«¥ª¥¹" },
+ { TR_RES_DISEN, "Îô²½" },
#else
- { TR2_RES_ACID, "Acid" },
- { TR2_RES_ELEC, "Lightning" },
- { TR2_RES_FIRE, "Fire" },
- { TR2_RES_COLD, "Cold" },
- { TR2_RES_POIS, "Poison" },
- { TR2_RES_FEAR, "Fear"},
- { TR2_RES_LITE, "Light" },
- { TR2_RES_DARK, "Dark" },
- { TR2_RES_BLIND, "Blindness" },
- { TR2_RES_CONF, "Confusion" },
- { TR2_RES_SOUND, "Sound" },
- { TR2_RES_SHARDS, "Shards" },
- { TR2_RES_NETHER, "Nether" },
- { TR2_RES_NEXUS, "Nexus" },
- { TR2_RES_CHAOS, "Chaos" },
- { TR2_RES_DISEN, "Disenchantment" },
+ { TR_RES_ACID, "Acid" },
+ { TR_RES_ELEC, "Lightning" },
+ { TR_RES_FIRE, "Fire" },
+ { TR_RES_COLD, "Cold" },
+ { TR_RES_POIS, "Poison" },
+ { TR_RES_FEAR, "Fear"},
+ { TR_RES_LITE, "Light" },
+ { TR_RES_DARK, "Dark" },
+ { TR_RES_BLIND, "Blindness" },
+ { TR_RES_CONF, "Confusion" },
+ { TR_RES_SOUND, "Sound" },
+ { TR_RES_SHARDS, "Shards" },
+ { TR_RES_NETHER, "Nether" },
+ { TR_RES_NEXUS, "Nexus" },
+ { TR_RES_CHAOS, "Chaos" },
+ { TR_RES_DISEN, "Disenchantment" },
#endif
};
static const flag_desc immune_flags_desc[] =
{
#ifdef JP
- { TR2_IM_ACID, "»À" },
- { TR2_IM_ELEC, "ÅÅ·â" },
- { TR2_IM_FIRE, "²Ð±ê" },
- { TR2_IM_COLD, "Î䵤" },
+ { TR_IM_ACID, "»À" },
+ { TR_IM_ELEC, "ÅÅ·â" },
+ { TR_IM_FIRE, "²Ð±ê" },
+ { TR_IM_COLD, "Î䵤" },
#else
- { TR2_IM_ACID, "Acid" },
- { TR2_IM_ELEC, "Lightning" },
- { TR2_IM_FIRE, "Fire" },
- { TR2_IM_COLD, "Cold" },
+ { TR_IM_ACID, "Acid" },
+ { TR_IM_ELEC, "Lightning" },
+ { TR_IM_FIRE, "Fire" },
+ { TR_IM_COLD, "Cold" },
#endif
};
static const flag_desc sustain_flags_desc[] =
{
#ifdef JP
- { TR2_SUST_STR, "ÏÓÎÏ" },
- { TR2_SUST_INT, "ÃÎǽ" },
- { TR2_SUST_WIS, "¸¤µ" },
- { TR2_SUST_DEX, "´ïÍѤµ" },
- { TR2_SUST_CON, "Âѵ×ÎÏ" },
- { TR2_SUST_CHR, "Ì¥ÎÏ" },
+ { TR_SUST_STR, "ÏÓÎÏ" },
+ { TR_SUST_INT, "ÃÎǽ" },
+ { TR_SUST_WIS, "¸¤µ" },
+ { TR_SUST_DEX, "´ïÍѤµ" },
+ { TR_SUST_CON, "Âѵ×ÎÏ" },
+ { TR_SUST_CHR, "Ì¥ÎÏ" },
#else
- { TR2_SUST_STR, "STR" },
- { TR2_SUST_INT, "INT" },
- { TR2_SUST_WIS, "WIS" },
- { TR2_SUST_DEX, "DEX" },
- { TR2_SUST_CON, "CON" },
- { TR2_SUST_CHR, "CHR" },
+ { TR_SUST_STR, "STR" },
+ { TR_SUST_INT, "INT" },
+ { TR_SUST_WIS, "WIS" },
+ { TR_SUST_DEX, "DEX" },
+ { TR_SUST_CON, "CON" },
+ { TR_SUST_CHR, "CHR" },
#endif
};
static const flag_desc misc_flags2_desc[] =
{
#ifdef JP
- { TR2_THROW, "ÅêÚ³" },
- { TR2_REFLECT, "È¿¼Í" },
- { TR2_FREE_ACT, "ËãáãÃΤ餺" },
- { TR2_HOLD_LIFE, "À¸Ì¿ÎÏ°Ý»ý" },
+ { TR_THROW, "ÅêÚ³" },
+ { TR_REFLECT, "È¿¼Í" },
+ { TR_FREE_ACT, "ËãáãÃΤ餺" },
+ { TR_HOLD_LIFE, "À¸Ì¿ÎÏ°Ý»ý" },
#else
- { TR2_THROW, "Throwing" },
- { TR2_REFLECT, "Reflection" },
- { TR2_FREE_ACT, "Free Action" },
- { TR2_HOLD_LIFE, "Hold Life" },
+ { TR_THROW, "Throwing" },
+ { TR_REFLECT, "Reflection" },
+ { TR_FREE_ACT, "Free Action" },
+ { TR_HOLD_LIFE, "Hold Life" },
#endif
};
static const flag_desc misc_flags3_desc[] =
{
#ifdef JP
- { TR3_SH_FIRE, "²Ð±ê¥ª¡¼¥é" },
- { TR3_SH_ELEC, "Åŷ⥪¡¼¥é" },
- { TR3_SH_COLD, "Î䵤¥ª¡¼¥é" },
- { TR3_NO_TELE, "È¿¥Æ¥ì¥Ý¡¼¥È" },
- { TR3_NO_MAGIC, "È¿ËâË¡" },
- { TR3_FEATHER, "ÉâÍ·" },
- { TR3_SEE_INVIS, "²Ä»ëÆ©ÌÀ" },
- { TR3_TELEPATHY, "¥Æ¥ì¥Ñ¥·¡¼" },
- { TR3_SLOW_DIGEST, "Ãپò½" },
- { TR3_REGEN, "µÞ®²óÉü" },
- { TR3_WARNING, "·Ù¹ð" },
-/* { TR3_XTRA_MIGHT, "¶¯Îϼͷâ" }, */
- { TR3_XTRA_SHOTS, "Äɲüͷâ" }, /* always +1? */
- { TR3_DRAIN_EXP, "·Ð¸³Ã͵ۼý" },
- { TR3_AGGRAVATE, "È¿´¶" },
- { TR3_BLESSED, "½ËÊ¡" },
- { TR3_DEC_MANA, "¾ÃÈñËâÎϸº¾¯" },
+ { TR_SH_FIRE, "²Ð±ê¥ª¡¼¥é" },
+ { TR_SH_ELEC, "Åŷ⥪¡¼¥é" },
+ { TR_SH_COLD, "Î䵤¥ª¡¼¥é" },
+ { TR_NO_TELE, "È¿¥Æ¥ì¥Ý¡¼¥È" },
+ { TR_NO_MAGIC, "È¿ËâË¡" },
+ { TR_FEATHER, "ÉâÍ·" },
+ { TR_SEE_INVIS, "²Ä»ëÆ©ÌÀ" },
+ { TR_TELEPATHY, "¥Æ¥ì¥Ñ¥·¡¼" },
+ { TR_ESP_ANIMAL, "ưʪ´¶ÃÎ" },
+ { TR_ESP_UNDEAD, "ÉԻശÃÎ" },
+ { TR_ESP_DEMON, "°Ëâ´¶ÃÎ" },
+ { TR_ESP_ORC, "¥ª¡¼¥¯´¶ÃÎ" },
+ { TR_ESP_TROLL, "¥È¥í¥ë´¶ÃÎ" },
+ { TR_ESP_GIANT, "µð¿Í´¶ÃÎ" },
+ { TR_ESP_DRAGON, "¥É¥é¥´¥ó´¶ÃÎ" },
+ { TR_ESP_HUMAN, "¿Í´Ö´¶ÃÎ" },
+ { TR_ESP_EVIL, "¼Ù°´¶ÃÎ" },
+ { TR_ESP_GOOD, "Á±ÎÉ´¶ÃÎ" },
+ { TR_ESP_NONLIVING, "̵À¸Êª´¶ÃÎ" },
+ { TR_ESP_UNIQUE, "¥æ¥Ë¡¼¥¯´¶ÃÎ" },
+ { TR_SLOW_DIGEST, "Ãپò½" },
+ { TR_REGEN, "µÞ®²óÉü" },
+ { TR_WARNING, "·Ù¹ð" },
+/* { TR_XTRA_MIGHT, "¶¯Îϼͷâ" }, */
+ { TR_XTRA_SHOTS, "Äɲüͷâ" }, /* always +1? */
+ { TR_DRAIN_EXP, "·Ð¸³Ã͵ۼý" },
+ { TR_AGGRAVATE, "È¿´¶" },
+ { TR_BLESSED, "½ËÊ¡" },
+ { TR_DEC_MANA, "¾ÃÈñËâÎϸº¾¯" },
#else
- { TR3_SH_FIRE, "Fiery Aura" },
- { TR3_SH_ELEC, "Electric Aura" },
- { TR3_SH_COLD, "Coldly Aura" },
- { TR3_NO_TELE, "Prevent Teleportation" },
- { TR3_NO_MAGIC, "Anti-Magic" },
- { TR3_FEATHER, "Levitation" },
- { TR3_SEE_INVIS, "See Invisible" },
- { TR3_TELEPATHY, "ESP" },
- { TR3_SLOW_DIGEST, "Slow Digestion" },
- { TR3_REGEN, "Regeneration" },
- { TR3_WARNING, "Warning" },
-/* { TR3_XTRA_MIGHT, "Extra Might" }, */
- { TR3_XTRA_SHOTS, "+1 Extra Shot" }, /* always +1? */
- { TR3_DRAIN_EXP, "Drains Experience" },
- { TR3_AGGRAVATE, "Aggravates" },
- { TR3_BLESSED, "Blessed Blade" },
- { TR3_DEC_MANA, "Decrease Shouhi Mana" },
+ { TR_SH_FIRE, "Fiery Aura" },
+ { TR_SH_ELEC, "Electric Aura" },
+ { TR_SH_COLD, "Coldly Aura" },
+ { TR_NO_TELE, "Prevent Teleportation" },
+ { TR_NO_MAGIC, "Anti-Magic" },
+ { TR_FEATHER, "Levitation" },
+ { TR_SEE_INVIS, "See Invisible" },
+ { TR_TELEPATHY, "ESP" },
+ { TR_SLOW_DIGEST, "Slow Digestion" },
+ { TR_REGEN, "Regeneration" },
+ { TR_WARNING, "Warning" },
+/* { TR_XTRA_MIGHT, "Extra Might" }, */
+ { TR_XTRA_SHOTS, "+1 Extra Shot" }, /* always +1? */
+ { TR_DRAIN_EXP, "Drains Experience" },
+ { TR_AGGRAVATE, "Aggravates" },
+ { TR_BLESSED, "Blessed Blade" },
+ { TR_DEC_MANA, "Decrease Shouhi Mana" },
#endif
};
*
* The possibly updated description pointer is returned.
*/
-static cptr *spoiler_flag_aux(const u32b art_flags, const flag_desc *flag_ptr,
+static cptr *spoiler_flag_aux(const u32b art_flags[TR_FLAG_SIZE],
+ const flag_desc *flag_ptr,
cptr *desc_ptr, const int n_elmnts)
{
int i;
for (i = 0; i < n_elmnts; ++i)
{
- if (art_flags & flag_ptr[i].flag)
+ if (have_flag(art_flags, flag_ptr[i].flag))
{
*desc_ptr++ = flag_ptr[i].desc;
}
*/
static void analyze_pval (object_type *o_ptr, pval_info_type *p_ptr)
{
- const u32b all_stats = (TR1_STR | TR1_INT | TR1_WIS |
- TR1_DEX | TR1_CON | TR1_CHR);
-
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
cptr *affects_list;
}
/* Extract the flags */
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
affects_list = p_ptr->pval_affects;
sprintf(p_ptr->pval_desc, "%s%d", POSITIZE(o_ptr->pval), o_ptr->pval);
/* First, check to see if the pval affects all stats */
- if ((f1 & all_stats) == all_stats)
+ if (have_flag(flgs, TR_STR) && have_flag(flgs, TR_INT) &&
+ have_flag(flgs, TR_WIS) && have_flag(flgs, TR_DEX) &&
+ have_flag(flgs, TR_CON) && have_flag(flgs, TR_CHR))
{
#ifdef JP
*affects_list++ = "Á´Ç½ÎÏ";
}
/* Are any stats affected? */
- else if (f1 & all_stats)
+ else if (have_flag(flgs, TR_STR) || have_flag(flgs, TR_INT) ||
+ have_flag(flgs, TR_WIS) || have_flag(flgs, TR_DEX) ||
+ have_flag(flgs, TR_CON) || have_flag(flgs, TR_CHR))
{
- affects_list = spoiler_flag_aux(f1, stat_flags_desc,
+ affects_list = spoiler_flag_aux(flgs, stat_flags_desc,
affects_list,
N_ELEMENTS(stat_flags_desc));
}
/* And now the "rest" */
- affects_list = spoiler_flag_aux(f1, pval_flags1_desc,
+ affects_list = spoiler_flag_aux(flgs, pval_flags1_desc,
affects_list,
N_ELEMENTS(pval_flags1_desc));
/* Note the slaying specialties of a weapon */
static void analyze_slay (object_type *o_ptr, cptr *slay_list)
{
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
- slay_list = spoiler_flag_aux(f1, slay_flags_desc, slay_list,
+ slay_list = spoiler_flag_aux(flgs, slay_flags_desc, slay_list,
N_ELEMENTS(slay_flags_desc));
/* Terminate the description list */
/* Note an object's elemental brands */
static void analyze_brand (object_type *o_ptr, cptr *brand_list)
{
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
- brand_list = spoiler_flag_aux(f1, brand_flags_desc, brand_list,
+ brand_list = spoiler_flag_aux(flgs, brand_flags_desc, brand_list,
N_ELEMENTS(brand_flags_desc));
/* Terminate the description list */
/* Note the resistances granted by an object */
static void analyze_resist (object_type *o_ptr, cptr *resist_list)
{
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
- resist_list = spoiler_flag_aux(f2, resist_flags_desc,
+ resist_list = spoiler_flag_aux(flgs, resist_flags_desc,
resist_list, N_ELEMENTS(resist_flags_desc));
/* Terminate the description list */
/* Note the immunities granted by an object */
static void analyze_immune (object_type *o_ptr, cptr *immune_list)
{
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
- immune_list = spoiler_flag_aux(f2, immune_flags_desc,
+ immune_list = spoiler_flag_aux(flgs, immune_flags_desc,
immune_list, N_ELEMENTS(immune_flags_desc));
/* Terminate the description list */
static void analyze_sustains (object_type *o_ptr, cptr *sustain_list)
{
- const u32b all_sustains = (TR2_SUST_STR | TR2_SUST_INT | TR2_SUST_WIS |
- TR2_SUST_DEX | TR2_SUST_CON | TR2_SUST_CHR);
-
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
/* Simplify things if an item sustains all stats */
- if ((f2 & all_sustains) == all_sustains)
+ if (have_flag(flgs, TR_SUST_STR) && have_flag(flgs, TR_SUST_INT) &&
+ have_flag(flgs, TR_SUST_WIS) && have_flag(flgs, TR_SUST_DEX) &&
+ have_flag(flgs, TR_SUST_CON) && have_flag(flgs, TR_SUST_CHR))
{
#ifdef JP
*sustain_list++ = "Á´Ç½ÎÏ";
}
/* Should we bother? */
- else if ((f2 & all_sustains))
+ else if (have_flag(flgs, TR_SUST_STR) || have_flag(flgs, TR_SUST_INT) ||
+ have_flag(flgs, TR_SUST_WIS) || have_flag(flgs, TR_SUST_DEX) ||
+ have_flag(flgs, TR_SUST_CON) || have_flag(flgs, TR_SUST_CHR))
{
- sustain_list = spoiler_flag_aux(f2, sustain_flags_desc,
+ sustain_list = spoiler_flag_aux(flgs, sustain_flags_desc,
sustain_list,
N_ELEMENTS(sustain_flags_desc));
}
*/
static void analyze_misc_magic (object_type *o_ptr, cptr *misc_list)
{
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
- misc_list = spoiler_flag_aux(f2, misc_flags2_desc, misc_list,
+ misc_list = spoiler_flag_aux(flgs, misc_flags2_desc, misc_list,
N_ELEMENTS(misc_flags2_desc));
- misc_list = spoiler_flag_aux(f3, misc_flags3_desc, misc_list,
+ misc_list = spoiler_flag_aux(flgs, misc_flags3_desc, misc_list,
N_ELEMENTS(misc_flags3_desc));
/*
/*
* Glowing artifacts -- small radius light.
*/
- if (f3 & (TR3_LITE))
+ if (have_flag(flgs, TR_LITE))
{
#ifdef JP
*misc_list++ = "±Êµ×¸÷¸»(Ⱦ·Â1)";
/* if (cursed_p(o_ptr)) */
if (1)
{
- if (f3 & TR3_TY_CURSE)
+ if (have_flag(flgs, TR_TY_CURSE))
{
#ifdef JP
*misc_list++ = "ÂÀ¸Å¤Î±åÇ°";
static void wiz_display_item(object_type *o_ptr)
{
int i, j = 13;
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
char buf[256];
/* Extract the flags */
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
/* Clear the screen */
for (i = 1; i <= 23; i++) prt("", i, j - 2);
prt("siwdccsossidsahanvudotgddhuoclio", 13, j);
prt("tnieohtctrnipttmiinmrrnrrraiierl", 14, j);
prt("rtsxnarelcfgdkcpmldncltggpksdced", 15, j);
- prt_binary(f1, 16, j);
+ prt_binary(flgs[0], 16, j);
prt("+------------FLAGS2------------+", 17, j);
prt("SUST....IMMUN.RESIST............", 18, j);
prt("siwdcci clioheatcliooeialoshtncd", 20, j);
prt("tnieohd ierlrfraierliatrnnnrhehi", 21, j);
prt("rtsxnae.dcedwlatdcedsrekdfddrxss", 22, j);
- prt_binary(f2, 23, j);
+ prt_binary(flgs[1], 23, j);
prt("+------------FLAGS3------------+", 10, j+32);
prt("fe cnn t stdrmsiiii d ab ", 11, j+32);
prt("uu utmacaih eielgggonnnnaaere ", 13, j+32);
prt("rr reanurdo vtieeehtrrrrcilas ", 14, j+32);
prt("aa algarnew ienpsntsaefctnevs ", 15, j+32);
- prt_binary(f3, 16, j+32);
+ prt_binary(flgs[2], 16, j+32);
+
+ prt("+------------FLAGS4------------+", 17, j+32);
+ prt("KILL....ESP......... ", 18, j+32);
+ prt("aeud tghaud tgdhegnu ", 19, j+32);
+ prt("nvneoriunneoriruvoon ", 20, j+32);
+ prt("iidmroamidmroagmionq ", 21, j+32);
+ prt("mlenclnmmenclnnnldlu ", 22, j+32);
+ prt_binary(flgs[3], 23, j+32);
}
/* Only mages are affected */
if (mp_ptr->spell_xtra & MAGIC_GLOVE_REDUCE_MANA)
{
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
/* Assume player is not encumbered by gloves */
p_ptr->cumber_glove = FALSE;
o_ptr = &inventory[INVEN_HANDS];
/* Examine the gloves */
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
/* Normal gloves hurt mage-type spells */
if (o_ptr->k_idx &&
- !(f2 & (TR2_FREE_ACT)) &&
- !(f1 & (TR1_MAGIC_MASTERY)) &&
- !((f1 & (TR1_DEX)) && (o_ptr->pval > 0)))
+ !(have_flag(flgs, TR_FREE_ACT)) &&
+ !(have_flag(flgs, TR_MAGIC_MASTERY)) &&
+ !(have_flag(flgs, TR_DEX)) && (o_ptr->pval > 0))
{
/* Encumbered */
p_ptr->cumber_glove = TRUE;
{
int i;
object_type *o_ptr;
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
/* Assume no light */
p_ptr->cur_lite = 0;
if (!o_ptr->k_idx) continue;
/* Extract the flags */
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
/* does this item glow? */
- if (f3 & TR3_LITE)
+ if (have_flag(flgs, TR_LITE))
{
if ((o_ptr->name2 == EGO_DARK) || (o_ptr->name1 == ART_NIGHT)) p_ptr->cur_lite--;
else p_ptr->cur_lite++;
{
int i, j, hold, neutral[2];
int old_speed;
- int old_telepathy;
+ bool old_telepathy;
+ bool old_esp_animal;
+ bool old_esp_undead;
+ bool old_esp_demon;
+ bool old_esp_orc;
+ bool old_esp_troll;
+ bool old_esp_giant;
+ bool old_esp_dragon;
+ bool old_esp_human;
+ bool old_esp_evil;
+ bool old_esp_good;
+ bool old_esp_nonliving;
+ bool old_esp_unique;
int old_see_inv;
int old_dis_ac;
int old_dis_to_a;
int extra_blows[2];
int extra_shots;
object_type *o_ptr;
- u32b f1, f2, f3;
+ u32b flgs[TR_FLAG_SIZE];
bool omoi = FALSE;
bool yoiyami = FALSE;
bool down_saving = FALSE;
/* Save the old vision stuff */
old_telepathy = p_ptr->telepathy;
+ old_esp_animal = p_ptr->esp_animal;
+ old_esp_undead = p_ptr->esp_undead;
+ old_esp_demon = p_ptr->esp_demon;
+ old_esp_orc = p_ptr->esp_orc;
+ old_esp_troll = p_ptr->esp_troll;
+ old_esp_giant = p_ptr->esp_giant;
+ old_esp_dragon = p_ptr->esp_dragon;
+ old_esp_human = p_ptr->esp_human;
+ old_esp_evil = p_ptr->esp_evil;
+ old_esp_good = p_ptr->esp_good;
+ old_esp_nonliving = p_ptr->esp_nonliving;
+ old_esp_unique = p_ptr->esp_unique;
+
old_see_inv = p_ptr->see_inv;
/* Save the old armor class */
p_ptr->ffall = FALSE;
p_ptr->hold_life = FALSE;
p_ptr->telepathy = FALSE;
+ p_ptr->esp_animal = FALSE;
+ p_ptr->esp_undead = FALSE;
+ p_ptr->esp_demon = FALSE;
+ p_ptr->esp_orc = FALSE;
+ p_ptr->esp_troll = FALSE;
+ p_ptr->esp_giant = FALSE;
+ p_ptr->esp_dragon = FALSE;
+ p_ptr->esp_human = FALSE;
+ p_ptr->esp_evil = FALSE;
+ p_ptr->esp_good = FALSE;
+ p_ptr->esp_nonliving = FALSE;
+ p_ptr->esp_unique = FALSE;
p_ptr->lite = FALSE;
p_ptr->sustain_str = FALSE;
p_ptr->sustain_int = FALSE;
if (!o_ptr->k_idx) continue;
/* Extract the item flags */
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
p_ptr->cursed |= (o_ptr->curse_flags & (0xFFFFFFF0L));
if (o_ptr->name1 == ART_CHAINSWORD) p_ptr->cursed |= TRC_CHAINSWORD;
/* Affect stats */
- if (f1 & (TR1_STR)) p_ptr->stat_add[A_STR] += o_ptr->pval;
- if (f1 & (TR1_INT)) p_ptr->stat_add[A_INT] += o_ptr->pval;
- if (f1 & (TR1_WIS)) p_ptr->stat_add[A_WIS] += o_ptr->pval;
- if (f1 & (TR1_DEX)) p_ptr->stat_add[A_DEX] += o_ptr->pval;
- if (f1 & (TR1_CON)) p_ptr->stat_add[A_CON] += o_ptr->pval;
- if (f1 & (TR1_CHR)) p_ptr->stat_add[A_CHR] += o_ptr->pval;
+ if (have_flag(flgs, TR_STR)) p_ptr->stat_add[A_STR] += o_ptr->pval;
+ if (have_flag(flgs, TR_INT)) p_ptr->stat_add[A_INT] += o_ptr->pval;
+ if (have_flag(flgs, TR_WIS)) p_ptr->stat_add[A_WIS] += o_ptr->pval;
+ if (have_flag(flgs, TR_DEX)) p_ptr->stat_add[A_DEX] += o_ptr->pval;
+ if (have_flag(flgs, TR_CON)) p_ptr->stat_add[A_CON] += o_ptr->pval;
+ if (have_flag(flgs, TR_CHR)) p_ptr->stat_add[A_CHR] += o_ptr->pval;
- if (f1 & (TR1_MAGIC_MASTERY)) p_ptr->skill_dev += 8*o_ptr->pval;
+ if (have_flag(flgs, TR_MAGIC_MASTERY)) p_ptr->skill_dev += 8*o_ptr->pval;
/* Affect stealth */
- if (f1 & (TR1_STEALTH)) p_ptr->skill_stl += o_ptr->pval;
+ if (have_flag(flgs, TR_STEALTH)) p_ptr->skill_stl += o_ptr->pval;
/* Affect searching ability (factor of five) */
- if (f1 & (TR1_SEARCH)) p_ptr->skill_srh += (o_ptr->pval * 5);
+ if (have_flag(flgs, TR_SEARCH)) p_ptr->skill_srh += (o_ptr->pval * 5);
/* Affect searching frequency (factor of five) */
- if (f1 & (TR1_SEARCH)) p_ptr->skill_fos += (o_ptr->pval * 5);
+ if (have_flag(flgs, TR_SEARCH)) p_ptr->skill_fos += (o_ptr->pval * 5);
/* Affect infravision */
- if (f1 & (TR1_INFRA)) p_ptr->see_infra += o_ptr->pval;
+ if (have_flag(flgs, TR_INFRA)) p_ptr->see_infra += o_ptr->pval;
/* Affect digging (factor of 20) */
- if (f1 & (TR1_TUNNEL)) p_ptr->skill_dig += (o_ptr->pval * 20);
+ if (have_flag(flgs, TR_TUNNEL)) p_ptr->skill_dig += (o_ptr->pval * 20);
/* Affect speed */
- if (f1 & (TR1_SPEED)) p_ptr->pspeed += o_ptr->pval;
+ if (have_flag(flgs, TR_SPEED)) p_ptr->pspeed += o_ptr->pval;
/* Affect blows */
- if (f1 & (TR1_BLOWS))
+ if (have_flag(flgs, TR_BLOWS))
{
if((i == INVEN_RARM || i == INVEN_RIGHT) && !p_ptr->ryoute) extra_blows[0] += o_ptr->pval;
else if((i == INVEN_LARM || i == INVEN_LEFT) && !p_ptr->ryoute) extra_blows[1] += o_ptr->pval;
}
/* Hack -- cause earthquakes */
- if (f1 & (TR1_IMPACT)) p_ptr->impact[(i == INVEN_RARM) ? 0 : 1] = TRUE;
+ if (have_flag(flgs, TR_IMPACT)) p_ptr->impact[(i == INVEN_RARM) ? 0 : 1] = TRUE;
/* Boost shots */
- if (f3 & (TR3_XTRA_SHOTS)) extra_shots++;
+ if (have_flag(flgs, TR_XTRA_SHOTS)) extra_shots++;
/* Various flags */
- if (f3 & (TR3_AGGRAVATE)) p_ptr->cursed |= TRC_AGGRAVATE;
- if (f3 & (TR3_DRAIN_EXP)) p_ptr->cursed |= TRC_DRAIN_EXP;
- if (f3 & (TR3_TY_CURSE)) p_ptr->cursed |= TRC_TY_CURSE;
- if (f3 & (TR3_DEC_MANA)) p_ptr->dec_mana = TRUE;
- if (f3 & (TR3_BLESSED)) p_ptr->bless_blade = TRUE;
- if (f3 & (TR3_XTRA_MIGHT)) p_ptr->xtra_might = TRUE;
- if (f3 & (TR3_SLOW_DIGEST)) p_ptr->slow_digest = TRUE;
- if (f3 & (TR3_REGEN)) p_ptr->regenerate = TRUE;
- if (f3 & (TR3_TELEPATHY)) p_ptr->telepathy = TRUE;
- if (f3 & (TR3_SEE_INVIS)) p_ptr->see_inv = TRUE;
- if (f3 & (TR3_FEATHER)) p_ptr->ffall = TRUE;
- if (f2 & (TR2_FREE_ACT)) p_ptr->free_act = TRUE;
- if (f2 & (TR2_HOLD_LIFE)) p_ptr->hold_life = TRUE;
- if (f3 & (TR3_WARNING)){
+ if (have_flag(flgs, TR_AGGRAVATE)) p_ptr->cursed |= TRC_AGGRAVATE;
+ if (have_flag(flgs, TR_DRAIN_EXP)) p_ptr->cursed |= TRC_DRAIN_EXP;
+ if (have_flag(flgs, TR_TY_CURSE)) p_ptr->cursed |= TRC_TY_CURSE;
+ if (have_flag(flgs, TR_DEC_MANA)) p_ptr->dec_mana = TRUE;
+ if (have_flag(flgs, TR_BLESSED)) p_ptr->bless_blade = TRUE;
+ if (have_flag(flgs, TR_XTRA_MIGHT)) p_ptr->xtra_might = TRUE;
+ if (have_flag(flgs, TR_SLOW_DIGEST)) p_ptr->slow_digest = TRUE;
+ if (have_flag(flgs, TR_REGEN)) p_ptr->regenerate = TRUE;
+ if (have_flag(flgs, TR_TELEPATHY)) p_ptr->telepathy = TRUE;
+ if (have_flag(flgs, TR_ESP_ANIMAL)) p_ptr->esp_animal = TRUE;
+ if (have_flag(flgs, TR_ESP_UNDEAD)) p_ptr->esp_undead = TRUE;
+ if (have_flag(flgs, TR_ESP_DEMON)) p_ptr->esp_demon = TRUE;
+ if (have_flag(flgs, TR_ESP_ORC)) p_ptr->esp_orc = TRUE;
+ if (have_flag(flgs, TR_ESP_TROLL)) p_ptr->esp_troll = TRUE;
+ if (have_flag(flgs, TR_ESP_GIANT)) p_ptr->esp_giant = TRUE;
+ if (have_flag(flgs, TR_ESP_DRAGON)) p_ptr->esp_dragon = TRUE;
+ if (have_flag(flgs, TR_ESP_HUMAN)) p_ptr->esp_human = TRUE;
+ if (have_flag(flgs, TR_ESP_EVIL)) p_ptr->esp_evil = TRUE;
+ if (have_flag(flgs, TR_ESP_GOOD)) p_ptr->esp_good = TRUE;
+ if (have_flag(flgs, TR_ESP_NONLIVING)) p_ptr->esp_nonliving = TRUE;
+ if (have_flag(flgs, TR_ESP_UNIQUE)) p_ptr->esp_unique = TRUE;
+
+ if (have_flag(flgs, TR_SEE_INVIS)) p_ptr->see_inv = TRUE;
+ if (have_flag(flgs, TR_FEATHER)) p_ptr->ffall = TRUE;
+ if (have_flag(flgs, TR_FREE_ACT)) p_ptr->free_act = TRUE;
+ if (have_flag(flgs, TR_HOLD_LIFE)) p_ptr->hold_life = TRUE;
+ if (have_flag(flgs, TR_WARNING)){
if (!o_ptr->inscription || !(strchr(quark_str(o_ptr->inscription),'$')))
p_ptr->warning = TRUE;
}
- if (f3 & (TR3_TELEPORT))
+ if (have_flag(flgs, TR_TELEPORT))
{
if (cursed_p(o_ptr)) p_ptr->cursed |= TRC_TELEPORT;
else if (!o_ptr->inscription || !(strchr(quark_str(o_ptr->inscription),'.')))
}
/* Immunity flags */
- if (f2 & (TR2_IM_FIRE)) p_ptr->immune_fire = TRUE;
- if (f2 & (TR2_IM_ACID)) p_ptr->immune_acid = TRUE;
- if (f2 & (TR2_IM_COLD)) p_ptr->immune_cold = TRUE;
- if (f2 & (TR2_IM_ELEC)) p_ptr->immune_elec = TRUE;
+ if (have_flag(flgs, TR_IM_FIRE)) p_ptr->immune_fire = TRUE;
+ if (have_flag(flgs, TR_IM_ACID)) p_ptr->immune_acid = TRUE;
+ if (have_flag(flgs, TR_IM_COLD)) p_ptr->immune_cold = TRUE;
+ if (have_flag(flgs, TR_IM_ELEC)) p_ptr->immune_elec = TRUE;
/* Resistance flags */
- if (f2 & (TR2_RES_ACID)) p_ptr->resist_acid = TRUE;
- if (f2 & (TR2_RES_ELEC)) p_ptr->resist_elec = TRUE;
- if (f2 & (TR2_RES_FIRE)) p_ptr->resist_fire = TRUE;
- if (f2 & (TR2_RES_COLD)) p_ptr->resist_cold = TRUE;
- if (f2 & (TR2_RES_POIS)) p_ptr->resist_pois = TRUE;
- if (f2 & (TR2_RES_FEAR)) p_ptr->resist_fear = TRUE;
- if (f2 & (TR2_RES_CONF)) p_ptr->resist_conf = TRUE;
- if (f2 & (TR2_RES_SOUND)) p_ptr->resist_sound = TRUE;
- if (f2 & (TR2_RES_LITE)) p_ptr->resist_lite = TRUE;
- if (f2 & (TR2_RES_DARK)) p_ptr->resist_dark = TRUE;
- if (f2 & (TR2_RES_CHAOS)) p_ptr->resist_chaos = TRUE;
- if (f2 & (TR2_RES_DISEN)) p_ptr->resist_disen = TRUE;
- if (f2 & (TR2_RES_SHARDS)) p_ptr->resist_shard = TRUE;
- if (f2 & (TR2_RES_NEXUS)) p_ptr->resist_nexus = TRUE;
- if (f2 & (TR2_RES_BLIND)) p_ptr->resist_blind = TRUE;
- if (f2 & (TR2_RES_NETHER)) p_ptr->resist_neth = TRUE;
-
- if (f2 & (TR2_REFLECT)) p_ptr->reflect = TRUE;
- if (f3 & (TR3_SH_FIRE)) p_ptr->sh_fire = TRUE;
- if (f3 & (TR3_SH_ELEC)) p_ptr->sh_elec = TRUE;
- if (f3 & (TR3_SH_COLD)) p_ptr->sh_cold = TRUE;
- if (f3 & (TR3_NO_MAGIC)) p_ptr->anti_magic = TRUE;
- if (f3 & (TR3_NO_TELE)) p_ptr->anti_tele = TRUE;
+ if (have_flag(flgs, TR_RES_ACID)) p_ptr->resist_acid = TRUE;
+ if (have_flag(flgs, TR_RES_ELEC)) p_ptr->resist_elec = TRUE;
+ if (have_flag(flgs, TR_RES_FIRE)) p_ptr->resist_fire = TRUE;
+ if (have_flag(flgs, TR_RES_COLD)) p_ptr->resist_cold = TRUE;
+ if (have_flag(flgs, TR_RES_POIS)) p_ptr->resist_pois = TRUE;
+ if (have_flag(flgs, TR_RES_FEAR)) p_ptr->resist_fear = TRUE;
+ if (have_flag(flgs, TR_RES_CONF)) p_ptr->resist_conf = TRUE;
+ if (have_flag(flgs, TR_RES_SOUND)) p_ptr->resist_sound = TRUE;
+ if (have_flag(flgs, TR_RES_LITE)) p_ptr->resist_lite = TRUE;
+ if (have_flag(flgs, TR_RES_DARK)) p_ptr->resist_dark = TRUE;
+ if (have_flag(flgs, TR_RES_CHAOS)) p_ptr->resist_chaos = TRUE;
+ if (have_flag(flgs, TR_RES_DISEN)) p_ptr->resist_disen = TRUE;
+ if (have_flag(flgs, TR_RES_SHARDS)) p_ptr->resist_shard = TRUE;
+ if (have_flag(flgs, TR_RES_NEXUS)) p_ptr->resist_nexus = TRUE;
+ if (have_flag(flgs, TR_RES_BLIND)) p_ptr->resist_blind = TRUE;
+ if (have_flag(flgs, TR_RES_NETHER)) p_ptr->resist_neth = TRUE;
+
+ if (have_flag(flgs, TR_REFLECT)) p_ptr->reflect = TRUE;
+ if (have_flag(flgs, TR_SH_FIRE)) p_ptr->sh_fire = TRUE;
+ if (have_flag(flgs, TR_SH_ELEC)) p_ptr->sh_elec = TRUE;
+ if (have_flag(flgs, TR_SH_COLD)) p_ptr->sh_cold = TRUE;
+ if (have_flag(flgs, TR_NO_MAGIC)) p_ptr->anti_magic = TRUE;
+ if (have_flag(flgs, TR_NO_TELE)) p_ptr->anti_tele = TRUE;
/* Sustain flags */
- if (f2 & (TR2_SUST_STR)) p_ptr->sustain_str = TRUE;
- if (f2 & (TR2_SUST_INT)) p_ptr->sustain_int = TRUE;
- if (f2 & (TR2_SUST_WIS)) p_ptr->sustain_wis = TRUE;
- if (f2 & (TR2_SUST_DEX)) p_ptr->sustain_dex = TRUE;
- if (f2 & (TR2_SUST_CON)) p_ptr->sustain_con = TRUE;
- if (f2 & (TR2_SUST_CHR)) p_ptr->sustain_chr = TRUE;
+ if (have_flag(flgs, TR_SUST_STR)) p_ptr->sustain_str = TRUE;
+ if (have_flag(flgs, TR_SUST_INT)) p_ptr->sustain_int = TRUE;
+ if (have_flag(flgs, TR_SUST_WIS)) p_ptr->sustain_wis = TRUE;
+ if (have_flag(flgs, TR_SUST_DEX)) p_ptr->sustain_dex = TRUE;
+ if (have_flag(flgs, TR_SUST_CON)) p_ptr->sustain_con = TRUE;
+ if (have_flag(flgs, TR_SUST_CHR)) p_ptr->sustain_chr = TRUE;
if (o_ptr->name2 == EGO_YOIYAMI) yoiyami = TRUE;
if (o_ptr->name2 == EGO_2WEAPON) easy_2weapon = TRUE;
p_ptr->update |= (PU_MONSTERS);
}
+ if ((p_ptr->esp_animal != old_esp_animal) ||
+ (p_ptr->esp_undead != old_esp_undead) ||
+ (p_ptr->esp_demon != old_esp_demon) ||
+ (p_ptr->esp_orc != old_esp_orc) ||
+ (p_ptr->esp_troll != old_esp_troll) ||
+ (p_ptr->esp_giant != old_esp_giant) ||
+ (p_ptr->esp_dragon != old_esp_dragon) ||
+ (p_ptr->esp_human != old_esp_human) ||
+ (p_ptr->esp_evil != old_esp_evil) ||
+ (p_ptr->esp_good != old_esp_good) ||
+ (p_ptr->esp_nonliving != old_esp_nonliving) ||
+ (p_ptr->esp_unique != old_esp_unique))
+ {
+ p_ptr->update |= (PU_MONSTERS);
+ }
+
/* Hack -- See Invis Change */
if (p_ptr->see_inv != old_see_inv)
{
/* Examine the "main weapon" */
o_ptr = &inventory[INVEN_RARM+i];
- object_flags(o_ptr, &f1, &f2, &f3);
+ object_flags(o_ptr, flgs);
/* Assume not heavy */
p_ptr->heavy_wield[i] = FALSE;
num = 5; wgt = 70; mul = 3; break;
case CLASS_CAVALRY:
- if ((p_ptr->riding) && (f2 & TR2_RIDING)) {num = 5; wgt = 70; mul = 4;}
+ if ((p_ptr->riding) && (have_flag(flgs, TR_RIDING))) {num = 5; wgt = 70; mul = 4;}
else {num = 5; wgt = 100; mul = 3;}
break;
/* Assume okay */
/* Priest weapon penalty for non-blessed edged weapons */
- if ((p_ptr->pclass == CLASS_PRIEST) && (!(f3 & (TR3_BLESSED))) &&
+ if ((p_ptr->pclass == CLASS_PRIEST) && (!(have_flag(flgs, TR_BLESSED))) &&
((o_ptr->tval == TV_SWORD) || (o_ptr->tval == TV_POLEARM)))
{
/* Reduce the real bonuses */
p_ptr->to_h[i] +=15;
p_ptr->dis_to_h[i] +=15;
}
- else if (!(f2 & TR2_RIDING))
+ else if (!(have_flag(flgs, TR_RIDING)))
{
int penalty;
if ((p_ptr->pclass == CLASS_BEASTMASTER) || (p_ptr->pclass == CLASS_CAVALRY))