• 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