X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fobject1.c;h=5659ec898cbbac4707f8802b0a863a25d3e44384;hb=e4789bde97c287e93a7d0ab309d8feae6d21b858;hp=37216df8da361e89ade85d41967e8666c7ba3511;hpb=6a3720a0a1d5a23a4774bef037191669506701bd;p=hengband%2Fhengband.git diff --git a/src/object1.c b/src/object1.c index 37216df8d..5659ec898 100644 --- a/src/object1.c +++ b/src/object1.c @@ -330,908 +330,150 @@ void object_flags_known(object_type *o_ptr, u32b flgs[TR_FLAG_SIZE]) } -/* - * Determine the "Activation" (if any) for an artifact - * Return a string, or NULL for "no activation" - */ -cptr item_activation(object_type *o_ptr) +static cptr item_activation_dragon_breath(object_type *o_ptr) { - u32b flgs[TR_FLAG_SIZE]; + static char desc[256]; + u32b flgs[4]; /* for resistance flags */ + int i, n = 0; - /* Extract the flags */ object_flags(o_ptr, flgs); + strcpy(desc, _("", "breath ")); - /* Require activation ability */ -#ifdef JP - if (!(have_flag(flgs, TR_ACTIVATE))) return ("¤Ê¤·"); -#else - if (!(have_flag(flgs, TR_ACTIVATE))) return ("nothing"); -#endif - - /* - * We need to deduce somehow that it is a random artifact -- one - * problem: It could be a random artifact which has NOT YET received - * a name. Thus we eliminate other possibilities instead of checking - * for art_name - */ - - if (object_is_fixed_artifact(o_ptr)) - { - if (!o_ptr->xtra2) o_ptr->xtra2 = a_info[o_ptr->name1].act_idx; - } - - if ((object_is_artifact(o_ptr) || object_is_ego(o_ptr)) && - (o_ptr->xtra2)) - { - switch (o_ptr->xtra2) - { -#ifdef JP - /* General activation */ - - case ACT_SUNLIGHT: - return "ÂÀÍÛ¸÷Àþ : 10 ¥¿¡¼¥óËè"; - case ACT_BO_MISS_1: - return "¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë(2d6) : 2 ¥¿¡¼¥óËè"; - case ACT_BA_POIS_1: - return "°­½­±À (12) : 4+d4 ¥¿¡¼¥óËè"; - case ACT_BO_ELEC_1: - return "¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È(4d8) : 5+d5 ¥¿¡¼¥óËè"; - case ACT_BO_ACID_1: - return "¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È(5d8) : 6+d6 ¥¿¡¼¥óËè"; - case ACT_BO_COLD_1: - return "¥¢¥¤¥¹¡¦¥Ü¥ë¥È(6d8) : 7+d7 ¥¿¡¼¥óËè"; - case ACT_BO_FIRE_1: - return "¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È(9d8) : 8+d8 ¥¿¡¼¥óËè"; - case ACT_BA_COLD_1: - return "¥¢¥¤¥¹¡¦¥Ü¡¼¥ë (48) : 6+d6 ¥¿¡¼¥óËè"; - case ACT_BA_FIRE_1: - return "¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë (72) : 9+d9 ¥¿¡¼¥óËè"; - case ACT_DRAIN_1: - return "Ã⩹¶·â(100) : 100+d100 ¥¿¡¼¥óËè"; - case ACT_BA_COLD_2: - return "¥¢¥¤¥¹¡¦¥Ü¡¼¥ë (100) : 12+d12 ¥¿¡¼¥óËè"; - case ACT_BA_ELEC_2: - return "¥µ¥ó¥À¡¼¡¦¥Ü¡¼¥ë (100) : 12+d12 ¥¿¡¼¥óËè"; - case ACT_DRAIN_2: - return "À¸Ì¿Îϵۼý(120) : 400 ¥¿¡¼¥óËè"; - case ACT_VAMPIRE_1: - return "µÛ·ì¥É¥ì¥¤¥ó (3*50) : 400 ¥¿¡¼¥óËè"; - case ACT_BO_MISS_2: - return "Ìð (150) : 90+d90 ¥¿¡¼¥óËè"; - case ACT_BA_FIRE_3: - return "µðÂç¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë (300) : 225+d225 ¥¿¡¼¥óËè"; - case ACT_BA_COLD_3: - return "µðÂ祢¥¤¥¹¡¦¥Ü¡¼¥ë (400) : 325+d325 ¥¿¡¼¥óËè"; - case ACT_BA_ELEC_3: - return "µðÂ祵¥ó¥À¡¼¡¦¥Ü¡¼¥ë (500) : 425+d425 ¥¿¡¼¥óËè"; - case ACT_WHIRLWIND: - return "¥«¥Þ¥¤¥¿¥Á : 250 ¥¿¡¼¥óËè"; - case ACT_VAMPIRE_2: - return "µÛ·ì¥É¥ì¥¤¥ó (3*100) : 400 ¥¿¡¼¥óËè"; - case ACT_CALL_CHAOS: - return "º®ÆÙ¾¤Íè : 350 ¥¿¡¼¥óËè"; /*nuke me*/ - case ACT_ROCKET: - return "¥í¥±¥Ã¥È (120+level) : 400 ¥¿¡¼¥óËè"; - case ACT_DISP_EVIL: - return "¼Ù°­Â໶ (x5) : 100+d100 ¥¿¡¼¥óËè"; - case ACT_BA_MISS_3: - return "¥¨¥ì¥á¥ó¥È¤Î¥Ö¥ì¥¹ (300) : 500 ¥¿¡¼¥óËè"; - case ACT_DISP_GOOD: - return "Á±ÎÉÂ໶ (x5) : 100+d100 ¥¿¡¼¥óËè"; - case ACT_BO_MANA: - return "ËâË¡¤ÎÌð(150) : 90+d90 ¥¿¡¼¥óËè"; - case ACT_BA_FIRE_2: - return "µðÂç¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë(120) : 15 ¥¿¡¼¥óËè"; - case ACT_BA_WATER: - return "¥¦¥©¡¼¥¿¡¼¡¦¥Ü¡¼¥ë(200) : 250 ¥¿¡¼¥óËè"; - case ACT_BA_STAR: - return "µðÂ祹¥¿¡¼¡¦¥Ü¡¼¥ë(200) : 200+d200 ¥¿¡¼¥óËè"; - case ACT_BA_DARK: - return "°Å¹õ¤ÎÍò(250) : 150+d150 ¥¿¡¼¥óËè"; - case ACT_BA_MANA: - return "ËâÎϤÎÍò(400) : 250+d250¥¿¡¼¥óËè"; - case ACT_PESTICIDE: - return "³²Ãî¤Î¶î½ü : 55+d55¥¿¡¼¥óËè"; - case ACT_BLINDING_LIGHT: - return "âÁ¤·¤¤¸÷ : 250 ¥¿¡¼¥óËè"; - case ACT_CONFUSE: - return "¥Ñ¥Ë¥Ã¥¯¡¦¥â¥ó¥¹¥¿¡¼ : 15 ¥¿¡¼¥óËè"; - case ACT_SLEEP: - return "¼þ°Ï¤Î¥â¥ó¥¹¥¿¡¼¤ò̲¤é¤»¤ë : 55 ¥¿¡¼¥óËè"; - case ACT_QUAKE: - return "ÃÏ¿Ì (Ⱦ·Â 10) : 50 ¥¿¡¼¥óËè"; - case ACT_TERROR: - return "¶²¹² : 3 * (level+10) ¥¿¡¼¥óËè"; - case ACT_TELE_AWAY: - return "¥Æ¥ì¥Ý¡¼¥È¡¦¥¢¥¦¥§¥¤ : 150 ¥¿¡¼¥óËè"; - case ACT_BANISH_EVIL: - return "¼Ù°­¾ÃÌÇ : 250+d250 ¥¿¡¼¥óËè"; - case ACT_GENOCIDE: - return "Ëõ»¦ : 500 ¥¿¡¼¥óËè"; - case ACT_MASS_GENO: - return "¼þÊÕËõ»¦ : 1000 ¥¿¡¼¥óËè"; - case ACT_CHARM_ANIMAL: - return "ưʪ̥λ : 200 ¥¿¡¼¥óËè"; - case ACT_CHARM_UNDEAD: - return "¥¢¥ó¥Ç¥Ã¥É½¾Â° : 333 ¥¿¡¼¥óËè"; - case ACT_CHARM_OTHER: - return "¥â¥ó¥¹¥¿¡¼Ì¥Î» : 400 ¥¿¡¼¥óËè"; - case ACT_CHARM_ANIMALS: - return "ưʪͧÏ : 500 ¥¿¡¼¥óËè"; - case ACT_CHARM_OTHERS: - return "¼þÊÕ̥λ : 750 ¥¿¡¼¥óËè"; - case ACT_SUMMON_ANIMAL: - return "ưʪ¾¤´­ : 200+d300 ¥¿¡¼¥óËè"; - case ACT_SUMMON_PHANTOM: - return "¸¸Î´­ : 200+d200 ¥¿¡¼¥óËè"; - case ACT_SUMMON_ELEMENTAL: - return "¥¨¥ì¥á¥ó¥¿¥ë¾¤´­ : 750 ¥¿¡¼¥óËè"; - case ACT_SUMMON_DEMON: - return "°­Ë⾤´­ : 666+d333 ¥¿¡¼¥óËè"; - case ACT_SUMMON_UNDEAD: - return "¥¢¥ó¥Ç¥Ã¥É¾¤´­ : 666+d333 ¥¿¡¼¥óËè"; - case ACT_CHOIR_SINGS: - return "²óÉü (777)¡¢Ìþ¤·¡¢»Îµ¤¹âÍÈ : 300 ¥¿¡¼¥óËè"; - case ACT_CURE_LW: - return "¶²Éݽüµî/ÂÎÎϲóÉü(30) : 10 ¥¿¡¼¥óËè"; - case ACT_CURE_MW: - return "½ý²óÉü(4d8) : 3+d3 ¥¿¡¼¥óËè"; - case ACT_CURE_POISON: - return "¶²Éݽüµî/ÆǾä· : 5 ¥¿¡¼¥óËè"; - case ACT_REST_LIFE: - return "·Ð¸³ÃÍÉü³è : 450 ¥¿¡¼¥óËè"; - case ACT_REST_ALL: - return "Á´¥¹¥Æ¡¼¥¿¥¹¤È·Ð¸³ÃÍÉü³è : 750 ¥¿¡¼¥óËè"; - case ACT_CURE_700: - return "ÂÎÎϲóÉü(700) : 250 ¥¿¡¼¥óËè"; - case ACT_CURE_1000: - return "ÂÎÎϲóÉü(1000) : 888 ¥¿¡¼¥óËè"; - case ACT_CURING: - return "Ìþ¤· : 100¥¿¡¼¥óËè"; - case ACT_CURE_MANA_FULL: - return "ËâÎÏÉü³è: 777 ¥¿¡¼¥óËè"; - case ACT_ESP: - return "¥Æ¥ì¥Ñ¥·¡¼ (´ü´Ö 25+d30) : 200 ¥¿¡¼¥óËè"; - case ACT_BERSERK: - return "»Îµ¤¹âÍȤȽËÊ¡ (´ü´Ö 50+d50) : 100+d100 ¥¿¡¼¥óËè"; - case ACT_PROT_EVIL: - return "Âмٰ­·ë³¦ (´ü´Ö level*3 + d25) : 200+d200 ¥¿¡¼¥óËè"; - case ACT_RESIST_ALL: - return "Á´ÂÑÀ­ (´ü´Ö 20+d20) : 111 ¥¿¡¼¥óËè"; - case ACT_SPEED: - return "²Ã® (´ü´Ö 20+d20) : 250 ¥¿¡¼¥óËè"; - case ACT_XTRA_SPEED: - return "²Ã® (´ü´Ö 75+d75) : 200+d200 ¥¿¡¼¥óËè"; - case ACT_WRAITH: - return "Í©Âβ½ (´ü´Ö level/2 + d(level/2)) : 1000 ¥¿¡¼¥óËè"; - case ACT_INVULN: - return "̵Ũ²½ (´ü´Ö 8+d8) : 1000 ¥¿¡¼¥óËè"; - case ACT_HELO: - return "»Îµ¤¹âÍÈ : 30+d30¥¿¡¼¥óËè"; - case ACT_HELO_SPEED: - return "»Îµ¤¹âÍÈ, ¥¹¥Ô¡¼¥É(50+d50¥¿¡¼¥ó) : 100+d200 ¥¿¡¼¥óËè"; - case ACT_LIGHT: - return "¥¤¥ë¥ß¥Í¡¼¥·¥ç¥ó : 10+d10 ¥¿¡¼¥óËè"; - case ACT_MAP_LIGHT: - return "ËâË¡¤ÎÃϿޤȸ÷ : 50+d50 ¥¿¡¼¥óËè"; - case ACT_DETECT_ALL: - return "Á´´¶ÃÎ : 55+d55 ¥¿¡¼¥óËè"; - case ACT_DETECT_XTRA: - return "Á´´¶ÃΡ¢Ãµº÷¡¢*´ÕÄê* : 100 ¥¿¡¼¥óËè"; - case ACT_ID_FULL: - return "*´ÕÄê* : 75 ¥¿¡¼¥óËè"; - case ACT_ID_PLAIN: - return "´ÕÄê : 10 ¥¿¡¼¥óËè"; - case ACT_RUNE_EXPLO: - return "Çúȯ¤Î¥ë¡¼¥ó : 200 ¥¿¡¼¥óËè"; - case ACT_RUNE_PROT: - return "¼é¤ê¤Î¥ë¡¼¥ó : 400 ¥¿¡¼¥óËè"; - case ACT_SATIATE: - return "¶õÊ¢½¼Â­ : 200 ¥¿¡¼¥óËè"; - case ACT_DEST_DOOR: - return "¥É¥¢Ç˲õ : 10 ¥¿¡¼¥óËè"; - case ACT_STONE_MUD: - return "´äÀÐÍϲò : 3 ¥¿¡¼¥óËè"; - case ACT_RECHARGE: - return "ËâÎϽ¼Å¶ : 70 ¥¿¡¼¥óËè"; - case ACT_ALCHEMY: - return "Ï£¶â½Ñ : 500 ¥¿¡¼¥óËè"; - case ACT_DIM_DOOR: - return "¼¡¸µ¤ÎÈâ : 100 ¥¿¡¼¥óËè"; - case ACT_TELEPORT: - return "¥Æ¥ì¥Ý¡¼¥È (range 100) : 25 ¥¿¡¼¥óËè"; - case ACT_RECALL: - return "µ¢´Ô¤Î¾Û : 200 ¥¿¡¼¥óËè"; - case ACT_TELEKINESIS: - return "ʪÂΤò°ú¤­´ó¤»¤ë(½ÅÎÌ25kg¤Þ¤Ç) : 25+d25¥¿¡¼¥óËè"; - case ACT_DETECT_UNIQUE: - return "¤³¤Î³¬¤Ë¤¤¤ë¥æ¥Ë¡¼¥¯¥â¥ó¥¹¥¿¡¼¤òɽ¼¨ : 200¥¿¡¼¥óËè"; - - /* Unique activation */ - case ACT_BRAND_FIRE_BOLTS: - return "¿ÏÀè¤Î¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È : 999 ¥¿¡¼¥óËè"; - case ACT_JUDGE: - return "ÂÎÎϤȰú¤­Âؤ¨¤ËÀéΤ´ã¤Èµ¢´Ô : 20+d20 ¥¿¡¼¥óËè"; - case ACT_BIZARRE: - return "¿®¤¸Æñ¤¤¤³¤È : 450+d450 ¥¿¡¼¥óËè"; - - default: - return "̤ÄêµÁ"; -#else - /* General activation */ - - case ACT_SUNLIGHT: - return "beam of sunlight every 10 turns"; - case ACT_BO_MISS_1: - return "magic missile (2d6) every 2 turns"; - case ACT_BA_POIS_1: - return "stinking cloud (12) every 4+d4 turns"; - case ACT_BO_ELEC_1: - return "lightning bolt (4d8) every 5+d5 turns"; - case ACT_BO_ACID_1: - return "acid bolt (5d8) every 6+d6 turns"; - case ACT_BO_COLD_1: - return "frost bolt (6d8) every 7+d7 turns"; - case ACT_BO_FIRE_1: - return "fire bolt (9d8) every 8+d8 turns"; - case ACT_BA_COLD_1: - return "ball of cold (48) every 6+d6 turns"; - case ACT_BA_FIRE_1: - return "ball of fire (72) every 9+d9 turns"; - case ACT_DRAIN_1: - return "a strangling attack (100) every 100+d100 turns"; - case ACT_BA_COLD_2: - return "ball of cold (100) every 12+d12 turns"; - case ACT_BA_ELEC_2: - return "ball of lightning (100) every 12+d12 turns"; - case ACT_DRAIN_2: - return "drain life (120) every 400 turns"; - case ACT_VAMPIRE_1: - return "vampiric drain (3*50) every 400 turns"; - case ACT_BO_MISS_2: - return "arrows (150) every 90+d90 turns"; - case ACT_BA_FIRE_2: - return "fire ball (300) every 225+d225 turns"; - case ACT_BA_COLD_3: - return "ball of cold (400) every 325+d325 turns"; - case ACT_BA_ELEC_3: - return "ball of lightning (500) every 425+d425 turns"; - case ACT_WHIRLWIND: - return "whirlwind attack every 250 turns"; - case ACT_VAMPIRE_2: - return "vampiric drain (3*100) every 400 turns"; - case ACT_CALL_CHAOS: - return "call chaos every 350 turns"; - case ACT_ROCKET: - return "launch rocket (120+level) every 400 turns"; - case ACT_DISP_EVIL: - return "dispel evil (x5) every 100+d100 turns"; - case ACT_BA_MISS_3: - return "elemental breath (300) every 500 turns"; - case ACT_DISP_GOOD: - return "dispel good (x5) every 100+d100 turns"; - case ACT_BO_MANA: - return "a magical arrow (150) every 90+d90 turns"; - case ACT_BA_FIRE_2: - return "large fire ball (120) every 15 turns"; - case ACT_BA_WATER: - return "water ball (200) every 250 turns"; - case ACT_BA_STAR: - return "large star ball (200) every 200+d200 turns"; - case ACT_BA_DARK: - return "darkness storm (250) every 150+d150 turns"; - case ACT_BA_MANA: - return "a mana storm every 250+d250 turns"; - case ACT_PESTICIDE: - return "dispel small life every 55+d55 turns"; - case ACT_BLINDING_LIGHT: - return "blinding light every 250 turns"; - case ACT_CONFUSE: - return "confuse monster every 15 turns"; - case ACT_SLEEP: - return "sleep nearby monsters every 55 turns"; - case ACT_QUAKE: - return "earthquake (rad 10) every 50 turns"; - case ACT_TERROR: - return "terror every 3 * (level+10) turns"; - case ACT_TELE_AWAY: - return "teleport away every 200 turns"; - case ACT_BANISH_EVIL: - return "banish evil every 250+d250 turns"; - case ACT_GENOCIDE: - return "genocide every 500 turns"; - case ACT_MASS_GENO: - return "mass genocide every 1000 turns"; - case ACT_CHARM_ANIMAL: - return "charm animal every 200 turns"; - case ACT_CHARM_UNDEAD: - return "enslave undead every 333 turns"; - case ACT_CHARM_OTHER: - return "charm monster every 400 turns"; - case ACT_CHARM_ANIMALS: - return "animal friendship every 500 turns"; - case ACT_CHARM_OTHERS: - return "mass charm every 750 turns"; - case ACT_SUMMON_ANIMAL: - return "summon animal every 200+d300 turns"; - case ACT_SUMMON_PHANTOM: - return "summon phantasmal servant every 200+d200 turns"; - case ACT_SUMMON_ELEMENTAL: - return "summon elemental every 750 turns"; - case ACT_SUMMON_DEMON: - return "summon demon every 666+d333 turns"; - case ACT_SUMMON_UNDEAD: - return "summon undead every 666+d333 turns"; - case ACT_CHOIR_SINGS: - return "heal 777 hit points, curing and heloism every 300 turns"; - case ACT_CURE_LW: - return "remove fear and heal 30 hp every 10 turns"; - case ACT_CURE_MW: - return "heal 4d8 and wounds every 3+d3 turns"; - case ACT_CURE_POISON: - return "remove fear and cure poison every 5 turns"; - case ACT_REST_LIFE: - return "restore life levels every 450 turns"; - case ACT_REST_ALL: - return "restore stats and life levels every 750 turns"; - case ACT_CURE_700: - return "heal 700 hit points every 250 turns"; - case ACT_CURE_1000: - return "heal 1000 hit points every 888 turns"; - case ACT_CURING: - return "curing every 100 turns"; - case ACT_CURE_MANA_FULL: - return "restore mana every 777 turns"; - case ACT_ESP: - return "telepathy (dur 25+d30) every 200 turns"; - case ACT_BERSERK: - return "heroism and blessed (dur 50+d50) every 100+d100 turns"; - case ACT_PROT_EVIL: - return "protect evil (dur level*3 + d25) every 200+d200 turns"; - case ACT_RESIST_ALL: - return "resist elements (dur 20+d20) every 111 turns"; - case ACT_SPEED: - return "speed (dur 20+d20) every 100+d100 turns"; - case ACT_XTRA_SPEED: - return "speed (dur 75+d75) every 100+d100 turns"; - case ACT_WRAITH: - return "wraith form (dur level/2 + d(level/2)) every 1000 turns"; - case ACT_INVULN: - return "invulnerability (dur 8+d8) every 1000 turns"; - case ACT_HELO: - return "heroism every 30+d30 turns"; - case ACT_HELO_SPEED: - return "hero and +10 to speed (50) every 100+200d turns"; - case ACT_RESIST_ACID: - return "resist acid (dur 20+d20) every 40+d40 turns"; - case ACT_RESIST_FIRE: - return "resist fire (dur 20+d20) every 40+d40 turns"; - case ACT_RESIST_COLD: - return "resist cold (dur 20+d20) every 40+d40 turns"; - case ACT_RESIST_ELEC: - return "resist thunder (dur 20+d20) every 40+d40 turns"; - case ACT_RESIST_POIS: - return "resist poison (dur 20+d20) every 40+d40 turns"; - case ACT_LIGHT: - return "light area (dam 2d15) every 10+d10 turns"; - case ACT_MAP_LIGHT: - return "light (dam 2d15) & map area every 50+d50 turns"; - case ACT_DETECT_ALL: - return "detection every 55+d55 turns"; - case ACT_DETECT_XTRA: - return "detection, probing and identify true every 100 turns"; - case ACT_ID_FULL: - return "identify true every 75 turns"; - case ACT_ID_PLAIN: - return "identify spell every 10 turns"; - case ACT_RUNE_EXPLO: - return "explosive rune every 200 turns"; - case ACT_RUNE_PROT: - return "rune of protection every 400 turns"; - case ACT_SATIATE: - return "satisfy hunger every 200 turns"; - case ACT_DEST_DOOR: - return "destroy doors every 10 turns"; - case ACT_STONE_MUD: - return "stone to mud every 3 turns"; - case ACT_RECHARGE: - return "recharging every 70 turns"; - case ACT_ALCHEMY: - return "alchemy every 500 turns"; - case ACT_DIM_DOOR: - return "dimension door every 100 turns"; - case ACT_TELEPORT: - return "teleport (range 100) every 25 turns"; - case ACT_RECALL: - return "word of recall every 200 turns"; - case ACT_TELEKINESIS: - return "a telekinesis (500 lb) every 25+d25 turns"; - case ACT_DETECT_UNIQUE: - return "list of the uniques on the level every 200 turns"; - - /* Unique activation */ - case ACT_BRAND_FIRE_BOLTS: - return "fire branding of bolts every 999 turns"; - case ACT_JUDGE: - return "clairvoyance and recall, draining you every 20+d20 turns"; - case ACT_BIZARRE: - return "bizarre things every 450+d450 turns"; - - default: - return "something undefined"; -#endif - } - } - - /* Some artifacts can be activated */ - switch (o_ptr->name1) + for (i = 0; dragonbreath_info[i].flag != 0; i++) { - case ART_DAWN: - { -#ifdef JP - return "¶Ç¤Î»ÕÃľ¤´­ : 500+d500 ¥¿¡¼¥óËè"; -#else - return "summon the Legion of the Dawn every 500+d500 turns"; -#endif - } - case ART_CRIMSON: + if (have_flag(flgs, dragonbreath_info[i].flag)) { -#ifdef JP - return "¥Õ¥¡¥¤¥¢¡ª : 15 ¥¿¡¼¥óËè"; -#else - return "fire! every 15 turns"; -#endif - } - case ART_KUSANAGI: - case ART_WEREWINDLE: - { -#ifdef JP - return "ƨÁö : 35 ¥¿¡¼¥óËè"; -#else - return "a getaway every 35 turns"; -#endif - } - case ART_RAZORBACK: - { -#ifdef JP - return "¥¹¥¿¡¼¡¦¥Ü¡¼¥ë¡¦¥À¥¹¥È(150) : 1000 ¥¿¡¼¥óËè"; -#else - return "star balls (150) every 1000 turns"; -#endif - } - case ART_BLADETURNER: - { -#ifdef JP - return "¥¨¥ì¥á¥ó¥È¤Î¥Ö¥ì¥¹ (300), »Îµ¤¹âÍÈ¡¢½ËÊ¡¡¢ÂÑÀ­"; -#else - return "breathe elements (300), hero, bless, and resistance"; -#endif - } - case ART_STONE_LORE: - { -#ifdef JP - return "´í¸±¤òȼ¤¦´ÕÄê : ¤¤¤Ä¤Ç¤â"; -#else - return "perilous identify every turn"; -#endif - } - case ART_BOROMIR: - { -#ifdef JP - return "¥â¥ó¥¹¥¿¡¼¶²¹² : 40+d40¥¿¡¼¥óËè"; -#else - return "frighten monsters every 40+d40 turns"; -#endif - } - case ART_YENDOR: - { -#ifdef JP - return "ËâÎϽ¼Å¶ : 200 ¥¿¡¼¥óËè"; -#else - return "recharge item every 200 turns"; -#endif - } - case ART_MURAMASA: - { -#ifdef JP - return "ÏÓÎϤξ徺 : ³ÎΨ50%¤Ç²õ¤ì¤ë"; -#else - return "increase STR (destroyed 50%)"; -#endif - } - case ART_INROU: - { -#ifdef JP - return "Îã¤Î¥¢¥ì : 150+d150 ¥¿¡¼¥óËè"; -#else - return "reveal your identity every 150+d150 turns"; -#endif - } - case ART_HYOUSIGI: - { -#ifdef JP - return "Çï»ÒÌÚ¤òÂǤÁ¤Ê¤é¤¹ : ¤¤¤Ä¤Ç¤â"; -#else - return "beat wooden clappers every turn"; -#endif - } - case ART_BLOOD: - { -#ifdef JP - return "°À­Êѹ¹ : 3333 ¥¿¡¼¥óËè"; -#else - return "change zokusei every 3333 turns"; -#endif - - } - case ART_KESHO: - { -#ifdef JP - return "»Í¸ÔƧ¤ß : 100+d100¥¿¡¼¥óËè"; -#else - return "shiko every 100+d100 turns"; -#endif - - } - case ART_MOOK: - { -#ifdef JP - return "Î䵤¤ÎÂÑÀ­ : 40+d40¥¿¡¼¥óËè"; -#else - return "resist cold every 40+d40 turns"; -#endif - - } - case ART_JIZO: - { -#ifdef JP - return "Âý¤ÎÂç·²¾¤´­ : 300+d150¥¿¡¼¥óËè"; -#else - return "summon octopus every 300+d150 turns"; -#endif - } - case ART_SACRED_KNIGHTS: - { -#ifdef JP - return "*²ò¼ö*¤ÈÄ´ºº: ¤¤¤Ä¤Ç¤â"; -#else - return "dispel curse and probing every turn"; -#endif - + if (n > 0) strcat(desc, _("¡¢", ", ")); + strcat(desc, dragonbreath_info[i].name); + n++; } } + strcat(desc, _("¤Î¥Ö¥ì¥¹(250)", "")); - if ((o_ptr->tval == TV_POLEARM) && (o_ptr->sval == SV_TSURIZAO)) - { -#ifdef JP - return "Äà¤ê¤ò¤¹¤ë : ¤¤¤Ä¤Ç¤â"; -#else - return "fishing : every time"; -#endif - } - - if (object_is_smith(o_ptr)) - { - switch (o_ptr->xtra3 - 1) - { - case ESSENCE_TMP_RES_ACID: -#ifdef JP - return "»À¤Ø¤ÎÂÑÀ­ : 50+d50¥¿¡¼¥óËè"; -#else - return "resist acid every 50+d50 turns"; -#endif - - case ESSENCE_TMP_RES_ELEC: -#ifdef JP - return "ÅÅ·â¤Ø¤ÎÂÑÀ­ : 50+d50¥¿¡¼¥óËè"; -#else - return "resist elec every 50+d50 turns"; -#endif - - case ESSENCE_TMP_RES_FIRE: -#ifdef JP - return "²Ð¤Ø¤ÎÂÑÀ­ : 50+d50¥¿¡¼¥óËè"; -#else - return "resist fire every 50+d50 turns"; -#endif - - case ESSENCE_TMP_RES_COLD: -#ifdef JP - return "Î䵤¤Ø¤ÎÂÑÀ­ : 50+d50¥¿¡¼¥óËè"; -#else - return "resist cold every 50+d50 turns"; -#endif + return (desc); +} - case TR_IMPACT: -#ifdef JP - return "ÃÏ¿Ì : 100+d100 ¥¿¡¼¥óËè"; -#else - return "earthquake every 100+d100 turns"; -#endif - } - } +static cptr item_activation_aux(object_type *o_ptr) +{ + static char activation_detail[256]; + cptr desc; + char timeout[32]; + int constant, dice; + const activation_type* const act_ptr = find_activation_info(o_ptr); - if (o_ptr->name2 == EGO_TRUMP) - { -#ifdef JP -return "¥Æ¥ì¥Ý¡¼¥È : 50+d50 ¥¿¡¼¥óËè"; -#else - return "teleport every 50+d50 turns"; -#endif + if (!act_ptr) return _("̤ÄêµÁ", "something undefined"); - } + desc = act_ptr->desc; - if (o_ptr->name2 == EGO_LITE_ILLUMINATION) - { -#ifdef JP -return "¥¤¥ë¥ß¥Í¡¼¥·¥ç¥ó : 10+d10 ¥¿¡¼¥óËè"; -#else - return "illumination every 10+d10 turns"; -#endif + /* Overwrite description if it is special */ + switch (act_ptr->index) { + case ACT_BR_FIRE: + if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_FLAMES)) + desc = _("²Ð±ê¤Î¥Ö¥ì¥¹ (200) ¤È²Ð¤Ø¤ÎÂÑÀ­", "breath of fire (200) and resist fire"); + break; + case ACT_BR_COLD: + if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ICE)) + desc = _("Î䵤¤Î¥Ö¥ì¥¹ (200) ¤ÈÎ䵤¤Ø¤ÎÂÑÀ­", "breath of cold (200) and resist cold"); + break; + case ACT_BR_DRAGON: + desc = item_activation_dragon_breath(o_ptr); + break; + case ACT_AGGRAVATE: + if (o_ptr->name1 == ART_HYOUSIGI) + desc = _("Çï»ÒÌÚ¤òÂǤÁ¤Ê¤é¤¹", "beat wooden clappers"); + break; + case ACT_RESIST_ACID: + if (((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ACID)) || (o_ptr->name2 == EGO_BRAND_ACID)) + desc = _("¥¢¥·¥Ã¥É¡¦¥Ü¡¼¥ë (100) ¤È»À¤Ø¤ÎÂÑÀ­", "ball of acid (100) and resist acid"); + break; + case ACT_RESIST_FIRE: + if (((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_FLAMES)) || (o_ptr->name2 == EGO_BRAND_FIRE)) + desc = _("¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë (100) ¤È²Ð¤Ø¤ÎÂÑÀ­", "ball of fire (100) and resist fire"); + break; + case ACT_RESIST_COLD: + if (((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ICE)) || (o_ptr->name2 == EGO_BRAND_COLD)) + desc = _("¥¢¥¤¥¹¡¦¥Ü¡¼¥ë (100) ¤ÈÎ䵤¤Ø¤ÎÂÑÀ­", "ball of cold (100) and resist cold"); + break; + case ACT_RESIST_ELEC: + if (((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ELEC)) || (o_ptr->name2 == EGO_BRAND_ELEC)) + desc = _("¥µ¥ó¥À¡¼¡¦¥Ü¡¼¥ë (100) ¤ÈÅÅ·â¤Ø¤ÎÂÑÀ­", "ball of elec (100) and resist elec"); + break; + case ACT_RESIST_POIS: + if (o_ptr->name2 == EGO_BRAND_POIS) + desc = _("°­½­±À (100) ¤ÈÆǤؤÎÂÑÀ­", "ball of poison (100) and resist elec"); + break; } - else if (o_ptr->name2 == EGO_EARTHQUAKES) - { -#ifdef JP -return "ÃÏ¿Ì : 100+d100 ¥¿¡¼¥óËè"; -#else - return "earthquake every 100+d100 turns"; -#endif - + /* Timeout description */ + constant = act_ptr->timeout.constant; + dice = act_ptr->timeout.dice; + if (constant == 0 && dice == 0) { + /* We can activate it every turn */ + strcpy(timeout, _("¤¤¤Ä¤Ç¤â", "every turn")); + } else if (constant < 0) { + /* Activations that have special timeout */ + switch (act_ptr->index) { + case ACT_BR_FIRE: + sprintf(timeout, _("%d ¥¿¡¼¥óËè", "every %d turns"), + ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_FLAMES)) ? 200 : 250); + break; + case ACT_BR_COLD: + sprintf(timeout, _("%d ¥¿¡¼¥óËè", "every %d turns"), + ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ICE)) ? 200 : 250); + break; + case ACT_TERROR: + strcpy(timeout, _("3*(¥ì¥Ù¥ë+10) ¥¿¡¼¥óËè", "every 3 * (level+10) turns")); + break; + case ACT_MURAMASA: + strcpy(timeout, _("³ÎΨ50%¤Ç²õ¤ì¤ë", "(destroyed 50%)")); + break; + default: + strcpy(timeout, "undefined"); + break; + } + } else { + /* Normal timeout activations */ + char constant_str[16], dice_str[16]; + sprintf(constant_str, "%d", constant); + sprintf(dice_str, "d%d", dice); + sprintf(timeout, _("%s%s%s ¥¿¡¼¥óËè", "every %s%s%s turns"), + (constant > 0) ? constant_str : "", + (constant > 0 && dice > 0) ? "+" : "", + (dice > 0) ? dice_str : ""); } - else if (o_ptr->name2 == EGO_JUMP) - { -#ifdef JP -return "¥·¥ç¡¼¥È¡¦¥Æ¥ì¥Ý¡¼¥È : 10+d10 ¥¿¡¼¥óËè"; -#else - return "blink every 10+d10 turns"; -#endif + /* Build detail activate description */ + sprintf(activation_detail, _("%s : %s", "%s %s"), desc, timeout); - } - - if (o_ptr->tval == TV_RING) - { - if (object_is_ego(o_ptr)) - { - switch (o_ptr->name2) - { - case EGO_RING_HERO: -#ifdef JP -return "»Îµ¤¹âÍÈ : 100+d100¥¿¡¼¥óËè"; -#else - return "heroism every 100+d100 turns"; -#endif - case EGO_RING_MAGIC_MIS: -#ifdef JP -return "¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë(2d6) : 2 ¥¿¡¼¥óËè"; -#else - return "magic missile (2d6) every 2 turns"; -#endif - case EGO_RING_FIRE_BOLT: -#ifdef JP -return "¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È(9d8) : 8+d8 ¥¿¡¼¥óËè"; -#else - return "fire bolt (9d8) every 8+d8 turns"; -#endif - case EGO_RING_COLD_BOLT: -#ifdef JP -return "¥¢¥¤¥¹¡¦¥Ü¥ë¥È(6d8) : 7+d7 ¥¿¡¼¥óËè"; -#else - return "frost bolt (6d8) every 7+d7 turns"; -#endif - case EGO_RING_ELEC_BOLT: -#ifdef JP -return "¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È(4d8) : 5+d5 ¥¿¡¼¥óËè"; -#else - return "lightning bolt (4d8) every 5+d5 turns"; -#endif - case EGO_RING_ACID_BOLT: -#ifdef JP -return "¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È(5d8) : 6+d6 ¥¿¡¼¥óËè"; -#else - return "acid bolt (5d8) every 6+d6 turns"; -#endif - case EGO_RING_MANA_BOLT: -#ifdef JP -return "ËâÎϤÎÌð(120) : 120+d120 ¥¿¡¼¥óËè"; -#else - return "a mana bolt (120) every 120+d120 turns"; -#endif - case EGO_RING_FIRE_BALL: -#ifdef JP -return "¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë (100) : 80+d80 ¥¿¡¼¥óËè"; -#else - return "fire ball (100) every 80+d80 turns"; -#endif - case EGO_RING_COLD_BALL: -#ifdef JP -return "¥¢¥¤¥¹¡¦¥Ü¡¼¥ë (100) : 80+d80 ¥¿¡¼¥óËè"; -#else - return "cold ball (100) every 80+d80 turns"; -#endif - case EGO_RING_ELEC_BALL: -#ifdef JP -return "¥µ¥ó¥À¡¼¡¦¥Ü¡¼¥ë (100) : 80+d80 ¥¿¡¼¥óËè"; -#else - return "elec ball (100) every 80+d80 turns"; -#endif - case EGO_RING_ACID_BALL: -#ifdef JP -return "¥¢¥·¥Ã¥É¡¦¥Ü¡¼¥ë (100) : 80+d80 ¥¿¡¼¥óËè"; -#else - return "acid ball (100) every 80+d80 turns"; -#endif - case EGO_RING_MANA_BALL: -#ifdef JP -return "ËâÎϤÎÍò (250) : 300 ¥¿¡¼¥óËè"; -#else - return "mana storm (250) every 300 turns"; -#endif - case EGO_RING_DRAGON_F: - if (o_ptr->sval == SV_RING_FLAMES) -#ifdef JP -return "²Ð±ê¤Î¥Ö¥ì¥¹ (200) ¤È²Ð¤Ø¤ÎÂÑÀ­ : 200 ¥¿¡¼¥óËè"; -#else - return "breath of fire (200) and resist fire every 200 turns"; -#endif - else -#ifdef JP -return "²Ð±ê¤Î¥Ö¥ì¥¹ (200) : 250 ¥¿¡¼¥óËè"; -#else - return "fire breath (200) every 250 turns"; -#endif - case EGO_RING_DRAGON_C: - if (o_ptr->sval == SV_RING_ICE) -#ifdef JP -return "Î䵤¤Î¥Ö¥ì¥¹ (200) ¤ÈÎ䵤¤Ø¤ÎÂÑÀ­ : 200 ¥¿¡¼¥óËè"; -#else - return "breath of cold (200) and resist cold every 200 turns"; -#endif - else -#ifdef JP -return "Î䵤¤Î¥Ö¥ì¥¹ (200) : 250 ¥¿¡¼¥óËè"; -#else - return "cold breath (200) every 250 turns"; -#endif - case EGO_RING_M_DETECT: -#ifdef JP -return "Á´¥â¥ó¥¹¥¿¡¼´¶ÃÎ : 150 ¥¿¡¼¥óËè"; -#else - return "detect all monsters every 150 turns"; -#endif - case EGO_RING_D_SPEED: -#ifdef JP -return "¥¹¥Ô¡¼¥É(15+d30¥¿¡¼¥ó) : 100 ¥¿¡¼¥óËè"; -#else - return "haste self (15+d30 turns) every 100 turns"; -#endif - case EGO_RING_BERSERKER: -#ifdef JP -return "¶¸Àï»Î²½(25+d25¥¿¡¼¥ó) : 75+d75 ¥¿¡¼¥óËè"; -#else - return "berserk (25+d25 turns) every 75+d75 turns"; -#endif - case EGO_RING_TELE_AWAY: -#ifdef JP -return "¥Æ¥ì¥Ý¡¼¥È¡¦¥¢¥¦¥§¥¤ : 150 ¥¿¡¼¥óËè"; -#else - return "teleport away every 150 turns"; -#endif - case EGO_RING_TRUE: -#ifdef JP -return "»Îµ¤¹âÍÈ¡¢½ËÊ¡¡¢µæ¶Ë¤ÎÂÑÀ­ : 777 ¥¿¡¼¥óËè"; -#else - return "hero, bless, and ultimate resistance every 777 turns"; -#endif - } - } - switch (o_ptr->sval) - { - case SV_RING_FLAMES: -#ifdef JP -return "¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë (100) ¤È²Ð¤Ø¤ÎÂÑÀ­ : 50+d50 ¥¿¡¼¥óËè"; -#else - return "ball of fire (100) and resist fire every 50+d50 turns"; -#endif + return activation_detail; +} - case SV_RING_ICE: -#ifdef JP -return "¥¢¥¤¥¹¡¦¥Ü¡¼¥ë (100) ¤ÈÎ䵤¤Ø¤ÎÂÑÀ­ : 50+d50 ¥¿¡¼¥óËè"; -#else - return "ball of cold (100) and resist cold every 50+d50 turns"; -#endif +/* + * Determine the "Activation" (if any) for an artifact + * Return a string, or NULL for "no activation" + */ +cptr item_activation(object_type *o_ptr) +{ + u32b flgs[TR_FLAG_SIZE]; - case SV_RING_ACID: -#ifdef JP -return "¥¢¥·¥Ã¥É¡¦¥Ü¡¼¥ë (100) ¤È»À¤Ø¤ÎÂÑÀ­ : 50+d50 ¥¿¡¼¥óËè"; -#else - return "ball of acid (100) and resist acid every 50+d50 turns"; -#endif + /* Extract the flags */ + object_flags(o_ptr, flgs); - case SV_RING_ELEC: + /* Require activation ability */ #ifdef JP -return "¥µ¥ó¥À¡¼¡¦¥Ü¡¼¥ë (100) ¤ÈÅÅ·â¤Ø¤ÎÂÑÀ­ : 50+d50 ¥¿¡¼¥óËè"; + if (!(have_flag(flgs, TR_ACTIVATE))) return ("¤Ê¤·"); #else - return "ball of elec (100) and resist elec every 50+d50 turns"; + if (!(have_flag(flgs, TR_ACTIVATE))) return ("nothing"); #endif - default: - return NULL; - } - } - - if (o_ptr->tval == TV_AMULET) + /* Get an explain of an activation */ + if (activation_index(o_ptr)) { - if (object_is_ego(o_ptr)) - { - switch (o_ptr->name2) - { - case EGO_AMU_IDENT: -#ifdef JP - return "´ÕÄê : 10 ¥¿¡¼¥óËè"; -#else - return "identify every 10 turns"; -#endif - case EGO_AMU_CHARM: -#ifdef JP - return "¥â¥ó¥¹¥¿¡¼Ì¥Î» : 200 ¥¿¡¼¥óËè"; -#else - return "charm monster every 200 turns"; -#endif - case EGO_AMU_JUMP: -#ifdef JP - return "¥·¥ç¡¼¥È¡¦¥Æ¥ì¥Ý¡¼¥È : 10+d10 ¥¿¡¼¥óËè"; -#else - return "blink every 10+d10 turns"; -#endif - case EGO_AMU_TELEPORT: -#ifdef JP - return "¥Æ¥ì¥Ý¡¼¥È : 50+d50 ¥¿¡¼¥óËè"; -#else - return "teleport every 50+d50 turns"; -#endif - case EGO_AMU_D_DOOR: -#ifdef JP - return "¼¡¸µ¤ÎÈâ : 200 ¥¿¡¼¥óËè"; -#else - return "dimension door every 200 turns"; -#endif - case EGO_AMU_RES_FIRE_: -#ifdef JP - return "²Ð±ê¤Ø¤ÎÂÑÀ­ : 50+d50¥¿¡¼¥óËè"; -#else - return "resist fire every 50+d50 turns"; -#endif - case EGO_AMU_RES_COLD_: -#ifdef JP - return "Î䵤¤Ø¤ÎÂÑÀ­ : 50+d50¥¿¡¼¥óËè"; -#else - return "resist cold every 50+d50 turns"; -#endif - case EGO_AMU_RES_ELEC_: -#ifdef JP - return "ÅÅ·â¤Ø¤ÎÂÑÀ­ : 50+d50¥¿¡¼¥óËè"; -#else - return "resist elec every 50+d50 turns"; -#endif - case EGO_AMU_RES_ACID_: -#ifdef JP - return "»À¤Ø¤ÎÂÑÀ­ : 50+d50¥¿¡¼¥óËè"; -#else - return "resist acid every 50+d50 turns"; -#endif - case EGO_AMU_DETECTION: -#ifdef JP - return "Á´´¶ÃÎ : 55+d55¥¿¡¼¥óËè"; -#else - return "detect all floor every 55+d55 turns"; -#endif - } - } + return item_activation_aux(o_ptr); } + /* Special items */ if (o_ptr->tval == TV_WHISTLE) { #ifdef JP @@ -1250,143 +492,12 @@ return " #endif } - /* Require dragon scale mail */ -#ifdef JP -if (o_ptr->tval != TV_DRAG_ARMOR) return ("´ñ̯¤Ê¸÷"); -#else - if (o_ptr->tval != TV_DRAG_ARMOR) return ("a strange glow"); -#endif - - - /* Branch on the sub-type */ - switch (o_ptr->sval) - { - case SV_DRAGON_BLUE: - { -#ifdef JP -return "°ðºÊ¤Î¥Ö¥ì¥¹(100) : 150+d150 ¥¿¡¼¥óËè"; -#else - return "breathe lightning (100) every 150+d150 turns"; -#endif - - } - case SV_DRAGON_WHITE: - { -#ifdef JP -return "Î䵤¤Î¥Ö¥ì¥¹(110) : 150+d150 ¥¿¡¼¥óËè"; -#else - return "breathe frost (110) every 150+d150 turns"; -#endif - - } - case SV_DRAGON_BLACK: - { -#ifdef JP -return "»À¤Î¥Ö¥ì¥¹(130) : 150+d150 ¥¿¡¼¥óËè"; -#else - return "breathe acid (130) every 150+d150 turns"; -#endif - - } - case SV_DRAGON_GREEN: - { -#ifdef JP -return "ÆǤΥ¬¥¹¤Î¥Ö¥ì¥¹(150) : 180+d180 ¥¿¡¼¥óËè"; -#else - return "breathe poison gas (150) every 180+d180 turns"; -#endif - - } - case SV_DRAGON_RED: - { -#ifdef JP -return "²Ð±ê¤Î¥Ö¥ì¥¹(200) : 200+d200 ¥¿¡¼¥óËè"; -#else - return "breathe fire (200) every 200+d200 turns"; -#endif - - } - case SV_DRAGON_MULTIHUED: - { -#ifdef JP -return "Ëü¿§¤Î¥Ö¥ì¥¹(250) : 200+d200 ¥¿¡¼¥óËè"; -#else - return "breathe multi-hued (250) every 200+d200 turns"; -#endif - - } - case SV_DRAGON_BRONZE: - { -#ifdef JP -return "º®Íð¤Î¥Ö¥ì¥¹(120) : 180+d180 ¥¿¡¼¥óËè"; -#else - return "breathe confusion (120) every 180+d180 turns"; -#endif - - } - case SV_DRAGON_GOLD: - { -#ifdef JP -return "¹ì²»¤Î¥Ö¥ì¥¹(130) : 180+d180 ¥¿¡¼¥óËè"; -#else - return "breathe sound (130) every 180+d180 turns"; -#endif - - } - case SV_DRAGON_CHAOS: - { -#ifdef JP -return "¥«¥ª¥¹/Îô²½¤Î¥Ö¥ì¥¹(220) : 200+d200 ¥¿¡¼¥óËè"; -#else - return "breathe chaos/disenchant (220) every 200+d200 turns"; -#endif - - } - case SV_DRAGON_LAW: - { -#ifdef JP -return "¹ì²»/ÇËÊҤΥ֥쥹(230) : 200+d200 ¥¿¡¼¥óËè"; -#else - return "breathe sound/shards (230) every 200+d200 turns"; -#endif - - } - case SV_DRAGON_BALANCE: - { -#ifdef JP -return "¥Ð¥é¥ó¥¹¤Î¥Ö¥ì¥¹ (250) 200+d200 ¥¿¡¼¥óËè"; -#else - return "breathe balance (250) every 200+d200 turns"; -#endif - - } - case SV_DRAGON_SHINING: - { -#ifdef JP -return "Á®¸÷/°Å¹õ¤Î¥Ö¥ì¥¹(200) : 200+d200 ¥¿¡¼¥óËè"; -#else - return "breathe light/darkness (200) every 200+d200 turns"; -#endif - - } - case SV_DRAGON_POWER: - { -#ifdef JP -return "¥¨¥ì¥á¥ó¥È¤Î¥Ö¥ì¥¹(300) : 200+d200 ¥¿¡¼¥óËè"; -#else - return "breathe the elements (300) every 200+d200 turns"; -#endif - - } - } - /* Oops */ #ifdef JP -return "¶õµ¤¤Î©"; + return "²¿¤âµ¯¤­¤Ê¤¤"; #else - return "breathe air"; + return "Nothing"; #endif - } @@ -2690,7 +1801,7 @@ info[i++] = " #endif } - if (o_ptr->curse_flags & TRC_ADD_L_CURSE) + if ((o_ptr->curse_flags & TRC_ADD_L_CURSE) || have_flag(flgs, TR_ADD_L_CURSE)) { #ifdef JP info[i++] = "¤½¤ì¤Ï¼å¤¤¼ö¤¤¤òÁý¤ä¤¹¡£"; @@ -2699,7 +1810,7 @@ info[i++] = " #endif } - if (o_ptr->curse_flags & TRC_ADD_H_CURSE) + if ((o_ptr->curse_flags & TRC_ADD_H_CURSE) || have_flag(flgs, TR_ADD_H_CURSE)) { #ifdef JP info[i++] = "¤½¤ì¤Ï¶¯ÎϤʼö¤¤¤òÁý¤ä¤¹¡£"; @@ -6861,7 +5972,7 @@ void py_pickup_floor(bool pickup) char o_name[MAX_NLEN]; object_type *o_ptr; - int floor_num = 0, floor_list[23], floor_o_idx = 0; + int floor_num = 0, floor_o_idx = 0; int can_pickup = 0; @@ -6924,10 +6035,6 @@ void py_pickup_floor(bool pickup) can_pickup++; } - /* Remember this object index */ - if (floor_num < 23) - floor_list[floor_num] = this_o_idx; - /* Count non-gold objects */ floor_num++;