2014年7月6日日曜日

クエストを作ってみる。Loose Ends

チュートリアルを参考にしたクエスト作成の補足説明の続きです。



翻訳されたCK WikiはこちらからDLできます。
http://www.nexusmods.com/skyrim/mods/15919

参考にさせていただいたサイト様(敬称略)
スカイリムの夢を見る
skyrimshot 
おばちゃんのスカイリムガイド


※バックアップは忘れずに。

 一本道のクエストラインに分岐やクエストラインから外れないような設定をしていきます。 

クエストの依頼人が死亡した場合(クエスト失敗)
 今回はフォロワーになるNPCが依頼人なので不死の設定( Essential にチェックを入れる)をしておけば問題ありませんが、たとえば護衛クエストなどを作成したい場合は護衛対象が不死だといまいち面白みに欠けますね。
 そんな時は依頼人が死亡した場合に"クエスト失敗"または"クエスト分岐"が起きる設定にします。
 この方法はNPCにスクリプトを追加するので設定しなくてよければその方が良いです。
 クエストの Quest Stage タブを開きます。
 200 のステージを作成を作成します。
 Log Entryテーブルで右クリックから New をクリックします。
 Log Entryフィールドに任意のテキストを入力します。( I failed to return Brigitta's amulet to her. )
 Fail Quest にチェックを入れます。
 OKをクリックして閉じます。

 NPC(クエスト依頼人)を Edit で開きます。
 Scripts で Add をクリックして任意の名前でスクリプトを新規作成します。( aa466BrigittaScript など)
 スクリプトをダブルクリックして上の画像のように設定します。
 スクリプトを右クリック Edit Source でスクリプトコードを追加します。

Quest Property aa466FreeFormBri auto

Event OnDeath(Actor akKiller)
    if (!aa466FreeFormBri.IsCompleted())
        aa466FreeFormBri.SetStage(200)
    endif
EndEvent

 Ctrl + S でセーブしてエラーが出なければ閉じてゲーム内で確認できます。

※NPCではなくクエストのエイリアスにスクリプトを追加する方法もあります。

 クエストの Quest Stage タブを開きます。
 200 のステージを作成を作成します。
 Log Entryテーブルで右クリックから New をクリックします。
 Log Entryフィールドに任意のテキストを入力します。( I failed to return Brigitta's amulet to her. )
 Fail Quest にチェックを入れます。
 OKをクリックして閉じます。

 Quest Aliasesタブの依頼人(チュートリアル通りなら Bendu、自分の場合は Brigitta)のエイリアスを開きます。
 ウィンドウ右側の Scripts で Add をクリックして aa466Questgiver というスクリプトを新規作成します。
 スクリプトを右クリック Edit Source でスクリプトコードを追加します。

Scriptname aa466Questgiver extends ReferenceAlias

Event OnDeath(Actor akKiller)
    if (!GetOwningQuest().IsCompleted())
        GetOwningQuest().SetStage(200)
    endif
EndEvent


Ctrl + S でセーブしてエラーが出なければ閉じます。

 もう一度 Add をクリックして defaultSetStageOnDeathRefAlias という既存のスクリプトを追加します。
 スクリプトをダブルクリックしてプロパティの設定をします。
  ゲーム内で確認して下さい。



マップマーカーの設定
 Render Window に目的のマップマーカーを表示させておきます。
 クエストの Scriptsタブを開いてスクリプトをダブルクリックします。
 開いたウィンドウの左下の Add Propety をクリックして新規プロパティを作成します。
 Pick Reference Render Window をクリックしてマップマーカーをダブルクリックします。
 OKをクリックしてプロパティの設定を閉じます。
 Quest Stagesタブに移って Stage 10 の Papyrus Fragment に aa466Map.AddToMap() を追加します。
 Compile をクリックしてエラーが出なければ閉じます。
 ゲーム内でクエストを受注した時に目的地にクエストマーカーとマップマーカーが表示されている事を確認します。

これ以外のアミュレットをスリ取ったりアミュレットを返したりなどの設定は CK Wiki (または和訳して配布されているもの)を見ながら設定していけば問題ないと思います。

クエスト完了後にフォロワー化する設定
 フォロワーの Factions の設定を上の画像のようにします。(結婚の設定は必要ないと思いますが)
 クエスト完了後に Relationship Rank(関係性ランク)が1(Friend)以上になるように設定します。
 クエストを開いて Quest Stagesタブのステージ40に以下の文を追加します。

;Player gains Brigitta as a follower
Alias_Brigitta.GetActorReference().SetRelationshipRank(Game.GetPlayer(), 1)


 ランク1でもフォロワーになりますがランク3(Ally)が良いかもしれません。
 設定したらゲーム内で確認して下さい。

 このようにクエスト完了後にフォロワー用の選択肢が出てきます。
今日はこの辺で。

0 件のコメント:

コメントを投稿