敵に襲われて分が悪いので衛兵のところに駆け込んだのに無視される、よくあることです。クエストで一時的に現れる敵やModで追加される敵はFactionが適切に設定されていないのか、衛兵が戦ってくれません。そこで、無理やり戦わせてみましょう。
戦闘を始めさせるにはStartCombatを使います。コンソールでも使えるので、衛兵を選択しておいて、StartCombat <敵のリファレンスID> で戦ってくれます。パワーにしてそれっぽくしてみましょう。
作るのは以下の4つです。
- HelpMeCloak : 敵に魔法をばらまくCloakスペル
- HelpMeDamage : 敵にかかるDamageスペル
- AttackMeCloak : 味方に魔法をばらまくCloakスペル
- AttackMeDamage : 味方にかかるDamageスペル
CloakのEffectはEffect ArchetypeをCloak、Casting TypeをFire and Forget、DeliveryをSelfにします。Assoc. Item 1にばらまくDamageスペルを指定します。Power Affects Magnitudeにチェックを入れておきましょう。
DamageのEffectはEffect ArchetypeをScript、Casting TypeをConcentration、DeliveryをAimedにします。Papyrus ScriptsにEffectHelpMeDamageScript(後述)を指定します。Target Conditionsが重要で、以下の条件を設定しておきます。
- 対象が死んでいない
- 対象が戦闘中である
- 対象がプレイヤーと敵対している
それぞれSpellも作ります。
CloakのSpellは実際にゲームで名前が使われますので、きちんと設定しましょう。Magnitudeが影響範囲なので、適切な距離を指定します。
同様にAttackMeCloakのEffectとSpell、AttackMeDamageのEffectとSpellも作ります。
AttackMeDamageのTarget Conditionsはこうなります。
- 対象が死んでいない
- 対象が非戦闘中である
- 対象がプレイヤーと敵対していない
Scriptはこんな感じです。
2 (papyrus)
Scriptname EffectHelpMeDamageScript extends ActiveMagicEffect
Spell Property SpellAttackMeCloak Auto
Event OnEffectStart(Actor akTarget, Actor akCaster)
Debug.Trace(akCaster + " is attacked by " + akTarget + ", help!")
SpellAttackMeCloak.Cast(akTarget)
EndEvent
こちらがAttackMeの方です。
3 (papyrus)
Scriptname EffectAttackMeDmgScript extends ActiveMagicEffect
Event OnEffectStart(Actor akTarget, Actor akCaster)
Debug.Trace(akTarget + " hear yell, start combat with " + akCaster)
Target.StartCombat(akCaster)
EndEvent
最後に、HelpMeCloakスペルをプレイヤーに持たせましょう。
一連の流れをまとめるとこうなります。
- プレイヤーがHelpMeCloakスペルを使う。
- 周りの敵にHelpMeDamageスペルがばらまかれる。
- 周りの敵がAttackMeCloakスペルを使う。
- 周りの味方にAttackMeDamageスペルがばらまかれる。
- 味方が敵を攻撃する。
Immersive World Encountersで追加される山賊の大群に襲われてホワイトランに逃げ込んだら門番にも街中の衛兵にも無視されたので、このパワーを使ってみたらうまくいきました。