Envision, Create, Share

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

Panel Equip System

Panel Equip SystemVersion: 1
By: CottonJ

Introduction

Sorry but the script is pretty large. and due to the fact that the script isn't tested to work without some of the scripts in the demo, I feel it unneccisary to post the script. I will try to post as many screenshots as I can to make up for it. Also... there is nudity in the demo..... but I doubt that'll matter. It's pixel nudity.

Features
<Post a bulleted list of features here. This section is optional.>
  • Kingdom Hearts 358/2 Days Style Panelling System
  • Equip Level Ups, instead of Leveling Up through experience (Gain a Level Up Item through experience.)
  • Equip Weapon and Armor Attachments.
  • Assign Items to specific actors.
  • Learn Skills through Weapon Panels.
  • "There is also more !!"

Screenshots

screen2r.png


screen3.png


I would post more but I'm insanely sleepy right now... I got like no sleep workin on that last night and there are still bugs.
Demo

The Demo Contains the RTAB and a few add-ons (Made By Others),

Edits to the system, The Actual Panel Script, Actor Bags, Visual Equipment for Battlers, and a Debug System to help you figure out if an item hasn't been written in the database... so to speak.


http://www.zshare.net/download/71547602cff69959/

Script

Code:
#o = panel

#l = link

#x = space

#+==============================================================================

#

#+------------------------------------------------------------------------------

#

#+------------------------------------------------------------------------------

#   Item Database

#+------------------------------------------------------------------------------

#

#+------------------------------------------------------------------------------

#

#+==============================================================================

 

#+==============================================================================

# Module COTTONJJ

#+------------------------------------------------------------------------------

# Sets up Special Item IDs

#+==============================================================================

module COTTONJJ

  LEVELUP = 1                #Item ID of Level Up Item.

  LEVELUPDOUBLER = 2         #Item ID of Level Up Doubler

  LEVELUPTRIPLER = 3         #Item ID of Level Up Tripler

  ASSISTITEMS = [1,2,3]      #ID Hash of Assist Item IDs (Level Ups)

  ASSISTARMORS = [1,2,3,4]   #ID Hash of Assist Armor IDs (Weapon Accessories

  ABILITYVAR = 1             #ID of Ability Armor

  

  ITEMBAG = false            #Set to true if actors are allowed individual bags.

  BLANKICON = ""             #Name of Icon on Link Panels

  RTAB = false               #Set true if using RTAB

  CUSTOMXY = false           #Set true only if you want your battlers sideview.

  GAINLEVELITEM = false      #Set true if actors gain level ups through exp.

end

 

 

 

 

 

#+==============================================================================

# Global Panel Variables

#+==============================================================================

$panels = []

$panels2 = []

$panels3 = []

$panels[0] = []

$panels[1] = []

$panels[2] = []

$panels[3] = []

$panels[4] = []

$panels2[0] = []

$panels2[1] = []

$panels2[2] = []

$panels2[3] = []

$panels2[4] = []

$panels3[0] = []

$panels3[1] = []

$panels3[2] = []

$panels3[3] = []

$panels3[4] = []

 

 

 

 

$item_panels = []

#+==============================================================================

# Weapon Panels [1]

#+------------------------------------------------------------------------------

# [1] Devestation Blade

#+==============================================================================

#Panel Size, (Item Class), EquippedHash, (Item ID)

$item_panels.push([[

"o",

"l",

"l",

"l"], "Weapon", [[-1,[]]], 1])

#+==============================================================================

# [2] Soul of the Blacksmith

#+==============================================================================

$item_panels.push([[

"xxl",

"lloll",

"xxl"], "Weapon", [[-1,[]]], 2])

#+==============================================================================

# [3] 9mm Pistol

#+==============================================================================

$item_panels.push([[

"ollll",

"llxx",

"lxxx",

"xxxx"], "Weapon", [[-1,[]]], 3])

#+==============================================================================

# [4] Key Blade

#+==============================================================================

$item_panels.push([[

"xl",

"lol",

"xl",

"xl",

"xl"], "Weapon", [[-1,[]]], 4])

 

 

 

 

 

#+==============================================================================

# Armor Panels [1]

#+------------------------------------------------------------------------------

# Panel Size, (Item Class), EquippedHash, (Item ID), LinkType1, [LinkType2]

#+------------------------------------------------------------------------------

# [1] Ability Chain

#+==============================================================================

$item_panels.push([[

"oxxx",

"xxxx",

"xxxx",

"xxxx"], "Armor", [[-1,[]]], 1, "WeaponLink", "Ability"])

 

#+==============================================================================

# [2] Power Chain

#+==============================================================================

$item_panels.push([[

"oxxx",

"xxxx",

"xxxx",

"xxxx"], "Armor", [[-1,[]]], 2, "WeaponLink", "AddStat", [[1,"atk"],[1,"str"]]])

 

#+==============================================================================

# [3] Defense Chain

#+==============================================================================

$item_panels.push([[

"oxxx",

"xxxx",

"xxxx",

"xxxx"], "Armor", [[-1,[]]], 3, "WeaponLink", "AddStat", [[1,"def"],[1,"mdef"]]])

 

#+==============================================================================

# [4] Speed Chain

#+==============================================================================

$item_panels.push([[

"oxxx",

"xxxx",

"xxxx",

"xxxx"], "Armor", [[-1,[]]], 4, "WeaponLink", "AddStat", [[1,"agi_plus"],[1,"dex_plus"]]])

 

#+==============================================================================

# [5] Lollipop Outfit

#+==============================================================================

$item_panels.push([[

"oxxx",

"xxxx",

"xxxx",

"xxxx"], "Armor", [[-1,[]]], 5])

 

#+==============================================================================

# [6] Basic Outfit

#+==============================================================================

$item_panels.push([[

"olxx",

"xxxx",

"xxxx",

"xxxx"], "Armor", [[-1,[]]], 6])

 

#+==============================================================================

# [7] Off Gucci Outfit

#+==============================================================================

$item_panels.push([[

"oxxx",

"lxxx",

"xxxx",

"xxxx"], "Armor", [[-1,[]]], 7])

 

#+==============================================================================

# [8] Wonder Woman Costume

#+==============================================================================

$item_panels.push([[

"olxx",

"lxxx",

"xxxx",

"xxxx"], "Armor", [[-1,[]]], 8])

 

 

 

 

 

 

#+==============================================================================

# Item Panels

#+------------------------------------------------------------------------------

# Panel Size, (Item Class), [EquippedHash], (Item ID), LinkType1, [LinkType2]

#+------------------------------------------------------------------------------

# [1] Level Up

#+==============================================================================

$item_panels.push([[

"o"], "Item", [[-1,[]]], 1, "LevelUp"])

#+==============================================================================

# [2] Level Up Doubler

#+==============================================================================

$item_panels.push([[

"xol",

"ll"], "Item", [[-1,[]]], 2, "2x", "Level"])

#+==============================================================================

# [3] Level Up Tripler

#+==============================================================================

$item_panels.push([[

"l",

"ol",

"xl"], "Item", [[-1,[]]], 3, "3x", "Level"])

#+==============================================================================

# [4] Revitalize

#+==============================================================================

$item_panels.push([[

"o"], "Item", [[-1,[]]], 4])

 

 

 

 

 

 

#+==============================================================================

# Skill Panels

#+------------------------------------------------------------------------------

# Panel Size, (Item Class), [EquippedHash], (Item ID), LinkType1, [LinkType2]

#+------------------------------------------------------------------------------

# [1] Struggle

#+==============================================================================

#$item_panels.push([[

#"o"], "Skill", [[-1,[]]], 1])

 

 

 

 

 

#+==============================================================================

# Weapon Abilities

#+------------------------------------------------------------------------------

# Weapon_ID = [SkillIDs]

#+==============================================================================

$weapon_abilities = []

$weapon_abilities[1] = [2,3,4]

$weapon_abilities[2] = [5,7,9]

$armor_abilities = []

#$armor_abilities[8] = [9]

 

 

 

 

 

 

 

 

 

 

 

 

 

class Scene_Menu

  def update_status

    # If B button was pressed

    if Input.trigger?(Input::B)

      # Play cancel SE

      $game_system.se_play($data_system.cancel_se)

      # Make command window active

      @command_window.active = true

      @status_window.active = false

      @status_window.index = -1

      return

    end

    # If C button was pressed

    if Input.trigger?(Input::C)

      # Branch by command window cursor position

      case @command_window.index

      when 1  # skill

        # If this actor's action limit is 2 or more

        if $game_party.actors[@status_window.index].restriction >= 2

          # Play buzzer SE

          $game_system.se_play($data_system.buzzer_se)

          return

        end

        # Play decision SE

        $game_system.se_play($data_system.decision_se)

        # Switch to skill screen

        $scene = Scene_Skill.new(@status_window.index)

      when 2  # equipment

        # Play decision SE

        $game_system.se_play($data_system.decision_se)

        # Switch to equipment screen

        $scene = Scene_Panels.new(@status_window.index)

      when 3  # status

        # Play decision SE

        $game_system.se_play($data_system.decision_se)

        # Switch to status screen

        $scene = Scene_Status.new(@status_window.index)

      end

      return

    end

  end

end

class Scene_Panels

  attr_accessor :window_panels

  attr_accessor :window

  attr_accessor :window_itempanel

  def initialize(actor_index = 0, equip_index = 0)

    @actor_index = actor_index

    @equip_index = equip_index

  end

  def main

    @window = true

    @wait = 0

    @actor = $game_party.actors[@actor_index]

    draw_windows

    Graphics.transition

    loop do

      Input.update

      Graphics.update

      update

      break if $scene != self

    end

    Graphics.freeze

    dispose

  end

  def draw_windows

    @help_window = Window_Help.new

    @window_panels = Window_Panels.new(@actor)

    @window_panels.help_window = @help_window

    @window_equipped = Window_Equipped.new(@actor)

    @window_equipped.draw_oldpanels

    @window_itempanel = Window_ItemPanel.new

    @window_equipped.active = false

    @window_itempanel.active = false

    @window_category = Window_Category.new

  end

  def dispose

    @window_equipped.save_panels

    @help_window.dispose

    @window_panels.dispose

    @window_equipped.dispose

    @window_itempanel.dispose

    @window_category.dispose

  end

  def update

    if @wait > 0

      @wait -= 1

      return

    end

    @window_panels.update

    @help_window.update

    @window_equipped.update

    @window_itempanel.update

    @window_category.update

    @window_panels.index = 0 if @window_panels.index < 0

    if @window_panels.active == true

      @window_panels.update_help

      update_right

    elsif @window_equipped.active == true && @window_itempanel.active == true

      @window_panels.update_help("Place Panel(s)")

      #@window = true

      update_left

    elsif @window_equipped.active == true 

      @window_panels.update_help("Pick Up Panel(s)")

      update_left_delete

    elsif @window_category.active == true

      @window_panels.update_help("Change Category")

      update_category

    end

  end

  def run_equip(equip,id)

    return @actor.run_equip(equip,id)

  end

  def update_category

    @window_panels.refresh(@window_category.index)

    if Input.trigger?(Input::DOWN)

      $game_system.se_play($data_system.cursor_se)

      @window_panels.index = 0

      @window_panels.active = true

      @window_equipped.active = false

      @window_category.active = false

    end

    if Input.trigger?(Input::B)

      $game_system.se_play($data_system.cancel_se)

      # Switch to menu screen

      $scene = Scene_Menu.new(2)

      return

    end

  end

  def update_to_category

    @window_panels.active = false

    @window_equipped.active = false

    #@window_equipped.active = false

    @window_category.active = true

    return

  end

  def update_left(window = @window)

    @window_itempanel.refresh(@window_equipped.index)

    if Input.trigger?(Input::C)

      if window == true

        @item = get_item(@window_panels.index)

      else

        @item = @window_itempanel.item

      end

      if @item != false

        if @item[4] == nil

          if can_be_placed?(@item, @window_equipped.index)

            if @item[1] == "Weapon"

              #if @actor.weapon != nil and @actor.weapon.weapon_accessories.empty?

                if @actor.weapon_id < 1

                  panel_weapon

                  @jj = nil

                  return

                end

              #end

            elsif @item[1] == "Item"

              panel_weapon

              @jj = nil

              return

            else

              if window == true

                m = @window_panels.item

              else

                #print(get_item3(@window_itempanel.item))

                m = get_item3(@window_itempanel.item)

              end

              if window == true

                @item = get_item(@window_panels.index)

              else

                @item = @window_itempanel.item

                #print(@item)

              end

              if @item[1] == "Armor"

                if @item[4] == nil

                  m = $data_armors[@item[3]].kind

                  case m

                  when 0

                    if @actor.armor1_id < 1

                      panel_weapon

                      @jj = nil

                      return

                    end

                  when 1

                    if @actor.armor2_id < 1

                      panel_weapon

                      @jj = nil

                      return

                    end

                  when 2

                    if @actor.armor3_id < 1

                      panel_weapon

                      @jj = nil

                      return

                    end

                  when 3

                    if @actor.armor4_id < 1

                      panel_weapon

                      @jj = nil

                      return

                    end

                  end

                end

              else

                #print("a")

              end

            end

            $game_system.se_play($data_system.buzzer_se)

            return

          end

        else

          case @item[4]

          when "WeaponLink"

            if can_be_placed?(@item, @window_equipped.index, "Weapon")

              panel_weaponlink

              @jj = nil

              return

            end

          when "LevelUp"

            o = can_be_placed?(@item, @window_equipped.index, true)

            if o.is_a?(Array)

              if o[0] == true

                panel_levellink(o)

                @jj = nil

                return

              end

            elsif can_be_placed?(@item, @window_equipped.index)

              panel_level

              @jj = nil

              return

            end

          when "2x"

            if can_be_placed?(@item, @window_equipped.index)

              panel_doubler

              @jj = nil

              return

            end

          when "3x"

            if can_be_placed?(@item, @window_equipped.index)

              panel_tripler

              @jj = nil

              return

            end

          end

        end

      end

      $game_system.se_play($data_system.buzzer_se)

      @item = false

    end

    if Input.trigger?(Input::B)

      $game_system.se_play($data_system.cancel_se)

      @window_itempanel.clear_panels

      #@window_panels.index = @window_panels.index - 1

      #@window_panels.index = 0 if @window_panels.index == -1

      @window_panels.refresh(@window_category.index)

      @window_panels.active = true

      @window_equipped.active = false

      @window_itempanel.active = false

      @item = false

      return

    end

  end

  def update_return_right(index)

    $game_system.se_play($data_system.cancel_se)

    @window_itempanel.clear_panels

    @window_panels.active = true

    @window_equipped.active = false

    if index / 9 > (@window_panels.data.size - 1)

      @window_panels.index = (@window_panels.data.size - 1)

      if @window_panels.index < 0

        @window_panels.index = 0

      end

    else

      @window_panels.index = (index / 9) - 2

      if @window_panels.index < 0

        @window_panels.index = 0

      end

    end

    @window_panels.refresh(@window_category.index)

    @window_itempanel.active = false

    @item = false

    return

  end

  def unequip(item,equip_type = 0,link_panel = nil)

    case item

    when RPG::Item

      @actor.bag.remove(item)

    when RPG::Skill

      pr = "Skill"

    else

      if equip_type == 4

        g = get_item2(item)

        if g[4] == "WeaponLink"

          if link_panel.is_a?(RPG::Weapon)

            @actor.unequip_weaponaccessory(item)

          elsif link_panel.is_a?(RPG::Armor)

            @actor.unequip_armoraccessory(link_panel.kind,item)

          end

          if g[5] == "Ability"

            if link_panel.is_a?(RPG::Weapon)

              a = @actor.weapon.weapon_accessories.dup

              v = @actor.weapon.weapon_accessories.size

              o = 0

              for i in 0...v

                if a[i].id == COTTONJJ::ABILITYVAR

                  o += 1

                end

              end

              @actor.forget_skill($weapon_abilities[@actor.weapon_id][o])

            elsif link_panel.is_a?(RPG::Armor)

              case link_panel.kind

              when 0

                g = @actor.armor1_id

              when 1

                g = @actor.armor2_id

              when 2

                g = @actor.armor3_id

              when 3

                g = @actor.armor4_id

              end

              a = @actor.armors[link_panel.kind].armor_accessories.dup

              v = @actor.armors[link_panel.kind].armor_accessories.size

              o = 0

              for i in 0...v

                if a[i].id == COTTONJJ::ABILITYVAR

                  o += 1

                end

              end

              @actor.forget_skill($armor_abilities[g][o])

            end

          elsif g[5] == "AddStat"

            if link_panel.is_a?(RPG::Weapon)

              for i in 0...@item[6].size

                case @item[6][i][1]

                when "name"

                  $data_weapons[@actor.weapon_id].name = @item[6][i][2]

                when "icon_name"

                  $data_weapons[@actor.weapon_id].icon_name = @item[6][i][2]

                when "description"

                  $data_weapons[@actor.weapon_id].description = @item[6][i][2]

                when "animation1_id"

                  $data_weapons[@actor.weapon_id].animation1_id = @item[6][i][2]

                when "animation2_id"

                  $data_weapons[@actor.weapon_id].animation2_id = @item[6][i][2]

                when "atk"

                  $data_weapons[@actor.weapon_id].atk -= @item[6][i][0]

                when "def"

                  $data_weapons[@actor.weapon_id].pdef -= @item[6][i][0]

                when "mdef"

                  $data_weapons[@actor.weapon_id].mdef -= @item[6][i][0]

                when "str"

                  $data_weapons[@actor.weapon_id].str_plus -= @item[6][i][0]

                when "dex_plus"

                  $data_weapons[@actor.weapon_id].dex_plus -= @item[6][i][0]

                when "agi_plus"

                  $data_weapons[@actor.weapon_id].agi_plus -= @item[6][i][0]

                when "int_plus"

                  $data_weapons[@actor.weapon_id].int_plus -= @item[6][i][0]

                when "element_set"

                  $data_weapons[@actor.weapon_id].element_set.delete(@item[6][i][0])

                when "plus_state_set"

                  $data_weapons[@actor.weapon_id].plus_state_set.delete(@item[6][i][0])

                when "minus_state_set"

                  $data_weapons[@actor.weapon_id].minus_state_set.delete(@item[6][i][0])

                end

              end

            elsif link_panel.is_a?(RPG::Armor)

              case link_panel.kind

              when 0

                g = @actor.armor1_id

              when 1

                g = @actor.armor2_id

              when 2

                g = @actor.armor3_id

              when 3

                g = @actor.armor4_id

              end

              for i in 0...@item[6].size

                case @item[6][i][1]

                when "name"

                  $data_armors[g].name = @item[6][i][2]

                when "icon_name"

                  $data_armors[g].icon_name = @item[6][i][2]

                when "description"

                  $data_armors[g].description = @item[6][i][2]

                when "kind"

                  $data_armors[g].kind = @item[6][i][2]

                when "auto_state_id"

                  $data_armors[g].auto_state_id = @item[6][i][2]

                when "def"

                  $data_armors[g].pdef -= @item[6][i][0]

                when "mdef"

                  $data_armors[g].mdef -= @item[6][i][0]

                when "str"

                  $data_armors[g].str_plus -= @item[6][i][0]

                when "dex_plus"

                  $data_armors[g].dex_plus -= @item[6][i][0]

                when "agi_plus"

                  $data_armors[g].agi_plus -= @item[6][i][0]

                when "int_plus"

                  $data_armors[g].int_plus -= @item[6][i][0]

                when "element_set"

                  $data_armors[g].element_set.remove(@item[6][i][0])

                when "plus_state_set"

                  $data_armors[g].plus_state_set.remove(@item[6][i][0])

                when "minus_state_set"

                  $data_armors[g].minus_state_set.remove(@item[6][i][0])

                end

              end

            end

          end

        end

      else

        @actor.equip(equip_type, 0)

      end

    end

  end

  def update_left_delete

    if Input.trigger?(Input::C)

      if @window_equipped.data[@window_equipped.index] != nil

        if not @window_equipped.data[@window_equipped.index].is_a?(Array)

          $game_system.se_play($data_system.cancel_se)

          @item = get_itemequipped(@window_equipped.index)

          @item2 = @window_equipped.item

          if @item2.is_a?(RPG::Weapon)

            if @actor.weapon != nil

              if @actor.weapon.weapon_accessories != nil

                if @actor.weapon.weapon_accessories.empty? == false

                  @window_panels.help_window.set_text("The weapon is occupied.")

                  @wait = 25

                  $game_system.se_play($data_system.buzzer_se)

                  return

                end

              end

            end

          end

          if @item[2].include?([@actor.id,@window_equipped.index])

            @item[2].delete([@actor.id,@window_equipped.index])

          end

          g = 0

          if @item2.is_a?(RPG::Armor)

            g = @item2.kind + 1

            if COTTONJJ::ASSISTARMORS.include?(@item2.id)

              if @actor.weapon != nil

                if @actor.weapon.weapon_accessories != nil

                  #if @actor.weapon.weapon_accessories.empty? == false

                    l = @actor.weapon

                  #end

                end

              end

            end

          end

          unequip(@item2,g,l)

          @window_itempanel.draw_panels(@item,@window_equipped.index,@window_equipped.item)

          @window_itempanel.refresh(@window_equipped.index)

          @window_equipped.clear_panel(@item,@window_equipped.index,@item2)

          @window_panels.refresh(@window_category.index)

          @window_itempanel.active = true

          @window = false

          return

        end

      end

      $game_system.se_play($data_system.buzzer_se)

    end

    if Input.trigger?(Input::B)

      $game_system.se_play($data_system.cancel_se)

      # Switch to menu screen

      $scene = Scene_Menu.new(2)

      return

    end

  end

  def update_right

    if @window_panels.index < 0 or @window_panels.data[@window_panels.index] == nil

      update_to_category

    end

    if Input.trigger?(Input::B)

      $game_system.se_play($data_system.cancel_se)

      # Switch to menu screen

      $scene = Scene_Menu.new(2)

      return

    end

    if Input.trigger?(Input::C)

      @item = get_item(@window_panels.index)

      if @item != false

        $game_system.se_play($data_system.decision_se)

        @window_panels.active = false

        @window_equipped.active = true

        @window_itempanel.draw_panels(@item,@window_equipped.index,@window_panels.item)

        @window_itempanel.active = true

        @window = true

        return

      end

      $game_system.se_play($data_system.buzzer_se)

    end

    if Input.trigger?(Input::LEFT)

      $game_system.se_play($data_system.cancel_se)

      @window_panels.active = false

      @window_equipped.active = true

      @window = false

      a = @window_panels.index

      @window_equipped.index = ((a * 9) + 8) + (9*2)

    end

  end

end

class Scene_Panels

  def panel_weapon

    @item[2].push([@actor.id,@window_equipped.index])

    if @window == true

      m = @window_panels.item

    else

      m = get_item3(@window_itempanel.item)

    end

    @window_equipped.set_panel(@item,@window_equipped.index,m)

    @window_itempanel.clear_panels

    #item = @window_panels.item

    if @window == true

      item = @window_panels.item

    else

      item = get_item3(@window_itempanel.item)

    end

    $game_system.se_play($data_system.equip_se)

    if item.is_a?(RPG::Weapon)

      @actor.equip(0, item.id)

    end

    if item.is_a?(RPG::Armor)

      item_type = item.kind + 1

      @actor.equip(item_type, item.id)

    end

    if item.is_a?(RPG::Item)

      @actor.equip_item(item.id)

    end

    @window_panels.refresh(@window_category.index)

    @window_panels.active = true

    @window_equipped.active = false

    @window_itempanel.active = false

    if @window_panels.index == -1

      @window_panels.index = 0

    end

    if @window_panels.index > @window_panels.data.size

      @window_panels.index = @window_panels.data.size

    end

    @window_panels.refresh(@window_category.index)

    @window_panels.index -= 1 if @window_panels.item == nil

  end

  def panel_weaponlink

    @item[2].push([@actor.id,@window_equipped.index])

    g = @window_equipped.item[1]

    k = @window_equipped.item[6]

    #print(@window_equipped.item[6])

    @window_equipped.set_panel(@item,@window_equipped.index,@window_panels.item,true,k)

    @window_itempanel.clear_panels

    item = @window_panels.item

    $game_system.se_play($data_system.equip_se)

    if item.is_a?(RPG::Armor)

      if k.is_a?(RPG::Weapon)

        @actor.equip_weaponaccessory(item)

      elsif k.is_a?(RPG::Armor)

        @actor.equip_armoraccessory($data_armors[g].kind,item)

      end

    end

    case @item[5]

    when "Ability"

      #Learn Skill based on Panel

      if k.is_a?(RPG::Weapon)

        a = @actor.weapon.weapon_accessories.dup

        v = @actor.weapon.weapon_accessories.size

        o = 0

        for i in 0...v

          if a[i].id == COTTONJJ::ABILITYVAR

            o += 1

          end

        end

        if $weapon_abilities[@actor.weapon_id] != nil

          if $weapon_abilities[@actor.weapon_id][o-1] != nil

            @actor.learn_skill($weapon_abilities[@actor.weapon_id][o-1])

          end

        end

      elsif k.is_a?(RPG::Armor)

        kind = k.kind#@var_kind if @var_kind != nil #@window_equipped.item.kind

        a = @actor.armors[kind].armor_accessories.dup

        v = @actor.armors[kind].armor_accessories.size

        o = 0

        for i in 0...v

          if a[i].id == COTTONJJ::ABILITYVAR

            o += 1

          end

        end

        case kind

        when 0

          g = @actor.armor1_id

        when 1

          g = @actor.armor2_id

        when 2

          g = @actor.armor3_id

        when 3

          g = @actor.armor4_id

        end

        if $armor_abilities[g] != nil

          if $armor_abilities[g][o-1] != nil

            @actor.learn_skill($armor_abilities[g][o-1])

          end

        end

        @var_kind = nil

      else

        if @window_panels.index == -1

          @window_panels.index = 0

        end

        if @window_panels.index > @window_panels.data.size

          @window_panels.index = @window_panels.data.size

        end

        @window_panels.refresh(@window_category.index)

        @window_panels.index -= 1 if @window_panels.item == nil

        @window_panels.active = true

        @window_equipped.active = false

        @window_itempanel.active = false

        return

      end

    when "AddStat"

      if k.is_a?(RPG::Weapon)

        #Learn Skill based on Panel

        for i in 0...@item[6].size

          case @item[6][i][1]

          when "name"

            $data_weapons[@actor.weapon_id].name = @item[6][i][0]

          when "icon_name"

            $data_weapons[@actor.weapon_id].icon_name = @item[6][i][0]

          when "description"

            $data_weapons[@actor.weapon_id].description = @item[6][i][0]

          when "animation1_id"

            $data_weapons[@actor.weapon_id].animation1_id = @item[6][i][0]

          when "animation2_id"

            $data_weapons[@actor.weapon_id].animation2_id = @item[6][i][0]

          when "atk"

            $data_weapons[@actor.weapon_id].atk += @item[6][i][0]

          when "def"

            $data_weapons[@actor.weapon_id].pdef += @item[6][i][0]

          when "mdef"

            $data_weapons[@actor.weapon_id].mdef += @item[6][i][0]

          when "str"

            $data_weapons[@actor.weapon_id].str_plus += @item[6][i][0]

          when "dex_plus"

            $data_weapons[@actor.weapon_id].dex_plus += @item[6][i][0]

          when "agi_plus"

            $data_weapons[@actor.weapon_id].agi_plus += @item[6][i][0]

          when "int_plus"

            $data_weapons[@actor.weapon_id].int_plus += @item[6][i][0]

          when "element_set"

            $data_weapons[@actor.weapon_id].element_set.push(@item[6][i][0])

          when "plus_state_set"

            $data_weapons[@actor.weapon_id].plus_state_set.push(@item[6][i][0])

          when "minus_state_set"

            $data_weapons[@actor.weapon_id].minus_state_set.push(@item[6][i][0])

          end

        end

      elsif k.is_a?(RPG::Armor)

        kind = @var_kind if @var_kind != nil 

        case kind

        when 0

          g = @actor.armor1_id

        when 1

          g = @actor.armor2_id

        when 2

          g = @actor.armor3_id

        when 3

          g = @actor.armor4_id

        end

        for i in 0...@item[6].size

          case @item[6][i][1]

          when "name"

            $data_armors[g].name = @item[6][i][0]

          when "icon_name"

            $data_armors[g].icon_name = @item[6][i][0]

          when "description"

            $data_armors[g].description = @item[6][i][0]

          when "kind"

            $data_armors[g].kind = @item[6][i][0]

          when "auto_state_id"

            $data_armors[g].auto_state_id = @item[6][i][0]

          when "def"

            $data_armors[g].pdef += @item[6][i][0]

          when "mdef"

            $data_armors[g].mdef += @item[6][i][0]

          when "str"

            $data_armors[g].str_plus += @item[6][i][0]

          when "dex_plus"

            $data_armors[g].dex_plus += @item[6][i][0]

          when "agi_plus"

            $data_armors[g].agi_plus += @item[6][i][0]

          when "int_plus"

            $data_armors[g].int_plus += @item[6][i][0]

          when "element_set"

            $data_armors[g].guard_element_set.push(@item[6][i][0])

          when "plus_state_set"

            $data_armors[g].guard_state_set.push(@item[6][i][0])

          when "minus_state_set"

            $data_armors[g].guard_state_set.remove(@item[6][i][0])

          end

        end

        @var_kind = nil

      else

        if @window_panels.index == -1

          @window_panels.index = 0

        end

        if @window_panels.index > @window_panels.data.size

          @window_panels.index = @window_panels.data.size

        end

        @window_panels.refresh(@window_category.index)

        @window_panels.index -= 1 if @window_panels.item == nil

        @window_panels.active = true

        @window_equipped.active = false

        @window_itempanel.active = false

        return

      end

    end

    if @window_panels.index == -1

      @window_panels.index = 0

    end

    if @window_panels.index > @window_panels.data.size

      @window_panels.index = @window_panels.data.size

    end

    @window_panels.refresh(@window_category.index)

    @window_panels.index -= 1 if @window_panels.item == nil

    @window_panels.active = true

    @window_equipped.active = false

    @window_itempanel.active = false

  end

  def panel_levellink(o)

    k = @window_equipped.data[@window_equipped.index]

    @item[2].push([@actor.id,@window_equipped.index])

    @window_equipped.set_panel(@item,@window_equipped.index,@window_panels.item,true)

    @window_itempanel.clear_panels

    item = @window_panels.item

    $game_system.se_play($data_system.equip_se)

    if item.is_a?(RPG::Item)

      a = @actor.level

      case k[3]

      when "2x"

        @actor.level = @actor.level + 2

      when "3x"

        @actor.level = @actor.level + 3

      else

        @actor.level = @actor.level + 1

      end

      $game_party.lose_item(COTTONJJ::LEVELUP,1)

    end

    if @window_panels.index == -1

      @window_panels.index = 0

    end

    if @window_panels.index > @window_panels.data.size

      @window_panels.index = @window_panels.data.size

    end

    @window_panels.refresh(@window_category.index)

    @window_panels.index -= 1 if @window_panels.item == nil

    @window_panels.active = true

    @window_equipped.active = false

    @window_itempanel.active = false

  end

  def panel_level

    @item[2].push([@actor.id,@window_equipped.index])

    @window_equipped.set_panel(@item,@window_equipped.index,@window_panels.item)

    @window_itempanel.clear_panels

    item = @window_panels.item

    $game_system.se_play($data_system.equip_se)

    if item.is_a?(RPG::Item)

      a = @actor.level

      @actor.level = @actor.level + 1

      $game_party.lose_item(COTTONJJ::LEVELUP,1)

    end

    if @window_panels.index == -1

      @window_panels.index = 0

    end

    if @window_panels.index > @window_panels.data.size

      @window_panels.index = @window_panels.data.size

    end

    @window_panels.refresh(@window_category.index)

    @window_panels.index -= 1 if @window_panels.item == nil

    @window_panels.active = true

    @window_equipped.active = false

    @window_itempanel.active = false

  end

  def panel_doubler

    @item[2].push([@actor.id,@window_equipped.index])

    @window_equipped.set_panel(@item,@window_equipped.index,@window_panels.item)

    @window_itempanel.clear_panels

    item = @window_panels.item

    $game_system.se_play($data_system.equip_se)

    if item.is_a?(RPG::Item)

      a = @actor.level

      $game_party.lose_item(COTTONJJ::LEVELUPDOUBLER,1)

    end

    if @window_panels.index == -1

      @window_panels.index = 0

    end

    if @window_panels.index > @window_panels.data.size

      @window_panels.index = @window_panels.data.size

    end

    @window_panels.refresh(@window_category.index)

    @window_panels.index -= 1 if @window_panels.item == nil

    @window_panels.active = true

    @window_equipped.active = false

    @window_itempanel.active = false

  end

  def panel_tripler

    @item[2].push([@actor.id,@window_equipped.index])

    @window_equipped.set_panel(@item,@window_equipped.index,@window_panels.item)

    @window_itempanel.clear_panels

    item = @window_panels.item

    $game_system.se_play($data_system.equip_se)

    if item.is_a?(RPG::Item)

      a = @actor.level

      $game_party.lose_item(COTTONJJ::LEVELUPTRIPLER,1)

    end

    if @window_panels.index == -1

      @window_panels.index = 0

    end

    if @window_panels.index > @window_panels.data.size

      @window_panels.index = @window_panels.data.size

    end

    @window_panels.refresh(@window_category.index)

    @window_panels.index -= 1 if @window_panels.item == nil

    @window_panels.active = true

    @window_equipped.active = false

    @window_itempanel.active = false

  end

  def can_be_placed?(item, index, link = false)

    size = []

    #if not item[2].include?(@actor.id)

      #if not item[2].include?(index)

        #size.push(index)

        #Determine string settings

        for k in 0...item[0].size

          string = item[0][k]

          for i in 0...string.size

            string += string.slice(0,1)

            case string.slice!(0,1)

            when "x"

            else

              size.push(index + i + (k*9))

            end

          end

        end

        if size.size > 1

          for i in 0...size.size

            if size[i] > 108

              return false

            end

            for k in 0...size.size

              if (size[i] % 9) == 8

                if (size[k] % 9) == 0

                  return false

                end

              end

            end

          end

        end

        equip = 0 if link == false

        if link != false

          equip = 0 if link == "Weapon"

          equip = 1 if link == "Shield"

          equip = 2 if link == "Head"

          equip = 3 if link == "Body"

          equip = 4 if link == "Accessory"

        end

        @size = size

        @link = link

        @plink = item

        @glink = index

        loop do

          size = @size

          link = @link

          Graphics.update

          Input.update

          if @window_equipped.item.is_a?(Array)

            item = run_equip(equip,@window_equipped.item[1])

            if @window_equipped.item[0] == "Link"

              if @plink[4] == "LevelUp"

                if @window_equipped.item[2] == "Level"

                  return [true,@plink[4]]

                end

              end

              if @link != false

                if @window_equipped.item[2] == nil

                  if get_item3(item).is_a?(RPG::Weapon)

                    if $weapon_abilities[@window_equipped.item[1]] != nil

                      case @window_itempanel.item[5]

                      when "Ability"

                        if @actor.weapon.weapon_accessories == nil

                          @actor.weapon.weapon_accessories = []

                        end

                        a = @actor.weapon.weapon_accessories.dup

                        v = @actor.weapon.weapon_accessories.size

                        o = 0

                        for i in 0...v

                          if a[i].id == COTTONJJ::ABILITYVAR

                            o += 1

                          end

                        end

                        if $weapon_abilities[@window_equipped.item[1]][o] != nil

                          return true

                        else

                        end

                      else

                        return true

                      end

                    else

                      case @window_itempanel.item[5]

                      when "Ability"

                        @window_panels.update_help("No More Available Abilities")

                        @wait = 25

                        return false

                      else

                        return true

                      end

                    end

                  elsif get_item3(item).is_a?(RPG::Armor)

                    if $armor_abilities[@window_equipped.item[1]] != nil

                      case @window_itempanel.item[5]

                      when "Ability"

                        kind = get_item3(item).kind

                        @var_kind = kind

                        #print(kind)

                        if @actor.armors[kind].armor_accessories == nil

                          @actor.armors[kind].armor_accessories = []

                        end

                        a = @actor.armors[kind].armor_accessories.dup

                        v = @actor.armors[kind].armor_accessories.size

                        o = 0

                        for i in 0...v

                          if a[i].id == COTTONJJ::ABILITYVAR

                            o += 1

                          end

                        end

                        if $armor_abilities[@window_equipped.item[1]][o] != nil

                          return true

                        else

                        end

                      else

                        return true

                      end

                    else

                      case @window_itempanel.item[5]

                      when "Ability"

                        @window_panels.update_help("No More Available Abilities")

                        @wait = 25

                        return false

                      else

                        return true

                      end

                    end

                  end

                  @window_panels.update_help("No More Available Abilities")

                  @wait = 25

                  return false

                end

              end

            else

              if @link != false

                return false

              end

            end

          else

            if @link != false

              return false

            end

          end

          if @window_equipped.item.is_a?(RPG::Item)

            if get_itemequipped(@window_equipped.index) != nil

              return false

            end

          end

          equip = 0 if equip == nil

          item = run_equip(equip,@window_equipped.item.id)

          for k in 0...108

            size2 = []

            item = get_itemequipped(k)

            #item = @window_itempanel.item if item == false

            #item = [["oxxx","xxxx","xxxx","xxxx"],"x",["x","x",["x",k]]] if item == false

            if item != false

              #if item[2]

              for i in 0...item[2].size

                if item[2][i][0] == @actor.id

                  index = item[2][i][1]

                end

              end

              for k in 0...item[0].size

                string = item[0][k]

                for i in 0...string.size

                  string += string.slice(0,1)

                  case string.slice!(0,1)

                  when "x"

                  else

                    size2.push(index + i+(k*9))

                  end

                end

              end

              pr = 108

              for i in 0...108

                if size2.include?(size[i])

                  pr -= 1

                end

              end

              if link != false

                if pr >= 108

                  @jj = true

                else

                  return false

                end

              else

                if pr < 108

                  return false

                else

                  #print("a")

                  @jj = true

                end

              end

            else

              #return false

            end

          end

          break if equip >= 5

          if link == false

            equip += 1

          end

        end

        #print("a")

        return @jj if @jj != nil

        #print("c")

        return true

      #end

    #end

    return @jj if @jj != nil

    return false

  end

  def get_item(index)

    item = @window_panels.data[index]

    case item

    when RPG::Item

      pr = "Item"

    when RPG::Weapon

      pr = "Weapon"

    when RPG::Armor

      pr = "Armor"

    when RPG::Skill

      pr = "Skill"

    end

    id = item.id

    #If Weapon is in Database

    for i in 0...$item_panels.size

      if pr == $item_panels[i][1]

        if $item_panels[i][3] == item.id

          return $item_panels[i]

        end

      end

    end

    return false

  end

  def get_itemequipped(index)

    item = @window_equipped.data[index]

    case item

    when RPG::Item

      pr = "Item"

    when RPG::Weapon

      pr = "Weapon"

    when RPG::Armor

      pr = "Armor"

    when RPG::Skill

      pr = "Skill"

    end

    id = item.id

    #If Weapon is in Database

    for i in 0...$item_panels.size

      if pr == $item_panels[i][1]

        if $item_panels[i][3] == item.id

          return $item_panels[i]

        end

      end

    end

    if @window_equipped.data[index].is_a?(Array)

      #[2][2][1]

      return [["oxxx","xxxx","xxxx","xxxx"],"x",["x","x",["x",index]]]

    end

    return false

  end

  def get_item2(item)

    case item

    when RPG::Item

      pr = "Item"

    when RPG::Weapon

      pr = "Weapon"

    when RPG::Armor

      pr = "Armor"

    when RPG::Skill

      pr = "Skill"

    end

    id = item.id

    #If Weapon is in Database

    for i in 0...$item_panels.size

      if pr == $item_panels[i][1]

        if $item_panels[i][3] == item.id

          return $item_panels[i]

        end

      end

    end

    return false

  end

  def get_item3(item)

    case item[1]

    when "Item"

      return $data_items[item[3]]

    when "Weapon"

      return $data_weapons[item[3]]

    when "Armor"

      return $data_armors[item[3]]

    when "Skill"

      return $data_skills[item[3]]

    end

    return false

  end

end

class Window_Base < Window

  def black_color

    return Color.new(0, 0, 0)

  end

  def activepanel_color

    return Color.new(200, 200, 200)

  end

  def activelink_color

    return Color.new(100, 200, 100)

  end

  def linkpanel_color

    return Color.new(50, 100, 50)

  end

end

#==============================================================================

# ** Window_Panels

#------------------------------------------------------------------------------

#  This window displays items in possession on the item and battle screens.

#==============================================================================

 

class Window_Panels < Window_Base

  attr_accessor :data

  attr_reader   :index                    # cursor position

  attr_reader   :help_window              # help window

  #--------------------------------------------------------------------------

  # * Object Initialization

  #--------------------------------------------------------------------------

  def initialize(actor)

    super(320, 64 + 64, 320, (416) - 64)

    @actor = actor

    @column_max = 1

    @item_max = 99999

    @column_max = 1

    #@index = -1

    @data = []

    refresh

    @index = 0

    # If in battle, move window to center of screen

    # and make it semi-transparent

    if $game_temp.in_battle

      self.y = 64

      self.height = 256

      self.back_opacity = 160

    end

  end

  #--------------------------------------------------------------------------

  # * Get Item

  #--------------------------------------------------------------------------

  def item

    return @data[@index]

  end

  #--------------------------------------------------------------------------

  # * Refresh

  #--------------------------------------------------------------------------

  def refresh(k=0)

    if self.contents != nil

      self.contents.dispose

      self.contents = nil

    end

    @data = []

    # Add item

    # Add equippable weapons

    #for i in [email=0...@actor.skills.size]0...@actor.skills.size[/email]

    #  skill = $data_skills[@actor.skills[i]]

    #  if skill != nil

    #    @data.push(skill)

    #  end

    #end

    #s1 = "All"

    #s2 = "Weapons"

    #s3 = "Armors"

    #s4 = "Assist"

    #s5 = "Items"

    #@commands = [s1,s2,s3,s4,s5]

    if k == 0 or k == 4 or k == 3

      for i in 1...$data_items.size

        if $game_party.item_number(i) > 0

          if k == 3

            if COTTONJJ::ASSISTITEMS.include?(i)

              @data.push($data_items[i])

            end

          elsif k == 4

            if COTTONJJ::ASSISTITEMS.include?(i)

            else

              @data.push($data_items[i])

            end

          else

            @data.push($data_items[i])

          end

        end

      end

    end

    # Also add weapons and items if outside of battle

    unless $game_temp.in_battle

      if k == 0 or k == 1

        for i in 1...$data_weapons.size

          if $game_party.weapon_number(i) > 0

            if @actor.equippable?($data_weapons[i])

              @data.push($data_weapons[i])

            end

          end

        end

      end

      if k == 0 or k == 2 or k == 3

        for i in 1...$data_armors.size

          if $game_party.armor_number(i) > 0

            if @actor.equippable?($data_armors[i])

              if k == 3 

                if COTTONJJ::ASSISTARMORS.include?(i)

                  @data.push($data_armors[i])

                end

              elsif  k == 2

                if COTTONJJ::ASSISTARMORS.include?(i)

                else

                  @data.push($data_armors[i])

                end

              else

                @data.push($data_armors[i])

              end

            end

          end

        end

      end

    end

    @data = @data.compact

    # If item count is not 0, make a bit map and draw all items

    @item_max = @data.size

    if @item_max > 0

      self.contents = Bitmap.new(width - 32, row_max * 32)

      for i in 0...@item_max

        draw_item(i)

      end

    end

  end

  #--------------------------------------------------------------------------

  # * Draw Item

  #     index : item number

  #--------------------------------------------------------------------------

  def draw_item(index)

    item = @data[index]

    case item

    when RPG::Item

      number = $game_party.item_number(item.id)

    when RPG::Weapon

      number = $game_party.weapon_number(item.id)

    when RPG::Armor

      number = $game_party.armor_number(item.id)

    end

    if item.is_a?(RPG::Item) and

       $game_party.item_can_use?(item.id)

      self.contents.font.color = normal_color

    elsif @actor.skill_can_use?(item.id)

      self.contents.font.color = normal_color

    elsif @actor.equippable?(item)

      self.contents.font.color = normal_color

    else

      self.contents.font.color = disabled_color

    end

    x = index % @column_max * (320 + 32)

    y = index / @column_max * 32# - self.oy

    rect = Rect.new(x, y, self.width / @column_max - 32, 32)

    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))

    bitmap = RPG::Cache.icon(item.icon_name)

    opacity = self.contents.font.color == normal_color ? 255 : 128

    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)

    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)

    self.contents.draw_text(x + 240, y, 16, 32, ":", 1)

    self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)

  end

  #--------------------------------------------------------------------------

  # * Help Text Update

  #--------------------------------------------------------------------------

  def update_help(text = nil)

    if text != nil

      @help_window.set_text(text)

    else

      @help_window.set_text(self.item == nil ? "" : self.item.description)

    end

  end

  def update

    super

    # If cursor is movable

    if self.active and @item_max > 0 and @index >= 0

      # If pressing down on the directional buttons

      if Input.repeat?(Input::DOWN)

        # If column count is 1 and directional button was pressed down with no

        # repeat, or if cursor position is more to the front than

        # (item count - column count)

        if (@column_max == 1 and Input.trigger?(Input::DOWN)) or

           @index < @item_max - @column_max

          # Move cursor down

          $game_system.se_play($data_system.cursor_se)

          @index = (@index + @column_max) % @item_max

        end

      end

      # If the up directional button was pressed

      if Input.repeat?(Input::UP)

        # If column count is 1 and directional button was pressed up with no

        # repeat, or if cursor position is more to the back than column count

        if (@column_max == 1 and Input.trigger?(Input::UP)) or

           @index >= @column_max

          # Move cursor up

          $game_system.se_play($data_system.cursor_se)

          if (@index - 1) == -1

            $scene.update_to_category

            @index = 0

            return

          end

          @index = (@index - @column_max + @item_max) % @item_max

        end

      end

      # If the right directional button was pressed

      if Input.repeat?(Input::RIGHT)

        # If column count is 2 or more, and cursor position is closer to front

        # than (item count -1)

        if @column_max >= 2 and @index < @item_max - 1

          # Move cursor right

          $game_system.se_play($data_system.cursor_se)

          @index += 1

        end

      end

      # If the left directional button was pressed

      if Input.repeat?(Input::LEFT)

        # If column count is 2 or more, and cursor position is more back than 0

        if @column_max >= 2 and @index > 0

          # Move cursor left

          $game_system.se_play($data_system.cursor_se)

          @index -= 1

        end

      end

      # If R button was pressed

      if Input.repeat?(Input::R)

        # If bottom row being displayed is more to front than bottom data row

        if self.top_row + (self.page_row_max - 1) < (self.row_max - 1)

          # Move cursor 1 page back

          $game_system.se_play($data_system.cursor_se)

          @index = [@index + self.page_item_max, @item_max - 1].min

          self.top_row += self.page_row_max

        end

      end

      # If L button was pressed

      if Input.repeat?(Input::L)

        # If top row being displayed is more to back than 0

        if self.top_row > 0

          # Move cursor 1 page forward

          $game_system.se_play($data_system.cursor_se)

          @index = [@index - self.page_item_max, 0].max

          self.top_row -= self.page_row_max

        end

      end

    end

    # Update help text (update_help is defined by the subclasses)

    if self.active and @help_window != nil

      update_help

    end

    # Update cursor rectangle

    update_cursor_rect

  end

  #--------------------------------------------------------------------------

  # * Set Cursor Position

  #     index : new cursor position

  #--------------------------------------------------------------------------

  def index=(index)

    @index = index

    # Update Help Text (update_help is defined by the subclasses)

    if self.active and @help_window != nil

      update_help

    end

    # Update cursor rectangle

    update_cursor_rect

  end

  #--------------------------------------------------------------------------

  # * Get Row Count

  #--------------------------------------------------------------------------

  def row_max

    # Compute rows from number of items and columns

    return (@item_max + @column_max - 1) / @column_max

  end

  #--------------------------------------------------------------------------

  # * Get Top Row

  #--------------------------------------------------------------------------

  def top_row

    # Divide y-coordinate of window contents transfer origin by 1 row

    # height of 32

    return self.oy / 32

  end

  #--------------------------------------------------------------------------

  # * Set Top Row

  #     row : row shown on top

  #--------------------------------------------------------------------------

  def top_row=(row)

    # If row is less than 0, change it to 0

    if row < 0

      row = 0

    end

    # If row exceeds row_max - 1, change it to row_max - 1

    if row > row_max - 1

      row = row_max - 1

    end

    # Multiply 1 row height by 32 for y-coordinate of window contents

    # transfer origin

    self.oy = row * 32

  end

  #--------------------------------------------------------------------------

  # * Get Number of Rows Displayable on 1 Page

  #--------------------------------------------------------------------------

  def page_row_max

    # Subtract a frame height of 32 from the window height, and divide it by

    # 1 row height of 32

    return (self.height - 32) / 32

  end

  #--------------------------------------------------------------------------

  # * Get Number of Items Displayable on 1 Page

  #--------------------------------------------------------------------------

  def page_item_max

    # Multiply row count (page_row_max) times column count (@column_max)

    return page_row_max * @column_max

  end

  #--------------------------------------------------------------------------

  # * Set Help Window

  #     help_window : new help window

  #--------------------------------------------------------------------------

  def help_window=(help_window)

    @help_window = help_window

    # Update help text (update_help is defined by the subclasses)

    if self.active and @help_window != nil

      update_help

    end

  end

  #--------------------------------------------------------------------------

  # * Update Cursor Rectangle

  #--------------------------------------------------------------------------

  def update_cursor_rect

    # If cursor position is less than 0

    if @index < 0

      self.cursor_rect.empty

      return

    end

    # Get current row

    row = @index / @column_max

    # If current row is before top row

    if row < self.top_row

      # Scroll so that current row becomes top row

      self.top_row = row

    end

    # If current row is more to back than back row

    if row > self.top_row + (self.page_row_max - 1)

      # Scroll so that current row becomes back row

      self.top_row = row - (self.page_row_max - 1)

    end

    # Calculate cursor width

    cursor_width = self.width / @column_max - 32

    # Calculate cursor coordinates

    x = @index % @column_max * (cursor_width + 32)

    y = @index / @column_max * 32 - self.oy

    # Update cursor rectangle

    self.cursor_rect.set(x, y, cursor_width, 32)

  end

end

#==============================================================================

# ** Window_Panels

#------------------------------------------------------------------------------

#  This window displays items in possession on the item and battle screens.

#==============================================================================

 

class Window_Equipped < Window_Base

  attr_accessor :data

  attr_reader   :index                    # cursor position

  attr_reader   :help_window              # help window

  #--------------------------------------------------------------------------

  # * Object Initialization

  #--------------------------------------------------------------------------

  def initialize(actor)

    super(0, 64, 320, 416)

    @item_max = 99999

    @actor = actor

    @column_max = 9

    @data = []

    @data2 = []

    @data3 = []

    refresh

    @index = 0

    # If in battle, move window to center of screen

    # and make it semi-transparent

    if $game_temp.in_battle

      self.y = 64

      self.height = 256

      self.back_opacity = 160

    end

  end

  #--------------------------------------------------------------------------

  # * Set Cursor Position

  #     index : new cursor position

  #--------------------------------------------------------------------------

  def index=(index)

    @index = index

    # Update Help Text (update_help is defined by the subclasses)

    if self.active and @help_window != nil

      update_help

    end

    # Update cursor rectangle

    update_cursor_rect

  end

  #--------------------------------------------------------------------------

  # * Get Row Count

  #--------------------------------------------------------------------------

  def row_max

    # Compute rows from number of items and columns

    return (@item_max + @column_max - 1) / @column_max

  end

  #--------------------------------------------------------------------------

  # * Get Top Row

  #--------------------------------------------------------------------------

  def top_row

    # Divide y-coordinate of window contents transfer origin by 1 row

    # height of 32

    return self.oy / 32

  end

  #--------------------------------------------------------------------------

  # * Set Top Row

  #     row : row shown on top

  #--------------------------------------------------------------------------

  def top_row=(row)

    # If row is less than 0, change it to 0

    if row < 0

      row = 0

    end

    # If row exceeds row_max - 1, change it to row_max - 1

    if row > row_max - 1

      row = row_max - 1

    end

    # Multiply 1 row height by 32 for y-coordinate of window contents

    # transfer origin

    self.oy = row * 32

  end

  #--------------------------------------------------------------------------

  # * Get Number of Rows Displayable on 1 Page

  #--------------------------------------------------------------------------

  def page_row_max

    # Subtract a frame height of 32 from the window height, and divide it by

    # 1 row height of 32

    return (self.height - 32) / 32

  end

  #--------------------------------------------------------------------------

  # * Get Number of Items Displayable on 1 Page

  #--------------------------------------------------------------------------

  def page_item_max

    # Multiply row count (page_row_max) times column count (@column_max)

    return page_row_max * @column_max

  end

  #--------------------------------------------------------------------------

  # * Set Help Window

  #     help_window : new help window

  #--------------------------------------------------------------------------

  def help_window=(help_window)

    @help_window = help_window

    # Update help text (update_help is defined by the subclasses)

    if self.active and @help_window != nil

      update_help

    end

  end

  #--------------------------------------------------------------------------

  # * Get Item

  #--------------------------------------------------------------------------

  def item

    return @data[@index]

  end

  #--------------------------------------------------------------------------

  # * Refresh

  #--------------------------------------------------------------------------

  def refresh

    if self.contents != nil

      self.contents.dispose

      self.contents = nil

    end

    # Add item

    # If item count is not 0, make a bit map and draw all items

    @item_max = 108

    @data = []

    if @item_max > 0

      self.contents = Bitmap.new(width - 32, row_max * 32)

      for i in 0...@item_max

        draw_item(i)

      end

    end

  end

  #--------------------------------------------------------------------------

  # * Draw Item

  #     index : item number

  #--------------------------------------------------------------------------

  def draw_item(index)

    @data[index] = []

    x = index % @column_max * 32

    y = index / @column_max * 32 - self.oy

    rect = Rect.new(x + 2, y + 2, 28, 28)

    self.contents.fill_rect(rect, Color.new(0, 0, 0))

  end

  def clear_panel(item,index,item2)

    panels = item[0].dup

    @string = []

    item2 = item2

    #if index != nil

      for i in 0...item[2].size

        if item[2][i][0] == @actor.id

          if item[2][i][1] != index

            if panels[0].slice(0,1) != "o"

              index = item[2][i][1]

              #print(item[2][i][1])

            end

          end

        end

      end

    #else

      #index = @window_equipped.index

    #end

    for k in 0...item[0].size

      @string[k] = panels[k]

      for i in 0...@string[k].size

        @string[k] += @string[k].slice(0,1)

        case @string[k].slice!(0,1)

        when "x"

        else

          x = (index + i + (k * 9)) % @column_max * 32

          y = (index + i + (k * 9)) / @column_max * 32 - self.oy

          rect = Rect.new(x + 2, y + 2, 28, 28)

          color = black_color

          g = index + i + (k * 9)

          if @data[g] != nil

            #if @data[g].is_a?(Array)

            if $scene.get_item2(item2)[4] == "WeaponLink" or 

                $scene.get_item2(item2)[4] == "LevelUp"

              bitmap = RPG::Cache.icon(COTTONJJ::BLANKICON)

              color = linkpanel_color

            end

          end

          self.contents.fill_rect(rect, color)

          if bitmap != nil

            opacity = self.contents.font.color == normal_color ? 255 : 128

            self.contents.blt(x + 4, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)

            @data2[index + i + 27] = true# if new_color == true

            if $scene.window == true

              m = $scene.window_panels.item

            else

              m = $scene.get_item3($scene.window_itempanel.item)

            end

            m = @data3[g]

            print(@data3[g])

            @data[g] = ["Link",m.id,nil,nil,nil,nil,m]

            if item[5] == "Level"

              @data[g] = ["Link",m.id,"Level",item[4]]

            end

          else

            @data[g] = nil

          end

        end

      end

    end

  end

  def set_panel(item,index,item2,new_color = false,m = nil)

    panels = item[0]

    item2 = item2

    @string = []

    for k in 0...item[0].size

      @string[k] = panels[k]

      for i in 0...@string[k].size

        @string[k] += @string[k].slice(0,1)

        case @string[k].slice!(0,1)

        when "o"

          x = (index + i+(k * 9)) % @column_max * 32

          y = (index + i+(k * 9)) / @column_max * 32 - self.oy

          rect = Rect.new(x + 2, y + 2, 28, 28)

          color = activepanel_color

          color = activelink_color if new_color == true

          self.contents.fill_rect(rect, color)

          bitmap = RPG::Cache.icon(item2.icon_name)

          opacity = self.contents.font.color == normal_color ? 255 : 128

          self.contents.blt(x + 4, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)

          @data2[index + i+(k * 9)] = true if new_color == true

          @data[index + i+(k * 9)] = $scene.window_panels.item

          @data3[index + i+(k * 9)] = m

        when "l"

          x = (index + i+(k * 9)) % @column_max * 32

          y = (index + i+(k * 9)) / @column_max * 32 - self.oy

          rect = Rect.new(x + 2, y + 2, 28, 28)

          self.contents.fill_rect(rect, linkpanel_color)

          bitmap = RPG::Cache.icon(COTTONJJ::BLANKICON)

          opacity = self.contents.font.color == normal_color ? 255 : 128

          self.contents.blt(x + 4, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)

          if $scene.window == true

            m = $scene.window_panels.item

          else

            m = $scene.get_item3($scene.window_itempanel.item)

          end

          @data2[index + i+(k * 9)] = true if new_color == true

          @data[index + i+(k * 9)] = ["Link",$scene.window_panels.item.id,nil,nil,nil,nil,m]

          if item[5] == "Level"

            @data[index + i+(k * 9)] = ["Link",$scene.window_panels.item.id,"Level",item[4]]

          end

        when "x"

        end

      end

    end

  end

  def draw_oldpanels

    @data = $panels[@actor.id]

    @data2 = $panels2[@actor.id]

    for i in 0...@item_max

      o = $panels[@actor.id][i]

        if o != nil

        if o.is_a?(Array)

          if o[0] == "Link"

            draw_panelicon(i - (9*3),true,"Level")

          end

        else

          if o.is_a?(RPG::Item) or o.is_a?(RPG::Weapon) or o.is_a?(RPG::Armor)

            if @actor.weapon != nil

              if @actor.weapon.weapon_accessories != nil

                if @actor.weapon.weapon_accessories.include?(o)

                  draw_panelicon(i-(9*3),false,o,true)

                else

                  if $panels2[@actor.id][i]

                    draw_panelicon(i-(9*3),false,o,true)

                  else

                    draw_panelicon(i-(9*3),false,o)

                  end

                end

              else

                draw_panelicon(i-(9*3),false,o)

              end

            else

              draw_panelicon(i-(9*3),false,o)

            end

          end

        end

      end

    end

  end

  def level_on_levelink(o,index)

    for i in 0...@item_max

      if $panels[@actor.id][i].is_a?(RPG::Item)

        if $panels[@actor.id][i].id == 2

          if $panels2[@actor.id][i] == true

            return true

          end

        end

      end

    end

  end

  def draw_panelicon(index,link = false,item = nil,new_color = false)

    if link == true

      x = (index) % @column_max * 32

      y = ((index) / @column_max * 32 - self.oy) + 96

      rect = Rect.new(x + 2, y + 2, 28, 28)

      self.contents.fill_rect(rect, linkpanel_color)

      bitmap = RPG::Cache.icon(COTTONJJ::BLANKICON)

      opacity = self.contents.font.color == normal_color ? 255 : 128

      self.contents.blt(x + 4, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)

      return

    end

    x = (index) % @column_max * 32

    y = ((index) / @column_max * 32 - self.oy) + 96

    rect = Rect.new(x + 2, y + 2, 28, 28)

    color = activepanel_color

    color = activelink_color if new_color == true

    self.contents.fill_rect(rect, color)

    bitmap = RPG::Cache.icon(item.icon_name)

    opacity = self.contents.font.color == normal_color ? 255 : 128

    self.contents.blt(x + 4, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)

  end

  def save_panels

    $panels[@actor.id] = @data

    $panels2[@actor.id] = @data2

    $panels3[@actor.id] = @data3

  end

  #--------------------------------------------------------------------------

  # * Help Text Update

  #--------------------------------------------------------------------------

  def update_help

    @help_window.set_text(self.item == nil ? "" : self.item.description)

  end

  def update_cursor_rect

    # If cursor position is less than 0

    if @index < 0

      self.cursor_rect.empty

      return

    end

    # Get current row

    row = @index / @column_max

    # If current row is before top row

    if row < self.top_row

      # Scroll so that current row becomes top row

      self.top_row = row

    end

    # If current row is more to back than back row

    if row > self.top_row + (self.page_row_max - 1)

      # Scroll so that current row becomes back row

      self.top_row = row - (self.page_row_max - 1)

    end

    # Calculate cursor width

    cursor_width = 32

    # Calculate cursor coordinates

    x = @index % @column_max * (cursor_width)

    y = @index / @column_max * 32 - self.oy

    # Update cursor rectangle

    self.cursor_rect.set(x, y, cursor_width, 32)

  end

  def update

    super

    # If cursor is movable

    if self.active and @item_max > 0 and @index >= 0

      # If pressing down on the directional buttons

      if Input.repeat?(Input::DOWN)

        # If column count is 1 and directional button was pressed down with no

        # repeat, or if cursor position is more to the front than

        # (item count - column count)

        if (@column_max == 1 and Input.trigger?(Input::DOWN)) or

           @index < @item_max - @column_max

          # Move cursor down

          $game_system.se_play($data_system.cursor_se)

          @index = (@index + @column_max) % @item_max

        end

      end

      # If the up directional button was pressed

      if Input.repeat?(Input::UP)

        # If column count is 1 and directional button was pressed up with no

        # repeat, or if cursor position is more to the back than column count

        if (@column_max == 1 and Input.trigger?(Input::UP)) or

           @index >= @column_max

          # Move cursor up

          $game_system.se_play($data_system.cursor_se)

          @index = (@index - @column_max + @item_max) % @item_max

        end

      end

      # If the right directional button was pressed

      if Input.repeat?(Input::RIGHT)

        # If column count is 2 or more, and cursor position is closer to front

        # than (item count -1)

        if @column_max >= 2 and @index < @item_max - 1

          # Move cursor right

          $game_system.se_play($data_system.cursor_se)

          o = @index % 9

          if (o) == 8

            $scene.update_return_right(@index)

            #@index = @index - 8

            return

          end

          @index += 1

        else

          #@index = @index - 8

          $scene.update_return_right(@index)

          return

        end

      end

      # If the left directional button was pressed

      if Input.repeat?(Input::LEFT)

        # If column count is 2 or more, and cursor position is more back than 0

        if @column_max >= 2 and @index > 0

          # Move cursor left

          $game_system.se_play($data_system.cursor_se)

          o = @index % 9

          if (o) == 0

            #@index = @index + 8

            return

          end

          @index -= 1

        end

      end

      # If R button was pressed

      if Input.repeat?(Input::R)

        # If bottom row being displayed is more to front than bottom data row

        if self.top_row + (self.page_row_max - 1) < (self.row_max - 1)

          # Move cursor 1 page back

          $game_system.se_play($data_system.cursor_se)

          @index = [@index + self.page_item_max, @item_max - 1].min

          self.top_row += self.page_row_max

        end

      end

      # If L button was pressed

      if Input.repeat?(Input::L)

        # If top row being displayed is more to back than 0

        if self.top_row > 0

          # Move cursor 1 page forward

          $game_system.se_play($data_system.cursor_se)

          @index = [@index - self.page_item_max, 0].max

          self.top_row -= self.page_row_max

        end

      end

    end

    # Update help text (update_help is defined by the subclasses)

    if self.active and @help_window != nil

      update_help

    end

    # Update cursor rectangle

    update_cursor_rect

  end

end

#==============================================================================

# ** Window_PartyCommand

#------------------------------------------------------------------------------

#  This window is used to select whether to fight or escape on the battle

#  screen.

#==============================================================================

 

class Window_Category < Window_Base

  attr_reader   :index                    # cursor position

  attr_reader   :help_window              # help window

  #--------------------------------------------------------------------------

  # * Object Initialization

  #--------------------------------------------------------------------------

  def initialize

    super(320, 64, 320, 64)

    self.contents = Bitmap.new(width - 32, height - 32)

    #self.back_opacity = 160

    s1 = "All"

    s2 = "Weapons"

    s3 = "Armors"

    s4 = "Assist"

    s5 = "Items"

    @commands = [s1,s2,s3,s4,s5]

    @item_max = 5

    @column_max = 5

    @index = 0

    self.active = false

    draw_item(0, normal_color)

    draw_item(1, normal_color)

    draw_item(2, normal_color)

    draw_item(3, normal_color)

    draw_item(4, normal_color)

  end

  #--------------------------------------------------------------------------

  # * Set Cursor Position

  #     index : new cursor position

  #--------------------------------------------------------------------------

  def index=(index)

    @index = index

    # Update Help Text (update_help is defined by the subclasses)

    if self.active and @help_window != nil

      update_help

    end

    # Update cursor rectangle

    update_cursor_rect

  end

  #--------------------------------------------------------------------------

  # * Get Row Count

  #--------------------------------------------------------------------------

  def row_max

    # Compute rows from number of items and columns

    return (@item_max + @column_max - 1) / @column_max

  end

  #--------------------------------------------------------------------------

  # * Get Top Row

  #--------------------------------------------------------------------------

  def top_row

    # Divide y-coordinate of window contents transfer origin by 1 row

    # height of 32

    return self.oy / 32

  end

  #--------------------------------------------------------------------------

  # * Set Top Row

  #     row : row shown on top

  #--------------------------------------------------------------------------

  def top_row=(row)

    # If row is less than 0, change it to 0

    if row < 0

      row = 0

    end

    # If row exceeds row_max - 1, change it to row_max - 1

    if row > row_max - 1

      row = row_max - 1

    end

    # Multiply 1 row height by 32 for y-coordinate of window contents

    # transfer origin

    self.oy = row * 32

  end

  #--------------------------------------------------------------------------

  # * Get Number of Rows Displayable on 1 Page

  #--------------------------------------------------------------------------

  def page_row_max

    # Subtract a frame height of 32 from the window height, and divide it by

    # 1 row height of 32

    return (self.height - 32) / 32

  end

  #--------------------------------------------------------------------------

  # * Get Number of Items Displayable on 1 Page

  #--------------------------------------------------------------------------

  def page_item_max

    # Multiply row count (page_row_max) times column count (@column_max)

    return page_row_max * @column_max

  end

  #--------------------------------------------------------------------------

  # * Set Help Window

  #     help_window : new help window

  #--------------------------------------------------------------------------

  def help_window=(help_window)

    @help_window = help_window

    # Update help text (update_help is defined by the subclasses)

    if self.active and @help_window != nil

      update_help

    end

  end

  #--------------------------------------------------------------------------

  # * Draw Item

  #     index : item number

  #     color : text character color

  #--------------------------------------------------------------------------

  def draw_item(index, color)

    self.contents.font.color = color

    g = (320 - 32) / @item_max

    rect = Rect.new(index * g, 0, g - 5, 32)

    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))

    self.contents.draw_text(rect, @commands[index], 1)

  end

  #--------------------------------------------------------------------------

  # * Cursor Rectangle Update

  #--------------------------------------------------------------------------

  def update_cursor_rect

    g = (320 - 32) / @item_max

    self.cursor_rect.set(@index * g, 0, g - 5, 32)

  end

  def update

    super

    # If cursor is movable

    if self.active and @item_max > 0 and @index >= 0

      # If pressing down on the directional buttons

      # If the right directional button was pressed

      if Input.repeat?(Input::RIGHT)

        # If column count is 2 or more, and cursor position is closer to front

        # than (item count -1)

        if @column_max >= 2 and @index < @item_max - 1

          # Move cursor right

          $game_system.se_play($data_system.cursor_se)

          @index += 1

        end

      end

      # If the left directional button was pressed

      if Input.repeat?(Input::LEFT)

        # If column count is 2 or more, and cursor position is more back than 0

        if @column_max >= 2 and @index > 0

          # Move cursor left

          $game_system.se_play($data_system.cursor_se)

          @index -= 1

        end

      end

      # If R button was pressed

      if Input.repeat?(Input::R)

        # If bottom row being displayed is more to front than bottom data row

        if self.top_row + (self.page_row_max - 1) < (self.row_max - 1)

          # Move cursor 1 page back

          $game_system.se_play($data_system.cursor_se)

          @index = [@index + self.page_item_max, @item_max - 1].min

          self.top_row += self.page_row_max

        end

      end

      # If L button was pressed

      if Input.repeat?(Input::L)

        # If top row being displayed is more to back than 0

        if self.top_row > 0

          # Move cursor 1 page forward

          $game_system.se_play($data_system.cursor_se)

          @index = [@index - self.page_item_max, 0].max

          self.top_row -= self.page_row_max

        end

      end

    end

    # Update help text (update_help is defined by the subclasses)

    if self.active and @help_window != nil

      update_help

    end

    # Update cursor rectangle

    update_cursor_rect

  end

end

class Window_ItemPanel < Window_Base

  #--------------------------------------------------------------------------

  # * Object Initialization

  #--------------------------------------------------------------------------

  def initialize

    super(0, 64, 320, 480)

    @item = []

    @column_max = 9

    self.back_opacity = 0

    self.opacity = 0

    self.contents = Bitmap.new(width - 32, height - 32)

  end

  def refresh(index)

    self.x = (index % @column_max * 32) - 6

    self.y = ((index / @column_max * 32 - self.oy) + 64) - 6

  end

  def clear_panels

    self.contents.clear

  end

  def item

    return @item

  end

  def draw_panels(item, index, item2)

    @item = item

    #panels = item[0]

    #@string1 = panels[0]

    #@string2 = panels[1]

    #@string3 = panels[2]

    #@string4 = panels[3]

    item2 = item2

    for k in 0...item[0].size

      string = item[0][k]

      for i in 0...string.size

        string += string.slice(0,1)

        case string.slice!(0,1)

        when "o"

          x = i % @column_max * 32

          y = (i / @column_max * 32 - self.oy) + (k*32)

          rect = Rect.new(x + 2, y + 2, 28, 28)

          self.contents.fill_rect(rect, activepanel_color)

          bitmap = RPG::Cache.icon(item2.icon_name)

          opacity = self.contents.font.color == normal_color ? 255 : 128

          self.contents.blt(x + 4, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)

        when "l"

          x = i % @column_max * 32

          y = (i / @column_max * 32 - self.oy) + (k*32)

          rect = Rect.new(x + 2, y + 2, 28, 28)

          self.contents.fill_rect(rect, linkpanel_color)

          bitmap = RPG::Cache.icon(COTTONJJ::BLANKICON)

          opacity = self.contents.font.color == normal_color ? 255 : 128

          self.contents.blt(x + 4, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)

        when "x"

          x = i % @column_max * 32

          y = (i / @column_max * 32 - self.oy) + (k*32)

          rect = Rect.new(x + 2, y + 2, 28, 28)

          self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))

        end

      end

    end

  end

end

module RPG

  class Weapon

    alias initcj initialize

    def initialize

      @weapon_accessories = []

      initcj

    end

    attr_accessor :weapon_accessories

  end

  class Armor

    alias initcj initialize

    def initialize

      @armor_accessories = []

      initcj

    end

    attr_accessor :armor_accessories

  end

end

class Game_Actor < Game_Battler

  attr_accessor :fake_level

  attr_accessor :gain

  attr_accessor :weapon

  attr_accessor :armors

  alias initcj initialize

  def initialize(actor_id)

    initcj(actor_id)

    @weapon = $data_weapons[@weapon_id].dup if $data_weapons[@weapon_id] != nil

    @armors = []

    @armors[0] = $data_armors[@armor1_id].dup if $data_armors[@armor1_id] != nil

    @armors[1] = $data_armors[@armor2_id].dup if $data_armors[@armor2_id] != nil

    @armors[2] = $data_armors[@armor3_id].dup if $data_armors[@armor3_id] != nil

    @armors[3] = $data_armors[@armor4_id].dup if $data_armors[@armor4_id] != nil

    @gain = true

    @fake_level = @level

  end

  def equip_weaponaccessory(item)

    @weapon = $data_weapons[@weapon_id]# if @weapon.weapon_accessories == nil

    if @weapon.weapon_accessories == nil

      @weapon.weapon_accessories = []

    end

    @weapon.weapon_accessories.push(item)

    $game_party.lose_armor(item.id, 1)

  end

  def unequip_weaponaccessory(item)

    @weapon = $data_weapons[@weapon_id]# if @weapon.weapon_accessories == nil

    if @weapon.weapon_accessories == nil

      @weapon.weapon_accessories = []

    end

    for i in [email=0...@weapon.weapon]0...@weapon.weapon[/email]_accessories.size

      if @weapon.weapon_accessories[i] == item

        @weapon.weapon_accessories[i] = nil

        break

      end

    end

    @weapon.weapon_accessories = @weapon.weapon_accessories.compact

    $game_party.gain_armor(item.id, 1)

  end

  def equip_armoraccessory(equip_type, item)

    case equip_type

    when 0

      g = @armor1_id

    when 1

      g = @armor2_id

    when 2

      g = @armor3_id

    when 3

      g = @armor4_id

    end

    @armors[equip_type] = $data_armors[g]

    if @armors[equip_type].armor_accessories == nil

      @armors[equip_type].armor_accessories = []

    end

    @armors[equip_type].armor_accessories.push(item)

    $game_party.lose_armor(item.id, 1)

  end

  def unequip_armoraccessory(equip_type, item)

    case equip_type

    when 0

      g = @armor1_id

    when 1

      g = @armor2_id

    when 2

      g = @armor3_id

    when 3

      g = @armor4_id

    end

    @armors[equip_type] = $data_armors[g]

    for i in 0...@armors[equip_type].armor_accessories.size

      if @armors[equip_type].armor_accessories[i] == item

        @armors[equip_type].armor_accessories[i] = nil

        break

      end

    end

    @armors[equip_type].armor_accessories = @armors[equip_type].armor_accessories.compact

    $game_party.gain_armor(item.id, 1)

  end

  def weapon_equips

    return @actor.weapon.weapon_accessories

  end

  def armor_equips(equip_type)

    return @actor.armors[equip_type].armor_accessories

  end

  def equip(equip_type, id)

    case equip_type

    when 0  # Weapon

      if id == 0 or $game_party.weapon_number(id) > 0

        $game_party.gain_weapon(@weapon_id, 1)

        @weapon_id = id

        $game_party.lose_weapon(id, 1)

        @weapon = $data_weapons[@weapon_id].dup if $data_weapons[@weapon_id] != nil

      end

    when 1  # Shield

      if id == 0 or $game_party.armor_number(id) > 0

        update_auto_state($data_armors[@armor1_id], $data_armors[id])

        $game_party.gain_armor(@armor1_id, 1)

        @armor1_id = id

        $game_party.lose_armor(id, 1)

        @armors[0] = $data_armors[@armor1_id].dup if $data_armors[@armor1_id] != nil

      end

    when 2  # Head

      if id == 0 or $game_party.armor_number(id) > 0

        update_auto_state($data_armors[@armor2_id], $data_armors[id])

        $game_party.gain_armor(@armor2_id, 1)

        @armor2_id = id

        $game_party.lose_armor(id, 1)

        @armors[1] = $data_armors[@armor2_id].dup if $data_armors[@armor2_id] != nil

      end

    when 3  # Body

      if id == 0 or $game_party.armor_number(id) > 0

        #print("a")

        update_auto_state($data_armors[@armor3_id], $data_armors[id])

        $game_party.gain_armor(@armor3_id, 1)

        @armor3_id = id

        $game_party.lose_armor(id, 1)

        @armors[2] = $data_armors[@armor3_id].dup if $data_armors[@armor3_id] != nil

      end

    when 4  # Accessory

      if id == 0 or $game_party.armor_number(id) > 0

        update_auto_state($data_armors[@armor4_id], $data_armors[id])

        $game_party.gain_armor(@armor4_id, 1)

        @armor4_id = id

        $game_party.lose_armor(id, 1)

        @armors[3] = $data_armors[@armor4_id].dup if $data_armors[@armor4_id] != nil

      end

    end

  end

end

class Game_Actor < Game_Battler

  def exp=(exp)

    @exp = exp#[[exp, 9999999].min, 0].max

    while @exp >= @exp_list[@fake_level+1] and @exp_list[@fake_level+1] > 0

      

      if @gain == true && COTTONJJ::GAINLEVELITEM == true

        $game_party.gain_item(COTTONJJ::LEVELUP, 1)

      else

        @level += 1

      end

      @fake_level += 1

      # NEW - David

      $d_new_skill = nil

      

      for j in $data_classes[@class_id].learnings

        if j.level == @fake_level

          learn_skill(j.skill_id)

      

          # NEW - David

          skill = $data_skills[j.skill_id]

          $d_new_skill = skill.name

      

        end

      end

    end

    while @exp < @exp_list[@level]

      if item_number(COTTONJJ::LEVELUP) < 1

        @fake_level -= 1

        if COTTONJJ::GAINLEVELITEM == false

          @level -= 1

        end

      else

        if COTTONJJ::GAINLEVELITEM == false

          @level -= 1

        else

          $game_party.lose_item(COTTONJJ::LEVELUP, 1)

        end

        @fake_level -= 1

      end

    end

    @hp = [@hp, self.maxhp].min

    @sp = [@sp, self.maxsp].min

    #@fake_level = @level

  end

  def level=(level)

    # Check up and down limits

    @level = level

    #@fake_level = @level

    #level = [[level, $data_actors[@actor_id].final_level].min, 1].max

    # Change EXP

    @gain = false

    self.exp = @exp_list[level]

    @gain = true

  end

  def run_equip(equip_type,id)

    case equip_type

    when 0  # Weapon

      for i in 0...$item_panels.size

        return $item_panels[i] if $item_panels[i][3] == id && $item_panels[i][1] == "Weapon"

      end

    when 5

      for i in 0...$item_panels.size

        return $item_panels[i] if $item_panels[i][3] == id && $item_panels[i][1] == "Item"

      end

    end

    for i in 0...$item_panels.size

      return $item_panels[i] if $item_panels[i][3] == id && $item_panels[i][1] == "Armor"

    end

    return false

  end

end

class Game_Actor < Game_Battler

  attr_accessor :bag

  alias initcj2 initialize

  def initialize(actor_id)

    initcj2(actor_id)

    @bag = {}

  end

  def equip_item(item_id,n = 1)

    if item_id > 0

      @bag[item_id] = item_number(item_id) + n

    end

    $game_party.lose_item(item_id,n)

  end

  def unequip_item(item_id,n = 1)

    n = -(n)

    if item_id > 0

      @bag[item_id] = item_number(item_id) + n

    end

    $game_party.gain_item(item_id,n)

  end

  def item_number(item_id)

    # If quantity data is in the hash, use it. If not, return 0

    return @bag.include?(item_id) ? @bag[item_id] : 0

  end

  #--------------------------------------------------------------------------

  # * Determine if Item is Usable

  #     item_id : item ID

  #--------------------------------------------------------------------------

  def item_can_use?(item_id)

    # If item quantity is 0

    if item_number(item_id) == 0

      # Unusable

      return false

    end

    # Get usable time

    occasion = $data_items[item_id].occasion

    # If in battle

    if $game_temp.in_battle

      # If useable time is 0 (normal) or 1 (only battle) it's usable

      return (occasion == 0 or occasion == 1)

    end

    # If useable time is 0 (normal) or 2 (only menu) it's usable

    return (occasion == 0 or occasion == 2)

  end

end

#==============================================================================

# ** Window_Item

#------------------------------------------------------------------------------

#  This window displays items in possession on the item and battle screens.

#==============================================================================

 

class Window_Item < Window_Selectable

  #--------------------------------------------------------------------------

  # * Object Initialization

  #--------------------------------------------------------------------------

  def initialize(actor = nil)

    super(0, 64, 640, 416)

    @actor = actor

    @column_max = 2

    refresh

    self.index = 0

    # If in battle, move window to center of screen

    # and make it semi-transparent

    if $game_temp.in_battle

      self.y = 64

      self.height = 256

      self.back_opacity = 160

    end

  end

  #--------------------------------------------------------------------------

  # * Get Item

  #--------------------------------------------------------------------------

  def item

    return @data[self.index]

  end

  #--------------------------------------------------------------------------

  # * Refresh

  #--------------------------------------------------------------------------

  def refresh

    if self.contents != nil

      self.contents.dispose

      self.contents = nil

    end

    @data = []

    # Add item

    #if $game_temp.in_battle

    if COTTONJJ::ITEMBAG == false

      for i in 1...$data_items.size

        if $game_party.item_number(i) > 0

          @data.push($data_items[i])

        end

      end

    else

      if $game_temp.in_battle

        for i in 1...$data_items.size

          if @actor != nil

            if @actor.item_number(i) > 0

              @data.push($data_items[i])

            end

          end

        end

      else

        for i in 1...$data_items.size

          if $game_party.item_number(i) > 0

            @data.push($data_items[i])

          end

        end

      end

    end

    # Also add weapons and items if outside of battle

    unless $game_temp.in_battle

      for i in 1...$data_weapons.size

        if $game_party.weapon_number(i) > 0

          @data.push($data_weapons[i])

        end

      end

      for i in 1...$data_armors.size

        if $game_party.armor_number(i) > 0

          @data.push($data_armors[i])

        end

      end

    end

    # If item count is not 0, make a bit map and draw all items

    @item_max = @data.size

    if @item_max > 0

      self.contents = Bitmap.new(width - 32, row_max * 32)

      for i in 0...@item_max

        draw_item(i)

      end

    end

  end

  #--------------------------------------------------------------------------

  # * Draw Item

  #     index : item number

  #--------------------------------------------------------------------------

  def draw_item(index)

    item = @data[index]

    case item

    when RPG::Item

      if @actor != nil && COTTONJJ::ITEMBAG == true

        number = @actor.item_number(item.id)

      else

        number = $game_party.item_number(item.id)

      end

    when RPG::Weapon

      number = $game_party.weapon_number(item.id)

    when RPG::Armor

      number = $game_party.armor_number(item.id)

    end

    if @actor != nil && COTTONJJ::ITEMBAG == true

      b = @actor.item_can_use?(item.id)

    else

      b = $game_party.item_can_use?(item.id)

    end

    if item.is_a?(RPG::Item) and b == true

      self.contents.font.color = normal_color

    else

      self.contents.font.color = disabled_color

    end

    x = 4 + index % 2 * (288 + 32)

    y = index / 2 * 32

    rect = Rect.new(x, y, self.width / @column_max - 32, 32)

    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))

    bitmap = RPG::Cache.icon(item.icon_name)

    opacity = self.contents.font.color == normal_color ? 255 : 128

    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)

    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)

    self.contents.draw_text(x + 240, y, 16, 32, ":", 1)

    self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)

  end

  #--------------------------------------------------------------------------

  # * Help Text Update

  #--------------------------------------------------------------------------

  def update_help

    @help_window.set_text(self.item == nil ? "" : self.item.description)

  end

end

class Scene_Battle

  def start_item_select

    # Make item window

    @item_window = Window_Item.new(@active_battler == nil ? @active_actor : @active_battler)

    # Associate help window

    @item_window.help_window = @help_window

    # Disable actor command window

    @actor_command_window.active = false

    @actor_command_window.visible = false

  end

  #-------------------------------------------------------------------------- 

  # * Item action result compilation

  #--------------------------------------------------------------------------

  def make_item_action_result(battler = nil)

    if COTTONJJ::RTAB == true

      # Acquiring the item

      @item = $data_items[battler.current_action.item_id]

      # When with the item and so on is cut off and it becomes not be able to use

      if battler.is_a?(Game_Actor)

        b = battler.item_can_use?(@item.id)

      else

        b = $game_party.item_can_use?(@item.id)

      end

      unless b == true

        # It moves to step 6

        battler.phase = 6

        return

      end

      # In case of consumable

      if @item.consumable

        # The item which you use is decreased 1

        $game_party.lose_item(@item.id, 1)

      end

      # Setting animation ID

      battler.anime1 = @item.animation1_id

      battler.anime2 = @item.animation2_id

      # Setting common event ID

      battler.event = @item.common_event_id

      # Deciding the object

      index = battler.current_action.target_index

      target = $game_party.smooth_target_actor(index)

      # Setting the object side battler

      set_target_battlers(@item.scope, battler)

      # Applying the effect of the item

      for target in battler.target

        target.item_effect(@item, battler)

      end

    else

      # Get item

      @item = $data_items[@active_battler.current_action.item_id]

      # If unable to use due to items running out

      if @active_battler.is_a?(Game_Actor) && COTTONJJ::ITEMBAG == true

        b = @active_battler.item_can_use?(@item.id)

      else

        b = $game_party.item_can_use?(@item.id)

      end

      unless b == true

        # It moves to step 6

        @phase4_step = 1

        return

      end

      # If consumable

      if @item.consumable

        # Decrease used item by 1

        $game_party.lose_item(@item.id, 1)

      end

      # Display item name on help window

      @help_window.set_text(@item.name, 1)

      # Set animation ID

      @animation1_id = @item.animation1_id

      @animation2_id = @item.animation2_id

      # Set common event ID

      @common_event_id = @item.common_event_id

      # Decide on target

      index = @active_battler.current_action.target_index

      target = $game_party.smooth_target_actor(index)

      # Set targeted battlers

      set_target_battlers(@item.scope)

      # Apply item effect

      for target in @target_battlers

        target.item_effect(@item)

      end

    end

  end

  #-------------------------------------------------------------------------- 

  # * Frame renewal (actor command phase: Item selection)

  #--------------------------------------------------------------------------

  def update_phase3_item_select

    if COTTONJJ::RTAB == true

      # During command selecting when it becomes incapacitation,

      unless @active_actor.inputable?

        @active_actor.current_action.clear

        command_delete

        # To command input of the following actor

        phase3_next_actor

        return

      end

      # The item window is put in visible state

      @item_window.visible = true

      # Renewing the item window

      @item_window.update

      # The B when button is pushed,

      if Input.trigger?(Input::B)

        # Performing cancellation SE

        $game_system.se_play($data_system.cancel_se)

        # End selection of item

        end_item_select

        return

      end

      #When C button is pushed,

      if Input.trigger?(Input::C)

        # Acquiring the data which presently is selected in the item window

        @item = @item_window.item

        if @active_actor.is_a?(Game_Actor) && COTTONJJ::ITEMBAG == true

          b = @active_actor.item_can_use?(@item.id)

        else

          b = $game_party.item_can_use?(@item.id)

        end

        # When you cannot use,

        unless b == true

          # Performing buzzer SE

          $game_system.se_play($data_system.buzzer_se)

          return

        end

        # Performing decision SE

        $game_system.se_play($data_system.decision_se)

        # Setting action

        @active_actor.current_action.item_id = @item.id

        # The item window is put in invisibility state 

        @item_window.visible = false

        # When the effective range is the enemy single unit,

        if @item.scope == 1

          # Starting the selection of the enemy

          start_enemy_select

        # When the effective range is the friend single unit,

        elsif @item.scope == 3 or @item.scope == 5

          # Starting the selection of the actor

          start_actor_select

        # When the effective range is not the single unit,

        else

          # Setting action

          @active_actor.current_action.kind = 2

          # End selection of item

          end_item_select

          # To command input of the following actor

          phase3_next_actor

        end

        return

      end

    else

      # Make item window visible

      @item_window.visible = true

      # Update item window

      @item_window.update

      # If B button was pressed

      if Input.trigger?(Input::B)

        # Play cancel SE

        $game_system.se_play($data_system.cancel_se)

        # End item selection

        end_item_select

        return

      end

      # If C button was pressed

      if Input.trigger?(Input::C)

        # Get currently selected data on the item window

        @item = @item_window.item

        # If it can't be used

        if @active_actor.is_a?(Game_Actor) && COTTONJJ::ITEMBAG == true

          b = @active_actor.item_can_use?(@item.id)

        else

          b = $game_party.item_can_use?(@item.id)

        end

        # When you cannot use,

        unless b == true

          # Performing buzzer SE

          $game_system.se_play($data_system.buzzer_se)

          return

        end

        # Play decision SE

        $game_system.se_play($data_system.decision_se)

        # Set action

        @active_battler.current_action.item_id = @item.id

        # Make item window invisible

        @item_window.visible = false

        # If effect scope is single enemy

        if @item.scope == 1

          # Start enemy selection

          start_enemy_select

        # If effect scope is single ally

        elsif @item.scope == 3 or @item.scope == 5

          # Start actor selection

          start_actor_select

        # If effect scope is not single

        else

          # End item selection

          end_item_select

          # Go to command input for next actor

          phase3_next_actor

        end

        return

      end

    end

  end

end

class Scene_Title

  alias cjupdate update

  def update

    if $DEBUG

      if Input.trigger?(Input::R)

        print("...:Weapons:...")

        g = []

        for k in 0...$item_panels.size

          if $item_panels[k][1] == "Weapon"

            for i in 1...$data_weapons.size

              if $item_panels[k][3] == i

                g.push($data_weapons[i])

              end

            end

          end

        end

        if g.empty? == false

          p = $data_weapons.dup

          for i in 0...g.size

            p.delete(g[i])

          end

        end

        if p != nil

          for i in 0...p.size

            if p[i] != nil

              print p[i],"\n",p[i].name,"\n",p[i].id

            end

          end

          if p.compact.empty?

            print("None")

          end

        end

        print("...:Armors:...")

        g = []

        for k in 0...$item_panels.size

          if $item_panels[k][1] == "Armor"

            for i in 1...$data_armors.size

              if $item_panels[k][3] == i

                g.push($data_armors[i])

              end

            end

          end

        end

        if g.empty? == false

          p = $data_armors.dup

          for i in 0...g.size

            p.delete(g[i])

          end

        end

        if p != nil

          for i in 0...p.size

            if p[i] != nil

              print p[i],"\n",p[i].name,"\n",p[i].id

            end

          end

          if p.compact.empty?

            print("None")

          end

        end

        print("...:Items:...")

        g = []

        for k in 0...$item_panels.size

          if $item_panels[k][1] == "Item"

            for i in 1...$data_items.size

              if $item_panels[k][3] == i

                g.push($data_items[i])

              end

            end

          end

        end

        if g.empty? == false

          p = $data_items.dup

          for i in 0...g.size

            p.delete(g[i])

          end

        end

        if p != nil

          for i in 0...p.size

            if p[i] != nil

              print p[i],"\n",p[i].name,"\n",p[i].id

            end

          end

          if p.compact.empty?

            print("None")

          end

        end

        j = false

        for k in 0...$item_panels.size

          if $item_panels[k][1] == "Skill"

            j = true

          end

        end

        if j == true

          print("...:Skills:...")

          g = []

          for k in 0...$item_panels.size

            if $item_panels[k][1] == "Skill"

              for i in 1...$data_skills.size

                if $item_panels[k][3] == i

                  g.push($data_skills[i])

                end

              end

            end

          end

          if g.empty? == false

            p = $data_skills.dup

            for i in 0...g.size

              p.delete(g[i])

            end

          end

          if p != nil

            for i in 0...p.size

              if p[i] != nil

                print p[i],"\n",p[i].name,"\n",p[i].id

              end

            end

            if p.compact.empty?

              print("None")

            end

          end

        end

      end

    end

    cjupdate

    #$data_skills        = load_data("Data/Skills.rxdata")

    #$data_items         = load_data("Data/Items.rxdata")

    #$data_weapons       = load_data("Data/Weapons.rxdata")

    #$data_armors        = load_data("Data/Armors.rxdata")

  end

end

#==============================================================================

# ** Scene_Save

#------------------------------------------------------------------------------

#  This class performs save screen processing.

#==============================================================================

class Scene_Save < Scene_File

#--------------------------------------------------------------------------

# * Alias Methods

#--------------------------------------------------------------------------

  alias cjwsd write_save_data

#--------------------------------------------------------------------------

# * Write Save Data

#     file : write file object (opened)

#--------------------------------------------------------------------------

  def write_save_data(file)

  # Call original method

    cjwsd(file)

    # Write save data

    Marshal.dump($panels, file)

    Marshal.dump($panels2, file)

    Marshal.dump($panels3, file)

  end

end  

#==============================================================================

# ** Scene_Load

#------------------------------------------------------------------------------

#  This class performs load screen processing.

#==============================================================================

class Scene_Load < Scene_File

#--------------------------------------------------------------------------

# * Alias Methods

#--------------------------------------------------------------------------

  alias cjrsd read_save_data

#--------------------------------------------------------------------------

# * Read Save Data

#     file : file object for reading (opened)

#--------------------------------------------------------------------------

  def read_save_data(file)

    # Call original method

    cjrsd(file)

    # Load saved data

    #$panels = []

    #$panels2 = []

    #$panels3 = []

    #$panels.load_save(Marshal.load(file))

    $panels             = Marshal.load(file)

    $panels2            = Marshal.load(file)

    $panels3            = Marshal.load(file)

  end

end

if COTTONJJ::CUSTOMXY == true

  class Game_Actor < Game_Battler

    def screen_x

      # Return after calculating x-coordinate by order of members in party

      if self.index != nil

        return self.index * 40 + 50

      else

        return 0

      end

    end

    def screen_y

      return 370 - (self.index * 30 + 50)

    end

  end

  class Game_Enemy < Game_Battler

    def screen_x

      if $game_troop.enemies.size > 4

        o = 280

      else

        o = 400

      end

      # Return after calculating x-coordinate by order of members in party

      return o + @member_index * 40 + 50

    end

    def screen_y

      return 370 - ((@member_index % 4) * 30 + 50)

    end

  end

end

Instructions

Edit the items in the tab labeled item database. x = blank panel. l = linkable panel, o = item panel.

LEVELUP = 1 (ID of the Level Up Item)
LEVELUPDOUBLER = 2 (ID of the Level Doubler Item)
LEVELUPTRIPLER = 3 (ID of the Level Tripler Item)
ASSISTITEMS = [1,2,3] (IDs of assist items) (LevelUps)
ASSISTARMORS = [1,2,3,4] (IDs of assist armors) (Weapon and Armor Links)
ABILITYVAR = 1 (ID of Ability changing armor)

$weapon_abilities[1] = [2,3,4] ...[Weapon ID] = [Skill IDs Learned from Ability Armors]

$armor_abilities[8] = [9] ...[Weapon ID] = [Skill IDs Learned from Ability Armors]



Visual Equipment
ARMOR[6] = "_outfit1" (ArmorID = armor name augment)
WEAPON[1] = "_weapon1" (WeaponID = armor name augment)


Compatibility

Made to work with te rtab and rpg maker xp

Credits and Thanks

Kain. Demonfire

Author's Notes

If there are any questions or comments... requests? here.

Terms and Conditions

---
 
thanks. right now. I'm workin on makin the script a little more self-dependent and User friendly. If you want, I might be able to fix the script up to your likining if it's not too hard... Suggest a feature or something
 
Wao nice script ^^ I really like the concept.
Here are some of mai suggestions o.oa

1. Leveling increases panels - Players start with like lets say a small 5x5 panels, and every level gives more panels o.oa
2. Pressing left or right will change the panel page (weapon, armor, assist, etc) instead of having to put the cursor on top.
3. Boosters - Like the level modifier except it adds stuffs like 20% poison resist or +50 hp
4. Overlapping - Like the booster earlier, multiple equipment panel can overlap over booster panel so if you can place a panel from your hat and a panel from your armor on top of the same booster panel, you get 100 hp (50 x 2)
5. Different size panels - like some panels occupies four square panels instead of one (like for a powerful skill/weapon)
6. Cursed panels - some equipment have a cursed panels attached to them, if other equipment overlap on it, you will get nasty effects (-hp, etc)

o.o
 
hmm....

1. Leveling Increases Panels: This could probably be done really easily.. I was actually planning to do it anyway along with a panel page system from the orignal game the idea came from.

2. Button Alternatives: No worries I can do that.

3. Boosters: Hopefully I get this right. Your saying you want an equippable item or something that can boost stats, without taking up and armor slot or a weapon attachment? This will probably take longer than the other suggestions, but it can be done.

4. Overlapping: I didn't really understand this. because I didn't really understand boosting. But are you saying that you can make it so an armor's link/equip panels can overlap each other so that any link panel in the overlap is doubled? (This would probably mean I'd have to redo my panel collison detection.)

5. Different size panels: I tried this (didn't try very hard, but I did) and failed. But if I tried harder, this could probably be accomplished. But it'd take awhile. This would probably also call of a redo of the panel collison.

6. Cursed Panels - Don't really understand 6. if you attach a "chain" (for example) to an armor, you will unknowingly gain bad effects? And you have no idea which link panels are cursed?
 
BUG REPORT!!!


Hello! I've been having this bug , while playing the demo... liike, i put th LVL-UP panel into the board, the characters lvls up, normally, but then, like every time I try to take an LVL-UP Panel from the board... It crashes saying this "Script' # Scene_Panels [1]' line 244 NoMethodError Ocurred. Undefined Method 'Remove' for {}: Hash" And then it closed the window...
Plz fix this, Caz i want to use this script on my game... OH! And if you can unpgrad eit.. it bill be soo kool, if we could unlocked equip panels, by resceiveng Items such as and Item like "4 Panels Unlcked" (and obviuslly that would be something like a event item, that will never show up in the invetory) That will be awesome, I hope you reply to these and try to fix me bug... PLZ!!! :angel: :haha: :wink: :cute:
 
What I mean about booster is uhh, they act like an equipment but their slots is actually their effect range, and if your equipment slot touches this effect range, you get the booster effect.

Overlapping is like placing two different equipment slot on the same booster panel (ex. Helmet's top slot touching booster panel while glove's bottom slot touches it also)

Curse panels is uhh some equipment have a dark panel along with their normal ones. And if another equipment slot touches the dark panel, they get nasty effect specially if the table is crowded and the only way to avoid the curse panel is putting the equipment in the corner (the price you pay for powerful equipment)

I can prolly make a pic if you had a hard time ^^:
 
CodedAngel":1z9oypep said:
BUG REPORT!!!


Hello! I've been having this bug , while playing the demo... liike, i put th LVL-UP panel into the board, the characters lvls up, normally, but then, like every time I try to take an LVL-UP Panel from the board... It crashes saying this "Script' # Scene_Panels [1]' line 244 NoMethodError Ocurred. Undefined Method 'Remove' for {}: Hash" And then it closed the window...
Plz fix this, Caz i want to use this script on my game... OH! And if you can unpgrad eit.. it bill be soo kool, if we could unlocked equip panels, by resceiveng Items such as and Item like "4 Panels Unlcked" (and obviuslly that would be something like a event item, that will never show up in the invetory) That will be awesome, I hope you reply to these and try to fix me bug... PLZ!!! :angel: :haha: :wink: :cute:

I'm sorry for the wait, but for the longest time I couldn't login... And I'm failing two classes and blah blah blah... so anyway... that error was caused because I called the variable in an odd way. if you can find the variable I used. search for "variable" = {} and change it to "variable" = []. I can't say exactly because I've changed the script already and don't remember what I changed. Sorry for the wait once again. I might be working more on this during spring break. but I'm not sure.
 

Thank you for viewing

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

Discord

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

Content

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