Requiemの銀の武器

環境構築

Requiemの銀の武器には不具合があります。実装について調べました。

銀の武器とは

銀の片手剣、銀の矢、銀のボルトなどが用意されています。

銀の武器で攻撃すると大ダメージを与えられる種族がいます。

  • ゴースト
  • ドラウグル
  • 吸血鬼
  • スピリット
  • ウェアウルフ
  • スケルトン
  • ドラゴンプリースト
  • デスハウンド

いわゆるアンデッドと呼ばれる種族全般です。

実装について

Perkで実装されています。

例えばドラウグルならRFTI_Trait_Draugrになります。

攻撃してきた相手が遠隔武器を装備しており、REQ_WeaponType_SilverArrowというキーワードを装備していないならば、受けるダメージが1/10に減少する、という意味になります。

銀の矢で撃ったら通常のダメージ、それ以外の矢で撃ったらダメージが大幅に減ってしまう、ということです。ですので銀の矢なら弓の攻撃力やPerkなどもそのままということになります。

Perkによっては「装備しているとダメージ上昇」という条件になっています。

条件が「装備しているか」ですので、最後の一発を発射すると銀の矢を装備していないことになります。よって銀の矢で撃ったにもかかわらずダメージが変化しなくなってしまいます。これが不具合です。

対策を考える

Perkの条件式ですが、残念ながら「銀の矢で攻撃された」という条件は難しいようです。「銀の弓で攻撃された」なら条件を設定できるのですが、その場合は矢は何でもいいことになってしまいます。

ダメージが増加する条件のPerkないしSpellを用意しておき、スクリプトで銀の矢の装備状況を監視して銀の矢をつがえたらSpellを付与、銀の矢以外をつがえるか弓を外すかしたらSpellを解除、とすればできそうです。

実装

銀の矢を装備しているという状態を判定するためのSpellを用意します。

各種イベントを捕捉し、Spellの付与と解除を行います。

  • 抜刀時にクロスボウと銀のボルトを装備しているならSpellを付与、そうでないなら解除(weaponDraw)
  • 弓で矢を番えたら、それが銀の矢ならSpellを付与、そうでないなら解除(bowDraw)
  • ボルトの装填が完了したら、それが銀のボルトならSpellを付与、そうでないなら解除(reloadStop)

これですべての場面でSpellの付与状況が正しくなりました。

銀の矢を装備しているかどうかの判定はRequiemのPerkを同様にWornHasKeywordを使います。

RequiemのPerkを修正し、条件に「Spellの効果を持っている」を追加します。Perkによっては「持っていない」なので注意します。

Equipment Managerに実装しました。

タイトルとURLをコピーしました