设为首页收藏本站同能贴吧 切换语言 繁体中文
开启辅助访问 切换到窄版
扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 119|回复: 0

[转载发布] TheTrueCyprien's Yanfly Free Turn Battle Bugfix

[复制链接]
累计送礼:
0 个
累计收礼:
1 个
  • TA的每日心情
    开心
    2026-7-12 04:10
  • 签到天数: 209 天

    连续签到: 2 天

    [LV.7]常住居民III

    9071

    主题

    864

    回帖

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    7
    卡币
    58883
    OK点
    16
    推广点
    0
    同能卷
    50
    积分
    68848

    灌水之王

    发表于 2026-8-1 20:17:12 | 显示全部楼层 |阅读模式
    Yanfly Free Turn Battle Bugfix
            by TheTrueCyprien

             


    Introduction
            This script fixes some bugs in Yanfly's FTB script I discovered during testing.  If you find any other bug, you can post it here and I'll try to fix it. This also helps me as I'm using this script myself. However, it could take a while and I'll not solve compatibility related stuff.


    Features
            Currently known bugs that are fixed in this script:

    Spoiler1. If LIMITED_ACTIONS_PER_MEMBER is disabled, the party member won't change if he spent all of his own actions.


                            2. The game over message won't show up twice if the last living party member is killed by a counter attack or magic reflection.


                            3. Status window will now properly show after a troop event is executed.


                            4. Agi buffs and debuffs as well as ftb tags (on states) now affect enemies as well. However, I didn't get tags on enemies working (yet), so in


                                order to give an enemy additional actions, you have to give him the bonus action feature or a state with ftb tags.








    Script

    Spoiler#==============================================================================
    #
    # ▼ Bug Fix for Yanfly Engine Ace - Battle System Add-On: Free Turn Battle
    # -- Last Updated: Dec 20, 2014
    # -- Authors: TheTrueCyprien, TheoAllen, Yanfly(original script)
    # -- Requires: Yanfly Engine Ace - Battle System Add-On: Free Turn Battle v1.02+
    #
    #==============================================================================
    # ▼ Description
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # This script currently fixes the following bugs:
    # 1. If LIMITED_ACTIONS_PER_MEMBER is disabled, the party member won't change if
    #    he spent all of his own actions.
    # 2. If the last party member is killed by a counter attack or magic reflection,
    #    the game over message won't show up twice.
    # 3. Status window will now properly show after troop events.
    # 4. Enemies have now FTB actions as well, so AGI and FTB (de-)buffs will
    #    also work on them. However, you'll have to give the ftb points to them via
    #    bonus actions or states as I haven't managed to make notetags working for
    #    them.
    # If you find any other bug, message me and I might take a look.
    #
    #==============================================================================
    # ▼ Instructions
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # To install this script, open up your script editor and copy/paste this script
    # to an open slot below the actual Free Turn Battle script, but above ▼ Main.
    # Remember to save.
    #
    #==============================================================================

    #==============================================================================
    # ■ Game_BattlerBase
    #==============================================================================

    class Game_BattlerBase

      #--------------------------------------------------------------------------
      # new method: ftb_item_conditions_met?
      #--------------------------------------------------------------------------
      def ftb_item_conditions_met?(item)
        return true unless SceneManager.scene_is?(Scene_Battle)
        return true unless BattleManager.btype?
    ftb)
        return true if BattleManager.in_turn?
        return $game_party.ftb_actions_remaining >= item.ftb_cost if actor?
        return $game_troop.ftb_actions_remaining >= item.ftb_cost if enemy?
      end

    end # Game_BattlerBase

    #==============================================================================
    # ■ Game_Troop
    #==============================================================================

    class Game_Troop < Game_Unit

      #--------------------------------------------------------------------------
      # new method: ftb_actions_remaining
      #--------------------------------------------------------------------------
      def ftb_actions_remaining
        return ftb_actions_maximum - ftb_actions_used
      end

      #--------------------------------------------------------------------------
      # new method: ftb_actions_maximum
      #--------------------------------------------------------------------------
      def ftb_actions_maximum
        n = 0
        for member in $game_troop.members
          next unless member.game_battlerbase_inputable_ftb
          n += member.max_ftb_actions
        end
        return [n, YEA::FTB::MAXIMUM_FTB_ACTIONS].min
      end

      #--------------------------------------------------------------------------
      # new method: ftb_actions_used
      #--------------------------------------------------------------------------
      def ftb_actions_used
        n = 0
        for member in $game_troop.members
          next unless member.game_battlerbase_inputable_ftb
          n += member.ftb_actions
        end
        return n
      end

    end # Game_Troop

    #==============================================================================
    # ■ Game_Enemy
    #==============================================================================

    class Game_Enemy

      #--------------------------------------------------------------------------
      # Overwrite method: make action times
      #--------------------------------------------------------------------------
      def make_action_times
        max_ftb_actions
      end

      #--------------------------------------------------------------------------
      # Overwrite method: max ftb action
      #--------------------------------------------------------------------------
      def max_ftb_actions
        n = make_ftb_action_times
        n += agi_bonus_max_ftb_actions
        n += trait_bonus_max_ftb_actions
        return [n, 1].max
      end

    end

    class Scene_Battle

      def end_ftb_action
        if $game_party.inputable?
          select_next_member
        else
          status_redraw_target(BattleManager.actor)
          BattleManager.next_command
          turn_start
        end
        $game_troop.make_actions
      end

    end # Game_Enemy

    #==============================================================================
    # ■ Scene_Battle
    #==============================================================================

    class Scene_Battle < Scene_Base

      #--------------------------------------------------------------------------
      # overwrite method: perform_ftb_action
      #--------------------------------------------------------------------------
      def perform_ftb_action
        hide_ftb_action_windows
        @subject = BattleManager.actor
        item = @subject.current_action.item
        execute_action
        process_event
        loop do
          @subject.remove_current_action
          break if $game_troop.all_dead?
          break unless @subject.current_action
          @subject.current_action.prepare
          execute_action if @subject.current_action.valid?
        end
        return if $game_troop.alive_members.size <= 0
        process_action_end
        @status_window.open
        consume_ftb_action(item)
        @subject.make_actions
        @subject = nil
        show_ftb_action_windows unless $game_party.all_dead?
      end

      #--------------------------------------------------------------------------
      # overwrite method: next_ftb_member?
      #--------------------------------------------------------------------------
      def next_ftb_member?(last_index)
        actor = BattleManager.actor
        return true if actor.nil? || !actor.movable?
        return false if $game_party.ftb_actions_maximum > actor.ftb_actions && !YEA::FTB::LIMITED_ACTIONS_PER_MEMBER
        return false if actor.max_ftb_actions > actor.ftb_actions
        return false if BattleManager.actor.index >= last_index
        return BattleManager.actor.index != last_index
      end

    end #Scene_Battle

    #==============================================================================
    #
    # ▼ End of File
    #
    #==============================================================================






    Credit and Thanks


            TheTrueCyprien(optional)


            TheoAllen


            All credit goes to Yanfly for his awesome script!


    本贴来自国际rpgmaker官方论坛作者:TheTrueCyprien处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/thetruecypriens-yanfly-free-turn-battle-bugfix.34818/

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    简体中文
    繁體中文
    English(英语)
    日本語(日语)
    Deutsch(德语)
    Русский язык(俄语)
    بالعربية(阿拉伯语)
    Türkçe(土耳其语)
    Português(葡萄牙语)
    ภาษาไทย(泰国语)
    한어(朝鲜语/韩语)
    Français(法语)
    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2026-8-18 07:55 , Processed in 0.141342 second(s), 55 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表