• OnBlockedに入るスクリプト。
  • 扉に進路を邪魔された時に発動する。


NWNデフォルト(翻訳付き)

void main()
{
	// 妨害しているドアを習得
	object oDoor = GetBlockingDoor();
	if (GetObjectType(oDoor) == OBJECT_TYPE_CREATURE)
	{
		// * Increment number of times blocked
		//何かに3回ブロックされたら(身動きが取れなければ)飛び道具に持ち替えて攻撃する
		//オブジェクトの"X2_NUMTIMES_BLOCKED"を+1する。
		/*SetLocalInt(OBJECT_SELF, "X2_NUMTIMES_BLOCKED", GetLocalInt(OBJECT_SELF, "X2_NUMTIMES_BLOCKED") + 1);
		if (GetLocalInt(OBJECT_SELF, "X2_NUMTIMES_BLOCKED") > 3)
		{
			// ()の内容を喋る
			SpeakString("Blocked by creature");
			// 自分のローカル関数"X2_NUMTIMES_BLOCKED"を0にセットする
			SetLocalInt(OBJECT_SELF, "X2_NUMTIMES_BLOCKED",0);
			// 全てのアクションを止める
			ClearAllActions();
			// 一番近い敵をoEnemyとして習得
			object oEnemy = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY);
			// それが有効なら飛び道具を装備して攻撃する
			if (GetIsObjectValid(oEnemy) == TRUE)
			{
				ActionEquipMostDamagingRanged(oEnemy);
				ActionAttack(oEnemy);
			}
			return;
		}   */
		return;
	}
	//知能が5以上なら(逆に言うと5以下は扉を開けない)
	if(GetAbilityScore(OBJECT_SELF, ABILITY_INTELLIGENCE) >= 5)
	{
		// 知能が7以上でドアが開けられるならドアを開ける
		if(GetIsDoorActionPossible(oDoor, DOOR_ACTION_OPEN) && GetAbilityScore(OBJECT_SELF, ABILITY_INTELLIGENCE) >= 7 )
		{
			DoDoorAction(oDoor, DOOR_ACTION_OPEN);
		}
		// ドアが開かないならドアを攻撃する。
		else if(GetIsDoorActionPossible(oDoor, DOOR_ACTION_BASH))
		{
			DoDoorAction(oDoor, DOOR_ACTION_BASH);
		}
	}
}


スクリプトver1.000(翻訳付き)

//::///////////////////////////////////////////////
//:: Remodeling On Blocked
//:: VG_C1_ONBLOCK
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
	何かに自分の移動を妨げられた時に発動する。
	1.知力5以下だと扉には何もしない
	2.知力7以上なら扉を開けようとする
	3.知力7以上で扉が開けられなければ壊す
	4.扉が開かなければ無視する
	5.何かに移動を邪魔された場合飛び道具に持ち変える
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Nov 23, 2001
//:://////////////////////////////////////////////
void main()
{
	// 妨害しているドアを習得
	object oDoor = GetBlockingDoor();
	if (GetObjectType(oDoor) == OBJECT_TYPE_CREATURE)
	{
		// * Increment number of times blocked
		//何かに3回ブロックされたら(身動きが取れなければ)飛び道具に持ち替えて攻撃する
		//オブジェクトの"X2_NUMTIMES_BLOCKED"を+1する。
		*SetLocalInt(OBJECT_SELF, "X2_NUMTIMES_BLOCKED", GetLocalInt(OBJECT_SELF, "X2_NUMTIMES_BLOCKED") + 1);
		if (GetLocalInt(OBJECT_SELF, "X2_NUMTIMES_BLOCKED") > 3)
		{
			// 自分のローカル関数"X2_NUMTIMES_BLOCKED"を0にセットする
			SetLocalInt(OBJECT_SELF, "X2_NUMTIMES_BLOCKED",0);
			// 全てのアクションを止める
			ClearAllActions();
			// 一番近い敵をoEnemyとして習得
			object oEnemy = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY);
			// それが有効なら飛び道具を装備して攻撃する
			if (GetIsObjectValid(oEnemy) == TRUE)
			{
				ActionEquipMostDamagingRanged(oEnemy);
				ActionAttack(oEnemy);
			}
			return;
		}   
		return;
	}
	//知能が5以上なら(逆に言うと5以下は扉を開けない)
	if(GetAbilityScore(OBJECT_SELF, ABILITY_INTELLIGENCE) >= 5)
	{
		// 知能が7以上でドアが開けられるならドアを開ける
		if(GetIsDoorActionPossible(oDoor, DOOR_ACTION_OPEN) && GetAbilityScore(OBJECT_SELF, ABILITY_INTELLIGENCE) >= 7 )
		{
			DoDoorAction(oDoor, DOOR_ACTION_OPEN);
		}
		// ドアが開かないならドアを攻撃する。
		else if(GetIsDoorActionPossible(oDoor, DOOR_ACTION_BASH))
		{
			DoDoorAction(oDoor, DOOR_ACTION_BASH);
		}
	}
}
最終更新:2005年12月01日 20:50