銀の武器とは
銀の片手剣、銀の矢、銀のボルトなどが用意されています。
銀の武器で攻撃すると大ダメージを与えられる種族がいます。
- ゴースト
- ドラウグル
- 吸血鬼
- スピリット
- ウェアウルフ
- スケルトン
- ドラゴンプリースト
- デスハウンド
いわゆるアンデッドと呼ばれる種族全般です。
実装について
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に実装しました。