- OnHeartbeatに入るスクリプト。
- 最短6秒置きに発動する。
#include "nw_i0_generic"
void main()
{
// AIレベルが低い時はここでスクリプトを終了します
if (GetAILevel() == AI_LEVEL_VERY_LOW) return;
// 強化魔法を使うコンディションが設定されていた場合
if(GetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY))
{
// 40m以内に居る仲間に対して強化魔法を使います
if(TalentAdvancedBuff(40.0))
{
// 一発打ったらコンディションを無効化します
SetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY, FALSE);
//ここでユーザーイベントをすっ飛ばして終了します
return;
}
}
//既に寝てる時はコレを実行します
if(GetHasEffect(EFFECT_TYPE_SLEEP))
{
//夜寝るコンディションがオンの場合
if(GetSpawnInCondition(NW_FLAG_SLEEPING_AT_NIGHT))
{
//10分の6の確立でSLEEPのエフェクトを与えます
effect eVis = EffectVisualEffect(VFX_IMP_SLEEP);
if(d10() > 6)
{
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF);
}
}
}
// ウェイポイントを歩く
else if ( GetWalkCondition(NW_WALK_FLAG_CONSTANT) )
{
WalkWayPoints();
}
// ここでアニメーションするかどうかをチェックします。
// 現在戦っているならこの部分は飛ばします
else if ( !GetIsObjectValid(GetAttemptedAttackTarget())
&& !GetIsObjectValid(GetAttemptedSpellTarget())
// && !GetIsPostOrWalking())
&& !GetIsObjectValid(GetNearestSeenEnemy()))
{
//肉食・草食・その他が設定されている場合
if (GetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL) || GetBehaviorState(NW_FLAG_BEHAVIOR_OMNIVORE) ||
GetBehaviorState(NW_FLAG_BEHAVIOR_HERBIVORE))
{
// 肉食・草食・その他に相応しい行動を取ります
DetermineSpecialBehavior();
}
//そうでない場合で
else if (!IsInConversation(OBJECT_SELF))
{
//暇つぶしアニメのコンディションがオンになってたら
if (GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS)
|| GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS_AVIAN)
|| GetIsEncounterCreature())
{
//ぶらぶら歩き回って、仲間と喋る動きをします
PlayMobileAmbientAnimations();
}
else if (GetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS))
{
//立ったまま細かい動きをします
PlayImmobileAmbientAnimations();
}
}
}
// Send the user-defined event signal if specified
if(GetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT))
{
SignalEvent(OBJECT_SELF, EventUserDefined(EVENT_HEARTBEAT));
}
}
最終更新:2005年12月01日 22:04