OSDN Git Service

[Refactor] #37353 one_low_esp() one_ability() one_activation() to object-boost.c.
authordeskull <deskull@users.sourceforge.jp>
Thu, 14 Mar 2019 10:06:12 +0000 (19:06 +0900)
committerdeskull <deskull@users.sourceforge.jp>
Thu, 14 Mar 2019 10:06:12 +0000 (19:06 +0900)
src/artifact.c
src/artifact.h
src/object-boost.c
src/object-boost.h

index b938ace..c20eec0 100644 (file)
@@ -104,178 +104,6 @@ void one_lordly_high_resistance(object_type *o_ptr)
 
 
 /*!
- * @brief 対象のオブジェクトに弱いESPを一つ付加する。/ Choose one lower rank esp
- * @details 候補は動物、アンデッド、悪魔、オーク、トロル、巨人、
- * ドラゴン、人間、善良、ユニークESPのいずれかであり、重複の抑止はない。
- * @param o_ptr 対象のオブジェクト構造体ポインタ
- * @return なし
- */
-void one_low_esp(object_type *o_ptr)
-{
-       switch (randint1(10))
-       {
-               case 1:  add_flag(o_ptr->art_flags, TR_ESP_ANIMAL);   break;
-               case 2:  add_flag(o_ptr->art_flags, TR_ESP_UNDEAD);   break;
-               case 3:  add_flag(o_ptr->art_flags, TR_ESP_DEMON);   break;
-               case 4:  add_flag(o_ptr->art_flags, TR_ESP_ORC);   break;
-               case 5:  add_flag(o_ptr->art_flags, TR_ESP_TROLL);   break;
-               case 6:  add_flag(o_ptr->art_flags, TR_ESP_GIANT);   break;
-               case 7:  add_flag(o_ptr->art_flags, TR_ESP_DRAGON);   break;
-               case 8:  add_flag(o_ptr->art_flags, TR_ESP_HUMAN);   break;
-               case 9:  add_flag(o_ptr->art_flags, TR_ESP_GOOD);   break;
-               case 10: add_flag(o_ptr->art_flags, TR_ESP_UNIQUE);   break;
-       }
-}
-
-
-/*!
- * @brief 対象のオブジェクトに能力を一つ付加する。/ Choose one random ability
- * @details 候補は浮遊、永久光源+1、透明視、警告、遅消化、急回復、麻痺知らず、経験値維持のいずれか。
- * 重複の抑止はない。
- * @param o_ptr 対象のオブジェクト構造体ポインタ
- * @return なし
- */
-void one_ability(object_type *o_ptr)
-{
-       switch (randint0(10))
-       {
-       case 0: add_flag(o_ptr->art_flags, TR_LEVITATION);  break;
-       case 1: add_flag(o_ptr->art_flags, TR_LITE_1);      break;
-       case 2: add_flag(o_ptr->art_flags, TR_SEE_INVIS);   break;
-       case 3: add_flag(o_ptr->art_flags, TR_WARNING);     break;
-       case 4: add_flag(o_ptr->art_flags, TR_SLOW_DIGEST); break;
-       case 5: add_flag(o_ptr->art_flags, TR_REGEN);       break;
-       case 6: add_flag(o_ptr->art_flags, TR_FREE_ACT);    break;
-       case 7: add_flag(o_ptr->art_flags, TR_HOLD_EXP);   break;
-       case 8:
-       case 9:
-               one_low_esp(o_ptr);
-               break;
-       }
-}
-
-/*!
- * @brief 対象のオブジェクトに発動を一つ付加する。/ Choose one random activation
- * @details 候補多数。ランダムアーティファクトのバイアスには一切依存せず、
- * whileループによる構造で能力的に強力なものほど確率を落としている。
- * @param o_ptr 対象のオブジェクト構造体ポインタ
- * @return なし
- */
-void one_activation(object_type *o_ptr)
-{
-       int type = 0;
-       PERCENTAGE chance = 0;
-
-       while (randint1(100) >= chance)
-       {
-               type = randint1(255);
-               switch (type)
-               {
-                       case ACT_SUNLIGHT:
-                       case ACT_BO_MISS_1:
-                       case ACT_BA_POIS_1:
-                       case ACT_BO_ELEC_1:
-                       case ACT_BO_ACID_1:
-                       case ACT_BO_COLD_1:
-                       case ACT_BO_FIRE_1:
-                       case ACT_CONFUSE:
-                       case ACT_SLEEP:
-                       case ACT_QUAKE:
-                       case ACT_CURE_LW:
-                       case ACT_CURE_MW:
-                       case ACT_CURE_POISON:
-                       case ACT_BERSERK:
-                       case ACT_LIGHT:
-                       case ACT_MAP_LIGHT:
-                       case ACT_DEST_DOOR:
-                       case ACT_STONE_MUD:
-                       case ACT_TELEPORT:
-                               chance = 101;
-                               break;
-                       case ACT_BA_COLD_1:
-                       case ACT_BA_FIRE_1:
-                       case ACT_HYPODYNAMIA_1:
-                       case ACT_TELE_AWAY:
-                       case ACT_ESP:
-                       case ACT_RESIST_ALL:
-                       case ACT_DETECT_ALL:
-                       case ACT_RECALL:
-                       case ACT_SATIATE:
-                       case ACT_RECHARGE:
-                               chance = 85;
-                               break;
-                       case ACT_TERROR:
-                       case ACT_PROT_EVIL:
-                       case ACT_ID_PLAIN:
-                               chance = 75;
-                               break;
-                       case ACT_HYPODYNAMIA_2:
-                       case ACT_DRAIN_1:
-                       case ACT_BO_MISS_2:
-                       case ACT_BA_FIRE_2:
-                       case ACT_REST_EXP:
-                               chance = 66;
-                               break;
-                       case ACT_BA_FIRE_3:
-                       case ACT_BA_COLD_3:
-                       case ACT_BA_ELEC_3:
-                       case ACT_WHIRLWIND:
-                       case ACT_DRAIN_2:
-                       case ACT_CHARM_ANIMAL:
-                               chance = 50;
-                               break;
-                       case ACT_SUMMON_ANIMAL:
-                               chance = 40;
-                               break;
-                       case ACT_DISP_EVIL:
-                       case ACT_BA_MISS_3:
-                       case ACT_DISP_GOOD:
-                       case ACT_BANISH_EVIL:
-                       case ACT_GENOCIDE:
-                       case ACT_MASS_GENO:
-                       case ACT_CHARM_UNDEAD:
-                       case ACT_CHARM_OTHER:
-                       case ACT_SUMMON_PHANTOM:
-                       case ACT_REST_ALL:
-                       case ACT_RUNE_EXPLO:
-                               chance = 33;
-                               break;
-                       case ACT_CALL_CHAOS:
-                       case ACT_ROCKET:
-                       case ACT_CHARM_ANIMALS:
-                       case ACT_CHARM_OTHERS:
-                       case ACT_SUMMON_ELEMENTAL:
-                       case ACT_CURE_700:
-                       case ACT_SPEED:
-                       case ACT_ID_FULL:
-                       case ACT_RUNE_PROT:
-                               chance = 25;
-                               break;
-                       case ACT_CURE_1000:
-                       case ACT_XTRA_SPEED:
-                       case ACT_DETECT_XTRA:
-                       case ACT_DIM_DOOR:
-                               chance = 10;
-                               break;
-                       case ACT_SUMMON_UNDEAD:
-                       case ACT_SUMMON_DEMON:
-                       case ACT_WRAITH:
-                       case ACT_INVULN:
-                       case ACT_ALCHEMY:
-                               chance = 5;
-                               break;
-                       default:
-                               chance = 0;
-               }
-       }
-
-       /* A type was chosen... */
-       o_ptr->xtra2 = (byte_hack)type;
-       add_flag(o_ptr->art_flags, TR_ACTIVATE);
-       o_ptr->timeout = 0;
-}
-
-/*!
  * @brief ランダムアーティファクト生成中、対象のオブジェクトを呪いのアーティファクトにする経過処理。/ generation process of cursed artifact.
  * @details pval、AC、命中、ダメージが正の場合、符号反転の上1d4だけ悪化させ、重い呪い、呪いフラグを必ず付加。
  * 祝福を無効。確率に応じて、永遠の呪い、太古の怨念、経験値吸収、弱い呪いの継続的付加、強い呪いの継続的付加、HP吸収の呪い、
index d6cae36..c8fb3e2 100644 (file)
@@ -1,8 +1,5 @@
 /* artifact.c */
 extern void one_lordly_high_resistance(object_type *o_ptr);
-extern void one_low_esp(object_type *o_ptr);
-extern void one_ability(object_type *o_ptr);
-extern void one_activation(object_type *o_ptr);
 extern bool create_artifact(object_type *o_ptr, bool a_scroll);
 extern int activation_index(object_type *o_ptr);
 extern const activation_type* find_activation_info(object_type *o_ptr);
index e5dd384..7dd75bd 100644 (file)
@@ -1,5 +1,7 @@
 #include "angband.h"
 #include "object-boost.h"
+#include "object-boost.h"
+#include "cmd-activate.h"
 
 /*!
  * @brief 上質以上のオブジェクトに与えるための各種ボーナスを正規乱数も加えて算出する。
@@ -254,3 +256,175 @@ void one_resistance(object_type *o_ptr)
 }
 
 
+/*!
+ * @brief 対象のオブジェクトに能力を一つ付加する。/ Choose one random ability
+ * @details 候補は浮遊、永久光源+1、透明視、警告、遅消化、急回復、麻痺知らず、経験値維持のいずれか。
+ * 重複の抑止はない。
+ * @param o_ptr 対象のオブジェクト構造体ポインタ
+ * @return なし
+ */
+void one_ability(object_type *o_ptr)
+{
+       switch (randint0(10))
+       {
+       case 0: add_flag(o_ptr->art_flags, TR_LEVITATION);  break;
+       case 1: add_flag(o_ptr->art_flags, TR_LITE_1);      break;
+       case 2: add_flag(o_ptr->art_flags, TR_SEE_INVIS);   break;
+       case 3: add_flag(o_ptr->art_flags, TR_WARNING);     break;
+       case 4: add_flag(o_ptr->art_flags, TR_SLOW_DIGEST); break;
+       case 5: add_flag(o_ptr->art_flags, TR_REGEN);       break;
+       case 6: add_flag(o_ptr->art_flags, TR_FREE_ACT);    break;
+       case 7: add_flag(o_ptr->art_flags, TR_HOLD_EXP);   break;
+       case 8:
+       case 9:
+               one_low_esp(o_ptr);
+               break;
+       }
+}
+
+
+/*!
+ * @brief 対象のオブジェクトに弱いESPを一つ付加する。/ Choose one lower rank esp
+ * @details 候補は動物、アンデッド、悪魔、オーク、トロル、巨人、
+ * ドラゴン、人間、善良、ユニークESPのいずれかであり、重複の抑止はない。
+ * @param o_ptr 対象のオブジェクト構造体ポインタ
+ * @return なし
+ */
+void one_low_esp(object_type *o_ptr)
+{
+       switch (randint1(10))
+       {
+       case 1:  add_flag(o_ptr->art_flags, TR_ESP_ANIMAL);   break;
+       case 2:  add_flag(o_ptr->art_flags, TR_ESP_UNDEAD);   break;
+       case 3:  add_flag(o_ptr->art_flags, TR_ESP_DEMON);   break;
+       case 4:  add_flag(o_ptr->art_flags, TR_ESP_ORC);   break;
+       case 5:  add_flag(o_ptr->art_flags, TR_ESP_TROLL);   break;
+       case 6:  add_flag(o_ptr->art_flags, TR_ESP_GIANT);   break;
+       case 7:  add_flag(o_ptr->art_flags, TR_ESP_DRAGON);   break;
+       case 8:  add_flag(o_ptr->art_flags, TR_ESP_HUMAN);   break;
+       case 9:  add_flag(o_ptr->art_flags, TR_ESP_GOOD);   break;
+       case 10: add_flag(o_ptr->art_flags, TR_ESP_UNIQUE);   break;
+       }
+}
+
+
+/*!
+ * @brief 対象のオブジェクトに発動を一つ付加する。/ Choose one random activation
+ * @details 候補多数。ランダムアーティファクトのバイアスには一切依存せず、
+ * whileループによる構造で能力的に強力なものほど確率を落としている。
+ * @param o_ptr 対象のオブジェクト構造体ポインタ
+ * @return なし
+ */
+void one_activation(object_type *o_ptr)
+{
+       int type = 0;
+       PERCENTAGE chance = 0;
+
+       while (randint1(100) >= chance)
+       {
+               type = randint1(255);
+               switch (type)
+               {
+               case ACT_SUNLIGHT:
+               case ACT_BO_MISS_1:
+               case ACT_BA_POIS_1:
+               case ACT_BO_ELEC_1:
+               case ACT_BO_ACID_1:
+               case ACT_BO_COLD_1:
+               case ACT_BO_FIRE_1:
+               case ACT_CONFUSE:
+               case ACT_SLEEP:
+               case ACT_QUAKE:
+               case ACT_CURE_LW:
+               case ACT_CURE_MW:
+               case ACT_CURE_POISON:
+               case ACT_BERSERK:
+               case ACT_LIGHT:
+               case ACT_MAP_LIGHT:
+               case ACT_DEST_DOOR:
+               case ACT_STONE_MUD:
+               case ACT_TELEPORT:
+                       chance = 101;
+                       break;
+               case ACT_BA_COLD_1:
+               case ACT_BA_FIRE_1:
+               case ACT_HYPODYNAMIA_1:
+               case ACT_TELE_AWAY:
+               case ACT_ESP:
+               case ACT_RESIST_ALL:
+               case ACT_DETECT_ALL:
+               case ACT_RECALL:
+               case ACT_SATIATE:
+               case ACT_RECHARGE:
+                       chance = 85;
+                       break;
+               case ACT_TERROR:
+               case ACT_PROT_EVIL:
+               case ACT_ID_PLAIN:
+                       chance = 75;
+                       break;
+               case ACT_HYPODYNAMIA_2:
+               case ACT_DRAIN_1:
+               case ACT_BO_MISS_2:
+               case ACT_BA_FIRE_2:
+               case ACT_REST_EXP:
+                       chance = 66;
+                       break;
+               case ACT_BA_FIRE_3:
+               case ACT_BA_COLD_3:
+               case ACT_BA_ELEC_3:
+               case ACT_WHIRLWIND:
+               case ACT_DRAIN_2:
+               case ACT_CHARM_ANIMAL:
+                       chance = 50;
+                       break;
+               case ACT_SUMMON_ANIMAL:
+                       chance = 40;
+                       break;
+               case ACT_DISP_EVIL:
+               case ACT_BA_MISS_3:
+               case ACT_DISP_GOOD:
+               case ACT_BANISH_EVIL:
+               case ACT_GENOCIDE:
+               case ACT_MASS_GENO:
+               case ACT_CHARM_UNDEAD:
+               case ACT_CHARM_OTHER:
+               case ACT_SUMMON_PHANTOM:
+               case ACT_REST_ALL:
+               case ACT_RUNE_EXPLO:
+                       chance = 33;
+                       break;
+               case ACT_CALL_CHAOS:
+               case ACT_ROCKET:
+               case ACT_CHARM_ANIMALS:
+               case ACT_CHARM_OTHERS:
+               case ACT_SUMMON_ELEMENTAL:
+               case ACT_CURE_700:
+               case ACT_SPEED:
+               case ACT_ID_FULL:
+               case ACT_RUNE_PROT:
+                       chance = 25;
+                       break;
+               case ACT_CURE_1000:
+               case ACT_XTRA_SPEED:
+               case ACT_DETECT_XTRA:
+               case ACT_DIM_DOOR:
+                       chance = 10;
+                       break;
+               case ACT_SUMMON_UNDEAD:
+               case ACT_SUMMON_DEMON:
+               case ACT_WRAITH:
+               case ACT_INVULN:
+               case ACT_ALCHEMY:
+                       chance = 5;
+                       break;
+               default:
+                       chance = 0;
+               }
+       }
+
+       /* A type was chosen... */
+       o_ptr->xtra2 = (byte_hack)type;
+       add_flag(o_ptr->art_flags, TR_ACTIVATE);
+       o_ptr->timeout = 0;
+}
index 5827f4d..cdd56bc 100644 (file)
@@ -8,6 +8,9 @@ extern void one_high_resistance(object_type *o_ptr);
 extern void one_ele_resistance(object_type *o_ptr);
 extern void dragon_resist(object_type * o_ptr);
 extern void one_resistance(object_type *o_ptr);
+extern void one_low_esp(object_type *o_ptr);
+extern void one_ability(object_type *o_ptr);
+extern void one_activation(object_type *o_ptr);
 
 
 extern void apply_magic_weapon(object_type *o_ptr, DEPTH level, int power);