解析

概要

自然回復処理等を行なっている、process_world_aux_hp_and_spについて簡単にまとめる。
この処理は上からこの順番で10ゲームターン毎に行う。
加速が高い場合、数回行動につき1度だけ発生する、ということに留意すべきである。
なお、ダメージの類は全てNOESCAPE属性だが、この属性で特別なことは起こらないようだ。

毒ダメージ

毒状態であり、無敵でなければ1点のダメージを受ける。
また、HPの自然回復が0になる。

切り傷ダメージ

無敵でなければ、傷の深さによって以下のダメージを受ける。
また、HPの自然回復が0になる。

傷の深さダメージ名称
1000200致命傷
20080ひどい深手
10032重傷
5016大変な傷
257ひどい傷
103軽傷
10未満1かすり傷

日光ダメージ

種族が吸血鬼であるか吸血鬼変化中のときのチェック。

  • 閃光耐性を持たず
  • 日中
  • 地上の
  • 明るいところにいるか、暗闇エゴでなく燃料切れでない光源を装備している
  • 無敵でない

以上を満たすとき、1点の不可避ダメージを受ける。 また、HPの自然回復が0になる。

溶岩ダメージ

溶岩の上に居るとき、無敵でなく、火の免疫を持たないならばダメージを受ける。

基本ダメージ

  • 深い溶岩の上に居るとき
    • damage = 6000+d4000-1
    • HPの自然回復が0になる
  • 浅い溶岩の上に居て浮遊がないとき
    • damage = 3000+d2000-1
    • HPの自然回復が0になる

耐性による増減

  • エントの場合、damage += damage / 3
  • 火の耐性がある場合、 damage = damage / 3
  • 火の一時的耐性がある場合、damage = damage / 3
  • 浮遊しているとき、damage = damage / 5

最終ダメージ

  • damage /100(切り捨て)のNOESCAPE属性ダメージ
  • (1d100-1< damage%100)のとき1点加算される。

深い水の処理

深い水の上にいて、浮遊しておらず、水泳可能フラグを持っていないとき 総重量が重量限界を越えているならば、1d(レベル)のダメージを受ける。

乗馬のオーラダメージ

免疫を所持していなければ、乗馬のオーラダメージを受ける。
ダメージは(乗馬のレベル/2)で、エントは火のダメージ4/3倍、アンドロイドは電撃のダメージ4/3倍である。
耐性で1/3、一時耐性で1/3になる。

壁のなかにいるとき

壁抜け、幽体化をしていないとき、無敵でなければ1+(レベル/5)点のダメージを受け、HPの自然回復が0になる。
種族が幽霊の場合、このダメージでHPが0未満になることはない。

regen_amount

通常はregen_amount=197だが、餓死寸前では回復量が減る。
空腹の度合いにより、98、33、0と減っていく。

さらに、以下の影響を受ける

  • 急速回復があるとき、regen_amount *= 2
  • 型や構えを使用しているとき、regen_amount /= 2
  • 回復速度減少の呪いがかかっているとき、regen_amount /= 5
  • 休憩または探索状態のとき、regen_amount *= 2

パターンの処理

いずれの場合もHPの自然回復が0になる。

パターンの崩壊

種族がアンバライトで出血中のとき、1/10でパターンの崩壊を引き起こす。

  • 既に足元がPATTERN_TILE_WRECKEDならば、既にパターンは崩壊しているのでこの処理を終了する
  • 10d8のダメージを受ける
  • 半径4の範囲からランダムに床を選び、パターンであればPATTERN_TILE_WRECKEDに置換する作業を35+d45回行なう。
  • プレイヤーの足元をPATTERN_TILE_WRECKEDに置換する。

崩壊処理の後、足元のパターンの種類により効果が発生する。

PATTERN_TILE_END

パターンの終端にいるとき、以下の効果が起きる。

  • 毒、幻覚、朦朧、切り傷、盲目、恐怖が治療される。
  • ステータスと経験値の一時的減少が回復する。
  • 1000ポイントHPを回復する。

PATTERN_TILE_OLD

なにも起きない。

PATTERN_TILE_TELEPORT

階を指定したテレポート、通常テレポート、何もしない、のどれかを選べる。

PATTERN_TILE_WRECKED

壊れたパターンを歩いたことにより、ダメージ200点を受ける。

その他

種族がアンバライトなら1/2で無傷。
そうでなければ、無敵でないとき1d3のダメージを受ける。

upkeep_factorの計算

ペット維持費を計算し、upkeep_factorに加算する。これはMP回復ペナルティで、上限は1000。

ペット維持費

TO DO

特殊な行動中のupkeep_factor

青魔の学習中、忍者の早駆け、剣術家の降鬼陣のときはupkeep_factorに100を加算する。

魔力の回復

回復量 = regen_amount - upkeep_factor * PY_REGEN_NORMAL / 100
この数値は、急回復等考慮した回復率 - ペット維持比*通常時回復率である。

現MP > 最大MPのとき(剣術家)

decay_frac = 最大MP * 32 * 197 + 524
実際の減少量はこれを65536で割った値となる。
なお、現MPが最大MP未満まで減った場合、現MP=最大MPとなる。

現MP < 最大MPかつ 回復量 > 0のとき(MP回復処理)

new_mana_frac = 最大MP * 回復量 + 524
実際の回復量はこれを65536で割った値となる。
なお、現MPが最大MPを越えた場合、現MP=最大MPとなる。

回復量 < 0のとき(MP減衰処理)

reduce_mana_frac = 最大MP * 回復量 + 524
この値は通常時の@のMP自然回復量に等しい。
実際の減少量はこれを65536で割った値となる。
なお、現MPが0未満になる場合、現MP=0となる。

魔道具術師の取り込み魔力回復

回復倍率 = (30 + 知能ボーナス) / 30
ちなみに、知能ボーナスはMAX30である。

杖/魔法棒

new_mana = (regen_amount * 回復倍率 * (最大使用回数+13) ) / 8
この値だけ充填される。なお、65536点充填されると使用回数が1回復する。

ロッド

new_mana = (regen_amount / 197) * (回復倍率 * (最大使用回数+10) * 10 ) / 16
この値だけ充填される。なお、pval*10点充填されると使用回数が1回復する。

ペット制御

ペット維持費が100を越えていてMPが0のとき、ペット維持費が100以下になるまでペットの開放が要求され続ける。

突然変異

回復量の減少がある。 TO DO

体力の回復

降鬼陣の型(剣術家)、早駆け(忍者)の使用中はHPが回復しない。
回復量 = (最大HP * regen_amount + 1442) / 65536
回復後最大HPを越えた場合、現HP=最大HPとする


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-09-29 (月) 09:52:09 (1056d)