Battle Script Modification

Discussion in 'RGSS3 Script Requests' started by Koulucky, Dec 5, 2018.

Thread Status:
Not open for further replies.
  1. Koulucky

    Koulucky Veteran Veteran

    Messages:
    52
    Likes Received:
    13
    First Language:
    English
    Hello! I'm using this script in my game:
    Code:
    #============================================================================
    # [VXAce] Dragon Quest Battle V1.00 (Finished)
    #----------------------------------------------------------------------------
    # By Jamiras843#
    # Features:
    #     V1.00
    #     * Dragon Quest VIII style battle
    #     * Limited options to have list style Status or block style
    #     * Face graphics optional
    #     * Level Up option available for sound.
    #============================================================================
    $imported = {} if $imported.nil?
    $imported["Dragon Quest Battle"] = true
    
    module Jami_DQ_Battle 
    #========================================================================
    # Script options
    #------------------------------------------------------------------------
    # Here you edit some simple aspects of the Battle System
    #
    #========================================================================
      SHOW_FACE = true
      # Shows actor face in menu
      HUD_HIDE = true
      #Hides Battle status during combat if true
      LVL_UP = true
      #Play level up sounde effect   
      LVL_UP_SND = "Level_Up"
      #Name of sound effect 
    end
    #end module Jami_DQ_Battle 
    
    #============================================================================ 
    # WARNING: Do not edit below unless you know what you are doing. This script
    # is rather sloppy but it does its job.
    #============================================================================
    
    #==============================================================================
    # ** Game_Actor
    #------------------------------------------------------------------------------
    #  This class handles actors. It's used within the Game_Actors class
    # ($game_actors) and referenced by the Game_Party class ($game_party).
    #==============================================================================
    class Game_Actor < Game_Battler
    #--------------------------------------------------------------------------
    # * Show Level Up Message
    #     new_skills : Array of newly learned skills
    #--------------------------------------------------------------------------
      def display_level_up(new_skills) 
        Audio.me_play("Audio/ME/" + Jami_DQ_Battle::LVL_UP_SND) 
        $game_message.new_page 
        $game_message.add(sprintf(Vocab::LevelUp, @name, Vocab::level, @level)) 
        new_skills.each do |skill|   
          $game_message.add(sprintf(Vocab::obtainSkill, skill.name)) 
        end
      end
    end
    
    #==============================================================================
    # ** Window_Base
    #------------------------------------------------------------------------------
    #  This is a super class of all windows within the game.
    #==============================================================================
    class Window_Base < Window
    #--------------------------------------------------------------------------
    # * Close Window
    #--------------------------------------------------------------------------
      def close 
        @closing = true   
        @opening = false 
        self
      end
    end #class Window_Base
    
    #==============================================================================
    # ** Window_Help
    #------------------------------------------------------------------------------
    #  This window shows skill and item explanations along with actor status.
    #==============================================================================
    class Window_Help < Window_Base
    #--------------------------------------------------------------------------
    # * Object Initialization
    #--------------------------------------------------------------------------
      def initialize(line_number = 2) 
        super(0, 0, Graphics.width, fitting_height(line_number))
      end
    end
    
    #==============================================================================
    # ** Window_BattleItem
    #------------------------------------------------------------------------------
    #  This window is for selecting items to use in the battle window.
    #==============================================================================
    class Window_BattleItem < Window_ItemList
    #--------------------------------------------------------------------------
    # * Object Initialization
    #     info_viewport : Viewport for displaying information
    #--------------------------------------------------------------------------
      def initialize(help_window, info_viewport) 
        y = help_window.height 
        super(0, y, Graphics.width, 416) 
        self.visible = false 
        @help_window = help_window 
        @info_viewport = info_viewport
      end
    end
    
    #==============================================================================
    # ** Window_BattleSkill
    #------------------------------------------------------------------------------
    #  This window is for selecting skills to use in the battle window.
    #==============================================================================
    class Window_BattleSkill < Window_SkillList
    #--------------------------------------------------------------------------
    # * Object Initialization
    #     info_viewport : Viewport for displaying information
    #--------------------------------------------------------------------------
      def initialize(help_window, info_viewport) 
        y = help_window.height 
        super(0, y, Graphics.width, 416) 
        self.visible = false 
        @help_window = help_window 
        @info_viewport = info_viewport
      end
    end
    
    #==============================================================================
    # ** Window_BattleActor
    #------------------------------------------------------------------------------
    #  This window is for selecting an actor's action target on the battle screen.
    #==============================================================================
    class Window_BattleActor < Window_BattleStatus
    #--------------------------------------------------------------------------
    # * Object Initialization
    #     info_viewport : Viewport for displaying information
    #--------------------------------------------------------------------------
      def initialize(info_viewport) 
        super() 
        self.y = 416 - 120 
        self.visible = false 
        self.openness = 255 
        @info_viewport = info_viewport 
        @info_viewport2 = info_viewport   
      end
    end
    
    #============================================================================
    # ** Actor Window
    #============================================================================
    class Window_DQ_BattleStatus < Window_Base
    #--------------------------------------------------------------------------
    # * Object Initialization
    #--------------------------------------------------------------------------
      def initialize
        if $game_party.members.size < 4     
          super(100, 0, 110 * $game_party.members.size,120) 
        else       
          super(100, 0, 110 * 4,120) 
        end     
        create_contents     
        @actor1 = $game_party.members[0]     
        @actor2 = $game_party.members[1]     
        @actor3 = $game_party.members[2]     
        @actor4 = $game_party.members[3]     
        refresh     
        self.openness = 0   
      end
    #--------------------------------------------------------------------------
    # * Draw Item
    #--------------------------------------------------------------------------
      def draw_item(index) 
        actor = $game_party.battle_members[index]
      end
    #--------------------------------------------------------------------------
    # * Get Number of Lines to Show
    #--------------------------------------------------------------------------
      def visible_line_number     
        return 4
      end
    #--------------------------------------------------------------------------
    # * Get Digit Count
    #--------------------------------------------------------------------------
      def col_max     
        return 4
      end     
    #---------------------------------------------------- 
    # * Refresh 
    #----------------------------------------------------
      def refresh     
        contents.clear     
        draw_window_content     
    #~     draw_horz_line(line_height * 1)           
      end 
    #---------------------------------------------------- 
    # * Draw Window Contents 
    #----------------------------------------------------
      def draw_window_content     
        # Face     
        if Jami_DQ_Battle::SHOW_FACE == true 
          draw_face(@actor1.face_name, @actor1.face_index, 0, 0, enabled = false)     
        if $game_party.members.size > 1 
          draw_face(@actor2.face_name, @actor2.face_index, 110, 0, enable = false)     
        end # > 1     
        if $game_party.members.size > 2 
          draw_face(@actor3.face_name, @actor3.face_index, 220, 0, enable = false)     
        end # > 2     
        if $game_party.members.size > 3 
          draw_face(@actor4.face_name, @actor4.face_index, 330, 0, enable = false)     
        end # > 3   
        end # if face 
    
        # Actor Name 
        draw_actor_name(@actor1, 0, 0)   
        if $game_party.members.size > 1 
          draw_actor_name(@actor2, 110, 0)     
        end # > 1     
        if $game_party.members.size > 2 
          draw_actor_name(@actor3, 220, 0)     
        end # > 2     
        if $game_party.members.size > 3 
          draw_actor_name(@actor4, 330, 0)     
        end # > 3   
       
        # Actor HP 
        draw_actor_hp(@actor1, 0, 24, 80)   
        if $game_party.members.size > 1 
          draw_actor_hp(@actor2, 110, 24, 80)     
        end # > 1     
        if $game_party.members.size > 2 
          draw_actor_hp(@actor3, 220, 24, 80)     
        end # > 2     
        if $game_party.members.size > 3 
          draw_actor_hp(@actor4, 330, 24, 80)     
        end # > 3   
       
        # Actor MP 
        draw_actor_mp(@actor1, 0, 44, 80)   
        if $game_party.members.size > 1 
          draw_actor_mp(@actor2, 110, 44, 80)     
        end # > 1     
        if $game_party.members.size > 2 
          draw_actor_mp(@actor3, 220, 44, 80)     
        end # > 2     
        if $game_party.members.size > 3 
          draw_actor_mp(@actor4, 330, 44, 80)     
        end # > 3         
       
        # Actor LV 
        draw_actor_level(@actor1, 0, 64)   
        if $game_party.members.size > 1 
          draw_actor_level(@actor2, 110, 64)     
        end # > 1     
        if $game_party.members.size > 2 
          draw_actor_level(@actor3, 220, 64)     
        end # > 2     
        if $game_party.members.size > 3 
          draw_actor_level(@actor4, 330, 64)     
        end # > 3   
       
        # Actor Icons
        draw_actor_icons(@actor1, 60, 0)     
        if $game_party.members.size > 1 
          draw_actor_icons(@actor2, 170, 0)     
        end # > 1     
        if $game_party.members.size > 2 
          draw_actor_icons(@actor3, 280, 0)     
        end # > 2     
        if $game_party.members.size > 3 
          draw_actor_icons(@actor4, 400, 0)     
        end # > 3
      end  #end draw_window_content
    end
    
    #==============================================================================
    # ** Window_BattleEnemy
    #------------------------------------------------------------------------------
    #  Window for selecting the enemy who is the action target on the battle
    # screen.
    #==============================================================================
    class Window_BattleEnemy < Window_Selectable
    #--------------------------------------------------------------------------
    # * Object Initialization
    #     info_viewport : Viewport for displaying information
    #--------------------------------------------------------------------------
      def initialize(info_viewport) 
        super(200, 296, 344, fitting_height(4)) 
        refresh 
        self.visible = false
      end
    end #class Window_BattleEnemy
    
    #==============================================================================
    # ** Window_BattleLog
    #------------------------------------------------------------------------------
    #  Window edited to be more like DQVIII
    #==============================================================================
    class Window_BattleLog < Window_Selectable
    #--------------------------------------------------------------------------
    # * Object Initialization
    #--------------------------------------------------------------------------
      def initialize 
        super(0, 296, window_width, window_height) 
        self.z = 200 
        self.hide 
        self.opacity = 255 
        @lines = [] 
        @num_wait = 0 
        create_back_bitmap 
        create_back_sprite 
        refresh
      end
      #--------------------------------------------------------------------------
      # * Free
      #--------------------------------------------------------------------------
      def dispose 
        super 
        self.close 
        dispose_back_bitmap 
        dispose_back_sprite
      end
      #--------------------------------------------------------------------------
      # * Get Window Width
      #--------------------------------------------------------------------------
      def window_width 
        Graphics.width
      end
      #--------------------------------------------------------------------------
      # * Get Window Height
      #--------------------------------------------------------------------------
      def window_height 
        fitting_height(max_line_number)
      end
      #--------------------------------------------------------------------------
      # * Get Maximum Number of Lines
      #--------------------------------------------------------------------------
      def max_line_number 
        return 4
      end
      #--------------------------------------------------------------------------
      # * Clear
      #--------------------------------------------------------------------------
      def clear 
        self.hide 
        @num_wait = 0 
        @lines.clear 
        refresh
      end
      #--------------------------------------------------------------------------
      # * Add Text
      #--------------------------------------------------------------------------
      def add_text(text) 
        self.show 
        @lines.push(text) 
        refresh
      end
      #--------------------------------------------------------------------------
      # * Get Background Opacity
      #--------------------------------------------------------------------------
      def back_opacity 
        return 0
      end
    end #Window_Battlelog
    
    #==============================================================================
    # ** Window_ActorCommand
    #------------------------------------------------------------------------------
    #  This window is for selecting an actor's action on the battle screen.
    #==============================================================================
    class Window_ActorCommand < Window_Command
    #--------------------------------------------------------------------------
    # * Object Initialization
    #--------------------------------------------------------------------------
      def initialize 
        super(0, 0) 
        self.openness = 0 
        deactivate 
        @actor = nil
      end
      #--------------------------------------------------------------------------
      # * Get Window Width
      #--------------------------------------------------------------------------
      def window_width 
        return 200
      end
      #--------------------------------------------------------------------------
      # * Get Number of Lines to Show
      #--------------------------------------------------------------------------
      def visible_line_number 
        return 4
      end
      #--------------------------------------------------------------------------
      # * Get Digit Count
      #--------------------------------------------------------------------------
      def col_max     
        return 2
      end
    end
    
    #==============================================================================
    # ** Scene_Battle
    #------------------------------------------------------------------------------
    #  This class performs battle screen processing.
    #==============================================================================
    class Scene_Battle < Scene_Base
    #--------------------------------------------------------------------------
    # * Start Processing
    #--------------------------------------------------------------------------
      def start 
        super 
        create_spriteset 
        create_all_windows 
        BattleManager.method_wait_for_message = method(:wait_for_message) 
        @game_party = $game_party.members
      end
      #--------------------------------------------------------------------------
      # * Update Frame (Basic)
      #--------------------------------------------------------------------------
      def update_basic 
        super 
        $game_timer.update 
        $game_troop.update 
        @spriteset.update 
        update_message_open
      end 
      #--------------------------------------------------------------------------
      # * Create All Windows
      #--------------------------------------------------------------------------
      def create_all_windows 
        create_message_window 
        create_log_window 
        create_DQ_status_window 
        create_info_viewport 
        create_party_command_window 
        create_actor_command_window 
        create_help_window 
        create_skill_window 
        create_item_window 
        create_actor_window 
        create_enemy_window
      end
      #--------------------------------------------------------------------------
      # * Create Message Window
      #--------------------------------------------------------------------------
      def create_message_window 
        @message_window = Window_Message.new
      end 
      #--------------------------------------------------------------------------
      # * Create DQ Status Window
      #--------------------------------------------------------------------------
      def create_DQ_status_window 
        @DQ_status_window = Window_DQ_BattleStatus.new
        @DQ_status_window.x = 128
      end 
      #--------------------------------------------------------------------------
      # * Create Log Window
      #--------------------------------------------------------------------------
      def create_log_window 
        @log_window = Window_BattleLog.new 
        @log_window.method_wait = method(:wait) 
        @log_window.method_wait_for_effect = method(:wait_for_effect)
      end 
      #--------------------------------------------------------------------------
      # * Create Information Display Viewport
      #-------------------------------------------------------------------------- 
      def create_info_viewport 
        @info_viewport = Viewport.new 
        @info_viewport.rect.y = 0 
        @info_viewport.rect.height = Graphics.height - @DQ_status_window.height 
        @info_viewport.z = 100 
        @info_viewport.ox = 544 - 104 * 4 
        @DQ_status_window.viewport = @info_viewport
      end 
      #--------------------------------------------------------------------------
      # * Create Party Commands Window
      #--------------------------------------------------------------------------
      def create_party_command_window 
        @DQ_status_window.show 
        @party_command_window = Window_PartyCommand.new 
        @party_command_window.set_handler(:fight,  method(:command_fight)) 
        @party_command_window.set_handler(:escape, method(:command_escape)) 
        @party_command_window.x = 0 
        @party_command_window.y = 296 
        @party_command_window.unselect
      end
      #--------------------------------------------------------------------------
      # * Create Actor Commands Window
      #--------------------------------------------------------------------------
      def create_actor_command_window 
        @actor_command_window = Window_ActorCommand.new 
        @actor_command_window.set_handler(:attack, method(:command_attack)) 
        @actor_command_window.set_handler(:skill,  method(:command_skill)) 
        @actor_command_window.set_handler(:guard,  method(:command_guard)) 
        @actor_command_window.set_handler(:item,   method(:command_item)) 
        @actor_command_window.set_handler(:cancel, method(:prior_command)) 
        @actor_command_window.x = 0 
        @actor_command_window.y = 296 
      end
      #--------------------------------------------------------------------------
      # * Create Help Window
      #--------------------------------------------------------------------------
      def create_help_window 
        @help_window = Window_Help.new 
        @help_window.visible = false
      end 
      #--------------------------------------------------------------------------
      # * Create Enemy Window
      #--------------------------------------------------------------------------
      def create_enemy_window 
        @enemy_window = Window_BattleEnemy.new(@help_window) 
        @enemy_window.index = 0 
        @enemy_window.set_handler(:ok,     method(:on_enemy_ok)) 
        @enemy_window.set_handler(:cancel, method(:on_enemy_cancel))
      end 
      #--------------------------------------------------------------------------
      # * Start Enemy Selection
      #--------------------------------------------------------------------------
      def select_enemy_selection 
        @enemy_window.refresh 
        @enemy_window.show.activate 
        @enemy_window.index = 0
      end
      #--------------------------------------------------------------------------
      # * Create Skill Window
      #--------------------------------------------------------------------------
      def create_skill_window 
        @skill_window = Window_BattleSkill.new(@help_window, @info_viewport) 
        @skill_window.set_handler(:ok,     method(:on_skill_ok)) 
        @skill_window.set_handler(:cancel, method(:on_skill_cancel))
      end
      #--------------------------------------------------------------------------
      # * Create Item Window
      #--------------------------------------------------------------------------
      def create_item_window 
        @item_window = Window_BattleItem.new(@help_window, @info_viewport) 
        @item_window.set_handler(:ok,     method(:on_item_ok)) 
        @item_window.set_handler(:cancel, method(:on_item_cancel))
      end 
      #--------------------------------------------------------------------------
      # * Update Status Window Information
      #--------------------------------------------------------------------------
      def refresh_status 
        @DQ_status_window.refresh
      end 
      #--------------------------------------------------------------------------
      # * Start Party Command Selection
      #--------------------------------------------------------------------------
      def start_party_command_selection 
        unless scene_changing?   
        refresh_status   
        @DQ_status_window.open   
        if BattleManager.input_start     
          @actor_command_window.close     
          @party_command_window.setup   
        else     
          @party_command_window.deactivate     
          turn_start   
        end 
        end
      end 
      #--------------------------------------------------------------------------
      # * Start Actor Command Selection
      #--------------------------------------------------------------------------
      def start_actor_command_selection 
        @party_command_window.close 
        @actor_command_window.setup(BattleManager.actor)
      end
      #--------------------------------------------------------------------------
      # * Update Processing for Opening Message Window
      #    Set openness to 0 until the status window and so on are finished closing.
      #--------------------------------------------------------------------------
      def update_message_open 
        if $game_message.busy? && !@DQ_status_window.close?   
          @message_window.openness = 0   
          @DQ_status_window.close   
          @party_command_window.close   
          @actor_command_window.close 
        end
      end
      #--------------------------------------------------------------------------
      # * Start Turn
      #--------------------------------------------------------------------------
      def turn_start 
        @party_command_window.close 
        @actor_command_window.close 
        @subject =  nil 
        BattleManager.turn_start 
        if Jami_DQ_Battle::HUD_HIDE == true 
          @info_viewport.rect.height = 60 
        end #if HUDE_HIDE 
        @log_window.clear
      end
      #--------------------------------------------------------------------------
      # * End Turn
      #--------------------------------------------------------------------------
      def turn_end 
        all_battle_members.each do |battler|   
        battler.on_turn_end   
        refresh_status   
        if Jami_DQ_Battle::HUD_HIDE == true   
          @info_viewport.rect.height = @DQ_status_window.height   
        end   
        @log_window.display_auto_affected_status(battler)   
        @log_window.wait_and_clear 
        end 
        BattleManager.turn_end 
        process_event 
        start_party_command_selection
      end
      #--------------------------------------------------------------------------
      # * Battle Action Processing
      #--------------------------------------------------------------------------
      def process_action 
        return if scene_changing? 
        if !@subject || !@subject.current_action   
          @subject = BattleManager.next_subject 
        end 
        return turn_end unless @subject 
        if @subject.current_action   
          @subject.current_action.prepare   
        if @subject.current_action.valid?     
          @DQ_status_window.open     
          execute_action   
        end   
        @subject.remove_current_action 
        end 
        process_action_end unless @subject.current_action
      end
    end # end Scene_battle 
    And I'd like to request some modifications if anyone wants to/has the time.
    The modifications are as follow:

    First, I'd like for the window with the enemy names to be visible at all times after you press ''Fight'', not just when pressing attack.
    Second, I'd like for the enemy names to be displayed one below the other, rather than one next to the other.
    Thirdly, I'd like for the ''command box'' in the left to be a bit wider so the text doesn't get stretchy, and also for the Actor who is controlled at the time, his name to be displayed on top of the command box(preferably centered), with a separating line underneath.
    Lastly, the enemy name window should be slightly smaller(as the command box would be slightly wider), and the enemy name ''boxes'' to be displayed a bit more to the right, so the cursor doesn't merge with the white of the windowskin.

    This is how the battles look right now:
    [​IMG]

    This is how they'd ideally look after the changes:
    [​IMG]

    Also, there is a slight flickering during combat(as shown in this video:
    ), if someone could fix that also I'd be grateful.

    Thank you for your time! :)
     
    #1
  2. A-Moonless-Night

    A-Moonless-Night WINTER IS COMING Veteran

    Messages:
    477
    Likes Received:
    342
    Location:
    New Zealand
    First Language:
    English
    Primarily Uses:
    RMVXA
    Let me know how you go with this:
    Code:
    class Window_BattleEnemy < Window_Selectable
      def col_max; return 1; end
      def spacing; return 38; end
    end
     
    class Window_DQ_BattleStatus < Window_Base
    
      def draw_actor_info(actor, x, y, width)
        draw_face(actor.face_name, actor.face_index, x, y, false) if Jami_DQ_Battle::SHOW_FACE
        draw_actor_name(actor, x, y)
        draw_actor_hp(actor, x, y+24, width)
        draw_actor_mp(actor, x, y+44, width)
        draw_actor_level(actor, x, y+64)
        draw_actor_icons(actor, x+60, y)
      end
     
      def draw_window_content
        draw_actor_info(@actor1, 0, 0, 80)
        draw_actor_info(@actor2, 110, 0, 80) if $game_party.members.size > 1
        draw_actor_info(@actor3, 220, 0, 80) if $game_party.members.size > 2
        draw_actor_info(@actor4, 330, 0, 80) if $game_party.members.size > 3
      end
    end
    
    class Window_ActorCommand < Window_Command
      def spacing; return 8; end
      def visible_line_number; return 3; end
        
      alias amn_dqbattle_windowactorcmd_init  initialize
      def initialize
        amn_dqbattle_windowactorcmd_init
        self.opacity = 0
      end
     
    end
    
    class Window_ActorDummy < Window_Base
      def initialize
        super(0, 0, 200, fitting_height(visible_line_number))
        self.openness = 0
        @actor = nil
      end
    
      def visible_line_number; return 4; end
    
      def draw_actor_details
        return unless @actor
        draw_text(0, 0, contents_width, line_height, @actor.name, 1)
        draw_horz_line(12)
      end
    
      def draw_horz_line(y)
        line_y = y + line_height / 2 - 1
        contents.fill_rect(0, line_y, contents_width, 2, normal_color)
      end
     
      def setup(actor)
        @actor = actor
        contents.clear
        draw_actor_details
        open
      end
    end
    
    class Scene_Battle < Scene_Base
     
      alias amn_dqbattle_scenebattle_createactorcmdwind create_actor_command_window
      def create_actor_command_window
        @dummy_window = Window_ActorDummy.new
        amn_dqbattle_scenebattle_createactorcmdwind
        @actor_command_window.y = 320
        @dummy_window.y = 296
      end
     
      alias amn_dqbattle_scenebattle_startpartycmdselect  start_party_command_selection
      def start_party_command_selection
        amn_dqbattle_scenebattle_startpartycmdselect
        unless scene_changing?   
          if BattleManager.input_start     
            @dummy_window.close
            @enemy_window.deactivate.hide
          end
        end
      end
     
      alias amn_dqbattle_scenebattle_cmdfight command_fight
      def command_fight
        amn_dqbattle_scenebattle_cmdfight
        @enemy_window.deactivate.show
      end
     
      alias amn_dqbattle_scenebattle_startactorcmdselect  start_actor_command_selection
      def start_actor_command_selection
        amn_dqbattle_scenebattle_startactorcmdselect
        @dummy_window.setup(BattleManager.actor)
      end
     
      alias amn_dqbattle_scenebattle_updatemsgopen  update_message_open
      def update_message_open
        amn_dqbattle_scenebattle_updatemsgopen
        if $game_message.busy? && !@DQ_status_window.close?   
          @dummy_window.close
        end
      end
     
      alias amn_dqbattle_scenebattle_turnstart  turn_start
      def turn_start
        @dummy_window.close
        @enemy_window.deactivate.hide
        amn_dqbattle_scenebattle_turnstart
      end
     
      def on_enemy_ok
        BattleManager.actor.input.target_index = @enemy_window.enemy.index
        @skill_window.hide
        @item_window.hide
        next_command
      end
    
      def on_enemy_cancel
        @enemy_window.deactivate
        case @actor_command_window.current_symbol
        when :attack
          @actor_command_window.activate
        when :skill
          @skill_window.activate
        when :item
          @item_window.activate
        end
      end
    end
     
    #2
  3. Koulucky

    Koulucky Veteran Veteran

    Messages:
    52
    Likes Received:
    13
    First Language:
    English
    @A-Moonless-Night
    Thanks a lot! :)
    It works nicely, but there are some more modifications I'd like you to make if you're willing.

    Notice how in these pics the cursor goes over/blends in with the white?
    [​IMG]
    [​IMG]
    It is possible for the monster names and attack/defend commands to be a bit further to the right(about 2 or 4 pixels) so the cursor doesn't blend in with the white?
    Also, attack and defend look stretchy, can you make the command window a bit wider so it fits in about 2 additional letters for each command?

    I'd like for the stats window(the one on the top)to be visible even after the battle ends(when it says ''Hero was victorious'').

    In the DQ Battle script, when the player/enemies attack or perform actions, the stats window gets smaller. While I'd like to keep this feature, the window its ''cut off'':
    [​IMG]
    I'd like it to be something like this instead:
    [​IMG]

    Also, I'd like you to modify the item & magic menu(in battle).
    See how it overlaps with the other windows, but because the windowskin I'm using for battle is transparent, it looks messy. Also, the cursor blends in with the white of windowskin here too.
    [​IMG]
    [​IMG]

    I'd like the battle magic menu to be something like this mock-up I made:
    [​IMG]
    In the left there's the spell list, and on the right the spell description, with the mp cost below.

    Also, there doesn't need to be any space for icons, since in my game spells & items don't use icons.
    The item menu should be something similar, except the mp cost window.

    Lastly, I wanna know if the flickering in combat windows can be fixed, aswell as if windows can open up instantly, as detailed in this video:


    Sorry for the long post and thanks again! :)


     
    #3
  4. A-Moonless-Night

    A-Moonless-Night WINTER IS COMING Veteran

    Messages:
    477
    Likes Received:
    342
    Location:
    New Zealand
    First Language:
    English
    Primarily Uses:
    RMVXA
    I've got a bit of time today, so I'll get started on some of these. One question: if you need to select an enemy using a skill, where should the enemy window go?
     
    #4
  5. Koulucky

    Koulucky Veteran Veteran

    Messages:
    52
    Likes Received:
    13
    First Language:
    English
    @A-Moonless-Night
    When selecting an enemy using a skill, the enemy window should go above the spell window, something like this:
    [​IMG]
    This applies for skills that require selecting an actor too, but the window should be smaller because no actor will have a name longer than 7 letters.
     
    #5
  6. A-Moonless-Night

    A-Moonless-Night WINTER IS COMING Veteran

    Messages:
    477
    Likes Received:
    342
    Location:
    New Zealand
    First Language:
    English
    Primarily Uses:
    RMVXA
    Give this a go:
    Code:
    =begin
    #==============================================================================#
    #   AMN DQ Battle Addon
    #   Version 1.01
    #   Author: AMoonlessNight
    #   Date: 09 Dec 2018
    #   Latest: 09 Dec 2018
    #==============================================================================#
    #   UPDATE LOG
    #------------------------------------------------------------------------------#
    # 09 Dec 2018 - created the script
    #==============================================================================#
    #   TERMS OF USE
    #------------------------------------------------------------------------------#
    # - Please credit AMoonlessNight or A-Moonless-Night
    # - Free for non-commercial use
    # - I'd love to see your game if you end up using one of my scripts
    #==============================================================================#
    
    This script updates the battle scene from Jamiras843 Dragon Quest Battle script,
    changing the position of certain windows and changing the way some information
    is drawn.
    
    You can choose whether to draw icons in skill and item lists in the editable
    region below.
    
    All windows now open and close instantly, no fade-in/-out transition.
    
    =end
    module AMN_DQ_Battle
    #==============================================================================
    # ** EDITABLE REGION BELOW
    #------------------------------------------------------------------------------
    #  Change the values in the area below to suit your needs.
    #==============================================================================
    
      Icons_On = false  # whether to draw icons in item and skill lists
     
    #==============================================================================
    # ** END OF EDITABLE REGION
    #------------------------------------------------------------------------------
    #  Please do not edit below this point unless you know what you are doing.
    #==============================================================================
    end
    
    class Window_Base < Window
     
      def update_open
        self.openness += 255
        @opening = false if open?
      end
    
      def update_close
        self.openness -= 255
        @closing = false if close?
      end
     
      alias amn_dqbattle_windowbase_drawitemname  draw_item_name
      def draw_item_name(item, x, y, enabled = true, width = 172)
        if AMN_DQ_Battle::Icons_On
          amn_dqbattle_windowbase_drawitemname(item, x, y, enabled, width)
        else
          return unless item
          change_color(normal_color, enabled)
          draw_text(x, y, width, line_height, item.name)
        end
      end
    end
    
    class Window_BattleActor < Window_BattleStatus
     
      def visible_line_number; item_max; end
      def show; select(0) if @info_viewport; super; end
      def hide; super; end
      def window_width; 110; end
     
      def draw_item(index)
        actor = $game_party.battle_members[index]
        draw_actor_name(actor, 0, line_height * index)
      end
     
    end
    
    class Window_BattleEnemy < Window_Selectable
      def col_max; return 1; end
    
      def initialize(info_viewport) 
        super(210, 296, Graphics.width - 210, fitting_height(4)) 
        refresh 
        self.visible = false
      end
     
      def item_rect(index)
        rect = Rect.new
        rect.width = item_width - 10
        rect.height = item_height
        rect.x = (index % col_max * (item_width + spacing)) + 5
        rect.y = index / col_max * item_height
        rect
      end
     
      def item_rect_for_text(index)
        rect = item_rect(index)
        rect.x += 10
        rect.width -= 20
        rect
      end
     
      def deactivate
        unselect
        super
      end
     
    end
    
    class Window_DQ_BattleStatus < Window_Base
    
      alias amn_dqbattle_winddqbattlestatus_init  initialize
      def initialize
        amn_dqbattle_winddqbattlestatus_init
        self.arrows_visible = false
      end
     
      def draw_actor_info(actor, x, y, width)
        draw_face(actor.face_name, actor.face_index, x, y, false) if Jami_DQ_Battle::SHOW_FACE
        draw_actor_name(actor, x, y)
        draw_actor_hp(actor, x, y+24, width)
        draw_actor_mp(actor, x, y+44, width)
        draw_actor_level(actor, x, y+64)
        draw_actor_icons(actor, x+60, y)
      end
     
      def draw_window_content
        draw_actor_info(@actor1, 0, 0, 80)
        draw_actor_info(@actor2, 110, 0, 80) if $game_party.members.size > 1
        draw_actor_info(@actor3, 220, 0, 80) if $game_party.members.size > 2
        draw_actor_info(@actor4, 330, 0, 80) if $game_party.members.size > 3
      end
    end
    
    class Window_ActorCommand < Window_Command
      def spacing; return 8; end
      def visible_line_number; return 3; end
      def window_width; return 210; end
       
      alias amn_dqbattle_windowactorcmd_init  initialize
      def initialize
        amn_dqbattle_windowactorcmd_init
        self.opacity = 0
      end
     
    end
    
    class Window_ActorDummy < Window_Base
      def initialize
        super(0, 0, 210, fitting_height(visible_line_number))
        self.openness = 0
        @actor = nil
      end
    
      def visible_line_number; return 4; end
    
      def draw_actor_details
        return unless @actor
        draw_text(0, 0, contents_width, line_height, @actor.name, 1)
        draw_horz_line(12)
      end
    
      def draw_horz_line(y)
        line_y = y + line_height / 2 - 1
        contents.fill_rect(0, line_y, contents_width, 2, normal_color)
      end
     
      def setup(actor)
        @actor = actor
        contents.clear
        draw_actor_details
        open
      end
    end
    
    class Window_BattleItem < Window_ItemList
    
      def initialize(help_window, info_viewport)
        height = fitting_height(4)
        hww = help_window.width 
        super(0, Graphics.height - height, Graphics.width - hww, height) 
        self.visible = false 
        @help_window = help_window 
        @info_viewport = info_viewport
      end
    end
    
    class Window_BattleSkill < Window_SkillList
      attr_reader :actor
    
      def initialize(help_window, info_viewport) 
        height = fitting_height(4)
        hww = help_window.width 
        super(0, Graphics.height - height, Graphics.width - hww, height) 
        self.visible = false 
        @help_window = help_window 
        @info_viewport = info_viewport
        @mp_window = nil
      end
     
      def mp_window=(mp_window)
        @mp_window = mp_window
      end
    
      def draw_item(index)
        skill = @data[index]
        if skill
          rect = item_rect(index)
          rect.width -= 4
          draw_item_name(skill, rect.x, rect.y, enable?(skill))
        end
      end
     
      alias amn_dqbattle_windbattleskill_show show
      def show
        @mp_window.show if @mp_window
        amn_dqbattle_windbattleskill_show
      end
    
      alias amn_dqbattle_windbattleskill_hide hide
      def hide
        @mp_window.hide if @mp_window
        amn_dqbattle_windbattleskill_hide
      end
     
      def update_help
        super
        @mp_window.set_item if @mp_window
      end
    end
    
    class Window_BattleSkillMP < Window_Base
    
      def initialize(skill_window, info_viewport)
        h = fitting_height(1)
        super(Graphics.width - 250, Graphics.height - h, 250, h)
        self.visible = false
        @info_viewport = info_viewport
        skill_window.mp_window = self
        @skill_window = skill_window
      end
    
      def set_text(text)
        if text != @text
          @text = text
          refresh
        end
      end
    
      def clear
        set_text("")
      end
    
      def item
        @skill_window.item
      end
     
      def actor
        @skill_window.actor
      end
     
      def set_item
        return clear if actor.nil? || item.nil?
        return clear if actor.skill_mp_cost(item).zero? && actor.skill_tp_cost(item).zero?
        if actor.skill_mp_cost(item) > 0
          set_text(sprintf("MP Cost: %d/%d", actor.skill_mp_cost(item), actor.mp))
        elsif actor.skill_tp_cost(item) > 0
          set_text(sprintf("TP Cost: %d/%d", actor.skill_tp_cost(item), actor.tp))
        end
      end
    
      def refresh
        contents.clear
        draw_text_ex(4, 0, @text)
      end
    end
    
    class Scene_Battle < Scene_Base
     
      alias amn_dqbattle_scenebattle_createactorcmdwind create_actor_command_window
      def create_actor_command_window 
        @dummy_window = Window_ActorDummy.new
        amn_dqbattle_scenebattle_createactorcmdwind
        @actor_command_window.y = 320 
        @dummy_window.y = 296
      end
     
      alias amn_dqbattle_scenebattle_createactorwind  create_actor_window
      def create_actor_window
        amn_dqbattle_scenebattle_createactorwind
        @actor_window.y -= @actor_window.height
        @actor_window.x = Graphics.width - @actor_window.width
      end
     
      alias amn_dqbattle_scenebattle_startpartycmdselect  start_party_command_selection
      def start_party_command_selection
        amn_dqbattle_scenebattle_startpartycmdselect
        unless scene_changing?   
          if BattleManager.input_start     
            @dummy_window.close
            @enemy_window.deactivate.hide
          end 
        end
      end 
     
      alias amn_dqbattle_scenebattle_createskillwind create_skill_window
      def create_skill_window
        amn_dqbattle_scenebattle_createskillwind
        @skill_mp_window = Window_BattleSkillMP.new(@skill_window, @info_viewport) 
      end
     
      alias amn_dqbattle_scenebattle_createhelpwind create_help_window
      def create_help_window 
        amn_dqbattle_scenebattle_createhelpwind
        w = 250
        hh = @help_window.height
        h = @help_window.fitting_height(4)
        @help_window.move(Graphics.width - w, Graphics.height - h, w, hh)
        @help_window.create_contents
      end 
     
      alias amn_dqbattle_scenebattle_cmdfight command_fight
      def command_fight
        amn_dqbattle_scenebattle_cmdfight
        @enemy_window.deactivate.show
      end
     
      alias amn_dqbattle_scenebattle_startactorcmdselect  start_actor_command_selection
      def start_actor_command_selection
        amn_dqbattle_scenebattle_startactorcmdselect
        @dummy_window.setup(BattleManager.actor)
      end
     
      alias amn_dqbattle_scenebattle_updatemsgopen  update_message_open
      def update_message_open
        amn_dqbattle_scenebattle_updatemsgopen
        if $game_message.busy? && !@DQ_status_window.close?   
          @dummy_window.close
        end
      end
    
      def turn_start 
        @party_command_window.close 
        @actor_command_window.close
        @dummy_window.close
        @enemy_window.deactivate.hide
        @subject =  nil 
        BattleManager.turn_start 
        if Jami_DQ_Battle::HUD_HIDE
          @DQ_status_window.height = @DQ_status_window.fitting_height(2)
          @info_viewport.rect.height = @DQ_status_window.fitting_height(2)
        end
        @log_window.clear
      end
    
      def turn_end 
        all_battle_members.each do |battler|   
          battler.on_turn_end   
          refresh_status   
          if Jami_DQ_Battle::HUD_HIDE
            @DQ_status_window.height = 110
            @DQ_status_window.update_padding
            @info_viewport.rect.height = @DQ_status_window.height
          end   
          @log_window.display_auto_affected_status(battler)   
          @log_window.wait_and_clear 
        end 
        BattleManager.turn_end 
        process_event 
        start_party_command_selection
      end
     
      def update_message_open
        if $game_message.busy?
          if !$game_troop.all_dead? && !@DQ_status_window.close?
            @message_window.openness = 0   
            @DQ_status_window.close
          end
          @party_command_window.close   
          @actor_command_window.close 
        end
      end
     
      def on_enemy_ok
        unless @actor_command_window.visible
          @actor_command_window.show
          @dummy_window.show
        end
        case @actor_command_window.current_symbol
        when :skill
          @enemy_window.y += @enemy_window.height
        when :item
          @enemy_window.y += @enemy_window.height
        end
        BattleManager.actor.input.target_index = @enemy_window.enemy.index
        @skill_window.hide
        @item_window.hide
        next_command
      end
    
      def on_enemy_cancel
        @enemy_window.deactivate
        case @actor_command_window.current_symbol
        when :attack
          @actor_command_window.activate
        when :skill
          @skill_window.activate
          @enemy_window.hide
        when :item
          @item_window.activate
          @enemy_window.hide
        end
      end
     
      alias amn_dqbattle_scenebattle_commandskill command_skill
      def command_skill
        amn_dqbattle_scenebattle_commandskill
        @enemy_window.deactivate.hide
        @enemy_window.y -= @enemy_window.height
        @actor_command_window.hide
        @dummy_window.hide
      end
    
      alias amn_dqbattle_scenebattle_commanditem command_item
      def command_item
        amn_dqbattle_scenebattle_commanditem
        @enemy_window.deactivate.hide
        @enemy_window.y -= @enemy_window.height
        @actor_command_window.hide
        @dummy_window.hide
      end
     
      alias amn_dqbattle_scenebattle_onactorok on_actor_ok
      def on_actor_ok
        unless @actor_command_window.visible
          @actor_command_window.show
          @dummy_window.show
        end
        @enemy_window.deactivate.show
        amn_dqbattle_scenebattle_onactorok
      end
     
      alias amn_dqbattle_scenebattle_onskillok  on_skill_ok
      def on_skill_ok
        amn_dqbattle_scenebattle_onskillok
        @skill = @skill_window.item
        if !@skill.need_selection?
          @enemy_window.y += @enemy_window.height
          @actor_command_window.show
          @dummy_window.show
          @enemy_window.deactivate.show
        end
      end
    
      alias amn_dqbattle_scenebattle_onskillcancel  on_skill_cancel
      def on_skill_cancel
        amn_dqbattle_scenebattle_onskillcancel
        @enemy_window.y += @enemy_window.height
        @enemy_window.deactivate.show
        @actor_command_window.show
        @dummy_window.show
      end
    
      alias amn_dqbattle_scenebattle_onitemok  on_item_ok
      def on_item_ok
        amn_dqbattle_scenebattle_onitemok
        @item = @item_window.item
        if !@item.need_selection?
          @enemy_window.y += @enemy_window.height
          @actor_command_window.show
          @dummy_window.show
          @enemy_window.deactivate.show
        end
      end
    
      alias amn_dqbattle_scenebattle_onitemcancel  on_item_cancel
      def on_item_cancel
        amn_dqbattle_scenebattle_onitemcancel
        @enemy_window.deactivate.show
        @enemy_window.y += @enemy_window.height
        @actor_command_window.show
        @dummy_window.show
      end
     
    end
    class Scene_Map < Scene_Base
      def perform_transition
        if Graphics.brightness == 0
          Graphics.transition(0)
          fadein(fadein_speed)
        else
          super
        end
      end
    end
    
    class Scene_Menu < Scene_MenuBase
      def transition_speed
        return 0
      end
     
      def terminate
        super
        Graphics.transition(0)
      end
    end
    

    EDIT: Forgot something, so I updated the script here.
     
    Last edited: Dec 9, 2018
    #6
  7. Koulucky

    Koulucky Veteran Veteran

    Messages:
    52
    Likes Received:
    13
    First Language:
    English
    @A-Moonless-Night
    Thank you very much, it works almost perfectly! :)
    However, there are still a few light changes it needs and it has a bug.

    Whenever a spell is cast on an ally, the enemy window goes up higher and higher for some reason, as shown in this video:


    For the light changes, I want the cursor to be further away from the white in some windows(like you did it for the enemies):
    [​IMG]

    In these places:
    [​IMG]
    The ''actor targeting'' window could also be a bit wider so it fits longer names, in addition to the cursor not blending in:
    [​IMG]
    [​IMG]
    [​IMG]

    I'd like the command window to be even wider(a bit)bcz attack/defend and skills are stretchy.

    Also, I'd like the spells and items to be one below the other, since there are gonna be some pretty long item & spell names like Medicinal Herb, Kacrackle, etc.

    If it helps, here are the graphics/scripts I'm using for battle in my game;
    The windowskin:
    [​IMG]
    For the cursor, I'm using this script:
    Code:
    #==============================================================================
    #
    # ▼ Yanfly Engine Ace - Menu Cursor v1.00
    # -- Last Updated: 2012.01.16
    # -- Level: Easy
    # -- Requires: n/a
    #
    #==============================================================================
    
    $imported = {} if $imported.nil?
    $imported["YEA-MenuCursor"] = true
    
    #==============================================================================
    # ▼ Updates
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # 2012.01.16 - Started Script and Finished.
    #
    #==============================================================================
    # ▼ Introduction
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # This script creates visible menu cursors for your game. Whenever a window is
    # selectable and active, the menu cursor will appear for it. Menu cursors catch
    # the player's attention better and helps the player figure out quickly which
    # window became the active window. Also included with this script is the
    # ability to disable the highlighted selection bar since the window menu cursor
    # can replace it.
    #
    #==============================================================================
    # ▼ Instructions
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # To install this script, open up your script editor and copy/paste this script
    # to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.
    #
    # Make sure you have a cursor image within your project's Graphics\System\
    # folder. By default, the cursor's filename should be MenuCursor.
    #
    #==============================================================================
    # ▼ Compatibility
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
    # it will run with RPG Maker VX without adjusting.
    #
    #==============================================================================
    
    module YEA
      module MENU_CURSOR
       
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # - General Settings -
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # Adjust the general settings here for the menu cursor, such as the
        # filename used for the menu cursor, the x position buffer and the y
        # position buffer for the cursor.
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        FILENAME = "MenuCursor"     # Filename used for cursor in Graphics\System\
        BUFFER_X = 6               # X position buffer for icon.
        BUFFER_Y = 16               # Y position buffer for icon.
       
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # - Remove Highlighted Selection Bar -
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # Normally, when an entry is selected, that entry is highlighted. You can
        # opt to turn this effect off.
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        REMOVE_HIGHLIGHTED_SELECTION_BAR = true
       
      end # MENU_CURSOR
    end # YEA
    
    #==============================================================================
    # ▼ Editting anything past this point may potentially result in causing
    # computer damage, incontinence, explosion of user's head, coma, death, and/or
    # halitosis so edit at your own risk.
    #==============================================================================
    
    #==============================================================================
    # ■ Sprite_MenuCursor
    #==============================================================================
    
    class Sprite_MenuCursor < Sprite_Base
     
      #--------------------------------------------------------------------------
      # initialize
      #--------------------------------------------------------------------------
      def initialize(window)
        super(window.viewport)
        @window = window
        create_bitmap
      end
     
      #--------------------------------------------------------------------------
      # create_bitmap
      #--------------------------------------------------------------------------
      def create_bitmap
        self.bitmap = Cache.system(YEA::MENU_CURSOR::FILENAME)
        self.z = @window.z + 100
        self.opacity = 0
      end
     
      #--------------------------------------------------------------------------
      # update
      #--------------------------------------------------------------------------
      def update
        super
        update_visibility
        update_position
      end
     
      #--------------------------------------------------------------------------
      # update_visibility
      #--------------------------------------------------------------------------
      def update_visibility
        self.visible = visible_case
        self.opacity += opacity_rate
      end
     
      #--------------------------------------------------------------------------
      # visible_case
      #--------------------------------------------------------------------------
      def visible_case
        return @window.visible
      end
     
      #--------------------------------------------------------------------------
      # opacity_rate
      #--------------------------------------------------------------------------
      def opacity_rate
        rate = 255
        return -rate unless @window.active
        return rate
      end
     
      #--------------------------------------------------------------------------
      # update_position
      #--------------------------------------------------------------------------
      def update_position
        rect = @window.cursor_rect
        self.x = @window.x + rect.x - @window.ox + YEA::MENU_CURSOR::BUFFER_X
        self.y = @window.y + rect.y - @window.oy + YEA::MENU_CURSOR::BUFFER_Y
      end
     
    end # Sprite_MenuCursor
    
    #==============================================================================
    # ■ Window
    #==============================================================================
    
    class Window
     
      #--------------------------------------------------------------------------
      # alias method: windowskin=
      #--------------------------------------------------------------------------
      alias window_windowskin_change_cursor windowskin=
      def windowskin=(skin)
        if YEA::MENU_CURSOR::REMOVE_HIGHLIGHTED_SELECTION_BAR
          skin = skin.dup
          skin.clear_rect(64, 64, 32, 32)
        end
        window_windowskin_change_cursor(skin)
      end
     
    end # Window
    
    #==============================================================================
    # ■ Scene_Base
    #==============================================================================
    
    class Scene_Base
     
      #--------------------------------------------------------------------------
      # alias method: post_start
      #--------------------------------------------------------------------------
      alias scene_base_post_start_cursor post_start
      def post_start
        create_menu_cursors
        scene_base_post_start_cursor
      end
     
      #--------------------------------------------------------------------------
      # new method: create_menu_cursors
      #--------------------------------------------------------------------------
      def create_menu_cursors
        @menu_cursors = []
        instance_variables.each do |varname|
          ivar = instance_variable_get(varname)
          create_cursor_sprite(ivar) if ivar.is_a?(Window_Selectable)
        end
      end
     
      #--------------------------------------------------------------------------
      # new method: create_cursor_sprite
      #--------------------------------------------------------------------------
      def create_cursor_sprite(window)
        @menu_cursors.push(Sprite_MenuCursor.new(window))
      end
     
      #--------------------------------------------------------------------------
      # alias method: pre_terminate
      #--------------------------------------------------------------------------
      alias scene_base_pre_terminate_cursor pre_terminate
      def pre_terminate
        dispose_menu_cursors
        scene_base_pre_terminate_cursor
      end
     
      #--------------------------------------------------------------------------
      # new method: dispose_menu_cursors
      #--------------------------------------------------------------------------
      def dispose_menu_cursors
        @menu_cursors.each { |cursor| cursor.dispose }
      end
     
      #--------------------------------------------------------------------------
      # alias method: update_basic
      #--------------------------------------------------------------------------
      alias scene_base_update_basic_cursor update_basic
      def update_basic
        scene_base_update_basic_cursor
        update_menu_cursors
      end
     
      #--------------------------------------------------------------------------
      # new method: update_menu_cursors
      #--------------------------------------------------------------------------
      def update_menu_cursors
        @menu_cursors.each { |cursor| cursor.update }
      end
     
    end # Scene_Base
    
    #==============================================================================
    #
    # ▼ End of File
    #
    #==============================================================================
    And this cursor graphic(it may seem invisible but that's bcz its white):
    [​IMG]
    The font is ''Press Start 2P'' and the font size is 14, without bold/italic/shadow or outline.

    Thanks!
     
    #7
  8. A-Moonless-Night

    A-Moonless-Night WINTER IS COMING Veteran

    Messages:
    477
    Likes Received:
    342
    Location:
    New Zealand
    First Language:
    English
    Primarily Uses:
    RMVXA
    Should be fixed now:
    Code:
    =begin
    #==============================================================================#
    #   AMN DQ Battle Addon
    #   Version 1.02
    #   Author: AMoonlessNight
    #   Date: 09 Dec 2018
    #   Latest: 10 Dec 2018
    #==============================================================================#
    #   UPDATE LOG
    #------------------------------------------------------------------------------#
    # 09 Dec 2018 - created the script
    # 10 Dec 2018 - fixed a couple of bugs
    #==============================================================================#
    #   TERMS OF USE
    #------------------------------------------------------------------------------#
    # - Please credit AMoonlessNight or A-Moonless-Night
    # - Free for non-commercial use
    # - I'd love to see your game if you end up using one of my scripts
    #==============================================================================#
    
    This script updates the battle scene from Jamiras843 Dragon Quest Battle script,
    changing the position of certain windows and changing the way some information
    is drawn.
    
    You can choose whether to draw icons in skill and item lists in the editable
    region below.
    
    All windows now open and close instantly, no fade-in/-out transition.
    
    =end
    module AMN_DQ_Battle
    #==============================================================================
    # ** EDITABLE REGION BELOW
    #------------------------------------------------------------------------------
    #  Change the values in the area below to suit your needs.
    #==============================================================================
    
      Icons_On = false  # whether to draw icons in item and skill lists
     
    #==============================================================================
    # ** END OF EDITABLE REGION
    #------------------------------------------------------------------------------
    #  Please do not edit below this point unless you know what you are doing.
    #==============================================================================
    end
    
    class Window_Base < Window
     
      def update_open
        self.openness += 255
        @opening = false if open?
      end
    
      def update_close
        self.openness -= 255
        @closing = false if close?
      end
     
      alias amn_dqbattle_windowbase_drawitemname  draw_item_name
      def draw_item_name(item, x, y, enabled = true, width = 172)
        if AMN_DQ_Battle::Icons_On
          amn_dqbattle_windowbase_drawitemname(item, x, y, enabled, width)
        else
          return unless item
          change_color(normal_color, enabled)
          draw_text(x, y, width, line_height, item.name)
        end
      end
    end
    
    class Window_Selectable < Window_Base
    
      def item_rect_for_text(index)
        rect = item_rect(index)
        rect.x += 10
        rect.width -= 20
        rect
      end
     
    end
    
    class Window_BattleActor < Window_BattleStatus
     
      def visible_line_number; item_max; end
      def show; select(0) if @info_viewport; super; end
      def hide; super; end
      def window_width; 170; end
     
      def draw_item(index)
        actor = $game_party.battle_members[index]
        draw_actor_name(actor, 10, line_height * index)
      end
     
    end
    
    class Window_BattleEnemy < Window_Selectable
      def col_max; return 1; end
    
      def initialize(info_viewport)
        super(250, 296, Graphics.width - 250, fitting_height(4))
        refresh
        self.visible = false
      end
     
      def deactivate
        unselect
        super
      end
     
    end
    
    class Window_DQ_BattleStatus < Window_Base
    
      def initialize
        super(100, 0, 112 * [$game_party.members.size, 4].min, 120)  
        create_contents    
        @actor1 = $game_party.members[0]    
        @actor2 = $game_party.members[1]    
        @actor3 = $game_party.members[2]    
        @actor4 = $game_party.members[3]    
        refresh    
        self.openness = 0
        self.arrows_visible = false
      end
     
      def draw_actor_info(actor, x, y, width)
        draw_face(actor.face_name, actor.face_index, x, y, false) if Jami_DQ_Battle::SHOW_FACE
        draw_actor_name(actor, x, y)
        draw_actor_hp(actor, x, y+24, width)
        draw_actor_mp(actor, x, y+44, width)
        draw_actor_level(actor, x, y+64)
        draw_actor_icons(actor, x+60, y)
      end
     
      def draw_window_content
        draw_actor_info(@actor1, 0, 0, 80)
        draw_actor_info(@actor2, 110, 0, 80) if $game_party.members.size > 1
        draw_actor_info(@actor3, 220, 0, 80) if $game_party.members.size > 2
        draw_actor_info(@actor4, 330, 0, 80) if $game_party.members.size > 3
      end
    end
    
    class Window_ActorCommand < Window_Command
      def spacing; return 6; end
      def visible_line_number; return 3; end
      def window_width; return 250; end
       
      alias amn_dqbattle_windowactorcmd_init  initialize
      def initialize
        amn_dqbattle_windowactorcmd_init
        self.opacity = 0
      end
     
    end
    
    class Window_ActorDummy < Window_Base
      def initialize
        super(0, 0, 250, fitting_height(visible_line_number))
        self.openness = 0
        @actor = nil
      end
    
      def visible_line_number; return 4; end
    
      def draw_actor_details
        return unless @actor
        draw_text(0, 0, contents_width, line_height, @actor.name, 1)
        draw_horz_line(12)
      end
    
      def draw_horz_line(y)
        line_y = y + line_height / 2 - 1
        contents.fill_rect(0, line_y, contents_width, 2, normal_color)
      end
     
      def setup(actor)
        @actor = actor
        contents.clear
        draw_actor_details
        open
      end
    end
    
    class Window_BattleItem < Window_ItemList
      def col_max; return 1; end
       
      def initialize(help_window, info_viewport)
        height = fitting_height(4)
        hww = help_window.width
        super(0, Graphics.height - height, Graphics.width - hww, height)
        self.visible = false
        @help_window = help_window
        @info_viewport = info_viewport
      end
     
      def draw_item(index)
        item = @data[index]
        if item
          rect = item_rect(index)
          rect.width -= 8
          draw_item_name(item, rect.x+10, rect.y, enable?(item))
          draw_item_number(rect, item)
        end
      end
     
    end
    
    class Window_BattleSkill < Window_SkillList
      attr_reader :actor
      def col_max; return 1; end
     
      def initialize(help_window, info_viewport)
        height = fitting_height(4)
        hww = help_window.width
        super(0, Graphics.height - height, Graphics.width - hww, height)
        self.visible = false
        @help_window = help_window
        @info_viewport = info_viewport
        @mp_window = nil
      end
     
      def mp_window=(mp_window)
        @mp_window = mp_window
      end
    
      def draw_item(index)
        skill = @data[index]
        if skill
          rect = item_rect(index)
          rect.width -= 8
          draw_item_name(skill, rect.x+10, rect.y, enable?(skill))
        end
      end
     
      alias amn_dqbattle_windbattleskill_show show
      def show
        @mp_window.show if @mp_window
        amn_dqbattle_windbattleskill_show
      end
    
      alias amn_dqbattle_windbattleskill_hide hide
      def hide
        @mp_window.hide if @mp_window
        amn_dqbattle_windbattleskill_hide
      end
     
      def update_help
        super
        @mp_window.set_item if @mp_window
      end
    end
    
    class Window_BattleSkillMP < Window_Base
    
      def initialize(skill_window, info_viewport)
        h = fitting_height(1)
        super(Graphics.width - 250, Graphics.height - h, 250, h)
        self.visible = false
        @info_viewport = info_viewport
        skill_window.mp_window = self
        @skill_window = skill_window
      end
    
      def set_text(text)
        if text != @text
          @text = text
          refresh
        end
      end
    
      def clear
        set_text("")
      end
    
      def item
        @skill_window.item
      end
     
      def actor
        @skill_window.actor
      end
     
      def set_item
        return clear if actor.nil? || item.nil?
        return clear if actor.skill_mp_cost(item).zero? && actor.skill_tp_cost(item).zero?
        if actor.skill_mp_cost(item) > 0
          set_text(sprintf("MP Cost: %d/%d", actor.skill_mp_cost(item), actor.mp))
        elsif actor.skill_tp_cost(item) > 0
          set_text(sprintf("TP Cost: %d/%d", actor.skill_tp_cost(item), actor.tp))
        end
      end
    
      def refresh
        contents.clear
        draw_text_ex(4, 0, @text)
      end
    end
    
    class Scene_Battle < Scene_Base
     
      alias amn_dqbattle_scenebattle_createactorcmdwind create_actor_command_window
      def create_actor_command_window
        @dummy_window = Window_ActorDummy.new
        amn_dqbattle_scenebattle_createactorcmdwind
        @actor_command_window.y = 320
        @dummy_window.y = 296
      end
     
      alias amn_dqbattle_scenebattle_createactorwind  create_actor_window
      def create_actor_window
        amn_dqbattle_scenebattle_createactorwind
        @actor_window.y -= @actor_window.height
        @actor_window.x = Graphics.width - @actor_window.width
      end
     
      alias amn_dqbattle_scenebattle_startpartycmdselect  start_party_command_selection
      def start_party_command_selection
        amn_dqbattle_scenebattle_startpartycmdselect
        unless scene_changing?  
          if BattleManager.input_start    
            @dummy_window.close
            @enemy_window.deactivate.hide
          end
        end
      end
     
      alias amn_dqbattle_scenebattle_createskillwind create_skill_window
      def create_skill_window
        amn_dqbattle_scenebattle_createskillwind
        @skill_mp_window = Window_BattleSkillMP.new(@skill_window, @info_viewport)
      end
     
      alias amn_dqbattle_scenebattle_createhelpwind create_help_window
      def create_help_window
        amn_dqbattle_scenebattle_createhelpwind
        w = 250
        hh = @help_window.height
        h = @help_window.fitting_height(4)
        @help_window.move(Graphics.width - w, Graphics.height - h, w, hh)
        @help_window.create_contents
      end
     
      alias amn_dqbattle_scenebattle_cmdfight command_fight
      def command_fight
        amn_dqbattle_scenebattle_cmdfight
        @enemy_window.deactivate.show
      end
     
      alias amn_dqbattle_scenebattle_startactorcmdselect  start_actor_command_selection
      def start_actor_command_selection
        amn_dqbattle_scenebattle_startactorcmdselect
        @dummy_window.setup(BattleManager.actor)
      end
     
      alias amn_dqbattle_scenebattle_updatemsgopen  update_message_open
      def update_message_open
        amn_dqbattle_scenebattle_updatemsgopen
        if $game_message.busy? && !@DQ_status_window.close?  
          @dummy_window.close
        end
      end
    
      def turn_start
        @party_command_window.close
        @actor_command_window.close
        @dummy_window.close
        @enemy_window.deactivate.hide
        @subject =  nil
        BattleManager.turn_start
        if Jami_DQ_Battle::HUD_HIDE
          @DQ_status_window.height = @DQ_status_window.fitting_height(2)
          @info_viewport.rect.height = @DQ_status_window.fitting_height(2)
        end
        @log_window.clear
      end
    
      def turn_end
        all_battle_members.each do |battler|  
          battler.on_turn_end  
          refresh_status  
          if Jami_DQ_Battle::HUD_HIDE
            @DQ_status_window.height = 110
            @DQ_status_window.update_padding
            @info_viewport.rect.height = @DQ_status_window.height
          end  
          @log_window.display_auto_affected_status(battler)  
          @log_window.wait_and_clear
        end
        BattleManager.turn_end
        process_event
        start_party_command_selection
      end
     
      def update_message_open
        if $game_message.busy?
          if !$game_troop.all_dead? && !@DQ_status_window.close?
            @message_window.openness = 0  
            @DQ_status_window.close
          end
          @party_command_window.close  
          @actor_command_window.close
        end
      end
     
      def on_enemy_ok
        unless @actor_command_window.visible
          @actor_command_window.show
          @dummy_window.show
        end
        case @actor_command_window.current_symbol
        when :skill
          @enemy_window.y += @enemy_window.height
        when :item
          @enemy_window.y += @enemy_window.height
        end
        BattleManager.actor.input.target_index = @enemy_window.enemy.index
        @skill_window.hide
        @item_window.hide
        next_command
      end
    
      def on_enemy_cancel
        @enemy_window.deactivate
        case @actor_command_window.current_symbol
        when :attack
          @actor_command_window.activate
        when :skill
          @skill_window.activate
          @enemy_window.hide
        when :item
          @item_window.activate
          @enemy_window.hide
        end
      end
     
      alias amn_dqbattle_scenebattle_commandskill command_skill
      def command_skill
        amn_dqbattle_scenebattle_commandskill
        @enemy_window.deactivate.hide
        @enemy_window.y -= @enemy_window.height
        @actor_command_window.hide
        @dummy_window.hide
      end
    
      alias amn_dqbattle_scenebattle_commanditem command_item
      def command_item
        amn_dqbattle_scenebattle_commanditem
        @enemy_window.deactivate.hide
        @enemy_window.y -= @enemy_window.height
        @actor_command_window.hide
        @dummy_window.hide
      end
     
      alias amn_dqbattle_scenebattle_onactorok on_actor_ok
      def on_actor_ok
        unless @actor_command_window.visible
          @actor_command_window.show
          @dummy_window.show
        end
        @enemy_window.y += @enemy_window.height
        @enemy_window.deactivate.show
        amn_dqbattle_scenebattle_onactorok
      end
     
      alias amn_dqbattle_scenebattle_onskillok  on_skill_ok
      def on_skill_ok
        amn_dqbattle_scenebattle_onskillok
        @skill = @skill_window.item
        if !@skill.need_selection?
          @enemy_window.y += @enemy_window.height
          @actor_command_window.show
          @dummy_window.show
          @enemy_window.deactivate.show
        end
      end
    
      alias amn_dqbattle_scenebattle_onskillcancel  on_skill_cancel
      def on_skill_cancel
        amn_dqbattle_scenebattle_onskillcancel
        @enemy_window.y += @enemy_window.height
        @enemy_window.deactivate.show
        @actor_command_window.show
        @dummy_window.show
      end
    
      alias amn_dqbattle_scenebattle_onitemok  on_item_ok
      def on_item_ok
        amn_dqbattle_scenebattle_onitemok
        @item = @item_window.item
        if !@item.need_selection?
          @enemy_window.y += @enemy_window.height
          @actor_command_window.show
          @dummy_window.show
          @enemy_window.deactivate.show
        end
      end
    
      alias amn_dqbattle_scenebattle_onitemcancel  on_item_cancel
      def on_item_cancel
        amn_dqbattle_scenebattle_onitemcancel
        @enemy_window.deactivate.show
        @enemy_window.y += @enemy_window.height
        @actor_command_window.show
        @dummy_window.show
      end
     
    end
    class Scene_Map < Scene_Base
      def perform_transition
        if Graphics.brightness == 0
          Graphics.transition(0)
          fadein(fadein_speed)
        else
          super
        end
      end
    end
    
    class Scene_Menu < Scene_MenuBase
      def transition_speed
        return 0
      end
     
      def terminate
        super
        Graphics.transition(0)
      end
    end

    You can set the position of the menu cursor in the Menu Cursor script, line 56. I set it to 10 and that seemed to do the trick.

    EDIT: Also, you should add Mithran's Text Cache to your project. It stops the text shrinking like that. https://forums.rpgmakerweb.com/index.php?threads/text-cache.1001/
     
    #8
  9. Koulucky

    Koulucky Veteran Veteran

    Messages:
    52
    Likes Received:
    13
    First Language:
    English
    @A-Moonless-Night
    Thanks a lot! I also added text cache and set the menu cursor to 10 and now it's perfect! :D
    Thank you again for all your help!!

    EDIT: I've encountered another bug, when I select a monster to attack, the wrong one is attacked. For example, in this video I target the candy cat, yet Hero attacks the dracky:


    EDIT2: Also, when the party starts to escape, there's no escape text for some reason.
     
    Last edited: Dec 10, 2018
    #9
  10. Roninator2

    Roninator2 Gamer Veteran

    Messages:
    1,598
    Likes Received:
    349
    Location:
    Canada
    First Language:
    English
    Primarily Uses:
    RMVXA
    @Koulucky Under Window_BattleEnemy in def deactivate there is an unselect. Comment that out. Around line 106.
    Maybe AMN can explain why that was needed.
    This is not a fix, but maybe it is. AMN will have to let us know if that's good.
     
    #10
  11. Koulucky

    Koulucky Veteran Veteran

    Messages:
    52
    Likes Received:
    13
    First Language:
    English
    @Roninator2 Thanks, commenting that out seems to have fixed the selection problem.
     
    #11
  12. A-Moonless-Night

    A-Moonless-Night WINTER IS COMING Veteran

    Messages:
    477
    Likes Received:
    342
    Location:
    New Zealand
    First Language:
    English
    Primarily Uses:
    RMVXA
    Oops, yep, sorry, I was playing around with something and forgot to get rid of that.
     
    #12
  13. Roninator2

    Roninator2 Gamer Veteran

    Messages:
    1,598
    Likes Received:
    349
    Location:
    Canada
    First Language:
    English
    Primarily Uses:
    RMVXA
    Does that mean that the entire deactivate part can be removed?
     
    #13
  14. A-Moonless-Night

    A-Moonless-Night WINTER IS COMING Veteran

    Messages:
    477
    Likes Received:
    342
    Location:
    New Zealand
    First Language:
    English
    Primarily Uses:
    RMVXA
    @Roninator2 Yep, it doesn't need to be there at all.
     
    #14
  15. Koulucky

    Koulucky Veteran Veteran

    Messages:
    52
    Likes Received:
    13
    First Language:
    English
    @A-Moonless-Night
    When the party starts to escape, there's no escape text for some reason. Is it a bug or...?
     
    #15
  16. Roninator2

    Roninator2 Gamer Veteran

    Messages:
    1,598
    Likes Received:
    349
    Location:
    Canada
    First Language:
    English
    Primarily Uses:
    RMVXA
    edit
     
    Last edited: Dec 11, 2018
    #16
  17. A-Moonless-Night

    A-Moonless-Night WINTER IS COMING Veteran

    Messages:
    477
    Likes Received:
    342
    Location:
    New Zealand
    First Language:
    English
    Primarily Uses:
    RMVXA
    The easiest way to fix that is to make it so that the status window never disappears, so I've done that:
    Code:
    =begin
    #==============================================================================#
    #   AMN DQ Battle Addon
    #   Version 1.02
    #   Author: AMoonlessNight
    #   Date: 09 Dec 2018
    #   Latest: 11 Dec 2018
    #==============================================================================#
    #   UPDATE LOG
    #------------------------------------------------------------------------------#
    # 09 Dec 2018 - created the script
    # 10 Dec 2018 - fixed a couple of bugs
    # 11 Dec 2018 - status window always stays up during battle
    #==============================================================================#
    #   TERMS OF USE
    #------------------------------------------------------------------------------#
    # - Please credit AMoonlessNight or A-Moonless-Night
    # - Free for non-commercial use
    # - I'd love to see your game if you end up using one of my scripts
    #==============================================================================#
    
    This script updates the battle scene from Jamiras843 Dragon Quest Battle script,
    changing the position of certain windows and changing the way some information
    is drawn.
    
    You can choose whether to draw icons in skill and item lists in the editable
    region below.
    
    All windows now open and close instantly, no fade-in/-out transition.
    
    =end
    module AMN_DQ_Battle
    #==============================================================================
    # ** EDITABLE REGION BELOW
    #------------------------------------------------------------------------------
    #  Change the values in the area below to suit your needs.
    #==============================================================================
    
      Icons_On = false  # whether to draw icons in item and skill lists
     
    #==============================================================================
    # ** END OF EDITABLE REGION
    #------------------------------------------------------------------------------
    #  Please do not edit below this point unless you know what you are doing.
    #==============================================================================
    end
    
    class Window_Base < Window
     
      def update_open
        self.openness += 255
        @opening = false if open?
      end
    
      def update_close
        self.openness -= 255
        @closing = false if close?
      end
     
      alias amn_dqbattle_windowbase_drawitemname  draw_item_name
      def draw_item_name(item, x, y, enabled = true, width = 172)
        if AMN_DQ_Battle::Icons_On
          amn_dqbattle_windowbase_drawitemname(item, x, y, enabled, width)
        else
          return unless item
          change_color(normal_color, enabled)
          draw_text(x, y, width, line_height, item.name)
        end
      end
    end
    
    class Window_Selectable < Window_Base
    
      def item_rect_for_text(index)
        rect = item_rect(index)
        rect.x += 10
        rect.width -= 20
        rect
      end
     
    end
    
    class Window_BattleActor < Window_BattleStatus
     
      def visible_line_number; item_max; end
      def show; select(0) if @info_viewport; super; end
      def hide; super; end
      def window_width; 170; end
     
      def draw_item(index)
        actor = $game_party.battle_members[index]
        draw_actor_name(actor, 10, line_height * index)
      end
     
    end
    
    class Window_BattleEnemy < Window_Selectable
      def col_max; return 1; end
    
      def initialize(info_viewport)
        super(250, 296, Graphics.width - 250, fitting_height(4))
        refresh
        self.visible = false
      end
     
    end
    
    class Window_DQ_BattleStatus < Window_Base
    
      def initialize
        super(100, 0, 112 * [$game_party.members.size, 4].min, 120)   
        create_contents     
        @actor1 = $game_party.members[0]     
        @actor2 = $game_party.members[1]     
        @actor3 = $game_party.members[2]     
        @actor4 = $game_party.members[3]     
        refresh     
        self.openness = 0
        self.arrows_visible = false
      end
     
      def draw_actor_info(actor, x, y, width)
        draw_face(actor.face_name, actor.face_index, x, y, false) if Jami_DQ_Battle::SHOW_FACE
        draw_actor_name(actor, x, y)
        draw_actor_hp(actor, x, y+24, width)
        draw_actor_mp(actor, x, y+44, width)
        draw_actor_level(actor, x, y+64)
        draw_actor_icons(actor, x+60, y)
      end
     
      def draw_window_content
        draw_actor_info(@actor1, 0, 0, 80)
        draw_actor_info(@actor2, 110, 0, 80) if $game_party.members.size > 1
        draw_actor_info(@actor3, 220, 0, 80) if $game_party.members.size > 2
        draw_actor_info(@actor4, 330, 0, 80) if $game_party.members.size > 3
      end
    end
    
    class Window_ActorCommand < Window_Command
      def spacing; return 6; end
      def visible_line_number; return 3; end
      def window_width; return 250; end
        
      alias amn_dqbattle_windowactorcmd_init  initialize
      def initialize
        amn_dqbattle_windowactorcmd_init
        self.opacity = 0
      end
     
    end
    
    class Window_ActorDummy < Window_Base
      def initialize
        super(0, 0, 250, fitting_height(visible_line_number))
        self.openness = 0
        @actor = nil
      end
    
      def visible_line_number; return 4; end
    
      def draw_actor_details
        return unless @actor
        draw_text(0, 0, contents_width, line_height, @actor.name, 1)
        draw_horz_line(12)
      end
    
      def draw_horz_line(y)
        line_y = y + line_height / 2 - 1
        contents.fill_rect(0, line_y, contents_width, 2, normal_color)
      end
     
      def setup(actor)
        @actor = actor
        contents.clear
        draw_actor_details
        open
      end
    end
    
    class Window_BattleItem < Window_ItemList
      def col_max; return 1; end
        
      def initialize(help_window, info_viewport)
        height = fitting_height(4)
        hww = help_window.width
        super(0, Graphics.height - height, Graphics.width - hww, height)
        self.visible = false
        @help_window = help_window
        @info_viewport = info_viewport
      end
     
      def draw_item(index)
        item = @data[index]
        if item
          rect = item_rect(index)
          rect.width -= 8
          draw_item_name(item, rect.x+10, rect.y, enable?(item))
          draw_item_number(rect, item)
        end
      end
     
    end
    
    class Window_BattleSkill < Window_SkillList
      attr_reader :actor
      def col_max; return 1; end
     
      def initialize(help_window, info_viewport)
        height = fitting_height(4)
        hww = help_window.width
        super(0, Graphics.height - height, Graphics.width - hww, height)
        self.visible = false
        @help_window = help_window
        @info_viewport = info_viewport
        @mp_window = nil
      end
     
      def mp_window=(mp_window)
        @mp_window = mp_window
      end
    
      def draw_item(index)
        skill = @data[index]
        if skill
          rect = item_rect(index)
          rect.width -= 8
          draw_item_name(skill, rect.x+10, rect.y, enable?(skill))
        end
      end
     
      alias amn_dqbattle_windbattleskill_show show
      def show
        @mp_window.show if @mp_window
        amn_dqbattle_windbattleskill_show
      end
    
      alias amn_dqbattle_windbattleskill_hide hide
      def hide
        @mp_window.hide if @mp_window
        amn_dqbattle_windbattleskill_hide
      end
     
      def update_help
        super
        @mp_window.set_item if @mp_window
      end
    end
    
    class Window_BattleSkillMP < Window_Base
    
      def initialize(skill_window, info_viewport)
        h = fitting_height(1)
        super(Graphics.width - 250, Graphics.height - h, 250, h)
        self.visible = false
        @info_viewport = info_viewport
        skill_window.mp_window = self
        @skill_window = skill_window
      end
    
      def set_text(text)
        if text != @text
          @text = text
          refresh
        end
      end
    
      def clear
        set_text("")
      end
    
      def item
        @skill_window.item
      end
     
      def actor
        @skill_window.actor
      end
     
      def set_item
        return clear if actor.nil? || item.nil?
        return clear if actor.skill_mp_cost(item).zero? && actor.skill_tp_cost(item).zero?
        if actor.skill_mp_cost(item) > 0
          set_text(sprintf("MP Cost: %d/%d", actor.skill_mp_cost(item), actor.mp))
        elsif actor.skill_tp_cost(item) > 0
          set_text(sprintf("TP Cost: %d/%d", actor.skill_tp_cost(item), actor.tp))
        end
      end
    
      def refresh
        contents.clear
        draw_text_ex(4, 0, @text)
      end
    end
    
    class Scene_Battle < Scene_Base
     
      alias amn_dqbattle_scenebattle_createactorcmdwind create_actor_command_window
      def create_actor_command_window
        @dummy_window = Window_ActorDummy.new
        amn_dqbattle_scenebattle_createactorcmdwind
        @actor_command_window.y = 320
        @dummy_window.y = 296
      end
     
      alias amn_dqbattle_scenebattle_createactorwind  create_actor_window
      def create_actor_window
        amn_dqbattle_scenebattle_createactorwind
        @actor_window.y -= @actor_window.height
        @actor_window.x = Graphics.width - @actor_window.width
      end
     
      alias amn_dqbattle_scenebattle_startpartycmdselect  start_party_command_selection
      def start_party_command_selection
        amn_dqbattle_scenebattle_startpartycmdselect
        unless scene_changing?   
          if BattleManager.input_start     
            @dummy_window.close
            @enemy_window.deactivate.hide
          end
        end
      end
     
      alias amn_dqbattle_scenebattle_createskillwind create_skill_window
      def create_skill_window
        amn_dqbattle_scenebattle_createskillwind
        @skill_mp_window = Window_BattleSkillMP.new(@skill_window, @info_viewport)
      end
     
      alias amn_dqbattle_scenebattle_createhelpwind create_help_window
      def create_help_window
        amn_dqbattle_scenebattle_createhelpwind
        w = 250
        hh = @help_window.height
        h = @help_window.fitting_height(4)
        @help_window.move(Graphics.width - w, Graphics.height - h, w, hh)
        @help_window.create_contents
      end
     
      alias amn_dqbattle_scenebattle_cmdfight command_fight
      def command_fight
        amn_dqbattle_scenebattle_cmdfight
        @enemy_window.deactivate.show
      end
     
      alias amn_dqbattle_scenebattle_startactorcmdselect  start_actor_command_selection
      def start_actor_command_selection
        amn_dqbattle_scenebattle_startactorcmdselect
        @dummy_window.setup(BattleManager.actor)
      end
    
      def turn_start
        @party_command_window.close
        @actor_command_window.close
        @dummy_window.close
        @enemy_window.deactivate.hide
        @subject =  nil
        BattleManager.turn_start
        if Jami_DQ_Battle::HUD_HIDE
          @DQ_status_window.height = @DQ_status_window.fitting_height(2)
          @info_viewport.rect.height = @DQ_status_window.fitting_height(2)
        end
        @log_window.clear
      end
    
      def turn_end
        all_battle_members.each do |battler|   
          battler.on_turn_end   
          refresh_status   
          if Jami_DQ_Battle::HUD_HIDE
            @DQ_status_window.height = 110
            @DQ_status_window.update_padding
            @info_viewport.rect.height = @DQ_status_window.height
          end   
          @log_window.display_auto_affected_status(battler)   
          @log_window.wait_and_clear
        end
        BattleManager.turn_end
        process_event
        start_party_command_selection
      end
     
      def update_message_open
        if $game_message.busy?
          @message_window.openness = 0
          @party_command_window.close   
          @actor_command_window.close
          @dummy_window.close
          @message_window.openness = 255
        end
      end
     
      def on_enemy_ok
        unless @actor_command_window.visible
          @actor_command_window.show
          @dummy_window.show
        end
        case @actor_command_window.current_symbol
        when :skill
          @enemy_window.y += @enemy_window.height
        when :item
          @enemy_window.y += @enemy_window.height
        end
        BattleManager.actor.input.target_index = @enemy_window.enemy.index
        @skill_window.hide
        @item_window.hide
        next_command
      end
    
      def on_enemy_cancel
        @enemy_window.deactivate
        case @actor_command_window.current_symbol
        when :attack
          @actor_command_window.activate
        when :skill
          @skill_window.activate
          @enemy_window.hide
        when :item
          @item_window.activate
          @enemy_window.hide
        end
      end
     
      alias amn_dqbattle_scenebattle_commandskill command_skill
      def command_skill
        amn_dqbattle_scenebattle_commandskill
        @enemy_window.deactivate.hide
        @enemy_window.y -= @enemy_window.height
        @actor_command_window.hide
        @dummy_window.hide
      end
    
      alias amn_dqbattle_scenebattle_commanditem command_item
      def command_item
        amn_dqbattle_scenebattle_commanditem
        @enemy_window.deactivate.hide
        @enemy_window.y -= @enemy_window.height
        @actor_command_window.hide
        @dummy_window.hide
      end
     
      alias amn_dqbattle_scenebattle_onactorok on_actor_ok
      def on_actor_ok
        unless @actor_command_window.visible
          @actor_command_window.show
          @dummy_window.show
        end
        @enemy_window.y += @enemy_window.height
        @enemy_window.deactivate.show
        amn_dqbattle_scenebattle_onactorok
      end
     
      alias amn_dqbattle_scenebattle_onskillok  on_skill_ok
      def on_skill_ok
        amn_dqbattle_scenebattle_onskillok
        @skill = @skill_window.item
        if !@skill.need_selection?
          @enemy_window.y += @enemy_window.height
          @actor_command_window.show
          @dummy_window.show
          @enemy_window.deactivate.show
        end
      end
    
      alias amn_dqbattle_scenebattle_onskillcancel  on_skill_cancel
      def on_skill_cancel
        amn_dqbattle_scenebattle_onskillcancel
        @enemy_window.y += @enemy_window.height
        @enemy_window.deactivate.show
        @actor_command_window.show
        @dummy_window.show
      end
    
      alias amn_dqbattle_scenebattle_onitemok  on_item_ok
      def on_item_ok
        amn_dqbattle_scenebattle_onitemok
        @item = @item_window.item
        if !@item.need_selection?
          @enemy_window.y += @enemy_window.height
          @actor_command_window.show
          @dummy_window.show
          @enemy_window.deactivate.show
        end
      end
    
      alias amn_dqbattle_scenebattle_onitemcancel  on_item_cancel
      def on_item_cancel
        amn_dqbattle_scenebattle_onitemcancel
        @enemy_window.deactivate.show
        @enemy_window.y += @enemy_window.height
        @actor_command_window.show
        @dummy_window.show
      end
     
    end
    class Scene_Map < Scene_Base
      def perform_transition
        if Graphics.brightness == 0
          Graphics.transition(0)
          fadein(fadein_speed)
        else
          super
        end
      end
    end
    
    class Scene_Menu < Scene_MenuBase
      def transition_speed
        return 0
      end
     
      def terminate
        super
        Graphics.transition(0)
      end
    end

    The only issue I can foresee is if you display a message during battle that would sit at the top of the screen. If you stumble across any issues, let me know.
     
    #17
  18. Roninator2

    Roninator2 Gamer Veteran

    Messages:
    1,598
    Likes Received:
    349
    Location:
    Canada
    First Language:
    English
    Primarily Uses:
    RMVXA
    @A-Moonless-Night @Koulucky
    I did a little testing.
    The values for Window_Base are too high it seems.
    Code:
    class Window_Base < Window
     
      def update_open
        self.openness += 254    <- changed from 255
        @opening = false if open?
      end
    
      def update_close
        self.openness -= 254     <- changed from 255
        @closing = false if close?
      end
    
     
    #18
  19. Koulucky

    Koulucky Veteran Veteran

    Messages:
    52
    Likes Received:
    13
    First Language:
    English
    #19
  20. Catlunch

    Catlunch Villager Member

    Messages:
    8
    Likes Received:
    0
    First Language:
    English
    Primarily Uses:
    RMVXA
    EDIT: Ignore this, I forgot to turn off an empty Event after Turn 1, so it made the fight messed up. Sorry for the necro!
     
    #20
Thread Status:
Not open for further replies.

Share This Page