• R/O
  • SSH
  • HTTPS

xangband: Commit


Commit MetaInfo

Révision1879 (tree)
l'heure2013-03-15 03:55:33
Auteuriks

Message de Log

Reconstrust acvtivations.

Change Summary

Modification

--- TinyAngband/trunk/lib/edit/k_info.txt (revision 1878)
+++ TinyAngband/trunk/lib/edit/k_info.txt (revision 1879)
@@ -1089,6 +1089,7 @@
10891089 A:15/1
10901090 P:0:0d0:0:0:15
10911091 F:RES_ACID | IGNORE_ACID | ACTIVATE
1092+U:RESIST_ACID
10921093
10931094 N:115:電撃:ガーネットの
10941095 E:Electricity:Garnet
@@ -1098,6 +1099,7 @@
10981099 A:15/1
10991100 P:0:0d0:0:0:15
11001101 F:RES_ELEC | IGNORE_ELEC | ACTIVATE
1102+U:RESIST_ELEC
11011103
11021104 N:116:氷:御影石の
11031105 E:Ice:Granite
@@ -1107,6 +1109,7 @@
11071109 A:15/1
11081110 P:0:0d0:0:0:15
11091111 F:RES_COLD | IGNORE_COLD | ACTIVATE
1112+U:RESIST_COLD
11101113
11111114 N:117:火炎:ひすいの
11121115 E:Flames:Jade
@@ -1116,6 +1119,7 @@
11161119 A:15/1
11171120 P:0:0d0:0:0:15
11181121 F:RES_FIRE | IGNORE_FIRE | ACTIVATE
1122+U:RESIST_FIRE
11191123
11201124 N:118:ダメージ:ジャスパーの
11211125 E:Damage:Jasper
--- TinyAngband/trunk/lib/edit/a_info.txt (revision 1878)
+++ TinyAngband/trunk/lib/edit/a_info.txt (revision 1879)
@@ -65,8 +65,8 @@
6565 # W: depth : rarity : weight : cost
6666 # P: base armor class : base damage : plus to-hit : plus to-dam : plus
6767 # to-ac
68-# A: activation
6968 # F: flag | flag | etc
69+# U: activation
7070
7171 # 'N' indicates the beginning of an entry. The serial number must
7272 # increase for each new item and artifact activations depend on the
@@ -83,7 +83,7 @@
8383 # 'P' is for power information. The items base armor class, its base
8484 # damage and pluses to-hit, to-dam and to-ac.
8585
86-# 'A' is for activation. Activation is what's happen when using
86+# 'U' is for activation. Activation is what's happen when using
8787 # the item. See also macros 'ACT_***' in define.h
8888
8989 # 'F' is for flags. These are fairly self-explanatory. As many F:
@@ -104,8 +104,8 @@
104104 I:39:4:1
105105 W:1:1:10:10000
106106 P:0:1d1:0:0:0
107-A:111
108107 F:ACTIVATE | SEARCH | INSTA_ART | LITE
108+U:LIGHT
109109 D:$A small crystal phial, with the light of Earendil's Star contained inside.
110110 D:$Its light is imperishable, and near it darkness cannot endure.
111111 D:小さな水晶の瓶で、ガラドリエルの泉に映った
@@ -123,8 +123,8 @@
123123 I:39:5:1
124124 W:15:25:5:32500
125125 P:0:1d1:0:0:0
126-A:112
127126 F:ACTIVATE | SEE_INVIS | HOLD_LIFE | INSTA_ART | SPEED | LITE
127+U:MAP_LIGHT
128128 D:$The shining Star of the West, a famed heirloom of Elendil's house.
129129 D:輝く『西方国の星』で、エレンディルの家系に伝わる家宝だ。
130130 D:銀の鎖に白い宝石がついている。
@@ -137,6 +137,7 @@
137137 P:0:1d1:0:0:0
138138 F:ACTIVATE | SEE_INVIS | HOLD_LIFE | RES_CONF |
139139 F:INSTA_ART | SPEED | WIS | INT | LITE
140+U:ARKENSTONE
140141 D:$A great globe seemingly filled with moonlight, the famed Heart of
141142 D:$the Mountain, which splinters the light that falls upon it into a
142143 D:$thousandglowing shards.
@@ -150,6 +151,7 @@
150151 W:20:50:10:60000
151152 P:0:1d1:0:0:0
152153 F:WIS | CHR | ACTIVATE | TELEPATHY | INSTA_ART | LITE
154+U:DETECT_UNIQUE
153155 D:$A shining white ball of unbreakable crystal, the ancient palantiri,
154156 D:$or 'far-watchers', were used by kings of Numenor and later by the Exiles
155157 D:$for rapid communication between distant lands.
@@ -187,8 +189,8 @@
187189 E:of Carlammas
188190 I:40:10:2
189191 W:20:30:3:60000
190-A:93
191192 F:CON | HIDE_TYPE | ACTIVATE | RES_FIRE | INSTA_ART
193+U:PROT_EVIL
192194 D:$A fiery circle of bronze, with mighty spells to ward off evil.
193195 D:ブロンズの燃えるような首飾りで、邪悪な者をかわして退散させる
194196 D:強力な呪文が込められている。
@@ -201,11 +203,11 @@
201203 E:of Ingwe
202204 I:40:11:3
203205 W:20:50:3:90000
204-A:23
205206 F:WIS | CHR | INFRA | HIDE_TYPE |
206207 F:SEE_INVIS | FREE_ACT | ACTIVATE |
207208 F:RES_ACID | RES_COLD | RES_ELEC |
208209 F:INSTA_ART
210+U:DISP_EVIL
209211 D:$The ancient heirloom of Ingwe, high lord of the Vanyar, against whom nothing
210212 D:$of evil could stand.
211213 D:ヴァラールの島に渡り中つ国に戻ることのなかった
@@ -235,9 +237,9 @@
235237 I:40:18:3
236238 W:15:60:2:25000
237239 P:0:0d0:0:8:0
238-A:50
239240 F:STR | SUST_STR | SHOW_MODS | HIDE_TYPE |
240241 F:ACTIVATE | INSTA_ART
242+U:TERROR
241243 D:$A massive golden torque, made of innumerable strands of gold and steel
242244 D:$intermingled, with great golden hounds set at either end.
243245 D:黄金と黒鋼の無数のより糸で編み上げられた重厚な金の首飾りで、
@@ -249,10 +251,10 @@
249251 I:40:19:3
250252 W:15:60:2:20000
251253 P:0:0d0:12:0:0
252-A:26
253254 F:STEALTH | SHOW_MODS | HIDE_TYPE |
254255 F:RES_CONF | SUST_DEX | ACTIVATE |
255256 F:INSTA_ART
257+U:PESTICIDE
256258 D:$A slim neckpiece of True-silver, with quiet spells of Ithilien to aid and
257259 D:$protect the wearer.
258260 D:「まことの銀」で作られた首飾りで、身に付ける者を助けて守るイシリエン
@@ -269,7 +271,7 @@
269271 F:SUST_INT | SUST_WIS | SUST_CON |
270272 F:RES_COLD | RES_DARK | RES_NETHER | ACTIVATE |
271273 F:INSTA_ART
272-A:85
274+U:REST_ALL
273275 D:$A pure white jewel, the last gift of Queen Arwen Undomiel to FrodoBaggins,
274276 D:$intended to be worn around his neck on the chain that had onceborne the One Ring.
275277 D:この純白の宝石は、アルウェン王女が最後にフロドに贈ったものだ。
@@ -298,8 +300,8 @@
298300 E:of Tulkas
299301 I:45:33:4
300302 W:20:90:2:175000
301-A:96
302303 F:STR | DEX | CON | HIDE_TYPE | ACTIVATE | SPEED | INSTA_ART
304+U:SPEED
303305 D:$The treasure of Tulkas, most fleet and wrathful of the Valar.
304306 D:ヴァラールの中でも最も素早くかつ勇猛なトゥルカスの宝だ。
305307
@@ -309,12 +311,12 @@
309311 I:45:34:1
310312 W:25:100:2:100000
311313 P:0:1d1:10:10:0
312-A:16
313314 F:STR | INT | WIS | DEX | CON | CHR | SPEED | HIDE_TYPE |
314315 F:ACTIVATE | SLOW_DIGEST | REGEN | FREE_ACT | SEE_INVIS |
315316 F:SUST_STR | SUST_WIS | SUST_DEX | SUST_CHR |
316317 F:IM_FIRE | RES_NETHER | RES_FEAR | SHOW_MODS |
317318 F:INSTA_ART
319+U:BA_FIRE_300
318320 D:$The Ring of Fire, set with a ruby that glows like flame. Narya is one
319321 D:$of the three Rings of Power created by the Elves and hidden by them from
320322 D:$Sauron.
@@ -327,12 +329,12 @@
327329 I:45:35:2
328330 W:25:140:2:200000
329331 P:0:1d1:11:11:0
330-A:17
331332 F:STR | INT | WIS | DEX | CON | CHR | SPEED | HIDE_TYPE |
332333 F:ACTIVATE | HOLD_LIFE | FREE_ACT | SEE_INVIS |
333334 F:FEATHER | SLOW_DIGEST | REGEN | SHOW_MODS |
334335 F:SUST_INT | SUST_WIS | SUST_CHR | IM_COLD | RES_BLIND |
335336 F:INSTA_ART | XTRA_POWER
337+U:BA_COLD_300
336338 D:$The Ring of Adamant, with a pure white stone as centerpiece. Nenya is one
337339 D:$of the three Rings of Power created by the Elves and hidden by them from
338340 D:$Sauron.
@@ -345,7 +347,6 @@
345347 I:45:36:3
346348 W:25:170:2:300000
347349 P:0:1d1:12:12:0
348-A:18
349350 F:STR | INT | WIS | DEX | CON | CHR | SPEED | HIDE_TYPE |
350351 F:ACTIVATE | HOLD_LIFE | FREE_ACT | SEE_INVIS |
351352 F:FEATHER | SLOW_DIGEST | REGEN | SHOW_MODS |
@@ -352,6 +353,7 @@
352353 F:SUST_INT | SUST_WIS | SUST_STR | SUST_DEX | SUST_CHR |
353354 F:IM_ELEC | RES_POIS |
354355 F:INSTA_ART | XTRA_POWER
356+U:BA_ELEC_300
355357 D:$The Ring of Sapphire, with clear blue gems that shine like stars,
356358 D:$glittering untouchable despite all that Morgoth ever wrought. Vilya is
357359 D:$one of the three Rings of Power created by the Elves and hidden by them
@@ -374,6 +376,7 @@
374376 F:SUST_STR | SUST_DEX | SUST_CON |
375377 F:SUST_INT | SUST_WIS | SUST_CHR |
376378 F:INSTA_ART | XTRA_H_RES | XTRA_POWER
379+U:BIZARRE
377380 D:$"One Ring to rule them all, One Ring to find them, One Ring to bring
378381 D:$them all and in the darkness bind them." Made of massive gold, and
379382 D:$set with runes in the foul speech of Mordor, Isildur's Bane possesses
@@ -450,6 +453,7 @@
450453 F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_POIS |
451454 F:HOLD_LIFE | RES_NETHER | RES_BLIND | RES_FEAR |
452455 F:ACTIVATE
456+U:CURE_700
453457 D:$A full suit of chain mail armour, fashioned from the rare true-silver.
454458 D:$Only the dwarves know the secret ofmaking armour or weapons of
455459 D:$this metal. A shimmering suit of true-silver, forged long ago by
@@ -487,8 +491,8 @@
487491 I:36:6:0
488492 W:10:6:100:35000
489493 P:6:0d0:0:0:10
490-A:93
491494 F:RES_NETHER | RES_POIS | SH_COLD | ACTIVATE
495+U:PROT_EVIL
492496 D:$Contained within this studded cuirass of pliable leather is the memory of
493497 D:$unvanquished Himring, defiant fortress surrounded by the legions of Morgoth.
494498 D:柔軟な革で作られたこの胴鎧には、モルゴスの軍勢に包囲されても
@@ -503,6 +507,7 @@
503507 F:INT | WIS | SEARCH | HIDE_TYPE | FEATHER | ACTIVATE |
504508 F:SUST_INT | SUST_WIS | FREE_ACT | SEE_INVIS | HOLD_LIFE |
505509 F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | XTRA_H_RES | DEC_MANA
510+U:BO_MANA
506511 D:$The robe of the great wizard Gandalf, also known as Incanus in the
507512 D:$lands of the South. It is proof against elements, for neither the
508513 D:$heat of the South, nor the ice of the North, nor the acidy pits of Dol
@@ -567,9 +572,9 @@
567572 I:34:10:0
568573 W:20:6:160:90000
569574 P:10:1d6:0:0:10
570-A:88
571575 F:RES_ELEC | RES_FIRE | RES_BLIND | RES_DARK |
572576 F:RES_FEAR | LITE | REFLECT | ACTIVATE
577+U:CURE_MW
573578 D:$A shining shield, once borne by the great mariner Earendil, "scored with
574579 D:$runes to keep all wounds and harm from him".
575580 D:かつて偉大なる船乗りエアレンディルが身に付けていた輝く盾だ。
@@ -585,6 +590,7 @@
585590 F:LITE | CHR | WIS | SEARCH | SUST_WIS | SUST_CHR |
586591 F:RES_ELEC | RES_ACID | RES_DARK |
587592 F:HIDE_TYPE | REFLECT | ACTIVATE
593+U:BLINDING_LIGHT
588594 D:$The legendary shield of Gil-Galad, who fought his way to the gates of
589595 D:$ the Dark Tower, and with whom came light even to Gorgoroth.
590596 D:ノルドールの最後の上級王、ギル=ガラドの伝説の盾だ。彼はバラド=ドゥアの門まで
@@ -633,10 +639,10 @@
633639 I:33:11:3
634640 W:20:40:30:125000
635641 P:0:1d1:0:0:15
636-A:86
637642 F:STR | WIS | CON | HIDE_TYPE | SPEED |
638643 F:RES_COLD | RES_FIRE | RES_ELEC | RES_BLIND | RES_CONF |
639644 F:LITE | SEE_INVIS | REGEN | ACTIVATE | XTRA_H_RES | XTRA_POWER
645+U:CURE_700
640646 D:$The shining winged circlet brought by Elendil from dying Numenor,
641647 D:$emblem of Gondor through an age of the world.
642648 D:滅び行くヌメノールからエレンディルが持ち出した、
@@ -695,8 +701,8 @@
695701 I:32:5:2
696702 W:10:5:75:100000
697703 P:5:1d3:0:0:10
698-A:113
699704 F:INT | WIS | SEARCH | HIDE_TYPE | RES_BLIND | SEE_INVIS | ACTIVATE
705+U:DETECT_ALL
700706 D:$A famous helm of forged iron granting extraordinary powers of mind and
701707 D:$awareness.
702708 D:並外れた精神力と知覚とを授ける、鍛鉄製の名高い兜だ。
@@ -731,10 +737,10 @@
731737 I:32:7:4
732738 W:20:12:75:300000
733739 P:8:1d3:0:0:12
734-A:54
735740 F:STR | DEX | CON | HIDE_TYPE |
736741 F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_BLIND |
737742 F:LITE | SEE_INVIS | TELEPATHY | ACTIVATE
743+U:TERROR
738744 D:$The legendary dragon helm of Turin Turambar, a object of dread to the
739745 D:$servants of Morgoth.
740746 D:トゥーリン・トゥランバールの伝説の竜兜で、モルゴスの手下ども
@@ -750,8 +756,8 @@
750756 I:35:1:0
751757 W:5:45:10:10000
752758 P:1:0d0:0:0:10
753-A:94
754759 F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_POIS | ACTIVATE
760+U:RESIST_ALL
755761 D:$A cape worn by a hero from Valinor, a land utterly beyond the strife
756762 D:$of Elements.
757763 D:はるかかなたにあるヴァリノールの地からやって来た英雄が着ていたケープだ。
@@ -784,8 +790,8 @@
784790 I:35:1:3
785791 W:3:10:10:11000
786792 P:1:0d0:0:0:15
787-A:125
788793 F:STEALTH | RES_ACID | ACTIVATE
794+U:TELEPORT
789795 D:$A crystal-blue cape of fine silk worn by a silent messenger of
790796 D:$the forces of Law. Somehow, its wearer is always able to escape
791797 D:$trouble.
@@ -799,6 +805,7 @@
799805 W:10:30:10:13000
800806 P:4:0d0:0:0:4
801807 F:INT | WIS | STEALTH | SEARCH | HIDE_TYPE | RES_ACID | ACTIVATE
808+U:SLEEP
802809 D:$This elven-grey mantle possesses great powers of tranquility and of
803810 D:$concealment, and grants the wearer the knowledge and understanding of
804811 D:$the Sindar.
@@ -814,9 +821,9 @@
814821 I:35:2:3
815822 W:10:30:10:35000
816823 P:1:0d0:0:0:13
817-A:122
818824 F:DEX | CHR | STEALTH | HIDE_TYPE |
819825 F:FREE_ACT | RES_ACID | RES_FIRE | RES_COLD | ACTIVATE | XTRA_POWER
826+U:RECHARGE
820827 D:$A sable-hued cloak, with glowing elven-runes to restore magic showing calm
821828 D:$and clear as moonlight on still water.
822829 D:半透明で真珠のような灰色のクロークで、魔力を秘めた輝くエルフのルーン文字が
@@ -829,10 +836,10 @@
829836 I:35:6:2
830837 W:15:40:5:55000
831838 P:6:0d0:0:0:10
832-A:84
833839 F:INT | WIS | CHR | HIDE_TYPE | SPEED | STEALTH |
834840 F:RES_ACID | RES_FIRE | RES_COLD | ACTIVATE |
835841 F:RES_DARK | XTRA_H_RES
842+U:REST_ALL
836843 D:$The opaque midnight folds, inset with a multitude of tiny diamonds, of
837844 D:$this cloak swirl around you and you feel a hint, a fragment of the
838845 D:$knowledge and power to restore that lay in Luthien, the most beautiful
@@ -880,8 +887,8 @@
880887 I:31:1:0
881888 W:5:3:5:30000
882889 P:1:0d0:0:0:10
883-A:2
884890 F:FREE_ACT | SUST_CON | LITE | ACTIVATE
891+U:BO_MISSILE
885892 D:$These gloves glow so brightly as to light the way for the player and cast
886893 D:$magical bolts with great frequency.
887894 D:このグローブは、身に着ける者の道を照らすかのように明るく輝き、
@@ -894,8 +901,8 @@
894901 I:31:2:4
895902 W:5:20:25:35000
896903 P:2:1d1:0:0:15
897-A:7
898904 F:SH_FIRE | SUST_STR | STR | LITE | RES_FIRE | ACTIVATE
905+U:BO_FIRE
899906 D:$A firey set of gauntlets that can even shoot fire from the user's
900907 D:$hands.
901908 D:シンダール語で「跳ねる炎の拳」の名を持つこの篭手は炎に
@@ -907,8 +914,8 @@
907914 I:31:2:4
908915 W:5:20:25:33000
909916 P:2:1d1:0:0:15
910-A:6
911917 F:SUST_CON | CON | REGEN | RES_COLD | ACTIVATE
918+U:BO_COLD
912919 D:$A set of handgear so icy as to be able to fire frost bolts.
913920 D:シンダール語で「白き拳」を意味する名を持つこの篭手は常に
914921 D:冷たく輝き、氷の矢を放つことができる。
@@ -920,8 +927,8 @@
920927 I:31:2:4
921928 W:5:20:25:31000
922929 P:2:1d1:0:0:15
923-A:4
924930 F:SUST_INT | INT | FREE_ACT | RES_ELEC | ACTIVATE
931+U:BO_ELEC
925932 D:$A set of handgear with sparks surrounding it, able to fire
926933 D:$bolts of electricity.
927934 D:シンダール語で「鋭き拳」を意味する名を持つこの篭手は常に
@@ -934,8 +941,8 @@
934941 I:31:2:4
935942 W:5:20:25:32000
936943 P:2:1d1:0:0:15
937-A:5
938944 F:SUST_DEX | DEX | SLOW_DIGEST | RES_ACID | ACTIVATE
945+U:BO_ACID
939946 D:$A set of handgear so corrosive that it may fire bolts of acid.
940947 D:シンダール語で「水の拳」を意味する名を持つこの篭手は常に
941948 D:酸でてかっていて、酸の矢を放つことができる。
@@ -954,6 +961,7 @@
954961 P:5:1d1:10:10:10
955962 F:DEX | HIDE_TYPE |
956963 F:FREE_ACT | RES_ACID | ACTIVATE | SHOW_MODS | XTRA_POWER
964+U:BO_MANA
957965 D:$The hand-sheathing of Fingolfin, warrior-king of Elves and Men, who gave
958966 D:$Morgoth seven mighty wounds and pain that will last forever.
959967 D:フェアノール亡き後中つ国のノルドールを率いて冥王と戦った
@@ -974,9 +982,8 @@
974982 I:30:3:10
975983 W:20:120:40:300000
976984 P:3:1d1:0:0:20
977-A:95
978-F:SPEED |
979-F:ACTIVATE
985+F:SPEED | ACTIVATE
986+U:SPEED
980987 D:$This wondrous pair of leather boots once sped Feanor, creator of the
981988 D:$Simarils and the mightiest of the Eldar, along the Grinding Ice and to
982989 D:$Middle Earth at last.
@@ -990,9 +997,9 @@
990997 I:30:2:5
991998 W:10:25:10:200000
992999 P:2:1d1:0:0:10
993-A:83
9941000 F:HIDE_TYPE | SPEED | DEX | CHR | ACTIVATE | FREE_ACT |
9951001 F:RES_NETHER | SUST_CHR | SUST_CON
1002+U:CURE_LW
9961003 D:$A pair of shoes of Nessa.
9971004 D:ヴァエリアの一人、踊り手ネスサの靴だ。この軽い靴を履けば、鹿のように
9981005 D:しなやかに、矢のように早く駆けることができる。
@@ -1076,8 +1083,8 @@
10761083 I:23:4:0
10771084 W:1:5:12:12000
10781085 P:0:2d4:4:6:0
1079-A:7
10801086 F:BRAND_FIRE | RES_FIRE | ACTIVATE | SHOW_MODS | LITE | THROW | XTRA_H_RES
1087+U:BO_FIRE
10811088 D:$A fiery dagger finely balanced for deadly throws.
10821089 D:「焔の牙」を意味する名を持つこの燃え盛る短剣は、
10831090 D:その刃から焔の矢を迸らせる力をもつ。
@@ -1089,8 +1096,8 @@
10891096 I:23:4:0
10901097 W:1:5:12:11000
10911098 P:0:2d4:4:6:0
1092-A:6
10931099 F:BRAND_COLD | RES_COLD | ACTIVATE | SHOW_MODS | THROW | XTRA_H_RES
1100+U:BO_COLD
10941101 D:$A frosty dagger finely balanced for deadly throws.
10951102 D:「白き牙」を意味する名を持つこの短剣は必殺の冷気もて
10961103 D:敵を凍てつかせ、刃からは氷の矢を迸らせる力をもつ。
@@ -1102,8 +1109,8 @@
11021109 I:23:4:0
11031110 W:1:5:12:13000
11041111 P:0:2d4:4:6:0
1105-A:4
11061112 F:BRAND_ELEC | RES_ELEC | ACTIVATE | SHOW_MODS | THROW | XTRA_H_RES
1113+U:BO_ELEC
11071114 D:$A dagger covered in sparks and finely balanced for deadly throws.
11081115 D:「黒の牙」を意味する名を持つ、この短剣は雷光に覆われ、
11091116 D:その刃から雷の矢を迸らせる力をもつ。
@@ -1114,10 +1121,10 @@
11141121 I:23:4:2
11151122 W:10:40:12:50000
11161123 P:0:2d4:6:9:0
1117-A:6
11181124 F:DEX | HIDE_TYPE | SPEED | BLOWS | BRAND_COLD | RES_COLD |
11191125 F:SEE_INVIS | SLOW_DIGEST | REGEN | BLOWS |
11201126 F:ACTIVATE | SHOW_MODS | BRAND_POIS | THROW
1127+U:BO_COLD
11211128 D:$A frosty dagger surrounded in a nimbus of ice with a hilt of elk horn and
11221129 D:$an edge to wound the wind.
11231130 D:この氷のオーラに包まれた冷たいダガーは、ヘラジカの角で作られた柄と
@@ -1177,11 +1184,11 @@
11771184 I:23:17:4
11781185 W:15:60:150:50000
11791186 P:0:3d5:20:12:0
1180-A:6
11811187 F:STR | DEX | CHR | SPEED | HIDE_TYPE | VORPAL |
11821188 F:SLAY_EVIL | SLAY_DEMON | SLAY_UNDEAD | SLAY_ORC |
11831189 F:BRAND_COLD | RES_COLD | SEE_INVIS | FREE_ACT | FEATHER |
11841190 F:SLOW_DIGEST | ACTIVATE | SHOW_MODS | XTRA_H_RES
1191+U:BA_COLD_72
11851192 D:$The beautiful sword of Thingol, justly named "King's Ire". It glistens
11861193 D:$ icy enough to freeze the hearts of demons, and you feel supple and
11871194 D:$ lightfooted as you clasp its hilt of gold and silver inlay.
@@ -1255,10 +1262,10 @@
12551262 I:23:17:10
12561263 W:20:120:130:300000
12571264 P:0:4d5:22:25:0
1258-A:11
12591265 F:SPEED | REGEN | ACTIVATE | SHOW_MODS |
12601266 F:SLAY_EVIL | BRAND_COLD | SLAY_UNDEAD | SLAY_DEMON | SLAY_TROLL |
12611267 F:FREE_ACT | RES_COLD | LITE | SEE_INVIS | SLOW_DIGEST |
1268+U:BA_COLD_72
12621269 D:$The weapon of Fingolfin, High King of the Noldor; it shines like a column
12631270 D:$of ice lit by light unquenchable. Morgoth came but unwillingly to meet it
12641271 D:$of old; his lame foot will remind him of its might should be meet it again.
@@ -1277,11 +1284,11 @@
12771284 I:23:17:4
12781285 W:20:40:130:80000
12791286 P:0:3d5:10:15:5
1280-A:9
12811287 F:STR | SUST_DEX | HIDE_TYPE |
12821288 F:BRAND_FIRE | SLAY_EVIL | SLAY_TROLL | SLAY_ORC |
12831289 F:RES_FIRE | SEE_INVIS | FREE_ACT | LITE | ACTIVATE |
12841290 F:SHOW_MODS | XTRA_H_RES | XTRA_POWER
1291+U:BA_FIRE_72
12851292 D:$The famed "Flame of the West", the sword that was broken and is forged
12861293 D:$again. It glows with the essence of fire, its wearer is mighty in combat,
12871294 D:$and no creature of Sauron can withstand it. It will never be stained or
@@ -1308,12 +1315,12 @@
13081315 I:23:17:2
13091316 W:20:45:130:150000
13101317 P:0:2d5:8:12:0
1311-A:12
13121318 F:STR | CON | SPEED | BLOWS | HIDE_TYPE |
13131319 F:SLAY_EVIL | BRAND_ELEC | SLAY_DEMON |
13141320 F:RES_ELEC | RES_DARK | RES_FEAR |
13151321 F:SEE_INVIS | FREE_ACT | REGEN | SLOW_DIGEST | LITE |
13161322 F:SHOW_MODS | ACTIVATE |
1323+U:BA_ELEC_72
13171324 D:$Forged of black galvorn by the Dark-Elven smith Eol, this blade has the
13181325 D:$living lightning trapped inside.
13191326 D:闇エルフの鍛冶師エオルによってアングラヘル(後のグアサング)と共に
@@ -1343,9 +1350,9 @@
13431350 I:23:21:3
13441351 W:15:15:180:40000
13451352 P:0:3d4:8:10:0
1346-A:13
13471353 F:WIS | CON | HIDE_TYPE | VORPAL |
13481354 F:KILL_DRAGON | TELEPATHY | SLOW_DIGEST | ACTIVATE | SHOW_MODS
1355+U:CONFUSE
13491356 D:$The sharp edge of this weapon would pierce even the armour of
13501357 D:$Smaug, and its wielder becomes aware of the minds of their enemies.
13511358 D:戦いを決意した黄金館の王セオデンが手にとったこの鋭い剣は、
@@ -1403,10 +1410,10 @@
14031410 I:22:2:4
14041411 W:15:45:80:140000
14051412 P:0:3d6:15:25:10
1406-A:11
14071413 F:WIS | HIDE_TYPE | THROW |
14081414 F:BRAND_COLD | SLAY_TROLL | SLAY_ORC | FREE_ACT | RES_COLD |
14091415 F:SLOW_DIGEST | ACTIVATE | BLESSED | SHOW_MODS
1416+U:BA_COLD_72
14101417 D:$The mighty spear of Gil-galad, famed as "Snow-point" in the songs of Elves,
14111418 D:$against which all the foul corruptions of Sauron dashed in vain.
14121419 D:上級王ギル=ガラドの強力な槍で、「雪の切先」として名高い。
@@ -1444,11 +1451,11 @@
14441451 I:22:5:4
14451452 W:20:90:70:120000
14461453 P:0:4d8:15:19:0
1447-A:55
14481454 F:DEX | HIDE_TYPE |
14491455 F:SLAY_DRAGON | SLAY_ANIMAL | FREE_ACT | HOLD_LIFE | IM_ACID |
14501456 F:RES_NETHER | SEE_INVIS | SLOW_DIGEST | REGEN | ACTIVATE |
14511457 F:BLESSED | SHOW_MODS | XTRA_POWER
1458+U:TELE_AWAY
14521459 D:$The awesome weapon of the Vala Ulmo, Lord of Waters. Mightest of all the
14531460 D:$powers of good save Manwe himself, Ulmo laughs in scorn at the dread powers
14541461 D:$of the undead, and is utterly in command of the element of water.
@@ -1462,11 +1469,11 @@
14621469 I:22:2:4
14631470 W:15:45:160:77777
14641471 P:0:3d5:15:15:0
1465-A:121
14661472 F:INT | WIS | INFRA | HIDE_TYPE | SEARCH | BRAND_FIRE |
14671473 F:SLAY_GIANT | SLAY_EVIL | SLAY_DEMON | SLAY_UNDEAD | SLAY_DRAGON |
14681474 F:RES_FIRE | HOLD_LIFE | RES_FEAR | FEATHER |
14691475 F:LITE | SEE_INVIS | ACTIVATE | BLESSED | SHOW_MODS | THROW
1476+U:STONE_MUD
14701477
14711478 # The Glaive of Pain
14721479 #J0# 日本語化, Ko
@@ -1540,6 +1547,7 @@
15401547 P:0:2d6:10:12:2
15411548 F:CON | BLOWS | HIDE_TYPE | BRAND_ACID | SHOW_MODS
15421549 F:SLAY_TROLL | SLAY_DEMON | ACTIVATE
1550+U:HELO_SPEED
15431551 D:$"Hurin [...] wielded the axe two-handed, and it is sung that the axe
15441552 D:$smoked in the black blood of the troll-guard of Gothmog, until it withered,
15451553 D:$and each time that he slew Hurin cried 'Aure entuluva! Day shall come
@@ -1560,9 +1568,9 @@
15601568 I:22:22:1
15611569 W:5:8:170:21000
15621570 P:0:2d8:4:3:0
1563-A:82
15641571 F:STR | DEX | BLOWS | HIDE_TYPE |
15651572 F:SLAY_TROLL | SLAY_ORC | ACTIVATE | SHOW_MODS
1573+U:CURE_LW
15661574 D:$A superbly crafted double-bladed axe that slays the creatures of earth and
15671575 D:$allows rapid recovery from their blows.
15681576 D:アルノールの野伏の頭領ケルサインが使っていた、
@@ -1609,11 +1617,11 @@
16091617 I:22:25:2
16101618 W:15:120:230:200000
16111619 P:0:5d4:15:18:8
1612-A:58
16131620 F:STR | INT | WIS | DEX | CON | CHR | HIDE_TYPE |
16141621 F:SLAY_EVIL | BRAND_COLD | SLAY_UNDEAD |
16151622 F:SLAY_ORC | FREE_ACT | IM_COLD | SEE_INVIS | ACTIVATE |
16161623 F:BLESSED | SHOW_MODS
1624+U:MASS_GENO
16171625 D:$The axe of Eonwe, leader of the Hosts of the West before the gates of
16181626 D:$Thangorodrim, strikes with icy wrath at the undead, disperses hosts of
16191627 D:$evil at a word, and grants Maia-like powers of body and mind.
@@ -1650,12 +1658,12 @@
16501658 I:21:2:-2
16511659 W:25:35:90:66666
16521660 P:0:3d6:13:15:0
1653-A:16
16541661 F:INT | WIS | DEX | STEALTH | HIDE_TYPE |
16551662 F:HEAVY_CURSE | CURSED | AGGRAVATE |
16561663 F:BRAND_FIRE | IM_FIRE | RES_ELEC | RES_DARK | LITE
16571664 F:SLAY_ANIMAL | SLAY_ORC | SLAY_TROLL | SLAY_GIANT | SLAY_HUMAN |
16581665 F:ACTIVATE | SHOW_MODS
1666+U:BA_FIRE_300
16591667 D:$With this unbearably bright whip of flame, the Balrog Gothmog has become
16601668 D:$ known for never having lost in combat.
16611669 D:この赤々と燃え上がる炎のムチはバルログの隊長ゴスモグのものだ。
@@ -1668,10 +1676,10 @@
16681676 I:21:13:2
16691677 W:5:8:150:55000
16701678 P:0:3d6:6:8:0
1671-A:51
16721679 F:STEALTH |
16731680 F:SLAY_EVIL | BRAND_FIRE | RES_FIRE | RES_CONF | ACTIVATE |
16741681 F:SHOW_MODS | LITE
1682+U:CONFUSE
16751683 D:$A flail whose head befuddles those who stare as you whirl it around, and
16761684 D:$becomes a fiery comet as you bring it down.
16771685 D:このフレイルは先端を振り回すことで見るものを惑わせる。そして
@@ -1716,8 +1724,8 @@
17161724 I:21:5:0
17171725 W:10:15:200:50000
17181726 P:0:4d4:12:12:0
1719-A:95
17201727 F:KILL_DRAGON | BRAND_ELEC | IM_ELEC | ACTIVATE | SHOW_MODS
1728+U:SPEED
17211729 D:$A great ridged mace that surrounds you in a nimbus of living lightning;
17221730 D:$you remain utterly untouched, even as fat sparks crackle around your
17231731 D:$fingers and eyebrows.
@@ -1751,9 +1759,9 @@
17511759 I:21:3:4
17521760 W:5:18:150:20000
17531761 P:0:1d9:3:5:0
1754-A:116
17551762 F:INT | WIS | HIDE_TYPE | DEC_MANA |
17561763 F:SLAY_EVIL | LITE | SEE_INVIS | ACTIVATE | SHOW_MODS
1764+U:ID_PLAIN
17571765 D:$The radiant golden staff of an Istari of legend, this wizard's companion
17581766 D:$grants keen sight and the knowledge of many hidden things.
17591767 D:「秀でし輝き」を意味する名を持つ、伝説のイスタリの黄金に輝くスタッフだ。
@@ -1767,10 +1775,10 @@
17671775 I:21:21:4
17681776 W:15:50:40:140000
17691777 P:0:3d2:10:13:0
1770-A:114
17711778 F:INT | WIS | CHR | HIDE_TYPE | SEARCH | BRAND_FIRE | DEC_MANA |
17721779 F:SLAY_EVIL | BRAND_FIRE | SLAY_TROLL | SLAY_ORC | LITE | XTRA_POWER |
17731780 F:HOLD_LIFE | RES_FIRE | RES_NETHER | SEE_INVIS | ACTIVATE | SHOW_MODS
1781+U:DETECT_XTRA
17741782 D:$The staff of the great wizard Gandalf.
17751783 D:$It is tall and sturdy, with rough-hewn runes that invoke the element of
17761784 D:$Earth, and which strikes down all creatures who live in the shadow of
@@ -1791,6 +1799,7 @@
17911799 F:SLAY_ORC | SLAY_TROLL | SLAY_GIANT | SLAY_DRAGON |
17921800 F:BRAND_ACID | RES_ACID | RES_DARK | RES_FEAR |
17931801 F:ACTIVATE
1802+U:STONE_MUD
17941803 D:$Wielded by Nain of the Iron Hills at the Battle of Azanulbizar, this great
17951804 D:$mattock brought victory to the Dwarves over Azog's Orcs - though Nain
17961805 D:$himself fell at the last, even with victory already assured.
@@ -1853,6 +1862,7 @@
18531862 W:20:25:60:50000
18541863 P:0:0d0:10:14:0
18551864 F:SPEED | RES_FIRE | XTRA_MIGHT | ACTIVATE | SHOW_MODS | XTRA_RES_OR_POWER
1865+U:BRAND_FIRE_BOLTS
18561866 D:$A crossbow that grants fiery speed to he who finds it, and from which
18571867 D:$shoot bolts that blaze with flame unquenchable.
18581868 D:シンダール語で「疾き弓」を意味するこの素晴らしい弓を手にする者は
--- TinyAngband/trunk/lib/edit/e_info.txt (revision 1878)
+++ TinyAngband/trunk/lib/edit/e_info.txt (revision 1879)
@@ -39,6 +39,7 @@
3939 # C: max to-hit : max to-dam : max to-ac : pval
4040 # W: depth : rarity : weight : cost
4141 # F: flag | flag | etc
42+# U: Activation
4243 #
4344 # 'N' indicates the beginning of an entry. The serial number must
4445 # increase for each new item.
@@ -278,8 +279,8 @@
278279 E:of Teleportation
279280 X:33:0
280281 W:0:24:0:500
281-A:125
282282 F:TELEPORT | ACTIVATE
283+U:TELEPORT
283284
284285 N:28:道化師の
285286 E:of Fool
@@ -550,6 +551,7 @@
550551 X:24:15
551552 W:0:24:0:8000
552553 F:BRAND_ACID | RES_ACID | IGNORE_ACID | ACTIVATE
554+U:RESIST_ACID
553555
554556 N:61:電撃の
555557 E:of Shocking
@@ -556,6 +558,7 @@
556558 X:24:20
557559 W:0:24:0:4500
558560 F:BRAND_ELEC | RES_ELEC | IGNORE_ELEC | ACTIVATE
561+U:RESIST_ELEC
559562
560563 N:62:焼棄の
561564 E:of Burning
@@ -562,6 +565,7 @@
562565 X:24:20
563566 W:0:24:0:3000
564567 F:BRAND_FIRE | RES_FIRE | IGNORE_FIRE | LITE | ACTIVATE
568+U:RESIST_FIRE
565569
566570 N:63:凍結の
567571 E:of Freezing
@@ -568,6 +572,7 @@
568572 X:24:15
569573 W:0:24:0:2500
570574 F:BRAND_COLD | RES_COLD | IGNORE_COLD | ACTIVATE
575+U:RESIST_COLD
571576
572577 #JZ#
573578 N:64:毒殺の
@@ -575,6 +580,7 @@
575580 X:24:20
576581 W:0:24:0:4500
577582 F:BRAND_POIS | RES_POIS | ACTIVATE
583+U:RESIST_POIS
578584
579585 #JZ#
580586 N:65:切れ味の
@@ -661,9 +667,9 @@
661667 X:24:20
662668 W:0:24:0:8000
663669 C:5:5:0:4
664-A:23
665670 F:STR | WIS | SLAY_DEMON | SLAY_UNDEAD | LITE | BLESSED | XTRA_BRAND |
666671 F:ACTIVATE
672+U:DISP_EVIL
667673
668674 N:77:エルフの
669675 E:of Elvenkind
@@ -681,6 +687,7 @@
681687 F:SEARCH | INFRA | HIDE_TYPE |
682688 F:BRAND_ELEC | RES_ELEC | RES_BLIND | SH_ELEC |
683689 F:LITE | ACTIVATE
690+U:STARLIGHT
684691
685692 N:79:護りの
686693 E:of Protection
@@ -687,9 +694,9 @@
687694 X:24:14
688695 W:0:24:0:6000
689696 C:0:0:15:0
690-A:94
691697 F:SEE_INVIS | FREE_ACT | REGEN | SLOW_DIGEST | HOLD_LIFE | WARNING |
692698 F:ONE_SUSTAIN | ACTIVATE
699+U:RESIST_ALL
693700
694701 N:80:妖精の
695702 E:of Fairy
--- TinyAngband/trunk/src/wizard2.c (revision 1878)
+++ TinyAngband/trunk/src/wizard2.c (revision 1879)
@@ -1190,7 +1190,7 @@
11901190 o_ptr->name1, o_ptr->name2, (long)object_value(o_ptr), o_ptr->ident), 7, j);
11911191
11921192 prt(format("xtra1 = %-4d xtra2 = %-4d xtra3 = %-4d timeout = %-d",
1193- o_ptr->xtra1, o_ptr->xtra2, o_ptr->xtra3, o_ptr->timeout), 8, j);
1193+ o_ptr->xtra1, activation_index(o_ptr), o_ptr->xtra3, o_ptr->timeout), 8, j);
11941194
11951195 prt("+------------FLAGS1------------+", 10, j);
11961196 prt("AFFECT........SLAY........BRAND.", 11, j);
--- TinyAngband/trunk/src/object1.c (revision 1878)
+++ TinyAngband/trunk/src/object1.c (revision 1879)
@@ -224,840 +224,91 @@
224224 * Determine the "Activation" (if any) for an artifact
225225 * Return a string, or NULL for "no activation"
226226 */
227-cptr item_activation(const object_type *o_ptr)
227+static cptr item_activation_aux(const object_type *o_ptr)
228228 {
229- u32b f1, f2, f3;
229+ static char activation_detail[256];
230+ cptr desc;
231+ char timeout[32];
232+ int constant, dice;
233+ const activation_type* const act_ptr = find_activation_info(o_ptr);
230234
231- /* Extract the flags */
232- object_flags(o_ptr, &f1, &f2, &f3);
235+ if (!act_ptr) return _("未定義", "something undefined");
233236
234- /* Require activation ability */
235-#ifdef JP
236- if (!(f3 & (TR3_ACTIVATE))) return ("なし");
237-#else
238- if (!(f3 & (TR3_ACTIVATE))) return ("nothing");
239-#endif
237+ desc = act_ptr->desc;
240238
241- if (o_ptr->xtra2)
239+ /* Overwrite description if it is special */
240+ switch (act_ptr->index)
242241 {
243- switch (o_ptr->xtra2)
244- {
245- case ACT_SUNLIGHT:
246- {
247-#ifdef JP
248- return "太陽光線 : 10 ターン毎";
249-#else
250- return "beam of sunlight every 10 turns";
251-#endif
252- }
253- case ACT_BO_MISS_1:
254- {
255-#ifdef JP
256- return "マジック・ミサイル(2d6) : 2 ターン毎";
257-#else
258- return "magic missile (2d6) every 2 turns";
259-#endif
260- }
261- case ACT_BA_POIS_1:
262- {
263-#ifdef JP
264- return "悪臭雲 (12), 半径 3 , 4+d4 ターン毎";
265-#else
266- return "stinking cloud (12), rad. 3, every 4+d4 turns";
267-#endif
268- }
269- case ACT_BO_ELEC_1:
270- {
271-#ifdef JP
272- return "サンダー・ボルト(4d8) : 6+d6 ターン毎";
273-#else
274- return "lightning bolt (4d8) every 6+d6 turns";
275-#endif
276- }
277- case ACT_BO_ACID_1:
278- {
279-#ifdef JP
280- return "アシッド・ボルト(5d8) : 5+d5 ターン毎";
281-#else
282- return "acid bolt (5d8) every 5+d5 turns";
283-#endif
284- }
285- case ACT_BO_COLD_1:
286- {
287-#ifdef JP
288- return "アイス・ボルト(6d8) : 7+d7 ターン毎";
289-#else
290- return "frost bolt (6d8) every 7+d7 turns";
291-#endif
292- }
293- case ACT_BO_FIRE_1:
294- {
295-#ifdef JP
296- return "ファイア・ボルト(9d8) : 8+d8 ターン毎";
297-#else
298- return "fire bolt (9d8) every 8+d8 turns";
299-#endif
300- }
301- case ACT_BA_COLD_1:
302- {
303-#ifdef JP
304- return "アイス・ボール (48) : 400 ターン毎";
305-#else
306- return "frost ball (48) every 400 turns";
307-#endif
308- }
309- case ACT_BA_FIRE_1:
310- {
311-#ifdef JP
312- return "ファイア・ボール (72) : 400 ターン毎";
313-#else
314- return "ball of fire (72) every 400 turns";
315-#endif
316- }
317- case ACT_DRAIN_1:
318- {
319-#ifdef JP
320- return "生命力吸収 (90) : 70 ターン毎";
321-#else
322- return "drain life (90) every 70 turns";
323-#endif
324- }
325- case ACT_BA_COLD_2:
326- {
327-#ifdef JP
328- return "アイス・ボール (100) : 300 ターン毎";
329-#else
330- return "frost ball (100) every 300 turns";
331-#endif
332- }
333- case ACT_BA_ELEC_2:
334- {
335-#ifdef JP
336- return "サンダー・ボール (100) : 500 ターン毎";
337-#else
338- return "ball of lightning (100) every 500 turns";
339-#endif
340- }
341- case ACT_DRAIN_2:
342- {
343-#ifdef JP
344- return "生命力吸収(120) : 400 ターン毎";
345-#else
346- return "drain life (120) every 400 turns";
347-#endif
348- }
349- case ACT_VAMPIRE_1:
350- {
351-#ifdef JP
352- return "吸血ドレイン (3*50) : 400 ターン毎";
353-#else
354- return "vampiric drain (3*50) every 400 turns";
355-#endif
356- }
357- case ACT_BO_MISS_2:
358- {
359-#ifdef JP
360- return "矢 (150) : 90+d90 ターン毎";
361-#else
362- return "arrows (150) every 90+d90 turns";
363-#endif
364- }
365- case ACT_BA_FIRE_2:
366- {
367-#ifdef JP
368- return "ファイア・ボール (120) : 225+d225 ターン毎";
369-#else
370- return "fire ball (120) every 225+d225 turns";
371-#endif
372- }
373- case ACT_BA_COLD_3:
374- {
375-#ifdef JP
376- return "コールド・ボール (200) : 325+d325 ターン毎";
377-#else
378- return "ball of cold (200) every 325+d325 turns";
379-#endif
380- }
381- case ACT_BA_ELEC_3:
382- {
383-#ifdef JP
384- return "サンダー・ボール (250) : 425+d425 ターン毎";
385-#else
386- return "ball of lightning (250) every 425+d425 turns";
387-#endif
388- }
389- case ACT_WHIRLWIND:
390- {
391-#ifdef JP
392- return "カマイタチ : 250 ターン毎";
393-#else
394- return "whirlwind attack every 250 turns";
395-#endif
396- }
397- case ACT_VAMPIRE_2:
398- {
399-#ifdef JP
400- return "吸血ドレイン (3*100) : 400 ターン毎";
401-#else
402- return "vampiric drain (3*100) every 400 turns";
403-#endif
404- }
405- case ACT_CALL_CHAOS:
406- {
407-#ifdef JP
408- return "混沌招来 : 350 ターン毎";
409-#else
410- return "call chaos every 350 turns";
411-#endif
412- }
413- case ACT_ROCKET:
414- {
415-#ifdef JP
416- return "ロケット (120+level) : 400 ターン毎";
417-#else
418- return "launch rocket (120+level) every 400 turns";
419-#endif
420- }
421- case ACT_DISP_EVIL:
422- {
423-#ifdef JP
424- return "邪悪退散 (level*5) : 200+d200 ターン毎";
425-#else
426- return "dispel evil (level*5) every 200+d200 turns";
427-#endif
428- }
429- case ACT_BA_MISS_3:
430- {
431-#ifdef JP
432- return "エレメントのブレス (300) : 500 ターン毎";
433-#else
434- return "elemental breath (300) every 500 turns";
435-#endif
436- }
437- case ACT_DISP_GOOD:
438- {
439-#ifdef JP
440- return "善良退散 (level*5) : 200+d200 ターン毎";
441-#else
442- return "dispel good (level*5) every 200+d200 turns";
443-#endif
444- }
445- case ACT_PESTICIDE:
446- {
447-#ifdef JP
448- return "害虫の駆除 : 55+d55ターン毎";
449-#else
450- return "dispel small life every 55+d55 turns";
451-#endif
452- }
453- case ACT_CONFUSE:
454- {
455-#ifdef JP
456- return "パニック・モンスター : 15 ターン毎";
457-#else
458- return "confuse monster every 15 turns";
459-#endif
460- }
461- case ACT_SLEEP:
462- {
463-#ifdef JP
464- return "周囲のモンスターを眠らせる : 55 ターン毎";
465-#else
466- return "sleep nearby monsters every 55 turns";
467-#endif
468- }
469- case ACT_QUAKE:
470- {
471-#ifdef JP
472- return "地震 (半径 10) : 50 ターン毎";
473-#else
474- return "earthquake (rad 10) every 50 turns";
475-#endif
476- }
477- case ACT_FEAR:
478- {
479-#ifdef JP
480- return "モンスター恐慌 : 40+d40ターン毎";
481-#else
482- return "frighten monsters every 40+d40 turns";
483-#endif
484- }
485- case ACT_TERROR:
486- {
487-#ifdef JP
488- return "全方向への恐怖の光線 : 3*(レベル+10) ターン毎";
489-#else
490- return "rays of fear in every direction every 3*(level+10) turns";
491-#endif
492- }
493- case ACT_TELE_AWAY:
494- {
495-#ifdef JP
496- return "テレポート・アウェイ : 150 ターン毎";
497-#else
498- return "teleport away every 200 turns";
499-#endif
500- }
501- case ACT_BANISH_EVIL:
502- {
503-#ifdef JP
504- return "邪悪追放 : 250+d250 ターン毎";
505-#else
506- return "banish evil every 250+d250 turns";
507-#endif
508- }
509- case ACT_GENOCIDE:
510- {
511-#ifdef JP
512- return "抹殺 : 500 ターン毎";
513-#else
514- return "genocide every 500 turns";
515-#endif
516- }
517- case ACT_MASS_GENO:
518- {
519-#ifdef JP
520- return "周辺抹殺 : 1000 ターン毎";
521-#else
522- return "mass genocide every 1000 turns";
523-#endif
524- }
525- case ACT_CHARM_ANIMAL:
526- {
527-#ifdef JP
528- return "動物魅了 : 300 ターン毎";
529-#else
530- return "charm animal every 300 turns";
531-#endif
532- }
533- case ACT_CHARM_UNDEAD:
534- {
535-#ifdef JP
536- return "不死従属 : 333 ターン毎";
537-#else
538- return "enslave undead every 333 turns";
539-#endif
540- }
541- case ACT_CHARM_OTHER:
542- {
543-#ifdef JP
544- return "モンスター魅了 : 400 ターン毎";
545-#else
546- return "charm monster every 400 turns";
547-#endif
548- }
549- case ACT_CHARM_ANIMALS:
550- {
551-#ifdef JP
552- return "動物友和 : 500 ターン毎";
553-#else
554- return "animal friendship every 500 turns";
555-#endif
556- }
557- case ACT_CHARM_OTHERS:
558- {
559-#ifdef JP
560- return "周辺魅了 : 750 ターン毎";
561-#else
562- return "mass charm every 750 turns";
563-#endif
564- }
565- case ACT_SUMMON_ANIMAL:
566- {
567-#ifdef JP
568- return "動物召喚 : 200+d300 ターン毎";
569-#else
570- return "summon animal every 200+d300 turns";
571-#endif
572- }
573- case ACT_SUMMON_PHANTOM:
574- {
575-#ifdef JP
576- return "使い霊召喚 : 200+d200 ターン毎";
577-#else
578- return "summon phantasmal servant every 200+d200 turns";
579-#endif
580- }
581- case ACT_SUMMON_ELEMENTAL:
582- {
583-#ifdef JP
584- return "エレメンタル召喚 : 750 ターン毎";
585-#else
586- return "summon elemental every 750 turns";
587-#endif
588- }
589- case ACT_SUMMON_DEMON:
590- {
591-#ifdef JP
592- return "悪魔召喚 : 666+d333 ターン毎";
593-#else
594- return "summon demon every 666+d333 turns";
595-#endif
596- }
597- case ACT_SUMMON_UNDEAD:
598- {
599-#ifdef JP
600- return "不死召喚 : 666+d333 ターン毎";
601-#else
602- return "summon undead every 666+d333 turns";
603-#endif
604- }
605- case ACT_CURE_LW:
606- {
607-#ifdef JP
608- return "恐怖除去 & 回復 (30) : 10 ターン毎";
609-#else
610- return "remove fear & heal 30 hp every 10 turns";
611-#endif
612- }
613- case ACT_CURE_MW:
614- {
615-#ifdef JP
616- return "傷の治癒 (4d8) : 3+d3 ターン毎";
617-#else
618- return "cure wounds (4d8) every 3+d3 turns";
619-#endif
620- }
621- case ACT_CURE_POISON:
622- {
623-#ifdef JP
624- return "恐怖除去/毒消し : 5 ターン毎";
625-#else
626- return "remove fear and cure poison every 5 turns";
627-#endif
628- }
629- case ACT_REST_LIFE:
630- {
631-#ifdef JP
632- return "経験値復活 : 450 ターン毎";
633-#else
634- return "restore life levels every 450 turns";
635-#endif
636- }
637- case ACT_REST_ALL:
638- {
639-#ifdef JP
640- return "全ステータスと経験値回復 : 750 ターン毎";
641-#else
642- return "restore stats and life levels every 750 turns";
643-#endif
644- }
645- case ACT_CURE_700:
646- {
647-#ifdef JP
648- return "700 hp 回復 : 250 ターン毎";
649-#else
650- return "heal 700 hit points every 250 turns";
651-#endif
652- }
653- case ACT_CURE_1000:
654- {
655-#ifdef JP
656- return "1000 hp 回復 : 888 ターン毎";
657-#else
658- return "heal 1000 hit points every 888 turns";
659-#endif
660- }
661- case ACT_CURING:
662- {
663-#ifdef JP
664- return "癒し : 100 ターン毎";
665-#else
666- return "curing every 100 turns";
667-#endif
668- }
669- case ACT_ESP:
670- {
671-#ifdef JP
672- return "一時的な ESP (期間 25+d30) : 200 ターン毎";
673-#else
674- return "temporary ESP (dur 25+d30) every 200 turns";
675-#endif
676- }
677- case ACT_BERSERK:
678- {
679-#ifdef JP
680- return "ヒーロー気分と野獣化 (期間 50+d50) : 100+d100 ターン毎";
681-#else
682- return "heroism and berserk (dur 50+d50) every 100+d100 turns";
683-#endif
684- }
685- case ACT_PROT_EVIL:
686- {
687-#ifdef JP
688- return "対邪悪結界 (期間 level*3 + d25) : 225+d225 ターン毎";
689-#else
690- return "protect evil (dur level*3 + d25) every 225+d225 turns";
691-#endif
692- }
693- case ACT_RESIST_ALL:
694- {
695-#ifdef JP
696- return "炎冷酸電毒への耐性 (期間 40+d40) : 200 ターン毎";
697-#else
698- return "resist elements (dur 40+d40) every 200 turns";
699-#endif
700- }
701- case ACT_SPEED:
702- {
703-#ifdef JP
704- return "スピード (期間 20+d20) : 100+d100 ターン毎";
705-#else
706- return "speed (dur 20+d20) every 100+d100 turns";
707-#endif
708- }
709- case ACT_XTRA_SPEED:
710- {
711-#ifdef JP
712- return "スピード (期間 75+d75) : 200+d200 ターン毎";
713-#else
714- return "speed (dur 75+d75) every 200+d200 turns";
715-#endif
716- }
717- case ACT_WRAITH:
718- {
719-#ifdef JP
720- return "レイス化 (level/2 + d(level/2)) : 1000 ターン毎";
721-#else
722- return "wraith form (level/2 + d(level/2)) every 1000 turns";
723-#endif
724- }
725- case ACT_INVULN:
726- {
727-#ifdef JP
728- return "無敵 (期間 8+d8) : 1000 ターン毎";
729-#else
730- return "invulnerability (dur 8+d8) every 1000 turns";
731-#endif
732- }
733- case ACT_LIGHT:
734- {
735-#ifdef JP
736- return "イルミネーション : 10+d10 ターン毎";
737-#else
738- return "light area (dam 2d15) every 10+d10 turns";
739-#endif
740- }
741- case ACT_MAP_LIGHT:
742- {
743-#ifdef JP
744- return "魔法の地図と周辺照明 : 50+d50 ターン毎";
745-#else
746- return "magic mapping and light area every 50+d50 turns";
747-#endif
748- }
749- case ACT_DETECT_ALL:
750- {
751-#ifdef JP
752- return "全感知 : 55+d55 ターン毎";
753-#else
754- return "detection every 55+d55 turns";
755-#endif
756- }
757- case ACT_DETECT_XTRA:
758- {
759-#ifdef JP
760- return "全感知、探索、*鑑定* : 1000 ターン毎";
761-#else
762- return "detection, probing and identify true every 1000 turns";
763-#endif
764- }
765- case ACT_ID_FULL:
766- {
767-#ifdef JP
768- return "*鑑定* : 750 ターン毎";
769-#else
770- return "identify true every 750 turns";
771-#endif
772- }
773- case ACT_ID_PLAIN:
774- {
775-#ifdef JP
776- return "鑑定 : 10 ターン毎";
777-#else
778- return "identify spell every 10 turns";
779-#endif
780- }
781- case ACT_RUNE_EXPLO:
782- {
783-#ifdef JP
784- return "爆発ルーン : 200 ターン毎";
785-#else
786- return "explosive rune every 200 turns";
787-#endif
788- }
789- case ACT_RUNE_PROT:
790- {
791-#ifdef JP
792- return "守りのルーン : 400 ターン毎";
793-#else
794- return "rune of protection every 400 turns";
795-#endif
796- }
797- case ACT_SATIATE:
798- {
799-#ifdef JP
800- return "空腹充足 : 200 ターン毎";
801-#else
802- return "satisfy hunger every 200 turns";
803-#endif
804- }
805- case ACT_DEST_DOOR:
806- {
807-#ifdef JP
808- return "ドア破壊 : 10 ターン毎";
809-#else
810- return "destroy doors every 10 turns";
811-#endif
812- }
813- case ACT_STONE_MUD:
814- {
815-#ifdef JP
816- return "岩石溶解 : 5 ターン毎";
817-#else
818- return "stone to mud every 5 turns";
819-#endif
820- }
821- case ACT_RECHARGE:
822- {
823-#ifdef JP
824- return "再充填 : 70 ターン毎";
825-#else
826- return "recharging every 70 turns";
827-#endif
828- }
829- case ACT_ALCHEMY:
830- {
831-#ifdef JP
832- return "錬金術 : 500 ターン毎";
833-#else
834- return "alchemy every 500 turns";
835-#endif
836- }
837- case ACT_DIM_DOOR:
838- {
839-#ifdef JP
840- return "次元の扉 : 100 ターン毎";
841-#else
842- return "dimension door every 100 turns";
843-#endif
844- }
845- case ACT_TELEPORT:
846- {
847-#ifdef JP
848- return "テレポート : 45 ターン毎";
849-#else
850- return "teleport every 45 turns";
851-#endif
852- }
853- case ACT_RECALL:
854- {
855-#ifdef JP
856- return "帰還の詔 : 200 ターン毎";
857-#else
858- return "word of recall every 200 turns";
859-#endif
860- }
861- default:
862- {
863-#ifdef JP
864- return "未定義";
865-#else
866- return "something undefined";
867-#endif
868- }
869- }
242+ case ACT_RESIST_ACID:
243+ if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ACID))
244+ desc = _("アシッド・ボール (100) と酸への耐性", "ball of acid (100) and resist acid");
245+ break;
246+ case ACT_RESIST_FIRE:
247+ if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_FLAMES))
248+ desc = _("ファイア・ボール (100) と火への耐性", "ball of fire (100) and resist fire");
249+ break;
250+ case ACT_RESIST_COLD:
251+ if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ICE))
252+ desc = _("アイス・ボール (100) と冷気への耐性", "ball of cold (100) and resist cold");
253+ break;
254+ case ACT_RESIST_ELEC:
255+ if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ELEC))
256+ desc = _("サンダー・ボール (100) と電撃への耐性", "ball of elec (100) and resist elec");
257+ break;
870258 }
871259
872- /* Some artifacts can be activated */
873- switch (o_ptr->name1)
260+ /* Timeout description */
261+ constant = act_ptr->timeout.constant;
262+ dice = act_ptr->timeout.dice;
263+ if (constant == 0 && dice == 0)
874264 {
875- case ART_BRAND:
876- {
877-#ifdef JP
878- return "刃先のファイア・ボルト : 999 ターン毎";
879-#else
880- return "fire branding of bolts every 999 turns";
881-#endif
882- }
883- case ART_CELEBORN:
884- {
885-#ifdef JP
886- return ("回復 (777)、癒し、ヒーロー気分 : 300 ターン毎");
887-#else
888- return ("heal (777), curing and heroism every 300 turns");
889-#endif
890- }
891- case ART_HOLCOLLETH:
892- {
893-#ifdef JP
894- return "スリープ(II) : 55 ターン毎";
895-#else
896- return "Sleep II every 55 turns";
897-#endif
898- }
899- case ART_FINGOLFIN:
900- {
901-#ifdef JP
902- return "魔法の矢(150) : 90+d90 ターン毎";
903-#else
904- return "a magical arrow (150) every 90+d90 turns";
905-#endif
906- }
907- case ART_JUDGE:
908- {
909-#ifdef JP
910- return "体力と引き替えに千里眼と帰還 : 20+d20 ターン毎";
911-#else
912- return "clairvoyance and recall, draining you every 20+d20 turns";
913-#endif
914- }
915- case ART_POWER:
916- {
917-#ifdef JP
918- return "信じ難いこと : 450+d450 ターン毎";
919-#else
920- return "bizarre things every 450+d450 turns";
921-#endif
922- }
923- case ART_PALANTIR:
924- {
925-#ifdef JP
926- return "この階にいるユニークモンスターを表示 : 200ターン毎";
927-#else
928- return "list of the uniques on the level every 200 turns";
929-#endif
930- }
931- case ART_HURIN:
932- {
933-#ifdef JP
934- return "士気高揚, スピード(50+d50ターン) : 100+d200 ターン毎";
935-#else
936- return "hero and +10 to speed (50) every 100+200d turns";
937-#endif
938- }
939- case ART_INCANUS:
940- {
941-#ifdef JP
942- return "魔力の矢(120) : 120+d120 ターン毎";
943-#else
944- return "a mana bolt (120) every 120+d120 turns";
945-#endif
946- }
947- case ART_GIL_GALAD:
948- {
949-#ifdef JP
950- return "眩しい光(300) : 250 ターン毎";
951-#else
952- return "blinding light (300) every 250 turns";
953-#endif
954- }
955- case ART_NAIN:
956- {
957-#ifdef JP
958- return "岩石溶解 : 2 ターン毎";
959-#else
960- return "stone to mud every 2 turns";
961-#endif
962-
963- }
964- }
965-
966- /* Some ego item can be activated */
967- if (o_ptr->name2)
265+ /* We can activate it every turn */
266+ strcpy(timeout, _("いつでも", "every turn"));
267+ }
268+ else
968269 {
969- switch(o_ptr->name2)
970- {
971- case EGO_SEEING:
972- {
973-#ifdef JP
974- return "モンスター感知 : 10+d10 ターン毎";
975-#else
976- return "detect monster every 10+d10 turns";
977-#endif
978- }
979- case EGO_BRAND_FIRE:
980-#ifdef JP
981- return "ファイア・ボール (100) と火への耐性 : 50+d50 ターン毎";
982-#else
983- return "ball of fire (100) and resist fire every 50+d50 turns";
984-#endif
985- case EGO_BRAND_COLD:
986-#ifdef JP
987- return "コールド・ボール (100) と冷気への耐性 : 50+d50 ターン毎";
988-#else
989- return "ball of cold (100) and resist cold every 50+d50 turns";
990-#endif
991- case EGO_BRAND_ACID:
992-#ifdef JP
993- return "アシッド・ボール (100) と酸への耐性 : 50+d50 ターン毎";
994-#else
995- return "ball of acid (100) and resist acid every 50+d50 turns";
996-#endif
997- case EGO_BRAND_ELEC:
998-#ifdef JP
999- return "サンダー・ボール (100) と電撃への耐性 : 50+d50 ターン毎";
1000-#else
1001- return "ball of elec (100) and resist elec every 50+d50 turns";
1002-#endif
1003- case EGO_BRAND_POIS:
1004-#ifdef JP
1005- return "ポイズン・ボール (100) と毒への耐性 : 50+d50 ターン毎";
1006-#else
1007- return "ball of pois (100) and resist pois every 50+d50 turns";
1008-#endif
1009- case EGO_WEAP_LITE:
1010-#ifdef JP
1011- return "スターライト : 50+d50 ターン毎";
1012-#else
1013- return "star light every 50+d50 turns";
1014-#endif
1015- }
270+ /* Normal timeout activations */
271+ char constant_str[16], dice_str[16];
272+ sprintf(constant_str, "%d", constant);
273+ sprintf(dice_str, "d%d", dice);
274+ sprintf(timeout, _("%s%s%s ターン毎", "every %s%s%s turns"),
275+ (constant > 0) ? constant_str : "",
276+ (constant > 0 && dice > 0) ? "+" : "",
277+ (dice > 0) ? dice_str : "");
1016278 }
1017279
1018- if (o_ptr->tval == TV_RING)
1019- {
1020- switch (o_ptr->sval)
1021- {
1022- case SV_RING_FLAMES:
1023-#ifdef JP
1024-return "ファイア・ボール (100) と火への耐性 : 50+d50 ターン毎";
1025-#else
1026- return "ball of fire (100) and resist fire every 50+d50 turns";
1027-#endif
280+ /* Build detail activate description */
281+ sprintf(activation_detail, _("%s : %s", "%s %s"), desc, timeout);
1028282
1029- case SV_RING_ICE:
1030-#ifdef JP
1031-return "コールド・ボール (100) と冷気への耐性 : 50+d50 ターン毎";
1032-#else
1033- return "ball of cold (100) and resist cold every 50+d50 turns";
1034-#endif
283+ return activation_detail;
284+}
1035285
1036- case SV_RING_ACID:
1037-#ifdef JP
1038-return "アシッド・ボール (100) と酸への耐性 : 50+d50 ターン毎";
1039-#else
1040- return "ball of acid (100) and resist acid every 50+d50 turns";
1041-#endif
286+cptr item_activation(const object_type *o_ptr)
287+{
288+ u32b f1, f2, f3;
289+ const activation_type *act_ptr = find_activation_info(o_ptr);
1042290
1043- case SV_RING_ELEC:
1044-#ifdef JP
1045-return "サンダー・ボール (100) と電撃への耐性 : 50+d50 ターン毎";
1046-#else
1047- return "ball of elec (100) and resist elec every 50+d50 turns";
1048-#endif
291+ /* Paranoia */
292+ if (!act_ptr) {
293+ /* Maybe forgot adding information to activation_info table ? */
294+ msg_print("Activation information is not found.");
295+ return _("何も起きない", "Nothing");
296+ }
1049297
1050- default:
1051- return NULL;
1052- }
298+ /* Extract the flags */
299+ object_flags(o_ptr, &f1, &f2, &f3);
300+
301+ /* Require activation ability */
302+ if (!(f3 & (TR3_ACTIVATE))) return _("なし", "nothing");
303+
304+ /* Get an explain of an activation */
305+ if (activation_index(o_ptr))
306+ {
307+ return item_activation_aux(o_ptr);
1053308 }
1054309
1055310 /* Oops */
1056-#ifdef JP
1057- return "奇妙な光";
1058-#else
1059- return "a strange glow";
1060-#endif
311+ return _("何も起きない", "Nothing");
1061312 }
1062313
1063314
--- TinyAngband/trunk/src/cmd6.c (revision 1878)
+++ TinyAngband/trunk/src/cmd6.c (revision 1879)
@@ -2443,7 +2443,7 @@
24432443 */
24442444 static void do_cmd_activate_aux(int item)
24452445 {
2446- int k, dir, lev;
2446+ int lev;
24472447 object_type *o_ptr;
24482448
24492449
@@ -2472,11 +2472,7 @@
24722472 if (!can_use_device(lev, (bool)(o_ptr->ident & IDENT_CURSED)))
24732473 {
24742474 if (flush_failure) flush();
2475-#ifdef JP
2476- msg_print("うまく始動させることができなかった。");
2477-#else
2478- msg_print("You failed to activate it properly.");
2479-#endif
2475+ msg_print(_("うまく始動させることができなかった。", "You failed to activate it properly."));
24802476 sound(SOUND_STORE2); /* (Sound substitute) HACK! No fail sound, use strore 2*/
24812477 return;
24822478 }
@@ -2484,27 +2480,18 @@
24842480 /* Check the recharge */
24852481 if (o_ptr->timeout)
24862482 {
2487-#ifdef JP
2488- msg_print("それは微かに音を立て、輝き、消えた...");
2489-#else
2490- msg_print("It whines, glows and fades...");
2491-#endif
2483+ msg_print(_("それは微かに音を立て、輝き、消えた...", "It whines, glows and fades..."));
24922484 return;
24932485 }
24942486
2495-
24962487 /* Activate the artifact */
2497-#ifdef JP
2498- msg_print("始動させた...");
2499-#else
2500- msg_print("You activate it...");
2501-#endif
2488+ msg_print(_("始動させた...", "You activate it..."));
25022489
25032490 /* Sound */
25042491 sound(SOUND_ACT_ARTIFACT);
25052492
2506- /* Have specified activation */
2507- if (o_ptr->xtra2)
2493+ /* Activate object */
2494+ if (activation_index(o_ptr))
25082495 {
25092496 (void)activate_random_artifact(o_ptr);
25102497
@@ -2515,314 +2502,9 @@
25152502 return;
25162503 }
25172504
2518- /* Artifacts */
2519- else if (o_ptr->name1)
2520- {
2521- /* Choose effect */
2522- switch (o_ptr->name1)
2523- {
2524- case ART_JUDGE:
2525- {
2526-#ifdef JP
2527- msg_print("アーケン石はあなたの体力を奪った...");
2528- take_hit(damroll(3,8), "スラインのアーケン石");
2529- msg_print("アーケン石は赤く明るく光った!");
2530-#else
2531- msg_print("The Arkenstone drains your vitality...");
2532- take_hit(damroll(3, 8), "the Arkenstone of Thrain");
2533- msg_print("The Arkenstone flashes bright red!");
2534-#endif
2535- wiz_lite();
2536-#ifdef JP
2537- if (get_check("帰還の力を使いますか?"))
2538-#else
2539- if (get_check("Activate recall? "))
2540-#endif
2541- {
2542- word_of_recall();
2543- }
2544- o_ptr->timeout = randint0(20) + 20;
2545- break;
2546- }
2547- case ART_POWER:
2548- {
2549-#ifdef JP
2550- msg_print("指輪は漆黒に輝いた...");
2551-#else
2552- msg_print("The ring glows intensely black...");
2553-#endif
2554- if (!get_aim_dir(&dir)) return;
2555- ring_of_power(dir);
2556- o_ptr->timeout = randint0(450) + 450;
2557- break;
2558- }
2559- case ART_CELEBORN:
2560- {
2561-#ifdef JP
2562- msg_print("天国の歌が聞こえる...");
2563-#else
2564- msg_print("A heavenly choir sings...");
2565-#endif
2566- (void)set_poisoned(0);
2567- (void)set_cut(0);
2568- (void)set_stun(0);
2569- (void)set_confused(0);
2570- (void)set_blind(0);
2571- (void)set_hero(p_ptr->hero + randint1(25) + 25);
2572- (void)hp_player(777);
2573- o_ptr->timeout = 300;
2574- break;
2575- }
2576- case ART_HOLCOLLETH:
2577- {
2578-#ifdef JP
2579- msg_print("クロークが深いブルーに輝いた...");
2580-#else
2581- msg_print("Your cloak glows deep blue...");
2582-#endif
2583- sleep_monsters_touch();
2584- o_ptr->timeout = 55;
2585- break;
2586- }
2587- case ART_FINGOLFIN:
2588- {
2589-#ifdef JP
2590- msg_print("セスタスに魔法のトゲが現れた...");
2591-#else
2592- msg_print("Your cesti grows magical spikes...");
2593-#endif
2594- if (!get_aim_dir(&dir)) return;
2595- fire_bolt(GF_ARROW, dir, 150);
2596- o_ptr->timeout = randint0(90) + 90;
2597- break;
2598- }
2599- case ART_NAIN:
2600- {
2601-#ifdef JP
2602- msg_print("つるはしが鼓動した...");
2603-#else
2604- msg_print("Your mattock pulsates...");
2605-#endif
2606- if (!get_aim_dir(&dir)) return;
2607- wall_to_mud(dir);
2608- o_ptr->timeout = 2;
2609- break;
2610- }
2611- case ART_BRAND:
2612- {
2613-#ifdef JP
2614- msg_print("クロスボウが深紅に輝いた...");
2615-#else
2616- msg_print("Your crossbow glows deep red...");
2617-#endif
2618- (void)brand_bolts();
2619- o_ptr->timeout = 999;
2620- break;
2621- }
2622- case ART_PALANTIR:
2623- {
2624- monster_type *m_ptr;
2625- monster_race *r_ptr;
2626- int i;
2627-
2628-#ifdef JP
2629- msg_print("奇妙な場所が頭の中に浮かんだ...");
2630-#else
2631- msg_print("Some strange places show up in your mind. And you see ...");
2632-#endif
2633-
2634- /* Process the monsters (backwards) */
2635- for (i = m_max - 1; i >= 1; i--)
2636- {
2637- /* Access the monster */
2638- m_ptr = &m_list[i];
2639-
2640- /* Ignore "dead" monsters */
2641- if (!m_ptr->r_idx) continue;
2642-
2643- r_ptr = &r_info[m_ptr->r_idx];
2644-
2645- if(r_ptr->flags1 & RF1_UNIQUE)
2646- {
2647-#ifdef JP
2648- msg_format("%s. ",r_name + r_ptr->name);
2649-#else
2650- msg_format("%s. ",r_name + r_ptr->name);
2651-#endif
2652- }
2653- }
2654- o_ptr->timeout = 200;
2655- break;
2656- }
2657- case ART_HURIN:
2658- {
2659- (void)set_fast(p_ptr->fast + randint1(50) + 50);
2660- hp_player(10);
2661- set_afraid(0);
2662- set_hero(p_ptr->hero + randint1(50) + 50);
2663- o_ptr->timeout = randint0(200) + 100;
2664- break;
2665- }
2666- case ART_INCANUS:
2667- {
2668-#ifdef JP
2669- msg_print("ローブが純粋な魔力で震えた。");
2670-#else
2671- msg_print("The robe pulsates with raw mana...");
2672-#endif
2673- if (!get_aim_dir(&dir)) return;
2674- fire_bolt(GF_MANA, dir, 120);
2675- o_ptr->timeout = randint0(120) + 120;
2676- break;
2677- }
2678- case ART_GIL_GALAD:
2679- {
2680-#ifdef JP
2681- msg_print("盾が眩しい光で輝いた...");
2682-#else
2683- msg_print("Your shield gleams with blinding light...");
2684-#endif
2685- fire_ball(GF_LITE, 0, 300, 6);
2686- confuse_monsters(3 * p_ptr->lev / 2);
2687- o_ptr->timeout = 250;
2688- break;
2689- }
2690- }
2691-
2692- /* Window stuff */
2693- p_ptr->window |= (PW_INVEN | PW_EQUIP);
2694-
2695- /* Done */
2696- return;
2697- }
2698-
2699- /* Ego items */
2700- else if (o_ptr->name2)
2701- {
2702- switch(o_ptr->name2)
2703- {
2704- case EGO_SEEING:
2705- (void)detect_monsters_normal(DETECT_RAD_DEFAULT);
2706- o_ptr->timeout = randint0(10) + 10;
2707- break;
2708- case EGO_BRAND_ACID:
2709- if (!get_aim_dir(&dir)) break;
2710- fire_ball(GF_ACID, dir, 100, 2);
2711- (void)set_oppose_acid(p_ptr->oppose_acid + randint1(20) + 20);
2712- o_ptr->timeout = randint0(50) + 50;
2713- break;
2714- case EGO_BRAND_COLD:
2715- if (!get_aim_dir(&dir)) break;
2716- fire_ball(GF_COLD, dir, 100, 2);
2717- (void)set_oppose_cold(p_ptr->oppose_cold + randint1(20) + 20);
2718- o_ptr->timeout = randint0(50) + 50;
2719- break;
2720- case EGO_BRAND_FIRE:
2721- if (!get_aim_dir(&dir)) break;
2722- fire_ball(GF_FIRE, dir, 100, 2);
2723- (void)set_oppose_fire(p_ptr->oppose_fire + randint1(20) + 20);
2724- o_ptr->timeout = randint0(50) + 50;
2725- break;
2726- case EGO_BRAND_ELEC:
2727- if (!get_aim_dir(&dir)) break;
2728- fire_ball(GF_ELEC, dir, 100, 2);
2729- (void)set_oppose_elec(p_ptr->oppose_elec + randint1(20) + 20);
2730- o_ptr->timeout = randint0(50) + 50;
2731- break;
2732- case EGO_BRAND_POIS:
2733- if (!get_aim_dir(&dir)) break;
2734- fire_ball(GF_POIS, dir, 100, 2);
2735- (void)set_oppose_pois(p_ptr->oppose_pois + randint1(20) + 20);
2736- o_ptr->timeout = randint0(50) + 50;
2737- break;
2738- case EGO_WEAP_LITE:
2739- {
2740- int num = damroll(5, 3);
2741- int y, x;
2742- int attempts;
2743-
2744- for (k = 0; k < num; k++)
2745- {
2746- attempts = 1000;
2747-
2748- while (attempts--)
2749- {
2750- scatter(&y, &x, py, px, 4, 0);
2751- if (!cave_floor_bold(y, x)) continue;
2752- if ((y != py) || (x != px)) break;
2753- }
2754-
2755- project(0, 0, y, x, damroll(6, 8), GF_LITE_WEAK,
2756- (PROJECT_BEAM | PROJECT_THRU | PROJECT_GRID | PROJECT_KILL));
2757- }
2758-
2759- o_ptr->timeout = randint0(50) + 50;
2760- break;
2761- }
2762- }
2763-
2764- /* Window stuff */
2765- p_ptr->window |= (PW_INVEN | PW_EQUIP);
2766-
2767- /* Done */
2768- return;
2769- }
2770-
2771-
2772- else if (o_ptr->tval == TV_RING)
2773- {
2774- /* Get a direction for breathing (or abort) */
2775- if (!get_aim_dir(&dir)) return;
2776-
2777- switch (o_ptr->sval)
2778- {
2779- case SV_RING_ACID:
2780- {
2781- fire_ball(GF_ACID, dir, 100, 2);
2782- (void)set_oppose_acid(p_ptr->oppose_acid + randint1(20) + 20);
2783- o_ptr->timeout = randint0(50) + 50;
2784- break;
2785- }
2786-
2787- case SV_RING_ICE:
2788- {
2789- fire_ball(GF_COLD, dir, 100, 2);
2790- (void)set_oppose_cold(p_ptr->oppose_cold + randint1(20) + 20);
2791- o_ptr->timeout = randint0(50) + 50;
2792- break;
2793- }
2794-
2795- case SV_RING_FLAMES:
2796- {
2797- fire_ball(GF_FIRE, dir, 100, 2);
2798- (void)set_oppose_fire(p_ptr->oppose_fire + randint1(20) + 20);
2799- o_ptr->timeout = randint0(50) + 50;
2800- break;
2801- }
2802-
2803- case SV_RING_ELEC:
2804- {
2805- fire_ball(GF_ELEC, dir, 100, 2);
2806- (void)set_oppose_elec(p_ptr->oppose_elec + randint1(20) + 20);
2807- o_ptr->timeout = randint0(50) + 50;
2808- break;
2809- }
2810- }
2811-
2812- /* Window stuff */
2813- p_ptr->window |= (PW_INVEN | PW_EQUIP);
2814-
2815- /* Success */
2816- return;
2817- }
2818-
28192505 /* Mistake */
2820-#ifdef JP
2821- msg_print("おっと、このアイテムは始動できない。");
2822-#else
2823- msg_print("Oops. That object cannot be activated.");
2824-#endif
2825-
2506+ msg_print(_("おっと、このアイテムは始動できない。",
2507+ "Oops. That object cannot be activated."));
28262508 }
28272509
28282510
--- TinyAngband/trunk/src/types.h (revision 1878)
+++ TinyAngband/trunk/src/types.h (revision 1879)
@@ -132,6 +132,8 @@
132132 bool aware; /* The player is "aware" of the item's effects */
133133
134134 bool tried; /* The player has "tried" one of the items */
135+
136+ int activate; /* Activation */
135137 };
136138
137139
@@ -1367,6 +1369,22 @@
13671369 #endif
13681370
13691371 /*
1372+ * Object activation type
1373+ */
1374+typedef struct {
1375+ cptr flag;
1376+ int index;
1377+ byte level;
1378+ s32b value;
1379+ int chance;
1380+ struct {
1381+ int constant;
1382+ int dice;
1383+ } timeout;
1384+ cptr desc;
1385+} activation_type;
1386+
1387+/*
13701388 * Valar info
13711389 */
13721390 typedef struct valar_type
--- TinyAngband/trunk/src/wizard1.c (revision 1878)
+++ TinyAngband/trunk/src/wizard1.c (revision 1879)
@@ -1495,7 +1495,7 @@
14951495
14961496 /* Extract the fields */
14971497 o_ptr->pval = a_ptr->pval;
1498- o_ptr->xtra2 = a_ptr->activate;
1498+ /* o_ptr->xtra2 = a_ptr->activate; */
14991499 o_ptr->ac = a_ptr->ac;
15001500 o_ptr->dd = a_ptr->dd;
15011501 o_ptr->ds = a_ptr->ds;
--- TinyAngband/trunk/src/defines.h (revision 1878)
+++ TinyAngband/trunk/src/defines.h (revision 1879)
@@ -1024,91 +1024,99 @@
10241024 #define EGO_FLAME 93
10251025 #define EGO_BACKBITING 95
10261026
1027-/* Activation effects for random artifacts */
1027+/*
1028+ * Activation effects for random artifacts
1029+ */
1030+/* Bolts/Beams */
10281031 #define ACT_SUNLIGHT 1
1029-#define ACT_BO_MISS_1 2
1030-#define ACT_BA_POIS_1 3
1031-#define ACT_BO_ELEC_1 4
1032-#define ACT_BO_ACID_1 5
1033-#define ACT_BO_COLD_1 6
1034-#define ACT_BO_FIRE_1 7
1035-#define ACT_BA_COLD_1 8
1036-#define ACT_BA_FIRE_1 9
1037-#define ACT_DRAIN_1 10
1038-#define ACT_BA_COLD_2 11
1039-#define ACT_BA_ELEC_2 12
1040-#define ACT_DRAIN_2 13
1041-#define ACT_VAMPIRE_1 14
1042-#define ACT_BO_MISS_2 15
1043-#define ACT_BA_FIRE_2 16
1044-#define ACT_BA_COLD_3 17
1045-#define ACT_BA_ELEC_3 18
1046-#define ACT_WHIRLWIND 19
1047-#define ACT_VAMPIRE_2 20
1048-#define ACT_CALL_CHAOS 21
1049-#define ACT_ROCKET 22
1050-#define ACT_DISP_EVIL 23
1051-#define ACT_BA_MISS_3 24
1052-#define ACT_DISP_GOOD 25
1053-#define ACT_PESTICIDE 26
1054-/* 27 - 49 unused */
1055-#define ACT_FEAR 50
1056-#define ACT_CONFUSE 51
1057-#define ACT_SLEEP 52
1058-#define ACT_QUAKE 53
1059-#define ACT_TERROR 54
1060-#define ACT_TELE_AWAY 55
1061-#define ACT_BANISH_EVIL 56
1062-#define ACT_GENOCIDE 57
1063-#define ACT_MASS_GENO 58
1064-/* 59 - 64 unused */
1065-#define ACT_CHARM_ANIMAL 65
1066-#define ACT_CHARM_UNDEAD 66
1067-#define ACT_CHARM_OTHER 67
1068-#define ACT_CHARM_ANIMALS 68
1069-#define ACT_CHARM_OTHERS 69
1070-#define ACT_SUMMON_ANIMAL 70
1071-#define ACT_SUMMON_PHANTOM 71
1072-#define ACT_SUMMON_ELEMENTAL 72
1073-#define ACT_SUMMON_DEMON 73
1074-#define ACT_SUMMON_UNDEAD 74
1075-/* 75 - 80 unused */
1076-#define ACT_CURE_LW 81
1077-#define ACT_CURE_MW 82
1078-#define ACT_CURE_POISON 83
1079-#define ACT_REST_LIFE 84
1080-#define ACT_REST_ALL 85
1081-#define ACT_CURE_700 86
1082-#define ACT_CURE_1000 87
1083-#define ACT_CURING 88
1084-/* 89 - 90 unused */
1085-#define ACT_ESP 91
1086-#define ACT_BERSERK 92
1087-#define ACT_PROT_EVIL 93
1088-#define ACT_RESIST_ALL 94
1089-#define ACT_SPEED 95
1090-#define ACT_XTRA_SPEED 96
1091-#define ACT_WRAITH 97
1092-#define ACT_INVULN 98
1093-/* 99 - 110 unused */
1094-#define ACT_LIGHT 111
1095-#define ACT_MAP_LIGHT 112
1096-#define ACT_DETECT_ALL 113
1097-#define ACT_DETECT_XTRA 114
1098-#define ACT_ID_FULL 115
1099-#define ACT_ID_PLAIN 116
1100-#define ACT_RUNE_EXPLO 117
1101-#define ACT_RUNE_PROT 118
1102-#define ACT_SATIATE 119
1103-#define ACT_DEST_DOOR 120
1104-#define ACT_STONE_MUD 121
1105-#define ACT_RECHARGE 122
1106-#define ACT_ALCHEMY 123
1107-#define ACT_DIM_DOOR 124
1108-#define ACT_TELEPORT 125
1109-#define ACT_RECALL 126
1110-/* 127 -> unused */
1032+#define ACT_BO_MISSILE 2
1033+#define ACT_BO_ELEC 3
1034+#define ACT_BO_ACID 4
1035+#define ACT_BO_COLD 5
1036+#define ACT_BO_FIRE 6
1037+#define ACT_BO_DRAIN 7
1038+#define ACT_BO_MANA 8
11111039
1040+/* Balls */
1041+#define ACT_BA_POIS 10
1042+#define ACT_BA_ELEC_72 11
1043+#define ACT_BA_ACID_72 12
1044+#define ACT_BA_COLD_72 13
1045+#define ACT_BA_FIRE_72 14
1046+#define ACT_BA_ELEC_300 15
1047+#define ACT_BA_ACID_300 16
1048+#define ACT_BA_COLD_300 17
1049+#define ACT_BA_FIRE_300 18
1050+#define ACT_BA_STAR 19
1051+#define ACT_BA_DARK 20
1052+#define ACT_BA_MANA 21
1053+#define ACT_BIZARRE 22
1054+#define ACT_STARLIGHT 23
1055+
1056+/* Dispell */
1057+#define ACT_DISP_EVIL 24
1058+#define ACT_PESTICIDE 25
1059+#define ACT_BLINDING_LIGHT 26
1060+
1061+/* Offencive Effects */
1062+#define ACT_AGGRAVATE 30
1063+#define ACT_TERROR 31
1064+#define ACT_CONFUSE 32
1065+#define ACT_SLEEP 33
1066+#define ACT_TELE_AWAY 34
1067+#define ACT_BANISH_EVIL 35
1068+#define ACT_GENOCIDE 36
1069+#define ACT_MASS_GENO 37
1070+
1071+/* Heals */
1072+#define ACT_CURE_LW 40
1073+#define ACT_CURE_MW 41
1074+#define ACT_REST_ALL 42
1075+#define ACT_CURE_700 43
1076+#define ACT_CURE_MANA 44
1077+
1078+/* Enchant player */
1079+#define ACT_HELO 50
1080+#define ACT_HELO_SPEED 51
1081+#define ACT_BERSERK 52
1082+#define ACT_SPEED 53
1083+#define ACT_PROT_EVIL 54
1084+#define ACT_WRAITH 55
1085+#define ACT_INVULN 56
1086+#define ACT_RESIST_ELEC 57
1087+#define ACT_RESIST_ACID 58
1088+#define ACT_RESIST_FIRE 59
1089+#define ACT_RESIST_COLD 60
1090+#define ACT_RESIST_POIS 61
1091+#define ACT_RESIST_ALL 62
1092+#define ACT_ESP 63
1093+
1094+/* Miscellaneous */
1095+#define ACT_LIGHT 70
1096+#define ACT_MAP_LIGHT 71
1097+#define ACT_DETECT_ALL 72
1098+#define ACT_DETECT_UNIQUE 73
1099+#define ACT_DETECT_XTRA 74
1100+#define ACT_ID_FULL 75
1101+#define ACT_ID_PLAIN 76
1102+#define ACT_RUNE_EXPLO 77
1103+#define ACT_RUNE_PROT 78
1104+#define ACT_SATIATE 79
1105+#define ACT_DEST_DOOR 80
1106+#define ACT_STONE_MUD 81
1107+#define ACT_RECHARGE 82
1108+#define ACT_ALCHEMY 83
1109+#define ACT_PHASE_DOOR 84
1110+#define ACT_TELEPORT 85
1111+#define ACT_DIM_DOOR 86
1112+#define ACT_RECALL 87
1113+#define ACT_ARKENSTONE 88
1114+#define ACT_TELEKINESIS 89
1115+#define ACT_BRAND_FIRE_BOLTS 90
1116+#define ACT_QUAKE 91
1117+
1118+
1119+
11121120 /*** Object "tval" and "sval" codes ***/
11131121
11141122
--- TinyAngband/trunk/src/object2.c (revision 1878)
+++ TinyAngband/trunk/src/object2.c (revision 1879)
@@ -982,83 +982,12 @@
982982 if (f3 & TR3_PERMA_CURSE) total -= 15000;
983983
984984 /* Also, give some extra for activatable powers... */
985-
986985 if (o_ptr->art_name && (o_ptr->art_flags3 & TR3_ACTIVATE))
987986 {
988- int type = o_ptr->xtra2;
989-
990- if (type == ACT_SUNLIGHT) total += 250;
991- else if (type == ACT_BO_MISS_1) total += 250;
992- else if (type == ACT_BA_POIS_1) total += 300;
993- else if (type == ACT_BO_ELEC_1) total += 250;
994- else if (type == ACT_BO_ACID_1) total += 250;
995- else if (type == ACT_BO_COLD_1) total += 250;
996- else if (type == ACT_BO_FIRE_1) total += 250;
997- else if (type == ACT_BA_COLD_1) total += 750;
998- else if (type == ACT_BA_FIRE_1) total += 1000;
999- else if (type == ACT_DRAIN_1) total += 500;
1000- else if (type == ACT_BA_COLD_2) total += 1250;
1001- else if (type == ACT_BA_ELEC_2) total += 1500;
1002- else if (type == ACT_DRAIN_2) total += 750;
1003- else if (type == ACT_VAMPIRE_1) total = 1000;
1004- else if (type == ACT_BO_MISS_2) total += 1000;
1005- else if (type == ACT_BA_FIRE_2) total += 1750;
1006- else if (type == ACT_BA_COLD_3) total += 2500;
1007- else if (type == ACT_BA_ELEC_3) total += 2500;
1008- else if (type == ACT_WHIRLWIND) total += 7500;
1009- else if (type == ACT_VAMPIRE_2) total += 2500;
1010- else if (type == ACT_CALL_CHAOS) total += 5000;
1011- else if (type == ACT_ROCKET) total += 5000;
1012- else if (type == ACT_DISP_EVIL) total += 4000;
1013- else if (type == ACT_DISP_GOOD) total += 3500;
1014- else if (type == ACT_BA_MISS_3) total += 5000;
1015- else if (type == ACT_CONFUSE) total += 500;
1016- else if (type == ACT_SLEEP) total += 750;
1017- else if (type == ACT_QUAKE) total += 600;
1018- else if (type == ACT_TERROR) total += 2500;
1019- else if (type == ACT_TELE_AWAY) total += 2000;
1020- else if (type == ACT_GENOCIDE) total += 10000;
1021- else if (type == ACT_MASS_GENO) total += 10000;
1022- else if (type == ACT_CHARM_ANIMAL) total += 7500;
1023- else if (type == ACT_CHARM_UNDEAD) total += 10000;
1024- else if (type == ACT_CHARM_OTHER) total += 10000;
1025- else if (type == ACT_CHARM_ANIMALS) total += 12500;
1026- else if (type == ACT_CHARM_OTHERS) total += 17500;
1027- else if (type == ACT_SUMMON_ANIMAL) total += 10000;
1028- else if (type == ACT_SUMMON_PHANTOM) total += 12000;
1029- else if (type == ACT_SUMMON_ELEMENTAL) total += 15000;
1030- else if (type == ACT_SUMMON_DEMON) total += 20000;
1031- else if (type == ACT_SUMMON_UNDEAD) total += 20000;
1032- else if (type == ACT_CURE_LW) total += 500;
1033- else if (type == ACT_CURE_MW) total += 750;
1034- else if (type == ACT_REST_LIFE) total += 7500;
1035- else if (type == ACT_REST_ALL) total += 15000;
1036- else if (type == ACT_CURE_700) total += 10000;
1037- else if (type == ACT_CURE_1000) total += 15000;
1038- else if (type == ACT_ESP) total += 1500;
1039- else if (type == ACT_BERSERK) total += 800;
1040- else if (type == ACT_PROT_EVIL) total += 5000;
1041- else if (type == ACT_RESIST_ALL) total += 5000;
1042- else if (type == ACT_SPEED) total += 15000;
1043- else if (type == ACT_XTRA_SPEED) total += 25000;
1044- else if (type == ACT_WRAITH) total += 25000;
1045- else if (type == ACT_INVULN) total += 25000;
1046- else if (type == ACT_LIGHT) total += 150;
1047- else if (type == ACT_MAP_LIGHT) total += 500;
1048- else if (type == ACT_DETECT_ALL) total += 1000;
1049- else if (type == ACT_DETECT_XTRA) total += 12500;
1050- else if (type == ACT_ID_FULL) total += 10000;
1051- else if (type == ACT_ID_PLAIN) total += 1250;
1052- else if (type == ACT_RUNE_EXPLO) total += 4000;
1053- else if (type == ACT_RUNE_PROT) total += 10000;
1054- else if (type == ACT_SATIATE) total += 2000;
1055- else if (type == ACT_DEST_DOOR) total += 100;
1056- else if (type == ACT_STONE_MUD) total += 1000;
1057- else if (type == ACT_RECHARGE) total += 1000;
1058- else if (type == ACT_ALCHEMY) total += 10000;
1059- else if (type == ACT_DIM_DOOR) total += 10000;
1060- else if (type == ACT_TELEPORT) total += 2000;
1061- else if (type == ACT_RECALL) total += 7500;
987+ const activation_type* const act_ptr = find_activation_info(o_ptr);
988+ if (act_ptr) {
989+ total += act_ptr->value;
990+ }
1062991 }
1063992
1064993 return total;
@@ -3516,7 +3445,7 @@
35163445
35173446 /* Extract the other fields */
35183447 o_ptr->pval = a_ptr->pval;
3519- o_ptr->xtra2 = a_ptr->activate;
3448+ /* o_ptr->xtra2 = a_ptr->activate; */
35203449 o_ptr->ac = a_ptr->ac;
35213450 o_ptr->dd = a_ptr->dd;
35223451 o_ptr->ds = a_ptr->ds;
@@ -3656,7 +3585,7 @@
36563585 if (e_ptr->max_pval) o_ptr->pval += randint1(e_ptr->max_pval);
36573586
36583587 /* Add activation */
3659- if (e_ptr->activate) o_ptr->xtra2 = e_ptr->activate;
3588+ /* if (e_ptr->activate) o_ptr->xtra2 = e_ptr->activate; */
36603589 }
36613590
36623591 /* Hack -- extra powers */
--- TinyAngband/trunk/src/artifact.c (revision 1878)
+++ TinyAngband/trunk/src/artifact.c (revision 1879)
@@ -1183,7 +1183,7 @@
11831183 void give_activation_power(object_type *o_ptr)
11841184 {
11851185 int type = 0, chance = 0;
1186-
1186+#if 0
11871187 if (artifact_bias)
11881188 {
11891189 if (artifact_bias == BIAS_ELEC)
@@ -1341,107 +1341,19 @@
13411341 type = ACT_CURE_POISON;
13421342 }
13431343 }
1344-
1344+#endif
13451345 while (!type || (randint1(100) >= chance))
13461346 {
1347+ int i;
13471348 type = randint1(255);
1348- switch (type)
1349+ chance = 0;
1350+ for (i = 0; activation_info[i].flag != NULL; i++)
13491351 {
1350- case ACT_SUNLIGHT:
1351- case ACT_BO_MISS_1:
1352- case ACT_BA_POIS_1:
1353- case ACT_BO_ELEC_1:
1354- case ACT_BO_ACID_1:
1355- case ACT_BO_COLD_1:
1356- case ACT_BO_FIRE_1:
1357- case ACT_CONFUSE:
1358- case ACT_SLEEP:
1359- case ACT_QUAKE:
1360- case ACT_CURE_LW:
1361- case ACT_CURE_MW:
1362- case ACT_CURE_POISON:
1363- case ACT_BERSERK:
1364- case ACT_LIGHT:
1365- case ACT_MAP_LIGHT:
1366- case ACT_DEST_DOOR:
1367- case ACT_STONE_MUD:
1368- case ACT_TELEPORT:
1369- chance = 101;
1352+ if (activation_info[i].index == type)
1353+ {
1354+ chance = activation_info[i].chance;
13701355 break;
1371- case ACT_BA_COLD_1:
1372- case ACT_BA_FIRE_1:
1373- case ACT_DRAIN_1:
1374- case ACT_TELE_AWAY:
1375- case ACT_ESP:
1376- case ACT_RESIST_ALL:
1377- case ACT_DETECT_ALL:
1378- case ACT_RECALL:
1379- case ACT_SATIATE:
1380- case ACT_RECHARGE:
1381- chance = 85;
1382- break;
1383- case ACT_TERROR:
1384- case ACT_PROT_EVIL:
1385- case ACT_ID_PLAIN:
1386- chance = 75;
1387- break;
1388- case ACT_DRAIN_2:
1389- case ACT_VAMPIRE_1:
1390- case ACT_BO_MISS_2:
1391- case ACT_BA_FIRE_2:
1392- case ACT_REST_LIFE:
1393- chance = 66;
1394- break;
1395- case ACT_BA_COLD_3:
1396- case ACT_BA_ELEC_3:
1397- case ACT_WHIRLWIND:
1398- case ACT_VAMPIRE_2:
1399- case ACT_CHARM_ANIMAL:
1400- chance = 50;
1401- break;
1402- case ACT_SUMMON_ANIMAL:
1403- chance = 40;
1404- break;
1405- case ACT_DISP_EVIL:
1406- case ACT_BA_MISS_3:
1407- case ACT_DISP_GOOD:
1408- case ACT_BANISH_EVIL:
1409- case ACT_GENOCIDE:
1410- case ACT_MASS_GENO:
1411- case ACT_CHARM_UNDEAD:
1412- case ACT_CHARM_OTHER:
1413- case ACT_SUMMON_PHANTOM:
1414- case ACT_REST_ALL:
1415- case ACT_CURING:
1416- case ACT_RUNE_EXPLO:
1417- chance = 33;
1418- break;
1419- case ACT_CALL_CHAOS:
1420- case ACT_ROCKET:
1421- case ACT_CHARM_ANIMALS:
1422- case ACT_CHARM_OTHERS:
1423- case ACT_SUMMON_ELEMENTAL:
1424- case ACT_CURE_700:
1425- case ACT_SPEED:
1426- case ACT_ID_FULL:
1427- case ACT_RUNE_PROT:
1428- chance = 25;
1429- break;
1430- case ACT_CURE_1000:
1431- case ACT_XTRA_SPEED:
1432- case ACT_DETECT_XTRA:
1433- case ACT_DIM_DOOR:
1434- chance = 10;
1435- break;
1436- case ACT_SUMMON_UNDEAD:
1437- case ACT_SUMMON_DEMON:
1438- case ACT_WRAITH:
1439- case ACT_INVULN:
1440- case ACT_ALCHEMY:
1441- chance = 5;
1442- break;
1443- default:
1444- chance = 0;
1356+ }
14451357 }
14461358 }
14471359
@@ -1711,686 +1623,300 @@
17111623 }
17121624
17131625
1626+int activation_index(const object_type *o_ptr)
1627+{
1628+ if (artifact_p(o_ptr))
1629+ {
1630+ if (a_info[o_ptr->name1].flags3 & TR3_ACTIVATE)
1631+ {
1632+ return a_info[o_ptr->name1].activate;
1633+ }
1634+ }
1635+ if (ego_item_p(o_ptr))
1636+ {
1637+ if (e_info[o_ptr->name2].flags3 & TR3_ACTIVATE)
1638+ {
1639+ return e_info[o_ptr->name2].activate;
1640+ }
1641+ }
1642+ if (!(o_ptr->art_name))
1643+ {
1644+ if (k_info[o_ptr->k_idx].flags3 & TR3_ACTIVATE)
1645+ {
1646+ return k_info[o_ptr->k_idx].activate;
1647+ }
1648+ }
1649+ return o_ptr->xtra2;
1650+}
1651+
1652+const activation_type* find_activation_info(const object_type *o_ptr)
1653+{
1654+ const int index = activation_index(o_ptr);
1655+ const activation_type* p;
1656+
1657+ for (p = activation_info; p->flag != NULL; ++ p)
1658+ {
1659+ if (p->index == index)
1660+ {
1661+ return p;
1662+ }
1663+ }
1664+
1665+ return NULL;
1666+}
1667+
17141668 bool activate_random_artifact(object_type * o_ptr)
17151669 {
17161670 int plev = p_ptr->lev;
17171671 int k, dir, dummy;
1672+ const activation_type* const act_ptr = find_activation_info(o_ptr);
17181673
1719- if (!o_ptr->xtra2) return FALSE;
1674+ /* Paranoia */
1675+ if (!act_ptr) {
1676+ /* Maybe forgot adding information to activation_info table ? */
1677+ msg_print("Activation information is not found.");
1678+ return FALSE;
1679+ }
17201680
17211681 /* Activate for attack */
1722- switch (o_ptr->xtra2)
1682+ switch (act_ptr->index)
17231683 {
1684+ /* Bolts/Beams */
17241685 case ACT_SUNLIGHT:
17251686 {
17261687 if (!get_aim_dir(&dir)) return FALSE;
1727-#ifdef JP
1728- msg_print("太陽光線が放たれた。");
1729-#else
1730- msg_print("A line of sunlight appears.");
1731-#endif
17321688 (void)lite_line(dir);
1733- o_ptr->timeout = 10;
17341689 break;
17351690 }
1736-
1737- case ACT_BO_MISS_1:
1691+ case ACT_BO_MISSILE:
17381692 {
1739-#ifdef JP
1740- msg_print("それは眩しいくらいに明るく輝いた...");
1741-#else
1742- msg_print("It glows extremely brightly...");
1743-#endif
17441693 if (!get_aim_dir(&dir)) return FALSE;
17451694 fire_bolt(GF_MISSILE, dir, damroll(2, 6));
1746- o_ptr->timeout = 2;
17471695 break;
17481696 }
1749-
1750- case ACT_BA_POIS_1:
1697+ case ACT_BO_ELEC:
17511698 {
1752-#ifdef JP
1753- msg_print("それは濃緑色に脈動した...");
1754-#else
1755- msg_print("It throbs deep green...");
1756-#endif
17571699 if (!get_aim_dir(&dir)) return FALSE;
1758- fire_ball(GF_POIS, dir, 12, 3);
1759- o_ptr->timeout = randint0(4) + 4;
1760- break;
1761- }
1762-
1763- case ACT_BO_ELEC_1:
1764- {
1765-#ifdef JP
1766- msg_print("それは火花に覆われた...");
1767-#else
1768- msg_print("It is covered in sparks...");
1769-#endif
1770- if (!get_aim_dir(&dir)) return FALSE;
17711700 fire_bolt(GF_ELEC, dir, damroll(4, 8));
1772- o_ptr->timeout = randint0(6) + 6;
17731701 break;
17741702 }
1775-
1776- case ACT_BO_ACID_1:
1703+ case ACT_BO_ACID:
17771704 {
1778-#ifdef JP
1779- msg_print("それは酸に覆われた...");
1780-#else
1781- msg_print("It is covered in acid...");
1782-#endif
17831705 if (!get_aim_dir(&dir)) return FALSE;
17841706 fire_bolt(GF_ACID, dir, damroll(5, 8));
1785- o_ptr->timeout = randint0(5) + 5;
17861707 break;
17871708 }
1788-
1789- case ACT_BO_COLD_1:
1709+ case ACT_BO_COLD:
17901710 {
1791-#ifdef JP
1792- msg_print("それは冷気に覆われた...");
1793-#else
1794- msg_print("It is covered in frost...");
1795-#endif
17961711 if (!get_aim_dir(&dir)) return FALSE;
17971712 fire_bolt(GF_COLD, dir, damroll(6, 8));
1798- o_ptr->timeout = randint0(7) + 7;
17991713 break;
18001714 }
1801-
1802- case ACT_BO_FIRE_1:
1715+ case ACT_BO_FIRE:
18031716 {
1804-#ifdef JP
1805- msg_print("それは炎に覆われた...");
1806-#else
1807- msg_print("It is covered in fire...");
1808-#endif
18091717 if (!get_aim_dir(&dir)) return FALSE;
18101718 fire_bolt(GF_FIRE, dir, damroll(9, 8));
1811- o_ptr->timeout = randint0(8) + 8;
18121719 break;
18131720 }
1814-
1815- case ACT_BA_COLD_1:
1721+ case ACT_BO_DRAIN:
18161722 {
1817-#ifdef JP
1818- msg_print("それは冷気に覆われた...");
1819-#else
1820- msg_print("It is covered in frost...");
1821-#endif
18221723 if (!get_aim_dir(&dir)) return FALSE;
1823- fire_ball(GF_COLD, dir, 48, 2);
1824- o_ptr->timeout = 400;
1724+ if (drain_life(dir, 120))
18251725 break;
18261726 }
1827-
1828- case ACT_BA_FIRE_1:
1727+ case ACT_BO_MANA:
18291728 {
1830-#ifdef JP
1831- msg_print("それは赤く激しく輝いた...");
1832-#else
1833- msg_print("It glows an intense red...");
1834-#endif
18351729 if (!get_aim_dir(&dir)) return FALSE;
1836- fire_ball(GF_FIRE, dir, 72, 2);
1837- o_ptr->timeout = 400;
1730+ fire_bolt(GF_MANA, dir, 150);
18381731 break;
18391732 }
18401733
1841- case ACT_DRAIN_1:
1734+ case ACT_BA_POIS:
18421735 {
1843-#ifdef JP
1844- msg_print("それは黒く輝いた...");
1845-#else
1846- msg_print("It glows black...");
1847-#endif
18481736 if (!get_aim_dir(&dir)) return FALSE;
1849- if (drain_life(dir, 90))
1850- o_ptr->timeout = 70;
1737+ fire_ball(GF_POIS, dir, 12, 3);
18511738 break;
18521739 }
1853-
1854- case ACT_BA_COLD_2:
1740+ case ACT_BA_ELEC_72:
18551741 {
1856-#ifdef JP
1857- msg_print("それは青く激しく輝いた...");
1858-#else
1859- msg_print("It glows an intense blue...");
1860-#endif
18611742 if (!get_aim_dir(&dir)) return FALSE;
1862- fire_ball(GF_COLD, dir, 100, 2);
1863- o_ptr->timeout = 300;
1743+ fire_ball(GF_ELEC, dir, 72, 3);
18641744 break;
18651745 }
1866-
1867- case ACT_BA_ELEC_2:
1746+ case ACT_BA_ACID_72:
18681747 {
1869-#ifdef JP
1870- msg_print("電気がパチパチ音を立てた...");
1871-#else
1872- msg_print("It crackles with electricity...");
1873-#endif
18741748 if (!get_aim_dir(&dir)) return FALSE;
1875- fire_ball(GF_ELEC, dir, 100, 3);
1876- o_ptr->timeout = 500;
1749+ fire_ball(GF_ACID, dir, 72, 2);
18771750 break;
18781751 }
1879-
1880- case ACT_DRAIN_2:
1752+ case ACT_BA_FIRE_72:
18811753 {
1882-#ifdef JP
1883- msg_print("それは黒く輝いた...");
1884-#else
1885- msg_print("It glows black...");
1886-#endif
18871754 if (!get_aim_dir(&dir)) return FALSE;
1888- drain_life(dir, 120);
1889- o_ptr->timeout = 400;
1755+ fire_ball(GF_FIRE, dir, 72, 2);
18901756 break;
18911757 }
1892-
1893- case ACT_VAMPIRE_1:
1758+ case ACT_BA_COLD_72:
18941759 {
1895-#ifdef JP
1896- msg_print("それは黒く輝いた...");
1897-#else
1898- msg_print("It glows black...");
1899-#endif
19001760 if (!get_aim_dir(&dir)) return FALSE;
1901- for (dummy = 0; dummy < 3; dummy++)
1902- {
1903- if (drain_life(dir, 50))
1904- hp_player(50);
1905- }
1906- o_ptr->timeout = 400;
1761+ fire_ball(GF_COLD, dir, 72, 2);
19071762 break;
19081763 }
1909-
1910- case ACT_BO_MISS_2:
1764+ case ACT_BA_ELEC_300:
19111765 {
1912-#ifdef JP
1913- msg_print("魔法のトゲが現れた...");
1914-#else
1915- msg_print("It grows magical spikes...");
1916-#endif
19171766 if (!get_aim_dir(&dir)) return FALSE;
1918- fire_bolt(GF_ARROW, dir, 150);
1919- o_ptr->timeout = randint0(90) + 90;
1767+ fire_ball(GF_ELEC, dir, 300, 4);
19201768 break;
19211769 }
1922-
1923- case ACT_BA_FIRE_2:
1770+ case ACT_BA_ACID_300:
19241771 {
1925-#ifdef JP
1926- msg_print("それは深赤色に輝いた...");
1927-#else
1928- msg_print("It glows deep red...");
1929-#endif
19301772 if (!get_aim_dir(&dir)) return FALSE;
1931- fire_ball(GF_FIRE, dir, 120, 3);
1932- o_ptr->timeout = randint0(225) + 225;
1773+ fire_ball(GF_ACID, dir, 300, 4);
19331774 break;
19341775 }
1935-
1936- case ACT_BA_COLD_3:
1776+ case ACT_BA_FIRE_300:
19371777 {
1938-#ifdef JP
1939- msg_print("それは明白色に輝いた...");
1940-#else
1941- msg_print("It glows bright white...");
1942-#endif
19431778 if (!get_aim_dir(&dir)) return FALSE;
1944- fire_ball(GF_COLD, dir, 200, 3);
1945- o_ptr->timeout = randint0(325) + 325;
1779+ fire_ball(GF_FIRE, dir, 300, 4);
19461780 break;
19471781 }
1948-
1949- case ACT_BA_ELEC_3:
1782+ case ACT_BA_COLD_300:
19501783 {
1951-#ifdef JP
1952- msg_print("それは深青色に輝いた...");
1953-#else
1954- msg_print("It glows deep blue...");
1955-#endif
19561784 if (!get_aim_dir(&dir)) return FALSE;
1957- fire_ball(GF_ELEC, dir, 250, 3);
1958- o_ptr->timeout = randint0(425) + 425;
1785+ fire_ball(GF_COLD, dir, 300, 4);
19591786 break;
19601787 }
1961-
1962- case ACT_WHIRLWIND:
1788+ case ACT_BA_STAR:
19631789 {
1964- {
1965- int y, x;
1966- cave_type *c_ptr;
1967- monster_type *m_ptr;
1968-
1969- for (dir = 0; dir <= 9; dir++)
1970- {
1971- y = py + ddy[dir];
1972- x = px + ddx[dir];
1973- c_ptr = &cave[y][x];
1974-
1975- /* Get the monster */
1976- m_ptr = &m_list[c_ptr->m_idx];
1977-
1978- /* Hack -- attack monsters */
1979- if (c_ptr->m_idx && (m_ptr->ml || cave_floor_bold(y, x)))
1980- py_attack(y, x);
1981- }
1982- }
1983- o_ptr->timeout = 250;
1790+ if (!get_aim_dir(&dir)) return FALSE;
1791+ fire_ball(GF_LITE, dir, 150, 4);
19841792 break;
19851793 }
1986-
1987- case ACT_VAMPIRE_2:
1794+ case ACT_BA_DARK:
19881795 {
1989-#ifdef JP
1990- msg_print("それは黒く輝いた...");
1991-#else
1992- msg_print("It glows black...");
1993-#endif
19941796 if (!get_aim_dir(&dir)) return FALSE;
1995- for (dummy = 0; dummy < 3; dummy++)
1996- {
1997- if (drain_life(dir, 100))
1998- hp_player(100);
1999- }
2000-
2001- o_ptr->timeout = 400;
1797+ fire_ball(GF_DARK, dir, 250, 4);
20021798 break;
20031799 }
2004-
2005-
2006- case ACT_CALL_CHAOS:
1800+ case ACT_BA_MANA:
20071801 {
2008-#ifdef JP
2009- msg_print("それは様々な色の火花に包まれた...");
2010-#else
2011- msg_print("It glows in scintillating colours...");
2012-#endif
2013- call_chaos();
2014- o_ptr->timeout = 350;
1802+ if (!get_aim_dir(&dir)) return FALSE;
1803+ fire_ball(GF_MANA, dir, 250, 4);
20151804 break;
20161805 }
2017-
2018- case ACT_ROCKET:
1806+ case ACT_BIZARRE:
20191807 {
20201808 if (!get_aim_dir(&dir)) return FALSE;
2021-#ifdef JP
2022- msg_print("ロケットを発射した!");
2023-#else
2024- msg_print("You launch a rocket!");
2025-#endif
2026- sound(SOUND_MISS); /* (Sound substitute) HACK! No rocket sound available, use arrow miss */
2027- fire_ball(GF_ROCKET, dir, 120 + plev, 2);
2028- o_ptr->timeout = 400;
1809+ ring_of_power(dir);
20291810 break;
20301811 }
2031-
2032- case ACT_DISP_EVIL:
1812+ case ACT_STARLIGHT:
20331813 {
2034-#ifdef JP
2035- msg_print("神聖な雰囲気が充満した...");
2036-#else
2037- msg_print("It floods the area with goodness...");
2038-#endif
2039- dispel_evil(p_ptr->lev * 5);
2040- o_ptr->timeout = randint0(200) + 200;
2041- break;
2042- }
1814+ int num = damroll(5, 3);
1815+ int y, x;
1816+ int attempts;
20431817
2044- case ACT_DISP_GOOD:
2045- {
2046-#ifdef JP
2047- msg_print("邪悪な雰囲気が充満した...");
2048-#else
2049- msg_print("It floods the area with evil...");
2050-#endif
2051- dispel_good(p_ptr->lev * 5);
2052- o_ptr->timeout = randint0(200) + 200;
1818+ for (k = 0; k < num; k++)
1819+ {
1820+ attempts = 1000;
1821+
1822+ while (attempts--)
1823+ {
1824+ scatter(&y, &x, py, px, 4, 0);
1825+
1826+ if (!cave_floor_bold(y, x)) continue;
1827+
1828+ if ((y != py) || (x != px)) break;
1829+ }
1830+
1831+ project(0, 0, y, x, damroll(6 + p_ptr->lev / 8, 10), GF_LITE_WEAK,
1832+ (PROJECT_BEAM | PROJECT_THRU | PROJECT_GRID | PROJECT_KILL));
1833+ }
20531834 break;
20541835 }
20551836
2056- case ACT_BA_MISS_3:
1837+ /* Dispells */
1838+ case ACT_DISP_EVIL:
20571839 {
2058- if (!get_aim_dir(&dir)) return FALSE;
2059-#ifdef JP
2060- msg_print("あなたはエレメントのブレスを吐いた。");
2061-#else
2062- msg_print("You breathe the elements.");
2063-#endif
2064- sound(SOUND_BR_ELEMENTS);
2065- fire_ball(GF_MISSILE, dir, 300, -4);
2066- o_ptr->timeout = 500;
1840+ dispel_evil(p_ptr->lev * 5);
20671841 break;
20681842 }
2069-
20701843 case ACT_PESTICIDE:
20711844 {
2072-#ifdef JP
2073- msg_print("あなたは害虫を一掃した。");
2074-#else
2075- msg_print("You exterminate small life.");
2076-#endif
20771845 (void)dispel_monsters(4);
2078- o_ptr->timeout = randint0(55) + 55;
20791846 break;
20801847 }
2081-
2082- /* Activate for other offensive action */
2083-
2084- case ACT_CONFUSE:
1848+ case ACT_BLINDING_LIGHT:
20851849 {
2086-#ifdef JP
2087- msg_print("それは様々な色の火花に包まれた...");
2088-#else
2089- msg_print("It glows in scintillating colours...");
2090-#endif
2091- if (!get_aim_dir(&dir)) return FALSE;
2092- confuse_monster(dir, 20);
2093- o_ptr->timeout = 15;
1850+ fire_ball(GF_LITE, 0, 300, 6);
1851+ confuse_monsters(3 * p_ptr->lev / 2);
20941852 break;
20951853 }
20961854
2097- case ACT_SLEEP:
1855+ /* Offensive action */
1856+ case ACT_AGGRAVATE:
20981857 {
2099-#ifdef JP
2100- msg_print("それは深青色に輝いた...");
2101-#else
2102- msg_print("It glows deep blue...");
2103-#endif
2104- sleep_monsters_touch();
2105- o_ptr->timeout = 55;
1858+ aggravate_monsters(0);
21061859 break;
21071860 }
2108-
2109- case ACT_QUAKE:
1861+ case ACT_TERROR:
21101862 {
2111-#ifdef JP
2112- msg_print("それは鼓動した...");
2113-#else
2114- msg_print("It pulsates...");
2115-#endif
2116- earthquake(py, px, 10);
2117- o_ptr->timeout = 50;
1863+ msg_print(_("おどろおどろしい音が鳴り渡った...",
1864+ "You blow a mighty blast; your enemies tremble!"));
1865+ turn_monsters(40 + p_ptr->lev);
21181866 break;
21191867 }
2120-
2121- case ACT_FEAR:
1868+ case ACT_CONFUSE:
21221869 {
2123-#ifdef JP
2124- msg_print("おどろおどろしい音が鳴り渡った...");
2125-#else
2126- msg_print("You blow a mighty blast; your enemies tremble!");
2127-#endif
2128- (void)turn_monsters((3 * p_ptr->lev / 2) + 10);
2129- o_ptr->timeout = randint0(40) + 40;
1870+ confuse_monsters(p_ptr->lev);
21301871 break;
21311872 }
2132-
2133- case ACT_TERROR:
1873+ case ACT_SLEEP:
21341874 {
2135-#ifdef JP
2136- msg_print("おどろおどろしい音が鳴り渡った...");
2137-#else
2138- msg_print("You blow a mighty blast; your enemies tremble!");
2139-#endif
2140- turn_monsters(40 + p_ptr->lev);
2141- o_ptr->timeout = 3 * (p_ptr->lev + 10);
1875+ sleep_monsters_touch();
21421876 break;
21431877 }
2144-
21451878 case ACT_TELE_AWAY:
21461879 {
2147-#ifdef JP
2148- msg_print("それは深紫色に輝いた...");
2149-#else
2150- msg_print("It glows deep purple...");
2151-#endif
21521880 if (!get_aim_dir(&dir)) return FALSE;
21531881 (void)fire_beam(GF_AWAY_ALL, dir, plev);
2154- o_ptr->timeout = 200;
21551882 break;
21561883 }
2157-
21581884 case ACT_BANISH_EVIL:
21591885 {
2160- if (banish_evil(100))
2161- {
2162-#ifdef JP
2163- msg_print("アーティファクトの力が邪悪を打ち払った!");
2164-#else
2165- msg_print("The power of the artifact banishes evil!");
2166-#endif
2167- }
2168- o_ptr->timeout = 250 + randint1(250);
1886+ (void)banish_evil(100);
21691887 break;
21701888 }
2171-
21721889 case ACT_GENOCIDE:
21731890 {
2174-#ifdef JP
2175- msg_print("それは深青色に輝いた...");
2176-#else
2177- msg_print("It glows deep blue...");
2178-#endif
2179- (void)genocide(200);
2180- o_ptr->timeout = 500;
1891+ (void)genocide(66);
21811892 break;
21821893 }
2183-
21841894 case ACT_MASS_GENO:
21851895 {
2186-#ifdef JP
2187- msg_print("ひどく鋭い音が流れ出た...");
2188-#else
2189- msg_print("It lets out a long, shrill note...");
2190-#endif
2191- (void)mass_genocide(200);
2192- o_ptr->timeout = 1000;
1896+ (void)mass_genocide(66);
21931897 break;
21941898 }
21951899
2196- /* Activate for summoning / charming */
2197-
2198- case ACT_CHARM_ANIMAL:
2199- {
2200- if (!get_aim_dir(&dir)) return FALSE;
2201- (void)charm_animal(dir, plev);
2202- o_ptr->timeout = 300;
2203- break;
2204- }
2205-
2206- case ACT_CHARM_UNDEAD:
2207- {
2208- if (!get_aim_dir(&dir)) return FALSE;
2209- (void)control_one_undead(dir, plev);
2210- o_ptr->timeout = 333;
2211- break;
2212- }
2213-
2214- case ACT_CHARM_OTHER:
2215- {
2216- if (!get_aim_dir(&dir)) return FALSE;
2217- (void)charm_monster(dir, plev);
2218- o_ptr->timeout = 400;
2219- break;
2220- }
2221-
2222- case ACT_CHARM_ANIMALS:
2223- {
2224- (void)charm_animals(plev * 2);
2225- o_ptr->timeout = 500;
2226- break;
2227- }
2228-
2229- case ACT_CHARM_OTHERS:
2230- {
2231- charm_monsters(plev * 2);
2232- o_ptr->timeout = 750;
2233- break;
2234- }
2235-
2236- case ACT_SUMMON_ANIMAL:
2237- {
2238- (void)summon_specific(-1, py, px, plev, SUMMON_ANIMAL_RANGER, TRUE, TRUE, TRUE);
2239- o_ptr->timeout = 200 + randint1(300);
2240- break;
2241- }
2242-
2243- case ACT_SUMMON_PHANTOM:
2244- {
2245-#ifdef JP
2246- msg_print("幻霊を召喚した。");
2247-#else
2248- msg_print("You summon a phantasmal servant.");
2249-#endif
2250- (void)summon_specific(-1, py, px, dun_level, SUMMON_PHANTOM, TRUE, TRUE, TRUE);
2251- o_ptr->timeout = 200 + randint1(200);
2252- break;
2253- }
2254-
2255- case ACT_SUMMON_ELEMENTAL:
2256- {
2257- bool pet = (randint1(3) == 1);
2258- bool group = !(pet && (plev < 50));
2259-
2260- if (summon_specific((pet ? -1 : 0), py, px, ((plev * 3) / 2), SUMMON_ELEMENTAL, group, FALSE, pet))
2261- {
2262-#ifdef JP
2263- msg_print("エレメンタルが現れた...");
2264- if (pet) msg_print("あなたに服従しているようだ。");
2265- else msg_print("それをコントロールできなかった!");
2266-#else
2267- msg_print("An elemental materializes...");
2268- if (pet) msg_print("It seems obedient to you.");
2269- else msg_print("You fail to control it!");
2270-#endif
2271- }
2272-
2273- o_ptr->timeout = 750;
2274- break;
2275- }
2276-
2277- case ACT_SUMMON_DEMON:
2278- {
2279- bool pet = (randint1(3) == 1);
2280- bool group = !(pet && (plev < 50));
2281-
2282- if (summon_specific((pet ? -1 : 0), py, px, ((plev * 3) / 2), SUMMON_DEMON, group, FALSE, pet))
2283- {
2284-#ifdef JP
2285- msg_print("硫黄の悪臭が充満した。");
2286- if (pet) msg_print("「ご用でございますか、ご主人様」");
2287- else msg_print("「卑しき者よ、我は汝の下僕にあらず!魂を頂くぞ!」");
2288-#else
2289- msg_print("The area fills with a stench of sulphur and brimstone.");
2290- if (pet) msg_print("'What is thy bidding... Master?'");
2291- else msg_print("'NON SERVIAM! Wretch! I shall feast on thy mortal soul!'");
2292-#endif
2293- }
2294-
2295- o_ptr->timeout = 666 + randint1(333);
2296- break;
2297- }
2298-
2299- case ACT_SUMMON_UNDEAD:
2300- {
2301- bool pet = (randint1(3) == 1);
2302- bool group;
2303- int type;
2304-
2305- if (pet)
2306- {
2307- type = (plev > 47 ? SUMMON_HI_UNDEAD : SUMMON_UNDEAD);
2308- group = (((plev > 24) && (randint1(3) == 1)) ? TRUE : FALSE);
2309- }
2310- else
2311- {
2312- type = (plev > 47 ? SUMMON_HI_UNDEAD_NO_UNIQUES : SUMMON_UNDEAD);
2313- group = TRUE;
2314- }
2315-
2316- if (summon_specific((pet ? -1 : 0), py, px, ((plev * 3) / 2), type,
2317- group, FALSE, pet))
2318- {
2319-#ifdef JP
2320- msg_print("冷たい風があなたの周りに吹き始めた。それは腐敗臭を運んでいる...");
2321- if (pet) msg_print("古えの死せる者共があなたに仕えるため土から甦った!");
2322- else msg_print("死者が甦った。眠りを妨げるあなたを罰するために!");
2323-#else
2324- msg_print("Cold winds begin to blow around you, carrying with them the stench of decay...");
2325- if (pet) msg_print("Ancient, long-dead forms arise from the ground to serve you!");
2326- else msg_print("'The dead arise... to punish you for disturbing them!'");
2327-#endif
2328- }
2329-
2330- o_ptr->timeout = 666 + randint1(333);
2331- break;
2332- }
2333-
2334- /* Activate for healing */
2335-
1900+ /* Heals */
23361901 case ACT_CURE_LW:
23371902 {
2338-#ifdef JP
2339- msg_print("それは薄紫色の光を放射した...");
2340-#else
2341- msg_print("It radiates light purple...");
2342-#endif
23431903 (void)set_afraid(0);
23441904 (void)hp_player(30);
2345- o_ptr->timeout = 10;
23461905 break;
23471906 }
2348-
23491907 case ACT_CURE_MW:
23501908 {
2351-#ifdef JP
2352- msg_print("それは深紫色の光を放射した...");
2353-#else
2354- msg_print("It radiates deep purple...");
2355-#endif
2356- hp_player(damroll(4, 8));
2357- (void)set_cut((p_ptr->cut / 2) - 50);
2358- o_ptr->timeout = randint0(3) + 3;
2359- break;
2360- }
2361-
2362- case ACT_CURE_POISON:
2363- {
2364-#ifdef JP
2365- msg_print("それは深青色に輝いた...");
2366-#else
2367- msg_print("It glows deep blue...");
2368-#endif
2369- (void)set_afraid(0);
1909+ hp_player(100);
23701910 (void)set_poisoned(0);
2371- o_ptr->timeout = 5;
1911+ (void)set_cut(0);
1912+ (void)set_confused(0);
1913+ (void)set_image(0);
1914+ (void)set_blind(0);
1915+ (void)set_stun(0);
23721916 break;
23731917 }
2374-
2375- case ACT_REST_LIFE:
2376- {
2377-#ifdef JP
2378- msg_print("それは深紅に輝いた...");
2379-#else
2380- msg_print("It glows a deep red...");
2381-#endif
2382- restore_level();
2383- o_ptr->timeout = 450;
2384- break;
2385- }
2386-
23871918 case ACT_REST_ALL:
23881919 {
2389-#ifdef JP
2390- msg_print("それは濃緑色に輝いた...");
2391-#else
2392- msg_print("It glows a deep green...");
2393-#endif
23941920 (void)do_res_stat(A_STR);
23951921 (void)do_res_stat(A_INT);
23961922 (void)do_res_stat(A_WIS);
@@ -2398,221 +1924,165 @@
23981924 (void)do_res_stat(A_CON);
23991925 (void)do_res_stat(A_CHR);
24001926 (void)restore_level();
2401- o_ptr->timeout = 750;
24021927 break;
24031928 }
2404-
24051929 case ACT_CURE_700:
24061930 {
2407-#ifdef JP
2408- msg_print("それは深青色に輝いた...");
2409- msg_print("体内に暖かい鼓動が感じられる...");
2410-#else
2411- msg_print("It glows deep blue...");
2412- msg_print("You feel a warm tingling inside...");
2413-#endif
24141931 (void)hp_player(700);
24151932 (void)set_cut(0);
2416- o_ptr->timeout = 250;
24171933 break;
24181934 }
2419-
2420- case ACT_CURE_1000:
1935+ case ACT_CURE_MANA:
24211936 {
2422-#ifdef JP
2423- msg_print("それは白く明るく輝いた...");
2424- msg_print("ひじょうに気分がよい...");
2425-#else
2426- msg_print("It glows a bright white...");
2427- msg_print("You feel much better...");
2428-#endif
2429- (void)hp_player(1000);
2430- (void)set_cut(0);
2431- o_ptr->timeout = 888;
1937+ if (p_ptr->csp < p_ptr->msp)
1938+ {
1939+ p_ptr->csp = p_ptr->msp;
1940+ p_ptr->csp_frac = 0;
1941+ msg_print(_("頭がハッキリとした。", "You feel your head clear."));
1942+ p_ptr->redraw |= (PR_MANA);
1943+ p_ptr->window |= (PW_PLAYER);
1944+ p_ptr->window |= (PW_SPELL);
1945+ }
24321946 break;
24331947 }
24341948
2435- case ACT_CURING:
1949+ /* Activate for timed effect */
1950+ case ACT_HELO:
24361951 {
2437-#ifdef JP
2438- msg_print("それは眩しいくらいに輝いた...");
2439-#else
2440- msg_print("It glows extremely brightly...");
2441-#endif
2442- (void)hp_player(50);
2443- (void)set_poisoned(0);
2444- (void)set_confused(0);
2445- (void)set_blind(0);
2446- (void)set_stun(0);
2447- (void)set_cut(0);
2448- (void)set_image(0);
2449-
2450- o_ptr->timeout = 100;
1952+ (void)set_hero(p_ptr->hero + randint1(20) + 20);
24511953 break;
24521954 }
2453-
2454- /* Activate for timed effect */
2455-
2456- case ACT_ESP:
1955+ case ACT_HELO_SPEED:
24571956 {
2458- (void)set_tim_esp(p_ptr->tim_esp + randint1(30) + 25);
2459- o_ptr->timeout = 200;
1957+ int t = randint1(50) + 50;
1958+ (void)set_hero(p_ptr->hero + t);
1959+ (void)set_fast(p_ptr->fast + t);
24601960 break;
24611961 }
2462-
24631962 case ACT_BERSERK:
24641963 {
24651964 (void)set_shero(p_ptr->shero + randint1(50) + 50);
24661965 (void)set_blessed(p_ptr->blessed + randint1(50) + 50);
2467- o_ptr->timeout = 100 + randint1(100);
24681966 break;
24691967 }
2470-
1968+ case ACT_SPEED:
1969+ {
1970+ (void)set_fast(randint1(20) + 20);
1971+ break;
1972+ }
24711973 case ACT_PROT_EVIL:
24721974 {
2473-#ifdef JP
2474- msg_print("鋭い音が流れ出た...");
2475-#else
2476- msg_print("It lets out a shrill wail...");
2477-#endif
24781975 k = 3 * p_ptr->lev;
24791976 (void)set_protevil(p_ptr->protevil + randint1(25) + k);
2480- o_ptr->timeout = randint0(225) + 225;
24811977 break;
24821978 }
1979+ case ACT_WRAITH:
1980+ {
1981+ set_wraith_form(p_ptr->tim_wraith + randint1(plev / 2) + (plev / 2));
1982+ break;
1983+ }
24831984
2484- case ACT_RESIST_ALL:
1985+ case ACT_INVULN:
24851986 {
2486-#ifdef JP
2487- msg_print("それは様々な色に輝いた...");
2488-#else
2489- msg_print("It glows many colours...");
2490-#endif
1987+ (void)set_invuln(p_ptr->invuln + randint1(8) + 8);
1988+ break;
1989+ }
1990+ case ACT_RESIST_ELEC:
1991+ {
1992+ (void)set_oppose_elec(p_ptr->oppose_elec + randint1(40) + 40);
1993+ break;
1994+ }
1995+ case ACT_RESIST_ACID:
1996+ {
24911997 (void)set_oppose_acid(p_ptr->oppose_acid + randint1(40) + 40);
2492- (void)set_oppose_elec(p_ptr->oppose_elec + randint1(40) + 40);
1998+ break;
1999+ }
2000+ case ACT_RESIST_FIRE:
2001+ {
24932002 (void)set_oppose_fire(p_ptr->oppose_fire + randint1(40) + 40);
2494- (void)set_oppose_cold(p_ptr->oppose_cold + randint1(40) + 40);
2495- (void)set_oppose_pois(p_ptr->oppose_pois + randint1(40) + 40);
2496- o_ptr->timeout = 200;
24972003 break;
24982004 }
2499-
2500- case ACT_SPEED:
2005+ case ACT_RESIST_COLD:
25012006 {
2502-#ifdef JP
2503- msg_print("それは明るく緑色に輝いた...");
2504-#else
2505- msg_print("It glows bright green...");
2506-#endif
2507- if (!p_ptr->fast)
2508- {
2509- (void)set_fast(randint1(20) + 20);
2510- }
2511- else
2512- {
2513- (void)set_fast(p_ptr->fast + 5);
2514- }
2515- o_ptr->timeout = randint0(100) + 100;
2007+ (void)set_oppose_cold(p_ptr->oppose_cold + randint1(40) + 40);
25162008 break;
25172009 }
2518-
2519- case ACT_XTRA_SPEED:
2010+ case ACT_RESIST_POIS:
25202011 {
2521-#ifdef JP
2522- msg_print("それは明るく輝いた...");
2523-#else
2524- msg_print("It glows brightly...");
2525-#endif
2526- if (!p_ptr->fast)
2527- {
2528- (void)set_fast(randint1(75) + 75);
2529- }
2530- else
2531- {
2532- (void)set_fast(p_ptr->fast + 5);
2533- }
2534- o_ptr->timeout = randint0(200) + 200;
2012+ (void)set_oppose_pois(p_ptr->oppose_pois + randint1(40) + 40);
25352013 break;
25362014 }
2537-
2538- case ACT_WRAITH:
2015+ case ACT_RESIST_ALL:
25392016 {
2540- set_wraith_form(p_ptr->tim_wraith + randint1(plev / 2) + (plev / 2));
2541- o_ptr->timeout = 1000;
2017+ (void)set_oppose_acid(p_ptr->oppose_acid + randint1(40) + 40);
2018+ (void)set_oppose_elec(p_ptr->oppose_elec + randint1(40) + 40);
2019+ (void)set_oppose_fire(p_ptr->oppose_fire + randint1(40) + 40);
2020+ (void)set_oppose_cold(p_ptr->oppose_cold + randint1(40) + 40);
2021+ (void)set_oppose_pois(p_ptr->oppose_pois + randint1(40) + 40);
25422022 break;
25432023 }
2544-
2545- case ACT_INVULN:
2024+ case ACT_ESP:
25462025 {
2547- (void)set_invuln(p_ptr->invuln + randint1(8) + 8);
2548- o_ptr->timeout = 1000;
2026+ (void)set_tim_esp(p_ptr->tim_esp + randint1(30) + 25);
2027+ o_ptr->timeout = 200;
25492028 break;
25502029 }
25512030
2552- /* Activate for general purpose effect (detection etc.) */
2553-
2031+ /* General purposes */
25542032 case ACT_LIGHT:
25552033 {
2556-#ifdef JP
2557- msg_print("澄んだ光があふれ出た...");
2558-#else
2559- msg_print("It wells with clear light...");
2560-#endif
25612034 lite_area(damroll(2, 15), 3);
2562- o_ptr->timeout = randint0(10) + 10;
25632035 break;
25642036 }
2565-
25662037 case ACT_MAP_LIGHT:
25672038 {
2568-#ifdef JP
2569- msg_print("それは眩しく輝いた...");
2570-#else
2571- msg_print("It shines brightly...");
2572-#endif
25732039 map_area(DETECT_RAD_MAP);
25742040 lite_area(damroll(2, 15), 3);
2575- o_ptr->timeout = randint0(50) + 50;
25762041 break;
25772042 }
2578-
25792043 case ACT_DETECT_ALL:
25802044 {
2581-#ifdef JP
2582- msg_print("それは白く明るく輝いた...");
2583- msg_print("心にイメージが浮かんできた...");
2584-#else
2585- msg_print("It glows bright white...");
2586- msg_print("An image forms in your mind...");
2587-#endif
25882045 detect_all(DETECT_RAD_DEFAULT);
2589- o_ptr->timeout = randint0(55) + 55;
25902046 break;
25912047 }
2048+ case ACT_DETECT_UNIQUE:
2049+ {
2050+ monster_type *m_ptr;
2051+ monster_race *r_ptr;
2052+ int i;
25922053
2054+ msg_print(_("奇妙な場所が頭の中に浮かんだ...",
2055+ "Some strange places show up in your mind. And you see ..."));
2056+
2057+ /* Process the monsters (backwards) */
2058+ for (i = m_max - 1; i >= 1; i--)
2059+ {
2060+ /* Access the monster */
2061+ m_ptr = &m_list[i];
2062+
2063+ /* Ignore "dead" monsters */
2064+ if (!m_ptr->r_idx) continue;
2065+
2066+ r_ptr = &r_info[m_ptr->r_idx];
2067+
2068+ if(r_ptr->flags1 & RF1_UNIQUE)
2069+ {
2070+ msg_format(_("%s. ", "%s. "), r_name + r_ptr->name);
2071+ }
2072+ }
2073+ break;
2074+ }
25932075 case ACT_DETECT_XTRA:
25942076 {
2595-#ifdef JP
2596- msg_print("それは明るく輝いた...");
2597-#else
2598- msg_print("It glows brightly...");
2599-#endif
26002077 detect_all(DETECT_RAD_DEFAULT);
26012078 probing();
26022079 (void)identify_fully();
2603- o_ptr->timeout = 1000;
26042080 break;
26052081 }
26062082
26072083 case ACT_ID_FULL:
26082084 {
2609-#ifdef JP
2610- msg_print("それは黄色く輝いた...");
2611-#else
2612- msg_print("It glows yellow...");
2613-#endif
26142085 (void)identify_fully();
2615- o_ptr->timeout = 750;
26162086 break;
26172087 }
26182088
@@ -2619,137 +2089,108 @@
26192089 case ACT_ID_PLAIN:
26202090 {
26212091 if (!ident_spell()) return FALSE;
2622- o_ptr->timeout = 10;
26232092 break;
26242093 }
2625-
26262094 case ACT_RUNE_EXPLO:
26272095 {
2628-#ifdef JP
2629- msg_print("それは明赤色に輝いた...");
2630-#else
2631- msg_print("It glows bright red...");
2632-#endif
26332096 explosive_rune();
2634- o_ptr->timeout = 200;
26352097 break;
26362098 }
2637-
26382099 case ACT_RUNE_PROT:
26392100 {
2640-#ifdef JP
2641- msg_print("それは明青色に輝いた...");
2642-#else
2643- msg_print("It glows light blue...");
2644-#endif
26452101 warding_glyph();
2646- o_ptr->timeout = 400;
26472102 break;
26482103 }
2649-
26502104 case ACT_SATIATE:
26512105 {
26522106 (void)set_food(PY_FOOD_MAX - 1);
2653- o_ptr->timeout = 200;
26542107 break;
26552108 }
2656-
26572109 case ACT_DEST_DOOR:
26582110 {
2659-#ifdef JP
2660- msg_print("それは明赤色に輝いた...");
2661-#else
2662- msg_print("It glows bright red...");
2663-#endif
26642111 destroy_doors_touch();
2665- o_ptr->timeout = 10;
26662112 break;
26672113 }
2668-
26692114 case ACT_STONE_MUD:
26702115 {
2671-#ifdef JP
2672- msg_print("それは鼓動した...");
2673-#else
2674- msg_print("It pulsates...");
2675-#endif
26762116 if (!get_aim_dir(&dir)) return FALSE;
26772117 wall_to_mud(dir);
2678- o_ptr->timeout = 5;
26792118 break;
26802119 }
2681-
26822120 case ACT_RECHARGE:
26832121 {
2684-#ifdef JP
2685- msg_print("それは明黄色に輝いた...");
2686-#else
2687- msg_print("It glows bright yellow...");
2688-#endif
26892122 recharge(130);
2690- o_ptr->timeout = 70;
26912123 break;
26922124 }
2693-
26942125 case ACT_ALCHEMY:
26952126 {
2696-#ifdef JP
2697- msg_print("それは明黄色に輝いた...");
2698-#else
2699- msg_print("It glows bright yellow...");
2700-#endif
27012127 (void)alchemy();
2702- o_ptr->timeout = 500;
27032128 break;
27042129 }
2705-
2706- case ACT_DIM_DOOR:
2130+ case ACT_PHASE_DOOR:
27072131 {
2708-#ifdef JP
2709- msg_print("次元の扉が開いた。目的地を選んで下さい。");
2710-#else
2711- msg_print("You open a dimensional gate. Choose a destination.");
2712-#endif
2713- if (!dimension_door()) return FALSE;
2714- o_ptr->timeout = 100;
2132+ teleport_player(10);
27152133 break;
27162134 }
2717-
2718-
27192135 case ACT_TELEPORT:
27202136 {
2721-#ifdef JP
2722- msg_print("周りの空間が歪んだ...");
2723-#else
2724- msg_print("It twists space around you...");
2725-#endif
27262137 teleport_player(100);
2727- o_ptr->timeout = 45;
27282138 break;
27292139 }
2730-
2140+ case ACT_DIM_DOOR:
2141+ {
2142+ msg_print(_("次元の扉が開いた。目的地を選んで下さい。",
2143+ "You open a dimensional gate. Choose a destination."));
2144+ if (!dimension_door()) return FALSE;
2145+ break;
2146+ }
27312147 case ACT_RECALL:
27322148 {
27332149 if (ironman_downward)
27342150 {
2735-#ifdef JP
2736- msg_print("それは一瞬輝いたがすぐ元に戻った。");
2737-#else
2738- msg_print("It glows and then fades.");
2739-#endif
2151+ msg_print(_("それは一瞬輝いたがすぐ元に戻った。", "It glows and then fades."));
2152+ return FALSE;
27402153 }
27412154 else
27422155 {
2156+ (void)recall_player(randint0(21) + 15);
2157+ }
2158+ break;
2159+ }
2160+ case ACT_ARKENSTONE:
2161+ {
27432162 #ifdef JP
2744- msg_print("それは乳白色に輝いた...");
2163+ msg_print("アーケン石はあなたの体力を奪った...");
2164+ take_hit(damroll(3,8), "スラインのアーケン石");
2165+ msg_print("アーケン石は赤く明るく光った!");
27452166 #else
2746- msg_print("It glows soft white...");
2167+ msg_print("The Arkenstone drains your vitality...");
2168+ take_hit(damroll(3, 8), "the Arkenstone of Thrain");
2169+ msg_print("The Arkenstone flashes bright red!");
27472170 #endif
2748- (void)recall_player(randint0(21) + 15);
2749- o_ptr->timeout = 200;
2171+ wiz_lite();
2172+ if (get_check(_("帰還の力を使いますか?", "Activate recall? ")))
2173+ {
2174+ word_of_recall();
27502175 }
27512176 break;
27522177 }
2178+ case ACT_TELEKINESIS:
2179+ {
2180+ if (!get_aim_dir(&dir)) return FALSE;
2181+ fetch(dir, 500, TRUE);
2182+ break;
2183+ }
2184+ case ACT_BRAND_FIRE_BOLTS:
2185+ {
2186+ (void)brand_bolts();
2187+ break;
2188+ }
2189+ case ACT_QUAKE:
2190+ {
2191+ earthquake(py, px, 10);
2192+ break;
2193+ }
27532194
27542195 default:
27552196 {
@@ -2762,6 +2203,16 @@
27622203 }
27632204 }
27642205
2206+ /* Set activation timeout */
2207+ if (act_ptr->timeout.constant >= 0)
2208+ {
2209+ o_ptr->timeout = act_ptr->timeout.constant;
2210+ if (act_ptr->timeout.dice > 0)
2211+ {
2212+ o_ptr->timeout += randint1(act_ptr->timeout.dice);
2213+ }
2214+ }
2215+
27652216 return TRUE;
27662217 }
27672218
@@ -2815,7 +2266,6 @@
28152266
28162267 /* Extract the fields */
28172268 q_ptr->pval = a_ptr->pval;
2818- q_ptr->xtra2 = a_ptr->activate;
28192269 q_ptr->ac = a_ptr->ac;
28202270 q_ptr->dd = a_ptr->dd;
28212271 q_ptr->ds = a_ptr->ds;
--- TinyAngband/trunk/src/tables.c (revision 1878)
+++ TinyAngband/trunk/src/tables.c (revision 1879)
@@ -3454,3 +3454,174 @@
34543454 {_("ネスサ", "Nessa"), A_DEX,
34553455 {REW_SPEED, REW_SPEED, REW_POTION, REW_AUGM_ABL, REW_AMULET}},
34563456 };
3457+
3458+
3459+/*
3460+ * Define flags, levels, values of activations
3461+ */
3462+const activation_type activation_info[] =
3463+{
3464+ /* Bolts/Beams */
3465+ { "SUNLIGHT", ACT_SUNLIGHT, 10, 250, 101, {10, 0},
3466+ _("太陽光線", "beam of sunlight") },
3467+ { "BO_MISSILE", ACT_BO_MISSILE, 10, 250, 101, {2, 0},
3468+ _("マジック・ミサイル(2d6)", "magic missile (2d6)") },
3469+ { "BO_ELEC", ACT_BO_ELEC, 10, 250, 80, {5, 0},
3470+ _("サンダー・ボルト(4d8)", "lightning bolt (4d8)") },
3471+ { "BO_ACID", ACT_BO_ACID, 10, 250, 80, {6, 0},
3472+ _("アシッド・ボルト(5d8)", "acid bolt (5d8)") },
3473+ { "BO_COLD", ACT_BO_COLD, 10, 250, 80, {7, 0},
3474+ _("アイス・ボルト(6d8)", "frost bolt (6d8)") },
3475+ { "BO_FIRE", ACT_BO_FIRE, 10, 250, 80, {8, 0},
3476+ _("ファイア・ボルト(9d8)", "fire bolt (9d8)") },
3477+ { "BO_DRAIN", ACT_BO_DRAIN, 20, 750, 30, {15, 0},
3478+ _("生命力吸収(120)", "drain life (120)") },
3479+ { "BO_MANA", ACT_BO_MANA, 25, 1500, 30, {20, 0},
3480+ _("魔法の矢(150)", "a magical arrow (150)") },
3481+
3482+ /* Balls */
3483+ { "BA_POIS", ACT_BA_POIS, 10, 300, 101, {4, 0},
3484+ _("悪臭雲(12)", "stinking cloud (12)") },
3485+ { "BA_ELEC_72", ACT_BA_ELEC_72, 15, 1000, 50, {12, 0},
3486+ _("サンダー・ボール(72)", "ball of lightning (72)") },
3487+ { "BA_ACID_72", ACT_BA_ACID_72, 15, 1000, 50, {12, 0},
3488+ _("アシッド・ボール(72)", "ball of acid (72)") },
3489+ { "BA_COLD_72", ACT_BA_COLD_72, 15, 1000, 50, {12, 0},
3490+ _("アイス・ボール(72)", "ball of cold (72)") },
3491+ { "BA_FIRE_72", ACT_BA_FIRE_72, 15, 1000, 50, {12, 0},
3492+ _("ファイア・ボール(72)", "ball of fire (72)") },
3493+ { "BA_ELEC_300", ACT_BA_ELEC_300, 25, 2500, 10, {40, 0},
3494+ _("巨大サンダー・ボール(250)", "ball of lightning (250)") },
3495+ { "BA_ACID_300", ACT_BA_ACID_300, 25, 2500, 10, {40, 0},
3496+ _("巨大アシッド・ボール(250)", "ball of acid (250)") },
3497+ { "BA_FIRE_300", ACT_BA_FIRE_300, 25, 2500, 10, {40, 0},
3498+ _("巨大ファイア・ボール(250)", "fire ball (250)") },
3499+ { "BA_COLD_300", ACT_BA_COLD_300, 25, 2500, 10, {40, 0},
3500+ _("巨大アイス・ボール(250)", "ball of cold (250)") },
3501+ { "BA_STAR", ACT_BA_STAR, 30, 2200, 10, {25, 0},
3502+ _("巨大スター・ボール(150)", "large star ball (150)") },
3503+ { "BA_DARK", ACT_BA_DARK, 30, 2200, 10, {30, 0},
3504+ _("暗黒の嵐(250)", "darkness storm (250)") },
3505+ { "BA_MANA", ACT_BA_MANA, 30, 2500, 10, {30, 0},
3506+ _("魔力の嵐(250)", "a mana storm (250)") },
3507+ { "BIZARRE", ACT_BIZARRE, 40, 10000, 0, {50, 0},
3508+ _("信じ難いこと", "bizarre things") },
3509+ { "STARLIGHT", ACT_STARLIGHT, 15, 2000, 20, {30, 0},
3510+ _("スター・ライト", "Star lights") },
3511+
3512+ /* Dispell */
3513+ { "DISP_EVIL", ACT_DISP_EVIL, 20, 4000, 20, {50, 0},
3514+ _("邪悪退散(x5)", "dispel evil (x5)") },
3515+ { "PESTICIDE", ACT_PESTICIDE, 10, 500, 80, {10, 0},
3516+ _("害虫の駆除", "dispel small life") },
3517+ { "BLINDING_LIGHT", ACT_BLINDING_LIGHT, 20, 5000, 50, {40, 0},
3518+ _("眩しい光", "blinding light") },
3519+
3520+ /* Offencive Effects */
3521+ { "AGGRAVATE", ACT_AGGRAVATE, 0, 100, 0, {0, 0},
3522+ _("モンスターを怒らせる", "aggravete monsters") },
3523+ { "TERROR", ACT_TERROR, 10, 2500, 80, {-1, 0},
3524+ _("恐慌", "terror") },
3525+ { "CONFUSE", ACT_CONFUSE, 10, 500, 80, {10, 0},
3526+ _("パニック・モンスター", "confuse monster") },
3527+ { "SLEEP", ACT_SLEEP, 10, 750, 80, {15, 0},
3528+ _("周囲のモンスターを眠らせる", "sleep nearby monsters") },
3529+ { "TELE_AWAY", ACT_TELE_AWAY, 10, 2000, 70, {15, 0},
3530+ _("テレポート・アウェイ", "teleport away") },
3531+ { "BANISH_EVIL", ACT_BANISH_EVIL, 20, 2000, 30, {250, 0},
3532+ _("邪悪消滅", "banish evil") },
3533+ { "GENOCIDE", ACT_GENOCIDE, 40, 10000, 10, {500, 0},
3534+ _("抹殺", "genocide") },
3535+ { "MASS_GENO", ACT_MASS_GENO, 40, 10000, 5, {1000, 0},
3536+ _("周辺抹殺", "mass genocide") },
3537+
3538+ /* Heals */
3539+ { "CURE_LW", ACT_CURE_LW, 10, 500, 101, {5, 0},
3540+ _("恐怖除去/体力回復(30)", "remove fear and heal 30 hp") },
3541+ { "CURE_MW", ACT_CURE_MW, 10, 750, 70, {30, 0},
3542+ _("癒し/傷回復(100)", "cure and heal 100") },
3543+ { "CURE_700", ACT_CURE_700, 30, 10000, 10, {250, 0},
3544+ _("体力回復(700)", "heal 700 hit points") },
3545+ { "REST_ALL", ACT_REST_ALL, 10, 15000, 20, {750, 0},
3546+ _("全ステータスと経験値復活", "restore stats and life levels") },
3547+ { "CURE_MANA_FULL", ACT_CURE_MANA, 20, 20000, 5, {777, 0},
3548+ _("魔力復活", "restore mana") },
3549+
3550+ /* Enchant player */
3551+ { "HELO", ACT_HELO, 10, 500, 101, {30, 30},
3552+ _("士気高揚", "heroism") },
3553+ { "HELO_SPEED", ACT_HELO_SPEED, 20, 20000, 30, {100, 200},
3554+ _("士気高揚, スピード(期間 50+d50ターン)", "hero and +10 to speed (50)") },
3555+ { "BERSERK", ACT_BERSERK, 10, 800, 50, {75, 0},
3556+ _("狂戦士化(25+d25ターン)", "berserk (25+d25 turns)") },
3557+ { "SPEED", ACT_SPEED, 10, 15000, 50, {250, 0},
3558+ _("加速(期間 20+d20)", "speed (dur 20+d20)") },
3559+ { "PROT_EVIL", ACT_PROT_EVIL, 20, 5000, 10, {100, 0},
3560+ _("対邪悪結界(期間 3*レベル+d25)", "protect evil (dur level*3 + d25)") },
3561+ { "WRAITH", ACT_WRAITH, 40, 25000, 3, {1000, 0},
3562+ _("幽体化(期間 (レベル/2)+d(レベル/2))", "wraith form (dur level/2 + d(level/2))") },
3563+ { "INVULN", ACT_INVULN, 40, 25000, 3, {1000, 0},
3564+ _("無敵化(期間 8+d8)", "invulnerability (dur 8+d8)") },
3565+ { "RESIST_ELEC", ACT_RESIST_ELEC, 10, 2000, 80, {40, 40},
3566+ _("電撃への耐性(期間 20+d20)", "resist elec (dur 20+d20)") },
3567+ { "RESIST_ACID", ACT_RESIST_ACID, 10, 2000, 80, {40, 40},
3568+ _("酸への耐性(期間 20+d20)", "resist acid (dur 20+d20)") },
3569+ { "RESIST_FIRE", ACT_RESIST_FIRE, 10, 2000, 80, {40, 40},
3570+ _("火炎への耐性(期間 20+d20)", "resist fire (dur 20+d20)") },
3571+ { "RESIST_COLD", ACT_RESIST_COLD, 10, 2000, 80, {40, 40},
3572+ _("冷気への耐性(期間 20+d20)", "resist cold (dur 20+d20)") },
3573+ { "RESIST_POIS", ACT_RESIST_POIS, 10, 2000, 80, {40, 40},
3574+ _("毒への耐性(期間 20+d20)", "resist poison (dur 20+d20)") },
3575+ { "RESIST_ALL", ACT_RESIST_ALL, 10, 5000, 15, {111, 0},
3576+ _("全耐性(期間 20+d20)", "resist elements (dur 20+d20)") },
3577+ { "ESP", ACT_ESP, 10, 1500, 70, {100, 0},
3578+ _("テレパシー(期間 25+d30)", "telepathy (dur 25+d30)") },
3579+
3580+ { "LIGHT", ACT_LIGHT, 10, 150, 101, {10, 10},
3581+ _("イルミネーション", "light area (dam 2d15)") },
3582+ { "MAP_LIGHT", ACT_MAP_LIGHT, 10, 500, 50, {50, 50},
3583+ _("魔法の地図と光", "light (dam 2d15) & map area") },
3584+ { "DETECT_ALL", ACT_DETECT_ALL, 10, 1000, 50, {55, 55},
3585+ _("全感知", "detection") },
3586+ { "DETECT_UNIQUE", ACT_DETECT_UNIQUE, 40, 10000, 5, {200, 0},
3587+ _("この階にいるユニークモンスターを表示", "list of the uniques on the level") },
3588+ { "DETECT_XTRA", ACT_DETECT_XTRA, 20, 12500, 5, {100, 0},
3589+ _("全感知、探索、*鑑定*", "detection, probing and identify true") },
3590+ { "ID_FULL", ACT_ID_FULL, 10, 10000, 30, {75, 0},
3591+ _("*鑑定*", "identify true") },
3592+ { "ID_PLAIN", ACT_ID_PLAIN, 10, 1250, 70, {10, 0},
3593+ _("鑑定", "identify spell") },
3594+ { "RUNE_EXPLO", ACT_RUNE_EXPLO, 20, 4000, 30, {200, 0},
3595+ _("爆発のルーン", "explosive rune") },
3596+ { "RUNE_PROT", ACT_RUNE_PROT, 20, 10000, 10, {400, 0},
3597+ _("守りのルーン", "rune of protection") },
3598+ { "SATIATE", ACT_SATIATE, 10, 2000, 101, {200, 0},
3599+ _("空腹充足", "satisfy hunger") },
3600+ { "DEST_DOOR", ACT_DEST_DOOR, 20, 100, 101, {10, 0},
3601+ _("ドア破壊", "destroy doors") },
3602+ { "STONE_MUD", ACT_STONE_MUD, 10, 1000, 101, {3, 0},
3603+ _("岩石溶解", "stone to mud") },
3604+ { "RECHARGE", ACT_RECHARGE, 10, 1000, 70, {70, 0},
3605+ _("魔力充填", "recharging") },
3606+ { "ALCHEMY", ACT_ALCHEMY, 20, 10000, 70, {500, 0},
3607+ _("錬金術", "alchemy") },
3608+ { "PHASE_DOOR", ACT_PHASE_DOOR, 10, 1500, 101, {10, 0},
3609+ _("ショート・テレポート", "blink") },
3610+ { "TELEPORT", ACT_TELEPORT, 10, 2000, 101, {25, 0},
3611+ _("テレポート", "teleport") },
3612+ { "DIM_DOOR", ACT_DIM_DOOR, 20, 10000, 30, {100, 0},
3613+ _("次元の扉", "dimension door") },
3614+ { "RECALL", ACT_RECALL, 10, 7500, 80, {200, 0},
3615+ _("帰還の詔", "word of recall") },
3616+ { "ARKENSTONE", ACT_ARKENSTONE, 20, 50000, 1, {20, 20},
3617+ _("体力と引き替えに千里眼と帰還", "a telekinesis (500 lb)") },
3618+ { "TELEKINESIS", ACT_TELEKINESIS, 10, 5500, 80, {25, 25},
3619+ _("物体を引き寄せる(重量25kgまで)", "clairvoyance and recall, draining you") },
3620+ { "BRAND_FIRE_BOLTS", ACT_BRAND_FIRE_BOLTS, 20, 20000, 0, {999, 0},
3621+ _("刃先のファイア・ボルト", "fire branding of bolts") },
3622+ { "QUAKE", ACT_QUAKE, 10, 600, 101, {20, 0},
3623+ _("地震", "earthquake") },
3624+
3625+ { NULL, 0, 0, 0, 101, {0, 0},
3626+ "" }
3627+};
--- TinyAngband/trunk/src/init1.c (revision 1878)
+++ TinyAngband/trunk/src/init1.c (revision 1879)
@@ -623,94 +623,6 @@
623623 "XXX",
624624 };
625625
626-typedef struct _act_flags act_flags;
627-
628-struct _act_flags
629-{
630- cptr flag;
631- int num;
632-};
633-
634-act_flags activation_flags[] =
635-{
636- {"SUNLIGHT", 1},
637- {"BO_MISS_1", 2},
638- {"BA_POIS_1", 3},
639- {"BO_ELEC_1", 4},
640- {"BO_ACID_1", 5},
641- {"BO_COLD_1", 6},
642- {"BO_FIRE_1", 7},
643- {"BA_COLD_1", 8},
644- {"BA_FIRE_1", 9},
645- {"DRAIN_1", 10},
646- {"BA_COLD_2", 11},
647- {"BA_ELEC_2", 12},
648- {"DRAIN_2", 13},
649- {"VAMPIRE_1", 14},
650- {"BO_MISS_2", 15},
651- {"BA_FIRE_2", 16},
652- {"BA_COLD_3", 17},
653- {"BA_ELEC_3", 18},
654- {"WHIRLWIND", 19},
655- {"VAMPIRE_2", 20},
656- {"CALL_CHAOS", 21},
657- {"ROCKET", 22},
658- {"DISP_EVIL", 23},
659- {"BA_MISS_3", 24},
660- {"DISP_GOOD", 25},
661- {"CONFUSE", 51},
662- {"SLEEP", 52},
663- {"QUAKE", 53},
664- {"TERROR", 54},
665- {"TELE_AWAY", 55},
666- {"BANISH_EVIL", 56},
667- {"GENOCIDE", 57},
668- {"MASS_GENO", 58},
669- {"CHARM_ANIMAL", 65},
670- {"CHARM_UNDEAD", 66},
671- {"CHARM_OTHER", 67},
672- {"CHARM_ANIMALS", 68},
673- {"CHARM_OTHERS", 69},
674- {"SUMMON_ANIMAL", 70},
675- {"SUMMON_PHANTOM", 71},
676- {"SUMMON_ELEMENTAL", 72},
677- {"SUMMON_DEMON", 73},
678- {"SUMMON_UNDEAD", 74},
679- {"CURE_LW", 81},
680- {"CURE_MW", 82},
681- {"CURE_POISON", 83},
682- {"REST_LIFE", 84},
683- {"REST_ALL", 85},
684- {"CURE_700", 86},
685- {"CURE_1000", 87},
686- {"CURING", 88},
687- {"ESP", 91},
688- {"BERSERK", 92},
689- {"PROT_EVIL", 93},
690- {"RESIST_ALL", 94},
691- {"SPEED", 95},
692- {"XTRA_SPEED", 96},
693- {"WRAITH", 97},
694- {"INVULN", 98},
695- {"LIGHT", 111},
696- {"MAP_LIGHT", 112},
697- {"DETECT_ALL", 113},
698- {"DETECT_XTRA", 114},
699- {"ID_FULL", 115},
700- {"ID_PLAIN", 116},
701- {"RUNE_EXPLO", 117},
702- {"RUNE_PROT", 118},
703- {"SATIATE", 119},
704- {"DEST_DOOR", 120},
705- {"STONE_MUD", 121},
706- {"RECHARGE", 122},
707- {"ALCHEMY", 123},
708- {"DIM_DOOR", 124},
709- {"TELEPORT", 125},
710- {"RECALL", 126},
711- {"", 0},
712-};
713-
714626 /*
715627 * Add a text to the text-storage and store offset to it.
716628 *
@@ -1318,6 +1230,36 @@
13181230
13191231
13201232 /*
1233+ * Grab one activation index flag
1234+ */
1235+static int grab_one_activation_flag(cptr what)
1236+{
1237+ int i;
1238+
1239+ for (i = 0; ; i++)
1240+ {
1241+ if (activation_info[i].flag == NULL) break;
1242+
1243+ if (streq(what, activation_info[i].flag))
1244+ {
1245+ return activation_info[i].index;
1246+ }
1247+ }
1248+
1249+ i = atoi(what);
1250+ if (i > 0)
1251+ {
1252+ return (i);
1253+ }
1254+
1255+ /* Oops */
1256+ msg_format(_("未知の発動・フラグ '%s'。", "Unknown activation flag '%s'."), what);
1257+
1258+ /* Error */
1259+ return (0);
1260+}
1261+
1262+/*
13211263 * Initialize the "k_info" array, by parsing an ascii "template" file
13221264 */
13231265 errr parse_k_info(char *buf, header *head)
@@ -1542,6 +1484,20 @@
15421484 k_ptr->to_a = ta;
15431485 }
15441486
1487+ /* Hack -- Process 'U' for activation index */
1488+ else if (buf[0] == 'U')
1489+ {
1490+ int n = grab_one_activation_flag(buf + 2);
1491+ if (n > 0)
1492+ {
1493+ k_ptr->activate = n;
1494+ }
1495+ else
1496+ {
1497+ return (5);
1498+ }
1499+ }
1500+
15451501 /* Hack -- Process 'F' for flags */
15461502 else if (buf[0] == 'F')
15471503 {
@@ -1637,41 +1593,6 @@
16371593
16381594
16391595 /*
1640- * Grab one flag in an artifact activation type from a textual string
1641- */
1642-static int grab_one_activation_flag(cptr what)
1643-{
1644- int i;
1645-
1646- /* Check flags */
1647- for (i = 0; activation_flags[i].num != 0; i++)
1648- {
1649- if (streq(what, activation_flags[i].flag))
1650- {
1651- return (activation_flags[i].num);
1652- }
1653- }
1654-
1655- i = atoi(what);
1656-
1657- if (i && (i < 128))
1658- {
1659- return (i);
1660- }
1661-
1662- /* Oops */
1663-#ifdef JP
1664- msg_format("未知のアイテム発動・フラグ '%s'。", what);
1665-#else
1666- msg_format("Unknown activation flag '%s'.", what);
1667-#endif
1668-
1669- /* Error */
1670- return (-1);
1671-}
1672-
1673-
1674-/*
16751596 * Initialize the "a_info" array, by parsing an ascii "template" file
16761597 */
16771598 errr parse_a_info(char *buf, header *head)
@@ -1840,16 +1761,20 @@
18401761 }
18411762 }
18421763
1843- /* Hack -- Process 'A' for activation */
1844- else if (buf[0] == 'A')
1764+ /* Hack -- Process 'U' for activation index */
1765+ else if (buf[0] == 'U')
18451766 {
1846- s = buf + 2;
1847- i = grab_one_activation_flag(s);
1848- if (-1 == i) return (5);
1849- else a_ptr->activate = i;
1767+ int n = grab_one_activation_flag(buf + 2);
1768+ if (n > 0)
1769+ {
1770+ a_ptr->activate = n;
1771+ }
1772+ else
1773+ {
1774+ return (5);
1775+ }
18501776 }
18511777
1852-
18531778 /* Oops */
18541779 else return (6);
18551780
@@ -2079,13 +2004,18 @@
20792004 }
20802005 }
20812006
2082- /* Hack -- Process 'A' for activation */
2083- else if (buf[0] == 'A')
2007+ /* Hack -- Process 'U' for activation index */
2008+ else if (buf[0] == 'U')
20842009 {
2085- s = buf + 2;
2086- i = grab_one_activation_flag(s);
2087- if (-1 == i) return (5);
2088- else e_ptr->activate = i;
2010+ int n = grab_one_activation_flag(buf + 2);
2011+ if (n > 0)
2012+ {
2013+ e_ptr->activate = n;
2014+ }
2015+ else
2016+ {
2017+ return (5);
2018+ }
20892019 }
20902020
20912021 /* Oops */
--- TinyAngband/trunk/src/externs.h (revision 1878)
+++ TinyAngband/trunk/src/externs.h (revision 1879)
@@ -96,6 +96,7 @@
9696 #endif
9797 extern mbe_info_type mbe_info[];
9898 extern valar_type valar_info[MAX_PATRON];
99+extern const activation_type activation_info[];
99100
100101 /* variable.c */
101102 extern cptr copyright[5];
@@ -1236,6 +1237,8 @@
12361237 extern void one_slay(object_type *o_ptr);
12371238 extern void give_activation_power(object_type *o_ptr);
12381239 extern bool create_artifact(object_type *o_ptr, bool a_scroll);
1240+extern int activation_index(const object_type *o_ptr);
1241+extern const activation_type* find_activation_info(const object_type *o_ptr);
12391242 extern bool activate_random_artifact(object_type * o_ptr);
12401243 extern void random_artifact_resistance(object_type * o_ptr, artifact_type *a_ptr);
12411244 extern void create_named_art(int a_idx, int y, int x);
Afficher sur ancien navigateur de dépôt.