OSDN Git Service

Modify torch_lost_fuel bug. No more create minus charge torches.
[hengband/hengband.git] / src / spells3.c
index 1d4e622..b5dd46c 100644 (file)
@@ -3532,6 +3532,8 @@ s = "
        if (object_is_cursed(o_ptr))
        {
                if (((o_ptr->curse_flags & TRC_HEAVY_CURSE) && (randint1(100) < 33)) ||
+                       have_flag(flgs, TR_ADD_L_CURSE) ||
+                       have_flag(flgs, TR_ADD_H_CURSE) ||
                    (o_ptr->curse_flags & TRC_PERMA_CURSE))
                {
 #ifdef JP
@@ -3930,7 +3932,7 @@ void display_spell_list(void)
        int             i, j;
        int             y, x;
        int             m[9];
-       magic_type      *s_ptr;
+       const magic_type *s_ptr;
        char            name[80];
        char            out_val[160];
 
@@ -4234,7 +4236,7 @@ int mod_spell_chance_2(int chance)
 s16b spell_chance(int spell, int use_realm)
 {
        int             chance, minfail;
-       magic_type      *s_ptr;
+       const magic_type *s_ptr;
        int             need_mana;
        int penalty = (mp_ptr->spell_stat == A_WIS) ? 10 : 4;
 
@@ -4295,9 +4297,19 @@ s16b spell_chance(int spell, int use_realm)
 
        chance = mod_spell_chance_1(chance);
 
-       if ((use_realm == REALM_NATURE) && ((p_ptr->align > 50) || (p_ptr->align < -50))) chance += penalty;
-       if (((use_realm == REALM_LIFE) || (use_realm == REALM_CRUSADE)) && (p_ptr->align < -20)) chance += penalty;
-       if (((use_realm == REALM_DEATH) || (use_realm == REALM_DAEMON)) && (p_ptr->align > 20)) chance += penalty;
+       /* Goodness or evilness gives a penalty to failure rate */
+       switch (use_realm)
+       {
+       case REALM_NATURE:
+               if ((p_ptr->align > 50) || (p_ptr->align < -50)) chance += penalty;
+               break;
+       case REALM_LIFE: case REALM_CRUSADE:
+               if (p_ptr->align < -20) chance += penalty;
+               break;
+       case REALM_DEATH: case REALM_DAEMON: case REALM_HEX:
+               if (p_ptr->align > 20) chance += penalty;
+               break;
+       }
 
        /* Minimum failure rate */
        if (chance < minfail) chance = minfail;
@@ -4330,7 +4342,7 @@ s16b spell_chance(int spell, int use_realm)
  */
 bool spell_okay(int spell, bool learned, bool study_pray, int use_realm)
 {
-       magic_type *s_ptr;
+       const magic_type *s_ptr;
 
        /* Access the spell */
        if (!is_magic(use_realm))
@@ -4377,7 +4389,7 @@ bool spell_okay(int spell, bool learned, bool study_pray, int use_realm)
 void print_spells(int target_spell, byte *spells, int num, int y, int x, int use_realm)
 {
        int             i, spell, exp_level, increment = 64;
-       magic_type      *s_ptr;
+       const magic_type *s_ptr;
        cptr            comment;
        char            info[80];
        char            out_val[160];
@@ -4707,6 +4719,7 @@ bool hates_fire(object_type *o_ptr)
                case TV_CRUSADE_BOOK:
                case TV_MUSIC_BOOK:
                case TV_HISSATSU_BOOK:
+               case TV_HEX_BOOK:
                {
                        return (TRUE);
                }
@@ -5287,22 +5300,14 @@ msg_format("
 /*
  * Curse the players weapon
  */
-bool curse_weapon(bool force, int slot)
+bool curse_weapon_object(bool force, object_type *o_ptr)
 {
        int i;
-
-       object_type *o_ptr;
-
        char o_name[MAX_NLEN];
 
-
-       /* Curse the weapon */
-       o_ptr = &inventory[slot];
-
        /* Nothing to curse */
        if (!o_ptr->k_idx) return (FALSE);
 
-
        /* Describe */
        object_desc(o_name, o_ptr, OD_OMIT_PREFIX);
 
@@ -5311,13 +5316,12 @@ bool curse_weapon(bool force, int slot)
        {
                /* Cool */
 #ifdef JP
-msg_format("%s¤¬%s¤òÊñ¤ß¹þ¤â¤¦¤È¤·¤¿¤¬¡¢%s¤Ï¤½¤ì¤òÄ·¤ÍÊÖ¤·¤¿¡ª",
-"¶²ÉݤΰŹõ¥ª¡¼¥é", "Éð´ï", o_name);
+               msg_format("%s¤¬%s¤òÊñ¤ß¹þ¤â¤¦¤È¤·¤¿¤¬¡¢%s¤Ï¤½¤ì¤òÄ·¤ÍÊÖ¤·¤¿¡ª",
+                               "¶²ÉݤΰŹõ¥ª¡¼¥é", "Éð´ï", o_name);
 #else
                msg_format("A %s tries to %s, but your %s resists the effects!",
-                          "terrible black aura", "surround your weapon", o_name);
+                               "terrible black aura", "surround your weapon", o_name);
 #endif
-
        }
 
        /* not artifact or failed save... */
@@ -5325,11 +5329,10 @@ msg_format("%s
        {
                /* Oops */
 #ifdef JP
-if (!force) msg_format("¶²ÉݤΰŹõ¥ª¡¼¥é¤¬¤¢¤Ê¤¿¤Î%s¤òÊñ¤ß¹þ¤ó¤À¡ª", o_name);
+               if (!force) msg_format("¶²ÉݤΰŹõ¥ª¡¼¥é¤¬¤¢¤Ê¤¿¤Î%s¤òÊñ¤ß¹þ¤ó¤À¡ª", o_name);
 #else
                if (!force) msg_format("A terrible black aura blasts your %s!", o_name);
 #endif
-
                chg_virtue(V_ENCHANT, -5);
 
                /* Shatter the weapon */
@@ -5345,7 +5348,6 @@ if (!force) msg_format("
                for (i = 0; i < TR_FLAG_SIZE; i++)
                        o_ptr->art_flags[i] = 0;
 
-
                /* Curse it */
                o_ptr->curse_flags = TRC_CURSED;
 
@@ -5366,6 +5368,12 @@ if (!force) msg_format("
        return (TRUE);
 }
 
+bool curse_weapon(bool force, int slot)
+{
+       /* Curse the weapon */
+       return curse_weapon_object(force, &inventory[slot]);
+}
+
 
 /*
  * Enchant some bolts
@@ -6000,7 +6008,7 @@ bool summon_kin_player(int level, int y, int x, u32b mode)
                        case RACE_NIBELUNG:
                        case RACE_DARK_ELF:
                        case RACE_MIND_FLAYER:
-                       case RACE_KUTA:
+                       case RACE_KUTAR:
                        case RACE_S_FAIRY:
                                summon_kin_type = 'h';
                                break;