Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

How to add a new command to a menu(ZTBS)

coco

Member

I need a way to add an equipment command to the menu in ZTBS,where you select:
ATTACK
SKILL
ITEM
(This is where it should be)
END
I will post the script
Code:
#==============================================================================
# Zenith Tactical Battle System 
# Actors Actions
#------------------------------------------------------------------------------
# Actor Action Setup
#==============================================================================

#==============================================================================
# â–  Scene_Map
#==============================================================================
class Scene_Map
  #--------------------------------------------------------------------------
  # ● プレバトルフェーズ開始
  #--------------------------------------------------------------------------
  def start_phase0
    # フェーズ 0 に移行
    $game_system.tactics_phase = 0
    # ターンイベントセット
    if defined? turn_event
      set_turn_event
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (プレバトルフェーズ)
  #--------------------------------------------------------------------------
  def update_phase0
    # ウィンドウ位置調整
    move_window
    # 戦闘不能復活判定
    battler_revival
    # エフェクト中の場合
    if effect?
      return
    end
    # イベント実行中の場合
    if $game_system.map_interpreter.running?
      return
    end
    # リザルトウィンドウ表示中の場合
    if defined? result_window and result_window
      return
    end
    #
    # バトル前に何か処理を加えたい場合はここら辺で
    #
    # アクターフェーズ開始
    start_phase1
  end

  #--------------------------------------------------------------------------
  # ● アクターフェーズ開始
  #--------------------------------------------------------------------------
  def start_phase1
    # フェーズ 1 に移行
    $game_system.tactics_phase = 1
    # 行動済みフラグを解除
    clear_acted
    # アクターフェーズ開始画像表示
    appear_actor_phase_picture
    # ターンカウント
    $game_system.tactics_turn += 1
    # ステップを 1 に設定
    $game_system.tactics_step = 1
    # カーソル固定を解除
    $game_player.not_update = false
    # ターンイベントセット
    if defined? turn_event
      set_turn_event
    end
  end
  #--------------------------------------------------------------------------
  # ● アクターフェーズ開始画像表示
  #--------------------------------------------------------------------------
  def appear_actor_phase_picture
    @help_window.visible = false
    @count = 0
    @picture = Sprite.new
    @picture.bitmap = RPG::Cache.picture(ZTBS::ACTOR_PHASE)
    @picture.ox = @picture.bitmap.width / 2
    @picture.oy = @picture.bitmap.height / 2
    @picture.x = 320
    @picture.y = 240
    @picture.opacity = 0
    loop do
      @count += 1
      @picture.opacity += 15 if @count < 20
      @picture.opacity -= 15 if @count > 60
      break if @count == 80
      # ゲーム画面を更新
      Graphics.update
    end
    @picture.bitmap.dispose
    @picture.dispose
    @picture = nil
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (アクターフェーズ)
  #--------------------------------------------------------------------------
  def update_phase1
    # ウィンドウ位置調整
    move_window
    # 戦闘不能復活判定
    battler_revival
    # 勝敗判定
    if judge
      return
    end
    # エフェクト中の場合
    if effect?
      return
    end
    # イベント実行中の場合
    if $game_system.map_interpreter.running?
      return
    end
    # セレクト中の場合
    if @select != nil and @select != 10
      update_select
      return
    end
    # リザルトウィンドウ表示中の場合
    if defined? result_window and result_window
      return
    end
    # ステップに応じて更新
    case $game_system.tactics_step
    when 0
      update_phase1_step0
    when 1
      update_phase1_step1
    when 2
      update_phase1_step2
    when 3
      update_phase1_step3
    when 4
      update_phase1_step4
    when 5
      update_phase1_step5
    when 6
      update_phase1_step6
    when 7
      update_step7
    when 8
      update_step8
    when 9
      update_step9
    when 10
      update_step10
    end
    if $game_system.tactics_step != 1
      return
    end
    # 全員行動済み判定
    case all_acted?
    when 1
      start_phase2
      return
    when 2
      # 未行動アクター処理
      not_acted_actor_refresh
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (アクターフェーズ セレクト)
  #--------------------------------------------------------------------------
  def update_select
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # アクターウィンドウ
      if @select_window.is_a?(Window_TActors)
        # 現在選択されているアクターを取得
        actor = $game_map.events[@select_window.actor]
        if $game_system.tactics_step == 0
          if !$game_system.tactics_actors.keys.include?(@select_window.actor)
            # ブザー SE を演奏
            $game_system.se_play($data_system.buzzer_se)
            return
          end
        else
          if $game_system.tactics_actors.keys.include?(@select_window.actor)
            # ブザー SE を演奏
            $game_system.se_play($data_system.buzzer_se)
            return
          end
        end
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # セレクトウィンドウを解放
        dispose_select_window
        # セレクト終了
        @select = nil
        # カーソル固定を解除
        $game_player.not_update = false
        if $game_system.tactics_step != 0
          # 攻撃エリアをセット
          set_attack_area(0)
          # ステップ 6 へ移行
          $game_system.tactics_step = 6
          @targets = {}
          @targets[actor.id] = $game_system.tactics_dead_actors[actor.id]
          return
        end
        @battler = actor
        $game_player.moveto(@battler.x, @battler.y)
        # ヘルプウィンドウにアクターをセット
        set_battler_info
        # ステップ 1 へ移行
        $game_system.tactics_step = 1
      # スキルウィンドウ
      elsif @select_window.is_a?(Window_TSkill)
        # スキルウィンドウで現在選択されているデータを取得
        @skill = @select_window.skill
        # 使用できない場合
        if @skill == nil or not @attacker.skill_can_use?(@skill.id)
          # ブザー SE を演奏
          $game_system.se_play($data_system.buzzer_se)
          @skill = nil
          return
        end
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # アクションを設定
        @attacker.current_action.skill_id = @skill.id
        # セレクトウィンドウを解放
        dispose_select_window
        # 対象が戦闘不能味方の場合
        if @skill.scope == 5 or @skill.scope == 6
          # セレクトウィンドウを作成
          make_select_window(0,0)
          @revival = true
          return
        end
        # ヘルプウィンドウにアクターをセット
        set_battler_info
        # ステップ 6 へ移行
        $game_system.tactics_step = 6
        # セレクト終了
        @select = 10
        # 攻撃エリアをセット
        set_attack_area(0)
        # カーソル固定を解除
        $game_player.not_update = false
      # アイテムウィンドウ
      elsif @select_window.is_a?(Window_TItem)
        # アイテムウィンドウで現在選択されているデータを取得
        @item = @select_window.item
        # 使用できない場合
        if @item == nil or not $game_party.item_can_use?(@item.id)
          # ブザー SE を演奏
          $game_system.se_play($data_system.buzzer_se)
          @item = nil
          return
        end
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # アクションを設定
        @attacker.current_action.item_id = @item.id
        # セレクトウィンドウを解放
        dispose_select_window
        # 対象が戦闘不能味方の場合
        if @item.scope == 5 or @item.scope == 6
          # セレクトウィンドウを作成
          make_select_window(0,0)
          @revival = true
          return
        end
        # ヘルプウィンドウにアクターをセット
        set_battler_info
        # ステップ 6 へ移行
        $game_system.tactics_step = 6
        # セレクト終了
        @select = 10
        # 攻撃エリアをセット
        set_attack_area(0)
        # カーソル固定を解除
        $game_player.not_update = false
      end
    end
    # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      # セレクトウィンドウを解放
      dispose_select_window
      # 戦闘不能者選択中
      if @revival != nil and $game_system.tactics_step != 0
        # セレクトウィンドウを作成
        case @attacker.current_action.kind
        when 1
          make_select_window(1, @attacker, @skill)
        when 2
          make_select_window(2, nil, @item)
        end
        @revival = nil
        return
      end
      # コマンドウィンドウを作成
      make_command_window(@select)
      # ヘルプウィンドウにアクターをセット
      set_battler_info
      # セレクト終了
      @select = nil
      # ステップ 2 帰還フラグ解除
      @back_step2 = nil
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (アクターフェーズ ステップ 0 : メニューコマンド)
  #--------------------------------------------------------------------------
  def update_phase1_step0
    # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      # コマンドウィンドウを解放
      dispose_command_window
      # カーソル固定を解除
      $game_player.not_update = false
      # ステップ 1 へ移行
      $game_system.tactics_step = 1
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # 決定 SE を演奏
      $game_system.se_play($data_system.decision_se)
      # コマンドによって分岐
      case @command_window.index
      # アクター確認
      when 0
        # コマンドウィンドウ解放
        dispose_command_window
        # セレクト へ移行
        @select = 0
        # セレクトウィンドウを作成
        make_select_window(0,0)
      # ターン終了
      when 1
        # コマンドウィンドウを解放
        dispose_command_window
        # 未行動アクター処理
        not_acted_actor_refresh
        # ステップ 1 へ移行
        $game_system.tactics_step = 1
      # セーブ or タイトルへ
      when 2
        if ZTBS::POSSIBLE_SAVE
          # セーブ呼び出しフラグ
          $game_temp.save_calling = true
          # ステップ 1 へ移行
          $game_system.tactics_step = 1
          # コマンドウィンドウを解放
          dispose_command_window
          # カーソル固定を解除
          $game_player.not_update = false
        else
          $game_temp.to_title = true
          @help_window.dispose
          @help_window = nil
          dispose_command_window
        end
      # タイトルへ
      when 3
        $game_temp.to_title = true
        @help_window.dispose
        @help_window = nil
        dispose_command_window
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (アクターフェーズ ステップ 1 : アクター選択)
  #--------------------------------------------------------------------------
  def update_phase1_step1
    # カーソル位置のバトラー(イベント)取得
    get_cursor_battler
    # カーソル位置にバトラーがいる場合
    if @battler != nil
      # ヘルプウィンドウにアクター or エネミーをセット
      set_battler_info
      # アクターの場合
      if $game_system.tactics_actors.keys.include?(@battler.id)
        # C ボタンが押された場合
        if Input.trigger?(Input::C) and !$game_player.moving?
          # 未行動の場合
          actor = $game_system.tactics_actors[@battler.id]
          if !@battler.acted and !actor.restriction != 4
            # 決定 SE を演奏
            $game_system.se_play($data_system.decision_se)
            # カーソルを固定
            $game_player.not_update = true
            # ステップ 2 へ移行
            $game_system.tactics_step = 2
            # コマンドウィンドウを作成
            make_command_window
          else
            # ブザー SE を演奏
            $game_system.se_play($data_system.buzzer_se)
          end
        end
        # L ボタンが押された場合
        if Input.trigger?(Input::L)
          # カーソル SE を演奏
          $game_system.se_play($data_system.cursor_se)
          # 前のアクターへ
          back_actor
        end
        # R ボタンが押された場合
        if Input.trigger?(Input::R)
          # カーソル SE を演奏
          $game_system.se_play($data_system.cursor_se)
          # 次のアクターへ
          next_actor
        end
      # エネミーの場合
      else
        # L ボタンが押された場合
        if Input.trigger?(Input::L)
          # カーソル SE を演奏
          $game_system.se_play($data_system.cursor_se)
          # 最後のアクターへ
          actor = $game_map.events[$game_system.tactics_actors.keys[$game_system.tactics_actors.keys.size - 1]]
          $game_player.moveto(actor.x, actor.y)
        end
        # R ボタンが押された場合
        if Input.trigger?(Input::R)
         # カーソル SE を演奏
          $game_system.se_play($data_system.cursor_se)
          # 最初のアクターへ
          actor = $game_map.events[$game_system.tactics_actors.keys[0]]
          $game_player.moveto(actor.x, actor.y)
        end
      end
    # カーソル位置にバトラーがいない場合、ヘルプウィンドウを隠す
    else
      @help_window.visible = false
      # L ボタンが押された場合
      if Input.trigger?(Input::L)
        # カーソル SE を演奏
        $game_system.se_play($data_system.cursor_se)
        # 最後のアクターへ
        actor = $game_map.events[$game_system.tactics_actors.keys[$game_system.tactics_actors.keys.size - 1]]
        $game_player.moveto(actor.x, actor.y)
      end
      # R ボタンが押された場合
      if Input.trigger?(Input::R)
        # カーソル SE を演奏
        $game_system.se_play($data_system.cursor_se)
        # 最初のアクターへ
        actor = $game_map.events[$game_system.tactics_actors.keys[0]]
        $game_player.moveto(actor.x, actor.y)
      end
    end
    # B ボタンが押された場合
    if Input.trigger?(Input::B) and !$game_player.moving?
      # 決定 SE を演奏
      $game_system.se_play($data_system.decision_se)
      # ステップ 0 へ移行
      $game_system.tactics_step = 0
      # コマンドウィンドウを作成
      make_command_window
      # カーソルを固定
      $game_player.not_update = true
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (アクターフェーズ ステップ 2 : 移動前コマンド)
  #--------------------------------------------------------------------------
  def update_phase1_step2
    # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      # コマンドウィンドウを解放
      dispose_command_window
      # カーソル固定を解除
      $game_player.not_update = false
      # ステップ 1 へ移行
      $game_system.tactics_step = 1
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # 決定 SE を演奏
      $game_system.se_play($data_system.decision_se)
      # コマンドによって分岐
      case @command_window.index
      # 移動
      when 0
        # コマンドウィンドウ解放
        dispose_command_window
        # 移動エリアをセット
        set_movable_area(0)
        # カーソル固定を解除
        $game_player.not_update = false
        # ステップ 3 へ移行
        $game_system.tactics_step = 3
        # 行動バトラー設定
        @active_battler = @battler
      # 攻撃
      when 1
        # コマンドウィンドウ解放
        dispose_command_window
        # 行動バトラー設定
        @active_battler = @battler
        # 攻撃バトラー取得
        @attacker = $game_system.tactics_actors[@active_battler.id]
        # アクションを設定
        @attacker.current_action.kind = 0
        @attacker.current_action.basic = 0
        # 攻撃エリアをセット
        set_attack_area(0)
        # カーソル固定を解除
        $game_player.not_update = false
        # ステップ 6 へ移行
        $game_system.tactics_step = 6
        # ステップ 2 帰還フラグ
        @back_step2 = true
      # スキル
       when 2
        # コマンドウィンドウ解放
       dispose_command_window
        # セレクト へ移行
       @select = 2
        # 行動バトラー設定
       @active_battler = @battler
        # 攻撃バトラー取得
       @attacker = $game_system.tactics_actors[@active_battler.id]
        # セレクトウィンドウを作成
       make_select_window(1, @attacker)
        # アクションを設定
      @attacker.current_action.kind = 1
        # ステップ 2 帰還フラグ
        @back_step2 = true
      # アイテム
      when 3
        # コマンドウィンドウ解放
        dispose_command_window
        # セレクト へ移行
        @select = 3
        # 行動バトラー設定
        @active_battler = @battler
        # 攻撃バトラー取得
        @attacker = $game_system.tactics_actors[@active_battler.id]
        # セレクトウィンドウを作成
        make_select_window(2)
        # アクションを設定
        @attacker.current_action.kind = 2
        # ステップ 2 帰還フラグ
        @back_step2 = true
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (アクターフェーズ ステップ 3 : 移動先選択)
  #--------------------------------------------------------------------------
  def update_phase1_step3
    # カーソル位置のバトラー(イベント)取得
    get_cursor_battler
    # ヘルプウィンドウにアクター or エネミーをセット
    set_battler_info
    # C ボタンが押された場合
    if Input.trigger?(Input::C) and !$game_player.moving?
      # カーソルが移動エリア内の場合
      if in_area?($game_player.x, $game_player.y)
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # カーソルを固定
        $game_player.not_update = true
        # エリアを解放
        dispose_area
        # ステップ 4 へ移行
        $game_system.tactics_step = 4
        # 座標を記憶
        @pre_x = @active_battler.x
        @pre_y = @active_battler.y
        # 移動ルート取得
        @route_list = @route[@position.index([$game_player.x, $game_player.y])]
      else
        # ブザー SE を演奏
        $game_system.se_play($data_system.buzzer_se)
      end
    end
    # B ボタンが押された場合
    if Input.trigger?(Input::B) and !$game_player.moving?
      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      # エリアを解放
      dispose_area
      # カーソル位置を戻す
      back_cursor
      # カーソルを固定
      $game_player.not_update = true
      # ステップ 2 へ移行
      $game_system.tactics_step = 2
      # コマンドウィンドウを作成
      make_command_window
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (アクターフェーズ ステップ 4 : 移動中)
  #--------------------------------------------------------------------------
  def update_phase1_step4
    # ステップカウント初期化
    if @step_count == nil
      @step_count = 0
    end
    if !@active_battler.moving?
      if @active_battler.x == $game_player.x and 
         @active_battler.y == $game_player.y and
        # 移動完了でステップ 5 に移行
        $game_system.tactics_step = 5
        # 選択中アクター更新
        @battler = @active_battler
        back_cursor
        # コマンドウィンドウを作成
        make_command_window
        # カーソルを固定
        $game_player.not_update = true
        @step_count = nil
        return
      end
      # カーソル位置まで移動
      action = @route_list[@step_count]
      @step_count += 1
      case action
      when 2
        @active_battler.move_down
      when 4
        @active_battler.move_left
      when 6
        @active_battler.move_right
      when 8
        @active_battler.move_up
      end
    end
    # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      # 元の位置に戻す
      @active_battler.moveto(@pre_x, @pre_y)
      # カーソル位置を戻す
      back_cursor
      # 移動エリアをセット
      set_movable_area(0)
      # カーソル固定を解除
      $game_player.not_update = false
      # ステップ 3 へ移行
      $game_system.tactics_step = 3
      @step_count = nil
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (アクターフェーズ ステップ 5 : 移動後コマンド)
  #--------------------------------------------------------------------------
  def update_phase1_step5
    # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      # コマンドウィンドウ解放
      dispose_command_window
      # 元の位置に戻す
      @active_battler.moveto(@pre_x, @pre_y)
      # カーソル位置を戻す
      back_cursor
      # 移動エリアをセット
      set_movable_area(0)
      # カーソル固定を解除
      $game_player.not_update = false
      # ステップ 3 へ移行
      $game_system.tactics_step = 3
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # 決定 SE を演奏
      $game_system.se_play($data_system.decision_se)
      # コマンドによって分岐
      case @command_window.index
      # 攻撃
      when 0
        # コマンドウィンドウ解放
        dispose_command_window
        # 攻撃バトラー取得
        @attacker = $game_system.tactics_actors[@active_battler.id]
        # アクションを設定
        @attacker.current_action.kind = 0
        @attacker.current_action.basic = 0
        # 攻撃エリアをセット
        set_attack_area(0)
        # カーソル固定を解除
        $game_player.not_update = false
        # ステップ 6 へ移行
        $game_system.tactics_step = 6
      # スキル
      when 1
        # コマンドウィンドウ解放
        dispose_command_window
        # セレクト へ移行
        @select = 1
        # 行動バトラー設定
        @active_battler = @battler
        # 攻撃バトラー取得
        @attacker = $game_system.tactics_actors[@active_battler.id]
        # セレクトウィンドウを作成
        make_select_window(1, @attacker)
        # アクションを設定
        @attacker.current_action.kind = 1
      # アイテム
      when 2
        # コマンドウィンドウ解放
        dispose_command_window
        # セレクト へ移行
        @select = 2
        # 行動バトラー設定
        @active_battler = @battler
        # 攻撃バトラー取得
        @attacker = $game_system.tactics_actors[@active_battler.id]
        # セレクトウィンドウを作成
        make_select_window(2)
        # アクションを設定
        @attacker.current_action.kind = 2
      # å¾…æ©Ÿ
      when 3
        # コマンドウィンドウ解放
        dispose_command_window
        # ステップ 10 へ移行
        $game_system.tactics_step = 10
        # 行動バトラー設定
        @active_battler = @battler
        # 攻撃バトラー取得
        @attacker = $game_system.tactics_actors[@active_battler.id]
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (アクターフェーズ ステップ 6 : 対象選択)
  #--------------------------------------------------------------------------
  def update_phase1_step6
    # カーソル位置のバトラー(イベント)取得
    get_cursor_battler
    # ヘルプウィンドウにアクター or エネミーをセット
    set_battler_info
    # C ボタンが押された場合
    if Input.trigger?(Input::C) and !$game_player.moving?
      # 発動可能な場合
      if possible_action?
        @back_step2 = nil
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # カーソルを固定
        $game_player.not_update = true
        # エリアを解放
        dispose_area
        # ステップ 7 へ移行
        $game_system.tactics_step = 7
        @select = nil
        if @revival == nil
          # ターゲットを取得
          @targets = {}
          for i in @can_attack
            if $game_system.tactics_actors.keys.include?(i)
              @targets[i] = $game_system.tactics_actors[i]
              $game_map.events[i].turn_toward_event(@active_battler.id)
            else
              @targets[i] = $game_system.tactics_enemies[i]
              $game_map.events[i].turn_toward_event(@active_battler.id)
            end
          end
          @active_battler.turn_toward_position($game_player.x, $game_player.y)
        # 戦闘不能回復の場合
        else
          $game_map.events[@targets.keys[0]].moveto($game_player.x, $game_player.y)
          @active_battler.turn_toward_position($game_player.x, $game_player.y)
          $game_map.events[@targets.keys[0]].turn_toward_event(@active_battler.id)
        end
        @revival = nil
        @can_attack = nil
        # アクション結果作成
        case @attacker.current_action.kind
        when 0
          make_basic_action_result
        when 1
          make_skill_action_result
        when 2
          make_item_action_result
        end
      else
        # ブザー SE を演奏
        $game_system.se_play($data_system.buzzer_se)
      end
    end
    # B ボタンが押された場合
    if Input.trigger?(Input::B) and !$game_player.moving?
      @targets = nil
      @revival = nil
      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      # エリアを解放
      dispose_area
      # カーソル位置を戻す
      back_cursor
      # カーソルを固定
      $game_player.not_update = true
      if @back_step2 != nil and @back_step2
        # ステップ 2 へ移行
        $game_system.tactics_step = 2
        if @select != nil
          case @attacker.current_action.kind
          when 1
            # セレクトウィンドウを作成
            make_select_window(1, @attacker, @skill)
            @select = 2
          when 2
            # セレクトウィンドウを作成
            make_select_window(2, nil, @item)
            @select = 3
          end
        else
          @back_step2 = nil
          # コマンドウィンドウを作成
          make_command_window(1)
        end
      else
        # ステップ 5 へ移行
        $game_system.tactics_step = 5
        if @select != nil
          case @attacker.current_action.kind
          when 1
            # セレクトウィンドウを作成
            make_select_window(1, @attacker, @skill)
            @select = 1
          when 2
            # セレクトウィンドウを作成
            make_select_window(2, nil, @item)
            @select = 2
          end
        else
          # コマンドウィンドウを作成
          make_command_window
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (ステップ 7 共有 : 行動側アニメーション)
  #--------------------------------------------------------------------------
  def update_step7
    # 行動側アニメーション (ID が 0 の場合は白フラッシュ)
    if @animation1_id == 0
      @active_battler.white_flash = true
    else
      @active_battler.animation_id = @animation1_id
      @active_battler.animation_hit = true
    end
    # ステップ 8 に移行
    $game_system.tactics_step = 8
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (ステップ 8 共有 : 対象側アニメーション)
  #--------------------------------------------------------------------------
  def update_step8
    all_targets_animation = false
    # ターゲットが複数存在する場合
    if @targets.size > 1
      case @attacker.current_action.kind
      when 0
        if defined? @attacker.attack_range and @attacker.attack_range != nil
          all_targets_animation = @attacker.attack_range[1][2]
        end
      when 1
        skill = $data_skills[@attacker.current_action.skill_id]
        all_targets_animation = skill.range[1][2]
      when 2
        item = $data_items[@attacker.current_action.item_id]
        all_targets_animation = item.range[1][2]
      end
    end
    if !all_targets_animation
      # 最もカーソルに近いバトラーを取得
      i = nearest_battler(@targets.keys)
      # 対象側アニメーション
      $game_map.events[i].animation_id = @animation2_id
      $game_map.events[i].animation_hit = (@targets[i].damage != "Miss")
    else
      # 対象側アニメーション
      for i in @targets.keys
        $game_map.events[i].animation_id = @animation2_id
        $game_map.events[i].animation_hit = (@targets[i].damage != "Miss")
      end
    end
    # アニメーションの長さにかかわらず、最低 8 フレーム待つ
    @wait_count = 8
    # ステップ 9 に移行
    $game_system.tactics_step = 9
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (ステップ 9 共有 : ダメージ表示)
  #--------------------------------------------------------------------------
  def update_step9
    @help_window.visible = false
    # ダメージ表示ラグ有りの場合
    if ZTBS::DAMAGE_LAG
      if @targets.keys.size == 0
        # 最低 10 フレーム待つ
        @wait_count = 10
        # 消去対象をチェック
        set_erase_battler
        # ステップ 10 に移行
        $game_system.tactics_step = 10
        return
      end
      if !@spriteset.effect?
        # ダメージ表示
        i = @targets.keys[0]
        $game_map.events[i].damage = @targets[i].damage
        $game_map.events[i].critical = @targets[i].critical
        if $game_map.events[i].damage != nil
          $game_map.events[i].damage_pop = true
        end
        # エネミーが戦闘不能になった場合
        if @targets[i].is_a?(Game_Enemy) and @targets[i].dead?
          # 経験値など獲得
          get_exp_etc(@targets[i])
        end
        @targets.delete(i)
      end      
    # ダメージ表示ラグ無しの場合
    else
      # ダメージ表示
      for i in @targets.keys
        $game_map.events[i].damage = @targets[i].damage
        $game_map.events[i].critical = @targets[i].critical
        if $game_map.events[i].damage != nil
          $game_map.events[i].damage_pop = true
        end
        # エネミーが戦闘不能になった場合
        if @targets[i].is_a?(Game_Enemy) and @targets[i].dead?
          # 経験値など獲得
          get_exp_etc(@targets[i])
        end
      end
      # 消去対象をチェック
      set_erase_battler
      # 最低 10 フレーム待つ
      @wait_count = 10
      # ステップ 10 に移行
      $game_system.tactics_step = 10
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (ステップ 10 共有 : 行動終了)
  #--------------------------------------------------------------------------
  def update_step10
    # スリップダメージ
    if @attacker.hp > 0 and @attacker.slip_damage?
      @attacker.slip_damage_effect
      @active_battler.damage = @attacker.damage
      @active_battler.damage_pop = true
    end
    # ステート自然解除
    @attacker.remove_states_auto
    # エネミーが戦闘不能になった場合
    if @attacker.is_a?(Game_Enemy) and @attacker.dead?
      # 経験値など獲得
      get_exp_etc(@attacker)
    end
    # 消去対象をチェック
    set_erase_battler
    # カーソル位置を戻す
    back_cursor
    refresh_battler_info
    @active_battler.acted = true
    # エネミーフェーズの場合、ステップ 0 へ
    if $game_system.tactics_phase == 2
      @wait_count = ZTBS::ENEMY_THINKING
      if @attacker.dead?
        @enemy_index -= 1
      end
      $game_system.tactics_step = 0
      if @targets != nil
        @targets.clear
      end
      return
    end
    # カーソル固定を解除
    $game_player.not_update = false
    # ステップ 1 に移行
    $game_system.tactics_step = 1
    # 行動者と対象を解放
    @active_battler = nil
    @attacker = nil
    if @targets != nil
      @targets.clear
    end
  end
end
Thanks^^
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top