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.