• R/O
  • HTTP
  • SSH
  • HTTPS

hengband: Commit

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


Commit MetaInfo

Revision4c8ba2c65f8e5153b95776fdbbc167c4f84ffef6 (tree)
Time2019-03-14 19:06:12
Authordeskull <deskull@user...>
Commiterdeskull

Log Message

[Refactor] #37353 one_low_esp() one_ability() one_activation() to object-boost.c.

Change Summary

Incremental Difference

--- a/src/artifact.c
+++ b/src/artifact.c
@@ -104,178 +104,6 @@ void one_lordly_high_resistance(object_type *o_ptr)
104104
105105
106106 /*!
107- * @brief 対象のオブジェクトに弱いESPを一つ付加する。/ Choose one lower rank esp
108- * @details 候補は動物、アンデッド、悪魔、オーク、トロル、巨人、
109- * ドラゴン、人間、善良、ユニークESPのいずれかであり、重複の抑止はない。
110- * @param o_ptr 対象のオブジェクト構造体ポインタ
111- * @return なし
112- */
113-void one_low_esp(object_type *o_ptr)
114-{
115- switch (randint1(10))
116- {
117- case 1: add_flag(o_ptr->art_flags, TR_ESP_ANIMAL); break;
118- case 2: add_flag(o_ptr->art_flags, TR_ESP_UNDEAD); break;
119- case 3: add_flag(o_ptr->art_flags, TR_ESP_DEMON); break;
120- case 4: add_flag(o_ptr->art_flags, TR_ESP_ORC); break;
121- case 5: add_flag(o_ptr->art_flags, TR_ESP_TROLL); break;
122- case 6: add_flag(o_ptr->art_flags, TR_ESP_GIANT); break;
123- case 7: add_flag(o_ptr->art_flags, TR_ESP_DRAGON); break;
124- case 8: add_flag(o_ptr->art_flags, TR_ESP_HUMAN); break;
125- case 9: add_flag(o_ptr->art_flags, TR_ESP_GOOD); break;
126- case 10: add_flag(o_ptr->art_flags, TR_ESP_UNIQUE); break;
127- }
128-}
129-
130-
131-/*!
132- * @brief 対象のオブジェクトに能力を一つ付加する。/ Choose one random ability
133- * @details 候補は浮遊、永久光源+1、透明視、警告、遅消化、急回復、麻痺知らず、経験値維持のいずれか。
134- * 重複の抑止はない。
135- * @param o_ptr 対象のオブジェクト構造体ポインタ
136- * @return なし
137- */
138-void one_ability(object_type *o_ptr)
139-{
140- switch (randint0(10))
141- {
142- case 0: add_flag(o_ptr->art_flags, TR_LEVITATION); break;
143- case 1: add_flag(o_ptr->art_flags, TR_LITE_1); break;
144- case 2: add_flag(o_ptr->art_flags, TR_SEE_INVIS); break;
145- case 3: add_flag(o_ptr->art_flags, TR_WARNING); break;
146- case 4: add_flag(o_ptr->art_flags, TR_SLOW_DIGEST); break;
147- case 5: add_flag(o_ptr->art_flags, TR_REGEN); break;
148- case 6: add_flag(o_ptr->art_flags, TR_FREE_ACT); break;
149- case 7: add_flag(o_ptr->art_flags, TR_HOLD_EXP); break;
150- case 8:
151- case 9:
152- one_low_esp(o_ptr);
153- break;
154- }
155-}
156-
157-/*!
158- * @brief 対象のオブジェクトに発動を一つ付加する。/ Choose one random activation
159- * @details 候補多数。ランダムアーティファクトのバイアスには一切依存せず、
160- * whileループによる構造で能力的に強力なものほど確率を落としている。
161- * @param o_ptr 対象のオブジェクト構造体ポインタ
162- * @return なし
163- */
164-void one_activation(object_type *o_ptr)
165-{
166- int type = 0;
167- PERCENTAGE chance = 0;
168-
169- while (randint1(100) >= chance)
170- {
171- type = randint1(255);
172- switch (type)
173- {
174- case ACT_SUNLIGHT:
175- case ACT_BO_MISS_1:
176- case ACT_BA_POIS_1:
177- case ACT_BO_ELEC_1:
178- case ACT_BO_ACID_1:
179- case ACT_BO_COLD_1:
180- case ACT_BO_FIRE_1:
181- case ACT_CONFUSE:
182- case ACT_SLEEP:
183- case ACT_QUAKE:
184- case ACT_CURE_LW:
185- case ACT_CURE_MW:
186- case ACT_CURE_POISON:
187- case ACT_BERSERK:
188- case ACT_LIGHT:
189- case ACT_MAP_LIGHT:
190- case ACT_DEST_DOOR:
191- case ACT_STONE_MUD:
192- case ACT_TELEPORT:
193- chance = 101;
194- break;
195- case ACT_BA_COLD_1:
196- case ACT_BA_FIRE_1:
197- case ACT_HYPODYNAMIA_1:
198- case ACT_TELE_AWAY:
199- case ACT_ESP:
200- case ACT_RESIST_ALL:
201- case ACT_DETECT_ALL:
202- case ACT_RECALL:
203- case ACT_SATIATE:
204- case ACT_RECHARGE:
205- chance = 85;
206- break;
207- case ACT_TERROR:
208- case ACT_PROT_EVIL:
209- case ACT_ID_PLAIN:
210- chance = 75;
211- break;
212- case ACT_HYPODYNAMIA_2:
213- case ACT_DRAIN_1:
214- case ACT_BO_MISS_2:
215- case ACT_BA_FIRE_2:
216- case ACT_REST_EXP:
217- chance = 66;
218- break;
219- case ACT_BA_FIRE_3:
220- case ACT_BA_COLD_3:
221- case ACT_BA_ELEC_3:
222- case ACT_WHIRLWIND:
223- case ACT_DRAIN_2:
224- case ACT_CHARM_ANIMAL:
225- chance = 50;
226- break;
227- case ACT_SUMMON_ANIMAL:
228- chance = 40;
229- break;
230- case ACT_DISP_EVIL:
231- case ACT_BA_MISS_3:
232- case ACT_DISP_GOOD:
233- case ACT_BANISH_EVIL:
234- case ACT_GENOCIDE:
235- case ACT_MASS_GENO:
236- case ACT_CHARM_UNDEAD:
237- case ACT_CHARM_OTHER:
238- case ACT_SUMMON_PHANTOM:
239- case ACT_REST_ALL:
240- case ACT_RUNE_EXPLO:
241- chance = 33;
242- break;
243- case ACT_CALL_CHAOS:
244- case ACT_ROCKET:
245- case ACT_CHARM_ANIMALS:
246- case ACT_CHARM_OTHERS:
247- case ACT_SUMMON_ELEMENTAL:
248- case ACT_CURE_700:
249- case ACT_SPEED:
250- case ACT_ID_FULL:
251- case ACT_RUNE_PROT:
252- chance = 25;
253- break;
254- case ACT_CURE_1000:
255- case ACT_XTRA_SPEED:
256- case ACT_DETECT_XTRA:
257- case ACT_DIM_DOOR:
258- chance = 10;
259- break;
260- case ACT_SUMMON_UNDEAD:
261- case ACT_SUMMON_DEMON:
262- case ACT_WRAITH:
263- case ACT_INVULN:
264- case ACT_ALCHEMY:
265- chance = 5;
266- break;
267- default:
268- chance = 0;
269- }
270- }
271-
272- /* A type was chosen... */
273- o_ptr->xtra2 = (byte_hack)type;
274- add_flag(o_ptr->art_flags, TR_ACTIVATE);
275- o_ptr->timeout = 0;
276-}
277-
278-/*!
279107 * @brief ランダムアーティファクト生成中、対象のオブジェクトを呪いのアーティファクトにする経過処理。/ generation process of cursed artifact.
280108 * @details pval、AC、命中、ダメージが正の場合、符号反転の上1d4だけ悪化させ、重い呪い、呪いフラグを必ず付加。
281109 * 祝福を無効。確率に応じて、永遠の呪い、太古の怨念、経験値吸収、弱い呪いの継続的付加、強い呪いの継続的付加、HP吸収の呪い、
--- a/src/artifact.h
+++ b/src/artifact.h
@@ -1,8 +1,5 @@
11 /* artifact.c */
22 extern void one_lordly_high_resistance(object_type *o_ptr);
3-extern void one_low_esp(object_type *o_ptr);
4-extern void one_ability(object_type *o_ptr);
5-extern void one_activation(object_type *o_ptr);
63 extern bool create_artifact(object_type *o_ptr, bool a_scroll);
74 extern int activation_index(object_type *o_ptr);
85 extern const activation_type* find_activation_info(object_type *o_ptr);
--- a/src/object-boost.c
+++ b/src/object-boost.c
@@ -1,5 +1,7 @@
11 #include "angband.h"
22 #include "object-boost.h"
3+#include "object-boost.h"
4+#include "cmd-activate.h"
35
46 /*!
57 * @brief 上質以上のオブジェクトに与えるための各種ボーナスを正規乱数も加えて算出する。
@@ -254,3 +256,175 @@ void one_resistance(object_type *o_ptr)
254256 }
255257
256258
259+/*!
260+ * @brief 対象のオブジェクトに能力を一つ付加する。/ Choose one random ability
261+ * @details 候補は浮遊、永久光源+1、透明視、警告、遅消化、急回復、麻痺知らず、経験値維持のいずれか。
262+ * 重複の抑止はない。
263+ * @param o_ptr 対象のオブジェクト構造体ポインタ
264+ * @return なし
265+ */
266+void one_ability(object_type *o_ptr)
267+{
268+ switch (randint0(10))
269+ {
270+ case 0: add_flag(o_ptr->art_flags, TR_LEVITATION); break;
271+ case 1: add_flag(o_ptr->art_flags, TR_LITE_1); break;
272+ case 2: add_flag(o_ptr->art_flags, TR_SEE_INVIS); break;
273+ case 3: add_flag(o_ptr->art_flags, TR_WARNING); break;
274+ case 4: add_flag(o_ptr->art_flags, TR_SLOW_DIGEST); break;
275+ case 5: add_flag(o_ptr->art_flags, TR_REGEN); break;
276+ case 6: add_flag(o_ptr->art_flags, TR_FREE_ACT); break;
277+ case 7: add_flag(o_ptr->art_flags, TR_HOLD_EXP); break;
278+ case 8:
279+ case 9:
280+ one_low_esp(o_ptr);
281+ break;
282+ }
283+}
284+
285+
286+/*!
287+ * @brief 対象のオブジェクトに弱いESPを一つ付加する。/ Choose one lower rank esp
288+ * @details 候補は動物、アンデッド、悪魔、オーク、トロル、巨人、
289+ * ドラゴン、人間、善良、ユニークESPのいずれかであり、重複の抑止はない。
290+ * @param o_ptr 対象のオブジェクト構造体ポインタ
291+ * @return なし
292+ */
293+void one_low_esp(object_type *o_ptr)
294+{
295+ switch (randint1(10))
296+ {
297+ case 1: add_flag(o_ptr->art_flags, TR_ESP_ANIMAL); break;
298+ case 2: add_flag(o_ptr->art_flags, TR_ESP_UNDEAD); break;
299+ case 3: add_flag(o_ptr->art_flags, TR_ESP_DEMON); break;
300+ case 4: add_flag(o_ptr->art_flags, TR_ESP_ORC); break;
301+ case 5: add_flag(o_ptr->art_flags, TR_ESP_TROLL); break;
302+ case 6: add_flag(o_ptr->art_flags, TR_ESP_GIANT); break;
303+ case 7: add_flag(o_ptr->art_flags, TR_ESP_DRAGON); break;
304+ case 8: add_flag(o_ptr->art_flags, TR_ESP_HUMAN); break;
305+ case 9: add_flag(o_ptr->art_flags, TR_ESP_GOOD); break;
306+ case 10: add_flag(o_ptr->art_flags, TR_ESP_UNIQUE); break;
307+ }
308+}
309+
310+
311+/*!
312+ * @brief 対象のオブジェクトに発動を一つ付加する。/ Choose one random activation
313+ * @details 候補多数。ランダムアーティファクトのバイアスには一切依存せず、
314+ * whileループによる構造で能力的に強力なものほど確率を落としている。
315+ * @param o_ptr 対象のオブジェクト構造体ポインタ
316+ * @return なし
317+ */
318+void one_activation(object_type *o_ptr)
319+{
320+ int type = 0;
321+ PERCENTAGE chance = 0;
322+
323+ while (randint1(100) >= chance)
324+ {
325+ type = randint1(255);
326+ switch (type)
327+ {
328+ case ACT_SUNLIGHT:
329+ case ACT_BO_MISS_1:
330+ case ACT_BA_POIS_1:
331+ case ACT_BO_ELEC_1:
332+ case ACT_BO_ACID_1:
333+ case ACT_BO_COLD_1:
334+ case ACT_BO_FIRE_1:
335+ case ACT_CONFUSE:
336+ case ACT_SLEEP:
337+ case ACT_QUAKE:
338+ case ACT_CURE_LW:
339+ case ACT_CURE_MW:
340+ case ACT_CURE_POISON:
341+ case ACT_BERSERK:
342+ case ACT_LIGHT:
343+ case ACT_MAP_LIGHT:
344+ case ACT_DEST_DOOR:
345+ case ACT_STONE_MUD:
346+ case ACT_TELEPORT:
347+ chance = 101;
348+ break;
349+ case ACT_BA_COLD_1:
350+ case ACT_BA_FIRE_1:
351+ case ACT_HYPODYNAMIA_1:
352+ case ACT_TELE_AWAY:
353+ case ACT_ESP:
354+ case ACT_RESIST_ALL:
355+ case ACT_DETECT_ALL:
356+ case ACT_RECALL:
357+ case ACT_SATIATE:
358+ case ACT_RECHARGE:
359+ chance = 85;
360+ break;
361+ case ACT_TERROR:
362+ case ACT_PROT_EVIL:
363+ case ACT_ID_PLAIN:
364+ chance = 75;
365+ break;
366+ case ACT_HYPODYNAMIA_2:
367+ case ACT_DRAIN_1:
368+ case ACT_BO_MISS_2:
369+ case ACT_BA_FIRE_2:
370+ case ACT_REST_EXP:
371+ chance = 66;
372+ break;
373+ case ACT_BA_FIRE_3:
374+ case ACT_BA_COLD_3:
375+ case ACT_BA_ELEC_3:
376+ case ACT_WHIRLWIND:
377+ case ACT_DRAIN_2:
378+ case ACT_CHARM_ANIMAL:
379+ chance = 50;
380+ break;
381+ case ACT_SUMMON_ANIMAL:
382+ chance = 40;
383+ break;
384+ case ACT_DISP_EVIL:
385+ case ACT_BA_MISS_3:
386+ case ACT_DISP_GOOD:
387+ case ACT_BANISH_EVIL:
388+ case ACT_GENOCIDE:
389+ case ACT_MASS_GENO:
390+ case ACT_CHARM_UNDEAD:
391+ case ACT_CHARM_OTHER:
392+ case ACT_SUMMON_PHANTOM:
393+ case ACT_REST_ALL:
394+ case ACT_RUNE_EXPLO:
395+ chance = 33;
396+ break;
397+ case ACT_CALL_CHAOS:
398+ case ACT_ROCKET:
399+ case ACT_CHARM_ANIMALS:
400+ case ACT_CHARM_OTHERS:
401+ case ACT_SUMMON_ELEMENTAL:
402+ case ACT_CURE_700:
403+ case ACT_SPEED:
404+ case ACT_ID_FULL:
405+ case ACT_RUNE_PROT:
406+ chance = 25;
407+ break;
408+ case ACT_CURE_1000:
409+ case ACT_XTRA_SPEED:
410+ case ACT_DETECT_XTRA:
411+ case ACT_DIM_DOOR:
412+ chance = 10;
413+ break;
414+ case ACT_SUMMON_UNDEAD:
415+ case ACT_SUMMON_DEMON:
416+ case ACT_WRAITH:
417+ case ACT_INVULN:
418+ case ACT_ALCHEMY:
419+ chance = 5;
420+ break;
421+ default:
422+ chance = 0;
423+ }
424+ }
425+
426+ /* A type was chosen... */
427+ o_ptr->xtra2 = (byte_hack)type;
428+ add_flag(o_ptr->art_flags, TR_ACTIVATE);
429+ o_ptr->timeout = 0;
430+}
--- a/src/object-boost.h
+++ b/src/object-boost.h
@@ -8,6 +8,9 @@ extern void one_high_resistance(object_type *o_ptr);
88 extern void one_ele_resistance(object_type *o_ptr);
99 extern void dragon_resist(object_type * o_ptr);
1010 extern void one_resistance(object_type *o_ptr);
11+extern void one_low_esp(object_type *o_ptr);
12+extern void one_ability(object_type *o_ptr);
13+extern void one_activation(object_type *o_ptr);
1114
1215
1316 extern void apply_magic_weapon(object_type *o_ptr, DEPTH level, int power);
Show on old repository browser