| こんにちは、敵味方の行動順を運動性によって 高いものから行動できるようにしたのですが 何か物足りないような気がしまして‥‥どなたか意見お願いします。 長くなりますが、乗せさせてもらいます。 ちなみに差が多きすぎると最大二回余分に動けるようにしました。
以下インクルード *プロローグ: 現ターン行動者 = 0 最初のターン = 1 Exit
*ターン 全 味方: 生存者数 = 0 行動順番数 = 1 ForEach 全 Incr 生存者数 Next ForEach ユニット名 In ユニット一覧(運動性) 行動順番[行動順番数] = ユニット名 Incr 行動順番数 Next If 最初のターン = 0 Then Incr 現ターン行動者 Else 現ターン行動者 = 1 EndIf If Not (生存者数 < 現ターン行動者) Then If Not (現ターン行動者 = 1) Then Incr ターン数 -1 Incr 総ターン数 -1 EndIf EndIf If (現ターン行動者 > 生存者数) Then 現ターン行動者 = 1 EndIf 行動するキャラ = 行動順番[現ターン行動者] ForEach 全 If 最初のターン = 0 Then If Not (対象ユニットID = 行動するキャラ) Then Finish EndIf Else Finish EndIf Next If (現ターン行動者 = 1) Then ForEach 全 二回行動終了[対象ユニットID] = 0 Next EndIf 行動順処理数 = Info(行動するキャラ, 運動性) Center 行動するキャラ ForEach 全 行動数値 = ((行動順処理数 - (Info(対象ユニットID, 運動性))) * -1) If 最初のターン = 0 Then If (行動順処理数 <= 行動数値) Then If Not (二回行動終了[対象ユニットID] = 1) Then Action(対象ユニットID) = Action(対象ユニットID) + 1 二回行動終了[対象ユニットID] = 1 If (Party(対象ユニットID) = 味方) Then Center 対象ユニットID EndIf EndIf If ((行動順処理数 * 2) <= 行動数値) Then If Not (二回行動終了[対象ユニットID] = 2) Then If (二回行動終了[対象ユニットID] = 1) Then Action(対象ユニットID) = Action(対象ユニットID) + 1 二回行動終了[対象ユニットID] = 2 If (Party(対象ユニットID) = 味方) Then Center 対象ユニットID EndIf Else Action(対象ユニットID) = Action(対象ユニットID) + 2 二回行動終了[対象ユニットID] = 2 If (Party(対象ユニットID) = 味方) Then Center 対象ユニットID EndIf EndIf EndIf EndIf EndIf EndIf Next If 最初のターン = 1 Then 最初のターン = 0 現ターン行動者 = 0 EndIf Exit
*ターン 全 敵: *ターン 全 中立: *ターン 全 NPC: ForEach 全 If Not (対象ユニットID = 行動するキャラ) Then Finish EndIf Next ForEach 全 行動数値 = ((行動順処理数 - (Info(対象ユニットID, 運動性))) * -1) If (行動順処理数 <= 行動数値) Then If Not (二回行動終了[対象ユニットID] = 1) Then Action(対象ユニットID) = Action(対象ユニットID) + 1 二回行動終了[対象ユニットID] = 1 EndIf If ((行動順処理数 * 2) <= 行動数値) Then If Not (二回行動終了[対象ユニットID] = 2) Then If (二回行動終了[対象ユニットID] = 1) Then Action(対象ユニットID) = Action(対象ユニットID) + 1 二回行動終了[対象ユニットID] = 2 Else Action(対象ユニットID) = Action(対象ユニットID) + 2 二回行動終了[対象ユニットID] = 2 EndIf EndIf EndIf EndIf Next Exit
|