• R/O
  • HTTP
  • SSH
  • HTTPS

hengband: Commit

変愚蛮怒のメインリポジトリです


Commit MetaInfo

Revisionfc00868fed9ad470ebf380a7fee15bd53de0df81 (tree)
Time2019-03-14 14:48:29
Authordeskull <deskull@user...>
Commiterdeskull

Log Message

[Refactor] #37353 add_esp_strong() and add_esp_weak() to object-boost.c.

Change Summary

Incremental Difference

--- a/src/object-boost.c
+++ b/src/object-boost.c
@@ -102,3 +102,57 @@ void one_sustain(object_type *o_ptr)
102102 case 5: add_flag(o_ptr->art_flags, TR_SUST_CHR); break;
103103 }
104104 }
105+
106+/*!
107+ * @brief オブジェクトにランダムな強いESPを与える
108+ * @param o_ptr 強化を与えたいオブジェクトの構造体参照ポインタ
109+ * @return TR_ESP_NONLIVINGがついたならばTRUE
110+ */
111+bool add_esp_strong(object_type *o_ptr)
112+{
113+ bool nonliv = FALSE;
114+
115+ switch (randint1(3))
116+ {
117+ case 1: add_flag(o_ptr->art_flags, TR_ESP_EVIL); break;
118+ case 2: add_flag(o_ptr->art_flags, TR_TELEPATHY); break;
119+ case 3: add_flag(o_ptr->art_flags, TR_ESP_NONLIVING); nonliv = TRUE; break;
120+ }
121+
122+ return nonliv;
123+}
124+
125+/*!
126+ * @brief オブジェクトにランダムな弱いESPを与える
127+ * @param o_ptr 強化を与えたいオブジェクトの構造体参照ポインタ
128+ * @param extra TRUEならばESPの最大付与数が増える(TRUE -> 3+1d6 / FALSE -> 1d3)
129+ * @return なし
130+ */
131+void add_esp_weak(object_type *o_ptr, bool extra)
132+{
133+ int i;
134+ u32b weak_esp_list[] = {
135+ TR_ESP_ANIMAL,
136+ TR_ESP_UNDEAD,
137+ TR_ESP_DEMON,
138+ TR_ESP_ORC,
139+ TR_ESP_TROLL,
140+ TR_ESP_GIANT,
141+ TR_ESP_DRAGON,
142+ TR_ESP_HUMAN,
143+ TR_ESP_GOOD,
144+ TR_ESP_UNIQUE,
145+ };
146+ const int MAX_ESP_WEAK = sizeof(weak_esp_list) / sizeof(weak_esp_list[0]);
147+ const int add_count = MIN(MAX_ESP_WEAK, (extra) ? (3 + randint1(randint1(6))) : randint1(3));
148+
149+ /* Add unduplicated weak esp flags randomly */
150+ for (i = 0; i < add_count; ++i)
151+ {
152+ int choice = rand_range(i, MAX_ESP_WEAK - 1);
153+
154+ add_flag(o_ptr->art_flags, weak_esp_list[choice]);
155+ weak_esp_list[choice] = weak_esp_list[i];
156+ }
157+}
158+
--- a/src/object-boost.h
+++ b/src/object-boost.h
@@ -1,6 +1,9 @@
11 #pragma once
22 extern int m_bonus(int max, DEPTH level);
33 extern void one_sustain(object_type *o_ptr);
4+extern bool add_esp_strong(object_type *o_ptr);
5+extern void add_esp_weak(object_type *o_ptr, bool extra);
6+
47
58 extern void apply_magic_weapon(object_type *o_ptr, DEPTH level, int power);
69
--- a/src/object2.c
+++ b/src/object2.c
@@ -2327,59 +2327,6 @@ static void dragon_resist(object_type * o_ptr)
23272327 while (one_in_(2));
23282328 }
23292329
2330-/*!
2331- * @brief オブジェクトにランダムな強いESPを与える
2332- * @param o_ptr 強化を与えたいオブジェクトの構造体参照ポインタ
2333- * @return なし
2334- */
2335-static bool add_esp_strong(object_type *o_ptr)
2336-{
2337- bool nonliv = FALSE;
2338-
2339- switch (randint1(3))
2340- {
2341- case 1: add_flag(o_ptr->art_flags, TR_ESP_EVIL); break;
2342- case 2: add_flag(o_ptr->art_flags, TR_TELEPATHY); break;
2343- case 3: add_flag(o_ptr->art_flags, TR_ESP_NONLIVING); nonliv = TRUE; break;
2344- }
2345-
2346- return nonliv;
2347-}
2348-
2349-/*!
2350- * @brief オブジェクトにランダムな弱いESPを与える
2351- * @param o_ptr 強化を与えたいオブジェクトの構造体参照ポインタ
2352- * @param extra TRUEならばESPの最大付与数が増える(TRUE -> 3+1d6 / FALSE -> 1d3)
2353- * @return なし
2354- */
2355-static void add_esp_weak(object_type *o_ptr, bool extra)
2356-{
2357- int i;
2358- u32b weak_esp_list[] = {
2359- TR_ESP_ANIMAL,
2360- TR_ESP_UNDEAD,
2361- TR_ESP_DEMON,
2362- TR_ESP_ORC,
2363- TR_ESP_TROLL,
2364- TR_ESP_GIANT,
2365- TR_ESP_DRAGON,
2366- TR_ESP_HUMAN,
2367- TR_ESP_GOOD,
2368- TR_ESP_UNIQUE,
2369- };
2370- const int MAX_ESP_WEAK = sizeof(weak_esp_list) / sizeof(weak_esp_list[0]);
2371- const int add_count = MIN(MAX_ESP_WEAK, (extra) ? (3 + randint1(randint1(6))) : randint1(3));
2372-
2373- /* Add unduplicated weak esp flags randomly */
2374- for (i = 0; i < add_count; ++ i)
2375- {
2376- int choice = rand_range(i, MAX_ESP_WEAK - 1);
2377-
2378- add_flag(o_ptr->art_flags, weak_esp_list[choice]);
2379- weak_esp_list[choice] = weak_esp_list[i];
2380- }
2381-}
2382-
23832330
23842331 /*!
23852332 * @brief 防具系オブジェクトに生成ランクごとの強化を与えるサブルーチン
Show on old repository browser