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.

Problem with Seph's Sphere Grid Script

Well I added it into my game earlier tonight.

And basically I'm encountering a problem.  I'm following the instructions exactly, however the problem is that the names of skills don't seem to be showing when I get to them on the sphere grid.  it just comes up with "Learn Skill" in the header bar instead.  Not sure what's causing it, but any thoughts would be greatly appreciated. I've tried removing many scripts to see if it's a conflict, but that doesn't seem to work.  And I've also tried changing the skill name that I'm calling in the event, but it isn't calling any skills whatsoever and I can't figure out why.

Help would be greatly appreciated.  Script is below if you can't find it otherwise.  Thanks in advance.

Script in spoiler:
Code:
#==============================================================================
# Sphere Grid System
#==============================================================================
# SephirothSpawn
# Version 1
# 1.20.06
#==============================================================================

#------------------------------------------------------------------------------
# * SDK Log Script
#------------------------------------------------------------------------------
SDK.log('Sphere Grid System', 'SephirothSpawn', 1, '1.21.06')

#------------------------------------------------------------------------------
# * Begin SDK Enable Test
#------------------------------------------------------------------------------

if SDK.state('Sphere Grid System') == true

#==============================================================================
# ** Sphere Grid Sytem
#==============================================================================

module Sphere_Grid_System
  #--------------------------------------------------------------------------
  # * Constants
  #     sphere_type :[character_name, character_hue, direction, pattern]
  #--------------------------------------------------------------------------
  # When Spheres Locks
    HP_SPHERE_GRAPHIC_ON = ['178-Switch01', 150, 4, 0]
    SP_SPHERE_GRAPHIC_ON = ['178-Switch01', 210, 4, 0]
    STR_SPHERE_GRAPHIC_ON = ['178-Switch01', 30, 4, 0]
    DEX_SPHERE_GRAPHIC_ON = ['178-Switch01', 0, 4, 1]
    AGI_SPHERE_GRAPHIC_ON = ['178-Switch01', 0, 4, 0]
    INT_SPHERE_GRAPHIC_ON = ['178-Switch01', 0, 4, 2]
    ABILITIY_SPHERE_GRAPHIC_ON = ['178-Switch01', 0, 4, 3]
    LOCKA_GRAPHIC_ON = ['183-Rock02', 0, 4, 0]
    LOCKB_GRAPHIC_ON = ['183-Rock02', 0, 4, 0]
    LOCKC_GRAPHIC_ON = ['183-Rock02', 0, 4, 0]
    LOCKD_GRAPHIC_ON = ['183-Rock02', 0, 4, 0]
  # When Spheres Unlocked
    HP_SPHERE_GRAPHIC_OFF = ['178-Switch01', 150, 8, 0]
    SP_SPHERE_GRAPHIC_OFF = ['178-Switch01', 210, 8, 0]
    STR_SPHERE_GRAPHIC_OFF = ['178-Switch01', 30, 8, 0]
    DEX_SPHERE_GRAPHIC_OFF = ['178-Switch01', 0, 8, 1]
    AGI_SPHERE_GRAPHIC_OFF = ['178-Switch01', 0, 8, 0]
    INT_SPHERE_GRAPHIC_OFF = ['178-Switch01', 0, 8, 2]
    ABILITIY_SPHERE_GRAPHIC_OFF = ['178-Switch01', 0, 8, 3]
    LOCKA_GRAPHIC_OFF = ['', 0, 8, 0]
    LOCKB_GRAPHIC_OFF = ['', 0, 8, 0]
    LOCKC_GRAPHIC_OFF = ['', 0, 8, 0]
    LOCKD_GRAPHIC_OFF = ['', 0, 8, 0]
end

#==============================================================================
# ** Game_Temp
#==============================================================================

class Game_Temp
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :spheregrid_return_map_id
  attr_accessor :spheregrid_return_map_coordinates
  attr_accessor :spheregrid_return_actor_graphic
  attr_accessor :spheregrid_map_id
end

#==============================================================================
# ** Game_Actor
#==============================================================================

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :sphere_grid_event_list
  attr_accessor :sphere_grid_skills
  attr_accessor :sphere_grid_position
  attr_accessor :character_name
  attr_accessor :character_hue
  #--------------------------------------------------------------------------
  # * Alias Listings
  #--------------------------------------------------------------------------
  alias seph_spheregridsystem_gameactor_init initialize
  alias seph_spheregridsystem_gameactor_skills skills
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(actor_id)
    # Orginal Initialization Method
    seph_spheregridsystem_gameactor_init(actor_id)
    # Sets Skill Grid Events List
    @sphere_grid_event_list = {}
    # Sets Skill Grid Skills
    @sphere_grid_skills = []
    # Sets Skill Grid Position
    @sphere_grid_position = [149, 149]
  end
  #--------------------------------------------------------------------------
  # * Gets Skills
  #--------------------------------------------------------------------------
  def skills
    # Adds Skill Grid Skills
    for id in @sphere_grid_skills
      learn_skill(id)
    end
    # Orginal Skills Method
    seph_spheregridsystem_gameactor_skills
  end
end


#==============================================================================
# ** Game_Party
#==============================================================================

class Game_Party
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :sphere_grid_hp_spheres
  attr_accessor :sphere_grid_sp_spheres
  attr_accessor :sphere_grid_str_spheres
  attr_accessor :sphere_grid_dex_spheres
  attr_accessor :sphere_grid_agi_spheres
  attr_accessor :sphere_grid_int_spheres
  attr_accessor :sphere_grid_ability_spheres
  attr_accessor :sphere_grid_level_a_locks
  attr_accessor :sphere_grid_level_b_locks
  attr_accessor :sphere_grid_level_c_locks
  attr_accessor :sphere_grid_level_d_locks
  #--------------------------------------------------------------------------
  # * Alias Listings
  #--------------------------------------------------------------------------
  alias seph_spheregridsystem_gameparty_init initialize
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    # Orginal Initialization Method
    seph_spheregridsystem_gameparty_init
    # Sets Skill Grid Spheres
    @sphere_grid_hp_spheres = 0
    @sphere_grid_sp_spheres = 0
    @sphere_grid_str_spheres = 0
    @sphere_grid_dex_spheres = 0
    @sphere_grid_agi_spheres = 0
    @sphere_grid_int_spheres = 0
    @sphere_grid_ability_spheres = 0
    @sphere_grid_level_a_locks = 0
    @sphere_grid_level_b_locks = 0
    @sphere_grid_level_c_locks = 0
    @sphere_grid_level_d_locks = 0
  end
end

#==============================================================================
# ** Game_Map
#==============================================================================

class Game_Map
  #--------------------------------------------------------------------------
  # * Get RPG::Map
  #--------------------------------------------------------------------------
  def map
    return @map
  end
end

#==============================================================================
# ** Game_Event
#==============================================================================

class Game_Event < Game_Character
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :character_name
  attr_accessor :character_hue
  attr_accessor :direction
  attr_accessor :pattern
  attr_accessor :through
end

#==============================================================================
# ** Game_Player
#==============================================================================

class Game_Player
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor   :character_name
  attr_accessor   :character_hue
end

#==============================================================================
# ** Scene_Title
#==============================================================================

class Scene_Title
  #--------------------------------------------------------------------------
  # * Alias Listings
  #--------------------------------------------------------------------------
  alias seph_spheregridsystem_scenetitle_commandnewgame command_new_game
  #--------------------------------------------------------------------------
  # * Command: New Game
  #--------------------------------------------------------------------------
  def command_new_game
    # Orignal Command: New Game
    seph_spheregridsystem_scenetitle_commandnewgame
    # Collects Map Data
    mapinfo = load_data("Data/MapInfos.rxdata")
    mapinfo.each {|map_id, map|
      # Finds Sphere Grid Map
      if map.name == 'Sphere Grid'
        # Collects Sphere Grid Map Data
        @skill_map = load_data(sprintf("Data/Map%03d.rxdata", map_id))
        # Sets Sphere Grid Map Id
        $game_temp.spheregrid_map_id = map_id
      end }
    # Sphere Grid Events (For each actor access)
    grid_events = {}
    # Collects Events
    for event in @skill_map.events.values
      if event.name == 'Skill Grid Event'
        grid_events[event.id] = false
      end
    end
    # Sets All Actors Grid Event List
    for i in 1...$data_actors.size
      $game_actors[i].sphere_grid_event_list = grid_events.dup
    end
  end
end

#==============================================================================
# ** Window_SkillGridSpheres
#==============================================================================

class Window_SkillGridSpheres < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(400, 236, 236, 240)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.back_opacity = 125
    refresh
    @stat_flag = false
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    # Draws Sphere Heading
    self.contents.font.size, self.contents.font.color = 22, system_color
    self.contents.draw_text(4, 0, contents.width - 8, 32, 'Collected Spheres', 1)
    # Draws Sphere Totals
    self.contents.font.size, self.contents.font.color = 16, normal_color
    sphere_names = ['Hp', 'Sp', 'Strength', 'Dexterity', 'Agility', 
      'Intellect', 'Ability'].collect! {|x| x + ' Spheres'}
    sphere_names << ['a', 'b', 'c', 'd'].collect! {|x| "Grid Locks Level #{x.upcase}"}
    sphere_totals = ['hp', 'sp', 'str', 'dex', 'agi', 'int', 'ability'].collect! {|x|
      eval "$game_party.sphere_grid_#{x}_spheres"}
    sphere_totals << ['a', 'b', 'c', 'd'].collect! {|x| eval "$game_party.sphere_grid_level_#{x}_locks"}
    sphere_totals.flatten!
    for i in 0...sphere_names.flatten!.size
      self.contents.draw_text(8, 32 + i * 16, contents.width - 16, 16, sphere_names[i])
      self.contents.draw_text(8, 32 + i * 16, contents.width - 16, 16, sphere_totals[i].to_s, 2)
    end
  end
  #--------------------------------------------------------------------------
  # * Set Required Sphere
  #--------------------------------------------------------------------------
  def set_required_sphere(sphere)
    # Sets Stat Flag
    @stat_flag = true
    # Collects Change Parameters
    case sphere
    when 'Hp'
      y, sphere, total = 32, 'Hp Sphere', $game_party.sphere_grid_hp_spheres
    when 'Sp'
      y, sphere, total = 48, 'Sp Sphere', $game_party.sphere_grid_sp_spheres
    when 'Str'
      y, sphere, total = 64, 'Strength Sphere', $game_party.sphere_grid_str_spheres
    when 'Dex'
      y, sphere, total = 80, 'Dexterity Sphere', $game_party.sphere_grid_dex_spheres
    when 'Agi'
      y, sphere, total = 96, 'Agility Sphere', $game_party.sphere_grid_agi_spheres
    when 'Int'
      y, sphere, total = 112, 'Intellect Sphere', $game_party.sphere_grid_int_spheres
    when 'Ability'
      y, sphere, total = 128, 'Ability Sphere', $game_party.sphere_grid_ability_spheres
    when 'LockA'
      y, sphere, total = 144, 'Grid Locks Level A', $game_party.sphere_grid_level_a_locks
    when 'LockB'
      y, sphere, total = 160, 'Grid Locks Level B', $game_party.sphere_grid_level_b_locks
    when 'LockC'
      y, sphere, total = 176, 'Grid Locks Level C', $game_party.sphere_grid_level_c_locks
    when 'LockD'
      y, sphere, total = 192, 'Grid Locks Level D', $game_party.sphere_grid_level_d_locks
    end
    # Clear Contents
    self.contents.fill_rect(0, y, contents.width, 16, Color.new(0, 0, 0, 0))
    # Redraws Spheres
    self.contents.font.color = total > 0 ? Color.new(0, 200, 0) : Color.new(200, 0, 0)
    self.contents.draw_text(8, y, contents.width - 16, 16, sphere)
    self.contents.draw_text(8, y, contents.width - 16, 16, (total - 1).to_s, 2)
  end
  #--------------------------------------------------------------------------
  # * Reset Contents
  #--------------------------------------------------------------------------
  def reset_contents
    if @stat_flag
      @stat_flag = false
      refresh
    end
  end
end

#==============================================================================
# ** Window_SkillGridStatus
#==============================================================================

class Window_SkillGridStatus < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(actor_index)
    super(4, 68, 236, 112)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.back_opacity = 125
    @actor = $game_party.actors[actor_index]
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    # Collects Skill Grid Totals
    skills, stats, locks = 0, 0, 0
    unlocked_skills, unlocked_stats, unlocked_locks = 0, 0, 0
    for event in $game_map.events.values
      if event.list[0].code == 108
        if event.list[0].parameters[0].include?('Skill')
          skills += 1
          if @actor.sphere_grid_event_list[event.id]
            unlocked_skills += 1
          end
        elsif event.list[0].parameters[0].dup.sub!(/\d/, '')
          stats += 1
          if @actor.sphere_grid_event_list[event.id]
            unlocked_stats += 1
          end
        elsif event.list[0].parameters[0].include?('Lock')
          locks += 1
          if @actor.sphere_grid_event_list[event.id]
            unlocked_locks += 1
          end
        end
      end
    end
    # Draws Sphere Totals Headings
    self.contents.font.size, self.contents.font.color = 22, system_color
    self.contents.draw_text(0, 0, contents.width, 32, "Grid Totals For #{@actor.name}", 1)
    # Draws Skill Totals
    self.contents.font.size, self.contents.font.color = 16, unlocked_skills == 
      skills ? Color.new(0, 255, 0) : normal_color
    self.contents.draw_text(8, 32, contents.width - 16, 16, 'Skill Spheres Unlocked')
    self.contents.draw_text(8, 32, contents.width - 16, 16, "#{unlocked_skills} / #{skills}", 2)
    # Draws Stat Totals
    self.contents.font.size, self.contents.font.color = 16, unlocked_stats == 
      stats ? Color.new(0, 255, 0) : normal_color
    self.contents.draw_text(8, 48, contents.width - 16, 16, 'Stat Spheres Unlocked')
    self.contents.draw_text(8, 48, contents.width - 16, 16, "#{unlocked_stats} / #{stats}", 2)
    # Draws Lock Totals
    self.contents.font.size, self.contents.font.color = 16, unlocked_locks == 
      locks ? Color.new(0, 255, 0) : normal_color
    self.contents.draw_text(8, 64, contents.width - 16, 16, 'Grid Locks Unlocked')
    self.contents.draw_text(8, 64, contents.width - 16, 16, "#{unlocked_locks} / #{locks}", 2)
  end
end

#==============================================================================
# ** Window_SkillGridActorStatus
#==============================================================================

class Window_SkillGridActorStatus < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(actor_index)
    super(4, 332, 392, 144)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.back_opacity = 125
    @actor = $game_party.actors[actor_index]
    @page = 1
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    @page == 1 ? draw_status : draw_skills
  end
  #--------------------------------------------------------------------------
  # * Draw Status
  #--------------------------------------------------------------------------
  def draw_status
    # Draws Actor Heading
    self.contents.font.size, self.contents.font.color = 22, system_color
    self.contents.draw_text(0, 0, contents.width, 32, @actor.name + ' Stastics')
    # Draws Stats
    stat_words = ['hp', 'sp', 'str', 'dex', 'agi', 'int', 'atk', 'pdef' , 'mdef'].collect! {|x|
      eval "$data_system.words.#{x}"} << 'Evasion'
    stat_amounts = ["#{@actor.hp} / #{@actor.maxhp}", "#{@actor.sp} / #{@actor.maxsp}"]
    stat_amounts << ['str', 'dex' , 'agi', 'int', 'atk' , 'pdef' , 'mdef', 'eva'].collect! {|x|
      eval "@actor.#{x}"}
    self.contents.font.size, self.contents.font.color = 16, normal_color
    for i in 0...stat_amounts.flatten!.size
      x, y = (i % 2) * contents.width / 2 + 8, 32 + 16 * (i / 2)
      self.contents.draw_text(x, y, contents.width / 2 - 16, 16, stat_words[i])
      self.contents.draw_text(x, y, contents.width / 2 - 16, 16, stat_amounts[i].to_s, 2)
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Skills
  #--------------------------------------------------------------------------
  def draw_skills
    # Draws Actor Heading
    self.contents.font.size, self.contents.font.color = 22, system_color
    self.contents.draw_text(0, 0, contents.width, 32, @actor.name + ' Skills')
    # Draws Skill
    self.contents.font.size, self.contents.font.color = 16, normal_color
    for i in 0...@actor.sphere_grid_skills.size
      x, y = (i % 3) * contents.width / 3, 32 + 16 * (i / 3)
      skill_name = $data_skills[@actor.sphere_grid_skills[i]].name
      self.contents.draw_text(x + 4, y, contents.width / 3 - 8, 16, skill_name)
    end
  end
  #--------------------------------------------------------------------------
  # * Next Page
  #--------------------------------------------------------------------------
  def next_page
    @page = @page == 1 ? 2 : 1
    refresh
  end
end

#==============================================================================
# ** Scene_SphereGrid
#==============================================================================

class Scene_SphereGrid
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(actor_index, setup_return_id = false)
    # Actor Index from Game Party
    @actor_index = actor_index
    # Sets Actor
    @actor = $game_party.actors[@actor_index]
    # Sets Return Coordinates
    if setup_return_id
      $game_temp.spheregrid_return_map_id = $game_map.map_id
      $game_temp.spheregrid_return_map_coordinates = [$game_player.x, $game_player.y]
      actor = $game_party.actors[0]
      $game_temp.spheregrid_return_actor_graphic = [actor.character_name, actor.character_hue]
    end
    # Changes Character Graphic
    $game_player.character_name = @actor.character_name
    $game_player.character_hue = @actor.character_hue
    # Moves to Skill Map
    $game_map.setup($game_temp.spheregrid_map_id)
    coordinates = @actor.sphere_grid_position
    $game_player.moveto(coordinates[0], coordinates[1])
    # Update Events
    update_events
  end
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    # Make sprite set
    @spriteset = Spriteset_Map.new
    # Make message window
    @message_window = Window_Message.new
    # Make Help Window
    @help_window = Window_Help.new
      @help_window.back_opacity = 125
    # Make Spheres Window
    @sphere_totals = Window_SkillGridSpheres.new
    # Make Actor Status Window
    @actor_status = Window_SkillGridActorStatus.new(@actor_index)
    # Make Grid Stats Window
    @grid_status = Window_SkillGridStatus.new(@actor_index)
    # Conformation Window
    @confim_window = Window_Command.new(100, ['Yes', 'No'])
      @confim_window.x, @confim_window.y = 270, 192
      @confim_window.active = @confim_window.visible = false
      @confim_window.back_opacity = 125
    # Advancement Parameters
    @parameters = []
    # Transition run
    Graphics.transition(40, "Graphics/Transitions/#{$data_system.battle_transition}")
    # Main loop
    while $scene == self
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
    end
    # Prepare for transition
    Graphics.freeze
    # Dispose of sprite set
    @spriteset.dispose
    # Dispose of windows
    @message_window.dispose
    @help_window.dispose
    @sphere_totals.dispose
    @actor_status.dispose
    @grid_status.dispose
    @confim_window.dispose
    # Resets Map Information
    if $scene.is_a?(Scene_Menu)
      $game_map.setup($game_temp.spheregrid_return_map_id)
      $game_player.moveto($game_temp.spheregrid_return_map_coordinates[0],
        $game_temp.spheregrid_return_map_coordinates[1])
      $game_player.character_name = $game_temp.spheregrid_return_actor_graphic[0]
      $game_player.character_hue = $game_temp.spheregrid_return_actor_graphic[1]
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # If A button was pressed
    if Input.trigger?(Input::A)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Moves to Menu Scene
      @actor_status.next_page
    end
    # If X button was pressed
    if Input.trigger?(Input::X)
      # Play cursor SE
      $game_system.se_play($data_system.cursor_se)
      # Toggle Sphere Totals Window
      @sphere_totals.visible = @sphere_totals.visible ? false : true
    end
    # If Y button was pressed
    if Input.trigger?(Input::Y)
      # Play cursor SE
      $game_system.se_play($data_system.cursor_se)
      # Toggle Sphere Totals Window
      @actor_status.visible = @actor_status.visible ? false : true
    end
    # If Z button was pressed
    if Input.trigger?(Input::Z)
      # Play cursor SE
      $game_system.se_play($data_system.cursor_se)
      # Toggle Sphere Totals Window
      @grid_status.visible = @grid_status.visible ? false : true
    end
    # Conformation Method
    if @confim_window.active
      update_confirm
      return
    end
    # Clears Help Window Text
    @help_window.set_text('', 1)
    # Loop
    loop do
      # Update map, interpreter, and player order
      # (this update order is important for when conditions are fulfilled 
      # to run any event, and the player isn't provided the opportunity to
      # move in an instant)
      $game_map.update
      $game_system.map_interpreter.update
      $game_player.update
      # Update system (timer), screen
      $game_system.update
      $game_screen.update
      # Abort loop if player isn't place moving
      unless $game_temp.player_transferring
        break
      end
      # Run place move
      transfer_player
      # Abort loop if transition processing
      if $game_temp.transition_processing
        break
      end
    end
    # Update sprite set
    @spriteset.update
    # Update message window
    @message_window.update
    # If showing message window
    if $game_temp.message_window_showing
      return
    end
    # Clears Learning Variables
    event_id, unlocked, parameters = nil, false, nil
    # Checks Each Event
    for event in $game_map.events.values
      # If Player is In Range
      if check_range(event, $game_player)
        # Sets Event Id Flag
        event_id = event.id
        # If Event Unlocked
        if @actor.sphere_grid_event_list[event_id]
          # Sets Help Window Text to Unlocked
          @help_window.set_text('Grid Unlocked', 1)
          # Sets unlocked Flag
          unlocked = true
        else
          # Sets Help Window Text to Skill Grid Type
          if event.list[0].code == 108
            # Gets Stat
            stat = event.list[0].parameters[0]
            # Skill Learning
            if stat.include?('Skill')
              for i in 1...$data_skills.size
                if stat.include?($data_skills[i].name)
                  parameters = ["Learn Skill #{$data_skills[i].name}", i]
                end
              end
            # Stat Learning
            elsif stat.dup.sub!(/(\d+)/, '')
              # Gets Value
              c = $1
              # Gets Parameter Type
              stat.dup.sub!(/(\w+)/, '')
              b = $1
              parameters = ["Increase #{b} by #{c}", b, c]
            # Grid Lock
            elsif stat.include?('Lock')
              parameters = ["Grid #{stat}"]
            end
            # Draws Help Text
            @help_window.set_text((parameters.nil? ? event.list[0].parameters[0] : parameters[0]), 1)
          end
        end
      end
    end
    # Updates Sphere Totals Window
    if parameters.nil?
      @sphere_totals.reset_contents
    else
      @sphere_totals.set_required_sphere(parameters.size == 2 ? 'Ability' : 
        parameters.size == 3 ? parameters[1] : parameters[0].delete!('Grid '))
    end
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Changes Actors Skill Grid Coordinates
      @actor.sphere_grid_position = [$game_player.x, $game_player.y]
      # Moves to Menu Scene
      $scene = Scene_Menu.new
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      return if parameters.nil?
      # Learn Skills
      if parameters.size == 2
        # Checks to Make Sure Enough Ability Spheres
        if $game_party.sphere_grid_ability_spheres < 1
          # Play buzzer SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Sets Parameters
        @parameters = ["Are you sure you want to #{parameters[0]}?", 
          parameters[1], event_id]
        # Makes Conformation Window Active
        @confim_window.index = 0
        @confim_window.active = @confim_window.visible = true
        return
      # Increase Stats
      elsif parameters.size == 3
        # Checks for Spheres
        case parameters[1]
        when 'Hp'
          check = $game_party.sphere_grid_hp_spheres
        when 'Sp'
          check = $game_party.sphere_grid_sp_spheres
        when 'Str'
          check = $game_party.sphere_grid_str_spheres
        when 'Dex'
          check = $game_party.sphere_grid_dex_spheres
        when 'Agi'
          check = $game_party.sphere_grid_agi_spheres
        when 'Int'
          check = $game_party.sphere_grid_int_spheres
        end
        if check < 1
          # Play buzzer SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Sets Parameters
        @parameters = ["Are you sure you want to #{parameters[0]}?", 
          parameters[1], parameters[2].to_i, event_id]
        # Makes Conformation Window Active
        @confim_window.index = 0
        @confim_window.active = @confim_window.visible = true
        return
      # Grid Locks
      elsif parameters.size == 1
        # Help Text
        text = 'Are you sure you want to '
        # Checks Lock Amounts
        case parameters[0]
        when 'LockA'
          check = $game_party.sphere_grid_level_a_locks
          text += 'Unlock Grid Lock A'
        when 'LockB'
          check = $game_party.sphere_grid_level_b_locks
          text += 'Unlock Grid Lock B'
        when 'LockC'
          check = $game_party.sphere_grid_level_c_locks
          text += 'Unlock Grid Lock C'
        when 'LockD'
          check = $game_party.sphere_grid_level_d_locks
          text += 'Unlock Grid Lock D'
        end
        if check < 1
          # Play buzzer SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Sets Parameters
        @parameters = [text, event_id]
        # Makes Conformation Window Active
        @confim_window.index = 0
        @confim_window.active = @confim_window.visible = true
        return
      end
    end
    # If L button was pressed
    if Input.trigger?(Input::L)
      # Play cursor SE
      $game_system.se_play($data_system.cursor_se)
      # To previous actor
      @actor_index += $game_party.actors.size - 1
      @actor_index %= $game_party.actors.size
      # Changes Actors Skill Grid Coordinates
      @actor.sphere_grid_position = [$game_player.x, $game_player.y]
      # Moves to New Actor
      $scene = Scene_SphereGrid.new(@actor_index)
    end
    # If R button was pressed
    if Input.trigger?(Input::R)
      # Play cursor SE
      $game_system.se_play($data_system.cursor_se)
      # To next actor
      @actor_index += 1
      @actor_index %= $game_party.actors.size
      # Changes Actors Skill Grid Coordinates
      @actor.sphere_grid_position = [$game_player.x, $game_player.y]
      # Moves to New Actor
      $scene = Scene_SphereGrid.new(@actor_index)
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update : Conformation
  #--------------------------------------------------------------------------
  def update_confirm
    # Updates Confirm Window
    @confim_window.update
    # Sets Help Window
    @help_window.set_text(@parameters[0])
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Turns off Confirm Window
      @confim_window.visible = @confim_window.active = false
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      if @confim_window.index == 1
        # Play cancel SE
        $game_system.se_play($data_system.cancel_se)
        # Turns off Confirm Window
        @confim_window.visible = @confim_window.active = false
      else
        # Skill Learning
        if @parameters.size == 3
          # Lowers Abilitiy Spheres
          $game_party.sphere_grid_ability_spheres -= 1
          # Turns Off Grid Event For Actor
          @actor.sphere_grid_event_list[@parameters[2]] = true
          # Learns Skill
          @actor.sphere_grid_skills << @parameters[1]
          # Refreshes Total Window
          @sphere_totals.refresh
          # Refreshs Skills Window
          @actor_status.refresh
          # Refreshes Grid Status Window
          @grid_status.refresh
          # Turns off Confirm Window
          @confim_window.visible = @confim_window.active = false
          # Gets Event ID
          event_id = @parameters[2]
        elsif @parameters.size == 4
          case @parameters[1]
          when 'Hp'
            # Lowers Spheres
            $game_party.sphere_grid_hp_spheres -= 1
            # Raises Stat
            @actor.maxhp += @parameters[2]
          when 'Sp'
            # Lowers Spheres
            $game_party.sphere_grid_sp_spheres -= 1
            # Raises Stat
            @actor.maxsp += @parameters[2]
          when 'Str'
            # Lowers Spheres
            $game_party.sphere_grid_str_spheres -= 1
            # Raises Stat
            @actor.str += @parameters[2]
          when 'Dex'
            # Lowers Spheres
            $game_party.sphere_grid_dex_spheres -= 1
            # Raises Stat
            @actor.dex += @parameters[2]
          when 'Agi'
            # Lowers Spheres
            $game_party.sphere_grid_agi_spheres -= 1
            # Raises Stat
            @actor.agi += @parameters[2]
          when 'Int'
            # Lowers Spheres
            $game_party.sphere_grid_int_spheres -= 1
            # Raises Stat
            @actor.int += @parameters[2]
          end
          # Turns Off Grid Event For Actor
          @actor.sphere_grid_event_list[@parameters[3]] = true
          # Refreshes Total Window
          @sphere_totals.refresh
          # Refreshs Skills Window
          @actor_status.refresh
          # Refreshes Grid Status Window
          @grid_status.refresh
          # Turns off Confirm Window
          @confim_window.visible = @confim_window.active = false
          # Gets Event ID
          event_id = @parameters[3]
        elsif @parameters.size == 2
          # Lowers Lock Spheres
          case @parameters[0].reverse[0, 1]
          when 'A'
            $game_map.events[@parameters[1]].character_name = 
              Sphere_Grid_System::LOCKA_GRAPHIC_OFF[0]
            $game_party.sphere_grid_level_a_locks -= 1
          when 'B'
            $game_map.events[@parameters[1]].character_name = 
              Sphere_Grid_System::LOCKB_GRAPHIC_OFF[0]
            $game_party.sphere_grid_level_b_locks -= 1
          when 'C'
            $game_map.events[@parameters[1]].character_name = 
              Sphere_Grid_System::LOCKC_GRAPHIC_OFF[0]
            $game_party.sphere_grid_level_c_locks -= 1
          when 'D'
            $game_map.events[@parameters[1]].character_name = 
              Sphere_Grid_System::LOCKD_GRAPHIC_OFF[0]
            $game_party.sphere_grid_level_d_locks -= 1
          end
          # Turns Off Grid Event For Actor
          @actor.sphere_grid_event_list[@parameters[1]] = true
          # Changes Events Graphic
          $game_map.events[@parameters[1]].character_name = ''
          # Refreshes Total Window
          @sphere_totals.refresh
          # Refreshs Skills Window
          @actor_status.refresh
          # Refreshes Grid Status Window
          @grid_status.refresh
          # Turns off Confirm Window
          @confim_window.visible = @confim_window.active = false
          # Gets Event ID
          event_id = @parameters[1]
        end
        # Updates Events
        $game_map.events[event_id].direction = 8
        $game_map.events[event_id].through = true
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Check Range
  #--------------------------------------------------------------------------
  def check_range(element, object, range = 1)
    x = (element.x - object.x) * (element.x - object.x)
    y = (element.y - object.y) * (element.y - object.y)
    r = x + y
    return r <= (range * range)
  end
  #--------------------------------------------------------------------------
  # * Update Events
  #--------------------------------------------------------------------------
  def update_events
    # Sets Event Graphics
    for event in $game_map.events.values
      if @actor.sphere_grid_event_list.has_key?(event.id)
        if event.list[0].code == 108
          stat = event.list[0].parameters[0]
          # Grid Locks
          if stat.include?('Lock')
            unless @actor.sphere_grid_event_list[event.id]
              case stat.reverse[0, 1]
              when 'A'
                graphic_parameters = Sphere_Grid_System::LOCKA_GRAPHIC_ON
              when 'B'
                graphic_parameters = Sphere_Grid_System::LOCKB_GRAPHIC_ON
              when 'C'
                graphic_parameters = Sphere_Grid_System::LOCKC_GRAPHIC_ON
              when 'D'
                graphic_parameters = Sphere_Grid_System::LOCKD_GRAPHIC_ON
              end
            else
              case stat.reverse[0, 1]
              when 'A'
                graphic_parameters = Sphere_Grid_System::LOCKA_GRAPHIC_OFF
              when 'B'
                graphic_parameters = Sphere_Grid_System::LOCKB_GRAPHIC_OFF
              when 'C'
                graphic_parameters = Sphere_Grid_System::LOCKC_GRAPHIC_OFF
              when 'D'
                graphic_parameters = Sphere_Grid_System::LOCKD_GRAPHIC_OFF
              end
            end
          # Skill Sphere
          elsif stat.include?('Skill')
            unless @actor.sphere_grid_event_list[event.id]
              graphic_parameters = Sphere_Grid_System::ABILITIY_SPHERE_GRAPHIC_ON
            else
              graphic_parameters = Sphere_Grid_System::ABILITIY_SPHERE_GRAPHIC_OFF
            end
          # Stat Spheres
          elsif stat.dup.sub!(/(\d+)/, '')
            stat.dup.sub(/(\w+)/, '')
            unless @actor.sphere_grid_event_list[event.id]
              case $1
              when 'Hp'
                graphic_parameters = Sphere_Grid_System::HP_SPHERE_GRAPHIC_ON
              when 'Sp'
                graphic_parameters = Sphere_Grid_System::SP_SPHERE_GRAPHIC_ON
              when 'Str'
                graphic_parameters = Sphere_Grid_System::STR_SPHERE_GRAPHIC_ON
              when 'Dex'
                graphic_parameters = Sphere_Grid_System::DEX_SPHERE_GRAPHIC_ON
              when 'Agi'
                graphic_parameters = Sphere_Grid_System::AGI_SPHERE_GRAPHIC_ON
              when 'Int'
                graphic_parameters = Sphere_Grid_System::INT_SPHERE_GRAPHIC_ON
              end
            else
              case $1
              when 'Hp'
                graphic_parameters = Sphere_Grid_System::HP_SPHERE_GRAPHIC_OFF
              when 'Sp'
                graphic_parameters = Sphere_Grid_System::SP_SPHERE_GRAPHIC_OFF
              when 'Str'
                graphic_parameters = Sphere_Grid_System::STR_SPHERE_GRAPHIC_OFF
              when 'Dex'
                graphic_parameters = Sphere_Grid_System::DEX_SPHERE_GRAPHIC_OFF
              when 'Agi'
                graphic_parameters = Sphere_Grid_System::AGI_SPHERE_GRAPHIC_OFF
              when 'Int'
                graphic_parameters = Sphere_Grid_System::INT_SPHERE_GRAPHIC_OFF
              end
            end
          end
          # Changes event graphics
          event.character_hue = graphic_parameters[1]
          event.direction = graphic_parameters[2]
          event.pattern = graphic_parameters[3]
          event.character_name = graphic_parameters[0]
          event.through = @actor.sphere_grid_event_list[event.id]
        end
      end
    end
  end
end

#--------------------------------------------------------------------------
# * End SDK Enable Test
#--------------------------------------------------------------------------
end
 

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