RunDrownImpact(int, object)
ウォーターエレメンタルが相手の肺に水を満たし、溺死させることを可能にする。
void RunDrownImpact( int nSecondsRemaining, object oTarget );
Parameters
nSecondsRemaining
残り秒数(6の倍数でないと意味がない)
oTarget
水に浸かる生物
Description
この関数は回帰的呼び出しで、この関数自体を呼び出す。
oTargetはラウンドごとに頑健セービングスローを行い、セービングスロー失敗の場合、呼び出し人のレベル、4レベルごとに1〜4のダメージが与えられる。
Remarks
この関数はSoUを未導入の場合のみ使えます。
SoUではRunDrownImpact関数はDrownと呼ばれる関数に置き換えられています。この効果は単純に溺れた者(頑健セーブに失敗)にEffectDeathを適用するだけです。
nw_s1_pulsdrwn.nss の 17 行目
インクルードファイルではないため、通常の方法では使用できないが、コピーして使うことができる。
バグがあるため、nw_s1_pulsdrwnのスクリプトを使ったほうがいい。
Known Bugs
テストすると、非常に不完全な作りということがわかる。
実際の流れは以下のようになる。
1、nSecondsRemaining÷6の余りが0の場合はダメージを与える。
2、余りが0以外の時はnSecondsRemainingに0がセットされる。
3、nSecondsRemainingから1引かれる。
4、nSecondsRemainingが1より大きい場合、1秒ディレイして、この関数自身を呼び出す。
5、1以下なら終了
テスト
nSecondsRemainingが6、12、18・・・など6の倍数の場合
・6で割った余りが0のため、1回ダメージを与える
・nSecondsRemainingがマイナスされ、5、11、17・・・になる。
・2以上のため最初に戻る。
・6で割った余りが5になるため、nSecondsRemainingは0になる。
・nSecondsRemainingがマイナスされ-1になる。
・1以下なので終了
nSecondsRemainingが1、2、3、4、5、7、8、9・・・など6の倍数以外の場合
・6で割った余りが0でないので、nSecondsRemainingは0になる。
・nSecondsRemainingがマイナスされ-1になる。
・1以下なので終了
結果:どんな数を指定しても2回目のダメージは存在しない。
Version
1.28
Example
void RunDrownImpact(int nSecondsRemaining, object oTarget) { int nCount = GetHitDice(OBJECT_SELF) + 10; int nDice = nCount/4; if (GetIsDead(oTarget) == FALSE) { if (nSecondsRemaining % 6 == 0) { if(!MySavingThrow(SAVING_THROW_FORT, oTarget, nCount)) { // ダメージを算出 int nDamage = d4(nDice); // メタマジックを調べる effect eDam = EffectDamage(nDamage); effect eVis = EffectVisualEffect(VFX_IMP_POISON_S); ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); } // ここはコメントアウトしている方がよい /* else { nSecondsRemaining = 0; } */ } --nSecondsRemaining; if (nSecondsRemaining > 0) { DelayCommand(1.0f,RunDrownImpact(nSecondsRemaining,oTarget)); } } }
See Also
categories: | Effects Functions | Private Functions Functions | Spell Casting Effects Functions |
author: Lilac Soul, additional contributor(s): Lilac Soul, JP team: geshi, ngtaicho
Send comments on this topic.