Hengband
2.2.1
|
アーティファクトの生成と管理 / Artifact code [詳解]
#include "angband.h"
#include "util.h"
#include "artifact.h"
#include "cmd-smith.h"
#include "avatar.h"
#include "floor.h"
#include "cmd-activate.h"
#include "object.h"
#include "objectkind.h"
#include "object-boost.h"
#include "object-curse.h"
#include "object-ego.h"
#include "object-flavor.h"
#include "object-hook.h"
#include "spells-object.h"
#include "files.h"
#include "grid.h"
#include "monster.h"
#include "view-mainwindow.h"
#include "player-class.h"
#include "player-personality.h"
#include "world.h"
関数 | |
static bool | has_extreme_damage_rate (object_type *o_ptr) |
static bool | weakening_artifact (object_type *o_ptr) |
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 (object_type *o_ptr, char *return_name, bool armour, int power) |
ランダムアーティファクト生成中、対象のオブジェクトに名前を与える。/ Set name of randomartifact. [詳解] | |
bool | become_random_artifact (object_type *o_ptr, bool a_scroll) |
ランダムアーティファクト生成のメインルーチン [詳解] | |
int | activation_index (object_type *o_ptr) |
オブジェクトから能力発動IDを取得する。 [詳解] | |
const activation_type * | find_activation_info (object_type *o_ptr) |
オブジェクトから発動効果構造体のポインタを取得する。 [詳解] | |
void | random_artifact_resistance (object_type *o_ptr, artifact_type *a_ptr) |
固定アーティファクト生成時の特別なハードコーディング処理を行う。. [詳解] | |
bool | create_named_art (ARTIFACT_IDX a_idx, POSITION y, POSITION x) |
フロアの指定された位置に固定アーティファクトを生成する。 / Create the artifact of the specified number [詳解] | |
HIT_POINT | calc_arm_avgdamage (object_type *o_ptr) |
bool | make_artifact (object_type *o_ptr) |
非INSTA_ART型の固定アーティファクトの生成を確率に応じて試行する。 Mega-Hack – Attempt to create one of the "Special Objects" [詳解] | |
bool | make_artifact_special (object_type *o_ptr) |
INSTA_ART型の固定アーティファクトの生成を確率に応じて試行する。 Mega-Hack – Attempt to create one of the "Special Objects" [詳解] | |
変数 | |
artifact_type * | a_info |
char * | a_name |
char * | a_text |
ARTIFACT_IDX | max_a_idx |
const concptr | artifact_bias_name [MAX_BIAS] |
アーティファクトの生成と管理 / Artifact code
int activation_index | ( | object_type * | o_ptr | ) |
オブジェクトから能力発動IDを取得する。
いくつかのケースで定義されている発動効果から、 鍛冶師による付与>固定アーティファクト>エゴ>ランダムアーティファクト>ベースアイテムの優先順位で走査していく。
o_ptr | 対象のオブジェクト構造体ポインタ |
bool become_random_artifact | ( | object_type * | o_ptr, |
bool | a_scroll | ||
) |
ランダムアーティファクト生成のメインルーチン
既に生成が済んでいるオブジェクトの構造体を、アーティファクトとして強化する。
o_ptr | 対象のオブジェクト構造体ポインタ |
a_scroll | アーティファクト生成の巻物上の処理。呪いのアーティファクトが生成対象外となる。 |
HIT_POINT calc_arm_avgdamage | ( | object_type * | o_ptr | ) |
bool create_named_art | ( | ARTIFACT_IDX | a_idx, |
POSITION | y, | ||
POSITION | x | ||
) |
フロアの指定された位置に固定アーティファクトを生成する。 / Create the artifact of the specified number
固定アーティファクト構造体から基本ステータスをコピーした後、所定の座標でdrop_item()で落とす。
a_idx | 生成する固定アーティファクト構造体のID |
y | アイテムを落とす地点のy座標 |
x | アイテムを落とす地点のx座標 |
|
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 | 対象のオブジェクト構造体ポインタ |
|
static |
ランダムアーティファクト生成中、対象のオブジェクトに名前を与える。/ Set name of randomartifact.
確率によって、シンダリン銘、漢字銘、固定名のいずれか一つが与えられる。
o_ptr | 処理中のアイテム参照ポインタ |
return_name | 名前を返すための文字列参照ポインタ |
armour | 対象のオブジェクトが防具が否か |
power | 銘の基準となるオブジェクトの価値レベル(0=呪い、1=低位、2=中位、3以上=高位) |
|
static |
ランダムアーティファクト生成中、対象のオブジェクトにバイアスに依存した発動を与える。/ Add one activaton of randam artifact depend on bias.
バイアスが無い場合、一部のバイアスの確率によっては one_ability() に処理が移行する。
o_ptr | 対象のオブジェクト構造体ポインタ |
|
static |
bool make_artifact | ( | object_type * | o_ptr | ) |
非INSTA_ART型の固定アーティファクトの生成を確率に応じて試行する。 Mega-Hack – Attempt to create one of the "Special Objects"
o_ptr | 生成に割り当てたいオブジェクトの構造体参照ポインタ |
Attempt to change an object into an artifact
This routine should only be called by "apply_magic()"
Note – see "make_artifact_special()" and "apply_magic()"
bool make_artifact_special | ( | object_type * | o_ptr | ) |
INSTA_ART型の固定アーティファクトの生成を確率に応じて試行する。 Mega-Hack – Attempt to create one of the "Special Objects"
o_ptr | 生成に割り当てたいオブジェクトの構造体参照ポインタ |
We are only called from "make_object()", and we assume that
"apply_magic()" is called immediately after we return.
Note – see "make_artifact()" and "apply_magic()"
void random_artifact_resistance | ( | object_type * | o_ptr, |
artifact_type * | a_ptr | ||
) |
固定アーティファクト生成時の特別なハードコーディング処理を行う。.
random_artifact_resistance()とあるが実際は固定アーティファクトである。 対象は恐怖の仮面、村正、ロビントンのハープ、龍争虎鬪、ブラッディムーン、羽衣、天女の羽衣、ミリム、 その他追加耐性、特性追加処理。
o_ptr | 対象のオブジェクト構造体ポインタ |
a_ptr | 生成する固定アーティファクト構造体ポインタ |
|
static |
ランダムアーティファクト生成中、対象のオブジェクトにその他特性を付加する。/ Add one misc flag on generation of randam artifact.
優先的に付加される耐性がランダムアーティファクトバイアスに依存して存在する。 原則的候補は各種能力維持、永久光源+1、麻痺知らず、経験値維持、浮遊、透明視、急回復、遅消化、 乱テレポート、反魔法、反テレポート、警告、テレパシー、各種ESP、一部装備に殺戮修正。
o_ptr | 対象のオブジェクト構造体ポインタ |
|
static |
ランダムアーティファクト生成中、対象のオブジェクトにpval能力を付加する。/ Add one pval on generation of randam artifact.
優先的に付加されるpvalがランダムアーティファクトバイアスに依存して存在する。 原則的候補は腕力、知力、賢さ、器用さ、耐久、魅力、探索、隠密、赤外線視力、加速。武器のみ採掘、追加攻撃も候補に入る。
o_ptr | 対象のオブジェクト構造体ポインタ |
|
static |
ランダムアーティファクト生成中、対象のオブジェクトに耐性を付加する。/ Add one resistance on generation of randam artifact.
優先的に付加される耐性がランダムアーティファクトバイアスに依存して存在する。 原則的候補は火炎、冷気、電撃、酸(以上免疫の可能性もあり)、 毒、閃光、暗黒、破片、轟音、盲目、混乱、地獄、カオス、劣化、恐怖、火オーラ、冷気オーラ、電撃オーラ、反射。 戦士系バイアスのみ反魔もつく。
o_ptr | 対象のオブジェクト構造体ポインタ |
|
static |
ランダムアーティファクト生成中、対象のオブジェクトにスレイ効果を付加する。/ Add one slaying on generation of randam artifact.
優先的に付加される耐性がランダムアーティファクトバイアスに依存して存在する。 原則的候補は強力射、高速射、混沌効果、吸血効果、祝福、投擲しやすい、焼棄、凍結、電撃、溶解、毒殺、 動物スレイ、邪悪スレイ、悪魔スレイ、不死スレイ、オークスレイ、トロルスレイ、巨人スレイ、ドラゴンスレイ、 *ドラゴンスレイ*、人間スレイ、切れ味、地震、理力。
o_ptr | 対象のオブジェクト構造体ポインタ |
|
static |
artifact_type* a_info |
char* a_name |
char* a_text |
ARTIFACT_IDX max_a_idx |