戻る

2006/3/28カスタムAIVer3


AIはこちら
-- メモ帳にコピペし、"AI_2.lua"というファイル名で保存
-- AI_2.lua を AI.lua と同じUSER_AIフォルダにいれてください

-- ※使用は自己責任で※
-- こちらはAI_2.luaのほうです

----------------------------------------------------
-- 追加分コマンド
----------------------------------------------------
-------------------------------------------------
--フリーなMobまたは自分か主人をタゲってるMobを認識
-------------------------------------------------
-------------------------------------------------
function	IsNotNoManner( myid, id )	-- 攻撃行動中止
	local target = GetV( V_TARGET, id )	-- idのターゲット相手を抽出
	return target == 0 or ( target == myid or target == GetV( V_OWNER, myid ) )	-- タゲが居ない、またはタゲの対象がホム、持ち主(ケミだった場合)、値を返す
end
-------------------------------------------------
-- 攻撃対象であるかチェックする
-------------------------------------------------
-------------------------------------------------
function	IsNoAttack(id)				-- 個々で指定する以外の方法ないですかね…|||orz
	local target = GetV(V_HOMUNTYPE,id)		-- MOBのIDを取得

	if(target >= 1078 and target <= 1085) then	-- もし、ターゲットが草かキノコだったら
		NoAttackSwitch = 1 -- yesである1を返す
	elseif(target == 1008 or target == 1047 or target == 1048 or target == 1097 or target == 1236) then -- 卵系、プパだったら殴りにいかない
		NoAttackSwitch = 1 -- yesである1を返す

	elseif( target == 1118 or target == 1142 or target == 1048 or target == 1097 or target == 1277 or target == 1368) then	-- 動かないMobは殴りにいかない
		NoAttackSwitch = 1 -- yesである1を返す

	elseif( target == 1589 or target == 1579 or target == 1575 or target == 1555 or target == 1590) then	-- バイオプラントは殴りにいかない
		NoAttackSwitch = 1 -- yesである1を返す

	elseif(target == 1364) then -- おまけ:アサルトタートル(分身)には自分から殴りにいかない
		NoAttackSwitch = 1 -- yesである1を返す

	else
		NoAttackSwitch = 0 -- noを示す0を返す
	end


	return NoAttackSwitch == 0	-- この条件を満たす時値を返す
end
-----------------------------------------------
-- 逃亡時の敵判定チェック
-----------------------------------------------
-----------------------------------------------
function	IsAWAYENEMY(id)

	local target = GetV(V_HOMUNTYPE,id)		-- MOBのIDを取得

	if(target >= 1078 and target <= 1085) then	-- もし、ターゲットが草かキノコだったら
		AwayEnwmySwitch = 1 -- yesである1を返す
	elseif(target == 1008 or target == 1047 or target == 1048 or target == 1097 or target == 1236) then	-- 卵系、プパだったら
		AwayEnwmySwitch = 1 -- yesである1を返す
	elseif(target == 1589 or target == 1579 or target == 1575 or target == 1555 or target == 1590) then	-- バイオプラントは
		AwayEnwmySwitch = 1 -- yesである1を返す
	else
		AwayEnwmySwitch = 0 -- noを示す0を返す
	end

	return AwayEnwmySwitch == 0	-- この条件を満たす時値を返す
end

-----------------------------------------------
-- ホム逃亡処理	
-----------------------------------------------
-----------------------------------------------
function	OnRUNAWAY_ST ()			-- 万能ではないのでホムが逃げ出したらちゃんと助けてあげましょう
	TraceAI ("OnRUNAWAY_ST")

	local MyHP = GetV (V_HP,MyID)
	local MyMaxHP = GetV (V_MAXHP,MyID)
	local HPper = (MyHP / MyMaxHP) * 100
	if (AwayHP >= HPper) then 		-- AwayHP以下だと追跡(攻撃)しない

		local distance = GetDistanceFromOwner(MyID)
		if ( distance > AwayRange or distance == -1) then		-- Mobから逃げるより主人を追う方を優先
			MyState = FOLLOW_ST
			TraceAI ("RUNAWAY -> FOLLOW_ST")
			return;
		end

		local MyDestX,MyDestY = 0			-- MyDestX,MyDestYを初期化
		local AwayX,AwayY = GetV (V_POSITION,MyEnemy);
		local OwnerX, OwnerY = GetV (V_POSITION,GetV(V_OWNER,MyID))
		local MyX,MyY = GetV(V_POSITION,MyID)
		local distance = GetDistanceFromOwner(MyID)
		if (MySkill == 0) then 				-- スキル命令が入ってるかどうか

			if (OwnerX > AwayX) then
				MyDestX = AwayX + 3
			else
				MyDestX = AwayX - 3
			end

			if (OwnerY > AwayY) then
				MyDestY = AwayY + 3
			else
				MyDestY = AwayY - 3
			end
			Move (MyID,MyDestX,MyDestY)
			TraceAI ("RUNAWAY -> RUNAWAY")
		else							-- スキル命令が入ったら逃亡中でもスキルを使う
			SkillObject (MyID,MySkillLevel,MySkill,MyEnemy)
			MySkill = 0
			MySkillLevel = 0
			TraceAI ("RUNAWAY -> ATTACK_ST  : RUNAWAY_USESKILL")
		end
	end

	MyState = IDLE_ST
	TraceAI ("RUNAWAY -> IDLE_ST")
	return

end
-----------------------------------------------
-- オートスキル(戦闘時)
-----------------------------------------------
-----------------------------------------------
function	OnAUTOSKILL_ST ()			-- ホムスキルが増えたらもっと活用できるハズ…の関数
	TraceAI ("OnAUTOSKILL_ST")

	local type = GetV (V_HOMUNTYPE,MyID)		-- ホムの種族取得
	
-- ホムンクルスの種族ごとにスキル設定
	if (type == FILIR or type == FILIR_H or type == FILIR2 or type == FILIR_H2) then
		MySkill = 8009				-- ムーンライトスキル(8009)
		MySkillLevel = MoonlightLv
		MyState = FILIR_ST
		TraceAI ("OnAUTOSKILL_ST -> FILIR_ST")
		return

	elseif(type == VANILMIRTH or type == VANILMIRTH_H or type == VANILMIRTH2 or type == VANILMIRTH_H2) then
		MySkill = 8013				-- カプリススキル(8013)
		MySkillLevel = CapriceLv
		MyState = VANILMIRTH_ST
		TraceAI ("OnAUTOSKILL_ST -> VANILMIRTH_ST")
		return

	elseif(type == LIF or type == LIF_H or type == LIF2 or type == LIF_H2) then
		MySkill = 8001				-- リーフヒール(8001)
		MySkillLevel = HealLv
		MyState = LIF_ST
		TraceAI ("OnAUTOSKILL_ST -> LIF_ST")
		return

	elseif(type == AMISTR or type == AMISTR_H or type == AMISTR2 or type == AMISTR_H2) then
		MySkill = 8005				-- キャスリング(8005)
		MySkillLevel = CastlingLv
		MyState = AMISTR_ST
		TraceAI ("OnAUTOSKILL_ST -> AMISTR_ST")
		return

	else
		MySkill = 0				-- それ以外のホムでは発動しない
		MySkillLevel = 0
	end
	MyState = ATTACK_ST
	TraceAI ("AUTOSKILL_ST -> ATTACK_ST")
	return
end
-----------------------------------------------
-- オートスキル2(待機時)
-----------------------------------------------
-----------------------------------------------
function	OnAUTOSKILL_ST_2 ()			-- 待機時用のオートスキル処理、支援系のスキルが増えればもっと活用できるハズ…
	TraceAI ("OnAUTOSKILL_ST_2")

	local type = GetV (V_HOMUNTYPE,MyID)		-- ホムの種族取得
-- ホムンクルスの種族ごとにスキル設定
	if (type == FILIR or type == FILIR_H or type == FILIR2 or type == FILIR_H2) then
		MyState = FILIR_ST
		TraceAI ("OnAUTOSKILL_ST_2 -> FILIR_ST : NoATTACK")
		return

	elseif(type == VANILMIRTH or type == VANILMIRTH_H or type == VANILMIRTH2 or type == VANILMIRTH_H2) then
		MyState = VANILMIRTH_ST
		TraceAI ("OnAUTOSKILL_ST_2 -> VANILMIRTH_ST : NoATTACK")
		return

	elseif(type == LIF or type == LIF_H or type == LIF2 or type == LIF_H2) then
		MyState = LIF_ST
		TraceAI ("OnAUTOSKILL_ST_2 -> LIF_ST : NoATTACK")
		return

	elseif(type == AMISTR or type == AMISTR_H or type == AMISTR2 or type == AMISTR_H2) then
		MyState = AMISTR_ST
		TraceAI ("OnAUTOSKILL_ST_2 -> AMISTR_ST : NoATTACK")
		return

	else
		MySkill = 0				-- それ以外のホムでは発動しない
		MySkillLevel = 0
	end
	MyState = IDLE_ST
	TraceAI ("AUTOSKILL_ST_2 -> IDLE_ST")
	return
end
-----------------------------------------------
-- フィーリル用のオートスキル処理
-----------------------------------------------
-----------------------------------------------
function	OnFILIR_ST ()
TraceAI ("OnFILIR_ST")

	if (MyEnemy ~= 0) then				-- 敵が居たら(交戦中なら)オートスキル攻撃判定
		if (MySkill ~= 0 and MySkillLevel ~= 0) then	-- スキルがセットされている場合
			local MySP = GetV (V_SP,MyID)		-- ホムのSP状態を取得
			local MyMaxSP = GetV (V_MAXSP,MyID)
			if (AutoSkill_SP < (MySP / MyMaxSP)*100 and MySP ~= 0 and IsAWAYENEMY(MyEnemy)) then	-- SPが指定SP未満の場合で、草やキノコ、卵系、プパでない場合発動させない

				if (MySkill == 8009) then	-- スキルがムーンライトだった場合
					if (MySP > MySkillLevel * 4) then		-- SPが必要SP以上だったら
						if (FastAttack == 1 and FastAttackSwitch == 0) then		-- 初撃スキルONで、初撃スキル使用の目印が0だったら初撃にスキル仕様
							SkillObject (MyID,MySkillLevel,MySkill,MyEnemy)		-- スキル攻撃
							MySkill = 0
							FastAttackSwitch = 1					-- 初撃スキル使用の目印を1に
							TraceAI ("FILIR_ST -> FILIR_ST  : FAST_SKILL")
						else

							local AutoSkill_ = AutoSkill - (100-((MySP / MyMaxSP) * 100))		-- 残りSPによって発動確率を調整
							local Dice = math.floor(math.random(100))			-- (0〜100のランダムの数字をDiceへ)
							if (AutoSkill_ < 1) then					-- 発動率が1%以下だったら1%に再調整(エラー防止)
								AutoSkill_ = 1
							end
							if (AutoSkill_ > Dice) then					-- 発動率の数字がランダム数字より大きい数字だったら
								SkillObject (MyID,MySkillLevel,MySkill,MyEnemy)		-- スキル攻撃
								MySkill = 0
							end
							TraceAI ("FILIR_ST -> FILIR_ST  : AUTO_SKILL")
						end
					end
				end
			end
		
		MySkill = 0
		MySkillLevel = 0
		MyState = ATTACK_ST
		TraceAI ("FILIR_ST -> ATTACK_ST")	
		return
		end
	else							-- そうでないなら補助スキル
		if (MySkill == 0) then
			if (FleetSwitch == 1) then		-- フリットムーブスイッチがyesだったら発動
				local FleetDelay = 0
				if (FleetMoveLv == 5) then	-- フリットムーブのディレイ計算
					FleetDelay = 120000	-- Lv5だと120秒固定
				else
					FleetDelay = 50000 + FleetMoveLv*10	-- それ以外だと計算でディレイを算出
				end

				if (FleetMoveDelay == 0) then				-- フリットムーブ自動使用
					if (GetV(V_SP, MyID) > 20 + FleetMoveLv * 10) then -- SPが指定SP未満の場合は発動させない
						FleetMoveDelay = GetTick() + FleetDelay -- 次にかけ直すまでの時間	
						SkillObject(MyID, FleetMoveLv, 8010, MyID)
					end
					TraceAI ("FILIR_ST -> IDLE_ST : FleetMove_")
				else
					if (FleetMoveDelay <= GetTick()) then
						if (GetV(V_SP, MyID) > 20 + FleetMoveLv * 10) then -- 必要なSP
							FleetMoveDelay = GetTick() + FleetDelay -- 次にかけ直すまでの時間
							SkillObject(MyID, FleetMoveLv, 8010, MyID)
						end
					TraceAI ("FILIR_ST -> IDLE_ST : FleetMove_")
					end
				end
			end
		end
		MyState = IDLE_ST
		TraceAI ("FILIR_ST -> IDLE_ST")	
		return
	end

	TraceAI ("FILIR_ST -> FILIR_ST : ERROR1")	
	return
end

-----------------------------------------------
-- バニルミスト用のオートスキル処理
-----------------------------------------------
-----------------------------------------------
function	OnVANILMIRTH_ST ()
TraceAI ("OnVANILMIRTH_ST")

	if (MyEnemy ~= 0) then				-- 敵が居たら(交戦中なら)オートスキル攻撃判定
		if (MySkill ~= 0 and MySkillLevel ~= 0) then	-- スキルがセットされている場合
			local MySP = GetV (V_SP,MyID)		-- ホムのSP状態を取得
			local MyMaxSP = GetV (V_MAXSP,MyID)
			if (AutoSkill_SP < (MySP / MyMaxSP) * 100 and MySP ~= 0 and IsAWAYENEMY(MyEnemy)) then	-- SPが指定SP未満の場合で、草やキノコ、卵系、プパでない場合発動させない

				if (MySkill == 8013) then	-- スキルがカプリスだった場合
					if (MySP > 20 + MySkillLevel * 2) then		-- SPが必要SP以上だったら
						if (FastAttack == 1 and FastAttackSwitch == 0) then		-- 初撃スキルONで、初撃スキル使用の目印が0だったら初撃にスキル仕様
							SkillObject (MyID,MySkillLevel,MySkill,MyEnemy)		-- スキル攻撃
							MySkill = 0
							FastAttackSwitch = 1					-- 初撃スキル使用の目印を1に
							TraceAI ("VANILMIRTH_ST -> VANILMIRTH_ST  : FAST_SKILL")
						else
							local AutoSkill_ = AutoSkill - (100-((MySP / MyMaxSP) * 100))		-- 残りSPによって発動確率を調整
							local Dice = math.floor(math.random(100))				-- (0〜100のランダムの数字をDiceへ)
							if (AutoSkill_ < 1) then					-- 発動率が1%以下だったら1%に再調整(エラー防止)
								AutoSkill_ = 1
							end
							if (AutoSkill_ > Dice) then					-- 発動率の数字がランダム数字より大きい数字だったら
								SkillObject (MyID,MySkillLevel,MySkill,MyEnemy)		-- スキル攻撃
								MySkill = 0
							end
							TraceAI ("VANILMIRTH_ST -> VANILMIRTH_ST  : AUTO_SKILL")
						end
					end
				end
			end
		
		MySkill = 0
		MySkillLevel = 0
		MyState = ATTACK_ST
		TraceAI ("VANILMIRTH_ST -> ATTACK_ST")	
		return
		end
	end
	MyState = IDLE_ST
	TraceAI ("VANILMIRTH_ST -> IDLE_ST")	
	return
end
----------------------------------------------------
-- リーフ用のオートスキル処理
----------------------------------------------------
----------------------------------------------------
function	OnLIF_ST ()
TraceAI ("OnLIF_ST")

	if (MyEnemy ~= 0) then				-- 敵が居たら(交戦中なら)オートスキル攻撃判定
		if (MySkill ~= 0 and MySkillLevel ~= 0) then	-- スキルがセットされていない場合
			local MyHP = GetV (V_HP,MyID)		-- ホムのHP/SP状態を取得
			local MyMaxHP = GetV (V_MAXHP,MyID)
			local MySP = GetV (V_SP,MyID)
			local MyMaxSP = GetV (V_MAXSP,MyID)

			local OwnerHP = GetV (V_HP,GetV(V_OWNER,MyID))		-- 主人のHP状態を取得
			local OwnerMaxHP = GetV (V_MAXHP,GetV(V_OWNER,MyID))

			if (AutoSkill_SP < (MySP / MyMaxSP) * 100 and MySP ~= 0) then	-- SPが指定SP未満の場合は発動させない

				if (MySkill == 8001) then			-- スキルがヒールだった場合

					if (HealStop <= GetTick()) then			-- ヒール禁止時間を超えたらヒール使用可能に(ヒール失敗の判断関係)
						if (HealHPtoHom > (MyHP / MyMaxHP) * 100 and HealSwitch1 == 1) then	-- ホム自身のHPが指定以下で、ホム自身へのヒール使用スイッチがONの場合(未実装)
							SkillObject (MyID,MySkillLevel,MySkill,MyID)			-- ヒール使用
							MySkill = 0
							TraceAI ("LIF_ST -> LIF_ST  : AUTO_HEAL_MyID")

							if(MySP >= GetV(V_SP,MyID))then					-- ヒール(治癒の手助け)失敗用
								HealMissCont = HealMissCont +1				-- 失敗回数++
								if(HealMissCont > HealMiss)then				-- Delay回使用失敗したら(ディレイなど考慮)
									HealMissCont = 0				-- 赤スリムなしと判断
									HealStop = GetTick() + HealCancellationTime	-- ヒール禁止時間指定
								end
							else
								HealMissCont = 1					-- 成功していたら初期化
							end

						elseif (HealHPtoOwner > (OwnerHP / OwnerMaxHP) * 100 and HealSwitch2 == 1) then	-- 主人のHPが指定以下で、主人へのヒール使用スイッチがONの場合
							SkillObject (MyID,MySkillLevel,MySkill,MyID)
							MySkill = 0
							TraceAI ("LIF_ST -> LIF_ST  : AUTO_HEAL_MyOWNER")

							if(MySP >= GetV(V_SP,MyID))then					-- 治癒の手助け失敗用
								HealMissCont = HealMissCont +1				-- 失敗回数++
								if(HealMissCont > HealMiss)then				-- Delay回使用失敗したら(ディレイなど考慮)
									HealMissCont = 0				-- 赤スリムなしと判断
									HealStop = GetTick() + HealCancellationTime	-- ヒール禁止時間指定
								end
							else
								HealMissCont = 1					-- 成功していたら初期化
							end

						end
					end
				end
			end
		
		MySkill = 0
		MySkillLevel = 0
		MyState = ATTACK_ST
		TraceAI ("LIF_ST -> ATTACK_ST")	
		return
		end
	else							-- そうでないなら補助スキル
		if (MySkill == 0) then
								-- 非戦闘時の緊急回避
			if (EmergencySwitch == 1) then		-- 緊急回避スイッチがyesだったら発動
				if (EmergencyAvoidDelay == 0) then				-- 緊急回避自動使用(初期発動)
					if (GetV(V_SP, MyID) > 15 + HealLv * 5) then -- 必要なSP
						if (GetV(V_SP, MyID) > 15 + HealLv * 5 and MyState ~= ATTACK_ST) then -- 必要なSPを満たしているand非攻撃時
							EmergencyAvoidDelay = GetTick() + (40000-(EmergencyLv-1)*5) -- 次にかけ直すまでの時間
							SkillObject(MyID, EmergencyLv, 8002, MyID)
							TraceAI ("LIF_ST -> LIF_ST  : EmergencyAvoid")
						end
					end
				else
					if (EmergencyAvoidDelay <= GetTick()) then		-- かけ直すまでの時間が過ぎたら発動
						if (GetV(V_SP, MyID) > 15 + HealLv * 5 and MyState ~= ATTACK_ST) then -- 必要なSPを満たしているand非攻撃時
							EmergencyAvoidDelay = GetTick() + (40000-(EmergencyLv-1)*5) -- 次にかけ直すまでの時間
							SkillObject(MyID, EmergencyLv, 8002, MyID)
							TraceAI ("LIF_ST -> LIF_ST  : EmergencyAvoid")
						end
					end
				end
			end
								-- 非戦闘時の自動ヒール
			local MyHP = GetV (V_HP,MyID)		-- ホムのHP/SP状態を取得
			local MyMaxHP = GetV (V_MAXHP,MyID)
			local MySP = GetV (V_SP,MyID)
			local MyMaxSP = GetV (V_MAXSP,MyID)

			local OwnerHP = GetV (V_HP,GetV(V_OWNER,MyID))		-- 主人のHP状態を取得
			local OwnerMaxHP = GetV (V_MAXHP,GetV(V_OWNER,MyID))

			if (AutoSkill_SP < (MySP / MyMaxSP) * 100 and MySP ~= 0) then	-- SPが指定SP未満の場合は発動させない

				if (HealStop <= GetTick()) then		-- ヒール禁止時間を超えたらヒール使用可能に(ヒール失敗の判断関係)
					if (HealHPtoHom > (MyHP / MyMaxHP) * 100 and HealSwitch1_2 == 1) then	-- ホム自身のHPが指定以下で、ホム自身へのヒール使用スイッチ2(非戦闘時)がONの場合(未実装)
						SkillObject (MyID,HealLv,8001,MyID)
						MySkill = 0
						TraceAI ("LIF_ST -> LIF_ST  : AUTO_HEAL_MyID_NoATTACK")

						if(MySP >= GetV(V_SP,MyID))then					-- 治癒の手助け失敗用
							HealMissCont = HealMissCont +1				-- 失敗回数++
							if(HealMissCont > HealMiss)then				-- Delay回使用失敗したら(ディレイなど考慮)
								HealMissCont = 0 -- 赤スリムなしと判断
								HealStop = GetTick() + HealCancellationTime	-- ヒール禁止時間指定
							end
						else
							HealMissCont = 1					-- 成功していたら初期化
						end

					elseif (HealHPtoOwner > (OwnerHP / OwnerMaxHP) * 100 and HealSwitch2_2 == 1) then	-- 主人のHPが指定以下で、主人へのヒール使用スイッチ2(非戦闘時)がONの場合
						SkillObject (MyID,HealLv,8001,MyID)
						MySkill = 0
						TraceAI ("LIF_ST -> LIF_ST  : AUTO_HEAL_MyOWNER_NoATTACK")

						if(MySP >= GetV(V_SP,MyID))then					-- 治癒の手助け失敗用
							HealMissCont = HealMissCont +1				-- 失敗回数++
							if(HealMissCont > HealMiss)then				-- Delay回使用失敗したら(ディレイなど考慮)
								HealMissCont = 0 -- 赤スリムなしと判断
								HealStop = GetTick() + HealCancellationTime	-- ヒール禁止時間指定
							end
						else
							HealMissCont = 1					-- 成功していたら初期化
						end

					end
				end
			end

		end
		MyState = IDLE_ST
		TraceAI ("LIF_ST -> IDLE_ST")	
		return
	end
	TraceAI ("LIF_ST -> LIF_ST : ERROR1")	
	return
end
----------------------------------------------------
-- アミストル用のオートスキル処理
----------------------------------------------------
----------------------------------------------------
function	OnAMISTR_ST ()
TraceAI ("OnAMISTR_ST")

	if (MyEnemy ~= 0) then				-- 敵が居たら(交戦中なら)オートスキル攻撃判定
		if (MySkill ~= 0 and MySkillLevel ~= 0) then	-- スキルがセットされている場合
			local MySP = GetV (V_SP,MyID)		-- SP状態を取得
			local MyMaxSP = GetV (V_MAXSP,MyID)
			local OwnerHP = GetV (V_HP,GetV(V_OWNER,MyID))		-- 主人のHP状態を取得
			local OwnerMaxHP = GetV (V_MAXHP,GetV(V_OWNER,MyID))
			if (AutoSkill_SP < (MySP / MyMaxSP) * 100 and MySP ~= 0) then	-- SPが指定SP未満の場合は発動させない

				if (MySkill == 8005) then				-- スキルがキャスリングだった場合
					if (MySP > 10) then				-- 必要SP
						if (CastOwner < (OwnerHP / OwnerMaxHP) * 100) then -- 主人のHPがCastOwner以下だとキャスリング

							Castling = 1				-- 主人のHPが回復したら、再度キャスリングするようにする
							TraceAI ("AMISTR_ST -> AMISTR_ST  : Castling -> on")
						elseif (CastOwner >= (OwnerHP / OwnerMaxHP)*100 and CastSwitch == 1 and Castling == 1) then

							-- Mobの位置を見て主人の反対側へ移動(逃亡処理のを流用…これでうまくいくはず!)

							AwayX,AwayY = GetV (V_POSITION,MyEnemy);
							OwnerX, OwnerY = GetV (V_POSITION,GetV(V_OWNER,MyID))
							MyX,MyY = GetV(V_POSITION,MyID)
							local distance = GetDistanceFromOwner(MyID)
	
							if (OwnerX > AwayX) then
								MyDestX = AwayX + CastWay
							else
								MyDestX = AwayX - CastWay
							end
							if (OwnerY > AwayY) then
								MyDestY = AwayY + CastWay
							else
								MyDestY = AwayY - CastWay
							end

							SkillObject (MyID,MySkillLevel,MySkill,MyID)
							MySkillLevel = 0
							Castling = 0					-- キャスリング連打防止、キャスリング済み
							TraceAI ("AMISTR_ST -> AMISTR_ST  : Castling -> off")
						end
					end
				end
			end
		
		MySkill = 0
		MySkillLevel = 0
		MyState = ATTACK_ST
		TraceAI ("AMISTR_ST -> ATTACK_ST")	
		return
		end
	end
	MyState = IDLE_ST
	TraceAI ("AMISTR_ST ->  IDLE_ST")
	return
end




戻る

戻る