---------------------------------------- -- ユーザ定義広域変数および定数 ---------------------------------------- MyOwner = 0 -- プレイヤー自身のID(function AI()の中でケミのIDを代入すること) START_TIME_INIT_VAL = -1 -- スキル使用開始時間初期値 JUDGE_PERCENT = 0 -- パーセントを用いて判断 JUDGE_VALUE = 1 -- 値を用いて判断 JUDGE_VALUE_BACKWARD = 2 -- 値を用いて逆算で判断 ---------------------------------------- -- スキルID ---------------------------------------- -- LIF SKILL_TOUCH_OF_HEA = 8001 -- 治癒の手助け SKILL_EMERGENCY_AVOID = 8002 -- 緊急回避 -- AMISTR SKILL_CASTLING = 8005 -- キャスリング SKILL_DEFFENCE = 8006 -- ディフェンス -- FILER SKILL_MOONLIGHT = 8009 -- ムーンライト SKILL_FLEET_MOVE = 8010 -- フリートムーブ SKILL_OVERED_SPEED = 8011 -- オーバードスピード -- VANILMIRTH SKILL_CAPRICE = 8013 -- カプリス SKILL_CHAOTIC_VENEDICTION = 8014 -- カオティックベネディクション ---------------------------------------- -- LIF アクティブ持続スキル条件定義 ---------------------------------------- ActiveContinuanceSkillData = { [1] = -- 使用順位 { SkillID = SKILL_EMERGENCY_AVOID, -- 使用スキルID(緊急回避 : 8002) SkillLevel = 2, -- 使用スキルレベル Interval = 3500, -- 使用間隔【ミリ秒】 JudgeForm = JUDGE_VALUE_BACKWARD, -- SP判断形式(%、実値、実値にて逆算) Threshold = 75, -- SP判断時の基準値 IsWarOnly = false, -- 戦闘時のみスキルを使用する場合 true StartTime = START_TIME_INIT_VAL -- スキル使用開始時間初期化(この行は変更不可) } } 複数のスキルを使用させたい場合(フィリルのフリートムーブとオーバードスピード等)の場合は 以下のように、スキル使用条件を複数定義することで、1から順にスキルを使用します。 { [1] = -- 使用順位 { SkillID = SKILL_FLEET_MOVE, -- 使用スキルID(フリートムーブ : 8010) SkillLevel = 2, -- 使用スキルレベル Interval = 3500, -- 使用間隔【ミリ秒】 JudgeForm = JUDGE_VALUE_BACKWARD, -- SP判断形式(%、実値、実値にて逆算) Threshold = 75, -- SP判断時の基準値 IsWarOnly = true, -- 戦闘時のみスキルを使用する場合 true StartTime = START_TIME_INIT_VAL -- スキル使用開始時間初期化(この行は変更不可) }, [2] = -- 使用順位 { SkillID = SKILL_OVERED_SPEED, -- 使用スキルID(オーバードスピード : 8011) SkillLevel = 2, -- 使用スキルレベル Interval = 3500, -- 使用間隔【ミリ秒】 JudgeForm = JUDGE_VALUE_BACKWARD, -- SP判断形式(%、実値、実値にて逆算) Threshold = 75, -- SP判断時の基準値 IsWarOnly = true, -- 戦闘時のみスキルを使用する場合 true StartTime = START_TIME_INIT_VAL -- スキル使用開始時間初期化(この行は変更不可) } } ---------------------------------------- -- idの現在HPを%で取得 ---------------------------------------- function GetHPPercent (id) return (GetV (V_HP, id) / GetV (V_MAXHP, id)) * 100 end ---------------------------------------- -- idの現在SPを%で取得 ---------------------------------------- function GetSPPercent (id) return (GetV (V_SP, id) / GetV (V_MAXSP, id)) * 100 end ---------------------------------------- -- SPがしきい値より多いか判断 ---------------------------------------- function IsSPEnough(Threshold, JudgeForm) if(JudgeForm == JUDGE_VALUE) then -- SP判断基準値を実値として基準値より現在SPの方が多いか判断 if(Threshold < GetV (V_SP, MyID)) then return true; end elseif(JudgeForm == JUDGE_VALUE_BACKWARD) then -- SP判断基準値を実値として(MAXSP - 基準値)より現在SPが多いか判断 if((GetV (V_MAXSP, MyID) - Threshold) < GetV (V_SP, MyID)) then return true; end else -- SP基準値を%として基準値%よりも現在SP%の方が多いか判断 if(Threshold < GetSPPercent (MyID)) then return true; end end return false end ---------------------------------------- -- アクティブ支援スキル使用 ---------------------------------------- function UseActiveContinuanceSkill (skillData) local OwnerMotion = GetV(V_MOTION, MyOwner) local nowTime = GetTick() i = 1 while (skillData[i] ~= nil) do local StartTime = skillData[i]["StartTime"] local Interval = skillData[i]["Interval"] if((nowTime - StartTime) > Interval or StartTime == START_TIME_INIT_VAL) then -- スキル使用間隔をチェックする if(IsSPEnough (skillData[i]["Threshold"], skillData[i]["JudgeForm"])) then -- 定義したSPの条件を満たしているか判断 local IsWarOnly = skillData[i]["IsWarOnly"] -- 戦闘時のみ使用するスキルの場合、「ホムの状態が攻撃」の時にスキルを使用する。 -- 通常時使用スキルの場合、「ケミの状態が待機」以外の時にスキルを使用する。 if((IsWarOnly and MyState == ATTACK_ST) or (not IsWarOnly and OwnerMotion ~= MOTION_STAND)) then skillData[i]["StartTime"] = nowTime SkillObject (MyID, skillData[i]["SkillLevel"], skillData[i]["SkillID"], MyID) end end end i = i + 1 end end