Hengband  2.2.1
関数
object-boost.c ファイル
#include "angband.h"
#include "floor.h"
#include "object-boost.h"
#include "cmd-activate.h"
object-boost.c の依存先関係図:

関数

int m_bonus (int max, DEPTH level)
 上質以上のオブジェクトに与えるための各種ボーナスを正規乱数も加えて算出する。 Help determine an "enchantment bonus" for an object. [詳解]
 
void one_sustain (object_type *o_ptr)
 対象のオブジェクトにランダムな能力維持を一つ付加する。/ Choose one random sustain [詳解]
 
bool add_esp_strong (object_type *o_ptr)
 オブジェクトにランダムな強いESPを与える [詳解]
 
void add_esp_weak (object_type *o_ptr, bool extra)
 オブジェクトにランダムな弱いESPを与える [詳解]
 
void one_ele_resistance (object_type *o_ptr)
 対象のオブジェクトに元素耐性を一つ付加する。/ Choose one random element resistance [詳解]
 
void one_dragon_ele_resistance (object_type *o_ptr)
 対象のオブジェクトにドラゴン装備向け元素耐性を一つ付加する。/ Choose one random element or poison resistance [詳解]
 
void one_high_resistance (object_type *o_ptr)
 対象のオブジェクトにランダムな上位耐性を一つ付加する。/ Choose one random high resistance [詳解]
 
void dragon_resist (object_type *o_ptr)
 ドラゴン装備にランダムな耐性を与える [詳解]
 
void one_resistance (object_type *o_ptr)
 対象のオブジェクトに耐性を一つ付加する。/ Choose one random resistance [詳解]
 
void one_ability (object_type *o_ptr)
 対象のオブジェクトに能力を一つ付加する。/ Choose one random ability [詳解]
 
void one_low_esp (object_type *o_ptr)
 対象のオブジェクトに弱いESPを一つ付加する。/ Choose one lower rank esp [詳解]
 
void one_activation (object_type *o_ptr)
 対象のオブジェクトに発動を一つ付加する。/ Choose one random activation [詳解]
 
void one_lordly_high_resistance (object_type *o_ptr)
 対象のオブジェクトに王者の指輪向けの上位耐性を一つ付加する。/ Choose one random high resistance [詳解]
 

関数詳解

◆ add_esp_strong()

bool add_esp_strong ( object_type o_ptr)

オブジェクトにランダムな強いESPを与える

引数
o_ptr強化を与えたいオブジェクトの構造体参照ポインタ
戻り値
TR_ESP_NONLIVINGがついたならばTRUE

◆ add_esp_weak()

void add_esp_weak ( object_type o_ptr,
bool  extra 
)

オブジェクトにランダムな弱いESPを与える

引数
o_ptr強化を与えたいオブジェクトの構造体参照ポインタ
extraTRUEならばESPの最大付与数が増える(TRUE -> 3+1d6 / FALSE -> 1d3)
戻り値
なし

◆ dragon_resist()

void dragon_resist ( object_type o_ptr)

ドラゴン装備にランダムな耐性を与える

引数
o_ptr強化を与えたいオブジェクトの構造体参照ポインタ
戻り値
なし
呼び出し関係図:

◆ m_bonus()

int m_bonus ( int  max,
DEPTH  level 
)

上質以上のオブジェクトに与えるための各種ボーナスを正規乱数も加えて算出する。 Help determine an "enchantment bonus" for an object.

引数
maxボーナス値の限度
levelボーナス値に加味する基準生成階
戻り値
算出されたボーナス値

To avoid floating point but still provide a smooth distribution of bonuses,
we simply round the results of division in such a way as to "average" the
correct floating point value.

This function has been changed. It uses "randnor()" to choose values from
a normal distribution, whose mean moves from zero towards the max as the
level increases, and whose standard deviation is equal to 1/4 of the max,
and whose values are forced to lie between zero and the max, inclusive.

Since the "level" rarely passes 100 before Morgoth is dead, it is very
rare to get the "full" enchantment on an object, even a deep levels.

It is always possible (albeit unlikely) to get the "full" enchantment.

A sample distribution of values from "m_bonus(10, N)" is shown below:

N 0 1 2 3 4 5 6 7 8 9 10
— -— -— -— -— -— -— -— -— -— -— -—
0 66.37 13.01 9.73 5.47 2.89 1.31 0.72 0.26 0.12 0.09 0.03
8 46.85 24.66 12.13 8.13 4.20 2.30 1.05 0.36 0.19 0.08 0.05
16 30.12 27.62 18.52 10.52 6.34 3.52 1.95 0.90 0.31 0.15 0.05
24 22.44 15.62 30.14 12.92 8.55 5.30 2.39 1.63 0.62 0.28 0.11
32 16.23 11.43 23.01 22.31 11.19 7.18 4.46 2.13 1.20 0.45 0.41
40 10.76 8.91 12.80 29.51 16.00 9.69 5.90 3.43 1.47 0.88 0.65
48 7.28 6.81 10.51 18.27 27.57 11.76 7.85 4.99 2.80 1.22 0.94
56 4.41 4.73 8.52 11.96 24.94 19.78 11.06 7.18 3.68 1.96 1.78
64 2.81 3.07 5.65 9.17 13.01 31.57 13.70 9.30 6.04 3.04 2.64
72 1.87 1.99 3.68 7.15 10.56 20.24 25.78 12.17 7.52 4.42 4.62
80 1.02 1.23 2.78 4.75 8.37 12.04 27.61 18.07 10.28 6.52 7.33
88 0.70 0.57 1.56 3.12 6.34 10.06 15.76 30.46 12.58 8.47 10.38
96 0.27 0.60 1.25 2.28 4.30 7.60 10.77 22.52 22.51 11.37 16.53
104 0.22 0.42 0.77 1.36 2.62 5.33 8.93 13.05 29.54 15.23 22.53
112 0.15 0.20 0.56 0.87 2.00 3.83 6.86 10.06 17.89 27.31 30.27
120 0.03 0.11 0.31 0.46 1.31 2.48 4.60 7.78 11.67 25.53 45.72
128 0.02 0.01 0.13 0.33 0.83 1.41 3.24 6.17 9.57 14.22 64.07

呼び出し関係図:

◆ one_ability()

void one_ability ( object_type o_ptr)

対象のオブジェクトに能力を一つ付加する。/ Choose one random ability

候補は浮遊、永久光源+1、透明視、警告、遅消化、急回復、麻痺知らず、経験値維持のいずれか。 重複の抑止はない。

引数
o_ptr対象のオブジェクト構造体ポインタ
戻り値
なし
呼び出し関係図:

◆ one_activation()

void one_activation ( object_type o_ptr)

対象のオブジェクトに発動を一つ付加する。/ Choose one random activation

候補多数。ランダムアーティファクトのバイアスには一切依存せず、 whileループによる構造で能力的に強力なものほど確率を落としている。

引数
o_ptr対象のオブジェクト構造体ポインタ
戻り値
なし

◆ one_dragon_ele_resistance()

void one_dragon_ele_resistance ( object_type o_ptr)

対象のオブジェクトにドラゴン装備向け元素耐性を一つ付加する。/ Choose one random element or poison resistance

候補は1/7の確率で毒、6/7の確率で火炎、冷気、電撃、酸のいずれか(one_ele_resistance()のコール)であり、重複の抑止はない。

引数
o_ptr対象のオブジェクト構造体ポインタ
戻り値
なし
呼び出し関係図:

◆ one_ele_resistance()

void one_ele_resistance ( object_type o_ptr)

対象のオブジェクトに元素耐性を一つ付加する。/ Choose one random element resistance

候補は火炎、冷気、電撃、酸のいずれかであり、重複の抑止はない。

引数
o_ptr対象のオブジェクト構造体ポインタ
戻り値
なし

◆ one_high_resistance()

void one_high_resistance ( object_type o_ptr)

対象のオブジェクトにランダムな上位耐性を一つ付加する。/ Choose one random high resistance

重複の抑止はない。候補は毒、閃光、暗黒、破片、盲目、混乱、地獄、因果混乱、カオス、劣化、恐怖のいずれか。

引数
o_ptr対象のオブジェクト構造体ポインタ
戻り値
なし

◆ one_lordly_high_resistance()

void one_lordly_high_resistance ( object_type o_ptr)

対象のオブジェクトに王者の指輪向けの上位耐性を一つ付加する。/ Choose one random high resistance

候補は閃光、暗黒、破片、盲目、混乱、地獄、因果混乱、カオス、恐怖であり 王者の指輪にあらかじめついている耐性をone_high_resistance()から除外したものである。 ランダム付加そのものに重複の抑止はない。

引数
o_ptr対象のオブジェクト構造体ポインタ
戻り値
なし

◆ one_low_esp()

void one_low_esp ( object_type o_ptr)

対象のオブジェクトに弱いESPを一つ付加する。/ Choose one lower rank esp

候補は動物、アンデッド、悪魔、オーク、トロル、巨人、 ドラゴン、人間、善良、ユニークESPのいずれかであり、重複の抑止はない。

引数
o_ptr対象のオブジェクト構造体ポインタ
戻り値
なし

◆ one_resistance()

void one_resistance ( object_type o_ptr)

対象のオブジェクトに耐性を一つ付加する。/ Choose one random resistance

1/3で元素耐性(one_ele_resistance())、2/3で上位耐性(one_high_resistance) をコールする。重複の抑止はない。

引数
o_ptr対象のオブジェクト構造体ポインタ
戻り値
なし
呼び出し関係図:

◆ one_sustain()

void one_sustain ( object_type o_ptr)

対象のオブジェクトにランダムな能力維持を一つ付加する。/ Choose one random sustain

重複の抑止はない。

引数
o_ptr対象のオブジェクト構造体ポインタ
戻り値
なし