Hengband  2.1.4
 全て データ構造 ファイル 関数 変数 型定義 マクロ定義 ページ
マクロ定義 | 関数 | 変数
artifact.c

アーティファクトの生成と管理 / Artifact code [詳細]

#include "angband.h"
artifact.cのインクルード依存関係図

マクロ定義

#define SINDARIN_NAME   10
 ランダムアーティファクトにシンダリン銘をつける確率 [詳細]
 
#define TABLE_NAME   20
 ランダムアーティファクトに漢字銘をつける確率(正確には TABLE_NAME - SINDARIN_NAME %)となる [詳細]
 
#define A_CURSED   13
 1/nの確率で生成の巻物以外のランダムアーティファクトが呪いつきになる。 [詳細]
 
#define WEIRD_LUCK   12
 1/nの確率でrandom_resistance()の処理中バイアス外の耐性がつき、create_artifactで4を超えるpvalが許可される。 [詳細]
 
#define BIAS_LUCK   20
 1/nの確率でrandom_resistance()で付加する元素耐性が免疫になる [詳細]
 
#define IM_LUCK   7
 1/nの確率でrandom_resistance()で複数免疫の除去処理が免除される [詳細]
 
#define ACTIVATION_CHANCE   3
 1/nの確率でランダムアーティファクトに発動が付加される。ただし防具はさらに1/2 [詳細]
 

関数

void one_sustain (object_type *o_ptr)
 対象のオブジェクトにランダムな能力維持を一つ付加する。/ Choose one random sustain [詳細]
 
void one_high_resistance (object_type *o_ptr)
 対象のオブジェクトにランダムな上位耐性を一つ付加する。/ Choose one random high resistance [詳細]
 
void one_lordly_high_resistance (object_type *o_ptr)
 対象のオブジェクトに王者の指輪向けの上位耐性を一つ付加する。/ Choose one random high resistance [詳細]
 
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_low_esp (object_type *o_ptr)
 対象のオブジェクトに弱いESPを一つ付加する。/ Choose one lower rank esp [詳細]
 
void one_resistance (object_type *o_ptr)
 対象のオブジェクトに耐性を一つ付加する。/ Choose one random resistance [詳細]
 
void one_ability (object_type *o_ptr)
 対象のオブジェクトに能力を一つ付加する。/ Choose one random ability [詳細]
 
void one_activation (object_type *o_ptr)
 対象のオブジェクトに発動を一つ付加する。/ Choose one random activation [詳細]
 
static void curse_artifact (object_type *o_ptr)
 ランダムアーティファクト生成中、対象のオブジェクトを呪いのアーティファクトにする経過処理。/ generation process of cursed artifact. [詳細]
 
static void random_plus (object_type *o_ptr)
 ランダムアーティファクト生成中、対象のオブジェクトにpval能力を付加する。/ Add one pval on generation of randam artifact. [詳細]
 
static void random_resistance (object_type *o_ptr)
 ランダムアーティファクト生成中、対象のオブジェクトに耐性を付加する。/ Add one resistance on generation of randam artifact. [詳細]
 
static void random_misc (object_type *o_ptr)
 ランダムアーティファクト生成中、対象のオブジェクトにその他特性を付加する。/ Add one misc flag on generation of randam artifact. [詳細]
 
static void random_slay (object_type *o_ptr)
 ランダムアーティファクト生成中、対象のオブジェクトにスレイ効果を付加する。/ Add one slaying on generation of randam artifact. [詳細]
 
static void give_activation_power (object_type *o_ptr)
 ランダムアーティファクト生成中、対象のオブジェクトにバイアスに依存した発動を与える。/ Add one activaton of randam artifact depend on bias. [詳細]
 
static void get_random_name (char *return_name, bool armour, int power)
 ランダムアーティファクト生成中、対象のオブジェクトに名前を与える。/ Set name of randomartifact. [詳細]
 
bool create_artifact (object_type *o_ptr, bool a_scroll)
 ランダムアーティファクト生成のメインルーチン [詳細]
 
int activation_index (object_type *o_ptr)
 オブジェクトから能力発動IDを取得する。 [詳細]
 
const activation_typefind_activation_info (object_type *o_ptr)
 オブジェクトから発動効果構造体のポインタを取得する。 [詳細]
 
static bool activate_dragon_breath (object_type *o_ptr)
 発動によるブレスの属性をアイテムの耐性から選択し、実行を処理する。/ Dragon breath activation [詳細]
 
bool activate_random_artifact (object_type *o_ptr)
 アイテムの発動効果を処理する。 [詳細]
 
void get_bloody_moon_flags (object_type *o_ptr)
 固定アーティファクト『ブラッディムーン』の特性を変更する。 [詳細]
 
void random_artifact_resistance (object_type *o_ptr, artifact_type *a_ptr)
 固定アーティファクト生成時の特別なハードコーディング処理を行う。. [詳細]
 
bool create_named_art (int a_idx, int y, int x)
 フロアの指定された位置に固定アーティファクトを生成する。 / Create the artifact of the specified number [詳細]
 

変数

static int artifact_bias
 アーティファクトのバイアスIDを保管する。 / Use for biased artifact creation [詳細]
 

説明

アーティファクトの生成と管理 / Artifact code

日付
2013/12/11
作者
Copyright (c) 1989 James E. Wilson, Robert A. Koeneke
This software may be copied and distributed for educational, research, and
not for profit purposes provided that this copyright and statement are
included in all such copies.
2013 Deskull rearranged comment for Doxygen.

マクロ定義

#define A_CURSED   13

1/nの確率で生成の巻物以外のランダムアーティファクトが呪いつきになる。

#define ACTIVATION_CHANCE   3

1/nの確率でランダムアーティファクトに発動が付加される。ただし防具はさらに1/2

覚え書き
Bias luck needs to be higher than weird luck, since it is usually tested several times...
#define BIAS_LUCK   20

1/nの確率でrandom_resistance()で付加する元素耐性が免疫になる

#define IM_LUCK   7

1/nの確率でrandom_resistance()で複数免疫の除去処理が免除される

#define SINDARIN_NAME   10

ランダムアーティファクトにシンダリン銘をつける確率

#define TABLE_NAME   20

ランダムアーティファクトに漢字銘をつける確率(正確には TABLE_NAME - SINDARIN_NAME %)となる

#define WEIRD_LUCK   12

1/nの確率でrandom_resistance()の処理中バイアス外の耐性がつき、create_artifactで4を超えるpvalが許可される。

関数

static bool activate_dragon_breath ( object_type o_ptr)
static

発動によるブレスの属性をアイテムの耐性から選択し、実行を処理する。/ Dragon breath activation

対象となる耐性は dragonbreath_info テーブルを参照のこと。

引数
o_ptr対象のオブジェクト構造体ポインタ
戻り値
発動実行の是非を返す。

関数の呼び出しグラフ:

呼出しグラフ:

bool activate_random_artifact ( object_type o_ptr)

アイテムの発動効果を処理する。

activate_random_artifact()とされているが、実際は全発動が統合された。

TODO:
折を見て関数名を修正すること。
引数
o_ptr対象のオブジェクト構造体ポインタ
戻り値
発動実行の是非を返す。

呼出しグラフ:

int activation_index ( object_type o_ptr)

オブジェクトから能力発動IDを取得する。

いくつかのケースで定義されている発動効果から、 鍛冶師による付与>固定アーティファクト>エゴ>ランダムアーティファクト>ベースアイテムの優先順位で走査していく。

引数
o_ptr対象のオブジェクト構造体ポインタ
戻り値
発動効果のIDを返す

関数の呼び出しグラフ:

呼出しグラフ:

bool create_artifact ( object_type o_ptr,
bool  a_scroll 
)

ランダムアーティファクト生成のメインルーチン

既に生成が済んでいるオブジェクトの構造体を、アーティファクトとして強化する。

引数
o_ptr対象のオブジェクト構造体ポインタ
a_scrollアーティファクト生成の巻物上の処理。呪いのアーティファクトが生成対象外となる。
戻り値
常にTRUE(1)を返す

関数の呼び出しグラフ:

呼出しグラフ:

bool create_named_art ( int  a_idx,
int  y,
int  x 
)

フロアの指定された位置に固定アーティファクトを生成する。 / Create the artifact of the specified number

固定アーティファクト構造体から基本ステータスをコピーした後、所定の座標でdrop_item()で落とす。

引数
a_idx生成する固定アーティファクト構造体のID
yアイテムを落とす地点のy座標
xアイテムを落とす地点のx座標
戻り値
生成が成功したか否か、失敗はIDの不全、ベースアイテムの不全、drop_item()の失敗時に起こる。
注意
この処理はdrop_near()内で普通の固定アーティファクトが重ならない性質に依存する. 仮に2個以上存在可能かつ装備品以外の固定アーティファクトが作成されれば drop_near()関数の返り値は信用できなくなる.

関数の呼び出しグラフ:

呼出しグラフ:

static void curse_artifact ( object_type o_ptr)
static

ランダムアーティファクト生成中、対象のオブジェクトを呪いのアーティファクトにする経過処理。/ generation process of cursed artifact.

pval、AC、命中、ダメージが正の場合、符号反転の上1d4だけ悪化させ、重い呪い、呪いフラグを必ず付加。 祝福を無効。確率に応じて、永遠の呪い、太古の怨念、経験値吸収、弱い呪いの継続的付加、強い呪いの継続的付加、HP吸収の呪い、 MP吸収の呪い、乱テレポート、反テレポート、反魔法をつける。

注意
プレイヤーの職業依存処理あり。
引数
o_ptr対象のオブジェクト構造体ポインタ
戻り値
なし

呼出しグラフ:

const activation_type* find_activation_info ( object_type o_ptr)

オブジェクトから発動効果構造体のポインタを取得する。

activation_index() 関数の結果から参照する。

引数
o_ptr対象のオブジェクト構造体ポインタ
戻り値
発動効果構造体のポインタを返す

関数の呼び出しグラフ:

呼出しグラフ:

void get_bloody_moon_flags ( object_type o_ptr)

固定アーティファクト『ブラッディムーン』の特性を変更する。

スレイ2d2種、及びone_resistance()による耐性1d2種、pval2種を得る。

引数
o_ptr対象のオブジェクト構造体(ブラッディムーン)のポインタ
戻り値
なし

関数の呼び出しグラフ:

呼出しグラフ:

static void get_random_name ( char *  return_name,
bool  armour,
int  power 
)
static

ランダムアーティファクト生成中、対象のオブジェクトに名前を与える。/ Set name of randomartifact.

確率によって、シンダリン銘、漢字銘、固定名のいずれか一つが与えられる。

引数
return_name名前を返すための文字列参照ポインタ
armour対象のオブジェクトが防具が否か
power銘の基準となるオブジェクトの価値レベル(0=呪い、1=低位、2=中位、3以上=高位)
戻り値
なし

関数の呼び出しグラフ:

呼出しグラフ:

static void give_activation_power ( object_type o_ptr)
static

ランダムアーティファクト生成中、対象のオブジェクトにバイアスに依存した発動を与える。/ Add one activaton of randam artifact depend on bias.

バイアスが無い場合、一部のバイアスの確率によっては one_ability() に処理が移行する。

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

関数の呼び出しグラフ:

呼出しグラフ:

void one_ability ( object_type o_ptr)

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

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

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

関数の呼び出しグラフ:

呼出しグラフ:

void one_activation ( object_type o_ptr)

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

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

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

呼出しグラフ:

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対象のオブジェクト構造体ポインタ
戻り値
なし

関数の呼び出しグラフ:

呼出しグラフ:

void one_ele_resistance ( object_type o_ptr)

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

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

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

呼出しグラフ:

void one_high_resistance ( object_type o_ptr)

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

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

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

呼出しグラフ:

void one_lordly_high_resistance ( object_type o_ptr)

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

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

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

呼出しグラフ:

void one_low_esp ( object_type o_ptr)

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

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

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

呼出しグラフ:

void one_resistance ( object_type o_ptr)

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

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

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

関数の呼び出しグラフ:

呼出しグラフ:

void one_sustain ( object_type o_ptr)

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

重複の抑止はない。

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

呼出しグラフ:

void random_artifact_resistance ( object_type o_ptr,
artifact_type a_ptr 
)

固定アーティファクト生成時の特別なハードコーディング処理を行う。.

random_artifact_resistance()とあるが実際は固定アーティファクトである。 対象は恐怖の仮面、村正、ロビントンのハープ、龍争虎鬪、ブラッディムーン、羽衣、天女の羽衣、ミリム、 その他追加耐性、特性追加処理。

注意
プレイヤーの各種ステータスに依存した処理がある。
TODO:
折を見て関数名を変更すること。
引数
o_ptr対象のオブジェクト構造体ポインタ
a_ptr生成する固定アーティファクト構造体ポインタ
戻り値
なし

関数の呼び出しグラフ:

呼出しグラフ:

static void random_misc ( object_type o_ptr)
static

ランダムアーティファクト生成中、対象のオブジェクトにその他特性を付加する。/ Add one misc flag on generation of randam artifact.

優先的に付加される耐性がランダムアーティファクトバイアスに依存して存在する。 原則的候補は各種能力維持、永久光源+1、麻痺知らず、経験値維持、浮遊、透明視、急回復、遅消化、 乱テレポート、反魔法、反テレポート、警告、テレパシー、各種ESP、一部装備に殺戮修正。

注意
オブジェクトのtval、svalに依存したハードコーディング処理がある。
引数
o_ptr対象のオブジェクト構造体ポインタ
戻り値
なし

関数の呼び出しグラフ:

呼出しグラフ:

static void random_plus ( object_type o_ptr)
static

ランダムアーティファクト生成中、対象のオブジェクトにpval能力を付加する。/ Add one pval on generation of randam artifact.

優先的に付加されるpvalがランダムアーティファクトバイアスに依存して存在する。 原則的候補は腕力、知力、賢さ、器用さ、耐久、魅力、探索、隠密、赤外線視力、加速。武器のみ採掘、追加攻撃も候補に入る。

注意
オブジェクトのtval、svalに依存したハードコーディング処理がある。
引数
o_ptr対象のオブジェクト構造体ポインタ
戻り値
なし

関数の呼び出しグラフ:

呼出しグラフ:

static void random_resistance ( object_type o_ptr)
static

ランダムアーティファクト生成中、対象のオブジェクトに耐性を付加する。/ Add one resistance on generation of randam artifact.

優先的に付加される耐性がランダムアーティファクトバイアスに依存して存在する。 原則的候補は火炎、冷気、電撃、酸(以上免疫の可能性もあり)、 毒、閃光、暗黒、破片、轟音、盲目、混乱、地獄、カオス、劣化、恐怖、火オーラ、冷気オーラ、電撃オーラ、反射。 戦士系バイアスのみ反魔もつく。

注意
オブジェクトのtval、svalに依存したハードコーディング処理がある。
引数
o_ptr対象のオブジェクト構造体ポインタ
戻り値
なし

呼出しグラフ:

static void random_slay ( object_type o_ptr)
static

ランダムアーティファクト生成中、対象のオブジェクトにスレイ効果を付加する。/ Add one slaying on generation of randam artifact.

優先的に付加される耐性がランダムアーティファクトバイアスに依存して存在する。 原則的候補は強力射、高速射、混沌効果、吸血効果、祝福、投擲しやすい、焼棄、凍結、電撃、溶解、毒殺、 動物スレイ、邪悪スレイ、悪魔スレイ、不死スレイ、オークスレイ、トロルスレイ、巨人スレイ、ドラゴンスレイ、 *ドラゴンスレイ*、人間スレイ、切れ味、地震、理力。

注意
オブジェクトのtval、svalに依存したハードコーディング処理がある。
引数
o_ptr対象のオブジェクト構造体ポインタ
戻り値
なし

呼出しグラフ:

変数

int artifact_bias
static

アーティファクトのバイアスIDを保管する。 / Use for biased artifact creation