今更なオブリビオンブログ
おもにMOD関連のメモを書いていくと思います、MODをいじったり、作ってるのが楽しいです。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

MOD作り8
一時的に好感度を上げるチャームの魔法はあるけれど、
それと逆の効果の魔法は作れないかなと思って作ってみました。



Ref Actor
Short AcVar
Short AcVarM

begin ScriptEffectStart
set Actor to GetSelf
set AcVar to Actor.GetDisposition Player
set AcVarM to 0 - AcVar
Actor.ModDisposition player AcVarM
end

begin ScriptEffectFinish
Actor.ModDisposition player AcVar
end

案外、短くて簡単に出来ました。
これだけです。

見ての通り、スクリプトは「begin ScriptEffectStart」と「begin ScriptEffectFinish 」で二つのブロックに分かれています。


スクリプトの開始条件には、魔法のスクリプトにだけ使える特別なものとして、
「ScriptEffectStart 」「ScriptEffectFinish 」「ScriptEffectUpdate」があります。
それぞれ、

・ScriptEffectStart…魔法の効果が現れた時に初めに一回だけ走る。(結果的に「OnHitWith (魔法ID)」と同じ動作。)
・ScriptEffectFinish…魔法の効果が切れる時に一回だけ走る。
・ScriptEffectUpdate…魔法の効果が現れている間中走る。(結果的に「GameMode 」と同じ動作。)

となっています。


新しい魔法を作るにはこの、「ScriptEffectStart 」と「ScriptEffectFinish 」の二つは、なかなか使い勝手が良いです。
こういう風に書いておけば、魔法の効果時間がそのままスクリプトで書いたことを行う時間になるからです。
なので、二つのブロックはそれぞれ、魔法の効果の処理と、効果が切れた時に元に戻す処理になっています。

また、魔法の重ねがけをしたら、効果が重複するんじゃないかと懸念していましたが、それも問題ありませんでした。
どうやら魔法の重ねがけをすると、いったん「ScriptEffectFinish 」が走ってから「ScriptEffectStart 」が走る
という動作をするようで、運用に支障はありませんでした。


スクリプトの中でやっている事を簡単に説明すると、
最初のブロックは、まず最初に
「set Actor to GetSelf」で魔法が当たったキャラのRefIDを取得して、「Actor」という変数に格納。
次にActorのプレイヤーへの好感度を取得し「AcVar」という変数に格納。
次に0から「AcVar」の数値を引いた数を「AcVarM」という変数に格納。(これにより、好感度分のマイナスの数字になる)
次にActorのプレイヤーへの好感度を「AcVarM」の分プラスする。(中身の数値は現在の好感度分のマイナスの数字のため、好感度が0に)

二つ目のブロックでは「AcVar」の分、プレイヤーへの好感度をプラスすることで元の好感度へと戻しています。



ただ、作ってみたのはいいものの、これ、好感度の低い時のセリフを確認するくらいしか使い道が無い魔法のような…
スポンサーサイト

テーマ:PCゲー - ジャンル:ゲーム

コメント

コメントの投稿














管理者にだけ表示を許可する


トラックバック
トラックバック URL
http://5588ob.blog.fc2.com/tb.php/23-70954f99
この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。