rogue > init_probs()


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

呼び出し元

rogue/main()

メモ

データテーブルに格納された確率のデータを再計算し、

テーブル後半に記述された要素のobj_info->probを補正する。

各種データについて

rogue.hにはextern記述されているが、

実体確保の記述を見つけられなかった。

extern.cが実態確保になっている。

rogue/datas/info

ファイル分割されてるときでも領域を確保してくれるんだろうか。

extern struct obj_info arm_info[], pot_info[], ring_info[],
                        scr_info[], things[], ws_info[], weap_info[];

ちなみに個数の設定はrogue.hに、

MASTERコンパイル時との差異を埋めるためのマクロはinit.cにある。

/*
 * Maximum number of different things
 */
#define MAXROOMS        9
#define MAXTHINGS       9
#define MAXOBJ          9
#define MAXPACK         23
#define MAXTRAPS        10
#define AMULETLEVEL     26
#define NUMTHINGS       7       /* number of types of things */
#define MAXPASS         13      /* upper limit on number of passages */
#define NUMLINES        24
#define NUMCOLS         80
#define STATLINE                (NUMLINES - 1)
#define BORE_LEVEL      50

使用関数

rogue/sum_probs()

第一引数に与えられた連続したinfo構造体領域

io_probの持っている値を合計してチェックをかける。

第二引数は連続領域の個数が格納されている。

ソース

/*
 * init_probs:
 *      Initialize the probabilities for the various items
 */
void
init_probs(void)
{
    sumprobs(things, NT);
    sumprobs(pot_info, MP);
    sumprobs(scr_info, MS);
    sumprobs(ring_info, MR);
    sumprobs(ws_info, MWS);
    sumprobs(weap_info, MW);
    sumprobs(arm_info, MA);
}